@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
|
@@ -1,7 +1,6 @@
|
|
|
1
|
-
import { type
|
|
2
|
-
import
|
|
3
|
-
import
|
|
4
|
-
type KernelTrx = Transaction<KernelDatabase>;
|
|
1
|
+
import { type AppendEvent, EventLog } from "../conversations/event-log.js";
|
|
2
|
+
import { KernelDb } from "../infra/database/kernel-db.js";
|
|
3
|
+
import { TransactionHost } from "../infra/database/transaction-host.js";
|
|
5
4
|
/** 运行的终态。 */
|
|
6
5
|
export type TerminalStatus = "completed" | "failed" | "aborted";
|
|
7
6
|
export declare const TERMINAL_STATUSES: ReadonlySet<string>;
|
|
@@ -20,26 +19,36 @@ export interface FinishRunArgs {
|
|
|
20
19
|
floorToTrigger?: boolean;
|
|
21
20
|
/**
|
|
22
21
|
* Runs in the transaction once the run is known not to be terminal, before the terminal event:
|
|
23
|
-
* a parent's open `
|
|
22
|
+
* a parent's open `Agent` calls get their results here (sub-agents spec §12, review m1).
|
|
24
23
|
*/
|
|
25
|
-
beforeTerminal?: (
|
|
24
|
+
beforeTerminal?: () => Promise<void>;
|
|
26
25
|
}
|
|
27
26
|
/**
|
|
28
|
-
*
|
|
29
|
-
*
|
|
30
|
-
*
|
|
31
|
-
* `consumed_seq = GREATEST(consumed_seq, consumed, runs.trigger_seq)`:不回退,且失败 / 中止 / 完成都至少
|
|
32
|
-
* 消费到触发该运行的消息——否则结束时的 ensureRun 会对同一条消息无限重试(失败)或卡住会话。
|
|
33
|
-
* 超时(`floorToTrigger: false`)只取 `GREATEST(consumed_seq, consumed)`:没吸收的消息留给下一轮(R34)。
|
|
34
|
-
* 加锁顺序与 `RunQueue.ensureRun` 一致(先会话行、后 runs 行),不会互相死锁。
|
|
35
|
-
* 调用方在提交后对非 null 的返回值调用 `eventLog.notify`。
|
|
27
|
+
* Writes runs' terminal states (one instance; the run worker, the run queue's orphan repairs, the
|
|
28
|
+
* waits and the eval replays finish runs through it).
|
|
36
29
|
*/
|
|
37
|
-
export declare
|
|
30
|
+
export declare class RunFinish {
|
|
31
|
+
private readonly kdb;
|
|
32
|
+
private readonly eventLog;
|
|
33
|
+
readonly txHost: TransactionHost;
|
|
34
|
+
constructor(kdb: KernelDb, eventLog: EventLog, txHost: TransactionHost);
|
|
35
|
+
/**
|
|
36
|
+
* 在调用方的事务内写运行的终态:会话行锁 → 运行仍未结束才写终态事件、推进 `consumed_seq`、更新 `runs.status`。
|
|
37
|
+
* 返回终态事件的 seq;运行已是终态(例如已被其他副本标记失败)→ 返回 null,什么都不写。
|
|
38
|
+
*
|
|
39
|
+
* `consumed_seq = GREATEST(consumed_seq, consumed, runs.trigger_seq)`:不回退,且失败 / 中止 / 完成都至少
|
|
40
|
+
* 消费到触发该运行的消息——否则结束时的 ensureRun 会对同一条消息无限重试(失败)或卡住会话。
|
|
41
|
+
* 超时(`floorToTrigger: false`)只取 `GREATEST(consumed_seq, consumed)`:没吸收的消息留给下一轮(R34)。
|
|
42
|
+
* 加锁顺序与 `RunQueue.ensureRun` 一致(先会话行、后 runs 行),不会互相死锁。
|
|
43
|
+
* 调用方在提交后对非 null 的返回值调用 {@link notifyFinished}。
|
|
44
|
+
*/
|
|
45
|
+
finishIn(a: FinishRunArgs): Promise<number | null>;
|
|
46
|
+
/** 自开事务写终态并在提交后发布会话通知;返回值同 {@link finishIn}。 */
|
|
47
|
+
finish(a: FinishRunArgs): Promise<number | null>;
|
|
48
|
+
private finishOwn;
|
|
49
|
+
}
|
|
38
50
|
/**
|
|
39
51
|
* After a terminal event committed: notify the log, and for a failed or stopped run also send
|
|
40
52
|
* `changed: queue` (the queue may have paused).
|
|
41
53
|
*/
|
|
42
54
|
export declare function notifyFinished(eventLog: Pick<EventLog, "notify" | "publishChanged">, conversationId: string, toSeq: number, status: TerminalStatus): Promise<void>;
|
|
43
|
-
/** 自开事务写终态并在提交后发布会话通知;返回值同 {@link finishRunIn}。 */
|
|
44
|
-
export declare function finishRun(db: KernelDb, eventLog: EventLog, a: FinishRunArgs): Promise<number | null>;
|
|
45
|
-
export {};
|
|
@@ -1,56 +1,110 @@
|
|
|
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 } from "@nestjs/common";
|
|
1
11
|
import { sql } from "kysely";
|
|
12
|
+
import { EventLog } from "../conversations/event-log.js";
|
|
2
13
|
import { pauseQueueIn } from "../conversations/queue.js";
|
|
14
|
+
import { KernelDb } from "../infra/database/kernel-db.js";
|
|
15
|
+
import { TransactionHost } from "../infra/database/transaction-host.js";
|
|
16
|
+
import { Transactional } from "../infra/database/transactional.decorator.js";
|
|
3
17
|
export const TERMINAL_STATUSES = new Set([
|
|
4
18
|
"completed",
|
|
5
19
|
"failed",
|
|
6
20
|
"aborted",
|
|
7
21
|
]);
|
|
8
22
|
/**
|
|
9
|
-
*
|
|
10
|
-
*
|
|
11
|
-
*
|
|
12
|
-
* `consumed_seq = GREATEST(consumed_seq, consumed, runs.trigger_seq)`:不回退,且失败 / 中止 / 完成都至少
|
|
13
|
-
* 消费到触发该运行的消息——否则结束时的 ensureRun 会对同一条消息无限重试(失败)或卡住会话。
|
|
14
|
-
* 超时(`floorToTrigger: false`)只取 `GREATEST(consumed_seq, consumed)`:没吸收的消息留给下一轮(R34)。
|
|
15
|
-
* 加锁顺序与 `RunQueue.ensureRun` 一致(先会话行、后 runs 行),不会互相死锁。
|
|
16
|
-
* 调用方在提交后对非 null 的返回值调用 `eventLog.notify`。
|
|
23
|
+
* Writes runs' terminal states (one instance; the run worker, the run queue's orphan repairs, the
|
|
24
|
+
* waits and the eval replays finish runs through it).
|
|
17
25
|
*/
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
.
|
|
24
|
-
.
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
26
|
+
let RunFinish = class RunFinish {
|
|
27
|
+
kdb;
|
|
28
|
+
eventLog;
|
|
29
|
+
txHost;
|
|
30
|
+
constructor(kdb, eventLog, txHost) {
|
|
31
|
+
this.kdb = kdb;
|
|
32
|
+
this.eventLog = eventLog;
|
|
33
|
+
this.txHost = txHost;
|
|
34
|
+
}
|
|
35
|
+
/**
|
|
36
|
+
* 在调用方的事务内写运行的终态:会话行锁 → 运行仍未结束才写终态事件、推进 `consumed_seq`、更新 `runs.status`。
|
|
37
|
+
* 返回终态事件的 seq;运行已是终态(例如已被其他副本标记失败)→ 返回 null,什么都不写。
|
|
38
|
+
*
|
|
39
|
+
* `consumed_seq = GREATEST(consumed_seq, consumed, runs.trigger_seq)`:不回退,且失败 / 中止 / 完成都至少
|
|
40
|
+
* 消费到触发该运行的消息——否则结束时的 ensureRun 会对同一条消息无限重试(失败)或卡住会话。
|
|
41
|
+
* 超时(`floorToTrigger: false`)只取 `GREATEST(consumed_seq, consumed)`:没吸收的消息留给下一轮(R34)。
|
|
42
|
+
* 加锁顺序与 `RunQueue.ensureRun` 一致(先会话行、后 runs 行),不会互相死锁。
|
|
43
|
+
* 调用方在提交后对非 null 的返回值调用 {@link notifyFinished}。
|
|
44
|
+
*/
|
|
45
|
+
async finishIn(a) {
|
|
46
|
+
const t = this.kdb.db;
|
|
47
|
+
await t
|
|
48
|
+
.selectFrom("conversations")
|
|
49
|
+
.select("id")
|
|
50
|
+
.where("id", "=", a.conversationId)
|
|
51
|
+
.forUpdate()
|
|
52
|
+
.executeTakeFirst();
|
|
53
|
+
const run = await t
|
|
54
|
+
.selectFrom("runs")
|
|
55
|
+
.select("status")
|
|
56
|
+
.where("id", "=", a.runId)
|
|
57
|
+
.forUpdate()
|
|
58
|
+
.executeTakeFirst();
|
|
59
|
+
if (!run || TERMINAL_STATUSES.has(run.status))
|
|
60
|
+
return null;
|
|
61
|
+
await a.beforeTerminal?.();
|
|
62
|
+
const [ev] = await this.eventLog.appendIn(a.conversationId, [
|
|
63
|
+
{ ...a.event, runId: a.runId, idemKey: `${a.event.type}:${a.runId}` },
|
|
64
|
+
]);
|
|
65
|
+
await t
|
|
66
|
+
.updateTable("conversations")
|
|
67
|
+
.set({
|
|
68
|
+
consumed_seq: a.floorToTrigger === false
|
|
69
|
+
? sql `GREATEST(consumed_seq, ${a.consumed ?? 0}::bigint)`
|
|
70
|
+
: sql `GREATEST(consumed_seq, ${a.consumed ?? 0}::bigint, (SELECT r.trigger_seq FROM capybara.runs r WHERE r.id = ${a.runId}))`,
|
|
71
|
+
})
|
|
72
|
+
.where("id", "=", a.conversationId)
|
|
73
|
+
.execute();
|
|
74
|
+
await t
|
|
75
|
+
.updateTable("runs")
|
|
76
|
+
.set({ status: a.status, finished_at: sql `now()` })
|
|
77
|
+
.where("id", "=", a.runId)
|
|
78
|
+
.execute();
|
|
79
|
+
// a failed or stopped run pauses the queued messages until the person resumes (spec §5.7)
|
|
80
|
+
if (a.status !== "completed")
|
|
81
|
+
await pauseQueueIn(t, a.conversationId);
|
|
82
|
+
return ev.seq;
|
|
83
|
+
}
|
|
84
|
+
/** 自开事务写终态并在提交后发布会话通知;返回值同 {@link finishIn}。 */
|
|
85
|
+
async finish(a) {
|
|
86
|
+
const toSeq = await this.finishOwn(a);
|
|
87
|
+
if (toSeq !== null)
|
|
88
|
+
await notifyFinished(this.eventLog, a.conversationId, toSeq, a.status);
|
|
89
|
+
return toSeq;
|
|
90
|
+
}
|
|
91
|
+
finishOwn(a) {
|
|
92
|
+
return this.finishIn(a);
|
|
93
|
+
}
|
|
94
|
+
};
|
|
95
|
+
__decorate([
|
|
96
|
+
Transactional({ propagation: "mandatory" })
|
|
97
|
+
], RunFinish.prototype, "finishIn", null);
|
|
98
|
+
__decorate([
|
|
99
|
+
Transactional({ propagation: "requires_new" })
|
|
100
|
+
], RunFinish.prototype, "finishOwn", null);
|
|
101
|
+
RunFinish = __decorate([
|
|
102
|
+
Injectable(),
|
|
103
|
+
__param(0, Inject(KernelDb)),
|
|
104
|
+
__param(1, Inject(EventLog)),
|
|
105
|
+
__param(2, Inject(TransactionHost))
|
|
106
|
+
], RunFinish);
|
|
107
|
+
export { RunFinish };
|
|
54
108
|
/**
|
|
55
109
|
* After a terminal event committed: notify the log, and for a failed or stopped run also send
|
|
56
110
|
* `changed: queue` (the queue may have paused).
|
|
@@ -60,10 +114,3 @@ export async function notifyFinished(eventLog, conversationId, toSeq, status) {
|
|
|
60
114
|
if (status !== "completed")
|
|
61
115
|
await eventLog.publishChanged(conversationId, "queue");
|
|
62
116
|
}
|
|
63
|
-
/** 自开事务写终态并在提交后发布会话通知;返回值同 {@link finishRunIn}。 */
|
|
64
|
-
export async function finishRun(db, eventLog, a) {
|
|
65
|
-
const toSeq = await db.transaction().execute((t) => finishRunIn(t, eventLog, a));
|
|
66
|
-
if (toSeq !== null)
|
|
67
|
-
await notifyFinished(eventLog, a.conversationId, toSeq, a.status);
|
|
68
|
-
return toSeq;
|
|
69
|
-
}
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
import type { Job, Queue } from "bullmq";
|
|
2
|
+
import type { ConversationKind } from "../db/kernel-schema.js";
|
|
3
|
+
import { KernelDb } from "../infra/database/kernel-db.js";
|
|
4
|
+
import type { KernelLogger } from "../log.js";
|
|
5
|
+
/** 内核运行队列的 BullMQ 队列名(不含 `:`;与插件队列 `cap.<插件>.<名>` 不会重名)。 */
|
|
6
|
+
export declare const RUN_QUEUE_NAME = "cap-kernel-runs";
|
|
7
|
+
/**
|
|
8
|
+
* Queue of sub-agent (child) runs (sub-agents spec §7.4): a replica still on a version without
|
|
9
|
+
* sub-agents never takes a child job, and child load shows apart from conversations.
|
|
10
|
+
*/
|
|
11
|
+
export declare const SUBAGENT_RUN_QUEUE_NAME = "cap-kernel-subagent-runs";
|
|
12
|
+
/** The run queue of a conversation kind: sub-agent conversations have their own. */
|
|
13
|
+
export declare const runQueueNameFor: (kind: ConversationKind) => string;
|
|
14
|
+
/** 未结束的运行状态(waiting:等人处理审批 / 输入请求,没有任务、不占会话锁与配额)。 */
|
|
15
|
+
export declare const ACTIVE_RUN_STATUSES: readonly ["queued", "running", "waiting"];
|
|
16
|
+
/** 运行任务的数据。 */
|
|
17
|
+
export interface RunJobData {
|
|
18
|
+
runId: string;
|
|
19
|
+
conversationId: string;
|
|
20
|
+
}
|
|
21
|
+
/** 同一触发点(会话 + 最新用户消息 seq)只投递一次。 */
|
|
22
|
+
export declare const runJobId: (conversationId: string, maxUserSeq: number) => string;
|
|
23
|
+
/**
|
|
24
|
+
* The producer side of the two run queues (`cap-kernel-runs`, `cap-kernel-subagent-runs`): adds
|
|
25
|
+
* run jobs under the caller's job id and looks them up. The run queue (`ensureRun`, orphan
|
|
26
|
+
* repairs), the waits (resumes) and the sub-agent dispatch enqueue through it; the run worker
|
|
27
|
+
* consumes both queues.
|
|
28
|
+
*/
|
|
29
|
+
export declare class RunJobs {
|
|
30
|
+
private readonly kdb;
|
|
31
|
+
private readonly queues;
|
|
32
|
+
constructor(kdb: KernelDb, runs: Queue<RunJobData>, subagentRuns: Queue<RunJobData>, log: KernelLogger);
|
|
33
|
+
/** The BullMQ queue `name` (default: conversation runs). */
|
|
34
|
+
queue(name?: string): Queue<RunJobData>;
|
|
35
|
+
/** A run job by id on the queue `name`, or undefined. */
|
|
36
|
+
getJob(jobId: string, name?: string): Promise<Job<RunJobData> | undefined>;
|
|
37
|
+
/** Adds a conversation run job (`ensureRun`'s own enqueue). */
|
|
38
|
+
add(data: RunJobData, jobId: string): Promise<void>;
|
|
39
|
+
/**
|
|
40
|
+
* Enqueues a run job under the caller's job id (resumes, dispatches, repairs). The queue follows
|
|
41
|
+
* the conversation's kind (a sub-agent's runs go to {@link SUBAGENT_RUN_QUEUE_NAME}); pass
|
|
42
|
+
* `kind` when the caller knows it, else it is read.
|
|
43
|
+
*/
|
|
44
|
+
enqueue(data: RunJobData, jobId: string, kind?: ConversationKind): Promise<void>;
|
|
45
|
+
}
|
|
46
|
+
/** The run queues' producer (the sub-agent dispatch, the run queue and the waits use it). */
|
|
47
|
+
export declare class RunJobsModule {
|
|
48
|
+
}
|
|
@@ -0,0 +1,95 @@
|
|
|
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 { getQueueToken } from "@nestjs/bullmq";
|
|
11
|
+
import { Inject, Injectable, Module } from "@nestjs/common";
|
|
12
|
+
import { KernelDb } from "../infra/database/kernel-db.js";
|
|
13
|
+
import { QueueModule } from "../infra/queue/queue.module.js";
|
|
14
|
+
import { KERNEL_LOGGER } from "../infra/tokens.js";
|
|
15
|
+
/** 内核运行队列的 BullMQ 队列名(不含 `:`;与插件队列 `cap.<插件>.<名>` 不会重名)。 */
|
|
16
|
+
export const RUN_QUEUE_NAME = "cap-kernel-runs";
|
|
17
|
+
/**
|
|
18
|
+
* Queue of sub-agent (child) runs (sub-agents spec §7.4): a replica still on a version without
|
|
19
|
+
* sub-agents never takes a child job, and child load shows apart from conversations.
|
|
20
|
+
*/
|
|
21
|
+
export const SUBAGENT_RUN_QUEUE_NAME = "cap-kernel-subagent-runs";
|
|
22
|
+
/** The run queue of a conversation kind: sub-agent conversations have their own. */
|
|
23
|
+
export const runQueueNameFor = (kind) => kind === "subagent" ? SUBAGENT_RUN_QUEUE_NAME : RUN_QUEUE_NAME;
|
|
24
|
+
/** 未结束的运行状态(waiting:等人处理审批 / 输入请求,没有任务、不占会话锁与配额)。 */
|
|
25
|
+
export const ACTIVE_RUN_STATUSES = ["queued", "running", "waiting"];
|
|
26
|
+
/** 同一触发点(会话 + 最新用户消息 seq)只投递一次。 */
|
|
27
|
+
export const runJobId = (conversationId, maxUserSeq) => `run-${conversationId}-${maxUserSeq}`;
|
|
28
|
+
/** The options of every run job: one attempt (the run's own paths handle failures), not kept. */
|
|
29
|
+
const RUN_JOB_OPTIONS = { attempts: 1, removeOnComplete: true, removeOnFail: true };
|
|
30
|
+
/**
|
|
31
|
+
* The producer side of the two run queues (`cap-kernel-runs`, `cap-kernel-subagent-runs`): adds
|
|
32
|
+
* run jobs under the caller's job id and looks them up. The run queue (`ensureRun`, orphan
|
|
33
|
+
* repairs), the waits (resumes) and the sub-agent dispatch enqueue through it; the run worker
|
|
34
|
+
* consumes both queues.
|
|
35
|
+
*/
|
|
36
|
+
let RunJobs = class RunJobs {
|
|
37
|
+
kdb;
|
|
38
|
+
queues;
|
|
39
|
+
constructor(kdb, runs, subagentRuns, log) {
|
|
40
|
+
this.kdb = kdb;
|
|
41
|
+
this.queues = { [RUN_QUEUE_NAME]: runs, [SUBAGENT_RUN_QUEUE_NAME]: subagentRuns };
|
|
42
|
+
for (const [name, q] of Object.entries(this.queues)) {
|
|
43
|
+
q.on("error", (err) => log.error("run queue error", { err, queue: name }));
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
/** The BullMQ queue `name` (default: conversation runs). */
|
|
47
|
+
queue(name = RUN_QUEUE_NAME) {
|
|
48
|
+
const q = this.queues[name];
|
|
49
|
+
if (!q)
|
|
50
|
+
throw new Error(`unknown run queue ${name}`);
|
|
51
|
+
return q;
|
|
52
|
+
}
|
|
53
|
+
/** A run job by id on the queue `name`, or undefined. */
|
|
54
|
+
getJob(jobId, name = RUN_QUEUE_NAME) {
|
|
55
|
+
return this.queue(name).getJob(jobId);
|
|
56
|
+
}
|
|
57
|
+
/** Adds a conversation run job (`ensureRun`'s own enqueue). */
|
|
58
|
+
async add(data, jobId) {
|
|
59
|
+
await this.queue().add("run", data, { jobId, ...RUN_JOB_OPTIONS });
|
|
60
|
+
}
|
|
61
|
+
/**
|
|
62
|
+
* Enqueues a run job under the caller's job id (resumes, dispatches, repairs). The queue follows
|
|
63
|
+
* the conversation's kind (a sub-agent's runs go to {@link SUBAGENT_RUN_QUEUE_NAME}); pass
|
|
64
|
+
* `kind` when the caller knows it, else it is read.
|
|
65
|
+
*/
|
|
66
|
+
async enqueue(data, jobId, kind) {
|
|
67
|
+
const k = kind ??
|
|
68
|
+
(await this.kdb.db
|
|
69
|
+
.selectFrom("conversations")
|
|
70
|
+
.select("kind")
|
|
71
|
+
.where("id", "=", data.conversationId)
|
|
72
|
+
.executeTakeFirst())?.kind ??
|
|
73
|
+
"chat";
|
|
74
|
+
await this.queue(runQueueNameFor(k)).add("run", data, { jobId, ...RUN_JOB_OPTIONS });
|
|
75
|
+
}
|
|
76
|
+
};
|
|
77
|
+
RunJobs = __decorate([
|
|
78
|
+
Injectable(),
|
|
79
|
+
__param(0, Inject(KernelDb)),
|
|
80
|
+
__param(1, Inject(getQueueToken(RUN_QUEUE_NAME))),
|
|
81
|
+
__param(2, Inject(getQueueToken(SUBAGENT_RUN_QUEUE_NAME))),
|
|
82
|
+
__param(3, Inject(KERNEL_LOGGER))
|
|
83
|
+
], RunJobs);
|
|
84
|
+
export { RunJobs };
|
|
85
|
+
/** The run queues' producer (the sub-agent dispatch, the run queue and the waits use it). */
|
|
86
|
+
let RunJobsModule = class RunJobsModule {
|
|
87
|
+
};
|
|
88
|
+
RunJobsModule = __decorate([
|
|
89
|
+
Module({
|
|
90
|
+
imports: [QueueModule.registerQueue(RUN_QUEUE_NAME, SUBAGENT_RUN_QUEUE_NAME)],
|
|
91
|
+
providers: [RunJobs],
|
|
92
|
+
exports: [RunJobs],
|
|
93
|
+
})
|
|
94
|
+
], RunJobsModule);
|
|
95
|
+
export { RunJobsModule };
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
import { WorkerHost } from "@nestjs/bullmq";
|
|
2
|
+
import { type DynamicModule } from "@nestjs/common";
|
|
3
|
+
import type { Job, Worker } from "bullmq";
|
|
4
|
+
import type { KernelConfig } from "../config/schema.js";
|
|
5
|
+
import { TitleQueue } from "../conversations/titles.js";
|
|
6
|
+
import { type RunJobData } from "./run-jobs.js";
|
|
7
|
+
import { RunWorker } from "./run-worker.js";
|
|
8
|
+
import { UsageReporter, type UsageReportJob } from "./usage-report.js";
|
|
9
|
+
type RunResult = Awaited<ReturnType<RunWorker["process"]>>;
|
|
10
|
+
/** The consumer of `cap-kernel-runs` (conversation runs): {@link RunWorker}. */
|
|
11
|
+
export declare class RunsProcessor extends WorkerHost<Worker<RunJobData, RunResult>> {
|
|
12
|
+
private readonly runs;
|
|
13
|
+
constructor(runs: RunWorker);
|
|
14
|
+
process(job: Job<RunJobData>, token?: string): Promise<RunResult>;
|
|
15
|
+
completed(job: Job<RunJobData>, result: RunResult): void;
|
|
16
|
+
failed(job: Job<RunJobData> | undefined, err: Error): void;
|
|
17
|
+
error(err: Error): void;
|
|
18
|
+
}
|
|
19
|
+
/** The consumer of `cap-kernel-subagent-runs` (sub-agent runs, spec §7.4): {@link RunWorker}. */
|
|
20
|
+
export declare class SubagentRunsProcessor extends WorkerHost<Worker<RunJobData, RunResult>> {
|
|
21
|
+
private readonly runs;
|
|
22
|
+
constructor(runs: RunWorker);
|
|
23
|
+
process(job: Job<RunJobData>, token?: string): Promise<RunResult>;
|
|
24
|
+
completed(job: Job<RunJobData>, result: RunResult): void;
|
|
25
|
+
failed(job: Job<RunJobData> | undefined, err: Error): void;
|
|
26
|
+
error(err: Error): void;
|
|
27
|
+
}
|
|
28
|
+
/** The consumer of `cap-kernel-usage-report`: {@link UsageReporter}. */
|
|
29
|
+
export declare class UsageReportProcessor extends WorkerHost<Worker<UsageReportJob>> {
|
|
30
|
+
private readonly reporter;
|
|
31
|
+
constructor(reporter: UsageReporter);
|
|
32
|
+
process(job: Job<UsageReportJob>, token?: string): Promise<void>;
|
|
33
|
+
failed(job: Job<UsageReportJob> | undefined, err: Error): void;
|
|
34
|
+
error(err: Error): void;
|
|
35
|
+
}
|
|
36
|
+
/** The consumer of `cap-kernel-titles`: {@link TitleQueue}. */
|
|
37
|
+
export declare class TitleProcessor extends WorkerHost<Worker<{
|
|
38
|
+
conversationId: string;
|
|
39
|
+
attempt: number;
|
|
40
|
+
}>> {
|
|
41
|
+
private readonly titles;
|
|
42
|
+
constructor(titles: TitleQueue);
|
|
43
|
+
process(job: Job<{
|
|
44
|
+
conversationId: string;
|
|
45
|
+
attempt: number;
|
|
46
|
+
}>): Promise<void>;
|
|
47
|
+
error(err: Error): void;
|
|
48
|
+
}
|
|
49
|
+
/**
|
|
50
|
+
* The runtime's queue consumers: the run worker on both run queues, `usage.report` deliveries and
|
|
51
|
+
* conversation titles. Imported only by the worker role (`WorkerModule`), so other roles get no
|
|
52
|
+
* processor and no BullMQ worker. Their worker options come from the startup config (concurrency
|
|
53
|
+
* per queue, the run queues' job lock and stalled detection, which the usage and title workers
|
|
54
|
+
* follow). The workers never start by themselves: the worker role (`WorkerRole`) starts them after
|
|
55
|
+
* the extensions loaded, and pauses them on stop.
|
|
56
|
+
*/
|
|
57
|
+
export declare class RuntimeWorkersModule {
|
|
58
|
+
static forRoot(config: KernelConfig): DynamicModule;
|
|
59
|
+
}
|
|
60
|
+
export {};
|
|
@@ -0,0 +1,185 @@
|
|
|
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
|
+
var RuntimeWorkersModule_1;
|
|
11
|
+
import { hostname } from "node:os";
|
|
12
|
+
import { OnWorkerEvent, WorkerHost } from "@nestjs/bullmq";
|
|
13
|
+
import { Inject, Injectable, Module } from "@nestjs/common";
|
|
14
|
+
import { TITLE_QUEUE, TitleQueue, TitlesModule } from "../conversations/titles.js";
|
|
15
|
+
import { configuredProcessor } from "../infra/queue/configured-processor.js";
|
|
16
|
+
import { runJob } from "../infra/queue/run-job.js";
|
|
17
|
+
import { RUN_QUEUE_NAME, SUBAGENT_RUN_QUEUE_NAME } from "./run-jobs.js";
|
|
18
|
+
import { MAX_STALLED_COUNT, RunWorker } from "./run-worker.js";
|
|
19
|
+
import { RuntimeModule } from "./runtime.module.js";
|
|
20
|
+
import { USAGE_REPORT_QUEUE, UsageReporter, UsageReportModule, } from "./usage-report.js";
|
|
21
|
+
/** The consumer of `cap-kernel-runs` (conversation runs): {@link RunWorker}. */
|
|
22
|
+
let RunsProcessor = class RunsProcessor extends WorkerHost {
|
|
23
|
+
runs;
|
|
24
|
+
constructor(runs) {
|
|
25
|
+
super();
|
|
26
|
+
this.runs = runs;
|
|
27
|
+
}
|
|
28
|
+
process(job, token) {
|
|
29
|
+
return runJob(RUN_QUEUE_NAME, job, () => this.runs.process(job, token));
|
|
30
|
+
}
|
|
31
|
+
completed(job, result) {
|
|
32
|
+
this.runs.onCompleted(job, result);
|
|
33
|
+
}
|
|
34
|
+
failed(job, err) {
|
|
35
|
+
this.runs.onFailed(job, err);
|
|
36
|
+
}
|
|
37
|
+
error(err) {
|
|
38
|
+
this.runs.onError(err, RUN_QUEUE_NAME);
|
|
39
|
+
}
|
|
40
|
+
};
|
|
41
|
+
__decorate([
|
|
42
|
+
OnWorkerEvent("completed")
|
|
43
|
+
], RunsProcessor.prototype, "completed", null);
|
|
44
|
+
__decorate([
|
|
45
|
+
OnWorkerEvent("failed")
|
|
46
|
+
], RunsProcessor.prototype, "failed", null);
|
|
47
|
+
__decorate([
|
|
48
|
+
OnWorkerEvent("error")
|
|
49
|
+
], RunsProcessor.prototype, "error", null);
|
|
50
|
+
RunsProcessor = __decorate([
|
|
51
|
+
Injectable(),
|
|
52
|
+
__param(0, Inject(RunWorker))
|
|
53
|
+
], RunsProcessor);
|
|
54
|
+
export { RunsProcessor };
|
|
55
|
+
/** The consumer of `cap-kernel-subagent-runs` (sub-agent runs, spec §7.4): {@link RunWorker}. */
|
|
56
|
+
let SubagentRunsProcessor = class SubagentRunsProcessor extends WorkerHost {
|
|
57
|
+
runs;
|
|
58
|
+
constructor(runs) {
|
|
59
|
+
super();
|
|
60
|
+
this.runs = runs;
|
|
61
|
+
}
|
|
62
|
+
process(job, token) {
|
|
63
|
+
return runJob(SUBAGENT_RUN_QUEUE_NAME, job, () => this.runs.process(job, token));
|
|
64
|
+
}
|
|
65
|
+
completed(job, result) {
|
|
66
|
+
this.runs.onCompleted(job, result);
|
|
67
|
+
}
|
|
68
|
+
failed(job, err) {
|
|
69
|
+
this.runs.onFailed(job, err);
|
|
70
|
+
}
|
|
71
|
+
error(err) {
|
|
72
|
+
this.runs.onError(err, SUBAGENT_RUN_QUEUE_NAME);
|
|
73
|
+
}
|
|
74
|
+
};
|
|
75
|
+
__decorate([
|
|
76
|
+
OnWorkerEvent("completed")
|
|
77
|
+
], SubagentRunsProcessor.prototype, "completed", null);
|
|
78
|
+
__decorate([
|
|
79
|
+
OnWorkerEvent("failed")
|
|
80
|
+
], SubagentRunsProcessor.prototype, "failed", null);
|
|
81
|
+
__decorate([
|
|
82
|
+
OnWorkerEvent("error")
|
|
83
|
+
], SubagentRunsProcessor.prototype, "error", null);
|
|
84
|
+
SubagentRunsProcessor = __decorate([
|
|
85
|
+
Injectable(),
|
|
86
|
+
__param(0, Inject(RunWorker))
|
|
87
|
+
], SubagentRunsProcessor);
|
|
88
|
+
export { SubagentRunsProcessor };
|
|
89
|
+
/** The consumer of `cap-kernel-usage-report`: {@link UsageReporter}. */
|
|
90
|
+
let UsageReportProcessor = class UsageReportProcessor extends WorkerHost {
|
|
91
|
+
reporter;
|
|
92
|
+
constructor(reporter) {
|
|
93
|
+
super();
|
|
94
|
+
this.reporter = reporter;
|
|
95
|
+
}
|
|
96
|
+
process(job, token) {
|
|
97
|
+
return runJob(USAGE_REPORT_QUEUE, job, () => this.reporter.process(job, token));
|
|
98
|
+
}
|
|
99
|
+
failed(job, err) {
|
|
100
|
+
this.reporter.onFailed(job, err);
|
|
101
|
+
}
|
|
102
|
+
error(err) {
|
|
103
|
+
this.reporter.onError(err);
|
|
104
|
+
}
|
|
105
|
+
};
|
|
106
|
+
__decorate([
|
|
107
|
+
OnWorkerEvent("failed")
|
|
108
|
+
], UsageReportProcessor.prototype, "failed", null);
|
|
109
|
+
__decorate([
|
|
110
|
+
OnWorkerEvent("error")
|
|
111
|
+
], UsageReportProcessor.prototype, "error", null);
|
|
112
|
+
UsageReportProcessor = __decorate([
|
|
113
|
+
Injectable(),
|
|
114
|
+
__param(0, Inject(UsageReporter))
|
|
115
|
+
], UsageReportProcessor);
|
|
116
|
+
export { UsageReportProcessor };
|
|
117
|
+
/** The consumer of `cap-kernel-titles`: {@link TitleQueue}. */
|
|
118
|
+
let TitleProcessor = class TitleProcessor extends WorkerHost {
|
|
119
|
+
titles;
|
|
120
|
+
constructor(titles) {
|
|
121
|
+
super();
|
|
122
|
+
this.titles = titles;
|
|
123
|
+
}
|
|
124
|
+
process(job) {
|
|
125
|
+
return runJob(TITLE_QUEUE, job, () => this.titles.process(job));
|
|
126
|
+
}
|
|
127
|
+
error(err) {
|
|
128
|
+
this.titles.onError(err);
|
|
129
|
+
}
|
|
130
|
+
};
|
|
131
|
+
__decorate([
|
|
132
|
+
OnWorkerEvent("error")
|
|
133
|
+
], TitleProcessor.prototype, "error", null);
|
|
134
|
+
TitleProcessor = __decorate([
|
|
135
|
+
Injectable(),
|
|
136
|
+
__param(0, Inject(TitleQueue))
|
|
137
|
+
], TitleProcessor);
|
|
138
|
+
export { TitleProcessor };
|
|
139
|
+
/**
|
|
140
|
+
* The runtime's queue consumers: the run worker on both run queues, `usage.report` deliveries and
|
|
141
|
+
* conversation titles. Imported only by the worker role (`WorkerModule`), so other roles get no
|
|
142
|
+
* processor and no BullMQ worker. Their worker options come from the startup config (concurrency
|
|
143
|
+
* per queue, the run queues' job lock and stalled detection, which the usage and title workers
|
|
144
|
+
* follow). The workers never start by themselves: the worker role (`WorkerRole`) starts them after
|
|
145
|
+
* the extensions loaded, and pauses them on stop.
|
|
146
|
+
*/
|
|
147
|
+
let RuntimeWorkersModule = RuntimeWorkersModule_1 = class RuntimeWorkersModule {
|
|
148
|
+
static forRoot(config) {
|
|
149
|
+
const { workerConcurrency, jobLockMs, stalledIntervalMs } = config.runtime;
|
|
150
|
+
const runs = {
|
|
151
|
+
// the worker name is recorded on the job (BullMQ processedBy): which replica ran it
|
|
152
|
+
name: `${hostname()}-${process.pid}`,
|
|
153
|
+
concurrency: workerConcurrency,
|
|
154
|
+
lockDuration: jobLockMs,
|
|
155
|
+
stalledInterval: stalledIntervalMs,
|
|
156
|
+
maxStalledCount: MAX_STALLED_COUNT,
|
|
157
|
+
};
|
|
158
|
+
return {
|
|
159
|
+
module: RuntimeWorkersModule_1,
|
|
160
|
+
imports: [RuntimeModule, TitlesModule, UsageReportModule],
|
|
161
|
+
providers: [
|
|
162
|
+
configuredProcessor(RunsProcessor, RUN_QUEUE_NAME, runs),
|
|
163
|
+
configuredProcessor(SubagentRunsProcessor, SUBAGENT_RUN_QUEUE_NAME, runs),
|
|
164
|
+
configuredProcessor(UsageReportProcessor, USAGE_REPORT_QUEUE, {
|
|
165
|
+
concurrency: config.hooks.usageReportConcurrency,
|
|
166
|
+
lockDuration: jobLockMs,
|
|
167
|
+
stalledInterval: stalledIntervalMs,
|
|
168
|
+
maxStalledCount: 3,
|
|
169
|
+
}),
|
|
170
|
+
configuredProcessor(TitleProcessor, TITLE_QUEUE, {
|
|
171
|
+
concurrency: 4,
|
|
172
|
+
lockDuration: jobLockMs,
|
|
173
|
+
stalledInterval: stalledIntervalMs,
|
|
174
|
+
maxStalledCount: 1,
|
|
175
|
+
}),
|
|
176
|
+
],
|
|
177
|
+
exports: [RunsProcessor, SubagentRunsProcessor, UsageReportProcessor, TitleProcessor],
|
|
178
|
+
};
|
|
179
|
+
}
|
|
180
|
+
};
|
|
181
|
+
RuntimeWorkersModule = RuntimeWorkersModule_1 = __decorate([
|
|
182
|
+
Module({})
|
|
183
|
+
// biome-ignore lint/complexity/noStaticOnlyClass: a Nest dynamic module
|
|
184
|
+
], RuntimeWorkersModule);
|
|
185
|
+
export { RuntimeWorkersModule };
|