@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/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>;
|
package/dist/ui/views.js
CHANGED
|
@@ -1,7 +1,24 @@
|
|
|
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 { normalizePlace, validateUiView, } from "@capybara-hq/plugin-sdk";
|
|
11
|
+
import { Inject, Injectable } from "@nestjs/common";
|
|
2
12
|
import { sql } from "kysely";
|
|
13
|
+
import { ConversationsService } from "../conversations/conversations.service.js";
|
|
3
14
|
import { ApiError } from "../errors.js";
|
|
15
|
+
import { ExtensionHost } from "../extensions/host.js";
|
|
16
|
+
import { PreviewerRegistry } from "../files/previewers.js";
|
|
17
|
+
import { KernelDb } from "../infra/database/kernel-db.js";
|
|
18
|
+
import { KERNEL_LOGGER } from "../infra/tokens.js";
|
|
19
|
+
import { callExtension } from "./call-extension.js";
|
|
4
20
|
import { canUsePlace, isConversationPlace, UUID_RE } from "./registry.js";
|
|
21
|
+
export { callExtension } from "./call-extension.js";
|
|
5
22
|
/** 插件 render / action 的时限(spec §4.2:慢的插件只让那个标签失败)。 */
|
|
6
23
|
export const UI_CALL_TIMEOUT_MS = 5_000;
|
|
7
24
|
/**
|
|
@@ -79,14 +96,23 @@ function actionResultProblems(r) {
|
|
|
79
96
|
* - 调用带 5 秒时限与中止信号:render 抛错 502 `ui.render_failed`、action 抛错 502 `ui.action_failed`、
|
|
80
97
|
* 超时 504 `ui.timeout`、返回非法视图 502
|
|
81
98
|
* `ui.invalid_view`,都记告警日志、不写对话日志(这些不是模型可见的内容)。
|
|
82
|
-
*
|
|
99
|
+
* 不保存跨请求状态。
|
|
83
100
|
*/
|
|
84
|
-
|
|
101
|
+
let UiViews = class UiViews {
|
|
85
102
|
d;
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
103
|
+
constructor(host, conversations, previewers, db, log) {
|
|
104
|
+
this.d = {
|
|
105
|
+
host,
|
|
106
|
+
// org config rows plus the required bootstrap plugins
|
|
107
|
+
enabledPlugins: (orgId) => host.enabledPlugins(orgId),
|
|
108
|
+
canAccessConversation: (orgId, id, accountId) => conversations.isAccessible(orgId, id, accountId),
|
|
109
|
+
checkWritable: async (orgId, id, accountId) => {
|
|
110
|
+
await conversations.writable(orgId, id, accountId);
|
|
111
|
+
},
|
|
112
|
+
previewEmbedAllowed: (t) => previewers.embedAllowed(t),
|
|
113
|
+
recordedCard: (conversationId, callId) => recordedCard(db.db, conversationId, callId),
|
|
114
|
+
log,
|
|
115
|
+
};
|
|
90
116
|
}
|
|
91
117
|
/** 该组织、该角色可见的界面贡献:插件已启用且已加载;kind view 的要求插件注册了 render;组织页面要 member 以上。 */
|
|
92
118
|
async contributions(orgId, role) {
|
|
@@ -248,7 +274,7 @@ export class UiViews {
|
|
|
248
274
|
plugin: t.plugin,
|
|
249
275
|
what,
|
|
250
276
|
fields: { plugin: t.plugin, contribution: t.id, orgId: t.orgId },
|
|
251
|
-
timeoutMs:
|
|
277
|
+
timeoutMs: UI_CALL_TIMEOUT_MS,
|
|
252
278
|
failCode: what === "render" ? "ui.render_failed" : "ui.action_failed",
|
|
253
279
|
failMessage: `Plugin ${t.plugin} failed to ${what} ${t.id}`,
|
|
254
280
|
fn,
|
|
@@ -266,41 +292,13 @@ export class UiViews {
|
|
|
266
292
|
});
|
|
267
293
|
throw new ApiError("ui.invalid_view", `Plugin ${t.plugin} returned an invalid view`);
|
|
268
294
|
}
|
|
269
|
-
}
|
|
270
|
-
|
|
271
|
-
|
|
272
|
-
|
|
273
|
-
|
|
274
|
-
|
|
275
|
-
|
|
276
|
-
|
|
277
|
-
|
|
278
|
-
|
|
279
|
-
timer = setTimeout(() => {
|
|
280
|
-
ac.abort(new Error(`plugin ui ${o.what} timed out`));
|
|
281
|
-
resolve("timeout");
|
|
282
|
-
}, o.timeoutMs);
|
|
283
|
-
});
|
|
284
|
-
try {
|
|
285
|
-
const r = await Promise.race([
|
|
286
|
-
Promise.resolve()
|
|
287
|
-
.then(() => o.fn(ac.signal))
|
|
288
|
-
.then((value) => ({ value })),
|
|
289
|
-
timeout,
|
|
290
|
-
]);
|
|
291
|
-
if (r === "timeout") {
|
|
292
|
-
o.log.warn(`plugin ui ${o.what} timed out`, { ...o.fields, timeoutMs: o.timeoutMs });
|
|
293
|
-
throw new ApiError("ui.timeout", `Plugin ${o.plugin} did not respond within ${o.timeoutMs / 1000}s`);
|
|
294
|
-
}
|
|
295
|
-
return r.value;
|
|
296
|
-
}
|
|
297
|
-
catch (e) {
|
|
298
|
-
if (e instanceof ApiError)
|
|
299
|
-
throw e;
|
|
300
|
-
o.log.warn(`plugin ui ${o.what} failed`, { ...o.fields, err: e });
|
|
301
|
-
throw new ApiError(o.failCode, o.failMessage);
|
|
302
|
-
}
|
|
303
|
-
finally {
|
|
304
|
-
clearTimeout(timer);
|
|
305
|
-
}
|
|
306
|
-
}
|
|
295
|
+
};
|
|
296
|
+
UiViews = __decorate([
|
|
297
|
+
Injectable(),
|
|
298
|
+
__param(0, Inject(ExtensionHost)),
|
|
299
|
+
__param(1, Inject(ConversationsService)),
|
|
300
|
+
__param(2, Inject(PreviewerRegistry)),
|
|
301
|
+
__param(3, Inject(KernelDb)),
|
|
302
|
+
__param(4, Inject(KERNEL_LOGGER))
|
|
303
|
+
], UiViews);
|
|
304
|
+
export { UiViews };
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@capybara-hq/kernel",
|
|
3
|
-
"version": "0.1.0-rc.
|
|
3
|
+
"version": "0.1.0-rc.2",
|
|
4
4
|
"description": "Capybara kernel: config, database, plugin host and HTTP API of the Capybara agent platform",
|
|
5
5
|
"license": "Apache-2.0",
|
|
6
6
|
"repository": {
|
|
@@ -31,14 +31,21 @@
|
|
|
31
31
|
],
|
|
32
32
|
"dependencies": {
|
|
33
33
|
"@fastify/cookie": "^11.1.3",
|
|
34
|
+
"@fastify/static": "^9.3.0",
|
|
34
35
|
"@langchain/core": "^1.2.18",
|
|
35
36
|
"@langchain/langgraph": "^1.5.1",
|
|
36
37
|
"@langchain/langgraph-checkpoint": "^1.2.0",
|
|
38
|
+
"@nestjs/bullmq": "12.0.0",
|
|
37
39
|
"@nestjs/common": "^12.1.3",
|
|
38
40
|
"@nestjs/core": "^12.1.3",
|
|
39
41
|
"@nestjs/platform-fastify": "^12.1.3",
|
|
42
|
+
"@nestjs/schedule": "12.0.2",
|
|
43
|
+
"@nestjs/swagger": "12.0.5",
|
|
44
|
+
"@nestjs/terminus": "12.1.0",
|
|
45
|
+
"@nestjs/throttler": "6.7.1",
|
|
40
46
|
"ajv": "^8.20.0",
|
|
41
47
|
"bullmq": "^6.3.15",
|
|
48
|
+
"cron": "4.4.0",
|
|
42
49
|
"es-module-lexer": "2.3.2",
|
|
43
50
|
"fastify": "5.12.5",
|
|
44
51
|
"find-my-way": "9.9.0",
|
|
@@ -47,6 +54,8 @@
|
|
|
47
54
|
"jose": "^6.2.12",
|
|
48
55
|
"kysely": "^0.29.6",
|
|
49
56
|
"pg": "^8.23.1",
|
|
57
|
+
"pino": "10.4.0",
|
|
58
|
+
"pino-pretty": "13.2.0",
|
|
50
59
|
"reflect-metadata": "0.2.2",
|
|
51
60
|
"rxjs": "^7.8.2",
|
|
52
61
|
"semver": "^7.8.5",
|
|
@@ -62,7 +71,7 @@
|
|
|
62
71
|
"@types/pg": "^8.23.1",
|
|
63
72
|
"@types/semver": "^7.8.0",
|
|
64
73
|
"@types/yauzl": "3.4.0",
|
|
65
|
-
"@capybara-hq/testing": "0.1.0-rc.
|
|
74
|
+
"@capybara-hq/testing": "0.1.0-rc.3"
|
|
66
75
|
},
|
|
67
76
|
"scripts": {
|
|
68
77
|
"build": "tsc -b"
|
|
@@ -1,26 +0,0 @@
|
|
|
1
|
-
import type { Logger } from "@capybara-hq/plugin-sdk";
|
|
2
|
-
import type { FastifyReply } from "fastify";
|
|
3
|
-
/** 一项就绪检查:成功 resolve,失败 reject。 */
|
|
4
|
-
export type ReadinessCheck = () => Promise<void>;
|
|
5
|
-
/** 健康检查参数。 */
|
|
6
|
-
export interface HealthOptions {
|
|
7
|
-
checks: Record<string, ReadinessCheck>;
|
|
8
|
-
isStopping: () => boolean;
|
|
9
|
-
log: Logger;
|
|
10
|
-
/** 单项检查超时,默认 2s。 */
|
|
11
|
-
timeoutMs?: number;
|
|
12
|
-
}
|
|
13
|
-
/**
|
|
14
|
-
* `GET /healthz`(进程存活,恒 200)与 `GET /readyz`(依赖就绪)。
|
|
15
|
-
* readyz 的 body 只给出每项检查的 `"ok"` / `"error"`,失败原因只进日志(已打码),不进响应——
|
|
16
|
-
* 驱动的错误信息可能带连接串。停机开始后 readyz 立即 503,不再执行检查。
|
|
17
|
-
* 标为 `@Public()`:挂载内核 API 时全局 AuthGuard 也作用于这里。
|
|
18
|
-
*/
|
|
19
|
-
export declare class HealthController {
|
|
20
|
-
private readonly opts;
|
|
21
|
-
constructor(opts: HealthOptions);
|
|
22
|
-
healthz(): {
|
|
23
|
-
ok: true;
|
|
24
|
-
};
|
|
25
|
-
readyz(reply: FastifyReply): Promise<Record<string, unknown>>;
|
|
26
|
-
}
|