@capybara-hq/kernel 0.1.0-rc.0 → 0.1.0-rc.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/bootstrap.json +10 -6
- package/dist/admin/admin.controller.d.ts +17 -17
- package/dist/admin/admin.controller.js +43 -26
- package/dist/admin/admin.module.d.ts +3 -0
- package/dist/admin/admin.module.js +22 -0
- package/dist/admin/extensions.controller.d.ts +14 -14
- package/dist/admin/extensions.controller.js +30 -17
- package/dist/admin/setup-lock.d.ts +16 -0
- package/dist/admin/setup-lock.js +47 -0
- package/dist/admin/setup.controller.d.ts +8 -8
- package/dist/admin/setup.controller.js +27 -25
- package/dist/admin/setup.service.d.ts +19 -27
- package/dist/admin/setup.service.js +61 -61
- package/dist/agents/agent-lookup.d.ts +53 -0
- package/dist/agents/agent-lookup.js +179 -0
- package/dist/agents/agents.controller.d.ts +1 -1
- package/dist/agents/agents.controller.js +14 -8
- package/dist/agents/agents.module.d.ts +7 -0
- package/dist/agents/agents.module.js +41 -0
- package/dist/agents/agents.service.d.ts +39 -58
- package/dist/agents/agents.service.js +261 -329
- package/dist/agents/definition.d.ts +8 -0
- package/dist/agents/definition.js +8 -0
- package/dist/agents/models.controller.d.ts +1 -1
- package/dist/agents/models.controller.js +2 -2
- package/dist/agents/templates.controller.d.ts +1 -1
- package/dist/agents/templates.controller.js +2 -2
- package/dist/agents/templates.d.ts +6 -8
- package/dist/agents/templates.js +20 -4
- package/dist/app.d.ts +93 -0
- package/dist/app.js +150 -0
- package/dist/catalog/admin-catalog.controller.d.ts +3 -3
- package/dist/catalog/admin-catalog.controller.js +27 -13
- package/dist/catalog/catalog-content.d.ts +185 -0
- package/dist/catalog/catalog-content.js +323 -0
- package/dist/catalog/catalog-items.d.ts +186 -0
- package/dist/catalog/catalog-items.js +410 -0
- package/dist/catalog/catalog.module.d.ts +14 -0
- package/dist/catalog/catalog.module.js +71 -0
- package/dist/catalog/catalog.service.d.ts +34 -188
- package/dist/catalog/catalog.service.js +155 -489
- package/dist/catalog/cli.d.ts +3 -2
- package/dist/catalog/cli.js +13 -31
- package/dist/catalog/job-ids.d.ts +15 -0
- package/dist/catalog/job-ids.js +15 -0
- package/dist/catalog/jobs.d.ts +27 -0
- package/dist/catalog/jobs.js +70 -0
- package/dist/catalog/locks.d.ts +24 -0
- package/dist/catalog/locks.js +63 -0
- package/dist/catalog/marketplaces.controller.d.ts +4 -4
- package/dist/catalog/marketplaces.controller.js +22 -11
- package/dist/catalog/marketplaces.service.d.ts +30 -13
- package/dist/catalog/marketplaces.service.js +330 -256
- package/dist/catalog/org-catalog.controller.d.ts +4 -3
- package/dist/catalog/org-catalog.controller.js +29 -14
- package/dist/catalog/org-catalog.service.d.ts +32 -198
- package/dist/catalog/org-catalog.service.js +159 -400
- package/dist/catalog/plugin-import.d.ts +73 -34
- package/dist/catalog/plugin-import.js +356 -217
- package/dist/catalog/plugin-install.d.ts +83 -41
- package/dist/catalog/plugin-install.js +421 -269
- package/dist/catalog/plugin-upgrade.d.ts +59 -4
- package/dist/catalog/plugin-upgrade.js +407 -282
- package/dist/catalog/requests.service.d.ts +27 -15
- package/dist/catalog/requests.service.js +201 -145
- package/dist/catalog/upgrade-targets.d.ts +4 -7
- package/dist/channels/actions.d.ts +6 -4
- package/dist/channels/actions.js +1 -1
- package/dist/channels/cards.d.ts +2 -2
- package/dist/channels/channels.module.d.ts +40 -0
- package/dist/channels/channels.module.js +128 -0
- package/dist/channels/connections.controller.d.ts +1 -1
- package/dist/channels/connections.controller.js +11 -6
- package/dist/channels/connections.service.d.ts +43 -21
- package/dist/channels/connections.service.js +236 -131
- package/dist/channels/inbound.d.ts +34 -38
- package/dist/channels/inbound.js +107 -41
- package/dist/channels/job-ids.d.ts +10 -0
- package/dist/channels/job-ids.js +10 -0
- package/dist/channels/jobs.d.ts +85 -0
- package/dist/channels/jobs.js +157 -0
- package/dist/channels/outbound.d.ts +60 -82
- package/dist/channels/outbound.js +165 -193
- package/dist/channels/supervisor.d.ts +88 -46
- package/dist/channels/supervisor.js +230 -132
- package/dist/channels/threads.d.ts +29 -8
- package/dist/channels/threads.js +71 -13
- package/dist/channels/webhook.d.ts +20 -14
- package/dist/channels/webhook.js +51 -20
- package/dist/config/load.d.ts +3 -2
- package/dist/config/load.js +3 -2
- package/dist/config/nacos-source.js +11 -2
- package/dist/config/schema.d.ts +16 -1
- package/dist/config/schema.js +54 -7
- package/dist/conversations/access.d.ts +29 -0
- package/dist/conversations/access.js +86 -0
- package/dist/conversations/artifacts.d.ts +10 -10
- package/dist/conversations/artifacts.js +35 -9
- package/dist/conversations/attachments.controller.d.ts +1 -1
- package/dist/conversations/attachments.controller.js +8 -6
- package/dist/conversations/attachments.module.d.ts +7 -0
- package/dist/conversations/attachments.module.js +25 -0
- package/dist/conversations/attachments.service.d.ts +30 -22
- package/dist/conversations/attachments.service.js +119 -46
- package/dist/conversations/conversations.controller.d.ts +8 -7
- package/dist/conversations/conversations.controller.js +59 -29
- package/dist/conversations/conversations.module.d.ts +8 -0
- package/dist/conversations/conversations.module.js +69 -0
- package/dist/conversations/conversations.service.d.ts +40 -38
- package/dist/conversations/conversations.service.js +130 -140
- package/dist/conversations/event-log.d.ts +28 -18
- package/dist/conversations/event-log.js +74 -27
- package/dist/conversations/files.d.ts +10 -10
- package/dist/conversations/files.js +37 -11
- package/dist/conversations/idem-keys.d.ts +5 -0
- package/dist/conversations/idem-keys.js +5 -0
- package/dist/conversations/job-ids.d.ts +6 -0
- package/dist/conversations/job-ids.js +6 -0
- package/dist/conversations/outputs-read.d.ts +11 -11
- package/dist/conversations/outputs-read.js +31 -7
- package/dist/conversations/queue.d.ts +48 -56
- package/dist/conversations/queue.js +13 -289
- package/dist/conversations/queue.service.d.ts +60 -0
- package/dist/conversations/queue.service.js +343 -0
- package/dist/conversations/sandbox-status.d.ts +13 -10
- package/dist/conversations/sandbox-status.js +36 -8
- package/dist/conversations/titles.d.ts +71 -24
- package/dist/conversations/titles.js +159 -62
- package/dist/ctx/bus.js +9 -3
- package/dist/ctx/create-ctx.d.ts +6 -0
- package/dist/ctx/create-ctx.js +7 -9
- package/dist/ctx/lock.d.ts +7 -3
- package/dist/ctx/lock.js +9 -20
- package/dist/ctx/queue.js +3 -2
- package/dist/ctx/secrets.d.ts +10 -2
- package/dist/ctx/secrets.js +7 -3
- package/dist/db/kernel-schema.d.ts +2 -2
- package/dist/db/pool.d.ts +5 -0
- package/dist/db/pool.js +1 -0
- package/dist/errors.d.ts +2 -0
- package/dist/errors.js +2 -0
- package/dist/evals/budget.d.ts +42 -21
- package/dist/evals/budget.js +114 -62
- package/dist/evals/evals.module.d.ts +31 -0
- package/dist/evals/evals.module.js +114 -0
- package/dist/evals/jobs.d.ts +20 -0
- package/dist/evals/jobs.js +45 -0
- package/dist/evals/run-replay.d.ts +56 -8
- package/dist/evals/run-replay.js +140 -80
- package/dist/evals/runs.controller.d.ts +1 -1
- package/dist/evals/runs.controller.js +17 -8
- package/dist/evals/runs.service.d.ts +23 -45
- package/dist/evals/runs.service.js +245 -234
- package/dist/evals/sets.controller.d.ts +1 -1
- package/dist/evals/sets.controller.js +17 -8
- package/dist/evals/sets.service.d.ts +22 -6
- package/dist/evals/sets.service.js +248 -194
- package/dist/evals/snapshot.d.ts +2 -2
- package/dist/evals/step-replay.d.ts +2 -2
- package/dist/evals/step-replay.js +1 -1
- package/dist/evals/trajectory.controller.d.ts +1 -1
- package/dist/evals/trajectory.controller.js +11 -7
- package/dist/evals/trajectory.service.d.ts +5 -4
- package/dist/evals/trajectory.service.js +30 -7
- package/dist/evals/worker.d.ts +44 -27
- package/dist/evals/worker.js +220 -120
- package/dist/extensions/admin-ops.d.ts +61 -33
- package/dist/extensions/admin-ops.js +248 -154
- package/dist/extensions/admin-view.d.ts +38 -27
- package/dist/extensions/admin-view.js +126 -55
- package/dist/extensions/approvals.d.ts +12 -8
- package/dist/extensions/approvals.js +73 -46
- package/dist/extensions/blobs.d.ts +27 -10
- package/dist/extensions/blobs.js +111 -45
- package/dist/extensions/bootstrap.d.ts +96 -42
- package/dist/extensions/bootstrap.js +303 -155
- package/dist/extensions/cli.d.ts +20 -10
- package/dist/extensions/cli.js +41 -96
- package/dist/extensions/config-issues.d.ts +7 -0
- package/dist/extensions/config-issues.js +31 -0
- package/dist/extensions/deployment-config-store.d.ts +49 -0
- package/dist/extensions/deployment-config-store.js +133 -0
- package/dist/extensions/deployment-config.d.ts +58 -67
- package/dist/extensions/deployment-config.js +202 -230
- package/dist/extensions/enabled.d.ts +5 -5
- package/dist/extensions/extensions.module.d.ts +8 -0
- package/dist/extensions/extensions.module.js +77 -0
- package/dist/extensions/hooks.d.ts +3 -2
- package/dist/extensions/hooks.js +1 -1
- package/dist/extensions/host.d.ts +72 -68
- package/dist/extensions/host.js +191 -152
- package/dist/extensions/installs.d.ts +49 -16
- package/dist/extensions/installs.js +128 -32
- package/dist/extensions/job-ids.d.ts +6 -0
- package/dist/extensions/job-ids.js +6 -0
- package/dist/extensions/lifecycle-topics.d.ts +18 -0
- package/dist/extensions/lifecycle-topics.js +18 -0
- package/dist/extensions/lifecycle.d.ts +35 -47
- package/dist/extensions/lifecycle.js +103 -39
- package/dist/extensions/locks.d.ts +33 -0
- package/dist/extensions/locks.js +86 -0
- package/dist/extensions/migrate-lock.d.ts +3 -4
- package/dist/extensions/org-config.controller.d.ts +1 -1
- package/dist/extensions/org-config.controller.js +8 -5
- package/dist/extensions/org-config.d.ts +48 -46
- package/dist/extensions/org-config.js +284 -226
- package/dist/extensions/registry.d.ts +50 -2
- package/dist/extensions/registry.js +89 -4
- package/dist/extensions/sources.d.ts +12 -8
- package/dist/extensions/sources.js +34 -13
- package/dist/files/files.module.d.ts +3 -0
- package/dist/files/files.module.js +22 -0
- package/dist/files/previewers.controller.d.ts +7 -2
- package/dist/files/previewers.controller.js +17 -9
- package/dist/files/previewers.d.ts +13 -18
- package/dist/files/previewers.js +83 -36
- package/dist/http/adapter.d.ts +3 -0
- package/dist/http/adapter.js +25 -0
- package/dist/http/api.module.d.ts +3 -110
- package/dist/http/api.module.js +47 -355
- package/dist/http/app.d.ts +11 -15
- package/dist/http/app.js +52 -47
- package/dist/http/error-filter.module.d.ts +5 -0
- package/dist/http/error-filter.module.js +18 -0
- package/dist/http/error.filter.js +2 -2
- package/dist/identity/accounts.d.ts +82 -29
- package/dist/identity/accounts.js +294 -175
- package/dist/identity/api-tokens.d.ts +11 -7
- package/dist/identity/api-tokens.js +71 -44
- package/dist/identity/audit.d.ts +7 -4
- package/dist/identity/audit.js +5 -1
- package/dist/identity/auth.controller.d.ts +11 -10
- package/dist/identity/auth.controller.js +31 -25
- package/dist/identity/auth.guard.d.ts +3 -3
- package/dist/identity/auth.guard.js +6 -4
- package/dist/identity/binding.d.ts +9 -11
- package/dist/identity/binding.js +41 -13
- package/dist/identity/enterprise-admin.d.ts +18 -12
- package/dist/identity/enterprise-admin.js +67 -13
- package/dist/identity/external-identity-lock.d.ts +17 -0
- package/dist/identity/external-identity-lock.js +39 -0
- package/dist/identity/external.d.ts +19 -15
- package/dist/identity/external.js +163 -125
- package/dist/identity/identity.module.d.ts +6 -0
- package/dist/identity/identity.module.js +56 -0
- package/dist/identity/me.controller.d.ts +16 -15
- package/dist/identity/me.controller.js +37 -31
- package/dist/identity/sessions.d.ts +12 -10
- package/dist/identity/sessions.js +74 -42
- package/dist/identity/settings.d.ts +20 -14
- package/dist/identity/settings.js +85 -57
- package/dist/identity/sso.controller.d.ts +7 -7
- package/dist/identity/sso.controller.js +13 -9
- package/dist/identity/sso.d.ts +9 -12
- package/dist/identity/sso.js +54 -24
- package/dist/inbox/inbox.module.d.ts +3 -0
- package/dist/inbox/inbox.module.js +22 -0
- package/dist/inbox/inbox.service.d.ts +7 -9
- package/dist/inbox/inbox.service.js +32 -11
- package/dist/index.d.ts +19 -12
- package/dist/index.js +13 -8
- package/dist/infra/cache/cache.module.d.ts +3 -0
- package/dist/infra/cache/cache.module.js +16 -0
- package/dist/infra/cache/cache.service.d.ts +21 -0
- package/dist/infra/cache/cache.service.js +80 -0
- package/dist/infra/cache/cacheable.decorator.d.ts +32 -0
- package/dist/infra/cache/cacheable.decorator.js +83 -0
- package/dist/infra/cli/kernel-cli.module.d.ts +66 -0
- package/dist/infra/cli/kernel-cli.module.js +165 -0
- package/dist/infra/close-within.d.ts +15 -0
- package/dist/infra/close-within.js +36 -0
- package/dist/infra/config/config.module.d.ts +13 -0
- package/dist/infra/config/config.module.js +39 -0
- package/dist/infra/config/kernel-config.service.d.ts +25 -0
- package/dist/infra/config/kernel-config.service.js +126 -0
- package/dist/infra/database/after-commit.d.ts +6 -0
- package/dist/infra/database/after-commit.js +9 -0
- package/dist/infra/database/database.module.d.ts +25 -0
- package/dist/infra/database/database.module.js +90 -0
- package/dist/infra/database/kernel-db.d.ts +22 -0
- package/dist/infra/database/kernel-db.js +65 -0
- package/dist/infra/database/transaction-host.d.ts +50 -0
- package/dist/infra/database/transaction-host.js +125 -0
- package/dist/infra/database/transactional.decorator.d.ts +15 -0
- package/dist/infra/database/transactional.decorator.js +27 -0
- package/dist/infra/database/xact-lock.d.ts +17 -0
- package/dist/infra/database/xact-lock.js +43 -0
- package/dist/infra/events/kernel-events.d.ts +96 -0
- package/dist/infra/events/kernel-events.js +65 -0
- package/dist/infra/health/health.controller.d.ts +26 -0
- package/dist/infra/health/health.controller.js +104 -0
- package/dist/infra/health/health.module.d.ts +9 -0
- package/dist/infra/health/health.module.js +24 -0
- package/dist/infra/health/health.options.d.ts +10 -0
- package/dist/infra/health/health.options.js +15 -0
- package/dist/infra/health/shutdown-state.d.ts +6 -0
- package/dist/infra/health/shutdown-state.js +2 -0
- package/dist/infra/lifecycle/graceful-shutdown.module.d.ts +6 -0
- package/dist/infra/lifecycle/graceful-shutdown.module.js +23 -0
- package/dist/infra/lifecycle/graceful-shutdown.service.d.ts +70 -0
- package/dist/infra/lifecycle/graceful-shutdown.service.js +135 -0
- package/dist/infra/lifecycle/process-guards.d.ts +52 -0
- package/dist/infra/lifecycle/process-guards.js +86 -0
- package/dist/infra/lifecycle/shutdown-signals.d.ts +30 -0
- package/dist/infra/lifecycle/shutdown-signals.js +48 -0
- package/dist/infra/lock/key-template.d.ts +13 -0
- package/dist/infra/lock/key-template.js +46 -0
- package/dist/infra/lock/lock.module.d.ts +3 -0
- package/dist/infra/lock/lock.module.js +16 -0
- package/dist/infra/lock/lock.service.d.ts +120 -0
- package/dist/infra/lock/lock.service.js +343 -0
- package/dist/infra/lock/shared-lease.d.ts +44 -0
- package/dist/infra/lock/shared-lease.js +121 -0
- package/dist/infra/lock/with-lock.decorator.d.ts +28 -0
- package/dist/infra/lock/with-lock.decorator.js +49 -0
- package/dist/infra/logging/logging.module.d.ts +16 -0
- package/dist/infra/logging/logging.module.js +34 -0
- package/dist/infra/queue/configured-processor.d.ts +18 -0
- package/dist/infra/queue/configured-processor.js +23 -0
- package/dist/infra/queue/job-failure.d.ts +18 -0
- package/dist/infra/queue/job-failure.js +26 -0
- package/dist/infra/queue/queue-shutdown.d.ts +27 -0
- package/dist/infra/queue/queue-shutdown.js +81 -0
- package/dist/infra/queue/queue.module.d.ts +16 -0
- package/dist/infra/queue/queue.module.js +61 -0
- package/dist/infra/queue/redis-connection.d.ts +7 -0
- package/dist/infra/queue/redis-connection.js +18 -0
- package/dist/infra/queue/retired-schedulers.d.ts +7 -0
- package/dist/infra/queue/retired-schedulers.js +9 -0
- package/dist/infra/queue/run-job.d.ts +16 -0
- package/dist/infra/queue/run-job.js +19 -0
- package/dist/infra/redis/redis.module.d.ts +24 -0
- package/dist/infra/redis/redis.module.js +87 -0
- package/dist/infra/schedule/cron-tick.d.ts +12 -0
- package/dist/infra/schedule/cron-tick.js +25 -0
- package/dist/infra/schedule/locked-cron.decorator.d.ts +27 -0
- package/dist/infra/schedule/locked-cron.decorator.js +53 -0
- package/dist/infra/schedule/locked-interval.d.ts +69 -0
- package/dist/infra/schedule/locked-interval.js +190 -0
- package/dist/infra/schedule/locked-tick.d.ts +90 -0
- package/dist/infra/schedule/locked-tick.js +137 -0
- package/dist/infra/schedule/schedule.module.d.ts +8 -0
- package/dist/infra/schedule/schedule.module.js +27 -0
- package/dist/infra/schedule/scheduled-runs.d.ts +69 -0
- package/dist/infra/schedule/scheduled-runs.js +163 -0
- package/dist/infra/swagger/swagger.d.ts +16 -0
- package/dist/infra/swagger/swagger.js +31 -0
- package/dist/infra/throttler/credential-throttler.d.ts +35 -0
- package/dist/infra/throttler/credential-throttler.js +77 -0
- package/dist/infra/throttler/named-throttlers.d.ts +31 -0
- package/dist/infra/throttler/named-throttlers.js +119 -0
- package/dist/infra/throttler/redis-throttler-storage.d.ts +38 -0
- package/dist/infra/throttler/redis-throttler-storage.js +130 -0
- package/dist/infra/throttler/throttler.guard.d.ts +23 -0
- package/dist/infra/throttler/throttler.guard.js +68 -0
- package/dist/infra/throttler/throttler.module.d.ts +15 -0
- package/dist/infra/throttler/throttler.module.js +53 -0
- package/dist/infra/tokens.d.ts +15 -0
- package/dist/infra/tokens.js +15 -0
- package/dist/infra/validation/create-zod-dto.d.ts +23 -0
- package/dist/infra/validation/create-zod-dto.js +35 -0
- package/dist/infra/validation/parse-with-zod.d.ts +7 -0
- package/dist/infra/validation/parse-with-zod.js +12 -0
- package/dist/infra/validation/validation.module.d.ts +3 -0
- package/dist/infra/validation/validation.module.js +16 -0
- package/dist/infra/validation/zod-params.d.ts +7 -0
- package/dist/infra/validation/zod-params.js +42 -0
- package/dist/infra/validation/zod-validation.pipe.d.ts +11 -0
- package/dist/infra/validation/zod-validation.pipe.js +31 -0
- package/dist/kernel.d.ts +9 -241
- package/dist/kernel.js +8 -1305
- package/dist/kernel.module.d.ts +17 -0
- package/dist/kernel.module.js +136 -0
- package/dist/lifecycle/kernel-lifecycle.d.ts +140 -0
- package/dist/lifecycle/kernel-lifecycle.js +451 -0
- package/dist/lifecycle/tokens.d.ts +3 -0
- package/dist/lifecycle/tokens.js +3 -0
- package/dist/log-config.d.ts +9 -0
- package/dist/log-config.js +27 -0
- package/dist/log-context.d.ts +34 -0
- package/dist/log-context.js +44 -0
- package/dist/log-loki.d.ts +34 -0
- package/dist/log-loki.js +145 -0
- package/dist/log.d.ts +41 -10
- package/dist/log.js +91 -17
- package/dist/models/models.module.d.ts +3 -0
- package/dist/models/models.module.js +24 -0
- package/dist/models/prices.d.ts +8 -2
- package/dist/models/prices.js +65 -37
- package/dist/models/purposes.controller.d.ts +1 -1
- package/dist/models/purposes.controller.js +5 -6
- package/dist/models/purposes.d.ts +35 -13
- package/dist/models/purposes.js +101 -51
- package/dist/net/public-address.js +3 -2
- package/dist/orgs/directory-sync.controller.d.ts +1 -1
- package/dist/orgs/directory-sync.controller.js +2 -2
- package/dist/orgs/directory-sync.d.ts +61 -31
- package/dist/orgs/directory-sync.js +212 -125
- package/dist/orgs/invitations.controller.d.ts +8 -8
- package/dist/orgs/invitations.controller.js +27 -26
- package/dist/orgs/invitations.service.d.ts +12 -9
- package/dist/orgs/invitations.service.js +130 -92
- package/dist/orgs/job-ids.d.ts +8 -0
- package/dist/orgs/job-ids.js +8 -0
- package/dist/orgs/members.service.d.ts +19 -12
- package/dist/orgs/members.service.js +161 -117
- package/dist/orgs/offboarding.d.ts +54 -57
- package/dist/orgs/offboarding.js +161 -71
- package/dist/orgs/org-lock.d.ts +28 -19
- package/dist/orgs/org-lock.js +81 -35
- package/dist/orgs/org.guard.d.ts +1 -1
- package/dist/orgs/org.guard.js +2 -2
- package/dist/orgs/orgs.controller.d.ts +13 -13
- package/dist/orgs/orgs.controller.js +29 -17
- package/dist/orgs/orgs.module.d.ts +6 -0
- package/dist/orgs/orgs.module.js +68 -0
- package/dist/orgs/orgs.service.d.ts +30 -19
- package/dist/orgs/orgs.service.js +139 -86
- package/dist/orgs/settings.controller.d.ts +1 -1
- package/dist/orgs/settings.controller.js +8 -6
- package/dist/orgs/settings.service.d.ts +14 -8
- package/dist/orgs/settings.service.js +75 -46
- package/dist/overrides.d.ts +56 -0
- package/dist/overrides.js +30 -0
- package/dist/roles/gateway-role.d.ts +43 -0
- package/dist/roles/gateway-role.js +98 -0
- package/dist/roles/gateway.module.d.ts +8 -0
- package/dist/roles/gateway.module.js +28 -0
- package/dist/roles/worker-role.d.ts +63 -0
- package/dist/roles/worker-role.js +144 -0
- package/dist/roles/worker.module.d.ts +14 -0
- package/dist/roles/worker.module.js +90 -0
- package/dist/runtime/abort.js +19 -2
- package/dist/runtime/checkpointer.d.ts +8 -3
- package/dist/runtime/checkpointer.js +87 -55
- package/dist/runtime/conversation-lock.d.ts +20 -11
- package/dist/runtime/conversation-lock.js +62 -72
- package/dist/runtime/hook-calls.d.ts +3 -3
- package/dist/runtime/hook-calls.js +1 -6
- package/dist/runtime/job-ids.d.ts +10 -0
- package/dist/runtime/job-ids.js +10 -0
- package/dist/runtime/langgraph-loop.js +1 -1
- package/dist/runtime/loop.d.ts +7 -0
- package/dist/runtime/loop.js +14 -0
- package/dist/runtime/maintenance-queue.d.ts +10 -0
- package/dist/runtime/maintenance-queue.js +10 -0
- package/dist/runtime/maintenance.d.ts +45 -74
- package/dist/runtime/maintenance.js +139 -136
- package/dist/runtime/model-call.d.ts +7 -4
- package/dist/runtime/model-call.js +24 -57
- package/dist/runtime/providers.d.ts +17 -6
- package/dist/runtime/providers.js +66 -25
- package/dist/runtime/quota.d.ts +17 -3
- package/dist/runtime/quota.js +27 -2
- package/dist/runtime/retired-schedulers.d.ts +7 -0
- package/dist/runtime/retired-schedulers.js +31 -0
- package/dist/runtime/run-control.d.ts +33 -0
- package/dist/runtime/run-control.js +77 -0
- package/dist/runtime/run-finish.d.ts +26 -17
- package/dist/runtime/run-finish.js +98 -51
- package/dist/runtime/run-jobs.d.ts +48 -0
- package/dist/runtime/run-jobs.js +95 -0
- package/dist/runtime/run-processors.d.ts +60 -0
- package/dist/runtime/run-processors.js +185 -0
- package/dist/runtime/run-queue.d.ts +32 -57
- package/dist/runtime/run-queue.js +291 -295
- package/dist/runtime/run-steps.d.ts +39 -0
- package/dist/runtime/run-steps.js +96 -0
- package/dist/runtime/run-worker.d.ts +121 -75
- package/dist/runtime/run-worker.js +340 -225
- package/dist/runtime/runtime.module.d.ts +10 -0
- package/dist/runtime/runtime.module.js +112 -0
- package/dist/runtime/step-log.d.ts +40 -0
- package/dist/runtime/step-log.js +94 -0
- package/dist/runtime/stream.controller.d.ts +5 -8
- package/dist/runtime/stream.controller.js +14 -12
- package/dist/runtime/stream.d.ts +24 -6
- package/dist/runtime/stream.js +78 -7
- package/dist/runtime/subagents/child.d.ts +3 -44
- package/dist/runtime/subagents/child.js +0 -79
- package/dist/runtime/subagents/definition.d.ts +4 -4
- package/dist/runtime/subagents/definition.js +2 -2
- package/dist/runtime/subagents/dispatch.d.ts +87 -6
- package/dist/runtime/subagents/dispatch.js +135 -140
- package/dist/runtime/subagents/limits.d.ts +9 -4
- package/dist/runtime/subagents/limits.js +4 -2
- package/dist/runtime/subagents/org-agents.d.ts +4 -4
- package/dist/runtime/subagents/org-agents.js +1 -1
- package/dist/runtime/subagents/progress.d.ts +2 -2
- package/dist/runtime/subagents/roster.d.ts +3 -3
- package/dist/runtime/subagents/roster.js +1 -1
- package/dist/runtime/subagents/skill-fork.d.ts +6 -7
- package/dist/runtime/subagents/skill-fork.js +16 -5
- package/dist/runtime/subagents/subagents.service.d.ts +40 -0
- package/dist/runtime/subagents/subagents.service.js +101 -0
- package/dist/runtime/usage-report.d.ts +94 -52
- package/dist/runtime/usage-report.js +200 -99
- package/dist/runtime/waits.d.ts +125 -57
- package/dist/runtime/waits.js +431 -208
- package/dist/sandbox/job-ids.d.ts +10 -0
- package/dist/sandbox/job-ids.js +10 -0
- package/dist/sandbox/jobs.d.ts +41 -0
- package/dist/sandbox/jobs.js +113 -0
- package/dist/sandbox/leases.d.ts +39 -31
- package/dist/sandbox/leases.js +117 -257
- package/dist/sandbox/providers.d.ts +19 -0
- package/dist/sandbox/providers.js +38 -0
- package/dist/sandbox/sandbox.module.d.ts +8 -0
- package/dist/sandbox/sandbox.module.js +30 -0
- package/dist/sandbox/sandbox.service.d.ts +24 -29
- package/dist/sandbox/sandbox.service.js +106 -75
- package/dist/skills/catalog.d.ts +33 -20
- package/dist/skills/catalog.js +96 -53
- package/dist/skills/changes.controller.d.ts +4 -4
- package/dist/skills/changes.controller.js +15 -9
- package/dist/skills/changes.service.d.ts +28 -18
- package/dist/skills/changes.service.js +421 -364
- package/dist/skills/invocable.controller.d.ts +1 -1
- package/dist/skills/invocable.controller.js +8 -5
- package/dist/skills/invoke.d.ts +16 -15
- package/dist/skills/invoke.js +48 -17
- package/dist/skills/skills.controller.d.ts +1 -1
- package/dist/skills/skills.controller.js +11 -6
- package/dist/skills/skills.module.d.ts +6 -0
- package/dist/skills/skills.module.js +30 -0
- package/dist/skills/skills.service.d.ts +47 -30
- package/dist/skills/skills.service.js +221 -158
- package/dist/storage/job-ids.d.ts +6 -0
- package/dist/storage/job-ids.js +6 -0
- package/dist/storage/purge.d.ts +22 -7
- package/dist/storage/purge.js +55 -3
- package/dist/storage/storage.module.d.ts +6 -0
- package/dist/storage/storage.module.js +23 -0
- package/dist/storage/storage.service.d.ts +18 -4
- package/dist/storage/storage.service.js +44 -3
- package/dist/tools/approvals.controller.d.ts +1 -1
- package/dist/tools/approvals.controller.js +12 -8
- package/dist/tools/approvals.service.d.ts +27 -25
- package/dist/tools/approvals.service.js +324 -258
- package/dist/tools/breaker.d.ts +2 -2
- package/dist/tools/breaker.js +21 -3
- package/dist/tools/builtins/ask-user.d.ts +2 -2
- package/dist/tools/builtins/ask-user.js +1 -1
- package/dist/tools/builtins/builtin-tools.d.ts +21 -0
- package/dist/tools/builtins/builtin-tools.js +80 -0
- package/dist/tools/builtins/read-tool-output.d.ts +2 -2
- package/dist/tools/builtins/read-tool-output.js +1 -1
- package/dist/tools/builtins/sandbox/bash.js +2 -2
- package/dist/tools/builtins/sandbox/common.d.ts +7 -4
- package/dist/tools/builtins/sandbox/common.js +5 -3
- package/dist/tools/builtins/sandbox/deliver.js +2 -2
- package/dist/tools/builtins/sandbox/edit.js +1 -1
- package/dist/tools/builtins/sandbox/glob.js +2 -2
- package/dist/tools/builtins/sandbox/grep.js +2 -2
- package/dist/tools/builtins/sandbox/read.js +1 -1
- package/dist/tools/builtins/sandbox/write.js +1 -1
- package/dist/tools/builtins/skill-load.d.ts +3 -3
- package/dist/tools/builtins/skill-load.js +1 -1
- package/dist/tools/canonical-json.d.ts +6 -0
- package/dist/tools/canonical-json.js +16 -0
- package/dist/tools/connector-content.controller.d.ts +1 -1
- package/dist/tools/connector-content.controller.js +11 -6
- package/dist/tools/connector-content.d.ts +12 -15
- package/dist/tools/connector-content.js +53 -18
- package/dist/tools/connectors.controller.d.ts +1 -1
- package/dist/tools/connectors.controller.js +21 -10
- package/dist/tools/connectors.service.d.ts +31 -13
- package/dist/tools/connectors.service.js +434 -344
- package/dist/tools/credentials.d.ts +17 -20
- package/dist/tools/credentials.js +55 -34
- package/dist/tools/drift.d.ts +29 -41
- package/dist/tools/drift.js +111 -79
- package/dist/tools/info.d.ts +12 -9
- package/dist/tools/info.js +33 -7
- package/dist/tools/job-ids.d.ts +13 -0
- package/dist/tools/job-ids.js +15 -0
- package/dist/tools/jobs.d.ts +24 -0
- package/dist/tools/jobs.js +69 -0
- package/dist/tools/oauth/flow-paths.d.ts +16 -0
- package/dist/tools/oauth/flow-paths.js +38 -0
- package/dist/tools/oauth/flow.d.ts +30 -30
- package/dist/tools/oauth/flow.js +109 -81
- package/dist/tools/oauth/oauth.controller.d.ts +3 -3
- package/dist/tools/oauth/oauth.controller.js +12 -9
- package/dist/tools/oauth/tokens.d.ts +11 -3
- package/dist/tools/oauth/tokens.js +15 -14
- package/dist/tools/outputs.d.ts +13 -4
- package/dist/tools/outputs.js +47 -3
- package/dist/tools/pipeline.d.ts +62 -46
- package/dist/tools/pipeline.js +145 -64
- package/dist/tools/policy.d.ts +2 -2
- package/dist/tools/questions.controller.d.ts +1 -1
- package/dist/tools/questions.controller.js +8 -5
- package/dist/tools/questions.service.d.ts +25 -24
- package/dist/tools/questions.service.js +201 -142
- package/dist/tools/registry.d.ts +30 -20
- package/dist/tools/registry.js +73 -37
- package/dist/tools/specs.d.ts +5 -4
- package/dist/tools/specs.js +3 -1
- package/dist/tools/tools.module.d.ts +10 -0
- package/dist/tools/tools.module.js +91 -0
- package/dist/ui/call-extension.d.ts +16 -0
- package/dist/ui/call-extension.js +38 -0
- package/dist/ui/embed-token.d.ts +9 -5
- package/dist/ui/embed-token.js +34 -6
- package/dist/ui/ui-stream.d.ts +22 -17
- package/dist/ui/ui-stream.js +72 -12
- package/dist/ui/ui.module.d.ts +7 -0
- package/dist/ui/ui.module.js +28 -0
- package/dist/ui/views.controller.d.ts +14 -12
- package/dist/ui/views.controller.js +32 -25
- package/dist/ui/views.d.ts +9 -57
- package/dist/ui/views.js +43 -45
- package/package.json +11 -2
- package/dist/http/health.controller.d.ts +0 -26
- package/dist/http/health.controller.js +0 -79
- package/dist/http/tokens.d.ts +0 -131
- package/dist/http/tokens.js +0 -131
- package/dist/http/zod.pipe.d.ts +0 -8
- package/dist/http/zod.pipe.js +0 -14
- package/dist/identity/rate-limit.d.ts +0 -55
- package/dist/identity/rate-limit.js +0 -121
- package/dist/sandbox/lifecycle.d.ts +0 -21
- package/dist/sandbox/lifecycle.js +0 -68
- /package/dist/http/{gateway.module.d.ts → gateway-routes.d.ts} +0 -0
- /package/dist/http/{gateway.module.js → gateway-routes.js} +0 -0
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
|
2
|
+
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
3
|
+
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
4
|
+
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
5
|
+
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
6
|
+
};
|
|
7
|
+
import { Module } from "@nestjs/common";
|
|
8
|
+
import { SetupLockModule } from "../admin/setup-lock.js";
|
|
9
|
+
import { ExtensionRegistryModule } from "../extensions/registry.js";
|
|
10
|
+
import { OrgLockModule } from "../orgs/org-lock.js";
|
|
11
|
+
import { AccountsModule } from "./accounts.js";
|
|
12
|
+
import { ApiTokenService } from "./api-tokens.js";
|
|
13
|
+
import { IdentityBinding } from "./binding.js";
|
|
14
|
+
import { EnterpriseAdminLockModule } from "./enterprise-admin.js";
|
|
15
|
+
import { ExternalIdentities } from "./external.js";
|
|
16
|
+
import { ExternalIdentityLock } from "./external-identity-lock.js";
|
|
17
|
+
import { SessionService } from "./sessions.js";
|
|
18
|
+
import { SettingsService } from "./settings.js";
|
|
19
|
+
import { SsoFlow } from "./sso.js";
|
|
20
|
+
/**
|
|
21
|
+
* Identity: accounts, sessions, API tokens, deployment settings and the enterprise admin lock,
|
|
22
|
+
* external identities with IM binding and third-party sign-in.
|
|
23
|
+
*/
|
|
24
|
+
let IdentityModule = class IdentityModule {
|
|
25
|
+
};
|
|
26
|
+
IdentityModule = __decorate([
|
|
27
|
+
Module({
|
|
28
|
+
imports: [
|
|
29
|
+
AccountsModule,
|
|
30
|
+
OrgLockModule,
|
|
31
|
+
SetupLockModule,
|
|
32
|
+
EnterpriseAdminLockModule,
|
|
33
|
+
ExtensionRegistryModule,
|
|
34
|
+
],
|
|
35
|
+
providers: [
|
|
36
|
+
SessionService,
|
|
37
|
+
ApiTokenService,
|
|
38
|
+
SettingsService,
|
|
39
|
+
ExternalIdentityLock,
|
|
40
|
+
ExternalIdentities,
|
|
41
|
+
IdentityBinding,
|
|
42
|
+
SsoFlow,
|
|
43
|
+
],
|
|
44
|
+
exports: [
|
|
45
|
+
AccountsModule,
|
|
46
|
+
SessionService,
|
|
47
|
+
ApiTokenService,
|
|
48
|
+
SettingsService,
|
|
49
|
+
EnterpriseAdminLockModule,
|
|
50
|
+
ExternalIdentities,
|
|
51
|
+
IdentityBinding,
|
|
52
|
+
SsoFlow,
|
|
53
|
+
],
|
|
54
|
+
})
|
|
55
|
+
], IdentityModule);
|
|
56
|
+
export { IdentityModule };
|
|
@@ -1,22 +1,22 @@
|
|
|
1
1
|
import type { Logger } from "@capybara-hq/plugin-sdk";
|
|
2
2
|
import type { FastifyReply, FastifyRequest } from "fastify";
|
|
3
3
|
import { z } from "zod";
|
|
4
|
-
import
|
|
4
|
+
import { CredentialThrottler } from "../infra/throttler/credential-throttler.js";
|
|
5
|
+
import { OrgsService } from "../orgs/orgs.service.js";
|
|
5
6
|
import type { OrgRole } from "../orgs/roles.js";
|
|
6
|
-
import type
|
|
7
|
-
import { type ApiTokenRecord,
|
|
7
|
+
import { type Account, AccountsService } from "./accounts.js";
|
|
8
|
+
import { type ApiTokenRecord, ApiTokenService } from "./api-tokens.js";
|
|
8
9
|
import { type Principal } from "./principal.js";
|
|
9
|
-
import
|
|
10
|
-
|
|
11
|
-
declare const ChangePasswordBody: z.ZodObject<{
|
|
10
|
+
import { SessionService } from "./sessions.js";
|
|
11
|
+
declare const ChangePasswordSchema: z.ZodObject<{
|
|
12
12
|
currentPassword: z.ZodString;
|
|
13
13
|
newPassword: z.ZodString;
|
|
14
14
|
}, z.core.$strip>;
|
|
15
|
-
declare const
|
|
15
|
+
declare const TokenSchema: z.ZodObject<{
|
|
16
16
|
name: z.ZodString;
|
|
17
17
|
expiresAt: z.ZodOptional<z.ZodPipe<z.ZodISODateTime, z.ZodTransform<Date, string>>>;
|
|
18
18
|
}, z.core.$strip>;
|
|
19
|
-
declare const
|
|
19
|
+
declare const CurrentOrgSchema: z.ZodObject<{
|
|
20
20
|
orgId: z.ZodNullable<z.ZodString>;
|
|
21
21
|
}, z.core.$strip>;
|
|
22
22
|
type MembershipView = {
|
|
@@ -31,9 +31,9 @@ export declare class MeController {
|
|
|
31
31
|
private readonly sessions;
|
|
32
32
|
private readonly orgs;
|
|
33
33
|
private readonly tokens;
|
|
34
|
-
private readonly
|
|
34
|
+
private readonly throttler;
|
|
35
35
|
private readonly log;
|
|
36
|
-
constructor(accounts: AccountsService, sessions: SessionService, orgs: OrgsService, tokens: ApiTokenService,
|
|
36
|
+
constructor(accounts: AccountsService, sessions: SessionService, orgs: OrgsService, tokens: ApiTokenService, throttler: CredentialThrottler, log: Logger);
|
|
37
37
|
me(principal: Principal): Promise<{
|
|
38
38
|
account: Account;
|
|
39
39
|
via: "session" | "pat";
|
|
@@ -41,15 +41,16 @@ export declare class MeController {
|
|
|
41
41
|
memberships: MembershipView[];
|
|
42
42
|
}>;
|
|
43
43
|
/** 切换当前组织(仅 Web 会话);`null` 清空。非成员或已软删除的组织 → `org.not_found`。 */
|
|
44
|
-
setCurrentOrg(principal: Principal, body: z.infer<typeof
|
|
44
|
+
setCurrentOrg(principal: Principal, body: z.infer<typeof CurrentOrgSchema>): Promise<void>;
|
|
45
45
|
/**
|
|
46
46
|
* 改密码:核对旧密码;成功后吊销该账号除当前会话外的所有会话,并吊销其全部个人访问令牌(R24)——
|
|
47
47
|
* 三者在同一个 PG 事务里生效,之后再尽力写 Redis 吊销标记。
|
|
48
|
-
*
|
|
49
|
-
*
|
|
48
|
+
* Before the check one attempt is reserved (per account id 10, per client IP 50, apart from the
|
|
49
|
+
* login IP budget), so a stolen session cannot guess the old password forever; over the limit →
|
|
50
|
+
* 429 `auth.rate_limited`; a successful check clears the account counter.
|
|
50
51
|
*/
|
|
51
|
-
changePassword(principal: Principal, body: z.infer<typeof
|
|
52
|
-
createToken(principal: Principal, body: z.infer<typeof
|
|
52
|
+
changePassword(principal: Principal, body: z.infer<typeof ChangePasswordSchema>, req: FastifyRequest, reply: FastifyReply): Promise<void>;
|
|
53
|
+
createToken(principal: Principal, body: z.infer<typeof TokenSchema>): Promise<{
|
|
53
54
|
token: string;
|
|
54
55
|
record: ApiTokenRecord;
|
|
55
56
|
}>;
|
|
@@ -7,40 +7,50 @@ 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, Put, Req, Res, } from "@nestjs/common";
|
|
11
11
|
import { z } from "zod";
|
|
12
12
|
import { ApiError } from "../errors.js";
|
|
13
|
-
import {
|
|
14
|
-
import {
|
|
15
|
-
import {
|
|
16
|
-
import {
|
|
13
|
+
import { CredentialThrottler } from "../infra/throttler/credential-throttler.js";
|
|
14
|
+
import { KERNEL_LOGGER } from "../infra/tokens.js";
|
|
15
|
+
import { createZodDto } from "../infra/validation/create-zod-dto.js";
|
|
16
|
+
import { ZBody } from "../infra/validation/zod-params.js";
|
|
17
|
+
import { OrgsService } from "../orgs/orgs.service.js";
|
|
18
|
+
import { AccountsService } from "./accounts.js";
|
|
19
|
+
import { ApiTokenService, FutureIsoDate } from "./api-tokens.js";
|
|
17
20
|
import { MAX_PASSWORD_LENGTH } from "./login.js";
|
|
18
21
|
import { CurrentPrincipal, requireUser, SessionOnly } from "./principal.js";
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
const
|
|
22
|
+
import { SessionService } from "./sessions.js";
|
|
23
|
+
/** The credential throttlers of a password change (per account, per client IP). */
|
|
24
|
+
const CHANGE_PASSWORD_THROTTLERS = ["change-password", "change-password-ip"];
|
|
25
|
+
const ChangePasswordSchema = z.object({
|
|
22
26
|
currentPassword: z.string().min(1),
|
|
23
27
|
newPassword: z.string().min(12).max(MAX_PASSWORD_LENGTH),
|
|
24
28
|
});
|
|
25
|
-
|
|
29
|
+
class ChangePasswordBody extends createZodDto(ChangePasswordSchema, "ChangePasswordBody") {
|
|
30
|
+
}
|
|
31
|
+
const TokenSchema = z.object({
|
|
26
32
|
name: z.string().min(1).max(100),
|
|
27
33
|
expiresAt: FutureIsoDate.optional(),
|
|
28
34
|
});
|
|
29
|
-
|
|
35
|
+
class PersonalTokenBody extends createZodDto(TokenSchema, "PersonalTokenBody") {
|
|
36
|
+
}
|
|
37
|
+
const CurrentOrgSchema = z.object({ orgId: z.string().min(1).nullable() });
|
|
38
|
+
class CurrentOrgBody extends createZodDto(CurrentOrgSchema, "CurrentOrgBody") {
|
|
39
|
+
}
|
|
30
40
|
/** 当前用户(`/api/v1/me`)。 */
|
|
31
41
|
let MeController = class MeController {
|
|
32
42
|
accounts;
|
|
33
43
|
sessions;
|
|
34
44
|
orgs;
|
|
35
45
|
tokens;
|
|
36
|
-
|
|
46
|
+
throttler;
|
|
37
47
|
log;
|
|
38
|
-
constructor(accounts, sessions, orgs, tokens,
|
|
48
|
+
constructor(accounts, sessions, orgs, tokens, throttler, log) {
|
|
39
49
|
this.accounts = accounts;
|
|
40
50
|
this.sessions = sessions;
|
|
41
51
|
this.orgs = orgs;
|
|
42
52
|
this.tokens = tokens;
|
|
43
|
-
this.
|
|
53
|
+
this.throttler = throttler;
|
|
44
54
|
this.log = log;
|
|
45
55
|
}
|
|
46
56
|
async me(principal) {
|
|
@@ -65,24 +75,20 @@ let MeController = class MeController {
|
|
|
65
75
|
/**
|
|
66
76
|
* 改密码:核对旧密码;成功后吊销该账号除当前会话外的所有会话,并吊销其全部个人访问令牌(R24)——
|
|
67
77
|
* 三者在同一个 PG 事务里生效,之后再尽力写 Redis 吊销标记。
|
|
68
|
-
*
|
|
69
|
-
*
|
|
78
|
+
* Before the check one attempt is reserved (per account id 10, per client IP 50, apart from the
|
|
79
|
+
* login IP budget), so a stolen session cannot guess the old password forever; over the limit →
|
|
80
|
+
* 429 `auth.rate_limited`; a successful check clears the account counter.
|
|
70
81
|
*/
|
|
71
82
|
async changePassword(principal, body, req, reply) {
|
|
72
83
|
const p = requireUser(principal);
|
|
73
84
|
if (p.via !== "session") {
|
|
74
85
|
throw new ApiError("auth.session_required", "This endpoint requires a web session");
|
|
75
86
|
}
|
|
76
|
-
|
|
77
|
-
const rl = await this.limiter.reserveScoped("acct", p.account.id, ip, CHANGE_PASSWORD_LIMIT_PER_ACCOUNT);
|
|
78
|
-
if (!rl.allowed) {
|
|
79
|
-
reply.header("retry-after", String(rl.retryAfterSeconds));
|
|
80
|
-
throw new ApiError("auth.rate_limited", "Too many failed password attempts; try again later");
|
|
81
|
-
}
|
|
87
|
+
await this.throttler.reserve(CHANGE_PASSWORD_THROTTLERS, req, reply);
|
|
82
88
|
if (!(await this.accounts.verifyPassword(p.account.id, body.currentPassword))) {
|
|
83
89
|
throw new ApiError("auth.invalid_credentials", "Current password is incorrect");
|
|
84
90
|
}
|
|
85
|
-
await this.
|
|
91
|
+
await this.throttler.succeeded(CHANGE_PASSWORD_THROTTLERS, req);
|
|
86
92
|
// 新密码、吊销其他会话(PG revoked_at)与个人令牌在同一个 PG 事务里完成
|
|
87
93
|
const revoked = await this.accounts.changePassword(p.account.id, body.newPassword, p.sessionId);
|
|
88
94
|
try {
|
|
@@ -118,14 +124,14 @@ __decorate([
|
|
|
118
124
|
SessionOnly(),
|
|
119
125
|
HttpCode(204),
|
|
120
126
|
__param(0, CurrentPrincipal()),
|
|
121
|
-
__param(1,
|
|
127
|
+
__param(1, ZBody(CurrentOrgBody))
|
|
122
128
|
], MeController.prototype, "setCurrentOrg", null);
|
|
123
129
|
__decorate([
|
|
124
130
|
Put("password"),
|
|
125
131
|
SessionOnly(),
|
|
126
132
|
HttpCode(204),
|
|
127
133
|
__param(0, CurrentPrincipal()),
|
|
128
|
-
__param(1,
|
|
134
|
+
__param(1, ZBody(ChangePasswordBody)),
|
|
129
135
|
__param(2, Req()),
|
|
130
136
|
__param(3, Res({ passthrough: true }))
|
|
131
137
|
], MeController.prototype, "changePassword", null);
|
|
@@ -133,7 +139,7 @@ __decorate([
|
|
|
133
139
|
Post("tokens"),
|
|
134
140
|
SessionOnly(),
|
|
135
141
|
__param(0, CurrentPrincipal()),
|
|
136
|
-
__param(1,
|
|
142
|
+
__param(1, ZBody(PersonalTokenBody))
|
|
137
143
|
], MeController.prototype, "createToken", null);
|
|
138
144
|
__decorate([
|
|
139
145
|
Get("tokens"),
|
|
@@ -149,11 +155,11 @@ __decorate([
|
|
|
149
155
|
], MeController.prototype, "revokeToken", null);
|
|
150
156
|
MeController = __decorate([
|
|
151
157
|
Controller("api/v1/me"),
|
|
152
|
-
__param(0, Inject(
|
|
153
|
-
__param(1, Inject(
|
|
154
|
-
__param(2, Inject(
|
|
155
|
-
__param(3, Inject(
|
|
156
|
-
__param(4, Inject(
|
|
157
|
-
__param(5, Inject(
|
|
158
|
+
__param(0, Inject(AccountsService)),
|
|
159
|
+
__param(1, Inject(SessionService)),
|
|
160
|
+
__param(2, Inject(OrgsService)),
|
|
161
|
+
__param(3, Inject(ApiTokenService)),
|
|
162
|
+
__param(4, Inject(CredentialThrottler)),
|
|
163
|
+
__param(5, Inject(KERNEL_LOGGER))
|
|
158
164
|
], MeController);
|
|
159
165
|
export { MeController };
|
|
@@ -1,6 +1,8 @@
|
|
|
1
1
|
import type { Redis } from "ioredis";
|
|
2
2
|
import type { Keyring } from "../ctx/secrets.js";
|
|
3
|
-
import
|
|
3
|
+
import { KernelConfigService } from "../infra/config/kernel-config.service.js";
|
|
4
|
+
import { KernelDb } from "../infra/database/kernel-db.js";
|
|
5
|
+
import { TransactionHost } from "../infra/database/transaction-host.js";
|
|
4
6
|
import { type Account } from "./accounts.js";
|
|
5
7
|
export interface IssuedSession {
|
|
6
8
|
sessionId: string;
|
|
@@ -16,25 +18,24 @@ export declare const REFRESH_RACE_GRACE_MS = 30000;
|
|
|
16
18
|
* Web 会话服务:短期 access token(HS256 JWT,密钥由主密钥环派生)+ PG 中可吊销、一次一换的 refresh token。
|
|
17
19
|
* 吊销会在 Redis 写 `capk:revoked-sid:<sid>`(TTL 覆盖任何配置下 access token 的最长剩余寿命),使所有副本立即拒绝该会话的 access token;
|
|
18
20
|
* 验证 access token 时还会读 PG 的 `sessions.revoked_at`,Redis 丢数据也不会让已吊销的会话复活。
|
|
19
|
-
*
|
|
21
|
+
* Token lifetimes are `auth.accessTokenTtlSeconds` / `auth.refreshTokenTtlDays`, read per session.
|
|
20
22
|
*/
|
|
21
23
|
export declare class SessionService {
|
|
22
24
|
private readonly db;
|
|
25
|
+
readonly txHost: TransactionHost;
|
|
23
26
|
private readonly redis;
|
|
24
|
-
private readonly
|
|
27
|
+
private readonly config;
|
|
25
28
|
private readonly keys;
|
|
26
|
-
constructor(db: KernelDb, redis: Redis, keyring: Keyring,
|
|
27
|
-
accessTtlSeconds: number;
|
|
28
|
-
refreshTtlDays: number;
|
|
29
|
-
});
|
|
29
|
+
constructor(db: KernelDb, txHost: TransactionHost, redis: Redis, keyring: Keyring, config: Pick<KernelConfigService, "get">);
|
|
30
30
|
/**
|
|
31
|
-
*
|
|
32
|
-
*
|
|
31
|
+
* Creates a session, in the context's transaction when there is one (setup and invitation
|
|
32
|
+
* signup write it with the account, rolled back together); the caller sets the cookies after the
|
|
33
|
+
* commit.
|
|
33
34
|
*/
|
|
34
35
|
create(accountId: string, meta: {
|
|
35
36
|
userAgent?: string;
|
|
36
37
|
ip?: string;
|
|
37
|
-
}
|
|
38
|
+
}): Promise<IssuedSession>;
|
|
38
39
|
refresh(refreshToken: string, meta: {
|
|
39
40
|
userAgent?: string;
|
|
40
41
|
ip?: string;
|
|
@@ -73,6 +74,7 @@ export declare class SessionService {
|
|
|
73
74
|
* 不会留下指向已移出组织的 `current_org_id`。非成员或组织已软删除 → `org.not_found`;`null` 清空,不查成员关系。
|
|
74
75
|
*/
|
|
75
76
|
switchCurrentOrg(sessionId: string, accountId: string, orgId: string | null): Promise<void>;
|
|
77
|
+
private switchIn;
|
|
76
78
|
/** 有效(未吊销且未过期)的会话;否则返回 undefined。 */
|
|
77
79
|
get(sessionId: string): Promise<{
|
|
78
80
|
id: string;
|
|
@@ -1,8 +1,23 @@
|
|
|
1
|
+
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
|
2
|
+
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
3
|
+
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
4
|
+
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
5
|
+
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
6
|
+
};
|
|
7
|
+
var __param = (this && this.__param) || function (paramIndex, decorator) {
|
|
8
|
+
return function (target, key) { decorator(target, key, paramIndex); }
|
|
9
|
+
};
|
|
1
10
|
import { randomBytes, randomUUID } from "node:crypto";
|
|
11
|
+
import { Inject, Injectable } from "@nestjs/common";
|
|
2
12
|
import { errors as joseErrors, jwtVerify, SignJWT } from "jose";
|
|
3
13
|
import { sql } from "kysely";
|
|
4
14
|
import { ACCESS_TOKEN_TTL_MAX_SECONDS } from "../config/schema.js";
|
|
5
15
|
import { ApiError } from "../errors.js";
|
|
16
|
+
import { KernelConfigService } from "../infra/config/kernel-config.service.js";
|
|
17
|
+
import { KernelDb } from "../infra/database/kernel-db.js";
|
|
18
|
+
import { TransactionHost } from "../infra/database/transaction-host.js";
|
|
19
|
+
import { Transactional } from "../infra/database/transactional.decorator.js";
|
|
20
|
+
import { KEYRING, REDIS } from "../infra/tokens.js";
|
|
6
21
|
import { ACCOUNT_COLUMNS, toAccount } from "./accounts.js";
|
|
7
22
|
import { sha256Hex } from "./hash.js";
|
|
8
23
|
/** 旧 refresh token 在被轮换后多久内重放视为并发刷新(不吊销会话)。 */
|
|
@@ -24,27 +39,31 @@ class UnknownKidError extends Error {
|
|
|
24
39
|
* Web 会话服务:短期 access token(HS256 JWT,密钥由主密钥环派生)+ PG 中可吊销、一次一换的 refresh token。
|
|
25
40
|
* 吊销会在 Redis 写 `capk:revoked-sid:<sid>`(TTL 覆盖任何配置下 access token 的最长剩余寿命),使所有副本立即拒绝该会话的 access token;
|
|
26
41
|
* 验证 access token 时还会读 PG 的 `sessions.revoked_at`,Redis 丢数据也不会让已吊销的会话复活。
|
|
27
|
-
*
|
|
42
|
+
* Token lifetimes are `auth.accessTokenTtlSeconds` / `auth.refreshTokenTtlDays`, read per session.
|
|
28
43
|
*/
|
|
29
|
-
|
|
44
|
+
let SessionService = class SessionService {
|
|
30
45
|
db;
|
|
46
|
+
txHost;
|
|
31
47
|
redis;
|
|
32
|
-
|
|
48
|
+
config;
|
|
33
49
|
keys;
|
|
34
|
-
constructor(db, redis, keyring,
|
|
50
|
+
constructor(db, txHost, redis, keyring, config) {
|
|
35
51
|
this.db = db;
|
|
52
|
+
this.txHost = txHost;
|
|
36
53
|
this.redis = redis;
|
|
37
|
-
this.
|
|
54
|
+
this.config = config;
|
|
38
55
|
this.keys = keyring.deriveKey(ACCESS_KEY_INFO);
|
|
39
56
|
}
|
|
40
57
|
/**
|
|
41
|
-
*
|
|
42
|
-
*
|
|
58
|
+
* Creates a session, in the context's transaction when there is one (setup and invitation
|
|
59
|
+
* signup write it with the account, rolled back together); the caller sets the cookies after the
|
|
60
|
+
* commit.
|
|
43
61
|
*/
|
|
44
|
-
async create(accountId, meta
|
|
62
|
+
async create(accountId, meta) {
|
|
45
63
|
const id = randomUUID();
|
|
46
64
|
const refreshToken = newRefreshToken();
|
|
47
|
-
const
|
|
65
|
+
const refreshTtlDays = this.config.get().auth.refreshTokenTtlDays;
|
|
66
|
+
const row = await this.db
|
|
48
67
|
.insertInto("sessions")
|
|
49
68
|
.values({
|
|
50
69
|
id,
|
|
@@ -52,7 +71,7 @@ export class SessionService {
|
|
|
52
71
|
refresh_hash: sha256Hex(refreshToken),
|
|
53
72
|
user_agent: meta.userAgent ?? null,
|
|
54
73
|
ip: meta.ip ?? null,
|
|
55
|
-
expires_at: sql `now() + make_interval(days => ${
|
|
74
|
+
expires_at: sql `now() + make_interval(days => ${refreshTtlDays})`,
|
|
56
75
|
})
|
|
57
76
|
.returning(["expires_at"])
|
|
58
77
|
.executeTakeFirstOrThrow();
|
|
@@ -236,37 +255,38 @@ export class SessionService {
|
|
|
236
255
|
async switchCurrentOrg(sessionId, accountId, orgId) {
|
|
237
256
|
if (orgId === null)
|
|
238
257
|
return this.setCurrentOrg(sessionId, null);
|
|
239
|
-
await this.
|
|
240
|
-
|
|
241
|
-
|
|
242
|
-
|
|
243
|
-
|
|
244
|
-
|
|
245
|
-
|
|
246
|
-
|
|
258
|
+
await this.switchIn(sessionId, accountId, orgId);
|
|
259
|
+
}
|
|
260
|
+
async switchIn(sessionId, accountId, orgId) {
|
|
261
|
+
// 加锁顺序与移出成员一致:先组织行、再成员关系行(sessions.current_org_id 的外键检查也会锁组织行,
|
|
262
|
+
// 若先锁成员关系,会与持有组织行锁的移出成员互相等待而死锁)
|
|
263
|
+
const org = await this.db
|
|
264
|
+
.selectFrom("orgs")
|
|
265
|
+
.select("id")
|
|
266
|
+
.where("id", "=", orgId)
|
|
267
|
+
.where("deleted_at", "is", null)
|
|
268
|
+
.forShare()
|
|
269
|
+
.executeTakeFirst();
|
|
270
|
+
const m = org &&
|
|
271
|
+
(await this.db
|
|
272
|
+
.selectFrom("memberships")
|
|
273
|
+
.select("role")
|
|
274
|
+
.where("org_id", "=", orgId)
|
|
275
|
+
.where("account_id", "=", accountId)
|
|
247
276
|
.forShare()
|
|
248
|
-
.executeTakeFirst();
|
|
249
|
-
|
|
250
|
-
|
|
251
|
-
|
|
252
|
-
|
|
253
|
-
|
|
254
|
-
|
|
255
|
-
|
|
256
|
-
|
|
257
|
-
|
|
258
|
-
|
|
259
|
-
|
|
260
|
-
|
|
261
|
-
.set({ current_org_id: orgId })
|
|
262
|
-
.where("id", "=", sessionId)
|
|
263
|
-
.where("revoked_at", "is", null)
|
|
264
|
-
.where("expires_at", ">", sql `now()`)
|
|
265
|
-
.executeTakeFirst();
|
|
266
|
-
if (r.numUpdatedRows === 0n) {
|
|
267
|
-
throw new ApiError("auth.session_revoked", "Session has been revoked");
|
|
268
|
-
}
|
|
269
|
-
});
|
|
277
|
+
.executeTakeFirst());
|
|
278
|
+
if (!m)
|
|
279
|
+
throw new ApiError("org.not_found", "Organization not found");
|
|
280
|
+
const r = await this.db
|
|
281
|
+
.updateTable("sessions")
|
|
282
|
+
.set({ current_org_id: orgId })
|
|
283
|
+
.where("id", "=", sessionId)
|
|
284
|
+
.where("revoked_at", "is", null)
|
|
285
|
+
.where("expires_at", ">", sql `now()`)
|
|
286
|
+
.executeTakeFirst();
|
|
287
|
+
if (r.numUpdatedRows === 0n) {
|
|
288
|
+
throw new ApiError("auth.session_revoked", "Session has been revoked");
|
|
289
|
+
}
|
|
270
290
|
}
|
|
271
291
|
/** 有效(未吊销且未过期)的会话;否则返回 undefined。 */
|
|
272
292
|
async get(sessionId) {
|
|
@@ -287,7 +307,7 @@ export class SessionService {
|
|
|
287
307
|
};
|
|
288
308
|
async issue(sessionId, accountId, refreshToken, refreshExpiresAt) {
|
|
289
309
|
const iat = Math.floor(Date.now() / 1000);
|
|
290
|
-
const exp = iat + this.
|
|
310
|
+
const exp = iat + this.config.get().auth.accessTokenTtlSeconds;
|
|
291
311
|
const accessToken = await new SignJWT({ sid: sessionId })
|
|
292
312
|
.setProtectedHeader({ alg: "HS256", kid: this.keys.currentId })
|
|
293
313
|
.setSubject(accountId)
|
|
@@ -303,4 +323,16 @@ export class SessionService {
|
|
|
303
323
|
refreshExpiresAt,
|
|
304
324
|
};
|
|
305
325
|
}
|
|
306
|
-
}
|
|
326
|
+
};
|
|
327
|
+
__decorate([
|
|
328
|
+
Transactional()
|
|
329
|
+
], SessionService.prototype, "switchIn", null);
|
|
330
|
+
SessionService = __decorate([
|
|
331
|
+
Injectable(),
|
|
332
|
+
__param(0, Inject(KernelDb)),
|
|
333
|
+
__param(1, Inject(TransactionHost)),
|
|
334
|
+
__param(2, Inject(REDIS)),
|
|
335
|
+
__param(3, Inject(KEYRING)),
|
|
336
|
+
__param(4, Inject(KernelConfigService))
|
|
337
|
+
], SessionService);
|
|
338
|
+
export { SessionService };
|
|
@@ -1,7 +1,9 @@
|
|
|
1
|
-
import type { Logger } from "@capybara-hq/plugin-sdk";
|
|
2
|
-
import type { Transaction } from "kysely";
|
|
3
1
|
import { z } from "zod";
|
|
4
|
-
import type {
|
|
2
|
+
import type { KernelSchemaDb } 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 { EnterpriseAdminLock } from "./enterprise-admin.js";
|
|
5
7
|
/** 沙箱 cpu(核)与内存(MB)覆盖的范围(C19)。 */
|
|
6
8
|
export declare const SANDBOX_CPU_RANGE: {
|
|
7
9
|
readonly min: 0.25;
|
|
@@ -91,31 +93,35 @@ export type DeploymentSettingsPatch = z.infer<typeof DEPLOYMENT_SETTINGS_PATCH>;
|
|
|
91
93
|
* 读某个组织的沙箱限额覆盖(创建沙箱、组织设置页用);每次实时读 PG,多副本下改动立即生效。
|
|
92
94
|
* 只解析这个组织的那一条:没有设置、组织不在其中、或这一条存量值非法 → undefined;别的组织的条目非法不影响它。
|
|
93
95
|
*/
|
|
94
|
-
export declare function readSandboxLimitOverride(db:
|
|
96
|
+
export declare function readSandboxLimitOverride(db: KernelSchemaDb, orgId: string): Promise<SandboxLimitOverride | undefined>;
|
|
95
97
|
/**
|
|
96
98
|
* One organization's sub-agent limit override, read live from PG (so a change applies on every
|
|
97
99
|
* replica at once); in the caller's transaction when one is given. Only this organization's entry
|
|
98
100
|
* is parsed: no setting, no entry, or an invalid stored entry → undefined.
|
|
99
101
|
*/
|
|
100
|
-
export declare function readSubagentLimitOverride(db:
|
|
102
|
+
export declare function readSubagentLimitOverride(db: KernelSchemaDb, orgId: string): Promise<SubagentLimitOverride | undefined>;
|
|
101
103
|
/**
|
|
102
104
|
* When orgs may not create their own connectors / skills (deployment setting `customConnectors` /
|
|
103
105
|
* `customSkills` is `deny`, C22) throws `catalog.custom_disabled`: install from the enterprise
|
|
104
106
|
* catalog only. Reads PG live every time (can read in the caller's transaction); an invalid stored
|
|
105
107
|
* value counts as allow.
|
|
106
108
|
*/
|
|
107
|
-
export declare function assertCustomAllowed(db:
|
|
108
|
-
/**
|
|
109
|
+
export declare function assertCustomAllowed(db: KernelSchemaDb, key: "customConnectors" | "customSkills"): Promise<void>;
|
|
110
|
+
/** Deployment settings: one row per key, defaults for missing keys. */
|
|
109
111
|
export declare class SettingsService {
|
|
110
112
|
private readonly db;
|
|
111
|
-
|
|
112
|
-
|
|
113
|
+
readonly txHost: TransactionHost;
|
|
114
|
+
private readonly adminLock;
|
|
115
|
+
private readonly log;
|
|
116
|
+
constructor(db: KernelDb, txHost: TransactionHost, adminLock: EnterpriseAdminLock, log: Pick<KernelLogger, "warn">);
|
|
113
117
|
/**
|
|
114
|
-
*
|
|
115
|
-
*
|
|
116
|
-
*
|
|
118
|
+
* Reads every setting, in the context's transaction when there is one (a caller holding a
|
|
119
|
+
* transaction connection does not take a second one from the pool). Each key is validated on
|
|
120
|
+
* its own: an invalid stored value falls back to the default with a warning naming the key, the
|
|
121
|
+
* valid keys apply; unknown keys (written by a newer version) are ignored.
|
|
117
122
|
*/
|
|
118
|
-
get(
|
|
119
|
-
/**
|
|
123
|
+
get(): Promise<DeploymentSettings>;
|
|
124
|
+
/** Updates settings under the enterprise admin lock, re-checking the actor (else `forbidden`). */
|
|
120
125
|
update(patch: DeploymentSettingsPatch, actorAccountId: string, actorTokenId?: string): Promise<DeploymentSettings>;
|
|
126
|
+
private write;
|
|
121
127
|
}
|