@xopcai/xopc 0.0.303 → 0.0.307
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 +4 -4
- package/README.zh-CN.md +4 -4
- package/dist/browser-ext/dist/assets/{auth-B_9ZuGDx.js → auth-C3yV1y_l.js} +67 -22
- package/dist/browser-ext/dist/background.js +4 -4
- package/dist/browser-ext/dist/sidepanel.html +1 -1
- package/dist/browser-ext/dist/sidepanel.js +3 -3
- package/dist/browser-ext/manifest.json +1 -1
- package/dist/extensions/feishu/xopc.extension.json +0 -3
- package/dist/extensions/telegram/xopc.extension.json +1 -4
- package/dist/extensions/weixin/xopc.extension.json +0 -3
- package/dist/gateway/static/root/assets/{activity-store-DCi5rh4e.js → activity-store-wgSB2HYK.js} +1 -1
- package/dist/gateway/static/root/assets/{agent-avatar-dicebear-Ch3DzUvP.js → agent-avatar-dicebear-CZeQo09T.js} +1 -1
- package/dist/gateway/static/root/assets/agent-defaults-settings-panel-BPsRb9Ck.js +1 -0
- package/dist/gateway/static/root/assets/{agents-DXHD-ST3.js → agents-BlrHMbRx.js} +1 -1
- package/dist/gateway/static/root/assets/{api-CAV9PN9i.js → api-BKHmTb0w.js} +1 -1
- package/dist/gateway/static/root/assets/api-DFOlahZv.js +1 -0
- package/dist/gateway/static/root/assets/app-management-settings-panel-Bzw4fQP8.js +1 -0
- package/dist/gateway/static/root/assets/appearance-settings-8GZpUXva.js +1 -0
- package/dist/gateway/static/root/assets/apps-page-BkQQtIxH.js +1 -0
- package/dist/gateway/static/root/assets/{archive-plugin-BKGzaVvM.js → archive-plugin-CQ2NaoHb.js} +1 -1
- package/dist/gateway/static/root/assets/{attachment-load-8bARdLnp.js → attachment-load-BFi1H7yJ.js} +1 -1
- package/dist/gateway/static/root/assets/{automations-page-BAEenyzx.js → automations-page-CDBXcii_.js} +1 -1
- package/dist/gateway/static/root/assets/automations-workspace-CUpiTTiY.js +6 -0
- package/dist/gateway/static/root/assets/{binary-plugins-Cv3GS9Eo.js → binary-plugins-D07eWmOx.js} +1 -1
- package/dist/gateway/static/root/assets/{block-editor-D4ZIVQbk.css → block-editor-BdOTO0Yo.css} +1 -1
- package/dist/gateway/static/root/assets/{block-editor-DUeb92LG.js → block-editor-CtVnjyYU.js} +3 -3
- package/dist/gateway/static/root/assets/{browser-automation-inputs-BGT0xoTv.js → browser-automation-inputs-BzkJog8e.js} +1 -1
- package/dist/gateway/static/root/assets/{browser-automations-page-D1O22WIf.js → browser-automations-page-DyrSbDdG.js} +2 -2
- package/dist/gateway/static/root/assets/browser-settings-page-CqTxLpil.js +3 -0
- package/dist/gateway/static/root/assets/button-CS04eWY9.js +1 -0
- package/dist/gateway/static/root/assets/capabilities-settings-panel-BZ_-pnS6.js +8 -0
- package/dist/gateway/static/root/assets/channels-settings-DAD9qE3J.js +1 -0
- package/dist/gateway/static/root/assets/{channels-status-swr-C_icwbWj.js → channels-status-swr-B2JwuTjG.js} +1 -1
- package/dist/gateway/static/root/assets/{chat-terminal-dock-D-JYPVYl.js → chat-terminal-dock-B62SZdAo.js} +2 -2
- package/dist/gateway/static/root/assets/{computer-settings-page-Bcfp948A.js → computer-settings-page-ClSresNq.js} +1 -1
- package/dist/gateway/static/root/assets/connector-service-page-CPqVmNvx.js +1 -0
- package/dist/gateway/static/root/assets/connectors-page-BUQyg3CW.js +2 -0
- package/dist/gateway/static/root/assets/cron-expression-CTMi_tql.js +2 -0
- package/dist/gateway/static/root/assets/date-picker-B71AJK50.js +1 -0
- package/dist/gateway/static/root/assets/{dependency-picker-UtoUm57Q.js → dependency-picker-DlyGK-kA.js} +1 -1
- package/dist/gateway/static/root/assets/{desktop-pet-Bryx7gRM.js → desktop-pet-DGkbTE8_.js} +1 -1
- package/dist/gateway/static/root/assets/desktop-pet-settings-BY8r9j66.js +1 -0
- package/dist/gateway/static/root/assets/device-pairing-wizard-DzRrgd59.js +1 -0
- package/dist/gateway/static/root/assets/{extension-debug-page-DQlFTVBx.js → extension-debug-page-L8Mm1n3A.js} +1 -1
- package/dist/gateway/static/root/assets/{extension-page-BSsqRDXh.js → extension-page-CFc4vSNU.js} +1 -1
- package/dist/gateway/static/root/assets/{extension-settings-page-DbVZv9ve.js → extension-settings-page-B5zWyHr3.js} +1 -1
- package/dist/gateway/static/root/assets/{gateway-config-swr-D5AM8cyQ.js → gateway-config-swr-B6wHa6ZI.js} +1 -1
- package/dist/gateway/static/root/assets/gateway-realtime-B53R0CA4.js +1 -0
- package/dist/gateway/static/root/assets/gateway-realtime-store-BLDgrJ30.js +1 -0
- package/dist/gateway/static/root/assets/gateway-settings-D7qmTH4R.js +1 -0
- package/dist/gateway/static/root/assets/{gateway-startup-retry-CSJWdnFs.js → gateway-startup-retry-DRzGnEV-.js} +1 -1
- package/dist/gateway/static/root/assets/{heartbeat-settings-Cxowc29b.js → heartbeat-settings-Glsl3X5b.js} +1 -1
- package/dist/gateway/static/root/assets/home-page-s9hDQ8Hc.js +1 -0
- package/dist/gateway/static/root/assets/{image-generation-api-BNh604hw.js → image-generation-api-Ck_pyDom.js} +1 -1
- package/dist/gateway/static/root/assets/imports-page-ByBX7ome.js +1 -0
- package/dist/gateway/static/root/assets/index-RBCkv8a_.js +79 -0
- package/dist/gateway/static/root/assets/index-cFU4S35z.css +1 -0
- package/dist/gateway/static/root/assets/keyboard-shortcuts-settings-C45RlO8a.js +1 -0
- package/dist/gateway/static/root/assets/local-app-workbench-page-DP0x2jpR.js +2 -0
- package/dist/gateway/static/root/assets/{local-apps-page-CXPaPDGm.js → local-apps-page-C_AQc2bI.js} +1 -1
- package/dist/gateway/static/root/assets/{locale-store-DLK05Y1a.js → locale-store-msTfRK8P.js} +1 -1
- package/dist/gateway/static/root/assets/logs-page-DvM8Pyok.js +2 -0
- package/dist/gateway/static/root/assets/management-settings-D1uwSutV.js +1 -0
- package/dist/gateway/static/root/assets/{markdown-view-B8maDRWh.js → markdown-view-BInabSKf.js} +2 -2
- package/dist/gateway/static/root/assets/{media-plugins-tSJ0CvcX.js → media-plugins-C4mhf13f.js} +1 -1
- package/dist/gateway/static/root/assets/messages-F74LVAiU.js +3 -0
- package/dist/gateway/static/root/assets/note-detail-panel-D35sErp2.js +5 -0
- package/dist/gateway/static/root/assets/notes-page-8jCDklDn.js +8 -0
- package/dist/gateway/static/root/assets/{page-tabs-CQx6H-GS.js → page-tabs-1go_BtX1.js} +1 -1
- package/dist/gateway/static/root/assets/{popover-select-DldSX8GX.js → popover-select-9i-ZtHXL.js} +1 -1
- package/dist/gateway/static/root/assets/{preview-open-alternatives-A3-bVtdy.js → preview-open-alternatives-DmoSC0j1.js} +1 -1
- package/dist/gateway/static/root/assets/{proactive-page-D46cR3sf.js → proactive-page-xAjKTIID.js} +1 -1
- package/dist/gateway/static/root/assets/{product-open-page-CujZXOea.js → product-open-page-gmi5LLwM.js} +1 -1
- package/dist/gateway/static/root/assets/project-detail-page-BUMQHy_N.js +1 -0
- package/dist/gateway/static/root/assets/projects-page-DT-Mt7XR.js +1 -0
- package/dist/gateway/static/root/assets/{registry-api-BMFL4vis.js → registry-api-BSWtko7U.js} +1 -1
- package/dist/gateway/static/root/assets/remote-access-hub-Clz3byir.js +1 -0
- package/dist/gateway/static/root/assets/{runtime-tools-settings-panel-CR0qvq9C.js → runtime-tools-settings-panel-ClkOoxDl.js} +2 -2
- package/dist/gateway/static/root/assets/{schema-form-BUD9lLEE.js → schema-form-BuEmLiaU.js} +1 -1
- package/dist/gateway/static/root/assets/sessions-page-tQRwktKm.js +1 -0
- package/dist/gateway/static/root/assets/settings-advanced-gate-DqWg9XS5.js +1 -0
- package/dist/gateway/static/root/assets/{settings-form-section-BZPCUH6a.js → settings-form-section-Dor39QON.js} +1 -1
- package/dist/gateway/static/root/assets/{settings-page-XoHmqIdm.js → settings-page-Xj-yvIc8.js} +1 -1
- package/dist/gateway/static/root/assets/setup-status-panel-BB_sMB7P.js +1 -0
- package/dist/gateway/static/root/assets/share-preview-page-BFWZoXdm.js +2 -0
- package/dist/gateway/static/root/assets/shares-settings-oDALm4b6.js +1 -0
- package/dist/gateway/static/root/assets/skill-reload-api-DmwelnfK.js +1 -0
- package/dist/gateway/static/root/assets/skills-page-BE9JXz4U.js +2 -0
- package/dist/gateway/static/root/assets/{skills-page.utils-CH-quGxZ.js → skills-page.utils-Ii8qeXhs.js} +1 -1
- package/dist/gateway/static/root/assets/{system-settings-panel-CGC7eBso.js → system-settings-panel-Di6OSO-0.js} +1 -1
- package/dist/gateway/static/root/assets/task-detail-page-D1AWszc7.js +1 -0
- package/dist/gateway/static/root/assets/theme-store-1SZ-HFHX.js +1 -0
- package/dist/gateway/static/root/assets/tunnel-api-DDOlOYlj.js +1 -0
- package/dist/gateway/static/root/assets/{use-autosave-BydB6x2K.js → use-autosave-CQ8uWNnB.js} +1 -1
- package/dist/gateway/static/root/assets/user-model-page-C00i4ea0.js +2 -0
- package/dist/gateway/static/root/assets/{voice-api-key-field-CPUDBcag.js → voice-api-key-field-COTzshjL.js} +1 -1
- package/dist/gateway/static/root/assets/{voice-config-api-bZqN8-UF.js → voice-config-api-DgJML_uM.js} +1 -1
- package/dist/gateway/static/root/assets/{work-discovery-overlay-D_FmJbGH.js → work-discovery-overlay-_URrXbi4.js} +1 -1
- package/dist/gateway/static/root/assets/workflow-run-setup-panel-CALs-1nd.js +3 -0
- package/dist/gateway/static/root/assets/workflows-page-BUiBjz6m.js +6 -0
- package/dist/gateway/static/root/channel-icons/feishu.svg +6 -12
- package/dist/gateway/static/root/connector-icons/SOURCES.md +12 -0
- package/dist/gateway/static/root/connector-icons/dingtalk-mark.svg +1 -0
- package/dist/gateway/static/root/connector-icons/tencent-meeting-mark.svg +37 -0
- package/dist/gateway/static/root/connector-icons/wps-calendar.svg +14 -0
- package/dist/gateway/static/root/connector-icons/wps-docs.svg +14 -0
- package/dist/gateway/static/root/connector-icons/wps-mail.svg +7 -0
- package/dist/gateway/static/root/index.html +14 -12
- package/dist/package.js +1 -1
- package/dist/packages/gateway-contract/src/device-pairing.js +100 -7
- package/dist/packages/gateway-contract/src/gateway-scopes.js +53 -0
- package/dist/packages/gateway-contract/src/index.js +2 -0
- package/dist/packages/realtime-client/src/index.js +14 -2
- package/dist/packages/realtime-protocol/src/index.js +18 -14
- package/dist/src/agent/agent-instance-gateway.d.ts +2 -0
- package/dist/src/agent/agent-manager.d.ts +2 -0
- package/dist/src/agent/agent-manager.js +40 -12
- package/dist/src/agent/agent-scope.d.ts +4 -1
- package/dist/src/agent/agent-scope.js +19 -3
- package/dist/src/agent/commands/command-isolation.js +11 -9
- package/dist/src/agent/commands/command-registry.js +18 -33
- package/dist/src/agent/context/audit.js +12 -2
- package/dist/src/agent/context/coordinator.d.ts +13 -3
- package/dist/src/agent/context/coordinator.js +27 -11
- package/dist/src/agent/context/execution-context.js +42 -22
- package/dist/src/agent/context/execution-context.types.d.ts +4 -2
- package/dist/src/agent/context/execution-scope.d.ts +2 -2
- package/dist/src/agent/context/execution-scope.js +1 -1
- package/dist/src/agent/context/project-context.d.ts +2 -2
- package/dist/src/agent/context/project-context.js +3 -3
- package/dist/src/agent/embedded/run-for-session.d.ts +1 -0
- package/dist/src/agent/embedded/run-for-session.js +7 -1
- package/dist/src/agent/external-tools/composio-provider.js +83 -20
- package/dist/src/agent/external-tools/gateway-tools.js +2 -1
- package/dist/src/agent/inbound/attachment-pipeline.d.ts +2 -0
- package/dist/src/agent/inbound/attachment-pipeline.js +3 -3
- package/dist/src/agent/inbound/inbound-loop.js +1 -0
- package/dist/src/agent/inbound/turn-dispatcher.js +3 -3
- package/dist/src/agent/mcp/bundle-mcp-runtime.js +1 -1
- package/dist/src/agent/mcp/mcp-stdio-transport.js +5 -2
- package/dist/src/agent/mcp/oauth/mcp-oauth-manager.js +1 -1
- package/dist/src/agent/memory/compaction-promotion.js +7 -2
- package/dist/src/agent/memory/create-memory-manager.js +1 -0
- package/dist/src/agent/memory/manager.d.ts +6 -0
- package/dist/src/agent/memory/manager.js +74 -39
- package/dist/src/agent/memory/runtime.d.ts +3 -3
- package/dist/src/agent/memory/runtime.js +11 -4
- package/dist/src/agent/orchestration/agent-orchestrator.js +4 -1
- package/dist/src/agent/prompt/cache-boundary.d.ts +2 -0
- package/dist/src/agent/prompt/cache-boundary.js +10 -1
- package/dist/src/agent/service/build-direct-message-content.d.ts +1 -0
- package/dist/src/agent/service/build-direct-message-content.js +2 -1
- package/dist/src/agent/service/direct-turn-helpers.js +3 -2
- package/dist/src/agent/service/process-direct-streaming.d.ts +3 -1
- package/dist/src/agent/service/process-direct-streaming.js +3 -2
- package/dist/src/agent/service/webchat-tts.d.ts +0 -4
- package/dist/src/agent/service/webchat-tts.js +20 -19
- package/dist/src/agent/tools/factory.js +3 -3
- package/dist/src/agent/tools/knowledge-memory-tool.d.ts +2 -2
- package/dist/src/agent/tools/knowledge-memory-tool.js +7 -7
- package/dist/src/browser/native-messaging-host.js +2 -2
- package/dist/src/channels/attachments/voice-stt-webchat.d.ts +3 -0
- package/dist/src/channels/attachments/voice-stt-webchat.js +22 -9
- package/dist/src/cli/commands/agent.js +2 -0
- package/dist/src/cli/commands/config.js +8 -9
- package/dist/src/cli/commands/doctor/checks/database-schema.js +1 -1
- package/dist/src/cli/commands/extension-marketplace.js +69 -44
- package/dist/src/cli/commands/extension-pack.js +0 -2
- package/dist/src/cli/commands/extension.js +4 -25
- package/dist/src/cli/commands/gateway/lifecycle.js +1 -1
- package/dist/src/cli/commands/onboard/gateway.js +2 -1
- package/dist/src/cli/utils/init-workspace-core.js +5 -2
- package/dist/src/config/index.js +2 -2
- package/dist/src/config/loader.d.ts +1 -0
- package/dist/src/config/loader.js +14 -1
- package/dist/src/config/schema.d.ts +22 -3
- package/dist/src/config/schema.js +13 -3
- package/dist/src/connectors/account-access.d.ts +4 -0
- package/dist/src/connectors/account-access.js +23 -0
- package/dist/src/connectors/approval-resume.d.ts +4 -0
- package/dist/src/connectors/approval-resume.js +23 -0
- package/dist/src/connectors/auth-provider-registry.d.ts +1 -0
- package/dist/src/connectors/auth-provider-registry.js +2 -1
- package/dist/src/connectors/authorization-attempts.d.ts +21 -0
- package/dist/src/connectors/authorization-attempts.js +33 -0
- package/dist/src/connectors/builtin-catalog.js +1 -3
- package/dist/src/connectors/catalog.js +2 -1
- package/dist/src/connectors/china-catalog.d.ts +2 -0
- package/dist/src/connectors/china-catalog.js +430 -0
- package/dist/src/connectors/composio-backends.d.ts +26 -0
- package/dist/src/connectors/composio-backends.js +65 -0
- package/dist/src/connectors/composio-catalog.js +2 -1
- package/dist/src/connectors/composio-managed-client.js +3 -1
- package/dist/src/connectors/composio-managed-events.js +5 -2
- package/dist/src/connectors/composio-session-types.d.ts +2 -0
- package/dist/src/connectors/composio-sessions.d.ts +11 -2
- package/dist/src/connectors/composio-sessions.js +137 -35
- package/dist/src/connectors/composio-triggers.js +4 -2
- package/dist/src/connectors/composio.d.ts +11 -8
- package/dist/src/connectors/composio.js +68 -84
- package/dist/src/connectors/connected-source-ingestion.js +4 -3
- package/dist/src/connectors/connection-recovery-service.js +25 -13
- package/dist/src/connectors/connector-identity.d.ts +2 -0
- package/dist/src/connectors/connector-identity.js +18 -5
- package/dist/src/connectors/content-enrichment.js +1 -1
- package/dist/src/connectors/instances.js +1 -7
- package/dist/src/connectors/learning-coordinator.js +4 -3
- package/dist/src/connectors/materialize.js +14 -1
- package/dist/src/connectors/policy.d.ts +1 -1
- package/dist/src/connectors/policy.js +1 -1
- package/dist/src/connectors/principal.js +24 -3
- package/dist/src/connectors/providers.d.ts +1 -0
- package/dist/src/connectors/providers.js +14 -2
- package/dist/src/connectors/runtime-adapter-registry.js +4 -9
- package/dist/src/connectors/secret-store.d.ts +4 -1
- package/dist/src/connectors/secret-store.js +7 -3
- package/dist/src/connectors/source-change-publisher.js +4 -2
- package/dist/src/connectors/types.d.ts +16 -11
- package/dist/src/connectors/workflow-preflight.d.ts +2 -1
- package/dist/src/connectors/workflow-preflight.js +20 -3
- package/dist/src/execution-environments/local-worktree-manager.js +17 -15
- package/dist/src/execution-environments/store.js +4 -2
- package/dist/src/execution-environments/types.d.ts +3 -0
- package/dist/src/execution-environments/types.js +2 -1
- package/dist/src/execution-environments/worktree-safety.d.ts +8 -0
- package/dist/src/execution-environments/worktree-safety.js +43 -0
- package/dist/src/extensions/activation-planner.d.ts +1 -1
- package/dist/src/extensions/activation-planner.js +1 -1
- package/dist/src/extensions/api-version.d.ts +4 -0
- package/dist/src/extensions/api-version.js +15 -0
- package/dist/src/extensions/api.d.ts +3 -9
- package/dist/src/extensions/api.js +26 -32
- package/dist/src/extensions/config-validation.d.ts +8 -0
- package/dist/src/extensions/config-validation.js +25 -0
- package/dist/src/extensions/extension-registry-impl.d.ts +20 -9
- package/dist/src/extensions/extension-registry-impl.js +79 -11
- package/dist/src/extensions/hooks.d.ts +1 -1
- package/dist/src/extensions/index.d.ts +2 -1
- package/dist/src/extensions/install-transaction.d.ts +2 -0
- package/dist/src/extensions/install-transaction.js +32 -21
- package/dist/src/extensions/install.js +18 -1
- package/dist/src/extensions/loader.d.ts +5 -5
- package/dist/src/extensions/loader.js +109 -47
- package/dist/src/extensions/lockfile.d.ts +3 -5
- package/dist/src/extensions/lockfile.js +41 -14
- package/dist/src/extensions/normalize-manifest.js +6 -60
- package/dist/src/extensions/sdk/index.d.ts +3 -2
- package/dist/src/extensions/sdk/index.js +2 -2
- package/dist/src/extensions/sdk/testing.js +0 -4
- package/dist/src/extensions/security.js +5 -7
- package/dist/src/extensions/types/core.d.ts +0 -5
- package/dist/src/extensions/types/index.d.ts +1 -1
- package/dist/src/extensions/types/manifest.d.ts +1 -25
- package/dist/src/extensions/types/providers.d.ts +1 -1
- package/dist/src/extensions/types/registration.d.ts +0 -12
- package/dist/src/extensions/update.js +71 -30
- package/dist/src/gateway/heartbeat/service.js +2 -2
- package/dist/src/gateway/hono/lib/config-payload.d.ts +3 -1
- package/dist/src/gateway/hono/routes/auth-registry-extensions.js +47 -10
- package/dist/src/gateway/hono/routes/connectors.js +208 -17
- package/dist/src/gateway/hono/routes/context-sources.js +1 -1
- package/dist/src/gateway/hono/routes/devices.js +10 -7
- package/dist/src/gateway/hono/routes/endpoint-compatibility.js +6 -0
- package/dist/src/gateway/hono/routes/extension-gateway.js +0 -33
- package/dist/src/gateway/hono/routes/home.js +4 -1
- package/dist/src/gateway/hono/routes/lazy-bundles.js +0 -1
- package/dist/src/gateway/hono/routes/mcp.js +1 -1
- package/dist/src/gateway/hono/routes/realtime.js +30 -8
- package/dist/src/gateway/hono/routes/user-model.js +25 -6
- package/dist/src/gateway/index.js +4 -1
- package/dist/src/gateway/lock.d.ts +2 -0
- package/dist/src/gateway/lock.js +31 -14
- package/dist/src/gateway/run-loop.js +2 -1
- package/dist/src/gateway/security/gateway-scopes.d.ts +2 -5
- package/dist/src/gateway/security/gateway-scopes.js +3 -45
- package/dist/src/gateway/security/index.js +2 -1
- package/dist/src/gateway/service.js +11 -7
- package/dist/src/heartbeat/index.js +1 -1
- package/dist/src/imports/importService.d.ts +1 -1
- package/dist/src/imports/inventory.js +16 -2
- package/dist/src/imports/productImport.js +5 -5
- package/dist/src/imports/types.d.ts +3 -3
- package/dist/src/infra/exec.d.ts +2 -2
- package/dist/src/infra/exec.js +32 -27
- package/dist/src/infra/run-command.js +15 -50
- package/dist/src/infra/update-restart.js +1 -1
- package/dist/src/knowledge/connected-knowledge-pipeline.js +13 -3
- package/dist/src/knowledge-memory/domain.d.ts +17 -1
- package/dist/src/knowledge-memory/index.js +2 -2
- package/dist/src/knowledge-memory/repository.d.ts +26 -4
- package/dist/src/knowledge-memory/repository.js +171 -36
- package/dist/src/mcp/channel-bridge.js +7 -3
- package/dist/src/media-understanding/registry.js +6 -1
- package/dist/src/migrations/knowledge-memory-read-policy-config.d.ts +2 -0
- package/dist/src/migrations/knowledge-memory-read-policy-config.js +48 -0
- package/dist/src/migrations/runner.js +2 -1
- package/dist/src/proactive/follow-ups.js +2 -1
- package/dist/src/process/bounded-output.d.ts +10 -0
- package/dist/src/process/bounded-output.js +41 -0
- package/dist/src/process/kill-tree.d.ts +6 -17
- package/dist/src/process/kill-tree.js +43 -75
- package/dist/src/process/process-spec.d.ts +39 -0
- package/dist/src/process/process-spec.js +13 -0
- package/dist/src/process/run-process.d.ts +4 -0
- package/dist/src/process/run-process.js +97 -0
- package/dist/src/providers/plugin-registry.d.ts +1 -1
- package/dist/src/providers/plugin-registry.js +6 -0
- package/dist/src/realtime/runtime.js +3 -1
- package/dist/src/session/store.js +1 -1
- package/dist/src/storage/sqlite/connection-wait-repository.d.ts +3 -0
- package/dist/src/storage/sqlite/connection-wait-repository.js +63 -2
- package/dist/src/storage/sqlite/connector-account-repository.d.ts +6 -0
- package/dist/src/storage/sqlite/connector-account-repository.js +35 -7
- package/dist/src/storage/sqlite/connector-repository.js +15 -10
- package/dist/src/storage/sqlite/connector-sync-policy-repository.js +1 -1
- package/dist/src/storage/sqlite/device-pairing-approval.js +1 -1
- package/dist/src/storage/sqlite/index.d.ts +1 -1
- package/dist/src/storage/sqlite/index.js +6 -4
- package/dist/src/storage/sqlite/migrations/180_execution_environment_ownership.sql +7 -0
- package/dist/src/storage/sqlite/migrations/181_knowledge_item_status_events.sql +12 -0
- package/dist/src/storage/sqlite/migrations/182_connector_account_policies.sql +92 -0
- package/dist/src/storage/sqlite/migrations/183_connector_backend_consistency.sql +20 -0
- package/dist/src/storage/sqlite/migrations/runner.d.ts +1 -1
- package/dist/src/storage/sqlite/migrations/runner.js +7 -7
- package/dist/src/storage/sqlite/schema.js +1 -1
- package/dist/src/storage/sqlite/schema.sql +13 -0
- package/dist/src/storage/sqlite/transcript-repository.d.ts +4 -0
- package/dist/src/storage/sqlite/transcript-repository.js +36 -1
- package/dist/src/tasks/home-query-service.js +3 -3
- package/dist/src/tui/backends/embedded-backend.d.ts +24 -8
- package/dist/src/tui/backends/embedded-backend.js +114 -10
- package/dist/src/tui/backends/gateway-realtime-backend.d.ts +18 -0
- package/dist/src/tui/backends/gateway-realtime-backend.js +31 -4
- package/dist/src/tui/components/assistant-message.d.ts +4 -1
- package/dist/src/tui/components/assistant-message.js +10 -2
- package/dist/src/tui/components/cell-render-mode.d.ts +4 -0
- package/dist/src/tui/components/cell-render-mode.js +1 -0
- package/dist/src/tui/components/chat-log.d.ts +17 -4
- package/dist/src/tui/components/chat-log.js +68 -50
- package/dist/src/tui/components/custom-editor.d.ts +2 -2
- package/dist/src/tui/components/custom-editor.js +5 -1
- package/dist/src/tui/components/pending-input-preview.d.ts +9 -0
- package/dist/src/tui/components/pending-input-preview.js +33 -0
- package/dist/src/tui/components/semantic-cell.d.ts +17 -0
- package/dist/src/tui/components/semantic-cell.js +29 -0
- package/dist/src/tui/components/tool-execution.d.ts +5 -1
- package/dist/src/tui/components/tool-execution.js +33 -10
- package/dist/src/tui/components/transcript-overlay.d.ts +29 -0
- package/dist/src/tui/components/transcript-overlay.js +114 -0
- package/dist/src/tui/components/tui-bottom-bar.js +3 -1
- package/dist/src/tui/components/user-message.d.ts +5 -1
- package/dist/src/tui/components/user-message.js +12 -1
- package/dist/src/tui/extension-host/load-extensions.d.ts +1 -1
- package/dist/src/tui/extension-host/runtime-context.js +2 -1
- package/dist/src/tui/extension-host/runtime.d.ts +1 -1
- package/dist/src/tui/format-tui-hotkeys.js +8 -1
- package/dist/src/tui/tui-agent-events.js +31 -0
- package/dist/src/tui/tui-backend.d.ts +23 -11
- package/dist/src/tui/tui-backend.js +1 -9
- package/dist/src/tui/tui-chat-input-state.d.ts +25 -0
- package/dist/src/tui/tui-chat-input-state.js +36 -0
- package/dist/src/tui/tui-command-formatters.js +2 -1
- package/dist/src/tui/tui-commands.js +1 -1
- package/dist/src/tui/tui-startup-resources.js +1 -1
- package/dist/src/tui/tui-types.d.ts +2 -1
- package/dist/src/tui/tui-types.js +2 -1
- package/dist/src/tui/tui.js +122 -30
- package/dist/src/tui/xopc-tui-keybindings.d.ts +23 -3
- package/dist/src/tui/xopc-tui-keybindings.js +22 -2
- package/dist/src/user-context/access-policy.d.ts +2 -2
- package/dist/src/user-context/access-policy.js +10 -2
- package/dist/src/user-context/config.d.ts +23 -6
- package/dist/src/user-context/config.js +54 -7
- package/dist/src/voice/platform-streams.js +11 -1
- package/dist/src/voice/realtime/omniEngine.js +13 -1
- package/dist/src/voice/realtime/runtime.js +2 -1
- package/dist/src/voice/tts/audio.js +1 -1
- package/dist/src/voice/tts/speech-registry.js +6 -1
- package/dist/src/workflows/domain/definition.d.ts +1 -0
- package/dist/src/workflows/domain/validation.js +1 -1
- package/dist/src/workflows/service/workflow-run-service.js +14 -0
- package/dist/src/workflows/service/workflow-session-bridge.d.ts +1 -0
- package/dist/src/workflows/service/workflow-session-bridge.js +1 -0
- package/package.json +5 -3
- package/dist/gateway/static/root/assets/agent-defaults-settings-panel-4oGrNj3m.js +0 -1
- package/dist/gateway/static/root/assets/api-fPapljyb.js +0 -1
- package/dist/gateway/static/root/assets/app-management-settings-panel-CdXnNtTg.js +0 -1
- package/dist/gateway/static/root/assets/appearance-settings-izNAyDhW.js +0 -1
- package/dist/gateway/static/root/assets/apps-page-BQb3RCga.js +0 -1
- package/dist/gateway/static/root/assets/automations-workspace-5vTl4x0h.js +0 -6
- package/dist/gateway/static/root/assets/browser-settings-page-CH9prS-f.js +0 -3
- package/dist/gateway/static/root/assets/button-CGlRPNzi.js +0 -1
- package/dist/gateway/static/root/assets/capabilities-settings-panel-DMURlZbj.js +0 -8
- package/dist/gateway/static/root/assets/channels-settings-CFBS3Yqy.js +0 -1
- package/dist/gateway/static/root/assets/connectors-page-DI1c3BMz.js +0 -2
- package/dist/gateway/static/root/assets/cron-expression-BJMBFKCh.js +0 -2
- package/dist/gateway/static/root/assets/date-picker-BFRIn5y9.js +0 -1
- package/dist/gateway/static/root/assets/desktop-pet-settings-DFsyEJUr.js +0 -1
- package/dist/gateway/static/root/assets/device-pairing-wizard-C3TQVPRy.js +0 -1
- package/dist/gateway/static/root/assets/gateway-settings-DUqVsB3X.js +0 -1
- package/dist/gateway/static/root/assets/home-page-CLkumXdN.js +0 -1
- package/dist/gateway/static/root/assets/imports-page-DXNfRmk9.js +0 -1
- package/dist/gateway/static/root/assets/index-BLRIcVQa.css +0 -1
- package/dist/gateway/static/root/assets/index-gheM453N.js +0 -79
- package/dist/gateway/static/root/assets/keyboard-shortcuts-settings-5Hcec8Xf.js +0 -1
- package/dist/gateway/static/root/assets/local-app-workbench-page-BDg1-fcw.js +0 -2
- package/dist/gateway/static/root/assets/logs-page-BWZc5jwO.js +0 -2
- package/dist/gateway/static/root/assets/management-settings-COa3PhMs.js +0 -1
- package/dist/gateway/static/root/assets/messages-C9h8SImu.js +0 -3
- package/dist/gateway/static/root/assets/note-detail-panel-D_YGzNcR.js +0 -5
- package/dist/gateway/static/root/assets/notes-page-D1f2oI2-.js +0 -8
- package/dist/gateway/static/root/assets/project-detail-page-CRlD_Rwv.js +0 -1
- package/dist/gateway/static/root/assets/projects-page-mmX0SavY.js +0 -1
- package/dist/gateway/static/root/assets/remote-access-hub-Cqr3K6T5.js +0 -1
- package/dist/gateway/static/root/assets/sessions-page-CPkvbdJP.js +0 -1
- package/dist/gateway/static/root/assets/settings-advanced-gate-Cu0DAbeH.js +0 -1
- package/dist/gateway/static/root/assets/setup-status-panel-D8fQF1jZ.js +0 -1
- package/dist/gateway/static/root/assets/share-preview-page-BgHqwTuT.js +0 -2
- package/dist/gateway/static/root/assets/shares-settings-Id4vRHzI.js +0 -1
- package/dist/gateway/static/root/assets/skill-reload-api-BB2Fj_di.js +0 -1
- package/dist/gateway/static/root/assets/skills-page-BAwF4LpS.js +0 -2
- package/dist/gateway/static/root/assets/task-detail-page-BVjw812D.js +0 -1
- package/dist/gateway/static/root/assets/theme-store-KfFEGMlp.js +0 -1
- package/dist/gateway/static/root/assets/tunnel-api-Do98Xk05.js +0 -1
- package/dist/gateway/static/root/assets/user-model-page-Nv68a4ak.js +0 -2
- package/dist/gateway/static/root/assets/workflow-run-setup-panel-1lZ_btki.js +0 -3
- package/dist/gateway/static/root/assets/workflows-page-DFOhccm3.js +0 -6
- package/dist/src/extensions/when-context.d.ts +0 -6
- package/dist/src/extensions/when-context.js +0 -26
- package/dist/src/extensions/when-expression.d.ts +0 -11
- package/dist/src/extensions/when-expression.js +0 -213
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
import { init_config, normalizeKnowledgeMemoryConfigInput } from "../user-context/config.js";
|
|
2
|
+
import { init_lock, isGatewayConfigLockedByAnotherProcessSync } from "../gateway/lock.js";
|
|
3
|
+
import { existsSync, readFileSync } from "node:fs";
|
|
4
|
+
//#region src/migrations/knowledge-memory-read-policy-config.ts
|
|
5
|
+
init_lock();
|
|
6
|
+
init_config();
|
|
7
|
+
const id = "knowledge-memory-read-policy-config";
|
|
8
|
+
function convertedConfig(ctx) {
|
|
9
|
+
if (!existsSync(ctx.configPath)) return null;
|
|
10
|
+
const config = JSON.parse(readFileSync(ctx.configPath, "utf8"));
|
|
11
|
+
const userContext = config.userContext;
|
|
12
|
+
if (!userContext || typeof userContext !== "object" || Array.isArray(userContext)) return null;
|
|
13
|
+
const knowledgeMemory = userContext.knowledgeMemory;
|
|
14
|
+
if (!knowledgeMemory || typeof knowledgeMemory !== "object" || Array.isArray(knowledgeMemory)) return null;
|
|
15
|
+
const memory = knowledgeMemory;
|
|
16
|
+
if (!Array.isArray(memory.sources)) return null;
|
|
17
|
+
userContext.knowledgeMemory = normalizeKnowledgeMemoryConfigInput(memory);
|
|
18
|
+
return config;
|
|
19
|
+
}
|
|
20
|
+
function item(status) {
|
|
21
|
+
return {
|
|
22
|
+
id,
|
|
23
|
+
title: "Knowledge memory read policy configuration",
|
|
24
|
+
kind: "config",
|
|
25
|
+
safety: "auto",
|
|
26
|
+
status,
|
|
27
|
+
message: "Split knowledge memory visibility scopes from content sources."
|
|
28
|
+
};
|
|
29
|
+
}
|
|
30
|
+
const knowledgeMemoryReadPolicyConfigMigration = {
|
|
31
|
+
id,
|
|
32
|
+
kind: "config",
|
|
33
|
+
safety: "auto",
|
|
34
|
+
detect: (ctx) => convertedConfig(ctx) ? item("planned") : null,
|
|
35
|
+
apply: (ctx) => {
|
|
36
|
+
if (isGatewayConfigLockedByAnotherProcessSync(ctx.configPath)) return {
|
|
37
|
+
...item("skipped"),
|
|
38
|
+
message: "Deferred knowledge memory config migration until the running gateway restarts."
|
|
39
|
+
};
|
|
40
|
+
const config = convertedConfig(ctx);
|
|
41
|
+
return config ? {
|
|
42
|
+
...item("applied"),
|
|
43
|
+
details: { config }
|
|
44
|
+
} : item("not_needed");
|
|
45
|
+
}
|
|
46
|
+
};
|
|
47
|
+
//#endregion
|
|
48
|
+
export { knowledgeMemoryReadPolicyConfigMigration };
|
|
@@ -3,6 +3,7 @@ import { init_logger } from "../utils/logger.js";
|
|
|
3
3
|
import { ConfigSchema, init_schema } from "../config/schema.js";
|
|
4
4
|
import { listRegisteredMigrations } from "./registry.js";
|
|
5
5
|
import { conversationRoutingConfigMigration } from "./conversation-routing-config.js";
|
|
6
|
+
import { knowledgeMemoryReadPolicyConfigMigration } from "./knowledge-memory-read-policy-config.js";
|
|
6
7
|
import { dirname, join } from "node:path";
|
|
7
8
|
import { existsSync, mkdirSync, readFileSync, renameSync, writeFileSync } from "node:fs";
|
|
8
9
|
//#region src/migrations/runner.ts
|
|
@@ -11,7 +12,7 @@ init_logger();
|
|
|
11
12
|
const log = createLogger("Migrations");
|
|
12
13
|
const MIGRATION_LEDGER_FILENAME = "migrations.json";
|
|
13
14
|
const CONFIG_BACKUP_COUNT = 10;
|
|
14
|
-
const CORE_MIGRATIONS = [conversationRoutingConfigMigration];
|
|
15
|
+
const CORE_MIGRATIONS = [conversationRoutingConfigMigration, knowledgeMemoryReadPolicyConfigMigration];
|
|
15
16
|
function listAllMigrations() {
|
|
16
17
|
return [...CORE_MIGRATIONS, ...listRegisteredMigrations().map((entry) => entry.migration)];
|
|
17
18
|
}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { getSqliteDatabase, init_transaction, runSqliteWriteTransaction } from "../storage/sqlite/transaction.js";
|
|
2
|
+
import { getConnectorConnection, init_connector_repository } from "../storage/sqlite/connector-repository.js";
|
|
2
3
|
import { listKnowledgeSourceItems } from "../storage/sqlite/knowledge-repository.js";
|
|
3
|
-
import { getConnectorConnection } from "../storage/sqlite/connector-repository.js";
|
|
4
4
|
import { sourceFreshness } from "./source-freshness.js";
|
|
5
5
|
import { emailFields, readMailThread } from "./mail-thread.js";
|
|
6
6
|
import { authorizedConnectedSource } from "./execution/authorization.js";
|
|
@@ -12,6 +12,7 @@ import { ProactiveEventService } from "./service.js";
|
|
|
12
12
|
import { randomUUID } from "node:crypto";
|
|
13
13
|
import { z } from "zod";
|
|
14
14
|
//#region src/proactive/follow-ups.ts
|
|
15
|
+
init_connector_repository();
|
|
15
16
|
init_transaction();
|
|
16
17
|
const COMMUNICATION_SCENARIO = "communication_follow_up";
|
|
17
18
|
const CreateSchema = z.object({
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
export interface BoundedOutput {
|
|
2
|
+
readonly text: string;
|
|
3
|
+
readonly totalBytes: number;
|
|
4
|
+
readonly truncated: boolean;
|
|
5
|
+
}
|
|
6
|
+
/** Keeps the newest bytes so failures retain their most useful tail output. */
|
|
7
|
+
export declare function createBoundedOutput(maxBytes: number): {
|
|
8
|
+
append(chunk: Buffer | string): void;
|
|
9
|
+
snapshot(): BoundedOutput;
|
|
10
|
+
};
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
//#region src/process/bounded-output.ts
|
|
2
|
+
/** Keeps the newest bytes so failures retain their most useful tail output. */
|
|
3
|
+
function createBoundedOutput(maxBytes) {
|
|
4
|
+
const limit = Math.max(0, Math.floor(maxBytes));
|
|
5
|
+
let chunks = [];
|
|
6
|
+
let capturedBytes = 0;
|
|
7
|
+
let totalBytes = 0;
|
|
8
|
+
return {
|
|
9
|
+
append(chunk) {
|
|
10
|
+
const value = Buffer.isBuffer(chunk) ? chunk : Buffer.from(chunk);
|
|
11
|
+
totalBytes += value.byteLength;
|
|
12
|
+
if (limit === 0) {
|
|
13
|
+
chunks = [];
|
|
14
|
+
capturedBytes = 0;
|
|
15
|
+
return;
|
|
16
|
+
}
|
|
17
|
+
chunks.push(value);
|
|
18
|
+
capturedBytes += value.byteLength;
|
|
19
|
+
while (capturedBytes > limit && chunks.length > 0) {
|
|
20
|
+
const excess = capturedBytes - limit;
|
|
21
|
+
const first = chunks[0];
|
|
22
|
+
if (first.byteLength <= excess) {
|
|
23
|
+
chunks.shift();
|
|
24
|
+
capturedBytes -= first.byteLength;
|
|
25
|
+
} else {
|
|
26
|
+
chunks[0] = first.subarray(excess);
|
|
27
|
+
capturedBytes -= excess;
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
},
|
|
31
|
+
snapshot() {
|
|
32
|
+
return {
|
|
33
|
+
text: Buffer.concat(chunks, capturedBytes).toString("utf8"),
|
|
34
|
+
totalBytes,
|
|
35
|
+
truncated: totalBytes > capturedBytes
|
|
36
|
+
};
|
|
37
|
+
}
|
|
38
|
+
};
|
|
39
|
+
}
|
|
40
|
+
//#endregion
|
|
41
|
+
export { createBoundedOutput };
|
|
@@ -1,18 +1,7 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
* - Unix: send SIGTERM to process group first, wait grace period, then SIGKILL.
|
|
6
|
-
*
|
|
7
|
-
* This gives child processes a chance to clean up (close connections, remove
|
|
8
|
-
* temp files, terminate their own children) before being hard-killed.
|
|
9
|
-
*
|
|
10
|
-
* When the child was spawned with `detached: false` (e.g. service-managed
|
|
11
|
-
* runtime under launchd/systemd), pass `detached: false` to skip the Unix
|
|
12
|
-
* `process.kill(-pid, ...)` group-kill — it would otherwise target the
|
|
13
|
-
* gateway's own process group and SIGTERM the gateway itself. (#71662)
|
|
14
|
-
*/
|
|
15
|
-
export declare function killProcessTree(pid: number, opts?: {
|
|
16
|
-
graceMs?: number;
|
|
1
|
+
import { type ChildProcess } from 'node:child_process';
|
|
2
|
+
/** Terminates a child and optionally its process tree, escalating after a grace period. */
|
|
3
|
+
export declare function terminateProcess(child: ChildProcess, options?: {
|
|
4
|
+
tree?: boolean;
|
|
17
5
|
detached?: boolean;
|
|
18
|
-
|
|
6
|
+
graceMs?: number;
|
|
7
|
+
}): Promise<boolean>;
|
|
@@ -1,35 +1,7 @@
|
|
|
1
1
|
import { spawn } from "node:child_process";
|
|
2
2
|
//#region src/process/kill-tree.ts
|
|
3
3
|
const DEFAULT_GRACE_MS = 3e3;
|
|
4
|
-
|
|
5
|
-
/**
|
|
6
|
-
* Best-effort process-tree termination with graceful shutdown.
|
|
7
|
-
* - Windows: use taskkill /T to include descendants. Sends SIGTERM-equivalent
|
|
8
|
-
* first (without /F), then force-kills if process survives.
|
|
9
|
-
* - Unix: send SIGTERM to process group first, wait grace period, then SIGKILL.
|
|
10
|
-
*
|
|
11
|
-
* This gives child processes a chance to clean up (close connections, remove
|
|
12
|
-
* temp files, terminate their own children) before being hard-killed.
|
|
13
|
-
*
|
|
14
|
-
* When the child was spawned with `detached: false` (e.g. service-managed
|
|
15
|
-
* runtime under launchd/systemd), pass `detached: false` to skip the Unix
|
|
16
|
-
* `process.kill(-pid, ...)` group-kill — it would otherwise target the
|
|
17
|
-
* gateway's own process group and SIGTERM the gateway itself. (#71662)
|
|
18
|
-
*/
|
|
19
|
-
function killProcessTree(pid, opts) {
|
|
20
|
-
if (!Number.isFinite(pid) || pid <= 0) return;
|
|
21
|
-
const graceMs = normalizeGraceMs(opts?.graceMs);
|
|
22
|
-
if (process.platform === "win32") {
|
|
23
|
-
killProcessTreeWindows(pid, graceMs);
|
|
24
|
-
return;
|
|
25
|
-
}
|
|
26
|
-
killProcessTreeUnix(pid, graceMs, opts?.detached !== false);
|
|
27
|
-
}
|
|
28
|
-
function normalizeGraceMs(value) {
|
|
29
|
-
if (typeof value !== "number" || !Number.isFinite(value)) return DEFAULT_GRACE_MS;
|
|
30
|
-
return Math.max(0, Math.min(MAX_GRACE_MS, Math.floor(value)));
|
|
31
|
-
}
|
|
32
|
-
function isProcessAlive(pid) {
|
|
4
|
+
function processAlive(pid) {
|
|
33
5
|
try {
|
|
34
6
|
process.kill(pid, 0);
|
|
35
7
|
return true;
|
|
@@ -37,56 +9,52 @@ function isProcessAlive(pid) {
|
|
|
37
9
|
return false;
|
|
38
10
|
}
|
|
39
11
|
}
|
|
40
|
-
function
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
}
|
|
44
|
-
try {
|
|
45
|
-
process.kill(pid, "SIGTERM");
|
|
46
|
-
} catch {
|
|
47
|
-
return;
|
|
48
|
-
}
|
|
49
|
-
}
|
|
50
|
-
else try {
|
|
51
|
-
process.kill(pid, "SIGTERM");
|
|
52
|
-
} catch {
|
|
53
|
-
return;
|
|
54
|
-
}
|
|
55
|
-
setTimeout(() => {
|
|
56
|
-
if (useGroupKill && isProcessAlive(-pid)) try {
|
|
57
|
-
process.kill(-pid, "SIGKILL");
|
|
58
|
-
return;
|
|
59
|
-
} catch {}
|
|
60
|
-
if (!isProcessAlive(pid)) return;
|
|
61
|
-
try {
|
|
62
|
-
process.kill(pid, "SIGKILL");
|
|
63
|
-
} catch {}
|
|
64
|
-
}, graceMs).unref();
|
|
12
|
+
function delay(ms) {
|
|
13
|
+
return new Promise((resolve) => {
|
|
14
|
+
setTimeout(resolve, ms).unref();
|
|
15
|
+
});
|
|
65
16
|
}
|
|
66
|
-
function
|
|
67
|
-
|
|
68
|
-
spawn("taskkill",
|
|
17
|
+
function taskkill(pid, force) {
|
|
18
|
+
return new Promise((resolve) => {
|
|
19
|
+
const child = spawn("taskkill", [
|
|
20
|
+
...force ? ["/F"] : [],
|
|
21
|
+
"/T",
|
|
22
|
+
"/PID",
|
|
23
|
+
String(pid)
|
|
24
|
+
], {
|
|
69
25
|
stdio: "ignore",
|
|
70
|
-
detached: true,
|
|
71
26
|
windowsHide: true
|
|
72
27
|
});
|
|
73
|
-
|
|
28
|
+
child.once("error", () => resolve());
|
|
29
|
+
child.once("close", () => resolve());
|
|
30
|
+
});
|
|
74
31
|
}
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
if (
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
}
|
|
32
|
+
/** Terminates a child and optionally its process tree, escalating after a grace period. */
|
|
33
|
+
async function terminateProcess(child, options = {}) {
|
|
34
|
+
const pid = child.pid;
|
|
35
|
+
if (!pid || child.exitCode !== null || child.signalCode !== null) return true;
|
|
36
|
+
const graceMs = Math.max(0, Math.min(6e4, Math.floor(options.graceMs ?? DEFAULT_GRACE_MS)));
|
|
37
|
+
if (process.platform === "win32" && options.tree) {
|
|
38
|
+
await taskkill(pid, false);
|
|
39
|
+
if (graceMs > 0 && processAlive(pid)) await delay(graceMs);
|
|
40
|
+
if (processAlive(pid)) await taskkill(pid, true);
|
|
41
|
+
return !processAlive(pid);
|
|
42
|
+
}
|
|
43
|
+
const target = options.tree && options.detached ? -pid : pid;
|
|
44
|
+
try {
|
|
45
|
+
process.kill(target, "SIGTERM");
|
|
46
|
+
} catch {
|
|
47
|
+
return true;
|
|
48
|
+
}
|
|
49
|
+
if (graceMs > 0 && processAlive(pid)) await delay(graceMs);
|
|
50
|
+
if (processAlive(pid)) try {
|
|
51
|
+
process.kill(target, "SIGKILL");
|
|
52
|
+
} catch {
|
|
53
|
+
try {
|
|
54
|
+
child.kill("SIGKILL");
|
|
55
|
+
} catch {}
|
|
56
|
+
}
|
|
57
|
+
return !processAlive(pid);
|
|
90
58
|
}
|
|
91
59
|
//#endregion
|
|
92
|
-
export {
|
|
60
|
+
export { terminateProcess };
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
import type { ChildProcess, SpawnOptions } from 'node:child_process';
|
|
2
|
+
export interface ProcessSpec {
|
|
3
|
+
program: string;
|
|
4
|
+
args?: readonly string[];
|
|
5
|
+
cwd?: string;
|
|
6
|
+
env?: NodeJS.ProcessEnv;
|
|
7
|
+
input?: string | Buffer;
|
|
8
|
+
keepStdinOpen?: boolean;
|
|
9
|
+
timeoutMs?: number | null;
|
|
10
|
+
maxOutputBytes?: number;
|
|
11
|
+
signal?: AbortSignal;
|
|
12
|
+
detached?: boolean;
|
|
13
|
+
windowsHide?: boolean;
|
|
14
|
+
shell?: SpawnOptions['shell'];
|
|
15
|
+
terminationPolicy?: 'root' | 'tree';
|
|
16
|
+
onOutput?: (stream: 'stdout' | 'stderr', chunk: Buffer) => void;
|
|
17
|
+
}
|
|
18
|
+
export interface ProcessResult {
|
|
19
|
+
exitCode: number | null;
|
|
20
|
+
spawnErrorCode?: string;
|
|
21
|
+
signal: NodeJS.Signals | null;
|
|
22
|
+
stdout: string;
|
|
23
|
+
stderr: string;
|
|
24
|
+
timedOut: boolean;
|
|
25
|
+
aborted: boolean;
|
|
26
|
+
outputTruncated: boolean;
|
|
27
|
+
terminationVerified: boolean;
|
|
28
|
+
}
|
|
29
|
+
export interface ProcessHandle {
|
|
30
|
+
readonly child: ChildProcess;
|
|
31
|
+
readonly completion: Promise<ProcessResult>;
|
|
32
|
+
terminate(reason?: 'cancelled' | 'timed_out'): void;
|
|
33
|
+
}
|
|
34
|
+
export declare class ProcessExitError extends Error {
|
|
35
|
+
readonly spec: ProcessSpec;
|
|
36
|
+
readonly result: ProcessResult;
|
|
37
|
+
readonly code: number | string | null;
|
|
38
|
+
constructor(spec: ProcessSpec, result: ProcessResult);
|
|
39
|
+
}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
//#region src/process/process-spec.ts
|
|
2
|
+
var ProcessExitError = class extends Error {
|
|
3
|
+
code;
|
|
4
|
+
constructor(spec, result) {
|
|
5
|
+
super(result.stderr.trim() || `Process exited with code ${String(result.exitCode)}`);
|
|
6
|
+
this.spec = spec;
|
|
7
|
+
this.result = result;
|
|
8
|
+
this.name = "ProcessExitError";
|
|
9
|
+
this.code = result.spawnErrorCode ?? result.exitCode;
|
|
10
|
+
}
|
|
11
|
+
};
|
|
12
|
+
//#endregion
|
|
13
|
+
export { ProcessExitError };
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import { type ProcessHandle, type ProcessResult, type ProcessSpec } from './process-spec.js';
|
|
2
|
+
export declare function spawnProcess(spec: ProcessSpec): ProcessHandle;
|
|
3
|
+
export declare function runProcess(spec: ProcessSpec): Promise<ProcessResult>;
|
|
4
|
+
export declare function runProcessChecked(spec: ProcessSpec): Promise<ProcessResult>;
|
|
@@ -0,0 +1,97 @@
|
|
|
1
|
+
import { createBoundedOutput } from "./bounded-output.js";
|
|
2
|
+
import { terminateProcess } from "./kill-tree.js";
|
|
3
|
+
import { ProcessExitError } from "./process-spec.js";
|
|
4
|
+
import { spawn } from "node:child_process";
|
|
5
|
+
//#region src/process/run-process.ts
|
|
6
|
+
const DEFAULT_MAX_OUTPUT_BYTES = 1024 * 1024;
|
|
7
|
+
function spawnProcess(spec) {
|
|
8
|
+
spec.signal?.throwIfAborted();
|
|
9
|
+
const detached = spec.detached ?? (spec.terminationPolicy === "tree" && process.platform !== "win32");
|
|
10
|
+
const child = spawn(spec.program, [...spec.args ?? []], {
|
|
11
|
+
cwd: spec.cwd,
|
|
12
|
+
env: spec.env ?? process.env,
|
|
13
|
+
stdio: [
|
|
14
|
+
"pipe",
|
|
15
|
+
"pipe",
|
|
16
|
+
"pipe"
|
|
17
|
+
],
|
|
18
|
+
detached,
|
|
19
|
+
windowsHide: spec.windowsHide ?? true,
|
|
20
|
+
shell: spec.shell ?? false
|
|
21
|
+
});
|
|
22
|
+
const stdout = createBoundedOutput(spec.maxOutputBytes ?? DEFAULT_MAX_OUTPUT_BYTES);
|
|
23
|
+
const stderr = createBoundedOutput(spec.maxOutputBytes ?? DEFAULT_MAX_OUTPUT_BYTES);
|
|
24
|
+
let timedOut = false;
|
|
25
|
+
let aborted = false;
|
|
26
|
+
let terminationRequested = false;
|
|
27
|
+
let settled = false;
|
|
28
|
+
let timer;
|
|
29
|
+
const terminate = (reason = "cancelled") => {
|
|
30
|
+
if (settled || terminationRequested) return;
|
|
31
|
+
terminationRequested = true;
|
|
32
|
+
timedOut = reason === "timed_out";
|
|
33
|
+
aborted = reason === "cancelled";
|
|
34
|
+
terminateProcess(child, {
|
|
35
|
+
tree: spec.terminationPolicy === "tree",
|
|
36
|
+
detached
|
|
37
|
+
});
|
|
38
|
+
};
|
|
39
|
+
const abort = () => terminate("cancelled");
|
|
40
|
+
spec.signal?.addEventListener("abort", abort, { once: true });
|
|
41
|
+
if (spec.signal?.aborted) abort();
|
|
42
|
+
if (spec.timeoutMs != null && spec.timeoutMs > 0) {
|
|
43
|
+
timer = setTimeout(() => terminate("timed_out"), spec.timeoutMs);
|
|
44
|
+
timer.unref();
|
|
45
|
+
}
|
|
46
|
+
child.stdout?.on("data", (chunk) => {
|
|
47
|
+
stdout.append(chunk);
|
|
48
|
+
spec.onOutput?.("stdout", chunk);
|
|
49
|
+
});
|
|
50
|
+
child.stderr?.on("data", (chunk) => {
|
|
51
|
+
stderr.append(chunk);
|
|
52
|
+
spec.onOutput?.("stderr", chunk);
|
|
53
|
+
});
|
|
54
|
+
child.stdin?.on("error", (error) => stderr.append(error.message));
|
|
55
|
+
if (spec.input !== void 0) child.stdin?.end(spec.input);
|
|
56
|
+
else if (!spec.keepStdinOpen) child.stdin?.end();
|
|
57
|
+
return {
|
|
58
|
+
child,
|
|
59
|
+
completion: new Promise((resolve) => {
|
|
60
|
+
let spawnError;
|
|
61
|
+
child.once("error", (error) => {
|
|
62
|
+
spawnError = error;
|
|
63
|
+
});
|
|
64
|
+
child.once("close", (exitCode, signal) => {
|
|
65
|
+
if (settled) return;
|
|
66
|
+
settled = true;
|
|
67
|
+
if (timer) clearTimeout(timer);
|
|
68
|
+
spec.signal?.removeEventListener("abort", abort);
|
|
69
|
+
if (spawnError && stderr.snapshot().totalBytes === 0) stderr.append(spawnError.message);
|
|
70
|
+
const out = stdout.snapshot();
|
|
71
|
+
const err = stderr.snapshot();
|
|
72
|
+
resolve({
|
|
73
|
+
exitCode: spawnError ? null : exitCode,
|
|
74
|
+
...spawnError && spawnError.code ? { spawnErrorCode: spawnError.code } : {},
|
|
75
|
+
signal,
|
|
76
|
+
stdout: out.text,
|
|
77
|
+
stderr: err.text,
|
|
78
|
+
timedOut,
|
|
79
|
+
aborted,
|
|
80
|
+
outputTruncated: out.truncated || err.truncated,
|
|
81
|
+
terminationVerified: !terminationRequested || child.exitCode !== null || child.signalCode !== null
|
|
82
|
+
});
|
|
83
|
+
});
|
|
84
|
+
}),
|
|
85
|
+
terminate
|
|
86
|
+
};
|
|
87
|
+
}
|
|
88
|
+
function runProcess(spec) {
|
|
89
|
+
return spawnProcess(spec).completion;
|
|
90
|
+
}
|
|
91
|
+
async function runProcessChecked(spec) {
|
|
92
|
+
const result = await runProcess(spec);
|
|
93
|
+
if (result.exitCode !== 0) throw new ProcessExitError(spec, result);
|
|
94
|
+
return result;
|
|
95
|
+
}
|
|
96
|
+
//#endregion
|
|
97
|
+
export { runProcess, runProcessChecked, spawnProcess };
|
|
@@ -23,8 +23,14 @@ var init_plugin_registry = __esmMin((() => {
|
|
|
23
23
|
if (!provider.id) throw new Error("Provider must have an id");
|
|
24
24
|
if (!provider.name) throw new Error("Provider must have a name");
|
|
25
25
|
if (!provider.createStream || typeof provider.createStream !== "function") throw new Error("Provider must implement createStream method");
|
|
26
|
+
const previous = this.providers.get(provider.id);
|
|
26
27
|
this.providers.set(provider.id, provider);
|
|
27
28
|
log.info(`Registered provider: ${provider.name} (${provider.id})`);
|
|
29
|
+
return () => {
|
|
30
|
+
if (this.providers.get(provider.id) !== provider) return;
|
|
31
|
+
if (previous) this.providers.set(provider.id, previous);
|
|
32
|
+
else this.providers.delete(provider.id);
|
|
33
|
+
};
|
|
28
34
|
}
|
|
29
35
|
/**
|
|
30
36
|
* Get a provider by ID
|
|
@@ -2,7 +2,7 @@ import { createLogger } from "../utils/logger/index.js";
|
|
|
2
2
|
import { init_logger } from "../utils/logger.js";
|
|
3
3
|
import { hasGatewayScope } from "../gateway/security/gateway-scopes.js";
|
|
4
4
|
import { EndpointToolPolicyError } from "../endpoint-tools/policy.js";
|
|
5
|
-
import { REALTIME_HEARTBEAT_INTERVAL_MS, REALTIME_HEARTBEAT_TIMEOUT_MS, REALTIME_HELLO_TIMEOUT_MS, REALTIME_MAX_CLIENT_FRAME_BYTES, parseClientRealtimeJsonFrame, parseClientRealtimeMessage } from "../../packages/realtime-protocol/src/index.js";
|
|
5
|
+
import { REALTIME_CAPABILITIES, REALTIME_HEARTBEAT_INTERVAL_MS, REALTIME_HEARTBEAT_TIMEOUT_MS, REALTIME_HELLO_TIMEOUT_MS, REALTIME_MAX_CLIENT_FRAME_BYTES, parseClientRealtimeJsonFrame, parseClientRealtimeMessage } from "../../packages/realtime-protocol/src/index.js";
|
|
6
6
|
import { createPreauthConnectionBudget } from "../gateway/security/preauth-connection-budget.js";
|
|
7
7
|
import { RealtimeBroker } from "./broker.js";
|
|
8
8
|
import { RealtimeTicketStore } from "./tickets.js";
|
|
@@ -265,10 +265,12 @@ var RealtimeRuntime = class {
|
|
|
265
265
|
}
|
|
266
266
|
clearTimeout(helloTimer);
|
|
267
267
|
releaseBudget();
|
|
268
|
+
const negotiatedCapabilities = message.payload.capabilities ? [...new Set(message.payload.capabilities.filter((capability) => REALTIME_CAPABILITIES.includes(capability)))] : void 0;
|
|
268
269
|
writer.enqueue(serverMessage("realtime.ready", {
|
|
269
270
|
connectionId,
|
|
270
271
|
heartbeatIntervalMs: REALTIME_HEARTBEAT_INTERVAL_MS,
|
|
271
272
|
heartbeatTimeoutMs: REALTIME_HEARTBEAT_TIMEOUT_MS,
|
|
273
|
+
...message.payload.capabilities ? { negotiatedCapabilities } : {},
|
|
272
274
|
...endpointReady ? { endpoint: endpointReady } : {}
|
|
273
275
|
}), "critical");
|
|
274
276
|
subscribe(message.payload.subscriptions);
|
|
@@ -502,7 +502,7 @@ var SessionStore = class {
|
|
|
502
502
|
handover: result.handover,
|
|
503
503
|
audit: result.audit,
|
|
504
504
|
sourceEntries: expectedSnapshot.entries,
|
|
505
|
-
writePolicy: access.knowledge &&
|
|
505
|
+
writePolicy: access.knowledge && access.knowledgePolicy.scopes.includes("session") && access.knowledgePolicy.contentSources.includes("memory") ? this.options.config.userContext.knowledgeMemory.writePolicy : "deny"
|
|
506
506
|
});
|
|
507
507
|
log.info({
|
|
508
508
|
conversationId: key,
|
|
@@ -21,6 +21,9 @@ export declare function requireSessionConnection(input: {
|
|
|
21
21
|
export declare function queueConnectionResolution(wait: ConnectionWait, resolution: 'continued' | 'skipped'): ConnectionWait;
|
|
22
22
|
export declare function consumeConnectionResume(input: SessionInput): boolean;
|
|
23
23
|
export declare function connectionBindings(conversationId: string): ConnectionNeed[];
|
|
24
|
+
/** Changes to the objective or transcript invalidate an outstanding action approval. */
|
|
25
|
+
export declare function connectorObjectiveScope(conversationId: string): string | undefined;
|
|
26
|
+
export declare function bindObjectiveAccount(conversationId: string, connectorId: string, accountId: string): void;
|
|
24
27
|
export declare function connectionBinding(conversationId: string, connectorId: string): string | undefined;
|
|
25
28
|
/** New input wins over an outstanding auto-resume intent, including an already queued resume. */
|
|
26
29
|
export declare function invalidateConnectionResumeIntent(conversationId: string): void;
|
|
@@ -6,6 +6,9 @@ import { getSqliteDatabase, init_transaction, runSqliteWriteTransaction } from "
|
|
|
6
6
|
import { init_session_instance_repository, readCurrentTranscriptId } from "./session-instance-repository.js";
|
|
7
7
|
import { bumpSessionInputRevision, getSessionInputById, getSessionInputState, init_session_input_repository, insertSessionInput, setSessionInputStatus } from "./session-input-repository.js";
|
|
8
8
|
import { TaskRunRepository, init_task_run_repository } from "../../tasks/task-run-repository.js";
|
|
9
|
+
import { getConnectorAccount, init_connector_account_repository } from "./connector-account-repository.js";
|
|
10
|
+
import { getConnectorConnection, init_connector_repository } from "./connector-repository.js";
|
|
11
|
+
import { getSessionMetadata, init_session_repository } from "./session-repository.js";
|
|
9
12
|
import { randomUUID } from "node:crypto";
|
|
10
13
|
import { EventEmitter } from "node:events";
|
|
11
14
|
//#region src/storage/sqlite/connection-wait-repository.ts
|
|
@@ -222,9 +225,64 @@ function consumeConnectionResume(input) {
|
|
|
222
225
|
}
|
|
223
226
|
function connectionBindings(conversationId) {
|
|
224
227
|
if (!isXopcDatabaseOpen()) return [];
|
|
228
|
+
let metadata = getSessionMetadata(conversationId);
|
|
229
|
+
if (metadata?.sessionType === "workflow-subagent" && metadata.parentConversationId) metadata = getSessionMetadata(metadata.parentConversationId);
|
|
230
|
+
const workflowAccounts = metadata?.sessionType === "workflow-run" ? metadata.customData?.connectorAccounts : void 0;
|
|
231
|
+
if (workflowAccounts && typeof workflowAccounts === "object" && !Array.isArray(workflowAccounts)) return Object.entries(workflowAccounts).flatMap(([connectorId, ids]) => Array.isArray(ids) ? ids.flatMap((id) => {
|
|
232
|
+
if (typeof id !== "string") return [];
|
|
233
|
+
const account = getConnectorAccount(id);
|
|
234
|
+
return [{
|
|
235
|
+
key: `${connectorId}:${id}`,
|
|
236
|
+
connectorId,
|
|
237
|
+
accountId: id,
|
|
238
|
+
connectionId: account?.currentConnectionId,
|
|
239
|
+
label: account?.label ?? connectorId,
|
|
240
|
+
capabilities: []
|
|
241
|
+
}];
|
|
242
|
+
}) : []);
|
|
225
243
|
const state = getSessionInputState(conversationId);
|
|
226
244
|
const input = state.activeInputId ? getSessionInputById(conversationId, state.activeInputId) : void 0;
|
|
227
|
-
|
|
245
|
+
if (!input) return [];
|
|
246
|
+
const wait = input.payload ? getConnectionWait(input.payload.waitId) : void 0;
|
|
247
|
+
const stored = getSqliteDatabase().prepare(`SELECT connector_id, account_id FROM connector_objective_accounts
|
|
248
|
+
WHERE conversation_id = ? AND transcript_id = ? AND objective_id = ?`).all(conversationId, readCurrentTranscriptId(getSqliteDatabase(), conversationId) ?? "", wait?.objectiveId ?? input.id);
|
|
249
|
+
return (wait?.needs ?? stored.map((row) => ({
|
|
250
|
+
key: `${row.connector_id}:${row.account_id}`,
|
|
251
|
+
connectorId: row.connector_id,
|
|
252
|
+
accountId: row.account_id,
|
|
253
|
+
label: getConnectorAccount(row.account_id)?.label ?? row.connector_id,
|
|
254
|
+
capabilities: []
|
|
255
|
+
}))).map((need) => {
|
|
256
|
+
const accountId = need.accountId ?? (need.connectionId ? getConnectorConnection(need.connectionId)?.accountId : void 0);
|
|
257
|
+
const account = accountId ? getConnectorAccount(accountId) : void 0;
|
|
258
|
+
return {
|
|
259
|
+
...need,
|
|
260
|
+
accountId,
|
|
261
|
+
connectionId: account?.currentConnectionId ?? need.connectionId
|
|
262
|
+
};
|
|
263
|
+
});
|
|
264
|
+
}
|
|
265
|
+
/** Changes to the objective or transcript invalidate an outstanding action approval. */
|
|
266
|
+
function connectorObjectiveScope(conversationId) {
|
|
267
|
+
const state = getSessionInputState(conversationId);
|
|
268
|
+
const input = state.activeInputId ? getSessionInputById(conversationId, state.activeInputId) : void 0;
|
|
269
|
+
if (!input) return void 0;
|
|
270
|
+
const active = getActiveConnectionWait(conversationId);
|
|
271
|
+
const wait = input.payload ? getConnectionWait(input.payload.waitId) : active?.originInputId === input.id ? active : void 0;
|
|
272
|
+
return JSON.stringify([
|
|
273
|
+
readCurrentTranscriptId(getSqliteDatabase(), conversationId),
|
|
274
|
+
wait?.objectiveId ?? input.id,
|
|
275
|
+
wait?.objectiveRevision ?? 0
|
|
276
|
+
]);
|
|
277
|
+
}
|
|
278
|
+
function bindObjectiveAccount(conversationId, connectorId, accountId) {
|
|
279
|
+
const db = getSqliteDatabase();
|
|
280
|
+
const state = getSessionInputState(conversationId);
|
|
281
|
+
const input = state.activeInputId ? getSessionInputById(conversationId, state.activeInputId) : void 0;
|
|
282
|
+
if (!input) return;
|
|
283
|
+
const wait = input.payload ? getConnectionWait(input.payload.waitId) : void 0;
|
|
284
|
+
db.prepare(`INSERT OR IGNORE INTO connector_objective_accounts
|
|
285
|
+
(conversation_id, transcript_id, objective_id, connector_id, account_id) VALUES (?, ?, ?, ?, ?)`).run(conversationId, readCurrentTranscriptId(db, conversationId) ?? "", wait?.objectiveId ?? input.id, connectorId, accountId);
|
|
228
286
|
}
|
|
229
287
|
function connectionBinding(conversationId, connectorId) {
|
|
230
288
|
const matches = connectionBindings(conversationId).filter((need) => need.connectorId === connectorId);
|
|
@@ -334,15 +392,18 @@ function listConnectionWaitsToCheck() {
|
|
|
334
392
|
}
|
|
335
393
|
var log, events;
|
|
336
394
|
var init_connection_wait_repository = __esmMin((() => {
|
|
395
|
+
init_connector_account_repository();
|
|
396
|
+
init_connector_repository();
|
|
337
397
|
init_logger();
|
|
338
398
|
init_task_run_repository();
|
|
339
399
|
init_connection();
|
|
340
400
|
init_transaction();
|
|
341
401
|
init_session_instance_repository();
|
|
402
|
+
init_session_repository();
|
|
342
403
|
init_session_input_repository();
|
|
343
404
|
log = createLogger("Connectors:Wait");
|
|
344
405
|
events = new EventEmitter();
|
|
345
406
|
}));
|
|
346
407
|
//#endregion
|
|
347
408
|
init_connection_wait_repository();
|
|
348
|
-
export { cancelConnectionObjective, connectionBinding, connectionBindings, consumeConnectionResume, getActiveConnectionWait, getConnectionResumeInput, getConnectionWait, init_connection_wait_repository, invalidateConnectionResumeIntent, isConnectionSuspended, listConnectionWaitsToCheck, onConnectionWaitChanged, publishConnectionWait, queueConnectionResolution, requireSessionConnection, reviseCurrentConnectionObjective, updateConnectionWait };
|
|
409
|
+
export { bindObjectiveAccount, cancelConnectionObjective, connectionBinding, connectionBindings, connectorObjectiveScope, consumeConnectionResume, getActiveConnectionWait, getConnectionResumeInput, getConnectionWait, init_connection_wait_repository, invalidateConnectionResumeIntent, isConnectionSuspended, listConnectionWaitsToCheck, onConnectionWaitChanged, publishConnectionWait, queueConnectionResolution, requireSessionConnection, reviseCurrentConnectionObjective, updateConnectionWait };
|
|
@@ -1,5 +1,10 @@
|
|
|
1
1
|
import type { ConnectorAccount } from '../../connectors/types.js';
|
|
2
2
|
export declare function getConnectorAccount(id: string): ConnectorAccount | undefined;
|
|
3
|
+
export declare function updateConnectorAccount(id: string, patch: {
|
|
4
|
+
label?: string;
|
|
5
|
+
enabled?: boolean;
|
|
6
|
+
allowedAgentIds?: string[] | null;
|
|
7
|
+
}): ConnectorAccount;
|
|
3
8
|
export declare function listConnectorAccounts(options?: {
|
|
4
9
|
principalId?: string;
|
|
5
10
|
connectorId?: string;
|
|
@@ -7,6 +12,7 @@ export declare function listConnectorAccounts(options?: {
|
|
|
7
12
|
export declare function refreshConnectorAccountCurrent(accountId: string): ConnectorAccount | undefined;
|
|
8
13
|
export declare function reconcileConnectorAccount(input: {
|
|
9
14
|
connectionId: string;
|
|
15
|
+
backendId?: string;
|
|
10
16
|
identityKey: string;
|
|
11
17
|
identity: Record<string, unknown>;
|
|
12
18
|
}): ConnectorAccount;
|