@xopcai/xopc 0.0.91 → 0.0.93
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/feishu/src/outbound/media-load.js +1 -1
- package/dist/extensions/feishu/src/workflow-progress.js +1 -1
- package/dist/extensions/telegram/src/plugin.js +1 -1
- package/dist/extensions/telegram/src/routing-integration.js +2 -2
- package/dist/extensions/telegram/src/workflow-progress.js +1 -1
- package/dist/extensions/telegram/xopc.extension.json +1 -1
- package/dist/extensions/weixin/src/api/api.js +2 -2
- package/dist/extensions/weixin/src/auth/accounts.js +1 -1
- package/dist/extensions/weixin/src/cdn/upload.js +1 -1
- package/dist/extensions/weixin/src/media/data-url.js +1 -1
- package/dist/extensions/weixin/src/messaging/debug-mode.js +1 -1
- package/dist/extensions/weixin/src/messaging/inbound.js +1 -1
- package/dist/extensions/weixin/src/messaging/process-message.js +1 -1
- package/dist/extensions/weixin/src/plugin.js +1 -1
- package/dist/extensions/weixin/src/storage/sync-buf.js +1 -1
- package/dist/extensions/weixin/src/workflow-progress.js +1 -1
- package/dist/gateway/static/root/assets/agents-C7tTJLP9.js +222 -0
- package/dist/gateway/static/root/assets/apps-page-BbzdMyrg.js +1 -0
- package/dist/gateway/static/root/assets/channels-settings-B49vG2hE.js +1 -0
- package/dist/gateway/static/root/assets/{channels-status-swr-CYWL5DLD.js → channels-status-swr-CsGkK9h9.js} +1 -1
- package/dist/gateway/static/root/assets/{cron-api-TVqLlGAC.js → cron-api-CyAm0xJT.js} +1 -1
- package/dist/gateway/static/root/assets/cron-page-Bjx7IOdR.js +1 -0
- package/dist/gateway/static/root/assets/{dist-CUV1uY5f.js → dist-DHwVV8XK.js} +1 -1
- package/dist/gateway/static/root/assets/{extension-debug-page-mTLHRDp1.js → extension-debug-page-BK8kcc4F.js} +1 -1
- package/dist/gateway/static/root/assets/{extension-page-iI8BI7WK.js → extension-page-Cf8X_QUc.js} +1 -1
- package/dist/gateway/static/root/assets/{extension-settings-page-ByXcdubM.js → extension-settings-page-C5-YLMmy.js} +1 -1
- package/dist/gateway/static/root/assets/{fetch-BWtQq_Ys.js → fetch-BAPnkYbC.js} +1 -1
- package/dist/gateway/static/root/assets/{field-primitives-BsZ-4VT5.js → field-primitives-8p7ucXa1.js} +1 -1
- package/dist/gateway/static/root/assets/heartbeat-config-api-CpgW2sGp.js +1 -0
- package/dist/gateway/static/root/assets/index-CwDdudZM.css +1 -0
- package/dist/gateway/static/root/assets/{index-CKkR-v9U.js → index-Do52EfZK.js} +82 -82
- package/dist/gateway/static/root/assets/logs-page-BxukQ-J-.js +1 -0
- package/dist/gateway/static/root/assets/{note-detail-page-DJ2Mb4x7.js → note-detail-page-WLM6FUIi.js} +53 -53
- package/dist/gateway/static/root/assets/{note-time-JLBPSLzK.js → note-time-EFyIVhec.js} +1 -1
- package/dist/gateway/static/root/assets/notes-page-BYPVYcYn.js +1 -0
- package/dist/gateway/static/root/assets/sessions-page-BFD2_-Cl.js +1 -0
- package/dist/gateway/static/root/assets/settings-advanced-gate-CEs8pGh6.js +2 -0
- package/dist/gateway/static/root/assets/{settings-form-section-DSYCknxM.js → settings-form-section-C6cGTVwK.js} +1 -1
- package/dist/gateway/static/root/assets/settings-page-BiP5iH46.js +2 -0
- package/dist/gateway/static/root/assets/{share-preview-page-awRqs4hV.js → share-preview-page-tnIfJ4K6.js} +1 -1
- package/dist/gateway/static/root/assets/skills-page-CNDctFIn.js +2 -0
- package/dist/gateway/static/root/assets/{theme-store-BC-42BoZ.js → theme-store-D6EsNTPr.js} +1 -1
- package/dist/gateway/static/root/assets/url-CTjpm0Uz.js +3 -0
- package/dist/gateway/static/root/assets/{utils-DX3TQuap.js → utils-C86AVfY-.js} +1 -1
- package/dist/gateway/static/root/assets/voice-api-key-field-CalxUkxm.js +1 -0
- package/dist/gateway/static/root/assets/{workflow-page.utils-ClC37yEp.js → workflow-page.utils-DsEriMFW.js} +1 -1
- package/dist/gateway/static/root/assets/workflows-page-D2fRxXJG.js +27 -0
- package/dist/gateway/static/root/index.html +5 -5
- package/dist/package.js +1 -1
- package/dist/src/agent/agent-manager.js +7 -7
- package/dist/src/agent/agent-scope.js +1 -1
- package/dist/src/agent/bootstrap/load-bootstrap-files.js +1 -1
- package/dist/src/agent/context/workspace-seed.js +2 -2
- package/dist/src/agent/goals/goal-run-store.js +4 -4
- package/dist/src/agent/goals/persistent-goal-service.js +1 -1
- package/dist/src/agent/goals/post-turn.js +2 -2
- package/dist/src/agent/image/load-image-media.js +2 -2
- package/dist/src/agent/ipc/bus.js +1 -1
- package/dist/src/agent/ipc/inbox.js +2 -2
- package/dist/src/agent/ipc/socket.js +1 -1
- package/dist/src/agent/mcp/bundle-mcp-config.d.ts +2 -9
- package/dist/src/agent/mcp/bundle-mcp-config.js +10 -34
- package/dist/src/agent/mcp/bundle-mcp-config.js.map +1 -1
- package/dist/src/agent/mcp/bundle-mcp-materialize.js +1 -1
- package/dist/src/agent/mcp/bundle-mcp-policy.js +2 -2
- package/dist/src/agent/mcp/bundle-mcp-policy.js.map +1 -1
- package/dist/src/agent/mcp/bundle-mcp-runtime.js +5 -5
- package/dist/src/agent/mcp/bundle-mcp-runtime.js.map +1 -1
- package/dist/src/agent/mcp/index.js +2 -2
- package/dist/src/agent/mcp/mcp-transport-config.js +1 -1
- package/dist/src/agent/mcp/mcp-transport.js +1 -1
- package/dist/src/agent/memory/builtin-memory-store.js +1 -1
- package/dist/src/agent/memory/dreaming/deep-promotion.js +1 -1
- package/dist/src/agent/memory/dreaming/events.js +1 -1
- package/dist/src/agent/memory/dreaming/last-run.js +1 -1
- package/dist/src/agent/memory/dreaming/light-sweep.js +1 -1
- package/dist/src/agent/memory/dreaming/preview.js +1 -1
- package/dist/src/agent/memory/dreaming/rem-patterns.js +1 -1
- package/dist/src/agent/memory/dreaming/short-term-store.js +1 -1
- package/dist/src/agent/memory/dreaming/utils.js +1 -1
- package/dist/src/agent/memory/plugin-discovery.js +1 -1
- package/dist/src/agent/models/manager.js +1 -1
- package/dist/src/agent/prompt/service-prompt-builder.js +2 -2
- package/dist/src/agent/reply/post-compaction-context.js +1 -1
- package/dist/src/agent/reply/workspace-boundary-read.js +1 -1
- package/dist/src/agent/sandbox/path-policy.js +2 -2
- package/dist/src/agent/service/build-direct-message-content.js +1 -1
- package/dist/src/agent/service.js +4 -4
- package/dist/src/agent/session/session-inspector.js +1 -1
- package/dist/src/agent/skills/config.js +1 -1
- package/dist/src/agent/skills/hub-hash.js +2 -2
- package/dist/src/agent/skills/hub-lock.js +1 -1
- package/dist/src/agent/skills/hub-pull.js +2 -2
- package/dist/src/agent/skills/index.js +1 -1
- package/dist/src/agent/skills/managed-store.js +1 -1
- package/dist/src/agent/skills/scanner.js +1 -1
- package/dist/src/agent/skills/skill-manage-ops.js +1 -1
- package/dist/src/agent/skills/skill-manager.js +1 -1
- package/dist/src/agent/tools/dreaming-tool.js +1 -1
- package/dist/src/agent/tools/factory.js +1 -1
- package/dist/src/agent/tools/image-generate-tool.js +1 -1
- package/dist/src/agent/tools/send-media.js +1 -1
- package/dist/src/agent/tools/skill-manage-tool.js +1 -1
- package/dist/src/agent/tools/workflow-tool.js +1 -1
- package/dist/src/agent/tools/write.js +1 -1
- package/dist/src/agent/workflow/catalog.js +1 -1
- package/dist/src/auth/credentials.js +3 -3
- package/dist/src/auth/profiles/store.js +1 -1
- package/dist/src/auth/sync-provider-auth.js +1 -1
- package/dist/src/browser/cache-dir-policy.js +1 -1
- package/dist/src/browser/cdp-local-launcher.js +2 -2
- package/dist/src/browser/providers/browser-ext-install.js +3 -3
- package/dist/src/browser/providers/cloakbrowser.js +4 -4
- package/dist/src/browser/providers/playwright-doctor.js +1 -1
- package/dist/src/browser/stealth.js +1 -1
- package/dist/src/channels/attachments/inbound-persist.js +1 -1
- package/dist/src/channels/attachments/outbound-tts-persist.js +1 -1
- package/dist/src/channels/outbound/persist-store.js +1 -1
- package/dist/src/channels/pairing/allow-from-file.js +1 -1
- package/dist/src/channels/pairing/pairing-store.js +2 -2
- package/dist/src/chat-commands/agent-edit.js +2 -2
- package/dist/src/chat-commands/builtins/config.js +2 -2
- package/dist/src/chat-commands/context.js +1 -1
- package/dist/src/cli/command-catalog.js +0 -4
- package/dist/src/cli/command-catalog.js.map +1 -1
- package/dist/src/cli/command-loaders.js +1 -2
- package/dist/src/cli/command-loaders.js.map +1 -1
- package/dist/src/cli/command-manifest.js +0 -4
- package/dist/src/cli/command-manifest.js.map +1 -1
- package/dist/src/cli/commands/config.js +1 -1
- package/dist/src/cli/commands/doctor/checks/config-health.js +1 -1
- package/dist/src/cli/commands/doctor/checks/provider-auth.js +1 -1
- package/dist/src/cli/commands/doctor/checks/session-integrity.js +2 -2
- package/dist/src/cli/commands/doctor/checks/state-integrity.js +1 -1
- package/dist/src/cli/commands/doctor/checks/workspace-status.js +1 -1
- package/dist/src/cli/commands/extension-dev.js +1 -1
- package/dist/src/cli/commands/extension-marketplace.js +1 -1
- package/dist/src/cli/commands/extension-pack.js +1 -1
- package/dist/src/cli/commands/gateway/logs.js +1 -1
- package/dist/src/cli/commands/image.js +1 -1
- package/dist/src/cli/commands/init.js +4 -4
- package/dist/src/cli/commands/onboard.js +1 -1
- package/dist/src/cli/utils/init-workspace-core.js +2 -2
- package/dist/src/commands/agents.config.js +1 -1
- package/dist/src/config/agent-profile.js +1 -1
- package/dist/src/config/gateway-bind.js +1 -1
- package/dist/src/config/index.d.ts +0 -1
- package/dist/src/config/index.js +6 -7
- package/dist/src/config/index.js.map +1 -1
- package/dist/src/config/loader.js +2 -2
- package/dist/src/config/models-json.js +2 -2
- package/dist/src/config/paths-state.js +1 -1
- package/dist/src/config/profile.js +2 -2
- package/dist/src/config/schema.d.ts +36 -6
- package/dist/src/config/schema.js +13 -11
- package/dist/src/config/schema.js.map +1 -1
- package/dist/src/config/workspace-path.js +1 -1
- package/dist/src/connectors/builtin-catalog.d.ts +2 -0
- package/dist/src/connectors/builtin-catalog.js +152 -0
- package/dist/src/connectors/builtin-catalog.js.map +1 -0
- package/dist/src/connectors/catalog.d.ts +5 -0
- package/dist/src/connectors/catalog.js +13 -0
- package/dist/src/connectors/catalog.js.map +1 -0
- package/dist/src/connectors/health.d.ts +3 -0
- package/dist/src/connectors/health.js +61 -0
- package/dist/src/connectors/health.js.map +1 -0
- package/dist/src/connectors/install.d.ts +5 -0
- package/dist/src/connectors/install.js +46 -0
- package/dist/src/connectors/install.js.map +1 -0
- package/dist/src/connectors/instances.d.ts +4 -0
- package/dist/src/connectors/instances.js +43 -0
- package/dist/src/connectors/instances.js.map +1 -0
- package/dist/src/connectors/materialize.d.ts +9 -0
- package/dist/src/connectors/materialize.js +76 -0
- package/dist/src/connectors/materialize.js.map +1 -0
- package/dist/src/connectors/oauth.d.ts +22 -0
- package/dist/src/connectors/oauth.js +99 -0
- package/dist/src/connectors/oauth.js.map +1 -0
- package/dist/src/connectors/providers.d.ts +9 -0
- package/dist/src/connectors/providers.js +20 -0
- package/dist/src/connectors/providers.js.map +1 -0
- package/dist/src/connectors/secret-store.d.ts +7 -0
- package/dist/src/connectors/secret-store.js +47 -0
- package/dist/src/connectors/secret-store.js.map +1 -0
- package/dist/src/connectors/types.d.ts +102 -0
- package/dist/src/connectors/types.js +1 -0
- package/dist/src/connectors/usage.d.ts +6 -0
- package/dist/src/connectors/usage.js +63 -0
- package/dist/src/connectors/usage.js.map +1 -0
- package/dist/src/cron/executor.js +2 -2
- package/dist/src/cron/persistence.js +1 -1
- package/dist/src/cron/run-log-store.js +1 -1
- package/dist/src/daemon/constants.js +1 -1
- package/dist/src/daemon/install-plan.js +2 -2
- package/dist/src/daemon/launchd.js +2 -2
- package/dist/src/daemon/schtasks.js +2 -2
- package/dist/src/daemon/systemd.js +2 -2
- package/dist/src/extensions/bundle-mcp.js +1 -1
- package/dist/src/extensions/discover-extensions.js +1 -1
- package/dist/src/extensions/health.js +1 -1
- package/dist/src/extensions/loader.js +1 -1
- package/dist/src/extensions/lockfile.js +2 -2
- package/dist/src/extensions/update.js +1 -1
- package/dist/src/gateway/agents-admin.js +3 -3
- package/dist/src/gateway/file-path-classifier.js +2 -2
- package/dist/src/gateway/hono/lib/config-payload.js +1 -1
- package/dist/src/gateway/hono/lib/extension-store.js +2 -2
- package/dist/src/gateway/hono/lib/static-ui.js +2 -2
- package/dist/src/gateway/hono/oauth.js +1 -1
- package/dist/src/gateway/hono/routes/agents.js +1 -1
- 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.d.ts +3 -0
- package/dist/src/gateway/hono/routes/connectors.js +177 -0
- package/dist/src/gateway/hono/routes/connectors.js.map +1 -0
- package/dist/src/gateway/hono/routes/dreaming.js +1 -1
- package/dist/src/gateway/hono/routes/home.d.ts +12 -0
- package/dist/src/gateway/hono/routes/home.js +50 -0
- package/dist/src/gateway/hono/routes/home.js.map +1 -0
- package/dist/src/gateway/hono/routes/host-fs.js +2 -2
- package/dist/src/gateway/hono/routes/lazy-bundles.js +12 -4
- package/dist/src/gateway/hono/routes/lazy-bundles.js.map +1 -1
- package/dist/src/gateway/hono/routes/models.js +1 -1
- package/dist/src/gateway/hono/routes/notes.js +136 -1
- package/dist/src/gateway/hono/routes/notes.js.map +1 -1
- package/dist/src/gateway/hono/routes/shares.js +1 -1
- package/dist/src/gateway/hono/routes/workspace.js +4 -4
- package/dist/src/gateway/host.d.ts +2 -0
- package/dist/src/gateway/host.js +6 -3
- package/dist/src/gateway/host.js.map +1 -1
- package/dist/src/gateway/lock.js +3 -3
- package/dist/src/gateway/ports.js +1 -1
- package/dist/src/gateway/service/agent-runner.js +2 -2
- package/dist/src/gateway/service/marketplace-service.js +2 -2
- package/dist/src/gateway/service.js +1 -1
- package/dist/src/gateway/workspace-fs-file-list.js +1 -1
- package/dist/src/infra/brew.js +1 -1
- package/dist/src/infra/package-json.js +1 -1
- package/dist/src/infra/package-update-steps.js +1 -1
- package/dist/src/infra/path-env.js +2 -2
- package/dist/src/infra/restart.js +2 -2
- package/dist/src/infra/stable-node-path.js +1 -1
- package/dist/src/infra/update-check.js +1 -1
- package/dist/src/infra/update-global.js +1 -1
- package/dist/src/infra/update-lock.js +3 -3
- package/dist/src/infra/update-runner.js +1 -1
- package/dist/src/infra/update-startup.js +2 -2
- package/dist/src/infra/write-file-atomic.js +2 -2
- package/dist/src/mcp/channel-bridge.js +1 -1
- package/dist/src/mcp/channel-bridge.js.map +1 -1
- package/dist/src/notes/index.d.ts +1 -1
- package/dist/src/notes/service.d.ts +24 -1
- package/dist/src/notes/service.js +279 -0
- package/dist/src/notes/service.js.map +1 -1
- package/dist/src/notes/store.d.ts +4 -0
- package/dist/src/notes/store.js +37 -8
- package/dist/src/notes/store.js.map +1 -1
- package/dist/src/notes/types.d.ts +70 -2
- package/dist/src/providers/auth-runtime/auth-profile-store.js +1 -1
- package/dist/src/providers/index.js +2 -2
- package/dist/src/providers/model-registry.js +1 -1
- package/dist/src/session/config-store.js +2 -2
- package/dist/src/session/init-session-turn.js +2 -2
- package/dist/src/session/parity/jsonl-transcript-io.js +2 -2
- package/dist/src/session/parity/sessions-json-file.js +1 -1
- package/dist/src/session/parity/transcript-file-lock.js +2 -2
- package/dist/src/session/parity/transcript-paths.js +1 -1
- package/dist/src/session/resolve-session.js +4 -4
- package/dist/src/session/search-index-cache.js +1 -1
- package/dist/src/session/search-index.js +1 -1
- package/dist/src/session/session-title.js +2 -2
- package/dist/src/session/store.d.ts +2 -0
- package/dist/src/session/store.js +27 -7
- package/dist/src/session/store.js.map +1 -1
- package/dist/src/share/share-auto.js +2 -2
- package/dist/src/share/share-store.js +3 -3
- package/dist/src/share/share-thumbnail.js +2 -2
- package/dist/src/share/share-zip.js +1 -1
- package/dist/src/share/site-share-store.js +3 -3
- package/dist/src/share/site-static-serve.js +1 -1
- package/dist/src/tui/clipboard-image.js +3 -3
- package/dist/src/tui/theme-manager.js +1 -1
- package/dist/src/tui/tui-keybindings-file.js +1 -1
- package/dist/src/tui/tui-scoped-models.js +2 -2
- package/dist/src/tui/tui-settings.js +1 -1
- package/dist/src/tui/tui.js +3 -3
- package/dist/src/tunnel/frpc-binary.js +3 -3
- package/dist/src/tunnel/frpc-config.js +1 -1
- package/dist/src/tunnel/frpc-extract.js +1 -1
- package/dist/src/tunnel/tunnel-state.js +1 -1
- package/dist/src/utils/logger/audit.js +1 -1
- package/dist/src/utils/logger/log-store.js +1 -1
- package/dist/src/utils/logger/rotation.js +1 -1
- package/dist/src/voice/tts/audio.js +1 -1
- package/dist/src/voice/tts/providers/edge-speech.js +2 -2
- package/dist/src/workflows/store/event-store.js +1 -1
- package/dist/src/workflows/store/run-store.js +1 -1
- package/package.json +5 -1
- package/dist/gateway/static/root/assets/agents-bVWUlrlD.js +0 -222
- package/dist/gateway/static/root/assets/apps-page-CIC8bmvZ.js +0 -1
- package/dist/gateway/static/root/assets/channels-settings-C8G8RAAP.js +0 -1
- package/dist/gateway/static/root/assets/cron-dreaming-jobs-Ip703-qM.js +0 -2
- package/dist/gateway/static/root/assets/cron-page-BtcFYlvv.js +0 -1
- package/dist/gateway/static/root/assets/heartbeat-config-api-WjTsRLCU.js +0 -1
- package/dist/gateway/static/root/assets/index-VlELBY99.css +0 -1
- package/dist/gateway/static/root/assets/logs-page-ClnIpxfd.js +0 -1
- package/dist/gateway/static/root/assets/notes-page-BE-75qz9.js +0 -1
- package/dist/gateway/static/root/assets/sessions-page-bJJkWtTl.js +0 -1
- package/dist/gateway/static/root/assets/settings-page-WcMXLq2U.js +0 -3
- package/dist/gateway/static/root/assets/skills-page-Lu-i1JG7.js +0 -2
- package/dist/gateway/static/root/assets/url-CY1RQKTU.js +0 -3
- package/dist/gateway/static/root/assets/voice-api-key-field-B5uKlDqA.js +0 -1
- package/dist/gateway/static/root/assets/workflows-page-C7VhIXtR.js +0 -27
- package/dist/src/cli/commands/mcp.d.ts +0 -4
- package/dist/src/cli/commands/mcp.js +0 -85
- package/dist/src/cli/commands/mcp.js.map +0 -1
- package/dist/src/config/mcp-config.d.ts +0 -34
- package/dist/src/config/mcp-config.js +0 -116
- package/dist/src/config/mcp-config.js.map +0 -1
- package/dist/src/gateway/hono/routes/mcp.d.ts +0 -3
- package/dist/src/gateway/hono/routes/mcp.js +0 -99
- package/dist/src/gateway/hono/routes/mcp.js.map +0 -1
|
@@ -0,0 +1,102 @@
|
|
|
1
|
+
export type ConnectorKind = 'mcp' | 'cli' | 'http' | 'channel' | 'browser' | 'extension' | 'builtin';
|
|
2
|
+
export type ConnectorCategory = 'code' | 'docs' | 'browser' | 'data' | 'automation' | 'custom';
|
|
3
|
+
export type ConnectorCapability = 'tools' | 'resources' | 'prompts' | 'context' | 'channel' | 'events' | 'ui' | 'memory_source' | 'workflows' | 'auth.apiKey' | 'auth.oauth' | 'runtime.mcp.stdio' | 'runtime.mcp.sse' | 'runtime.mcp.streamableHttp';
|
|
4
|
+
export type ConnectorAuthMode = 'none' | 'apiKey' | 'oauth';
|
|
5
|
+
export type ConnectorSecretReference = {
|
|
6
|
+
xopcSecretRef: {
|
|
7
|
+
provider: string;
|
|
8
|
+
fieldKey: string;
|
|
9
|
+
};
|
|
10
|
+
};
|
|
11
|
+
export type ConnectorSecretField = {
|
|
12
|
+
key: string;
|
|
13
|
+
label: string;
|
|
14
|
+
description?: string;
|
|
15
|
+
required: boolean;
|
|
16
|
+
};
|
|
17
|
+
export type ConnectorConfigField = {
|
|
18
|
+
key: string;
|
|
19
|
+
label: string;
|
|
20
|
+
type: 'string' | 'number' | 'boolean' | 'json' | 'path';
|
|
21
|
+
required?: boolean;
|
|
22
|
+
placeholder?: string;
|
|
23
|
+
defaultValue?: unknown;
|
|
24
|
+
description?: string;
|
|
25
|
+
};
|
|
26
|
+
export type ConnectorRuntimeDefinition = {
|
|
27
|
+
type: 'mcp';
|
|
28
|
+
serverId: string;
|
|
29
|
+
serverTemplate: Record<string, unknown>;
|
|
30
|
+
};
|
|
31
|
+
export type ConnectorDefinition = {
|
|
32
|
+
id: string;
|
|
33
|
+
version: string;
|
|
34
|
+
displayName: string;
|
|
35
|
+
description: string;
|
|
36
|
+
category: ConnectorCategory;
|
|
37
|
+
kind: ConnectorKind;
|
|
38
|
+
source: 'builtin' | 'extension' | 'custom' | 'registry';
|
|
39
|
+
capabilities: ConnectorCapability[];
|
|
40
|
+
tags?: string[];
|
|
41
|
+
auth: {
|
|
42
|
+
mode: ConnectorAuthMode;
|
|
43
|
+
};
|
|
44
|
+
setup: {
|
|
45
|
+
secrets?: ConnectorSecretField[];
|
|
46
|
+
config?: ConnectorConfigField[];
|
|
47
|
+
};
|
|
48
|
+
runtime: ConnectorRuntimeDefinition;
|
|
49
|
+
};
|
|
50
|
+
export type ConnectorInstallInput = {
|
|
51
|
+
secrets?: Record<string, unknown>;
|
|
52
|
+
config?: Record<string, unknown>;
|
|
53
|
+
};
|
|
54
|
+
export type ConnectorUsageRecord = {
|
|
55
|
+
lastHealthCheckAt?: string;
|
|
56
|
+
lastHealthStatus?: ConnectorHealthStatus;
|
|
57
|
+
lastToolCount?: number;
|
|
58
|
+
};
|
|
59
|
+
export type ConnectorAuditRecord = {
|
|
60
|
+
at: string;
|
|
61
|
+
action: 'installed' | 'removed' | 'health_check';
|
|
62
|
+
status?: ConnectorHealthStatus;
|
|
63
|
+
ok?: boolean;
|
|
64
|
+
toolCount?: number;
|
|
65
|
+
};
|
|
66
|
+
export type ConnectorInstance = {
|
|
67
|
+
instanceId: string;
|
|
68
|
+
connectorId: string;
|
|
69
|
+
displayName: string;
|
|
70
|
+
enabled: boolean;
|
|
71
|
+
status: 'installed' | 'not_configured' | 'failed' | 'disabled';
|
|
72
|
+
secretStatus: Record<string, boolean>;
|
|
73
|
+
materialized: {
|
|
74
|
+
type: 'mcp';
|
|
75
|
+
serverId: string;
|
|
76
|
+
};
|
|
77
|
+
usage: ConnectorUsageRecord;
|
|
78
|
+
audit: ConnectorAuditRecord[];
|
|
79
|
+
};
|
|
80
|
+
export type ConnectorHealthStatus = 'ok' | 'server_not_found' | 'missing_secret' | 'startup_failed' | 'tools_list_failed' | 'timeout' | 'network_failed' | 'unknown_error';
|
|
81
|
+
export type ConnectorHealthResult = {
|
|
82
|
+
serverId: string;
|
|
83
|
+
ok: boolean;
|
|
84
|
+
status: ConnectorHealthStatus;
|
|
85
|
+
toolCount: number;
|
|
86
|
+
tools: Array<{
|
|
87
|
+
name: string;
|
|
88
|
+
shortName?: string;
|
|
89
|
+
description?: string;
|
|
90
|
+
}>;
|
|
91
|
+
error?: string;
|
|
92
|
+
action?: string;
|
|
93
|
+
};
|
|
94
|
+
export type ConnectorDetail = {
|
|
95
|
+
definition: ConnectorDefinition;
|
|
96
|
+
instances: ConnectorInstance[];
|
|
97
|
+
};
|
|
98
|
+
export type ManagedConnectorMarker = {
|
|
99
|
+
managed: true;
|
|
100
|
+
connectorId: string;
|
|
101
|
+
version: string;
|
|
102
|
+
};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import type { Config } from '../config/schema.js';
|
|
2
|
+
import type { ConnectorAuditRecord, ConnectorHealthResult, ConnectorUsageRecord } from './types.js';
|
|
3
|
+
export declare function getConnectorUsageFromMarker(marker: unknown): ConnectorUsageRecord;
|
|
4
|
+
export declare function getConnectorAuditFromMarker(marker: unknown): ConnectorAuditRecord[];
|
|
5
|
+
export declare function appendConnectorAuditRecord(config: Config, instanceId: string, record: Omit<ConnectorAuditRecord, 'at'>): void;
|
|
6
|
+
export declare function recordConnectorHealthUsage(config: Config, instanceId: string, result: ConnectorHealthResult): void;
|
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
import { isManagedConnectorServer } from "./materialize.js";
|
|
2
|
+
//#region src/connectors/usage.ts
|
|
3
|
+
const MAX_AUDIT_RECORDS = 50;
|
|
4
|
+
function getManagedConnectorMarker(config, instanceId) {
|
|
5
|
+
const server = config.mcp?.servers?.[instanceId];
|
|
6
|
+
if (!isManagedConnectorServer(server)) return;
|
|
7
|
+
return server.xopcConnector;
|
|
8
|
+
}
|
|
9
|
+
function getConnectorUsageFromMarker(marker) {
|
|
10
|
+
if (!marker || typeof marker !== "object" || Array.isArray(marker)) return {};
|
|
11
|
+
const usage = marker.usage;
|
|
12
|
+
if (!usage || typeof usage !== "object" || Array.isArray(usage)) return {};
|
|
13
|
+
const record = usage;
|
|
14
|
+
return {
|
|
15
|
+
lastHealthCheckAt: typeof record.lastHealthCheckAt === "string" ? record.lastHealthCheckAt : void 0,
|
|
16
|
+
lastHealthStatus: typeof record.lastHealthStatus === "string" ? record.lastHealthStatus : void 0,
|
|
17
|
+
lastToolCount: typeof record.lastToolCount === "number" ? record.lastToolCount : void 0
|
|
18
|
+
};
|
|
19
|
+
}
|
|
20
|
+
function getConnectorAuditFromMarker(marker) {
|
|
21
|
+
if (!marker || typeof marker !== "object" || Array.isArray(marker)) return [];
|
|
22
|
+
const audit = marker.audit;
|
|
23
|
+
if (!Array.isArray(audit)) return [];
|
|
24
|
+
return audit.flatMap((entry) => {
|
|
25
|
+
if (!entry || typeof entry !== "object" || Array.isArray(entry)) return [];
|
|
26
|
+
const record = entry;
|
|
27
|
+
if (typeof record.at !== "string" || typeof record.action !== "string") return [];
|
|
28
|
+
return [{
|
|
29
|
+
at: record.at,
|
|
30
|
+
action: record.action,
|
|
31
|
+
status: typeof record.status === "string" ? record.status : void 0,
|
|
32
|
+
ok: typeof record.ok === "boolean" ? record.ok : void 0,
|
|
33
|
+
toolCount: typeof record.toolCount === "number" ? record.toolCount : void 0
|
|
34
|
+
}];
|
|
35
|
+
});
|
|
36
|
+
}
|
|
37
|
+
function appendConnectorAuditRecord(config, instanceId, record) {
|
|
38
|
+
const marker = getManagedConnectorMarker(config, instanceId);
|
|
39
|
+
if (!marker) return;
|
|
40
|
+
marker.audit = [...(Array.isArray(marker.audit) ? marker.audit : []).slice(-MAX_AUDIT_RECORDS + 1), {
|
|
41
|
+
...record,
|
|
42
|
+
at: (/* @__PURE__ */ new Date()).toISOString()
|
|
43
|
+
}];
|
|
44
|
+
}
|
|
45
|
+
function recordConnectorHealthUsage(config, instanceId, result) {
|
|
46
|
+
const marker = getManagedConnectorMarker(config, instanceId);
|
|
47
|
+
if (!marker) return;
|
|
48
|
+
marker.usage = {
|
|
49
|
+
lastHealthCheckAt: (/* @__PURE__ */ new Date()).toISOString(),
|
|
50
|
+
lastHealthStatus: result.status,
|
|
51
|
+
lastToolCount: result.toolCount
|
|
52
|
+
};
|
|
53
|
+
appendConnectorAuditRecord(config, instanceId, {
|
|
54
|
+
action: "health_check",
|
|
55
|
+
status: result.status,
|
|
56
|
+
ok: result.ok,
|
|
57
|
+
toolCount: result.toolCount
|
|
58
|
+
});
|
|
59
|
+
}
|
|
60
|
+
//#endregion
|
|
61
|
+
export { appendConnectorAuditRecord, getConnectorAuditFromMarker, getConnectorUsageFromMarker, recordConnectorHealthUsage };
|
|
62
|
+
|
|
63
|
+
//# sourceMappingURL=usage.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"usage.js","names":[],"sources":["../../../src/connectors/usage.ts"],"sourcesContent":["import type { Config } from '../config/schema.js';\nimport { isManagedConnectorServer } from './materialize.js';\nimport type { ConnectorAuditRecord, ConnectorHealthResult, ConnectorUsageRecord } from './types.js';\n\nconst MAX_AUDIT_RECORDS = 50;\n\nfunction getManagedConnectorMarker(config: Config, instanceId: string): Record<string, unknown> | undefined {\n const server = config.mcp?.servers?.[instanceId];\n if (!isManagedConnectorServer(server)) {\n return undefined;\n }\n return server.xopcConnector as Record<string, unknown>;\n}\n\nexport function getConnectorUsageFromMarker(marker: unknown): ConnectorUsageRecord {\n if (!marker || typeof marker !== 'object' || Array.isArray(marker)) {\n return {};\n }\n const usage = (marker as Record<string, unknown>).usage;\n if (!usage || typeof usage !== 'object' || Array.isArray(usage)) {\n return {};\n }\n const record = usage as Record<string, unknown>;\n return {\n lastHealthCheckAt: typeof record.lastHealthCheckAt === 'string' ? record.lastHealthCheckAt : undefined,\n lastHealthStatus: typeof record.lastHealthStatus === 'string' ? record.lastHealthStatus as ConnectorUsageRecord['lastHealthStatus'] : undefined,\n lastToolCount: typeof record.lastToolCount === 'number' ? record.lastToolCount : undefined,\n };\n}\n\nexport function getConnectorAuditFromMarker(marker: unknown): ConnectorAuditRecord[] {\n if (!marker || typeof marker !== 'object' || Array.isArray(marker)) {\n return [];\n }\n const audit = (marker as Record<string, unknown>).audit;\n if (!Array.isArray(audit)) {\n return [];\n }\n return audit.flatMap((entry) => {\n if (!entry || typeof entry !== 'object' || Array.isArray(entry)) {\n return [];\n }\n const record = entry as Record<string, unknown>;\n if (typeof record.at !== 'string' || typeof record.action !== 'string') {\n return [];\n }\n return [{\n at: record.at,\n action: record.action as ConnectorAuditRecord['action'],\n status: typeof record.status === 'string' ? record.status as ConnectorAuditRecord['status'] : undefined,\n ok: typeof record.ok === 'boolean' ? record.ok : undefined,\n toolCount: typeof record.toolCount === 'number' ? record.toolCount : undefined,\n }];\n });\n}\n\nexport function appendConnectorAuditRecord(\n config: Config,\n instanceId: string,\n record: Omit<ConnectorAuditRecord, 'at'>,\n): void {\n const marker = getManagedConnectorMarker(config, instanceId);\n if (!marker) {\n return;\n }\n const existing = Array.isArray(marker.audit) ? marker.audit : [];\n marker.audit = [\n ...existing.slice(-MAX_AUDIT_RECORDS + 1),\n { ...record, at: new Date().toISOString() },\n ];\n}\n\nexport function recordConnectorHealthUsage(\n config: Config,\n instanceId: string,\n result: ConnectorHealthResult,\n): void {\n const marker = getManagedConnectorMarker(config, instanceId);\n if (!marker) {\n return;\n }\n marker.usage = {\n lastHealthCheckAt: new Date().toISOString(),\n lastHealthStatus: result.status,\n lastToolCount: result.toolCount,\n } satisfies ConnectorUsageRecord;\n appendConnectorAuditRecord(config, instanceId, {\n action: 'health_check',\n status: result.status,\n ok: result.ok,\n toolCount: result.toolCount,\n });\n}\n"],"mappings":";;AAIA,MAAM,oBAAoB;AAE1B,SAAS,0BAA0B,QAAgB,YAAyD;CAC1G,MAAM,SAAS,OAAO,KAAK,UAAU;AACrC,KAAI,CAAC,yBAAyB,OAAO,CACnC;AAEF,QAAO,OAAO;;AAGhB,SAAgB,4BAA4B,QAAuC;AACjF,KAAI,CAAC,UAAU,OAAO,WAAW,YAAY,MAAM,QAAQ,OAAO,CAChE,QAAO,EAAE;CAEX,MAAM,QAAS,OAAmC;AAClD,KAAI,CAAC,SAAS,OAAO,UAAU,YAAY,MAAM,QAAQ,MAAM,CAC7D,QAAO,EAAE;CAEX,MAAM,SAAS;AACf,QAAO;EACL,mBAAmB,OAAO,OAAO,sBAAsB,WAAW,OAAO,oBAAoB,KAAA;EAC7F,kBAAkB,OAAO,OAAO,qBAAqB,WAAW,OAAO,mBAA+D,KAAA;EACtI,eAAe,OAAO,OAAO,kBAAkB,WAAW,OAAO,gBAAgB,KAAA;EAClF;;AAGH,SAAgB,4BAA4B,QAAyC;AACnF,KAAI,CAAC,UAAU,OAAO,WAAW,YAAY,MAAM,QAAQ,OAAO,CAChE,QAAO,EAAE;CAEX,MAAM,QAAS,OAAmC;AAClD,KAAI,CAAC,MAAM,QAAQ,MAAM,CACvB,QAAO,EAAE;AAEX,QAAO,MAAM,SAAS,UAAU;AAC9B,MAAI,CAAC,SAAS,OAAO,UAAU,YAAY,MAAM,QAAQ,MAAM,CAC7D,QAAO,EAAE;EAEX,MAAM,SAAS;AACf,MAAI,OAAO,OAAO,OAAO,YAAY,OAAO,OAAO,WAAW,SAC5D,QAAO,EAAE;AAEX,SAAO,CAAC;GACN,IAAI,OAAO;GACX,QAAQ,OAAO;GACf,QAAQ,OAAO,OAAO,WAAW,WAAW,OAAO,SAA2C,KAAA;GAC9F,IAAI,OAAO,OAAO,OAAO,YAAY,OAAO,KAAK,KAAA;GACjD,WAAW,OAAO,OAAO,cAAc,WAAW,OAAO,YAAY,KAAA;GACtE,CAAC;GACF;;AAGJ,SAAgB,2BACd,QACA,YACA,QACM;CACN,MAAM,SAAS,0BAA0B,QAAQ,WAAW;AAC5D,KAAI,CAAC,OACH;AAGF,QAAO,QAAQ,CACb,IAFe,MAAM,QAAQ,OAAO,MAAM,GAAG,OAAO,QAAQ,EAAE,EAElD,MAAM,CAAC,oBAAoB,EAAE,EACzC;EAAE,GAAG;EAAQ,qBAAI,IAAI,MAAM,EAAC,aAAa;EAAE,CAC5C;;AAGH,SAAgB,2BACd,QACA,YACA,QACM;CACN,MAAM,SAAS,0BAA0B,QAAQ,WAAW;AAC5D,KAAI,CAAC,OACH;AAEF,QAAO,QAAQ;EACb,oCAAmB,IAAI,MAAM,EAAC,aAAa;EAC3C,kBAAkB,OAAO;EACzB,eAAe,OAAO;EACvB;AACD,4BAA2B,QAAQ,YAAY;EAC7C,QAAQ;EACR,QAAQ,OAAO;EACf,IAAI,OAAO;EACX,WAAW,OAAO;EACnB,CAAC"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
import { init_agent_scope, normalizeAgentId } from "../agent/agent-scope.js";
|
|
2
|
-
import { buildSessionKey, init_session_key } from "../routing/session-key.js";
|
|
3
1
|
import { createLogger } from "../utils/logger/index.js";
|
|
4
2
|
import { init_logger } from "../utils/logger.js";
|
|
3
|
+
import { init_agent_scope, normalizeAgentId } from "../agent/agent-scope.js";
|
|
4
|
+
import { buildSessionKey, init_session_key } from "../routing/session-key.js";
|
|
5
5
|
import { getCronPayloadText } from "./job-content.js";
|
|
6
6
|
import { buildWorkflowRunCronSummary, buildWorkflowRunDeliveryText, isWorkflowRunCronSuccess, resolveWorkflowCronWaitMs, waitForWorkflowRunView } from "./workflow-run-completion.js";
|
|
7
7
|
import { bundledChannelPlugins } from "../generated/bundled-channel-plugins.js";
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
+
import { init_write_file_atomic, writeTextAtomic } from "../infra/write-file-atomic.js";
|
|
1
2
|
import { createLogger } from "../utils/logger/index.js";
|
|
2
3
|
import { init_logger } from "../utils/logger.js";
|
|
3
|
-
import { init_write_file_atomic, writeTextAtomic } from "../infra/write-file-atomic.js";
|
|
4
4
|
import { JobDataSchema } from "./validation.js";
|
|
5
5
|
import { access, readFile } from "fs/promises";
|
|
6
6
|
//#region src/cron/persistence.ts
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import { createLogger } from "../utils/logger/index.js";
|
|
2
2
|
import { init_logger } from "../utils/logger.js";
|
|
3
3
|
import { init_paths, resolveCronRunsDir } from "../config/paths.js";
|
|
4
|
-
import { join } from "path";
|
|
5
4
|
import { appendFile, mkdir, readFile, readdir, unlink, writeFile } from "fs/promises";
|
|
5
|
+
import { join } from "path";
|
|
6
6
|
//#region src/cron/run-log-store.ts
|
|
7
7
|
init_paths();
|
|
8
8
|
init_logger();
|
|
@@ -2,9 +2,9 @@ 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 { SERVICE_VERSION_ENV_KEY, formatGatewayServiceDescription } from "./constants.js";
|
|
5
|
-
import { homedir } from "node:os";
|
|
6
|
-
import path from "node:path";
|
|
7
5
|
import { existsSync } from "node:fs";
|
|
6
|
+
import path from "node:path";
|
|
7
|
+
import { homedir } from "node:os";
|
|
8
8
|
//#region src/daemon/install-plan.ts
|
|
9
9
|
/**
|
|
10
10
|
* Install Plan Builder - Build gateway installation configuration
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
import { createLogger } from "../utils/logger/index.js";
|
|
2
2
|
import { init_logger } from "../utils/logger.js";
|
|
3
3
|
import { resolveGatewayLaunchAgentLabel, resolveLaunchAgentPlistPath as resolveLaunchAgentPlistPath$1 } from "./constants.js";
|
|
4
|
-
import os from "node:os";
|
|
5
|
-
import path from "node:path";
|
|
6
4
|
import { existsSync } from "node:fs";
|
|
7
5
|
import { mkdir, readFile, rm, writeFile } from "node:fs/promises";
|
|
6
|
+
import path from "node:path";
|
|
7
|
+
import os from "node:os";
|
|
8
8
|
import { spawn, spawnSync } from "node:child_process";
|
|
9
9
|
//#region src/daemon/launchd.ts
|
|
10
10
|
/**
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
import { createLogger } from "../utils/logger/index.js";
|
|
2
2
|
import { init_logger } from "../utils/logger.js";
|
|
3
3
|
import { resolveGatewayWindowsTaskName } from "./constants.js";
|
|
4
|
-
import os from "node:os";
|
|
5
|
-
import path from "node:path";
|
|
6
4
|
import { mkdirSync, readFileSync, rmSync, writeFileSync } from "node:fs";
|
|
5
|
+
import path from "node:path";
|
|
6
|
+
import os from "node:os";
|
|
7
7
|
import { spawn, spawnSync } from "node:child_process";
|
|
8
8
|
//#region src/daemon/schtasks.ts
|
|
9
9
|
/**
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
import { createLogger } from "../utils/logger/index.js";
|
|
2
2
|
import { init_logger } from "../utils/logger.js";
|
|
3
3
|
import { resolveGatewaySystemdServiceName, resolveSystemdUnitPath } from "./constants.js";
|
|
4
|
-
import os from "node:os";
|
|
5
|
-
import path from "node:path";
|
|
6
4
|
import { existsSync } from "node:fs";
|
|
7
5
|
import { access, constants as constants$1, mkdir, readFile, rm, writeFile } from "node:fs/promises";
|
|
6
|
+
import path from "node:path";
|
|
7
|
+
import os from "node:os";
|
|
8
8
|
import { spawn, spawnSync } from "node:child_process";
|
|
9
9
|
//#region src/daemon/systemd.ts
|
|
10
10
|
/**
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import { init_paths, resolveBundledExtensionsDir, resolveExtensionsDir } from "../config/paths.js";
|
|
2
2
|
import { isRecord } from "../utils/is-record.js";
|
|
3
3
|
import { normalizeConfiguredMcpServers } from "../config/mcp-config-normalize.js";
|
|
4
|
-
import { join } from "node:path";
|
|
5
4
|
import { existsSync, readFileSync, readdirSync } from "node:fs";
|
|
5
|
+
import { join } from "node:path";
|
|
6
6
|
//#region src/extensions/bundle-mcp.ts
|
|
7
7
|
init_paths();
|
|
8
8
|
function extractMcpServerMap(raw) {
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import { init_agent_scope, resolveDefaultAgentId } from "../agent/agent-scope.js";
|
|
2
1
|
import { createLogger } from "../utils/logger/index.js";
|
|
3
2
|
import { init_logger } from "../utils/logger.js";
|
|
3
|
+
import { init_agent_scope, resolveDefaultAgentId } from "../agent/agent-scope.js";
|
|
4
4
|
import { init_paths, resolveBundledExtensionsDir, resolveExtensionsDir, resolveWorkspaceExtensionsDir } from "../config/paths.js";
|
|
5
5
|
import { init_loader, loadConfig } from "../config/loader.js";
|
|
6
6
|
import { normalizeExtensionManifest } from "./normalize-manifest.js";
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import { init_paths, resolveExtensionsDir } from "../config/paths.js";
|
|
2
2
|
import { getExtensionLockfileManager } from "./lockfile.js";
|
|
3
|
+
import { readFile, readdir } from "fs/promises";
|
|
3
4
|
import { join } from "path";
|
|
4
5
|
import { existsSync } from "fs";
|
|
5
|
-
import { readFile, readdir } from "fs/promises";
|
|
6
6
|
//#region src/extensions/health.ts
|
|
7
7
|
init_paths();
|
|
8
8
|
var ExtensionHealthChecker = class {
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { PACKAGE_VERSION, init_package_version } from "../package-version.js";
|
|
2
|
-
import { init_agent_scope, resolveAgentWorkspaceDir, resolveDefaultAgentId } from "../agent/agent-scope.js";
|
|
3
2
|
import { createLogger, createServiceLogger } from "../utils/logger/index.js";
|
|
4
3
|
import { init_logger } from "../utils/logger.js";
|
|
4
|
+
import { init_agent_scope, resolveAgentWorkspaceDir, resolveDefaultAgentId } from "../agent/agent-scope.js";
|
|
5
5
|
import { init_paths, resolveBundledExtensionsDir, resolveExtensionSdkPath, resolveExtensionsDir, resolveWorkspaceExtensionsDir } from "../config/paths.js";
|
|
6
6
|
import { init_loader, loadConfig } from "../config/loader.js";
|
|
7
7
|
import { getProviderRegistry, init_plugin_registry } from "../providers/plugin-registry.js";
|
|
@@ -1,10 +1,10 @@
|
|
|
1
|
+
import { init_write_file_atomic, writeTextAtomic } from "../infra/write-file-atomic.js";
|
|
1
2
|
import { createLogger } from "../utils/logger/index.js";
|
|
2
3
|
import { init_logger } from "../utils/logger.js";
|
|
3
4
|
import { init_paths, resolveExtensionsDir, resolveExtensionsLockPath } from "../config/paths.js";
|
|
4
|
-
import {
|
|
5
|
+
import { mkdir, readFile } from "fs/promises";
|
|
5
6
|
import { dirname, join } from "path";
|
|
6
7
|
import { existsSync } from "fs";
|
|
7
|
-
import { mkdir, readFile } from "fs/promises";
|
|
8
8
|
import { createHash } from "crypto";
|
|
9
9
|
//#region src/extensions/lockfile.ts
|
|
10
10
|
init_write_file_atomic();
|
|
@@ -6,8 +6,8 @@ import { getExtensionLockfileManager } from "./lockfile.js";
|
|
|
6
6
|
import { installExtensionFromStoreZip, installFromNpm } from "./install.js";
|
|
7
7
|
import { findExtension } from "./marketplace.js";
|
|
8
8
|
import { downloadExtensionStoreZipBuffer, resolveExtensionZipDownloadUrl, resolveExtensionsStoreBaseUrl } from "../agent/skills/marketplace/adapters/store/store-api-client.js";
|
|
9
|
-
import { join } from "node:path";
|
|
10
9
|
import { existsSync, readFileSync, readdirSync, rmSync } from "node:fs";
|
|
10
|
+
import { join } from "node:path";
|
|
11
11
|
import semver from "semver";
|
|
12
12
|
//#region src/extensions/update.ts
|
|
13
13
|
/**
|
|
@@ -1,14 +1,14 @@
|
|
|
1
|
-
import { init_localized_text, normalizeLocalizedText, resolveLocalizedText } from "../config/localized-text.js";
|
|
2
1
|
import { DEFAULT_AGENT_ID, init_agent_scope, listAgentEntries, normalizeAgentId, resolveAgentDir, resolveAgentProfileDir, resolveAgentWorkspaceDir, resolveDefaultAgentId, resolveUserPath, validateAgentIdForNewAgent } from "../agent/agent-scope.js";
|
|
3
|
-
import { resolveEffectiveAgentProfile } from "../config/agent-profile.js";
|
|
4
2
|
import { WORKSPACE_FILES, init_paths } from "../config/paths.js";
|
|
3
|
+
import { init_localized_text, normalizeLocalizedText, resolveLocalizedText } from "../config/localized-text.js";
|
|
4
|
+
import { resolveEffectiveAgentProfile } from "../config/agent-profile.js";
|
|
5
5
|
import { AGENT_PROFILE_MARKDOWN_SYSTEM_FILES } from "../agent/context/workspace.js";
|
|
6
6
|
import { isPathUnderWorkspace, resolveWorkspaceSafePath } from "./workspace-editor-path.js";
|
|
7
7
|
import { applyAgentConfig, findAgentEntryIndex, pruneAgentConfig, removeAgentDirsFromDisk } from "../commands/agents.config.js";
|
|
8
8
|
import { GATEWAY_BUILTIN_TOOL_IDS } from "./agent-builtin-tools.js";
|
|
9
9
|
import { seedAgentProfileMarkdownFiles } from "../agent/context/workspace-seed.js";
|
|
10
|
-
import { join, resolve } from "node:path";
|
|
11
10
|
import { cp, mkdir, readFile, readdir, realpath, stat, unlink, writeFile } from "node:fs/promises";
|
|
11
|
+
import { join, resolve } from "node:path";
|
|
12
12
|
//#region src/gateway/agents-admin.ts
|
|
13
13
|
/**
|
|
14
14
|
* Gateway REST helpers for multi-agent management.
|
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
import { init_paths_state, resolveStateDir } from "../config/paths-state.js";
|
|
2
2
|
import { init_agent_scope, resolveAgentProfileDir } from "../agent/agent-scope.js";
|
|
3
|
-
import { extractProfileAgentId } from "../config/agent-profile.js";
|
|
4
3
|
import { init_paths, resolveConfigPath, resolveSessionsDir, resolveSkillsDir } from "../config/paths.js";
|
|
4
|
+
import { extractProfileAgentId } from "../config/agent-profile.js";
|
|
5
5
|
import { isBareProfileMarkdownFileName, resolveProfileMarkdownPathIfBareName } from "../agent/tools/tool-paths.js";
|
|
6
6
|
import { isPathUnderWorkspace, resolveWorkspaceSafePath } from "./workspace-editor-path.js";
|
|
7
|
-
import { basename, isAbsolute, resolve } from "node:path";
|
|
8
7
|
import { stat } from "node:fs/promises";
|
|
8
|
+
import { basename, isAbsolute, resolve } from "node:path";
|
|
9
9
|
//#region src/gateway/file-path-classifier.ts
|
|
10
10
|
init_agent_scope();
|
|
11
11
|
init_paths();
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { init_agent_scope, listAgentEntries, normalizeAgentId, resolveDefaultAgentId } from "../../../agent/agent-scope.js";
|
|
2
2
|
import { resolveModelsJsonPath } from "../../../config/paths.js";
|
|
3
|
-
import { init_models_json, loadModelsJson } from "../../../config/models-json.js";
|
|
4
3
|
import { CredentialResolver, init_credentials } from "../../../auth/credentials.js";
|
|
4
|
+
import { init_models_json, loadModelsJson } from "../../../config/models-json.js";
|
|
5
5
|
import { getProviderRegistry, init_plugin_registry } from "../../../providers/plugin-registry.js";
|
|
6
6
|
import { getAllProviders, init_providers, isProviderConfigured } from "../../../providers/index.js";
|
|
7
7
|
import { resolveShareConfig } from "../../../share/share-config.js";
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { init_write_file_atomic, writeTextAtomic } from "../../../infra/write-file-atomic.js";
|
|
2
|
-
import { homedir } from "node:os";
|
|
3
|
-
import { join } from "node:path";
|
|
4
2
|
import { readFile } from "node:fs/promises";
|
|
3
|
+
import { join } from "node:path";
|
|
4
|
+
import { homedir } from "node:os";
|
|
5
5
|
//#region src/gateway/hono/lib/extension-store.ts
|
|
6
6
|
init_write_file_atomic();
|
|
7
7
|
/** Extension UI: write-through JSON KV per namespace under ~/.xopc/extensions/{namespace}/storage.json */
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import { dirname, resolve } from "node:path";
|
|
2
|
-
import { readFileSync } from "node:fs";
|
|
3
1
|
import { createHash } from "node:crypto";
|
|
2
|
+
import { readFileSync } from "node:fs";
|
|
3
|
+
import { dirname, resolve } from "node:path";
|
|
4
4
|
import { fileURLToPath } from "node:url";
|
|
5
5
|
//#region src/gateway/hono/lib/static-ui.ts
|
|
6
6
|
const __dirname = dirname(fileURLToPath(import.meta.url));
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { CredentialResolver, init_credentials } from "../../auth/credentials.js";
|
|
2
|
-
import { getProviderAuthState, init_providers, isProviderConfigured } from "../../providers/index.js";
|
|
3
2
|
import { anthropicOAuthProvider } from "../../auth/oauth/anthropic.js";
|
|
3
|
+
import { getProviderAuthState, init_providers, isProviderConfigured } from "../../providers/index.js";
|
|
4
4
|
import { minimaxOAuthProvider } from "../../auth/oauth/minimax.js";
|
|
5
5
|
import { minimaxCnOAuthProvider } from "../../auth/oauth/minimax-cn.js";
|
|
6
6
|
import { kimiCodingOAuthProvider } from "../../auth/oauth/kimi-coding.js";
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
+
import { init_agent_scope, normalizeAgentId } from "../../../agent/agent-scope.js";
|
|
1
2
|
import { init_localized_text, normalizeLocalizedText } from "../../../config/localized-text.js";
|
|
2
3
|
import { init_schema, parseModelRef } from "../../../config/schema.js";
|
|
3
|
-
import { init_agent_scope, normalizeAgentId } from "../../../agent/agent-scope.js";
|
|
4
4
|
import { init_providers, isProviderConfigured, resolveModel } from "../../../providers/index.js";
|
|
5
5
|
import { getVoiceModelsConfig } from "../../../config/voice.js";
|
|
6
6
|
import { deleteAgentAvatarFile, finalizeCreateAgentDirs, listAgentProfileFiles, listGatewayAgents, prepareCreateAgent, prepareCreateAgentsBatch, prepareDeleteAgent, prepareUpdateAgent, readAgentAvatarFile, readAgentProfileFile, runAfterDeletePurge, writeAgentAvatarFromBase64, writeAgentProfileFile } from "../../agents-admin.js";
|
|
@@ -7,8 +7,8 @@ import { createOAuthHandler } from "../oauth.js";
|
|
|
7
7
|
import { createOAuthAsyncHandler } from "../oauth-async.js";
|
|
8
8
|
import { extensionAssetMimeType } from "../lib/extension-assets.js";
|
|
9
9
|
import { loadExtensionStore, saveExtensionStore } from "../lib/extension-store.js";
|
|
10
|
-
import { relative, resolve } from "node:path";
|
|
11
10
|
import { existsSync, readFileSync, statSync } from "node:fs";
|
|
11
|
+
import { relative, resolve } from "node:path";
|
|
12
12
|
//#region src/gateway/hono/routes/auth-registry-extensions.ts
|
|
13
13
|
init_providers();
|
|
14
14
|
const EXTENSION_ASSET_CSP = "default-src 'self'; script-src 'self' 'unsafe-inline'; style-src 'self' 'unsafe-inline'; img-src 'self' data: blob:; connect-src 'none'; frame-ancestors 'self'; frame-src 'none'; base-uri 'none'; object-src 'none'; form-action 'none'";
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { BindingsConfigSchema, McpConfigSchema, init_schema } from "../../../../config/schema.js";
|
|
2
1
|
import { CredentialResolver, init_credentials } from "../../../../auth/credentials.js";
|
|
2
|
+
import { BindingsConfigSchema, McpConfigSchema, init_schema } from "../../../../config/schema.js";
|
|
3
3
|
import { canonicalizeConfiguredMcpServer } from "../../../../config/mcp-config-normalize.js";
|
|
4
4
|
import { mergeCronConfigPatch, mergeGatewaySkillsMarketplacePatch, mergeGoalsConfigPatch, mergeSessionConfigPatch, mergeUpdateConfigPatch } from "../../../../config/web-patch.js";
|
|
5
5
|
import { assertGatewayAuthConfigured, resolveGatewayAuth } from "../../../auth.js";
|
|
@@ -0,0 +1,177 @@
|
|
|
1
|
+
import { listConnectorProviders } from "../../../connectors/providers.js";
|
|
2
|
+
import { getConnectorDefinition, listConnectorCatalog } from "../../../connectors/catalog.js";
|
|
3
|
+
import { recordConnectorHealthUsage } from "../../../connectors/usage.js";
|
|
4
|
+
import { getConnectorInstance, listConnectorInstances } from "../../../connectors/instances.js";
|
|
5
|
+
import { testConnectorInstance } from "../../../connectors/health.js";
|
|
6
|
+
import { completeConnectorOAuth, startConnectorOAuth } from "../../../connectors/oauth.js";
|
|
7
|
+
import { installConnector, uninstallConnector } from "../../../connectors/install.js";
|
|
8
|
+
//#region src/gateway/hono/routes/connectors.ts
|
|
9
|
+
function errorMessage(error) {
|
|
10
|
+
return error instanceof Error ? error.message : String(error);
|
|
11
|
+
}
|
|
12
|
+
function registerConnectorRoutes(authenticated, deps) {
|
|
13
|
+
const { service, strictRateLimitMiddleware } = deps;
|
|
14
|
+
authenticated.get("/api/connectors/catalog", (c) => {
|
|
15
|
+
return c.json({
|
|
16
|
+
ok: true,
|
|
17
|
+
payload: {
|
|
18
|
+
connectors: listConnectorCatalog(),
|
|
19
|
+
providers: listConnectorProviders().map((provider) => ({
|
|
20
|
+
id: provider.id,
|
|
21
|
+
displayName: provider.displayName
|
|
22
|
+
}))
|
|
23
|
+
}
|
|
24
|
+
});
|
|
25
|
+
});
|
|
26
|
+
authenticated.get("/api/connectors/installed", (c) => {
|
|
27
|
+
const config = service.currentConfig;
|
|
28
|
+
return c.json({
|
|
29
|
+
ok: true,
|
|
30
|
+
payload: { instances: listConnectorInstances(config) }
|
|
31
|
+
});
|
|
32
|
+
});
|
|
33
|
+
authenticated.get("/api/connectors/:id", (c) => {
|
|
34
|
+
const connectorId = c.req.param("id");
|
|
35
|
+
const connector = getConnectorDefinition(connectorId);
|
|
36
|
+
if (!connector) return c.json({
|
|
37
|
+
ok: false,
|
|
38
|
+
error: `Unknown connector: ${connectorId}`
|
|
39
|
+
}, 404);
|
|
40
|
+
const config = service.currentConfig;
|
|
41
|
+
const instances = listConnectorInstances(config).filter((instance) => instance.connectorId === connectorId);
|
|
42
|
+
return c.json({
|
|
43
|
+
ok: true,
|
|
44
|
+
payload: {
|
|
45
|
+
connector,
|
|
46
|
+
instances
|
|
47
|
+
}
|
|
48
|
+
});
|
|
49
|
+
});
|
|
50
|
+
authenticated.post("/api/connectors/approvals/respond", async (c) => {
|
|
51
|
+
const body = await c.req.json().catch(() => ({}));
|
|
52
|
+
return c.json({
|
|
53
|
+
ok: true,
|
|
54
|
+
payload: {
|
|
55
|
+
acknowledged: true,
|
|
56
|
+
body
|
|
57
|
+
}
|
|
58
|
+
});
|
|
59
|
+
});
|
|
60
|
+
authenticated.post("/api/connectors/:id/oauth/start", strictRateLimitMiddleware, async (c) => {
|
|
61
|
+
const connectorId = c.req.param("id");
|
|
62
|
+
const connector = getConnectorDefinition(connectorId);
|
|
63
|
+
if (!connector) return c.json({
|
|
64
|
+
ok: false,
|
|
65
|
+
error: `Unknown connector: ${connectorId}`
|
|
66
|
+
}, 404);
|
|
67
|
+
try {
|
|
68
|
+
const oauth = await startConnectorOAuth(connector);
|
|
69
|
+
return c.json({
|
|
70
|
+
ok: true,
|
|
71
|
+
payload: { oauth }
|
|
72
|
+
});
|
|
73
|
+
} catch (error) {
|
|
74
|
+
return c.json({
|
|
75
|
+
ok: false,
|
|
76
|
+
error: errorMessage(error)
|
|
77
|
+
}, 400);
|
|
78
|
+
}
|
|
79
|
+
});
|
|
80
|
+
authenticated.post("/api/connectors/:id/oauth/complete", strictRateLimitMiddleware, async (c) => {
|
|
81
|
+
const connectorId = c.req.param("id");
|
|
82
|
+
const connector = getConnectorDefinition(connectorId);
|
|
83
|
+
if (!connector) return c.json({
|
|
84
|
+
ok: false,
|
|
85
|
+
error: `Unknown connector: ${connectorId}`
|
|
86
|
+
}, 404);
|
|
87
|
+
const body = await c.req.json().catch(() => ({}));
|
|
88
|
+
const deviceCode = body && typeof body === "object" && !Array.isArray(body) && typeof body.deviceCode === "string" ? body.deviceCode : "";
|
|
89
|
+
try {
|
|
90
|
+
const oauth = await completeConnectorOAuth(connector, { deviceCode });
|
|
91
|
+
return c.json({
|
|
92
|
+
ok: true,
|
|
93
|
+
payload: { oauth }
|
|
94
|
+
});
|
|
95
|
+
} catch (error) {
|
|
96
|
+
return c.json({
|
|
97
|
+
ok: false,
|
|
98
|
+
error: errorMessage(error)
|
|
99
|
+
}, 400);
|
|
100
|
+
}
|
|
101
|
+
});
|
|
102
|
+
authenticated.post("/api/connectors/:id/install", strictRateLimitMiddleware, async (c) => {
|
|
103
|
+
const connectorId = c.req.param("id");
|
|
104
|
+
const body = await c.req.json().catch(() => ({}));
|
|
105
|
+
const input = body && typeof body === "object" && !Array.isArray(body) ? body : {};
|
|
106
|
+
const config = service.currentConfig;
|
|
107
|
+
try {
|
|
108
|
+
const instance = await installConnector(config, connectorId, input);
|
|
109
|
+
const saved = await service.saveConfig(config);
|
|
110
|
+
if (!saved.saved) return c.json({
|
|
111
|
+
ok: false,
|
|
112
|
+
error: saved.error
|
|
113
|
+
}, 500);
|
|
114
|
+
return c.json({
|
|
115
|
+
ok: true,
|
|
116
|
+
payload: { instance }
|
|
117
|
+
});
|
|
118
|
+
} catch (error) {
|
|
119
|
+
return c.json({
|
|
120
|
+
ok: false,
|
|
121
|
+
error: errorMessage(error)
|
|
122
|
+
}, 400);
|
|
123
|
+
}
|
|
124
|
+
});
|
|
125
|
+
authenticated.post("/api/connectors/:id/test", async (c) => {
|
|
126
|
+
const instanceId = c.req.param("id");
|
|
127
|
+
const config = service.currentConfig;
|
|
128
|
+
const instance = getConnectorInstance(config, instanceId);
|
|
129
|
+
if (!instance) return c.json({
|
|
130
|
+
ok: false,
|
|
131
|
+
error: `Connector instance not found: ${instanceId}`
|
|
132
|
+
}, 404);
|
|
133
|
+
try {
|
|
134
|
+
const result = await testConnectorInstance(config, instance.materialized.serverId);
|
|
135
|
+
recordConnectorHealthUsage(config, instance.instanceId, result);
|
|
136
|
+
const saved = await service.saveConfig(config);
|
|
137
|
+
if (!saved.saved) return c.json({
|
|
138
|
+
ok: false,
|
|
139
|
+
error: saved.error
|
|
140
|
+
}, 500);
|
|
141
|
+
return c.json({
|
|
142
|
+
ok: true,
|
|
143
|
+
payload: result
|
|
144
|
+
});
|
|
145
|
+
} catch (error) {
|
|
146
|
+
return c.json({
|
|
147
|
+
ok: false,
|
|
148
|
+
error: errorMessage(error)
|
|
149
|
+
}, 500);
|
|
150
|
+
}
|
|
151
|
+
});
|
|
152
|
+
authenticated.delete("/api/connectors/:id", strictRateLimitMiddleware, async (c) => {
|
|
153
|
+
const instanceId = c.req.param("id");
|
|
154
|
+
const config = service.currentConfig;
|
|
155
|
+
try {
|
|
156
|
+
const instance = uninstallConnector(config, instanceId);
|
|
157
|
+
const saved = await service.saveConfig(config);
|
|
158
|
+
if (!saved.saved) return c.json({
|
|
159
|
+
ok: false,
|
|
160
|
+
error: saved.error
|
|
161
|
+
}, 500);
|
|
162
|
+
return c.json({
|
|
163
|
+
ok: true,
|
|
164
|
+
payload: { instance }
|
|
165
|
+
});
|
|
166
|
+
} catch (error) {
|
|
167
|
+
return c.json({
|
|
168
|
+
ok: false,
|
|
169
|
+
error: errorMessage(error)
|
|
170
|
+
}, 400);
|
|
171
|
+
}
|
|
172
|
+
});
|
|
173
|
+
}
|
|
174
|
+
//#endregion
|
|
175
|
+
export { registerConnectorRoutes };
|
|
176
|
+
|
|
177
|
+
//# sourceMappingURL=connectors.js.map
|