@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,147 +1,150 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
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;
|
|
4
34
|
/**
|
|
5
|
-
*
|
|
6
|
-
*
|
|
7
|
-
*
|
|
8
|
-
*
|
|
9
|
-
*
|
|
10
|
-
*
|
|
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).
|
|
11
43
|
*/
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
* Periodic marketplace refresh (C26): job name and job scheduler id (no `:`), every
|
|
20
|
-
* `marketplaces.refreshIntervalMinutes`. One scheduler for all replicas; the handler refreshes each
|
|
21
|
-
* enabled marketplace in turn (see catalog/marketplaces.service.ts). The values keep their old
|
|
22
|
-
* names: the scheduler id is stored in Redis, and renaming it would leave the old scheduler behind.
|
|
23
|
-
*/
|
|
24
|
-
export const MARKETPLACES_REFRESH_JOB = "catalogs-refresh";
|
|
25
|
-
export const MARKETPLACES_REFRESH_SCHEDULER_ID = "catalogs-refresh-every";
|
|
26
|
-
/**
|
|
27
|
-
* Cleanup of plugin (app bundle) import staging (T25, F-AE): job name and job scheduler id (no
|
|
28
|
-
* `:`), hourly; deletes expired (24-hour) staging rows and their object storage prefixes (see
|
|
29
|
-
* catalog/plugin-import.ts `PluginImport.cleanupExpired`). The values keep their old names: the
|
|
30
|
-
* scheduler id is stored in Redis, so renaming it would leave the old scheduler behind.
|
|
31
|
-
*/
|
|
32
|
-
export const PLUGIN_STAGING_CLEANUP_JOB = "app-staging-cleanup";
|
|
33
|
-
export const PLUGIN_STAGING_CLEANUP_SCHEDULER_ID = "app-staging-cleanup-hourly";
|
|
34
|
-
export const PLUGIN_STAGING_CLEANUP_EVERY_MS = 3_600_000;
|
|
35
|
-
/**
|
|
36
|
-
* 删除已过期(`expires_at < now()`)的输出存档,每批 `batch` 行,直到删完;返回删除的总行数。
|
|
37
|
-
* 每批一条独立语句(不开长事务);多个 worker 同时清理时 `SKIP LOCKED` 互不等待。
|
|
38
|
-
*/
|
|
39
|
-
export async function deleteExpiredOutputs(db, batch = OUTPUT_CLEANUP_BATCH) {
|
|
40
|
-
let total = 0;
|
|
41
|
-
for (;;) {
|
|
42
|
-
const r = await db
|
|
43
|
-
.deleteFrom("tool_outputs")
|
|
44
|
-
.where("id", "in", db
|
|
45
|
-
.selectFrom("tool_outputs")
|
|
46
|
-
.select("id")
|
|
47
|
-
.where("expires_at", "<", sql `now()`)
|
|
48
|
-
.limit(batch)
|
|
49
|
-
.forUpdate()
|
|
50
|
-
.skipLocked())
|
|
51
|
-
.executeTakeFirst();
|
|
52
|
-
const n = Number(r.numDeletedRows);
|
|
53
|
-
total += n;
|
|
54
|
-
if (n < batch)
|
|
55
|
-
return total;
|
|
56
|
-
}
|
|
57
|
-
}
|
|
58
|
-
/**
|
|
59
|
-
* 维护队列的生产方与(worker 角色上的)唯一 Worker。状态都在 Redis / PG,没有进程内定时器:
|
|
60
|
-
* 周期任务用 BullMQ job scheduler(`upsertJobScheduler` 幂等,多副本重复调用只有一个 scheduler)。
|
|
61
|
-
*/
|
|
62
|
-
export class Maintenance {
|
|
63
|
-
d;
|
|
44
|
+
let MaintenanceProcessor = class MaintenanceProcessor extends WorkerHost {
|
|
45
|
+
waits;
|
|
46
|
+
sandbox;
|
|
47
|
+
drift;
|
|
48
|
+
directory;
|
|
49
|
+
scheduled;
|
|
50
|
+
log;
|
|
64
51
|
queue;
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
this.
|
|
73
|
-
this.
|
|
74
|
-
const n = await deleteExpiredOutputs(d.db);
|
|
75
|
-
if (n > 0)
|
|
76
|
-
d.log.info("expired tool outputs deleted", { count: n });
|
|
77
|
-
});
|
|
78
|
-
}
|
|
79
|
-
/** 登记某个任务名的处理函数(构造期调用;Worker 启动前后都可)。 */
|
|
80
|
-
handle(name, fn) {
|
|
81
|
-
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;
|
|
82
61
|
}
|
|
83
|
-
/**
|
|
84
|
-
|
|
85
|
-
|
|
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);
|
|
86
69
|
}
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
await this.getQueue().add(name, data, opts);
|
|
90
|
-
}
|
|
91
|
-
/** 登记周期任务的 job scheduler(幂等;worker 角色启动时调用)。 */
|
|
92
|
-
async ensureSchedules() {
|
|
93
|
-
await this.getQueue().upsertJobScheduler(OUTPUT_CLEANUP_SCHEDULER_ID, { every: OUTPUT_CLEANUP_EVERY_MS }, {
|
|
94
|
-
name: OUTPUT_CLEANUP_JOB,
|
|
95
|
-
data: {},
|
|
96
|
-
opts: { removeOnComplete: true, removeOnFail: 100 },
|
|
97
|
-
});
|
|
98
|
-
for (const s of this.schedules) {
|
|
99
|
-
await this.getQueue().upsertJobScheduler(s.id, { every: s.everyMs() }, { name: s.name, data: {}, opts: { removeOnComplete: true, removeOnFail: 100 } });
|
|
100
|
-
}
|
|
70
|
+
process(job, token) {
|
|
71
|
+
return runJob(MAINTENANCE_QUEUE_NAME, job, () => this.dispatch(job, token));
|
|
101
72
|
}
|
|
102
|
-
/**
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
return;
|
|
106
|
-
this.workerConn = bullConnection(this.d.redisUrl, this.d.log);
|
|
107
|
-
this.worker = new Worker(MAINTENANCE_QUEUE_NAME, (job, token) => this.process(job, token), {
|
|
108
|
-
connection: this.workerConn,
|
|
109
|
-
concurrency: 5,
|
|
110
|
-
});
|
|
111
|
-
this.worker.on("error", (err) => this.d.log.error("maintenance worker error", { err }));
|
|
112
|
-
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));
|
|
113
76
|
}
|
|
114
|
-
async
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
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 });
|
|
125
97
|
}
|
|
126
|
-
this.workerConn = undefined;
|
|
127
|
-
this.queueConn = undefined;
|
|
128
98
|
}
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
throw new Error("maintenance queue is closed");
|
|
132
|
-
if (!this.queue) {
|
|
133
|
-
this.queueConn = bullConnection(this.d.redisUrl, this.d.log);
|
|
134
|
-
this.queue = new Queue(MAINTENANCE_QUEUE_NAME, { connection: this.queueConn });
|
|
135
|
-
this.queue.on("error", (err) => this.d.log.error("maintenance queue error", { err }));
|
|
136
|
-
}
|
|
137
|
-
return this.queue;
|
|
99
|
+
failed(job, err) {
|
|
100
|
+
this.log.error("maintenance job failed", { name: job?.name, jobId: job?.id, err });
|
|
138
101
|
}
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
if (!fn) {
|
|
142
|
-
this.d.log.warn("unknown maintenance job", { name: job.name, jobId: job.id });
|
|
143
|
-
return;
|
|
144
|
-
}
|
|
145
|
-
await fn(job, token);
|
|
102
|
+
error(err) {
|
|
103
|
+
this.log.error("maintenance worker error", { err });
|
|
146
104
|
}
|
|
147
|
-
}
|
|
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)。未提供时媒体引用一律按「不再可用」处理。
|
|
@@ -1,12 +1,8 @@
|
|
|
1
1
|
import { isModelError, isRetryableKind, ModelError, sanitizeParams, } from "@capybara-hq/plugin-sdk";
|
|
2
|
-
import { sql } from "kysely";
|
|
3
2
|
import { MEDIA_EXCLUDED_MAX_IDS } from "../conversations/events.js";
|
|
4
3
|
import { ApiError } from "../errors.js";
|
|
5
|
-
import { usageTokens } from "../evals/budget.js";
|
|
6
4
|
import { ExtensionUnloadedError } from "../extensions/inflight.js";
|
|
7
|
-
import { audit } from "../identity/audit.js";
|
|
8
5
|
import { hasInvocation, skillLoadOffered } from "../skills/catalog.js";
|
|
9
|
-
import { recordToolSpecs } from "../tools/specs.js";
|
|
10
6
|
import { buildModelRequest, latestSummary, mediaRefs, planMedia, } from "./context/build.js";
|
|
11
7
|
import { acceptSummary, buildCompactionRequest, compactionBackoff, compactionPlan, shouldCompact, } from "./context/compaction.js";
|
|
12
8
|
import { guardToolPairs } from "./context/pairing.js";
|
|
@@ -114,7 +110,7 @@ async function runStep(deps, input, wrapUp) {
|
|
|
114
110
|
}
|
|
115
111
|
return existing;
|
|
116
112
|
}
|
|
117
|
-
const runtime = deps.config().runtime;
|
|
113
|
+
const runtime = deps.config.get().runtime;
|
|
118
114
|
/** 本次尝试已流出的文本;中止时写进 aborted 的 assistant_message。 */
|
|
119
115
|
const streamed = { text: "" };
|
|
120
116
|
try {
|
|
@@ -145,7 +141,7 @@ async function runStep(deps, input, wrapUp) {
|
|
|
145
141
|
looked: new Set(),
|
|
146
142
|
info: new Map(),
|
|
147
143
|
bytes: new Map(),
|
|
148
|
-
run: input.mediaCache ?? new MediaCache(deps.config().attachments.requestMediaBytes),
|
|
144
|
+
run: input.mediaCache ?? new MediaCache(deps.config.get().attachments.requestMediaBytes),
|
|
149
145
|
},
|
|
150
146
|
};
|
|
151
147
|
const beforeCompaction = events.length;
|
|
@@ -240,29 +236,7 @@ async function appendCounted(deps, input, events) {
|
|
|
240
236
|
const { conversationId, parentRunId } = input;
|
|
241
237
|
if (parentRunId === undefined)
|
|
242
238
|
return deps.eventLog.append(conversationId, events);
|
|
243
|
-
const out = await deps.
|
|
244
|
-
// the conversation row lock the append takes anyway, taken first to read the seq before it
|
|
245
|
-
const before = await t
|
|
246
|
-
.selectFrom("conversations")
|
|
247
|
-
.select("last_seq")
|
|
248
|
-
.where("id", "=", conversationId)
|
|
249
|
-
.forUpdate()
|
|
250
|
-
.executeTakeFirstOrThrow();
|
|
251
|
-
const written = await deps.eventLog.append(conversationId, events, t);
|
|
252
|
-
const fresh = written.filter((e) => e.seq > Number(before.last_seq));
|
|
253
|
-
let tokens = 0;
|
|
254
|
-
for (const e of fresh)
|
|
255
|
-
if (e.type === "usage")
|
|
256
|
-
tokens += usageTokens(e.payload);
|
|
257
|
-
if (tokens > 0) {
|
|
258
|
-
await t
|
|
259
|
-
.updateTable("runs")
|
|
260
|
-
.set({ subagent_tokens_used: sql `subagent_tokens_used + ${tokens}` })
|
|
261
|
-
.where("id", "=", parentRunId)
|
|
262
|
-
.execute();
|
|
263
|
-
}
|
|
264
|
-
return { written, toSeq: fresh.length > 0 ? Math.max(...fresh.map((e) => e.seq)) : null };
|
|
265
|
-
});
|
|
239
|
+
const out = await deps.stepLog.appendCounted(conversationId, parentRunId, events);
|
|
266
240
|
if (out.toSeq !== null)
|
|
267
241
|
await deps.eventLog.notify(conversationId, out.toSeq);
|
|
268
242
|
return out.written;
|
|
@@ -401,7 +375,7 @@ function buildRequest(deps, events, input, info, params, runtime, tools, wrapUp)
|
|
|
401
375
|
...(wrapUp && { toolChoice: "none" }),
|
|
402
376
|
mediaInfo: tools.media.info,
|
|
403
377
|
media: tools.media.bytes,
|
|
404
|
-
mediaBudgetBytes: deps.config().attachments.requestMediaBytes,
|
|
378
|
+
mediaBudgetBytes: deps.config.get().attachments.requestMediaBytes,
|
|
405
379
|
defaultMaxOutputTokens: runtime.maxOutputTokens,
|
|
406
380
|
});
|
|
407
381
|
return {
|
|
@@ -434,7 +408,7 @@ async function loadMedia(deps, input, events, info, tools) {
|
|
|
434
408
|
for (const id of look)
|
|
435
409
|
cache.looked.add(id);
|
|
436
410
|
}
|
|
437
|
-
const budget = deps.config().attachments.requestMediaBytes;
|
|
411
|
+
const budget = deps.config.get().attachments.requestMediaBytes;
|
|
438
412
|
const plan = planMedia(events, info, cache.info, budget);
|
|
439
413
|
const runKey = (id) => MediaCache.key(id, cache.info.get(id), plan.caps.get(id));
|
|
440
414
|
const need = [];
|
|
@@ -589,11 +563,7 @@ async function maybeCompact(deps, input, events, runtime, tools) {
|
|
|
589
563
|
plugin: verdict.plugin,
|
|
590
564
|
cause: verdict.cause,
|
|
591
565
|
});
|
|
592
|
-
const written = await deps.
|
|
593
|
-
const out = await deps.eventLog.append(conversationId, [failed], t);
|
|
594
|
-
await audit(t, entry);
|
|
595
|
-
return out;
|
|
596
|
-
});
|
|
566
|
+
const written = await deps.stepLog.appendAudited(conversationId, [failed], entry);
|
|
597
567
|
if (written.length > 0) {
|
|
598
568
|
await deps.eventLog.notify(conversationId, Math.max(...written.map((e) => e.seq)));
|
|
599
569
|
}
|
|
@@ -783,29 +753,26 @@ async function ladder(deps, input, events, runtime, tools, wrapUp, streamed) {
|
|
|
783
753
|
// 请求里的工具定义(含目录里的)按指纹存进 tool_specs,与 model_call 同一事务
|
|
784
754
|
// (请求可由日志 + tool_specs 还原)
|
|
785
755
|
const sent = new Set([...meta.tools, ...(meta.catalog ?? [])].map((t) => t.specHash));
|
|
786
|
-
const written = await deps.
|
|
787
|
-
|
|
788
|
-
|
|
789
|
-
|
|
790
|
-
|
|
791
|
-
|
|
792
|
-
|
|
793
|
-
|
|
794
|
-
|
|
795
|
-
|
|
796
|
-
|
|
797
|
-
|
|
798
|
-
|
|
799
|
-
|
|
800
|
-
|
|
801
|
-
|
|
802
|
-
...(params.dropped.length > 0 && { droppedParams: params.dropped }),
|
|
803
|
-
estimatedInputTokens: estimate,
|
|
804
|
-
},
|
|
756
|
+
const written = await deps.stepLog.appendWithSpecs(conversationId, tools.list.filter((x) => sent.has(x.specHash)), [
|
|
757
|
+
{
|
|
758
|
+
type: "model_call",
|
|
759
|
+
runId,
|
|
760
|
+
idemKey: idem.modelCall(runId, step, attempt),
|
|
761
|
+
payload: {
|
|
762
|
+
step,
|
|
763
|
+
attempt,
|
|
764
|
+
provider: rung.ref.provider,
|
|
765
|
+
model: rung.ref.model,
|
|
766
|
+
fallback: rung.fallback,
|
|
767
|
+
request: {
|
|
768
|
+
...meta,
|
|
769
|
+
maxOutputTokens: request.maxOutputTokens,
|
|
770
|
+
...(params.dropped.length > 0 && { droppedParams: params.dropped }),
|
|
771
|
+
estimatedInputTokens: estimate,
|
|
805
772
|
},
|
|
806
773
|
},
|
|
807
|
-
|
|
808
|
-
|
|
774
|
+
},
|
|
775
|
+
]);
|
|
809
776
|
await deps.eventLog.notify(conversationId, Math.max(...written.map((e) => e.seq)));
|
|
810
777
|
sentAt = Date.now();
|
|
811
778
|
const outcome = await consumeModelStream(provider, request, info.streamIdleTimeoutMs ?? runtime.streamIdleMs, signal, (ev) => {
|
|
@@ -2,8 +2,11 @@ import { type ExtensionPointRef, type Logger, type ModelInfo, type ModelProvider
|
|
|
2
2
|
import type { Redis } from "ioredis";
|
|
3
3
|
import type { ModelRef } from "../agents/definition.js";
|
|
4
4
|
import { ApiError } from "../errors.js";
|
|
5
|
+
import { CacheService } from "../infra/cache/cache.service.js";
|
|
5
6
|
/** 单个供应商 `listModels()` 的时限(毫秒):一个卡住的供应商不拖住整个列表与解析。 */
|
|
6
7
|
export declare const LIST_MODELS_TIMEOUT_MS = 10000;
|
|
8
|
+
/** Optional provider: the `listModels()` time limit (ms) instead of {@link LIST_MODELS_TIMEOUT_MS} (tests). */
|
|
9
|
+
export declare const LIST_MODELS_TIMEOUT: unique symbol;
|
|
7
10
|
/**
|
|
8
11
|
* 列表视图(后台模型页、组织模型页)里列模型失败的供应商在这么多秒内直接标 error、不再请求(Redis,多副本共享)。
|
|
9
12
|
* 只用于列表;`resolve`(运行时)照常每次请求,失败由降级梯子重试。
|
|
@@ -48,22 +51,27 @@ export declare function adaptModelProviderV1(impl: ModelProviderV1): ModelProvid
|
|
|
48
51
|
* 同时支持 `model-provider@1`(经 {@link adaptModelProviderV1} 适配)与 `@2`;
|
|
49
52
|
* 同一插件两者都提供时用 `@2`。`@2` 的 `listModels()` 结果先过 `assertValidDeclarations`,
|
|
50
53
|
* 不合规的供应商不可用(不可重试)。
|
|
51
|
-
*
|
|
52
|
-
*
|
|
54
|
+
* Each provider's model list (`@2`-shaped) is cached in Redis (`@Cacheable`, key
|
|
55
|
+
* `cache:capk:models:<provider>:v<major>:<plugin version>:<config digest>`, 600 s), never in
|
|
56
|
+
* process memory: every replica shares it.
|
|
53
57
|
*/
|
|
54
58
|
export declare class ProviderRegistry {
|
|
55
59
|
private readonly host;
|
|
60
|
+
readonly cacheService: CacheService;
|
|
56
61
|
private readonly kv;
|
|
57
62
|
private readonly log?;
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
63
|
+
/** The `listModels()` time limit. */
|
|
64
|
+
private readonly listTimeoutMs;
|
|
65
|
+
constructor(host: ProviderHost, cacheService: CacheService, kv: Redis, log?: Pick<Logger, "warn"> | undefined,
|
|
66
|
+
/** The `listModels()` time limit. */
|
|
67
|
+
listTimeoutMs?: number);
|
|
62
68
|
/** `listModels()` 加时限(到时按失败处理,供应商的调用留在后台、结果丢弃)。 */
|
|
63
69
|
private listModelsWithTimeout;
|
|
64
70
|
/** 每个插件取一个实现(`@2` 优先),按插件首次出现的顺序;不支持的主版本记 warn 后忽略。 */
|
|
65
71
|
private providers;
|
|
66
72
|
private models;
|
|
73
|
+
/** The provider's validated model list, cached under `key` (see {@link modelsKey}). */
|
|
74
|
+
private validatedModels;
|
|
67
75
|
/** 每个已安装供应商及其模型(按插件加载顺序);列模型失败或声明不合规的供应商跳过并记 warn。 */
|
|
68
76
|
list(): Promise<{
|
|
69
77
|
provider: string;
|
|
@@ -84,3 +92,6 @@ export declare class ProviderRegistry {
|
|
|
84
92
|
info: ModelInfo;
|
|
85
93
|
}>;
|
|
86
94
|
}
|
|
95
|
+
/** The model provider registry (one instance; the models and agents domains read it). */
|
|
96
|
+
export declare class ProvidersModule {
|
|
97
|
+
}
|