@capybara-hq/kernel 0.1.0-rc.0 → 0.1.0-rc.2
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 +10 -6
- package/dist/admin/admin.controller.d.ts +17 -17
- package/dist/admin/admin.controller.js +43 -26
- package/dist/admin/admin.module.d.ts +3 -0
- package/dist/admin/admin.module.js +22 -0
- package/dist/admin/extensions.controller.d.ts +14 -14
- package/dist/admin/extensions.controller.js +30 -17
- package/dist/admin/setup-lock.d.ts +16 -0
- package/dist/admin/setup-lock.js +47 -0
- package/dist/admin/setup.controller.d.ts +8 -8
- package/dist/admin/setup.controller.js +27 -25
- package/dist/admin/setup.service.d.ts +19 -27
- package/dist/admin/setup.service.js +61 -61
- package/dist/agents/agent-lookup.d.ts +53 -0
- package/dist/agents/agent-lookup.js +179 -0
- package/dist/agents/agents.controller.d.ts +1 -1
- package/dist/agents/agents.controller.js +14 -8
- package/dist/agents/agents.module.d.ts +7 -0
- package/dist/agents/agents.module.js +41 -0
- package/dist/agents/agents.service.d.ts +39 -58
- package/dist/agents/agents.service.js +261 -329
- package/dist/agents/definition.d.ts +8 -0
- package/dist/agents/definition.js +8 -0
- package/dist/agents/models.controller.d.ts +1 -1
- package/dist/agents/models.controller.js +2 -2
- package/dist/agents/templates.controller.d.ts +1 -1
- package/dist/agents/templates.controller.js +2 -2
- package/dist/agents/templates.d.ts +6 -8
- package/dist/agents/templates.js +20 -4
- package/dist/app.d.ts +93 -0
- package/dist/app.js +150 -0
- package/dist/catalog/admin-catalog.controller.d.ts +3 -3
- package/dist/catalog/admin-catalog.controller.js +27 -13
- package/dist/catalog/catalog-content.d.ts +185 -0
- package/dist/catalog/catalog-content.js +323 -0
- package/dist/catalog/catalog-items.d.ts +186 -0
- package/dist/catalog/catalog-items.js +410 -0
- package/dist/catalog/catalog.module.d.ts +14 -0
- package/dist/catalog/catalog.module.js +71 -0
- package/dist/catalog/catalog.service.d.ts +34 -188
- package/dist/catalog/catalog.service.js +155 -489
- package/dist/catalog/cli.d.ts +3 -2
- package/dist/catalog/cli.js +13 -31
- package/dist/catalog/job-ids.d.ts +15 -0
- package/dist/catalog/job-ids.js +15 -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/marketplaces.controller.d.ts +4 -4
- package/dist/catalog/marketplaces.controller.js +22 -11
- package/dist/catalog/marketplaces.service.d.ts +30 -13
- package/dist/catalog/marketplaces.service.js +330 -256
- package/dist/catalog/org-catalog.controller.d.ts +4 -3
- package/dist/catalog/org-catalog.controller.js +29 -14
- package/dist/catalog/org-catalog.service.d.ts +32 -198
- package/dist/catalog/org-catalog.service.js +159 -400
- package/dist/catalog/plugin-import.d.ts +73 -34
- package/dist/catalog/plugin-import.js +356 -217
- package/dist/catalog/plugin-install.d.ts +83 -41
- package/dist/catalog/plugin-install.js +421 -269
- package/dist/catalog/plugin-upgrade.d.ts +59 -4
- package/dist/catalog/plugin-upgrade.js +407 -282
- package/dist/catalog/requests.service.d.ts +27 -15
- package/dist/catalog/requests.service.js +201 -145
- package/dist/catalog/upgrade-targets.d.ts +4 -7
- package/dist/channels/actions.d.ts +6 -4
- package/dist/channels/actions.js +1 -1
- package/dist/channels/cards.d.ts +2 -2
- package/dist/channels/channels.module.d.ts +40 -0
- package/dist/channels/channels.module.js +128 -0
- package/dist/channels/connections.controller.d.ts +1 -1
- package/dist/channels/connections.controller.js +11 -6
- package/dist/channels/connections.service.d.ts +43 -21
- package/dist/channels/connections.service.js +236 -131
- package/dist/channels/inbound.d.ts +34 -38
- package/dist/channels/inbound.js +107 -41
- 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 +60 -82
- package/dist/channels/outbound.js +165 -193
- package/dist/channels/supervisor.d.ts +88 -46
- package/dist/channels/supervisor.js +230 -132
- package/dist/channels/threads.d.ts +29 -8
- package/dist/channels/threads.js +71 -13
- package/dist/channels/webhook.d.ts +20 -14
- package/dist/channels/webhook.js +51 -20
- 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 +16 -1
- package/dist/config/schema.js +54 -7
- package/dist/conversations/access.d.ts +29 -0
- package/dist/conversations/access.js +86 -0
- package/dist/conversations/artifacts.d.ts +10 -10
- package/dist/conversations/artifacts.js +35 -9
- 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 +30 -22
- package/dist/conversations/attachments.service.js +119 -46
- package/dist/conversations/conversations.controller.d.ts +8 -7
- package/dist/conversations/conversations.controller.js +59 -29
- package/dist/conversations/conversations.module.d.ts +8 -0
- package/dist/conversations/conversations.module.js +69 -0
- package/dist/conversations/conversations.service.d.ts +40 -38
- package/dist/conversations/conversations.service.js +130 -140
- package/dist/conversations/event-log.d.ts +28 -18
- package/dist/conversations/event-log.js +74 -27
- 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/outputs-read.d.ts +11 -11
- package/dist/conversations/outputs-read.js +31 -7
- package/dist/conversations/queue.d.ts +48 -56
- package/dist/conversations/queue.js +13 -289
- package/dist/conversations/queue.service.d.ts +60 -0
- package/dist/conversations/queue.service.js +343 -0
- package/dist/conversations/sandbox-status.d.ts +13 -10
- package/dist/conversations/sandbox-status.js +36 -8
- package/dist/conversations/titles.d.ts +71 -24
- package/dist/conversations/titles.js +159 -62
- package/dist/ctx/bus.js +9 -3
- package/dist/ctx/create-ctx.d.ts +6 -0
- package/dist/ctx/create-ctx.js +7 -9
- 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 +2 -2
- package/dist/db/pool.d.ts +5 -0
- package/dist/db/pool.js +1 -0
- package/dist/errors.d.ts +2 -0
- package/dist/errors.js +2 -0
- 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/jobs.d.ts +20 -0
- package/dist/evals/jobs.js +45 -0
- package/dist/evals/run-replay.d.ts +56 -8
- package/dist/evals/run-replay.js +140 -80
- package/dist/evals/runs.controller.d.ts +1 -1
- package/dist/evals/runs.controller.js +17 -8
- package/dist/evals/runs.service.d.ts +23 -45
- package/dist/evals/runs.service.js +245 -234
- package/dist/evals/sets.controller.d.ts +1 -1
- package/dist/evals/sets.controller.js +17 -8
- package/dist/evals/sets.service.d.ts +22 -6
- package/dist/evals/sets.service.js +248 -194
- package/dist/evals/snapshot.d.ts +2 -2
- package/dist/evals/step-replay.d.ts +2 -2
- package/dist/evals/step-replay.js +1 -1
- package/dist/evals/trajectory.controller.d.ts +1 -1
- package/dist/evals/trajectory.controller.js +11 -7
- package/dist/evals/trajectory.service.d.ts +5 -4
- package/dist/evals/trajectory.service.js +30 -7
- package/dist/evals/worker.d.ts +44 -27
- package/dist/evals/worker.js +220 -120
- package/dist/extensions/admin-ops.d.ts +61 -33
- package/dist/extensions/admin-ops.js +248 -154
- package/dist/extensions/admin-view.d.ts +38 -27
- package/dist/extensions/admin-view.js +126 -55
- package/dist/extensions/approvals.d.ts +12 -8
- package/dist/extensions/approvals.js +73 -46
- package/dist/extensions/blobs.d.ts +27 -10
- package/dist/extensions/blobs.js +111 -45
- package/dist/extensions/bootstrap.d.ts +96 -42
- package/dist/extensions/bootstrap.js +303 -155
- package/dist/extensions/cli.d.ts +20 -10
- package/dist/extensions/cli.js +41 -96
- package/dist/extensions/config-issues.d.ts +7 -0
- package/dist/extensions/config-issues.js +31 -0
- package/dist/extensions/deployment-config-store.d.ts +49 -0
- package/dist/extensions/deployment-config-store.js +133 -0
- package/dist/extensions/deployment-config.d.ts +58 -67
- package/dist/extensions/deployment-config.js +202 -230
- package/dist/extensions/enabled.d.ts +5 -5
- package/dist/extensions/extensions.module.d.ts +8 -0
- package/dist/extensions/extensions.module.js +77 -0
- package/dist/extensions/hooks.d.ts +3 -2
- package/dist/extensions/hooks.js +1 -1
- package/dist/extensions/host.d.ts +72 -68
- package/dist/extensions/host.js +191 -152
- package/dist/extensions/installs.d.ts +49 -16
- package/dist/extensions/installs.js +128 -32
- 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 +33 -0
- package/dist/extensions/locks.js +86 -0
- package/dist/extensions/migrate-lock.d.ts +3 -4
- package/dist/extensions/org-config.controller.d.ts +1 -1
- package/dist/extensions/org-config.controller.js +8 -5
- package/dist/extensions/org-config.d.ts +48 -46
- package/dist/extensions/org-config.js +284 -226
- package/dist/extensions/registry.d.ts +50 -2
- package/dist/extensions/registry.js +89 -4
- package/dist/extensions/sources.d.ts +12 -8
- package/dist/extensions/sources.js +34 -13
- 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 +17 -9
- package/dist/files/previewers.d.ts +13 -18
- package/dist/files/previewers.js +83 -36
- 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 +47 -355
- package/dist/http/app.d.ts +11 -15
- package/dist/http/app.js +52 -47
- 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/identity/accounts.d.ts +82 -29
- package/dist/identity/accounts.js +294 -175
- package/dist/identity/api-tokens.d.ts +11 -7
- package/dist/identity/api-tokens.js +71 -44
- package/dist/identity/audit.d.ts +7 -4
- package/dist/identity/audit.js +5 -1
- package/dist/identity/auth.controller.d.ts +11 -10
- package/dist/identity/auth.controller.js +31 -25
- package/dist/identity/auth.guard.d.ts +3 -3
- package/dist/identity/auth.guard.js +6 -4
- package/dist/identity/binding.d.ts +9 -11
- package/dist/identity/binding.js +41 -13
- package/dist/identity/enterprise-admin.d.ts +18 -12
- package/dist/identity/enterprise-admin.js +67 -13
- 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 +56 -0
- package/dist/identity/me.controller.d.ts +16 -15
- package/dist/identity/me.controller.js +37 -31
- package/dist/identity/sessions.d.ts +12 -10
- package/dist/identity/sessions.js +74 -42
- package/dist/identity/settings.d.ts +20 -14
- package/dist/identity/settings.js +85 -57
- 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/inbox/inbox.module.d.ts +3 -0
- package/dist/inbox/inbox.module.js +22 -0
- package/dist/inbox/inbox.service.d.ts +7 -9
- package/dist/inbox/inbox.service.js +32 -11
- package/dist/index.d.ts +19 -12
- package/dist/index.js +13 -8
- 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 +165 -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 +126 -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 +90 -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 +96 -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 +86 -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 +16 -0
- package/dist/infra/logging/logging.module.js +34 -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 +7 -0
- package/dist/infra/queue/redis-connection.js +18 -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 +87 -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 +31 -0
- package/dist/infra/throttler/named-throttlers.js +119 -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 +15 -0
- package/dist/infra/tokens.js +15 -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 +136 -0
- package/dist/lifecycle/kernel-lifecycle.d.ts +140 -0
- package/dist/lifecycle/kernel-lifecycle.js +451 -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 +41 -10
- package/dist/log.js +91 -17
- package/dist/models/models.module.d.ts +3 -0
- package/dist/models/models.module.js +24 -0
- package/dist/models/prices.d.ts +8 -2
- package/dist/models/prices.js +65 -37
- package/dist/models/purposes.controller.d.ts +1 -1
- package/dist/models/purposes.controller.js +5 -6
- package/dist/models/purposes.d.ts +35 -13
- package/dist/models/purposes.js +101 -51
- 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 +61 -31
- package/dist/orgs/directory-sync.js +212 -125
- 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 +54 -57
- package/dist/orgs/offboarding.js +161 -71
- package/dist/orgs/org-lock.d.ts +28 -19
- package/dist/orgs/org-lock.js +81 -35
- package/dist/orgs/org.guard.d.ts +1 -1
- package/dist/orgs/org.guard.js +2 -2
- package/dist/orgs/orgs.controller.d.ts +13 -13
- package/dist/orgs/orgs.controller.js +29 -17
- package/dist/orgs/orgs.module.d.ts +6 -0
- package/dist/orgs/orgs.module.js +68 -0
- package/dist/orgs/orgs.service.d.ts +30 -19
- package/dist/orgs/orgs.service.js +139 -86
- package/dist/orgs/settings.controller.d.ts +1 -1
- package/dist/orgs/settings.controller.js +8 -6
- package/dist/orgs/settings.service.d.ts +14 -8
- package/dist/orgs/settings.service.js +75 -46
- package/dist/overrides.d.ts +56 -0
- package/dist/overrides.js +30 -0
- package/dist/roles/gateway-role.d.ts +43 -0
- package/dist/roles/gateway-role.js +98 -0
- package/dist/roles/gateway.module.d.ts +8 -0
- package/dist/roles/gateway.module.js +28 -0
- package/dist/roles/worker-role.d.ts +63 -0
- package/dist/roles/worker-role.js +144 -0
- package/dist/roles/worker.module.d.ts +14 -0
- package/dist/roles/worker.module.js +90 -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/conversation-lock.d.ts +20 -11
- package/dist/runtime/conversation-lock.js +62 -72
- package/dist/runtime/hook-calls.d.ts +3 -3
- package/dist/runtime/hook-calls.js +1 -6
- package/dist/runtime/job-ids.d.ts +10 -0
- package/dist/runtime/job-ids.js +10 -0
- package/dist/runtime/langgraph-loop.js +1 -1
- package/dist/runtime/loop.d.ts +7 -0
- 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 +45 -74
- package/dist/runtime/maintenance.js +139 -136
- package/dist/runtime/model-call.d.ts +7 -4
- package/dist/runtime/model-call.js +24 -57
- package/dist/runtime/providers.d.ts +17 -6
- package/dist/runtime/providers.js +66 -25
- 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-control.d.ts +33 -0
- package/dist/runtime/run-control.js +77 -0
- package/dist/runtime/run-finish.d.ts +26 -17
- package/dist/runtime/run-finish.js +98 -51
- package/dist/runtime/run-jobs.d.ts +48 -0
- package/dist/runtime/run-jobs.js +95 -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 +32 -57
- package/dist/runtime/run-queue.js +291 -295
- package/dist/runtime/run-steps.d.ts +39 -0
- package/dist/runtime/run-steps.js +96 -0
- package/dist/runtime/run-worker.d.ts +121 -75
- package/dist/runtime/run-worker.js +340 -225
- package/dist/runtime/runtime.module.d.ts +10 -0
- package/dist/runtime/runtime.module.js +112 -0
- package/dist/runtime/step-log.d.ts +40 -0
- package/dist/runtime/step-log.js +94 -0
- package/dist/runtime/stream.controller.d.ts +5 -8
- package/dist/runtime/stream.controller.js +14 -12
- package/dist/runtime/stream.d.ts +24 -6
- package/dist/runtime/stream.js +78 -7
- package/dist/runtime/subagents/child.d.ts +3 -44
- package/dist/runtime/subagents/child.js +0 -79
- package/dist/runtime/subagents/definition.d.ts +4 -4
- package/dist/runtime/subagents/definition.js +2 -2
- package/dist/runtime/subagents/dispatch.d.ts +87 -6
- package/dist/runtime/subagents/dispatch.js +135 -140
- package/dist/runtime/subagents/limits.d.ts +9 -4
- package/dist/runtime/subagents/limits.js +4 -2
- package/dist/runtime/subagents/org-agents.d.ts +4 -4
- package/dist/runtime/subagents/org-agents.js +1 -1
- package/dist/runtime/subagents/progress.d.ts +2 -2
- package/dist/runtime/subagents/roster.d.ts +3 -3
- package/dist/runtime/subagents/roster.js +1 -1
- package/dist/runtime/subagents/skill-fork.d.ts +6 -7
- package/dist/runtime/subagents/skill-fork.js +16 -5
- package/dist/runtime/subagents/subagents.service.d.ts +40 -0
- package/dist/runtime/subagents/subagents.service.js +101 -0
- package/dist/runtime/usage-report.d.ts +94 -52
- package/dist/runtime/usage-report.js +200 -99
- package/dist/runtime/waits.d.ts +125 -57
- package/dist/runtime/waits.js +431 -208
- package/dist/sandbox/job-ids.d.ts +10 -0
- package/dist/sandbox/job-ids.js +10 -0
- package/dist/sandbox/jobs.d.ts +41 -0
- package/dist/sandbox/jobs.js +113 -0
- package/dist/sandbox/leases.d.ts +39 -31
- package/dist/sandbox/leases.js +117 -257
- package/dist/sandbox/providers.d.ts +19 -0
- package/dist/sandbox/providers.js +38 -0
- package/dist/sandbox/sandbox.module.d.ts +8 -0
- package/dist/sandbox/sandbox.module.js +30 -0
- package/dist/sandbox/sandbox.service.d.ts +24 -29
- package/dist/sandbox/sandbox.service.js +106 -75
- package/dist/skills/catalog.d.ts +33 -20
- package/dist/skills/catalog.js +96 -53
- package/dist/skills/changes.controller.d.ts +4 -4
- package/dist/skills/changes.controller.js +15 -9
- package/dist/skills/changes.service.d.ts +28 -18
- package/dist/skills/changes.service.js +421 -364
- package/dist/skills/invocable.controller.d.ts +1 -1
- package/dist/skills/invocable.controller.js +8 -5
- package/dist/skills/invoke.d.ts +16 -15
- package/dist/skills/invoke.js +48 -17
- package/dist/skills/skills.controller.d.ts +1 -1
- package/dist/skills/skills.controller.js +11 -6
- package/dist/skills/skills.module.d.ts +6 -0
- package/dist/skills/skills.module.js +30 -0
- package/dist/skills/skills.service.d.ts +47 -30
- package/dist/skills/skills.service.js +221 -158
- 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/tools/approvals.controller.d.ts +1 -1
- package/dist/tools/approvals.controller.js +12 -8
- package/dist/tools/approvals.service.d.ts +27 -25
- package/dist/tools/approvals.service.js +324 -258
- package/dist/tools/breaker.d.ts +2 -2
- package/dist/tools/breaker.js +21 -3
- package/dist/tools/builtins/ask-user.d.ts +2 -2
- package/dist/tools/builtins/ask-user.js +1 -1
- package/dist/tools/builtins/builtin-tools.d.ts +21 -0
- package/dist/tools/builtins/builtin-tools.js +80 -0
- package/dist/tools/builtins/read-tool-output.d.ts +2 -2
- package/dist/tools/builtins/read-tool-output.js +1 -1
- package/dist/tools/builtins/sandbox/bash.js +2 -2
- package/dist/tools/builtins/sandbox/common.d.ts +7 -4
- package/dist/tools/builtins/sandbox/common.js +5 -3
- package/dist/tools/builtins/sandbox/deliver.js +2 -2
- package/dist/tools/builtins/sandbox/edit.js +1 -1
- package/dist/tools/builtins/sandbox/glob.js +2 -2
- package/dist/tools/builtins/sandbox/grep.js +2 -2
- package/dist/tools/builtins/sandbox/read.js +1 -1
- package/dist/tools/builtins/sandbox/write.js +1 -1
- package/dist/tools/builtins/skill-load.d.ts +3 -3
- package/dist/tools/builtins/skill-load.js +1 -1
- 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 +1 -1
- package/dist/tools/connectors.controller.js +21 -10
- package/dist/tools/connectors.service.d.ts +31 -13
- package/dist/tools/connectors.service.js +434 -344
- package/dist/tools/credentials.d.ts +17 -20
- package/dist/tools/credentials.js +55 -34
- package/dist/tools/drift.d.ts +29 -41
- package/dist/tools/drift.js +111 -79
- package/dist/tools/info.d.ts +12 -9
- package/dist/tools/info.js +33 -7
- 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/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 +11 -3
- package/dist/tools/oauth/tokens.js +15 -14
- package/dist/tools/outputs.d.ts +13 -4
- package/dist/tools/outputs.js +47 -3
- package/dist/tools/pipeline.d.ts +62 -46
- package/dist/tools/pipeline.js +145 -64
- package/dist/tools/policy.d.ts +2 -2
- package/dist/tools/questions.controller.d.ts +1 -1
- package/dist/tools/questions.controller.js +8 -5
- package/dist/tools/questions.service.d.ts +25 -24
- package/dist/tools/questions.service.js +201 -142
- package/dist/tools/registry.d.ts +30 -20
- package/dist/tools/registry.js +73 -37
- 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 +91 -0
- 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 +9 -57
- package/dist/ui/views.js +43 -45
- package/package.json +11 -2
- 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/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/http/{gateway.module.d.ts → gateway-routes.d.ts} +0 -0
- /package/dist/http/{gateway.module.js → gateway-routes.js} +0 -0
package/dist/tools/registry.js
CHANGED
|
@@ -1,11 +1,28 @@
|
|
|
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
|
+
};
|
|
1
10
|
import { createHash } from "node:crypto";
|
|
11
|
+
import { Inject, Injectable } from "@nestjs/common";
|
|
12
|
+
import { ExtensionHost } from "../extensions/host.js";
|
|
13
|
+
import { ExtensionRegistry } from "../extensions/registry.js";
|
|
14
|
+
import { KernelConfigService } from "../infra/config/kernel-config.service.js";
|
|
15
|
+
import { KernelDb } from "../infra/database/kernel-db.js";
|
|
2
16
|
import { readOrgSettings } from "../orgs/settings.service.js";
|
|
3
17
|
import { estimateTokens } from "../runtime/context/tokens.js";
|
|
4
18
|
import { SUBAGENT_LIMIT_DEFAULTS, subagentLimits } from "../runtime/subagents/limits.js";
|
|
5
19
|
import { resolveRoster } from "../runtime/subagents/roster.js";
|
|
6
20
|
import { AGENT_TOOL, agentToolSpec } from "./builtins/agent.js";
|
|
21
|
+
import { BuiltinTools } from "./builtins/builtin-tools.js";
|
|
7
22
|
import { SANDBOX_TOOL_NAMES } from "./builtins/sandbox/names.js";
|
|
23
|
+
import { canonicalJson } from "./canonical-json.js";
|
|
8
24
|
import { toolKey, toolKeyIssue } from "./naming.js";
|
|
25
|
+
export { canonicalJson } from "./canonical-json.js";
|
|
9
26
|
/**
|
|
10
27
|
* 内核内置工具的名字(Task 10 / Task 19 实现;M5 T8 加沙箱工具)。保存 agent 时内置工具引用按这份清单校验,
|
|
11
28
|
* 不依赖当前是否已注册,避免实现落地顺序影响已保存的定义;运行时未注册的照常报不可用。
|
|
@@ -21,18 +38,6 @@ export const BUILTIN_TOOL_NAMES = [
|
|
|
21
38
|
// phase C: dispatches sub-agents; its description is built per agent from the roster
|
|
22
39
|
"agent",
|
|
23
40
|
];
|
|
24
|
-
/** 键排序、去掉 undefined 的 JSON(jsonb 不保留键顺序,指纹必须与顺序无关)。 */
|
|
25
|
-
export function canonicalJson(v) {
|
|
26
|
-
if (Array.isArray(v))
|
|
27
|
-
return `[${v.map(canonicalJson).join(",")}]`;
|
|
28
|
-
if (v !== null && typeof v === "object") {
|
|
29
|
-
const entries = Object.entries(v)
|
|
30
|
-
.filter(([, x]) => x !== undefined)
|
|
31
|
-
.sort(([a], [b]) => (a < b ? -1 : a > b ? 1 : 0));
|
|
32
|
-
return `{${entries.map(([k, x]) => `${JSON.stringify(k)}:${canonicalJson(x)}`).join(",")}}`;
|
|
33
|
-
}
|
|
34
|
-
return JSON.stringify(v);
|
|
35
|
-
}
|
|
36
41
|
/** The first 16 hex digits of sha256(canonicalJson(v)): a fingerprint independent of key order. */
|
|
37
42
|
export function contentHash(v) {
|
|
38
43
|
return createHash("sha256").update(canonicalJson(v)).digest("hex").slice(0, 16);
|
|
@@ -97,14 +102,35 @@ const sourceId = (s) => s.kind === "builtin"
|
|
|
97
102
|
* Only the first of a key is kept; the same source referenced twice is deduplicated silently,
|
|
98
103
|
* different sources with the same key report a duplicate.
|
|
99
104
|
*/
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
105
|
+
let ToolRegistry = class ToolRegistry {
|
|
106
|
+
db;
|
|
107
|
+
host;
|
|
108
|
+
extensions;
|
|
109
|
+
builtinTools;
|
|
110
|
+
config;
|
|
111
|
+
constructor(db,
|
|
112
|
+
/** Extension tools and the organization's enabled extensions. */
|
|
113
|
+
host,
|
|
114
|
+
/** The installed connectors (`connector@1`, from the extension registry). */
|
|
115
|
+
extensions, builtinTools,
|
|
116
|
+
/**
|
|
117
|
+
* `tools.searchThreshold*` and the sub-agent limits. Absent (some tests): `tool_search` is never
|
|
118
|
+
* offered and the sub-agent limits are the schema defaults.
|
|
119
|
+
*/
|
|
120
|
+
config) {
|
|
121
|
+
this.db = db;
|
|
122
|
+
this.host = host;
|
|
123
|
+
this.extensions = extensions;
|
|
124
|
+
this.builtinTools = builtinTools;
|
|
125
|
+
this.config = config;
|
|
126
|
+
}
|
|
127
|
+
/** The kernel's builtin tools (`tool_search` is added by {@link forAgent}, not by definitions). */
|
|
128
|
+
get builtins() {
|
|
129
|
+
return this.builtinTools.list();
|
|
104
130
|
}
|
|
105
131
|
/** `host.list("connector")` 中 `kind` 匹配的第一个实现;未安装返回 undefined。 */
|
|
106
132
|
findConnector(kind) {
|
|
107
|
-
for (const e of this.
|
|
133
|
+
for (const e of this.extensions.list("connector")) {
|
|
108
134
|
const impl = e.impl;
|
|
109
135
|
if (impl?.kind === kind)
|
|
110
136
|
return impl;
|
|
@@ -127,10 +153,10 @@ export class ToolRegistry {
|
|
|
127
153
|
*/
|
|
128
154
|
handler(source) {
|
|
129
155
|
if (source.kind === "builtin") {
|
|
130
|
-
return this.
|
|
156
|
+
return this.builtins.find((b) => b.spec.name === source.name)?.run;
|
|
131
157
|
}
|
|
132
158
|
if (source.kind === "plugin") {
|
|
133
|
-
const t = this.
|
|
159
|
+
const t = this.host
|
|
134
160
|
.tools()
|
|
135
161
|
.find((x) => x.plugin === source.plugin && x.spec.name === source.name);
|
|
136
162
|
if (!t)
|
|
@@ -141,15 +167,15 @@ export class ToolRegistry {
|
|
|
141
167
|
}
|
|
142
168
|
/** The registered builtin tools' specs (display metadata for `tools/info.ts`). */
|
|
143
169
|
builtinSpecs() {
|
|
144
|
-
return this.
|
|
170
|
+
return this.builtins.map((b) => b.spec);
|
|
145
171
|
}
|
|
146
172
|
/** The loaded extensions' registered tool specs, with their extension's name. */
|
|
147
173
|
extensionToolSpecs() {
|
|
148
|
-
return this.
|
|
174
|
+
return this.host.tools().map((t) => ({ plugin: t.plugin, spec: t.spec }));
|
|
149
175
|
}
|
|
150
176
|
/** 已安装连接器的 kind 列表(去重,按加载顺序)。 */
|
|
151
177
|
connectorKinds() {
|
|
152
|
-
return [...new Set(this.
|
|
178
|
+
return [...new Set(this.extensions.list("connector").map((e) => e.impl.kind))];
|
|
153
179
|
}
|
|
154
180
|
/**
|
|
155
181
|
* 保存 agent 时校验工具引用(只看「存在」,停用 / 待复核 / 插件未启用等运行时状态不拒绝,由 `forAgent` 报不可用):
|
|
@@ -162,7 +188,7 @@ export class ToolRegistry {
|
|
|
162
188
|
async checkRefs(orgId, refs) {
|
|
163
189
|
const issues = [];
|
|
164
190
|
const owner = new Map();
|
|
165
|
-
const pluginTools = this.
|
|
191
|
+
const pluginTools = this.host.tools();
|
|
166
192
|
const connectorIds = [
|
|
167
193
|
...new Set(refs.flatMap((r) => (r.kind === "connector" ? [r.connectorId] : []))),
|
|
168
194
|
];
|
|
@@ -227,7 +253,7 @@ export class ToolRegistry {
|
|
|
227
253
|
*/
|
|
228
254
|
async forAgent(orgId, def) {
|
|
229
255
|
const { tools, unavailable, hidden } = await this.resolve(orgId, def);
|
|
230
|
-
const sl = def.skillLoad === true && this.
|
|
256
|
+
const sl = def.skillLoad === true && this.builtins.find((x) => x.spec.name === SKILL_LOAD);
|
|
231
257
|
if (sl) {
|
|
232
258
|
tools.push({
|
|
233
259
|
key: SKILL_LOAD,
|
|
@@ -240,7 +266,7 @@ export class ToolRegistry {
|
|
|
240
266
|
}
|
|
241
267
|
const toolSearch = await this.searchActive(orgId, tools);
|
|
242
268
|
if (toolSearch) {
|
|
243
|
-
const b = this.
|
|
269
|
+
const b = this.builtins.find((x) => x.spec.name === TOOL_SEARCH);
|
|
244
270
|
tools.push({
|
|
245
271
|
key: TOOL_SEARCH,
|
|
246
272
|
source: { kind: "builtin", name: TOOL_SEARCH },
|
|
@@ -253,14 +279,14 @@ export class ToolRegistry {
|
|
|
253
279
|
}
|
|
254
280
|
/** 是否启用 `tool_search`(见 {@link forAgent});先比阈值,超过才读组织设置。 */
|
|
255
281
|
async searchActive(orgId, tools) {
|
|
256
|
-
const cfg = this.
|
|
257
|
-
if (!cfg || !this.
|
|
282
|
+
const cfg = this.config?.get().tools;
|
|
283
|
+
if (!cfg || !this.builtins.some((b) => b.spec.name === TOOL_SEARCH))
|
|
258
284
|
return false;
|
|
259
285
|
const over = tools.length > cfg.searchThresholdTools ||
|
|
260
286
|
estimateToolTokens(tools) > cfg.searchThresholdTokens;
|
|
261
287
|
if (!over)
|
|
262
288
|
return false;
|
|
263
|
-
return (await readOrgSettings(this.
|
|
289
|
+
return (await readOrgSettings(this.db.db, orgId)).toolSearch === "on";
|
|
264
290
|
}
|
|
265
291
|
async resolve(orgId, def) {
|
|
266
292
|
const tools = [];
|
|
@@ -288,12 +314,12 @@ export class ToolRegistry {
|
|
|
288
314
|
...new Set(def.tools.flatMap((r) => (r.kind === "connector" ? [r.connectorId] : []))),
|
|
289
315
|
];
|
|
290
316
|
const apps = await this.loadConnectors(orgId, connectorIds);
|
|
291
|
-
const pluginTools = this.
|
|
317
|
+
const pluginTools = this.host.tools();
|
|
292
318
|
for (const ref of def.tools) {
|
|
293
319
|
if (ref.kind === "builtin") {
|
|
294
320
|
if (ref.name === TOOL_SEARCH || ref.name === SKILL_LOAD)
|
|
295
321
|
continue;
|
|
296
|
-
const b = this.
|
|
322
|
+
const b = this.builtins.find((x) => x.spec.name === ref.name);
|
|
297
323
|
if (!b) {
|
|
298
324
|
unavailable.push({ ref: ref.name, reason: "Built-in tool does not exist" });
|
|
299
325
|
continue;
|
|
@@ -307,7 +333,7 @@ export class ToolRegistry {
|
|
|
307
333
|
// empty roster there is nothing to dispatch, so the tool is not offered at all
|
|
308
334
|
let spec = b.spec;
|
|
309
335
|
if (b.spec.name === AGENT_TOOL) {
|
|
310
|
-
const roster = await resolveRoster(this.
|
|
336
|
+
const roster = await resolveRoster(this.db.db, orgId, { subagents: def.subagents });
|
|
311
337
|
if (roster.length === 0)
|
|
312
338
|
continue;
|
|
313
339
|
spec = agentToolSpec(roster, await this.maxConcurrentSubagents(orgId));
|
|
@@ -420,19 +446,20 @@ export class ToolRegistry {
|
|
|
420
446
|
* schema default.
|
|
421
447
|
*/
|
|
422
448
|
async maxConcurrentSubagents(orgId) {
|
|
423
|
-
const
|
|
424
|
-
|
|
449
|
+
const cfg = this.config;
|
|
450
|
+
const config = cfg ?? { get: () => ({ subagents: SUBAGENT_LIMIT_DEFAULTS }) };
|
|
451
|
+
return (await subagentLimits(this.db.db, config, orgId)).maxConcurrentPerRun;
|
|
425
452
|
}
|
|
426
453
|
/** Plugins the organization enabled (built-in plugins always count as enabled, C14). */
|
|
427
454
|
async enabledPlugins(orgId) {
|
|
428
|
-
return this.
|
|
455
|
+
return this.host.enabledPlugins(orgId);
|
|
429
456
|
}
|
|
430
457
|
async loadConnectors(orgId, ids) {
|
|
431
458
|
const out = new Map();
|
|
432
459
|
if (ids.length === 0)
|
|
433
460
|
return out;
|
|
434
461
|
// 软删除的连接器也读出来,只为给出「已删除」这个更准确的原因(slug 可能已被新连接器复用,按 id 区分)
|
|
435
|
-
const apps = await this.
|
|
462
|
+
const apps = await this.db
|
|
436
463
|
.selectFrom("connectors")
|
|
437
464
|
.select(["id", "slug", "connector", "status", "deleted_at"])
|
|
438
465
|
.where("org_id", "=", orgId)
|
|
@@ -441,7 +468,7 @@ export class ToolRegistry {
|
|
|
441
468
|
const live = apps.filter((a) => a.deleted_at === null).map((a) => a.id);
|
|
442
469
|
const toolRows = live.length === 0
|
|
443
470
|
? []
|
|
444
|
-
: await this.
|
|
471
|
+
: await this.db
|
|
445
472
|
.selectFrom("connector_tools")
|
|
446
473
|
.select([
|
|
447
474
|
"connector_id",
|
|
@@ -478,4 +505,13 @@ export class ToolRegistry {
|
|
|
478
505
|
}
|
|
479
506
|
return out;
|
|
480
507
|
}
|
|
481
|
-
}
|
|
508
|
+
};
|
|
509
|
+
ToolRegistry = __decorate([
|
|
510
|
+
Injectable(),
|
|
511
|
+
__param(0, Inject(KernelDb)),
|
|
512
|
+
__param(1, Inject(ExtensionHost)),
|
|
513
|
+
__param(2, Inject(ExtensionRegistry)),
|
|
514
|
+
__param(3, Inject(BuiltinTools)),
|
|
515
|
+
__param(4, Inject(KernelConfigService))
|
|
516
|
+
], ToolRegistry);
|
|
517
|
+
export { ToolRegistry };
|
package/dist/tools/specs.d.ts
CHANGED
|
@@ -1,14 +1,15 @@
|
|
|
1
1
|
import type { ToolSpec } from "@capybara-hq/plugin-sdk";
|
|
2
|
-
import type {
|
|
3
|
-
import type { KernelDatabase, KernelDb } from "../db/kernel-schema.js";
|
|
2
|
+
import type { KernelSchemaDb } from "../db/kernel-schema.js";
|
|
4
3
|
/**
|
|
5
4
|
* 把工具定义按指纹存进 `capybara.tool_specs`(内容寻址:同一指纹只存一次,已存在不改)。
|
|
6
5
|
* `model_call` 只记 `{key, specHash}`,定义本身存这里——连接器刷新 / 插件升级改了定义之后,早先请求用过的定义
|
|
7
6
|
* 仍可按指纹取回,模型请求可由日志还原。
|
|
8
7
|
*/
|
|
9
|
-
export declare function recordToolSpecs(
|
|
8
|
+
export declare function recordToolSpecs(
|
|
9
|
+
/** The pool or a transaction (a transaction is a Kysely handle too). */
|
|
10
|
+
db: KernelSchemaDb, specs: readonly {
|
|
10
11
|
specHash: string;
|
|
11
12
|
spec: ToolSpec;
|
|
12
13
|
}[]): Promise<void>;
|
|
13
14
|
/** 按指纹取回工具定义;没有记录 → null。 */
|
|
14
|
-
export declare function loadToolSpec(db:
|
|
15
|
+
export declare function loadToolSpec(db: KernelSchemaDb, specHash: string): Promise<ToolSpec | null>;
|
package/dist/tools/specs.js
CHANGED
|
@@ -3,7 +3,9 @@
|
|
|
3
3
|
* `model_call` 只记 `{key, specHash}`,定义本身存这里——连接器刷新 / 插件升级改了定义之后,早先请求用过的定义
|
|
4
4
|
* 仍可按指纹取回,模型请求可由日志还原。
|
|
5
5
|
*/
|
|
6
|
-
export async function recordToolSpecs(
|
|
6
|
+
export async function recordToolSpecs(
|
|
7
|
+
/** The pool or a transaction (a transaction is a Kysely handle too). */
|
|
8
|
+
db, specs) {
|
|
7
9
|
const unique = new Map();
|
|
8
10
|
for (const s of specs)
|
|
9
11
|
if (!unique.has(s.specHash))
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Tools and connectors: credentials, output archives, the builtin tools and the registry,
|
|
3
|
+
* approvals and questions (their decisions are the domain events `approval.decided` /
|
|
4
|
+
* `question.answered`), drift detection (the producer of the one-off `drift-connector` jobs the
|
|
5
|
+
* maintenance processor consumes), the breaker, connector content, the execution pipeline, org
|
|
6
|
+
* connectors and the OAuth connect flow. The periodic jobs (`ToolJobs`: the drift scan and the
|
|
7
|
+
* output cleanup) are the worker role's (`WorkerModule`).
|
|
8
|
+
*/
|
|
9
|
+
export declare class ToolsModule {
|
|
10
|
+
}
|
|
@@ -0,0 +1,91 @@
|
|
|
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
|
+
import { Module } from "@nestjs/common";
|
|
8
|
+
import { ConversationAccessModule } from "../conversations/access.js";
|
|
9
|
+
import { AttachmentsModule } from "../conversations/attachments.module.js";
|
|
10
|
+
import { EventLogModule } from "../conversations/event-log.js";
|
|
11
|
+
import { ExtensionsModule } from "../extensions/extensions.module.js";
|
|
12
|
+
import { QueueModule } from "../infra/queue/queue.module.js";
|
|
13
|
+
import { OrgLockModule } from "../orgs/org-lock.js";
|
|
14
|
+
import { MAINTENANCE_QUEUE_NAME } from "../runtime/maintenance-queue.js";
|
|
15
|
+
import { SubagentsModule } from "../runtime/subagents/subagents.service.js";
|
|
16
|
+
import { SandboxModule } from "../sandbox/sandbox.module.js";
|
|
17
|
+
import { SkillsModule } from "../skills/skills.module.js";
|
|
18
|
+
import { StorageModule } from "../storage/storage.module.js";
|
|
19
|
+
import { ApprovalsService } from "./approvals.service.js";
|
|
20
|
+
import { Breaker } from "./breaker.js";
|
|
21
|
+
import { BuiltinTools } from "./builtins/builtin-tools.js";
|
|
22
|
+
import { ConnectorContent } from "./connector-content.js";
|
|
23
|
+
import { ConnectorsService } from "./connectors.service.js";
|
|
24
|
+
import { Credentials } from "./credentials.js";
|
|
25
|
+
import { ToolDrift } from "./drift.js";
|
|
26
|
+
import { ConversationToolInfo } from "./info.js";
|
|
27
|
+
import { OAuthFlow } from "./oauth/flow.js";
|
|
28
|
+
import { ToolOutputs } from "./outputs.js";
|
|
29
|
+
import { ToolPipeline } from "./pipeline.js";
|
|
30
|
+
import { QuestionsService } from "./questions.service.js";
|
|
31
|
+
import { ToolRegistry } from "./registry.js";
|
|
32
|
+
/**
|
|
33
|
+
* Tools and connectors: credentials, output archives, the builtin tools and the registry,
|
|
34
|
+
* approvals and questions (their decisions are the domain events `approval.decided` /
|
|
35
|
+
* `question.answered`), drift detection (the producer of the one-off `drift-connector` jobs the
|
|
36
|
+
* maintenance processor consumes), the breaker, connector content, the execution pipeline, org
|
|
37
|
+
* connectors and the OAuth connect flow. The periodic jobs (`ToolJobs`: the drift scan and the
|
|
38
|
+
* output cleanup) are the worker role's (`WorkerModule`).
|
|
39
|
+
*/
|
|
40
|
+
let ToolsModule = class ToolsModule {
|
|
41
|
+
};
|
|
42
|
+
ToolsModule = __decorate([
|
|
43
|
+
Module({
|
|
44
|
+
imports: [
|
|
45
|
+
EventLogModule,
|
|
46
|
+
AttachmentsModule,
|
|
47
|
+
ExtensionsModule,
|
|
48
|
+
StorageModule,
|
|
49
|
+
SkillsModule,
|
|
50
|
+
OrgLockModule,
|
|
51
|
+
// the `agent` tool's dispatch
|
|
52
|
+
SubagentsModule,
|
|
53
|
+
// the builtin sandbox and skill tools run in the conversation's sandbox
|
|
54
|
+
SandboxModule,
|
|
55
|
+
// the conversation page's tool metadata reads only what the viewer may see
|
|
56
|
+
ConversationAccessModule,
|
|
57
|
+
QueueModule.registerQueue(MAINTENANCE_QUEUE_NAME),
|
|
58
|
+
],
|
|
59
|
+
providers: [
|
|
60
|
+
Credentials,
|
|
61
|
+
ToolOutputs,
|
|
62
|
+
BuiltinTools,
|
|
63
|
+
ToolRegistry,
|
|
64
|
+
ApprovalsService,
|
|
65
|
+
QuestionsService,
|
|
66
|
+
ToolDrift,
|
|
67
|
+
Breaker,
|
|
68
|
+
ConnectorContent,
|
|
69
|
+
ToolPipeline,
|
|
70
|
+
ConnectorsService,
|
|
71
|
+
OAuthFlow,
|
|
72
|
+
ConversationToolInfo,
|
|
73
|
+
],
|
|
74
|
+
exports: [
|
|
75
|
+
Credentials,
|
|
76
|
+
ToolOutputs,
|
|
77
|
+
BuiltinTools,
|
|
78
|
+
ToolRegistry,
|
|
79
|
+
ApprovalsService,
|
|
80
|
+
QuestionsService,
|
|
81
|
+
ToolDrift,
|
|
82
|
+
Breaker,
|
|
83
|
+
ConnectorContent,
|
|
84
|
+
ToolPipeline,
|
|
85
|
+
ConnectorsService,
|
|
86
|
+
OAuthFlow,
|
|
87
|
+
ConversationToolInfo,
|
|
88
|
+
],
|
|
89
|
+
})
|
|
90
|
+
], ToolsModule);
|
|
91
|
+
export { ToolsModule };
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import type { Logger } from "@capybara-hq/plugin-sdk";
|
|
2
|
+
/**
|
|
3
|
+
* Calls an extension with a time limit and an abort signal (plugin views, actions and file
|
|
4
|
+
* previewers): over the limit the signal aborts and the call is 504 `ui.timeout`; a throw is
|
|
5
|
+
* `failCode` (502) without echoing the extension's message. An `ApiError` thrown by `fn` passes.
|
|
6
|
+
*/
|
|
7
|
+
export declare function callExtension<T>(o: {
|
|
8
|
+
log: Pick<Logger, "warn">;
|
|
9
|
+
plugin: string;
|
|
10
|
+
what: string;
|
|
11
|
+
fields: Record<string, unknown>;
|
|
12
|
+
timeoutMs: number;
|
|
13
|
+
failCode: "ui.render_failed" | "ui.action_failed";
|
|
14
|
+
failMessage: string;
|
|
15
|
+
fn: (signal: AbortSignal) => Promise<T>;
|
|
16
|
+
}): Promise<T>;
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
import { ApiError } from "../errors.js";
|
|
2
|
+
/**
|
|
3
|
+
* Calls an extension with a time limit and an abort signal (plugin views, actions and file
|
|
4
|
+
* previewers): over the limit the signal aborts and the call is 504 `ui.timeout`; a throw is
|
|
5
|
+
* `failCode` (502) without echoing the extension's message. An `ApiError` thrown by `fn` passes.
|
|
6
|
+
*/
|
|
7
|
+
export async function callExtension(o) {
|
|
8
|
+
const ac = new AbortController();
|
|
9
|
+
let timer;
|
|
10
|
+
const timeout = new Promise((resolve) => {
|
|
11
|
+
timer = setTimeout(() => {
|
|
12
|
+
ac.abort(new Error(`plugin ui ${o.what} timed out`));
|
|
13
|
+
resolve("timeout");
|
|
14
|
+
}, o.timeoutMs);
|
|
15
|
+
});
|
|
16
|
+
try {
|
|
17
|
+
const r = await Promise.race([
|
|
18
|
+
Promise.resolve()
|
|
19
|
+
.then(() => o.fn(ac.signal))
|
|
20
|
+
.then((value) => ({ value })),
|
|
21
|
+
timeout,
|
|
22
|
+
]);
|
|
23
|
+
if (r === "timeout") {
|
|
24
|
+
o.log.warn(`plugin ui ${o.what} timed out`, { ...o.fields, timeoutMs: o.timeoutMs });
|
|
25
|
+
throw new ApiError("ui.timeout", `Plugin ${o.plugin} did not respond within ${o.timeoutMs / 1000}s`);
|
|
26
|
+
}
|
|
27
|
+
return r.value;
|
|
28
|
+
}
|
|
29
|
+
catch (e) {
|
|
30
|
+
if (e instanceof ApiError)
|
|
31
|
+
throw e;
|
|
32
|
+
o.log.warn(`plugin ui ${o.what} failed`, { ...o.fields, err: e });
|
|
33
|
+
throw new ApiError(o.failCode, o.failMessage);
|
|
34
|
+
}
|
|
35
|
+
finally {
|
|
36
|
+
clearTimeout(timer);
|
|
37
|
+
}
|
|
38
|
+
}
|
package/dist/ui/embed-token.d.ts
CHANGED
|
@@ -6,20 +6,21 @@ export declare const EMBED_TOKEN_TTL_SECONDS = 300;
|
|
|
6
6
|
export declare const EMBED_TOKEN_SKEW_SECONDS = 30;
|
|
7
7
|
/** HKDF 用途(keyring 派生时 info 为 `capybara:capybara-embed/1`),也是签名输入的域前缀。 */
|
|
8
8
|
export declare const EMBED_KEY_INFO = "capybara-embed/1";
|
|
9
|
+
/** Optional provider: the clock {@link EmbedTokens} issues and checks with (default `Date.now`; tests). */
|
|
10
|
+
export declare const EMBED_TOKEN_CLOCK: unique symbol;
|
|
9
11
|
/**
|
|
10
12
|
* 嵌入令牌:`base64url(JSON 声明).base64url(HMAC-SHA256(key, "capybara-embed/1." + 第一段))`。
|
|
11
13
|
* - 格式固定、没有头(没有 alg 可混淆);密钥由主密钥环经 HKDF 派生,轮换后上一把主密钥签的令牌仍可校验到过期;
|
|
12
14
|
* - 校验:严格 base64url、常量时间比较签名、逐字段核对声明、`exp` 容许 {@link EMBED_TOKEN_SKEW_SECONDS} 秒偏差、
|
|
13
15
|
* `exp` 不得超过「现在 + 有效期 + 偏差」、`plugin` 必须是调用方插件;任何一项不过都返回 null(不说明原因)。
|
|
14
|
-
* 无状态(不落库、不进 Redis):各副本用同一主密钥即可校验,不需要共享状态。
|
|
16
|
+
* 无状态(不落库、不进 Redis):各副本用同一主密钥即可校验,不需要共享状态。One provider: the UI
|
|
17
|
+
* routes issue tokens with it and every extension's `ctx` verifies them with it.
|
|
15
18
|
*/
|
|
16
19
|
export declare class EmbedTokens {
|
|
20
|
+
private readonly now;
|
|
17
21
|
private readonly current;
|
|
18
22
|
private readonly keys;
|
|
19
|
-
|
|
20
|
-
constructor(keyring: Keyring, opts?: {
|
|
21
|
-
now?: () => number;
|
|
22
|
-
});
|
|
23
|
+
constructor(keyring: Keyring, now?: () => number);
|
|
23
24
|
/** 签发:`exp` = 现在 + {@link EMBED_TOKEN_TTL_SECONDS}。 */
|
|
24
25
|
issue(c: Omit<EmbedClaims, "exp">): {
|
|
25
26
|
token: string;
|
|
@@ -29,3 +30,6 @@ export declare class EmbedTokens {
|
|
|
29
30
|
/** 校验令牌并要求它签给 `plugin`;不通过返回 null。 */
|
|
30
31
|
verify(token: unknown, plugin: string): EmbedClaims | null;
|
|
31
32
|
}
|
|
33
|
+
/** {@link EmbedTokens} on its own: the extension host (`ctx`) and the UI routes import it. */
|
|
34
|
+
export declare class EmbedTokensModule {
|
|
35
|
+
}
|
package/dist/ui/embed-token.js
CHANGED
|
@@ -1,4 +1,15 @@
|
|
|
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
|
+
};
|
|
1
10
|
import { createHmac, timingSafeEqual } from "node:crypto";
|
|
11
|
+
import { Inject, Injectable, Module, Optional } from "@nestjs/common";
|
|
12
|
+
import { KEYRING } from "../infra/tokens.js";
|
|
2
13
|
import { ORG_ROLES } from "../orgs/roles.js";
|
|
3
14
|
/** 嵌入令牌的有效期(秒)。网页在过期前 60 秒续期。 */
|
|
4
15
|
export const EMBED_TOKEN_TTL_SECONDS = 300;
|
|
@@ -63,23 +74,26 @@ function parseClaims(v) {
|
|
|
63
74
|
exp: c.exp,
|
|
64
75
|
};
|
|
65
76
|
}
|
|
77
|
+
/** Optional provider: the clock {@link EmbedTokens} issues and checks with (default `Date.now`; tests). */
|
|
78
|
+
export const EMBED_TOKEN_CLOCK = Symbol("EMBED_TOKEN_CLOCK");
|
|
66
79
|
/**
|
|
67
80
|
* 嵌入令牌:`base64url(JSON 声明).base64url(HMAC-SHA256(key, "capybara-embed/1." + 第一段))`。
|
|
68
81
|
* - 格式固定、没有头(没有 alg 可混淆);密钥由主密钥环经 HKDF 派生,轮换后上一把主密钥签的令牌仍可校验到过期;
|
|
69
82
|
* - 校验:严格 base64url、常量时间比较签名、逐字段核对声明、`exp` 容许 {@link EMBED_TOKEN_SKEW_SECONDS} 秒偏差、
|
|
70
83
|
* `exp` 不得超过「现在 + 有效期 + 偏差」、`plugin` 必须是调用方插件;任何一项不过都返回 null(不说明原因)。
|
|
71
|
-
* 无状态(不落库、不进 Redis):各副本用同一主密钥即可校验,不需要共享状态。
|
|
84
|
+
* 无状态(不落库、不进 Redis):各副本用同一主密钥即可校验,不需要共享状态。One provider: the UI
|
|
85
|
+
* routes issue tokens with it and every extension's `ctx` verifies them with it.
|
|
72
86
|
*/
|
|
73
|
-
|
|
87
|
+
let EmbedTokens = class EmbedTokens {
|
|
88
|
+
now;
|
|
74
89
|
current;
|
|
75
90
|
keys;
|
|
76
|
-
now
|
|
77
|
-
|
|
91
|
+
constructor(keyring, now = Date.now) {
|
|
92
|
+
this.now = now;
|
|
78
93
|
const derived = keyring.deriveKey(EMBED_KEY_INFO);
|
|
79
94
|
const ids = [derived.currentId, ...keyring.toJSON().previousIds];
|
|
80
95
|
this.current = derived.current;
|
|
81
96
|
this.keys = ids.map((id) => derived.byId(id)).filter((k) => k !== undefined);
|
|
82
|
-
this.now = opts.now ?? Date.now;
|
|
83
97
|
}
|
|
84
98
|
/** 签发:`exp` = 现在 + {@link EMBED_TOKEN_TTL_SECONDS}。 */
|
|
85
99
|
issue(c) {
|
|
@@ -126,7 +140,21 @@ export class EmbedTokens {
|
|
|
126
140
|
return null;
|
|
127
141
|
return claims;
|
|
128
142
|
}
|
|
129
|
-
}
|
|
143
|
+
};
|
|
144
|
+
EmbedTokens = __decorate([
|
|
145
|
+
Injectable(),
|
|
146
|
+
__param(0, Inject(KEYRING)),
|
|
147
|
+
__param(1, Optional()),
|
|
148
|
+
__param(1, Inject(EMBED_TOKEN_CLOCK))
|
|
149
|
+
], EmbedTokens);
|
|
150
|
+
export { EmbedTokens };
|
|
130
151
|
function mac(key, payload) {
|
|
131
152
|
return createHmac("sha256", key).update(`${EMBED_KEY_INFO}.${payload}`).digest();
|
|
132
153
|
}
|
|
154
|
+
/** {@link EmbedTokens} on its own: the extension host (`ctx`) and the UI routes import it. */
|
|
155
|
+
let EmbedTokensModule = class EmbedTokensModule {
|
|
156
|
+
};
|
|
157
|
+
EmbedTokensModule = __decorate([
|
|
158
|
+
Module({ providers: [EmbedTokens], exports: [EmbedTokens] })
|
|
159
|
+
], EmbedTokensModule);
|
|
160
|
+
export { EmbedTokensModule };
|
package/dist/ui/ui-stream.d.ts
CHANGED
|
@@ -1,37 +1,42 @@
|
|
|
1
1
|
import type { Logger } from "@capybara-hq/plugin-sdk";
|
|
2
|
-
import type { KernelConfig } from "../config/schema.js";
|
|
3
|
-
import type { KernelDb } from "../db/kernel-schema.js";
|
|
4
2
|
import type { CredentialCheck } from "../identity/credential-check.js";
|
|
3
|
+
import { KernelConfigService } from "../infra/config/kernel-config.service.js";
|
|
4
|
+
import { KernelDb } from "../infra/database/kernel-db.js";
|
|
5
|
+
import { GracefulShutdown } from "../infra/lifecycle/graceful-shutdown.service.js";
|
|
5
6
|
import { type OrgRole } from "../orgs/roles.js";
|
|
6
|
-
import type
|
|
7
|
-
export interface OrgUiStreamsDeps {
|
|
8
|
-
bus: StreamBus;
|
|
9
|
-
/**
|
|
10
|
-
* 调用者此刻的组织角色(组织未删除、账号 active、仍有成员关系,否则 undefined):
|
|
11
|
-
* 连接建立时与每 `sseRecheckMs` 复核一次;组织级刷新只服务组织页面,要 member 以上(A38)。
|
|
12
|
-
*/
|
|
13
|
-
memberRole(orgId: string, accountId: string): Promise<OrgRole | undefined>;
|
|
14
|
-
config: () => KernelConfig;
|
|
15
|
-
log: Pick<Logger, "warn">;
|
|
16
|
-
}
|
|
7
|
+
import { type SseOutput, type StreamBus, type StreamHandle } from "../runtime/stream.js";
|
|
17
8
|
export interface OrgUiStreamParams {
|
|
18
9
|
orgId: string;
|
|
19
10
|
viewerAccountId: string;
|
|
20
11
|
credential: CredentialCheck;
|
|
21
12
|
}
|
|
22
|
-
/**
|
|
23
|
-
export declare
|
|
13
|
+
/** The org role the org UI stream re-checks. */
|
|
14
|
+
export declare class UiStreamMembership {
|
|
15
|
+
private readonly db;
|
|
16
|
+
constructor(db: KernelDb);
|
|
17
|
+
/** 组织成员角色(一条查询):组织未删除、账号 active、仍有成员关系。 */
|
|
18
|
+
role(orgId: string, accountId: string): Promise<OrgRole | undefined>;
|
|
19
|
+
}
|
|
24
20
|
/**
|
|
25
21
|
* 组织级界面刷新流(SSE):订阅内核主题 `org-ui.<orgId>`,把插件 `ctx.ui.invalidate`(不带对话)的刷新
|
|
26
22
|
* 转发为 `event: ui`(`data: {"plugin","contribution"}`)。跨副本只经 Redis bus;进程内只持有连接本身的资源
|
|
27
23
|
* (订阅、心跳与复核定时器),停机时一并关闭。
|
|
28
24
|
*/
|
|
29
25
|
export declare class OrgUiStreams {
|
|
30
|
-
private readonly d;
|
|
31
26
|
private readonly active;
|
|
32
|
-
|
|
27
|
+
/** Set by {@link closeAll}: streams opened afterwards end as soon as they begin. */
|
|
28
|
+
private closing;
|
|
29
|
+
private readonly d;
|
|
30
|
+
/**
|
|
31
|
+
* Closes the streams when the shutdown begins (readiness answers 503 from that moment) and
|
|
32
|
+
* latches: streams opened afterwards end at once, so the HTTP phase of the stop never waits on
|
|
33
|
+
* an event stream. Without `GracefulShutdown` (a standalone HTTP application, tests only) the
|
|
34
|
+
* streams end with their connections.
|
|
35
|
+
*/
|
|
36
|
+
constructor(bus: StreamBus, membership: Pick<UiStreamMembership, "role">, config: Pick<KernelConfigService, "get">, log: Pick<Logger, "warn">, shutdown?: Pick<GracefulShutdown, "signal">);
|
|
33
37
|
/** 复核凭据与成员关系并订阅;失败时尚未写响应,调用方按普通错误返回。 */
|
|
34
38
|
open(p: OrgUiStreamParams, out: SseOutput): Promise<StreamHandle>;
|
|
39
|
+
/** Closes every stream of this process (at shutdown) and latches, like `ConversationStreams`. */
|
|
35
40
|
closeAll(): void;
|
|
36
41
|
get size(): number;
|
|
37
42
|
}
|