@capybara-hq/kernel 0.1.0-rc.0 → 0.1.0-rc.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/bootstrap.json +10 -6
- package/dist/admin/admin.controller.d.ts +17 -17
- package/dist/admin/admin.controller.js +43 -26
- package/dist/admin/admin.module.d.ts +3 -0
- package/dist/admin/admin.module.js +22 -0
- package/dist/admin/extensions.controller.d.ts +14 -14
- package/dist/admin/extensions.controller.js +30 -17
- package/dist/admin/setup-lock.d.ts +16 -0
- package/dist/admin/setup-lock.js +47 -0
- package/dist/admin/setup.controller.d.ts +8 -8
- package/dist/admin/setup.controller.js +27 -25
- package/dist/admin/setup.service.d.ts +19 -27
- package/dist/admin/setup.service.js +61 -61
- package/dist/agents/agent-lookup.d.ts +53 -0
- package/dist/agents/agent-lookup.js +179 -0
- package/dist/agents/agents.controller.d.ts +1 -1
- package/dist/agents/agents.controller.js +14 -8
- package/dist/agents/agents.module.d.ts +7 -0
- package/dist/agents/agents.module.js +41 -0
- package/dist/agents/agents.service.d.ts +39 -58
- package/dist/agents/agents.service.js +261 -329
- package/dist/agents/definition.d.ts +8 -0
- package/dist/agents/definition.js +8 -0
- package/dist/agents/models.controller.d.ts +1 -1
- package/dist/agents/models.controller.js +2 -2
- package/dist/agents/templates.controller.d.ts +1 -1
- package/dist/agents/templates.controller.js +2 -2
- package/dist/agents/templates.d.ts +6 -8
- package/dist/agents/templates.js +20 -4
- package/dist/app.d.ts +93 -0
- package/dist/app.js +150 -0
- package/dist/catalog/admin-catalog.controller.d.ts +3 -3
- package/dist/catalog/admin-catalog.controller.js +27 -13
- package/dist/catalog/catalog-content.d.ts +185 -0
- package/dist/catalog/catalog-content.js +323 -0
- package/dist/catalog/catalog-items.d.ts +186 -0
- package/dist/catalog/catalog-items.js +410 -0
- package/dist/catalog/catalog.module.d.ts +14 -0
- package/dist/catalog/catalog.module.js +71 -0
- package/dist/catalog/catalog.service.d.ts +34 -188
- package/dist/catalog/catalog.service.js +155 -489
- package/dist/catalog/cli.d.ts +3 -2
- package/dist/catalog/cli.js +13 -31
- package/dist/catalog/job-ids.d.ts +15 -0
- package/dist/catalog/job-ids.js +15 -0
- package/dist/catalog/jobs.d.ts +27 -0
- package/dist/catalog/jobs.js +70 -0
- package/dist/catalog/locks.d.ts +24 -0
- package/dist/catalog/locks.js +63 -0
- package/dist/catalog/marketplaces.controller.d.ts +4 -4
- package/dist/catalog/marketplaces.controller.js +22 -11
- package/dist/catalog/marketplaces.service.d.ts +30 -13
- package/dist/catalog/marketplaces.service.js +330 -256
- package/dist/catalog/org-catalog.controller.d.ts +4 -3
- package/dist/catalog/org-catalog.controller.js +29 -14
- package/dist/catalog/org-catalog.service.d.ts +32 -198
- package/dist/catalog/org-catalog.service.js +159 -400
- package/dist/catalog/plugin-import.d.ts +73 -34
- package/dist/catalog/plugin-import.js +356 -217
- package/dist/catalog/plugin-install.d.ts +83 -41
- package/dist/catalog/plugin-install.js +421 -269
- package/dist/catalog/plugin-upgrade.d.ts +59 -4
- package/dist/catalog/plugin-upgrade.js +407 -282
- package/dist/catalog/requests.service.d.ts +27 -15
- package/dist/catalog/requests.service.js +201 -145
- package/dist/catalog/upgrade-targets.d.ts +4 -7
- package/dist/channels/actions.d.ts +6 -4
- package/dist/channels/actions.js +1 -1
- package/dist/channels/cards.d.ts +2 -2
- package/dist/channels/channels.module.d.ts +40 -0
- package/dist/channels/channels.module.js +128 -0
- package/dist/channels/connections.controller.d.ts +1 -1
- package/dist/channels/connections.controller.js +11 -6
- package/dist/channels/connections.service.d.ts +43 -21
- package/dist/channels/connections.service.js +236 -131
- package/dist/channels/inbound.d.ts +34 -38
- package/dist/channels/inbound.js +107 -41
- package/dist/channels/job-ids.d.ts +10 -0
- package/dist/channels/job-ids.js +10 -0
- package/dist/channels/jobs.d.ts +85 -0
- package/dist/channels/jobs.js +157 -0
- package/dist/channels/outbound.d.ts +60 -82
- package/dist/channels/outbound.js +165 -193
- package/dist/channels/supervisor.d.ts +88 -46
- package/dist/channels/supervisor.js +230 -132
- package/dist/channels/threads.d.ts +29 -8
- package/dist/channels/threads.js +71 -13
- package/dist/channels/webhook.d.ts +20 -14
- package/dist/channels/webhook.js +51 -20
- package/dist/config/load.d.ts +3 -2
- package/dist/config/load.js +3 -2
- package/dist/config/nacos-source.js +11 -2
- package/dist/config/schema.d.ts +16 -1
- package/dist/config/schema.js +54 -7
- package/dist/conversations/access.d.ts +29 -0
- package/dist/conversations/access.js +86 -0
- package/dist/conversations/artifacts.d.ts +10 -10
- package/dist/conversations/artifacts.js +35 -9
- package/dist/conversations/attachments.controller.d.ts +1 -1
- package/dist/conversations/attachments.controller.js +8 -6
- package/dist/conversations/attachments.module.d.ts +7 -0
- package/dist/conversations/attachments.module.js +25 -0
- package/dist/conversations/attachments.service.d.ts +30 -22
- package/dist/conversations/attachments.service.js +119 -46
- package/dist/conversations/conversations.controller.d.ts +8 -7
- package/dist/conversations/conversations.controller.js +59 -29
- package/dist/conversations/conversations.module.d.ts +8 -0
- package/dist/conversations/conversations.module.js +69 -0
- package/dist/conversations/conversations.service.d.ts +40 -38
- package/dist/conversations/conversations.service.js +130 -140
- package/dist/conversations/event-log.d.ts +28 -18
- package/dist/conversations/event-log.js +74 -27
- package/dist/conversations/files.d.ts +10 -10
- package/dist/conversations/files.js +37 -11
- package/dist/conversations/idem-keys.d.ts +5 -0
- package/dist/conversations/idem-keys.js +5 -0
- package/dist/conversations/job-ids.d.ts +6 -0
- package/dist/conversations/job-ids.js +6 -0
- package/dist/conversations/outputs-read.d.ts +11 -11
- package/dist/conversations/outputs-read.js +31 -7
- package/dist/conversations/queue.d.ts +48 -56
- package/dist/conversations/queue.js +13 -289
- package/dist/conversations/queue.service.d.ts +60 -0
- package/dist/conversations/queue.service.js +343 -0
- package/dist/conversations/sandbox-status.d.ts +13 -10
- package/dist/conversations/sandbox-status.js +36 -8
- package/dist/conversations/titles.d.ts +71 -24
- package/dist/conversations/titles.js +159 -62
- package/dist/ctx/bus.js +9 -3
- package/dist/ctx/create-ctx.d.ts +6 -0
- package/dist/ctx/create-ctx.js +7 -9
- package/dist/ctx/lock.d.ts +7 -3
- package/dist/ctx/lock.js +9 -20
- package/dist/ctx/queue.js +3 -2
- package/dist/ctx/secrets.d.ts +10 -2
- package/dist/ctx/secrets.js +7 -3
- package/dist/db/kernel-schema.d.ts +2 -2
- package/dist/db/pool.d.ts +5 -0
- package/dist/db/pool.js +1 -0
- package/dist/errors.d.ts +2 -0
- package/dist/errors.js +2 -0
- package/dist/evals/budget.d.ts +42 -21
- package/dist/evals/budget.js +114 -62
- package/dist/evals/evals.module.d.ts +31 -0
- package/dist/evals/evals.module.js +114 -0
- package/dist/evals/jobs.d.ts +20 -0
- package/dist/evals/jobs.js +45 -0
- package/dist/evals/run-replay.d.ts +56 -8
- package/dist/evals/run-replay.js +140 -80
- package/dist/evals/runs.controller.d.ts +1 -1
- package/dist/evals/runs.controller.js +17 -8
- package/dist/evals/runs.service.d.ts +23 -45
- package/dist/evals/runs.service.js +245 -234
- package/dist/evals/sets.controller.d.ts +1 -1
- package/dist/evals/sets.controller.js +17 -8
- package/dist/evals/sets.service.d.ts +22 -6
- package/dist/evals/sets.service.js +248 -194
- package/dist/evals/snapshot.d.ts +2 -2
- package/dist/evals/step-replay.d.ts +2 -2
- package/dist/evals/step-replay.js +1 -1
- package/dist/evals/trajectory.controller.d.ts +1 -1
- package/dist/evals/trajectory.controller.js +11 -7
- package/dist/evals/trajectory.service.d.ts +5 -4
- package/dist/evals/trajectory.service.js +30 -7
- package/dist/evals/worker.d.ts +44 -27
- package/dist/evals/worker.js +220 -120
- package/dist/extensions/admin-ops.d.ts +61 -33
- package/dist/extensions/admin-ops.js +248 -154
- package/dist/extensions/admin-view.d.ts +38 -27
- package/dist/extensions/admin-view.js +126 -55
- package/dist/extensions/approvals.d.ts +12 -8
- package/dist/extensions/approvals.js +73 -46
- package/dist/extensions/blobs.d.ts +27 -10
- package/dist/extensions/blobs.js +111 -45
- package/dist/extensions/bootstrap.d.ts +96 -42
- package/dist/extensions/bootstrap.js +303 -155
- package/dist/extensions/cli.d.ts +20 -10
- package/dist/extensions/cli.js +41 -96
- package/dist/extensions/config-issues.d.ts +7 -0
- package/dist/extensions/config-issues.js +31 -0
- package/dist/extensions/deployment-config-store.d.ts +49 -0
- package/dist/extensions/deployment-config-store.js +133 -0
- package/dist/extensions/deployment-config.d.ts +58 -67
- package/dist/extensions/deployment-config.js +202 -230
- package/dist/extensions/enabled.d.ts +5 -5
- package/dist/extensions/extensions.module.d.ts +8 -0
- package/dist/extensions/extensions.module.js +77 -0
- package/dist/extensions/hooks.d.ts +3 -2
- package/dist/extensions/hooks.js +1 -1
- package/dist/extensions/host.d.ts +72 -68
- package/dist/extensions/host.js +191 -152
- package/dist/extensions/installs.d.ts +49 -16
- package/dist/extensions/installs.js +128 -32
- package/dist/extensions/job-ids.d.ts +6 -0
- package/dist/extensions/job-ids.js +6 -0
- package/dist/extensions/lifecycle-topics.d.ts +18 -0
- package/dist/extensions/lifecycle-topics.js +18 -0
- package/dist/extensions/lifecycle.d.ts +35 -47
- package/dist/extensions/lifecycle.js +103 -39
- package/dist/extensions/locks.d.ts +33 -0
- package/dist/extensions/locks.js +86 -0
- package/dist/extensions/migrate-lock.d.ts +3 -4
- package/dist/extensions/org-config.controller.d.ts +1 -1
- package/dist/extensions/org-config.controller.js +8 -5
- package/dist/extensions/org-config.d.ts +48 -46
- package/dist/extensions/org-config.js +284 -226
- package/dist/extensions/registry.d.ts +50 -2
- package/dist/extensions/registry.js +89 -4
- package/dist/extensions/sources.d.ts +12 -8
- package/dist/extensions/sources.js +34 -13
- package/dist/files/files.module.d.ts +3 -0
- package/dist/files/files.module.js +22 -0
- package/dist/files/previewers.controller.d.ts +7 -2
- package/dist/files/previewers.controller.js +17 -9
- package/dist/files/previewers.d.ts +13 -18
- package/dist/files/previewers.js +83 -36
- package/dist/http/adapter.d.ts +3 -0
- package/dist/http/adapter.js +25 -0
- package/dist/http/api.module.d.ts +3 -110
- package/dist/http/api.module.js +47 -355
- package/dist/http/app.d.ts +11 -15
- package/dist/http/app.js +52 -47
- package/dist/http/error-filter.module.d.ts +5 -0
- package/dist/http/error-filter.module.js +18 -0
- package/dist/http/error.filter.js +2 -2
- package/dist/identity/accounts.d.ts +82 -29
- package/dist/identity/accounts.js +294 -175
- package/dist/identity/api-tokens.d.ts +11 -7
- package/dist/identity/api-tokens.js +71 -44
- package/dist/identity/audit.d.ts +7 -4
- package/dist/identity/audit.js +5 -1
- package/dist/identity/auth.controller.d.ts +11 -10
- package/dist/identity/auth.controller.js +31 -25
- package/dist/identity/auth.guard.d.ts +3 -3
- package/dist/identity/auth.guard.js +6 -4
- package/dist/identity/binding.d.ts +9 -11
- package/dist/identity/binding.js +41 -13
- package/dist/identity/enterprise-admin.d.ts +18 -12
- package/dist/identity/enterprise-admin.js +67 -13
- package/dist/identity/external-identity-lock.d.ts +17 -0
- package/dist/identity/external-identity-lock.js +39 -0
- package/dist/identity/external.d.ts +19 -15
- package/dist/identity/external.js +163 -125
- package/dist/identity/identity.module.d.ts +6 -0
- package/dist/identity/identity.module.js +56 -0
- package/dist/identity/me.controller.d.ts +16 -15
- package/dist/identity/me.controller.js +37 -31
- package/dist/identity/sessions.d.ts +12 -10
- package/dist/identity/sessions.js +74 -42
- package/dist/identity/settings.d.ts +20 -14
- package/dist/identity/settings.js +85 -57
- package/dist/identity/sso.controller.d.ts +7 -7
- package/dist/identity/sso.controller.js +13 -9
- package/dist/identity/sso.d.ts +9 -12
- package/dist/identity/sso.js +54 -24
- package/dist/inbox/inbox.module.d.ts +3 -0
- package/dist/inbox/inbox.module.js +22 -0
- package/dist/inbox/inbox.service.d.ts +7 -9
- package/dist/inbox/inbox.service.js +32 -11
- package/dist/index.d.ts +19 -12
- package/dist/index.js +13 -8
- package/dist/infra/cache/cache.module.d.ts +3 -0
- package/dist/infra/cache/cache.module.js +16 -0
- package/dist/infra/cache/cache.service.d.ts +21 -0
- package/dist/infra/cache/cache.service.js +80 -0
- package/dist/infra/cache/cacheable.decorator.d.ts +32 -0
- package/dist/infra/cache/cacheable.decorator.js +83 -0
- package/dist/infra/cli/kernel-cli.module.d.ts +66 -0
- package/dist/infra/cli/kernel-cli.module.js +165 -0
- package/dist/infra/close-within.d.ts +15 -0
- package/dist/infra/close-within.js +36 -0
- package/dist/infra/config/config.module.d.ts +13 -0
- package/dist/infra/config/config.module.js +39 -0
- package/dist/infra/config/kernel-config.service.d.ts +25 -0
- package/dist/infra/config/kernel-config.service.js +126 -0
- package/dist/infra/database/after-commit.d.ts +6 -0
- package/dist/infra/database/after-commit.js +9 -0
- package/dist/infra/database/database.module.d.ts +25 -0
- package/dist/infra/database/database.module.js +90 -0
- package/dist/infra/database/kernel-db.d.ts +22 -0
- package/dist/infra/database/kernel-db.js +65 -0
- package/dist/infra/database/transaction-host.d.ts +50 -0
- package/dist/infra/database/transaction-host.js +125 -0
- package/dist/infra/database/transactional.decorator.d.ts +15 -0
- package/dist/infra/database/transactional.decorator.js +27 -0
- package/dist/infra/database/xact-lock.d.ts +17 -0
- package/dist/infra/database/xact-lock.js +43 -0
- package/dist/infra/events/kernel-events.d.ts +96 -0
- package/dist/infra/events/kernel-events.js +65 -0
- package/dist/infra/health/health.controller.d.ts +26 -0
- package/dist/infra/health/health.controller.js +104 -0
- package/dist/infra/health/health.module.d.ts +9 -0
- package/dist/infra/health/health.module.js +24 -0
- package/dist/infra/health/health.options.d.ts +10 -0
- package/dist/infra/health/health.options.js +15 -0
- package/dist/infra/health/shutdown-state.d.ts +6 -0
- package/dist/infra/health/shutdown-state.js +2 -0
- package/dist/infra/lifecycle/graceful-shutdown.module.d.ts +6 -0
- package/dist/infra/lifecycle/graceful-shutdown.module.js +23 -0
- package/dist/infra/lifecycle/graceful-shutdown.service.d.ts +70 -0
- package/dist/infra/lifecycle/graceful-shutdown.service.js +135 -0
- package/dist/infra/lifecycle/process-guards.d.ts +52 -0
- package/dist/infra/lifecycle/process-guards.js +86 -0
- package/dist/infra/lifecycle/shutdown-signals.d.ts +30 -0
- package/dist/infra/lifecycle/shutdown-signals.js +48 -0
- package/dist/infra/lock/key-template.d.ts +13 -0
- package/dist/infra/lock/key-template.js +46 -0
- package/dist/infra/lock/lock.module.d.ts +3 -0
- package/dist/infra/lock/lock.module.js +16 -0
- package/dist/infra/lock/lock.service.d.ts +120 -0
- package/dist/infra/lock/lock.service.js +343 -0
- package/dist/infra/lock/shared-lease.d.ts +44 -0
- package/dist/infra/lock/shared-lease.js +121 -0
- package/dist/infra/lock/with-lock.decorator.d.ts +28 -0
- package/dist/infra/lock/with-lock.decorator.js +49 -0
- package/dist/infra/logging/logging.module.d.ts +16 -0
- package/dist/infra/logging/logging.module.js +34 -0
- package/dist/infra/queue/configured-processor.d.ts +18 -0
- package/dist/infra/queue/configured-processor.js +23 -0
- package/dist/infra/queue/job-failure.d.ts +18 -0
- package/dist/infra/queue/job-failure.js +26 -0
- package/dist/infra/queue/queue-shutdown.d.ts +27 -0
- package/dist/infra/queue/queue-shutdown.js +81 -0
- package/dist/infra/queue/queue.module.d.ts +16 -0
- package/dist/infra/queue/queue.module.js +61 -0
- package/dist/infra/queue/redis-connection.d.ts +7 -0
- package/dist/infra/queue/redis-connection.js +18 -0
- package/dist/infra/queue/retired-schedulers.d.ts +7 -0
- package/dist/infra/queue/retired-schedulers.js +9 -0
- package/dist/infra/queue/run-job.d.ts +16 -0
- package/dist/infra/queue/run-job.js +19 -0
- package/dist/infra/redis/redis.module.d.ts +24 -0
- package/dist/infra/redis/redis.module.js +87 -0
- package/dist/infra/schedule/cron-tick.d.ts +12 -0
- package/dist/infra/schedule/cron-tick.js +25 -0
- package/dist/infra/schedule/locked-cron.decorator.d.ts +27 -0
- package/dist/infra/schedule/locked-cron.decorator.js +53 -0
- package/dist/infra/schedule/locked-interval.d.ts +69 -0
- package/dist/infra/schedule/locked-interval.js +190 -0
- package/dist/infra/schedule/locked-tick.d.ts +90 -0
- package/dist/infra/schedule/locked-tick.js +137 -0
- package/dist/infra/schedule/schedule.module.d.ts +8 -0
- package/dist/infra/schedule/schedule.module.js +27 -0
- package/dist/infra/schedule/scheduled-runs.d.ts +69 -0
- package/dist/infra/schedule/scheduled-runs.js +163 -0
- package/dist/infra/swagger/swagger.d.ts +16 -0
- package/dist/infra/swagger/swagger.js +31 -0
- package/dist/infra/throttler/credential-throttler.d.ts +35 -0
- package/dist/infra/throttler/credential-throttler.js +77 -0
- package/dist/infra/throttler/named-throttlers.d.ts +31 -0
- package/dist/infra/throttler/named-throttlers.js +119 -0
- package/dist/infra/throttler/redis-throttler-storage.d.ts +38 -0
- package/dist/infra/throttler/redis-throttler-storage.js +130 -0
- package/dist/infra/throttler/throttler.guard.d.ts +23 -0
- package/dist/infra/throttler/throttler.guard.js +68 -0
- package/dist/infra/throttler/throttler.module.d.ts +15 -0
- package/dist/infra/throttler/throttler.module.js +53 -0
- package/dist/infra/tokens.d.ts +15 -0
- package/dist/infra/tokens.js +15 -0
- package/dist/infra/validation/create-zod-dto.d.ts +23 -0
- package/dist/infra/validation/create-zod-dto.js +35 -0
- package/dist/infra/validation/parse-with-zod.d.ts +7 -0
- package/dist/infra/validation/parse-with-zod.js +12 -0
- package/dist/infra/validation/validation.module.d.ts +3 -0
- package/dist/infra/validation/validation.module.js +16 -0
- package/dist/infra/validation/zod-params.d.ts +7 -0
- package/dist/infra/validation/zod-params.js +42 -0
- package/dist/infra/validation/zod-validation.pipe.d.ts +11 -0
- package/dist/infra/validation/zod-validation.pipe.js +31 -0
- package/dist/kernel.d.ts +9 -241
- package/dist/kernel.js +8 -1305
- package/dist/kernel.module.d.ts +17 -0
- package/dist/kernel.module.js +136 -0
- package/dist/lifecycle/kernel-lifecycle.d.ts +140 -0
- package/dist/lifecycle/kernel-lifecycle.js +451 -0
- package/dist/lifecycle/tokens.d.ts +3 -0
- package/dist/lifecycle/tokens.js +3 -0
- package/dist/log-config.d.ts +9 -0
- package/dist/log-config.js +27 -0
- package/dist/log-context.d.ts +34 -0
- package/dist/log-context.js +44 -0
- package/dist/log-loki.d.ts +34 -0
- package/dist/log-loki.js +145 -0
- package/dist/log.d.ts +41 -10
- package/dist/log.js +91 -17
- package/dist/models/models.module.d.ts +3 -0
- package/dist/models/models.module.js +24 -0
- package/dist/models/prices.d.ts +8 -2
- package/dist/models/prices.js +65 -37
- package/dist/models/purposes.controller.d.ts +1 -1
- package/dist/models/purposes.controller.js +5 -6
- package/dist/models/purposes.d.ts +35 -13
- package/dist/models/purposes.js +101 -51
- package/dist/net/public-address.js +3 -2
- package/dist/orgs/directory-sync.controller.d.ts +1 -1
- package/dist/orgs/directory-sync.controller.js +2 -2
- package/dist/orgs/directory-sync.d.ts +61 -31
- package/dist/orgs/directory-sync.js +212 -125
- package/dist/orgs/invitations.controller.d.ts +8 -8
- package/dist/orgs/invitations.controller.js +27 -26
- package/dist/orgs/invitations.service.d.ts +12 -9
- package/dist/orgs/invitations.service.js +130 -92
- package/dist/orgs/job-ids.d.ts +8 -0
- package/dist/orgs/job-ids.js +8 -0
- package/dist/orgs/members.service.d.ts +19 -12
- package/dist/orgs/members.service.js +161 -117
- package/dist/orgs/offboarding.d.ts +54 -57
- package/dist/orgs/offboarding.js +161 -71
- package/dist/orgs/org-lock.d.ts +28 -19
- package/dist/orgs/org-lock.js +81 -35
- package/dist/orgs/org.guard.d.ts +1 -1
- package/dist/orgs/org.guard.js +2 -2
- package/dist/orgs/orgs.controller.d.ts +13 -13
- package/dist/orgs/orgs.controller.js +29 -17
- package/dist/orgs/orgs.module.d.ts +6 -0
- package/dist/orgs/orgs.module.js +68 -0
- package/dist/orgs/orgs.service.d.ts +30 -19
- package/dist/orgs/orgs.service.js +139 -86
- package/dist/orgs/settings.controller.d.ts +1 -1
- package/dist/orgs/settings.controller.js +8 -6
- package/dist/orgs/settings.service.d.ts +14 -8
- package/dist/orgs/settings.service.js +75 -46
- package/dist/overrides.d.ts +56 -0
- package/dist/overrides.js +30 -0
- package/dist/roles/gateway-role.d.ts +43 -0
- package/dist/roles/gateway-role.js +98 -0
- package/dist/roles/gateway.module.d.ts +8 -0
- package/dist/roles/gateway.module.js +28 -0
- package/dist/roles/worker-role.d.ts +63 -0
- package/dist/roles/worker-role.js +144 -0
- package/dist/roles/worker.module.d.ts +14 -0
- package/dist/roles/worker.module.js +90 -0
- package/dist/runtime/abort.js +19 -2
- package/dist/runtime/checkpointer.d.ts +8 -3
- package/dist/runtime/checkpointer.js +87 -55
- package/dist/runtime/conversation-lock.d.ts +20 -11
- package/dist/runtime/conversation-lock.js +62 -72
- package/dist/runtime/hook-calls.d.ts +3 -3
- package/dist/runtime/hook-calls.js +1 -6
- package/dist/runtime/job-ids.d.ts +10 -0
- package/dist/runtime/job-ids.js +10 -0
- package/dist/runtime/langgraph-loop.js +1 -1
- package/dist/runtime/loop.d.ts +7 -0
- package/dist/runtime/loop.js +14 -0
- package/dist/runtime/maintenance-queue.d.ts +10 -0
- package/dist/runtime/maintenance-queue.js +10 -0
- package/dist/runtime/maintenance.d.ts +45 -74
- package/dist/runtime/maintenance.js +139 -136
- package/dist/runtime/model-call.d.ts +7 -4
- package/dist/runtime/model-call.js +24 -57
- package/dist/runtime/providers.d.ts +17 -6
- package/dist/runtime/providers.js +66 -25
- package/dist/runtime/quota.d.ts +17 -3
- package/dist/runtime/quota.js +27 -2
- package/dist/runtime/retired-schedulers.d.ts +7 -0
- package/dist/runtime/retired-schedulers.js +31 -0
- package/dist/runtime/run-control.d.ts +33 -0
- package/dist/runtime/run-control.js +77 -0
- package/dist/runtime/run-finish.d.ts +26 -17
- package/dist/runtime/run-finish.js +98 -51
- package/dist/runtime/run-jobs.d.ts +48 -0
- package/dist/runtime/run-jobs.js +95 -0
- package/dist/runtime/run-processors.d.ts +60 -0
- package/dist/runtime/run-processors.js +185 -0
- package/dist/runtime/run-queue.d.ts +32 -57
- package/dist/runtime/run-queue.js +291 -295
- package/dist/runtime/run-steps.d.ts +39 -0
- package/dist/runtime/run-steps.js +96 -0
- package/dist/runtime/run-worker.d.ts +121 -75
- package/dist/runtime/run-worker.js +340 -225
- package/dist/runtime/runtime.module.d.ts +10 -0
- package/dist/runtime/runtime.module.js +112 -0
- package/dist/runtime/step-log.d.ts +40 -0
- package/dist/runtime/step-log.js +94 -0
- package/dist/runtime/stream.controller.d.ts +5 -8
- package/dist/runtime/stream.controller.js +14 -12
- package/dist/runtime/stream.d.ts +24 -6
- package/dist/runtime/stream.js +78 -7
- package/dist/runtime/subagents/child.d.ts +3 -44
- package/dist/runtime/subagents/child.js +0 -79
- package/dist/runtime/subagents/definition.d.ts +4 -4
- package/dist/runtime/subagents/definition.js +2 -2
- package/dist/runtime/subagents/dispatch.d.ts +87 -6
- package/dist/runtime/subagents/dispatch.js +135 -140
- package/dist/runtime/subagents/limits.d.ts +9 -4
- package/dist/runtime/subagents/limits.js +4 -2
- package/dist/runtime/subagents/org-agents.d.ts +4 -4
- package/dist/runtime/subagents/org-agents.js +1 -1
- package/dist/runtime/subagents/progress.d.ts +2 -2
- package/dist/runtime/subagents/roster.d.ts +3 -3
- package/dist/runtime/subagents/roster.js +1 -1
- package/dist/runtime/subagents/skill-fork.d.ts +6 -7
- package/dist/runtime/subagents/skill-fork.js +16 -5
- package/dist/runtime/subagents/subagents.service.d.ts +40 -0
- package/dist/runtime/subagents/subagents.service.js +101 -0
- package/dist/runtime/usage-report.d.ts +94 -52
- package/dist/runtime/usage-report.js +200 -99
- package/dist/runtime/waits.d.ts +125 -57
- package/dist/runtime/waits.js +431 -208
- package/dist/sandbox/job-ids.d.ts +10 -0
- package/dist/sandbox/job-ids.js +10 -0
- package/dist/sandbox/jobs.d.ts +41 -0
- package/dist/sandbox/jobs.js +113 -0
- package/dist/sandbox/leases.d.ts +39 -31
- package/dist/sandbox/leases.js +117 -257
- package/dist/sandbox/providers.d.ts +19 -0
- package/dist/sandbox/providers.js +38 -0
- package/dist/sandbox/sandbox.module.d.ts +8 -0
- package/dist/sandbox/sandbox.module.js +30 -0
- package/dist/sandbox/sandbox.service.d.ts +24 -29
- package/dist/sandbox/sandbox.service.js +106 -75
- package/dist/skills/catalog.d.ts +33 -20
- package/dist/skills/catalog.js +96 -53
- package/dist/skills/changes.controller.d.ts +4 -4
- package/dist/skills/changes.controller.js +15 -9
- package/dist/skills/changes.service.d.ts +28 -18
- package/dist/skills/changes.service.js +421 -364
- package/dist/skills/invocable.controller.d.ts +1 -1
- package/dist/skills/invocable.controller.js +8 -5
- package/dist/skills/invoke.d.ts +16 -15
- package/dist/skills/invoke.js +48 -17
- package/dist/skills/skills.controller.d.ts +1 -1
- package/dist/skills/skills.controller.js +11 -6
- package/dist/skills/skills.module.d.ts +6 -0
- package/dist/skills/skills.module.js +30 -0
- package/dist/skills/skills.service.d.ts +47 -30
- package/dist/skills/skills.service.js +221 -158
- package/dist/storage/job-ids.d.ts +6 -0
- package/dist/storage/job-ids.js +6 -0
- package/dist/storage/purge.d.ts +22 -7
- package/dist/storage/purge.js +55 -3
- package/dist/storage/storage.module.d.ts +6 -0
- package/dist/storage/storage.module.js +23 -0
- package/dist/storage/storage.service.d.ts +18 -4
- package/dist/storage/storage.service.js +44 -3
- package/dist/tools/approvals.controller.d.ts +1 -1
- package/dist/tools/approvals.controller.js +12 -8
- package/dist/tools/approvals.service.d.ts +27 -25
- package/dist/tools/approvals.service.js +324 -258
- package/dist/tools/breaker.d.ts +2 -2
- package/dist/tools/breaker.js +21 -3
- package/dist/tools/builtins/ask-user.d.ts +2 -2
- package/dist/tools/builtins/ask-user.js +1 -1
- package/dist/tools/builtins/builtin-tools.d.ts +21 -0
- package/dist/tools/builtins/builtin-tools.js +80 -0
- package/dist/tools/builtins/read-tool-output.d.ts +2 -2
- package/dist/tools/builtins/read-tool-output.js +1 -1
- package/dist/tools/builtins/sandbox/bash.js +2 -2
- package/dist/tools/builtins/sandbox/common.d.ts +7 -4
- package/dist/tools/builtins/sandbox/common.js +5 -3
- package/dist/tools/builtins/sandbox/deliver.js +2 -2
- package/dist/tools/builtins/sandbox/edit.js +1 -1
- package/dist/tools/builtins/sandbox/glob.js +2 -2
- package/dist/tools/builtins/sandbox/grep.js +2 -2
- package/dist/tools/builtins/sandbox/read.js +1 -1
- package/dist/tools/builtins/sandbox/write.js +1 -1
- package/dist/tools/builtins/skill-load.d.ts +3 -3
- package/dist/tools/builtins/skill-load.js +1 -1
- package/dist/tools/canonical-json.d.ts +6 -0
- package/dist/tools/canonical-json.js +16 -0
- package/dist/tools/connector-content.controller.d.ts +1 -1
- package/dist/tools/connector-content.controller.js +11 -6
- package/dist/tools/connector-content.d.ts +12 -15
- package/dist/tools/connector-content.js +53 -18
- package/dist/tools/connectors.controller.d.ts +1 -1
- package/dist/tools/connectors.controller.js +21 -10
- package/dist/tools/connectors.service.d.ts +31 -13
- package/dist/tools/connectors.service.js +434 -344
- package/dist/tools/credentials.d.ts +17 -20
- package/dist/tools/credentials.js +55 -34
- package/dist/tools/drift.d.ts +29 -41
- package/dist/tools/drift.js +111 -79
- package/dist/tools/info.d.ts +12 -9
- package/dist/tools/info.js +33 -7
- package/dist/tools/job-ids.d.ts +13 -0
- package/dist/tools/job-ids.js +15 -0
- package/dist/tools/jobs.d.ts +24 -0
- package/dist/tools/jobs.js +69 -0
- package/dist/tools/oauth/flow-paths.d.ts +16 -0
- package/dist/tools/oauth/flow-paths.js +38 -0
- package/dist/tools/oauth/flow.d.ts +30 -30
- package/dist/tools/oauth/flow.js +109 -81
- package/dist/tools/oauth/oauth.controller.d.ts +3 -3
- package/dist/tools/oauth/oauth.controller.js +12 -9
- package/dist/tools/oauth/tokens.d.ts +11 -3
- package/dist/tools/oauth/tokens.js +15 -14
- package/dist/tools/outputs.d.ts +13 -4
- package/dist/tools/outputs.js +47 -3
- package/dist/tools/pipeline.d.ts +62 -46
- package/dist/tools/pipeline.js +145 -64
- package/dist/tools/policy.d.ts +2 -2
- package/dist/tools/questions.controller.d.ts +1 -1
- package/dist/tools/questions.controller.js +8 -5
- package/dist/tools/questions.service.d.ts +25 -24
- package/dist/tools/questions.service.js +201 -142
- package/dist/tools/registry.d.ts +30 -20
- package/dist/tools/registry.js +73 -37
- package/dist/tools/specs.d.ts +5 -4
- package/dist/tools/specs.js +3 -1
- package/dist/tools/tools.module.d.ts +10 -0
- package/dist/tools/tools.module.js +91 -0
- package/dist/ui/call-extension.d.ts +16 -0
- package/dist/ui/call-extension.js +38 -0
- package/dist/ui/embed-token.d.ts +9 -5
- package/dist/ui/embed-token.js +34 -6
- package/dist/ui/ui-stream.d.ts +22 -17
- package/dist/ui/ui-stream.js +72 -12
- package/dist/ui/ui.module.d.ts +7 -0
- package/dist/ui/ui.module.js +28 -0
- package/dist/ui/views.controller.d.ts +14 -12
- package/dist/ui/views.controller.js +32 -25
- package/dist/ui/views.d.ts +9 -57
- package/dist/ui/views.js +43 -45
- package/package.json +11 -2
- package/dist/http/health.controller.d.ts +0 -26
- package/dist/http/health.controller.js +0 -79
- package/dist/http/tokens.d.ts +0 -131
- package/dist/http/tokens.js +0 -131
- package/dist/http/zod.pipe.d.ts +0 -8
- package/dist/http/zod.pipe.js +0 -14
- package/dist/identity/rate-limit.d.ts +0 -55
- package/dist/identity/rate-limit.js +0 -121
- package/dist/sandbox/lifecycle.d.ts +0 -21
- package/dist/sandbox/lifecycle.js +0 -68
- /package/dist/http/{gateway.module.d.ts → gateway-routes.d.ts} +0 -0
- /package/dist/http/{gateway.module.js → gateway-routes.js} +0 -0
|
@@ -8,28 +8,33 @@ var __param = (this && this.__param) || function (paramIndex, decorator) {
|
|
|
8
8
|
return function (target, key) { decorator(target, key, paramIndex); }
|
|
9
9
|
};
|
|
10
10
|
import { createHash, timingSafeEqual } from "node:crypto";
|
|
11
|
-
import {
|
|
11
|
+
import { Controller, Get, HttpCode, Inject, Post, Req, Res } from "@nestjs/common";
|
|
12
12
|
import { z } from "zod";
|
|
13
13
|
import { ApiError } from "../errors.js";
|
|
14
|
-
import { KERNEL_CONFIG, RATE_LIMITER, SESSIONS, SETUP } from "../http/tokens.js";
|
|
15
|
-
import { ZodPipe } from "../http/zod.pipe.js";
|
|
16
14
|
import { clientMeta } from "../identity/auth.controller.js";
|
|
17
15
|
import { setSessionCookies } from "../identity/cookies.js";
|
|
18
16
|
import { MAX_PASSWORD_LENGTH } from "../identity/login.js";
|
|
19
17
|
import { Public } from "../identity/principal.js";
|
|
20
|
-
|
|
18
|
+
import { SessionService } from "../identity/sessions.js";
|
|
19
|
+
import { KernelConfigService } from "../infra/config/kernel-config.service.js";
|
|
20
|
+
import { CredentialThrottler } from "../infra/throttler/credential-throttler.js";
|
|
21
|
+
import { createZodDto } from "../infra/validation/create-zod-dto.js";
|
|
22
|
+
import { ZBody } from "../infra/validation/zod-params.js";
|
|
23
|
+
import { SetupService } from "./setup.service.js";
|
|
24
|
+
const SetupSchema = z.object({
|
|
21
25
|
login: z.string().min(1).max(64),
|
|
22
26
|
password: z.string().min(1).max(MAX_PASSWORD_LENGTH),
|
|
23
27
|
displayName: z.string().trim().min(1).max(100),
|
|
24
28
|
orgName: z.string().max(100).optional(),
|
|
25
29
|
setupToken: z.string().max(1024).optional(),
|
|
26
30
|
});
|
|
31
|
+
class SetupBody extends createZodDto(SetupSchema, "SetupBody") {
|
|
32
|
+
}
|
|
27
33
|
/**
|
|
28
|
-
*
|
|
29
|
-
*
|
|
34
|
+
* The setup token's credential throttlers: 10 per client IP, 100 for the whole deployment per
|
|
35
|
+
* 900 s (the total stops guessing from many IPs; a long token never hits it in normal use).
|
|
30
36
|
*/
|
|
31
|
-
const
|
|
32
|
-
const SETUP_TOKEN_LIMIT_PER_IP = 10;
|
|
37
|
+
const SETUP_THROTTLERS = ["setup-token", "setup-ip"];
|
|
33
38
|
const sha256 = (s) => createHash("sha256").update(s, "utf8").digest();
|
|
34
39
|
/** 常数时间比较:两边先取 SHA-256,长度恒等,不因长度不同提前返回或抛错。 */
|
|
35
40
|
function tokenMatches(given, expected) {
|
|
@@ -40,12 +45,12 @@ let SetupController = class SetupController {
|
|
|
40
45
|
setup;
|
|
41
46
|
sessions;
|
|
42
47
|
config;
|
|
43
|
-
|
|
44
|
-
constructor(setup, sessions, config,
|
|
48
|
+
throttler;
|
|
49
|
+
constructor(setup, sessions, config, throttler) {
|
|
45
50
|
this.setup = setup;
|
|
46
51
|
this.sessions = sessions;
|
|
47
52
|
this.config = config;
|
|
48
|
-
this.
|
|
53
|
+
this.throttler = throttler;
|
|
49
54
|
}
|
|
50
55
|
async status() {
|
|
51
56
|
return this.setup.status();
|
|
@@ -56,19 +61,14 @@ let SetupController = class SetupController {
|
|
|
56
61
|
* 核对前先占用限流额度,超限 → 429 `auth.rate_limited`,核对通过后退还。
|
|
57
62
|
*/
|
|
58
63
|
async complete(body, req, reply) {
|
|
59
|
-
const cfg = this.config();
|
|
64
|
+
const cfg = this.config.get();
|
|
60
65
|
const expected = cfg.auth.setupToken;
|
|
61
66
|
if (expected !== undefined) {
|
|
62
|
-
|
|
63
|
-
const rl = await this.limiter.reserveScoped("setup", "token", ip, SETUP_TOKEN_LIMIT_TOTAL, SETUP_TOKEN_LIMIT_PER_IP);
|
|
64
|
-
if (!rl.allowed) {
|
|
65
|
-
reply.header("retry-after", String(rl.retryAfterSeconds));
|
|
66
|
-
throw new ApiError("auth.rate_limited", "Too many setup attempts; try again later");
|
|
67
|
-
}
|
|
67
|
+
await this.throttler.reserve(SETUP_THROTTLERS, req, reply);
|
|
68
68
|
if (!tokenMatches(body.setupToken, expected)) {
|
|
69
69
|
throw new ApiError("setup.token_invalid", "Setup token is missing or invalid");
|
|
70
70
|
}
|
|
71
|
-
await this.
|
|
71
|
+
await this.throttler.succeeded(SETUP_THROTTLERS, req);
|
|
72
72
|
}
|
|
73
73
|
// 会话行与账号 / 组织在同一事务里写入;Cookie 在提交之后才设置
|
|
74
74
|
const meta = clientMeta(req);
|
|
@@ -77,7 +77,9 @@ let SetupController = class SetupController {
|
|
|
77
77
|
password: body.password,
|
|
78
78
|
displayName: body.displayName,
|
|
79
79
|
orgName: body.orgName,
|
|
80
|
-
},
|
|
80
|
+
},
|
|
81
|
+
// runs in the setup's transaction
|
|
82
|
+
(account) => this.sessions.create(account.id, meta));
|
|
81
83
|
if (!session)
|
|
82
84
|
throw new Error("setup completed without a session");
|
|
83
85
|
setSessionCookies(reply, session, cfg);
|
|
@@ -92,15 +94,15 @@ __decorate([
|
|
|
92
94
|
Post(),
|
|
93
95
|
Public(),
|
|
94
96
|
HttpCode(201),
|
|
95
|
-
__param(0,
|
|
97
|
+
__param(0, ZBody(SetupBody)),
|
|
96
98
|
__param(1, Req()),
|
|
97
99
|
__param(2, Res({ passthrough: true }))
|
|
98
100
|
], SetupController.prototype, "complete", null);
|
|
99
101
|
SetupController = __decorate([
|
|
100
102
|
Controller("api/v1/setup"),
|
|
101
|
-
__param(0, Inject(
|
|
102
|
-
__param(1, Inject(
|
|
103
|
-
__param(2, Inject(
|
|
104
|
-
__param(3, Inject(
|
|
103
|
+
__param(0, Inject(SetupService)),
|
|
104
|
+
__param(1, Inject(SessionService)),
|
|
105
|
+
__param(2, Inject(KernelConfigService)),
|
|
106
|
+
__param(3, Inject(CredentialThrottler))
|
|
105
107
|
], SetupController);
|
|
106
108
|
export { SetupController };
|
|
@@ -1,47 +1,39 @@
|
|
|
1
|
-
import type
|
|
2
|
-
import
|
|
3
|
-
import
|
|
4
|
-
import type
|
|
5
|
-
|
|
1
|
+
import { type Account, AccountsService } from "../identity/accounts.js";
|
|
2
|
+
import { KernelDb } from "../infra/database/kernel-db.js";
|
|
3
|
+
import { TransactionHost } from "../infra/database/transaction-host.js";
|
|
4
|
+
import { type Org, OrgsService } from "../orgs/orgs.service.js";
|
|
5
|
+
import { SetupLock } from "./setup-lock.js";
|
|
6
|
+
/**
|
|
7
|
+
* The setup wizard. The CLI's enterprise admin creation (`createEnterpriseAdmin`,
|
|
8
|
+
* `createEnterpriseAdminIfNone`) is on `AccountsService`, under the same {@link SetupLock}.
|
|
9
|
+
*/
|
|
6
10
|
export declare class SetupService {
|
|
7
11
|
private readonly db;
|
|
12
|
+
readonly txHost: TransactionHost;
|
|
13
|
+
private readonly setupLock;
|
|
8
14
|
private readonly accounts;
|
|
9
15
|
private readonly orgs;
|
|
10
|
-
constructor(db: KernelDb, accounts: AccountsService, orgs: OrgsService);
|
|
16
|
+
constructor(db: KernelDb, txHost: TransactionHost, setupLock: SetupLock, accounts: AccountsService, orgs: OrgsService);
|
|
11
17
|
/** 不存在活跃企业管理员即需要初始化(每次实时查 PG,不缓存)。 */
|
|
12
18
|
status(): Promise<{
|
|
13
19
|
needsSetup: boolean;
|
|
14
20
|
}>;
|
|
15
21
|
/**
|
|
16
|
-
*
|
|
17
|
-
*
|
|
18
|
-
*
|
|
22
|
+
* Completes the setup in one transaction: {@link SetupLock} serializes concurrent setups, and
|
|
23
|
+
* under it there must still be no active enterprise admin; then creates the enterprise admin
|
|
24
|
+
* and (with `orgName`) an org it owns. Any failure rolls everything back. `inTx` runs last in the
|
|
25
|
+
* same transaction (the wizard creates the session there), its result is `extra`; its failure
|
|
26
|
+
* rolls back too.
|
|
19
27
|
*/
|
|
20
28
|
complete<T = undefined>(input: {
|
|
21
29
|
login: string;
|
|
22
30
|
password: string;
|
|
23
31
|
displayName: string;
|
|
24
32
|
orgName?: string | undefined;
|
|
25
|
-
}, inTx?: (
|
|
33
|
+
}, inTx?: (account: Account) => Promise<T>): Promise<{
|
|
26
34
|
account: Account;
|
|
27
35
|
org?: Org;
|
|
28
36
|
extra: T | undefined;
|
|
29
37
|
}>;
|
|
30
|
-
|
|
31
|
-
createEnterpriseAdmin(input: EnterpriseAdminInput): Promise<Account>;
|
|
32
|
-
/**
|
|
33
|
-
* CLI `admin create --if-none`: create an enterprise admin only when no active one exists. The
|
|
34
|
-
* check and the insert run in one transaction under the same advisory lock as {@link complete},
|
|
35
|
-
* so concurrent runs (and a concurrent web setup) create exactly one. Returns undefined when an
|
|
36
|
-
* active enterprise admin already exists; a taken login still throws `account.login_taken`.
|
|
37
|
-
*/
|
|
38
|
-
createEnterpriseAdminIfNone(input: EnterpriseAdminInput): Promise<Account | undefined>;
|
|
39
|
-
private insertEnterpriseAdmin;
|
|
40
|
-
}
|
|
41
|
-
/** Input of the CLI enterprise admin creation. */
|
|
42
|
-
export interface EnterpriseAdminInput {
|
|
43
|
-
login: string;
|
|
44
|
-
password: string;
|
|
45
|
-
displayName: string;
|
|
46
|
-
email?: string | undefined;
|
|
38
|
+
private completeIn;
|
|
47
39
|
}
|
|
@@ -1,14 +1,36 @@
|
|
|
1
|
-
|
|
1
|
+
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
|
2
|
+
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
3
|
+
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
4
|
+
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
5
|
+
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
6
|
+
};
|
|
7
|
+
var __param = (this && this.__param) || function (paramIndex, decorator) {
|
|
8
|
+
return function (target, key) { decorator(target, key, paramIndex); }
|
|
9
|
+
};
|
|
10
|
+
import { Inject, Injectable } from "@nestjs/common";
|
|
2
11
|
import { ApiError } from "../errors.js";
|
|
12
|
+
import { AccountsService } from "../identity/accounts.js";
|
|
3
13
|
import { audit } from "../identity/audit.js";
|
|
14
|
+
import { KernelDb } from "../infra/database/kernel-db.js";
|
|
15
|
+
import { TransactionHost } from "../infra/database/transaction-host.js";
|
|
16
|
+
import { Transactional } from "../infra/database/transactional.decorator.js";
|
|
17
|
+
import { OrgsService } from "../orgs/orgs.service.js";
|
|
18
|
+
import { SetupLock } from "./setup-lock.js";
|
|
4
19
|
const alreadyCompleted = () => new ApiError("setup.already_completed", "Deployment is already set up");
|
|
5
|
-
/**
|
|
6
|
-
|
|
20
|
+
/**
|
|
21
|
+
* The setup wizard. The CLI's enterprise admin creation (`createEnterpriseAdmin`,
|
|
22
|
+
* `createEnterpriseAdminIfNone`) is on `AccountsService`, under the same {@link SetupLock}.
|
|
23
|
+
*/
|
|
24
|
+
let SetupService = class SetupService {
|
|
7
25
|
db;
|
|
26
|
+
txHost;
|
|
27
|
+
setupLock;
|
|
8
28
|
accounts;
|
|
9
29
|
orgs;
|
|
10
|
-
constructor(db, accounts, orgs) {
|
|
30
|
+
constructor(db, txHost, setupLock, accounts, orgs) {
|
|
11
31
|
this.db = db;
|
|
32
|
+
this.txHost = txHost;
|
|
33
|
+
this.setupLock = setupLock;
|
|
12
34
|
this.accounts = accounts;
|
|
13
35
|
this.orgs = orgs;
|
|
14
36
|
}
|
|
@@ -17,74 +39,52 @@ export class SetupService {
|
|
|
17
39
|
return { needsSetup: (await this.accounts.countEnterpriseAdmins()) === 0 };
|
|
18
40
|
}
|
|
19
41
|
/**
|
|
20
|
-
*
|
|
21
|
-
*
|
|
22
|
-
*
|
|
42
|
+
* Completes the setup in one transaction: {@link SetupLock} serializes concurrent setups, and
|
|
43
|
+
* under it there must still be no active enterprise admin; then creates the enterprise admin
|
|
44
|
+
* and (with `orgName`) an org it owns. Any failure rolls everything back. `inTx` runs last in the
|
|
45
|
+
* same transaction (the wizard creates the session there), its result is `extra`; its failure
|
|
46
|
+
* rolls back too.
|
|
23
47
|
*/
|
|
24
48
|
async complete(input, inTx) {
|
|
25
|
-
//
|
|
26
|
-
//
|
|
49
|
+
// A cheap pre-check first (a set-up deployment does not run scrypt for nothing), then the hash
|
|
50
|
+
// before BEGIN: no scrypt inside the transaction holding the lock; the check runs again under it
|
|
27
51
|
if ((await this.accounts.countEnterpriseAdmins()) > 0)
|
|
28
52
|
throw alreadyCompleted();
|
|
29
53
|
const passwordHash = await this.accounts.hashNewPassword(input.password);
|
|
30
|
-
return this.
|
|
31
|
-
await sql `SELECT pg_advisory_xact_lock(hashtext('capybara.setup'))`.execute(trx);
|
|
32
|
-
if ((await this.accounts.countEnterpriseAdmins(trx)) > 0)
|
|
33
|
-
throw alreadyCompleted();
|
|
34
|
-
const account = await this.accounts.createLocal({
|
|
35
|
-
login: input.login,
|
|
36
|
-
password: input.password,
|
|
37
|
-
displayName: input.displayName,
|
|
38
|
-
enterpriseAdmin: true,
|
|
39
|
-
}, trx, passwordHash);
|
|
40
|
-
const org = input.orgName !== undefined
|
|
41
|
-
? await this.orgs.create({ name: input.orgName }, account, { trx })
|
|
42
|
-
: undefined;
|
|
43
|
-
await audit(trx, {
|
|
44
|
-
actorAccountId: account.id,
|
|
45
|
-
action: "deployment.setup_completed",
|
|
46
|
-
target: account.id,
|
|
47
|
-
...(org && { orgId: org.id, detail: { orgId: org.id } }),
|
|
48
|
-
});
|
|
49
|
-
const extra = inTx ? await inTx(trx, account) : undefined;
|
|
50
|
-
return { account, ...(org && { org }), extra };
|
|
51
|
-
});
|
|
52
|
-
}
|
|
53
|
-
/** CLI 用:直接建企业管理员,不检查是否已初始化;登录名已存在 → `account.login_taken`。 */
|
|
54
|
-
async createEnterpriseAdmin(input) {
|
|
55
|
-
const passwordHash = await this.accounts.hashNewPassword(input.password);
|
|
56
|
-
return this.db
|
|
57
|
-
.transaction()
|
|
58
|
-
.execute((trx) => this.insertEnterpriseAdmin(trx, input, passwordHash));
|
|
59
|
-
}
|
|
60
|
-
/**
|
|
61
|
-
* CLI `admin create --if-none`: create an enterprise admin only when no active one exists. The
|
|
62
|
-
* check and the insert run in one transaction under the same advisory lock as {@link complete},
|
|
63
|
-
* so concurrent runs (and a concurrent web setup) create exactly one. Returns undefined when an
|
|
64
|
-
* active enterprise admin already exists; a taken login still throws `account.login_taken`.
|
|
65
|
-
*/
|
|
66
|
-
async createEnterpriseAdminIfNone(input) {
|
|
67
|
-
const passwordHash = await this.accounts.hashNewPassword(input.password);
|
|
68
|
-
return this.db.transaction().execute(async (trx) => {
|
|
69
|
-
await sql `SELECT pg_advisory_xact_lock(hashtext('capybara.setup'))`.execute(trx);
|
|
70
|
-
if ((await this.accounts.countEnterpriseAdmins(trx)) > 0)
|
|
71
|
-
return undefined;
|
|
72
|
-
return this.insertEnterpriseAdmin(trx, input, passwordHash);
|
|
73
|
-
});
|
|
54
|
+
return this.completeIn(input, passwordHash, inTx);
|
|
74
55
|
}
|
|
75
|
-
async
|
|
56
|
+
async completeIn(input, passwordHash, inTx) {
|
|
57
|
+
await this.setupLock.lock();
|
|
58
|
+
if ((await this.accounts.countEnterpriseAdmins()) > 0)
|
|
59
|
+
throw alreadyCompleted();
|
|
76
60
|
const account = await this.accounts.createLocal({
|
|
77
61
|
login: input.login,
|
|
78
62
|
password: input.password,
|
|
79
63
|
displayName: input.displayName,
|
|
80
64
|
enterpriseAdmin: true,
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
65
|
+
}, passwordHash);
|
|
66
|
+
const org = input.orgName !== undefined
|
|
67
|
+
? await this.orgs.create({ name: input.orgName }, account)
|
|
68
|
+
: undefined;
|
|
69
|
+
await audit(this.db.db, {
|
|
70
|
+
actorAccountId: account.id,
|
|
71
|
+
action: "deployment.setup_completed",
|
|
85
72
|
target: account.id,
|
|
86
|
-
|
|
73
|
+
...(org && { orgId: org.id, detail: { orgId: org.id } }),
|
|
87
74
|
});
|
|
88
|
-
|
|
75
|
+
const extra = inTx ? await inTx(account) : undefined;
|
|
76
|
+
return { account, ...(org && { org }), extra };
|
|
89
77
|
}
|
|
90
|
-
}
|
|
78
|
+
};
|
|
79
|
+
__decorate([
|
|
80
|
+
Transactional()
|
|
81
|
+
], SetupService.prototype, "completeIn", null);
|
|
82
|
+
SetupService = __decorate([
|
|
83
|
+
Injectable(),
|
|
84
|
+
__param(0, Inject(KernelDb)),
|
|
85
|
+
__param(1, Inject(TransactionHost)),
|
|
86
|
+
__param(2, Inject(SetupLock)),
|
|
87
|
+
__param(3, Inject(AccountsService)),
|
|
88
|
+
__param(4, Inject(OrgsService))
|
|
89
|
+
], SetupService);
|
|
90
|
+
export { SetupService };
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
import { type ExpressionBuilder } from "kysely";
|
|
2
|
+
import type { KernelDatabase, KernelSchemaDb } from "../db/kernel-schema.js";
|
|
3
|
+
import { KernelDb } from "../infra/database/kernel-db.js";
|
|
4
|
+
import { type AgentDefinition } from "./definition.js";
|
|
5
|
+
export declare const AGENT_VISIBILITIES: readonly ["private", "org", "members"];
|
|
6
|
+
export type AgentVisibility = (typeof AGENT_VISIBILITIES)[number];
|
|
7
|
+
/** 对外的 agent 视图:当前版本的定义 + 元数据;`memberIds` 只在 visibility='members' 时为数组。 */
|
|
8
|
+
export interface AgentView {
|
|
9
|
+
id: string;
|
|
10
|
+
orgId: string;
|
|
11
|
+
ownerAccountId: string;
|
|
12
|
+
visibility: AgentVisibility;
|
|
13
|
+
currentVersion: number;
|
|
14
|
+
definition: AgentDefinition;
|
|
15
|
+
memberIds: string[] | null;
|
|
16
|
+
/** 负责人离职后被转给组织所有者、等待管理员重新指派。 */
|
|
17
|
+
needsReassignment: boolean;
|
|
18
|
+
createdAt: Date;
|
|
19
|
+
updatedAt: Date;
|
|
20
|
+
}
|
|
21
|
+
/**
|
|
22
|
+
* 可见性判定(`canUse`)的 SQL 条件:agent 未删除、所属组织未删除,且
|
|
23
|
+
* - viewer 为账号:仍是该组织成员(含访客),并且是负责人 / visibility='org' / 在 agent_members 名单中;
|
|
24
|
+
* - viewer 为 null(该组织的服务令牌):只认 visibility='org'。
|
|
25
|
+
*/
|
|
26
|
+
export declare function visibleTo(viewerAccountId: string | null): (eb: ExpressionBuilder<KernelDatabase, "agents">) => import("kysely").ExpressionWrapper<KernelDatabase, "agents", import("kysely").SqlBool>;
|
|
27
|
+
/**
|
|
28
|
+
* Whether the live agent `agentId` is visible to `accountId` under the normal visibility rule
|
|
29
|
+
* ({@link visibleTo}: owner, `visibility = 'org'`, or listed in `agent_members`, while a member of
|
|
30
|
+
* the live org). Deleted agents are never visible.
|
|
31
|
+
*/
|
|
32
|
+
export declare function isAgentVisibleTo(db: KernelSchemaDb, agentId: string, accountId: string): Promise<boolean>;
|
|
33
|
+
/**
|
|
34
|
+
* Reads agents for a viewer (the visibility rule {@link visibleTo}): the part of `AgentsService`
|
|
35
|
+
* the conversations, the skill invoker and the attachments read, with no dependency on the
|
|
36
|
+
* services that write agents (it breaks the agents ↔ skills module cycle, spec §3 (a)). Reads go
|
|
37
|
+
* through `KernelDb`, so inside a transaction they see its writes.
|
|
38
|
+
*/
|
|
39
|
+
export declare class AgentLookup {
|
|
40
|
+
private readonly db;
|
|
41
|
+
constructor(db: KernelDb);
|
|
42
|
+
/** 取对 viewer 可见的 agent;`viewerAccountId = null` 表示该组织的服务令牌。不可见 → `agent.not_found`。 */
|
|
43
|
+
get(orgId: string, agentId: string, viewerAccountId: string | null): Promise<AgentView>;
|
|
44
|
+
/** 组织内对 viewer 可见的全部 agent(按创建时间)。 */
|
|
45
|
+
listVisible(orgId: string, viewerAccountId: string | null): Promise<AgentView[]>;
|
|
46
|
+
/** One agent's view (no visibility check: the caller did it); missing → `agent.not_found`. */
|
|
47
|
+
view(agentId: string): Promise<AgentView>;
|
|
48
|
+
/** 按给定 id 顺序组装视图(调用方已完成可见性判定)。 */
|
|
49
|
+
views(ids: string[]): Promise<AgentView[]>;
|
|
50
|
+
}
|
|
51
|
+
/** The one {@link AgentLookup} (database only). */
|
|
52
|
+
export declare class AgentLookupModule {
|
|
53
|
+
}
|
|
@@ -0,0 +1,179 @@
|
|
|
1
|
+
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
|
2
|
+
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
3
|
+
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
4
|
+
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
5
|
+
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
6
|
+
};
|
|
7
|
+
var __param = (this && this.__param) || function (paramIndex, decorator) {
|
|
8
|
+
return function (target, key) { decorator(target, key, paramIndex); }
|
|
9
|
+
};
|
|
10
|
+
import { Inject, Injectable, Module } from "@nestjs/common";
|
|
11
|
+
import { sql } from "kysely";
|
|
12
|
+
import { ApiError } from "../errors.js";
|
|
13
|
+
import { KernelDb } from "../infra/database/kernel-db.js";
|
|
14
|
+
import { normalizeStoredDefinition } from "./definition.js";
|
|
15
|
+
export const AGENT_VISIBILITIES = ["private", "org", "members"];
|
|
16
|
+
const notFound = () => new ApiError("agent.not_found", "Agent not found");
|
|
17
|
+
/**
|
|
18
|
+
* 可见性判定(`canUse`)的 SQL 条件:agent 未删除、所属组织未删除,且
|
|
19
|
+
* - viewer 为账号:仍是该组织成员(含访客),并且是负责人 / visibility='org' / 在 agent_members 名单中;
|
|
20
|
+
* - viewer 为 null(该组织的服务令牌):只认 visibility='org'。
|
|
21
|
+
*/
|
|
22
|
+
export function visibleTo(viewerAccountId) {
|
|
23
|
+
return (eb) => {
|
|
24
|
+
const orgLive = eb.exists(eb
|
|
25
|
+
.selectFrom("orgs")
|
|
26
|
+
.select(sql `1`.as("one"))
|
|
27
|
+
.whereRef("orgs.id", "=", "agents.org_id")
|
|
28
|
+
.where("orgs.deleted_at", "is", null));
|
|
29
|
+
if (viewerAccountId === null) {
|
|
30
|
+
return eb.and([orgLive, eb("agents.visibility", "=", "org")]);
|
|
31
|
+
}
|
|
32
|
+
return eb.and([
|
|
33
|
+
orgLive,
|
|
34
|
+
eb.exists(eb
|
|
35
|
+
.selectFrom("memberships")
|
|
36
|
+
.select(sql `1`.as("one"))
|
|
37
|
+
.whereRef("memberships.org_id", "=", "agents.org_id")
|
|
38
|
+
.where("memberships.account_id", "=", viewerAccountId)),
|
|
39
|
+
eb.or([
|
|
40
|
+
eb("agents.owner_account_id", "=", viewerAccountId),
|
|
41
|
+
eb("agents.visibility", "=", "org"),
|
|
42
|
+
eb.and([
|
|
43
|
+
eb("agents.visibility", "=", "members"),
|
|
44
|
+
eb.exists(eb
|
|
45
|
+
.selectFrom("agent_members")
|
|
46
|
+
.select(sql `1`.as("one"))
|
|
47
|
+
.whereRef("agent_members.agent_id", "=", "agents.id")
|
|
48
|
+
.where("agent_members.account_id", "=", viewerAccountId)),
|
|
49
|
+
]),
|
|
50
|
+
]),
|
|
51
|
+
]);
|
|
52
|
+
};
|
|
53
|
+
}
|
|
54
|
+
/**
|
|
55
|
+
* Whether the live agent `agentId` is visible to `accountId` under the normal visibility rule
|
|
56
|
+
* ({@link visibleTo}: owner, `visibility = 'org'`, or listed in `agent_members`, while a member of
|
|
57
|
+
* the live org). Deleted agents are never visible.
|
|
58
|
+
*/
|
|
59
|
+
export async function isAgentVisibleTo(db, agentId, accountId) {
|
|
60
|
+
const row = await db
|
|
61
|
+
.selectFrom("agents")
|
|
62
|
+
.select("id")
|
|
63
|
+
.where("id", "=", agentId)
|
|
64
|
+
.where("deleted_at", "is", null)
|
|
65
|
+
.where(visibleTo(accountId))
|
|
66
|
+
.executeTakeFirst();
|
|
67
|
+
return row !== undefined;
|
|
68
|
+
}
|
|
69
|
+
/**
|
|
70
|
+
* Reads agents for a viewer (the visibility rule {@link visibleTo}): the part of `AgentsService`
|
|
71
|
+
* the conversations, the skill invoker and the attachments read, with no dependency on the
|
|
72
|
+
* services that write agents (it breaks the agents ↔ skills module cycle, spec §3 (a)). Reads go
|
|
73
|
+
* through `KernelDb`, so inside a transaction they see its writes.
|
|
74
|
+
*/
|
|
75
|
+
let AgentLookup = class AgentLookup {
|
|
76
|
+
db;
|
|
77
|
+
constructor(db) {
|
|
78
|
+
this.db = db;
|
|
79
|
+
}
|
|
80
|
+
/** 取对 viewer 可见的 agent;`viewerAccountId = null` 表示该组织的服务令牌。不可见 → `agent.not_found`。 */
|
|
81
|
+
async get(orgId, agentId, viewerAccountId) {
|
|
82
|
+
const row = await this.db
|
|
83
|
+
.selectFrom("agents")
|
|
84
|
+
.select("id")
|
|
85
|
+
.where("id", "=", agentId)
|
|
86
|
+
.where("org_id", "=", orgId)
|
|
87
|
+
.where("deleted_at", "is", null)
|
|
88
|
+
.where(visibleTo(viewerAccountId))
|
|
89
|
+
.executeTakeFirst();
|
|
90
|
+
if (!row)
|
|
91
|
+
throw notFound();
|
|
92
|
+
return this.view(agentId);
|
|
93
|
+
}
|
|
94
|
+
/** 组织内对 viewer 可见的全部 agent(按创建时间)。 */
|
|
95
|
+
async listVisible(orgId, viewerAccountId) {
|
|
96
|
+
const rows = await this.db
|
|
97
|
+
.selectFrom("agents")
|
|
98
|
+
.select("id")
|
|
99
|
+
.where("org_id", "=", orgId)
|
|
100
|
+
.where("deleted_at", "is", null)
|
|
101
|
+
.where(visibleTo(viewerAccountId))
|
|
102
|
+
.orderBy("created_at")
|
|
103
|
+
.orderBy("id")
|
|
104
|
+
.execute();
|
|
105
|
+
return this.views(rows.map((r) => r.id));
|
|
106
|
+
}
|
|
107
|
+
/** One agent's view (no visibility check: the caller did it); missing → `agent.not_found`. */
|
|
108
|
+
async view(agentId) {
|
|
109
|
+
const views = await this.views([agentId]);
|
|
110
|
+
const v = views[0];
|
|
111
|
+
if (!v)
|
|
112
|
+
throw notFound();
|
|
113
|
+
return v;
|
|
114
|
+
}
|
|
115
|
+
/** 按给定 id 顺序组装视图(调用方已完成可见性判定)。 */
|
|
116
|
+
async views(ids) {
|
|
117
|
+
if (ids.length === 0)
|
|
118
|
+
return [];
|
|
119
|
+
const db = this.db;
|
|
120
|
+
const rows = await db
|
|
121
|
+
.selectFrom("agents")
|
|
122
|
+
.innerJoin("agent_versions", (j) => j
|
|
123
|
+
.onRef("agent_versions.agent_id", "=", "agents.id")
|
|
124
|
+
.onRef("agent_versions.version", "=", "agents.current_version"))
|
|
125
|
+
.select([
|
|
126
|
+
"agents.id",
|
|
127
|
+
"agents.org_id",
|
|
128
|
+
"agents.owner_account_id",
|
|
129
|
+
"agents.visibility",
|
|
130
|
+
"agents.current_version",
|
|
131
|
+
"agents.needs_reassignment",
|
|
132
|
+
"agents.created_at",
|
|
133
|
+
"agents.updated_at",
|
|
134
|
+
"agent_versions.definition",
|
|
135
|
+
])
|
|
136
|
+
.where("agents.id", "in", ids)
|
|
137
|
+
.execute();
|
|
138
|
+
const memberRows = await db
|
|
139
|
+
.selectFrom("agent_members")
|
|
140
|
+
.select(["agent_id", "account_id"])
|
|
141
|
+
.where("agent_id", "in", ids)
|
|
142
|
+
.orderBy("account_id")
|
|
143
|
+
.execute();
|
|
144
|
+
const byId = new Map(rows.map((r) => [r.id, r]));
|
|
145
|
+
return ids.flatMap((id) => {
|
|
146
|
+
const r = byId.get(id);
|
|
147
|
+
if (!r)
|
|
148
|
+
return [];
|
|
149
|
+
return [
|
|
150
|
+
{
|
|
151
|
+
id: r.id,
|
|
152
|
+
orgId: r.org_id,
|
|
153
|
+
ownerAccountId: r.owner_account_id,
|
|
154
|
+
visibility: r.visibility,
|
|
155
|
+
currentVersion: r.current_version,
|
|
156
|
+
definition: normalizeStoredDefinition(r.definition),
|
|
157
|
+
memberIds: r.visibility === "members"
|
|
158
|
+
? memberRows.filter((m) => m.agent_id === id).map((m) => m.account_id)
|
|
159
|
+
: null,
|
|
160
|
+
needsReassignment: r.needs_reassignment,
|
|
161
|
+
createdAt: r.created_at,
|
|
162
|
+
updatedAt: r.updated_at,
|
|
163
|
+
},
|
|
164
|
+
];
|
|
165
|
+
});
|
|
166
|
+
}
|
|
167
|
+
};
|
|
168
|
+
AgentLookup = __decorate([
|
|
169
|
+
Injectable(),
|
|
170
|
+
__param(0, Inject(KernelDb))
|
|
171
|
+
], AgentLookup);
|
|
172
|
+
export { AgentLookup };
|
|
173
|
+
/** The one {@link AgentLookup} (database only). */
|
|
174
|
+
let AgentLookupModule = class AgentLookupModule {
|
|
175
|
+
};
|
|
176
|
+
AgentLookupModule = __decorate([
|
|
177
|
+
Module({ providers: [AgentLookup], exports: [AgentLookup] })
|
|
178
|
+
], AgentLookupModule);
|
|
179
|
+
export { AgentLookupModule };
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { z } from "zod";
|
|
2
2
|
import { type Principal } from "../identity/principal.js";
|
|
3
3
|
import { type OrgContext } from "../orgs/org.guard.js";
|
|
4
|
-
import {
|
|
4
|
+
import { AgentsService, type AgentVersionSummary, type AgentView, type AgentWarning } from "./agents.service.js";
|
|
5
5
|
declare const OwnerBody: z.ZodObject<{
|
|
6
6
|
accountId: z.ZodString;
|
|
7
7
|
}, z.core.$strict>;
|
|
@@ -7,13 +7,13 @@ 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, Patch, Post } from "@nestjs/common";
|
|
11
11
|
import { z } from "zod";
|
|
12
|
-
import { AGENTS } from "../http/tokens.js";
|
|
13
|
-
import { ZodPipe } from "../http/zod.pipe.js";
|
|
14
12
|
import { CurrentPrincipal, patTokenId, requireUser, } from "../identity/principal.js";
|
|
13
|
+
import { createZodDto } from "../infra/validation/create-zod-dto.js";
|
|
14
|
+
import { ZBody } from "../infra/validation/zod-params.js";
|
|
15
15
|
import { CurrentOrg, OrgAction } from "../orgs/org.guard.js";
|
|
16
|
-
import { AGENT_VISIBILITIES, } from "./agents.service.js";
|
|
16
|
+
import { AGENT_VISIBILITIES, AgentsService, } from "./agents.service.js";
|
|
17
17
|
import { AgentDefinitionSchema, AgentToolRef, DEFAULT_AGENT_TOOLS } from "./definition.js";
|
|
18
18
|
const MemberIds = z.array(z.string().min(1).max(100)).max(1000);
|
|
19
19
|
const OwnerBody = z.object({ accountId: z.string().min(1).max(100) }).strict();
|
|
@@ -42,6 +42,12 @@ const UpdateBody = z
|
|
|
42
42
|
.strict();
|
|
43
43
|
/** 服务令牌没有账号:以 null 作为 viewer,只看到 visibility='org' 的 agent。 */
|
|
44
44
|
const viewerOf = (p) => (p.kind === "user" ? p.account.id : null);
|
|
45
|
+
class AgentCreateBodyDto extends createZodDto(CreateBody, "AgentCreateBody") {
|
|
46
|
+
}
|
|
47
|
+
class AgentUpdateBodyDto extends createZodDto(UpdateBody, "AgentUpdateBody") {
|
|
48
|
+
}
|
|
49
|
+
class AgentOwnerBodyDto extends createZodDto(OwnerBody, "AgentOwnerBody") {
|
|
50
|
+
}
|
|
45
51
|
/**
|
|
46
52
|
* Agent 定义(`/api/v1/orgs/:orgId/agents`)。读用 `agents.use`(访客与服务令牌可用),
|
|
47
53
|
* 写用 `agents.create`(member 以上、HUMAN_ONLY),修改 / 删除的负责人或管理员判定在服务的组织行锁内完成。
|
|
@@ -90,7 +96,7 @@ __decorate([
|
|
|
90
96
|
OrgAction("agents.create"),
|
|
91
97
|
__param(0, CurrentPrincipal()),
|
|
92
98
|
__param(1, CurrentOrg()),
|
|
93
|
-
__param(2,
|
|
99
|
+
__param(2, ZBody(AgentCreateBodyDto))
|
|
94
100
|
], AgentsController.prototype, "create", null);
|
|
95
101
|
__decorate([
|
|
96
102
|
Get(),
|
|
@@ -111,7 +117,7 @@ __decorate([
|
|
|
111
117
|
__param(0, CurrentPrincipal()),
|
|
112
118
|
__param(1, CurrentOrg()),
|
|
113
119
|
__param(2, Param("agentId")),
|
|
114
|
-
__param(3,
|
|
120
|
+
__param(3, ZBody(AgentUpdateBodyDto))
|
|
115
121
|
], AgentsController.prototype, "update", null);
|
|
116
122
|
__decorate([
|
|
117
123
|
Delete(":agentId"),
|
|
@@ -128,7 +134,7 @@ __decorate([
|
|
|
128
134
|
__param(0, CurrentPrincipal()),
|
|
129
135
|
__param(1, CurrentOrg()),
|
|
130
136
|
__param(2, Param("agentId")),
|
|
131
|
-
__param(3,
|
|
137
|
+
__param(3, ZBody(AgentOwnerBodyDto))
|
|
132
138
|
], AgentsController.prototype, "reassign", null);
|
|
133
139
|
__decorate([
|
|
134
140
|
Get(":agentId/versions"),
|
|
@@ -139,6 +145,6 @@ __decorate([
|
|
|
139
145
|
], AgentsController.prototype, "versions", null);
|
|
140
146
|
AgentsController = __decorate([
|
|
141
147
|
Controller("api/v1/orgs/:orgId/agents"),
|
|
142
|
-
__param(0, Inject(
|
|
148
|
+
__param(0, Inject(AgentsService))
|
|
143
149
|
], AgentsController);
|
|
144
150
|
export { AgentsController };
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Agents: the one {@link AgentsService} (definitions, versions, visibility; writes under the org
|
|
3
|
+
* row lock) and the plugin agent templates. Reads for a viewer are {@link AgentLookupModule}'s
|
|
4
|
+
* (re-exported), which the conversations and the skill invoker use without this module.
|
|
5
|
+
*/
|
|
6
|
+
export declare class AgentsModule {
|
|
7
|
+
}
|