@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
|
@@ -1,97 +1,87 @@
|
|
|
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 { LockService } from "../infra/lock/lock.service.js";
|
|
1
12
|
/** 会话运行锁的默认 TTL(毫秒):持有方每 `ttlMs / 3` 续租一次。 */
|
|
2
13
|
export const CONVERSATION_LOCK_TTL_MS = 30_000;
|
|
3
14
|
/** 会话运行锁的键前缀。 */
|
|
4
15
|
const RUN_LOCK_PREFIX = "capk:conv-run:";
|
|
5
|
-
const RENEW = `
|
|
6
|
-
if redis.call('GET', KEYS[1]) == ARGV[1] then
|
|
7
|
-
return redis.call('PEXPIRE', KEYS[1], ARGV[2])
|
|
8
|
-
end
|
|
9
|
-
return 0
|
|
10
|
-
`;
|
|
11
|
-
const RELEASE = `
|
|
12
|
-
if redis.call('GET', KEYS[1]) == ARGV[1] then
|
|
13
|
-
return redis.call('DEL', KEYS[1])
|
|
14
|
-
end
|
|
15
|
-
return 0
|
|
16
|
-
`;
|
|
17
16
|
/**
|
|
18
|
-
*
|
|
19
|
-
*
|
|
20
|
-
*
|
|
17
|
+
* A per-conversation lease on {@link LockService.hold}: key `<prefix><conversationId>`, value the
|
|
18
|
+
* holder's run id (other replicas read it with {@link holder}), renewed every TTL/3 by the lock
|
|
19
|
+
* service while held; a crashed holder's key expires within the TTL and another replica can take
|
|
20
|
+
* it. Built by {@link ConversationLock} (the run lock) and its {@link ConversationLock.scoped}
|
|
21
|
+
* views (the same lock for another purpose, e.g. the channel delivery `capk:channel-deliver:`).
|
|
22
|
+
* A loss is logged once, by the lock service (`lock lost`, with the key).
|
|
21
23
|
*/
|
|
22
|
-
export class
|
|
23
|
-
|
|
24
|
-
log;
|
|
24
|
+
export class ConversationLeases {
|
|
25
|
+
locks;
|
|
25
26
|
keyPrefix;
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
this.redis = redis;
|
|
29
|
-
this.log = log;
|
|
27
|
+
constructor(locks, keyPrefix) {
|
|
28
|
+
this.locks = locks;
|
|
30
29
|
this.keyPrefix = keyPrefix;
|
|
31
30
|
}
|
|
32
31
|
lockKey(conversationId) {
|
|
33
32
|
return `${this.keyPrefix}${conversationId}`;
|
|
34
33
|
}
|
|
35
34
|
async acquire(conversationId, runId, ttlMs = CONVERSATION_LOCK_TTL_MS) {
|
|
36
|
-
const
|
|
37
|
-
|
|
38
|
-
if (ok !== "OK")
|
|
35
|
+
const held = await this.locks.hold(this.lockKey(conversationId), runId, ttlMs);
|
|
36
|
+
if (!held)
|
|
39
37
|
return null;
|
|
40
|
-
|
|
41
|
-
const log = this.log;
|
|
42
|
-
let lost = false;
|
|
43
|
-
let timer;
|
|
44
|
-
const lostCallbacks = [];
|
|
45
|
-
const stop = () => {
|
|
46
|
-
clearInterval(timer);
|
|
47
|
-
timer = undefined;
|
|
48
|
-
};
|
|
49
|
-
const lease = {
|
|
50
|
-
conversationId,
|
|
51
|
-
runId,
|
|
52
|
-
get lost() {
|
|
53
|
-
return lost;
|
|
54
|
-
},
|
|
55
|
-
async renew() {
|
|
56
|
-
if (lost)
|
|
57
|
-
return false;
|
|
58
|
-
const r = Number(await redis.eval(RENEW, 1, key, runId, ttlMs));
|
|
59
|
-
if (r !== 1) {
|
|
60
|
-
lost = true;
|
|
61
|
-
stop();
|
|
62
|
-
log?.warn("conversation run lock lost", { conversationId, runId });
|
|
63
|
-
for (const cb of lostCallbacks.splice(0))
|
|
64
|
-
cb();
|
|
65
|
-
}
|
|
66
|
-
return r === 1;
|
|
67
|
-
},
|
|
68
|
-
async release() {
|
|
69
|
-
stop();
|
|
70
|
-
await redis.eval(RELEASE, 1, key, runId);
|
|
71
|
-
},
|
|
72
|
-
abandon: stop,
|
|
73
|
-
onLost(cb) {
|
|
74
|
-
if (lost)
|
|
75
|
-
cb();
|
|
76
|
-
else
|
|
77
|
-
lostCallbacks.push(cb);
|
|
78
|
-
},
|
|
79
|
-
};
|
|
80
|
-
timer = setInterval(() => {
|
|
81
|
-
lease.renew().catch((err) => log?.warn("conversation run lock renew failed", { err }));
|
|
82
|
-
}, Math.max(1, Math.floor(ttlMs / 3)));
|
|
83
|
-
timer.unref();
|
|
84
|
-
return lease;
|
|
38
|
+
return toLease(held, conversationId, runId);
|
|
85
39
|
}
|
|
86
40
|
/**
|
|
87
41
|
* 释放某个运行持有的锁(只在仍由该 runId 持有时删除),不需要 Lease:用于 BullMQ 已判定任务失败
|
|
88
42
|
* (例如持有者崩溃、stalled 次数超限)后清理死去持有者留下的锁,不必等 TTL 过期。
|
|
89
43
|
*/
|
|
90
44
|
async releaseFor(conversationId, runId) {
|
|
91
|
-
await this.
|
|
45
|
+
await this.locks.releaseIf(this.lockKey(conversationId), runId);
|
|
92
46
|
}
|
|
93
47
|
/** 当前持有者的 runId;无人持有 → null。 */
|
|
94
48
|
holder(conversationId) {
|
|
95
|
-
return this.
|
|
49
|
+
return this.locks.holderOf(this.lockKey(conversationId));
|
|
96
50
|
}
|
|
97
51
|
}
|
|
52
|
+
function toLease(held, conversationId, runId) {
|
|
53
|
+
return {
|
|
54
|
+
conversationId,
|
|
55
|
+
runId,
|
|
56
|
+
get lost() {
|
|
57
|
+
return held.lost.aborted;
|
|
58
|
+
},
|
|
59
|
+
renew: () => held.renew(),
|
|
60
|
+
release: () => held.release(),
|
|
61
|
+
abandon: () => held.abandon(),
|
|
62
|
+
onLost(cb) {
|
|
63
|
+
if (held.lost.aborted)
|
|
64
|
+
cb();
|
|
65
|
+
else
|
|
66
|
+
held.lost.addEventListener("abort", () => cb(), { once: true });
|
|
67
|
+
},
|
|
68
|
+
};
|
|
69
|
+
}
|
|
70
|
+
/**
|
|
71
|
+
* 会话级运行锁(spec 4.3「同一会话同一时刻只跑一轮」):Redis 键 `capk:conv-run:<id>`,值为 runId,
|
|
72
|
+
* 带 TTL,由 {@link LockService} 每 TTL/3 续租。持有方崩溃时停止续租,锁在 TTL 后过期,其他副本可以取得。
|
|
73
|
+
*/
|
|
74
|
+
let ConversationLock = class ConversationLock extends ConversationLeases {
|
|
75
|
+
constructor(locks) {
|
|
76
|
+
super(locks, RUN_LOCK_PREFIX);
|
|
77
|
+
}
|
|
78
|
+
/** The same per-conversation lease under another key prefix (another purpose). */
|
|
79
|
+
scoped(keyPrefix) {
|
|
80
|
+
return new ConversationLeases(this.locks, keyPrefix);
|
|
81
|
+
}
|
|
82
|
+
};
|
|
83
|
+
ConversationLock = __decorate([
|
|
84
|
+
Injectable(),
|
|
85
|
+
__param(0, Inject(LockService))
|
|
86
|
+
], ConversationLock);
|
|
87
|
+
export { ConversationLock };
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
import type { AvailableHook, HookModelRequest, HookParentScope, HookPayloads, HookScope, Logger, ModelRequest } from "@capybara-hq/plugin-sdk";
|
|
2
2
|
import type { AppendEvent, EventLog } from "../conversations/event-log.js";
|
|
3
3
|
import type { EventPayload } from "../conversations/events.js";
|
|
4
|
-
import type { KernelDb } from "../db/kernel-schema.js";
|
|
5
4
|
import type { HookOutcome, HookRegistry } from "../extensions/hooks.js";
|
|
6
|
-
import { audit } from "../identity/audit.js";
|
|
5
|
+
import type { audit } from "../identity/audit.js";
|
|
6
|
+
import type { StepLog } from "./step-log.js";
|
|
7
7
|
/** What the runtime needs from the host's hook registry (absent in eval replays). */
|
|
8
8
|
export type HookRunner = Pick<HookRegistry, "run" | "has">;
|
|
9
9
|
/**
|
|
@@ -75,8 +75,8 @@ export type AuditEntry = Parameters<typeof audit>[1];
|
|
|
75
75
|
* denial rethrows it before running the hooks again, so no second audit entry is written.
|
|
76
76
|
*/
|
|
77
77
|
export declare function recordHookDenial(d: {
|
|
78
|
-
db: KernelDb;
|
|
79
78
|
eventLog: EventLog;
|
|
79
|
+
stepLog: Pick<StepLog, "appendAudited">;
|
|
80
80
|
}, at: DenialSite, mount: Extract<AvailableHook, "model.request" | "tool.preExecute">, denial: HookDenial, where: {
|
|
81
81
|
step: number;
|
|
82
82
|
attempt?: number;
|
|
@@ -1,4 +1,3 @@
|
|
|
1
|
-
import { audit } from "../identity/audit.js";
|
|
2
1
|
/**
|
|
3
2
|
* The scope for hook payloads, or null when hooks must not fire: no registry (eval replays omit it),
|
|
4
3
|
* a conversation that is neither `chat` nor `subagent`, or missing identity fields. A sub-agent's
|
|
@@ -125,11 +124,7 @@ export async function recordHookDenial(d, at, mount, denial, where) {
|
|
|
125
124
|
if (await d.eventLog.findByIdem(at.conversationId, at.idemKey))
|
|
126
125
|
return;
|
|
127
126
|
const event = hookDeniedEvent(at, mount, denial, where);
|
|
128
|
-
const written = await d.
|
|
129
|
-
const out = await d.eventLog.append(at.conversationId, [event], t);
|
|
130
|
-
await audit(t, hookDeniedAudit(at, event.payload, denial));
|
|
131
|
-
return out;
|
|
132
|
-
});
|
|
127
|
+
const written = await d.stepLog.appendAudited(at.conversationId, [event], hookDeniedAudit(at, event.payload, denial));
|
|
133
128
|
if (written.length > 0) {
|
|
134
129
|
await d.eventLog.notify(at.conversationId, Math.max(...written.map((e) => e.seq)));
|
|
135
130
|
}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The maintenance job scheduler ids the runtime's fixed-period jobs had before they became
|
|
3
|
+
* `@LockedCron` jobs: an upgraded deployment still has them in Redis, so the
|
|
4
|
+
* worker removes them at start (`RETIRED_SCHEDULER_IDS`). A leaf module: the maintenance worker
|
|
5
|
+
* imports it without the runtime's providers.
|
|
6
|
+
*/
|
|
7
|
+
/** The wait sweep's old scheduler (every 10 minutes). */
|
|
8
|
+
export declare const WAIT_SWEEP_SCHEDULER_ID = "wait-sweep-every-10m";
|
|
9
|
+
/** The usage sweeper's old scheduler (every minute). */
|
|
10
|
+
export declare const USAGE_SWEEP_SCHEDULER_ID = "usage-report-sweep-every";
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The maintenance job scheduler ids the runtime's fixed-period jobs had before they became
|
|
3
|
+
* `@LockedCron` jobs: an upgraded deployment still has them in Redis, so the
|
|
4
|
+
* worker removes them at start (`RETIRED_SCHEDULER_IDS`). A leaf module: the maintenance worker
|
|
5
|
+
* imports it without the runtime's providers.
|
|
6
|
+
*/
|
|
7
|
+
/** The wait sweep's old scheduler (every 10 minutes). */
|
|
8
|
+
export const WAIT_SWEEP_SCHEDULER_ID = "wait-sweep-every-10m";
|
|
9
|
+
/** The usage sweeper's old scheduler (every minute). */
|
|
10
|
+
export const USAGE_SWEEP_SCHEDULER_ID = "usage-report-sweep-every";
|
|
@@ -112,7 +112,7 @@ export class LangGraphLoop {
|
|
|
112
112
|
build(ctx) {
|
|
113
113
|
const timedOut = () => Date.now() >= ctx.limits.deadline;
|
|
114
114
|
// 本次运行的附件字节缓存:各步共用,运行结束即丢弃(只是优化,见 MediaCache)
|
|
115
|
-
const mediaCache = new MediaCache(this.stepDeps.config().attachments.requestMediaBytes);
|
|
115
|
+
const mediaCache = new MediaCache(this.stepDeps.config.get().attachments.requestMediaBytes);
|
|
116
116
|
const input = (step, absorbedUpToSeq) => ({
|
|
117
117
|
orgId: ctx.orgId,
|
|
118
118
|
conversationId: ctx.conversationId,
|
package/dist/runtime/loop.d.ts
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import type { AgentDefinition } from "../agents/definition.js";
|
|
2
|
+
import type { KernelConfig } from "../config/schema.js";
|
|
2
3
|
import type { ConversationEvent } from "../conversations/events.js";
|
|
3
4
|
import type { StreamSink } from "./model-call.js";
|
|
4
5
|
/** 一次运行交给 loop 的上下文(spec 4.4)。 */
|
|
@@ -91,3 +92,9 @@ export type LoopOutcome =
|
|
|
91
92
|
export interface AgentLoop {
|
|
92
93
|
run(ctx: LoopContext): Promise<LoopOutcome>;
|
|
93
94
|
}
|
|
95
|
+
/**
|
|
96
|
+
* The wait of a step whose sub-agents still run (spec §7.2): id `sa-<runId>-<step>`, expiring after
|
|
97
|
+
* the approval timeout plus one run's duration plus 10 minutes (a child may itself wait for an
|
|
98
|
+
* approval); the timeout is a safety net.
|
|
99
|
+
*/
|
|
100
|
+
export declare function subagentsWait(runId: string, step: number, config: Pick<KernelConfig, "tools" | "runtime">, now?: number): WaitingFor;
|
package/dist/runtime/loop.js
CHANGED
|
@@ -5,3 +5,17 @@
|
|
|
5
5
|
export const subagentWaitingIdemKey = (childRunId, waitId) => `subagent_waiting:${childRunId}:${waitId}`;
|
|
6
6
|
/** The id of a run's `subagents` wait in `step` (part of BullMQ job ids, so no `:`). */
|
|
7
7
|
export const subagentsWaitId = (runId, step) => `sa-${runId}-${step}`;
|
|
8
|
+
/**
|
|
9
|
+
* The wait of a step whose sub-agents still run (spec §7.2): id `sa-<runId>-<step>`, expiring after
|
|
10
|
+
* the approval timeout plus one run's duration plus 10 minutes (a child may itself wait for an
|
|
11
|
+
* approval); the timeout is a safety net.
|
|
12
|
+
*/
|
|
13
|
+
export function subagentsWait(runId, step, config, now = Date.now()) {
|
|
14
|
+
const ms = config.tools.approvalTimeoutHours * 3_600_000 + config.runtime.maxRunSeconds * 1000 + 600_000;
|
|
15
|
+
return {
|
|
16
|
+
kind: "subagents",
|
|
17
|
+
id: subagentsWaitId(runId, step),
|
|
18
|
+
expiresAt: new Date(now + ms).toISOString(),
|
|
19
|
+
step,
|
|
20
|
+
};
|
|
21
|
+
}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The kernel maintenance queue (no `:`): wait timeouts (`wait-timeout`, see waits.ts), one-off
|
|
3
|
+
* maintenance (sandbox destruction, connector drift, directory sync); no periodic jobs any more
|
|
4
|
+
* (they are `@LockedCron` / `@LockedInterval` jobs). The queue has one Worker (started on the `worker` role only) that
|
|
5
|
+
* dispatches by job name to the registered handlers. Separate from the run queues: their handler,
|
|
6
|
+
* stalled and failure handling assume "one job = one run"; maintenance jobs are short, with no
|
|
7
|
+
* conversation lock or quota. A leaf module, so providers that add jobs (orgs/directory-sync.ts)
|
|
8
|
+
* import the name without importing the worker (which imports their scheduler ids back).
|
|
9
|
+
*/
|
|
10
|
+
export declare const MAINTENANCE_QUEUE_NAME = "cap-kernel-maintenance";
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The kernel maintenance queue (no `:`): wait timeouts (`wait-timeout`, see waits.ts), one-off
|
|
3
|
+
* maintenance (sandbox destruction, connector drift, directory sync); no periodic jobs any more
|
|
4
|
+
* (they are `@LockedCron` / `@LockedInterval` jobs). The queue has one Worker (started on the `worker` role only) that
|
|
5
|
+
* dispatches by job name to the registered handlers. Separate from the run queues: their handler,
|
|
6
|
+
* stalled and failure handling assume "one job = one run"; maintenance jobs are short, with no
|
|
7
|
+
* conversation lock or quota. A leaf module, so providers that add jobs (orgs/directory-sync.ts)
|
|
8
|
+
* import the name without importing the worker (which imports their scheduler ids back).
|
|
9
|
+
*/
|
|
10
|
+
export const MAINTENANCE_QUEUE_NAME = "cap-kernel-maintenance";
|
|
@@ -1,80 +1,51 @@
|
|
|
1
|
-
import
|
|
2
|
-
import {
|
|
3
|
-
import
|
|
1
|
+
import { WorkerHost } from "@nestjs/bullmq";
|
|
2
|
+
import type { Job, Queue, Worker } from "bullmq";
|
|
3
|
+
import { ScheduledRuns } from "../infra/schedule/scheduled-runs.js";
|
|
4
|
+
import type { KernelLogger } from "../log.js";
|
|
5
|
+
import { DirectorySync } from "../orgs/directory-sync.js";
|
|
6
|
+
import { SandboxService } from "../sandbox/sandbox.service.js";
|
|
7
|
+
import { ToolDrift } from "../tools/drift.js";
|
|
8
|
+
import { Waits } from "./waits.js";
|
|
9
|
+
export { MAINTENANCE_QUEUE_NAME } from "./maintenance-queue.js";
|
|
10
|
+
/** The maintenance worker's concurrency (as the hand-made worker had). */
|
|
11
|
+
export declare const MAINTENANCE_CONCURRENCY = 5;
|
|
4
12
|
/**
|
|
5
|
-
*
|
|
6
|
-
*
|
|
7
|
-
*
|
|
8
|
-
*
|
|
9
|
-
*
|
|
10
|
-
*
|
|
13
|
+
* The one consumer of `cap-kernel-maintenance` (decision R11 of the Nest kernel spec): dispatches
|
|
14
|
+
* each one-off job by name to its domain (`wait-timeout` → {@link Waits}, `sandbox-destroy-for` →
|
|
15
|
+
* {@link SandboxService}, `drift-connector` → {@link ToolDrift}, `directory-sync` →
|
|
16
|
+
* {@link DirectorySync}). The name of a periodic job (a `@LockedCron` / `@LockedInterval` job,
|
|
17
|
+
* such as `sandbox-suspend-idle`) runs that job's body once ({@link ScheduledRuns.runNow}), as the
|
|
18
|
+
* maintenance handlers did when those jobs were schedulers on this queue: an operator's or a
|
|
19
|
+
* test's one-off run, not a second schedule (decision R23 of the Nest kernel spec). Any other
|
|
20
|
+
* name is warned and completes. The producers are the domains' own (same names, ids and options).
|
|
11
21
|
*/
|
|
12
|
-
export declare
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
export declare const PLUGIN_STAGING_CLEANUP_SCHEDULER_ID = "app-staging-cleanup-hourly";
|
|
34
|
-
export declare const PLUGIN_STAGING_CLEANUP_EVERY_MS = 3600000;
|
|
35
|
-
/** 维护任务的处理函数(`token` 供 `moveToDelayed` 等使用)。 */
|
|
36
|
-
export type MaintenanceHandler = (job: Job, token: string | undefined) => Promise<void>;
|
|
37
|
-
/** 由其他模块登记的周期任务(如漂移检测):scheduler id 与任务名不含 `:`,周期在登记时读取。 */
|
|
38
|
-
export interface MaintenanceSchedule {
|
|
39
|
-
id: string;
|
|
40
|
-
name: string;
|
|
41
|
-
everyMs: () => number;
|
|
42
|
-
}
|
|
43
|
-
/**
|
|
44
|
-
* 删除已过期(`expires_at < now()`)的输出存档,每批 `batch` 行,直到删完;返回删除的总行数。
|
|
45
|
-
* 每批一条独立语句(不开长事务);多个 worker 同时清理时 `SKIP LOCKED` 互不等待。
|
|
46
|
-
*/
|
|
47
|
-
export declare function deleteExpiredOutputs(db: KernelDb, batch?: number): Promise<number>;
|
|
48
|
-
export interface MaintenanceDeps {
|
|
49
|
-
db: KernelDb;
|
|
50
|
-
redisUrl: string;
|
|
51
|
-
log: Pick<Logger, "error" | "warn" | "info">;
|
|
22
|
+
export declare class MaintenanceProcessor extends WorkerHost<Worker> {
|
|
23
|
+
private readonly waits;
|
|
24
|
+
private readonly sandbox;
|
|
25
|
+
private readonly drift;
|
|
26
|
+
private readonly directory;
|
|
27
|
+
private readonly scheduled;
|
|
28
|
+
private readonly log;
|
|
29
|
+
private readonly queue;
|
|
30
|
+
constructor(waits: Pick<Waits, "processTimeout">, sandbox: Pick<SandboxService, "destroyFor">, drift: Pick<ToolDrift, "check">, directory: Pick<DirectorySync, "runSyncJob">, scheduled: Pick<ScheduledRuns, "runNow">, log: Pick<KernelLogger, "error" | "warn">, queue: Pick<Queue, "removeJobScheduler">);
|
|
31
|
+
/**
|
|
32
|
+
* Removes the retired job schedulers (`RETIRED_SCHEDULER_IDS`, runtime/retired-schedulers.ts): every fixed-period
|
|
33
|
+
* maintenance job is a `@LockedCron` / `@LockedInterval` now. Idempotent; called once when a
|
|
34
|
+
* worker role starts.
|
|
35
|
+
*/
|
|
36
|
+
removeRetiredSchedulers(): Promise<void>;
|
|
37
|
+
process(job: Job, token?: string): Promise<void>;
|
|
38
|
+
/** Starts consuming (worker role, after the extensions loaded; built with `autorun: false`). */
|
|
39
|
+
start(): void;
|
|
40
|
+
private dispatch;
|
|
41
|
+
failed(job: Job | undefined, err: Error): void;
|
|
42
|
+
error(err: Error): void;
|
|
52
43
|
}
|
|
53
44
|
/**
|
|
54
|
-
*
|
|
55
|
-
*
|
|
45
|
+
* The maintenance queue's consumer: {@link MaintenanceProcessor}. Imported only by the worker role
|
|
46
|
+
* (`WorkerModule`), so other roles get no processor and no BullMQ worker. It never starts by
|
|
47
|
+
* itself: the worker role (`WorkerRole`) removes the retired job schedulers and starts it after the
|
|
48
|
+
* extensions loaded.
|
|
56
49
|
*/
|
|
57
|
-
export declare class
|
|
58
|
-
private readonly d;
|
|
59
|
-
private queue;
|
|
60
|
-
private queueConn;
|
|
61
|
-
private worker;
|
|
62
|
-
private workerConn;
|
|
63
|
-
private closed;
|
|
64
|
-
private readonly handlers;
|
|
65
|
-
private readonly schedules;
|
|
66
|
-
constructor(d: MaintenanceDeps);
|
|
67
|
-
/** 登记某个任务名的处理函数(构造期调用;Worker 启动前后都可)。 */
|
|
68
|
-
handle(name: string, fn: MaintenanceHandler): void;
|
|
69
|
-
/** 登记一个周期任务(构造期调用;`ensureSchedules` 时一并 upsert)。 */
|
|
70
|
-
schedule(s: MaintenanceSchedule): void;
|
|
71
|
-
/** 投递一个维护任务。 */
|
|
72
|
-
add(name: string, data: unknown, opts: JobsOptions): Promise<void>;
|
|
73
|
-
/** 登记周期任务的 job scheduler(幂等;worker 角色启动时调用)。 */
|
|
74
|
-
ensureSchedules(): Promise<void>;
|
|
75
|
-
/** 启动维护队列的 Worker(只在含 `worker` 角色的进程)。 */
|
|
76
|
-
startWorker(): void;
|
|
77
|
-
close(): Promise<void>;
|
|
78
|
-
private getQueue;
|
|
79
|
-
private process;
|
|
50
|
+
export declare class MaintenanceModule {
|
|
80
51
|
}
|