@capybara-hq/kernel 0.1.0-rc.1 → 0.1.0-rc.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/admin/admin.controller.d.ts +17 -17
- package/dist/admin/admin.controller.js +43 -26
- package/dist/admin/admin.module.d.ts +3 -0
- package/dist/admin/admin.module.js +22 -0
- package/dist/admin/extensions.controller.d.ts +14 -14
- package/dist/admin/extensions.controller.js +30 -17
- package/dist/admin/setup-lock.d.ts +16 -0
- package/dist/admin/setup-lock.js +47 -0
- package/dist/admin/setup.controller.d.ts +8 -8
- package/dist/admin/setup.controller.js +27 -25
- package/dist/admin/setup.service.d.ts +19 -27
- package/dist/admin/setup.service.js +61 -61
- package/dist/agents/agent-lookup.d.ts +53 -0
- package/dist/agents/agent-lookup.js +187 -0
- package/dist/agents/agents.controller.d.ts +1 -1
- package/dist/agents/agents.controller.js +14 -8
- package/dist/agents/agents.module.d.ts +7 -0
- package/dist/agents/agents.module.js +41 -0
- package/dist/agents/agents.service.d.ts +39 -58
- package/dist/agents/agents.service.js +280 -335
- package/dist/agents/definition.d.ts +39 -8
- package/dist/agents/definition.js +201 -17
- package/dist/agents/models.controller.d.ts +1 -1
- package/dist/agents/models.controller.js +2 -2
- package/dist/agents/templates.controller.d.ts +1 -1
- package/dist/agents/templates.controller.js +2 -2
- package/dist/agents/templates.d.ts +6 -8
- package/dist/agents/templates.js +39 -8
- package/dist/app.d.ts +93 -0
- package/dist/app.js +150 -0
- package/dist/catalog/admin-catalog.controller.d.ts +3 -3
- package/dist/catalog/admin-catalog.controller.js +27 -13
- package/dist/catalog/catalog-content.d.ts +185 -0
- package/dist/catalog/catalog-content.js +326 -0
- package/dist/catalog/catalog-items.d.ts +186 -0
- package/dist/catalog/catalog-items.js +410 -0
- package/dist/catalog/catalog.module.d.ts +14 -0
- package/dist/catalog/catalog.module.js +71 -0
- package/dist/catalog/catalog.service.d.ts +34 -188
- package/dist/catalog/catalog.service.js +155 -489
- package/dist/catalog/claude/agents.js +13 -10
- package/dist/catalog/cli.d.ts +3 -2
- package/dist/catalog/cli.js +13 -31
- package/dist/catalog/job-ids.d.ts +15 -0
- package/dist/catalog/job-ids.js +15 -0
- package/dist/catalog/jobs.d.ts +27 -0
- package/dist/catalog/jobs.js +70 -0
- package/dist/catalog/locks.d.ts +24 -0
- package/dist/catalog/locks.js +63 -0
- package/dist/catalog/marketplaces.controller.d.ts +4 -4
- package/dist/catalog/marketplaces.controller.js +22 -11
- package/dist/catalog/marketplaces.service.d.ts +31 -14
- package/dist/catalog/marketplaces.service.js +330 -256
- package/dist/catalog/org-catalog.controller.d.ts +4 -3
- package/dist/catalog/org-catalog.controller.js +29 -14
- package/dist/catalog/org-catalog.service.d.ts +32 -198
- package/dist/catalog/org-catalog.service.js +159 -400
- package/dist/catalog/plugin-import.d.ts +73 -34
- package/dist/catalog/plugin-import.js +356 -217
- package/dist/catalog/plugin-install.d.ts +83 -41
- package/dist/catalog/plugin-install.js +421 -269
- package/dist/catalog/plugin-upgrade.d.ts +59 -4
- package/dist/catalog/plugin-upgrade.js +407 -282
- package/dist/catalog/requests.service.d.ts +27 -15
- package/dist/catalog/requests.service.js +201 -145
- package/dist/catalog/upgrade-targets.d.ts +4 -7
- package/dist/channels/actions.d.ts +6 -4
- package/dist/channels/actions.js +1 -1
- package/dist/channels/cards.d.ts +10 -4
- package/dist/channels/cards.js +16 -8
- package/dist/channels/channels.module.d.ts +40 -0
- package/dist/channels/channels.module.js +128 -0
- package/dist/channels/connections.controller.d.ts +1 -1
- package/dist/channels/connections.controller.js +11 -6
- package/dist/channels/connections.service.d.ts +43 -21
- package/dist/channels/connections.service.js +236 -131
- package/dist/channels/inbound.d.ts +34 -38
- package/dist/channels/inbound.js +107 -41
- package/dist/channels/job-ids.d.ts +10 -0
- package/dist/channels/job-ids.js +10 -0
- package/dist/channels/jobs.d.ts +85 -0
- package/dist/channels/jobs.js +157 -0
- package/dist/channels/outbound.d.ts +60 -82
- package/dist/channels/outbound.js +165 -194
- package/dist/channels/supervisor.d.ts +88 -46
- package/dist/channels/supervisor.js +230 -132
- package/dist/channels/threads.d.ts +29 -8
- package/dist/channels/threads.js +71 -13
- package/dist/channels/webhook.d.ts +20 -14
- package/dist/channels/webhook.js +51 -20
- package/dist/config/load.d.ts +3 -2
- package/dist/config/load.js +3 -2
- package/dist/config/nacos-source.js +11 -2
- package/dist/config/schema.d.ts +1 -0
- package/dist/config/schema.js +12 -6
- package/dist/conversations/access.d.ts +29 -0
- package/dist/conversations/access.js +86 -0
- package/dist/conversations/artifacts.d.ts +11 -11
- package/dist/conversations/artifacts.js +36 -10
- package/dist/conversations/attachments.controller.d.ts +1 -1
- package/dist/conversations/attachments.controller.js +8 -6
- package/dist/conversations/attachments.module.d.ts +7 -0
- package/dist/conversations/attachments.module.js +25 -0
- package/dist/conversations/attachments.service.d.ts +30 -22
- package/dist/conversations/attachments.service.js +119 -46
- package/dist/conversations/conversations.controller.d.ts +8 -7
- package/dist/conversations/conversations.controller.js +59 -29
- package/dist/conversations/conversations.module.d.ts +8 -0
- package/dist/conversations/conversations.module.js +69 -0
- package/dist/conversations/conversations.service.d.ts +40 -38
- package/dist/conversations/conversations.service.js +130 -140
- package/dist/conversations/event-log.d.ts +39 -18
- package/dist/conversations/event-log.js +93 -27
- package/dist/conversations/events.d.ts +23 -3
- package/dist/conversations/events.js +26 -14
- package/dist/conversations/files.d.ts +10 -10
- package/dist/conversations/files.js +37 -11
- package/dist/conversations/idem-keys.d.ts +5 -0
- package/dist/conversations/idem-keys.js +5 -0
- package/dist/conversations/job-ids.d.ts +6 -0
- package/dist/conversations/job-ids.js +6 -0
- package/dist/conversations/outputs-read.d.ts +11 -11
- package/dist/conversations/outputs-read.js +31 -7
- package/dist/conversations/queue.d.ts +48 -56
- package/dist/conversations/queue.js +13 -289
- package/dist/conversations/queue.service.d.ts +60 -0
- package/dist/conversations/queue.service.js +343 -0
- package/dist/conversations/sandbox-status.d.ts +13 -10
- package/dist/conversations/sandbox-status.js +36 -8
- package/dist/conversations/titles.d.ts +71 -24
- package/dist/conversations/titles.js +159 -63
- package/dist/ctx/bus.js +9 -3
- package/dist/ctx/create-ctx.d.ts +6 -0
- package/dist/ctx/create-ctx.js +7 -9
- package/dist/ctx/lock.d.ts +7 -3
- package/dist/ctx/lock.js +9 -20
- package/dist/ctx/secrets.d.ts +10 -2
- package/dist/ctx/secrets.js +7 -3
- package/dist/db/kernel-schema.d.ts +4 -4
- package/dist/db/pool.d.ts +5 -0
- package/dist/db/pool.js +1 -0
- package/dist/errors.d.ts +1 -0
- package/dist/errors.js +1 -0
- package/dist/evals/budget.d.ts +42 -21
- package/dist/evals/budget.js +114 -62
- package/dist/evals/evals.module.d.ts +31 -0
- package/dist/evals/evals.module.js +114 -0
- package/dist/evals/jobs.d.ts +20 -0
- package/dist/evals/jobs.js +45 -0
- package/dist/evals/recorded-tools.d.ts +27 -1
- package/dist/evals/recorded-tools.js +85 -10
- package/dist/evals/run-replay.d.ts +61 -8
- package/dist/evals/run-replay.js +159 -85
- package/dist/evals/runs.controller.d.ts +1 -1
- package/dist/evals/runs.controller.js +17 -8
- package/dist/evals/runs.service.d.ts +23 -45
- package/dist/evals/runs.service.js +245 -234
- package/dist/evals/sets.controller.d.ts +1 -1
- package/dist/evals/sets.controller.js +17 -8
- package/dist/evals/sets.service.d.ts +22 -6
- package/dist/evals/sets.service.js +248 -194
- package/dist/evals/snapshot.d.ts +2 -2
- package/dist/evals/step-replay.d.ts +2 -2
- package/dist/evals/step-replay.js +1 -1
- package/dist/evals/trajectory.controller.d.ts +1 -1
- package/dist/evals/trajectory.controller.js +11 -7
- package/dist/evals/trajectory.d.ts +2 -2
- package/dist/evals/trajectory.service.d.ts +5 -4
- package/dist/evals/trajectory.service.js +30 -7
- package/dist/evals/worker.d.ts +44 -27
- package/dist/evals/worker.js +220 -121
- package/dist/extensions/admin-ops.d.ts +61 -33
- package/dist/extensions/admin-ops.js +248 -154
- package/dist/extensions/admin-view.d.ts +38 -27
- package/dist/extensions/admin-view.js +126 -55
- package/dist/extensions/approvals.d.ts +12 -8
- package/dist/extensions/approvals.js +73 -46
- package/dist/extensions/blobs.d.ts +27 -10
- package/dist/extensions/blobs.js +111 -45
- package/dist/extensions/bootstrap.d.ts +58 -31
- package/dist/extensions/bootstrap.js +175 -121
- package/dist/extensions/cli.d.ts +20 -10
- package/dist/extensions/cli.js +41 -96
- package/dist/extensions/config-issues.d.ts +7 -0
- package/dist/extensions/config-issues.js +31 -0
- package/dist/extensions/deployment-config-store.d.ts +49 -0
- package/dist/extensions/deployment-config-store.js +133 -0
- package/dist/extensions/deployment-config.d.ts +58 -67
- package/dist/extensions/deployment-config.js +202 -230
- package/dist/extensions/enabled.d.ts +5 -5
- package/dist/extensions/extensions.module.d.ts +8 -0
- package/dist/extensions/extensions.module.js +77 -0
- package/dist/extensions/hooks.d.ts +3 -2
- package/dist/extensions/hooks.js +1 -1
- package/dist/extensions/host.d.ts +72 -68
- package/dist/extensions/host.js +191 -152
- package/dist/extensions/installs.d.ts +49 -16
- package/dist/extensions/installs.js +128 -32
- package/dist/extensions/job-ids.d.ts +6 -0
- package/dist/extensions/job-ids.js +6 -0
- package/dist/extensions/lifecycle-topics.d.ts +18 -0
- package/dist/extensions/lifecycle-topics.js +18 -0
- package/dist/extensions/lifecycle.d.ts +35 -47
- package/dist/extensions/lifecycle.js +103 -39
- package/dist/extensions/locks.d.ts +33 -0
- package/dist/extensions/locks.js +86 -0
- package/dist/extensions/migrate-lock.d.ts +3 -4
- package/dist/extensions/org-config.controller.d.ts +1 -1
- package/dist/extensions/org-config.controller.js +8 -5
- package/dist/extensions/org-config.d.ts +48 -46
- package/dist/extensions/org-config.js +284 -226
- package/dist/extensions/registry.d.ts +50 -2
- package/dist/extensions/registry.js +89 -4
- package/dist/extensions/sources.d.ts +12 -8
- package/dist/extensions/sources.js +34 -13
- package/dist/files/files.module.d.ts +3 -0
- package/dist/files/files.module.js +22 -0
- package/dist/files/previewers.controller.d.ts +7 -2
- package/dist/files/previewers.controller.js +17 -9
- package/dist/files/previewers.d.ts +13 -18
- package/dist/files/previewers.js +83 -36
- package/dist/http/adapter.d.ts +3 -0
- package/dist/http/adapter.js +25 -0
- package/dist/http/api.module.d.ts +3 -110
- package/dist/http/api.module.js +47 -355
- package/dist/http/app.d.ts +11 -15
- package/dist/http/app.js +17 -62
- package/dist/http/error-filter.module.d.ts +5 -0
- package/dist/http/error-filter.module.js +18 -0
- package/dist/http/error.filter.js +2 -2
- package/dist/identity/accounts.d.ts +82 -29
- package/dist/identity/accounts.js +294 -175
- package/dist/identity/api-tokens.d.ts +11 -7
- package/dist/identity/api-tokens.js +71 -44
- package/dist/identity/audit.d.ts +7 -4
- package/dist/identity/audit.js +5 -1
- package/dist/identity/auth.controller.d.ts +11 -10
- package/dist/identity/auth.controller.js +31 -25
- package/dist/identity/auth.guard.d.ts +3 -3
- package/dist/identity/auth.guard.js +6 -4
- package/dist/identity/binding.d.ts +9 -11
- package/dist/identity/binding.js +41 -13
- package/dist/identity/enterprise-admin.d.ts +18 -12
- package/dist/identity/enterprise-admin.js +67 -13
- package/dist/identity/external-identity-lock.d.ts +17 -0
- package/dist/identity/external-identity-lock.js +39 -0
- package/dist/identity/external.d.ts +19 -15
- package/dist/identity/external.js +163 -125
- package/dist/identity/identity.module.d.ts +6 -0
- package/dist/identity/identity.module.js +56 -0
- package/dist/identity/me.controller.d.ts +16 -15
- package/dist/identity/me.controller.js +37 -31
- package/dist/identity/sessions.d.ts +12 -10
- package/dist/identity/sessions.js +74 -42
- package/dist/identity/settings.d.ts +20 -14
- package/dist/identity/settings.js +86 -58
- package/dist/identity/sso.controller.d.ts +7 -7
- package/dist/identity/sso.controller.js +13 -9
- package/dist/identity/sso.d.ts +9 -12
- package/dist/identity/sso.js +54 -24
- package/dist/inbox/inbox.module.d.ts +3 -0
- package/dist/inbox/inbox.module.js +22 -0
- package/dist/inbox/inbox.service.d.ts +7 -9
- package/dist/inbox/inbox.service.js +32 -11
- package/dist/index.d.ts +16 -11
- package/dist/index.js +9 -6
- package/dist/infra/cache/cache.module.d.ts +3 -0
- package/dist/infra/cache/cache.module.js +16 -0
- package/dist/infra/cache/cache.service.d.ts +21 -0
- package/dist/infra/cache/cache.service.js +80 -0
- package/dist/infra/cache/cacheable.decorator.d.ts +32 -0
- package/dist/infra/cache/cacheable.decorator.js +83 -0
- package/dist/infra/cli/kernel-cli.module.d.ts +66 -0
- package/dist/infra/cli/kernel-cli.module.js +165 -0
- package/dist/infra/close-within.d.ts +15 -0
- package/dist/infra/close-within.js +36 -0
- package/dist/infra/config/config.module.d.ts +13 -0
- package/dist/infra/config/config.module.js +39 -0
- package/dist/infra/config/kernel-config.service.d.ts +25 -0
- package/dist/infra/config/kernel-config.service.js +126 -0
- package/dist/infra/database/after-commit.d.ts +6 -0
- package/dist/infra/database/after-commit.js +9 -0
- package/dist/infra/database/database.module.d.ts +25 -0
- package/dist/infra/database/database.module.js +90 -0
- package/dist/infra/database/kernel-db.d.ts +22 -0
- package/dist/infra/database/kernel-db.js +65 -0
- package/dist/infra/database/transaction-host.d.ts +50 -0
- package/dist/infra/database/transaction-host.js +125 -0
- package/dist/infra/database/transactional.decorator.d.ts +15 -0
- package/dist/infra/database/transactional.decorator.js +27 -0
- package/dist/infra/database/xact-lock.d.ts +17 -0
- package/dist/infra/database/xact-lock.js +43 -0
- package/dist/infra/events/kernel-events.d.ts +96 -0
- package/dist/infra/events/kernel-events.js +65 -0
- package/dist/infra/health/health.controller.d.ts +26 -0
- package/dist/infra/health/health.controller.js +104 -0
- package/dist/infra/health/health.module.d.ts +9 -0
- package/dist/infra/health/health.module.js +24 -0
- package/dist/infra/health/health.options.d.ts +10 -0
- package/dist/infra/health/health.options.js +15 -0
- package/dist/infra/health/shutdown-state.d.ts +6 -0
- package/dist/infra/health/shutdown-state.js +2 -0
- package/dist/infra/lifecycle/graceful-shutdown.module.d.ts +6 -0
- package/dist/infra/lifecycle/graceful-shutdown.module.js +23 -0
- package/dist/infra/lifecycle/graceful-shutdown.service.d.ts +70 -0
- package/dist/infra/lifecycle/graceful-shutdown.service.js +135 -0
- package/dist/infra/lifecycle/process-guards.d.ts +52 -0
- package/dist/infra/lifecycle/process-guards.js +86 -0
- package/dist/infra/lifecycle/shutdown-signals.d.ts +30 -0
- package/dist/infra/lifecycle/shutdown-signals.js +48 -0
- package/dist/infra/lock/key-template.d.ts +13 -0
- package/dist/infra/lock/key-template.js +46 -0
- package/dist/infra/lock/lock.module.d.ts +3 -0
- package/dist/infra/lock/lock.module.js +16 -0
- package/dist/infra/lock/lock.service.d.ts +120 -0
- package/dist/infra/lock/lock.service.js +343 -0
- package/dist/infra/lock/shared-lease.d.ts +44 -0
- package/dist/infra/lock/shared-lease.js +121 -0
- package/dist/infra/lock/with-lock.decorator.d.ts +28 -0
- package/dist/infra/lock/with-lock.decorator.js +49 -0
- package/dist/infra/logging/logging.module.d.ts +16 -0
- package/dist/infra/logging/logging.module.js +34 -0
- package/dist/infra/queue/configured-processor.d.ts +18 -0
- package/dist/infra/queue/configured-processor.js +23 -0
- package/dist/infra/queue/job-failure.d.ts +18 -0
- package/dist/infra/queue/job-failure.js +26 -0
- package/dist/infra/queue/queue-shutdown.d.ts +27 -0
- package/dist/infra/queue/queue-shutdown.js +81 -0
- package/dist/infra/queue/queue.module.d.ts +16 -0
- package/dist/infra/queue/queue.module.js +61 -0
- package/dist/infra/queue/redis-connection.d.ts +7 -0
- package/dist/infra/queue/redis-connection.js +18 -0
- package/dist/infra/queue/retired-schedulers.d.ts +7 -0
- package/dist/infra/queue/retired-schedulers.js +9 -0
- package/dist/infra/queue/run-job.d.ts +16 -0
- package/dist/infra/queue/run-job.js +19 -0
- package/dist/infra/redis/redis.module.d.ts +24 -0
- package/dist/infra/redis/redis.module.js +87 -0
- package/dist/infra/schedule/cron-tick.d.ts +12 -0
- package/dist/infra/schedule/cron-tick.js +25 -0
- package/dist/infra/schedule/locked-cron.decorator.d.ts +27 -0
- package/dist/infra/schedule/locked-cron.decorator.js +53 -0
- package/dist/infra/schedule/locked-interval.d.ts +69 -0
- package/dist/infra/schedule/locked-interval.js +190 -0
- package/dist/infra/schedule/locked-tick.d.ts +90 -0
- package/dist/infra/schedule/locked-tick.js +137 -0
- package/dist/infra/schedule/schedule.module.d.ts +8 -0
- package/dist/infra/schedule/schedule.module.js +27 -0
- package/dist/infra/schedule/scheduled-runs.d.ts +69 -0
- package/dist/infra/schedule/scheduled-runs.js +163 -0
- package/dist/infra/swagger/swagger.d.ts +16 -0
- package/dist/infra/swagger/swagger.js +31 -0
- package/dist/infra/throttler/credential-throttler.d.ts +35 -0
- package/dist/infra/throttler/credential-throttler.js +77 -0
- package/dist/infra/throttler/named-throttlers.d.ts +31 -0
- package/dist/infra/throttler/named-throttlers.js +119 -0
- package/dist/infra/throttler/redis-throttler-storage.d.ts +38 -0
- package/dist/infra/throttler/redis-throttler-storage.js +130 -0
- package/dist/infra/throttler/throttler.guard.d.ts +23 -0
- package/dist/infra/throttler/throttler.guard.js +68 -0
- package/dist/infra/throttler/throttler.module.d.ts +15 -0
- package/dist/infra/throttler/throttler.module.js +53 -0
- package/dist/infra/tokens.d.ts +15 -0
- package/dist/infra/tokens.js +15 -0
- package/dist/infra/validation/create-zod-dto.d.ts +23 -0
- package/dist/infra/validation/create-zod-dto.js +35 -0
- package/dist/infra/validation/parse-with-zod.d.ts +7 -0
- package/dist/infra/validation/parse-with-zod.js +12 -0
- package/dist/infra/validation/validation.module.d.ts +3 -0
- package/dist/infra/validation/validation.module.js +16 -0
- package/dist/infra/validation/zod-params.d.ts +7 -0
- package/dist/infra/validation/zod-params.js +42 -0
- package/dist/infra/validation/zod-validation.pipe.d.ts +11 -0
- package/dist/infra/validation/zod-validation.pipe.js +31 -0
- package/dist/kernel.d.ts +9 -244
- package/dist/kernel.js +8 -1305
- package/dist/kernel.module.d.ts +17 -0
- package/dist/kernel.module.js +136 -0
- package/dist/lifecycle/kernel-lifecycle.d.ts +140 -0
- package/dist/lifecycle/kernel-lifecycle.js +456 -0
- package/dist/lifecycle/tokens.d.ts +3 -0
- package/dist/lifecycle/tokens.js +3 -0
- package/dist/log-context.d.ts +2 -0
- package/dist/log-context.js +4 -0
- package/dist/models/models.module.d.ts +3 -0
- package/dist/models/models.module.js +24 -0
- package/dist/models/prices.d.ts +8 -2
- package/dist/models/prices.js +65 -37
- package/dist/models/purposes.controller.d.ts +1 -1
- package/dist/models/purposes.controller.js +5 -6
- package/dist/models/purposes.d.ts +35 -13
- package/dist/models/purposes.js +101 -51
- package/dist/orgs/directory-sync.controller.d.ts +1 -1
- package/dist/orgs/directory-sync.controller.js +2 -2
- package/dist/orgs/directory-sync.d.ts +61 -31
- package/dist/orgs/directory-sync.js +212 -125
- package/dist/orgs/invitations.controller.d.ts +8 -8
- package/dist/orgs/invitations.controller.js +27 -26
- package/dist/orgs/invitations.service.d.ts +12 -9
- package/dist/orgs/invitations.service.js +130 -92
- package/dist/orgs/job-ids.d.ts +8 -0
- package/dist/orgs/job-ids.js +8 -0
- package/dist/orgs/members.service.d.ts +19 -12
- package/dist/orgs/members.service.js +161 -117
- package/dist/orgs/offboarding.d.ts +54 -57
- package/dist/orgs/offboarding.js +161 -71
- package/dist/orgs/org-lock.d.ts +28 -19
- package/dist/orgs/org-lock.js +81 -35
- package/dist/orgs/org.guard.d.ts +1 -1
- package/dist/orgs/org.guard.js +2 -2
- package/dist/orgs/orgs.controller.d.ts +13 -13
- package/dist/orgs/orgs.controller.js +29 -17
- package/dist/orgs/orgs.module.d.ts +6 -0
- package/dist/orgs/orgs.module.js +68 -0
- package/dist/orgs/orgs.service.d.ts +30 -19
- package/dist/orgs/orgs.service.js +139 -86
- package/dist/orgs/settings.controller.d.ts +1 -1
- package/dist/orgs/settings.controller.js +8 -6
- package/dist/orgs/settings.service.d.ts +16 -10
- package/dist/orgs/settings.service.js +77 -48
- package/dist/overrides.d.ts +56 -0
- package/dist/overrides.js +30 -0
- package/dist/roles/gateway-role.d.ts +43 -0
- package/dist/roles/gateway-role.js +98 -0
- package/dist/roles/gateway.module.d.ts +8 -0
- package/dist/roles/gateway.module.js +28 -0
- package/dist/roles/worker-role.d.ts +63 -0
- package/dist/roles/worker-role.js +144 -0
- package/dist/roles/worker.module.d.ts +14 -0
- package/dist/roles/worker.module.js +90 -0
- package/dist/runtime/abort.js +19 -2
- package/dist/runtime/checkpointer.d.ts +8 -3
- package/dist/runtime/checkpointer.js +87 -55
- package/dist/runtime/context/build.d.ts +6 -6
- package/dist/runtime/context/build.js +18 -8
- package/dist/runtime/context/claude-tools.d.ts +2 -1
- package/dist/runtime/context/claude-tools.js +9 -10
- package/dist/runtime/context/legacy-text.d.ts +22 -0
- package/dist/runtime/context/legacy-text.js +37 -0
- package/dist/runtime/context/skills.d.ts +29 -11
- package/dist/runtime/context/skills.js +37 -30
- package/dist/runtime/conversation-lock.d.ts +20 -11
- package/dist/runtime/conversation-lock.js +62 -72
- package/dist/runtime/hook-calls.d.ts +3 -3
- package/dist/runtime/hook-calls.js +1 -6
- package/dist/runtime/job-ids.d.ts +10 -0
- package/dist/runtime/job-ids.js +10 -0
- package/dist/runtime/langgraph-loop.js +1 -1
- package/dist/runtime/loop.d.ts +8 -1
- package/dist/runtime/loop.js +14 -0
- package/dist/runtime/maintenance-queue.d.ts +10 -0
- package/dist/runtime/maintenance-queue.js +10 -0
- package/dist/runtime/maintenance.d.ts +45 -74
- package/dist/runtime/maintenance.js +139 -137
- package/dist/runtime/model-call.d.ts +7 -4
- package/dist/runtime/model-call.js +25 -58
- package/dist/runtime/providers.d.ts +17 -6
- package/dist/runtime/providers.js +66 -25
- package/dist/runtime/quota.d.ts +17 -3
- package/dist/runtime/quota.js +27 -2
- package/dist/runtime/retired-schedulers.d.ts +7 -0
- package/dist/runtime/retired-schedulers.js +31 -0
- package/dist/runtime/run-control.d.ts +33 -0
- package/dist/runtime/run-control.js +77 -0
- package/dist/runtime/run-finish.d.ts +27 -18
- package/dist/runtime/run-finish.js +98 -51
- package/dist/runtime/run-jobs.d.ts +48 -0
- package/dist/runtime/run-jobs.js +95 -0
- package/dist/runtime/run-processors.d.ts +60 -0
- package/dist/runtime/run-processors.js +185 -0
- package/dist/runtime/run-queue.d.ts +32 -57
- package/dist/runtime/run-queue.js +291 -295
- package/dist/runtime/run-steps.d.ts +39 -0
- package/dist/runtime/run-steps.js +96 -0
- package/dist/runtime/run-worker.d.ts +122 -76
- package/dist/runtime/run-worker.js +343 -229
- package/dist/runtime/runtime.module.d.ts +10 -0
- package/dist/runtime/runtime.module.js +112 -0
- package/dist/runtime/step-log.d.ts +40 -0
- package/dist/runtime/step-log.js +94 -0
- package/dist/runtime/stream.controller.d.ts +5 -8
- package/dist/runtime/stream.controller.js +14 -12
- package/dist/runtime/stream.d.ts +24 -6
- package/dist/runtime/stream.js +78 -7
- package/dist/runtime/subagents/child.d.ts +3 -44
- package/dist/runtime/subagents/child.js +0 -79
- package/dist/runtime/subagents/definition.d.ts +5 -10
- package/dist/runtime/subagents/definition.js +13 -14
- package/dist/runtime/subagents/dispatch.d.ts +89 -8
- package/dist/runtime/subagents/dispatch.js +137 -142
- package/dist/runtime/subagents/limits.d.ts +9 -4
- package/dist/runtime/subagents/limits.js +4 -2
- package/dist/runtime/subagents/org-agents.d.ts +4 -4
- package/dist/runtime/subagents/org-agents.js +3 -2
- package/dist/runtime/subagents/progress.d.ts +2 -2
- package/dist/runtime/subagents/roster.d.ts +4 -4
- package/dist/runtime/subagents/roster.js +2 -2
- package/dist/runtime/subagents/skill-fork.d.ts +8 -9
- package/dist/runtime/subagents/skill-fork.js +17 -6
- package/dist/runtime/subagents/subagents.service.d.ts +40 -0
- package/dist/runtime/subagents/subagents.service.js +101 -0
- package/dist/runtime/usage-report.d.ts +94 -52
- package/dist/runtime/usage-report.js +200 -100
- package/dist/runtime/waits.d.ts +127 -59
- package/dist/runtime/waits.js +433 -210
- package/dist/sandbox/job-ids.d.ts +10 -0
- package/dist/sandbox/job-ids.js +10 -0
- package/dist/sandbox/jobs.d.ts +41 -0
- package/dist/sandbox/jobs.js +113 -0
- package/dist/sandbox/leases.d.ts +39 -31
- package/dist/sandbox/leases.js +117 -257
- package/dist/sandbox/providers.d.ts +19 -0
- package/dist/sandbox/providers.js +38 -0
- package/dist/sandbox/sandbox.module.d.ts +8 -0
- package/dist/sandbox/sandbox.module.js +30 -0
- package/dist/sandbox/sandbox.service.d.ts +24 -29
- package/dist/sandbox/sandbox.service.js +106 -75
- package/dist/skills/catalog.d.ts +37 -24
- package/dist/skills/catalog.js +100 -57
- package/dist/skills/changes.controller.d.ts +4 -4
- package/dist/skills/changes.controller.js +15 -9
- package/dist/skills/changes.service.d.ts +30 -20
- package/dist/skills/changes.service.js +425 -367
- package/dist/skills/invocable.controller.d.ts +1 -1
- package/dist/skills/invocable.controller.js +8 -5
- package/dist/skills/invocation-keys.d.ts +1 -1
- package/dist/skills/invocation-keys.js +1 -1
- package/dist/skills/invoke.d.ts +17 -16
- package/dist/skills/invoke.js +53 -21
- package/dist/skills/skills.controller.d.ts +1 -1
- package/dist/skills/skills.controller.js +11 -6
- package/dist/skills/skills.module.d.ts +6 -0
- package/dist/skills/skills.module.js +30 -0
- package/dist/skills/skills.service.d.ts +47 -30
- package/dist/skills/skills.service.js +221 -158
- package/dist/storage/job-ids.d.ts +6 -0
- package/dist/storage/job-ids.js +6 -0
- package/dist/storage/purge.d.ts +22 -7
- package/dist/storage/purge.js +55 -3
- package/dist/storage/storage.module.d.ts +6 -0
- package/dist/storage/storage.module.js +23 -0
- package/dist/storage/storage.service.d.ts +18 -4
- package/dist/storage/storage.service.js +44 -3
- package/dist/tools/approvals.controller.d.ts +1 -1
- package/dist/tools/approvals.controller.js +12 -8
- package/dist/tools/approvals.service.d.ts +33 -25
- package/dist/tools/approvals.service.js +343 -259
- package/dist/tools/breaker.d.ts +2 -2
- package/dist/tools/breaker.js +21 -3
- package/dist/tools/builtin-names.d.ts +73 -0
- package/dist/tools/builtin-names.js +116 -0
- package/dist/tools/builtins/agent.d.ts +7 -7
- package/dist/tools/builtins/agent.js +7 -11
- package/dist/tools/builtins/ask-user.d.ts +3 -3
- package/dist/tools/builtins/ask-user.js +3 -3
- package/dist/tools/builtins/builtin-tools.d.ts +21 -0
- package/dist/tools/builtins/builtin-tools.js +80 -0
- package/dist/tools/builtins/read-tool-output.d.ts +3 -3
- package/dist/tools/builtins/read-tool-output.js +3 -3
- package/dist/tools/builtins/sandbox/bash.d.ts +5 -5
- package/dist/tools/builtins/sandbox/bash.js +33 -30
- package/dist/tools/builtins/sandbox/common.d.ts +5 -4
- package/dist/tools/builtins/sandbox/common.js +2 -2
- package/dist/tools/builtins/sandbox/deliver.d.ts +1 -1
- package/dist/tools/builtins/sandbox/deliver.js +13 -13
- package/dist/tools/builtins/sandbox/edit.d.ts +1 -1
- package/dist/tools/builtins/sandbox/edit.js +42 -31
- package/dist/tools/builtins/sandbox/file-state.d.ts +34 -0
- package/dist/tools/builtins/sandbox/file-state.js +34 -0
- package/dist/tools/builtins/sandbox/glob-match.d.ts +1 -1
- package/dist/tools/builtins/sandbox/glob-match.js +1 -1
- package/dist/tools/builtins/sandbox/glob.d.ts +1 -1
- package/dist/tools/builtins/sandbox/glob.js +6 -6
- package/dist/tools/builtins/sandbox/grep.d.ts +7 -4
- package/dist/tools/builtins/sandbox/grep.js +149 -32
- package/dist/tools/builtins/sandbox/index.d.ts +1 -1
- package/dist/tools/builtins/sandbox/index.js +1 -1
- package/dist/tools/builtins/sandbox/read.d.ts +2 -2
- package/dist/tools/builtins/sandbox/read.js +22 -15
- package/dist/tools/builtins/sandbox/write.d.ts +1 -1
- package/dist/tools/builtins/sandbox/write.js +38 -34
- package/dist/tools/builtins/skill-load.d.ts +6 -6
- package/dist/tools/builtins/skill-load.js +33 -17
- package/dist/tools/builtins/skill-write.d.ts +4 -4
- package/dist/tools/builtins/skill-write.js +10 -10
- package/dist/tools/builtins/tool-search.d.ts +13 -9
- package/dist/tools/builtins/tool-search.js +25 -14
- package/dist/tools/canonical-json.d.ts +6 -0
- package/dist/tools/canonical-json.js +16 -0
- package/dist/tools/connector-content.controller.d.ts +1 -1
- package/dist/tools/connector-content.controller.js +11 -6
- package/dist/tools/connector-content.d.ts +12 -15
- package/dist/tools/connector-content.js +53 -18
- package/dist/tools/connectors.controller.d.ts +1 -1
- package/dist/tools/connectors.controller.js +21 -10
- package/dist/tools/connectors.service.d.ts +31 -13
- package/dist/tools/connectors.service.js +438 -348
- package/dist/tools/credentials.d.ts +17 -20
- package/dist/tools/credentials.js +55 -34
- package/dist/tools/display-names.d.ts +9 -0
- package/dist/tools/display-names.js +24 -0
- package/dist/tools/drift.d.ts +29 -41
- package/dist/tools/drift.js +116 -84
- package/dist/tools/elicitation.js +1 -1
- package/dist/tools/info.d.ts +32 -13
- package/dist/tools/info.js +88 -39
- package/dist/tools/job-ids.d.ts +13 -0
- package/dist/tools/job-ids.js +15 -0
- package/dist/tools/jobs.d.ts +24 -0
- package/dist/tools/jobs.js +69 -0
- package/dist/tools/legacy-data.d.ts +34 -0
- package/dist/tools/legacy-data.js +76 -0
- package/dist/tools/legacy-keys.d.ts +51 -0
- package/dist/tools/legacy-keys.js +115 -0
- package/dist/tools/naming.d.ts +1 -5
- package/dist/tools/naming.js +1 -7
- package/dist/tools/oauth/flow-paths.d.ts +16 -0
- package/dist/tools/oauth/flow-paths.js +38 -0
- package/dist/tools/oauth/flow.d.ts +30 -30
- package/dist/tools/oauth/flow.js +109 -81
- package/dist/tools/oauth/oauth.controller.d.ts +3 -3
- package/dist/tools/oauth/oauth.controller.js +12 -9
- package/dist/tools/oauth/tokens.d.ts +11 -3
- package/dist/tools/oauth/tokens.js +15 -14
- package/dist/tools/outputs.d.ts +13 -4
- package/dist/tools/outputs.js +48 -4
- package/dist/tools/pipeline.d.ts +72 -50
- package/dist/tools/pipeline.js +239 -100
- package/dist/tools/policy.d.ts +3 -16
- package/dist/tools/policy.js +13 -19
- package/dist/tools/questions.controller.d.ts +2 -2
- package/dist/tools/questions.controller.js +9 -6
- package/dist/tools/questions.service.d.ts +26 -25
- package/dist/tools/questions.service.js +201 -142
- package/dist/tools/registry.d.ts +43 -38
- package/dist/tools/registry.js +100 -72
- package/dist/tools/resources.d.ts +1 -1
- package/dist/tools/resources.js +1 -1
- package/dist/tools/specs.d.ts +5 -4
- package/dist/tools/specs.js +3 -1
- package/dist/tools/tools.module.d.ts +10 -0
- package/dist/tools/tools.module.js +91 -0
- package/dist/ui/call-extension.d.ts +16 -0
- package/dist/ui/call-extension.js +38 -0
- package/dist/ui/embed-token.d.ts +9 -5
- package/dist/ui/embed-token.js +34 -6
- package/dist/ui/ui-stream.d.ts +22 -17
- package/dist/ui/ui-stream.js +72 -12
- package/dist/ui/ui.module.d.ts +7 -0
- package/dist/ui/ui.module.js +28 -0
- package/dist/ui/views.controller.d.ts +14 -12
- package/dist/ui/views.controller.js +32 -25
- package/dist/ui/views.d.ts +9 -57
- package/dist/ui/views.js +43 -45
- package/package.json +10 -3
- package/src/migrations/0063_tool_keys_claude_code.sql +220 -0
- package/dist/http/health.controller.d.ts +0 -26
- package/dist/http/health.controller.js +0 -79
- package/dist/http/tokens.d.ts +0 -131
- package/dist/http/tokens.js +0 -131
- package/dist/http/zod.pipe.d.ts +0 -8
- package/dist/http/zod.pipe.js +0 -14
- package/dist/identity/rate-limit.d.ts +0 -55
- package/dist/identity/rate-limit.js +0 -121
- package/dist/sandbox/lifecycle.d.ts +0 -21
- package/dist/sandbox/lifecycle.js +0 -68
- package/dist/tools/builtins/sandbox/names.d.ts +0 -7
- package/dist/tools/builtins/sandbox/names.js +0 -20
- /package/dist/http/{gateway.module.d.ts → gateway-routes.d.ts} +0 -0
- /package/dist/http/{gateway.module.js → gateway-routes.js} +0 -0
|
@@ -1,7 +1,23 @@
|
|
|
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
|
-
import { validateAnswer
|
|
11
|
+
import { validateAnswer } from "@capybara-hq/plugin-sdk";
|
|
12
|
+
import { Inject, Injectable } from "@nestjs/common";
|
|
3
13
|
import { sql } from "kysely";
|
|
14
|
+
import { EventLog } from "../conversations/event-log.js";
|
|
4
15
|
import { ApiError } from "../errors.js";
|
|
16
|
+
import { KernelConfigService } from "../infra/config/kernel-config.service.js";
|
|
17
|
+
import { KernelDb } from "../infra/database/kernel-db.js";
|
|
18
|
+
import { TransactionHost } from "../infra/database/transaction-host.js";
|
|
19
|
+
import { Transactional } from "../infra/database/transactional.decorator.js";
|
|
20
|
+
import { KernelEvents } from "../infra/events/kernel-events.js";
|
|
5
21
|
const notFound = () => new ApiError("question.not_found", "Question not found");
|
|
6
22
|
const notInitiator = () => new ApiError("forbidden", "Only the user who started the run can answer this question");
|
|
7
23
|
const toView = ({ state: _state, ...rest }) => rest;
|
|
@@ -32,75 +48,88 @@ const isPlainObject = (v) => typeof v === "object" && v !== null && !Array.isArr
|
|
|
32
48
|
* 输入请求:新建(tools 节点)、回答(只有对话发起人)、超时与取消(等待机制)。
|
|
33
49
|
* 状态全部在 PG:回答 / 超时 / 取消都在事务里 `SELECT … FOR UPDATE` 该行,多副本并发时恰好一个生效,
|
|
34
50
|
* 只有生效的那次写 `question_answered`。HTTP 接口见 questions.controller.ts。
|
|
51
|
+
*
|
|
52
|
+
* An answer is announced after the commit as the domain event `question.answered` (exactly once),
|
|
53
|
+
* which the run's waits follow to resume it (spec §3b; the wait sweep resumes a run whose resume was
|
|
54
|
+
* lost). Events are appended in the context's transaction (`EventLog.appendIn`).
|
|
35
55
|
*/
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
56
|
+
let QuestionsService = class QuestionsService {
|
|
57
|
+
db;
|
|
58
|
+
config;
|
|
59
|
+
eventLog;
|
|
60
|
+
events;
|
|
61
|
+
txHost;
|
|
62
|
+
constructor(db, config, eventLog, events, txHost) {
|
|
63
|
+
this.db = db;
|
|
64
|
+
this.config = config;
|
|
65
|
+
this.eventLog = eventLog;
|
|
66
|
+
this.events = events;
|
|
67
|
+
this.txHost = txHost;
|
|
40
68
|
}
|
|
41
69
|
/**
|
|
42
70
|
* 新建 pending 输入请求(`expires_at` = 现在 + `tools.approvalTimeoutHours`)并写 `question_asked`,同一事务。
|
|
43
71
|
* 按 (run_id, call_id, attempt) 幂等:已存在则返回已有记录,事件按 `question_asked:<id>` 幂等。
|
|
44
72
|
*/
|
|
45
73
|
async ask(input) {
|
|
46
|
-
const {
|
|
47
|
-
|
|
74
|
+
const { record, toSeq } = await this.askIn(input);
|
|
75
|
+
await this.eventLog.notify(record.conversationId, toSeq);
|
|
76
|
+
return record;
|
|
77
|
+
}
|
|
78
|
+
async askIn(input) {
|
|
79
|
+
const hours = this.config.get().tools.approvalTimeoutHours;
|
|
48
80
|
const spec = {
|
|
49
81
|
form: input.form,
|
|
50
82
|
state: input.state ?? null,
|
|
51
83
|
toolKey: input.toolKey,
|
|
52
84
|
step: input.step,
|
|
53
85
|
};
|
|
54
|
-
const
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
},
|
|
86
|
+
const t = this.db.db;
|
|
87
|
+
await t
|
|
88
|
+
.insertInto("questions")
|
|
89
|
+
.values({
|
|
90
|
+
id: randomUUID(),
|
|
91
|
+
org_id: input.orgId,
|
|
92
|
+
conversation_id: input.conversationId,
|
|
93
|
+
run_id: input.runId,
|
|
94
|
+
call_id: input.callId,
|
|
95
|
+
attempt: input.attempt,
|
|
96
|
+
spec: JSON.stringify(spec),
|
|
97
|
+
answer: null,
|
|
98
|
+
answered_by: null,
|
|
99
|
+
expires_at: sql `now() + ${hours}::integer * interval '1 hour'`,
|
|
100
|
+
})
|
|
101
|
+
.onConflict((oc) => oc.columns(["run_id", "call_id", "attempt"]).doNothing())
|
|
102
|
+
.execute();
|
|
103
|
+
const row = await t
|
|
104
|
+
.selectFrom("questions")
|
|
105
|
+
.selectAll()
|
|
106
|
+
.where("run_id", "=", input.runId)
|
|
107
|
+
.where("call_id", "=", input.callId)
|
|
108
|
+
.where("attempt", "=", input.attempt)
|
|
109
|
+
.executeTakeFirstOrThrow();
|
|
110
|
+
const rec = toRecord(row);
|
|
111
|
+
const written = await this.eventLog.appendIn(rec.conversationId, [
|
|
112
|
+
{
|
|
113
|
+
type: "question_asked",
|
|
114
|
+
runId: rec.runId,
|
|
115
|
+
idemKey: `question_asked:${rec.id}`,
|
|
116
|
+
payload: {
|
|
117
|
+
step: rec.step,
|
|
118
|
+
callId: rec.callId,
|
|
119
|
+
questionId: rec.id,
|
|
120
|
+
form: rec.form,
|
|
121
|
+
expiresAt: rec.expiresAt,
|
|
91
122
|
},
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
}
|
|
95
|
-
await eventLog.notify(record.conversationId, toSeq);
|
|
96
|
-
return record;
|
|
123
|
+
},
|
|
124
|
+
]);
|
|
125
|
+
return { record: rec, toSeq: Math.max(...written.map((e) => e.seq)) };
|
|
97
126
|
}
|
|
98
127
|
/**
|
|
99
128
|
* 读一条输入请求(网页展示表单用):只有该运行的发起人(其他人 → 403 `forbidden`);
|
|
100
129
|
* 不属于该组织 / 不存在 → `question.not_found`。
|
|
101
130
|
*/
|
|
102
131
|
async get(orgId, questionId, accountId) {
|
|
103
|
-
const row = await this.
|
|
132
|
+
const row = await this.db
|
|
104
133
|
.selectFrom("questions")
|
|
105
134
|
.innerJoin("runs", "runs.id", "questions.run_id")
|
|
106
135
|
.selectAll("questions")
|
|
@@ -116,7 +145,7 @@ export class QuestionsService {
|
|
|
116
145
|
}
|
|
117
146
|
/** 某个调用的全部输入请求(按轮次升序)。 */
|
|
118
147
|
async forCall(runId, callId) {
|
|
119
|
-
const rows = await this.
|
|
148
|
+
const rows = await this.db
|
|
120
149
|
.selectFrom("questions")
|
|
121
150
|
.selectAll()
|
|
122
151
|
.where("run_id", "=", runId)
|
|
@@ -132,103 +161,107 @@ export class QuestionsService {
|
|
|
132
161
|
* 传 `orgId` 时还要求输入请求属于该组织(HTTP 接口用)。
|
|
133
162
|
*/
|
|
134
163
|
async answer(questionId, accountId, answer, orgId) {
|
|
135
|
-
const {
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
q = q.where("org_id", "=", orgId);
|
|
144
|
-
const locked = await q.forUpdate().executeTakeFirst();
|
|
145
|
-
if (!locked)
|
|
146
|
-
throw notFound();
|
|
147
|
-
const run = await t
|
|
148
|
-
.selectFrom("runs")
|
|
149
|
-
.select("trigger_account_id")
|
|
150
|
-
.where("id", "=", locked.run_id)
|
|
151
|
-
.executeTakeFirst();
|
|
152
|
-
if (run?.trigger_account_id !== accountId)
|
|
153
|
-
throw notInitiator();
|
|
154
|
-
const before = toRecord(locked);
|
|
155
|
-
if (before.status !== "pending") {
|
|
156
|
-
throw new ApiError("question.already_answered", "Question has already been answered");
|
|
157
|
-
}
|
|
158
|
-
if (locked.expired) {
|
|
159
|
-
throw new ApiError("question.already_answered", "Question has expired");
|
|
160
|
-
}
|
|
161
|
-
const problems = isPlainObject(answer)
|
|
162
|
-
? validateAnswer(before.form, answer)
|
|
163
|
-
: ["answer must be an object"];
|
|
164
|
-
if (problems.length > 0) {
|
|
165
|
-
throw new ApiError("validation_failed", "Answer does not match the form", problems.map((message) => ({ path: "answer", message })));
|
|
166
|
-
}
|
|
167
|
-
const updated = await t
|
|
168
|
-
.updateTable("questions")
|
|
169
|
-
.set({
|
|
170
|
-
status: "answered",
|
|
171
|
-
answer: JSON.stringify(answer),
|
|
172
|
-
answered_by: accountId,
|
|
173
|
-
answered_at: sql `now()`,
|
|
174
|
-
})
|
|
175
|
-
.where("id", "=", questionId)
|
|
176
|
-
.returningAll()
|
|
177
|
-
.executeTakeFirstOrThrow();
|
|
178
|
-
const toSeq = await this.answeredEvent(t, before, answer, accountId, "answered");
|
|
179
|
-
return { record: toRecord(updated), toSeq };
|
|
164
|
+
const { record, toSeq } = await this.answerIn(questionId, accountId, answer, orgId);
|
|
165
|
+
await this.eventLog.notify(record.conversationId, toSeq);
|
|
166
|
+
// waits resume the run and its IM delivery is enqueued (handler failures are logged)
|
|
167
|
+
await this.events.emit("question.answered", {
|
|
168
|
+
id: record.id,
|
|
169
|
+
orgId: record.orgId,
|
|
170
|
+
conversationId: record.conversationId,
|
|
171
|
+
runId: record.runId,
|
|
180
172
|
});
|
|
181
|
-
await eventLog.notify(record.conversationId, toSeq);
|
|
182
|
-
if (this.deps.onAnswered) {
|
|
183
|
-
try {
|
|
184
|
-
await this.deps.onAnswered(record);
|
|
185
|
-
}
|
|
186
|
-
catch (err) {
|
|
187
|
-
this.deps.log.warn("question onAnswered hook failed", { questionId: record.id, err });
|
|
188
|
-
}
|
|
189
|
-
}
|
|
190
173
|
return record;
|
|
191
174
|
}
|
|
175
|
+
// its own transaction (as the legacy one was): `question.answered` is emitted only after the
|
|
176
|
+
// answer committed, even when a caller has a transaction open
|
|
177
|
+
async answerIn(questionId, accountId, answer, orgId) {
|
|
178
|
+
const t = this.db.db;
|
|
179
|
+
let q = t
|
|
180
|
+
.selectFrom("questions")
|
|
181
|
+
.selectAll()
|
|
182
|
+
.select(sql `expires_at <= now()`.as("expired"))
|
|
183
|
+
.where("id", "=", questionId);
|
|
184
|
+
if (orgId !== undefined)
|
|
185
|
+
q = q.where("org_id", "=", orgId);
|
|
186
|
+
const locked = await q.forUpdate().executeTakeFirst();
|
|
187
|
+
if (!locked)
|
|
188
|
+
throw notFound();
|
|
189
|
+
const run = await t
|
|
190
|
+
.selectFrom("runs")
|
|
191
|
+
.select("trigger_account_id")
|
|
192
|
+
.where("id", "=", locked.run_id)
|
|
193
|
+
.executeTakeFirst();
|
|
194
|
+
if (run?.trigger_account_id !== accountId)
|
|
195
|
+
throw notInitiator();
|
|
196
|
+
const before = toRecord(locked);
|
|
197
|
+
if (before.status !== "pending") {
|
|
198
|
+
throw new ApiError("question.already_answered", "Question has already been answered");
|
|
199
|
+
}
|
|
200
|
+
if (locked.expired) {
|
|
201
|
+
throw new ApiError("question.already_answered", "Question has expired");
|
|
202
|
+
}
|
|
203
|
+
const problems = isPlainObject(answer)
|
|
204
|
+
? validateAnswer(before.form, answer)
|
|
205
|
+
: ["answer must be an object"];
|
|
206
|
+
if (problems.length > 0) {
|
|
207
|
+
throw new ApiError("validation_failed", "Answer does not match the form", problems.map((message) => ({ path: "answer", message })));
|
|
208
|
+
}
|
|
209
|
+
const updated = await t
|
|
210
|
+
.updateTable("questions")
|
|
211
|
+
.set({
|
|
212
|
+
status: "answered",
|
|
213
|
+
answer: JSON.stringify(answer),
|
|
214
|
+
answered_by: accountId,
|
|
215
|
+
answered_at: sql `now()`,
|
|
216
|
+
})
|
|
217
|
+
.where("id", "=", questionId)
|
|
218
|
+
.returningAll()
|
|
219
|
+
.executeTakeFirstOrThrow();
|
|
220
|
+
const toSeq = await this.answeredEvent(before, answer, accountId, "answered");
|
|
221
|
+
return { record: toRecord(updated), toSeq };
|
|
222
|
+
}
|
|
192
223
|
/**
|
|
193
224
|
* 超时(等待机制的超时任务调用):仍 pending 且已到期 → 置 expired、写 `question_answered{expired}`。
|
|
194
225
|
* 返回 `expired`(本次生效)/ `not_due`(尚未到期)/ `settled`(已回答、已取消或不存在)。
|
|
195
226
|
*/
|
|
196
227
|
async expire(questionId) {
|
|
197
|
-
const
|
|
198
|
-
const r = await db.transaction().execute(async (t) => {
|
|
199
|
-
const locked = await t
|
|
200
|
-
.selectFrom("questions")
|
|
201
|
-
.selectAll()
|
|
202
|
-
.select(sql `expires_at <= now()`.as("expired"))
|
|
203
|
-
.where("id", "=", questionId)
|
|
204
|
-
.forUpdate()
|
|
205
|
-
.executeTakeFirst();
|
|
206
|
-
if (!locked)
|
|
207
|
-
return { outcome: "settled" };
|
|
208
|
-
const before = toRecord(locked);
|
|
209
|
-
if (before.status !== "pending")
|
|
210
|
-
return { outcome: "settled", record: before };
|
|
211
|
-
if (!locked.expired)
|
|
212
|
-
return { outcome: "not_due", record: before };
|
|
213
|
-
const updated = await t
|
|
214
|
-
.updateTable("questions")
|
|
215
|
-
.set({ status: "expired", answered_at: sql `now()` })
|
|
216
|
-
.where("id", "=", questionId)
|
|
217
|
-
.returningAll()
|
|
218
|
-
.executeTakeFirstOrThrow();
|
|
219
|
-
const toSeq = await this.answeredEvent(t, before, null, null, "expired");
|
|
220
|
-
return { outcome: "expired", record: toRecord(updated), toSeq };
|
|
221
|
-
});
|
|
228
|
+
const r = await this.expireIn(questionId);
|
|
222
229
|
if ("toSeq" in r && r.toSeq !== undefined && r.record) {
|
|
223
|
-
await eventLog.notify(r.record.conversationId, r.toSeq);
|
|
230
|
+
await this.eventLog.notify(r.record.conversationId, r.toSeq);
|
|
224
231
|
}
|
|
225
232
|
return r.record ? { outcome: r.outcome, record: r.record } : { outcome: r.outcome };
|
|
226
233
|
}
|
|
234
|
+
async expireIn(questionId) {
|
|
235
|
+
const t = this.db.db;
|
|
236
|
+
const locked = await t
|
|
237
|
+
.selectFrom("questions")
|
|
238
|
+
.selectAll()
|
|
239
|
+
.select(sql `expires_at <= now()`.as("expired"))
|
|
240
|
+
.where("id", "=", questionId)
|
|
241
|
+
.forUpdate()
|
|
242
|
+
.executeTakeFirst();
|
|
243
|
+
if (!locked)
|
|
244
|
+
return { outcome: "settled" };
|
|
245
|
+
const before = toRecord(locked);
|
|
246
|
+
if (before.status !== "pending")
|
|
247
|
+
return { outcome: "settled", record: before };
|
|
248
|
+
if (!locked.expired)
|
|
249
|
+
return { outcome: "not_due", record: before };
|
|
250
|
+
const updated = await t
|
|
251
|
+
.updateTable("questions")
|
|
252
|
+
.set({ status: "expired", answered_at: sql `now()` })
|
|
253
|
+
.where("id", "=", questionId)
|
|
254
|
+
.returningAll()
|
|
255
|
+
.executeTakeFirstOrThrow();
|
|
256
|
+
const toSeq = await this.answeredEvent(before, null, null, "expired");
|
|
257
|
+
return { outcome: "expired", record: toRecord(updated), toSeq };
|
|
258
|
+
}
|
|
227
259
|
/**
|
|
228
|
-
*
|
|
229
|
-
*
|
|
260
|
+
* 在调用方的事务内(`mandatory`)取消运行的全部 pending 输入请求(运行在等待中被中止),各写
|
|
261
|
+
* `question_answered{cancelled}`。返回被取消的记录;调用方提交后发布事件。
|
|
230
262
|
*/
|
|
231
|
-
async cancelPendingIn(
|
|
263
|
+
async cancelPendingIn(runId) {
|
|
264
|
+
const t = this.db.db;
|
|
232
265
|
const rows = await t
|
|
233
266
|
.selectFrom("questions")
|
|
234
267
|
.selectAll()
|
|
@@ -246,17 +279,18 @@ export class QuestionsService {
|
|
|
246
279
|
.returningAll()
|
|
247
280
|
.executeTakeFirstOrThrow();
|
|
248
281
|
const rec = toRecord(row);
|
|
249
|
-
await this.answeredEvent(
|
|
282
|
+
await this.answeredEvent(rec, null, null, "cancelled");
|
|
250
283
|
out.push(toRecord(updated));
|
|
251
284
|
}
|
|
252
285
|
return out;
|
|
253
286
|
}
|
|
254
287
|
/**
|
|
255
|
-
*
|
|
288
|
+
* 在调用方的事务内(`mandatory`)取消某组织里由 `accountId` 发起的运行上的全部 pending 输入请求(只有运行发起人能回答,
|
|
256
289
|
* 即「其作为处理人」的提问;成员离职时调用),走与 {@link cancelPendingIn} 相同的取消路径:置 cancelled、
|
|
257
290
|
* 写 `question_answered{cancelled}`。返回被取消的记录与各会话写到的最大 seq;调用方提交后发布事件。
|
|
258
291
|
*/
|
|
259
|
-
async cancelPendingFor(
|
|
292
|
+
async cancelPendingFor(orgId, accountId) {
|
|
293
|
+
const t = this.db.db;
|
|
260
294
|
const rows = await t
|
|
261
295
|
.selectFrom("questions")
|
|
262
296
|
.selectAll()
|
|
@@ -275,21 +309,46 @@ export class QuestionsService {
|
|
|
275
309
|
.where("id", "=", row.id)
|
|
276
310
|
.returningAll()
|
|
277
311
|
.executeTakeFirstOrThrow();
|
|
278
|
-
const seq = await this.answeredEvent(
|
|
312
|
+
const seq = await this.answeredEvent(toRecord(row), null, null, "cancelled");
|
|
279
313
|
seqs.set(row.conversation_id, Math.max(seqs.get(row.conversation_id) ?? 0, seq));
|
|
280
314
|
records.push(toRecord(updated));
|
|
281
315
|
}
|
|
282
316
|
return { records, seqs };
|
|
283
317
|
}
|
|
284
|
-
|
|
285
|
-
|
|
318
|
+
/** `question_answered` in the current transaction; returns its seq. */
|
|
319
|
+
async answeredEvent(q, answer, byAccountId, outcome) {
|
|
320
|
+
const written = await this.eventLog.appendIn(q.conversationId, [
|
|
286
321
|
{
|
|
287
322
|
type: "question_answered",
|
|
288
323
|
runId: q.runId,
|
|
289
324
|
idemKey: `question_answered:${q.id}`,
|
|
290
325
|
payload: { questionId: q.id, callId: q.callId, answer, byAccountId, outcome },
|
|
291
326
|
},
|
|
292
|
-
]
|
|
327
|
+
]);
|
|
293
328
|
return Math.max(...written.map((e) => e.seq));
|
|
294
329
|
}
|
|
295
|
-
}
|
|
330
|
+
};
|
|
331
|
+
__decorate([
|
|
332
|
+
Transactional()
|
|
333
|
+
], QuestionsService.prototype, "askIn", null);
|
|
334
|
+
__decorate([
|
|
335
|
+
Transactional({ propagation: "requires_new" })
|
|
336
|
+
], QuestionsService.prototype, "answerIn", null);
|
|
337
|
+
__decorate([
|
|
338
|
+
Transactional()
|
|
339
|
+
], QuestionsService.prototype, "expireIn", null);
|
|
340
|
+
__decorate([
|
|
341
|
+
Transactional({ propagation: "mandatory" })
|
|
342
|
+
], QuestionsService.prototype, "cancelPendingIn", null);
|
|
343
|
+
__decorate([
|
|
344
|
+
Transactional({ propagation: "mandatory" })
|
|
345
|
+
], QuestionsService.prototype, "cancelPendingFor", null);
|
|
346
|
+
QuestionsService = __decorate([
|
|
347
|
+
Injectable(),
|
|
348
|
+
__param(0, Inject(KernelDb)),
|
|
349
|
+
__param(1, Inject(KernelConfigService)),
|
|
350
|
+
__param(2, Inject(EventLog)),
|
|
351
|
+
__param(3, Inject(KernelEvents)),
|
|
352
|
+
__param(4, Inject(TransactionHost))
|
|
353
|
+
], QuestionsService);
|
|
354
|
+
export { QuestionsService };
|
package/dist/tools/registry.d.ts
CHANGED
|
@@ -1,17 +1,14 @@
|
|
|
1
|
-
import type { Connector, InputRequired,
|
|
1
|
+
import type { Connector, InputRequired, ToolAnnotations, ToolCallContext, ToolResult, ToolSpec } from "@capybara-hq/plugin-sdk";
|
|
2
2
|
import type { AgentDefinition } from "../agents/definition.js";
|
|
3
|
-
import type { KernelConfig } from "../config/schema.js";
|
|
4
3
|
import type { ToolView } from "../conversations/events.js";
|
|
5
|
-
import
|
|
6
|
-
import
|
|
4
|
+
import { ExtensionHost } from "../extensions/host.js";
|
|
5
|
+
import { ExtensionRegistry } from "../extensions/registry.js";
|
|
6
|
+
import { KernelConfigService } from "../infra/config/kernel-config.service.js";
|
|
7
|
+
import { KernelDb } from "../infra/database/kernel-db.js";
|
|
7
8
|
import type { OrgRole } from "../orgs/roles.js";
|
|
8
|
-
import
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
* 不依赖当前是否已注册,避免实现落地顺序影响已保存的定义;运行时未注册的照常报不可用。
|
|
12
|
-
* `skill_write`(M5 T15)由 agent 定义显式引用才可用(负责人决定 agent 能否改自己的技能)。
|
|
13
|
-
*/
|
|
14
|
-
export declare const BUILTIN_TOOL_NAMES: readonly ["ask_user", "read_tool_output", "tool_search", "skill_load", "skill_write", "sandbox_bash", "sandbox_read", "sandbox_write", "sandbox_edit", "sandbox_glob", "sandbox_grep", "sandbox_deliver", "agent"];
|
|
9
|
+
import { BuiltinTools } from "./builtins/builtin-tools.js";
|
|
10
|
+
export { BUILTIN_TOOL_NAMES } from "./builtin-names.js";
|
|
11
|
+
export { canonicalJson } from "./canonical-json.js";
|
|
15
12
|
/** 保存 agent 时引用校验的问题(`path` 为 `tools.<i>`)。 */
|
|
16
13
|
export interface ToolRefIssue {
|
|
17
14
|
path: string;
|
|
@@ -19,7 +16,7 @@ export interface ToolRefIssue {
|
|
|
19
16
|
}
|
|
20
17
|
/**
|
|
21
18
|
* 内置工具处理函数的上下文:在 SDK 的 `ToolCallContext` 之上,管线额外传入本步解析出的工具
|
|
22
|
-
* (`
|
|
19
|
+
* (`ToolSearch` 据此搜索)。插件处理函数收到的仍是 `ToolCallContext`。
|
|
23
20
|
*/
|
|
24
21
|
export interface BuiltinCallContext extends ToolCallContext {
|
|
25
22
|
tools?: readonly ResolvedTool[];
|
|
@@ -37,7 +34,7 @@ export interface BuiltinCallContext extends ToolCallContext {
|
|
|
37
34
|
sandboxConversationId?: string;
|
|
38
35
|
}
|
|
39
36
|
/**
|
|
40
|
-
* 内置工具的结果:`ToolResult` 之外可带 `loadedTools`(`
|
|
37
|
+
* 内置工具的结果:`ToolResult` 之外可带 `loadedTools`(`ToolSearch` 加载的工具 key,
|
|
41
38
|
* 管线写进 `tool_result.loadedTools`)。
|
|
42
39
|
*/
|
|
43
40
|
export type BuiltinResult = (ToolResult & {
|
|
@@ -50,7 +47,7 @@ export type BuiltinResult = (ToolResult & {
|
|
|
50
47
|
}) | InputRequired;
|
|
51
48
|
/** 内置工具的处理函数(插件的 `ToolHandler` 可直接赋给它)。 */
|
|
52
49
|
export type BuiltinHandler = (input: unknown, ctx: BuiltinCallContext) => Promise<BuiltinResult>;
|
|
53
|
-
/** 内核内置工具(`
|
|
50
|
+
/** 内核内置工具(`AskUserQuestion` 等,Task 10 实现具体工具);key 就是 `spec.name`。 */
|
|
54
51
|
export interface BuiltinTool {
|
|
55
52
|
spec: ToolSpec;
|
|
56
53
|
defaultPolicy: "allow" | "ask";
|
|
@@ -114,13 +111,11 @@ export interface ResolvedTool {
|
|
|
114
111
|
*/
|
|
115
112
|
requiredRole?: OrgRole;
|
|
116
113
|
}
|
|
117
|
-
/** 不可用的引用:`ref` 尽量写成模型认识的工具 key(`
|
|
114
|
+
/** 不可用的引用:`ref` 尽量写成模型认识的工具 key(`mcp__docs__search`、`mcp__docs__*`),否则 `app:<id>`。 */
|
|
118
115
|
export interface UnavailableTool {
|
|
119
116
|
ref: string;
|
|
120
117
|
reason: string;
|
|
121
118
|
}
|
|
122
|
-
/** 键排序、去掉 undefined 的 JSON(jsonb 不保留键顺序,指纹必须与顺序无关)。 */
|
|
123
|
-
export declare function canonicalJson(v: unknown): string;
|
|
124
119
|
/** The first 16 hex digits of sha256(canonicalJson(v)): a fingerprint independent of key order. */
|
|
125
120
|
export declare function contentHash(v: unknown): string;
|
|
126
121
|
/**
|
|
@@ -138,17 +133,6 @@ export declare function withoutDisplayFields<T>(spec: T): T;
|
|
|
138
133
|
export declare function specHash(spec: unknown): string;
|
|
139
134
|
/** 由注解推导默认策略:只读 → allow;其余(破坏性 / 无注解)→ ask。 */
|
|
140
135
|
export declare function policyFromAnnotations(a: ToolAnnotations | undefined): "allow" | "ask";
|
|
141
|
-
export interface ToolRegistryDeps {
|
|
142
|
-
db: KernelDb;
|
|
143
|
-
host: ExtensionHost;
|
|
144
|
-
credentials: Credentials;
|
|
145
|
-
log: Logger;
|
|
146
|
-
builtins: BuiltinTool[];
|
|
147
|
-
/**
|
|
148
|
-
* 当前配置(`tools.searchThreshold*`)。不提供时从不启用 `tool_search`(只用于不关心它的测试 / 调用方)。
|
|
149
|
-
*/
|
|
150
|
-
config?: () => KernelConfig;
|
|
151
|
-
}
|
|
152
136
|
/** `forAgent` 的结果。 */
|
|
153
137
|
export interface AgentTools {
|
|
154
138
|
tools: ResolvedTool[];
|
|
@@ -159,7 +143,7 @@ export interface AgentTools {
|
|
|
159
143
|
*/
|
|
160
144
|
hidden?: UnavailableTool[];
|
|
161
145
|
/**
|
|
162
|
-
* 本步是否启用 `
|
|
146
|
+
* 本步是否启用 `ToolSearch`(spec 5.5):启用时 `tools` 末尾含 `ToolSearch`,构建请求时只放内置工具
|
|
163
147
|
* 与已加载工具的完整定义,其余进目录。缺省视为未启用。
|
|
164
148
|
*/
|
|
165
149
|
toolSearch?: boolean;
|
|
@@ -182,8 +166,29 @@ export interface AgentTools {
|
|
|
182
166
|
* different sources with the same key report a duplicate.
|
|
183
167
|
*/
|
|
184
168
|
export declare class ToolRegistry {
|
|
185
|
-
private readonly
|
|
186
|
-
|
|
169
|
+
private readonly db;
|
|
170
|
+
/** Extension tools and the organization's enabled extensions. */
|
|
171
|
+
private readonly host;
|
|
172
|
+
/** The installed connectors (`connector@1`, from the extension registry). */
|
|
173
|
+
private readonly extensions;
|
|
174
|
+
private readonly builtinTools;
|
|
175
|
+
/**
|
|
176
|
+
* `tools.searchThreshold*` and the sub-agent limits. Absent (some tests): `ToolSearch` is never
|
|
177
|
+
* offered and the sub-agent limits are the schema defaults.
|
|
178
|
+
*/
|
|
179
|
+
private readonly config?;
|
|
180
|
+
constructor(db: KernelDb,
|
|
181
|
+
/** Extension tools and the organization's enabled extensions. */
|
|
182
|
+
host: Pick<ExtensionHost, "tools" | "enabledPlugins">,
|
|
183
|
+
/** The installed connectors (`connector@1`, from the extension registry). */
|
|
184
|
+
extensions: Pick<ExtensionRegistry, "list">, builtinTools: Pick<BuiltinTools, "list">,
|
|
185
|
+
/**
|
|
186
|
+
* `tools.searchThreshold*` and the sub-agent limits. Absent (some tests): `ToolSearch` is never
|
|
187
|
+
* offered and the sub-agent limits are the schema defaults.
|
|
188
|
+
*/
|
|
189
|
+
config?: Pick<KernelConfigService, "get"> | undefined);
|
|
190
|
+
/** The kernel's builtin tools (`ToolSearch` is added by {@link forAgent}, not by definitions). */
|
|
191
|
+
private get builtins();
|
|
187
192
|
/** `host.list("connector")` 中 `kind` 匹配的第一个实现;未安装返回 undefined。 */
|
|
188
193
|
findConnector(kind: string): Connector | undefined;
|
|
189
194
|
/** 同 {@link findConnector},未安装时抛错。 */
|
|
@@ -218,23 +223,23 @@ export declare class ToolRegistry {
|
|
|
218
223
|
issues: ToolRefIssue[];
|
|
219
224
|
}>;
|
|
220
225
|
/**
|
|
221
|
-
* 解析 agent 引用的工具(见类注释),再判定是否启用 `
|
|
226
|
+
* 解析 agent 引用的工具(见类注释),再判定是否启用 `ToolSearch`:组织设置 `toolSearch === "on"`,且
|
|
222
227
|
* 可用工具数 > `tools.searchThresholdTools` 或其定义的估算 token > `tools.searchThresholdTokens`。
|
|
223
|
-
* 启用时把内置 `
|
|
224
|
-
* `skillLoad`:对话日志里有技能目录快照(`skills_catalog`,Ruling M17)→ 加入内置 `
|
|
225
|
-
* 定义里显式引用的 `
|
|
228
|
+
* 启用时把内置 `ToolSearch` 追加到末尾。定义里显式引用的 `ToolSearch` 忽略(由这里按设置管理)。
|
|
229
|
+
* `skillLoad`:对话日志里有技能目录快照(`skills_catalog`,Ruling M17)→ 加入内置 `Skill`(始终完整加载);
|
|
230
|
+
* 定义里显式引用的 `Skill` 同样忽略。
|
|
226
231
|
*/
|
|
227
232
|
forAgent(orgId: string, def: {
|
|
228
233
|
tools: readonly AgentToolRef[];
|
|
229
234
|
skillLoad?: boolean;
|
|
230
|
-
/** The definition's sub-agent roster source: the `
|
|
235
|
+
/** The definition's sub-agent roster source: the `Agent` tool's description lists it. */
|
|
231
236
|
subagents?: AgentDefinition["subagents"];
|
|
232
237
|
}): Promise<AgentTools>;
|
|
233
|
-
/** 是否启用 `
|
|
238
|
+
/** 是否启用 `ToolSearch`(见 {@link forAgent});先比阈值,超过才读组织设置。 */
|
|
234
239
|
private searchActive;
|
|
235
240
|
private resolve;
|
|
236
241
|
/**
|
|
237
|
-
* `subagents.maxConcurrentPerRun` with the organization's override, for the `
|
|
242
|
+
* `subagents.maxConcurrentPerRun` with the organization's override, for the `Agent` tool's
|
|
238
243
|
* description (§4.3). A change of the limit changes the tool's spec hash; replays read the
|
|
239
244
|
* definition logged by hash, so no drift reason is involved. Without config (some tests): the
|
|
240
245
|
* schema default.
|