@capybara-hq/kernel 0.1.0-rc.0 → 0.1.0-rc.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/bootstrap.json +10 -6
- package/dist/admin/admin.controller.d.ts +17 -17
- package/dist/admin/admin.controller.js +43 -26
- package/dist/admin/admin.module.d.ts +3 -0
- package/dist/admin/admin.module.js +22 -0
- package/dist/admin/extensions.controller.d.ts +14 -14
- package/dist/admin/extensions.controller.js +30 -17
- package/dist/admin/setup-lock.d.ts +16 -0
- package/dist/admin/setup-lock.js +47 -0
- package/dist/admin/setup.controller.d.ts +8 -8
- package/dist/admin/setup.controller.js +27 -25
- package/dist/admin/setup.service.d.ts +19 -27
- package/dist/admin/setup.service.js +61 -61
- package/dist/agents/agent-lookup.d.ts +53 -0
- package/dist/agents/agent-lookup.js +179 -0
- package/dist/agents/agents.controller.d.ts +1 -1
- package/dist/agents/agents.controller.js +14 -8
- package/dist/agents/agents.module.d.ts +7 -0
- package/dist/agents/agents.module.js +41 -0
- package/dist/agents/agents.service.d.ts +39 -58
- package/dist/agents/agents.service.js +261 -329
- package/dist/agents/definition.d.ts +8 -0
- package/dist/agents/definition.js +8 -0
- package/dist/agents/models.controller.d.ts +1 -1
- package/dist/agents/models.controller.js +2 -2
- package/dist/agents/templates.controller.d.ts +1 -1
- package/dist/agents/templates.controller.js +2 -2
- package/dist/agents/templates.d.ts +6 -8
- package/dist/agents/templates.js +20 -4
- package/dist/app.d.ts +93 -0
- package/dist/app.js +150 -0
- package/dist/catalog/admin-catalog.controller.d.ts +3 -3
- package/dist/catalog/admin-catalog.controller.js +27 -13
- package/dist/catalog/catalog-content.d.ts +185 -0
- package/dist/catalog/catalog-content.js +323 -0
- package/dist/catalog/catalog-items.d.ts +186 -0
- package/dist/catalog/catalog-items.js +410 -0
- package/dist/catalog/catalog.module.d.ts +14 -0
- package/dist/catalog/catalog.module.js +71 -0
- package/dist/catalog/catalog.service.d.ts +34 -188
- package/dist/catalog/catalog.service.js +155 -489
- package/dist/catalog/cli.d.ts +3 -2
- package/dist/catalog/cli.js +13 -31
- package/dist/catalog/job-ids.d.ts +15 -0
- package/dist/catalog/job-ids.js +15 -0
- package/dist/catalog/jobs.d.ts +27 -0
- package/dist/catalog/jobs.js +70 -0
- package/dist/catalog/locks.d.ts +24 -0
- package/dist/catalog/locks.js +63 -0
- package/dist/catalog/marketplaces.controller.d.ts +4 -4
- package/dist/catalog/marketplaces.controller.js +22 -11
- package/dist/catalog/marketplaces.service.d.ts +30 -13
- package/dist/catalog/marketplaces.service.js +330 -256
- package/dist/catalog/org-catalog.controller.d.ts +4 -3
- package/dist/catalog/org-catalog.controller.js +29 -14
- package/dist/catalog/org-catalog.service.d.ts +32 -198
- package/dist/catalog/org-catalog.service.js +159 -400
- package/dist/catalog/plugin-import.d.ts +73 -34
- package/dist/catalog/plugin-import.js +356 -217
- package/dist/catalog/plugin-install.d.ts +83 -41
- package/dist/catalog/plugin-install.js +421 -269
- package/dist/catalog/plugin-upgrade.d.ts +59 -4
- package/dist/catalog/plugin-upgrade.js +407 -282
- package/dist/catalog/requests.service.d.ts +27 -15
- package/dist/catalog/requests.service.js +201 -145
- package/dist/catalog/upgrade-targets.d.ts +4 -7
- package/dist/channels/actions.d.ts +6 -4
- package/dist/channels/actions.js +1 -1
- package/dist/channels/cards.d.ts +2 -2
- package/dist/channels/channels.module.d.ts +40 -0
- package/dist/channels/channels.module.js +128 -0
- package/dist/channels/connections.controller.d.ts +1 -1
- package/dist/channels/connections.controller.js +11 -6
- package/dist/channels/connections.service.d.ts +43 -21
- package/dist/channels/connections.service.js +236 -131
- package/dist/channels/inbound.d.ts +34 -38
- package/dist/channels/inbound.js +107 -41
- package/dist/channels/job-ids.d.ts +10 -0
- package/dist/channels/job-ids.js +10 -0
- package/dist/channels/jobs.d.ts +85 -0
- package/dist/channels/jobs.js +157 -0
- package/dist/channels/outbound.d.ts +60 -82
- package/dist/channels/outbound.js +165 -193
- package/dist/channels/supervisor.d.ts +88 -46
- package/dist/channels/supervisor.js +230 -132
- package/dist/channels/threads.d.ts +29 -8
- package/dist/channels/threads.js +71 -13
- package/dist/channels/webhook.d.ts +20 -14
- package/dist/channels/webhook.js +51 -20
- package/dist/config/load.d.ts +3 -2
- package/dist/config/load.js +3 -2
- package/dist/config/nacos-source.js +11 -2
- package/dist/config/schema.d.ts +16 -1
- package/dist/config/schema.js +54 -7
- package/dist/conversations/access.d.ts +29 -0
- package/dist/conversations/access.js +86 -0
- package/dist/conversations/artifacts.d.ts +10 -10
- package/dist/conversations/artifacts.js +35 -9
- package/dist/conversations/attachments.controller.d.ts +1 -1
- package/dist/conversations/attachments.controller.js +8 -6
- package/dist/conversations/attachments.module.d.ts +7 -0
- package/dist/conversations/attachments.module.js +25 -0
- package/dist/conversations/attachments.service.d.ts +30 -22
- package/dist/conversations/attachments.service.js +119 -46
- package/dist/conversations/conversations.controller.d.ts +8 -7
- package/dist/conversations/conversations.controller.js +59 -29
- package/dist/conversations/conversations.module.d.ts +8 -0
- package/dist/conversations/conversations.module.js +69 -0
- package/dist/conversations/conversations.service.d.ts +40 -38
- package/dist/conversations/conversations.service.js +130 -140
- package/dist/conversations/event-log.d.ts +28 -18
- package/dist/conversations/event-log.js +74 -27
- package/dist/conversations/files.d.ts +10 -10
- package/dist/conversations/files.js +37 -11
- package/dist/conversations/idem-keys.d.ts +5 -0
- package/dist/conversations/idem-keys.js +5 -0
- package/dist/conversations/job-ids.d.ts +6 -0
- package/dist/conversations/job-ids.js +6 -0
- package/dist/conversations/outputs-read.d.ts +11 -11
- package/dist/conversations/outputs-read.js +31 -7
- package/dist/conversations/queue.d.ts +48 -56
- package/dist/conversations/queue.js +13 -289
- package/dist/conversations/queue.service.d.ts +60 -0
- package/dist/conversations/queue.service.js +343 -0
- package/dist/conversations/sandbox-status.d.ts +13 -10
- package/dist/conversations/sandbox-status.js +36 -8
- package/dist/conversations/titles.d.ts +71 -24
- package/dist/conversations/titles.js +159 -62
- package/dist/ctx/bus.js +9 -3
- package/dist/ctx/create-ctx.d.ts +6 -0
- package/dist/ctx/create-ctx.js +7 -9
- package/dist/ctx/lock.d.ts +7 -3
- package/dist/ctx/lock.js +9 -20
- package/dist/ctx/queue.js +3 -2
- package/dist/ctx/secrets.d.ts +10 -2
- package/dist/ctx/secrets.js +7 -3
- package/dist/db/kernel-schema.d.ts +2 -2
- package/dist/db/pool.d.ts +5 -0
- package/dist/db/pool.js +1 -0
- package/dist/errors.d.ts +2 -0
- package/dist/errors.js +2 -0
- package/dist/evals/budget.d.ts +42 -21
- package/dist/evals/budget.js +114 -62
- package/dist/evals/evals.module.d.ts +31 -0
- package/dist/evals/evals.module.js +114 -0
- package/dist/evals/jobs.d.ts +20 -0
- package/dist/evals/jobs.js +45 -0
- package/dist/evals/run-replay.d.ts +56 -8
- package/dist/evals/run-replay.js +140 -80
- package/dist/evals/runs.controller.d.ts +1 -1
- package/dist/evals/runs.controller.js +17 -8
- package/dist/evals/runs.service.d.ts +23 -45
- package/dist/evals/runs.service.js +245 -234
- package/dist/evals/sets.controller.d.ts +1 -1
- package/dist/evals/sets.controller.js +17 -8
- package/dist/evals/sets.service.d.ts +22 -6
- package/dist/evals/sets.service.js +248 -194
- package/dist/evals/snapshot.d.ts +2 -2
- package/dist/evals/step-replay.d.ts +2 -2
- package/dist/evals/step-replay.js +1 -1
- package/dist/evals/trajectory.controller.d.ts +1 -1
- package/dist/evals/trajectory.controller.js +11 -7
- package/dist/evals/trajectory.service.d.ts +5 -4
- package/dist/evals/trajectory.service.js +30 -7
- package/dist/evals/worker.d.ts +44 -27
- package/dist/evals/worker.js +220 -120
- package/dist/extensions/admin-ops.d.ts +61 -33
- package/dist/extensions/admin-ops.js +248 -154
- package/dist/extensions/admin-view.d.ts +38 -27
- package/dist/extensions/admin-view.js +126 -55
- package/dist/extensions/approvals.d.ts +12 -8
- package/dist/extensions/approvals.js +73 -46
- package/dist/extensions/blobs.d.ts +27 -10
- package/dist/extensions/blobs.js +111 -45
- package/dist/extensions/bootstrap.d.ts +96 -42
- package/dist/extensions/bootstrap.js +303 -155
- package/dist/extensions/cli.d.ts +20 -10
- package/dist/extensions/cli.js +41 -96
- package/dist/extensions/config-issues.d.ts +7 -0
- package/dist/extensions/config-issues.js +31 -0
- package/dist/extensions/deployment-config-store.d.ts +49 -0
- package/dist/extensions/deployment-config-store.js +133 -0
- package/dist/extensions/deployment-config.d.ts +58 -67
- package/dist/extensions/deployment-config.js +202 -230
- package/dist/extensions/enabled.d.ts +5 -5
- package/dist/extensions/extensions.module.d.ts +8 -0
- package/dist/extensions/extensions.module.js +77 -0
- package/dist/extensions/hooks.d.ts +3 -2
- package/dist/extensions/hooks.js +1 -1
- package/dist/extensions/host.d.ts +72 -68
- package/dist/extensions/host.js +191 -152
- package/dist/extensions/installs.d.ts +49 -16
- package/dist/extensions/installs.js +128 -32
- package/dist/extensions/job-ids.d.ts +6 -0
- package/dist/extensions/job-ids.js +6 -0
- package/dist/extensions/lifecycle-topics.d.ts +18 -0
- package/dist/extensions/lifecycle-topics.js +18 -0
- package/dist/extensions/lifecycle.d.ts +35 -47
- package/dist/extensions/lifecycle.js +103 -39
- package/dist/extensions/locks.d.ts +33 -0
- package/dist/extensions/locks.js +86 -0
- package/dist/extensions/migrate-lock.d.ts +3 -4
- package/dist/extensions/org-config.controller.d.ts +1 -1
- package/dist/extensions/org-config.controller.js +8 -5
- package/dist/extensions/org-config.d.ts +48 -46
- package/dist/extensions/org-config.js +284 -226
- package/dist/extensions/registry.d.ts +50 -2
- package/dist/extensions/registry.js +89 -4
- package/dist/extensions/sources.d.ts +12 -8
- package/dist/extensions/sources.js +34 -13
- package/dist/files/files.module.d.ts +3 -0
- package/dist/files/files.module.js +22 -0
- package/dist/files/previewers.controller.d.ts +7 -2
- package/dist/files/previewers.controller.js +17 -9
- package/dist/files/previewers.d.ts +13 -18
- package/dist/files/previewers.js +83 -36
- package/dist/http/adapter.d.ts +3 -0
- package/dist/http/adapter.js +25 -0
- package/dist/http/api.module.d.ts +3 -110
- package/dist/http/api.module.js +47 -355
- package/dist/http/app.d.ts +11 -15
- package/dist/http/app.js +52 -47
- package/dist/http/error-filter.module.d.ts +5 -0
- package/dist/http/error-filter.module.js +18 -0
- package/dist/http/error.filter.js +2 -2
- package/dist/identity/accounts.d.ts +82 -29
- package/dist/identity/accounts.js +294 -175
- package/dist/identity/api-tokens.d.ts +11 -7
- package/dist/identity/api-tokens.js +71 -44
- package/dist/identity/audit.d.ts +7 -4
- package/dist/identity/audit.js +5 -1
- package/dist/identity/auth.controller.d.ts +11 -10
- package/dist/identity/auth.controller.js +31 -25
- package/dist/identity/auth.guard.d.ts +3 -3
- package/dist/identity/auth.guard.js +6 -4
- package/dist/identity/binding.d.ts +9 -11
- package/dist/identity/binding.js +41 -13
- package/dist/identity/enterprise-admin.d.ts +18 -12
- package/dist/identity/enterprise-admin.js +67 -13
- package/dist/identity/external-identity-lock.d.ts +17 -0
- package/dist/identity/external-identity-lock.js +39 -0
- package/dist/identity/external.d.ts +19 -15
- package/dist/identity/external.js +163 -125
- package/dist/identity/identity.module.d.ts +6 -0
- package/dist/identity/identity.module.js +56 -0
- package/dist/identity/me.controller.d.ts +16 -15
- package/dist/identity/me.controller.js +37 -31
- package/dist/identity/sessions.d.ts +12 -10
- package/dist/identity/sessions.js +74 -42
- package/dist/identity/settings.d.ts +20 -14
- package/dist/identity/settings.js +85 -57
- package/dist/identity/sso.controller.d.ts +7 -7
- package/dist/identity/sso.controller.js +13 -9
- package/dist/identity/sso.d.ts +9 -12
- package/dist/identity/sso.js +54 -24
- package/dist/inbox/inbox.module.d.ts +3 -0
- package/dist/inbox/inbox.module.js +22 -0
- package/dist/inbox/inbox.service.d.ts +7 -9
- package/dist/inbox/inbox.service.js +32 -11
- package/dist/index.d.ts +19 -12
- package/dist/index.js +13 -8
- package/dist/infra/cache/cache.module.d.ts +3 -0
- package/dist/infra/cache/cache.module.js +16 -0
- package/dist/infra/cache/cache.service.d.ts +21 -0
- package/dist/infra/cache/cache.service.js +80 -0
- package/dist/infra/cache/cacheable.decorator.d.ts +32 -0
- package/dist/infra/cache/cacheable.decorator.js +83 -0
- package/dist/infra/cli/kernel-cli.module.d.ts +66 -0
- package/dist/infra/cli/kernel-cli.module.js +165 -0
- package/dist/infra/close-within.d.ts +15 -0
- package/dist/infra/close-within.js +36 -0
- package/dist/infra/config/config.module.d.ts +13 -0
- package/dist/infra/config/config.module.js +39 -0
- package/dist/infra/config/kernel-config.service.d.ts +25 -0
- package/dist/infra/config/kernel-config.service.js +126 -0
- package/dist/infra/database/after-commit.d.ts +6 -0
- package/dist/infra/database/after-commit.js +9 -0
- package/dist/infra/database/database.module.d.ts +25 -0
- package/dist/infra/database/database.module.js +90 -0
- package/dist/infra/database/kernel-db.d.ts +22 -0
- package/dist/infra/database/kernel-db.js +65 -0
- package/dist/infra/database/transaction-host.d.ts +50 -0
- package/dist/infra/database/transaction-host.js +125 -0
- package/dist/infra/database/transactional.decorator.d.ts +15 -0
- package/dist/infra/database/transactional.decorator.js +27 -0
- package/dist/infra/database/xact-lock.d.ts +17 -0
- package/dist/infra/database/xact-lock.js +43 -0
- package/dist/infra/events/kernel-events.d.ts +96 -0
- package/dist/infra/events/kernel-events.js +65 -0
- package/dist/infra/health/health.controller.d.ts +26 -0
- package/dist/infra/health/health.controller.js +104 -0
- package/dist/infra/health/health.module.d.ts +9 -0
- package/dist/infra/health/health.module.js +24 -0
- package/dist/infra/health/health.options.d.ts +10 -0
- package/dist/infra/health/health.options.js +15 -0
- package/dist/infra/health/shutdown-state.d.ts +6 -0
- package/dist/infra/health/shutdown-state.js +2 -0
- package/dist/infra/lifecycle/graceful-shutdown.module.d.ts +6 -0
- package/dist/infra/lifecycle/graceful-shutdown.module.js +23 -0
- package/dist/infra/lifecycle/graceful-shutdown.service.d.ts +70 -0
- package/dist/infra/lifecycle/graceful-shutdown.service.js +135 -0
- package/dist/infra/lifecycle/process-guards.d.ts +52 -0
- package/dist/infra/lifecycle/process-guards.js +86 -0
- package/dist/infra/lifecycle/shutdown-signals.d.ts +30 -0
- package/dist/infra/lifecycle/shutdown-signals.js +48 -0
- package/dist/infra/lock/key-template.d.ts +13 -0
- package/dist/infra/lock/key-template.js +46 -0
- package/dist/infra/lock/lock.module.d.ts +3 -0
- package/dist/infra/lock/lock.module.js +16 -0
- package/dist/infra/lock/lock.service.d.ts +120 -0
- package/dist/infra/lock/lock.service.js +343 -0
- package/dist/infra/lock/shared-lease.d.ts +44 -0
- package/dist/infra/lock/shared-lease.js +121 -0
- package/dist/infra/lock/with-lock.decorator.d.ts +28 -0
- package/dist/infra/lock/with-lock.decorator.js +49 -0
- package/dist/infra/logging/logging.module.d.ts +16 -0
- package/dist/infra/logging/logging.module.js +34 -0
- package/dist/infra/queue/configured-processor.d.ts +18 -0
- package/dist/infra/queue/configured-processor.js +23 -0
- package/dist/infra/queue/job-failure.d.ts +18 -0
- package/dist/infra/queue/job-failure.js +26 -0
- package/dist/infra/queue/queue-shutdown.d.ts +27 -0
- package/dist/infra/queue/queue-shutdown.js +81 -0
- package/dist/infra/queue/queue.module.d.ts +16 -0
- package/dist/infra/queue/queue.module.js +61 -0
- package/dist/infra/queue/redis-connection.d.ts +7 -0
- package/dist/infra/queue/redis-connection.js +18 -0
- package/dist/infra/queue/retired-schedulers.d.ts +7 -0
- package/dist/infra/queue/retired-schedulers.js +9 -0
- package/dist/infra/queue/run-job.d.ts +16 -0
- package/dist/infra/queue/run-job.js +19 -0
- package/dist/infra/redis/redis.module.d.ts +24 -0
- package/dist/infra/redis/redis.module.js +87 -0
- package/dist/infra/schedule/cron-tick.d.ts +12 -0
- package/dist/infra/schedule/cron-tick.js +25 -0
- package/dist/infra/schedule/locked-cron.decorator.d.ts +27 -0
- package/dist/infra/schedule/locked-cron.decorator.js +53 -0
- package/dist/infra/schedule/locked-interval.d.ts +69 -0
- package/dist/infra/schedule/locked-interval.js +190 -0
- package/dist/infra/schedule/locked-tick.d.ts +90 -0
- package/dist/infra/schedule/locked-tick.js +137 -0
- package/dist/infra/schedule/schedule.module.d.ts +8 -0
- package/dist/infra/schedule/schedule.module.js +27 -0
- package/dist/infra/schedule/scheduled-runs.d.ts +69 -0
- package/dist/infra/schedule/scheduled-runs.js +163 -0
- package/dist/infra/swagger/swagger.d.ts +16 -0
- package/dist/infra/swagger/swagger.js +31 -0
- package/dist/infra/throttler/credential-throttler.d.ts +35 -0
- package/dist/infra/throttler/credential-throttler.js +77 -0
- package/dist/infra/throttler/named-throttlers.d.ts +31 -0
- package/dist/infra/throttler/named-throttlers.js +119 -0
- package/dist/infra/throttler/redis-throttler-storage.d.ts +38 -0
- package/dist/infra/throttler/redis-throttler-storage.js +130 -0
- package/dist/infra/throttler/throttler.guard.d.ts +23 -0
- package/dist/infra/throttler/throttler.guard.js +68 -0
- package/dist/infra/throttler/throttler.module.d.ts +15 -0
- package/dist/infra/throttler/throttler.module.js +53 -0
- package/dist/infra/tokens.d.ts +15 -0
- package/dist/infra/tokens.js +15 -0
- package/dist/infra/validation/create-zod-dto.d.ts +23 -0
- package/dist/infra/validation/create-zod-dto.js +35 -0
- package/dist/infra/validation/parse-with-zod.d.ts +7 -0
- package/dist/infra/validation/parse-with-zod.js +12 -0
- package/dist/infra/validation/validation.module.d.ts +3 -0
- package/dist/infra/validation/validation.module.js +16 -0
- package/dist/infra/validation/zod-params.d.ts +7 -0
- package/dist/infra/validation/zod-params.js +42 -0
- package/dist/infra/validation/zod-validation.pipe.d.ts +11 -0
- package/dist/infra/validation/zod-validation.pipe.js +31 -0
- package/dist/kernel.d.ts +9 -241
- package/dist/kernel.js +8 -1305
- package/dist/kernel.module.d.ts +17 -0
- package/dist/kernel.module.js +136 -0
- package/dist/lifecycle/kernel-lifecycle.d.ts +140 -0
- package/dist/lifecycle/kernel-lifecycle.js +451 -0
- package/dist/lifecycle/tokens.d.ts +3 -0
- package/dist/lifecycle/tokens.js +3 -0
- package/dist/log-config.d.ts +9 -0
- package/dist/log-config.js +27 -0
- package/dist/log-context.d.ts +34 -0
- package/dist/log-context.js +44 -0
- package/dist/log-loki.d.ts +34 -0
- package/dist/log-loki.js +145 -0
- package/dist/log.d.ts +41 -10
- package/dist/log.js +91 -17
- package/dist/models/models.module.d.ts +3 -0
- package/dist/models/models.module.js +24 -0
- package/dist/models/prices.d.ts +8 -2
- package/dist/models/prices.js +65 -37
- package/dist/models/purposes.controller.d.ts +1 -1
- package/dist/models/purposes.controller.js +5 -6
- package/dist/models/purposes.d.ts +35 -13
- package/dist/models/purposes.js +101 -51
- package/dist/net/public-address.js +3 -2
- package/dist/orgs/directory-sync.controller.d.ts +1 -1
- package/dist/orgs/directory-sync.controller.js +2 -2
- package/dist/orgs/directory-sync.d.ts +61 -31
- package/dist/orgs/directory-sync.js +212 -125
- package/dist/orgs/invitations.controller.d.ts +8 -8
- package/dist/orgs/invitations.controller.js +27 -26
- package/dist/orgs/invitations.service.d.ts +12 -9
- package/dist/orgs/invitations.service.js +130 -92
- package/dist/orgs/job-ids.d.ts +8 -0
- package/dist/orgs/job-ids.js +8 -0
- package/dist/orgs/members.service.d.ts +19 -12
- package/dist/orgs/members.service.js +161 -117
- package/dist/orgs/offboarding.d.ts +54 -57
- package/dist/orgs/offboarding.js +161 -71
- package/dist/orgs/org-lock.d.ts +28 -19
- package/dist/orgs/org-lock.js +81 -35
- package/dist/orgs/org.guard.d.ts +1 -1
- package/dist/orgs/org.guard.js +2 -2
- package/dist/orgs/orgs.controller.d.ts +13 -13
- package/dist/orgs/orgs.controller.js +29 -17
- package/dist/orgs/orgs.module.d.ts +6 -0
- package/dist/orgs/orgs.module.js +68 -0
- package/dist/orgs/orgs.service.d.ts +30 -19
- package/dist/orgs/orgs.service.js +139 -86
- package/dist/orgs/settings.controller.d.ts +1 -1
- package/dist/orgs/settings.controller.js +8 -6
- package/dist/orgs/settings.service.d.ts +14 -8
- package/dist/orgs/settings.service.js +75 -46
- package/dist/overrides.d.ts +56 -0
- package/dist/overrides.js +30 -0
- package/dist/roles/gateway-role.d.ts +43 -0
- package/dist/roles/gateway-role.js +98 -0
- package/dist/roles/gateway.module.d.ts +8 -0
- package/dist/roles/gateway.module.js +28 -0
- package/dist/roles/worker-role.d.ts +63 -0
- package/dist/roles/worker-role.js +144 -0
- package/dist/roles/worker.module.d.ts +14 -0
- package/dist/roles/worker.module.js +90 -0
- package/dist/runtime/abort.js +19 -2
- package/dist/runtime/checkpointer.d.ts +8 -3
- package/dist/runtime/checkpointer.js +87 -55
- package/dist/runtime/conversation-lock.d.ts +20 -11
- package/dist/runtime/conversation-lock.js +62 -72
- package/dist/runtime/hook-calls.d.ts +3 -3
- package/dist/runtime/hook-calls.js +1 -6
- package/dist/runtime/job-ids.d.ts +10 -0
- package/dist/runtime/job-ids.js +10 -0
- package/dist/runtime/langgraph-loop.js +1 -1
- package/dist/runtime/loop.d.ts +7 -0
- package/dist/runtime/loop.js +14 -0
- package/dist/runtime/maintenance-queue.d.ts +10 -0
- package/dist/runtime/maintenance-queue.js +10 -0
- package/dist/runtime/maintenance.d.ts +45 -74
- package/dist/runtime/maintenance.js +139 -136
- package/dist/runtime/model-call.d.ts +7 -4
- package/dist/runtime/model-call.js +24 -57
- package/dist/runtime/providers.d.ts +17 -6
- package/dist/runtime/providers.js +66 -25
- package/dist/runtime/quota.d.ts +17 -3
- package/dist/runtime/quota.js +27 -2
- package/dist/runtime/retired-schedulers.d.ts +7 -0
- package/dist/runtime/retired-schedulers.js +31 -0
- package/dist/runtime/run-control.d.ts +33 -0
- package/dist/runtime/run-control.js +77 -0
- package/dist/runtime/run-finish.d.ts +26 -17
- package/dist/runtime/run-finish.js +98 -51
- package/dist/runtime/run-jobs.d.ts +48 -0
- package/dist/runtime/run-jobs.js +95 -0
- package/dist/runtime/run-processors.d.ts +60 -0
- package/dist/runtime/run-processors.js +185 -0
- package/dist/runtime/run-queue.d.ts +32 -57
- package/dist/runtime/run-queue.js +291 -295
- package/dist/runtime/run-steps.d.ts +39 -0
- package/dist/runtime/run-steps.js +96 -0
- package/dist/runtime/run-worker.d.ts +121 -75
- package/dist/runtime/run-worker.js +340 -225
- package/dist/runtime/runtime.module.d.ts +10 -0
- package/dist/runtime/runtime.module.js +112 -0
- package/dist/runtime/step-log.d.ts +40 -0
- package/dist/runtime/step-log.js +94 -0
- package/dist/runtime/stream.controller.d.ts +5 -8
- package/dist/runtime/stream.controller.js +14 -12
- package/dist/runtime/stream.d.ts +24 -6
- package/dist/runtime/stream.js +78 -7
- package/dist/runtime/subagents/child.d.ts +3 -44
- package/dist/runtime/subagents/child.js +0 -79
- package/dist/runtime/subagents/definition.d.ts +4 -4
- package/dist/runtime/subagents/definition.js +2 -2
- package/dist/runtime/subagents/dispatch.d.ts +87 -6
- package/dist/runtime/subagents/dispatch.js +135 -140
- package/dist/runtime/subagents/limits.d.ts +9 -4
- package/dist/runtime/subagents/limits.js +4 -2
- package/dist/runtime/subagents/org-agents.d.ts +4 -4
- package/dist/runtime/subagents/org-agents.js +1 -1
- package/dist/runtime/subagents/progress.d.ts +2 -2
- package/dist/runtime/subagents/roster.d.ts +3 -3
- package/dist/runtime/subagents/roster.js +1 -1
- package/dist/runtime/subagents/skill-fork.d.ts +6 -7
- package/dist/runtime/subagents/skill-fork.js +16 -5
- package/dist/runtime/subagents/subagents.service.d.ts +40 -0
- package/dist/runtime/subagents/subagents.service.js +101 -0
- package/dist/runtime/usage-report.d.ts +94 -52
- package/dist/runtime/usage-report.js +200 -99
- package/dist/runtime/waits.d.ts +125 -57
- package/dist/runtime/waits.js +431 -208
- package/dist/sandbox/job-ids.d.ts +10 -0
- package/dist/sandbox/job-ids.js +10 -0
- package/dist/sandbox/jobs.d.ts +41 -0
- package/dist/sandbox/jobs.js +113 -0
- package/dist/sandbox/leases.d.ts +39 -31
- package/dist/sandbox/leases.js +117 -257
- package/dist/sandbox/providers.d.ts +19 -0
- package/dist/sandbox/providers.js +38 -0
- package/dist/sandbox/sandbox.module.d.ts +8 -0
- package/dist/sandbox/sandbox.module.js +30 -0
- package/dist/sandbox/sandbox.service.d.ts +24 -29
- package/dist/sandbox/sandbox.service.js +106 -75
- package/dist/skills/catalog.d.ts +33 -20
- package/dist/skills/catalog.js +96 -53
- package/dist/skills/changes.controller.d.ts +4 -4
- package/dist/skills/changes.controller.js +15 -9
- package/dist/skills/changes.service.d.ts +28 -18
- package/dist/skills/changes.service.js +421 -364
- package/dist/skills/invocable.controller.d.ts +1 -1
- package/dist/skills/invocable.controller.js +8 -5
- package/dist/skills/invoke.d.ts +16 -15
- package/dist/skills/invoke.js +48 -17
- package/dist/skills/skills.controller.d.ts +1 -1
- package/dist/skills/skills.controller.js +11 -6
- package/dist/skills/skills.module.d.ts +6 -0
- package/dist/skills/skills.module.js +30 -0
- package/dist/skills/skills.service.d.ts +47 -30
- package/dist/skills/skills.service.js +221 -158
- package/dist/storage/job-ids.d.ts +6 -0
- package/dist/storage/job-ids.js +6 -0
- package/dist/storage/purge.d.ts +22 -7
- package/dist/storage/purge.js +55 -3
- package/dist/storage/storage.module.d.ts +6 -0
- package/dist/storage/storage.module.js +23 -0
- package/dist/storage/storage.service.d.ts +18 -4
- package/dist/storage/storage.service.js +44 -3
- package/dist/tools/approvals.controller.d.ts +1 -1
- package/dist/tools/approvals.controller.js +12 -8
- package/dist/tools/approvals.service.d.ts +27 -25
- package/dist/tools/approvals.service.js +324 -258
- package/dist/tools/breaker.d.ts +2 -2
- package/dist/tools/breaker.js +21 -3
- package/dist/tools/builtins/ask-user.d.ts +2 -2
- package/dist/tools/builtins/ask-user.js +1 -1
- package/dist/tools/builtins/builtin-tools.d.ts +21 -0
- package/dist/tools/builtins/builtin-tools.js +80 -0
- package/dist/tools/builtins/read-tool-output.d.ts +2 -2
- package/dist/tools/builtins/read-tool-output.js +1 -1
- package/dist/tools/builtins/sandbox/bash.js +2 -2
- package/dist/tools/builtins/sandbox/common.d.ts +7 -4
- package/dist/tools/builtins/sandbox/common.js +5 -3
- package/dist/tools/builtins/sandbox/deliver.js +2 -2
- package/dist/tools/builtins/sandbox/edit.js +1 -1
- package/dist/tools/builtins/sandbox/glob.js +2 -2
- package/dist/tools/builtins/sandbox/grep.js +2 -2
- package/dist/tools/builtins/sandbox/read.js +1 -1
- package/dist/tools/builtins/sandbox/write.js +1 -1
- package/dist/tools/builtins/skill-load.d.ts +3 -3
- package/dist/tools/builtins/skill-load.js +1 -1
- package/dist/tools/canonical-json.d.ts +6 -0
- package/dist/tools/canonical-json.js +16 -0
- package/dist/tools/connector-content.controller.d.ts +1 -1
- package/dist/tools/connector-content.controller.js +11 -6
- package/dist/tools/connector-content.d.ts +12 -15
- package/dist/tools/connector-content.js +53 -18
- package/dist/tools/connectors.controller.d.ts +1 -1
- package/dist/tools/connectors.controller.js +21 -10
- package/dist/tools/connectors.service.d.ts +31 -13
- package/dist/tools/connectors.service.js +434 -344
- package/dist/tools/credentials.d.ts +17 -20
- package/dist/tools/credentials.js +55 -34
- package/dist/tools/drift.d.ts +29 -41
- package/dist/tools/drift.js +111 -79
- package/dist/tools/info.d.ts +12 -9
- package/dist/tools/info.js +33 -7
- package/dist/tools/job-ids.d.ts +13 -0
- package/dist/tools/job-ids.js +15 -0
- package/dist/tools/jobs.d.ts +24 -0
- package/dist/tools/jobs.js +69 -0
- package/dist/tools/oauth/flow-paths.d.ts +16 -0
- package/dist/tools/oauth/flow-paths.js +38 -0
- package/dist/tools/oauth/flow.d.ts +30 -30
- package/dist/tools/oauth/flow.js +109 -81
- package/dist/tools/oauth/oauth.controller.d.ts +3 -3
- package/dist/tools/oauth/oauth.controller.js +12 -9
- package/dist/tools/oauth/tokens.d.ts +11 -3
- package/dist/tools/oauth/tokens.js +15 -14
- package/dist/tools/outputs.d.ts +13 -4
- package/dist/tools/outputs.js +47 -3
- package/dist/tools/pipeline.d.ts +62 -46
- package/dist/tools/pipeline.js +145 -64
- package/dist/tools/policy.d.ts +2 -2
- package/dist/tools/questions.controller.d.ts +1 -1
- package/dist/tools/questions.controller.js +8 -5
- package/dist/tools/questions.service.d.ts +25 -24
- package/dist/tools/questions.service.js +201 -142
- package/dist/tools/registry.d.ts +30 -20
- package/dist/tools/registry.js +73 -37
- package/dist/tools/specs.d.ts +5 -4
- package/dist/tools/specs.js +3 -1
- package/dist/tools/tools.module.d.ts +10 -0
- package/dist/tools/tools.module.js +91 -0
- package/dist/ui/call-extension.d.ts +16 -0
- package/dist/ui/call-extension.js +38 -0
- package/dist/ui/embed-token.d.ts +9 -5
- package/dist/ui/embed-token.js +34 -6
- package/dist/ui/ui-stream.d.ts +22 -17
- package/dist/ui/ui-stream.js +72 -12
- package/dist/ui/ui.module.d.ts +7 -0
- package/dist/ui/ui.module.js +28 -0
- package/dist/ui/views.controller.d.ts +14 -12
- package/dist/ui/views.controller.js +32 -25
- package/dist/ui/views.d.ts +9 -57
- package/dist/ui/views.js +43 -45
- package/package.json +11 -2
- package/dist/http/health.controller.d.ts +0 -26
- package/dist/http/health.controller.js +0 -79
- package/dist/http/tokens.d.ts +0 -131
- package/dist/http/tokens.js +0 -131
- package/dist/http/zod.pipe.d.ts +0 -8
- package/dist/http/zod.pipe.js +0 -14
- package/dist/identity/rate-limit.d.ts +0 -55
- package/dist/identity/rate-limit.js +0 -121
- package/dist/sandbox/lifecycle.d.ts +0 -21
- package/dist/sandbox/lifecycle.js +0 -68
- /package/dist/http/{gateway.module.d.ts → gateway-routes.d.ts} +0 -0
- /package/dist/http/{gateway.module.js → gateway-routes.js} +0 -0
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The run runtime: the conversation run lock, this process's event streams, the run queue and its
|
|
3
|
+
* worker (consumed through `RuntimeWorkersModule`'s processors), the waits (their sweep is the
|
|
4
|
+
* worker role's `WaitSweepJob`), run
|
|
5
|
+
* stops, the checkpoints, the org quotas, the step writes and the agent loops. The model provider
|
|
6
|
+
* registry, the sub-agent dispatch, `usage.report` and the titles have modules of their own (the
|
|
7
|
+
* tools, models and conversations domains import them without the runtime).
|
|
8
|
+
*/
|
|
9
|
+
export declare class RuntimeModule {
|
|
10
|
+
}
|
|
@@ -0,0 +1,112 @@
|
|
|
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
|
+
import { Module } from "@nestjs/common";
|
|
8
|
+
import { ConversationAccessModule } from "../conversations/access.js";
|
|
9
|
+
import { AttachmentsModule } from "../conversations/attachments.module.js";
|
|
10
|
+
import { EventLogModule } from "../conversations/event-log.js";
|
|
11
|
+
import { TitlesModule } from "../conversations/titles.js";
|
|
12
|
+
import { ExtensionsModule } from "../extensions/extensions.module.js";
|
|
13
|
+
import { IdentityModule } from "../identity/identity.module.js";
|
|
14
|
+
import { LockService } from "../infra/lock/lock.service.js";
|
|
15
|
+
import { QueueModule } from "../infra/queue/queue.module.js";
|
|
16
|
+
import { REDIS } from "../infra/tokens.js";
|
|
17
|
+
import { SkillsModule } from "../skills/skills.module.js";
|
|
18
|
+
import { ToolsModule } from "../tools/tools.module.js";
|
|
19
|
+
import { RunAbort } from "./abort.js";
|
|
20
|
+
import { KyselyCheckpointSaver } from "./checkpointer.js";
|
|
21
|
+
import { ConversationLock } from "./conversation-lock.js";
|
|
22
|
+
import { MAINTENANCE_QUEUE_NAME } from "./maintenance-queue.js";
|
|
23
|
+
import { ProvidersModule } from "./providers.js";
|
|
24
|
+
import { EVAL_QUOTA, EVAL_QUOTA_PREFIX, OrgQuota, RUN_QUOTA, RUN_QUOTA_PREFIX } from "./quota.js";
|
|
25
|
+
import { RunControl } from "./run-control.js";
|
|
26
|
+
import { RunFinish } from "./run-finish.js";
|
|
27
|
+
import { RunJobsModule } from "./run-jobs.js";
|
|
28
|
+
import { RunQueue } from "./run-queue.js";
|
|
29
|
+
import { AgentLoops, RunSteps } from "./run-steps.js";
|
|
30
|
+
import { RunWorker } from "./run-worker.js";
|
|
31
|
+
import { StepLog } from "./step-log.js";
|
|
32
|
+
import { ConversationStreams } from "./stream.js";
|
|
33
|
+
import { SubagentsModule } from "./subagents/subagents.service.js";
|
|
34
|
+
import { UsageReportModule } from "./usage-report.js";
|
|
35
|
+
import { DecisionResumer, Waits } from "./waits.js";
|
|
36
|
+
/**
|
|
37
|
+
* The run runtime: the conversation run lock, this process's event streams, the run queue and its
|
|
38
|
+
* worker (consumed through `RuntimeWorkersModule`'s processors), the waits (their sweep is the
|
|
39
|
+
* worker role's `WaitSweepJob`), run
|
|
40
|
+
* stops, the checkpoints, the org quotas, the step writes and the agent loops. The model provider
|
|
41
|
+
* registry, the sub-agent dispatch, `usage.report` and the titles have modules of their own (the
|
|
42
|
+
* tools, models and conversations domains import them without the runtime).
|
|
43
|
+
*/
|
|
44
|
+
let RuntimeModule = class RuntimeModule {
|
|
45
|
+
};
|
|
46
|
+
RuntimeModule = __decorate([
|
|
47
|
+
Module({
|
|
48
|
+
imports: [
|
|
49
|
+
EventLogModule,
|
|
50
|
+
ConversationAccessModule,
|
|
51
|
+
AttachmentsModule,
|
|
52
|
+
ExtensionsModule,
|
|
53
|
+
IdentityModule,
|
|
54
|
+
SkillsModule,
|
|
55
|
+
ToolsModule,
|
|
56
|
+
ProvidersModule,
|
|
57
|
+
RunJobsModule,
|
|
58
|
+
SubagentsModule,
|
|
59
|
+
UsageReportModule,
|
|
60
|
+
TitlesModule,
|
|
61
|
+
// the producer side of `wait-timeout` jobs (`MaintenanceProcessor` consumes them)
|
|
62
|
+
QueueModule.registerQueue(MAINTENANCE_QUEUE_NAME),
|
|
63
|
+
],
|
|
64
|
+
providers: [
|
|
65
|
+
ConversationLock,
|
|
66
|
+
ConversationStreams,
|
|
67
|
+
RunAbort,
|
|
68
|
+
KyselyCheckpointSaver,
|
|
69
|
+
RunFinish,
|
|
70
|
+
StepLog,
|
|
71
|
+
RunQueue,
|
|
72
|
+
Waits,
|
|
73
|
+
DecisionResumer,
|
|
74
|
+
RunControl,
|
|
75
|
+
AgentLoops,
|
|
76
|
+
RunSteps,
|
|
77
|
+
RunWorker,
|
|
78
|
+
// one quota per key prefix (the org run quota, the org eval quota)
|
|
79
|
+
{
|
|
80
|
+
provide: RUN_QUOTA,
|
|
81
|
+
inject: [REDIS, LockService],
|
|
82
|
+
useFactory: (redis, locks) => new OrgQuota(redis, RUN_QUOTA_PREFIX, locks),
|
|
83
|
+
},
|
|
84
|
+
{
|
|
85
|
+
provide: EVAL_QUOTA,
|
|
86
|
+
inject: [REDIS, LockService],
|
|
87
|
+
useFactory: (redis, locks) => new OrgQuota(redis, EVAL_QUOTA_PREFIX, locks),
|
|
88
|
+
},
|
|
89
|
+
],
|
|
90
|
+
exports: [
|
|
91
|
+
ConversationLock,
|
|
92
|
+
ConversationStreams,
|
|
93
|
+
RunAbort,
|
|
94
|
+
KyselyCheckpointSaver,
|
|
95
|
+
RunFinish,
|
|
96
|
+
StepLog,
|
|
97
|
+
RunQueue,
|
|
98
|
+
Waits,
|
|
99
|
+
RunControl,
|
|
100
|
+
AgentLoops,
|
|
101
|
+
RunSteps,
|
|
102
|
+
RunWorker,
|
|
103
|
+
RUN_QUOTA,
|
|
104
|
+
EVAL_QUOTA,
|
|
105
|
+
ProvidersModule,
|
|
106
|
+
SubagentsModule,
|
|
107
|
+
UsageReportModule,
|
|
108
|
+
TitlesModule,
|
|
109
|
+
],
|
|
110
|
+
})
|
|
111
|
+
], RuntimeModule);
|
|
112
|
+
export { RuntimeModule };
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
import type { ToolSpec } from "@capybara-hq/plugin-sdk";
|
|
2
|
+
import { type AppendEvent, EventLog } from "../conversations/event-log.js";
|
|
3
|
+
import type { ConversationEvent } from "../conversations/events.js";
|
|
4
|
+
import { audit } from "../identity/audit.js";
|
|
5
|
+
import { KernelDb } from "../infra/database/kernel-db.js";
|
|
6
|
+
import { TransactionHost } from "../infra/database/transaction-host.js";
|
|
7
|
+
/** An audit row written with the events (`identity/audit.ts`). */
|
|
8
|
+
export type StepAuditEntry = Parameters<typeof audit>[1];
|
|
9
|
+
/**
|
|
10
|
+
* The writes of a run step that go to the event log together with another row, each in a
|
|
11
|
+
* transaction of its own (the caller notifies the log after the commit): a model call with the
|
|
12
|
+
* tool definitions it sent, a denial with its audit row, and a sub-agent's usage counted on its
|
|
13
|
+
* parent run. The step functions (`model-call.ts`, `hook-calls.ts`) reach it through their deps.
|
|
14
|
+
*/
|
|
15
|
+
export declare class StepLog {
|
|
16
|
+
private readonly kdb;
|
|
17
|
+
private readonly eventLog;
|
|
18
|
+
readonly txHost: TransactionHost;
|
|
19
|
+
constructor(kdb: KernelDb, eventLog: EventLog, txHost: TransactionHost);
|
|
20
|
+
/**
|
|
21
|
+
* Appends events of a sub-agent's run and adds the tokens of the usage events it newly wrote to
|
|
22
|
+
* the parent run's `subagent_tokens_used` (sub-agents spec §8.3): a usage event already in the
|
|
23
|
+
* log (an idempotent hit after a crash) adds nothing, so each call counts exactly once. Returns
|
|
24
|
+
* what was written (hits included) and the highest new seq (null: nothing new).
|
|
25
|
+
*/
|
|
26
|
+
appendCounted(conversationId: string, parentRunId: string, events: AppendEvent[]): Promise<{
|
|
27
|
+
written: ConversationEvent[];
|
|
28
|
+
toSeq: number | null;
|
|
29
|
+
}>;
|
|
30
|
+
/** Appends events with their audit row (a hook denial). */
|
|
31
|
+
appendAudited(conversationId: string, events: AppendEvent[], entry: StepAuditEntry): Promise<ConversationEvent[]>;
|
|
32
|
+
/**
|
|
33
|
+
* Appends a `model_call` with the tool definitions its request sent, stored by fingerprint in
|
|
34
|
+
* `tool_specs` in the same transaction (a request can be rebuilt from the log and the specs).
|
|
35
|
+
*/
|
|
36
|
+
appendWithSpecs(conversationId: string, specs: readonly {
|
|
37
|
+
specHash: string;
|
|
38
|
+
spec: ToolSpec;
|
|
39
|
+
}[], events: AppendEvent[]): Promise<ConversationEvent[]>;
|
|
40
|
+
}
|
|
@@ -0,0 +1,94 @@
|
|
|
1
|
+
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
|
2
|
+
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
3
|
+
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
4
|
+
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
5
|
+
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
6
|
+
};
|
|
7
|
+
var __param = (this && this.__param) || function (paramIndex, decorator) {
|
|
8
|
+
return function (target, key) { decorator(target, key, paramIndex); }
|
|
9
|
+
};
|
|
10
|
+
import { Inject, Injectable } from "@nestjs/common";
|
|
11
|
+
import { sql } from "kysely";
|
|
12
|
+
import { EventLog } from "../conversations/event-log.js";
|
|
13
|
+
import { usageTokens } from "../evals/budget.js";
|
|
14
|
+
import { audit } from "../identity/audit.js";
|
|
15
|
+
import { KernelDb } from "../infra/database/kernel-db.js";
|
|
16
|
+
import { TransactionHost } from "../infra/database/transaction-host.js";
|
|
17
|
+
import { Transactional } from "../infra/database/transactional.decorator.js";
|
|
18
|
+
import { recordToolSpecs } from "../tools/specs.js";
|
|
19
|
+
/**
|
|
20
|
+
* The writes of a run step that go to the event log together with another row, each in a
|
|
21
|
+
* transaction of its own (the caller notifies the log after the commit): a model call with the
|
|
22
|
+
* tool definitions it sent, a denial with its audit row, and a sub-agent's usage counted on its
|
|
23
|
+
* parent run. The step functions (`model-call.ts`, `hook-calls.ts`) reach it through their deps.
|
|
24
|
+
*/
|
|
25
|
+
let StepLog = class StepLog {
|
|
26
|
+
kdb;
|
|
27
|
+
eventLog;
|
|
28
|
+
txHost;
|
|
29
|
+
constructor(kdb, eventLog, txHost) {
|
|
30
|
+
this.kdb = kdb;
|
|
31
|
+
this.eventLog = eventLog;
|
|
32
|
+
this.txHost = txHost;
|
|
33
|
+
}
|
|
34
|
+
/**
|
|
35
|
+
* Appends events of a sub-agent's run and adds the tokens of the usage events it newly wrote to
|
|
36
|
+
* the parent run's `subagent_tokens_used` (sub-agents spec §8.3): a usage event already in the
|
|
37
|
+
* log (an idempotent hit after a crash) adds nothing, so each call counts exactly once. Returns
|
|
38
|
+
* what was written (hits included) and the highest new seq (null: nothing new).
|
|
39
|
+
*/
|
|
40
|
+
async appendCounted(conversationId, parentRunId, events) {
|
|
41
|
+
const t = this.kdb.db;
|
|
42
|
+
// the conversation row lock the append takes anyway, taken first to read the seq before it
|
|
43
|
+
const before = await t
|
|
44
|
+
.selectFrom("conversations")
|
|
45
|
+
.select("last_seq")
|
|
46
|
+
.where("id", "=", conversationId)
|
|
47
|
+
.forUpdate()
|
|
48
|
+
.executeTakeFirstOrThrow();
|
|
49
|
+
const written = await this.eventLog.appendIn(conversationId, events);
|
|
50
|
+
const fresh = written.filter((e) => e.seq > Number(before.last_seq));
|
|
51
|
+
let tokens = 0;
|
|
52
|
+
for (const e of fresh)
|
|
53
|
+
if (e.type === "usage")
|
|
54
|
+
tokens += usageTokens(e.payload);
|
|
55
|
+
if (tokens > 0) {
|
|
56
|
+
await t
|
|
57
|
+
.updateTable("runs")
|
|
58
|
+
.set({ subagent_tokens_used: sql `subagent_tokens_used + ${tokens}` })
|
|
59
|
+
.where("id", "=", parentRunId)
|
|
60
|
+
.execute();
|
|
61
|
+
}
|
|
62
|
+
return { written, toSeq: fresh.length > 0 ? Math.max(...fresh.map((e) => e.seq)) : null };
|
|
63
|
+
}
|
|
64
|
+
/** Appends events with their audit row (a hook denial). */
|
|
65
|
+
async appendAudited(conversationId, events, entry) {
|
|
66
|
+
const out = await this.eventLog.appendIn(conversationId, events);
|
|
67
|
+
await audit(this.kdb.db, entry);
|
|
68
|
+
return out;
|
|
69
|
+
}
|
|
70
|
+
/**
|
|
71
|
+
* Appends a `model_call` with the tool definitions its request sent, stored by fingerprint in
|
|
72
|
+
* `tool_specs` in the same transaction (a request can be rebuilt from the log and the specs).
|
|
73
|
+
*/
|
|
74
|
+
async appendWithSpecs(conversationId, specs, events) {
|
|
75
|
+
await recordToolSpecs(this.kdb.db, specs);
|
|
76
|
+
return this.eventLog.appendIn(conversationId, events);
|
|
77
|
+
}
|
|
78
|
+
};
|
|
79
|
+
__decorate([
|
|
80
|
+
Transactional({ propagation: "requires_new" })
|
|
81
|
+
], StepLog.prototype, "appendCounted", null);
|
|
82
|
+
__decorate([
|
|
83
|
+
Transactional({ propagation: "requires_new" })
|
|
84
|
+
], StepLog.prototype, "appendAudited", null);
|
|
85
|
+
__decorate([
|
|
86
|
+
Transactional({ propagation: "requires_new" })
|
|
87
|
+
], StepLog.prototype, "appendWithSpecs", null);
|
|
88
|
+
StepLog = __decorate([
|
|
89
|
+
Injectable(),
|
|
90
|
+
__param(0, Inject(KernelDb)),
|
|
91
|
+
__param(1, Inject(EventLog)),
|
|
92
|
+
__param(2, Inject(TransactionHost))
|
|
93
|
+
], StepLog);
|
|
94
|
+
export { StepLog };
|
|
@@ -1,12 +1,11 @@
|
|
|
1
|
-
import { type OnModuleDestroy } from "@nestjs/common";
|
|
2
1
|
import type { FastifyReply, FastifyRequest } from "fastify";
|
|
3
2
|
import { z } from "zod";
|
|
4
|
-
import
|
|
5
|
-
import
|
|
3
|
+
import { ConversationsService } from "../conversations/conversations.service.js";
|
|
4
|
+
import { ApiTokenService } from "../identity/api-tokens.js";
|
|
6
5
|
import { type Principal } from "../identity/principal.js";
|
|
7
|
-
import
|
|
6
|
+
import { SessionService } from "../identity/sessions.js";
|
|
8
7
|
import { type OrgContext } from "../orgs/org.guard.js";
|
|
9
|
-
import
|
|
8
|
+
import { ConversationStreams } from "./stream.js";
|
|
10
9
|
declare const StreamQuery: z.ZodObject<{
|
|
11
10
|
after: z.ZodDefault<z.ZodCoercedNumber<unknown>>;
|
|
12
11
|
}, z.core.$strip>;
|
|
@@ -21,14 +20,12 @@ declare const StreamQuery: z.ZodObject<{
|
|
|
21
20
|
* - 用 `@Res()` + `reply.hijack()` 直接写原始响应,绕开 Nest / Fastify 的响应处理与缓冲。
|
|
22
21
|
* 代理(Web 层)需透传 `x-accel-buffering: no`、`cache-control: no-cache`。
|
|
23
22
|
*/
|
|
24
|
-
export declare class ConversationStreamController
|
|
23
|
+
export declare class ConversationStreamController {
|
|
25
24
|
private readonly streams;
|
|
26
25
|
private readonly sessions;
|
|
27
26
|
private readonly tokens;
|
|
28
27
|
private readonly conversations;
|
|
29
28
|
constructor(streams: ConversationStreams, sessions: SessionService, tokens: ApiTokenService, conversations: ConversationsService);
|
|
30
29
|
stream(principal: Principal, org: OrgContext, id: string, q: z.infer<typeof StreamQuery>, lastEventId: string | undefined, req: FastifyRequest, reply: FastifyReply): Promise<void>;
|
|
31
|
-
/** 停机:关闭本进程的全部流,否则 HTTP 关闭要等到这些长连接超时。 */
|
|
32
|
-
onModuleDestroy(): void;
|
|
33
30
|
}
|
|
34
31
|
export {};
|
|
@@ -7,14 +7,18 @@ var __decorate = (this && this.__decorate) || function (decorators, target, key,
|
|
|
7
7
|
var __param = (this && this.__param) || function (paramIndex, decorator) {
|
|
8
8
|
return function (target, key) { decorator(target, key, paramIndex); }
|
|
9
9
|
};
|
|
10
|
-
import { Controller, Get, Headers, Inject, Param,
|
|
10
|
+
import { Controller, Get, Headers, Inject, Param, Req, Res } from "@nestjs/common";
|
|
11
11
|
import { z } from "zod";
|
|
12
|
+
import { ConversationsService } from "../conversations/conversations.service.js";
|
|
12
13
|
import { ApiError } from "../errors.js";
|
|
13
|
-
import {
|
|
14
|
-
import { ZodPipe } from "../http/zod.pipe.js";
|
|
14
|
+
import { ApiTokenService } from "../identity/api-tokens.js";
|
|
15
15
|
import { credentialCheck } from "../identity/credential-check.js";
|
|
16
16
|
import { CurrentPrincipal, requireUser } from "../identity/principal.js";
|
|
17
|
+
import { SessionService } from "../identity/sessions.js";
|
|
18
|
+
import { createZodDto } from "../infra/validation/create-zod-dto.js";
|
|
19
|
+
import { ZQuery } from "../infra/validation/zod-params.js";
|
|
17
20
|
import { CurrentOrg, OrgAction } from "../orgs/org.guard.js";
|
|
21
|
+
import { ConversationStreams } from "./stream.js";
|
|
18
22
|
const BEARER_RE = /^Bearer\s+(\S+)$/i;
|
|
19
23
|
const StreamQuery = z.object({
|
|
20
24
|
after: z.coerce.number().int().min(0).max(Number.MAX_SAFE_INTEGER).default(0),
|
|
@@ -28,6 +32,8 @@ function parseLastEventId(v) {
|
|
|
28
32
|
}
|
|
29
33
|
return n;
|
|
30
34
|
}
|
|
35
|
+
class ConversationStreamQueryDto extends createZodDto(StreamQuery, "ConversationStreamQuery") {
|
|
36
|
+
}
|
|
31
37
|
/**
|
|
32
38
|
* 会话事件流(SSE):`GET /api/v1/orgs/:orgId/conversations/:id/stream?after=<seq>`,`agents.use`,只有会话所有者可用。
|
|
33
39
|
* - 打开时不阻塞地调用一次 ensureRun(`ConversationsService.kickRun`),停在「运行中」的孤儿运行由此被清理;
|
|
@@ -96,10 +102,6 @@ let ConversationStreamController = class ConversationStreamController {
|
|
|
96
102
|
res.flushHeaders();
|
|
97
103
|
handle.begin();
|
|
98
104
|
}
|
|
99
|
-
/** 停机:关闭本进程的全部流,否则 HTTP 关闭要等到这些长连接超时。 */
|
|
100
|
-
onModuleDestroy() {
|
|
101
|
-
this.streams.closeAll();
|
|
102
|
-
}
|
|
103
105
|
};
|
|
104
106
|
__decorate([
|
|
105
107
|
Get(":id/stream"),
|
|
@@ -107,16 +109,16 @@ __decorate([
|
|
|
107
109
|
__param(0, CurrentPrincipal()),
|
|
108
110
|
__param(1, CurrentOrg()),
|
|
109
111
|
__param(2, Param("id")),
|
|
110
|
-
__param(3,
|
|
112
|
+
__param(3, ZQuery(ConversationStreamQueryDto)),
|
|
111
113
|
__param(4, Headers("last-event-id")),
|
|
112
114
|
__param(5, Req()),
|
|
113
115
|
__param(6, Res())
|
|
114
116
|
], ConversationStreamController.prototype, "stream", null);
|
|
115
117
|
ConversationStreamController = __decorate([
|
|
116
118
|
Controller("api/v1/orgs/:orgId/conversations"),
|
|
117
|
-
__param(0, Inject(
|
|
118
|
-
__param(1, Inject(
|
|
119
|
-
__param(2, Inject(
|
|
120
|
-
__param(3, Inject(
|
|
119
|
+
__param(0, Inject(ConversationStreams)),
|
|
120
|
+
__param(1, Inject(SessionService)),
|
|
121
|
+
__param(2, Inject(ApiTokenService)),
|
|
122
|
+
__param(3, Inject(ConversationsService))
|
|
121
123
|
], ConversationStreamController);
|
|
122
124
|
export { ConversationStreamController };
|
package/dist/runtime/stream.d.ts
CHANGED
|
@@ -1,7 +1,9 @@
|
|
|
1
1
|
import type { Logger } from "@capybara-hq/plugin-sdk";
|
|
2
|
-
import
|
|
3
|
-
import {
|
|
2
|
+
import { ConversationAccess } from "../conversations/access.js";
|
|
3
|
+
import { EventLog } from "../conversations/event-log.js";
|
|
4
4
|
import type { CredentialCheck } from "../identity/credential-check.js";
|
|
5
|
+
import { KernelConfigService } from "../infra/config/kernel-config.service.js";
|
|
6
|
+
import { GracefulShutdown } from "../infra/lifecycle/graceful-shutdown.service.js";
|
|
5
7
|
/** 一次 SSE 连接的输出端(由 HTTP 层包装原始响应)。 */
|
|
6
8
|
export interface SseOutput {
|
|
7
9
|
write(chunk: string): void;
|
|
@@ -21,7 +23,7 @@ export interface ConversationStreamsDeps {
|
|
|
21
23
|
bus: StreamBus;
|
|
22
24
|
/** 轻量可见性判定:连接建立时与每 `sseRecheckMs` 复核一次。 */
|
|
23
25
|
access(orgId: string, conversationId: string, viewerAccountId: string): Promise<boolean>;
|
|
24
|
-
config:
|
|
26
|
+
config: Pick<KernelConfigService, "get">;
|
|
25
27
|
log: Pick<Logger, "warn">;
|
|
26
28
|
}
|
|
27
29
|
export interface StreamParams {
|
|
@@ -48,16 +50,32 @@ export interface StreamHandle {
|
|
|
48
50
|
* (订阅、心跳与复核定时器)。
|
|
49
51
|
*/
|
|
50
52
|
export declare class ConversationStreams {
|
|
51
|
-
private readonly d;
|
|
52
53
|
private readonly active;
|
|
53
|
-
|
|
54
|
+
/** Set by {@link closeAll}: streams opened afterwards end as soon as they begin. */
|
|
55
|
+
private closing;
|
|
56
|
+
private readonly d;
|
|
57
|
+
/**
|
|
58
|
+
* Closes the streams when the shutdown begins (readiness answers 503 from that moment) and
|
|
59
|
+
* latches: streams opened afterwards end at once, so the HTTP phase of the stop never waits on
|
|
60
|
+
* an event stream. Without `GracefulShutdown` (a standalone HTTP application, tests only) the
|
|
61
|
+
* streams end with their connections.
|
|
62
|
+
*/
|
|
63
|
+
constructor(eventLog: Pick<EventLog, "readAfter">, bus: StreamBus, access: Pick<ConversationAccess, "isAccessible">, config: Pick<KernelConfigService, "get">, log: Pick<Logger, "warn">, shutdown?: Pick<GracefulShutdown, "signal">);
|
|
54
64
|
/**
|
|
55
65
|
* 复核凭据与可见性,并先订阅会话频道(之后再回放,避免遗漏两者之间提交的事件)。
|
|
56
66
|
* 凭据失效 → 对应的 `auth.*`;不可见 → `conversation.not_found`;订阅失败照常抛出。此时尚未写任何响应,调用方可以按普通错误返回。
|
|
57
67
|
*/
|
|
58
68
|
open(p: StreamParams, out: SseOutput): Promise<StreamHandle>;
|
|
59
|
-
/**
|
|
69
|
+
/**
|
|
70
|
+
* Closes every stream of this process (at shutdown) and latches: a stream opened afterwards ends
|
|
71
|
+
* right after its headers, so a reconnecting client cannot hold the HTTP close open.
|
|
72
|
+
*/
|
|
60
73
|
closeAll(): void;
|
|
61
74
|
/** 当前打开的流数(测试用)。 */
|
|
62
75
|
get size(): number;
|
|
63
76
|
}
|
|
77
|
+
/**
|
|
78
|
+
* The handle of a stream opened after shutdown began: `begin` (the headers are written) ends the
|
|
79
|
+
* response at once; the client reconnects with `Last-Event-ID`, to a replica that is still ready.
|
|
80
|
+
*/
|
|
81
|
+
export declare function endedStream(out: SseOutput): StreamHandle;
|
package/dist/runtime/stream.js
CHANGED
|
@@ -1,5 +1,19 @@
|
|
|
1
|
-
|
|
1
|
+
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
|
2
|
+
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
3
|
+
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
4
|
+
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
5
|
+
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
6
|
+
};
|
|
7
|
+
var __param = (this && this.__param) || function (paramIndex, decorator) {
|
|
8
|
+
return function (target, key) { decorator(target, key, paramIndex); }
|
|
9
|
+
};
|
|
10
|
+
import { Inject, Injectable, Optional } from "@nestjs/common";
|
|
11
|
+
import { ConversationAccess } from "../conversations/access.js";
|
|
12
|
+
import { CONVERSATION_CHANGES, conversationTopic, EventLog, } from "../conversations/event-log.js";
|
|
2
13
|
import { ApiError } from "../errors.js";
|
|
14
|
+
import { KernelConfigService } from "../infra/config/kernel-config.service.js";
|
|
15
|
+
import { GracefulShutdown } from "../infra/lifecycle/graceful-shutdown.service.js";
|
|
16
|
+
import { KERNEL_BUS, KERNEL_LOGGER } from "../infra/tokens.js";
|
|
3
17
|
import { isUiBusMessage, uiFrame } from "../ui/registry.js";
|
|
4
18
|
/** 补读事件的分页大小。 */
|
|
5
19
|
const PAGE = 500;
|
|
@@ -46,11 +60,29 @@ const eventFrame = (e) => `id: ${e.seq}\nevent: event\ndata: ${JSON.stringify(e)
|
|
|
46
60
|
* 跨副本的数据只经 PG(事件日志)与内核 bus(`conv.<id>`)流动,进程内只保存连接本身的资源
|
|
47
61
|
* (订阅、心跳与复核定时器)。
|
|
48
62
|
*/
|
|
49
|
-
|
|
50
|
-
d;
|
|
63
|
+
let ConversationStreams = class ConversationStreams {
|
|
51
64
|
active = new Set();
|
|
52
|
-
|
|
53
|
-
|
|
65
|
+
/** Set by {@link closeAll}: streams opened afterwards end as soon as they begin. */
|
|
66
|
+
closing = false;
|
|
67
|
+
d;
|
|
68
|
+
/**
|
|
69
|
+
* Closes the streams when the shutdown begins (readiness answers 503 from that moment) and
|
|
70
|
+
* latches: streams opened afterwards end at once, so the HTTP phase of the stop never waits on
|
|
71
|
+
* an event stream. Without `GracefulShutdown` (a standalone HTTP application, tests only) the
|
|
72
|
+
* streams end with their connections.
|
|
73
|
+
*/
|
|
74
|
+
constructor(eventLog, bus, access, config, log, shutdown) {
|
|
75
|
+
this.d = {
|
|
76
|
+
eventLog,
|
|
77
|
+
bus,
|
|
78
|
+
access: (orgId, conversationId, viewer) => access.isAccessible(orgId, conversationId, viewer),
|
|
79
|
+
config,
|
|
80
|
+
log,
|
|
81
|
+
};
|
|
82
|
+
if (shutdown?.signal.aborted)
|
|
83
|
+
this.closeAll();
|
|
84
|
+
else
|
|
85
|
+
shutdown?.signal.addEventListener("abort", () => this.closeAll(), { once: true });
|
|
54
86
|
}
|
|
55
87
|
/**
|
|
56
88
|
* 复核凭据与可见性,并先订阅会话频道(之后再回放,避免遗漏两者之间提交的事件)。
|
|
@@ -60,6 +92,8 @@ export class ConversationStreams {
|
|
|
60
92
|
const denied = await authorize(this.d, p);
|
|
61
93
|
if (denied !== null)
|
|
62
94
|
throw new ApiError(denied, DENIAL_MESSAGES[denied] ?? "Access denied");
|
|
95
|
+
if (this.closing)
|
|
96
|
+
return endedStream(out);
|
|
63
97
|
const conn = new Connection(this.d, p, out, () => this.active.delete(conn));
|
|
64
98
|
this.active.add(conn);
|
|
65
99
|
try {
|
|
@@ -69,10 +103,19 @@ export class ConversationStreams {
|
|
|
69
103
|
conn.close();
|
|
70
104
|
throw e;
|
|
71
105
|
}
|
|
106
|
+
// closeAll ran while subscribing: the connection is closed, the response must still end
|
|
107
|
+
if (this.closing) {
|
|
108
|
+
conn.close();
|
|
109
|
+
return endedStream(out);
|
|
110
|
+
}
|
|
72
111
|
return conn;
|
|
73
112
|
}
|
|
74
|
-
/**
|
|
113
|
+
/**
|
|
114
|
+
* Closes every stream of this process (at shutdown) and latches: a stream opened afterwards ends
|
|
115
|
+
* right after its headers, so a reconnecting client cannot hold the HTTP close open.
|
|
116
|
+
*/
|
|
75
117
|
closeAll() {
|
|
118
|
+
this.closing = true;
|
|
76
119
|
for (const c of [...this.active])
|
|
77
120
|
c.close();
|
|
78
121
|
}
|
|
@@ -80,6 +123,34 @@ export class ConversationStreams {
|
|
|
80
123
|
get size() {
|
|
81
124
|
return this.active.size;
|
|
82
125
|
}
|
|
126
|
+
};
|
|
127
|
+
ConversationStreams = __decorate([
|
|
128
|
+
Injectable(),
|
|
129
|
+
__param(0, Inject(EventLog)),
|
|
130
|
+
__param(1, Inject(KERNEL_BUS)),
|
|
131
|
+
__param(2, Inject(ConversationAccess)),
|
|
132
|
+
__param(3, Inject(KernelConfigService)),
|
|
133
|
+
__param(4, Inject(KERNEL_LOGGER)),
|
|
134
|
+
__param(5, Optional()),
|
|
135
|
+
__param(5, Inject(GracefulShutdown))
|
|
136
|
+
], ConversationStreams);
|
|
137
|
+
export { ConversationStreams };
|
|
138
|
+
/**
|
|
139
|
+
* The handle of a stream opened after shutdown began: `begin` (the headers are written) ends the
|
|
140
|
+
* response at once; the client reconnects with `Last-Event-ID`, to a replica that is still ready.
|
|
141
|
+
*/
|
|
142
|
+
export function endedStream(out) {
|
|
143
|
+
return {
|
|
144
|
+
begin: () => {
|
|
145
|
+
try {
|
|
146
|
+
out.end();
|
|
147
|
+
}
|
|
148
|
+
catch {
|
|
149
|
+
// the connection is already gone
|
|
150
|
+
}
|
|
151
|
+
},
|
|
152
|
+
close: () => { },
|
|
153
|
+
};
|
|
83
154
|
}
|
|
84
155
|
class Connection {
|
|
85
156
|
d;
|
|
@@ -117,7 +188,7 @@ class Connection {
|
|
|
117
188
|
if (this.closed)
|
|
118
189
|
return;
|
|
119
190
|
this.begun = true;
|
|
120
|
-
const { sseHeartbeatMs, sseRecheckMs } = this.d.config().runtime;
|
|
191
|
+
const { sseHeartbeatMs, sseRecheckMs } = this.d.config.get().runtime;
|
|
121
192
|
this.timers.push(setInterval(() => this.write(": ping\n\n"), sseHeartbeatMs), setInterval(() => void this.recheck(), sseRecheckMs));
|
|
122
193
|
this.openGate();
|
|
123
194
|
}
|
|
@@ -1,10 +1,6 @@
|
|
|
1
|
-
import type { Logger } from "@capybara-hq/plugin-sdk";
|
|
2
1
|
import type { AppendEvent, EventLog } from "../../conversations/event-log.js";
|
|
3
2
|
import type { EventPayload } from "../../conversations/events.js";
|
|
4
|
-
import type {
|
|
5
|
-
import type { RunAbort, RunAbortDetail } from "../abort.js";
|
|
6
|
-
import { type RunQueue } from "../run-queue.js";
|
|
7
|
-
import type { Waits } from "../waits.js";
|
|
3
|
+
import type { KernelSchemaDb } from "../../db/kernel-schema.js";
|
|
8
4
|
/** Idempotency key of the parent's `subagent_finished` event. */
|
|
9
5
|
export declare const finishedIdemKey: (childRunId: string) => string;
|
|
10
6
|
/** A dispatch row, by its child run. */
|
|
@@ -16,9 +12,9 @@ export interface DispatchRow {
|
|
|
16
12
|
childRunId: string;
|
|
17
13
|
}
|
|
18
14
|
/** The dispatch that started `childRunId`, or null (not a sub-agent run). */
|
|
19
|
-
export declare function dispatchOfChildRun(db:
|
|
15
|
+
export declare function dispatchOfChildRun(db: KernelSchemaDb, childRunId: string): Promise<DispatchRow | null>;
|
|
20
16
|
/** The dispatch of the parent call `(runId, callId)`, or null (not dispatched yet). */
|
|
21
|
-
export declare function dispatchOfCall(db:
|
|
17
|
+
export declare function dispatchOfCall(db: KernelSchemaDb, runId: string, callId: string): Promise<DispatchRow | null>;
|
|
22
18
|
/**
|
|
23
19
|
* The tool result of a finished child run (spec §4.4) and its `subagent_finished` payload, from
|
|
24
20
|
* the child's log only: the status from its terminal event, the reply from its last
|
|
@@ -41,40 +37,3 @@ opts?: {
|
|
|
41
37
|
} | null>;
|
|
42
38
|
/** The parent's `subagent_finished` event for a finished child (idempotent by its key). */
|
|
43
39
|
export declare const finishedEvent: (row: DispatchRow, finished: EventPayload<"subagent_finished">) => AppendEvent;
|
|
44
|
-
export interface ChildDeps {
|
|
45
|
-
db: KernelDb;
|
|
46
|
-
eventLog: EventLog;
|
|
47
|
-
waits: Pick<Waits, "resume">;
|
|
48
|
-
log: Pick<Logger, "warn">;
|
|
49
|
-
}
|
|
50
|
-
/**
|
|
51
|
-
* After a child run's terminal state committed (spec §7.3): appends `subagent_finished` to the
|
|
52
|
-
* parent log (idempotent; allowed while the parent waits, it is not model-visible) and tries
|
|
53
|
-
* `Waits.resume(parentRunId, childRunId)`. Every finishing child tries; the conditional resume lets
|
|
54
|
-
* exactly one succeed, the last to see all its siblings terminal. A run that is not a dispatched
|
|
55
|
-
* child, or not terminal yet, is left alone. A crash in between is repaired by the wait sweep and
|
|
56
|
-
* by the parent's tools node, which writes a missing `subagent_finished` itself.
|
|
57
|
-
*/
|
|
58
|
-
export declare function onChildFinished(d: ChildDeps, childRunId: string): Promise<void>;
|
|
59
|
-
export interface StopChildrenDeps extends ChildDeps {
|
|
60
|
-
waits: Pick<Waits, "resume" | "abortWaiting">;
|
|
61
|
-
runQueue: Pick<RunQueue, "abortIfOrphaned">;
|
|
62
|
-
abort: Pick<RunAbort, "request">;
|
|
63
|
-
}
|
|
64
|
-
/**
|
|
65
|
-
* Stops the active children of a parent run (sub-agents spec §12), or only those dispatched in
|
|
66
|
-
* `opts.step`: a `waiting` child through its own `abortWaiting`, a `queued` / `running` one that
|
|
67
|
-
* no worker holds directly (`abortIfOrphaned`), any other through `RunAbort.request` (the
|
|
68
|
-
* cross-replica broadcast plus the marker key, so a child that starts later still sees it), after
|
|
69
|
-
* which a child found `waiting` is stopped through `abortWaiting` too. A child stopped here is
|
|
70
|
-
* reported to the parent at once (by `abortWaiting` itself, or {@link onChildFinished} after
|
|
71
|
-
* `abortIfOrphaned`); one stopped by its worker is reported by that worker. Returns the number of
|
|
72
|
-
* children asked to stop.
|
|
73
|
-
*
|
|
74
|
-
* `byAccountId` is the person whose action stops them, or null when the kernel stops them on the
|
|
75
|
-
* parent's behalf; a child stopped with null reports the §4.4 "parent's stop" text.
|
|
76
|
-
*/
|
|
77
|
-
export declare function stopChildren(d: StopChildrenDeps, parentRunId: string, byAccountId: string | null, opts?: {
|
|
78
|
-
step?: number;
|
|
79
|
-
detail?: RunAbortDetail;
|
|
80
|
-
}): Promise<number>;
|