@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
|
@@ -1,79 +0,0 @@
|
|
|
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 { Controller, Get, Inject, Res } from "@nestjs/common";
|
|
11
|
-
import { Public } from "../identity/principal.js";
|
|
12
|
-
import { HEALTH_OPTIONS } from "./tokens.js";
|
|
13
|
-
/** 单项检查的超时:依赖挂起(如 Redis 正在重连、命令进了离线队列)时也要尽快给出 503。 */
|
|
14
|
-
const CHECK_TIMEOUT_MS = 2_000;
|
|
15
|
-
function withTimeout(p, ms) {
|
|
16
|
-
let timer;
|
|
17
|
-
const timeout = new Promise((_, reject) => {
|
|
18
|
-
timer = setTimeout(() => reject(new Error(`timed out after ${ms}ms`)), ms);
|
|
19
|
-
timer.unref();
|
|
20
|
-
});
|
|
21
|
-
return Promise.race([p, timeout]).finally(() => clearTimeout(timer));
|
|
22
|
-
}
|
|
23
|
-
/**
|
|
24
|
-
* `GET /healthz`(进程存活,恒 200)与 `GET /readyz`(依赖就绪)。
|
|
25
|
-
* readyz 的 body 只给出每项检查的 `"ok"` / `"error"`,失败原因只进日志(已打码),不进响应——
|
|
26
|
-
* 驱动的错误信息可能带连接串。停机开始后 readyz 立即 503,不再执行检查。
|
|
27
|
-
* 标为 `@Public()`:挂载内核 API 时全局 AuthGuard 也作用于这里。
|
|
28
|
-
*/
|
|
29
|
-
let HealthController = class HealthController {
|
|
30
|
-
opts;
|
|
31
|
-
constructor(opts) {
|
|
32
|
-
this.opts = opts;
|
|
33
|
-
}
|
|
34
|
-
healthz() {
|
|
35
|
-
return { ok: true };
|
|
36
|
-
}
|
|
37
|
-
async readyz(reply) {
|
|
38
|
-
const { opts } = this;
|
|
39
|
-
const stopping = () => {
|
|
40
|
-
reply.code(503);
|
|
41
|
-
return { ok: false, stopping: true };
|
|
42
|
-
};
|
|
43
|
-
if (opts.isStopping())
|
|
44
|
-
return stopping();
|
|
45
|
-
const timeoutMs = opts.timeoutMs ?? CHECK_TIMEOUT_MS;
|
|
46
|
-
const names = Object.keys(opts.checks);
|
|
47
|
-
const results = await Promise.allSettled(names.map((n) => withTimeout(opts.checks[n](), timeoutMs)));
|
|
48
|
-
const body = {};
|
|
49
|
-
let ok = true;
|
|
50
|
-
results.forEach((r, i) => {
|
|
51
|
-
const name = names[i];
|
|
52
|
-
if (r.status === "fulfilled") {
|
|
53
|
-
body[name] = "ok";
|
|
54
|
-
}
|
|
55
|
-
else {
|
|
56
|
-
ok = false;
|
|
57
|
-
body[name] = "error";
|
|
58
|
-
opts.log.warn("readiness check failed", { check: name, err: r.reason });
|
|
59
|
-
}
|
|
60
|
-
});
|
|
61
|
-
if (opts.isStopping())
|
|
62
|
-
return stopping();
|
|
63
|
-
reply.code(ok ? 200 : 503);
|
|
64
|
-
return { ok, ...body };
|
|
65
|
-
}
|
|
66
|
-
};
|
|
67
|
-
__decorate([
|
|
68
|
-
Get("healthz")
|
|
69
|
-
], HealthController.prototype, "healthz", null);
|
|
70
|
-
__decorate([
|
|
71
|
-
Get("readyz"),
|
|
72
|
-
__param(0, Res({ passthrough: true }))
|
|
73
|
-
], HealthController.prototype, "readyz", null);
|
|
74
|
-
HealthController = __decorate([
|
|
75
|
-
Controller(),
|
|
76
|
-
Public(),
|
|
77
|
-
__param(0, Inject(HEALTH_OPTIONS))
|
|
78
|
-
], HealthController);
|
|
79
|
-
export { HealthController };
|
package/dist/http/tokens.d.ts
DELETED
|
@@ -1,131 +0,0 @@
|
|
|
1
|
-
/** 内核 logger(`Logger`)的注入令牌。 */
|
|
2
|
-
export declare const KERNEL_LOG: unique symbol;
|
|
3
|
-
/** 健康检查参数(`HealthOptions`)的注入令牌。 */
|
|
4
|
-
export declare const HEALTH_OPTIONS: unique symbol;
|
|
5
|
-
/** 内核 schema 视图(`KernelDb`)的注入令牌。 */
|
|
6
|
-
export declare const KERNEL_DB: unique symbol;
|
|
7
|
-
/** 内核共享 Redis 连接(ioredis `Redis`)的注入令牌。 */
|
|
8
|
-
export declare const KERNEL_REDIS: unique symbol;
|
|
9
|
-
/** 当前配置的取值函数(`() => KernelConfig`,热更新后返回新配置)的注入令牌。 */
|
|
10
|
-
export declare const KERNEL_CONFIG: unique symbol;
|
|
11
|
-
/** `AccountsService` 的注入令牌。 */
|
|
12
|
-
export declare const ACCOUNTS: unique symbol;
|
|
13
|
-
/** `SessionService` 的注入令牌。 */
|
|
14
|
-
export declare const SESSIONS: unique symbol;
|
|
15
|
-
/** `ApiTokenService` 的注入令牌。 */
|
|
16
|
-
export declare const API_TOKENS: unique symbol;
|
|
17
|
-
/** `SettingsService` 的注入令牌。 */
|
|
18
|
-
export declare const SETTINGS: unique symbol;
|
|
19
|
-
/** `LoginRateLimiter` 的注入令牌。 */
|
|
20
|
-
export declare const RATE_LIMITER: unique symbol;
|
|
21
|
-
/** `OrgsService` 的注入令牌。 */
|
|
22
|
-
export declare const ORGS: unique symbol;
|
|
23
|
-
/** `OrgSettingsService`(组织设置)的注入令牌。 */
|
|
24
|
-
export declare const ORG_SETTINGS: unique symbol;
|
|
25
|
-
/** `MembersService` 的注入令牌。 */
|
|
26
|
-
export declare const MEMBERS: unique symbol;
|
|
27
|
-
/** `InvitationsService` 的注入令牌。 */
|
|
28
|
-
export declare const INVITATIONS: unique symbol;
|
|
29
|
-
/** `SetupService` 的注入令牌。 */
|
|
30
|
-
export declare const SETUP: unique symbol;
|
|
31
|
-
/** Injection token for `OrgExtensionConfigs`. */
|
|
32
|
-
export declare const ORG_EXTENSION_CONFIGS: unique symbol;
|
|
33
|
-
/** `ProviderRegistry` 的注入令牌。 */
|
|
34
|
-
export declare const PROVIDER_REGISTRY: unique symbol;
|
|
35
|
-
/** `AgentsService` 的注入令牌。 */
|
|
36
|
-
export declare const AGENTS: unique symbol;
|
|
37
|
-
/** `AgentTemplatesService` (agent templates from plugins). */
|
|
38
|
-
export declare const AGENT_TEMPLATES: unique symbol;
|
|
39
|
-
/** 内核总线(`createBus(..., "kernel")`,`ExtensionContext["bus"]`)的注入令牌。 */
|
|
40
|
-
export declare const KERNEL_BUS: unique symbol;
|
|
41
|
-
/** `EventLog` 的注入令牌。 */
|
|
42
|
-
export declare const EVENT_LOG: unique symbol;
|
|
43
|
-
/** `ConversationsService` 的注入令牌。 */
|
|
44
|
-
export declare const CONVERSATIONS: unique symbol;
|
|
45
|
-
/** `AttachmentsService`(对话附件)的注入令牌。 */
|
|
46
|
-
export declare const ATTACHMENTS: unique symbol;
|
|
47
|
-
/** `SkillsService`(技能库)的注入令牌。 */
|
|
48
|
-
export declare const SKILLS: unique symbol;
|
|
49
|
-
/** `SkillInvoker` (a person's skill invocation, phase D). */
|
|
50
|
-
export declare const SKILL_INVOKER: unique symbol;
|
|
51
|
-
/** `SkillChangesService`(agent 自写技能与技能变更审批)的注入令牌。 */
|
|
52
|
-
export declare const SKILL_CHANGES: unique symbol;
|
|
53
|
-
/** `InboxService`(收件箱汇总)的注入令牌。 */
|
|
54
|
-
export declare const INBOX: unique symbol;
|
|
55
|
-
/** `ConversationOutputs`(网页读工具输出存档)的注入令牌。 */
|
|
56
|
-
export declare const CONVERSATION_OUTPUTS: unique symbol;
|
|
57
|
-
/** `ConversationArtifacts`(产物下载)的注入令牌。 */
|
|
58
|
-
export declare const CONVERSATION_ARTIFACTS: unique symbol;
|
|
59
|
-
/** `ConversationFiles` (file outputs list and text content, UI refresh B). */
|
|
60
|
-
export declare const CONVERSATION_FILES: unique symbol;
|
|
61
|
-
export declare const FILE_PREVIEWERS: unique symbol;
|
|
62
|
-
/** `ConversationQueue` (queued messages, UI refresh B). */
|
|
63
|
-
export declare const CONVERSATION_QUEUE: unique symbol;
|
|
64
|
-
/** `ConversationSandboxStatus`(对话沙箱状态)的注入令牌。 */
|
|
65
|
-
export declare const CONVERSATION_SANDBOX: unique symbol;
|
|
66
|
-
/** `ConversationToolInfo` (tool titles, kinds and key arguments for the conversation page). */
|
|
67
|
-
export declare const CONVERSATION_TOOLS: unique symbol;
|
|
68
|
-
/** `ConversationStreams`(本进程持有的会话 SSE 连接)的注入令牌。 */
|
|
69
|
-
export declare const CONVERSATION_STREAMS: unique symbol;
|
|
70
|
-
/** 连接器凭据(`Credentials`)的注入令牌。 */
|
|
71
|
-
export declare const CREDENTIALS: unique symbol;
|
|
72
|
-
/** `ToolRegistry` 的注入令牌。 */
|
|
73
|
-
export declare const TOOL_REGISTRY: unique symbol;
|
|
74
|
-
/** `ConnectorsService` 的注入令牌。 */
|
|
75
|
-
export declare const CONNECTORS: unique symbol;
|
|
76
|
-
/** `ConnectorContent`(连接器的 prompts / resources,供斜杠命令与 @ 引用)的注入令牌。 */
|
|
77
|
-
export declare const CONNECTOR_CONTENT: unique symbol;
|
|
78
|
-
/** `ApprovalsService`(工具调用审批与授权)的注入令牌。 */
|
|
79
|
-
export declare const APPROVALS: unique symbol;
|
|
80
|
-
/** `QuestionsService`(工具调用的输入请求)的注入令牌。 */
|
|
81
|
-
export declare const QUESTIONS: unique symbol;
|
|
82
|
-
/** `OAuthFlow`(OAuth 授权码连接流程)的注入令牌。 */
|
|
83
|
-
export declare const OAUTH_FLOW: unique symbol;
|
|
84
|
-
/** `ExternalIdentities`(外部身份 ↔ 账号)的注入令牌。 */
|
|
85
|
-
export declare const EXTERNAL_IDENTITIES: unique symbol;
|
|
86
|
-
/** `IdentityBinding`(IM 身份的一次性绑定链接)的注入令牌。 */
|
|
87
|
-
export declare const IDENTITY_BINDING: unique symbol;
|
|
88
|
-
/** `SsoFlow`(第三方登录)的注入令牌。 */
|
|
89
|
-
export declare const SSO_FLOW: unique symbol;
|
|
90
|
-
/** `Offboarding`(成员离职处理)的注入令牌。 */
|
|
91
|
-
export declare const OFFBOARDING: unique symbol;
|
|
92
|
-
/** `ChannelConnections`(组织的渠道连接)的注入令牌。 */
|
|
93
|
-
export declare const CHANNEL_CONNECTIONS: unique symbol;
|
|
94
|
-
/** `DirectorySync`(通讯录同步)的注入令牌。 */
|
|
95
|
-
export declare const DIRECTORY_SYNC: unique symbol;
|
|
96
|
-
/** `UiViews`(插件视图:列出贡献、render / action)的注入令牌。 */
|
|
97
|
-
export declare const UI_VIEWS: unique symbol;
|
|
98
|
-
/** `EmbedTokens`(嵌入应用的短期令牌,签发 / 校验)的注入令牌。 */
|
|
99
|
-
export declare const EMBED_TOKENS: unique symbol;
|
|
100
|
-
/** `OrgUiStreams`(组织级界面刷新 SSE)的注入令牌。 */
|
|
101
|
-
export declare const ORG_UI_STREAMS: unique symbol;
|
|
102
|
-
/** `PricesService`(模型价格表)的注入令牌。 */
|
|
103
|
-
export declare const PRICES: unique symbol;
|
|
104
|
-
/** `TrajectoryService`(轨迹查看器)的注入令牌。 */
|
|
105
|
-
export declare const TRAJECTORIES: unique symbol;
|
|
106
|
-
/** `EvalSetsService`(评测集与用例)的注入令牌。 */
|
|
107
|
-
export declare const EVAL_SETS: unique symbol;
|
|
108
|
-
/** `EvalRunsService`(评测运行)的注入令牌。 */
|
|
109
|
-
export declare const EVAL_RUNS: unique symbol;
|
|
110
|
-
/** `ModelPurposesService`(模型用途映射)的注入令牌。 */
|
|
111
|
-
export declare const MODEL_PURPOSES: unique symbol;
|
|
112
|
-
/** Injection token for `ExtensionInstalls` (extension package imports and install records). */
|
|
113
|
-
export declare const EXTENSION_INSTALLS: unique symbol;
|
|
114
|
-
/** Injection token for `ExtensionAdmin` (deployment-level extension list, status and web approval, enterprise admins). */
|
|
115
|
-
export declare const EXTENSION_ADMIN: unique symbol;
|
|
116
|
-
/** Deployment-level extension install / enable / disable / uninstall (`ExtensionAdminOps`). */
|
|
117
|
-
export declare const EXTENSION_ADMIN_OPS: unique symbol;
|
|
118
|
-
/** Deployment-level extension config (`ExtensionDeploymentConfigService`). */
|
|
119
|
-
export declare const EXTENSION_DEPLOYMENT_CONFIGS: unique symbol;
|
|
120
|
-
/** The enterprise catalog (`CatalogService`). */
|
|
121
|
-
export declare const CATALOG: unique symbol;
|
|
122
|
-
/** Plugin (app bundle) import: prepare / confirm and staging cleanup (`PluginImport`). */
|
|
123
|
-
export declare const PLUGIN_IMPORT: unique symbol;
|
|
124
|
-
/** Marketplaces (`MarketplacesService`). */
|
|
125
|
-
export declare const MARKETPLACES: unique symbol;
|
|
126
|
-
/** Organizations browse and install from the enterprise catalog (`OrgCatalogService`). */
|
|
127
|
-
export declare const ORG_CATALOG: unique symbol;
|
|
128
|
-
/** Catalog requests and approvals (`CatalogRequestsService`). */
|
|
129
|
-
export declare const CATALOG_REQUESTS: unique symbol;
|
|
130
|
-
/** Org install and uninstall of plugins (app bundles) (`PluginInstaller`). */
|
|
131
|
-
export declare const PLUGIN_INSTALLER: unique symbol;
|
package/dist/http/tokens.js
DELETED
|
@@ -1,131 +0,0 @@
|
|
|
1
|
-
/** 内核 logger(`Logger`)的注入令牌。 */
|
|
2
|
-
export const KERNEL_LOG = Symbol("KERNEL_LOG");
|
|
3
|
-
/** 健康检查参数(`HealthOptions`)的注入令牌。 */
|
|
4
|
-
export const HEALTH_OPTIONS = Symbol("HEALTH_OPTIONS");
|
|
5
|
-
/** 内核 schema 视图(`KernelDb`)的注入令牌。 */
|
|
6
|
-
export const KERNEL_DB = Symbol("KERNEL_DB");
|
|
7
|
-
/** 内核共享 Redis 连接(ioredis `Redis`)的注入令牌。 */
|
|
8
|
-
export const KERNEL_REDIS = Symbol("KERNEL_REDIS");
|
|
9
|
-
/** 当前配置的取值函数(`() => KernelConfig`,热更新后返回新配置)的注入令牌。 */
|
|
10
|
-
export const KERNEL_CONFIG = Symbol("KERNEL_CONFIG");
|
|
11
|
-
/** `AccountsService` 的注入令牌。 */
|
|
12
|
-
export const ACCOUNTS = Symbol("ACCOUNTS");
|
|
13
|
-
/** `SessionService` 的注入令牌。 */
|
|
14
|
-
export const SESSIONS = Symbol("SESSIONS");
|
|
15
|
-
/** `ApiTokenService` 的注入令牌。 */
|
|
16
|
-
export const API_TOKENS = Symbol("API_TOKENS");
|
|
17
|
-
/** `SettingsService` 的注入令牌。 */
|
|
18
|
-
export const SETTINGS = Symbol("SETTINGS");
|
|
19
|
-
/** `LoginRateLimiter` 的注入令牌。 */
|
|
20
|
-
export const RATE_LIMITER = Symbol("RATE_LIMITER");
|
|
21
|
-
/** `OrgsService` 的注入令牌。 */
|
|
22
|
-
export const ORGS = Symbol("ORGS");
|
|
23
|
-
/** `OrgSettingsService`(组织设置)的注入令牌。 */
|
|
24
|
-
export const ORG_SETTINGS = Symbol("ORG_SETTINGS");
|
|
25
|
-
/** `MembersService` 的注入令牌。 */
|
|
26
|
-
export const MEMBERS = Symbol("MEMBERS");
|
|
27
|
-
/** `InvitationsService` 的注入令牌。 */
|
|
28
|
-
export const INVITATIONS = Symbol("INVITATIONS");
|
|
29
|
-
/** `SetupService` 的注入令牌。 */
|
|
30
|
-
export const SETUP = Symbol("SETUP");
|
|
31
|
-
/** Injection token for `OrgExtensionConfigs`. */
|
|
32
|
-
export const ORG_EXTENSION_CONFIGS = Symbol("ORG_EXTENSION_CONFIGS");
|
|
33
|
-
/** `ProviderRegistry` 的注入令牌。 */
|
|
34
|
-
export const PROVIDER_REGISTRY = Symbol("PROVIDER_REGISTRY");
|
|
35
|
-
/** `AgentsService` 的注入令牌。 */
|
|
36
|
-
export const AGENTS = Symbol("AGENTS");
|
|
37
|
-
/** `AgentTemplatesService` (agent templates from plugins). */
|
|
38
|
-
export const AGENT_TEMPLATES = Symbol("AGENT_TEMPLATES");
|
|
39
|
-
/** 内核总线(`createBus(..., "kernel")`,`ExtensionContext["bus"]`)的注入令牌。 */
|
|
40
|
-
export const KERNEL_BUS = Symbol("KERNEL_BUS");
|
|
41
|
-
/** `EventLog` 的注入令牌。 */
|
|
42
|
-
export const EVENT_LOG = Symbol("EVENT_LOG");
|
|
43
|
-
/** `ConversationsService` 的注入令牌。 */
|
|
44
|
-
export const CONVERSATIONS = Symbol("CONVERSATIONS");
|
|
45
|
-
/** `AttachmentsService`(对话附件)的注入令牌。 */
|
|
46
|
-
export const ATTACHMENTS = Symbol("ATTACHMENTS");
|
|
47
|
-
/** `SkillsService`(技能库)的注入令牌。 */
|
|
48
|
-
export const SKILLS = Symbol("SKILLS");
|
|
49
|
-
/** `SkillInvoker` (a person's skill invocation, phase D). */
|
|
50
|
-
export const SKILL_INVOKER = Symbol("SKILL_INVOKER");
|
|
51
|
-
/** `SkillChangesService`(agent 自写技能与技能变更审批)的注入令牌。 */
|
|
52
|
-
export const SKILL_CHANGES = Symbol("SKILL_CHANGES");
|
|
53
|
-
/** `InboxService`(收件箱汇总)的注入令牌。 */
|
|
54
|
-
export const INBOX = Symbol("INBOX");
|
|
55
|
-
/** `ConversationOutputs`(网页读工具输出存档)的注入令牌。 */
|
|
56
|
-
export const CONVERSATION_OUTPUTS = Symbol("CONVERSATION_OUTPUTS");
|
|
57
|
-
/** `ConversationArtifacts`(产物下载)的注入令牌。 */
|
|
58
|
-
export const CONVERSATION_ARTIFACTS = Symbol("CONVERSATION_ARTIFACTS");
|
|
59
|
-
/** `ConversationFiles` (file outputs list and text content, UI refresh B). */
|
|
60
|
-
export const CONVERSATION_FILES = Symbol("CONVERSATION_FILES");
|
|
61
|
-
export const FILE_PREVIEWERS = Symbol("FILE_PREVIEWERS");
|
|
62
|
-
/** `ConversationQueue` (queued messages, UI refresh B). */
|
|
63
|
-
export const CONVERSATION_QUEUE = Symbol("CONVERSATION_QUEUE");
|
|
64
|
-
/** `ConversationSandboxStatus`(对话沙箱状态)的注入令牌。 */
|
|
65
|
-
export const CONVERSATION_SANDBOX = Symbol("CONVERSATION_SANDBOX");
|
|
66
|
-
/** `ConversationToolInfo` (tool titles, kinds and key arguments for the conversation page). */
|
|
67
|
-
export const CONVERSATION_TOOLS = Symbol("CONVERSATION_TOOLS");
|
|
68
|
-
/** `ConversationStreams`(本进程持有的会话 SSE 连接)的注入令牌。 */
|
|
69
|
-
export const CONVERSATION_STREAMS = Symbol("CONVERSATION_STREAMS");
|
|
70
|
-
/** 连接器凭据(`Credentials`)的注入令牌。 */
|
|
71
|
-
export const CREDENTIALS = Symbol("CREDENTIALS");
|
|
72
|
-
/** `ToolRegistry` 的注入令牌。 */
|
|
73
|
-
export const TOOL_REGISTRY = Symbol("TOOL_REGISTRY");
|
|
74
|
-
/** `ConnectorsService` 的注入令牌。 */
|
|
75
|
-
export const CONNECTORS = Symbol("CONNECTORS");
|
|
76
|
-
/** `ConnectorContent`(连接器的 prompts / resources,供斜杠命令与 @ 引用)的注入令牌。 */
|
|
77
|
-
export const CONNECTOR_CONTENT = Symbol("CONNECTOR_CONTENT");
|
|
78
|
-
/** `ApprovalsService`(工具调用审批与授权)的注入令牌。 */
|
|
79
|
-
export const APPROVALS = Symbol("APPROVALS");
|
|
80
|
-
/** `QuestionsService`(工具调用的输入请求)的注入令牌。 */
|
|
81
|
-
export const QUESTIONS = Symbol("QUESTIONS");
|
|
82
|
-
/** `OAuthFlow`(OAuth 授权码连接流程)的注入令牌。 */
|
|
83
|
-
export const OAUTH_FLOW = Symbol("OAUTH_FLOW");
|
|
84
|
-
/** `ExternalIdentities`(外部身份 ↔ 账号)的注入令牌。 */
|
|
85
|
-
export const EXTERNAL_IDENTITIES = Symbol("EXTERNAL_IDENTITIES");
|
|
86
|
-
/** `IdentityBinding`(IM 身份的一次性绑定链接)的注入令牌。 */
|
|
87
|
-
export const IDENTITY_BINDING = Symbol("IDENTITY_BINDING");
|
|
88
|
-
/** `SsoFlow`(第三方登录)的注入令牌。 */
|
|
89
|
-
export const SSO_FLOW = Symbol("SSO_FLOW");
|
|
90
|
-
/** `Offboarding`(成员离职处理)的注入令牌。 */
|
|
91
|
-
export const OFFBOARDING = Symbol("OFFBOARDING");
|
|
92
|
-
/** `ChannelConnections`(组织的渠道连接)的注入令牌。 */
|
|
93
|
-
export const CHANNEL_CONNECTIONS = Symbol("CHANNEL_CONNECTIONS");
|
|
94
|
-
/** `DirectorySync`(通讯录同步)的注入令牌。 */
|
|
95
|
-
export const DIRECTORY_SYNC = Symbol("DIRECTORY_SYNC");
|
|
96
|
-
/** `UiViews`(插件视图:列出贡献、render / action)的注入令牌。 */
|
|
97
|
-
export const UI_VIEWS = Symbol("UI_VIEWS");
|
|
98
|
-
/** `EmbedTokens`(嵌入应用的短期令牌,签发 / 校验)的注入令牌。 */
|
|
99
|
-
export const EMBED_TOKENS = Symbol("EMBED_TOKENS");
|
|
100
|
-
/** `OrgUiStreams`(组织级界面刷新 SSE)的注入令牌。 */
|
|
101
|
-
export const ORG_UI_STREAMS = Symbol("ORG_UI_STREAMS");
|
|
102
|
-
/** `PricesService`(模型价格表)的注入令牌。 */
|
|
103
|
-
export const PRICES = Symbol("PRICES");
|
|
104
|
-
/** `TrajectoryService`(轨迹查看器)的注入令牌。 */
|
|
105
|
-
export const TRAJECTORIES = Symbol("TRAJECTORIES");
|
|
106
|
-
/** `EvalSetsService`(评测集与用例)的注入令牌。 */
|
|
107
|
-
export const EVAL_SETS = Symbol("EVAL_SETS");
|
|
108
|
-
/** `EvalRunsService`(评测运行)的注入令牌。 */
|
|
109
|
-
export const EVAL_RUNS = Symbol("EVAL_RUNS");
|
|
110
|
-
/** `ModelPurposesService`(模型用途映射)的注入令牌。 */
|
|
111
|
-
export const MODEL_PURPOSES = Symbol("MODEL_PURPOSES");
|
|
112
|
-
/** Injection token for `ExtensionInstalls` (extension package imports and install records). */
|
|
113
|
-
export const EXTENSION_INSTALLS = Symbol("EXTENSION_INSTALLS");
|
|
114
|
-
/** Injection token for `ExtensionAdmin` (deployment-level extension list, status and web approval, enterprise admins). */
|
|
115
|
-
export const EXTENSION_ADMIN = Symbol("EXTENSION_ADMIN");
|
|
116
|
-
/** Deployment-level extension install / enable / disable / uninstall (`ExtensionAdminOps`). */
|
|
117
|
-
export const EXTENSION_ADMIN_OPS = Symbol("EXTENSION_ADMIN_OPS");
|
|
118
|
-
/** Deployment-level extension config (`ExtensionDeploymentConfigService`). */
|
|
119
|
-
export const EXTENSION_DEPLOYMENT_CONFIGS = Symbol("EXTENSION_DEPLOYMENT_CONFIGS");
|
|
120
|
-
/** The enterprise catalog (`CatalogService`). */
|
|
121
|
-
export const CATALOG = Symbol("CATALOG");
|
|
122
|
-
/** Plugin (app bundle) import: prepare / confirm and staging cleanup (`PluginImport`). */
|
|
123
|
-
export const PLUGIN_IMPORT = Symbol("PLUGIN_IMPORT");
|
|
124
|
-
/** Marketplaces (`MarketplacesService`). */
|
|
125
|
-
export const MARKETPLACES = Symbol("MARKETPLACES");
|
|
126
|
-
/** Organizations browse and install from the enterprise catalog (`OrgCatalogService`). */
|
|
127
|
-
export const ORG_CATALOG = Symbol("ORG_CATALOG");
|
|
128
|
-
/** Catalog requests and approvals (`CatalogRequestsService`). */
|
|
129
|
-
export const CATALOG_REQUESTS = Symbol("CATALOG_REQUESTS");
|
|
130
|
-
/** Org install and uninstall of plugins (app bundles) (`PluginInstaller`). */
|
|
131
|
-
export const PLUGIN_INSTALLER = Symbol("PLUGIN_INSTALLER");
|
package/dist/http/zod.pipe.d.ts
DELETED
|
@@ -1,8 +0,0 @@
|
|
|
1
|
-
import type { PipeTransform } from "@nestjs/common";
|
|
2
|
-
import type { z } from "zod";
|
|
3
|
-
/** 用 Zod schema 校验请求参数(通常是 body);失败抛 `validation_failed`,details 逐条给出路径与原因。 */
|
|
4
|
-
export declare class ZodPipe<S extends z.ZodType> implements PipeTransform<unknown, z.infer<S>> {
|
|
5
|
-
private readonly schema;
|
|
6
|
-
constructor(schema: S);
|
|
7
|
-
transform(value: unknown): z.infer<S>;
|
|
8
|
-
}
|
package/dist/http/zod.pipe.js
DELETED
|
@@ -1,14 +0,0 @@
|
|
|
1
|
-
import { ApiError } from "../errors.js";
|
|
2
|
-
/** 用 Zod schema 校验请求参数(通常是 body);失败抛 `validation_failed`,details 逐条给出路径与原因。 */
|
|
3
|
-
export class ZodPipe {
|
|
4
|
-
schema;
|
|
5
|
-
constructor(schema) {
|
|
6
|
-
this.schema = schema;
|
|
7
|
-
}
|
|
8
|
-
transform(value) {
|
|
9
|
-
const r = this.schema.safeParse(value);
|
|
10
|
-
if (r.success)
|
|
11
|
-
return r.data;
|
|
12
|
-
throw new ApiError("validation_failed", "Request validation failed", r.error.issues.map((i) => ({ path: i.path.map(String).join("."), message: i.message })));
|
|
13
|
-
}
|
|
14
|
-
}
|
|
@@ -1,55 +0,0 @@
|
|
|
1
|
-
import type { Redis } from "ioredis";
|
|
2
|
-
/** 计数窗口(秒):首次尝试起算,窗口内累计。 */
|
|
3
|
-
export declare const LOGIN_FAIL_WINDOW_SECONDS = 900;
|
|
4
|
-
/** 同一(登录名, 客户端 IP)在窗口内允许的尝试次数(成功登录会清零)。 */
|
|
5
|
-
export declare const LOGIN_FAIL_LIMIT_PER_LOGIN_IP = 10;
|
|
6
|
-
/** 同一客户端 IP 在窗口内允许的尝试次数(跨登录名,防撞库;成功登录退还一次)。 */
|
|
7
|
-
export declare const LOGIN_FAIL_LIMIT_PER_IP = 50;
|
|
8
|
-
/** 同一登录名在窗口内跨所有 IP 允许的尝试次数(防分布式爆破单个账号;成功登录会清零)。 */
|
|
9
|
-
export declare const LOGIN_FAIL_LIMIT_PER_LOGIN = 100;
|
|
10
|
-
export type RateLimitResult = {
|
|
11
|
-
allowed: true;
|
|
12
|
-
} | {
|
|
13
|
-
allowed: false;
|
|
14
|
-
retryAfterSeconds: number;
|
|
15
|
-
};
|
|
16
|
-
/** 登录计数键。 */
|
|
17
|
-
export declare const loginFailKey: {
|
|
18
|
-
/** (登录名, IP):阈值 10。 */
|
|
19
|
-
loginIp: (login: string, ip: string) => string;
|
|
20
|
-
/** 客户端 IP(跨登录名):阈值 50。 */
|
|
21
|
-
ip: (ip: string) => string;
|
|
22
|
-
/** 单登录名全局(跨 IP):阈值 100。 */
|
|
23
|
-
login: (login: string) => string;
|
|
24
|
-
};
|
|
25
|
-
/** 其他凭据核对接口(改密码 `acct`、初始化令牌 `setup`、接受邀请 `inv`)的计数键,与登录的额度分开。 */
|
|
26
|
-
export declare const scopedKey: {
|
|
27
|
-
key: (scope: string, key: string) => string;
|
|
28
|
-
ip: (scope: string, ip: string) => string;
|
|
29
|
-
};
|
|
30
|
-
/**
|
|
31
|
-
* 凭据尝试限流,计数在 Redis 中、所有副本共享,窗口 900s。
|
|
32
|
-
*
|
|
33
|
-
* 登录(`reserve`)按三个键计数,任一超限即拒绝:
|
|
34
|
-
* - (登录名, IP)10 次——攻击者从一个 IP 打满某登录名的额度,不影响本人从别的 IP 登录(R25);
|
|
35
|
-
* - 客户端 IP 50 次(跨登录名,防撞库);
|
|
36
|
-
* - 单登录名 100 次(跨 IP,防分布式爆破)。
|
|
37
|
-
* 校验密码**之前**先原子地占用一次尝试,并发请求也无法绕过上限;登录成功后 `succeeded`
|
|
38
|
-
* 清掉该登录名的两个计数并退还一次 IP 额度(成功登录不消耗 IP 预算)。
|
|
39
|
-
*
|
|
40
|
-
* `reserveScoped` 供其他核对凭据的接口复用:按 `(scope, key)`(上限 `limit`)与 scope 内的 IP
|
|
41
|
-
* (上限 `ipLimit`,默认同登录的 50)两个键计数;IP 计数与登录的 IP 额度分开
|
|
42
|
-
* (改密码失败不会挤占同 NAT 下他人的登录额度)。
|
|
43
|
-
*
|
|
44
|
-
* 被拒绝的尝试不递增任何计数(攻击者在一个维度上被拒后,无法继续推高其他维度的计数),窗口到期自然清零。
|
|
45
|
-
*/
|
|
46
|
-
export declare class LoginRateLimiter {
|
|
47
|
-
private readonly redis;
|
|
48
|
-
constructor(redis: Redis);
|
|
49
|
-
reserve(login: string, ip: string): Promise<RateLimitResult>;
|
|
50
|
-
succeeded(login: string, ip: string): Promise<void>;
|
|
51
|
-
reserveScoped(scope: string, key: string, ip: string, limit: number, ipLimit?: number): Promise<RateLimitResult>;
|
|
52
|
-
/** 核对成功:删 `(scope, key)` 计数,scope 内 IP 计数减一。 */
|
|
53
|
-
succeededScoped(scope: string, key: string, ip: string): Promise<void>;
|
|
54
|
-
private reserveKeys;
|
|
55
|
-
}
|
|
@@ -1,121 +0,0 @@
|
|
|
1
|
-
import { createHash } from "node:crypto";
|
|
2
|
-
/** 计数窗口(秒):首次尝试起算,窗口内累计。 */
|
|
3
|
-
export const LOGIN_FAIL_WINDOW_SECONDS = 900;
|
|
4
|
-
/** 同一(登录名, 客户端 IP)在窗口内允许的尝试次数(成功登录会清零)。 */
|
|
5
|
-
export const LOGIN_FAIL_LIMIT_PER_LOGIN_IP = 10;
|
|
6
|
-
/** 同一客户端 IP 在窗口内允许的尝试次数(跨登录名,防撞库;成功登录退还一次)。 */
|
|
7
|
-
export const LOGIN_FAIL_LIMIT_PER_IP = 50;
|
|
8
|
-
/** 同一登录名在窗口内跨所有 IP 允许的尝试次数(防分布式爆破单个账号;成功登录会清零)。 */
|
|
9
|
-
export const LOGIN_FAIL_LIMIT_PER_LOGIN = 100;
|
|
10
|
-
/**
|
|
11
|
-
* 原子地「先查后增」:ARGV[1] 为窗口秒数,ARGV[i + 1] 为 KEYS[i] 的上限。
|
|
12
|
-
* 先读全部计数,任一已达上限即拒绝,且**不递增任何键**(被拒绝的尝试不消耗其他计数,
|
|
13
|
-
* 否则从一个 IP 被拒的请求会继续推高单登录名全局计数,把本人从别的 IP 也锁住);
|
|
14
|
-
* 都未达上限才逐个 INCR,并在首次计数或键没有 TTL 时设 EXPIRE(保证计数键一定带 TTL)。
|
|
15
|
-
* 返回 `{1}`(放行)或 `{0, retryTtl}`(拒绝;retryTtl 为已达上限的键中最大的剩余 TTL)。
|
|
16
|
-
*/
|
|
17
|
-
const RESERVE = `
|
|
18
|
-
local retry = -1
|
|
19
|
-
for i, key in ipairs(KEYS) do
|
|
20
|
-
local n = tonumber(redis.call('GET', key) or '0')
|
|
21
|
-
if n >= tonumber(ARGV[i + 1]) then
|
|
22
|
-
local ttl = redis.call('TTL', key)
|
|
23
|
-
if ttl > retry then retry = ttl end
|
|
24
|
-
if retry < 1 then retry = 1 end
|
|
25
|
-
end
|
|
26
|
-
end
|
|
27
|
-
if retry > 0 then
|
|
28
|
-
return {0, retry}
|
|
29
|
-
end
|
|
30
|
-
for i, key in ipairs(KEYS) do
|
|
31
|
-
local n = redis.call('INCR', key)
|
|
32
|
-
if n == 1 or redis.call('TTL', key) < 0 then
|
|
33
|
-
redis.call('EXPIRE', key, ARGV[1])
|
|
34
|
-
end
|
|
35
|
-
end
|
|
36
|
-
return {1}
|
|
37
|
-
`;
|
|
38
|
-
/**
|
|
39
|
-
* 删除除最后一个之外的全部键;最后一个(IP 计数)存在时减一,减到 0 及以下即删除
|
|
40
|
-
* (不会凭空建出无 TTL 的负数键)。
|
|
41
|
-
*/
|
|
42
|
-
const SUCCEEDED = `
|
|
43
|
-
for i = 1, #KEYS - 1 do
|
|
44
|
-
redis.call('DEL', KEYS[i])
|
|
45
|
-
end
|
|
46
|
-
local ip = KEYS[#KEYS]
|
|
47
|
-
if redis.call('EXISTS', ip) == 1 then
|
|
48
|
-
if redis.call('DECR', ip) <= 0 then
|
|
49
|
-
redis.call('DEL', ip)
|
|
50
|
-
end
|
|
51
|
-
end
|
|
52
|
-
return 0
|
|
53
|
-
`;
|
|
54
|
-
const sha256 = (s) => createHash("sha256").update(s).digest("hex");
|
|
55
|
-
/** 登录名按与本地账号相同的方式粗规范化(不校验格式),使大小写 / 空白变体共用计数。 */
|
|
56
|
-
const loginHash = (login) => sha256(login.normalize("NFKC").trim().toLowerCase());
|
|
57
|
-
/** 登录计数键。 */
|
|
58
|
-
export const loginFailKey = {
|
|
59
|
-
/** (登录名, IP):阈值 10。 */
|
|
60
|
-
loginIp: (login, ip) => `capk:login-fail:li:${loginHash(login)}:${sha256(ip)}`,
|
|
61
|
-
/** 客户端 IP(跨登录名):阈值 50。 */
|
|
62
|
-
ip: (ip) => `capk:login-fail:ip:${ip}`,
|
|
63
|
-
/** 单登录名全局(跨 IP):阈值 100。 */
|
|
64
|
-
login: (login) => `capk:login-fail:l:${loginHash(login)}`,
|
|
65
|
-
};
|
|
66
|
-
/** 其他凭据核对接口(改密码 `acct`、初始化令牌 `setup`、接受邀请 `inv`)的计数键,与登录的额度分开。 */
|
|
67
|
-
export const scopedKey = {
|
|
68
|
-
key: (scope, key) => `capk:rl:${scope}:k:${sha256(key)}`,
|
|
69
|
-
ip: (scope, ip) => `capk:rl:${scope}:ip:${ip}`,
|
|
70
|
-
};
|
|
71
|
-
/**
|
|
72
|
-
* 凭据尝试限流,计数在 Redis 中、所有副本共享,窗口 900s。
|
|
73
|
-
*
|
|
74
|
-
* 登录(`reserve`)按三个键计数,任一超限即拒绝:
|
|
75
|
-
* - (登录名, IP)10 次——攻击者从一个 IP 打满某登录名的额度,不影响本人从别的 IP 登录(R25);
|
|
76
|
-
* - 客户端 IP 50 次(跨登录名,防撞库);
|
|
77
|
-
* - 单登录名 100 次(跨 IP,防分布式爆破)。
|
|
78
|
-
* 校验密码**之前**先原子地占用一次尝试,并发请求也无法绕过上限;登录成功后 `succeeded`
|
|
79
|
-
* 清掉该登录名的两个计数并退还一次 IP 额度(成功登录不消耗 IP 预算)。
|
|
80
|
-
*
|
|
81
|
-
* `reserveScoped` 供其他核对凭据的接口复用:按 `(scope, key)`(上限 `limit`)与 scope 内的 IP
|
|
82
|
-
* (上限 `ipLimit`,默认同登录的 50)两个键计数;IP 计数与登录的 IP 额度分开
|
|
83
|
-
* (改密码失败不会挤占同 NAT 下他人的登录额度)。
|
|
84
|
-
*
|
|
85
|
-
* 被拒绝的尝试不递增任何计数(攻击者在一个维度上被拒后,无法继续推高其他维度的计数),窗口到期自然清零。
|
|
86
|
-
*/
|
|
87
|
-
export class LoginRateLimiter {
|
|
88
|
-
redis;
|
|
89
|
-
constructor(redis) {
|
|
90
|
-
this.redis = redis;
|
|
91
|
-
}
|
|
92
|
-
async reserve(login, ip) {
|
|
93
|
-
return this.reserveKeys([
|
|
94
|
-
[loginFailKey.loginIp(login, ip), LOGIN_FAIL_LIMIT_PER_LOGIN_IP],
|
|
95
|
-
[loginFailKey.ip(ip), LOGIN_FAIL_LIMIT_PER_IP],
|
|
96
|
-
[loginFailKey.login(login), LOGIN_FAIL_LIMIT_PER_LOGIN],
|
|
97
|
-
]);
|
|
98
|
-
}
|
|
99
|
-
async succeeded(login, ip) {
|
|
100
|
-
await this.redis.eval(SUCCEEDED, 3, loginFailKey.loginIp(login, ip), loginFailKey.login(login), loginFailKey.ip(ip));
|
|
101
|
-
}
|
|
102
|
-
async reserveScoped(scope, key, ip, limit, ipLimit = LOGIN_FAIL_LIMIT_PER_IP) {
|
|
103
|
-
return this.reserveKeys([
|
|
104
|
-
[scopedKey.key(scope, key), limit],
|
|
105
|
-
[scopedKey.ip(scope, ip), ipLimit],
|
|
106
|
-
]);
|
|
107
|
-
}
|
|
108
|
-
/** 核对成功:删 `(scope, key)` 计数,scope 内 IP 计数减一。 */
|
|
109
|
-
async succeededScoped(scope, key, ip) {
|
|
110
|
-
await this.redis.eval(SUCCEEDED, 2, scopedKey.key(scope, key), scopedKey.ip(scope, ip));
|
|
111
|
-
}
|
|
112
|
-
async reserveKeys(keys) {
|
|
113
|
-
const out = (await this.redis.eval(RESERVE, keys.length, ...keys.map(([k]) => k), LOGIN_FAIL_WINDOW_SECONDS, ...keys.map(([, limit]) => limit)));
|
|
114
|
-
if (out[0] === 1)
|
|
115
|
-
return { allowed: true };
|
|
116
|
-
return { allowed: false, retryAfterSeconds: clampTtl(out[1] ?? LOGIN_FAIL_WINDOW_SECONDS) };
|
|
117
|
-
}
|
|
118
|
-
}
|
|
119
|
-
function clampTtl(ttl) {
|
|
120
|
-
return Math.min(Math.max(ttl, 1), LOGIN_FAIL_WINDOW_SECONDS);
|
|
121
|
-
}
|
|
@@ -1,21 +0,0 @@
|
|
|
1
|
-
import type { Logger } from "@capybara-hq/plugin-sdk";
|
|
2
|
-
import type { Maintenance } from "../runtime/maintenance.js";
|
|
3
|
-
import type { SandboxService } from "./sandbox.service.js";
|
|
4
|
-
/** 空闲休眠扫描:任务名、job scheduler id(不含 `:`)与周期。 */
|
|
5
|
-
export declare const SANDBOX_SUSPEND_JOB = "sandbox-suspend-idle";
|
|
6
|
-
export declare const SANDBOX_SUSPEND_SCHEDULER_ID = "sandbox-suspend-idle-every-minute";
|
|
7
|
-
export declare const SANDBOX_SUSPEND_EVERY_MS = 60000;
|
|
8
|
-
/** 不活跃销毁扫描:任务名、job scheduler id(不含 `:`)与周期。 */
|
|
9
|
-
export declare const SANDBOX_DESTROY_JOB = "sandbox-destroy-inactive";
|
|
10
|
-
export declare const SANDBOX_DESTROY_SCHEDULER_ID = "sandbox-destroy-inactive-hourly";
|
|
11
|
-
export declare const SANDBOX_DESTROY_EVERY_MS = 3600000;
|
|
12
|
-
/** 一次性任务:立即销毁一批对话的沙箱(成员离职后投递,数据 `{ conversationIds }`)。 */
|
|
13
|
-
export declare const SANDBOX_DESTROY_FOR_JOB = "sandbox-destroy-for";
|
|
14
|
-
/** 投递 {@link SANDBOX_DESTROY_FOR_JOB}:失败的整批重试(已销毁的再调一次什么也不做)。 */
|
|
15
|
-
export declare function scheduleSandboxDestroy(maintenance: Pick<Maintenance, "add">, conversationIds: string[]): Promise<void>;
|
|
16
|
-
/**
|
|
17
|
-
* 在维护队列(`cap-kernel-maintenance`)登记沙箱的两个周期任务(worker 角色执行):
|
|
18
|
-
* 每分钟休眠空闲 / 连续运行超时的沙箱,每小时销毁不活跃、组织已删除或对话已删除的沙箱。
|
|
19
|
-
* 没有沙箱提供方时两个任务什么也不做。另登记一次性任务 {@link SANDBOX_DESTROY_FOR_JOB}(成员离职)。
|
|
20
|
-
*/
|
|
21
|
-
export declare function registerSandboxMaintenance(maintenance: Maintenance, sandbox: SandboxService, log: Pick<Logger, "info" | "warn">): void;
|
|
@@ -1,68 +0,0 @@
|
|
|
1
|
-
/** 空闲休眠扫描:任务名、job scheduler id(不含 `:`)与周期。 */
|
|
2
|
-
export const SANDBOX_SUSPEND_JOB = "sandbox-suspend-idle";
|
|
3
|
-
export const SANDBOX_SUSPEND_SCHEDULER_ID = "sandbox-suspend-idle-every-minute";
|
|
4
|
-
export const SANDBOX_SUSPEND_EVERY_MS = 60_000;
|
|
5
|
-
/** 不活跃销毁扫描:任务名、job scheduler id(不含 `:`)与周期。 */
|
|
6
|
-
export const SANDBOX_DESTROY_JOB = "sandbox-destroy-inactive";
|
|
7
|
-
export const SANDBOX_DESTROY_SCHEDULER_ID = "sandbox-destroy-inactive-hourly";
|
|
8
|
-
export const SANDBOX_DESTROY_EVERY_MS = 3_600_000;
|
|
9
|
-
/** 一次性任务:立即销毁一批对话的沙箱(成员离职后投递,数据 `{ conversationIds }`)。 */
|
|
10
|
-
export const SANDBOX_DESTROY_FOR_JOB = "sandbox-destroy-for";
|
|
11
|
-
/** 投递 {@link SANDBOX_DESTROY_FOR_JOB}:失败的整批重试(已销毁的再调一次什么也不做)。 */
|
|
12
|
-
export async function scheduleSandboxDestroy(maintenance, conversationIds) {
|
|
13
|
-
await maintenance.add(SANDBOX_DESTROY_FOR_JOB, { conversationIds }, {
|
|
14
|
-
attempts: 5,
|
|
15
|
-
backoff: { type: "exponential", delay: 30_000 },
|
|
16
|
-
removeOnComplete: true,
|
|
17
|
-
removeOnFail: 100,
|
|
18
|
-
});
|
|
19
|
-
}
|
|
20
|
-
/**
|
|
21
|
-
* 在维护队列(`cap-kernel-maintenance`)登记沙箱的两个周期任务(worker 角色执行):
|
|
22
|
-
* 每分钟休眠空闲 / 连续运行超时的沙箱,每小时销毁不活跃、组织已删除或对话已删除的沙箱。
|
|
23
|
-
* 没有沙箱提供方时两个任务什么也不做。另登记一次性任务 {@link SANDBOX_DESTROY_FOR_JOB}(成员离职)。
|
|
24
|
-
*/
|
|
25
|
-
export function registerSandboxMaintenance(maintenance, sandbox, log) {
|
|
26
|
-
maintenance.handle(SANDBOX_DESTROY_FOR_JOB, async (job) => {
|
|
27
|
-
const ids = job.data.conversationIds;
|
|
28
|
-
if (!Array.isArray(ids))
|
|
29
|
-
return;
|
|
30
|
-
let failed = 0;
|
|
31
|
-
for (const id of ids) {
|
|
32
|
-
if (typeof id !== "string")
|
|
33
|
-
continue;
|
|
34
|
-
try {
|
|
35
|
-
await sandbox.destroyFor(id);
|
|
36
|
-
}
|
|
37
|
-
catch (err) {
|
|
38
|
-
failed++;
|
|
39
|
-
log.warn("cannot destroy sandbox of an offboarded member; will retry", {
|
|
40
|
-
conversationId: id,
|
|
41
|
-
err,
|
|
42
|
-
});
|
|
43
|
-
}
|
|
44
|
-
}
|
|
45
|
-
if (failed > 0)
|
|
46
|
-
throw new Error(`${failed} of ${ids.length} sandboxes could not be destroyed`);
|
|
47
|
-
});
|
|
48
|
-
maintenance.handle(SANDBOX_SUSPEND_JOB, async () => {
|
|
49
|
-
const n = await sandbox.suspendIdle(new Date());
|
|
50
|
-
if (n > 0)
|
|
51
|
-
log.info("idle sandboxes suspended", { count: n });
|
|
52
|
-
});
|
|
53
|
-
maintenance.schedule({
|
|
54
|
-
id: SANDBOX_SUSPEND_SCHEDULER_ID,
|
|
55
|
-
name: SANDBOX_SUSPEND_JOB,
|
|
56
|
-
everyMs: () => SANDBOX_SUSPEND_EVERY_MS,
|
|
57
|
-
});
|
|
58
|
-
maintenance.handle(SANDBOX_DESTROY_JOB, async () => {
|
|
59
|
-
const n = await sandbox.destroyInactive(new Date());
|
|
60
|
-
if (n > 0)
|
|
61
|
-
log.info("inactive sandboxes destroyed", { count: n });
|
|
62
|
-
});
|
|
63
|
-
maintenance.schedule({
|
|
64
|
-
id: SANDBOX_DESTROY_SCHEDULER_ID,
|
|
65
|
-
name: SANDBOX_DESTROY_JOB,
|
|
66
|
-
everyMs: () => SANDBOX_DESTROY_EVERY_MS,
|
|
67
|
-
});
|
|
68
|
-
}
|
|
File without changes
|
|
File without changes
|