@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
package/dist/tools/outputs.js
CHANGED
|
@@ -1,6 +1,18 @@
|
|
|
1
|
+
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
|
2
|
+
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
3
|
+
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
4
|
+
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
5
|
+
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
6
|
+
};
|
|
7
|
+
var __param = (this && this.__param) || function (paramIndex, decorator) {
|
|
8
|
+
return function (target, key) { decorator(target, key, paramIndex); }
|
|
9
|
+
};
|
|
1
10
|
import { randomUUID } from "node:crypto";
|
|
2
11
|
import { ToolError } from "@capybara-hq/plugin-sdk";
|
|
12
|
+
import { Inject, Injectable } from "@nestjs/common";
|
|
3
13
|
import { sql } from "kysely";
|
|
14
|
+
import { KernelConfigService } from "../infra/config/kernel-config.service.js";
|
|
15
|
+
import { KernelDb } from "../infra/database/kernel-db.js";
|
|
4
16
|
/** 文本行数(按 `\n` 切分;空串算 1 行,与按行分页读取一致)。 */
|
|
5
17
|
export function countLines(s) {
|
|
6
18
|
let n = 1;
|
|
@@ -10,9 +22,10 @@ export function countLines(s) {
|
|
|
10
22
|
}
|
|
11
23
|
/**
|
|
12
24
|
* 输出存档(spec 5.4):超大工具结果的全文存进 `capybara.tool_outputs`,保留 `tools.outputRetentionDays` 天。
|
|
13
|
-
*
|
|
25
|
+
* 只能在产生它的会话里读取(同组织别的会话也不行:会话之间可见范围不同),过期即视为不存在(清理由
|
|
26
|
+
* `output-cleanup` 每小时一次,见 {@link deleteExpiredOutputs})。
|
|
14
27
|
*/
|
|
15
|
-
|
|
28
|
+
let ToolOutputs = class ToolOutputs {
|
|
16
29
|
db;
|
|
17
30
|
config;
|
|
18
31
|
constructor(db, config) {
|
|
@@ -23,7 +36,7 @@ export class ToolOutputs {
|
|
|
23
36
|
const id = randomUUID();
|
|
24
37
|
const sizeChars = a.content.length;
|
|
25
38
|
const lineCount = countLines(a.content);
|
|
26
|
-
const days = this.config().tools.outputRetentionDays;
|
|
39
|
+
const days = this.config.get().tools.outputRetentionDays;
|
|
27
40
|
await this.db
|
|
28
41
|
.insertInto("tool_outputs")
|
|
29
42
|
.values({
|
|
@@ -51,6 +64,37 @@ export class ToolOutputs {
|
|
|
51
64
|
.executeTakeFirst();
|
|
52
65
|
return row?.content ?? null;
|
|
53
66
|
}
|
|
67
|
+
};
|
|
68
|
+
ToolOutputs = __decorate([
|
|
69
|
+
Injectable(),
|
|
70
|
+
__param(0, Inject(KernelDb)),
|
|
71
|
+
__param(1, Inject(KernelConfigService))
|
|
72
|
+
], ToolOutputs);
|
|
73
|
+
export { ToolOutputs };
|
|
74
|
+
/** Rows deleted per statement by {@link deleteExpiredOutputs}. */
|
|
75
|
+
export const OUTPUT_CLEANUP_BATCH = 1000;
|
|
76
|
+
/**
|
|
77
|
+
* 删除已过期(`expires_at < now()`)的输出存档,每批 `batch` 行,直到删完;返回删除的总行数。
|
|
78
|
+
* 每批一条独立语句(不开长事务);多个 worker 同时清理时 `SKIP LOCKED` 互不等待。
|
|
79
|
+
*/
|
|
80
|
+
export async function deleteExpiredOutputs(db, batch = OUTPUT_CLEANUP_BATCH) {
|
|
81
|
+
let total = 0;
|
|
82
|
+
for (;;) {
|
|
83
|
+
const r = await db
|
|
84
|
+
.deleteFrom("tool_outputs")
|
|
85
|
+
.where("id", "in", db
|
|
86
|
+
.selectFrom("tool_outputs")
|
|
87
|
+
.select("id")
|
|
88
|
+
.where("expires_at", "<", sql `now()`)
|
|
89
|
+
.limit(batch)
|
|
90
|
+
.forUpdate()
|
|
91
|
+
.skipLocked())
|
|
92
|
+
.executeTakeFirst();
|
|
93
|
+
const n = Number(r.numDeletedRows);
|
|
94
|
+
total += n;
|
|
95
|
+
if (n < batch)
|
|
96
|
+
return total;
|
|
97
|
+
}
|
|
54
98
|
}
|
|
55
99
|
/** 存档不存在 / 过期 / 不属于本会话(模型可见,英文;不区分几种情况,不泄露别处的存档是否存在)。 */
|
|
56
100
|
export const outputNotFoundText = (id) => `Output ${id} not found or expired. Run the tool that produced it again to get a new output id.`;
|
package/dist/tools/pipeline.d.ts
CHANGED
|
@@ -1,20 +1,24 @@
|
|
|
1
1
|
import { type FormAnswer, type InputForm, type Logger } from "@capybara-hq/plugin-sdk";
|
|
2
|
-
import type { Transaction } from "kysely";
|
|
3
2
|
import { type AgentDefinition } from "../agents/definition.js";
|
|
4
|
-
import
|
|
5
|
-
import type {
|
|
6
|
-
import
|
|
3
|
+
import { EventLog } from "../conversations/event-log.js";
|
|
4
|
+
import type { KernelSchemaDb } from "../db/kernel-schema.js";
|
|
5
|
+
import { ExtensionHost } from "../extensions/host.js";
|
|
6
|
+
import { KernelConfigService } from "../infra/config/kernel-config.service.js";
|
|
7
|
+
import { KernelDb } from "../infra/database/kernel-db.js";
|
|
8
|
+
import { TransactionHost } from "../infra/database/transaction-host.js";
|
|
7
9
|
import type { OrgRole } from "../orgs/roles.js";
|
|
8
10
|
import { type ConversationKindForHooks, type HookRunner } from "../runtime/hook-calls.js";
|
|
9
11
|
import { type SubagentParent, type WaitingFor } from "../runtime/loop.js";
|
|
10
12
|
import type { DispatchOutcome } from "../runtime/subagents/dispatch.js";
|
|
11
|
-
import
|
|
12
|
-
import {
|
|
13
|
+
import { SubagentsService } from "../runtime/subagents/subagents.service.js";
|
|
14
|
+
import { ApprovalsService } from "./approvals.service.js";
|
|
15
|
+
import { Breaker } from "./breaker.js";
|
|
13
16
|
import { type AgentToolInputT } from "./builtins/agent.js";
|
|
14
|
-
import {
|
|
15
|
-
import {
|
|
16
|
-
import
|
|
17
|
-
import
|
|
17
|
+
import { Credentials } from "./credentials.js";
|
|
18
|
+
import { ToolDrift } from "./drift.js";
|
|
19
|
+
import { ToolOutputs } from "./outputs.js";
|
|
20
|
+
import { QuestionsService } from "./questions.service.js";
|
|
21
|
+
import { type ResolvedTool, ToolRegistry } from "./registry.js";
|
|
18
22
|
/** 审批被拒绝。 */
|
|
19
23
|
export declare const APPROVAL_DENIED_TEXT = "The user denied this tool call.";
|
|
20
24
|
/**
|
|
@@ -94,55 +98,63 @@ export interface PolicyContext {
|
|
|
94
98
|
}
|
|
95
99
|
/** 管线第 3 阶段:策略判定。 */
|
|
96
100
|
export type DecidePolicy = (tool: ResolvedTool, agentDef: AgentDefinition, ctx: PolicyContext) => Promise<PolicyDecision>;
|
|
97
|
-
/**
|
|
101
|
+
/** The pipeline's test seams (`TOOL_PIPELINE_HOOKS`; the kernel never provides them). */
|
|
98
102
|
export interface ToolPipelineHooks {
|
|
99
|
-
/**
|
|
103
|
+
/**
|
|
104
|
+
* Called after a tool returned and before its result is logged: throwing simulates a crash
|
|
105
|
+
* between the execution and the record ("executed, result not recorded").
|
|
106
|
+
*/
|
|
100
107
|
afterExecute?(runId: string, callId: string): Promise<void>;
|
|
108
|
+
/** The policy decision; default {@link createDecidePolicy} (reads policies and grants live). */
|
|
109
|
+
decidePolicy?: DecidePolicy;
|
|
101
110
|
}
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
111
|
+
/** Optional provider: the pipeline's {@link ToolPipelineHooks} (tests). */
|
|
112
|
+
export declare const TOOL_PIPELINE_HOOKS: unique symbol;
|
|
113
|
+
/** What the pipeline calls through (the sub-agent dispatch is read at call time). */
|
|
114
|
+
interface PipelineDeps {
|
|
115
|
+
/** The kernel-schema handle of the current context (its transaction, else the pool). */
|
|
116
|
+
readonly db: KernelSchemaDb;
|
|
117
|
+
readonly eventLog: EventLog;
|
|
118
|
+
readonly registry: Pick<ToolRegistry, "forAgent" | "findConnector" | "handler">;
|
|
119
|
+
readonly credentials: Pick<Credentials, "injection" | "onUnauthorized">;
|
|
120
|
+
readonly breaker: Pick<Breaker, "check" | "failure" | "success">;
|
|
121
|
+
readonly outputs: Pick<ToolOutputs, "save" | "load">;
|
|
109
122
|
/** 策略为 `ask` 时建审批;续跑时读该调用的审批结果。 */
|
|
110
|
-
approvals: Pick<ApprovalsService, "request" | "forCall">;
|
|
123
|
+
readonly approvals: Pick<ApprovalsService, "request" | "forCall">;
|
|
111
124
|
/** 处理函数返回 `input_required` 时建输入请求;续跑时读该调用的各轮输入请求。 */
|
|
112
|
-
questions: Pick<QuestionsService, "ask" | "forCall">;
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
/** 默认 {@link createDecidePolicy}(执行时实时读取策略与授权)。 */
|
|
116
|
-
decidePolicy?: DecidePolicy;
|
|
117
|
-
hooks?: ToolPipelineHooks;
|
|
125
|
+
readonly questions: Pick<QuestionsService, "ask" | "forCall">;
|
|
126
|
+
readonly log: Logger;
|
|
127
|
+
readonly hooks: ToolPipelineHooks | undefined;
|
|
118
128
|
/**
|
|
119
129
|
* Plugin hooks (`tool.preExecute` policy / observe after policy and approval, `tool.postExecute`
|
|
120
|
-
* observe after the result). Only the chat pipeline
|
|
130
|
+
* observe after the result). Only the chat pipeline has them; the eval replay uses
|
|
121
131
|
* `RecordedToolPipeline`, which never runs hooks. Also needs `conversationKind: "chat"` (P-18).
|
|
122
132
|
*/
|
|
123
|
-
pluginHooks
|
|
133
|
+
readonly pluginHooks: HookRunner | undefined;
|
|
124
134
|
/**
|
|
125
|
-
* Ids of an extension's `inline` ui contributions (read live): a plugin tool's
|
|
126
|
-
* must name one of them, otherwise it is dropped with a warning.
|
|
135
|
+
* Ids of an extension's `inline` ui contributions (read live, no alias): a plugin tool's
|
|
136
|
+
* `ToolResult.card` must name one of them, otherwise it is dropped with a warning.
|
|
127
137
|
*/
|
|
128
|
-
inlineViews
|
|
138
|
+
inlineViews(plugin: string): ReadonlySet<string>;
|
|
129
139
|
/**
|
|
130
140
|
* 连接器在调用途中报告工具清单变了(MCP `notifications/tools/list_changed`):内核安排一次该连接器的漂移检查。
|
|
131
141
|
* 不等待、不抛错(实现自己吞掉错误)。
|
|
132
142
|
*/
|
|
133
|
-
onToolsChanged
|
|
143
|
+
onToolsChanged(orgId: string, connectorId: string): void;
|
|
134
144
|
/**
|
|
135
145
|
* Dispatches the sub-agent of an `agent` call (sub-agents spec §7.1; `dispatchSubagent`). Without
|
|
136
146
|
* it, `agent` calls reach the builtin's guard, which refuses them.
|
|
137
147
|
*/
|
|
138
|
-
subagents
|
|
148
|
+
readonly subagents: {
|
|
139
149
|
dispatch(a: {
|
|
140
150
|
ctx: ToolStepContext;
|
|
141
151
|
callId: string;
|
|
142
152
|
input: AgentToolInputT;
|
|
143
153
|
}): Promise<DispatchOutcome>;
|
|
144
|
-
};
|
|
154
|
+
} | undefined;
|
|
145
155
|
}
|
|
156
|
+
/** The sub-agent dispatch the pipeline calls (`SubagentsService.dispatch`). */
|
|
157
|
+
export type SubagentDispatch = NonNullable<PipelineDeps["subagents"]>["dispatch"];
|
|
146
158
|
/** tools 节点处理一步工具调用所需的上下文。 */
|
|
147
159
|
export interface ToolStepContext {
|
|
148
160
|
orgId: string;
|
|
@@ -204,13 +216,6 @@ export type ExecOutcome =
|
|
|
204
216
|
connectorName: string;
|
|
205
217
|
message: string;
|
|
206
218
|
};
|
|
207
|
-
type KernelTrx = Transaction<KernelDatabase>;
|
|
208
|
-
/**
|
|
209
|
-
* The wait of a step whose sub-agents still run (spec §7.2): id `sa-<runId>-<step>`, expiring after
|
|
210
|
-
* the approval timeout plus one run's duration plus 10 minutes (a child may itself wait for an
|
|
211
|
-
* approval); the timeout is a safety net.
|
|
212
|
-
*/
|
|
213
|
-
export declare function subagentsWait(runId: string, step: number, config: Pick<KernelConfig, "tools" | "runtime">, now?: number): WaitingFor;
|
|
214
219
|
/**
|
|
215
220
|
* 工具执行管线(spec 5.4 / 6.2):每个阶段是独立函数——
|
|
216
221
|
* `resolveOutputRefs` → `validateInput` → `decidePolicy` → `execute`(超时、熔断)→ `renderResult` / `spillIfLarge`
|
|
@@ -219,9 +224,15 @@ export declare function subagentsWait(runId: string, step: number, config: Pick<
|
|
|
219
224
|
* 有副作用不盲目重跑(spec 4.3):执行前写 `tool_call_started`;续跑时「有开始无结果」的调用记为结果未知,不再执行。
|
|
220
225
|
*/
|
|
221
226
|
export declare class ToolPipeline {
|
|
222
|
-
private readonly
|
|
227
|
+
private readonly config;
|
|
228
|
+
readonly txHost: TransactionHost;
|
|
223
229
|
private readonly decide;
|
|
224
|
-
|
|
230
|
+
private readonly deps;
|
|
231
|
+
constructor(kdb: KernelDb, eventLog: EventLog,
|
|
232
|
+
/** The `agent` tool's sub-agent dispatch; absent (tests): `agent` calls are refused. */
|
|
233
|
+
subagents: Pick<SubagentsService, "dispatch"> | undefined, registry: Pick<ToolRegistry, "forAgent" | "findConnector" | "handler">, credentials: Pick<Credentials, "injection" | "onUnauthorized">, breaker: Pick<Breaker, "check" | "failure" | "success">, outputs: Pick<ToolOutputs, "save" | "load">, approvals: Pick<ApprovalsService, "request" | "forCall">, questions: Pick<QuestionsService, "ask" | "forCall">, config: Pick<KernelConfigService, "get">, log: Logger,
|
|
234
|
+
/** Plugin hooks and inline ui contributions; absent (tests): no hooks, cards dropped. */
|
|
235
|
+
host: Pick<ExtensionHost, "hooks" | "current"> | undefined, drift: Pick<ToolDrift, "onToolsChanged"> | undefined, txHost: TransactionHost, hooks?: ToolPipelineHooks);
|
|
225
236
|
/**
|
|
226
237
|
* tools 节点:按顺序处理本步 assistant 消息里的全部 `tool_call`,每个调用都以一条 `tool_result` 结束
|
|
227
238
|
* (之后才回到 prepare 构建下一次请求,保持「已记录调用、未记录结果之间不构建请求」的不变式)。
|
|
@@ -241,19 +252,22 @@ export declare class ToolPipeline {
|
|
|
241
252
|
* result, from the replica that writes it (spec §11).
|
|
242
253
|
*/
|
|
243
254
|
private finishAgentCall;
|
|
255
|
+
/** {@link stopOpenAgentCalls} in a transaction of its own (a stop seen by the tools node). */
|
|
256
|
+
private stopOpenAgentCallsNow;
|
|
244
257
|
/**
|
|
245
|
-
* Writes, in `
|
|
258
|
+
* Writes, in the caller's transaction (`mandatory`), the `tool_result` of every open `agent` call
|
|
259
|
+
* of a run that is being stopped
|
|
246
260
|
* (sub-agents spec §12: a person stopped it while it waited on sub-agents, or its deadline or a
|
|
247
261
|
* stop hit its tools node after a dispatch). A call whose child already ended gets the child's
|
|
248
262
|
* result (and the missing `subagent_finished`); one whose child is still active gets
|
|
249
263
|
* {@link AGENT_STOPPED_WITH_RUN_TEXT}. The caller stops those children after its commit.
|
|
250
264
|
*
|
|
251
|
-
* Like every `agent` result (see {@link finishAgentCall}), each is audited `tool.called` in
|
|
265
|
+
* Like every `agent` result (see {@link finishAgentCall}), each is audited `tool.called` in it
|
|
252
266
|
* (duration: the child's, or the time since the dispatch) and fires `tool.postExecute`, through
|
|
253
267
|
* `fire()`, which the caller runs after its commit. Returns the steps and calls written (the
|
|
254
268
|
* caller must not write a "not executed" result for them) and the highest seq written.
|
|
255
269
|
*/
|
|
256
|
-
stopOpenAgentCalls(
|
|
270
|
+
stopOpenAgentCalls(runId: string, agent?: AgentDefinition): Promise<{
|
|
257
271
|
steps: number[];
|
|
258
272
|
callIds: Set<string>;
|
|
259
273
|
toSeq: number | null;
|
|
@@ -318,5 +332,7 @@ export declare class ToolPipeline {
|
|
|
318
332
|
* 放行依据(审批人 / 授权 / 策略)。不含参数、结果与凭据。
|
|
319
333
|
*/
|
|
320
334
|
private writeResult;
|
|
335
|
+
/** The result's events and audit rows in one transaction (see {@link writeResult}). */
|
|
336
|
+
private writeResultIn;
|
|
321
337
|
}
|
|
322
338
|
export {};
|
package/dist/tools/pipeline.js
CHANGED
|
@@ -1,25 +1,47 @@
|
|
|
1
|
+
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
|
2
|
+
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
3
|
+
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
4
|
+
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
5
|
+
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
6
|
+
};
|
|
7
|
+
var __param = (this && this.__param) || function (paramIndex, decorator) {
|
|
8
|
+
return function (target, key) { decorator(target, key, paramIndex); }
|
|
9
|
+
};
|
|
1
10
|
import { ToolError, validateInputForm, validateToolDisplay, } from "@capybara-hq/plugin-sdk";
|
|
11
|
+
import { Inject, Injectable, Optional } from "@nestjs/common";
|
|
2
12
|
import { normalizeStoredDefinition } from "../agents/definition.js";
|
|
13
|
+
import { EventLog } from "../conversations/event-log.js";
|
|
3
14
|
import { ToolViewSchema } from "../conversations/events.js";
|
|
4
15
|
import { clipText } from "../extensions/hooks.js";
|
|
16
|
+
import { ExtensionHost } from "../extensions/host.js";
|
|
5
17
|
import { ExtensionUnloadedError, PLUGIN_UNLOADED_TOOL_ERROR } from "../extensions/inflight.js";
|
|
6
18
|
import { audit } from "../identity/audit.js";
|
|
19
|
+
import { KernelConfigService } from "../infra/config/kernel-config.service.js";
|
|
20
|
+
import { KernelDb } from "../infra/database/kernel-db.js";
|
|
21
|
+
import { TransactionHost } from "../infra/database/transaction-host.js";
|
|
22
|
+
import { Transactional } from "../infra/database/transactional.decorator.js";
|
|
23
|
+
import { KERNEL_LOGGER } from "../infra/tokens.js";
|
|
7
24
|
import { UNKNOWN_RESULT_TEXT } from "../runtime/context/pairing.js";
|
|
8
25
|
import { fireObserve, hookDeniedAudit, hookDeniedEvent, hookScope, } from "../runtime/hook-calls.js";
|
|
9
|
-
import {
|
|
26
|
+
import { subagentsWait, subagentWaitingIdemKey, } from "../runtime/loop.js";
|
|
10
27
|
import { assistantIdemKey, MAX_MODEL_ATTEMPTS, modelCallIdemKey } from "../runtime/model-call.js";
|
|
11
28
|
import { TERMINAL_STATUSES } from "../runtime/run-finish.js";
|
|
12
29
|
import { childResult, dispatchOfCall, finishedEvent, } from "../runtime/subagents/child.js";
|
|
13
30
|
import { forkSeqOfCall, pairStoppedForks } from "../runtime/subagents/skill-fork.js";
|
|
31
|
+
import { SubagentsService } from "../runtime/subagents/subagents.service.js";
|
|
14
32
|
import { skillLoadOfferedIn } from "../skills/catalog.js";
|
|
15
|
-
import {
|
|
33
|
+
import { ApprovalsService } from "./approvals.service.js";
|
|
34
|
+
import { Breaker, breakerOpenMessage } from "./breaker.js";
|
|
16
35
|
import { AGENT_STOPPED_WITH_RUN_TEXT, AGENT_TOOL, AgentToolInput, } from "./builtins/agent.js";
|
|
17
36
|
import { isAlwaysLoaded, notLoadedText } from "./builtins/tool-search.js";
|
|
18
|
-
import { CredentialMissing } from "./credentials.js";
|
|
37
|
+
import { CredentialMissing, Credentials } from "./credentials.js";
|
|
38
|
+
import { ToolDrift } from "./drift.js";
|
|
19
39
|
import { ElicitationSession } from "./elicitation.js";
|
|
20
|
-
import { renderResult, resolveOutputRefs, spillIfLarge } from "./outputs.js";
|
|
40
|
+
import { renderResult, resolveOutputRefs, spillIfLarge, ToolOutputs } from "./outputs.js";
|
|
21
41
|
import { createDecidePolicy } from "./policy.js";
|
|
42
|
+
import { QuestionsService } from "./questions.service.js";
|
|
22
43
|
import { redactDeep, redactorFor } from "./redact.js";
|
|
44
|
+
import { ToolRegistry, } from "./registry.js";
|
|
23
45
|
import { runResourceTool } from "./resources.js";
|
|
24
46
|
import { validateInput } from "./validate.js";
|
|
25
47
|
// ---- 模型可见文案(英文) ----
|
|
@@ -60,22 +82,10 @@ const invalidFormText = (key, problems) => `Tool ${key} returned an invalid inpu
|
|
|
60
82
|
const stateTooLargeText = (key) => `Tool ${key} returned input state larger than ${MAX_INPUT_STATE_BYTES / 1024} KB.`;
|
|
61
83
|
const personalMissingText = (connectorName) => `The user has not connected ${connectorName}. A connect card was shown; ask the user to connect, then retry.`;
|
|
62
84
|
const orgMissingText = (connectorName) => `${connectorName} has no organization credential configured; ask an organization admin to set it up.`;
|
|
85
|
+
/** Optional provider: the pipeline's {@link ToolPipelineHooks} (tests). */
|
|
86
|
+
export const TOOL_PIPELINE_HOOKS = Symbol("TOOL_PIPELINE_HOOKS");
|
|
63
87
|
/** `runCall` dispatched a sub-agent: the call stays open until the child run finishes. */
|
|
64
88
|
const OPEN = "open";
|
|
65
|
-
/**
|
|
66
|
-
* The wait of a step whose sub-agents still run (spec §7.2): id `sa-<runId>-<step>`, expiring after
|
|
67
|
-
* the approval timeout plus one run's duration plus 10 minutes (a child may itself wait for an
|
|
68
|
-
* approval); the timeout is a safety net.
|
|
69
|
-
*/
|
|
70
|
-
export function subagentsWait(runId, step, config, now = Date.now()) {
|
|
71
|
-
const ms = config.tools.approvalTimeoutHours * 3_600_000 + config.runtime.maxRunSeconds * 1000 + 600_000;
|
|
72
|
-
return {
|
|
73
|
-
kind: "subagents",
|
|
74
|
-
id: subagentsWaitId(runId, step),
|
|
75
|
-
expiresAt: new Date(now + ms).toISOString(),
|
|
76
|
-
step,
|
|
77
|
-
};
|
|
78
|
-
}
|
|
79
89
|
const approvalAuthorization = (a) => ({
|
|
80
90
|
approvalId: a.id,
|
|
81
91
|
approvedByAccountId: a.decidedBy,
|
|
@@ -143,12 +153,47 @@ const inputWait = (q) => ({
|
|
|
143
153
|
*
|
|
144
154
|
* 有副作用不盲目重跑(spec 4.3):执行前写 `tool_call_started`;续跑时「有开始无结果」的调用记为结果未知,不再执行。
|
|
145
155
|
*/
|
|
146
|
-
|
|
147
|
-
|
|
156
|
+
let ToolPipeline = class ToolPipeline {
|
|
157
|
+
config;
|
|
158
|
+
txHost;
|
|
148
159
|
decide;
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
160
|
+
deps;
|
|
161
|
+
constructor(kdb, eventLog,
|
|
162
|
+
/** The `agent` tool's sub-agent dispatch; absent (tests): `agent` calls are refused. */
|
|
163
|
+
subagents, registry, credentials, breaker, outputs, approvals, questions, config, log,
|
|
164
|
+
/** Plugin hooks and inline ui contributions; absent (tests): no hooks, cards dropped. */
|
|
165
|
+
host, drift, txHost, hooks) {
|
|
166
|
+
this.config = config;
|
|
167
|
+
this.txHost = txHost;
|
|
168
|
+
this.deps = {
|
|
169
|
+
get db() {
|
|
170
|
+
return kdb.db;
|
|
171
|
+
},
|
|
172
|
+
eventLog,
|
|
173
|
+
registry,
|
|
174
|
+
credentials,
|
|
175
|
+
breaker,
|
|
176
|
+
outputs,
|
|
177
|
+
approvals,
|
|
178
|
+
questions,
|
|
179
|
+
log,
|
|
180
|
+
hooks,
|
|
181
|
+
get pluginHooks() {
|
|
182
|
+
return host?.hooks;
|
|
183
|
+
},
|
|
184
|
+
inlineViews: (plugin) => new Set((host?.current(plugin)?.manifest.ui ?? [])
|
|
185
|
+
.filter((c) => c.place === "inline" && c.aliasOf === undefined)
|
|
186
|
+
.map((c) => c.id)),
|
|
187
|
+
onToolsChanged: (orgId, connectorId) => {
|
|
188
|
+
void drift?.onToolsChanged(orgId, connectorId);
|
|
189
|
+
},
|
|
190
|
+
get subagents() {
|
|
191
|
+
return subagents ? { dispatch: (a) => subagents.dispatch(a) } : undefined;
|
|
192
|
+
},
|
|
193
|
+
};
|
|
194
|
+
const decide = hooks?.decidePolicy;
|
|
195
|
+
// the default policy reads live, on the context's handle
|
|
196
|
+
this.decide = decide ?? ((tool, def, c) => createDecidePolicy(kdb.db)(tool, def, c));
|
|
152
197
|
}
|
|
153
198
|
/**
|
|
154
199
|
* tools 节点:按顺序处理本步 assistant 消息里的全部 `tool_call`,每个调用都以一条 `tool_result` 结束
|
|
@@ -203,9 +248,7 @@ export class ToolPipeline {
|
|
|
203
248
|
// their calls get their results now, and the children are stopped after the run's terminal
|
|
204
249
|
// commit (spec §12)
|
|
205
250
|
if (ctx.signal.aborted) {
|
|
206
|
-
const stopped = await this.
|
|
207
|
-
.transaction()
|
|
208
|
-
.execute((t) => this.stopOpenAgentCalls(t, ctx.runId, ctx.agent));
|
|
251
|
+
const stopped = await this.stopOpenAgentCallsNow(ctx.runId, ctx.agent);
|
|
209
252
|
if (stopped.toSeq !== null) {
|
|
210
253
|
await eventLog.notify(ctx.conversationId, stopped.toSeq);
|
|
211
254
|
}
|
|
@@ -214,7 +257,7 @@ export class ToolPipeline {
|
|
|
214
257
|
}
|
|
215
258
|
return {
|
|
216
259
|
kind: "suspended",
|
|
217
|
-
waitingFor: subagentsWait(ctx.runId, ctx.step, this.
|
|
260
|
+
waitingFor: subagentsWait(ctx.runId, ctx.step, this.config.get()),
|
|
218
261
|
};
|
|
219
262
|
}
|
|
220
263
|
return { kind: "done" };
|
|
@@ -268,19 +311,25 @@ export class ToolPipeline {
|
|
|
268
311
|
}
|
|
269
312
|
return true;
|
|
270
313
|
}
|
|
314
|
+
/** {@link stopOpenAgentCalls} in a transaction of its own (a stop seen by the tools node). */
|
|
315
|
+
async stopOpenAgentCallsNow(runId, agent) {
|
|
316
|
+
return this.stopOpenAgentCalls(runId, agent);
|
|
317
|
+
}
|
|
271
318
|
/**
|
|
272
|
-
* Writes, in `
|
|
319
|
+
* Writes, in the caller's transaction (`mandatory`), the `tool_result` of every open `agent` call
|
|
320
|
+
* of a run that is being stopped
|
|
273
321
|
* (sub-agents spec §12: a person stopped it while it waited on sub-agents, or its deadline or a
|
|
274
322
|
* stop hit its tools node after a dispatch). A call whose child already ended gets the child's
|
|
275
323
|
* result (and the missing `subagent_finished`); one whose child is still active gets
|
|
276
324
|
* {@link AGENT_STOPPED_WITH_RUN_TEXT}. The caller stops those children after its commit.
|
|
277
325
|
*
|
|
278
|
-
* Like every `agent` result (see {@link finishAgentCall}), each is audited `tool.called` in
|
|
326
|
+
* Like every `agent` result (see {@link finishAgentCall}), each is audited `tool.called` in it
|
|
279
327
|
* (duration: the child's, or the time since the dispatch) and fires `tool.postExecute`, through
|
|
280
328
|
* `fire()`, which the caller runs after its commit. Returns the steps and calls written (the
|
|
281
329
|
* caller must not write a "not executed" result for them) and the highest seq written.
|
|
282
330
|
*/
|
|
283
|
-
async stopOpenAgentCalls(
|
|
331
|
+
async stopOpenAgentCalls(runId, agent) {
|
|
332
|
+
const t = this.deps.db;
|
|
284
333
|
// phase D: the run's fork invocation without a report gets one (a fork has no tool call)
|
|
285
334
|
const forks = await pairStoppedForks(t, this.deps.eventLog, runId);
|
|
286
335
|
const none = {
|
|
@@ -395,7 +444,7 @@ export class ToolPipeline {
|
|
|
395
444
|
}
|
|
396
445
|
if (calls.length === 0)
|
|
397
446
|
return none;
|
|
398
|
-
const written = await this.deps.eventLog.
|
|
447
|
+
const written = await this.deps.eventLog.appendIn(conversationId, events);
|
|
399
448
|
for (const c of calls) {
|
|
400
449
|
const approval = await t
|
|
401
450
|
.selectFrom("approvals")
|
|
@@ -719,7 +768,7 @@ export class ToolPipeline {
|
|
|
719
768
|
const card = outcome.kind === "result" && tool.source.kind === "plugin"
|
|
720
769
|
? this.cardOf(outcome.result, tool.source.plugin, tool.key)
|
|
721
770
|
: undefined;
|
|
722
|
-
const cfg = this.
|
|
771
|
+
const cfg = this.config.get().tools;
|
|
723
772
|
const spilled = await spillIfLarge(rendered.text, {
|
|
724
773
|
// 内置工具可给更低的转存阈值(沙箱 bash 30000 字符)
|
|
725
774
|
spillChars: Math.min(cfg.outputSpillChars, tool.spillChars ?? Number.POSITIVE_INFINITY),
|
|
@@ -880,7 +929,7 @@ export class ToolPipeline {
|
|
|
880
929
|
ctx.parent !== undefined && { sandboxConversationId: ctx.parent.conversationId }),
|
|
881
930
|
};
|
|
882
931
|
// 内置工具可按输入给自己的时限(沙箱 bash 按命令超时加余量);缺省 tools.timeoutMs
|
|
883
|
-
const timeoutMs = tool.timeoutMs?.(input) ?? this.
|
|
932
|
+
const timeoutMs = tool.timeoutMs?.(input) ?? this.config.get().tools.timeoutMs;
|
|
884
933
|
try {
|
|
885
934
|
const r = await this.bounded(ctx.signal, (signal) => handler(input, { ...base, signal }), undefined, timeoutMs);
|
|
886
935
|
if (r === "timeout") {
|
|
@@ -898,7 +947,7 @@ export class ToolPipeline {
|
|
|
898
947
|
}
|
|
899
948
|
}
|
|
900
949
|
async executeConnector(tool, source, input, ctx, resume) {
|
|
901
|
-
const { db, registry, breaker, credentials
|
|
950
|
+
const { db, registry, breaker, credentials } = this.deps;
|
|
902
951
|
const { orgId } = ctx;
|
|
903
952
|
const connectorId = source.connectorId;
|
|
904
953
|
const app = await db
|
|
@@ -1011,7 +1060,7 @@ export class ToolPipeline {
|
|
|
1011
1060
|
onElicit: elicit.handle,
|
|
1012
1061
|
onToolsChanged: () => {
|
|
1013
1062
|
try {
|
|
1014
|
-
this.deps.onToolsChanged
|
|
1063
|
+
this.deps.onToolsChanged(orgId, connectorId);
|
|
1015
1064
|
}
|
|
1016
1065
|
catch (err) {
|
|
1017
1066
|
this.deps.log.warn("tools changed notification failed", {
|
|
@@ -1037,7 +1086,7 @@ export class ToolPipeline {
|
|
|
1037
1086
|
return ask;
|
|
1038
1087
|
if (r === "timeout") {
|
|
1039
1088
|
await breaker.failure(orgId, connectorId);
|
|
1040
|
-
return { kind: "error", message: timeoutText(tool.key, config().tools.timeoutMs) };
|
|
1089
|
+
return { kind: "error", message: timeoutText(tool.key, this.config.get().tools.timeoutMs) };
|
|
1041
1090
|
}
|
|
1042
1091
|
// 工具自己报告的错误(isError)说明服务可用,也算成功。
|
|
1043
1092
|
await breaker.success(orgId, connectorId);
|
|
@@ -1084,7 +1133,7 @@ export class ToolPipeline {
|
|
|
1084
1133
|
/** 额外参与竞速的信号(不传给 work):中止时以 `Stopped` 抛出,由调用方判断原因。 */
|
|
1085
1134
|
interrupt,
|
|
1086
1135
|
/** 时限(毫秒),缺省 `tools.timeoutMs`。 */
|
|
1087
|
-
timeoutMs = this.
|
|
1136
|
+
timeoutMs = this.config.get().tools.timeoutMs) {
|
|
1088
1137
|
if (runSignal.aborted)
|
|
1089
1138
|
return "aborted";
|
|
1090
1139
|
const timeout = new AbortController();
|
|
@@ -1157,7 +1206,7 @@ export class ToolPipeline {
|
|
|
1157
1206
|
if (c === undefined)
|
|
1158
1207
|
return undefined;
|
|
1159
1208
|
const x = (typeof c === "object" && c !== null ? c : {});
|
|
1160
|
-
const views = this.deps.inlineViews
|
|
1209
|
+
const views = this.deps.inlineViews(plugin);
|
|
1161
1210
|
const keyOk = x.key === undefined || (typeof x.key === "string" && x.key !== "" && x.key.length <= 200);
|
|
1162
1211
|
if (typeof x.view !== "string" || !views?.has(x.view) || !keyOk) {
|
|
1163
1212
|
this.deps.log.warn("tool returned an inline card that is not an inline view of its extension; dropped", {
|
|
@@ -1205,32 +1254,64 @@ export class ToolPipeline {
|
|
|
1205
1254
|
await this.deps.eventLog.append(ctx.conversationId, events);
|
|
1206
1255
|
return;
|
|
1207
1256
|
}
|
|
1208
|
-
const written = await this.
|
|
1209
|
-
|
|
1210
|
-
|
|
1211
|
-
|
|
1212
|
-
|
|
1213
|
-
|
|
1214
|
-
|
|
1215
|
-
|
|
1216
|
-
|
|
1217
|
-
|
|
1218
|
-
target: ctx.conversationId,
|
|
1219
|
-
detail: {
|
|
1220
|
-
toolKey,
|
|
1221
|
-
isError: r.isError,
|
|
1222
|
-
durationMs: callAudit.durationMs,
|
|
1223
|
-
agentId: ctx.agentId,
|
|
1224
|
-
agentVersion: ctx.agentVersion,
|
|
1225
|
-
conversationId: ctx.conversationId,
|
|
1226
|
-
runId: ctx.runId,
|
|
1227
|
-
callId,
|
|
1228
|
-
...(callAudit.connectorId !== null && { connectorId: callAudit.connectorId }),
|
|
1229
|
-
...callAudit.authorization,
|
|
1230
|
-
},
|
|
1231
|
-
});
|
|
1257
|
+
const written = await this.writeResultIn(ctx, callId, toolKey, r, events, callAudit, audits);
|
|
1258
|
+
await this.deps.eventLog.notify(ctx.conversationId, Math.max(...written.map((e) => e.seq)));
|
|
1259
|
+
}
|
|
1260
|
+
/** The result's events and audit rows in one transaction (see {@link writeResult}). */
|
|
1261
|
+
async writeResultIn(ctx, callId, toolKey, r, events, callAudit, audits) {
|
|
1262
|
+
const t = this.deps.db;
|
|
1263
|
+
const out = await this.deps.eventLog.appendIn(ctx.conversationId, events);
|
|
1264
|
+
for (const a of audits)
|
|
1265
|
+
await audit(t, a);
|
|
1266
|
+
if (callAudit === undefined)
|
|
1232
1267
|
return out;
|
|
1268
|
+
await audit(t, {
|
|
1269
|
+
actorAccountId: ctx.accountId,
|
|
1270
|
+
orgId: ctx.orgId,
|
|
1271
|
+
action: "tool.called",
|
|
1272
|
+
target: ctx.conversationId,
|
|
1273
|
+
detail: {
|
|
1274
|
+
toolKey,
|
|
1275
|
+
isError: r.isError,
|
|
1276
|
+
durationMs: callAudit.durationMs,
|
|
1277
|
+
agentId: ctx.agentId,
|
|
1278
|
+
agentVersion: ctx.agentVersion,
|
|
1279
|
+
conversationId: ctx.conversationId,
|
|
1280
|
+
runId: ctx.runId,
|
|
1281
|
+
callId,
|
|
1282
|
+
...(callAudit.connectorId !== null && { connectorId: callAudit.connectorId }),
|
|
1283
|
+
...callAudit.authorization,
|
|
1284
|
+
},
|
|
1233
1285
|
});
|
|
1234
|
-
|
|
1286
|
+
return out;
|
|
1235
1287
|
}
|
|
1236
|
-
}
|
|
1288
|
+
};
|
|
1289
|
+
__decorate([
|
|
1290
|
+
Transactional()
|
|
1291
|
+
], ToolPipeline.prototype, "stopOpenAgentCallsNow", null);
|
|
1292
|
+
__decorate([
|
|
1293
|
+
Transactional({ propagation: "mandatory" })
|
|
1294
|
+
], ToolPipeline.prototype, "stopOpenAgentCalls", null);
|
|
1295
|
+
__decorate([
|
|
1296
|
+
Transactional()
|
|
1297
|
+
], ToolPipeline.prototype, "writeResultIn", null);
|
|
1298
|
+
ToolPipeline = __decorate([
|
|
1299
|
+
Injectable(),
|
|
1300
|
+
__param(0, Inject(KernelDb)),
|
|
1301
|
+
__param(1, Inject(EventLog)),
|
|
1302
|
+
__param(2, Inject(SubagentsService)),
|
|
1303
|
+
__param(3, Inject(ToolRegistry)),
|
|
1304
|
+
__param(4, Inject(Credentials)),
|
|
1305
|
+
__param(5, Inject(Breaker)),
|
|
1306
|
+
__param(6, Inject(ToolOutputs)),
|
|
1307
|
+
__param(7, Inject(ApprovalsService)),
|
|
1308
|
+
__param(8, Inject(QuestionsService)),
|
|
1309
|
+
__param(9, Inject(KernelConfigService)),
|
|
1310
|
+
__param(10, Inject(KERNEL_LOGGER)),
|
|
1311
|
+
__param(11, Inject(ExtensionHost)),
|
|
1312
|
+
__param(12, Inject(ToolDrift)),
|
|
1313
|
+
__param(13, Inject(TransactionHost)),
|
|
1314
|
+
__param(14, Optional()),
|
|
1315
|
+
__param(14, Inject(TOOL_PIPELINE_HOOKS))
|
|
1316
|
+
], ToolPipeline);
|
|
1317
|
+
export { ToolPipeline };
|
package/dist/tools/policy.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type {
|
|
1
|
+
import type { KernelSchemaDb } from "../db/kernel-schema.js";
|
|
2
2
|
import type { DecidePolicy } from "./pipeline.js";
|
|
3
3
|
import type { ResolvedTool, ToolPolicy } from "./registry.js";
|
|
4
4
|
/**
|
|
@@ -57,4 +57,4 @@ export declare function isFixedAsk(tool: ResolvedTool, visibility?: "private" |
|
|
|
57
57
|
*
|
|
58
58
|
* 结果为 `ask` 时返回审批请求,默认指向发起人本人;记住的授权把 `ask` 放行时返回 `{ grant }`(按 allow 执行)。
|
|
59
59
|
*/
|
|
60
|
-
export declare function createDecidePolicy(db:
|
|
60
|
+
export declare function createDecidePolicy(db: KernelSchemaDb): DecidePolicy;
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { z } from "zod";
|
|
2
2
|
import { type Principal } from "../identity/principal.js";
|
|
3
3
|
import { type OrgContext } from "../orgs/org.guard.js";
|
|
4
|
-
import
|
|
4
|
+
import { QuestionsService, type QuestionView } from "./questions.service.js";
|
|
5
5
|
/** 回答体:`answer` 的形状由服务按表单校验(`validateAnswer`,不符 → `validation_failed`)。 */
|
|
6
6
|
declare const AnswerBody: z.ZodObject<{
|
|
7
7
|
answer: z.ZodRecord<z.ZodString, z.ZodUnknown>;
|