@capybara-hq/kernel 0.1.0-rc.0 → 0.1.0-rc.10
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 +92 -8
- package/dist/admin/admin.controller.d.ts +52 -71
- package/dist/admin/admin.controller.js +117 -63
- package/dist/admin/admin.module.d.ts +3 -0
- package/dist/admin/admin.module.js +22 -0
- package/dist/admin/admin.schemas.d.ts +57 -0
- package/dist/admin/admin.schemas.js +50 -0
- package/dist/admin/extensions.controller.d.ts +47 -16
- package/dist/admin/extensions.controller.js +94 -23
- package/dist/admin/extensions.schemas.d.ts +7 -0
- package/dist/admin/extensions.schemas.js +10 -0
- package/dist/admin/limit-defaults.d.ts +20 -0
- package/dist/admin/limit-defaults.js +10 -0
- package/dist/admin/setup-lock.d.ts +16 -0
- package/dist/admin/setup-lock.js +47 -0
- package/dist/admin/setup.controller.d.ts +9 -9
- package/dist/admin/setup.controller.js +28 -26
- package/dist/admin/setup.service.d.ts +20 -28
- package/dist/admin/setup.service.js +65 -65
- package/dist/agents/agent-lookup.d.ts +72 -0
- package/dist/agents/agent-lookup.js +208 -0
- 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 +54 -169
- package/dist/agents/agents.controller.js +172 -37
- package/dist/agents/agents.module.d.ts +10 -0
- package/dist/agents/agents.module.js +71 -0
- package/dist/agents/agents.schemas.d.ts +389 -0
- package/dist/agents/agents.schemas.js +126 -0
- package/dist/agents/agents.service.d.ts +104 -76
- package/dist/agents/agents.service.js +509 -383
- package/dist/agents/definition.d.ts +133 -21
- package/dist/agents/definition.js +361 -41
- 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 +868 -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 +78 -6
- package/dist/agents/templates.controller.js +154 -8
- package/dist/agents/templates.d.ts +132 -30
- package/dist/agents/templates.js +500 -46
- package/dist/agents/templates.schemas.d.ts +20 -0
- package/dist/agents/templates.schemas.js +45 -0
- package/dist/app.d.ts +93 -0
- package/dist/app.js +150 -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 +77 -0
- package/dist/background/tasks.service.js +216 -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 +102 -52
- package/dist/catalog/admin-catalog.controller.js +222 -67
- package/dist/catalog/admin-catalog.schemas.d.ts +72 -0
- package/dist/catalog/admin-catalog.schemas.js +92 -0
- package/dist/catalog/catalog-content.d.ts +232 -0
- package/dist/catalog/catalog-content.js +367 -0
- package/dist/catalog/catalog-files.d.ts +41 -0
- package/dist/catalog/catalog-files.js +86 -0
- package/dist/catalog/catalog-import.module.d.ts +7 -0
- package/dist/catalog/catalog-import.module.js +60 -0
- package/dist/catalog/catalog-items.d.ts +290 -0
- package/dist/catalog/catalog-items.js +676 -0
- package/dist/catalog/catalog-scope.service.d.ts +260 -0
- package/dist/catalog/catalog-scope.service.js +1124 -0
- package/dist/catalog/catalog.module.d.ts +12 -0
- package/dist/catalog/catalog.module.js +81 -0
- package/dist/catalog/catalog.service.d.ts +141 -206
- package/dist/catalog/catalog.service.js +237 -528
- package/dist/catalog/claude/agents.js +15 -10
- package/dist/catalog/cli.d.ts +14 -3
- package/dist/catalog/cli.js +39 -32
- 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 +90 -0
- package/dist/catalog/component-scope.controller.js +234 -0
- package/dist/catalog/component-scope.schemas.d.ts +114 -0
- package/dist/catalog/component-scope.schemas.js +97 -0
- package/dist/catalog/component-scope.service.d.ts +327 -0
- package/dist/catalog/component-scope.service.js +990 -0
- package/dist/catalog/component-state.d.ts +188 -0
- package/dist/catalog/component-state.js +455 -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 +45 -0
- package/dist/catalog/job-ids.js +40 -0
- package/dist/catalog/jobs.d.ts +27 -0
- package/dist/catalog/jobs.js +70 -0
- package/dist/catalog/locks.d.ts +24 -0
- package/dist/catalog/locks.js +63 -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 +53 -44
- package/dist/catalog/marketplaces.controller.js +146 -51
- package/dist/catalog/marketplaces.schemas.d.ts +48 -0
- package/dist/catalog/marketplaces.schemas.js +53 -0
- package/dist/catalog/marketplaces.service.d.ts +136 -26
- package/dist/catalog/marketplaces.service.js +663 -281
- package/dist/catalog/org-catalog.controller.d.ts +115 -63
- package/dist/catalog/org-catalog.controller.js +207 -100
- package/dist/catalog/org-catalog.schemas.d.ts +88 -0
- package/dist/catalog/org-catalog.schemas.js +93 -0
- package/dist/catalog/org-catalog.service.d.ts +89 -216
- package/dist/catalog/org-catalog.service.js +431 -472
- 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 +113 -0
- package/dist/catalog/org-extension.controller.js +271 -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 +801 -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 +223 -0
- package/dist/catalog/platform-components.js +763 -0
- package/dist/catalog/platform-migration.d.ts +115 -0
- package/dist/catalog/platform-migration.js +582 -0
- package/dist/catalog/plugin-import.d.ts +270 -68
- package/dist/catalog/plugin-import.js +1004 -277
- package/dist/catalog/plugin-install.d.ts +251 -65
- package/dist/catalog/plugin-install.js +1128 -344
- package/dist/catalog/plugin-package.js +14 -1
- package/dist/catalog/plugin-upgrade.d.ts +301 -188
- package/dist/catalog/plugin-upgrade.js +1256 -1068
- package/dist/catalog/request-rules.d.ts +65 -0
- package/dist/catalog/request-rules.js +217 -0
- package/dist/catalog/requests.service.d.ts +205 -117
- package/dist/catalog/requests.service.js +612 -369
- 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 +118 -0
- package/dist/channels/actions.d.ts +6 -4
- package/dist/channels/actions.js +11 -4
- package/dist/channels/cards.d.ts +33 -11
- package/dist/channels/cards.js +96 -24
- package/dist/channels/channels.module.d.ts +40 -0
- package/dist/channels/channels.module.js +130 -0
- package/dist/channels/channels.schemas.d.ts +37 -0
- package/dist/channels/channels.schemas.js +38 -0
- package/dist/channels/connections.controller.d.ts +44 -37
- package/dist/channels/connections.controller.js +83 -38
- package/dist/channels/connections.service.d.ts +101 -30
- package/dist/channels/connections.service.js +380 -147
- package/dist/channels/inbound.d.ts +44 -38
- package/dist/channels/inbound.js +190 -44
- package/dist/channels/job-ids.d.ts +10 -0
- package/dist/channels/job-ids.js +10 -0
- package/dist/channels/jobs.d.ts +85 -0
- package/dist/channels/jobs.js +157 -0
- package/dist/channels/outbound.d.ts +71 -80
- package/dist/channels/outbound.js +219 -201
- package/dist/channels/phrases.d.ts +33 -2
- package/dist/channels/phrases.js +29 -1
- package/dist/channels/supervisor.d.ts +88 -46
- package/dist/channels/supervisor.js +230 -132
- package/dist/channels/threads.d.ts +34 -8
- package/dist/channels/threads.js +79 -13
- package/dist/channels/webhook.d.ts +20 -14
- package/dist/channels/webhook.js +51 -20
- package/dist/config/docs.js +5 -1
- package/dist/config/load.d.ts +3 -2
- package/dist/config/load.js +3 -2
- package/dist/config/nacos-source.js +11 -2
- package/dist/config/schema.d.ts +51 -3
- package/dist/config/schema.js +269 -27
- package/dist/conversations/access.d.ts +31 -0
- package/dist/conversations/access.js +110 -0
- package/dist/conversations/agent-tree.d.ts +46 -0
- package/dist/conversations/agent-tree.js +92 -0
- package/dist/conversations/artifacts.d.ts +11 -11
- package/dist/conversations/artifacts.js +36 -10
- package/dist/conversations/attachments.controller.d.ts +1 -1
- package/dist/conversations/attachments.controller.js +8 -6
- package/dist/conversations/attachments.module.d.ts +7 -0
- package/dist/conversations/attachments.module.js +25 -0
- package/dist/conversations/attachments.service.d.ts +60 -22
- package/dist/conversations/attachments.service.js +249 -51
- package/dist/conversations/conversations.controller.d.ts +86 -50
- package/dist/conversations/conversations.controller.js +184 -103
- package/dist/conversations/conversations.module.d.ts +8 -0
- package/dist/conversations/conversations.module.js +72 -0
- package/dist/conversations/conversations.schemas.d.ts +52 -0
- package/dist/conversations/conversations.schemas.js +79 -0
- package/dist/conversations/conversations.service.d.ts +166 -49
- package/dist/conversations/conversations.service.js +383 -179
- package/dist/conversations/environment-status.d.ts +24 -0
- package/dist/conversations/environment-status.js +71 -0
- package/dist/conversations/event-log.d.ts +64 -27
- package/dist/conversations/event-log.js +167 -31
- package/dist/conversations/events.d.ts +252 -9
- package/dist/conversations/events.js +243 -32
- package/dist/conversations/files.d.ts +10 -10
- package/dist/conversations/files.js +37 -11
- package/dist/conversations/idem-keys.d.ts +5 -0
- package/dist/conversations/idem-keys.js +5 -0
- package/dist/conversations/job-ids.d.ts +6 -0
- package/dist/conversations/job-ids.js +6 -0
- package/dist/conversations/message-context.d.ts +79 -0
- package/dist/conversations/message-context.js +145 -0
- package/dist/conversations/outputs-read.d.ts +11 -11
- package/dist/conversations/outputs-read.js +31 -7
- package/dist/conversations/queue.d.ts +53 -58
- package/dist/conversations/queue.js +37 -293
- package/dist/conversations/queue.service.d.ts +60 -0
- package/dist/conversations/queue.service.js +350 -0
- package/dist/conversations/titles.d.ts +83 -27
- package/dist/conversations/titles.js +195 -70
- package/dist/conversations/tree.d.ts +17 -0
- package/dist/conversations/tree.js +42 -0
- package/dist/ctx/bus.js +9 -3
- package/dist/ctx/create-ctx.d.ts +26 -1
- package/dist/ctx/create-ctx.js +45 -16
- package/dist/ctx/lock.d.ts +7 -3
- package/dist/ctx/lock.js +9 -20
- package/dist/ctx/queue.js +3 -2
- package/dist/ctx/secrets.d.ts +10 -2
- package/dist/ctx/secrets.js +7 -3
- package/dist/db/kernel-schema.d.ts +550 -25
- package/dist/db/pool.d.ts +10 -0
- package/dist/db/pool.js +4 -0
- package/dist/devices/device-auth.controller.d.ts +42 -0
- package/dist/devices/device-auth.controller.js +116 -0
- package/dist/devices/device-auth.d.ts +119 -0
- package/dist/devices/device-auth.js +403 -0
- package/dist/devices/device-auth.module.d.ts +7 -0
- package/dist/devices/device-auth.module.js +25 -0
- package/dist/devices/device-gateway.d.ts +128 -0
- package/dist/devices/device-gateway.js +530 -0
- package/dist/devices/device-provider.d.ts +89 -0
- package/dist/devices/device-provider.js +151 -0
- package/dist/devices/device-routes.d.ts +36 -0
- package/dist/devices/device-routes.js +90 -0
- package/dist/devices/devices.module.d.ts +16 -0
- package/dist/devices/devices.module.js +44 -0
- package/dist/devices/dto.d.ts +66 -0
- package/dist/devices/dto.js +44 -0
- package/dist/devices/keys.d.ts +25 -0
- package/dist/devices/keys.js +25 -0
- package/dist/devices/machines.d.ts +118 -0
- package/dist/devices/machines.js +366 -0
- package/dist/devices/relay.d.ts +100 -0
- package/dist/devices/relay.js +373 -0
- package/dist/devices/targets.d.ts +28 -0
- package/dist/devices/targets.js +73 -0
- package/dist/environments/access.d.ts +66 -0
- package/dist/environments/access.js +113 -0
- package/dist/environments/conversation-environments.d.ts +75 -0
- package/dist/environments/conversation-environments.js +231 -0
- package/dist/environments/dto.d.ts +25 -0
- package/dist/environments/dto.js +12 -0
- package/dist/environments/environments.controller.d.ts +36 -0
- package/dist/environments/environments.controller.js +124 -0
- package/dist/environments/environments.module.d.ts +8 -0
- package/dist/environments/environments.module.js +31 -0
- package/dist/environments/environments.schemas.d.ts +3 -0
- package/dist/environments/environments.schemas.js +14 -0
- package/dist/environments/environments.service.d.ts +251 -0
- package/dist/environments/environments.service.js +791 -0
- package/dist/environments/label.d.ts +11 -0
- package/dist/environments/label.js +25 -0
- package/dist/environments/legacy-cleanup.job.d.ts +34 -0
- package/dist/environments/legacy-cleanup.job.js +141 -0
- package/dist/errors.d.ts +136 -2
- package/dist/errors.js +136 -2
- package/dist/evals/budget.d.ts +42 -21
- package/dist/evals/budget.js +114 -62
- package/dist/evals/evals.module.d.ts +31 -0
- package/dist/evals/evals.module.js +114 -0
- package/dist/evals/evals.schemas.d.ts +110 -0
- package/dist/evals/evals.schemas.js +107 -0
- package/dist/evals/jobs.d.ts +20 -0
- package/dist/evals/jobs.js +45 -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 +75 -10
- package/dist/evals/run-replay.js +218 -94
- package/dist/evals/runs.controller.d.ts +3 -58
- package/dist/evals/runs.controller.js +18 -50
- package/dist/evals/runs.service.d.ts +31 -52
- package/dist/evals/runs.service.js +281 -255
- package/dist/evals/sets.controller.d.ts +3 -29
- package/dist/evals/sets.controller.js +18 -39
- package/dist/evals/sets.service.d.ts +29 -13
- package/dist/evals/sets.service.js +262 -202
- package/dist/evals/snapshot.d.ts +5 -4
- package/dist/evals/snapshot.js +17 -4
- package/dist/evals/step-replay.d.ts +6 -8
- package/dist/evals/step-replay.js +17 -10
- package/dist/evals/trajectory.controller.d.ts +1 -1
- package/dist/evals/trajectory.controller.js +11 -7
- package/dist/evals/trajectory.d.ts +2 -2
- package/dist/evals/trajectory.js +1 -1
- package/dist/evals/trajectory.service.d.ts +13 -7
- package/dist/evals/trajectory.service.js +56 -21
- package/dist/evals/worker.d.ts +48 -31
- package/dist/evals/worker.js +229 -123
- package/dist/extensions/admin-ops.d.ts +133 -41
- package/dist/extensions/admin-ops.js +378 -172
- package/dist/extensions/admin-view.d.ts +82 -32
- package/dist/extensions/admin-view.js +284 -71
- package/dist/extensions/approvals.d.ts +24 -10
- package/dist/extensions/approvals.js +73 -46
- package/dist/extensions/blobs.d.ts +27 -10
- package/dist/extensions/blobs.js +112 -45
- package/dist/extensions/bootstrap.d.ts +136 -46
- package/dist/extensions/bootstrap.js +417 -167
- package/dist/extensions/cli.d.ts +32 -10
- package/dist/extensions/cli.js +52 -98
- package/dist/extensions/config-hash.d.ts +10 -0
- package/dist/extensions/config-hash.js +38 -0
- package/dist/extensions/config-issues.d.ts +19 -0
- package/dist/extensions/config-issues.js +48 -0
- 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 +55 -0
- package/dist/extensions/deployment-config-store.js +133 -0
- package/dist/extensions/deployment-config.d.ts +146 -70
- package/dist/extensions/deployment-config.js +439 -246
- package/dist/extensions/display-name.d.ts +22 -0
- package/dist/extensions/display-name.js +77 -0
- package/dist/extensions/effective-config.d.ts +127 -0
- package/dist/extensions/effective-config.js +368 -0
- package/dist/extensions/enabled.d.ts +5 -5
- package/dist/extensions/extensions.module.d.ts +8 -0
- package/dist/extensions/extensions.module.js +96 -0
- package/dist/extensions/hooks.d.ts +40 -6
- package/dist/extensions/hooks.js +83 -17
- package/dist/extensions/host.d.ts +161 -80
- package/dist/extensions/host.js +505 -213
- package/dist/extensions/installs.d.ts +73 -19
- package/dist/extensions/installs.js +174 -37
- package/dist/extensions/job-ids.d.ts +6 -0
- package/dist/extensions/job-ids.js +6 -0
- package/dist/extensions/lifecycle-topics.d.ts +18 -0
- package/dist/extensions/lifecycle-topics.js +18 -0
- package/dist/extensions/lifecycle.d.ts +35 -47
- package/dist/extensions/lifecycle.js +103 -39
- package/dist/extensions/locks.d.ts +45 -0
- package/dist/extensions/locks.js +112 -0
- package/dist/extensions/migrate-lock.d.ts +3 -4
- package/dist/extensions/org-config.d.ts +141 -49
- package/dist/extensions/org-config.js +471 -243
- 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 +14 -1
- package/dist/extensions/package.js +51 -2
- package/dist/extensions/permission-view.d.ts +59 -6
- package/dist/extensions/permission-view.js +7 -5
- package/dist/extensions/plugin-guides.d.ts +129 -0
- package/dist/extensions/plugin-guides.js +283 -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 +50 -2
- package/dist/extensions/registry.js +91 -4
- 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 +19 -10
- package/dist/extensions/sources.js +34 -13
- package/dist/extensions/state.module.d.ts +9 -0
- package/dist/extensions/state.module.js +38 -0
- package/dist/extensions/unavailable.d.ts +50 -0
- package/dist/extensions/unavailable.js +115 -0
- package/dist/files/files.module.d.ts +3 -0
- package/dist/files/files.module.js +22 -0
- package/dist/files/previewers.controller.d.ts +7 -2
- package/dist/files/previewers.controller.js +19 -12
- package/dist/files/previewers.d.ts +21 -19
- package/dist/files/previewers.js +114 -38
- package/dist/files/previewers.schemas.d.ts +10 -0
- package/dist/files/previewers.schemas.js +9 -0
- package/dist/http/adapter.d.ts +3 -0
- package/dist/http/adapter.js +25 -0
- package/dist/http/api.module.d.ts +3 -110
- package/dist/http/api.module.js +86 -358
- package/dist/http/app.d.ts +22 -17
- package/dist/http/app.js +83 -52
- package/dist/http/error-filter.module.d.ts +5 -0
- package/dist/http/error-filter.module.js +18 -0
- package/dist/http/error.filter.js +2 -2
- package/dist/http/{gateway.module.d.ts → gateway-routes.d.ts} +7 -3
- package/dist/http/gateway-routes.js +16 -0
- 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 +130 -38
- package/dist/identity/accounts.js +373 -186
- package/dist/identity/api-tokens.d.ts +11 -7
- package/dist/identity/api-tokens.js +71 -44
- package/dist/identity/audit.d.ts +9 -5
- package/dist/identity/audit.js +5 -1
- package/dist/identity/auth.controller.d.ts +11 -10
- package/dist/identity/auth.controller.js +40 -30
- package/dist/identity/auth.guard.d.ts +16 -8
- package/dist/identity/auth.guard.js +41 -13
- package/dist/identity/binding.d.ts +9 -11
- package/dist/identity/binding.js +41 -13
- package/dist/identity/cookies.d.ts +26 -5
- package/dist/identity/cookies.js +58 -6
- package/dist/identity/external-identity-lock.d.ts +17 -0
- package/dist/identity/external-identity-lock.js +39 -0
- package/dist/identity/external.d.ts +19 -15
- package/dist/identity/external.js +163 -125
- package/dist/identity/identity.module.d.ts +6 -0
- package/dist/identity/identity.module.js +59 -0
- 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 +32 -15
- package/dist/identity/me.controller.js +78 -33
- package/dist/identity/me.schemas.d.ts +14 -0
- package/dist/identity/me.schemas.js +17 -0
- package/dist/identity/principal.d.ts +11 -3
- package/dist/identity/principal.js +11 -3
- package/dist/identity/sessions.d.ts +24 -10
- package/dist/identity/sessions.js +119 -42
- package/dist/identity/settings.d.ts +42 -23
- package/dist/identity/settings.js +137 -72
- package/dist/identity/sso.controller.d.ts +7 -7
- package/dist/identity/sso.controller.js +13 -9
- package/dist/identity/sso.d.ts +9 -12
- package/dist/identity/sso.js +54 -24
- package/dist/identity/super-admin.d.ts +20 -0
- package/dist/identity/super-admin.js +81 -0
- package/dist/inbox/inbox.module.d.ts +6 -0
- package/dist/inbox/inbox.module.js +26 -0
- package/dist/inbox/inbox.schemas.d.ts +8 -0
- package/dist/inbox/inbox.schemas.js +11 -0
- package/dist/inbox/inbox.service.d.ts +68 -11
- package/dist/inbox/inbox.service.js +104 -13
- 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 +151 -0
- package/dist/inbox/platform-inbox.service.js +263 -0
- package/dist/inbox/platform-notices.d.ts +19 -0
- package/dist/inbox/platform-notices.js +9 -0
- package/dist/index.d.ts +25 -14
- package/dist/index.js +20 -9
- package/dist/infra/cache/cache.module.d.ts +3 -0
- package/dist/infra/cache/cache.module.js +16 -0
- package/dist/infra/cache/cache.service.d.ts +21 -0
- package/dist/infra/cache/cache.service.js +80 -0
- package/dist/infra/cache/cacheable.decorator.d.ts +32 -0
- package/dist/infra/cache/cacheable.decorator.js +83 -0
- package/dist/infra/cli/kernel-cli.module.d.ts +66 -0
- package/dist/infra/cli/kernel-cli.module.js +173 -0
- package/dist/infra/close-within.d.ts +15 -0
- package/dist/infra/close-within.js +36 -0
- package/dist/infra/config/config.module.d.ts +13 -0
- package/dist/infra/config/config.module.js +39 -0
- package/dist/infra/config/kernel-config.service.d.ts +25 -0
- package/dist/infra/config/kernel-config.service.js +157 -0
- package/dist/infra/database/after-commit.d.ts +6 -0
- package/dist/infra/database/after-commit.js +9 -0
- package/dist/infra/database/database.module.d.ts +25 -0
- package/dist/infra/database/database.module.js +91 -0
- package/dist/infra/database/kernel-db.d.ts +22 -0
- package/dist/infra/database/kernel-db.js +65 -0
- package/dist/infra/database/transaction-host.d.ts +50 -0
- package/dist/infra/database/transaction-host.js +125 -0
- package/dist/infra/database/transactional.decorator.d.ts +15 -0
- package/dist/infra/database/transactional.decorator.js +27 -0
- package/dist/infra/database/xact-lock.d.ts +17 -0
- package/dist/infra/database/xact-lock.js +43 -0
- package/dist/infra/events/kernel-events.d.ts +121 -0
- package/dist/infra/events/kernel-events.js +65 -0
- package/dist/infra/health/health.controller.d.ts +26 -0
- package/dist/infra/health/health.controller.js +104 -0
- package/dist/infra/health/health.module.d.ts +9 -0
- package/dist/infra/health/health.module.js +24 -0
- package/dist/infra/health/health.options.d.ts +10 -0
- package/dist/infra/health/health.options.js +15 -0
- package/dist/infra/health/shutdown-state.d.ts +6 -0
- package/dist/infra/health/shutdown-state.js +2 -0
- package/dist/infra/lifecycle/graceful-shutdown.module.d.ts +6 -0
- package/dist/infra/lifecycle/graceful-shutdown.module.js +23 -0
- package/dist/infra/lifecycle/graceful-shutdown.service.d.ts +70 -0
- package/dist/infra/lifecycle/graceful-shutdown.service.js +135 -0
- package/dist/infra/lifecycle/process-guards.d.ts +52 -0
- package/dist/infra/lifecycle/process-guards.js +90 -0
- package/dist/infra/lifecycle/shutdown-signals.d.ts +30 -0
- package/dist/infra/lifecycle/shutdown-signals.js +48 -0
- package/dist/infra/lock/key-template.d.ts +13 -0
- package/dist/infra/lock/key-template.js +46 -0
- package/dist/infra/lock/lock.module.d.ts +3 -0
- package/dist/infra/lock/lock.module.js +16 -0
- package/dist/infra/lock/lock.service.d.ts +120 -0
- package/dist/infra/lock/lock.service.js +343 -0
- package/dist/infra/lock/shared-lease.d.ts +44 -0
- package/dist/infra/lock/shared-lease.js +121 -0
- package/dist/infra/lock/with-lock.decorator.d.ts +28 -0
- package/dist/infra/lock/with-lock.decorator.js +49 -0
- package/dist/infra/logging/logging.module.d.ts +18 -0
- package/dist/infra/logging/logging.module.js +52 -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/configured-processor.d.ts +18 -0
- package/dist/infra/queue/configured-processor.js +23 -0
- package/dist/infra/queue/job-failure.d.ts +18 -0
- package/dist/infra/queue/job-failure.js +26 -0
- package/dist/infra/queue/queue-shutdown.d.ts +27 -0
- package/dist/infra/queue/queue-shutdown.js +81 -0
- package/dist/infra/queue/queue.module.d.ts +16 -0
- package/dist/infra/queue/queue.module.js +61 -0
- package/dist/infra/queue/redis-connection.d.ts +13 -0
- package/dist/infra/queue/redis-connection.js +25 -0
- package/dist/infra/queue/retired-schedulers.d.ts +7 -0
- package/dist/infra/queue/retired-schedulers.js +9 -0
- package/dist/infra/queue/run-job.d.ts +16 -0
- package/dist/infra/queue/run-job.js +19 -0
- package/dist/infra/redis/redis.module.d.ts +24 -0
- package/dist/infra/redis/redis.module.js +91 -0
- package/dist/infra/schedule/cron-tick.d.ts +12 -0
- package/dist/infra/schedule/cron-tick.js +25 -0
- package/dist/infra/schedule/locked-cron.decorator.d.ts +27 -0
- package/dist/infra/schedule/locked-cron.decorator.js +53 -0
- package/dist/infra/schedule/locked-interval.d.ts +69 -0
- package/dist/infra/schedule/locked-interval.js +190 -0
- package/dist/infra/schedule/locked-tick.d.ts +90 -0
- package/dist/infra/schedule/locked-tick.js +137 -0
- package/dist/infra/schedule/schedule.module.d.ts +8 -0
- package/dist/infra/schedule/schedule.module.js +27 -0
- package/dist/infra/schedule/scheduled-runs.d.ts +69 -0
- package/dist/infra/schedule/scheduled-runs.js +163 -0
- package/dist/infra/swagger/swagger.d.ts +16 -0
- package/dist/infra/swagger/swagger.js +31 -0
- package/dist/infra/throttler/credential-throttler.d.ts +35 -0
- package/dist/infra/throttler/credential-throttler.js +77 -0
- package/dist/infra/throttler/named-throttlers.d.ts +36 -0
- package/dist/infra/throttler/named-throttlers.js +157 -0
- package/dist/infra/throttler/redis-throttler-storage.d.ts +38 -0
- package/dist/infra/throttler/redis-throttler-storage.js +130 -0
- package/dist/infra/throttler/throttler.guard.d.ts +23 -0
- package/dist/infra/throttler/throttler.guard.js +68 -0
- package/dist/infra/throttler/throttler.module.d.ts +15 -0
- package/dist/infra/throttler/throttler.module.js +53 -0
- package/dist/infra/tokens.d.ts +20 -0
- package/dist/infra/tokens.js +20 -0
- package/dist/infra/validation/create-zod-dto.d.ts +23 -0
- package/dist/infra/validation/create-zod-dto.js +35 -0
- package/dist/infra/validation/parse-with-zod.d.ts +7 -0
- package/dist/infra/validation/parse-with-zod.js +12 -0
- package/dist/infra/validation/validation.module.d.ts +3 -0
- package/dist/infra/validation/validation.module.js +16 -0
- package/dist/infra/validation/zod-params.d.ts +7 -0
- package/dist/infra/validation/zod-params.js +42 -0
- package/dist/infra/validation/zod-validation.pipe.d.ts +11 -0
- package/dist/infra/validation/zod-validation.pipe.js +31 -0
- package/dist/kernel.d.ts +9 -241
- package/dist/kernel.js +8 -1305
- package/dist/kernel.module.d.ts +17 -0
- package/dist/kernel.module.js +145 -0
- package/dist/lifecycle/kernel-lifecycle.d.ts +140 -0
- package/dist/lifecycle/kernel-lifecycle.js +465 -0
- package/dist/lifecycle/tokens.d.ts +3 -0
- package/dist/lifecycle/tokens.js +3 -0
- package/dist/log-config.d.ts +9 -0
- package/dist/log-config.js +27 -0
- package/dist/log-context.d.ts +34 -0
- package/dist/log-context.js +44 -0
- package/dist/log-loki.d.ts +34 -0
- package/dist/log-loki.js +145 -0
- package/dist/log.d.ts +53 -10
- package/dist/log.js +168 -18
- 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 +7 -0
- package/dist/models/models.module.js +36 -0
- 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 +13 -5
- package/dist/models/prices.js +69 -39
- package/dist/models/purposes.controller.d.ts +6 -4
- package/dist/models/purposes.controller.js +16 -11
- package/dist/models/purposes.d.ts +103 -23
- package/dist/models/purposes.js +208 -77
- package/dist/net/public-address.js +3 -2
- package/dist/orgs/directory-sync.controller.d.ts +1 -1
- package/dist/orgs/directory-sync.controller.js +2 -2
- package/dist/orgs/directory-sync.d.ts +74 -35
- package/dist/orgs/directory-sync.js +243 -132
- package/dist/orgs/invitations.controller.d.ts +8 -8
- package/dist/orgs/invitations.controller.js +27 -26
- package/dist/orgs/invitations.service.d.ts +12 -9
- package/dist/orgs/invitations.service.js +130 -92
- package/dist/orgs/job-ids.d.ts +8 -0
- package/dist/orgs/job-ids.js +8 -0
- package/dist/orgs/members.service.d.ts +19 -12
- package/dist/orgs/members.service.js +161 -117
- package/dist/orgs/offboarding.d.ts +61 -60
- package/dist/orgs/offboarding.js +206 -95
- package/dist/orgs/org-lock.d.ts +33 -19
- package/dist/orgs/org-lock.js +94 -35
- package/dist/orgs/org.guard.d.ts +11 -1
- package/dist/orgs/org.guard.js +45 -34
- package/dist/orgs/orgs.controller.d.ts +13 -16
- package/dist/orgs/orgs.controller.js +29 -20
- package/dist/orgs/orgs.module.d.ts +6 -0
- package/dist/orgs/orgs.module.js +71 -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 +47 -21
- package/dist/orgs/orgs.service.js +166 -91
- package/dist/orgs/roles.d.ts +1 -1
- package/dist/orgs/roles.js +5 -1
- package/dist/orgs/settings.controller.d.ts +2 -2
- package/dist/orgs/settings.controller.js +8 -6
- package/dist/orgs/settings.service.d.ts +45 -14
- package/dist/orgs/settings.service.js +110 -51
- package/dist/overrides.d.ts +63 -0
- package/dist/overrides.js +34 -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 +667 -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 +90 -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.ops.d.ts +36 -0
- package/dist/platform/ops/admin.ops.js +389 -0
- package/dist/platform/ops/agent-skills.ops.d.ts +24 -0
- package/dist/platform/ops/agent-skills.ops.js +226 -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 +717 -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 +74 -0
- package/dist/platform/ops/catalog-admin.ops.js +599 -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 +853 -0
- package/dist/platform/ops/connectors.ops.d.ts +17 -0
- package/dist/platform/ops/connectors.ops.js +188 -0
- package/dist/platform/ops/conversations.ops.d.ts +30 -0
- package/dist/platform/ops/conversations.ops.js +470 -0
- package/dist/platform/ops/environments.ops.d.ts +26 -0
- package/dist/platform/ops/environments.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 +378 -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 +29 -0
- package/dist/platform/ops/org-plugins.ops.js +329 -0
- package/dist/platform/ops/org-settings.ops.d.ts +16 -0
- package/dist/platform/ops/org-settings.ops.js +102 -0
- package/dist/platform/ops/orgs.ops.d.ts +28 -0
- package/dist/platform/ops/orgs.ops.js +295 -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 +28 -0
- package/dist/platform/ops/platform.ops.js +204 -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/skills.ops.d.ts +17 -0
- package/dist/platform/ops/skills.ops.js +216 -0
- package/dist/platform/ops/summary.d.ts +10 -0
- package/dist/platform/ops/summary.js +18 -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 +39 -0
- package/dist/platform/platform-ops.module.js +122 -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 +63 -0
- package/dist/roles/gateway-role.d.ts +54 -0
- package/dist/roles/gateway-role.js +118 -0
- package/dist/roles/gateway.module.d.ts +9 -0
- package/dist/roles/gateway.module.js +31 -0
- package/dist/roles/worker-role.d.ts +65 -0
- package/dist/roles/worker-role.js +151 -0
- package/dist/roles/worker.module.d.ts +14 -0
- package/dist/roles/worker.module.js +106 -0
- package/dist/runtime/abort.js +19 -2
- package/dist/runtime/checkpointer.d.ts +8 -3
- package/dist/runtime/checkpointer.js +87 -55
- 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/environment-paths.d.ts +40 -0
- package/dist/runtime/context/environment-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/conversation-lock.d.ts +20 -11
- package/dist/runtime/conversation-lock.js +62 -72
- package/dist/runtime/hook-calls.d.ts +11 -4
- package/dist/runtime/hook-calls.js +41 -13
- package/dist/runtime/job-ids.d.ts +10 -0
- package/dist/runtime/job-ids.js +10 -0
- package/dist/runtime/langgraph-loop.d.ts +3 -1
- package/dist/runtime/langgraph-loop.js +37 -18
- package/dist/runtime/loop.d.ts +42 -6
- package/dist/runtime/loop.js +14 -0
- package/dist/runtime/maintenance-queue.d.ts +10 -0
- package/dist/runtime/maintenance-queue.js +10 -0
- package/dist/runtime/maintenance.d.ts +50 -74
- package/dist/runtime/maintenance.js +166 -136
- package/dist/runtime/model-call.d.ts +61 -15
- package/dist/runtime/model-call.js +128 -84
- package/dist/runtime/providers.d.ts +158 -27
- package/dist/runtime/providers.js +373 -63
- package/dist/runtime/quota.d.ts +17 -3
- package/dist/runtime/quota.js +27 -2
- package/dist/runtime/retired-schedulers.d.ts +7 -0
- package/dist/runtime/retired-schedulers.js +31 -0
- 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 +43 -0
- package/dist/runtime/run-control.js +89 -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 +27 -18
- package/dist/runtime/run-finish.js +98 -51
- package/dist/runtime/run-jobs.d.ts +46 -0
- package/dist/runtime/run-jobs.js +91 -0
- package/dist/runtime/run-processors.d.ts +60 -0
- package/dist/runtime/run-processors.js +185 -0
- package/dist/runtime/run-queue.d.ts +90 -58
- package/dist/runtime/run-queue.js +566 -297
- package/dist/runtime/run-steps.d.ts +39 -0
- package/dist/runtime/run-steps.js +96 -0
- package/dist/runtime/run-worker.d.ts +134 -77
- package/dist/runtime/run-worker.js +412 -236
- package/dist/runtime/runtime.module.d.ts +10 -0
- package/dist/runtime/runtime.module.js +122 -0
- package/dist/runtime/step-log.d.ts +51 -0
- package/dist/runtime/step-log.js +111 -0
- package/dist/runtime/stream.controller.d.ts +28 -9
- package/dist/runtime/stream.controller.js +72 -13
- package/dist/runtime/stream.d.ts +27 -6
- package/dist/runtime/stream.js +102 -7
- package/dist/runtime/subagents/child.d.ts +58 -51
- package/dist/runtime/subagents/child.js +105 -86
- package/dist/runtime/subagents/definition.d.ts +32 -28
- package/dist/runtime/subagents/definition.js +89 -143
- package/dist/runtime/subagents/deliveries.d.ts +71 -0
- package/dist/runtime/subagents/deliveries.js +228 -0
- package/dist/runtime/subagents/dispatch.d.ts +197 -27
- package/dist/runtime/subagents/dispatch.js +336 -270
- package/dist/runtime/subagents/limits.d.ts +32 -8
- package/dist/runtime/subagents/limits.js +44 -8
- package/dist/runtime/subagents/messages.d.ts +95 -0
- package/dist/runtime/subagents/messages.js +328 -0
- package/dist/runtime/subagents/org-agents.d.ts +4 -4
- package/dist/runtime/subagents/org-agents.js +3 -2
- package/dist/runtime/subagents/preamble.d.ts +4 -4
- package/dist/runtime/subagents/preamble.js +9 -7
- package/dist/runtime/subagents/progress.d.ts +10 -8
- 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 +27 -10
- package/dist/runtime/subagents/roster.js +49 -13
- package/dist/runtime/subagents/skill-fork.d.ts +10 -10
- package/dist/runtime/subagents/skill-fork.js +23 -8
- 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 +43 -0
- package/dist/runtime/subagents/subagents.service.js +106 -0
- 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 +121 -83
- package/dist/runtime/usage-report.js +355 -180
- package/dist/runtime/waits.d.ts +258 -81
- package/dist/runtime/waits.js +800 -263
- package/dist/sandbox/job-ids.d.ts +10 -0
- package/dist/sandbox/job-ids.js +10 -0
- package/dist/sandbox/jobs.d.ts +68 -0
- package/dist/sandbox/jobs.js +150 -0
- package/dist/sandbox/leases.d.ts +73 -82
- package/dist/sandbox/leases.js +162 -346
- package/dist/sandbox/providers.d.ts +46 -0
- package/dist/sandbox/providers.js +83 -0
- package/dist/sandbox/sandbox.module.d.ts +9 -0
- package/dist/sandbox/sandbox.module.js +36 -0
- package/dist/sandbox/sandbox.service.d.ts +359 -151
- package/dist/sandbox/sandbox.service.js +950 -435
- package/dist/sandbox/unreachable.d.ts +30 -0
- package/dist/sandbox/unreachable.js +108 -0
- package/dist/skills/catalog.d.ts +40 -26
- package/dist/skills/catalog.js +120 -99
- package/dist/skills/changes.controller.d.ts +11 -4
- package/dist/skills/changes.controller.js +34 -9
- package/dist/skills/changes.service.d.ts +31 -21
- package/dist/skills/changes.service.js +426 -368
- package/dist/skills/invocable.controller.d.ts +2 -2
- package/dist/skills/invocable.controller.js +10 -7
- package/dist/skills/invocation-keys.d.ts +1 -1
- package/dist/skills/invocation-keys.js +1 -1
- package/dist/skills/invoke.d.ts +19 -18
- package/dist/skills/invoke.js +68 -24
- package/dist/skills/package.d.ts +20 -1
- package/dist/skills/package.js +28 -1
- package/dist/skills/skills.controller.d.ts +33 -7
- package/dist/skills/skills.controller.js +79 -12
- package/dist/skills/skills.module.d.ts +6 -0
- package/dist/skills/skills.module.js +39 -0
- package/dist/skills/skills.schemas.d.ts +48 -0
- package/dist/skills/skills.schemas.js +61 -0
- package/dist/skills/skills.service.d.ts +151 -44
- package/dist/skills/skills.service.js +636 -204
- package/dist/skills/usable.d.ts +81 -0
- package/dist/skills/usable.js +379 -0
- package/dist/storage/job-ids.d.ts +6 -0
- package/dist/storage/job-ids.js +6 -0
- package/dist/storage/purge.d.ts +22 -7
- package/dist/storage/purge.js +55 -3
- package/dist/storage/storage.module.d.ts +6 -0
- package/dist/storage/storage.module.js +23 -0
- package/dist/storage/storage.service.d.ts +18 -4
- package/dist/storage/storage.service.js +44 -3
- package/dist/time-zone.d.ts +5 -0
- package/dist/time-zone.js +19 -0
- package/dist/tools/approvals.controller.d.ts +1 -1
- package/dist/tools/approvals.controller.js +14 -11
- package/dist/tools/approvals.schemas.d.ts +21 -0
- package/dist/tools/approvals.schemas.js +15 -0
- package/dist/tools/approvals.service.d.ts +53 -27
- package/dist/tools/approvals.service.js +365 -260
- package/dist/tools/breaker.d.ts +2 -2
- package/dist/tools/breaker.js +21 -3
- package/dist/tools/builtin-names.d.ts +109 -0
- package/dist/tools/builtin-names.js +173 -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 +3 -3
- package/dist/tools/builtins/ask-user.js +3 -3
- package/dist/tools/builtins/builtin-tools.d.ts +41 -0
- package/dist/tools/builtins/builtin-tools.js +151 -0
- 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 +3 -3
- package/dist/tools/builtins/read-tool-output.js +3 -3
- package/dist/tools/builtins/sandbox/bash.d.ts +5 -5
- package/dist/tools/builtins/sandbox/bash.js +293 -41
- package/dist/tools/builtins/sandbox/common.d.ts +142 -40
- package/dist/tools/builtins/sandbox/common.js +227 -65
- package/dist/tools/builtins/sandbox/deliver.d.ts +1 -1
- package/dist/tools/builtins/sandbox/deliver.js +21 -18
- package/dist/tools/builtins/sandbox/edit.d.ts +1 -1
- package/dist/tools/builtins/sandbox/edit.js +65 -51
- 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 +19 -14
- package/dist/tools/builtins/sandbox/grep.d.ts +7 -4
- package/dist/tools/builtins/sandbox/grep.js +155 -36
- 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 +30 -20
- 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 +52 -45
- 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 +32 -21
- package/dist/tools/builtins/skill-load.js +125 -74
- package/dist/tools/builtins/skill-write.d.ts +4 -4
- package/dist/tools/builtins/skill-write.js +12 -12
- 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/canonical-json.d.ts +6 -0
- package/dist/tools/canonical-json.js +16 -0
- package/dist/tools/connector-content.controller.d.ts +1 -1
- package/dist/tools/connector-content.controller.js +11 -6
- package/dist/tools/connector-content.d.ts +12 -15
- package/dist/tools/connector-content.js +53 -18
- package/dist/tools/connectors.controller.d.ts +16 -3
- package/dist/tools/connectors.controller.js +34 -14
- package/dist/tools/connectors.schemas.d.ts +12 -0
- package/dist/tools/connectors.schemas.js +19 -0
- package/dist/tools/connectors.service.d.ts +80 -18
- package/dist/tools/connectors.service.js +529 -358
- package/dist/tools/credentials.d.ts +20 -20
- package/dist/tools/credentials.js +55 -34
- package/dist/tools/display-names.d.ts +9 -0
- package/dist/tools/display-names.js +24 -0
- package/dist/tools/drift.d.ts +29 -41
- package/dist/tools/drift.js +116 -84
- 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 +73 -13
- package/dist/tools/info.js +151 -39
- package/dist/tools/job-ids.d.ts +13 -0
- package/dist/tools/job-ids.js +15 -0
- package/dist/tools/jobs.d.ts +24 -0
- package/dist/tools/jobs.js +69 -0
- 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 +115 -0
- package/dist/tools/naming.d.ts +1 -5
- package/dist/tools/naming.js +1 -7
- package/dist/tools/oauth/flow-paths.d.ts +16 -0
- package/dist/tools/oauth/flow-paths.js +38 -0
- package/dist/tools/oauth/flow.d.ts +30 -30
- package/dist/tools/oauth/flow.js +109 -81
- package/dist/tools/oauth/oauth.controller.d.ts +3 -3
- package/dist/tools/oauth/oauth.controller.js +12 -9
- package/dist/tools/oauth/tokens.d.ts +45 -10
- package/dist/tools/oauth/tokens.js +70 -24
- package/dist/tools/org-tool-switches.d.ts +88 -0
- package/dist/tools/org-tool-switches.js +201 -0
- package/dist/tools/outputs.d.ts +13 -4
- package/dist/tools/outputs.js +48 -4
- package/dist/tools/pipeline.d.ts +108 -80
- package/dist/tools/pipeline.js +396 -409
- package/dist/tools/policy.d.ts +4 -17
- package/dist/tools/policy.js +49 -35
- package/dist/tools/questions.controller.d.ts +2 -2
- package/dist/tools/questions.controller.js +9 -6
- package/dist/tools/questions.service.d.ts +26 -25
- package/dist/tools/questions.service.js +201 -142
- package/dist/tools/registry.d.ts +215 -84
- package/dist/tools/registry.js +382 -264
- package/dist/tools/resources.d.ts +1 -1
- package/dist/tools/resources.js +1 -1
- package/dist/tools/specs.d.ts +5 -4
- package/dist/tools/specs.js +3 -1
- package/dist/tools/tools.module.d.ts +10 -0
- package/dist/tools/tools.module.js +113 -0
- package/dist/tools/validate.js +1 -1
- package/dist/ui/call-extension.d.ts +16 -0
- package/dist/ui/call-extension.js +38 -0
- package/dist/ui/embed-token.d.ts +9 -5
- package/dist/ui/embed-token.js +34 -6
- package/dist/ui/ui-stream.d.ts +22 -17
- package/dist/ui/ui-stream.js +72 -12
- package/dist/ui/ui.module.d.ts +7 -0
- package/dist/ui/ui.module.js +28 -0
- package/dist/ui/views.controller.d.ts +14 -12
- package/dist/ui/views.controller.js +32 -25
- package/dist/ui/views.d.ts +10 -57
- package/dist/ui/views.js +58 -46
- package/package.json +15 -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/dist/catalog/upgrade-targets.d.ts +0 -59
- package/dist/catalog/upgrade-targets.js +0 -90
- package/dist/conversations/sandbox-status.d.ts +0 -21
- package/dist/conversations/sandbox-status.js +0 -24
- package/dist/extensions/org-config.controller.d.ts +0 -24
- package/dist/extensions/org-config.controller.js +0 -59
- package/dist/http/gateway.module.js +0 -13
- package/dist/http/health.controller.d.ts +0 -26
- package/dist/http/health.controller.js +0 -79
- package/dist/http/tokens.d.ts +0 -131
- package/dist/http/tokens.js +0 -131
- package/dist/http/zod.pipe.d.ts +0 -8
- package/dist/http/zod.pipe.js +0 -14
- package/dist/identity/enterprise-admin.d.ts +0 -14
- package/dist/identity/enterprise-admin.js +0 -27
- package/dist/identity/rate-limit.d.ts +0 -55
- package/dist/identity/rate-limit.js +0 -121
- package/dist/sandbox/lifecycle.d.ts +0 -21
- package/dist/sandbox/lifecycle.js +0 -68
- package/dist/tools/builtins/sandbox/names.d.ts +0 -7
- package/dist/tools/builtins/sandbox/names.js +0 -20
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import type { Logger } from "@capybara-hq/plugin-sdk";
|
|
2
2
|
import { ToolError } from "@capybara-hq/plugin-sdk";
|
|
3
3
|
import type { Redis } from "ioredis";
|
|
4
|
+
import type { LockService } from "../../infra/lock/lock.service.js";
|
|
4
5
|
import { type OAuthHttpOptions } from "./discovery.js";
|
|
5
6
|
export type TokenAuthMethod = "client_secret_basic" | "client_secret_post" | "none";
|
|
6
7
|
/**
|
|
@@ -40,13 +41,24 @@ export type OAuthOwner = {
|
|
|
40
41
|
kind: "user";
|
|
41
42
|
accountId: string;
|
|
42
43
|
};
|
|
43
|
-
/**
|
|
44
|
+
/**
|
|
45
|
+
* The token endpoint refused with an RFC 6749-shaped error code (`invalid_grant`, ...): a 400 / 401
|
|
46
|
+
* with `error`, or a 200 whose body carries `ok: false` (Slack) or an `error` and no token.
|
|
47
|
+
*/
|
|
44
48
|
export declare class OAuthGrantError extends Error {
|
|
45
49
|
readonly error: string;
|
|
46
50
|
constructor(error: string);
|
|
47
51
|
}
|
|
48
|
-
/**
|
|
52
|
+
/**
|
|
53
|
+
* These codes say the credential itself is dead (refresh token / client); only they invalidate the
|
|
54
|
+
* tokens. Besides RFC 6749's, Slack's `invalid_refresh_token`, `token_revoked` and `token_expired`.
|
|
55
|
+
*/
|
|
49
56
|
export declare const INVALIDATING_ERRORS: ReadonlySet<string>;
|
|
57
|
+
/**
|
|
58
|
+
* `token_type` values (lower case) stored and sent as `Authorization: Bearer`: RFC 6750 `Bearer`
|
|
59
|
+
* and Slack's `user` (`oauth.v2.user.access`). A template may allow more with `auth.tokenTypes`.
|
|
60
|
+
*/
|
|
61
|
+
export declare const BEARER_TOKEN_TYPES: ReadonlySet<string>;
|
|
50
62
|
/** 授权服务器暂时不可用(网络、超时、5xx、畸形响应):模型可见的英文说明,计入「服务不可用」。 */
|
|
51
63
|
export declare class OAuthUnavailable extends ToolError {
|
|
52
64
|
constructor(message?: string);
|
|
@@ -58,12 +70,26 @@ export declare class OAuthReconnectRequired extends Error {
|
|
|
58
70
|
}
|
|
59
71
|
/** access token 过期前多久就刷新。 */
|
|
60
72
|
export declare const REFRESH_MARGIN_MS = 60000;
|
|
73
|
+
/** What the connector's auth settings add to a token request. */
|
|
74
|
+
export interface TokenRequestOptions {
|
|
75
|
+
/** More `token_type` values to accept as bearer tokens (`auth.tokenTypes`, case-insensitive). */
|
|
76
|
+
tokenTypes?: readonly string[] | undefined;
|
|
77
|
+
}
|
|
61
78
|
/**
|
|
62
|
-
*
|
|
63
|
-
*
|
|
64
|
-
*
|
|
79
|
+
* Calls the token endpoint (RFC 6749 §3.2), sending client_id / secret per the client's auth method
|
|
80
|
+
* (Basic form-encodes them first, §2.3.1).
|
|
81
|
+
* - 400 / 401 with a parsable RFC 6749 `error` code -> OAuthGrantError.
|
|
82
|
+
* - 200 with `ok: false` (Slack reports every error this way), or with an `error` code and no
|
|
83
|
+
* `access_token` -> OAuthGrantError with that code (`ok: false` wins over an `access_token`); a
|
|
84
|
+
* transient code (`temporarily_unavailable`, `server_error`, Slack's `ratelimited`, ...) or no
|
|
85
|
+
* parsable code -> OAuthUnavailable.
|
|
86
|
+
* - Everything else (network error, timeout, 429, 408, 403 and other 4xx, a 4xx without a code,
|
|
87
|
+
* 5xx, 3xx, a malformed body) -> OAuthUnavailable: a gateway's rate limit or a WAF block is not a
|
|
88
|
+
* dead credential.
|
|
89
|
+
* - A `token_type` other than Bearer / `user` / `opts.tokenTypes` -> OAuthGrantError
|
|
90
|
+
* `unsupported_token_type`; an accepted one is stored as `Bearer`.
|
|
65
91
|
*/
|
|
66
|
-
export declare function tokenRequest(client: OAuthClientRecord, params: Record<string, string | undefined>, http: OAuthHttpOptions): Promise<OAuthTokenRecord>;
|
|
92
|
+
export declare function tokenRequest(client: OAuthClientRecord, params: Record<string, string | undefined>, http: OAuthHttpOptions, opts?: TokenRequestOptions): Promise<OAuthTokenRecord>;
|
|
67
93
|
/** 令牌与客户端的存取(由 Credentials 实现:信封加密存入 capybara.secrets)。 */
|
|
68
94
|
export interface OAuthStore {
|
|
69
95
|
readClient(orgId: string, connectorId: string): Promise<OAuthClientRecord | null>;
|
|
@@ -72,28 +98,37 @@ export interface OAuthStore {
|
|
|
72
98
|
deleteTokens(orgId: string, connectorId: string, owner: OAuthOwner): Promise<void>;
|
|
73
99
|
}
|
|
74
100
|
/** 取 token 所需的认证方式字段(与 credentials.ts 的 OAuthAuth 对应)。 */
|
|
75
|
-
export type TokenAuth = {
|
|
101
|
+
export type TokenAuth = ({
|
|
76
102
|
type: "oauth_code";
|
|
77
103
|
} | {
|
|
78
104
|
type: "oauth_client";
|
|
79
105
|
scopes?: string[] | undefined;
|
|
106
|
+
}) & {
|
|
107
|
+
tokenTypes?: string[] | undefined;
|
|
80
108
|
};
|
|
81
109
|
/**
|
|
82
110
|
* access token 的获取与刷新。
|
|
83
111
|
*
|
|
84
112
|
* - 调用前:未过期(距过期 > 60 秒或未告知过期时间)直接用;否则刷新(授权码流用 refresh token,客户端凭据流重新取)。
|
|
85
113
|
* - 收到 401:`forceRefresh(stale)`——只要库里的 token 仍是收到 401 的那个就刷新。
|
|
86
|
-
* - 刷新一律在 Redis 锁 `capk:oauth-refresh:<orgId>:<connectorId>:<owner>`
|
|
87
|
-
* 只删除自己持有的锁);拿不到锁的轮询等锁消失后重读凭据,库里已是别的 token 就直接用(不并发刷新——授权服务器
|
|
114
|
+
* - 刷新一律在 Redis 锁 `capk:oauth-refresh:<orgId>:<connectorId>:<owner>` 内进行(`LockService.lease`,值为
|
|
115
|
+
* 本次随机 id,`releaseIf` 只删除自己持有的锁);拿不到锁的轮询等锁消失后重读凭据,库里已是别的 token 就直接用(不并发刷新——授权服务器
|
|
88
116
|
* 轮换 refresh token 时,并发刷新的第二个必然失败)。
|
|
89
117
|
* - 令牌端点明确拒绝 → 删除该凭据并抛 OAuthReconnectRequired(需要重新连接);暂时不可用 → OAuthUnavailable,凭据保留。
|
|
90
118
|
*/
|
|
91
119
|
export declare class OAuthTokens {
|
|
92
120
|
private readonly store;
|
|
121
|
+
/** The lease primitives of `LockService` (the key is used as is: no `lock:` prefix). */
|
|
122
|
+
private readonly locks;
|
|
123
|
+
/** Polls whether another holder still has the lock. */
|
|
93
124
|
private readonly redis;
|
|
94
125
|
private readonly http;
|
|
95
126
|
private readonly log;
|
|
96
|
-
constructor(store: OAuthStore,
|
|
127
|
+
constructor(store: OAuthStore,
|
|
128
|
+
/** The lease primitives of `LockService` (the key is used as is: no `lock:` prefix). */
|
|
129
|
+
locks: Pick<LockService, "lease" | "releaseIf" | "renew">,
|
|
130
|
+
/** Polls whether another holder still has the lock. */
|
|
131
|
+
redis: Pick<Redis, "exists">, http: () => OAuthHttpOptions, log: Logger);
|
|
97
132
|
accessToken(orgId: string, connectorId: string, auth: TokenAuth, owner: OAuthOwner): Promise<string>;
|
|
98
133
|
/** 收到 401 后调用:`stale` 为收到 401 的那个 access token。 */
|
|
99
134
|
forceRefresh(orgId: string, connectorId: string, auth: TokenAuth, owner: OAuthOwner, stale: string | undefined): Promise<void>;
|
|
@@ -1,7 +1,10 @@
|
|
|
1
1
|
import { randomUUID } from "node:crypto";
|
|
2
2
|
import { ToolError } from "@capybara-hq/plugin-sdk";
|
|
3
3
|
import { OAuthSetupError, oauthFetch } from "./discovery.js";
|
|
4
|
-
/**
|
|
4
|
+
/**
|
|
5
|
+
* The token endpoint refused with an RFC 6749-shaped error code (`invalid_grant`, ...): a 400 / 401
|
|
6
|
+
* with `error`, or a 200 whose body carries `ok: false` (Slack) or an `error` and no token.
|
|
7
|
+
*/
|
|
5
8
|
export class OAuthGrantError extends Error {
|
|
6
9
|
error;
|
|
7
10
|
constructor(error) {
|
|
@@ -10,12 +13,37 @@ export class OAuthGrantError extends Error {
|
|
|
10
13
|
this.name = "OAuthGrantError";
|
|
11
14
|
}
|
|
12
15
|
}
|
|
13
|
-
/**
|
|
16
|
+
/**
|
|
17
|
+
* These codes say the credential itself is dead (refresh token / client); only they invalidate the
|
|
18
|
+
* tokens. Besides RFC 6749's, Slack's `invalid_refresh_token`, `token_revoked` and `token_expired`.
|
|
19
|
+
*/
|
|
14
20
|
export const INVALIDATING_ERRORS = new Set([
|
|
15
21
|
"invalid_grant",
|
|
16
22
|
"invalid_client",
|
|
17
23
|
"unauthorized_client",
|
|
24
|
+
"invalid_refresh_token",
|
|
25
|
+
"token_revoked",
|
|
26
|
+
"token_expired",
|
|
27
|
+
]);
|
|
28
|
+
/**
|
|
29
|
+
* Error codes of a 200 error body that mean "try again later", not a refusal: they count as
|
|
30
|
+
* unavailable like a 429 / 5xx. RFC 6749's `temporarily_unavailable` / `server_error` and Slack's
|
|
31
|
+
* Web API codes.
|
|
32
|
+
*/
|
|
33
|
+
const TRANSIENT_ERRORS = new Set([
|
|
34
|
+
"temporarily_unavailable",
|
|
35
|
+
"server_error",
|
|
36
|
+
"ratelimited",
|
|
37
|
+
"service_unavailable",
|
|
38
|
+
"internal_error",
|
|
39
|
+
"fatal_error",
|
|
40
|
+
"request_timeout",
|
|
18
41
|
]);
|
|
42
|
+
/**
|
|
43
|
+
* `token_type` values (lower case) stored and sent as `Authorization: Bearer`: RFC 6750 `Bearer`
|
|
44
|
+
* and Slack's `user` (`oauth.v2.user.access`). A template may allow more with `auth.tokenTypes`.
|
|
45
|
+
*/
|
|
46
|
+
export const BEARER_TOKEN_TYPES = new Set(["bearer", "user"]);
|
|
19
47
|
/** 授权服务器暂时不可用(网络、超时、5xx、畸形响应):模型可见的英文说明,计入「服务不可用」。 */
|
|
20
48
|
export class OAuthUnavailable extends ToolError {
|
|
21
49
|
constructor(message = "Could not obtain an access token: the app's authorization server is unavailable. Try again later.") {
|
|
@@ -40,11 +68,20 @@ const isObj = (v) => typeof v === "object" && v !== null && !Array.isArray(v);
|
|
|
40
68
|
/** RFC 6749 §5.2 形式的错误码(只有这种串才写进日志 / 错误,不回显对方任意文本)。 */
|
|
41
69
|
const OAUTH_ERROR_RE = /^[a-z][a-z0-9_]{0,63}$/;
|
|
42
70
|
/**
|
|
43
|
-
*
|
|
44
|
-
*
|
|
45
|
-
*
|
|
71
|
+
* Calls the token endpoint (RFC 6749 §3.2), sending client_id / secret per the client's auth method
|
|
72
|
+
* (Basic form-encodes them first, §2.3.1).
|
|
73
|
+
* - 400 / 401 with a parsable RFC 6749 `error` code -> OAuthGrantError.
|
|
74
|
+
* - 200 with `ok: false` (Slack reports every error this way), or with an `error` code and no
|
|
75
|
+
* `access_token` -> OAuthGrantError with that code (`ok: false` wins over an `access_token`); a
|
|
76
|
+
* transient code (`temporarily_unavailable`, `server_error`, Slack's `ratelimited`, ...) or no
|
|
77
|
+
* parsable code -> OAuthUnavailable.
|
|
78
|
+
* - Everything else (network error, timeout, 429, 408, 403 and other 4xx, a 4xx without a code,
|
|
79
|
+
* 5xx, 3xx, a malformed body) -> OAuthUnavailable: a gateway's rate limit or a WAF block is not a
|
|
80
|
+
* dead credential.
|
|
81
|
+
* - A `token_type` other than Bearer / `user` / `opts.tokenTypes` -> OAuthGrantError
|
|
82
|
+
* `unsupported_token_type`; an accepted one is stored as `Bearer`.
|
|
46
83
|
*/
|
|
47
|
-
export async function tokenRequest(client, params, http) {
|
|
84
|
+
export async function tokenRequest(client, params, http, opts = {}) {
|
|
48
85
|
const form = new URLSearchParams();
|
|
49
86
|
for (const [k, v] of Object.entries(params))
|
|
50
87
|
if (v !== undefined && v !== "")
|
|
@@ -86,11 +123,19 @@ export async function tokenRequest(client, params, http) {
|
|
|
86
123
|
}
|
|
87
124
|
if (res.status !== 200 || !isObj(body))
|
|
88
125
|
throw new OAuthUnavailable();
|
|
126
|
+
if (body.ok === false || (body.access_token === undefined && body.error !== undefined)) {
|
|
127
|
+
const code = body.error;
|
|
128
|
+
if (typeof code === "string" && OAUTH_ERROR_RE.test(code) && !TRANSIENT_ERRORS.has(code)) {
|
|
129
|
+
throw new OAuthGrantError(code);
|
|
130
|
+
}
|
|
131
|
+
throw new OAuthUnavailable();
|
|
132
|
+
}
|
|
89
133
|
const { access_token, refresh_token, expires_in, token_type, scope } = body;
|
|
90
134
|
if (typeof access_token !== "string" || access_token === "")
|
|
91
135
|
throw new OAuthUnavailable();
|
|
92
|
-
const type = typeof token_type === "string" ? token_type : "Bearer";
|
|
93
|
-
|
|
136
|
+
const type = (typeof token_type === "string" ? token_type : "Bearer").toLowerCase();
|
|
137
|
+
const accepted = BEARER_TOKEN_TYPES.has(type) || opts.tokenTypes?.some((t) => t.toLowerCase() === type);
|
|
138
|
+
if (!accepted)
|
|
94
139
|
throw new OAuthGrantError("unsupported_token_type");
|
|
95
140
|
return {
|
|
96
141
|
access_token,
|
|
@@ -102,30 +147,30 @@ export async function tokenRequest(client, params, http) {
|
|
|
102
147
|
...(typeof scope === "string" && { scope }),
|
|
103
148
|
};
|
|
104
149
|
}
|
|
105
|
-
const RELEASE = `
|
|
106
|
-
if redis.call('GET', KEYS[1]) == ARGV[1] then
|
|
107
|
-
return redis.call('DEL', KEYS[1])
|
|
108
|
-
end
|
|
109
|
-
return 0
|
|
110
|
-
`;
|
|
111
150
|
const sleep = (ms) => new Promise((r) => setTimeout(r, ms));
|
|
112
151
|
/**
|
|
113
152
|
* access token 的获取与刷新。
|
|
114
153
|
*
|
|
115
154
|
* - 调用前:未过期(距过期 > 60 秒或未告知过期时间)直接用;否则刷新(授权码流用 refresh token,客户端凭据流重新取)。
|
|
116
155
|
* - 收到 401:`forceRefresh(stale)`——只要库里的 token 仍是收到 401 的那个就刷新。
|
|
117
|
-
* - 刷新一律在 Redis 锁 `capk:oauth-refresh:<orgId>:<connectorId>:<owner>`
|
|
118
|
-
* 只删除自己持有的锁);拿不到锁的轮询等锁消失后重读凭据,库里已是别的 token 就直接用(不并发刷新——授权服务器
|
|
156
|
+
* - 刷新一律在 Redis 锁 `capk:oauth-refresh:<orgId>:<connectorId>:<owner>` 内进行(`LockService.lease`,值为
|
|
157
|
+
* 本次随机 id,`releaseIf` 只删除自己持有的锁);拿不到锁的轮询等锁消失后重读凭据,库里已是别的 token 就直接用(不并发刷新——授权服务器
|
|
119
158
|
* 轮换 refresh token 时,并发刷新的第二个必然失败)。
|
|
120
159
|
* - 令牌端点明确拒绝 → 删除该凭据并抛 OAuthReconnectRequired(需要重新连接);暂时不可用 → OAuthUnavailable,凭据保留。
|
|
121
160
|
*/
|
|
122
161
|
export class OAuthTokens {
|
|
123
162
|
store;
|
|
163
|
+
locks;
|
|
124
164
|
redis;
|
|
125
165
|
http;
|
|
126
166
|
log;
|
|
127
|
-
constructor(store,
|
|
167
|
+
constructor(store,
|
|
168
|
+
/** The lease primitives of `LockService` (the key is used as is: no `lock:` prefix). */
|
|
169
|
+
locks,
|
|
170
|
+
/** Polls whether another holder still has the lock. */
|
|
171
|
+
redis, http, log) {
|
|
128
172
|
this.store = store;
|
|
173
|
+
this.locks = locks;
|
|
129
174
|
this.redis = redis;
|
|
130
175
|
this.http = http;
|
|
131
176
|
this.log = log;
|
|
@@ -165,7 +210,7 @@ export class OAuthTokens {
|
|
|
165
210
|
const replaced = (rec) => rec !== null && rec.access_token !== stale ? rec.access_token : undefined;
|
|
166
211
|
for (;;) {
|
|
167
212
|
const id = randomUUID();
|
|
168
|
-
if (
|
|
213
|
+
if (await this.locks.lease(key, id, ttlMs)) {
|
|
169
214
|
try {
|
|
170
215
|
const rec = await this.store.readTokens(orgId, connectorId, owner);
|
|
171
216
|
const done = replaced(rec);
|
|
@@ -173,10 +218,10 @@ export class OAuthTokens {
|
|
|
173
218
|
return done;
|
|
174
219
|
if (rec === null && auth.type === "oauth_code")
|
|
175
220
|
throw new OAuthReconnectRequired(owner);
|
|
176
|
-
return await this.obtain(orgId, connectorId, auth, owner, rec, key, id);
|
|
221
|
+
return await this.obtain(orgId, connectorId, auth, owner, rec, key, id, ttlMs);
|
|
177
222
|
}
|
|
178
223
|
finally {
|
|
179
|
-
await this.
|
|
224
|
+
await this.locks.releaseIf(key, id).catch((err) => {
|
|
180
225
|
this.log.warn("oauth refresh lock release failed", { connectorId, err });
|
|
181
226
|
});
|
|
182
227
|
}
|
|
@@ -198,7 +243,7 @@ export class OAuthTokens {
|
|
|
198
243
|
* 锁内:向令牌端点要新 token 并写回。作废前做围栏检查:锁仍归自己、库里的 token 仍是这次用掉的那组——
|
|
199
244
|
* 锁过期后另一个刷新者若已写入新 token,就直接用它而不是删掉它。
|
|
200
245
|
*/
|
|
201
|
-
async obtain(orgId, connectorId, auth, owner, rec, lockKey, lockId) {
|
|
246
|
+
async obtain(orgId, connectorId, auth, owner, rec, lockKey, lockId, lockTtlMs) {
|
|
202
247
|
const client = await this.store.readClient(orgId, connectorId);
|
|
203
248
|
if (!client)
|
|
204
249
|
throw new OAuthReconnectRequired({ kind: "org" });
|
|
@@ -210,7 +255,8 @@ export class OAuthTokens {
|
|
|
210
255
|
current.refresh_token === rec.refresh_token;
|
|
211
256
|
if (current !== null && !unchanged)
|
|
212
257
|
return current.access_token;
|
|
213
|
-
|
|
258
|
+
// still ours (renewing a held lease is harmless right before the delete)
|
|
259
|
+
if (current !== null && !(await this.locks.renew(lockKey, lockId, lockTtlMs))) {
|
|
214
260
|
// 锁已不归自己(过期):不删,交给持锁者;这次按暂时不可用处理
|
|
215
261
|
throw new OAuthUnavailable();
|
|
216
262
|
}
|
|
@@ -228,14 +274,14 @@ export class OAuthTokens {
|
|
|
228
274
|
grant_type: "refresh_token",
|
|
229
275
|
refresh_token: rec.refresh_token,
|
|
230
276
|
resource: client.resource,
|
|
231
|
-
}, this.http());
|
|
277
|
+
}, this.http(), { tokenTypes: auth.tokenTypes });
|
|
232
278
|
// 授权服务器不轮换时沿用旧 refresh token
|
|
233
279
|
if (next.refresh_token === undefined)
|
|
234
280
|
next = { ...next, refresh_token: rec.refresh_token };
|
|
235
281
|
}
|
|
236
282
|
else {
|
|
237
283
|
const scopes = auth.scopes ?? client.scopes;
|
|
238
|
-
next = await tokenRequest(client, { grant_type: "client_credentials", scope: scopes?.join(" "), resource: client.resource }, this.http());
|
|
284
|
+
next = await tokenRequest(client, { grant_type: "client_credentials", scope: scopes?.join(" "), resource: client.resource }, this.http(), { tokenTypes: auth.tokenTypes });
|
|
239
285
|
}
|
|
240
286
|
}
|
|
241
287
|
catch (e) {
|
|
@@ -0,0 +1,88 @@
|
|
|
1
|
+
import { ExtensionHost } from "../extensions/host.js";
|
|
2
|
+
import { KernelDb } from "../infra/database/kernel-db.js";
|
|
3
|
+
import { TransactionHost } from "../infra/database/transaction-host.js";
|
|
4
|
+
import { OrgLock } from "../orgs/org-lock.js";
|
|
5
|
+
/** One tool of an extension with its switch in the org. */
|
|
6
|
+
export interface OrgToolSwitch {
|
|
7
|
+
tool: string;
|
|
8
|
+
enabled: boolean;
|
|
9
|
+
}
|
|
10
|
+
/** An org agent whose current version selects the tool being switched off. */
|
|
11
|
+
export interface AffectedAgent {
|
|
12
|
+
id: string;
|
|
13
|
+
name: string;
|
|
14
|
+
}
|
|
15
|
+
/**
|
|
16
|
+
* The result of {@link OrgToolSwitches.set}: the PCM §5 rule 8 preview of a switch-off (the org's
|
|
17
|
+
* agents that selected the tool and the hash to confirm it with), or the switch applied.
|
|
18
|
+
*/
|
|
19
|
+
export type OrgToolSwitchResult = {
|
|
20
|
+
applied: false;
|
|
21
|
+
affectedAgents: AffectedAgent[];
|
|
22
|
+
confirm: string;
|
|
23
|
+
} | {
|
|
24
|
+
applied: true;
|
|
25
|
+
};
|
|
26
|
+
/** Model-visible (English): why a turned-off extension tool is not offered. */
|
|
27
|
+
export declare const toolTurnedOffReason: (key: string) => string;
|
|
28
|
+
/**
|
|
29
|
+
* Per-org switches of single extension tools (layering spec A §7, table `org_tool_switches`): an
|
|
30
|
+
* org admin turns off one tool an extension registers (`ctx.tools.register`); it is then not
|
|
31
|
+
* offered to any agent of the org (`ToolRegistry.forAgent`) and refused if called
|
|
32
|
+
* (`ToolPipeline`). No row means on. A row of a tool the extension stops registering is kept and
|
|
33
|
+
* applies again if the tool comes back. Builtin and connector tools are out of scope. Read from PG
|
|
34
|
+
* on every use, no in-process state.
|
|
35
|
+
*/
|
|
36
|
+
export declare class OrgToolSwitches {
|
|
37
|
+
private readonly kdb;
|
|
38
|
+
readonly txHost: TransactionHost;
|
|
39
|
+
private readonly host;
|
|
40
|
+
/** The org row lock: re-checks `org.extensions.manage` under the lock. */
|
|
41
|
+
private readonly orgLock;
|
|
42
|
+
constructor(kdb: KernelDb, txHost: TransactionHost, host: Pick<ExtensionHost, "tools">,
|
|
43
|
+
/** The org row lock: re-checks `org.extensions.manage` under the lock. */
|
|
44
|
+
orgLock: Pick<OrgLock, "lockAndAuthorize">);
|
|
45
|
+
private get db();
|
|
46
|
+
/** The tool names `plugin` registers on this replica, in registration order. */
|
|
47
|
+
private registered;
|
|
48
|
+
/**
|
|
49
|
+
* The tools of an extension the org sees: running here and visible under plugin scope, else 404
|
|
50
|
+
* `extension.not_found` (an invisible one is answered like an unknown one).
|
|
51
|
+
*/
|
|
52
|
+
private toolsFor;
|
|
53
|
+
/** The stored switches of the org (all extensions, or one), `false` ones only matter. */
|
|
54
|
+
private offRows;
|
|
55
|
+
/** Every tool the extension registers on this replica with its switch (default on). */
|
|
56
|
+
list(orgId: string, plugin: string): Promise<OrgToolSwitch[]>;
|
|
57
|
+
/**
|
|
58
|
+
* What turning one tool off would affect (nothing written): the agents selecting it and the
|
|
59
|
+
* confirm hash {@link set} takes, or null when it is off already. Unknown tool -> 404
|
|
60
|
+
* `extension.tool_not_found`.
|
|
61
|
+
*/
|
|
62
|
+
previewOff(orgId: string, plugin: string, tool: string): Promise<{
|
|
63
|
+
affectedAgents: AffectedAgent[];
|
|
64
|
+
confirm: string;
|
|
65
|
+
} | null>;
|
|
66
|
+
/** The model-visible keys (`plugin__<extension>__<tool>`) of the tools turned off in the org. */
|
|
67
|
+
offKeys(orgId: string): Promise<Set<string>>;
|
|
68
|
+
/** Whether the org turned off this tool. */
|
|
69
|
+
isToolOff(orgId: string, plugin: string, tool: string): Promise<boolean>;
|
|
70
|
+
/**
|
|
71
|
+
* Switches one tool in the org. On applies at once. Off, while the tool is on: without
|
|
72
|
+
* `confirm` the preview (the org's agents whose current version does not turn it off) and its hash,
|
|
73
|
+
* with the current hash the switch is written (a changed preview -> 409 `plugin.switch_stale`).
|
|
74
|
+
* A tool the extension does not register -> 404 `extension.tool_not_found`. A change writes the
|
|
75
|
+
* audit row `extension.tool_switched`.
|
|
76
|
+
*/
|
|
77
|
+
set(orgId: string, plugin: string, tool: string, enabled: boolean, actor: {
|
|
78
|
+
accountId: string;
|
|
79
|
+
tokenId?: string | undefined;
|
|
80
|
+
/** Merged into the audit detail (a write made through the Platform tool). */
|
|
81
|
+
auditDetail?: Record<string, unknown>;
|
|
82
|
+
}, confirm?: string): Promise<OrgToolSwitchResult>;
|
|
83
|
+
/**
|
|
84
|
+
* The org's live agents whose current version has extension tool `tool` of `plugin` on: tools
|
|
85
|
+
* are on by default (tools default-on spec §4), so every agent that does not turn it off.
|
|
86
|
+
*/
|
|
87
|
+
private agentsSelecting;
|
|
88
|
+
}
|
|
@@ -0,0 +1,201 @@
|
|
|
1
|
+
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
|
2
|
+
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
3
|
+
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
4
|
+
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
5
|
+
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
6
|
+
};
|
|
7
|
+
var __param = (this && this.__param) || function (paramIndex, decorator) {
|
|
8
|
+
return function (target, key) { decorator(target, key, paramIndex); }
|
|
9
|
+
};
|
|
10
|
+
import { createHash } from "node:crypto";
|
|
11
|
+
import { extensionToolKey } from "@capybara-hq/plugin-sdk";
|
|
12
|
+
import { Inject, Injectable } from "@nestjs/common";
|
|
13
|
+
import { sql } from "kysely";
|
|
14
|
+
import { extensionToolDisabled } from "../agents/definition.js";
|
|
15
|
+
import { ApiError } from "../errors.js";
|
|
16
|
+
import { ExtensionHost } from "../extensions/host.js";
|
|
17
|
+
import { extensionVisibleTo } from "../extensions/org-config.js";
|
|
18
|
+
import { audit } from "../identity/audit.js";
|
|
19
|
+
import { KernelDb } from "../infra/database/kernel-db.js";
|
|
20
|
+
import { TransactionHost } from "../infra/database/transaction-host.js";
|
|
21
|
+
import { Transactional } from "../infra/database/transactional.decorator.js";
|
|
22
|
+
import { OrgLock } from "../orgs/org-lock.js";
|
|
23
|
+
/** Model-visible (English): why a turned-off extension tool is not offered. */
|
|
24
|
+
export const toolTurnedOffReason = (key) => `Tool ${key} is turned off in this organization`;
|
|
25
|
+
/** The confirm hash of a switch-off preview. */
|
|
26
|
+
function switchOffHash(orgId, plugin, tool, agents) {
|
|
27
|
+
return createHash("sha256")
|
|
28
|
+
.update(JSON.stringify({ orgId, plugin, tool, agents: agents.map((a) => a.id) }))
|
|
29
|
+
.digest("hex");
|
|
30
|
+
}
|
|
31
|
+
/**
|
|
32
|
+
* Per-org switches of single extension tools (layering spec A §7, table `org_tool_switches`): an
|
|
33
|
+
* org admin turns off one tool an extension registers (`ctx.tools.register`); it is then not
|
|
34
|
+
* offered to any agent of the org (`ToolRegistry.forAgent`) and refused if called
|
|
35
|
+
* (`ToolPipeline`). No row means on. A row of a tool the extension stops registering is kept and
|
|
36
|
+
* applies again if the tool comes back. Builtin and connector tools are out of scope. Read from PG
|
|
37
|
+
* on every use, no in-process state.
|
|
38
|
+
*/
|
|
39
|
+
let OrgToolSwitches = class OrgToolSwitches {
|
|
40
|
+
kdb;
|
|
41
|
+
txHost;
|
|
42
|
+
host;
|
|
43
|
+
orgLock;
|
|
44
|
+
constructor(kdb, txHost, host,
|
|
45
|
+
/** The org row lock: re-checks `org.extensions.manage` under the lock. */
|
|
46
|
+
orgLock) {
|
|
47
|
+
this.kdb = kdb;
|
|
48
|
+
this.txHost = txHost;
|
|
49
|
+
this.host = host;
|
|
50
|
+
this.orgLock = orgLock;
|
|
51
|
+
}
|
|
52
|
+
get db() {
|
|
53
|
+
return this.kdb.db;
|
|
54
|
+
}
|
|
55
|
+
/** The tool names `plugin` registers on this replica, in registration order. */
|
|
56
|
+
registered(plugin) {
|
|
57
|
+
return [
|
|
58
|
+
...new Set(this.host
|
|
59
|
+
.tools()
|
|
60
|
+
.filter((t) => t.plugin === plugin)
|
|
61
|
+
.map((t) => t.spec.name)),
|
|
62
|
+
];
|
|
63
|
+
}
|
|
64
|
+
/**
|
|
65
|
+
* The tools of an extension the org sees: running here and visible under plugin scope, else 404
|
|
66
|
+
* `extension.not_found` (an invisible one is answered like an unknown one).
|
|
67
|
+
*/
|
|
68
|
+
async toolsFor(orgId, plugin) {
|
|
69
|
+
const tools = this.registered(plugin);
|
|
70
|
+
if (tools.length === 0 || !(await extensionVisibleTo(this.db, orgId, plugin))) {
|
|
71
|
+
throw new ApiError("extension.not_found", `Extension ${plugin} is not installed`);
|
|
72
|
+
}
|
|
73
|
+
return tools;
|
|
74
|
+
}
|
|
75
|
+
/** The stored switches of the org (all extensions, or one), `false` ones only matter. */
|
|
76
|
+
async offRows(orgId, plugin) {
|
|
77
|
+
let q = this.db
|
|
78
|
+
.selectFrom("org_tool_switches")
|
|
79
|
+
.select(["plugin", "tool"])
|
|
80
|
+
.where("org_id", "=", orgId)
|
|
81
|
+
.where("enabled", "=", false);
|
|
82
|
+
if (plugin !== undefined)
|
|
83
|
+
q = q.where("plugin", "=", plugin);
|
|
84
|
+
return q.execute();
|
|
85
|
+
}
|
|
86
|
+
/** Every tool the extension registers on this replica with its switch (default on). */
|
|
87
|
+
async list(orgId, plugin) {
|
|
88
|
+
const tools = await this.toolsFor(orgId, plugin);
|
|
89
|
+
const off = new Set((await this.offRows(orgId, plugin)).map((r) => r.tool));
|
|
90
|
+
return tools.map((tool) => ({ tool, enabled: !off.has(tool) }));
|
|
91
|
+
}
|
|
92
|
+
/**
|
|
93
|
+
* What turning one tool off would affect (nothing written): the agents selecting it and the
|
|
94
|
+
* confirm hash {@link set} takes, or null when it is off already. Unknown tool -> 404
|
|
95
|
+
* `extension.tool_not_found`.
|
|
96
|
+
*/
|
|
97
|
+
async previewOff(orgId, plugin, tool) {
|
|
98
|
+
const tools = await this.toolsFor(orgId, plugin);
|
|
99
|
+
if (!tools.includes(tool)) {
|
|
100
|
+
throw new ApiError("extension.tool_not_found", `Extension ${plugin} does not register a tool named ${tool}`);
|
|
101
|
+
}
|
|
102
|
+
if (await this.isToolOff(orgId, plugin, tool))
|
|
103
|
+
return null;
|
|
104
|
+
const affectedAgents = await this.agentsSelecting(orgId, plugin, tool);
|
|
105
|
+
return { affectedAgents, confirm: switchOffHash(orgId, plugin, tool, affectedAgents) };
|
|
106
|
+
}
|
|
107
|
+
/** The model-visible keys (`plugin__<extension>__<tool>`) of the tools turned off in the org. */
|
|
108
|
+
async offKeys(orgId) {
|
|
109
|
+
return new Set((await this.offRows(orgId)).map((r) => extensionToolKey(r.plugin, r.tool)));
|
|
110
|
+
}
|
|
111
|
+
/** Whether the org turned off this tool. */
|
|
112
|
+
async isToolOff(orgId, plugin, tool) {
|
|
113
|
+
const row = await this.db
|
|
114
|
+
.selectFrom("org_tool_switches")
|
|
115
|
+
.select("enabled")
|
|
116
|
+
.where("org_id", "=", orgId)
|
|
117
|
+
.where("plugin", "=", plugin)
|
|
118
|
+
.where("tool", "=", tool)
|
|
119
|
+
.executeTakeFirst();
|
|
120
|
+
return row?.enabled === false;
|
|
121
|
+
}
|
|
122
|
+
/**
|
|
123
|
+
* Switches one tool in the org. On applies at once. Off, while the tool is on: without
|
|
124
|
+
* `confirm` the preview (the org's agents whose current version does not turn it off) and its hash,
|
|
125
|
+
* with the current hash the switch is written (a changed preview -> 409 `plugin.switch_stale`).
|
|
126
|
+
* A tool the extension does not register -> 404 `extension.tool_not_found`. A change writes the
|
|
127
|
+
* audit row `extension.tool_switched`.
|
|
128
|
+
*/
|
|
129
|
+
async set(orgId, plugin, tool, enabled, actor, confirm) {
|
|
130
|
+
await this.orgLock.lockAndAuthorize(orgId, actor.accountId, "org.extensions.manage");
|
|
131
|
+
const tools = await this.toolsFor(orgId, plugin);
|
|
132
|
+
if (!tools.includes(tool)) {
|
|
133
|
+
throw new ApiError("extension.tool_not_found", `Extension ${plugin} does not register a tool named ${tool}`);
|
|
134
|
+
}
|
|
135
|
+
const from = !(await this.isToolOff(orgId, plugin, tool));
|
|
136
|
+
if (from === enabled)
|
|
137
|
+
return { applied: true };
|
|
138
|
+
if (!enabled) {
|
|
139
|
+
const affectedAgents = await this.agentsSelecting(orgId, plugin, tool);
|
|
140
|
+
const hash = switchOffHash(orgId, plugin, tool, affectedAgents);
|
|
141
|
+
if (confirm === undefined)
|
|
142
|
+
return { applied: false, affectedAgents, confirm: hash };
|
|
143
|
+
if (confirm !== hash) {
|
|
144
|
+
throw new ApiError("plugin.switch_stale", "What switching this tool off affects has changed; review it and confirm again");
|
|
145
|
+
}
|
|
146
|
+
}
|
|
147
|
+
await this.db
|
|
148
|
+
.insertInto("org_tool_switches")
|
|
149
|
+
.values({ org_id: orgId, plugin, tool, enabled, updated_by: actor.accountId })
|
|
150
|
+
.onConflict((oc) => oc.columns(["org_id", "plugin", "tool"]).doUpdateSet({
|
|
151
|
+
enabled,
|
|
152
|
+
updated_by: actor.accountId,
|
|
153
|
+
updated_at: sql `now()`,
|
|
154
|
+
}))
|
|
155
|
+
.execute();
|
|
156
|
+
await audit(this.db, {
|
|
157
|
+
actorAccountId: actor.accountId,
|
|
158
|
+
...(actor.tokenId !== undefined && { actorTokenId: actor.tokenId }),
|
|
159
|
+
orgId,
|
|
160
|
+
action: "extension.tool_switched",
|
|
161
|
+
target: extensionToolKey(plugin, tool),
|
|
162
|
+
detail: { plugin, tool, from, to: enabled, ...actor.auditDetail },
|
|
163
|
+
});
|
|
164
|
+
return { applied: true };
|
|
165
|
+
}
|
|
166
|
+
/**
|
|
167
|
+
* The org's live agents whose current version has extension tool `tool` of `plugin` on: tools
|
|
168
|
+
* are on by default (tools default-on spec §4), so every agent that does not turn it off.
|
|
169
|
+
*/
|
|
170
|
+
async agentsSelecting(orgId, plugin, tool) {
|
|
171
|
+
const rows = await this.db
|
|
172
|
+
.selectFrom("agents as a")
|
|
173
|
+
.innerJoin("agent_versions as v", (j) => j.onRef("v.agent_id", "=", "a.id").onRef("v.version", "=", "a.current_version"))
|
|
174
|
+
.select(["a.id", "v.definition"])
|
|
175
|
+
.where("a.org_id", "=", orgId)
|
|
176
|
+
.where("a.deleted_at", "is", null)
|
|
177
|
+
.orderBy("a.id")
|
|
178
|
+
.execute();
|
|
179
|
+
const out = [];
|
|
180
|
+
for (const r of rows) {
|
|
181
|
+
const def = r.definition;
|
|
182
|
+
const off = Array.isArray(def?.disabledTools)
|
|
183
|
+
? extensionToolDisabled(def.disabledTools, plugin, tool)
|
|
184
|
+
: false;
|
|
185
|
+
if (!off)
|
|
186
|
+
out.push({ id: r.id, name: typeof def?.name === "string" ? def.name : r.id });
|
|
187
|
+
}
|
|
188
|
+
return out;
|
|
189
|
+
}
|
|
190
|
+
};
|
|
191
|
+
__decorate([
|
|
192
|
+
Transactional()
|
|
193
|
+
], OrgToolSwitches.prototype, "set", null);
|
|
194
|
+
OrgToolSwitches = __decorate([
|
|
195
|
+
Injectable(),
|
|
196
|
+
__param(0, Inject(KernelDb)),
|
|
197
|
+
__param(1, Inject(TransactionHost)),
|
|
198
|
+
__param(2, Inject(ExtensionHost)),
|
|
199
|
+
__param(3, Inject(OrgLock))
|
|
200
|
+
], OrgToolSwitches);
|
|
201
|
+
export { OrgToolSwitches };
|
package/dist/tools/outputs.d.ts
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
|
-
import type {
|
|
2
|
-
import
|
|
1
|
+
import type { KernelSchemaDb } from "../db/kernel-schema.js";
|
|
2
|
+
import { KernelConfigService } from "../infra/config/kernel-config.service.js";
|
|
3
|
+
import { KernelDb } from "../infra/database/kernel-db.js";
|
|
3
4
|
/** 文本行数(按 `\n` 切分;空串算 1 行,与按行分页读取一致)。 */
|
|
4
5
|
export declare function countLines(s: string): number;
|
|
5
6
|
export interface SavedOutput {
|
|
@@ -14,12 +15,13 @@ export interface OutputScope {
|
|
|
14
15
|
}
|
|
15
16
|
/**
|
|
16
17
|
* 输出存档(spec 5.4):超大工具结果的全文存进 `capybara.tool_outputs`,保留 `tools.outputRetentionDays` 天。
|
|
17
|
-
*
|
|
18
|
+
* 只能在产生它的会话里读取(同组织别的会话也不行:会话之间可见范围不同),过期即视为不存在(清理由
|
|
19
|
+
* `output-cleanup` 每小时一次,见 {@link deleteExpiredOutputs})。
|
|
18
20
|
*/
|
|
19
21
|
export declare class ToolOutputs {
|
|
20
22
|
private readonly db;
|
|
21
23
|
private readonly config;
|
|
22
|
-
constructor(db: KernelDb, config:
|
|
24
|
+
constructor(db: KernelDb, config: Pick<KernelConfigService, "get">);
|
|
23
25
|
save(a: {
|
|
24
26
|
orgId: string;
|
|
25
27
|
conversationId: string;
|
|
@@ -29,6 +31,13 @@ export declare class ToolOutputs {
|
|
|
29
31
|
/** 读本会话未过期的存档全文;不存在 / 过期 / 属于别的会话或组织 → null。 */
|
|
30
32
|
load(scope: OutputScope, id: string): Promise<string | null>;
|
|
31
33
|
}
|
|
34
|
+
/** Rows deleted per statement by {@link deleteExpiredOutputs}. */
|
|
35
|
+
export declare const OUTPUT_CLEANUP_BATCH = 1000;
|
|
36
|
+
/**
|
|
37
|
+
* 删除已过期(`expires_at < now()`)的输出存档,每批 `batch` 行,直到删完;返回删除的总行数。
|
|
38
|
+
* 每批一条独立语句(不开长事务);多个 worker 同时清理时 `SKIP LOCKED` 互不等待。
|
|
39
|
+
*/
|
|
40
|
+
export declare function deleteExpiredOutputs(db: KernelSchemaDb, batch?: number): Promise<number>;
|
|
32
41
|
/** 存档不存在 / 过期 / 不属于本会话(模型可见,英文;不区分几种情况,不泄露别处的存档是否存在)。 */
|
|
33
42
|
export declare const outputNotFoundText: (id: string) => string;
|
|
34
43
|
/**
|