@capybara-hq/kernel 0.1.0-rc.1 → 0.1.0-rc.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/admin/admin.controller.d.ts +17 -17
- package/dist/admin/admin.controller.js +43 -26
- package/dist/admin/admin.module.d.ts +3 -0
- package/dist/admin/admin.module.js +22 -0
- package/dist/admin/extensions.controller.d.ts +14 -14
- package/dist/admin/extensions.controller.js +30 -17
- package/dist/admin/setup-lock.d.ts +16 -0
- package/dist/admin/setup-lock.js +47 -0
- package/dist/admin/setup.controller.d.ts +8 -8
- package/dist/admin/setup.controller.js +27 -25
- package/dist/admin/setup.service.d.ts +19 -27
- package/dist/admin/setup.service.js +61 -61
- package/dist/agents/agent-lookup.d.ts +53 -0
- package/dist/agents/agent-lookup.js +187 -0
- package/dist/agents/agents.controller.d.ts +1 -1
- package/dist/agents/agents.controller.js +14 -8
- package/dist/agents/agents.module.d.ts +7 -0
- package/dist/agents/agents.module.js +41 -0
- package/dist/agents/agents.service.d.ts +39 -58
- package/dist/agents/agents.service.js +280 -335
- package/dist/agents/definition.d.ts +39 -8
- package/dist/agents/definition.js +201 -17
- package/dist/agents/models.controller.d.ts +1 -1
- package/dist/agents/models.controller.js +2 -2
- package/dist/agents/templates.controller.d.ts +1 -1
- package/dist/agents/templates.controller.js +2 -2
- package/dist/agents/templates.d.ts +6 -8
- package/dist/agents/templates.js +39 -8
- package/dist/app.d.ts +93 -0
- package/dist/app.js +150 -0
- package/dist/catalog/admin-catalog.controller.d.ts +3 -3
- package/dist/catalog/admin-catalog.controller.js +27 -13
- package/dist/catalog/catalog-content.d.ts +185 -0
- package/dist/catalog/catalog-content.js +326 -0
- package/dist/catalog/catalog-items.d.ts +186 -0
- package/dist/catalog/catalog-items.js +410 -0
- package/dist/catalog/catalog.module.d.ts +14 -0
- package/dist/catalog/catalog.module.js +71 -0
- package/dist/catalog/catalog.service.d.ts +34 -188
- package/dist/catalog/catalog.service.js +155 -489
- package/dist/catalog/claude/agents.js +13 -10
- package/dist/catalog/cli.d.ts +3 -2
- package/dist/catalog/cli.js +13 -31
- package/dist/catalog/job-ids.d.ts +15 -0
- package/dist/catalog/job-ids.js +15 -0
- package/dist/catalog/jobs.d.ts +27 -0
- package/dist/catalog/jobs.js +70 -0
- package/dist/catalog/locks.d.ts +24 -0
- package/dist/catalog/locks.js +63 -0
- package/dist/catalog/marketplaces.controller.d.ts +4 -4
- package/dist/catalog/marketplaces.controller.js +22 -11
- package/dist/catalog/marketplaces.service.d.ts +31 -14
- package/dist/catalog/marketplaces.service.js +330 -256
- package/dist/catalog/org-catalog.controller.d.ts +4 -3
- package/dist/catalog/org-catalog.controller.js +29 -14
- package/dist/catalog/org-catalog.service.d.ts +32 -198
- package/dist/catalog/org-catalog.service.js +159 -400
- package/dist/catalog/plugin-import.d.ts +73 -34
- package/dist/catalog/plugin-import.js +356 -217
- package/dist/catalog/plugin-install.d.ts +83 -41
- package/dist/catalog/plugin-install.js +421 -269
- package/dist/catalog/plugin-upgrade.d.ts +59 -4
- package/dist/catalog/plugin-upgrade.js +407 -282
- package/dist/catalog/requests.service.d.ts +27 -15
- package/dist/catalog/requests.service.js +201 -145
- package/dist/catalog/upgrade-targets.d.ts +4 -7
- package/dist/channels/actions.d.ts +6 -4
- package/dist/channels/actions.js +1 -1
- package/dist/channels/cards.d.ts +10 -4
- package/dist/channels/cards.js +16 -8
- package/dist/channels/channels.module.d.ts +40 -0
- package/dist/channels/channels.module.js +128 -0
- package/dist/channels/connections.controller.d.ts +1 -1
- package/dist/channels/connections.controller.js +11 -6
- package/dist/channels/connections.service.d.ts +43 -21
- package/dist/channels/connections.service.js +236 -131
- package/dist/channels/inbound.d.ts +34 -38
- package/dist/channels/inbound.js +107 -41
- package/dist/channels/job-ids.d.ts +10 -0
- package/dist/channels/job-ids.js +10 -0
- package/dist/channels/jobs.d.ts +85 -0
- package/dist/channels/jobs.js +157 -0
- package/dist/channels/outbound.d.ts +60 -82
- package/dist/channels/outbound.js +165 -194
- package/dist/channels/supervisor.d.ts +88 -46
- package/dist/channels/supervisor.js +230 -132
- package/dist/channels/threads.d.ts +29 -8
- package/dist/channels/threads.js +71 -13
- package/dist/channels/webhook.d.ts +20 -14
- package/dist/channels/webhook.js +51 -20
- package/dist/config/load.d.ts +3 -2
- package/dist/config/load.js +3 -2
- package/dist/config/nacos-source.js +11 -2
- package/dist/config/schema.d.ts +1 -0
- package/dist/config/schema.js +12 -6
- package/dist/conversations/access.d.ts +29 -0
- package/dist/conversations/access.js +86 -0
- package/dist/conversations/artifacts.d.ts +11 -11
- package/dist/conversations/artifacts.js +36 -10
- package/dist/conversations/attachments.controller.d.ts +1 -1
- package/dist/conversations/attachments.controller.js +8 -6
- package/dist/conversations/attachments.module.d.ts +7 -0
- package/dist/conversations/attachments.module.js +25 -0
- package/dist/conversations/attachments.service.d.ts +30 -22
- package/dist/conversations/attachments.service.js +119 -46
- package/dist/conversations/conversations.controller.d.ts +8 -7
- package/dist/conversations/conversations.controller.js +59 -29
- package/dist/conversations/conversations.module.d.ts +8 -0
- package/dist/conversations/conversations.module.js +69 -0
- package/dist/conversations/conversations.service.d.ts +40 -38
- package/dist/conversations/conversations.service.js +130 -140
- package/dist/conversations/event-log.d.ts +39 -18
- package/dist/conversations/event-log.js +93 -27
- package/dist/conversations/events.d.ts +23 -3
- package/dist/conversations/events.js +26 -14
- package/dist/conversations/files.d.ts +10 -10
- package/dist/conversations/files.js +37 -11
- package/dist/conversations/idem-keys.d.ts +5 -0
- package/dist/conversations/idem-keys.js +5 -0
- package/dist/conversations/job-ids.d.ts +6 -0
- package/dist/conversations/job-ids.js +6 -0
- package/dist/conversations/outputs-read.d.ts +11 -11
- package/dist/conversations/outputs-read.js +31 -7
- package/dist/conversations/queue.d.ts +48 -56
- package/dist/conversations/queue.js +13 -289
- package/dist/conversations/queue.service.d.ts +60 -0
- package/dist/conversations/queue.service.js +343 -0
- package/dist/conversations/sandbox-status.d.ts +13 -10
- package/dist/conversations/sandbox-status.js +36 -8
- package/dist/conversations/titles.d.ts +71 -24
- package/dist/conversations/titles.js +159 -63
- package/dist/ctx/bus.js +9 -3
- package/dist/ctx/create-ctx.d.ts +6 -0
- package/dist/ctx/create-ctx.js +7 -9
- package/dist/ctx/lock.d.ts +7 -3
- package/dist/ctx/lock.js +9 -20
- package/dist/ctx/secrets.d.ts +10 -2
- package/dist/ctx/secrets.js +7 -3
- package/dist/db/kernel-schema.d.ts +4 -4
- package/dist/db/pool.d.ts +5 -0
- package/dist/db/pool.js +1 -0
- package/dist/errors.d.ts +1 -0
- package/dist/errors.js +1 -0
- package/dist/evals/budget.d.ts +42 -21
- package/dist/evals/budget.js +114 -62
- package/dist/evals/evals.module.d.ts +31 -0
- package/dist/evals/evals.module.js +114 -0
- package/dist/evals/jobs.d.ts +20 -0
- package/dist/evals/jobs.js +45 -0
- package/dist/evals/recorded-tools.d.ts +27 -1
- package/dist/evals/recorded-tools.js +85 -10
- package/dist/evals/run-replay.d.ts +61 -8
- package/dist/evals/run-replay.js +159 -85
- package/dist/evals/runs.controller.d.ts +1 -1
- package/dist/evals/runs.controller.js +17 -8
- package/dist/evals/runs.service.d.ts +23 -45
- package/dist/evals/runs.service.js +245 -234
- package/dist/evals/sets.controller.d.ts +1 -1
- package/dist/evals/sets.controller.js +17 -8
- package/dist/evals/sets.service.d.ts +22 -6
- package/dist/evals/sets.service.js +248 -194
- package/dist/evals/snapshot.d.ts +2 -2
- package/dist/evals/step-replay.d.ts +2 -2
- package/dist/evals/step-replay.js +1 -1
- package/dist/evals/trajectory.controller.d.ts +1 -1
- package/dist/evals/trajectory.controller.js +11 -7
- package/dist/evals/trajectory.d.ts +2 -2
- package/dist/evals/trajectory.service.d.ts +5 -4
- package/dist/evals/trajectory.service.js +30 -7
- package/dist/evals/worker.d.ts +44 -27
- package/dist/evals/worker.js +220 -121
- package/dist/extensions/admin-ops.d.ts +61 -33
- package/dist/extensions/admin-ops.js +248 -154
- package/dist/extensions/admin-view.d.ts +38 -27
- package/dist/extensions/admin-view.js +126 -55
- package/dist/extensions/approvals.d.ts +12 -8
- package/dist/extensions/approvals.js +73 -46
- package/dist/extensions/blobs.d.ts +27 -10
- package/dist/extensions/blobs.js +111 -45
- package/dist/extensions/bootstrap.d.ts +58 -31
- package/dist/extensions/bootstrap.js +175 -121
- package/dist/extensions/cli.d.ts +20 -10
- package/dist/extensions/cli.js +41 -96
- package/dist/extensions/config-issues.d.ts +7 -0
- package/dist/extensions/config-issues.js +31 -0
- package/dist/extensions/deployment-config-store.d.ts +49 -0
- package/dist/extensions/deployment-config-store.js +133 -0
- package/dist/extensions/deployment-config.d.ts +58 -67
- package/dist/extensions/deployment-config.js +202 -230
- package/dist/extensions/enabled.d.ts +5 -5
- package/dist/extensions/extensions.module.d.ts +8 -0
- package/dist/extensions/extensions.module.js +77 -0
- package/dist/extensions/hooks.d.ts +3 -2
- package/dist/extensions/hooks.js +1 -1
- package/dist/extensions/host.d.ts +72 -68
- package/dist/extensions/host.js +191 -152
- package/dist/extensions/installs.d.ts +49 -16
- package/dist/extensions/installs.js +128 -32
- package/dist/extensions/job-ids.d.ts +6 -0
- package/dist/extensions/job-ids.js +6 -0
- package/dist/extensions/lifecycle-topics.d.ts +18 -0
- package/dist/extensions/lifecycle-topics.js +18 -0
- package/dist/extensions/lifecycle.d.ts +35 -47
- package/dist/extensions/lifecycle.js +103 -39
- package/dist/extensions/locks.d.ts +33 -0
- package/dist/extensions/locks.js +86 -0
- package/dist/extensions/migrate-lock.d.ts +3 -4
- package/dist/extensions/org-config.controller.d.ts +1 -1
- package/dist/extensions/org-config.controller.js +8 -5
- package/dist/extensions/org-config.d.ts +48 -46
- package/dist/extensions/org-config.js +284 -226
- package/dist/extensions/registry.d.ts +50 -2
- package/dist/extensions/registry.js +89 -4
- package/dist/extensions/sources.d.ts +12 -8
- package/dist/extensions/sources.js +34 -13
- package/dist/files/files.module.d.ts +3 -0
- package/dist/files/files.module.js +22 -0
- package/dist/files/previewers.controller.d.ts +7 -2
- package/dist/files/previewers.controller.js +17 -9
- package/dist/files/previewers.d.ts +13 -18
- package/dist/files/previewers.js +83 -36
- package/dist/http/adapter.d.ts +3 -0
- package/dist/http/adapter.js +25 -0
- package/dist/http/api.module.d.ts +3 -110
- package/dist/http/api.module.js +47 -355
- package/dist/http/app.d.ts +11 -15
- package/dist/http/app.js +17 -62
- package/dist/http/error-filter.module.d.ts +5 -0
- package/dist/http/error-filter.module.js +18 -0
- package/dist/http/error.filter.js +2 -2
- package/dist/identity/accounts.d.ts +82 -29
- package/dist/identity/accounts.js +294 -175
- package/dist/identity/api-tokens.d.ts +11 -7
- package/dist/identity/api-tokens.js +71 -44
- package/dist/identity/audit.d.ts +7 -4
- package/dist/identity/audit.js +5 -1
- package/dist/identity/auth.controller.d.ts +11 -10
- package/dist/identity/auth.controller.js +31 -25
- package/dist/identity/auth.guard.d.ts +3 -3
- package/dist/identity/auth.guard.js +6 -4
- package/dist/identity/binding.d.ts +9 -11
- package/dist/identity/binding.js +41 -13
- package/dist/identity/enterprise-admin.d.ts +18 -12
- package/dist/identity/enterprise-admin.js +67 -13
- package/dist/identity/external-identity-lock.d.ts +17 -0
- package/dist/identity/external-identity-lock.js +39 -0
- package/dist/identity/external.d.ts +19 -15
- package/dist/identity/external.js +163 -125
- package/dist/identity/identity.module.d.ts +6 -0
- package/dist/identity/identity.module.js +56 -0
- package/dist/identity/me.controller.d.ts +16 -15
- package/dist/identity/me.controller.js +37 -31
- package/dist/identity/sessions.d.ts +12 -10
- package/dist/identity/sessions.js +74 -42
- package/dist/identity/settings.d.ts +20 -14
- package/dist/identity/settings.js +86 -58
- package/dist/identity/sso.controller.d.ts +7 -7
- package/dist/identity/sso.controller.js +13 -9
- package/dist/identity/sso.d.ts +9 -12
- package/dist/identity/sso.js +54 -24
- package/dist/inbox/inbox.module.d.ts +3 -0
- package/dist/inbox/inbox.module.js +22 -0
- package/dist/inbox/inbox.service.d.ts +7 -9
- package/dist/inbox/inbox.service.js +32 -11
- package/dist/index.d.ts +16 -11
- package/dist/index.js +9 -6
- package/dist/infra/cache/cache.module.d.ts +3 -0
- package/dist/infra/cache/cache.module.js +16 -0
- package/dist/infra/cache/cache.service.d.ts +21 -0
- package/dist/infra/cache/cache.service.js +80 -0
- package/dist/infra/cache/cacheable.decorator.d.ts +32 -0
- package/dist/infra/cache/cacheable.decorator.js +83 -0
- package/dist/infra/cli/kernel-cli.module.d.ts +66 -0
- package/dist/infra/cli/kernel-cli.module.js +165 -0
- package/dist/infra/close-within.d.ts +15 -0
- package/dist/infra/close-within.js +36 -0
- package/dist/infra/config/config.module.d.ts +13 -0
- package/dist/infra/config/config.module.js +39 -0
- package/dist/infra/config/kernel-config.service.d.ts +25 -0
- package/dist/infra/config/kernel-config.service.js +126 -0
- package/dist/infra/database/after-commit.d.ts +6 -0
- package/dist/infra/database/after-commit.js +9 -0
- package/dist/infra/database/database.module.d.ts +25 -0
- package/dist/infra/database/database.module.js +90 -0
- package/dist/infra/database/kernel-db.d.ts +22 -0
- package/dist/infra/database/kernel-db.js +65 -0
- package/dist/infra/database/transaction-host.d.ts +50 -0
- package/dist/infra/database/transaction-host.js +125 -0
- package/dist/infra/database/transactional.decorator.d.ts +15 -0
- package/dist/infra/database/transactional.decorator.js +27 -0
- package/dist/infra/database/xact-lock.d.ts +17 -0
- package/dist/infra/database/xact-lock.js +43 -0
- package/dist/infra/events/kernel-events.d.ts +96 -0
- package/dist/infra/events/kernel-events.js +65 -0
- package/dist/infra/health/health.controller.d.ts +26 -0
- package/dist/infra/health/health.controller.js +104 -0
- package/dist/infra/health/health.module.d.ts +9 -0
- package/dist/infra/health/health.module.js +24 -0
- package/dist/infra/health/health.options.d.ts +10 -0
- package/dist/infra/health/health.options.js +15 -0
- package/dist/infra/health/shutdown-state.d.ts +6 -0
- package/dist/infra/health/shutdown-state.js +2 -0
- package/dist/infra/lifecycle/graceful-shutdown.module.d.ts +6 -0
- package/dist/infra/lifecycle/graceful-shutdown.module.js +23 -0
- package/dist/infra/lifecycle/graceful-shutdown.service.d.ts +70 -0
- package/dist/infra/lifecycle/graceful-shutdown.service.js +135 -0
- package/dist/infra/lifecycle/process-guards.d.ts +52 -0
- package/dist/infra/lifecycle/process-guards.js +86 -0
- package/dist/infra/lifecycle/shutdown-signals.d.ts +30 -0
- package/dist/infra/lifecycle/shutdown-signals.js +48 -0
- package/dist/infra/lock/key-template.d.ts +13 -0
- package/dist/infra/lock/key-template.js +46 -0
- package/dist/infra/lock/lock.module.d.ts +3 -0
- package/dist/infra/lock/lock.module.js +16 -0
- package/dist/infra/lock/lock.service.d.ts +120 -0
- package/dist/infra/lock/lock.service.js +343 -0
- package/dist/infra/lock/shared-lease.d.ts +44 -0
- package/dist/infra/lock/shared-lease.js +121 -0
- package/dist/infra/lock/with-lock.decorator.d.ts +28 -0
- package/dist/infra/lock/with-lock.decorator.js +49 -0
- package/dist/infra/logging/logging.module.d.ts +16 -0
- package/dist/infra/logging/logging.module.js +34 -0
- package/dist/infra/queue/configured-processor.d.ts +18 -0
- package/dist/infra/queue/configured-processor.js +23 -0
- package/dist/infra/queue/job-failure.d.ts +18 -0
- package/dist/infra/queue/job-failure.js +26 -0
- package/dist/infra/queue/queue-shutdown.d.ts +27 -0
- package/dist/infra/queue/queue-shutdown.js +81 -0
- package/dist/infra/queue/queue.module.d.ts +16 -0
- package/dist/infra/queue/queue.module.js +61 -0
- package/dist/infra/queue/redis-connection.d.ts +7 -0
- package/dist/infra/queue/redis-connection.js +18 -0
- package/dist/infra/queue/retired-schedulers.d.ts +7 -0
- package/dist/infra/queue/retired-schedulers.js +9 -0
- package/dist/infra/queue/run-job.d.ts +16 -0
- package/dist/infra/queue/run-job.js +19 -0
- package/dist/infra/redis/redis.module.d.ts +24 -0
- package/dist/infra/redis/redis.module.js +87 -0
- package/dist/infra/schedule/cron-tick.d.ts +12 -0
- package/dist/infra/schedule/cron-tick.js +25 -0
- package/dist/infra/schedule/locked-cron.decorator.d.ts +27 -0
- package/dist/infra/schedule/locked-cron.decorator.js +53 -0
- package/dist/infra/schedule/locked-interval.d.ts +69 -0
- package/dist/infra/schedule/locked-interval.js +190 -0
- package/dist/infra/schedule/locked-tick.d.ts +90 -0
- package/dist/infra/schedule/locked-tick.js +137 -0
- package/dist/infra/schedule/schedule.module.d.ts +8 -0
- package/dist/infra/schedule/schedule.module.js +27 -0
- package/dist/infra/schedule/scheduled-runs.d.ts +69 -0
- package/dist/infra/schedule/scheduled-runs.js +163 -0
- package/dist/infra/swagger/swagger.d.ts +16 -0
- package/dist/infra/swagger/swagger.js +31 -0
- package/dist/infra/throttler/credential-throttler.d.ts +35 -0
- package/dist/infra/throttler/credential-throttler.js +77 -0
- package/dist/infra/throttler/named-throttlers.d.ts +31 -0
- package/dist/infra/throttler/named-throttlers.js +119 -0
- package/dist/infra/throttler/redis-throttler-storage.d.ts +38 -0
- package/dist/infra/throttler/redis-throttler-storage.js +130 -0
- package/dist/infra/throttler/throttler.guard.d.ts +23 -0
- package/dist/infra/throttler/throttler.guard.js +68 -0
- package/dist/infra/throttler/throttler.module.d.ts +15 -0
- package/dist/infra/throttler/throttler.module.js +53 -0
- package/dist/infra/tokens.d.ts +15 -0
- package/dist/infra/tokens.js +15 -0
- package/dist/infra/validation/create-zod-dto.d.ts +23 -0
- package/dist/infra/validation/create-zod-dto.js +35 -0
- package/dist/infra/validation/parse-with-zod.d.ts +7 -0
- package/dist/infra/validation/parse-with-zod.js +12 -0
- package/dist/infra/validation/validation.module.d.ts +3 -0
- package/dist/infra/validation/validation.module.js +16 -0
- package/dist/infra/validation/zod-params.d.ts +7 -0
- package/dist/infra/validation/zod-params.js +42 -0
- package/dist/infra/validation/zod-validation.pipe.d.ts +11 -0
- package/dist/infra/validation/zod-validation.pipe.js +31 -0
- package/dist/kernel.d.ts +9 -244
- package/dist/kernel.js +8 -1305
- package/dist/kernel.module.d.ts +17 -0
- package/dist/kernel.module.js +136 -0
- package/dist/lifecycle/kernel-lifecycle.d.ts +140 -0
- package/dist/lifecycle/kernel-lifecycle.js +456 -0
- package/dist/lifecycle/tokens.d.ts +3 -0
- package/dist/lifecycle/tokens.js +3 -0
- package/dist/log-context.d.ts +2 -0
- package/dist/log-context.js +4 -0
- package/dist/models/models.module.d.ts +3 -0
- package/dist/models/models.module.js +24 -0
- package/dist/models/prices.d.ts +8 -2
- package/dist/models/prices.js +65 -37
- package/dist/models/purposes.controller.d.ts +1 -1
- package/dist/models/purposes.controller.js +5 -6
- package/dist/models/purposes.d.ts +35 -13
- package/dist/models/purposes.js +101 -51
- package/dist/orgs/directory-sync.controller.d.ts +1 -1
- package/dist/orgs/directory-sync.controller.js +2 -2
- package/dist/orgs/directory-sync.d.ts +61 -31
- package/dist/orgs/directory-sync.js +212 -125
- package/dist/orgs/invitations.controller.d.ts +8 -8
- package/dist/orgs/invitations.controller.js +27 -26
- package/dist/orgs/invitations.service.d.ts +12 -9
- package/dist/orgs/invitations.service.js +130 -92
- package/dist/orgs/job-ids.d.ts +8 -0
- package/dist/orgs/job-ids.js +8 -0
- package/dist/orgs/members.service.d.ts +19 -12
- package/dist/orgs/members.service.js +161 -117
- package/dist/orgs/offboarding.d.ts +54 -57
- package/dist/orgs/offboarding.js +161 -71
- package/dist/orgs/org-lock.d.ts +28 -19
- package/dist/orgs/org-lock.js +81 -35
- package/dist/orgs/org.guard.d.ts +1 -1
- package/dist/orgs/org.guard.js +2 -2
- package/dist/orgs/orgs.controller.d.ts +13 -13
- package/dist/orgs/orgs.controller.js +29 -17
- package/dist/orgs/orgs.module.d.ts +6 -0
- package/dist/orgs/orgs.module.js +68 -0
- package/dist/orgs/orgs.service.d.ts +30 -19
- package/dist/orgs/orgs.service.js +139 -86
- package/dist/orgs/settings.controller.d.ts +1 -1
- package/dist/orgs/settings.controller.js +8 -6
- package/dist/orgs/settings.service.d.ts +16 -10
- package/dist/orgs/settings.service.js +77 -48
- package/dist/overrides.d.ts +56 -0
- package/dist/overrides.js +30 -0
- package/dist/roles/gateway-role.d.ts +43 -0
- package/dist/roles/gateway-role.js +98 -0
- package/dist/roles/gateway.module.d.ts +8 -0
- package/dist/roles/gateway.module.js +28 -0
- package/dist/roles/worker-role.d.ts +63 -0
- package/dist/roles/worker-role.js +144 -0
- package/dist/roles/worker.module.d.ts +14 -0
- package/dist/roles/worker.module.js +90 -0
- package/dist/runtime/abort.js +19 -2
- package/dist/runtime/checkpointer.d.ts +8 -3
- package/dist/runtime/checkpointer.js +87 -55
- package/dist/runtime/context/build.d.ts +6 -6
- package/dist/runtime/context/build.js +18 -8
- package/dist/runtime/context/claude-tools.d.ts +2 -1
- package/dist/runtime/context/claude-tools.js +9 -10
- package/dist/runtime/context/legacy-text.d.ts +22 -0
- package/dist/runtime/context/legacy-text.js +37 -0
- package/dist/runtime/context/skills.d.ts +29 -11
- package/dist/runtime/context/skills.js +37 -30
- package/dist/runtime/conversation-lock.d.ts +20 -11
- package/dist/runtime/conversation-lock.js +62 -72
- package/dist/runtime/hook-calls.d.ts +3 -3
- package/dist/runtime/hook-calls.js +1 -6
- package/dist/runtime/job-ids.d.ts +10 -0
- package/dist/runtime/job-ids.js +10 -0
- package/dist/runtime/langgraph-loop.js +1 -1
- package/dist/runtime/loop.d.ts +8 -1
- package/dist/runtime/loop.js +14 -0
- package/dist/runtime/maintenance-queue.d.ts +10 -0
- package/dist/runtime/maintenance-queue.js +10 -0
- package/dist/runtime/maintenance.d.ts +45 -74
- package/dist/runtime/maintenance.js +139 -137
- package/dist/runtime/model-call.d.ts +7 -4
- package/dist/runtime/model-call.js +25 -58
- package/dist/runtime/providers.d.ts +17 -6
- package/dist/runtime/providers.js +66 -25
- package/dist/runtime/quota.d.ts +17 -3
- package/dist/runtime/quota.js +27 -2
- package/dist/runtime/retired-schedulers.d.ts +7 -0
- package/dist/runtime/retired-schedulers.js +31 -0
- package/dist/runtime/run-control.d.ts +33 -0
- package/dist/runtime/run-control.js +77 -0
- package/dist/runtime/run-finish.d.ts +27 -18
- package/dist/runtime/run-finish.js +98 -51
- package/dist/runtime/run-jobs.d.ts +48 -0
- package/dist/runtime/run-jobs.js +95 -0
- package/dist/runtime/run-processors.d.ts +60 -0
- package/dist/runtime/run-processors.js +185 -0
- package/dist/runtime/run-queue.d.ts +32 -57
- package/dist/runtime/run-queue.js +291 -295
- package/dist/runtime/run-steps.d.ts +39 -0
- package/dist/runtime/run-steps.js +96 -0
- package/dist/runtime/run-worker.d.ts +122 -76
- package/dist/runtime/run-worker.js +343 -229
- package/dist/runtime/runtime.module.d.ts +10 -0
- package/dist/runtime/runtime.module.js +112 -0
- package/dist/runtime/step-log.d.ts +40 -0
- package/dist/runtime/step-log.js +94 -0
- package/dist/runtime/stream.controller.d.ts +5 -8
- package/dist/runtime/stream.controller.js +14 -12
- package/dist/runtime/stream.d.ts +24 -6
- package/dist/runtime/stream.js +78 -7
- package/dist/runtime/subagents/child.d.ts +3 -44
- package/dist/runtime/subagents/child.js +0 -79
- package/dist/runtime/subagents/definition.d.ts +5 -10
- package/dist/runtime/subagents/definition.js +13 -14
- package/dist/runtime/subagents/dispatch.d.ts +89 -8
- package/dist/runtime/subagents/dispatch.js +137 -142
- package/dist/runtime/subagents/limits.d.ts +9 -4
- package/dist/runtime/subagents/limits.js +4 -2
- package/dist/runtime/subagents/org-agents.d.ts +4 -4
- package/dist/runtime/subagents/org-agents.js +3 -2
- package/dist/runtime/subagents/progress.d.ts +2 -2
- package/dist/runtime/subagents/roster.d.ts +4 -4
- package/dist/runtime/subagents/roster.js +2 -2
- package/dist/runtime/subagents/skill-fork.d.ts +8 -9
- package/dist/runtime/subagents/skill-fork.js +17 -6
- package/dist/runtime/subagents/subagents.service.d.ts +40 -0
- package/dist/runtime/subagents/subagents.service.js +101 -0
- package/dist/runtime/usage-report.d.ts +94 -52
- package/dist/runtime/usage-report.js +200 -100
- package/dist/runtime/waits.d.ts +127 -59
- package/dist/runtime/waits.js +433 -210
- package/dist/sandbox/job-ids.d.ts +10 -0
- package/dist/sandbox/job-ids.js +10 -0
- package/dist/sandbox/jobs.d.ts +41 -0
- package/dist/sandbox/jobs.js +113 -0
- package/dist/sandbox/leases.d.ts +39 -31
- package/dist/sandbox/leases.js +117 -257
- package/dist/sandbox/providers.d.ts +19 -0
- package/dist/sandbox/providers.js +38 -0
- package/dist/sandbox/sandbox.module.d.ts +8 -0
- package/dist/sandbox/sandbox.module.js +30 -0
- package/dist/sandbox/sandbox.service.d.ts +24 -29
- package/dist/sandbox/sandbox.service.js +106 -75
- package/dist/skills/catalog.d.ts +37 -24
- package/dist/skills/catalog.js +100 -57
- package/dist/skills/changes.controller.d.ts +4 -4
- package/dist/skills/changes.controller.js +15 -9
- package/dist/skills/changes.service.d.ts +30 -20
- package/dist/skills/changes.service.js +425 -367
- package/dist/skills/invocable.controller.d.ts +1 -1
- package/dist/skills/invocable.controller.js +8 -5
- package/dist/skills/invocation-keys.d.ts +1 -1
- package/dist/skills/invocation-keys.js +1 -1
- package/dist/skills/invoke.d.ts +17 -16
- package/dist/skills/invoke.js +53 -21
- package/dist/skills/skills.controller.d.ts +1 -1
- package/dist/skills/skills.controller.js +11 -6
- package/dist/skills/skills.module.d.ts +6 -0
- package/dist/skills/skills.module.js +30 -0
- package/dist/skills/skills.service.d.ts +47 -30
- package/dist/skills/skills.service.js +221 -158
- package/dist/storage/job-ids.d.ts +6 -0
- package/dist/storage/job-ids.js +6 -0
- package/dist/storage/purge.d.ts +22 -7
- package/dist/storage/purge.js +55 -3
- package/dist/storage/storage.module.d.ts +6 -0
- package/dist/storage/storage.module.js +23 -0
- package/dist/storage/storage.service.d.ts +18 -4
- package/dist/storage/storage.service.js +44 -3
- package/dist/tools/approvals.controller.d.ts +1 -1
- package/dist/tools/approvals.controller.js +12 -8
- package/dist/tools/approvals.service.d.ts +33 -25
- package/dist/tools/approvals.service.js +343 -259
- package/dist/tools/breaker.d.ts +2 -2
- package/dist/tools/breaker.js +21 -3
- package/dist/tools/builtin-names.d.ts +73 -0
- package/dist/tools/builtin-names.js +116 -0
- package/dist/tools/builtins/agent.d.ts +7 -7
- package/dist/tools/builtins/agent.js +7 -11
- package/dist/tools/builtins/ask-user.d.ts +3 -3
- package/dist/tools/builtins/ask-user.js +3 -3
- package/dist/tools/builtins/builtin-tools.d.ts +21 -0
- package/dist/tools/builtins/builtin-tools.js +80 -0
- package/dist/tools/builtins/read-tool-output.d.ts +3 -3
- package/dist/tools/builtins/read-tool-output.js +3 -3
- package/dist/tools/builtins/sandbox/bash.d.ts +5 -5
- package/dist/tools/builtins/sandbox/bash.js +33 -30
- package/dist/tools/builtins/sandbox/common.d.ts +5 -4
- package/dist/tools/builtins/sandbox/common.js +2 -2
- package/dist/tools/builtins/sandbox/deliver.d.ts +1 -1
- package/dist/tools/builtins/sandbox/deliver.js +13 -13
- package/dist/tools/builtins/sandbox/edit.d.ts +1 -1
- package/dist/tools/builtins/sandbox/edit.js +42 -31
- package/dist/tools/builtins/sandbox/file-state.d.ts +34 -0
- package/dist/tools/builtins/sandbox/file-state.js +34 -0
- package/dist/tools/builtins/sandbox/glob-match.d.ts +1 -1
- package/dist/tools/builtins/sandbox/glob-match.js +1 -1
- package/dist/tools/builtins/sandbox/glob.d.ts +1 -1
- package/dist/tools/builtins/sandbox/glob.js +6 -6
- package/dist/tools/builtins/sandbox/grep.d.ts +7 -4
- package/dist/tools/builtins/sandbox/grep.js +149 -32
- package/dist/tools/builtins/sandbox/index.d.ts +1 -1
- package/dist/tools/builtins/sandbox/index.js +1 -1
- package/dist/tools/builtins/sandbox/read.d.ts +2 -2
- package/dist/tools/builtins/sandbox/read.js +22 -15
- package/dist/tools/builtins/sandbox/write.d.ts +1 -1
- package/dist/tools/builtins/sandbox/write.js +38 -34
- package/dist/tools/builtins/skill-load.d.ts +6 -6
- package/dist/tools/builtins/skill-load.js +33 -17
- package/dist/tools/builtins/skill-write.d.ts +4 -4
- package/dist/tools/builtins/skill-write.js +10 -10
- package/dist/tools/builtins/tool-search.d.ts +13 -9
- package/dist/tools/builtins/tool-search.js +25 -14
- package/dist/tools/canonical-json.d.ts +6 -0
- package/dist/tools/canonical-json.js +16 -0
- package/dist/tools/connector-content.controller.d.ts +1 -1
- package/dist/tools/connector-content.controller.js +11 -6
- package/dist/tools/connector-content.d.ts +12 -15
- package/dist/tools/connector-content.js +53 -18
- package/dist/tools/connectors.controller.d.ts +1 -1
- package/dist/tools/connectors.controller.js +21 -10
- package/dist/tools/connectors.service.d.ts +31 -13
- package/dist/tools/connectors.service.js +438 -348
- package/dist/tools/credentials.d.ts +17 -20
- package/dist/tools/credentials.js +55 -34
- package/dist/tools/display-names.d.ts +9 -0
- package/dist/tools/display-names.js +24 -0
- package/dist/tools/drift.d.ts +29 -41
- package/dist/tools/drift.js +116 -84
- package/dist/tools/elicitation.js +1 -1
- package/dist/tools/info.d.ts +32 -13
- package/dist/tools/info.js +88 -39
- package/dist/tools/job-ids.d.ts +13 -0
- package/dist/tools/job-ids.js +15 -0
- package/dist/tools/jobs.d.ts +24 -0
- package/dist/tools/jobs.js +69 -0
- package/dist/tools/legacy-data.d.ts +34 -0
- package/dist/tools/legacy-data.js +76 -0
- package/dist/tools/legacy-keys.d.ts +51 -0
- package/dist/tools/legacy-keys.js +115 -0
- package/dist/tools/naming.d.ts +1 -5
- package/dist/tools/naming.js +1 -7
- package/dist/tools/oauth/flow-paths.d.ts +16 -0
- package/dist/tools/oauth/flow-paths.js +38 -0
- package/dist/tools/oauth/flow.d.ts +30 -30
- package/dist/tools/oauth/flow.js +109 -81
- package/dist/tools/oauth/oauth.controller.d.ts +3 -3
- package/dist/tools/oauth/oauth.controller.js +12 -9
- package/dist/tools/oauth/tokens.d.ts +11 -3
- package/dist/tools/oauth/tokens.js +15 -14
- package/dist/tools/outputs.d.ts +13 -4
- package/dist/tools/outputs.js +48 -4
- package/dist/tools/pipeline.d.ts +72 -50
- package/dist/tools/pipeline.js +239 -100
- package/dist/tools/policy.d.ts +3 -16
- package/dist/tools/policy.js +13 -19
- package/dist/tools/questions.controller.d.ts +2 -2
- package/dist/tools/questions.controller.js +9 -6
- package/dist/tools/questions.service.d.ts +26 -25
- package/dist/tools/questions.service.js +201 -142
- package/dist/tools/registry.d.ts +43 -38
- package/dist/tools/registry.js +100 -72
- package/dist/tools/resources.d.ts +1 -1
- package/dist/tools/resources.js +1 -1
- package/dist/tools/specs.d.ts +5 -4
- package/dist/tools/specs.js +3 -1
- package/dist/tools/tools.module.d.ts +10 -0
- package/dist/tools/tools.module.js +91 -0
- package/dist/ui/call-extension.d.ts +16 -0
- package/dist/ui/call-extension.js +38 -0
- package/dist/ui/embed-token.d.ts +9 -5
- package/dist/ui/embed-token.js +34 -6
- package/dist/ui/ui-stream.d.ts +22 -17
- package/dist/ui/ui-stream.js +72 -12
- package/dist/ui/ui.module.d.ts +7 -0
- package/dist/ui/ui.module.js +28 -0
- package/dist/ui/views.controller.d.ts +14 -12
- package/dist/ui/views.controller.js +32 -25
- package/dist/ui/views.d.ts +9 -57
- package/dist/ui/views.js +43 -45
- package/package.json +10 -3
- package/src/migrations/0063_tool_keys_claude_code.sql +220 -0
- package/dist/http/health.controller.d.ts +0 -26
- package/dist/http/health.controller.js +0 -79
- package/dist/http/tokens.d.ts +0 -131
- package/dist/http/tokens.js +0 -131
- package/dist/http/zod.pipe.d.ts +0 -8
- package/dist/http/zod.pipe.js +0 -14
- package/dist/identity/rate-limit.d.ts +0 -55
- package/dist/identity/rate-limit.js +0 -121
- package/dist/sandbox/lifecycle.d.ts +0 -21
- package/dist/sandbox/lifecycle.js +0 -68
- package/dist/tools/builtins/sandbox/names.d.ts +0 -7
- package/dist/tools/builtins/sandbox/names.js +0 -20
- /package/dist/http/{gateway.module.d.ts → gateway-routes.d.ts} +0 -0
- /package/dist/http/{gateway.module.js → gateway-routes.js} +0 -0
package/dist/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)。 */
|
|
@@ -52,7 +53,7 @@ export interface SubagentParent {
|
|
|
52
53
|
otherAgent?: boolean;
|
|
53
54
|
}
|
|
54
55
|
/**
|
|
55
|
-
* 运行在等什么人处理:审批(`approvals` 行)或输入请求(`questions` 行,统一承载 `
|
|
56
|
+
* 运行在等什么人处理:审批(`approvals` 行)或输入请求(`questions` 行,统一承载 `AskUserQuestion`、
|
|
56
57
|
* 插件工具的 `input_required` 与 MCP elicitation)。`expiresAt` 为 ISO 时间。
|
|
57
58
|
* `subagents` (phase C, spec §7.2): sub-agents dispatched in a step are still running; the id is
|
|
58
59
|
* `sa-<runId>-<step>` (no `:`, it is part of BullMQ job ids).
|
|
@@ -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
|
}
|
|
@@ -1,148 +1,150 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
1
|
+
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
|
2
|
+
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
3
|
+
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
4
|
+
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
5
|
+
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
6
|
+
};
|
|
7
|
+
var __param = (this && this.__param) || function (paramIndex, decorator) {
|
|
8
|
+
return function (target, key) { decorator(target, key, paramIndex); }
|
|
9
|
+
};
|
|
10
|
+
import { getQueueToken, OnWorkerEvent, WorkerHost } from "@nestjs/bullmq";
|
|
11
|
+
import { Inject, Injectable, Module } from "@nestjs/common";
|
|
12
|
+
import { configuredProcessor } from "../infra/queue/configured-processor.js";
|
|
13
|
+
import { QueueModule } from "../infra/queue/queue.module.js";
|
|
14
|
+
import { removeRetiredSchedulers } from "../infra/queue/retired-schedulers.js";
|
|
15
|
+
import { runJob } from "../infra/queue/run-job.js";
|
|
16
|
+
import { KernelScheduleModule } from "../infra/schedule/schedule.module.js";
|
|
17
|
+
import { ScheduledRuns } from "../infra/schedule/scheduled-runs.js";
|
|
18
|
+
import { KERNEL_LOGGER } from "../infra/tokens.js";
|
|
19
|
+
import { DIRECTORY_SYNC_JOB, DirectorySync } from "../orgs/directory-sync.js";
|
|
20
|
+
import { OrgsModule } from "../orgs/orgs.module.js";
|
|
21
|
+
import { runSandboxDestroyFor, SANDBOX_DESTROY_FOR_JOB } from "../sandbox/jobs.js";
|
|
22
|
+
import { SandboxModule } from "../sandbox/sandbox.module.js";
|
|
23
|
+
import { SandboxService } from "../sandbox/sandbox.service.js";
|
|
24
|
+
import { ToolDrift } from "../tools/drift.js";
|
|
25
|
+
import { DRIFT_CONNECTOR_JOB } from "../tools/job-ids.js";
|
|
26
|
+
import { ToolsModule } from "../tools/tools.module.js";
|
|
27
|
+
import { MAINTENANCE_QUEUE_NAME } from "./maintenance-queue.js";
|
|
28
|
+
import { RETIRED_SCHEDULER_IDS } from "./retired-schedulers.js";
|
|
29
|
+
import { RuntimeModule } from "./runtime.module.js";
|
|
30
|
+
import { WAIT_TIMEOUT_JOB, Waits } from "./waits.js";
|
|
31
|
+
export { MAINTENANCE_QUEUE_NAME } from "./maintenance-queue.js";
|
|
32
|
+
/** The maintenance worker's concurrency (as the hand-made worker had). */
|
|
33
|
+
export const MAINTENANCE_CONCURRENCY = 5;
|
|
5
34
|
/**
|
|
6
|
-
*
|
|
7
|
-
*
|
|
8
|
-
*
|
|
9
|
-
*
|
|
10
|
-
*
|
|
11
|
-
*
|
|
35
|
+
* The one consumer of `cap-kernel-maintenance` (decision R11 of the Nest kernel spec): dispatches
|
|
36
|
+
* each one-off job by name to its domain (`wait-timeout` → {@link Waits}, `sandbox-destroy-for` →
|
|
37
|
+
* {@link SandboxService}, `drift-connector` → {@link ToolDrift}, `directory-sync` →
|
|
38
|
+
* {@link DirectorySync}). The name of a periodic job (a `@LockedCron` / `@LockedInterval` job,
|
|
39
|
+
* such as `sandbox-suspend-idle`) runs that job's body once ({@link ScheduledRuns.runNow}), as the
|
|
40
|
+
* maintenance handlers did when those jobs were schedulers on this queue: an operator's or a
|
|
41
|
+
* test's one-off run, not a second schedule (decision R23 of the Nest kernel spec). Any other
|
|
42
|
+
* name is warned and completes. The producers are the domains' own (same names, ids and options).
|
|
12
43
|
*/
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
* Periodic marketplace refresh (C26): job name and job scheduler id (no `:`), every
|
|
21
|
-
* `marketplaces.refreshIntervalMinutes`. One scheduler for all replicas; the handler refreshes each
|
|
22
|
-
* enabled marketplace in turn (see catalog/marketplaces.service.ts). The values keep their old
|
|
23
|
-
* names: the scheduler id is stored in Redis, and renaming it would leave the old scheduler behind.
|
|
24
|
-
*/
|
|
25
|
-
export const MARKETPLACES_REFRESH_JOB = "catalogs-refresh";
|
|
26
|
-
export const MARKETPLACES_REFRESH_SCHEDULER_ID = "catalogs-refresh-every";
|
|
27
|
-
/**
|
|
28
|
-
* Cleanup of plugin (app bundle) import staging (T25, F-AE): job name and job scheduler id (no
|
|
29
|
-
* `:`), hourly; deletes expired (24-hour) staging rows and their object storage prefixes (see
|
|
30
|
-
* catalog/plugin-import.ts `PluginImport.cleanupExpired`). The values keep their old names: the
|
|
31
|
-
* scheduler id is stored in Redis, so renaming it would leave the old scheduler behind.
|
|
32
|
-
*/
|
|
33
|
-
export const PLUGIN_STAGING_CLEANUP_JOB = "app-staging-cleanup";
|
|
34
|
-
export const PLUGIN_STAGING_CLEANUP_SCHEDULER_ID = "app-staging-cleanup-hourly";
|
|
35
|
-
export const PLUGIN_STAGING_CLEANUP_EVERY_MS = 3_600_000;
|
|
36
|
-
/**
|
|
37
|
-
* 删除已过期(`expires_at < now()`)的输出存档,每批 `batch` 行,直到删完;返回删除的总行数。
|
|
38
|
-
* 每批一条独立语句(不开长事务);多个 worker 同时清理时 `SKIP LOCKED` 互不等待。
|
|
39
|
-
*/
|
|
40
|
-
export async function deleteExpiredOutputs(db, batch = OUTPUT_CLEANUP_BATCH) {
|
|
41
|
-
let total = 0;
|
|
42
|
-
for (;;) {
|
|
43
|
-
const r = await db
|
|
44
|
-
.deleteFrom("tool_outputs")
|
|
45
|
-
.where("id", "in", db
|
|
46
|
-
.selectFrom("tool_outputs")
|
|
47
|
-
.select("id")
|
|
48
|
-
.where("expires_at", "<", sql `now()`)
|
|
49
|
-
.limit(batch)
|
|
50
|
-
.forUpdate()
|
|
51
|
-
.skipLocked())
|
|
52
|
-
.executeTakeFirst();
|
|
53
|
-
const n = Number(r.numDeletedRows);
|
|
54
|
-
total += n;
|
|
55
|
-
if (n < batch)
|
|
56
|
-
return total;
|
|
57
|
-
}
|
|
58
|
-
}
|
|
59
|
-
/**
|
|
60
|
-
* 维护队列的生产方与(worker 角色上的)唯一 Worker。状态都在 Redis / PG,没有进程内定时器:
|
|
61
|
-
* 周期任务用 BullMQ job scheduler(`upsertJobScheduler` 幂等,多副本重复调用只有一个 scheduler)。
|
|
62
|
-
*/
|
|
63
|
-
export class Maintenance {
|
|
64
|
-
d;
|
|
44
|
+
let MaintenanceProcessor = class MaintenanceProcessor extends WorkerHost {
|
|
45
|
+
waits;
|
|
46
|
+
sandbox;
|
|
47
|
+
drift;
|
|
48
|
+
directory;
|
|
49
|
+
scheduled;
|
|
50
|
+
log;
|
|
65
51
|
queue;
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
this.
|
|
74
|
-
this.
|
|
75
|
-
const n = await deleteExpiredOutputs(d.db);
|
|
76
|
-
if (n > 0)
|
|
77
|
-
d.log.info("expired tool outputs deleted", { count: n });
|
|
78
|
-
});
|
|
79
|
-
}
|
|
80
|
-
/** 登记某个任务名的处理函数(构造期调用;Worker 启动前后都可)。 */
|
|
81
|
-
handle(name, fn) {
|
|
82
|
-
this.handlers.set(name, fn);
|
|
52
|
+
constructor(waits, sandbox, drift, directory, scheduled, log, queue) {
|
|
53
|
+
super();
|
|
54
|
+
this.waits = waits;
|
|
55
|
+
this.sandbox = sandbox;
|
|
56
|
+
this.drift = drift;
|
|
57
|
+
this.directory = directory;
|
|
58
|
+
this.scheduled = scheduled;
|
|
59
|
+
this.log = log;
|
|
60
|
+
this.queue = queue;
|
|
83
61
|
}
|
|
84
|
-
/**
|
|
85
|
-
|
|
86
|
-
|
|
62
|
+
/**
|
|
63
|
+
* Removes the retired job schedulers (`RETIRED_SCHEDULER_IDS`, runtime/retired-schedulers.ts): every fixed-period
|
|
64
|
+
* maintenance job is a `@LockedCron` / `@LockedInterval` now. Idempotent; called once when a
|
|
65
|
+
* worker role starts.
|
|
66
|
+
*/
|
|
67
|
+
removeRetiredSchedulers() {
|
|
68
|
+
return removeRetiredSchedulers(this.queue, RETIRED_SCHEDULER_IDS);
|
|
87
69
|
}
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
await this.getQueue().add(name, data, opts);
|
|
91
|
-
}
|
|
92
|
-
/** 登记周期任务的 job scheduler(幂等;worker 角色启动时调用)。 */
|
|
93
|
-
async ensureSchedules() {
|
|
94
|
-
await this.getQueue().upsertJobScheduler(OUTPUT_CLEANUP_SCHEDULER_ID, { every: OUTPUT_CLEANUP_EVERY_MS }, {
|
|
95
|
-
name: OUTPUT_CLEANUP_JOB,
|
|
96
|
-
data: {},
|
|
97
|
-
opts: { removeOnComplete: true, removeOnFail: 100 },
|
|
98
|
-
});
|
|
99
|
-
for (const s of this.schedules) {
|
|
100
|
-
await this.getQueue().upsertJobScheduler(s.id, { every: s.everyMs() }, { name: s.name, data: {}, opts: { removeOnComplete: true, removeOnFail: 100 } });
|
|
101
|
-
}
|
|
70
|
+
process(job, token) {
|
|
71
|
+
return runJob(MAINTENANCE_QUEUE_NAME, job, () => this.dispatch(job, token));
|
|
102
72
|
}
|
|
103
|
-
/**
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
return;
|
|
107
|
-
this.workerConn = bullConnection(this.d.redisUrl, this.d.log);
|
|
108
|
-
this.worker = new Worker(MAINTENANCE_QUEUE_NAME, (job, token) => withJobContext(MAINTENANCE_QUEUE_NAME, job, () => this.process(job, token)), {
|
|
109
|
-
connection: this.workerConn,
|
|
110
|
-
concurrency: 5,
|
|
111
|
-
});
|
|
112
|
-
this.worker.on("error", (err) => this.d.log.error("maintenance worker error", { err }));
|
|
113
|
-
this.worker.on("failed", (job, err) => this.d.log.error("maintenance job failed", { name: job?.name, jobId: job?.id, err }));
|
|
73
|
+
/** Starts consuming (worker role, after the extensions loaded; built with `autorun: false`). */
|
|
74
|
+
start() {
|
|
75
|
+
void this.worker.run().catch((err) => this.error(err));
|
|
114
76
|
}
|
|
115
|
-
async
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
await
|
|
77
|
+
async dispatch(job, token) {
|
|
78
|
+
switch (job.name) {
|
|
79
|
+
case WAIT_TIMEOUT_JOB:
|
|
80
|
+
await this.waits.processTimeout(job, token);
|
|
81
|
+
return;
|
|
82
|
+
case SANDBOX_DESTROY_FOR_JOB:
|
|
83
|
+
await runSandboxDestroyFor(this.sandbox, this.log, job);
|
|
84
|
+
return;
|
|
85
|
+
case DRIFT_CONNECTOR_JOB: {
|
|
86
|
+
const { orgId, connectorId, trigger } = job.data;
|
|
87
|
+
await this.drift.check(orgId, connectorId, trigger);
|
|
88
|
+
return;
|
|
89
|
+
}
|
|
90
|
+
case DIRECTORY_SYNC_JOB:
|
|
91
|
+
await this.directory.runSyncJob(job.data);
|
|
92
|
+
return;
|
|
93
|
+
default:
|
|
94
|
+
if (await this.scheduled.runNow(job.name))
|
|
95
|
+
return;
|
|
96
|
+
this.log.warn("unknown maintenance job", { name: job.name, jobId: job.id });
|
|
126
97
|
}
|
|
127
|
-
this.workerConn = undefined;
|
|
128
|
-
this.queueConn = undefined;
|
|
129
98
|
}
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
throw new Error("maintenance queue is closed");
|
|
133
|
-
if (!this.queue) {
|
|
134
|
-
this.queueConn = bullConnection(this.d.redisUrl, this.d.log);
|
|
135
|
-
this.queue = new Queue(MAINTENANCE_QUEUE_NAME, { connection: this.queueConn });
|
|
136
|
-
this.queue.on("error", (err) => this.d.log.error("maintenance queue error", { err }));
|
|
137
|
-
}
|
|
138
|
-
return this.queue;
|
|
99
|
+
failed(job, err) {
|
|
100
|
+
this.log.error("maintenance job failed", { name: job?.name, jobId: job?.id, err });
|
|
139
101
|
}
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
if (!fn) {
|
|
143
|
-
this.d.log.warn("unknown maintenance job", { name: job.name, jobId: job.id });
|
|
144
|
-
return;
|
|
145
|
-
}
|
|
146
|
-
await fn(job, token);
|
|
102
|
+
error(err) {
|
|
103
|
+
this.log.error("maintenance worker error", { err });
|
|
147
104
|
}
|
|
148
|
-
}
|
|
105
|
+
};
|
|
106
|
+
__decorate([
|
|
107
|
+
OnWorkerEvent("failed")
|
|
108
|
+
], MaintenanceProcessor.prototype, "failed", null);
|
|
109
|
+
__decorate([
|
|
110
|
+
OnWorkerEvent("error")
|
|
111
|
+
], MaintenanceProcessor.prototype, "error", null);
|
|
112
|
+
MaintenanceProcessor = __decorate([
|
|
113
|
+
Injectable(),
|
|
114
|
+
__param(0, Inject(Waits)),
|
|
115
|
+
__param(1, Inject(SandboxService)),
|
|
116
|
+
__param(2, Inject(ToolDrift)),
|
|
117
|
+
__param(3, Inject(DirectorySync)),
|
|
118
|
+
__param(4, Inject(ScheduledRuns)),
|
|
119
|
+
__param(5, Inject(KERNEL_LOGGER)),
|
|
120
|
+
__param(6, Inject(getQueueToken(MAINTENANCE_QUEUE_NAME)))
|
|
121
|
+
], MaintenanceProcessor);
|
|
122
|
+
export { MaintenanceProcessor };
|
|
123
|
+
/**
|
|
124
|
+
* The maintenance queue's consumer: {@link MaintenanceProcessor}. Imported only by the worker role
|
|
125
|
+
* (`WorkerModule`), so other roles get no processor and no BullMQ worker. It never starts by
|
|
126
|
+
* itself: the worker role (`WorkerRole`) removes the retired job schedulers and starts it after the
|
|
127
|
+
* extensions loaded.
|
|
128
|
+
*/
|
|
129
|
+
let MaintenanceModule = class MaintenanceModule {
|
|
130
|
+
};
|
|
131
|
+
MaintenanceModule = __decorate([
|
|
132
|
+
Module({
|
|
133
|
+
imports: [
|
|
134
|
+
// the periodic jobs' bodies (a periodic job's name enqueued here runs it once)
|
|
135
|
+
KernelScheduleModule,
|
|
136
|
+
RuntimeModule,
|
|
137
|
+
SandboxModule,
|
|
138
|
+
ToolsModule,
|
|
139
|
+
OrgsModule,
|
|
140
|
+
QueueModule.registerQueue(MAINTENANCE_QUEUE_NAME),
|
|
141
|
+
],
|
|
142
|
+
providers: [
|
|
143
|
+
configuredProcessor(MaintenanceProcessor, MAINTENANCE_QUEUE_NAME, {
|
|
144
|
+
concurrency: MAINTENANCE_CONCURRENCY,
|
|
145
|
+
}),
|
|
146
|
+
],
|
|
147
|
+
exports: [MaintenanceProcessor],
|
|
148
|
+
})
|
|
149
|
+
], MaintenanceModule);
|
|
150
|
+
export { MaintenanceModule };
|
|
@@ -1,14 +1,15 @@
|
|
|
1
1
|
import { type ContentBlock, type Logger, type ModelProvider, type ModelRequest, type ModelStreamEvent, type ModelUsage, type StopReason } from "@capybara-hq/plugin-sdk";
|
|
2
2
|
import type { AgentDefinition } from "../agents/definition.js";
|
|
3
|
-
import type { KernelConfig } from "../config/schema.js";
|
|
4
3
|
import type { EventLog } from "../conversations/event-log.js";
|
|
5
|
-
import type {
|
|
4
|
+
import type { KernelSchemaDb } from "../db/kernel-schema.js";
|
|
5
|
+
import type { KernelConfigService } from "../infra/config/kernel-config.service.js";
|
|
6
6
|
import type { ToolRegistry, UnavailableTool } from "../tools/registry.js";
|
|
7
7
|
import { type BuildModelRequestInput, type MediaBytes, type MediaInfo, type ModelCallMeta, type RequestTool } from "./context/build.js";
|
|
8
8
|
import { type ConversationKindForHooks, type HookRunner } from "./hook-calls.js";
|
|
9
9
|
import type { SubagentParent } from "./loop.js";
|
|
10
10
|
import { MediaCache } from "./media-cache.js";
|
|
11
11
|
import { type ProviderRegistry } from "./providers.js";
|
|
12
|
+
import type { StepLog } from "./step-log.js";
|
|
12
13
|
import type { UsageReporter } from "./usage-report.js";
|
|
13
14
|
/** 单轮收尾的尾部提醒(模型可见,英文;spec 6 轮次额度收尾)。 */
|
|
14
15
|
export declare const WRAP_UP_REMINDER = "Step limit reached. Do not call tools. Summarize what you found and what remains for the user.";
|
|
@@ -28,12 +29,14 @@ export type StreamSink = (delta: {
|
|
|
28
29
|
text?: string;
|
|
29
30
|
}) => void;
|
|
30
31
|
export interface ModelStepDeps {
|
|
31
|
-
db:
|
|
32
|
+
db: KernelSchemaDb;
|
|
32
33
|
eventLog: EventLog;
|
|
34
|
+
/** The step's transactional writes (a model call with its tool specs, a denial with its audit row, a sub-agent's counted usage). */
|
|
35
|
+
stepLog: Pick<StepLog, "appendCounted" | "appendAudited" | "appendWithSpecs">;
|
|
33
36
|
registry: Pick<ProviderRegistry, "resolve">;
|
|
34
37
|
/** 工具注册表:每步开始时解析 agent 引用的工具(状态可能在步骤之间变化)。 */
|
|
35
38
|
tools: Pick<ToolRegistry, "forAgent">;
|
|
36
|
-
config:
|
|
39
|
+
config: Pick<KernelConfigService, "get">;
|
|
37
40
|
log: Logger;
|
|
38
41
|
/**
|
|
39
42
|
* 会话附件(构建请求时解析日志里的媒体引用;见 AttachmentsService)。未提供时媒体引用一律按「不再可用」处理。
|