@capybara-hq/kernel 0.1.0-rc.1 → 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/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 -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 +10 -4
- 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 -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 +2 -2
- 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/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 -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 +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 +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 +451 -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 +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 -137
- 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 -226
- 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 -100
- 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 +2 -1
- 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 +9 -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/skills/catalog.d.ts
CHANGED
|
@@ -1,12 +1,14 @@
|
|
|
1
1
|
import { type Logger, type SkillInvocation } from "@capybara-hq/plugin-sdk";
|
|
2
|
-
import { type Transaction } from "kysely";
|
|
3
2
|
import type { AgentDefinition } from "../agents/definition.js";
|
|
4
|
-
import
|
|
3
|
+
import { EventLog } from "../conversations/event-log.js";
|
|
5
4
|
import { type ConversationEvent } from "../conversations/events.js";
|
|
6
|
-
import type {
|
|
5
|
+
import type { KernelSchemaDb, SkillManifest, SourceFormat } from "../db/kernel-schema.js";
|
|
7
6
|
import { ApiError } from "../errors.js";
|
|
7
|
+
import { KernelDb } from "../infra/database/kernel-db.js";
|
|
8
|
+
import { TransactionHost } from "../infra/database/transaction-host.js";
|
|
9
|
+
import type { KernelLogger } from "../log.js";
|
|
8
10
|
import { type CatalogSkill, type PinnedSkill, type SkillsSnapshot } from "../runtime/context/skills.js";
|
|
9
|
-
import type
|
|
11
|
+
import { type PrefixedStorage, StorageService } from "../storage/storage.service.js";
|
|
10
12
|
/**
|
|
11
13
|
* 技能目录快照(M5 T14,Ruling M17):运行开始时解析「此刻对这个对话生效的技能」,与日志里最新一份快照不同才写
|
|
12
14
|
* `skills_catalog`。模型看到的目录与 `skill_load` 的名字解析只来自日志,不读实时的库。
|
|
@@ -44,7 +46,7 @@ export interface EffectiveSkillsInput {
|
|
|
44
46
|
* (id 为已有技能或预先分配的 id,版本为批准后预期的版本号);其他对话照旧用 `current_version`。
|
|
45
47
|
* 批准后版本成为当前版本,各对话下一次运行开始时由快照差异得到提醒;拒绝 / 取消后发起对话回到当前版本。
|
|
46
48
|
*/
|
|
47
|
-
export declare function resolveEffectiveSkills(db:
|
|
49
|
+
export declare function resolveEffectiveSkills(db: KernelSchemaDb, input: EffectiveSkillsInput, log?: Pick<Logger, "warn">): Promise<CatalogSkill[]>;
|
|
48
50
|
/** The invocation metadata of a skill version: the manifest's, or the defaults when absent. */
|
|
49
51
|
export declare function invocationOf(manifest: Pick<SkillManifest, "invocation">): SkillInvocation;
|
|
50
52
|
/** An effective skill with what the snapshot needs beyond its catalog entry. */
|
|
@@ -60,7 +62,7 @@ export interface ResolvedSkill {
|
|
|
60
62
|
* included and not truncated ({@link forModel} gives the model's part). Without
|
|
61
63
|
* `conversationId` (a conversation not created yet) no trial draft applies.
|
|
62
64
|
*/
|
|
63
|
-
export declare function resolveSkills(db:
|
|
65
|
+
export declare function resolveSkills(db: KernelSchemaDb, input: Omit<EffectiveSkillsInput, "conversationId"> & {
|
|
64
66
|
conversationId?: string;
|
|
65
67
|
}): Promise<ResolvedSkill[]>;
|
|
66
68
|
/** A pinned skill to read: an effective skill the agent version pins. */
|
|
@@ -73,7 +75,7 @@ interface PinnedCandidate {
|
|
|
73
75
|
}
|
|
74
76
|
/**
|
|
75
77
|
* The `run_failed` message (shown to the user, English like the other run texts) for a
|
|
76
|
-
* `storage.unavailable` from {@link
|
|
78
|
+
* `storage.unavailable` from {@link SkillsCatalogService.record}: a pinned SKILL.md that is missing,
|
|
77
79
|
* corrupt or unparsable points at the agent's owner, since sending again cannot help; anything
|
|
78
80
|
* else is a transient storage failure.
|
|
79
81
|
*/
|
|
@@ -89,7 +91,7 @@ export declare function pinnedFailureText(e: ApiError): string;
|
|
|
89
91
|
* carries `details: [{ reason: "pinned_unreadable", skillId, name, source }]`
|
|
90
92
|
* ({@link pinnedFailureText} turns it into an owner-facing message).
|
|
91
93
|
*/
|
|
92
|
-
export declare function loadPinnedBodies(storage:
|
|
94
|
+
export declare function loadPinnedBodies(storage: PrefixedStorage, orgId: string, pinned: readonly PinnedCandidate[], opts?: {
|
|
93
95
|
signal?: AbortSignal;
|
|
94
96
|
log?: Pick<Logger, "error">;
|
|
95
97
|
}): Promise<PinnedSkill[]>;
|
|
@@ -117,13 +119,14 @@ invoked?: boolean): boolean;
|
|
|
117
119
|
/** Whether `events` hold a person's skill invocation (a `user_message` with `skill`). */
|
|
118
120
|
export declare const hasInvocation: (events: readonly ConversationEvent[]) => boolean;
|
|
119
121
|
/** {@link skillLoadOffered} for a conversation, read from the database. */
|
|
120
|
-
export declare function skillLoadOfferedIn(db:
|
|
122
|
+
export declare function skillLoadOfferedIn(db: KernelSchemaDb, eventLog: Pick<EventLog, "latestOfType">, conversationId: string): Promise<boolean>;
|
|
121
123
|
export declare const skillsCatalogIdemKey: (runId: string) => string;
|
|
122
124
|
/**
|
|
123
|
-
*
|
|
125
|
+
* 在调用方事务里锁会话行(与 `EventLog.append` 同一把锁)并读最新一份技能目录快照(没有为 undefined)。
|
|
126
|
+
* `db` is the caller's transaction handle (`KernelDb.db` inside `@Transactional`).
|
|
124
127
|
* 「读最新 → 推出下一份 → 追加」都在这把锁内,别的写快照的事务(运行开始、skill_write、拒绝时的回退)插不进来。
|
|
125
128
|
*/
|
|
126
|
-
export declare function lockLatestCatalog(
|
|
129
|
+
export declare function lockLatestCatalog(db: KernelSchemaDb, conversationId: string): Promise<SkillsSnapshot | undefined>;
|
|
127
130
|
/**
|
|
128
131
|
* 运行开始时记录技能目录快照:解析生效的技能,与日志里最新一份不同才写(带幂等键,崩溃重试不重复)。
|
|
129
132
|
* 从没有快照、现在也没有技能 → 不写(没有技能的 agent 不出现目录);之前有、现在全没了 → 写空快照(模型据此得知被移除)。
|
|
@@ -137,13 +140,23 @@ export declare function lockLatestCatalog(t: Transaction<KernelDatabase>, conver
|
|
|
137
140
|
* whole thing starts over (at most {@link RECORD_ATTEMPTS} times, then `conflict`). A read failure
|
|
138
141
|
* throws `storage.unavailable` before anything is written. Writes only when `!sameSnapshot`.
|
|
139
142
|
*/
|
|
140
|
-
export declare
|
|
141
|
-
db
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
143
|
+
export declare class SkillsCatalogService {
|
|
144
|
+
private readonly db;
|
|
145
|
+
private readonly storage;
|
|
146
|
+
private readonly eventLog;
|
|
147
|
+
private readonly log;
|
|
148
|
+
readonly txHost: TransactionHost;
|
|
149
|
+
constructor(db: KernelDb, storage: StorageService, eventLog: EventLog, log: KernelLogger, txHost: TransactionHost);
|
|
150
|
+
/**
|
|
151
|
+
* Records the run start's snapshot (see the class comment). `opts.log`: the run's logger
|
|
152
|
+
* (default the kernel logger).
|
|
153
|
+
*/
|
|
154
|
+
record(input: EffectiveSkillsInput & {
|
|
155
|
+
runId: string;
|
|
156
|
+
}, opts?: {
|
|
157
|
+
log?: Pick<Logger, "warn" | "error">;
|
|
158
|
+
}): Promise<void>;
|
|
159
|
+
/** Step (2) of {@link record}: under the conversation row lock, resolve again and append. */
|
|
160
|
+
private append;
|
|
161
|
+
}
|
|
149
162
|
export {};
|
package/dist/skills/catalog.js
CHANGED
|
@@ -1,10 +1,26 @@
|
|
|
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 { createHash } from "node:crypto";
|
|
2
11
|
import { parseSkillMd, SKILL_ENTRY_FILE, } 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 { SKILLS_CATALOG_MAX } from "../conversations/events.js";
|
|
5
16
|
import { ApiError } from "../errors.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 { KERNEL_LOGGER } from "../infra/tokens.js";
|
|
6
21
|
import { CLAUDE_CODE_TOOL_MAP } from "../runtime/context/claude-tools.js";
|
|
7
22
|
import { sameSnapshot, } from "../runtime/context/skills.js";
|
|
23
|
+
import { StorageService } from "../storage/storage.service.js";
|
|
8
24
|
/**
|
|
9
25
|
* 技能目录快照(M5 T14,Ruling M17):运行开始时解析「此刻对这个对话生效的技能」,与日志里最新一份快照不同才写
|
|
10
26
|
* `skills_catalog`。模型看到的目录与 `skill_load` 的名字解析只来自日志,不读实时的库。
|
|
@@ -182,7 +198,7 @@ const PINNED_UNREADABLE = "pinned_unreadable";
|
|
|
182
198
|
const PINNED_READ_ATTEMPTS = 2;
|
|
183
199
|
/**
|
|
184
200
|
* The `run_failed` message (shown to the user, English like the other run texts) for a
|
|
185
|
-
* `storage.unavailable` from {@link
|
|
201
|
+
* `storage.unavailable` from {@link SkillsCatalogService.record}: a pinned SKILL.md that is missing,
|
|
186
202
|
* corrupt or unparsable points at the agent's owner, since sending again cannot help; anything
|
|
187
203
|
* else is a transient storage failure.
|
|
188
204
|
*/
|
|
@@ -318,17 +334,18 @@ export async function skillLoadOfferedIn(db, eventLog, conversationId) {
|
|
|
318
334
|
}
|
|
319
335
|
export const skillsCatalogIdemKey = (runId) => `skills_catalog:${runId}`;
|
|
320
336
|
/**
|
|
321
|
-
*
|
|
337
|
+
* 在调用方事务里锁会话行(与 `EventLog.append` 同一把锁)并读最新一份技能目录快照(没有为 undefined)。
|
|
338
|
+
* `db` is the caller's transaction handle (`KernelDb.db` inside `@Transactional`).
|
|
322
339
|
* 「读最新 → 推出下一份 → 追加」都在这把锁内,别的写快照的事务(运行开始、skill_write、拒绝时的回退)插不进来。
|
|
323
340
|
*/
|
|
324
|
-
export async function lockLatestCatalog(
|
|
325
|
-
await
|
|
341
|
+
export async function lockLatestCatalog(db, conversationId) {
|
|
342
|
+
await db
|
|
326
343
|
.selectFrom("conversations")
|
|
327
344
|
.select("id")
|
|
328
345
|
.where("id", "=", conversationId)
|
|
329
346
|
.forUpdate()
|
|
330
347
|
.executeTakeFirst();
|
|
331
|
-
const last = await
|
|
348
|
+
const last = await db
|
|
332
349
|
.selectFrom("conversation_events")
|
|
333
350
|
.select("payload")
|
|
334
351
|
.where("conversation_id", "=", conversationId)
|
|
@@ -353,53 +370,79 @@ const RECORD_ATTEMPTS = 3;
|
|
|
353
370
|
* whole thing starts over (at most {@link RECORD_ATTEMPTS} times, then `conflict`). A read failure
|
|
354
371
|
* throws `storage.unavailable` before anything is written. Writes only when `!sameSnapshot`.
|
|
355
372
|
*/
|
|
356
|
-
|
|
357
|
-
|
|
358
|
-
|
|
359
|
-
|
|
360
|
-
|
|
361
|
-
|
|
362
|
-
|
|
373
|
+
let SkillsCatalogService = class SkillsCatalogService {
|
|
374
|
+
db;
|
|
375
|
+
storage;
|
|
376
|
+
eventLog;
|
|
377
|
+
log;
|
|
378
|
+
txHost;
|
|
379
|
+
constructor(db, storage, eventLog, log, txHost) {
|
|
380
|
+
this.db = db;
|
|
381
|
+
this.storage = storage;
|
|
382
|
+
this.eventLog = eventLog;
|
|
383
|
+
this.log = log;
|
|
384
|
+
this.txHost = txHost;
|
|
385
|
+
}
|
|
386
|
+
/**
|
|
387
|
+
* Records the run start's snapshot (see the class comment). `opts.log`: the run's logger
|
|
388
|
+
* (default the kernel logger).
|
|
389
|
+
*/
|
|
390
|
+
async record(input, opts = {}) {
|
|
391
|
+
const log = opts.log ?? this.log;
|
|
392
|
+
for (let attempt = 1; attempt <= RECORD_ATTEMPTS; attempt++) {
|
|
393
|
+
const all = await resolveSkills(this.db.db, input);
|
|
394
|
+
// Warn about manual-only pins once, on the first attempt
|
|
395
|
+
const first = pinnedCandidates(forModel(all, input), input.agent, input, all, attempt === 1 ? log : undefined);
|
|
396
|
+
const pinned = fitPinned(await loadPinnedBodies(this.storage, input.orgId, first, { log }), log, input);
|
|
397
|
+
const toSeq = await this.append(input, first, pinned, log);
|
|
398
|
+
if (toSeq === "retry")
|
|
399
|
+
continue;
|
|
400
|
+
if (toSeq !== null)
|
|
401
|
+
await this.eventLog.notify(input.conversationId, toSeq);
|
|
402
|
+
return;
|
|
363
403
|
}
|
|
364
|
-
|
|
365
|
-
? await loadPinnedBodies(deps.storage, input.orgId, first, {
|
|
366
|
-
...(deps.log && { log: deps.log }),
|
|
367
|
-
})
|
|
368
|
-
: [], deps.log, input);
|
|
369
|
-
const toSeq = await deps.db.transaction().execute(async (t) => {
|
|
370
|
-
const last = await lockLatestCatalog(t, input.conversationId);
|
|
371
|
-
const all = await resolveSkills(t, input);
|
|
372
|
-
const resolved = forModel(all, input, deps.log);
|
|
373
|
-
if (!sameCandidates(first, pinnedCandidates(resolved, input.agent, input, all))) {
|
|
374
|
-
return "retry";
|
|
375
|
-
}
|
|
376
|
-
const skills = resolved.map((r) => r.skill);
|
|
377
|
-
const next = {
|
|
378
|
-
skills,
|
|
379
|
-
...(pinned.length > 0 && { pinned }),
|
|
380
|
-
// The model's (truncated) skills as before phase D, plus manual-only ones: a person can
|
|
381
|
-
// invoke one whose body names Claude tools (batch 1 review M8)
|
|
382
|
-
...([...resolved, ...all.filter((r) => !invocationOf(r.manifest).model)].some((r) => r.format === "claude-code") && {
|
|
383
|
-
toolMap: CLAUDE_CODE_TOOL_MAP,
|
|
384
|
-
}),
|
|
385
|
-
};
|
|
386
|
-
if (last ? sameSnapshot(last, next) : skills.length === 0)
|
|
387
|
-
return null;
|
|
388
|
-
const written = await deps.eventLog.append(input.conversationId, [
|
|
389
|
-
{
|
|
390
|
-
type: "skills_catalog",
|
|
391
|
-
runId: input.runId,
|
|
392
|
-
idemKey: skillsCatalogIdemKey(input.runId),
|
|
393
|
-
payload: next,
|
|
394
|
-
},
|
|
395
|
-
], t);
|
|
396
|
-
return Math.max(...written.map((e) => e.seq));
|
|
397
|
-
});
|
|
398
|
-
if (toSeq === "retry")
|
|
399
|
-
continue;
|
|
400
|
-
if (toSeq !== null)
|
|
401
|
-
await deps.eventLog.notify(input.conversationId, toSeq);
|
|
402
|
-
return;
|
|
404
|
+
throw new ApiError("conflict", "The pinned skills kept changing while the run started; send the message again.");
|
|
403
405
|
}
|
|
404
|
-
|
|
405
|
-
|
|
406
|
+
/** Step (2) of {@link record}: under the conversation row lock, resolve again and append. */
|
|
407
|
+
async append(input, first, pinned, log) {
|
|
408
|
+
const last = await lockLatestCatalog(this.db.db, input.conversationId);
|
|
409
|
+
const all = await resolveSkills(this.db.db, input);
|
|
410
|
+
const resolved = forModel(all, input, log);
|
|
411
|
+
if (!sameCandidates(first, pinnedCandidates(resolved, input.agent, input, all))) {
|
|
412
|
+
return "retry";
|
|
413
|
+
}
|
|
414
|
+
const skills = resolved.map((r) => r.skill);
|
|
415
|
+
const next = {
|
|
416
|
+
skills,
|
|
417
|
+
...(pinned.length > 0 && { pinned }),
|
|
418
|
+
// The model's (truncated) skills as before phase D, plus manual-only ones: a person can
|
|
419
|
+
// invoke one whose body names Claude tools (batch 1 review M8)
|
|
420
|
+
...([...resolved, ...all.filter((r) => !invocationOf(r.manifest).model)].some((r) => r.format === "claude-code") && {
|
|
421
|
+
toolMap: CLAUDE_CODE_TOOL_MAP,
|
|
422
|
+
}),
|
|
423
|
+
};
|
|
424
|
+
if (last ? sameSnapshot(last, next) : skills.length === 0)
|
|
425
|
+
return null;
|
|
426
|
+
const written = await this.eventLog.appendIn(input.conversationId, [
|
|
427
|
+
{
|
|
428
|
+
type: "skills_catalog",
|
|
429
|
+
runId: input.runId,
|
|
430
|
+
idemKey: skillsCatalogIdemKey(input.runId),
|
|
431
|
+
payload: next,
|
|
432
|
+
},
|
|
433
|
+
]);
|
|
434
|
+
return Math.max(...written.map((e) => e.seq));
|
|
435
|
+
}
|
|
436
|
+
};
|
|
437
|
+
__decorate([
|
|
438
|
+
Transactional()
|
|
439
|
+
], SkillsCatalogService.prototype, "append", null);
|
|
440
|
+
SkillsCatalogService = __decorate([
|
|
441
|
+
Injectable(),
|
|
442
|
+
__param(0, Inject(KernelDb)),
|
|
443
|
+
__param(1, Inject(StorageService)),
|
|
444
|
+
__param(2, Inject(EventLog)),
|
|
445
|
+
__param(3, Inject(KERNEL_LOGGER)),
|
|
446
|
+
__param(4, Inject(TransactionHost))
|
|
447
|
+
], SkillsCatalogService);
|
|
448
|
+
export { SkillsCatalogService };
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
import { z } from "zod";
|
|
2
|
-
import
|
|
2
|
+
import { AgentsService } from "../agents/agents.service.js";
|
|
3
3
|
import { type Principal } from "../identity/principal.js";
|
|
4
|
-
import
|
|
4
|
+
import { InboxService, type InboxView } from "../inbox/inbox.service.js";
|
|
5
5
|
import { type OrgContext } from "../orgs/org.guard.js";
|
|
6
|
-
import type
|
|
7
|
-
import type
|
|
6
|
+
import { type SkillChangeDetail, SkillChangesService, type SkillChangeView } from "./changes.service.js";
|
|
7
|
+
import { type SkillSummary, SkillsService } from "./skills.service.js";
|
|
8
8
|
declare const DecideBody: z.ZodObject<{
|
|
9
9
|
decision: z.ZodEnum<{
|
|
10
10
|
approve: "approve";
|
|
@@ -7,18 +7,24 @@ var __decorate = (this && this.__decorate) || function (decorators, target, key,
|
|
|
7
7
|
var __param = (this && this.__param) || function (paramIndex, decorator) {
|
|
8
8
|
return function (target, key) { decorator(target, key, paramIndex); }
|
|
9
9
|
};
|
|
10
|
-
import {
|
|
10
|
+
import { Controller, Delete, Get, HttpCode, Inject, Param, Post } from "@nestjs/common";
|
|
11
11
|
import { z } from "zod";
|
|
12
|
-
import {
|
|
13
|
-
import { ZodPipe } from "../http/zod.pipe.js";
|
|
12
|
+
import { AgentsService } from "../agents/agents.service.js";
|
|
14
13
|
import { CurrentPrincipal, patTokenId, requireUser, } from "../identity/principal.js";
|
|
14
|
+
import { InboxService } from "../inbox/inbox.service.js";
|
|
15
|
+
import { createZodDto } from "../infra/validation/create-zod-dto.js";
|
|
16
|
+
import { ZBody } from "../infra/validation/zod-params.js";
|
|
15
17
|
import { CurrentOrg, OrgAction } from "../orgs/org.guard.js";
|
|
18
|
+
import { SkillChangesService, } from "./changes.service.js";
|
|
19
|
+
import { SkillsService } from "./skills.service.js";
|
|
16
20
|
const DecideBody = z
|
|
17
21
|
.object({
|
|
18
22
|
decision: z.enum(["approve", "reject"]),
|
|
19
23
|
note: z.string().max(1000).optional(),
|
|
20
24
|
})
|
|
21
25
|
.strict();
|
|
26
|
+
class SkillChangeDecideBody extends createZodDto(DecideBody, "SkillChangeDecideBody") {
|
|
27
|
+
}
|
|
22
28
|
/**
|
|
23
29
|
* 共享 agent 的技能变更申请(`/api/v1/orgs/:orgId/skill-changes`,M5 T15,R4)。动作 `approvals.decide`
|
|
24
30
|
* (访客起、仅限用户主体:agent / 服务令牌不能决定,R2);能否决定由服务按该 agent **当前的负责人**判定,
|
|
@@ -54,11 +60,11 @@ __decorate([
|
|
|
54
60
|
__param(0, CurrentPrincipal()),
|
|
55
61
|
__param(1, CurrentOrg()),
|
|
56
62
|
__param(2, Param("id")),
|
|
57
|
-
__param(3,
|
|
63
|
+
__param(3, ZBody(SkillChangeDecideBody))
|
|
58
64
|
], SkillChangesController.prototype, "decide", null);
|
|
59
65
|
SkillChangesController = __decorate([
|
|
60
66
|
Controller("api/v1/orgs/:orgId/skill-changes"),
|
|
61
|
-
__param(0, Inject(
|
|
67
|
+
__param(0, Inject(SkillChangesService))
|
|
62
68
|
], SkillChangesController);
|
|
63
69
|
export { SkillChangesController };
|
|
64
70
|
/**
|
|
@@ -104,9 +110,9 @@ __decorate([
|
|
|
104
110
|
], AgentSkillsController.prototype, "remove", null);
|
|
105
111
|
AgentSkillsController = __decorate([
|
|
106
112
|
Controller("api/v1/orgs/:orgId/agents/:agentId/skills"),
|
|
107
|
-
__param(0, Inject(
|
|
108
|
-
__param(1, Inject(
|
|
109
|
-
__param(2, Inject(
|
|
113
|
+
__param(0, Inject(SkillChangesService)),
|
|
114
|
+
__param(1, Inject(AgentsService)),
|
|
115
|
+
__param(2, Inject(SkillsService))
|
|
110
116
|
], AgentSkillsController);
|
|
111
117
|
export { AgentSkillsController };
|
|
112
118
|
/**
|
|
@@ -131,6 +137,6 @@ __decorate([
|
|
|
131
137
|
], InboxController.prototype, "list", null);
|
|
132
138
|
InboxController = __decorate([
|
|
133
139
|
Controller("api/v1/orgs/:orgId/inbox"),
|
|
134
|
-
__param(0, Inject(
|
|
140
|
+
__param(0, Inject(InboxService))
|
|
135
141
|
], InboxController);
|
|
136
142
|
export { InboxController };
|
|
@@ -1,9 +1,9 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import {
|
|
3
|
-
import
|
|
4
|
-
import
|
|
5
|
-
import type {
|
|
6
|
-
|
|
1
|
+
import { EventLog } from "../conversations/event-log.js";
|
|
2
|
+
import type { SkillManifest } from "../db/kernel-schema.js";
|
|
3
|
+
import { KernelDb } from "../infra/database/kernel-db.js";
|
|
4
|
+
import { TransactionHost } from "../infra/database/transaction-host.js";
|
|
5
|
+
import type { KernelLogger } from "../log.js";
|
|
6
|
+
import { StorageService } from "../storage/storage.service.js";
|
|
7
7
|
/**
|
|
8
8
|
* 每个 agent 自己的技能(`scope = agent`)上限,含待批准的新技能。远低于目录快照的上限(`SKILLS_CATALOG_MAX`),
|
|
9
9
|
* 正常使用不会让目录被截断。
|
|
@@ -95,12 +95,6 @@ export interface CancelledDrafts {
|
|
|
95
95
|
prefixes: string[];
|
|
96
96
|
seqs: [string, number][];
|
|
97
97
|
}
|
|
98
|
-
export interface SkillChangesDeps {
|
|
99
|
-
db: KernelDb;
|
|
100
|
-
storage: StorageService;
|
|
101
|
-
eventLog: Pick<EventLog, "append" | "notify">;
|
|
102
|
-
log: Pick<Logger, "warn">;
|
|
103
|
-
}
|
|
104
98
|
/**
|
|
105
99
|
* agent 自写技能与共享 agent 的技能变更审批(M5 T15,R4):
|
|
106
100
|
* - `write`(工具 `skill_write` 调用):私有 agent 直接生成新版本;共享 agent 生成一条待负责人批准的申请,
|
|
@@ -113,8 +107,12 @@ export interface SkillChangesDeps {
|
|
|
113
107
|
* 状态都在 PG(agent 行锁串行化同一 agent 的写与决定),文件在对象存储 `kernel/<orgId>/skills/<id>/`;无进程内状态。
|
|
114
108
|
*/
|
|
115
109
|
export declare class SkillChangesService {
|
|
116
|
-
private readonly
|
|
117
|
-
|
|
110
|
+
private readonly db;
|
|
111
|
+
private readonly storage;
|
|
112
|
+
private readonly eventLog;
|
|
113
|
+
private readonly log;
|
|
114
|
+
readonly txHost: TransactionHost;
|
|
115
|
+
constructor(db: KernelDb, storage: StorageService, eventLog: EventLog, log: KernelLogger, txHost: TransactionHost);
|
|
118
116
|
/** 写技能(见类注释)。模型可见的失败抛 `ToolError`。 */
|
|
119
117
|
write(ctx: SkillWriteContext, pkg: SkillWritePackage): Promise<SkillWriteOutcome>;
|
|
120
118
|
/**
|
|
@@ -133,6 +131,12 @@ export declare class SkillChangesService {
|
|
|
133
131
|
* 各对话下一次运行开始时目录里去掉它;之后同名可再写为新技能。
|
|
134
132
|
*/
|
|
135
133
|
deleteAgentSkill(orgId: string, agentId: string, skillId: string, accountId: string, actorTokenId?: string): Promise<void>;
|
|
134
|
+
/** The transaction of {@link write}. */
|
|
135
|
+
private writeIn;
|
|
136
|
+
/** The transaction of {@link decide}. */
|
|
137
|
+
private decideIn;
|
|
138
|
+
/** The transaction of {@link deleteAgentSkill}. */
|
|
139
|
+
private deleteAgentSkillIn;
|
|
136
140
|
/** 当前用户(作为 agent 负责人)能决定的待处理申请,新的在前,最多 {@link SKILL_CHANGES_LIST_MAX} 条。 */
|
|
137
141
|
listPending(orgId: string, accountId: string): Promise<SkillChangeView[]>;
|
|
138
142
|
/**
|
|
@@ -157,19 +161,25 @@ export declare class SkillChangesService {
|
|
|
157
161
|
*/
|
|
158
162
|
private revertTrial;
|
|
159
163
|
/**
|
|
160
|
-
*
|
|
161
|
-
*
|
|
164
|
+
* In the caller's transaction (`mandatory`: `AgentsService.softDelete` holds the org and agent
|
|
165
|
+
* row locks), cancels every pending skill change of the agent: marks them cancelled, audits, and
|
|
166
|
+
* appends a reverting snapshot to each requesting conversation. After the commit the caller runs
|
|
167
|
+
* {@link finishCancel} to delete the drafts and publish the events.
|
|
162
168
|
*/
|
|
163
|
-
cancelPendingForAgent(
|
|
169
|
+
cancelPendingForAgent(orgId: string, agentId: string, actorAccountId: string, reason: string, actorTokenId?: string): Promise<CancelledDrafts>;
|
|
164
170
|
/** {@link cancelPendingForAgent} 提交之后:发布事件、尽力删除草稿对象。 */
|
|
165
171
|
finishCancel(orgId: string, c: CancelledDrafts): Promise<void>;
|
|
166
172
|
/** 新技能的数量上限(含待批准的新技能;`excluding` 是将被取代的申请)。 */
|
|
167
173
|
private assertBelowCap;
|
|
168
174
|
/** 写一个版本并让 `current_version` 指向它(技能不存在则新建)。 */
|
|
169
175
|
private createVersion;
|
|
176
|
+
/**
|
|
177
|
+
* 先给组织行加 KEY SHARE 锁,再锁 agent 行:与 `AgentsService`(组织行 FOR UPDATE → agent 行)同一顺序。
|
|
178
|
+
* 不先锁的话,本事务持有 agent 行后插入引用组织的行(外键取 KEY SHARE)会与之互相等待(40P01)。
|
|
179
|
+
*/
|
|
180
|
+
private keyShareOrg;
|
|
170
181
|
/** 尽力删除草稿对象(失败只记日志:孤儿对象随组织数据清理删除)。 */
|
|
171
182
|
private deletePrefix;
|
|
172
183
|
/** 补齐 agent 名。 */
|
|
173
184
|
private views;
|
|
174
185
|
}
|
|
175
|
-
export {};
|