@capybara-hq/kernel 0.1.0-rc.2 → 0.1.0-rc.21
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/bootstrap.json +94 -5
- package/dist/admin/admin-agents.controller.d.ts +28 -0
- package/dist/admin/admin-agents.controller.js +79 -0
- package/dist/admin/admin-connectors.controller.d.ts +29 -0
- package/dist/admin/admin-connectors.controller.js +79 -0
- package/dist/admin/admin-items.schemas.d.ts +42 -0
- package/dist/admin/admin-items.schemas.js +48 -0
- package/dist/admin/admin.controller.d.ts +52 -80
- package/dist/admin/admin.controller.js +112 -81
- package/dist/admin/admin.module.d.ts +4 -1
- package/dist/admin/admin.module.js +50 -4
- package/dist/admin/admin.schemas.d.ts +69 -0
- package/dist/admin/admin.schemas.js +53 -0
- package/dist/admin/audit.controller.d.ts +14 -0
- package/dist/admin/audit.controller.js +42 -0
- package/dist/admin/audit.schemas.d.ts +8 -0
- package/dist/admin/audit.schemas.js +17 -0
- package/dist/admin/extensions.controller.d.ts +34 -3
- package/dist/admin/extensions.controller.js +66 -8
- package/dist/admin/extensions.schemas.d.ts +7 -0
- package/dist/admin/extensions.schemas.js +10 -0
- package/dist/admin/health.service.d.ts +104 -0
- package/dist/admin/health.service.js +246 -0
- package/dist/admin/limit-defaults.d.ts +20 -0
- package/dist/admin/limit-defaults.js +10 -0
- package/dist/admin/overview.controller.d.ts +31 -0
- package/dist/admin/overview.controller.js +78 -0
- package/dist/admin/overview.schemas.d.ts +8 -0
- package/dist/admin/overview.schemas.js +13 -0
- package/dist/admin/overview.service.d.ts +112 -0
- package/dist/admin/overview.service.js +223 -0
- package/dist/admin/platform-audit.service.d.ts +41 -0
- package/dist/admin/platform-audit.service.js +70 -0
- package/dist/admin/setup-lock.d.ts +1 -1
- package/dist/admin/setup-lock.js +1 -1
- package/dist/admin/setup.controller.d.ts +1 -1
- package/dist/admin/setup.controller.js +1 -1
- package/dist/admin/setup.service.d.ts +4 -4
- package/dist/admin/setup.service.js +8 -8
- package/dist/admin/usage.service.d.ts +149 -0
- package/dist/admin/usage.service.js +321 -0
- package/dist/agents/admin-agents.d.ts +92 -0
- package/dist/agents/admin-agents.js +170 -0
- package/dist/agents/agent-lookup.d.ts +24 -0
- package/dist/agents/agent-lookup.js +46 -2
- package/dist/agents/agent-profile.service.d.ts +31 -0
- package/dist/agents/agent-profile.service.js +122 -0
- package/dist/agents/agents.controller.d.ts +53 -168
- package/dist/agents/agents.controller.js +163 -34
- package/dist/agents/agents.module.d.ts +6 -2
- package/dist/agents/agents.module.js +41 -7
- package/dist/agents/agents.schemas.d.ts +392 -0
- package/dist/agents/agents.schemas.js +126 -0
- package/dist/agents/agents.service.d.ts +121 -36
- package/dist/agents/agents.service.js +411 -121
- package/dist/agents/definition.d.ts +142 -21
- package/dist/agents/definition.js +389 -43
- package/dist/agents/from-template.d.ts +106 -0
- package/dist/agents/from-template.js +680 -0
- package/dist/agents/from-template.service.d.ts +72 -0
- package/dist/agents/from-template.service.js +178 -0
- package/dist/agents/instruction-files.d.ts +60 -0
- package/dist/agents/instruction-files.js +111 -0
- package/dist/agents/models.controller.d.ts +44 -6
- package/dist/agents/models.controller.js +84 -8
- package/dist/agents/org-templates.d.ts +186 -0
- package/dist/agents/org-templates.js +876 -0
- package/dist/agents/pending-connector-requests.d.ts +79 -0
- package/dist/agents/pending-connector-requests.js +215 -0
- package/dist/agents/pending-connectors.controller.d.ts +39 -0
- package/dist/agents/pending-connectors.controller.js +91 -0
- package/dist/agents/pending-connectors.service.d.ts +62 -0
- package/dist/agents/pending-connectors.service.js +282 -0
- package/dist/agents/profile.d.ts +114 -0
- package/dist/agents/profile.js +55 -0
- package/dist/agents/readiness.controller.d.ts +26 -0
- package/dist/agents/readiness.controller.js +56 -0
- package/dist/agents/templates.controller.d.ts +77 -5
- package/dist/agents/templates.controller.js +153 -7
- package/dist/agents/templates.d.ts +127 -23
- package/dist/agents/templates.js +482 -44
- package/dist/agents/templates.schemas.d.ts +20 -0
- package/dist/agents/templates.schemas.js +45 -0
- package/dist/background/background.controller.d.ts +38 -0
- package/dist/background/background.controller.js +88 -0
- package/dist/background/background.module.d.ts +10 -0
- package/dist/background/background.module.js +39 -0
- package/dist/background/background.schemas.d.ts +10 -0
- package/dist/background/background.schemas.js +16 -0
- package/dist/background/finish.d.ts +44 -0
- package/dist/background/finish.js +95 -0
- package/dist/background/launch-lock.d.ts +15 -0
- package/dist/background/launch-lock.js +40 -0
- package/dist/background/launch.d.ts +42 -0
- package/dist/background/launch.js +77 -0
- package/dist/background/poll.job.d.ts +56 -0
- package/dist/background/poll.job.js +195 -0
- package/dist/background/render.d.ts +23 -0
- package/dist/background/render.js +48 -0
- package/dist/background/session.d.ts +48 -0
- package/dist/background/session.js +80 -0
- package/dist/background/status.d.ts +35 -0
- package/dist/background/status.js +57 -0
- package/dist/background/stop.d.ts +68 -0
- package/dist/background/stop.js +244 -0
- package/dist/background/store.d.ts +167 -0
- package/dist/background/store.js +361 -0
- package/dist/background/store.module.d.ts +6 -0
- package/dist/background/store.module.js +22 -0
- package/dist/background/tasks.service.d.ts +109 -0
- package/dist/background/tasks.service.js +271 -0
- package/dist/background/wake-rules.d.ts +66 -0
- package/dist/background/wake-rules.js +113 -0
- package/dist/background/wake.d.ts +30 -0
- package/dist/background/wake.js +63 -0
- package/dist/catalog/admin-catalog.controller.d.ts +136 -52
- package/dist/catalog/admin-catalog.controller.js +275 -65
- package/dist/catalog/admin-catalog.schemas.d.ts +82 -0
- package/dist/catalog/admin-catalog.schemas.js +99 -0
- package/dist/catalog/appearance.schemas.d.ts +10 -0
- package/dist/catalog/appearance.schemas.js +20 -0
- package/dist/catalog/appearance.service.d.ts +105 -0
- package/dist/catalog/appearance.service.js +306 -0
- package/dist/catalog/catalog-content.d.ts +122 -35
- package/dist/catalog/catalog-content.js +122 -14
- package/dist/catalog/catalog-files.d.ts +42 -0
- package/dist/catalog/catalog-files.js +89 -0
- package/dist/catalog/catalog-import.module.d.ts +7 -0
- package/dist/catalog/catalog-import.module.js +63 -0
- package/dist/catalog/catalog-items.d.ts +122 -7
- package/dist/catalog/catalog-items.js +301 -13
- package/dist/catalog/catalog-scope.service.d.ts +293 -0
- package/dist/catalog/catalog-scope.service.js +1236 -0
- package/dist/catalog/catalog.module.d.ts +7 -9
- package/dist/catalog/catalog.module.js +47 -31
- package/dist/catalog/catalog.service.d.ts +122 -31
- package/dist/catalog/catalog.service.js +177 -105
- package/dist/catalog/claude/agents.js +15 -10
- package/dist/catalog/claude/translate.js +3 -0
- package/dist/catalog/cli.d.ts +11 -1
- package/dist/catalog/cli.js +29 -1
- package/dist/catalog/component-promotion.d.ts +96 -0
- package/dist/catalog/component-promotion.js +395 -0
- package/dist/catalog/component-scope.controller.d.ts +102 -0
- package/dist/catalog/component-scope.controller.js +257 -0
- package/dist/catalog/component-scope.schemas.d.ts +118 -0
- package/dist/catalog/component-scope.schemas.js +97 -0
- package/dist/catalog/component-scope.service.d.ts +394 -0
- package/dist/catalog/component-scope.service.js +1133 -0
- package/dist/catalog/component-state.d.ts +207 -0
- package/dist/catalog/component-state.js +484 -0
- package/dist/catalog/git-source.d.ts +9 -1
- package/dist/catalog/git-source.js +29 -2
- package/dist/catalog/job-ids.d.ts +30 -0
- package/dist/catalog/job-ids.js +25 -0
- package/dist/catalog/marketplace-fetch.d.ts +1 -1
- package/dist/catalog/marketplace-icons.d.ts +64 -0
- package/dist/catalog/marketplace-icons.js +131 -0
- package/dist/catalog/marketplaces.controller.d.ts +50 -41
- package/dist/catalog/marketplaces.controller.js +130 -46
- package/dist/catalog/marketplaces.schemas.d.ts +48 -0
- package/dist/catalog/marketplaces.schemas.js +53 -0
- package/dist/catalog/marketplaces.service.d.ts +110 -17
- package/dist/catalog/marketplaces.service.js +337 -29
- package/dist/catalog/org-catalog.controller.d.ts +114 -62
- package/dist/catalog/org-catalog.controller.js +191 -98
- package/dist/catalog/org-catalog.schemas.d.ts +104 -0
- package/dist/catalog/org-catalog.schemas.js +107 -0
- package/dist/catalog/org-catalog.service.d.ts +72 -33
- package/dist/catalog/org-catalog.service.js +367 -158
- package/dist/catalog/org-extension-switch.d.ts +41 -0
- package/dist/catalog/org-extension-switch.js +115 -0
- package/dist/catalog/org-extension.controller.d.ts +133 -0
- package/dist/catalog/org-extension.controller.js +313 -0
- package/dist/catalog/org-extension.schemas.d.ts +15 -0
- package/dist/catalog/org-extension.schemas.js +22 -0
- package/dist/catalog/org-plugin-uploads.controller.d.ts +77 -0
- package/dist/catalog/org-plugin-uploads.controller.js +200 -0
- package/dist/catalog/org-plugin-uploads.d.ts +71 -0
- package/dist/catalog/org-plugin-uploads.js +122 -0
- package/dist/catalog/org-plugin-uploads.schemas.d.ts +20 -0
- package/dist/catalog/org-plugin-uploads.schemas.js +32 -0
- package/dist/catalog/owned-items.d.ts +188 -0
- package/dist/catalog/owned-items.js +808 -0
- package/dist/catalog/owned-plugin-cleanup.d.ts +56 -0
- package/dist/catalog/owned-plugin-cleanup.js +194 -0
- package/dist/catalog/ownership.d.ts +172 -0
- package/dist/catalog/ownership.js +326 -0
- package/dist/catalog/platform-components.d.ts +243 -0
- package/dist/catalog/platform-components.js +872 -0
- package/dist/catalog/platform-migration.d.ts +115 -0
- package/dist/catalog/platform-migration.js +583 -0
- package/dist/catalog/plugin-import.d.ts +254 -47
- package/dist/catalog/plugin-import.js +810 -112
- package/dist/catalog/plugin-install.d.ts +205 -42
- package/dist/catalog/plugin-install.js +828 -126
- package/dist/catalog/plugin-package.d.ts +43 -4
- package/dist/catalog/plugin-package.js +194 -7
- package/dist/catalog/plugin-upgrade.d.ts +308 -225
- package/dist/catalog/plugin-upgrade.js +1325 -1131
- package/dist/catalog/request-rules.d.ts +65 -0
- package/dist/catalog/request-rules.js +217 -0
- package/dist/catalog/requests.service.d.ts +194 -118
- package/dist/catalog/requests.service.js +530 -343
- package/dist/catalog/reserved-names.d.ts +8 -0
- package/dist/catalog/reserved-names.js +42 -0
- package/dist/catalog/scope-orgs.d.ts +21 -0
- package/dist/catalog/scope-orgs.js +67 -0
- package/dist/catalog/scope-state.d.ts +35 -0
- package/dist/catalog/scope-state.js +87 -0
- package/dist/catalog/scope-sync-workers.d.ts +7 -0
- package/dist/catalog/scope-sync-workers.js +29 -0
- package/dist/catalog/scope-sync.d.ts +176 -0
- package/dist/catalog/scope-sync.js +576 -0
- package/dist/catalog/scope.d.ts +42 -0
- package/dist/catalog/scope.js +42 -0
- package/dist/catalog/unshare.d.ts +22 -0
- package/dist/catalog/unshare.js +119 -0
- package/dist/channels/actions.js +10 -3
- package/dist/channels/cards.d.ts +36 -10
- package/dist/channels/cards.js +100 -25
- package/dist/channels/channels.module.js +13 -2
- package/dist/channels/channels.schemas.d.ts +41 -0
- package/dist/channels/channels.schemas.js +40 -0
- package/dist/channels/connections.controller.d.ts +46 -37
- package/dist/channels/connections.controller.js +76 -34
- package/dist/channels/connections.service.d.ts +102 -10
- package/dist/channels/connections.service.js +271 -24
- package/dist/channels/inbound.d.ts +11 -1
- package/dist/channels/inbound.js +87 -7
- package/dist/channels/outbound.d.ts +14 -1
- package/dist/channels/outbound.js +64 -15
- package/dist/channels/phrases.d.ts +33 -2
- package/dist/channels/phrases.js +29 -1
- package/dist/channels/supervisor.d.ts +2 -0
- package/dist/channels/supervisor.js +4 -0
- package/dist/channels/threads.d.ts +5 -0
- package/dist/channels/threads.js +8 -0
- package/dist/channels/webhook.d.ts +21 -1
- package/dist/channels/webhook.js +39 -4
- package/dist/client/client-access.service.d.ts +102 -0
- package/dist/client/client-access.service.js +303 -0
- package/dist/client/client-builds.service.d.ts +109 -0
- package/dist/client/client-builds.service.js +229 -0
- package/dist/client/client-delivery.controller.d.ts +25 -0
- package/dist/client/client-delivery.controller.js +66 -0
- package/dist/client/client-files.d.ts +48 -0
- package/dist/client/client-files.js +136 -0
- package/dist/client/client-reports.cron.d.ts +13 -0
- package/dist/client/client-reports.cron.js +42 -0
- package/dist/client/client-reports.service.d.ts +30 -0
- package/dist/client/client-reports.service.js +102 -0
- package/dist/client/client-sign-in.service.d.ts +21 -0
- package/dist/client/client-sign-in.service.js +49 -0
- package/dist/client/client.controller.d.ts +49 -0
- package/dist/client/client.controller.js +129 -0
- package/dist/client/client.module.d.ts +8 -0
- package/dist/client/client.module.js +28 -0
- package/dist/client/client.schemas.d.ts +61 -0
- package/dist/client/client.schemas.js +27 -0
- package/dist/config/docs.js +5 -1
- package/dist/config/schema.d.ts +35 -2
- package/dist/config/schema.js +216 -21
- package/dist/conversations/access.d.ts +6 -4
- package/dist/conversations/access.js +29 -5
- package/dist/conversations/agent-tree.d.ts +46 -0
- package/dist/conversations/agent-tree.js +92 -0
- package/dist/conversations/artifacts.d.ts +1 -1
- package/dist/conversations/artifacts.js +1 -1
- package/dist/conversations/attachments.service.d.ts +30 -0
- package/dist/conversations/attachments.service.js +130 -5
- package/dist/conversations/conversations.controller.d.ts +79 -44
- package/dist/conversations/conversations.controller.js +133 -82
- package/dist/conversations/conversations.module.d.ts +1 -1
- package/dist/conversations/conversations.module.js +10 -7
- package/dist/conversations/conversations.schemas.d.ts +52 -0
- package/dist/conversations/conversations.schemas.js +79 -0
- package/dist/conversations/conversations.service.d.ts +161 -13
- package/dist/conversations/conversations.service.js +329 -57
- package/dist/conversations/device-status.d.ts +24 -0
- package/dist/conversations/device-status.js +71 -0
- package/dist/conversations/event-log.d.ts +45 -9
- package/dist/conversations/event-log.js +113 -6
- package/dist/conversations/events.d.ts +255 -9
- package/dist/conversations/events.js +250 -34
- package/dist/conversations/message-context.d.ts +79 -0
- package/dist/conversations/message-context.js +145 -0
- package/dist/conversations/queue.d.ts +5 -2
- package/dist/conversations/queue.js +24 -4
- package/dist/conversations/queue.service.d.ts +2 -2
- package/dist/conversations/queue.service.js +21 -3
- package/dist/conversations/titles.d.ts +12 -3
- package/dist/conversations/titles.js +40 -16
- package/dist/conversations/tree.d.ts +17 -0
- package/dist/conversations/tree.js +42 -0
- package/dist/ctx/create-ctx.d.ts +48 -5
- package/dist/ctx/create-ctx.js +174 -34
- package/dist/db/kernel-schema.d.ts +668 -27
- package/dist/db/pool.d.ts +5 -0
- package/dist/db/pool.js +3 -0
- package/dist/devices/access.d.ts +66 -0
- package/dist/devices/access.js +113 -0
- package/dist/devices/conversation-devices.d.ts +75 -0
- package/dist/devices/conversation-devices.js +230 -0
- package/dist/devices/devices.controller.d.ts +36 -0
- package/dist/devices/devices.controller.js +124 -0
- package/dist/devices/devices.module.d.ts +8 -0
- package/dist/devices/devices.module.js +34 -0
- package/dist/devices/devices.schemas.d.ts +3 -0
- package/dist/devices/devices.schemas.js +14 -0
- package/dist/devices/devices.service.d.ts +251 -0
- package/dist/devices/devices.service.js +791 -0
- package/dist/devices/dto.d.ts +25 -0
- package/dist/devices/dto.js +12 -0
- package/dist/devices/label.d.ts +11 -0
- package/dist/devices/label.js +25 -0
- package/dist/devices/legacy-cleanup.job.d.ts +34 -0
- package/dist/devices/legacy-cleanup.job.js +141 -0
- package/dist/errors.d.ts +215 -3
- package/dist/errors.js +215 -3
- package/dist/evals/evals.module.js +11 -2
- package/dist/evals/evals.schemas.d.ts +110 -0
- package/dist/evals/evals.schemas.js +107 -0
- package/dist/evals/reconstruct.d.ts +18 -9
- package/dist/evals/reconstruct.js +36 -10
- package/dist/evals/recorded-tools.d.ts +37 -1
- package/dist/evals/recorded-tools.js +120 -10
- package/dist/evals/run-replay.d.ts +20 -3
- package/dist/evals/run-replay.js +78 -14
- package/dist/evals/runs.controller.d.ts +2 -57
- package/dist/evals/runs.controller.js +1 -42
- package/dist/evals/runs.service.d.ts +8 -7
- package/dist/evals/runs.service.js +45 -30
- package/dist/evals/sets.controller.d.ts +2 -28
- package/dist/evals/sets.controller.js +1 -31
- package/dist/evals/sets.service.d.ts +7 -7
- package/dist/evals/sets.service.js +23 -17
- package/dist/evals/snapshot.d.ts +3 -2
- package/dist/evals/snapshot.js +17 -4
- package/dist/evals/step-replay.d.ts +4 -6
- package/dist/evals/step-replay.js +16 -9
- package/dist/evals/trajectory.d.ts +5 -3
- package/dist/evals/trajectory.js +4 -1
- package/dist/evals/trajectory.service.d.ts +8 -3
- package/dist/evals/trajectory.service.js +26 -14
- package/dist/evals/worker.d.ts +5 -5
- package/dist/evals/worker.js +9 -3
- package/dist/extensions/admin-ops.d.ts +81 -14
- package/dist/extensions/admin-ops.js +181 -47
- package/dist/extensions/admin-view.d.ts +57 -10
- package/dist/extensions/admin-view.js +249 -27
- package/dist/extensions/approvals.d.ts +12 -2
- package/dist/extensions/blobs.d.ts +14 -1
- package/dist/extensions/blobs.js +49 -5
- package/dist/extensions/bootstrap.d.ts +85 -10
- package/dist/extensions/bootstrap.js +215 -36
- package/dist/extensions/cli.d.ts +12 -0
- package/dist/extensions/cli.js +11 -2
- package/dist/extensions/config-hash.d.ts +10 -0
- package/dist/extensions/config-hash.js +38 -0
- package/dist/extensions/config-issues.d.ts +13 -1
- package/dist/extensions/config-issues.js +22 -5
- package/dist/extensions/config-json-schema.d.ts +43 -7
- package/dist/extensions/config-json-schema.js +124 -58
- package/dist/extensions/deployment-config-store.d.ts +6 -0
- package/dist/extensions/deployment-config.d.ts +94 -9
- package/dist/extensions/deployment-config.js +255 -34
- package/dist/extensions/display-name.d.ts +22 -0
- package/dist/extensions/display-name.js +77 -0
- package/dist/extensions/effective-config.d.ts +133 -0
- package/dist/extensions/effective-config.js +379 -0
- package/dist/extensions/extensions.module.js +31 -12
- package/dist/extensions/guide-places.d.ts +68 -0
- package/dist/extensions/guide-places.js +152 -0
- package/dist/extensions/hooks.d.ts +37 -4
- package/dist/extensions/hooks.js +82 -16
- package/dist/extensions/host.d.ts +105 -12
- package/dist/extensions/host.js +372 -87
- package/dist/extensions/installs.d.ts +30 -9
- package/dist/extensions/installs.js +57 -16
- package/dist/extensions/instance.d.ts +17 -2
- package/dist/extensions/instance.js +21 -0
- package/dist/extensions/ledger.d.ts +1 -1
- package/dist/extensions/locks.d.ts +12 -0
- package/dist/extensions/locks.js +26 -0
- package/dist/extensions/org-config.d.ts +97 -7
- package/dist/extensions/org-config.js +215 -45
- package/dist/extensions/org-levels.d.ts +37 -0
- package/dist/extensions/org-levels.js +71 -0
- package/dist/extensions/org-overrides.d.ts +151 -0
- package/dist/extensions/org-overrides.js +524 -0
- package/dist/extensions/package.d.ts +18 -4
- package/dist/extensions/package.js +56 -3
- package/dist/extensions/permission-set.d.ts +35 -5
- package/dist/extensions/permission-set.js +36 -5
- package/dist/extensions/permission-view.d.ts +106 -13
- package/dist/extensions/permission-view.js +33 -15
- package/dist/extensions/plugin-guides.d.ts +282 -0
- package/dist/extensions/plugin-guides.js +554 -0
- package/dist/extensions/plugin-icons.d.ts +54 -0
- package/dist/extensions/plugin-icons.js +125 -0
- package/dist/extensions/plugin-items.d.ts +21 -0
- package/dist/extensions/plugin-items.js +42 -0
- package/dist/extensions/point-defaults.controller.d.ts +28 -0
- package/dist/extensions/point-defaults.controller.js +69 -0
- package/dist/extensions/point-defaults.d.ts +73 -0
- package/dist/extensions/point-defaults.js +236 -0
- package/dist/extensions/point-defaults.schemas.d.ts +9 -0
- package/dist/extensions/point-defaults.schemas.js +14 -0
- package/dist/extensions/registry.d.ts +1 -1
- package/dist/extensions/registry.js +2 -0
- package/dist/extensions/resolve.d.ts +51 -1
- package/dist/extensions/resolve.js +85 -3
- package/dist/extensions/single-provider.d.ts +92 -0
- package/dist/extensions/single-provider.js +180 -0
- package/dist/extensions/sources.d.ts +13 -2
- package/dist/extensions/sources.js +2 -0
- package/dist/extensions/state.module.d.ts +9 -0
- package/dist/extensions/state.module.js +46 -0
- package/dist/extensions/unavailable.d.ts +50 -0
- package/dist/extensions/unavailable.js +115 -0
- package/dist/files/previewers.controller.js +2 -3
- package/dist/files/previewers.d.ts +10 -3
- package/dist/files/previewers.js +40 -11
- package/dist/files/previewers.schemas.d.ts +10 -0
- package/dist/files/previewers.schemas.js +9 -0
- package/dist/http/api.module.js +76 -4
- package/dist/http/app.d.ts +11 -2
- package/dist/http/app.js +31 -5
- package/dist/http/gateway-routes.d.ts +7 -3
- package/dist/http/gateway-routes.js +6 -3
- package/dist/http/nest-logger.d.ts +6 -5
- package/dist/http/nest-logger.js +24 -10
- package/dist/http/plugin-dispatch.d.ts +4 -1
- package/dist/http/plugin-dispatch.js +14 -2
- package/dist/identity/accounts.d.ts +77 -31
- package/dist/identity/accounts.js +133 -52
- package/dist/identity/audit.d.ts +2 -1
- package/dist/identity/auth.controller.js +9 -5
- package/dist/identity/auth.guard.d.ts +13 -5
- package/dist/identity/auth.guard.js +35 -9
- package/dist/identity/cookies.d.ts +26 -5
- package/dist/identity/cookies.js +58 -6
- package/dist/identity/identity.module.d.ts +1 -1
- package/dist/identity/identity.module.js +7 -4
- package/dist/identity/initial-passwords.controller.d.ts +22 -0
- package/dist/identity/initial-passwords.controller.js +49 -0
- package/dist/identity/initial-passwords.d.ts +61 -0
- package/dist/identity/initial-passwords.job.d.ts +16 -0
- package/dist/identity/initial-passwords.job.js +46 -0
- package/dist/identity/initial-passwords.js +159 -0
- package/dist/identity/me.controller.d.ts +17 -1
- package/dist/identity/me.controller.js +45 -4
- package/dist/identity/me.schemas.d.ts +24 -0
- package/dist/identity/me.schemas.js +25 -0
- package/dist/identity/principal.d.ts +11 -3
- package/dist/identity/principal.js +11 -3
- package/dist/identity/sessions.d.ts +12 -0
- package/dist/identity/sessions.js +45 -0
- package/dist/identity/settings.d.ts +99 -12
- package/dist/identity/settings.js +234 -25
- package/dist/identity/{enterprise-admin.d.ts → super-admin.d.ts} +5 -5
- package/dist/identity/{enterprise-admin.js → super-admin.js} +24 -24
- package/dist/identity/write-actor.d.ts +11 -0
- package/dist/identity/write-actor.js +7 -0
- package/dist/inbox/inbox.module.d.ts +4 -1
- package/dist/inbox/inbox.module.js +7 -3
- package/dist/inbox/inbox.schemas.d.ts +8 -0
- package/dist/inbox/inbox.schemas.js +11 -0
- package/dist/inbox/inbox.service.d.ts +64 -4
- package/dist/inbox/inbox.service.js +74 -4
- package/dist/inbox/org-notices.d.ts +63 -0
- package/dist/inbox/org-notices.js +91 -0
- package/dist/inbox/platform-inbox.controller.d.ts +23 -0
- package/dist/inbox/platform-inbox.controller.js +58 -0
- package/dist/inbox/platform-inbox.service.d.ts +157 -0
- package/dist/inbox/platform-inbox.service.js +281 -0
- package/dist/inbox/platform-notices.d.ts +19 -0
- package/dist/inbox/platform-notices.js +9 -0
- package/dist/index.d.ts +6 -2
- package/dist/index.js +7 -1
- package/dist/infra/cli/kernel-cli.module.js +9 -1
- package/dist/infra/config/kernel-config.service.js +32 -1
- package/dist/infra/database/database.module.js +1 -0
- package/dist/infra/database/xact-lock.d.ts +1 -1
- package/dist/infra/database/xact-lock.js +1 -1
- package/dist/infra/events/kernel-events.d.ts +31 -3
- package/dist/infra/lifecycle/process-guards.js +4 -0
- package/dist/infra/lock/lock.service.d.ts +8 -0
- package/dist/infra/lock/lock.service.js +27 -0
- package/dist/infra/logging/logging.module.d.ts +4 -2
- package/dist/infra/logging/logging.module.js +24 -6
- package/dist/infra/presence/presence.module.d.ts +6 -0
- package/dist/infra/presence/presence.module.js +22 -0
- package/dist/infra/presence/replica-presence.d.ts +87 -0
- package/dist/infra/presence/replica-presence.js +189 -0
- package/dist/infra/queue/add-job-once.d.ts +14 -0
- package/dist/infra/queue/add-job-once.js +16 -0
- package/dist/infra/queue/redis-connection.d.ts +6 -0
- package/dist/infra/queue/redis-connection.js +7 -0
- package/dist/infra/redis/redis.module.js +6 -2
- package/dist/infra/throttler/named-throttlers.d.ts +12 -0
- package/dist/infra/throttler/named-throttlers.js +67 -0
- package/dist/infra/throttler/throttler.guard.js +1 -1
- package/dist/infra/tokens.d.ts +6 -1
- package/dist/infra/tokens.js +6 -1
- package/dist/kernel.module.js +15 -0
- package/dist/lifecycle/kernel-lifecycle.d.ts +9 -3
- package/dist/lifecycle/kernel-lifecycle.js +51 -11
- package/dist/local-devices/device-auth.controller.d.ts +42 -0
- package/dist/local-devices/device-auth.controller.js +116 -0
- package/dist/local-devices/device-auth.d.ts +119 -0
- package/dist/local-devices/device-auth.js +401 -0
- package/dist/local-devices/device-auth.module.d.ts +7 -0
- package/dist/local-devices/device-auth.module.js +25 -0
- package/dist/local-devices/device-routes.d.ts +36 -0
- package/dist/local-devices/device-routes.js +90 -0
- package/dist/local-devices/dto.d.ts +66 -0
- package/dist/local-devices/dto.js +44 -0
- package/dist/local-devices/keys.d.ts +25 -0
- package/dist/local-devices/keys.js +25 -0
- package/dist/local-devices/local-device-gateway.d.ts +134 -0
- package/dist/local-devices/local-device-gateway.js +542 -0
- package/dist/local-devices/local-device-provider.d.ts +89 -0
- package/dist/local-devices/local-device-provider.js +151 -0
- package/dist/local-devices/local-devices.module.d.ts +16 -0
- package/dist/local-devices/local-devices.module.js +44 -0
- package/dist/local-devices/machines.d.ts +118 -0
- package/dist/local-devices/machines.js +366 -0
- package/dist/local-devices/relay.d.ts +100 -0
- package/dist/local-devices/relay.js +373 -0
- package/dist/local-devices/targets.d.ts +28 -0
- package/dist/local-devices/targets.js +73 -0
- package/dist/log.d.ts +13 -1
- package/dist/log.js +93 -17
- package/dist/models/embeddings.d.ts +82 -0
- package/dist/models/embeddings.js +326 -0
- package/dist/models/enablement.controller.d.ts +40 -0
- package/dist/models/enablement.controller.js +74 -0
- package/dist/models/enablement.d.ts +101 -0
- package/dist/models/enablement.js +264 -0
- package/dist/models/models.module.d.ts +5 -1
- package/dist/models/models.module.js +16 -4
- package/dist/models/org-models.schemas.d.ts +8 -0
- package/dist/models/org-models.schemas.js +22 -0
- package/dist/models/prices.d.ts +8 -6
- package/dist/models/prices.js +11 -9
- package/dist/models/purposes.controller.d.ts +6 -4
- package/dist/models/purposes.controller.js +13 -7
- package/dist/models/purposes.d.ts +72 -14
- package/dist/models/purposes.js +115 -34
- package/dist/orgs/directory-sync.d.ts +14 -5
- package/dist/orgs/directory-sync.js +41 -17
- package/dist/orgs/offboarding.d.ts +12 -8
- package/dist/orgs/offboarding.js +54 -33
- package/dist/orgs/org-lock.d.ts +5 -0
- package/dist/orgs/org-lock.js +13 -0
- package/dist/orgs/org.guard.d.ts +10 -0
- package/dist/orgs/org.guard.js +43 -32
- package/dist/orgs/orgs.controller.d.ts +2 -5
- package/dist/orgs/orgs.controller.js +3 -6
- package/dist/orgs/orgs.module.js +3 -0
- package/dist/orgs/orgs.schemas.d.ts +8 -0
- package/dist/orgs/orgs.schemas.js +16 -0
- package/dist/orgs/orgs.service.d.ts +23 -8
- package/dist/orgs/orgs.service.js +38 -16
- package/dist/orgs/roles.d.ts +1 -1
- package/dist/orgs/roles.js +5 -1
- package/dist/orgs/settings.controller.d.ts +1 -1
- package/dist/orgs/settings.service.d.ts +66 -6
- package/dist/orgs/settings.service.js +89 -10
- package/dist/overrides.d.ts +16 -1
- package/dist/overrides.js +10 -0
- package/dist/platform/actor.d.ts +48 -0
- package/dist/platform/actor.js +100 -0
- package/dist/platform/agent-docs.d.ts +18 -0
- package/dist/platform/agent-docs.js +59 -0
- package/dist/platform/availability.d.ts +14 -0
- package/dist/platform/availability.js +43 -0
- package/dist/platform/errors.d.ts +28 -0
- package/dist/platform/errors.js +65 -0
- package/dist/platform/exclusions.d.ts +11 -0
- package/dist/platform/exclusions.js +774 -0
- package/dist/platform/method.d.ts +6 -0
- package/dist/platform/method.js +15 -0
- package/dist/platform/operation.d.ts +169 -0
- package/dist/platform/operation.js +102 -0
- package/dist/platform/ops/accounts.ops.d.ts +32 -0
- package/dist/platform/ops/accounts.ops.js +291 -0
- package/dist/platform/ops/admin-items.ops.d.ts +37 -0
- package/dist/platform/ops/admin-items.ops.js +278 -0
- package/dist/platform/ops/admin.ops.d.ts +38 -0
- package/dist/platform/ops/admin.ops.js +497 -0
- package/dist/platform/ops/agent-skills.ops.d.ts +50 -0
- package/dist/platform/ops/agent-skills.ops.js +509 -0
- package/dist/platform/ops/agent-templates.ops.d.ts +17 -0
- package/dist/platform/ops/agent-templates.ops.js +272 -0
- package/dist/platform/ops/agents.ops.d.ts +37 -0
- package/dist/platform/ops/agents.ops.js +730 -0
- package/dist/platform/ops/approvals.ops.d.ts +30 -0
- package/dist/platform/ops/approvals.ops.js +116 -0
- package/dist/platform/ops/background.ops.d.ts +14 -0
- package/dist/platform/ops/background.ops.js +134 -0
- package/dist/platform/ops/catalog-admin.ops.d.ts +92 -0
- package/dist/platform/ops/catalog-admin.ops.js +682 -0
- package/dist/platform/ops/channels.ops.d.ts +16 -0
- package/dist/platform/ops/channels.ops.js +195 -0
- package/dist/platform/ops/components.ops.d.ts +46 -0
- package/dist/platform/ops/components.ops.js +854 -0
- package/dist/platform/ops/connectors.ops.d.ts +17 -0
- package/dist/platform/ops/connectors.ops.js +190 -0
- package/dist/platform/ops/conversations.ops.d.ts +30 -0
- package/dist/platform/ops/conversations.ops.js +470 -0
- package/dist/platform/ops/devices.ops.d.ts +26 -0
- package/dist/platform/ops/devices.ops.js +311 -0
- package/dist/platform/ops/errors.d.ts +16 -0
- package/dist/platform/ops/errors.js +30 -0
- package/dist/platform/ops/evals.ops.d.ts +28 -0
- package/dist/platform/ops/evals.ops.js +783 -0
- package/dist/platform/ops/extensions-admin.ops.d.ts +25 -0
- package/dist/platform/ops/extensions-admin.ops.js +372 -0
- package/dist/platform/ops/extensions.ops.d.ts +25 -0
- package/dist/platform/ops/extensions.ops.js +347 -0
- package/dist/platform/ops/inbox.ops.d.ts +25 -0
- package/dist/platform/ops/inbox.ops.js +381 -0
- package/dist/platform/ops/marketplaces.ops.d.ts +22 -0
- package/dist/platform/ops/marketplaces.ops.js +466 -0
- package/dist/platform/ops/models.ops.d.ts +25 -0
- package/dist/platform/ops/models.ops.js +232 -0
- package/dist/platform/ops/org-plugins.ops.d.ts +35 -0
- package/dist/platform/ops/org-plugins.ops.js +388 -0
- package/dist/platform/ops/org-settings.ops.d.ts +18 -0
- package/dist/platform/ops/org-settings.ops.js +127 -0
- package/dist/platform/ops/orgs.ops.d.ts +28 -0
- package/dist/platform/ops/orgs.ops.js +298 -0
- package/dist/platform/ops/other-orgs.d.ts +20 -0
- package/dist/platform/ops/other-orgs.js +72 -0
- package/dist/platform/ops/paging.d.ts +14 -0
- package/dist/platform/ops/paging.js +20 -0
- package/dist/platform/ops/platform.ops.d.ts +30 -0
- package/dist/platform/ops/platform.ops.js +231 -0
- package/dist/platform/ops/plugins.ops.d.ts +35 -0
- package/dist/platform/ops/plugins.ops.js +476 -0
- package/dist/platform/ops/previewers.ops.d.ts +14 -0
- package/dist/platform/ops/previewers.ops.js +109 -0
- package/dist/platform/ops/requests.ops.d.ts +14 -0
- package/dist/platform/ops/requests.ops.js +191 -0
- package/dist/platform/ops/role.d.ts +4 -0
- package/dist/platform/ops/role.js +10 -0
- package/dist/platform/ops/setup.ops.d.ts +24 -0
- package/dist/platform/ops/setup.ops.js +212 -0
- package/dist/platform/ops/skills.ops.d.ts +17 -0
- package/dist/platform/ops/skills.ops.js +160 -0
- package/dist/platform/ops/summary.d.ts +10 -0
- package/dist/platform/ops/summary.js +18 -0
- package/dist/platform/ops/themes.ops.d.ts +14 -0
- package/dist/platform/ops/themes.ops.js +47 -0
- package/dist/platform/ops/ui.ops.d.ts +8 -0
- package/dist/platform/ops/ui.ops.js +41 -0
- package/dist/platform/ops/unavailable.d.ts +23 -0
- package/dist/platform/ops/unavailable.js +118 -0
- package/dist/platform/parity.d.ts +33 -0
- package/dist/platform/parity.js +272 -0
- package/dist/platform/platform-ops.module.d.ts +43 -0
- package/dist/platform/platform-ops.module.js +142 -0
- package/dist/platform/platform.module.d.ts +8 -0
- package/dist/platform/platform.module.js +25 -0
- package/dist/platform/registry.d.ts +30 -0
- package/dist/platform/registry.js +111 -0
- package/dist/platform/route-schemas.d.ts +18 -0
- package/dist/platform/route-schemas.js +85 -0
- package/dist/roles/gateway-role.d.ts +18 -3
- package/dist/roles/gateway-role.js +33 -5
- package/dist/roles/gateway.module.d.ts +2 -1
- package/dist/roles/gateway.module.js +6 -3
- package/dist/roles/worker-role.d.ts +6 -4
- package/dist/roles/worker-role.js +14 -7
- package/dist/roles/worker.module.d.ts +1 -1
- package/dist/roles/worker.module.js +21 -1
- package/dist/runtime/context/build.d.ts +21 -13
- package/dist/runtime/context/build.js +106 -29
- package/dist/runtime/context/claude-tools.d.ts +4 -1
- package/dist/runtime/context/claude-tools.js +13 -12
- package/dist/runtime/context/compaction.js +24 -1
- package/dist/runtime/context/device-paths.d.ts +40 -0
- package/dist/runtime/context/device-paths.js +48 -0
- package/dist/runtime/context/legacy-text.d.ts +22 -0
- package/dist/runtime/context/legacy-text.js +37 -0
- package/dist/runtime/context/reminders.d.ts +2 -0
- package/dist/runtime/context/reminders.js +2 -0
- package/dist/runtime/context/run-context.d.ts +65 -0
- package/dist/runtime/context/run-context.js +215 -0
- package/dist/runtime/context/skills.d.ts +29 -11
- package/dist/runtime/context/skills.js +46 -32
- package/dist/runtime/context/tool-changes.d.ts +27 -0
- package/dist/runtime/context/tool-changes.js +60 -0
- package/dist/runtime/hook-calls.d.ts +8 -1
- package/dist/runtime/hook-calls.js +40 -7
- package/dist/runtime/langgraph-loop.d.ts +3 -1
- package/dist/runtime/langgraph-loop.js +36 -17
- package/dist/runtime/loop.d.ts +35 -6
- package/dist/runtime/maintenance.d.ts +9 -4
- package/dist/runtime/maintenance.js +35 -8
- package/dist/runtime/model-call.d.ts +54 -11
- package/dist/runtime/model-call.js +105 -28
- package/dist/runtime/providers.d.ts +149 -29
- package/dist/runtime/providers.js +332 -63
- package/dist/runtime/run-context.service.d.ts +65 -0
- package/dist/runtime/run-context.service.js +236 -0
- package/dist/runtime/run-control.d.ts +11 -1
- package/dist/runtime/run-control.js +12 -0
- package/dist/runtime/run-drafts.d.ts +85 -0
- package/dist/runtime/run-drafts.js +230 -0
- package/dist/runtime/run-finish.d.ts +1 -1
- package/dist/runtime/run-jobs.d.ts +3 -5
- package/dist/runtime/run-jobs.js +7 -9
- package/dist/runtime/run-queue.d.ts +62 -5
- package/dist/runtime/run-queue.js +313 -40
- package/dist/runtime/run-worker.d.ts +19 -8
- package/dist/runtime/run-worker.js +105 -44
- package/dist/runtime/runtime.module.js +13 -3
- package/dist/runtime/step-log.d.ts +15 -4
- package/dist/runtime/step-log.js +24 -7
- package/dist/runtime/stream.controller.d.ts +23 -1
- package/dist/runtime/stream.controller.js +60 -3
- package/dist/runtime/stream.d.ts +4 -1
- package/dist/runtime/stream.js +27 -3
- package/dist/runtime/subagents/child.d.ts +55 -7
- package/dist/runtime/subagents/child.js +105 -7
- package/dist/runtime/subagents/definition.d.ts +31 -26
- package/dist/runtime/subagents/definition.js +89 -142
- package/dist/runtime/subagents/deliveries.d.ts +71 -0
- package/dist/runtime/subagents/deliveries.js +228 -0
- package/dist/runtime/subagents/dispatch.d.ts +116 -27
- package/dist/runtime/subagents/dispatch.js +213 -142
- package/dist/runtime/subagents/limits.d.ts +24 -5
- package/dist/runtime/subagents/limits.js +40 -6
- package/dist/runtime/subagents/messages.d.ts +95 -0
- package/dist/runtime/subagents/messages.js +328 -0
- package/dist/runtime/subagents/org-agents.js +2 -1
- package/dist/runtime/subagents/preamble.d.ts +4 -4
- package/dist/runtime/subagents/preamble.js +9 -7
- package/dist/runtime/subagents/progress.d.ts +8 -6
- package/dist/runtime/subagents/progress.js +11 -6
- package/dist/runtime/subagents/render.d.ts +30 -0
- package/dist/runtime/subagents/render.js +53 -0
- package/dist/runtime/subagents/roster.d.ts +25 -8
- package/dist/runtime/subagents/roster.js +48 -12
- package/dist/runtime/subagents/skill-fork.d.ts +4 -3
- package/dist/runtime/subagents/skill-fork.js +9 -5
- package/dist/runtime/subagents/status.d.ts +14 -0
- package/dist/runtime/subagents/status.js +23 -0
- package/dist/runtime/subagents/subagents.service.d.ts +9 -6
- package/dist/runtime/subagents/subagents.service.js +13 -8
- package/dist/runtime/usage-report-jobs.d.ts +88 -0
- package/dist/runtime/usage-report-jobs.js +158 -0
- package/dist/runtime/usage-report.d.ts +35 -39
- package/dist/runtime/usage-report.js +171 -97
- package/dist/runtime/waits.d.ts +148 -39
- package/dist/runtime/waits.js +426 -112
- package/dist/sandbox/jobs.d.ts +40 -13
- package/dist/sandbox/jobs.js +57 -20
- package/dist/sandbox/leases.d.ts +37 -54
- package/dist/sandbox/leases.js +71 -115
- package/dist/sandbox/providers.d.ts +34 -7
- package/dist/sandbox/providers.js +54 -9
- package/dist/sandbox/sandbox-file-reader.d.ts +35 -0
- package/dist/sandbox/sandbox-file-reader.js +98 -0
- package/dist/sandbox/sandbox.module.d.ts +3 -2
- package/dist/sandbox/sandbox.module.js +10 -4
- package/dist/sandbox/sandbox.service.d.ts +345 -132
- package/dist/sandbox/sandbox.service.js +883 -399
- package/dist/sandbox/unreachable.d.ts +30 -0
- package/dist/sandbox/unreachable.js +108 -0
- package/dist/setup/kernel-checks.d.ts +91 -0
- package/dist/setup/kernel-checks.js +295 -0
- package/dist/setup/oauth-token-probe.d.ts +47 -0
- package/dist/setup/oauth-token-probe.js +108 -0
- package/dist/setup/redact-check.d.ts +18 -0
- package/dist/setup/redact-check.js +46 -0
- package/dist/setup/setup-check-registry.d.ts +86 -0
- package/dist/setup/setup-check-registry.js +75 -0
- package/dist/setup/setup-checks.controller.d.ts +28 -0
- package/dist/setup/setup-checks.controller.js +78 -0
- package/dist/setup/setup-checks.schemas.d.ts +38 -0
- package/dist/setup/setup-checks.schemas.js +43 -0
- package/dist/setup/setup-checks.service.d.ts +144 -0
- package/dist/setup/setup-checks.service.js +683 -0
- package/dist/setup/setup-guides.controller.d.ts +18 -0
- package/dist/setup/setup-guides.controller.js +48 -0
- package/dist/setup/setup-guides.schemas.d.ts +10 -0
- package/dist/setup/setup-guides.schemas.js +6 -0
- package/dist/setup/setup-guides.service.d.ts +126 -0
- package/dist/setup/setup-guides.service.js +315 -0
- package/dist/setup/setup.module.d.ts +8 -0
- package/dist/setup/setup.module.js +31 -0
- package/dist/skills/agent-skills.controller.d.ts +48 -0
- package/dist/skills/agent-skills.controller.js +131 -0
- package/dist/skills/agent-skills.service.d.ts +262 -0
- package/dist/skills/agent-skills.service.js +996 -0
- package/dist/skills/catalog.d.ts +14 -11
- package/dist/skills/catalog.js +32 -50
- package/dist/skills/changes.controller.d.ts +12 -22
- package/dist/skills/changes.controller.js +27 -56
- package/dist/skills/changes.service.d.ts +69 -115
- package/dist/skills/changes.service.js +249 -598
- package/dist/skills/conversation-catalog.d.ts +53 -0
- package/dist/skills/conversation-catalog.js +149 -0
- package/dist/skills/invocable.controller.d.ts +1 -1
- package/dist/skills/invocable.controller.js +2 -2
- package/dist/skills/invocation-keys.d.ts +1 -1
- package/dist/skills/invocation-keys.js +1 -1
- package/dist/skills/invoke.d.ts +3 -3
- package/dist/skills/invoke.js +21 -8
- package/dist/skills/package.d.ts +15 -1
- package/dist/skills/package.js +14 -1
- package/dist/skills/skills.controller.d.ts +32 -6
- package/dist/skills/skills.controller.js +64 -11
- package/dist/skills/skills.module.js +25 -3
- package/dist/skills/skills.schemas.d.ts +44 -0
- package/dist/skills/skills.schemas.js +68 -0
- package/dist/skills/skills.service.d.ts +123 -26
- package/dist/skills/skills.service.js +493 -76
- package/dist/skills/usable.d.ts +82 -0
- package/dist/skills/usable.js +388 -0
- package/dist/themes/render-css.d.ts +13 -0
- package/dist/themes/render-css.js +135 -0
- package/dist/themes/theme-delivery.service.d.ts +36 -0
- package/dist/themes/theme-delivery.service.js +116 -0
- package/dist/themes/theme-state.d.ts +116 -0
- package/dist/themes/theme-state.js +221 -0
- package/dist/themes/theme-usage.d.ts +61 -0
- package/dist/themes/theme-usage.js +98 -0
- package/dist/themes/themes-public.controller.d.ts +33 -0
- package/dist/themes/themes-public.controller.js +98 -0
- package/dist/themes/themes.controller.d.ts +13 -0
- package/dist/themes/themes.controller.js +38 -0
- package/dist/themes/themes.module.d.ts +3 -0
- package/dist/themes/themes.module.js +21 -0
- package/dist/themes/themes.schemas.d.ts +3 -0
- package/dist/themes/themes.schemas.js +2 -0
- package/dist/themes/themes.service.d.ts +50 -0
- package/dist/themes/themes.service.js +99 -0
- package/dist/time-zone.d.ts +5 -0
- package/dist/time-zone.js +19 -0
- package/dist/tools/admin-connectors.d.ts +69 -0
- package/dist/tools/admin-connectors.js +135 -0
- package/dist/tools/approvals.controller.js +2 -3
- package/dist/tools/approvals.schemas.d.ts +21 -0
- package/dist/tools/approvals.schemas.js +15 -0
- package/dist/tools/approvals.service.d.ts +26 -2
- package/dist/tools/approvals.service.js +44 -5
- package/dist/tools/builtin-names.d.ts +104 -0
- package/dist/tools/builtin-names.js +164 -0
- package/dist/tools/builtins/agent.d.ts +27 -25
- package/dist/tools/builtins/agent.js +66 -63
- package/dist/tools/builtins/ask-user.d.ts +1 -1
- package/dist/tools/builtins/ask-user.js +5 -4
- package/dist/tools/builtins/builtin-tools.d.ts +23 -4
- package/dist/tools/builtins/builtin-tools.js +78 -12
- package/dist/tools/builtins/current-time.d.ts +26 -0
- package/dist/tools/builtins/current-time.js +99 -0
- package/dist/tools/builtins/handback.d.ts +28 -0
- package/dist/tools/builtins/handback.js +53 -0
- package/dist/tools/builtins/platform.d.ts +51 -0
- package/dist/tools/builtins/platform.js +451 -0
- package/dist/tools/builtins/read-tool-output.d.ts +1 -1
- package/dist/tools/builtins/read-tool-output.js +2 -2
- package/dist/tools/builtins/sandbox/bash.d.ts +5 -5
- package/dist/tools/builtins/sandbox/bash.js +291 -39
- package/dist/tools/builtins/sandbox/common.d.ts +135 -36
- package/dist/tools/builtins/sandbox/common.js +222 -62
- package/dist/tools/builtins/sandbox/deliver.d.ts +1 -1
- package/dist/tools/builtins/sandbox/deliver.js +19 -16
- package/dist/tools/builtins/sandbox/edit.d.ts +1 -1
- package/dist/tools/builtins/sandbox/edit.js +64 -50
- package/dist/tools/builtins/sandbox/file-state.d.ts +34 -0
- package/dist/tools/builtins/sandbox/file-state.js +34 -0
- package/dist/tools/builtins/sandbox/glob-match.d.ts +1 -1
- package/dist/tools/builtins/sandbox/glob-match.js +1 -1
- package/dist/tools/builtins/sandbox/glob.d.ts +1 -1
- package/dist/tools/builtins/sandbox/glob.js +17 -12
- package/dist/tools/builtins/sandbox/grep.d.ts +7 -4
- package/dist/tools/builtins/sandbox/grep.js +153 -34
- package/dist/tools/builtins/sandbox/index.d.ts +9 -5
- package/dist/tools/builtins/sandbox/index.js +13 -5
- package/dist/tools/builtins/sandbox/read.d.ts +2 -2
- package/dist/tools/builtins/sandbox/read.js +29 -19
- package/dist/tools/builtins/sandbox/task-output.d.ts +79 -0
- package/dist/tools/builtins/sandbox/task-output.js +334 -0
- package/dist/tools/builtins/sandbox/task-stop.d.ts +10 -0
- package/dist/tools/builtins/sandbox/task-stop.js +113 -0
- package/dist/tools/builtins/sandbox/write.d.ts +1 -1
- package/dist/tools/builtins/sandbox/write.js +51 -44
- package/dist/tools/builtins/send-message.d.ts +56 -0
- package/dist/tools/builtins/send-message.js +100 -0
- package/dist/tools/builtins/skill-load.d.ts +29 -18
- package/dist/tools/builtins/skill-load.js +125 -73
- package/dist/tools/builtins/tool-search.d.ts +13 -9
- package/dist/tools/builtins/tool-search.js +25 -14
- package/dist/tools/builtins/web/errors.d.ts +8 -0
- package/dist/tools/builtins/web/errors.js +53 -0
- package/dist/tools/builtins/web/extract.d.ts +62 -0
- package/dist/tools/builtins/web/extract.js +271 -0
- package/dist/tools/builtins/web/fetch.d.ts +55 -0
- package/dist/tools/builtins/web/fetch.js +175 -0
- package/dist/tools/builtins/web/index.d.ts +13 -0
- package/dist/tools/builtins/web/index.js +12 -0
- package/dist/tools/builtins/web/page-cache.d.ts +25 -0
- package/dist/tools/builtins/web/page-cache.js +77 -0
- package/dist/tools/builtins/web/search.d.ts +25 -0
- package/dist/tools/builtins/web/search.js +210 -0
- package/dist/tools/builtins/web/url.d.ts +17 -0
- package/dist/tools/builtins/web/url.js +43 -0
- package/dist/tools/connector-account-policies.d.ts +51 -0
- package/dist/tools/connector-account-policies.js +165 -0
- package/dist/tools/connectors.controller.d.ts +74 -9
- package/dist/tools/connectors.controller.js +133 -16
- package/dist/tools/connectors.schemas.d.ts +27 -0
- package/dist/tools/connectors.schemas.js +34 -0
- package/dist/tools/connectors.service.d.ts +101 -8
- package/dist/tools/connectors.service.js +266 -28
- package/dist/tools/credentials.d.ts +23 -0
- package/dist/tools/credentials.js +90 -1
- package/dist/tools/display-names.d.ts +9 -0
- package/dist/tools/display-names.js +24 -0
- package/dist/tools/drift.js +5 -5
- package/dist/tools/elicitation.js +1 -1
- package/dist/tools/extension-tools.controller.d.ts +14 -0
- package/dist/tools/extension-tools.controller.js +37 -0
- package/dist/tools/info.d.ts +61 -4
- package/dist/tools/info.js +119 -33
- package/dist/tools/legacy-data.d.ts +34 -0
- package/dist/tools/legacy-data.js +76 -0
- package/dist/tools/legacy-keys.d.ts +51 -0
- package/dist/tools/legacy-keys.js +114 -0
- package/dist/tools/naming.d.ts +1 -5
- package/dist/tools/naming.js +1 -7
- package/dist/tools/oauth/flow-paths.d.ts +1 -1
- package/dist/tools/oauth/flow-paths.js +1 -1
- package/dist/tools/oauth/flow.js +1 -1
- package/dist/tools/oauth/tokens.d.ts +54 -7
- package/dist/tools/oauth/tokens.js +87 -17
- package/dist/tools/org-tool-switches.d.ts +89 -0
- package/dist/tools/org-tool-switches.js +201 -0
- package/dist/tools/outputs.js +1 -1
- package/dist/tools/pipeline.d.ts +67 -47
- package/dist/tools/pipeline.js +319 -380
- package/dist/tools/policy.d.ts +30 -23
- package/dist/tools/policy.js +142 -64
- package/dist/tools/questions.controller.d.ts +1 -1
- package/dist/tools/questions.controller.js +1 -1
- package/dist/tools/questions.service.d.ts +23 -2
- package/dist/tools/questions.service.js +104 -2
- package/dist/tools/registry.d.ts +189 -68
- package/dist/tools/registry.js +318 -236
- package/dist/tools/resources.d.ts +1 -1
- package/dist/tools/resources.js +1 -1
- package/dist/tools/tools.module.js +31 -3
- package/dist/tools/validate.js +1 -1
- package/dist/ui/admin-ui.controller.d.ts +56 -0
- package/dist/ui/admin-ui.controller.js +192 -0
- package/dist/ui/arrangement.d.ts +65 -0
- package/dist/ui/arrangement.js +171 -0
- package/dist/ui/embed-token.d.ts +2 -2
- package/dist/ui/embed-token.js +30 -5
- package/dist/ui/registry.d.ts +42 -17
- package/dist/ui/registry.js +46 -14
- package/dist/ui/slots.controller.d.ts +11 -0
- package/dist/ui/slots.controller.js +25 -0
- package/dist/ui/ui-stream.d.ts +20 -3
- package/dist/ui/ui-stream.js +25 -7
- package/dist/ui/ui.schemas.d.ts +70 -0
- package/dist/ui/ui.schemas.js +65 -0
- package/dist/ui/views.controller.d.ts +35 -49
- package/dist/ui/views.controller.js +48 -70
- package/dist/ui/views.d.ts +112 -18
- package/dist/ui/views.js +254 -47
- package/package.json +6 -3
- package/src/migrations/0063_tool_keys_claude_code.sql +220 -0
- package/src/migrations/0064_account_last_org.sql +7 -0
- package/src/migrations/0065_conversation_archive.sql +8 -0
- package/src/migrations/0066_extension_display_name.sql +4 -0
- package/src/migrations/0067_agent_profiles.sql +20 -0
- package/src/migrations/0068_agent_avatar_uploads.sql +7 -0
- package/src/migrations/0069_attachments_agent_idx.sql +3 -0
- package/src/migrations/0070_background_tasks.sql +37 -0
- package/src/migrations/0071_background_tasks_reserve.sql +6 -0
- package/src/migrations/0072_background_tasks_stopping.sql +5 -0
- package/src/migrations/0073_org_extension_point_defaults.sql +11 -0
- package/src/migrations/0074_subagent_tree.sql +50 -0
- package/src/migrations/0075_plugin_scope.sql +61 -0
- package/src/migrations/0076_skills_created_by_nullable.sql +6 -0
- package/src/migrations/0077_scope_requests.sql +52 -0
- package/src/migrations/0078_scope_grant_switches.sql +18 -0
- package/src/migrations/0079_scope_live_install_switches.sql +19 -0
- package/src/migrations/0080_rename_enterprise_admin.sql +18 -0
- package/src/migrations/0081_platform_components.sql +129 -0
- package/src/migrations/0082_platform_migration.sql +33 -0
- package/src/migrations/0083_plugin_scope_sync_failures.sql +15 -0
- package/src/migrations/0084_org_owned_items.sql +85 -0
- package/src/migrations/0085_agent_templates_phase4.sql +45 -0
- package/src/migrations/0086_org_layering.sql +30 -0
- package/src/migrations/0087_approval_summary.sql +6 -0
- package/src/migrations/0088_environments.sql +80 -0
- package/src/migrations/0089_model_kinds_usage.sql +38 -0
- package/src/migrations/0090_initial_passwords.sql +27 -0
- package/src/migrations/0091_account_time_zone.sql +4 -0
- package/src/migrations/0092_tools_default_on.sql +27 -0
- package/src/migrations/0093_connected_environments.sql +37 -0
- package/src/migrations/0094_environment_paths_idx.sql +7 -0
- package/src/migrations/0095_environment_files_resets.sql +5 -0
- package/src/migrations/0096_environment_demoted_default.sql +18 -0
- package/src/migrations/0097_extension_installs_enabled_at.sql +16 -0
- package/src/migrations/0098_single_provider_running_first.sql +41 -0
- package/src/migrations/0099_channel_connection_guide_ack.sql +6 -0
- package/src/migrations/0100_catalog_files.sql +13 -0
- package/src/migrations/0101_marketplace_icons.sql +32 -0
- package/src/migrations/0102_themes.sql +64 -0
- package/src/migrations/0103_ui_theme_setting.sql +7 -0
- package/src/migrations/0104_connector_tool_account_policies.sql +16 -0
- package/src/migrations/0105_devices_rename.sql +136 -0
- package/src/migrations/0106_setup_guides_v2.sql +10 -0
- package/src/migrations/0107_extension_client_builds.sql +50 -0
- package/src/migrations/0108_question_skipped.sql +6 -0
- package/src/migrations/0109_audit_platform_idx.sql +5 -0
- package/src/migrations/0110_usage_time_idx.sql +8 -0
- package/src/migrations/0111_agent_skill_sharing.sql +22 -0
- package/src/migrations/0112_skill_share_requests.sql +4 -0
- package/dist/catalog/upgrade-targets.d.ts +0 -56
- package/dist/catalog/upgrade-targets.js +0 -90
- package/dist/conversations/sandbox-status.d.ts +0 -24
- package/dist/conversations/sandbox-status.js +0 -52
- package/dist/extensions/org-config.controller.d.ts +0 -24
- package/dist/extensions/org-config.controller.js +0 -62
- package/dist/tools/builtins/sandbox/names.d.ts +0 -7
- package/dist/tools/builtins/sandbox/names.js +0 -20
- package/dist/tools/builtins/skill-write.d.ts +0 -59
- package/dist/tools/builtins/skill-write.js +0 -244
|
@@ -8,12 +8,14 @@ var __param = (this && this.__param) || function (paramIndex, decorator) {
|
|
|
8
8
|
return function (target, key) { decorator(target, key, paramIndex); }
|
|
9
9
|
};
|
|
10
10
|
import { randomUUID } from "node:crypto";
|
|
11
|
-
import { ToolError, } from "@capybara-hq/plugin-sdk";
|
|
11
|
+
import { connectorToolKey, ToolError, } from "@capybara-hq/plugin-sdk";
|
|
12
12
|
import { Inject, Injectable } from "@nestjs/common";
|
|
13
13
|
import { sql } from "kysely";
|
|
14
14
|
import { z } from "zod";
|
|
15
|
-
import {
|
|
15
|
+
import { connectorTemplateState } from "../catalog/component-state.js";
|
|
16
|
+
import { assertItemInstallable } from "../catalog/request-rules.js";
|
|
16
17
|
import { ApiError } from "../errors.js";
|
|
18
|
+
import { PluginGuides, } from "../extensions/plugin-guides.js";
|
|
17
19
|
import { ExtensionRegistry } from "../extensions/registry.js";
|
|
18
20
|
import { audit } from "../identity/audit.js";
|
|
19
21
|
import { assertCustomAllowed } from "../identity/settings.js";
|
|
@@ -25,7 +27,7 @@ import { OrgLock } from "../orgs/org-lock.js";
|
|
|
25
27
|
import { CredentialMissing, Credentials, isOAuth, } from "./credentials.js";
|
|
26
28
|
import { snapshot, ToolDrift, toolIssue, } from "./drift.js";
|
|
27
29
|
import { endpointCredentialIssues, endpointView } from "./endpoint.js";
|
|
28
|
-
import { deriveSlug, isValidSlug, SLUG_RULE
|
|
30
|
+
import { deriveSlug, isValidSlug, SLUG_RULE } from "./naming.js";
|
|
29
31
|
import { checkOAuthUrl, discoverMcp, OAuthSetupError, oauthHttpOptions, pickAuthMethod, registerClient, } from "./oauth/discovery.js";
|
|
30
32
|
import { callbackUrl, publicUrlRequired } from "./oauth/flow-paths.js";
|
|
31
33
|
import { OAuthGrantError, OAuthUnavailable, tokenRequest, } from "./oauth/tokens.js";
|
|
@@ -92,11 +94,14 @@ let ConnectorsService = class ConnectorsService {
|
|
|
92
94
|
drift;
|
|
93
95
|
orgLock;
|
|
94
96
|
txHost;
|
|
97
|
+
guides;
|
|
95
98
|
constructor(kdb, registry,
|
|
96
99
|
/** Extension manifests (a slug may not take an extension's name). */
|
|
97
100
|
extensions, credentials, config, drift,
|
|
98
101
|
/** The org row lock (orgs/org-lock.ts): joins the caller's transaction. */
|
|
99
|
-
orgLock, txHost
|
|
102
|
+
orgLock, txHost,
|
|
103
|
+
/** Setup guides of connector templates (spec 2026-11-09-setup-guides-v2-design.md §11). */
|
|
104
|
+
guides) {
|
|
100
105
|
this.kdb = kdb;
|
|
101
106
|
this.registry = registry;
|
|
102
107
|
this.extensions = extensions;
|
|
@@ -105,6 +110,7 @@ let ConnectorsService = class ConnectorsService {
|
|
|
105
110
|
this.drift = drift;
|
|
106
111
|
this.orgLock = orgLock;
|
|
107
112
|
this.txHost = txHost;
|
|
113
|
+
this.guides = guides;
|
|
108
114
|
}
|
|
109
115
|
/** The kernel-schema handle of the current context (its transaction, else the pool). */
|
|
110
116
|
get db() {
|
|
@@ -142,6 +148,34 @@ let ConnectorsService = class ConnectorsService {
|
|
|
142
148
|
.executeTakeFirst();
|
|
143
149
|
return row !== undefined;
|
|
144
150
|
}
|
|
151
|
+
/**
|
|
152
|
+
* The first free default name and slug ({@link CreateConnectorInput.slugDefault}), read in the
|
|
153
|
+
* caller's transaction under the org lock.
|
|
154
|
+
*/
|
|
155
|
+
async freeName(t, orgId, d) {
|
|
156
|
+
const base = deriveSlug(d.name ?? d.display) ?? deriveSlug(d.display);
|
|
157
|
+
if (base === null) {
|
|
158
|
+
throw fail("slug", `Cannot derive a slug from the name; provide one. ${SLUG_RULE}`);
|
|
159
|
+
}
|
|
160
|
+
const taken = new Set((await t
|
|
161
|
+
.selectFrom("connectors")
|
|
162
|
+
.select("slug")
|
|
163
|
+
.where("org_id", "=", orgId)
|
|
164
|
+
.where("deleted_at", "is", null)
|
|
165
|
+
.execute()).map((r) => r.slug));
|
|
166
|
+
for (const m of this.extensions.manifests())
|
|
167
|
+
taken.add(m.name);
|
|
168
|
+
for (let n = 1;; n++) {
|
|
169
|
+
const suffix = n === 1 ? "" : `_${n}`;
|
|
170
|
+
const slug = `${base.slice(0, 24 - suffix.length).replace(/_+$/, "")}${suffix}`;
|
|
171
|
+
if (!isValidSlug(slug) || taken.has(slug))
|
|
172
|
+
continue;
|
|
173
|
+
const nth = ` ${n}`;
|
|
174
|
+
const name = d.name ??
|
|
175
|
+
(n === 1 ? d.display : `${[...d.display].slice(0, 80 - nth.length).join("")}${nth}`);
|
|
176
|
+
return { name: [...name].slice(0, 80).join(""), slug };
|
|
177
|
+
}
|
|
178
|
+
}
|
|
145
179
|
resolveSlug(input) {
|
|
146
180
|
if (input.slug !== undefined) {
|
|
147
181
|
if (!isValidSlug(input.slug))
|
|
@@ -181,7 +215,7 @@ let ConnectorsService = class ConnectorsService {
|
|
|
181
215
|
...(auth.scopes && { scopes: auth.scopes }),
|
|
182
216
|
};
|
|
183
217
|
try {
|
|
184
|
-
const tokens = await tokenRequest(client, { grant_type: "client_credentials", scope: auth.scopes?.join(" ") }, http);
|
|
218
|
+
const tokens = await tokenRequest(client, { grant_type: "client_credentials", scope: auth.scopes?.join(" ") }, http, { tokenTypes: auth.tokenTypes });
|
|
185
219
|
return { client, tokens };
|
|
186
220
|
}
|
|
187
221
|
catch (e) {
|
|
@@ -253,7 +287,8 @@ let ConnectorsService = class ConnectorsService {
|
|
|
253
287
|
checkCreateInput(actorAccountId, input) {
|
|
254
288
|
const slug = this.resolveSlug(input);
|
|
255
289
|
const endpoint = this.parseEndpoint(input.connector, input.endpoint);
|
|
256
|
-
|
|
290
|
+
// a defaulted slug skips plugin names itself (`freeName`)
|
|
291
|
+
if (!input.slugDefault && this.extensions.manifests().some((m) => m.name === slug)) {
|
|
257
292
|
throw fail("slug", `Slug "${slug}" is the name of an installed plugin; choose another`);
|
|
258
293
|
}
|
|
259
294
|
const auth = input.auth;
|
|
@@ -311,21 +346,21 @@ let ConnectorsService = class ConnectorsService {
|
|
|
311
346
|
// 自建被禁止时先拒绝(事务里再复核一次):不该为此触发外连
|
|
312
347
|
if (!input.template)
|
|
313
348
|
await assertCustomAllowed(this.db, "customConnectors");
|
|
349
|
+
await this.assertKindAvailable(orgId, input.connector);
|
|
314
350
|
const { slug, endpoint, owner, secret } = this.checkCreateInput(actorAccountId, input);
|
|
315
351
|
const id = randomUUID();
|
|
316
352
|
const auth = input.auth;
|
|
317
353
|
const publicUrl = this.config.get().http.publicUrl;
|
|
318
|
-
// 先做不需要连接的检查:冲突的 slug 不该触发一次外连
|
|
319
|
-
if (await this.slugTaken(this.db, orgId, slug)) {
|
|
354
|
+
// 先做不需要连接的检查:冲突的 slug 不该触发一次外连 (a defaulted slug is chosen under the lock)
|
|
355
|
+
if (!input.slugDefault && (await this.slugTaken(this.db, orgId, slug))) {
|
|
320
356
|
throw new ApiError("connector.slug_taken", "Connector slug is already taken");
|
|
321
357
|
}
|
|
322
358
|
const oauth = isOAuth(auth)
|
|
323
359
|
? await this.prepareOAuth(auth, endpoint, input.credential, publicUrl)
|
|
324
360
|
: undefined;
|
|
325
|
-
let
|
|
326
|
-
let issues = [];
|
|
361
|
+
let listed;
|
|
327
362
|
if (auth.type !== "oauth_code") {
|
|
328
|
-
|
|
363
|
+
listed = await this.drift.listTools(input.connector, endpoint, async () => {
|
|
329
364
|
if (auth.type === "none")
|
|
330
365
|
return { headers: {} };
|
|
331
366
|
if (oauth?.tokens) {
|
|
@@ -335,8 +370,12 @@ let ConnectorsService = class ConnectorsService {
|
|
|
335
370
|
throw new CredentialMissing(id, auth.ownership);
|
|
336
371
|
return this.credentials.injectionFor(id, auth, secret);
|
|
337
372
|
}, { orgId, slug });
|
|
338
|
-
({ rows, issues } = snapshot(slug, listed.specs, listed.resources));
|
|
339
373
|
}
|
|
374
|
+
// the guide the wizard and 补充配置 showed: the template's current one (spec §11)
|
|
375
|
+
const tpl = input.template;
|
|
376
|
+
const guideAck = tpl?.templateId !== undefined
|
|
377
|
+
? await this.guides.templateAck(tpl.itemId, tpl.templateId)
|
|
378
|
+
: null;
|
|
340
379
|
return this.createIn(orgId, actorAccountId, input, actorTokenId, {
|
|
341
380
|
id,
|
|
342
381
|
slug,
|
|
@@ -344,13 +383,13 @@ let ConnectorsService = class ConnectorsService {
|
|
|
344
383
|
owner,
|
|
345
384
|
secret,
|
|
346
385
|
oauth,
|
|
347
|
-
|
|
348
|
-
|
|
386
|
+
listed,
|
|
387
|
+
guideAck,
|
|
349
388
|
});
|
|
350
389
|
}
|
|
351
390
|
/** The org-locked, re-checked insert of {@link create} (the outbound checks ran before). */
|
|
352
391
|
async createIn(orgId, actorAccountId, input, actorTokenId, c) {
|
|
353
|
-
const { id,
|
|
392
|
+
const { id, endpoint, owner, secret, oauth } = c;
|
|
354
393
|
const auth = input.auth;
|
|
355
394
|
const t = this.db;
|
|
356
395
|
await this.orgLock.lockAndAuthorize(orgId, actorAccountId, "connectors.manage");
|
|
@@ -359,22 +398,55 @@ let ConnectorsService = class ConnectorsService {
|
|
|
359
398
|
}
|
|
360
399
|
else
|
|
361
400
|
await assertCustomAllowed(t, "customConnectors");
|
|
362
|
-
|
|
401
|
+
let slug = c.slug;
|
|
402
|
+
let name = input.name;
|
|
403
|
+
if (input.slugDefault)
|
|
404
|
+
({ slug, name } = await this.freeName(t, orgId, input.slugDefault));
|
|
405
|
+
else if (await this.slugTaken(t, orgId, slug)) {
|
|
363
406
|
throw new ApiError("connector.slug_taken", "Connector slug is already taken");
|
|
364
407
|
}
|
|
408
|
+
// the snapshot's keys name the final slug
|
|
409
|
+
const { rows, issues } = c.listed === undefined
|
|
410
|
+
? { rows: [], issues: [] }
|
|
411
|
+
: snapshot(slug, c.listed.specs, c.listed.resources);
|
|
412
|
+
// A connector made from a platform connector template stays linked to it (ruling E2)
|
|
413
|
+
const tpl = input.template;
|
|
414
|
+
const platformTemplate = tpl?.templateId !== undefined
|
|
415
|
+
? await t
|
|
416
|
+
.selectFrom("platform_connector_templates")
|
|
417
|
+
.select("id")
|
|
418
|
+
.where("catalog_item_id", "=", tpl.itemId)
|
|
419
|
+
.where("template_id", "=", tpl.templateId)
|
|
420
|
+
.where("deleted_at", "is", null)
|
|
421
|
+
.executeTakeFirst()
|
|
422
|
+
: undefined;
|
|
423
|
+
if (tpl?.mustBeOn) {
|
|
424
|
+
const state = platformTemplate === undefined
|
|
425
|
+
? "absent"
|
|
426
|
+
: await connectorTemplateState(t, orgId, platformTemplate.id);
|
|
427
|
+
if (state === "absent") {
|
|
428
|
+
throw new ApiError("component.not_found", "The connector template does not exist or is not available in this organization");
|
|
429
|
+
}
|
|
430
|
+
if (state === "off") {
|
|
431
|
+
throw new ApiError("component.off", "This connector template is off in this organization; switch it (or its plugin) on first");
|
|
432
|
+
}
|
|
433
|
+
}
|
|
365
434
|
await t
|
|
366
435
|
.insertInto("connectors")
|
|
367
436
|
.values({
|
|
368
437
|
id,
|
|
369
438
|
org_id: orgId,
|
|
370
439
|
slug,
|
|
371
|
-
name
|
|
440
|
+
name,
|
|
372
441
|
connector: input.connector,
|
|
373
442
|
endpoint: JSON.stringify(endpoint),
|
|
374
443
|
auth: JSON.stringify(auth),
|
|
375
444
|
created_by: actorAccountId,
|
|
376
445
|
catalog_item_id: input.template?.itemId ?? null,
|
|
377
446
|
catalog_version: input.template?.version ?? null,
|
|
447
|
+
platform_template_id: platformTemplate?.id ?? null,
|
|
448
|
+
// linked to its template only through the platform component (drift is judged there)
|
|
449
|
+
guide_ack: platformTemplate !== undefined && c.guideAck !== null ? JSON.stringify(c.guideAck) : null,
|
|
378
450
|
// 授权码连接器安装时没有快照:模板的默认策略留到首个快照时应用
|
|
379
451
|
template_tool_policies: input.template?.defaultToolPolicies
|
|
380
452
|
? JSON.stringify(input.template.defaultToolPolicies)
|
|
@@ -418,7 +490,7 @@ let ConnectorsService = class ConnectorsService {
|
|
|
418
490
|
return { connector: await this.detail(t, orgId, id, actorAccountId), issues };
|
|
419
491
|
}
|
|
420
492
|
/**
|
|
421
|
-
* Checks a template update before anything is written (
|
|
493
|
+
* Checks a template update before anything is written (the platform plugin update): the endpoint
|
|
422
494
|
* against the connector's schema, and with `resetCredentials` the new credential's shape, or for
|
|
423
495
|
* OAuth the client setup (discovery, dynamic registration or the client credentials token; an
|
|
424
496
|
* outbound failure -> 502 `connector.connect_failed`). Writes nothing.
|
|
@@ -534,6 +606,21 @@ let ConnectorsService = class ConnectorsService {
|
|
|
534
606
|
},
|
|
535
607
|
});
|
|
536
608
|
}
|
|
609
|
+
/** Refuses a loaded kind whose extension is not enabled in the org (the same notion as {@link kinds}). */
|
|
610
|
+
async assertKindAvailable(orgId, kind) {
|
|
611
|
+
if (!this.registry.findConnector(kind))
|
|
612
|
+
return; // unknown kinds fail in parseEndpoint
|
|
613
|
+
if (!(await this.registry.connectorKindAvailable(orgId, kind))) {
|
|
614
|
+
throw new ApiError("connector.kind_unavailable", `Connector kind "${kind}" is not enabled for this organization; enable its plugin first`);
|
|
615
|
+
}
|
|
616
|
+
}
|
|
617
|
+
/**
|
|
618
|
+
* The connector kinds the org can create connectors of (the install wizard's protocol step): a
|
|
619
|
+
* kind is listed when its `connector@1` extension is loaded and enabled in the org.
|
|
620
|
+
*/
|
|
621
|
+
kinds(orgId) {
|
|
622
|
+
return this.registry.connectorKindsFor(orgId);
|
|
623
|
+
}
|
|
537
624
|
/**
|
|
538
625
|
* Previews a connector (Ruling A20, for the install wizard): after checking the connector, the
|
|
539
626
|
* endpoint (credential pattern check included) and the credential shape, reads the endpoint
|
|
@@ -548,6 +635,7 @@ let ConnectorsService = class ConnectorsService {
|
|
|
548
635
|
async preview(orgId, input) {
|
|
549
636
|
// 部署禁止组织自建连接器时也不替组织去连任意端点(目录安装不走预览)
|
|
550
637
|
await assertCustomAllowed(this.db, "customConnectors");
|
|
638
|
+
await this.assertKindAvailable(orgId, input.connector);
|
|
551
639
|
const endpoint = this.parseEndpoint(input.connector, input.endpoint);
|
|
552
640
|
const connector = this.registry.findConnector(input.connector);
|
|
553
641
|
if (!connector)
|
|
@@ -619,7 +707,7 @@ let ConnectorsService = class ConnectorsService {
|
|
|
619
707
|
issues = snap.issues;
|
|
620
708
|
tools = snap.rows.map((r) => ({
|
|
621
709
|
name: r.name,
|
|
622
|
-
key:
|
|
710
|
+
key: connectorToolKey(slug, r.name),
|
|
623
711
|
description: r.spec.description,
|
|
624
712
|
inputSchema: r.spec.inputSchema,
|
|
625
713
|
annotations: r.spec.annotations ?? null,
|
|
@@ -684,6 +772,8 @@ let ConnectorsService = class ConnectorsService {
|
|
|
684
772
|
endpoint: endpointView(r.endpoint),
|
|
685
773
|
auth: r.auth,
|
|
686
774
|
status: r.status,
|
|
775
|
+
platformTemplateId: r.platform_template_id ?? null,
|
|
776
|
+
catalogItemId: r.catalog_item_id ?? null,
|
|
687
777
|
createdBy: r.created_by,
|
|
688
778
|
createdAt: r.created_at,
|
|
689
779
|
updatedAt: r.updated_at,
|
|
@@ -720,7 +810,8 @@ let ConnectorsService = class ConnectorsService {
|
|
|
720
810
|
const next = t.pending_spec;
|
|
721
811
|
return {
|
|
722
812
|
name: t.name,
|
|
723
|
-
key:
|
|
813
|
+
key: connectorToolKey(r.slug, t.name),
|
|
814
|
+
title: typeof spec.title === "string" ? spec.title : null,
|
|
724
815
|
description: spec.description,
|
|
725
816
|
inputSchema: spec.inputSchema,
|
|
726
817
|
annotations: spec.annotations ?? null,
|
|
@@ -748,7 +839,85 @@ let ConnectorsService = class ConnectorsService {
|
|
|
748
839
|
credential: { ownership: auth.type === "none" ? null : auth.ownership, status },
|
|
749
840
|
};
|
|
750
841
|
}
|
|
751
|
-
/**
|
|
842
|
+
/**
|
|
843
|
+
* The setup guide fields of the org's connectors (`setupGuide`, `guideDrift`; spec
|
|
844
|
+
* 2026-11-09-setup-guides-v2-design.md §9.3, §11): resolved through each connector's platform
|
|
845
|
+
* template to its item's guide for that template; custom connectors get nulls.
|
|
846
|
+
*/
|
|
847
|
+
async guideStates(org, connectorIds) {
|
|
848
|
+
if (connectorIds.length === 0)
|
|
849
|
+
return new Map();
|
|
850
|
+
const rows = await this.db
|
|
851
|
+
.selectFrom("connectors as c")
|
|
852
|
+
.leftJoin("platform_connector_templates as t", "t.id", "c.platform_template_id")
|
|
853
|
+
.select(["c.id", "c.guide_ack", "t.catalog_item_id", "t.template_id"])
|
|
854
|
+
.where("c.org_id", "=", org.orgId)
|
|
855
|
+
.where("c.id", "in", [...new Set(connectorIds)])
|
|
856
|
+
.where("c.deleted_at", "is", null)
|
|
857
|
+
.execute();
|
|
858
|
+
return this.guides.connectorStates(rows.map((r) => ({
|
|
859
|
+
id: r.id,
|
|
860
|
+
itemId: r.catalog_item_id ?? null,
|
|
861
|
+
templateId: r.template_id ?? null,
|
|
862
|
+
guideAck: r.guide_ack ?? null,
|
|
863
|
+
})), org);
|
|
864
|
+
}
|
|
865
|
+
/**
|
|
866
|
+
* 「我已更新应用」 for a connector made from a template: records the template's current guide as
|
|
867
|
+
* the one it is set up with. `hash` is the admin drift hash of the guide the person was shown;
|
|
868
|
+
* when the plugin moved on since, 409 `connector.guide_changed` (show the new guide first). A
|
|
869
|
+
* connector without a template guide, or whose item the org's catalog does not show -> 404
|
|
870
|
+
* `catalog.guide_not_found`.
|
|
871
|
+
*/
|
|
872
|
+
async ackGuide(org, connectorId, hash, actorAccountId, actorTokenId) {
|
|
873
|
+
const { orgId } = org;
|
|
874
|
+
const r = await this.db
|
|
875
|
+
.selectFrom("connectors as c")
|
|
876
|
+
.leftJoin("platform_connector_templates as t", "t.id", "c.platform_template_id")
|
|
877
|
+
.select(["c.id", "t.catalog_item_id", "t.template_id"])
|
|
878
|
+
.where("c.id", "=", connectorId)
|
|
879
|
+
.where("c.org_id", "=", orgId)
|
|
880
|
+
.where("c.deleted_at", "is", null)
|
|
881
|
+
.executeTakeFirst();
|
|
882
|
+
if (!r)
|
|
883
|
+
throw notFound();
|
|
884
|
+
const ack = r.catalog_item_id && r.template_id
|
|
885
|
+
? // the guide read's visibility: an item the org's catalog does not show has no guide
|
|
886
|
+
await this.guides.templateAck(r.catalog_item_id, r.template_id, org)
|
|
887
|
+
: null;
|
|
888
|
+
if (ack === null) {
|
|
889
|
+
throw new ApiError("catalog.guide_not_found", "The connector has no template setup guide");
|
|
890
|
+
}
|
|
891
|
+
if (ack.hash !== hash) {
|
|
892
|
+
throw new ApiError("connector.guide_changed", "The connector template's setup guide changed since it was shown; review the new guide first");
|
|
893
|
+
}
|
|
894
|
+
return this.ackIn(orgId, connectorId, ack, actorAccountId, actorTokenId);
|
|
895
|
+
}
|
|
896
|
+
/** The row and audit of {@link ackGuide}, in one transaction under the org lock. */
|
|
897
|
+
async ackIn(orgId, connectorId, ack, actorAccountId, actorTokenId) {
|
|
898
|
+
const t = this.db;
|
|
899
|
+
await this.orgLock.lockAndAuthorize(orgId, actorAccountId, "connectors.manage");
|
|
900
|
+
const updated = await t
|
|
901
|
+
.updateTable("connectors")
|
|
902
|
+
.set({ guide_ack: JSON.stringify(ack), updated_at: sql `now()` })
|
|
903
|
+
.where("id", "=", connectorId)
|
|
904
|
+
.where("org_id", "=", orgId)
|
|
905
|
+
.where("deleted_at", "is", null)
|
|
906
|
+
.returning("id")
|
|
907
|
+
.executeTakeFirst();
|
|
908
|
+
if (!updated)
|
|
909
|
+
throw notFound();
|
|
910
|
+
await audit(t, {
|
|
911
|
+
actorAccountId,
|
|
912
|
+
...(actorTokenId !== undefined && { actorTokenId }),
|
|
913
|
+
orgId,
|
|
914
|
+
action: "connector.guide_confirmed",
|
|
915
|
+
target: connectorId,
|
|
916
|
+
detail: { guideId: ack.guideId, version: ack.version },
|
|
917
|
+
});
|
|
918
|
+
return this.detail(t, orgId, connectorId, actorAccountId);
|
|
919
|
+
}
|
|
920
|
+
/** The org's connectors that are not deleted (by creation time). */
|
|
752
921
|
async list(orgId) {
|
|
753
922
|
const rows = await this.db
|
|
754
923
|
.selectFrom("connectors")
|
|
@@ -882,16 +1051,75 @@ let ConnectorsService = class ConnectorsService {
|
|
|
882
1051
|
});
|
|
883
1052
|
return this.detail(t, orgId, connectorId, actorAccountId);
|
|
884
1053
|
}
|
|
1054
|
+
/**
|
|
1055
|
+
* The org id of a live connector of a live org (the platform paths address a connector by its
|
|
1056
|
+
* global id); else `connector.not_found`.
|
|
1057
|
+
*/
|
|
1058
|
+
async liveOrgOf(connectorId) {
|
|
1059
|
+
const r = await this.db
|
|
1060
|
+
.selectFrom("connectors as c")
|
|
1061
|
+
.innerJoin("orgs as o", "o.id", "c.org_id")
|
|
1062
|
+
.select("c.org_id")
|
|
1063
|
+
.where("c.id", "=", connectorId)
|
|
1064
|
+
.where("c.deleted_at", "is", null)
|
|
1065
|
+
.where("o.deleted_at", "is", null)
|
|
1066
|
+
.executeTakeFirst();
|
|
1067
|
+
if (!r)
|
|
1068
|
+
throw notFound();
|
|
1069
|
+
return r.org_id;
|
|
1070
|
+
}
|
|
1071
|
+
/**
|
|
1072
|
+
* Disables or enables a connector on the platform's behalf (a super admin who need not be a
|
|
1073
|
+
* member of the org; the caller checks the super admin): org row lock, the status update, audit
|
|
1074
|
+
* `connector.updated` with `via: "platform"`. `auditDetail` (a Platform tool write's
|
|
1075
|
+
* `viaAgent`) is merged into the detail; `via` stays `"platform"`.
|
|
1076
|
+
*/
|
|
1077
|
+
async setStatusAsPlatform(connectorId, status, actor, auditDetail) {
|
|
1078
|
+
const t = this.db;
|
|
1079
|
+
const orgId = await this.liveOrgOf(connectorId);
|
|
1080
|
+
await this.orgLock.lock(orgId);
|
|
1081
|
+
const app = await this.row(t, orgId, connectorId, true);
|
|
1082
|
+
await t
|
|
1083
|
+
.updateTable("connectors")
|
|
1084
|
+
.set({ status, updated_at: sql `now()` })
|
|
1085
|
+
.where("id", "=", connectorId)
|
|
1086
|
+
.execute();
|
|
1087
|
+
await audit(t, {
|
|
1088
|
+
actorAccountId: actor.accountId,
|
|
1089
|
+
...(actor.tokenId !== undefined && { actorTokenId: actor.tokenId }),
|
|
1090
|
+
orgId,
|
|
1091
|
+
action: "connector.updated",
|
|
1092
|
+
target: connectorId,
|
|
1093
|
+
detail: { ...auditDetail, status: { from: app.status, to: status }, via: "platform" },
|
|
1094
|
+
});
|
|
1095
|
+
}
|
|
1096
|
+
/**
|
|
1097
|
+
* Deletes a connector on the platform's behalf (see {@link setStatusAsPlatform}): org row lock,
|
|
1098
|
+
* then {@link removeIn} with `via: "platform"` in the audit detail (merged over `auditDetail`,
|
|
1099
|
+
* a Platform tool write's `viaAgent`).
|
|
1100
|
+
*/
|
|
1101
|
+
async removeAsPlatform(connectorId, actor, auditDetail) {
|
|
1102
|
+
const orgId = await this.liveOrgOf(connectorId);
|
|
1103
|
+
await this.orgLock.lock(orgId);
|
|
1104
|
+
await this.removeIn(orgId, connectorId, actor.accountId, actor.tokenId, undefined, {
|
|
1105
|
+
...auditDetail,
|
|
1106
|
+
via: "platform",
|
|
1107
|
+
});
|
|
1108
|
+
}
|
|
885
1109
|
/** 软删除,并删除该连接器的全部凭据(`connectors.manage`)。 */
|
|
886
|
-
async remove(orgId, connectorId, actorAccountId, actorTokenId) {
|
|
1110
|
+
async remove(orgId, connectorId, actorAccountId, actorTokenId, auditDetail) {
|
|
887
1111
|
await this.orgLock.lockAndAuthorize(orgId, actorAccountId, "connectors.manage");
|
|
888
|
-
await this.removeIn(orgId, connectorId, actorAccountId, actorTokenId);
|
|
1112
|
+
await this.removeIn(orgId, connectorId, actorAccountId, actorTokenId, undefined, auditDetail);
|
|
889
1113
|
}
|
|
890
1114
|
/**
|
|
891
1115
|
* 在调用方事务里软删除连接器(调用方已锁组织行并按需复核角色;应用安装的回滚与卸载用):删全部凭据与授权,
|
|
892
1116
|
* 审计 `connector.deleted`(`reason` 并进 detail)。已删除 / 不存在 → `connector.not_found`。
|
|
893
1117
|
*/
|
|
894
|
-
async removeIn(orgId, connectorId,
|
|
1118
|
+
async removeIn(orgId, connectorId,
|
|
1119
|
+
/** null: the kernel itself (the plugin scope sync uninstalling a plugin). */
|
|
1120
|
+
actorAccountId, actorTokenId, reason,
|
|
1121
|
+
/** Merged into the audit detail (a write made through the Platform tool). */
|
|
1122
|
+
auditDetail) {
|
|
895
1123
|
const t = this.db;
|
|
896
1124
|
const app = await this.row(t, orgId, connectorId, true);
|
|
897
1125
|
await t
|
|
@@ -912,7 +1140,7 @@ let ConnectorsService = class ConnectorsService {
|
|
|
912
1140
|
orgId,
|
|
913
1141
|
action: "connector.deleted",
|
|
914
1142
|
target: connectorId,
|
|
915
|
-
detail: { slug: app.slug, ...(reason !== undefined && { reason }) },
|
|
1143
|
+
detail: { slug: app.slug, ...(reason !== undefined && { reason }), ...auditDetail },
|
|
916
1144
|
});
|
|
917
1145
|
}
|
|
918
1146
|
/**
|
|
@@ -954,7 +1182,7 @@ let ConnectorsService = class ConnectorsService {
|
|
|
954
1182
|
orgId,
|
|
955
1183
|
action: "connector.tools_refreshed",
|
|
956
1184
|
target: connectorId,
|
|
957
|
-
detail: { ...changes, ...(opts.trigger && { trigger: opts.trigger }) },
|
|
1185
|
+
detail: { ...changes, ...(opts.trigger && { trigger: opts.trigger }), ...opts.auditDetail },
|
|
958
1186
|
});
|
|
959
1187
|
return {
|
|
960
1188
|
connector: await this.detail(t, orgId, connectorId, actorAccountId),
|
|
@@ -1107,7 +1335,7 @@ let ConnectorsService = class ConnectorsService {
|
|
|
1107
1335
|
let tokens;
|
|
1108
1336
|
if (auth.type === "oauth_client") {
|
|
1109
1337
|
try {
|
|
1110
|
-
tokens = await tokenRequest(client, { grant_type: "client_credentials", scope: (auth.scopes ?? client.scopes)?.join(" ") }, oauthHttpOptions(this.config.get()));
|
|
1338
|
+
tokens = await tokenRequest(client, { grant_type: "client_credentials", scope: (auth.scopes ?? client.scopes)?.join(" ") }, oauthHttpOptions(this.config.get()), { tokenTypes: auth.tokenTypes });
|
|
1111
1339
|
}
|
|
1112
1340
|
catch (e) {
|
|
1113
1341
|
throw connectFailed(e);
|
|
@@ -1154,9 +1382,18 @@ __decorate([
|
|
|
1154
1382
|
__decorate([
|
|
1155
1383
|
Transactional({ propagation: "mandatory" })
|
|
1156
1384
|
], ConnectorsService.prototype, "applyTemplateIn", null);
|
|
1385
|
+
__decorate([
|
|
1386
|
+
Transactional()
|
|
1387
|
+
], ConnectorsService.prototype, "ackIn", null);
|
|
1157
1388
|
__decorate([
|
|
1158
1389
|
Transactional()
|
|
1159
1390
|
], ConnectorsService.prototype, "update", null);
|
|
1391
|
+
__decorate([
|
|
1392
|
+
Transactional()
|
|
1393
|
+
], ConnectorsService.prototype, "setStatusAsPlatform", null);
|
|
1394
|
+
__decorate([
|
|
1395
|
+
Transactional()
|
|
1396
|
+
], ConnectorsService.prototype, "removeAsPlatform", null);
|
|
1160
1397
|
__decorate([
|
|
1161
1398
|
Transactional()
|
|
1162
1399
|
], ConnectorsService.prototype, "remove", null);
|
|
@@ -1187,6 +1424,7 @@ ConnectorsService = __decorate([
|
|
|
1187
1424
|
__param(4, Inject(KernelConfigService)),
|
|
1188
1425
|
__param(5, Inject(ToolDrift)),
|
|
1189
1426
|
__param(6, Inject(OrgLock)),
|
|
1190
|
-
__param(7, Inject(TransactionHost))
|
|
1427
|
+
__param(7, Inject(TransactionHost)),
|
|
1428
|
+
__param(8, Inject(PluginGuides))
|
|
1191
1429
|
], ConnectorsService);
|
|
1192
1430
|
export { ConnectorsService };
|
|
@@ -42,12 +42,15 @@ export type OAuthAuth = {
|
|
|
42
42
|
client: "dcr" | "manual";
|
|
43
43
|
/** 令牌端点的客户端认证方式(有密钥时),默认 client_secret_basic。 */
|
|
44
44
|
tokenAuthMethod?: "client_secret_basic" | "client_secret_post" | undefined;
|
|
45
|
+
/** More `token_type` values accepted as bearer tokens (besides Bearer and `user`). */
|
|
46
|
+
tokenTypes?: string[] | undefined;
|
|
45
47
|
} | {
|
|
46
48
|
type: "oauth_client";
|
|
47
49
|
ownership: "org";
|
|
48
50
|
tokenUrl: string;
|
|
49
51
|
scopes?: string[] | undefined;
|
|
50
52
|
tokenAuthMethod?: "client_secret_basic" | "client_secret_post" | undefined;
|
|
53
|
+
tokenTypes?: string[] | undefined;
|
|
51
54
|
};
|
|
52
55
|
export type ConnectorAuth = StaticAuth | OAuthAuth;
|
|
53
56
|
export declare const isOAuth: (auth: ConnectorAuth) => auth is OAuthAuth;
|
|
@@ -116,6 +119,26 @@ export declare class Credentials {
|
|
|
116
119
|
* 都会更新写入时间),最多 `limit` 个。漂移检查用它挑个人凭据型连接器的凭据。
|
|
117
120
|
*/
|
|
118
121
|
personalHolders(orgId: string, connectorId: string, limit: number): Promise<string[]>;
|
|
122
|
+
/**
|
|
123
|
+
* For setup checks (setup guides v2 §10.4): the input revision of a connector's credentials,
|
|
124
|
+
* the `updated_at` of its OAuth client row, its org credential row and, given `accountId`, that
|
|
125
|
+
* member's row (ISO), never a value. Reads no secret.
|
|
126
|
+
*/
|
|
127
|
+
checkRevision(orgId: string, connectorId: string, accountId: string | null): Promise<string>;
|
|
128
|
+
/**
|
|
129
|
+
* For setup checks (setup guides v2 §10.8), never refreshing or writing anything: every stored
|
|
130
|
+
* credential value of a connector (decrypted: the OAuth client secret and DCR registration
|
|
131
|
+
* token, the org credential, every member's access and refresh tokens or static values) that a
|
|
132
|
+
* check result is redacted by, with the forms they are sent in (what `injectionSecrets` covers
|
|
133
|
+
* for a tool call: the Basic header value, its base64 token and decoded `user:pass`, the
|
|
134
|
+
* `encodeURIComponent` forms; for the client also the `client_secret_basic` header the token
|
|
135
|
+
* request sends and the raw `id:secret`), and the stored OAuth client id (null without a
|
|
136
|
+
* client). Never echo the values; a plugin check gets only a manual client's id.
|
|
137
|
+
*/
|
|
138
|
+
checkMaterial(orgId: string, connectorId: string): Promise<{
|
|
139
|
+
secrets: string[];
|
|
140
|
+
clientId: string | null;
|
|
141
|
+
}>;
|
|
119
142
|
/** 只看与 auth.ownership 对应的那一条凭据是否存在(不解密);none 恒为 connected。 */
|
|
120
143
|
status(orgId: string, connectorId: string, auth: ConnectorAuth, accountId: string): Promise<"connected" | "missing">;
|
|
121
144
|
/** 返回本次请求要注入的头 / 查询参数;缺凭据抛 CredentialMissing。 */
|
|
@@ -17,7 +17,7 @@ import { KernelDb } from "../infra/database/kernel-db.js";
|
|
|
17
17
|
import { LockService } from "../infra/lock/lock.service.js";
|
|
18
18
|
import { KERNEL_LOGGER, KEYRING, REDIS } from "../infra/tokens.js";
|
|
19
19
|
import { oauthHttpOptions } from "./oauth/discovery.js";
|
|
20
|
-
import { OAuthReconnectRequired, OAuthTokens, } from "./oauth/tokens.js";
|
|
20
|
+
import { basicClientAuth, OAuthReconnectRequired, OAuthTokens, } from "./oauth/tokens.js";
|
|
21
21
|
import { injectionSecrets } from "./redact.js";
|
|
22
22
|
export const isOAuth = (auth) => auth.type === "oauth_code" || auth.type === "oauth_client";
|
|
23
23
|
/** 缺凭据:只带连接器 id 与归属,绝不带值。 */
|
|
@@ -239,6 +239,95 @@ let Credentials = class Credentials {
|
|
|
239
239
|
LIMIT ${limit}`.execute(this.db.db);
|
|
240
240
|
return rows.rows.map((r) => r.account_id);
|
|
241
241
|
}
|
|
242
|
+
/**
|
|
243
|
+
* For setup checks (setup guides v2 §10.4): the input revision of a connector's credentials,
|
|
244
|
+
* the `updated_at` of its OAuth client row, its org credential row and, given `accountId`, that
|
|
245
|
+
* member's row (ISO), never a value. Reads no secret.
|
|
246
|
+
*/
|
|
247
|
+
async checkRevision(orgId, connectorId, accountId) {
|
|
248
|
+
const keys = [clientKey(connectorId), orgKey(connectorId)];
|
|
249
|
+
if (accountId !== null)
|
|
250
|
+
keys.push(userKey(connectorId, accountId));
|
|
251
|
+
const rows = await this.db
|
|
252
|
+
.selectFrom("secrets")
|
|
253
|
+
.select(["key", "updated_at"])
|
|
254
|
+
.where("namespace", "=", NAMESPACE)
|
|
255
|
+
.where("org_id", "=", orgId)
|
|
256
|
+
.where("key", "in", keys)
|
|
257
|
+
.execute();
|
|
258
|
+
const at = new Map(rows.map((r) => [r.key, new Date(r.updated_at).toISOString()]));
|
|
259
|
+
return keys.map((k) => at.get(k) ?? "-").join("|");
|
|
260
|
+
}
|
|
261
|
+
/**
|
|
262
|
+
* For setup checks (setup guides v2 §10.8), never refreshing or writing anything: every stored
|
|
263
|
+
* credential value of a connector (decrypted: the OAuth client secret and DCR registration
|
|
264
|
+
* token, the org credential, every member's access and refresh tokens or static values) that a
|
|
265
|
+
* check result is redacted by, with the forms they are sent in (what `injectionSecrets` covers
|
|
266
|
+
* for a tool call: the Basic header value, its base64 token and decoded `user:pass`, the
|
|
267
|
+
* `encodeURIComponent` forms; for the client also the `client_secret_basic` header the token
|
|
268
|
+
* request sends and the raw `id:secret`), and the stored OAuth client id (null without a
|
|
269
|
+
* client). Never echo the values; a plugin check gets only a manual client's id.
|
|
270
|
+
*/
|
|
271
|
+
async checkMaterial(orgId, connectorId) {
|
|
272
|
+
const prefix = orgKey(connectorId).slice(0, -"org".length);
|
|
273
|
+
const rows = await this.db
|
|
274
|
+
.selectFrom("secrets")
|
|
275
|
+
.select("key")
|
|
276
|
+
.where("namespace", "=", NAMESPACE)
|
|
277
|
+
.where("org_id", "=", orgId)
|
|
278
|
+
.where(sql `left(key, ${prefix.length})`, "=", prefix)
|
|
279
|
+
.execute();
|
|
280
|
+
const secrets = new Set();
|
|
281
|
+
const push = (...vs) => {
|
|
282
|
+
for (const v of vs) {
|
|
283
|
+
if (typeof v !== "string" || v === "")
|
|
284
|
+
continue;
|
|
285
|
+
// the value and the forms an injection carries it in (`Bearer`, query, percent-encoded)
|
|
286
|
+
for (const s of injectionSecrets({ headers: { a: `Bearer ${v}` }, query: { q: v } })) {
|
|
287
|
+
secrets.add(s);
|
|
288
|
+
}
|
|
289
|
+
}
|
|
290
|
+
};
|
|
291
|
+
const pushBasic = (user, password) => {
|
|
292
|
+
const header = `Basic ${Buffer.from(`${user}:${password}`).toString("base64")}`;
|
|
293
|
+
for (const s of injectionSecrets({ headers: { a: header } }))
|
|
294
|
+
secrets.add(s);
|
|
295
|
+
};
|
|
296
|
+
let clientId = null;
|
|
297
|
+
for (const r of rows) {
|
|
298
|
+
const v = (await this.readJson(orgId, r.key, connectorId));
|
|
299
|
+
if (v === null || typeof v !== "object")
|
|
300
|
+
continue;
|
|
301
|
+
if (r.key === clientKey(connectorId)) {
|
|
302
|
+
// the client id is not a secret (a plugin check gets it); the secret and DCR token are
|
|
303
|
+
if (typeof v.clientId === "string")
|
|
304
|
+
clientId = v.clientId;
|
|
305
|
+
push(v.clientSecret, v.registration?.accessToken);
|
|
306
|
+
if (typeof v.clientId === "string" && typeof v.clientSecret === "string") {
|
|
307
|
+
// as the token request sends it (both parts form-encoded), and as typed
|
|
308
|
+
const header = basicClientAuth(v.clientId, v.clientSecret);
|
|
309
|
+
for (const s of injectionSecrets({ headers: { a: header } }))
|
|
310
|
+
secrets.add(s);
|
|
311
|
+
pushBasic(v.clientId, v.clientSecret);
|
|
312
|
+
}
|
|
313
|
+
}
|
|
314
|
+
else if (typeof v.access_token === "string") {
|
|
315
|
+
push(v.access_token, v.refresh_token);
|
|
316
|
+
}
|
|
317
|
+
else {
|
|
318
|
+
push(v.token, v.password);
|
|
319
|
+
if (typeof v.username === "string" && typeof v.password === "string") {
|
|
320
|
+
pushBasic(v.username, v.password);
|
|
321
|
+
}
|
|
322
|
+
if (typeof v.headers === "object" && v.headers !== null) {
|
|
323
|
+
const headers = Object.fromEntries(Object.entries(v.headers).filter((e) => typeof e[1] === "string"));
|
|
324
|
+
for (const s of injectionSecrets({ headers }))
|
|
325
|
+
secrets.add(s);
|
|
326
|
+
}
|
|
327
|
+
}
|
|
328
|
+
}
|
|
329
|
+
return { secrets: [...secrets], clientId };
|
|
330
|
+
}
|
|
242
331
|
/** 只看与 auth.ownership 对应的那一条凭据是否存在(不解密);none 恒为 connected。 */
|
|
243
332
|
async status(orgId, connectorId, auth, accountId) {
|
|
244
333
|
if (auth.type === "none")
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import type { LocalizedName } from "@capybara-hq/plugin-sdk";
|
|
2
|
+
import type { KernelSchemaDb } from "../db/kernel-schema.js";
|
|
3
|
+
/**
|
|
4
|
+
* The display names of plugins, for naming their extensions' tools (`<display name> [<tool>]`,
|
|
5
|
+
* tool naming spec §7): the live catalog item's `displayName`, else the plugin name in both
|
|
6
|
+
* languages (a bootstrap or uploaded plugin without a catalog item, or one without a display name).
|
|
7
|
+
* Display only.
|
|
8
|
+
*/
|
|
9
|
+
export declare function pluginDisplayNames(db: KernelSchemaDb, names: readonly string[]): Promise<Map<string, LocalizedName>>;
|