@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
|
@@ -0,0 +1,144 @@
|
|
|
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";
|
|
11
|
+
import { ChannelsProcessor } from "../channels/channels.module.js";
|
|
12
|
+
import { ChannelOutbound } from "../channels/outbound.js";
|
|
13
|
+
import { TitleQueue } from "../conversations/titles.js";
|
|
14
|
+
import { EvalsProcessor } from "../evals/evals.module.js";
|
|
15
|
+
import { EvalWorker } from "../evals/worker.js";
|
|
16
|
+
import { KernelConfigService } from "../infra/config/kernel-config.service.js";
|
|
17
|
+
import { LockedIntervalScheduler } from "../infra/schedule/locked-interval.js";
|
|
18
|
+
import { ScheduledRuns } from "../infra/schedule/scheduled-runs.js";
|
|
19
|
+
import { KERNEL_LOGGER } from "../infra/tokens.js";
|
|
20
|
+
import { MaintenanceProcessor } from "../runtime/maintenance.js";
|
|
21
|
+
import { RunsProcessor, SubagentRunsProcessor, TitleProcessor, UsageReportProcessor, } from "../runtime/run-processors.js";
|
|
22
|
+
import { RunWorker } from "../runtime/run-worker.js";
|
|
23
|
+
import { UsageReporter } from "../runtime/usage-report.js";
|
|
24
|
+
/**
|
|
25
|
+
* The worker role's parts, driven by `KernelLifecycle` at fixed points of its start order and stop
|
|
26
|
+
* phases (so they stay ordered after the extension load and before the extension host closes): the
|
|
27
|
+
* queue consumers (runs, sub-agent runs, evals, maintenance, channel deliveries, `usage.report`,
|
|
28
|
+
* titles) and the schedulers of the `@LockedCron` / `@LockedInterval` jobs. Provided only by
|
|
29
|
+
* `WorkerModule`, so a process without the worker role has none of them.
|
|
30
|
+
*/
|
|
31
|
+
let WorkerRole = class WorkerRole {
|
|
32
|
+
log;
|
|
33
|
+
intervals;
|
|
34
|
+
scheduledRuns;
|
|
35
|
+
runWorker;
|
|
36
|
+
evalWorker;
|
|
37
|
+
usageReport;
|
|
38
|
+
titles;
|
|
39
|
+
channelOutbound;
|
|
40
|
+
runsProcessor;
|
|
41
|
+
subagentRunsProcessor;
|
|
42
|
+
usageProcessor;
|
|
43
|
+
titleProcessor;
|
|
44
|
+
channelsProcessor;
|
|
45
|
+
evalsProcessor;
|
|
46
|
+
maintenanceProcessor;
|
|
47
|
+
/** The startup config (the roles). */
|
|
48
|
+
config;
|
|
49
|
+
/** The run worker was started: the runs phase drains it. */
|
|
50
|
+
runsStarted = false;
|
|
51
|
+
/** The eval worker was started: the runs phase drains it. */
|
|
52
|
+
evalsStarted = false;
|
|
53
|
+
constructor(config, log, intervals, scheduledRuns, runWorker, evalWorker, usageReport, titles, channelOutbound, runsProcessor, subagentRunsProcessor, usageProcessor, titleProcessor, channelsProcessor, evalsProcessor, maintenanceProcessor) {
|
|
54
|
+
this.log = log;
|
|
55
|
+
this.intervals = intervals;
|
|
56
|
+
this.scheduledRuns = scheduledRuns;
|
|
57
|
+
this.runWorker = runWorker;
|
|
58
|
+
this.evalWorker = evalWorker;
|
|
59
|
+
this.usageReport = usageReport;
|
|
60
|
+
this.titles = titles;
|
|
61
|
+
this.channelOutbound = channelOutbound;
|
|
62
|
+
this.runsProcessor = runsProcessor;
|
|
63
|
+
this.subagentRunsProcessor = subagentRunsProcessor;
|
|
64
|
+
this.usageProcessor = usageProcessor;
|
|
65
|
+
this.titleProcessor = titleProcessor;
|
|
66
|
+
this.channelsProcessor = channelsProcessor;
|
|
67
|
+
this.evalsProcessor = evalsProcessor;
|
|
68
|
+
this.maintenanceProcessor = maintenanceProcessor;
|
|
69
|
+
this.config = config.get();
|
|
70
|
+
}
|
|
71
|
+
/**
|
|
72
|
+
* Starts the queue consumers (after the extension load), then opens the schedules' start gate:
|
|
73
|
+
* the cron and interval timers were armed at application bootstrap, but every tick before this
|
|
74
|
+
* point skipped (decision R21 of the Nest kernel spec); the `@LockedInterval({ runOnStart })`
|
|
75
|
+
* jobs run now, in the background (once across replicas starting together). `checkpoint` throws
|
|
76
|
+
* when a stop began meanwhile.
|
|
77
|
+
*/
|
|
78
|
+
async start(checkpoint) {
|
|
79
|
+
// both run queues' @Processor workers (built with the run config, never autorun)
|
|
80
|
+
this.runWorker.start([this.runsProcessor.worker, this.subagentRunsProcessor.worker]);
|
|
81
|
+
this.runsStarted = true;
|
|
82
|
+
this.evalWorker.start(this.evalsProcessor.worker);
|
|
83
|
+
this.evalsStarted = true;
|
|
84
|
+
// The maintenance queue: remove the retired job schedulers (idempotent, harmless when several
|
|
85
|
+
// replicas do it), then start its one consumer. A failure is only logged and does not stop the
|
|
86
|
+
// start (like the workers' connection errors): any worker replica removes them on its next start.
|
|
87
|
+
try {
|
|
88
|
+
await this.maintenanceProcessor.removeRetiredSchedulers();
|
|
89
|
+
}
|
|
90
|
+
catch (err) {
|
|
91
|
+
this.log.error("cannot register maintenance job schedulers", { err });
|
|
92
|
+
}
|
|
93
|
+
checkpoint();
|
|
94
|
+
this.maintenanceProcessor.start();
|
|
95
|
+
this.channelOutbound.startWorker(this.channelsProcessor.worker);
|
|
96
|
+
this.usageReport.startWorker(this.usageProcessor.worker);
|
|
97
|
+
this.titles.startWorker(this.titleProcessor.worker);
|
|
98
|
+
if (!this.config.roles.includes("gateway")) {
|
|
99
|
+
this.log.info("this process runs the worker role without gateway; channel long connections are held only by processes with the gateway role", { roles: this.config.roles });
|
|
100
|
+
}
|
|
101
|
+
// The gate opens: from here on ticks run; the runOnStart jobs run once now, in the background
|
|
102
|
+
this.scheduledRuns.open();
|
|
103
|
+
this.intervals.runStartJobs();
|
|
104
|
+
}
|
|
105
|
+
/**
|
|
106
|
+
* Closes the start gate and stops the schedulers (no new tick; the runs in progress get the stop
|
|
107
|
+
* signal) and returns the wait for those runs, at most `budgetMs`.
|
|
108
|
+
*/
|
|
109
|
+
stopSchedules(budgetMs) {
|
|
110
|
+
return this.scheduledRuns.stop(budgetMs);
|
|
111
|
+
}
|
|
112
|
+
/** The runs phase: this process's runs stop at their next step boundary (undefined: never started). */
|
|
113
|
+
drainRuns(budgetMs) {
|
|
114
|
+
return this.runsStarted ? this.runWorker.close(budgetMs) : undefined;
|
|
115
|
+
}
|
|
116
|
+
/** The eval cases in progress stop (undefined: never started). */
|
|
117
|
+
drainEvals(budgetMs) {
|
|
118
|
+
return this.evalsStarted ? this.evalWorker.close(budgetMs) : undefined;
|
|
119
|
+
}
|
|
120
|
+
/** Closes the maintenance queue's worker. */
|
|
121
|
+
closeMaintenance() {
|
|
122
|
+
return this.maintenanceProcessor.worker.close();
|
|
123
|
+
}
|
|
124
|
+
};
|
|
125
|
+
WorkerRole = __decorate([
|
|
126
|
+
Injectable(),
|
|
127
|
+
__param(0, Inject(KernelConfigService)),
|
|
128
|
+
__param(1, Inject(KERNEL_LOGGER)),
|
|
129
|
+
__param(2, Inject(LockedIntervalScheduler)),
|
|
130
|
+
__param(3, Inject(ScheduledRuns)),
|
|
131
|
+
__param(4, Inject(RunWorker)),
|
|
132
|
+
__param(5, Inject(EvalWorker)),
|
|
133
|
+
__param(6, Inject(UsageReporter)),
|
|
134
|
+
__param(7, Inject(TitleQueue)),
|
|
135
|
+
__param(8, Inject(ChannelOutbound)),
|
|
136
|
+
__param(9, Inject(RunsProcessor)),
|
|
137
|
+
__param(10, Inject(SubagentRunsProcessor)),
|
|
138
|
+
__param(11, Inject(UsageReportProcessor)),
|
|
139
|
+
__param(12, Inject(TitleProcessor)),
|
|
140
|
+
__param(13, Inject(ChannelsProcessor)),
|
|
141
|
+
__param(14, Inject(EvalsProcessor)),
|
|
142
|
+
__param(15, Inject(MaintenanceProcessor))
|
|
143
|
+
], WorkerRole);
|
|
144
|
+
export { WorkerRole };
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { type DynamicModule } from "@nestjs/common";
|
|
2
|
+
import type { KernelConfig } from "../config/schema.js";
|
|
3
|
+
/**
|
|
4
|
+
* The worker role (nest kernel spec §2), imported by `KernelModule` only when `roles` includes
|
|
5
|
+
* `worker`: the cron scheduler and the `@LockedInterval` scheduler (`KernelScheduleModule`, the one
|
|
6
|
+
* place `ScheduleModule.forRoot` is imported), every fixed-period job (`@LockedCron` /
|
|
7
|
+
* `@LockedInterval`, each once per tick across replicas), every queue consumer (`@Processor`: runs,
|
|
8
|
+
* sub-agent runs, `usage.report`, titles, evals, maintenance, channel deliveries) and
|
|
9
|
+
* {@link WorkerRole}, which `KernelLifecycle` drives. A process without the worker role runs no cron
|
|
10
|
+
* and no BullMQ worker (the queues' producers exist on every role).
|
|
11
|
+
*/
|
|
12
|
+
export declare class WorkerModule {
|
|
13
|
+
static forRoot(config: KernelConfig): DynamicModule;
|
|
14
|
+
}
|
|
@@ -0,0 +1,90 @@
|
|
|
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 WorkerModule_1;
|
|
8
|
+
import { Module } from "@nestjs/common";
|
|
9
|
+
import { CatalogModule } from "../catalog/catalog.module.js";
|
|
10
|
+
import { CatalogJobs } from "../catalog/jobs.js";
|
|
11
|
+
import { ChannelsModule, ChannelWorkersModule } from "../channels/channels.module.js";
|
|
12
|
+
import { GatewayCheckJob } from "../channels/supervisor.js";
|
|
13
|
+
import { AttachmentsModule } from "../conversations/attachments.module.js";
|
|
14
|
+
import { AttachmentCleanupJob } from "../conversations/attachments.service.js";
|
|
15
|
+
import { TitlesModule } from "../conversations/titles.js";
|
|
16
|
+
import { EvalWorkersModule } from "../evals/evals.module.js";
|
|
17
|
+
import { ExtensionsModule } from "../extensions/extensions.module.js";
|
|
18
|
+
import { PluginsReconcileJob } from "../extensions/lifecycle.js";
|
|
19
|
+
import { KernelScheduleModule } from "../infra/schedule/schedule.module.js";
|
|
20
|
+
import { DirectoryScanJob } from "../orgs/directory-sync.js";
|
|
21
|
+
import { OffboardSweepJob } from "../orgs/offboarding.js";
|
|
22
|
+
import { OrgsModule } from "../orgs/orgs.module.js";
|
|
23
|
+
import { MaintenanceModule } from "../runtime/maintenance.js";
|
|
24
|
+
import { RuntimeWorkersModule } from "../runtime/run-processors.js";
|
|
25
|
+
import { RuntimeModule } from "../runtime/runtime.module.js";
|
|
26
|
+
import { UsageReportModule, UsageSweepJob } from "../runtime/usage-report.js";
|
|
27
|
+
import { WaitSweepJob } from "../runtime/waits.js";
|
|
28
|
+
import { SandboxSweepJobs } from "../sandbox/jobs.js";
|
|
29
|
+
import { SandboxModule } from "../sandbox/sandbox.module.js";
|
|
30
|
+
import { StoragePurgeJob } from "../storage/purge.js";
|
|
31
|
+
import { StorageModule } from "../storage/storage.module.js";
|
|
32
|
+
import { ToolJobs } from "../tools/jobs.js";
|
|
33
|
+
import { ToolsModule } from "../tools/tools.module.js";
|
|
34
|
+
import { WorkerRole } from "./worker-role.js";
|
|
35
|
+
/**
|
|
36
|
+
* The worker role (nest kernel spec §2), imported by `KernelModule` only when `roles` includes
|
|
37
|
+
* `worker`: the cron scheduler and the `@LockedInterval` scheduler (`KernelScheduleModule`, the one
|
|
38
|
+
* place `ScheduleModule.forRoot` is imported), every fixed-period job (`@LockedCron` /
|
|
39
|
+
* `@LockedInterval`, each once per tick across replicas), every queue consumer (`@Processor`: runs,
|
|
40
|
+
* sub-agent runs, `usage.report`, titles, evals, maintenance, channel deliveries) and
|
|
41
|
+
* {@link WorkerRole}, which `KernelLifecycle` drives. A process without the worker role runs no cron
|
|
42
|
+
* and no BullMQ worker (the queues' producers exist on every role).
|
|
43
|
+
*/
|
|
44
|
+
let WorkerModule = WorkerModule_1 = class WorkerModule {
|
|
45
|
+
static forRoot(config) {
|
|
46
|
+
return {
|
|
47
|
+
module: WorkerModule_1,
|
|
48
|
+
imports: [
|
|
49
|
+
KernelScheduleModule,
|
|
50
|
+
// the queue consumers (their worker options come from the startup config)
|
|
51
|
+
RuntimeWorkersModule.forRoot(config),
|
|
52
|
+
EvalWorkersModule.forRoot(config),
|
|
53
|
+
ChannelWorkersModule.forRoot(config),
|
|
54
|
+
MaintenanceModule,
|
|
55
|
+
// the domains the fixed-period jobs call
|
|
56
|
+
RuntimeModule,
|
|
57
|
+
UsageReportModule,
|
|
58
|
+
TitlesModule,
|
|
59
|
+
AttachmentsModule,
|
|
60
|
+
StorageModule,
|
|
61
|
+
SandboxModule,
|
|
62
|
+
ToolsModule,
|
|
63
|
+
CatalogModule,
|
|
64
|
+
OrgsModule,
|
|
65
|
+
ExtensionsModule,
|
|
66
|
+
ChannelsModule,
|
|
67
|
+
],
|
|
68
|
+
providers: [
|
|
69
|
+
WaitSweepJob,
|
|
70
|
+
UsageSweepJob,
|
|
71
|
+
AttachmentCleanupJob,
|
|
72
|
+
StoragePurgeJob,
|
|
73
|
+
SandboxSweepJobs,
|
|
74
|
+
ToolJobs,
|
|
75
|
+
CatalogJobs,
|
|
76
|
+
DirectoryScanJob,
|
|
77
|
+
OffboardSweepJob,
|
|
78
|
+
PluginsReconcileJob,
|
|
79
|
+
GatewayCheckJob,
|
|
80
|
+
WorkerRole,
|
|
81
|
+
],
|
|
82
|
+
exports: [WorkerRole],
|
|
83
|
+
};
|
|
84
|
+
}
|
|
85
|
+
};
|
|
86
|
+
WorkerModule = WorkerModule_1 = __decorate([
|
|
87
|
+
Module({})
|
|
88
|
+
// biome-ignore lint/complexity/noStaticOnlyClass: a Nest dynamic module
|
|
89
|
+
], WorkerModule);
|
|
90
|
+
export { WorkerModule };
|
package/dist/runtime/abort.js
CHANGED
|
@@ -1,3 +1,14 @@
|
|
|
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";
|
|
11
|
+
import { KERNEL_BUS, REDIS } from "../infra/tokens.js";
|
|
1
12
|
/** 中止广播的内核 bus 主题。 */
|
|
2
13
|
export const RUN_ABORT_TOPIC = "run.abort";
|
|
3
14
|
/** 中止标记的保留时长(秒)。 */
|
|
@@ -15,7 +26,7 @@ const parseStored = (stored) => {
|
|
|
15
26
|
* 跨副本中止(spec 4.3「中止信号经 Redis 广播」):`request` 先写标记键再广播;
|
|
16
27
|
* `watch` 先订阅、再检查一次标记键,订阅之前发出的中止也不会丢。
|
|
17
28
|
*/
|
|
18
|
-
|
|
29
|
+
let RunAbort = class RunAbort {
|
|
19
30
|
redis;
|
|
20
31
|
bus;
|
|
21
32
|
constructor(redis, bus) {
|
|
@@ -68,4 +79,10 @@ export class RunAbort {
|
|
|
68
79
|
}
|
|
69
80
|
return unsubscribe;
|
|
70
81
|
}
|
|
71
|
-
}
|
|
82
|
+
};
|
|
83
|
+
RunAbort = __decorate([
|
|
84
|
+
Injectable(),
|
|
85
|
+
__param(0, Inject(REDIS)),
|
|
86
|
+
__param(1, Inject(KERNEL_BUS))
|
|
87
|
+
], RunAbort);
|
|
88
|
+
export { RunAbort };
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import type { RunnableConfig } from "@langchain/core/runnables";
|
|
2
2
|
import { BaseCheckpointSaver, type ChannelVersions, type Checkpoint, type CheckpointListOptions, type CheckpointMetadata, type CheckpointTuple, type PendingWrite } from "@langchain/langgraph-checkpoint";
|
|
3
|
-
import
|
|
3
|
+
import { KernelDb } from "../infra/database/kernel-db.js";
|
|
4
|
+
import { TransactionHost } from "../infra/database/transaction-host.js";
|
|
4
5
|
/**
|
|
5
6
|
* LangGraph checkpoint saver,存在内核 schema 的 `lg_checkpoints` / `lg_checkpoint_writes` 里(0007_checkpoints.sql)。
|
|
6
7
|
*
|
|
@@ -10,12 +11,16 @@ import type { KernelDb } from "../db/kernel-schema.js";
|
|
|
10
11
|
* - 所有状态都在 PG 里,不持有进程内状态,任意副本都能续跑。
|
|
11
12
|
*/
|
|
12
13
|
export declare class KyselyCheckpointSaver extends BaseCheckpointSaver {
|
|
13
|
-
private readonly
|
|
14
|
-
|
|
14
|
+
private readonly kdb;
|
|
15
|
+
readonly txHost: TransactionHost;
|
|
16
|
+
constructor(kdb: KernelDb, txHost: TransactionHost);
|
|
17
|
+
/** The context's handle (the transaction of a `@Transactional` method, else the pool). */
|
|
18
|
+
private get db();
|
|
15
19
|
getTuple(config: RunnableConfig): Promise<CheckpointTuple | undefined>;
|
|
16
20
|
list(config: RunnableConfig, options?: CheckpointListOptions): AsyncGenerator<CheckpointTuple>;
|
|
17
21
|
put(config: RunnableConfig, checkpoint: Checkpoint, metadata: CheckpointMetadata, _newVersions: ChannelVersions): Promise<RunnableConfig>;
|
|
18
22
|
putWrites(config: RunnableConfig, writes: PendingWrite[], taskId: string, taskPath?: string): Promise<void>;
|
|
23
|
+
private insertWrites;
|
|
19
24
|
deleteThread(threadId: string): Promise<void>;
|
|
20
25
|
/**
|
|
21
26
|
* 一轮运行结束后调用:根命名空间(`checkpoint_ns = ''`)下只保留最新一个 checkpoint 及其 writes,
|
|
@@ -1,5 +1,18 @@
|
|
|
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 { BaseCheckpointSaver, compareWritesSortKeys, copyCheckpoint, getCheckpointId, maxChannelVersion, TASKS, WRITES_IDX_MAP, writesSortKey, } from "@langchain/langgraph-checkpoint";
|
|
11
|
+
import { Inject, Injectable } from "@nestjs/common";
|
|
2
12
|
import { sql } from "kysely";
|
|
13
|
+
import { KernelDb } from "../infra/database/kernel-db.js";
|
|
14
|
+
import { TransactionHost } from "../infra/database/transaction-host.js";
|
|
15
|
+
import { Transactional } from "../infra/database/transactional.decorator.js";
|
|
3
16
|
const CHECKPOINT_COLUMNS = [
|
|
4
17
|
"thread_id",
|
|
5
18
|
"checkpoint_ns",
|
|
@@ -20,11 +33,17 @@ const idC = sql `checkpoint_id collate "C"`;
|
|
|
20
33
|
* - thread_id 约定为 runId。
|
|
21
34
|
* - 所有状态都在 PG 里,不持有进程内状态,任意副本都能续跑。
|
|
22
35
|
*/
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
36
|
+
let KyselyCheckpointSaver = class KyselyCheckpointSaver extends BaseCheckpointSaver {
|
|
37
|
+
kdb;
|
|
38
|
+
txHost;
|
|
39
|
+
constructor(kdb, txHost) {
|
|
26
40
|
super();
|
|
27
|
-
this.
|
|
41
|
+
this.kdb = kdb;
|
|
42
|
+
this.txHost = txHost;
|
|
43
|
+
}
|
|
44
|
+
/** The context's handle (the transaction of a `@Transactional` method, else the pool). */
|
|
45
|
+
get db() {
|
|
46
|
+
return this.kdb.db;
|
|
28
47
|
}
|
|
29
48
|
async getTuple(config) {
|
|
30
49
|
const threadId = config.configurable?.thread_id;
|
|
@@ -130,34 +149,33 @@ export class KyselyCheckpointSaver extends BaseCheckpointSaver {
|
|
|
130
149
|
// 特殊 channel(错误、中断等,idx < 0)以最后一次为准;普通 write 已存在则保留先写入的。
|
|
131
150
|
const special = rows.filter((r) => r.idx < 0);
|
|
132
151
|
const regular = rows.filter((r) => r.idx >= 0);
|
|
152
|
+
await this.insertWrites(regular, special);
|
|
153
|
+
}
|
|
154
|
+
async insertWrites(regular, special) {
|
|
133
155
|
const key = ["thread_id", "checkpoint_ns", "checkpoint_id", "task_id", "idx"];
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
}
|
|
154
|
-
});
|
|
156
|
+
if (regular.length > 0) {
|
|
157
|
+
await this.db
|
|
158
|
+
.insertInto("lg_checkpoint_writes")
|
|
159
|
+
.values(regular)
|
|
160
|
+
.onConflict((oc) => oc.columns(key).doNothing())
|
|
161
|
+
.execute();
|
|
162
|
+
}
|
|
163
|
+
if (special.length > 0) {
|
|
164
|
+
await this.db
|
|
165
|
+
.insertInto("lg_checkpoint_writes")
|
|
166
|
+
.values(special)
|
|
167
|
+
.onConflict((oc) => oc.columns(key).doUpdateSet((eb) => ({
|
|
168
|
+
channel: eb.ref("excluded.channel"),
|
|
169
|
+
value_type: eb.ref("excluded.value_type"),
|
|
170
|
+
value: eb.ref("excluded.value"),
|
|
171
|
+
task_path: eb.ref("excluded.task_path"),
|
|
172
|
+
})))
|
|
173
|
+
.execute();
|
|
174
|
+
}
|
|
155
175
|
}
|
|
156
176
|
async deleteThread(threadId) {
|
|
157
|
-
await this.db.
|
|
158
|
-
|
|
159
|
-
await trx.deleteFrom("lg_checkpoints").where("thread_id", "=", threadId).execute();
|
|
160
|
-
});
|
|
177
|
+
await this.db.deleteFrom("lg_checkpoint_writes").where("thread_id", "=", threadId).execute();
|
|
178
|
+
await this.db.deleteFrom("lg_checkpoints").where("thread_id", "=", threadId).execute();
|
|
161
179
|
}
|
|
162
180
|
/**
|
|
163
181
|
* 一轮运行结束后调用:根命名空间(`checkpoint_ns = ''`)下只保留最新一个 checkpoint 及其 writes,
|
|
@@ -166,31 +184,30 @@ export class KyselyCheckpointSaver extends BaseCheckpointSaver {
|
|
|
166
184
|
* 保留下来的 checkpoint 的 parent_checkpoint_id 原样保留(父 checkpoint 已不存在)。
|
|
167
185
|
*/
|
|
168
186
|
async pruneToLatest(threadId) {
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
});
|
|
187
|
+
const db = this.db;
|
|
188
|
+
const latest = await db
|
|
189
|
+
.selectFrom("lg_checkpoints")
|
|
190
|
+
.select("checkpoint_id")
|
|
191
|
+
.where("thread_id", "=", threadId)
|
|
192
|
+
.where("checkpoint_ns", "=", "")
|
|
193
|
+
.orderBy(sql `${idC} desc`)
|
|
194
|
+
.limit(1)
|
|
195
|
+
.executeTakeFirst();
|
|
196
|
+
if (!latest)
|
|
197
|
+
return 0;
|
|
198
|
+
await db
|
|
199
|
+
.deleteFrom("lg_checkpoint_writes")
|
|
200
|
+
.where("thread_id", "=", threadId)
|
|
201
|
+
.where("checkpoint_ns", "=", "")
|
|
202
|
+
.where(idC, "<", latest.checkpoint_id)
|
|
203
|
+
.execute();
|
|
204
|
+
const res = await db
|
|
205
|
+
.deleteFrom("lg_checkpoints")
|
|
206
|
+
.where("thread_id", "=", threadId)
|
|
207
|
+
.where("checkpoint_ns", "=", "")
|
|
208
|
+
.where(idC, "<", latest.checkpoint_id)
|
|
209
|
+
.executeTakeFirst();
|
|
210
|
+
return Number(res.numDeletedRows);
|
|
194
211
|
}
|
|
195
212
|
async toTuple(row, metadata) {
|
|
196
213
|
const { thread_id, checkpoint_ns, checkpoint_id, parent_checkpoint_id } = row;
|
|
@@ -240,4 +257,19 @@ export class KyselyCheckpointSaver extends BaseCheckpointSaver {
|
|
|
240
257
|
checkpoint.channel_versions[TASKS] =
|
|
241
258
|
versions.length > 0 ? maxChannelVersion(...versions) : this.getNextVersion(undefined);
|
|
242
259
|
}
|
|
243
|
-
}
|
|
260
|
+
};
|
|
261
|
+
__decorate([
|
|
262
|
+
Transactional({ propagation: "requires_new" })
|
|
263
|
+
], KyselyCheckpointSaver.prototype, "insertWrites", null);
|
|
264
|
+
__decorate([
|
|
265
|
+
Transactional({ propagation: "requires_new" })
|
|
266
|
+
], KyselyCheckpointSaver.prototype, "deleteThread", null);
|
|
267
|
+
__decorate([
|
|
268
|
+
Transactional({ propagation: "requires_new" })
|
|
269
|
+
], KyselyCheckpointSaver.prototype, "pruneToLatest", null);
|
|
270
|
+
KyselyCheckpointSaver = __decorate([
|
|
271
|
+
Injectable(),
|
|
272
|
+
__param(0, Inject(KernelDb)),
|
|
273
|
+
__param(1, Inject(TransactionHost))
|
|
274
|
+
], KyselyCheckpointSaver);
|
|
275
|
+
export { KyselyCheckpointSaver };
|
|
@@ -1,12 +1,11 @@
|
|
|
1
|
-
import
|
|
2
|
-
import type { Redis } from "ioredis";
|
|
1
|
+
import { LockService } from "../infra/lock/lock.service.js";
|
|
3
2
|
/** 会话运行锁的默认 TTL(毫秒):持有方每 `ttlMs / 3` 续租一次。 */
|
|
4
3
|
export declare const CONVERSATION_LOCK_TTL_MS = 30000;
|
|
5
4
|
/** 本进程持有的会话运行锁。 */
|
|
6
5
|
export interface Lease {
|
|
7
6
|
readonly conversationId: string;
|
|
8
7
|
readonly runId: string;
|
|
9
|
-
/**
|
|
8
|
+
/** 续租时发现锁已不属于自己(过期后被他人取得,或续租一直失败到过期);此后不再续租。 */
|
|
10
9
|
readonly lost: boolean;
|
|
11
10
|
/** 立即续租一次;锁已不属于自己 → false(并标记 lost)。 */
|
|
12
11
|
renew(): Promise<boolean>;
|
|
@@ -18,16 +17,17 @@ export interface Lease {
|
|
|
18
17
|
onLost(cb: () => void): void;
|
|
19
18
|
}
|
|
20
19
|
/**
|
|
21
|
-
*
|
|
22
|
-
*
|
|
23
|
-
*
|
|
20
|
+
* A per-conversation lease on {@link LockService.hold}: key `<prefix><conversationId>`, value the
|
|
21
|
+
* holder's run id (other replicas read it with {@link holder}), renewed every TTL/3 by the lock
|
|
22
|
+
* service while held; a crashed holder's key expires within the TTL and another replica can take
|
|
23
|
+
* it. Built by {@link ConversationLock} (the run lock) and its {@link ConversationLock.scoped}
|
|
24
|
+
* views (the same lock for another purpose, e.g. the channel delivery `capk:channel-deliver:`).
|
|
25
|
+
* A loss is logged once, by the lock service (`lock lost`, with the key).
|
|
24
26
|
*/
|
|
25
|
-
export declare class
|
|
26
|
-
|
|
27
|
-
private readonly log?;
|
|
27
|
+
export declare class ConversationLeases {
|
|
28
|
+
protected readonly locks: LockService;
|
|
28
29
|
private readonly keyPrefix;
|
|
29
|
-
|
|
30
|
-
constructor(redis: Redis, log?: Pick<Logger, "warn"> | undefined, keyPrefix?: string);
|
|
30
|
+
constructor(locks: LockService, keyPrefix: string);
|
|
31
31
|
private lockKey;
|
|
32
32
|
acquire(conversationId: string, runId: string, ttlMs?: number): Promise<Lease | null>;
|
|
33
33
|
/**
|
|
@@ -38,3 +38,12 @@ export declare class ConversationLock {
|
|
|
38
38
|
/** 当前持有者的 runId;无人持有 → null。 */
|
|
39
39
|
holder(conversationId: string): Promise<string | null>;
|
|
40
40
|
}
|
|
41
|
+
/**
|
|
42
|
+
* 会话级运行锁(spec 4.3「同一会话同一时刻只跑一轮」):Redis 键 `capk:conv-run:<id>`,值为 runId,
|
|
43
|
+
* 带 TTL,由 {@link LockService} 每 TTL/3 续租。持有方崩溃时停止续租,锁在 TTL 后过期,其他副本可以取得。
|
|
44
|
+
*/
|
|
45
|
+
export declare class ConversationLock extends ConversationLeases {
|
|
46
|
+
constructor(locks: LockService);
|
|
47
|
+
/** The same per-conversation lease under another key prefix (another purpose). */
|
|
48
|
+
scoped(keyPrefix: string): ConversationLeases;
|
|
49
|
+
}
|