@capybara-hq/kernel 0.1.0-rc.1 → 0.1.0-rc.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/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 +187 -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 +280 -335
- package/dist/agents/definition.d.ts +39 -8
- package/dist/agents/definition.js +201 -17
- 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 +39 -8
- 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 +326 -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/claude/agents.js +13 -10
- 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 +31 -14
- 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 +10 -4
- package/dist/channels/cards.js +16 -8
- 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 -194
- 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 +1 -0
- package/dist/config/schema.js +12 -6
- package/dist/conversations/access.d.ts +29 -0
- package/dist/conversations/access.js +86 -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 +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 +39 -18
- package/dist/conversations/event-log.js +93 -27
- package/dist/conversations/events.d.ts +23 -3
- package/dist/conversations/events.js +26 -14
- 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 -63
- 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/secrets.d.ts +10 -2
- package/dist/ctx/secrets.js +7 -3
- package/dist/db/kernel-schema.d.ts +4 -4
- package/dist/db/pool.d.ts +5 -0
- package/dist/db/pool.js +1 -0
- package/dist/errors.d.ts +1 -0
- package/dist/errors.js +1 -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/recorded-tools.d.ts +27 -1
- package/dist/evals/recorded-tools.js +85 -10
- package/dist/evals/run-replay.d.ts +61 -8
- package/dist/evals/run-replay.js +159 -85
- 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.d.ts +2 -2
- 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 -121
- 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 +58 -31
- package/dist/extensions/bootstrap.js +175 -121
- 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 +17 -62
- 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 +86 -58
- 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 +16 -11
- package/dist/index.js +9 -6
- 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 -244
- 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 +456 -0
- package/dist/lifecycle/tokens.d.ts +3 -0
- package/dist/lifecycle/tokens.js +3 -0
- package/dist/log-context.d.ts +2 -0
- package/dist/log-context.js +4 -0
- 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/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 +16 -10
- package/dist/orgs/settings.service.js +77 -48
- 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/context/build.d.ts +6 -6
- package/dist/runtime/context/build.js +18 -8
- package/dist/runtime/context/claude-tools.d.ts +2 -1
- package/dist/runtime/context/claude-tools.js +9 -10
- package/dist/runtime/context/legacy-text.d.ts +22 -0
- package/dist/runtime/context/legacy-text.js +37 -0
- package/dist/runtime/context/skills.d.ts +29 -11
- package/dist/runtime/context/skills.js +37 -30
- 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 +8 -1
- 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 -137
- package/dist/runtime/model-call.d.ts +7 -4
- package/dist/runtime/model-call.js +25 -58
- 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 +27 -18
- 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 +122 -76
- package/dist/runtime/run-worker.js +343 -229
- 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 +5 -10
- package/dist/runtime/subagents/definition.js +13 -14
- package/dist/runtime/subagents/dispatch.d.ts +89 -8
- package/dist/runtime/subagents/dispatch.js +137 -142
- 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 +3 -2
- package/dist/runtime/subagents/progress.d.ts +2 -2
- package/dist/runtime/subagents/roster.d.ts +4 -4
- package/dist/runtime/subagents/roster.js +2 -2
- package/dist/runtime/subagents/skill-fork.d.ts +8 -9
- package/dist/runtime/subagents/skill-fork.js +17 -6
- 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 -100
- package/dist/runtime/waits.d.ts +127 -59
- package/dist/runtime/waits.js +433 -210
- 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 +37 -24
- package/dist/skills/catalog.js +100 -57
- package/dist/skills/changes.controller.d.ts +4 -4
- package/dist/skills/changes.controller.js +15 -9
- package/dist/skills/changes.service.d.ts +30 -20
- package/dist/skills/changes.service.js +425 -367
- package/dist/skills/invocable.controller.d.ts +1 -1
- package/dist/skills/invocable.controller.js +8 -5
- package/dist/skills/invocation-keys.d.ts +1 -1
- package/dist/skills/invocation-keys.js +1 -1
- package/dist/skills/invoke.d.ts +17 -16
- package/dist/skills/invoke.js +53 -21
- 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 +33 -25
- package/dist/tools/approvals.service.js +343 -259
- package/dist/tools/breaker.d.ts +2 -2
- package/dist/tools/breaker.js +21 -3
- package/dist/tools/builtin-names.d.ts +73 -0
- package/dist/tools/builtin-names.js +116 -0
- package/dist/tools/builtins/agent.d.ts +7 -7
- package/dist/tools/builtins/agent.js +7 -11
- 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 +21 -0
- package/dist/tools/builtins/builtin-tools.js +80 -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 +33 -30
- package/dist/tools/builtins/sandbox/common.d.ts +5 -4
- package/dist/tools/builtins/sandbox/common.js +2 -2
- package/dist/tools/builtins/sandbox/deliver.d.ts +1 -1
- package/dist/tools/builtins/sandbox/deliver.js +13 -13
- package/dist/tools/builtins/sandbox/edit.d.ts +1 -1
- package/dist/tools/builtins/sandbox/edit.js +42 -31
- 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 +6 -6
- package/dist/tools/builtins/sandbox/grep.d.ts +7 -4
- package/dist/tools/builtins/sandbox/grep.js +149 -32
- package/dist/tools/builtins/sandbox/index.d.ts +1 -1
- package/dist/tools/builtins/sandbox/index.js +1 -1
- package/dist/tools/builtins/sandbox/read.d.ts +2 -2
- package/dist/tools/builtins/sandbox/read.js +22 -15
- package/dist/tools/builtins/sandbox/write.d.ts +1 -1
- package/dist/tools/builtins/sandbox/write.js +38 -34
- package/dist/tools/builtins/skill-load.d.ts +6 -6
- package/dist/tools/builtins/skill-load.js +33 -17
- package/dist/tools/builtins/skill-write.d.ts +4 -4
- package/dist/tools/builtins/skill-write.js +10 -10
- package/dist/tools/builtins/tool-search.d.ts +13 -9
- package/dist/tools/builtins/tool-search.js +25 -14
- 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 +438 -348
- package/dist/tools/credentials.d.ts +17 -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/info.d.ts +32 -13
- package/dist/tools/info.js +88 -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 +11 -3
- package/dist/tools/oauth/tokens.js +15 -14
- package/dist/tools/outputs.d.ts +13 -4
- package/dist/tools/outputs.js +48 -4
- package/dist/tools/pipeline.d.ts +72 -50
- package/dist/tools/pipeline.js +239 -100
- package/dist/tools/policy.d.ts +3 -16
- package/dist/tools/policy.js +13 -19
- 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 +43 -38
- package/dist/tools/registry.js +100 -72
- 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 +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 +10 -3
- package/src/migrations/0063_tool_keys_claude_code.sql +220 -0
- 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/tools/builtins/sandbox/names.d.ts +0 -7
- package/dist/tools/builtins/sandbox/names.js +0 -20
- /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/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
|
}
|
package/dist/ui/ui-stream.js
CHANGED
|
@@ -1,10 +1,30 @@
|
|
|
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 { Inject, Injectable, Optional } from "@nestjs/common";
|
|
1
11
|
import { ApiError } from "../errors.js";
|
|
12
|
+
import { KernelConfigService } from "../infra/config/kernel-config.service.js";
|
|
13
|
+
import { KernelDb } from "../infra/database/kernel-db.js";
|
|
14
|
+
import { GracefulShutdown } from "../infra/lifecycle/graceful-shutdown.service.js";
|
|
15
|
+
import { KERNEL_BUS, KERNEL_LOGGER } from "../infra/tokens.js";
|
|
2
16
|
import { roleAtLeast } from "../orgs/roles.js";
|
|
17
|
+
import { endedStream, } from "../runtime/stream.js";
|
|
3
18
|
import { isUiBusMessage, orgUiTopic, PAGE_MIN_ROLE, uiFrame } from "./registry.js";
|
|
4
|
-
/**
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
19
|
+
/** The org role the org UI stream re-checks. */
|
|
20
|
+
let UiStreamMembership = class UiStreamMembership {
|
|
21
|
+
db;
|
|
22
|
+
constructor(db) {
|
|
23
|
+
this.db = db;
|
|
24
|
+
}
|
|
25
|
+
/** 组织成员角色(一条查询):组织未删除、账号 active、仍有成员关系。 */
|
|
26
|
+
async role(orgId, accountId) {
|
|
27
|
+
const row = await this.db
|
|
8
28
|
.selectFrom("memberships")
|
|
9
29
|
.innerJoin("orgs", "orgs.id", "memberships.org_id")
|
|
10
30
|
.innerJoin("accounts", "accounts.id", "memberships.account_id")
|
|
@@ -15,8 +35,13 @@ export function orgMembership(db) {
|
|
|
15
35
|
.where("accounts.status", "=", "active")
|
|
16
36
|
.executeTakeFirst();
|
|
17
37
|
return row?.role;
|
|
18
|
-
}
|
|
19
|
-
}
|
|
38
|
+
}
|
|
39
|
+
};
|
|
40
|
+
UiStreamMembership = __decorate([
|
|
41
|
+
Injectable(),
|
|
42
|
+
__param(0, Inject(KernelDb))
|
|
43
|
+
], UiStreamMembership);
|
|
44
|
+
export { UiStreamMembership };
|
|
20
45
|
async function authorize(d, p) {
|
|
21
46
|
const denied = await p.credential();
|
|
22
47
|
if (denied !== null)
|
|
@@ -33,17 +58,36 @@ const MAX_BACKLOG_BYTES = 1024 * 1024;
|
|
|
33
58
|
* 转发为 `event: ui`(`data: {"plugin","contribution"}`)。跨副本只经 Redis bus;进程内只持有连接本身的资源
|
|
34
59
|
* (订阅、心跳与复核定时器),停机时一并关闭。
|
|
35
60
|
*/
|
|
36
|
-
|
|
37
|
-
d;
|
|
61
|
+
let OrgUiStreams = class OrgUiStreams {
|
|
38
62
|
active = new Set();
|
|
39
|
-
|
|
40
|
-
|
|
63
|
+
/** Set by {@link closeAll}: streams opened afterwards end as soon as they begin. */
|
|
64
|
+
closing = false;
|
|
65
|
+
d;
|
|
66
|
+
/**
|
|
67
|
+
* Closes the streams when the shutdown begins (readiness answers 503 from that moment) and
|
|
68
|
+
* latches: streams opened afterwards end at once, so the HTTP phase of the stop never waits on
|
|
69
|
+
* an event stream. Without `GracefulShutdown` (a standalone HTTP application, tests only) the
|
|
70
|
+
* streams end with their connections.
|
|
71
|
+
*/
|
|
72
|
+
constructor(bus, membership, config, log, shutdown) {
|
|
73
|
+
this.d = {
|
|
74
|
+
bus,
|
|
75
|
+
memberRole: (orgId, accountId) => membership.role(orgId, accountId),
|
|
76
|
+
config,
|
|
77
|
+
log,
|
|
78
|
+
};
|
|
79
|
+
if (shutdown?.signal.aborted)
|
|
80
|
+
this.closeAll();
|
|
81
|
+
else
|
|
82
|
+
shutdown?.signal.addEventListener("abort", () => this.closeAll(), { once: true });
|
|
41
83
|
}
|
|
42
84
|
/** 复核凭据与成员关系并订阅;失败时尚未写响应,调用方按普通错误返回。 */
|
|
43
85
|
async open(p, out) {
|
|
44
86
|
const denied = await authorize(this.d, p);
|
|
45
87
|
if (denied !== null)
|
|
46
88
|
throw new ApiError(denied, "Access denied");
|
|
89
|
+
if (this.closing)
|
|
90
|
+
return endedStream(out);
|
|
47
91
|
const conn = new OrgUiConnection(this.d, p, out, () => this.active.delete(conn));
|
|
48
92
|
this.active.add(conn);
|
|
49
93
|
try {
|
|
@@ -53,16 +97,32 @@ export class OrgUiStreams {
|
|
|
53
97
|
conn.close();
|
|
54
98
|
throw e;
|
|
55
99
|
}
|
|
100
|
+
if (this.closing) {
|
|
101
|
+
conn.close();
|
|
102
|
+
return endedStream(out);
|
|
103
|
+
}
|
|
56
104
|
return conn;
|
|
57
105
|
}
|
|
106
|
+
/** Closes every stream of this process (at shutdown) and latches, like `ConversationStreams`. */
|
|
58
107
|
closeAll() {
|
|
108
|
+
this.closing = true;
|
|
59
109
|
for (const c of [...this.active])
|
|
60
110
|
c.close();
|
|
61
111
|
}
|
|
62
112
|
get size() {
|
|
63
113
|
return this.active.size;
|
|
64
114
|
}
|
|
65
|
-
}
|
|
115
|
+
};
|
|
116
|
+
OrgUiStreams = __decorate([
|
|
117
|
+
Injectable(),
|
|
118
|
+
__param(0, Inject(KERNEL_BUS)),
|
|
119
|
+
__param(1, Inject(UiStreamMembership)),
|
|
120
|
+
__param(2, Inject(KernelConfigService)),
|
|
121
|
+
__param(3, Inject(KERNEL_LOGGER)),
|
|
122
|
+
__param(4, Optional()),
|
|
123
|
+
__param(4, Inject(GracefulShutdown))
|
|
124
|
+
], OrgUiStreams);
|
|
125
|
+
export { OrgUiStreams };
|
|
66
126
|
class OrgUiConnection {
|
|
67
127
|
d;
|
|
68
128
|
p;
|
|
@@ -94,7 +154,7 @@ class OrgUiConnection {
|
|
|
94
154
|
if (this.closed)
|
|
95
155
|
return;
|
|
96
156
|
this.begun = true;
|
|
97
|
-
const { sseHeartbeatMs, sseRecheckMs } = this.d.config().runtime;
|
|
157
|
+
const { sseHeartbeatMs, sseRecheckMs } = this.d.config.get().runtime;
|
|
98
158
|
this.timers.push(setInterval(() => this.write(": ping\n\n"), sseHeartbeatMs), setInterval(() => void this.recheck(), sseRecheckMs));
|
|
99
159
|
}
|
|
100
160
|
close(mode = "end") {
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Extension UI on the kernel side: the views and actions (`ctx.ui`), the embed tokens
|
|
3
|
+
* ({@link EmbedTokensModule}, re-exported; the extension host verifies them with the same
|
|
4
|
+
* provider) and the org UI refresh stream.
|
|
5
|
+
*/
|
|
6
|
+
export declare class UiModule {
|
|
7
|
+
}
|
|
@@ -0,0 +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
|
+
import { Module } from "@nestjs/common";
|
|
8
|
+
import { ConversationsModule } from "../conversations/conversations.module.js";
|
|
9
|
+
import { ExtensionsModule } from "../extensions/extensions.module.js";
|
|
10
|
+
import { FilesModule } from "../files/files.module.js";
|
|
11
|
+
import { EmbedTokensModule } from "./embed-token.js";
|
|
12
|
+
import { OrgUiStreams, UiStreamMembership } from "./ui-stream.js";
|
|
13
|
+
import { UiViews } from "./views.js";
|
|
14
|
+
/**
|
|
15
|
+
* Extension UI on the kernel side: the views and actions (`ctx.ui`), the embed tokens
|
|
16
|
+
* ({@link EmbedTokensModule}, re-exported; the extension host verifies them with the same
|
|
17
|
+
* provider) and the org UI refresh stream.
|
|
18
|
+
*/
|
|
19
|
+
let UiModule = class UiModule {
|
|
20
|
+
};
|
|
21
|
+
UiModule = __decorate([
|
|
22
|
+
Module({
|
|
23
|
+
imports: [ExtensionsModule, ConversationsModule, FilesModule, EmbedTokensModule],
|
|
24
|
+
providers: [UiViews, UiStreamMembership, OrgUiStreams],
|
|
25
|
+
exports: [UiViews, OrgUiStreams, EmbedTokensModule],
|
|
26
|
+
})
|
|
27
|
+
], UiModule);
|
|
28
|
+
export { UiModule };
|
|
@@ -1,14 +1,18 @@
|
|
|
1
1
|
import { type UiActionResult, type UiView } from "@capybara-hq/plugin-sdk";
|
|
2
|
-
import { type OnModuleDestroy } from "@nestjs/common";
|
|
3
2
|
import type { FastifyReply, FastifyRequest } from "fastify";
|
|
4
3
|
import { z } from "zod";
|
|
5
|
-
import
|
|
4
|
+
import { ApiTokenService } from "../identity/api-tokens.js";
|
|
6
5
|
import { type Principal } from "../identity/principal.js";
|
|
7
|
-
import
|
|
6
|
+
import { SessionService } from "../identity/sessions.js";
|
|
8
7
|
import { type OrgContext } from "../orgs/org.guard.js";
|
|
9
|
-
import {
|
|
10
|
-
import
|
|
11
|
-
import type
|
|
8
|
+
import { EmbedTokens } from "./embed-token.js";
|
|
9
|
+
import { OrgUiStreams } from "./ui-stream.js";
|
|
10
|
+
import { type UiContributionItem, UiViews } from "./views.js";
|
|
11
|
+
/** The contribution named in a view / action / embed path (`:plugin/:id`). */
|
|
12
|
+
declare const ContributionParams: z.ZodObject<{
|
|
13
|
+
plugin: z.ZodString;
|
|
14
|
+
id: z.ZodString;
|
|
15
|
+
}, z.core.$strip>;
|
|
12
16
|
declare const ViewQuery: z.ZodObject<{
|
|
13
17
|
conversationId: z.ZodOptional<z.ZodString>;
|
|
14
18
|
locale: z.ZodDefault<z.ZodEnum<{
|
|
@@ -53,7 +57,7 @@ declare const EmbedTokenBody: z.ZodDefault<z.ZodObject<{
|
|
|
53
57
|
* 角色(A38):组织页面(`place: "page"`,含组织级刷新流)只给 member 以上,guest 一律 404 `ui.not_found`、
|
|
54
58
|
* 列表里也不出现;对话位置的贡献给能访问该对话的任何成员。插件收到的 `role` 来自 OrgGuard 查出的成员关系。
|
|
55
59
|
*/
|
|
56
|
-
export declare class UiController
|
|
60
|
+
export declare class UiController {
|
|
57
61
|
private readonly views;
|
|
58
62
|
private readonly streams;
|
|
59
63
|
private readonly sessions;
|
|
@@ -63,11 +67,11 @@ export declare class UiController implements OnModuleDestroy {
|
|
|
63
67
|
contributions(principal: Principal, org: OrgContext): Promise<{
|
|
64
68
|
items: UiContributionItem[];
|
|
65
69
|
}>;
|
|
66
|
-
view(principal: Principal, org: OrgContext, plugin
|
|
70
|
+
view(principal: Principal, org: OrgContext, { plugin, id }: z.infer<typeof ContributionParams>, q: z.infer<typeof ViewQuery>): Promise<{
|
|
67
71
|
view: UiView;
|
|
68
72
|
}>;
|
|
69
|
-
action(principal: Principal, org: OrgContext, plugin
|
|
70
|
-
embedToken(principal: Principal, org: OrgContext, plugin
|
|
73
|
+
action(principal: Principal, org: OrgContext, { plugin, id }: z.infer<typeof ContributionParams>, body: z.infer<typeof ActionBody>): Promise<UiActionResult>;
|
|
74
|
+
embedToken(principal: Principal, org: OrgContext, { plugin, id }: z.infer<typeof ContributionParams>, body: z.infer<typeof EmbedTokenBody>): Promise<{
|
|
71
75
|
token: string;
|
|
72
76
|
src: string;
|
|
73
77
|
expiresAt: string;
|
|
@@ -75,7 +79,5 @@ export declare class UiController implements OnModuleDestroy {
|
|
|
75
79
|
}>;
|
|
76
80
|
/** 组织级刷新流:与会话流一样用 `reply.hijack()` 直接写原始响应;心跳与复核间隔同 `runtime.sse*`。 */
|
|
77
81
|
stream(principal: Principal, org: OrgContext, req: FastifyRequest, reply: FastifyReply): Promise<void>;
|
|
78
|
-
/** 停机:关闭本进程的全部组织刷新流。 */
|
|
79
|
-
onModuleDestroy(): void;
|
|
80
82
|
}
|
|
81
83
|
export {};
|
|
@@ -8,17 +8,23 @@ var __param = (this && this.__param) || function (paramIndex, decorator) {
|
|
|
8
8
|
return function (target, key) { decorator(target, key, paramIndex); }
|
|
9
9
|
};
|
|
10
10
|
import { UI_LIMITS } from "@capybara-hq/plugin-sdk";
|
|
11
|
-
import {
|
|
11
|
+
import { Controller, Get, HttpCode, Inject, Post, Req, Res } from "@nestjs/common";
|
|
12
12
|
import { z } from "zod";
|
|
13
|
-
import {
|
|
14
|
-
import { ZodPipe } from "../http/zod.pipe.js";
|
|
13
|
+
import { ApiTokenService } from "../identity/api-tokens.js";
|
|
15
14
|
import { credentialCheck } from "../identity/credential-check.js";
|
|
16
15
|
import { CurrentPrincipal, requireUser } from "../identity/principal.js";
|
|
16
|
+
import { SessionService } from "../identity/sessions.js";
|
|
17
|
+
import { createZodDto } from "../infra/validation/create-zod-dto.js";
|
|
18
|
+
import { ZBody, ZParam, ZQuery } from "../infra/validation/zod-params.js";
|
|
17
19
|
import { CurrentOrg, OrgAction } from "../orgs/org.guard.js";
|
|
18
|
-
import { EMBED_TOKEN_TTL_SECONDS } from "./embed-token.js";
|
|
20
|
+
import { EMBED_TOKEN_TTL_SECONDS, EmbedTokens } from "./embed-token.js";
|
|
21
|
+
import { OrgUiStreams } from "./ui-stream.js";
|
|
22
|
+
import { UiViews } from "./views.js";
|
|
19
23
|
const BEARER_RE = /^Bearer\s+(\S+)$/i;
|
|
20
24
|
const Locale = z.enum(["zh", "en"]).default("en");
|
|
21
25
|
const Id = z.string().min(1).max(100);
|
|
26
|
+
/** The contribution named in a view / action / embed path (`:plugin/:id`). */
|
|
27
|
+
const ContributionParams = z.object({ plugin: Id, id: Id });
|
|
22
28
|
const ViewQuery = z
|
|
23
29
|
.object({
|
|
24
30
|
conversationId: z.string().min(1).max(100).optional(),
|
|
@@ -65,6 +71,14 @@ const EmbedTokenBody = z
|
|
|
65
71
|
.default({});
|
|
66
72
|
/** 嵌入页的同源代理前缀(网页 `/plugin-ui/<plugin>/<rest>` → 内核 `/plugins/<plugin>/ui/<rest>`)。 */
|
|
67
73
|
const embedSrc = (plugin, path) => `/plugin-ui/${plugin}/${path.replace(/^\/ui\//, "")}`;
|
|
74
|
+
class UiContributionParamsDto extends createZodDto(ContributionParams, "UiContributionParams") {
|
|
75
|
+
}
|
|
76
|
+
class UiViewQueryDto extends createZodDto(ViewQuery, "UiViewQuery") {
|
|
77
|
+
}
|
|
78
|
+
class UiActionBodyDto extends createZodDto(ActionBody, "UiActionBody") {
|
|
79
|
+
}
|
|
80
|
+
class UiEmbedTokenBodyDto extends createZodDto(EmbedTokenBody, "UiEmbedTokenBody") {
|
|
81
|
+
}
|
|
68
82
|
/**
|
|
69
83
|
* 插件界面(第一档:渲染 schema;第二档:嵌入应用),会话鉴权、`ui.use`(只给人用,服务令牌 403):
|
|
70
84
|
* - `GET /api/v1/orgs/:orgId/ui/contributions` → `{ items: { plugin, id, title, place, legacyPlace?, kind, path?, icon }[] }`
|
|
@@ -102,7 +116,7 @@ let UiController = class UiController {
|
|
|
102
116
|
requireUser(principal);
|
|
103
117
|
return { items: await this.views.contributions(org.orgId, org.role) };
|
|
104
118
|
}
|
|
105
|
-
async view(principal, org, plugin, id, q) {
|
|
119
|
+
async view(principal, org, { plugin, id }, q) {
|
|
106
120
|
const p = requireUser(principal);
|
|
107
121
|
const view = await this.views.render({
|
|
108
122
|
orgId: org.orgId,
|
|
@@ -119,7 +133,7 @@ let UiController = class UiController {
|
|
|
119
133
|
});
|
|
120
134
|
return { view };
|
|
121
135
|
}
|
|
122
|
-
async action(principal, org, plugin, id, body) {
|
|
136
|
+
async action(principal, org, { plugin, id }, body) {
|
|
123
137
|
const p = requireUser(principal);
|
|
124
138
|
return this.views.act({
|
|
125
139
|
orgId: org.orgId,
|
|
@@ -135,7 +149,7 @@ let UiController = class UiController {
|
|
|
135
149
|
...(body.answer !== undefined && { answer: body.answer }),
|
|
136
150
|
});
|
|
137
151
|
}
|
|
138
|
-
async embedToken(principal, org, plugin, id, body) {
|
|
152
|
+
async embedToken(principal, org, { plugin, id }, body) {
|
|
139
153
|
const p = requireUser(principal);
|
|
140
154
|
const target = await this.views.embed({
|
|
141
155
|
orgId: org.orgId,
|
|
@@ -202,10 +216,6 @@ let UiController = class UiController {
|
|
|
202
216
|
res.flushHeaders();
|
|
203
217
|
handle.begin();
|
|
204
218
|
}
|
|
205
|
-
/** 停机:关闭本进程的全部组织刷新流。 */
|
|
206
|
-
onModuleDestroy() {
|
|
207
|
-
this.streams.closeAll();
|
|
208
|
-
}
|
|
209
219
|
};
|
|
210
220
|
__decorate([
|
|
211
221
|
Get("contributions"),
|
|
@@ -218,9 +228,8 @@ __decorate([
|
|
|
218
228
|
OrgAction("ui.use"),
|
|
219
229
|
__param(0, CurrentPrincipal()),
|
|
220
230
|
__param(1, CurrentOrg()),
|
|
221
|
-
__param(2,
|
|
222
|
-
__param(3,
|
|
223
|
-
__param(4, Query(new ZodPipe(ViewQuery)))
|
|
231
|
+
__param(2, ZParam(UiContributionParamsDto)),
|
|
232
|
+
__param(3, ZQuery(UiViewQueryDto))
|
|
224
233
|
], UiController.prototype, "view", null);
|
|
225
234
|
__decorate([
|
|
226
235
|
Post("actions/:plugin/:id"),
|
|
@@ -228,9 +237,8 @@ __decorate([
|
|
|
228
237
|
OrgAction("ui.use"),
|
|
229
238
|
__param(0, CurrentPrincipal()),
|
|
230
239
|
__param(1, CurrentOrg()),
|
|
231
|
-
__param(2,
|
|
232
|
-
__param(3,
|
|
233
|
-
__param(4, Body(new ZodPipe(ActionBody)))
|
|
240
|
+
__param(2, ZParam(UiContributionParamsDto)),
|
|
241
|
+
__param(3, ZBody(UiActionBodyDto))
|
|
234
242
|
], UiController.prototype, "action", null);
|
|
235
243
|
__decorate([
|
|
236
244
|
Post("embeds/:plugin/:id/token"),
|
|
@@ -238,9 +246,8 @@ __decorate([
|
|
|
238
246
|
OrgAction("ui.use"),
|
|
239
247
|
__param(0, CurrentPrincipal()),
|
|
240
248
|
__param(1, CurrentOrg()),
|
|
241
|
-
__param(2,
|
|
242
|
-
__param(3,
|
|
243
|
-
__param(4, Body(new ZodPipe(EmbedTokenBody)))
|
|
249
|
+
__param(2, ZParam(UiContributionParamsDto)),
|
|
250
|
+
__param(3, ZBody(UiEmbedTokenBodyDto))
|
|
244
251
|
], UiController.prototype, "embedToken", null);
|
|
245
252
|
__decorate([
|
|
246
253
|
Get("stream"),
|
|
@@ -252,10 +259,10 @@ __decorate([
|
|
|
252
259
|
], UiController.prototype, "stream", null);
|
|
253
260
|
UiController = __decorate([
|
|
254
261
|
Controller("api/v1/orgs/:orgId/ui"),
|
|
255
|
-
__param(0, Inject(
|
|
256
|
-
__param(1, Inject(
|
|
257
|
-
__param(2, Inject(
|
|
258
|
-
__param(3, Inject(
|
|
259
|
-
__param(4, Inject(
|
|
262
|
+
__param(0, Inject(UiViews)),
|
|
263
|
+
__param(1, Inject(OrgUiStreams)),
|
|
264
|
+
__param(2, Inject(SessionService)),
|
|
265
|
+
__param(3, Inject(ApiTokenService)),
|
|
266
|
+
__param(4, Inject(EmbedTokens))
|
|
260
267
|
], UiController);
|
|
261
268
|
export { UiController };
|
package/dist/ui/views.d.ts
CHANGED
|
@@ -1,7 +1,11 @@
|
|
|
1
1
|
import { type FormAnswer, type Logger, type UiActionResult, type UiContribution, type UiIcon, type UiView } from "@capybara-hq/plugin-sdk";
|
|
2
|
-
import
|
|
3
|
-
import type {
|
|
2
|
+
import { ConversationsService } from "../conversations/conversations.service.js";
|
|
3
|
+
import type { KernelSchemaDb } from "../db/kernel-schema.js";
|
|
4
|
+
import { ExtensionHost } from "../extensions/host.js";
|
|
5
|
+
import { PreviewerRegistry } from "../files/previewers.js";
|
|
6
|
+
import { KernelDb } from "../infra/database/kernel-db.js";
|
|
4
7
|
import type { OrgRole } from "../orgs/roles.js";
|
|
8
|
+
export { callExtension } from "./call-extension.js";
|
|
5
9
|
/** 插件 render / action 的时限(spec §4.2:慢的插件只让那个标签失败)。 */
|
|
6
10
|
export declare const UI_CALL_TIMEOUT_MS = 5000;
|
|
7
11
|
/** 列出贡献接口的一项。 */
|
|
@@ -29,42 +33,6 @@ export interface UiEmbedTarget {
|
|
|
29
33
|
/** Only a `file-preview` embed: the one file the token is for. */
|
|
30
34
|
fileId?: string;
|
|
31
35
|
}
|
|
32
|
-
export interface UiViewsDeps {
|
|
33
|
-
host: Pick<ExtensionHost, "uiContributions">;
|
|
34
|
-
/** Names of the extensions enabled in the organization (`extension_org_configs.enabled` plus required bootstrap plugins, `enabled.ts`), queried every time, not cached. */
|
|
35
|
-
enabledPlugins(orgId: string): Promise<Set<string>>;
|
|
36
|
-
/** 调用者能否访问这个对话(与会话 SSE 流同一判定)。 */
|
|
37
|
-
canAccessConversation(orgId: string, conversationId: string, accountId: string): Promise<boolean>;
|
|
38
|
-
/**
|
|
39
|
-
* Throws unless the caller may write to the conversation: a sub-agent's is read-only (409
|
|
40
|
-
* `conversation.read_only`, sub-agents spec §6.1). Checked before an action (final review m3).
|
|
41
|
-
*/
|
|
42
|
-
checkWritable?(orgId: string, conversationId: string, accountId: string): Promise<void>;
|
|
43
|
-
/**
|
|
44
|
-
* A `file-preview` embed token: whether that extension's previewer with `embed: contribution`
|
|
45
|
-
* takes this file of the conversation (the viewer must read it; not found throws 404).
|
|
46
|
-
*/
|
|
47
|
-
previewEmbedAllowed?(t: {
|
|
48
|
-
orgId: string;
|
|
49
|
-
accountId: string;
|
|
50
|
-
conversationId: string;
|
|
51
|
-
fileId: string;
|
|
52
|
-
plugin: string;
|
|
53
|
-
contribution: string;
|
|
54
|
-
}): Promise<boolean>;
|
|
55
|
-
/**
|
|
56
|
-
* The `card` a `tool_result` of this conversation recorded for `callId` (`ToolResult.card`), or
|
|
57
|
-
* null. An inline card request is served only when it matches (the card is attested by the log).
|
|
58
|
-
*/
|
|
59
|
-
recordedCard?(conversationId: string, callId: string): Promise<{
|
|
60
|
-
plugin: string;
|
|
61
|
-
view: string;
|
|
62
|
-
key?: string;
|
|
63
|
-
} | null>;
|
|
64
|
-
log: Pick<Logger, "warn">;
|
|
65
|
-
/** 默认 {@link UI_CALL_TIMEOUT_MS}(测试可调小)。 */
|
|
66
|
-
timeoutMs?: number;
|
|
67
|
-
}
|
|
68
36
|
/** 取视图 / 执行动作的调用者与目标(身份来自内核鉴权)。 */
|
|
69
37
|
export interface UiTarget {
|
|
70
38
|
orgId: string;
|
|
@@ -87,7 +55,7 @@ export interface UiTarget {
|
|
|
87
55
|
* The card a `tool_result` of the conversation recorded for `callId`, or null (the inline-card
|
|
88
56
|
* attestation of {@link UiViewsDeps.recordedCard}). Scans one conversation's tool results.
|
|
89
57
|
*/
|
|
90
|
-
export declare function recordedCard(db:
|
|
58
|
+
export declare function recordedCard(db: KernelSchemaDb, conversationId: string, callId: string): Promise<{
|
|
91
59
|
plugin: string;
|
|
92
60
|
view: string;
|
|
93
61
|
key?: string;
|
|
@@ -106,12 +74,11 @@ export declare function dropForeignOpens(view: UiView, panels: ReadonlySet<strin
|
|
|
106
74
|
* - 调用带 5 秒时限与中止信号:render 抛错 502 `ui.render_failed`、action 抛错 502 `ui.action_failed`、
|
|
107
75
|
* 超时 504 `ui.timeout`、返回非法视图 502
|
|
108
76
|
* `ui.invalid_view`,都记告警日志、不写对话日志(这些不是模型可见的内容)。
|
|
109
|
-
*
|
|
77
|
+
* 不保存跨请求状态。
|
|
110
78
|
*/
|
|
111
79
|
export declare class UiViews {
|
|
112
80
|
private readonly d;
|
|
113
|
-
|
|
114
|
-
constructor(d: UiViewsDeps);
|
|
81
|
+
constructor(host: ExtensionHost, conversations: ConversationsService, previewers: PreviewerRegistry, db: KernelDb, log: Pick<Logger, "warn">);
|
|
115
82
|
/** 该组织、该角色可见的界面贡献:插件已启用且已加载;kind view 的要求插件注册了 render;组织页面要 member 以上。 */
|
|
116
83
|
contributions(orgId: string, role: OrgRole): Promise<UiContributionItem[]>;
|
|
117
84
|
/**
|
|
@@ -138,18 +105,3 @@ export declare class UiViews {
|
|
|
138
105
|
/** 非法结果:记告警(列出前几条问题)并 502 `ui.invalid_view`。 */
|
|
139
106
|
private check;
|
|
140
107
|
}
|
|
141
|
-
/**
|
|
142
|
-
* Calls an extension with a time limit and an abort signal (plugin views, actions and file
|
|
143
|
-
* previewers): over the limit the signal aborts and the call is 504 `ui.timeout`; a throw is
|
|
144
|
-
* `failCode` (502) without echoing the extension's message. An `ApiError` thrown by `fn` passes.
|
|
145
|
-
*/
|
|
146
|
-
export declare function callExtension<T>(o: {
|
|
147
|
-
log: Pick<Logger, "warn">;
|
|
148
|
-
plugin: string;
|
|
149
|
-
what: string;
|
|
150
|
-
fields: Record<string, unknown>;
|
|
151
|
-
timeoutMs: number;
|
|
152
|
-
failCode: "ui.render_failed" | "ui.action_failed";
|
|
153
|
-
failMessage: string;
|
|
154
|
-
fn: (signal: AbortSignal) => Promise<T>;
|
|
155
|
-
}): Promise<T>;
|