@capybara-hq/kernel 0.1.0-rc.1 → 0.1.0-rc.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/admin/admin.controller.d.ts +17 -17
- package/dist/admin/admin.controller.js +43 -26
- package/dist/admin/admin.module.d.ts +3 -0
- package/dist/admin/admin.module.js +22 -0
- package/dist/admin/extensions.controller.d.ts +14 -14
- package/dist/admin/extensions.controller.js +30 -17
- package/dist/admin/setup-lock.d.ts +16 -0
- package/dist/admin/setup-lock.js +47 -0
- package/dist/admin/setup.controller.d.ts +8 -8
- package/dist/admin/setup.controller.js +27 -25
- package/dist/admin/setup.service.d.ts +19 -27
- package/dist/admin/setup.service.js +61 -61
- package/dist/agents/agent-lookup.d.ts +53 -0
- package/dist/agents/agent-lookup.js +187 -0
- package/dist/agents/agents.controller.d.ts +1 -1
- package/dist/agents/agents.controller.js +14 -8
- package/dist/agents/agents.module.d.ts +7 -0
- package/dist/agents/agents.module.js +41 -0
- package/dist/agents/agents.service.d.ts +39 -58
- package/dist/agents/agents.service.js +280 -335
- package/dist/agents/definition.d.ts +39 -8
- package/dist/agents/definition.js +201 -17
- package/dist/agents/models.controller.d.ts +1 -1
- package/dist/agents/models.controller.js +2 -2
- package/dist/agents/templates.controller.d.ts +1 -1
- package/dist/agents/templates.controller.js +2 -2
- package/dist/agents/templates.d.ts +6 -8
- package/dist/agents/templates.js +39 -8
- package/dist/app.d.ts +93 -0
- package/dist/app.js +150 -0
- package/dist/catalog/admin-catalog.controller.d.ts +3 -3
- package/dist/catalog/admin-catalog.controller.js +27 -13
- package/dist/catalog/catalog-content.d.ts +185 -0
- package/dist/catalog/catalog-content.js +326 -0
- package/dist/catalog/catalog-items.d.ts +186 -0
- package/dist/catalog/catalog-items.js +410 -0
- package/dist/catalog/catalog.module.d.ts +14 -0
- package/dist/catalog/catalog.module.js +71 -0
- package/dist/catalog/catalog.service.d.ts +34 -188
- package/dist/catalog/catalog.service.js +155 -489
- package/dist/catalog/claude/agents.js +13 -10
- package/dist/catalog/cli.d.ts +3 -2
- package/dist/catalog/cli.js +13 -31
- package/dist/catalog/job-ids.d.ts +15 -0
- package/dist/catalog/job-ids.js +15 -0
- package/dist/catalog/jobs.d.ts +27 -0
- package/dist/catalog/jobs.js +70 -0
- package/dist/catalog/locks.d.ts +24 -0
- package/dist/catalog/locks.js +63 -0
- package/dist/catalog/marketplaces.controller.d.ts +4 -4
- package/dist/catalog/marketplaces.controller.js +22 -11
- package/dist/catalog/marketplaces.service.d.ts +31 -14
- package/dist/catalog/marketplaces.service.js +330 -256
- package/dist/catalog/org-catalog.controller.d.ts +4 -3
- package/dist/catalog/org-catalog.controller.js +29 -14
- package/dist/catalog/org-catalog.service.d.ts +32 -198
- package/dist/catalog/org-catalog.service.js +159 -400
- package/dist/catalog/plugin-import.d.ts +73 -34
- package/dist/catalog/plugin-import.js +356 -217
- package/dist/catalog/plugin-install.d.ts +83 -41
- package/dist/catalog/plugin-install.js +421 -269
- package/dist/catalog/plugin-upgrade.d.ts +59 -4
- package/dist/catalog/plugin-upgrade.js +407 -282
- package/dist/catalog/requests.service.d.ts +27 -15
- package/dist/catalog/requests.service.js +201 -145
- package/dist/catalog/upgrade-targets.d.ts +4 -7
- package/dist/channels/actions.d.ts +6 -4
- package/dist/channels/actions.js +1 -1
- package/dist/channels/cards.d.ts +10 -4
- package/dist/channels/cards.js +16 -8
- package/dist/channels/channels.module.d.ts +40 -0
- package/dist/channels/channels.module.js +128 -0
- package/dist/channels/connections.controller.d.ts +1 -1
- package/dist/channels/connections.controller.js +11 -6
- package/dist/channels/connections.service.d.ts +43 -21
- package/dist/channels/connections.service.js +236 -131
- package/dist/channels/inbound.d.ts +34 -38
- package/dist/channels/inbound.js +107 -41
- package/dist/channels/job-ids.d.ts +10 -0
- package/dist/channels/job-ids.js +10 -0
- package/dist/channels/jobs.d.ts +85 -0
- package/dist/channels/jobs.js +157 -0
- package/dist/channels/outbound.d.ts +60 -82
- package/dist/channels/outbound.js +165 -194
- package/dist/channels/supervisor.d.ts +88 -46
- package/dist/channels/supervisor.js +230 -132
- package/dist/channels/threads.d.ts +29 -8
- package/dist/channels/threads.js +71 -13
- package/dist/channels/webhook.d.ts +20 -14
- package/dist/channels/webhook.js +51 -20
- package/dist/config/load.d.ts +3 -2
- package/dist/config/load.js +3 -2
- package/dist/config/nacos-source.js +11 -2
- package/dist/config/schema.d.ts +1 -0
- package/dist/config/schema.js +12 -6
- package/dist/conversations/access.d.ts +29 -0
- package/dist/conversations/access.js +86 -0
- package/dist/conversations/artifacts.d.ts +11 -11
- package/dist/conversations/artifacts.js +36 -10
- package/dist/conversations/attachments.controller.d.ts +1 -1
- package/dist/conversations/attachments.controller.js +8 -6
- package/dist/conversations/attachments.module.d.ts +7 -0
- package/dist/conversations/attachments.module.js +25 -0
- package/dist/conversations/attachments.service.d.ts +30 -22
- package/dist/conversations/attachments.service.js +119 -46
- package/dist/conversations/conversations.controller.d.ts +8 -7
- package/dist/conversations/conversations.controller.js +59 -29
- package/dist/conversations/conversations.module.d.ts +8 -0
- package/dist/conversations/conversations.module.js +69 -0
- package/dist/conversations/conversations.service.d.ts +40 -38
- package/dist/conversations/conversations.service.js +130 -140
- package/dist/conversations/event-log.d.ts +39 -18
- package/dist/conversations/event-log.js +93 -27
- package/dist/conversations/events.d.ts +23 -3
- package/dist/conversations/events.js +26 -14
- package/dist/conversations/files.d.ts +10 -10
- package/dist/conversations/files.js +37 -11
- package/dist/conversations/idem-keys.d.ts +5 -0
- package/dist/conversations/idem-keys.js +5 -0
- package/dist/conversations/job-ids.d.ts +6 -0
- package/dist/conversations/job-ids.js +6 -0
- package/dist/conversations/outputs-read.d.ts +11 -11
- package/dist/conversations/outputs-read.js +31 -7
- package/dist/conversations/queue.d.ts +48 -56
- package/dist/conversations/queue.js +13 -289
- package/dist/conversations/queue.service.d.ts +60 -0
- package/dist/conversations/queue.service.js +343 -0
- package/dist/conversations/sandbox-status.d.ts +13 -10
- package/dist/conversations/sandbox-status.js +36 -8
- package/dist/conversations/titles.d.ts +71 -24
- package/dist/conversations/titles.js +159 -63
- package/dist/ctx/bus.js +9 -3
- package/dist/ctx/create-ctx.d.ts +6 -0
- package/dist/ctx/create-ctx.js +7 -9
- package/dist/ctx/lock.d.ts +7 -3
- package/dist/ctx/lock.js +9 -20
- package/dist/ctx/secrets.d.ts +10 -2
- package/dist/ctx/secrets.js +7 -3
- package/dist/db/kernel-schema.d.ts +4 -4
- package/dist/db/pool.d.ts +5 -0
- package/dist/db/pool.js +1 -0
- package/dist/errors.d.ts +1 -0
- package/dist/errors.js +1 -0
- package/dist/evals/budget.d.ts +42 -21
- package/dist/evals/budget.js +114 -62
- package/dist/evals/evals.module.d.ts +31 -0
- package/dist/evals/evals.module.js +114 -0
- package/dist/evals/jobs.d.ts +20 -0
- package/dist/evals/jobs.js +45 -0
- package/dist/evals/recorded-tools.d.ts +27 -1
- package/dist/evals/recorded-tools.js +85 -10
- package/dist/evals/run-replay.d.ts +61 -8
- package/dist/evals/run-replay.js +159 -85
- package/dist/evals/runs.controller.d.ts +1 -1
- package/dist/evals/runs.controller.js +17 -8
- package/dist/evals/runs.service.d.ts +23 -45
- package/dist/evals/runs.service.js +245 -234
- package/dist/evals/sets.controller.d.ts +1 -1
- package/dist/evals/sets.controller.js +17 -8
- package/dist/evals/sets.service.d.ts +22 -6
- package/dist/evals/sets.service.js +248 -194
- package/dist/evals/snapshot.d.ts +2 -2
- package/dist/evals/step-replay.d.ts +2 -2
- package/dist/evals/step-replay.js +1 -1
- package/dist/evals/trajectory.controller.d.ts +1 -1
- package/dist/evals/trajectory.controller.js +11 -7
- package/dist/evals/trajectory.d.ts +2 -2
- package/dist/evals/trajectory.service.d.ts +5 -4
- package/dist/evals/trajectory.service.js +30 -7
- package/dist/evals/worker.d.ts +44 -27
- package/dist/evals/worker.js +220 -121
- package/dist/extensions/admin-ops.d.ts +61 -33
- package/dist/extensions/admin-ops.js +248 -154
- package/dist/extensions/admin-view.d.ts +38 -27
- package/dist/extensions/admin-view.js +126 -55
- package/dist/extensions/approvals.d.ts +12 -8
- package/dist/extensions/approvals.js +73 -46
- package/dist/extensions/blobs.d.ts +27 -10
- package/dist/extensions/blobs.js +111 -45
- package/dist/extensions/bootstrap.d.ts +58 -31
- package/dist/extensions/bootstrap.js +175 -121
- package/dist/extensions/cli.d.ts +20 -10
- package/dist/extensions/cli.js +41 -96
- package/dist/extensions/config-issues.d.ts +7 -0
- package/dist/extensions/config-issues.js +31 -0
- package/dist/extensions/deployment-config-store.d.ts +49 -0
- package/dist/extensions/deployment-config-store.js +133 -0
- package/dist/extensions/deployment-config.d.ts +58 -67
- package/dist/extensions/deployment-config.js +202 -230
- package/dist/extensions/enabled.d.ts +5 -5
- package/dist/extensions/extensions.module.d.ts +8 -0
- package/dist/extensions/extensions.module.js +77 -0
- package/dist/extensions/hooks.d.ts +3 -2
- package/dist/extensions/hooks.js +1 -1
- package/dist/extensions/host.d.ts +72 -68
- package/dist/extensions/host.js +191 -152
- package/dist/extensions/installs.d.ts +49 -16
- package/dist/extensions/installs.js +128 -32
- package/dist/extensions/job-ids.d.ts +6 -0
- package/dist/extensions/job-ids.js +6 -0
- package/dist/extensions/lifecycle-topics.d.ts +18 -0
- package/dist/extensions/lifecycle-topics.js +18 -0
- package/dist/extensions/lifecycle.d.ts +35 -47
- package/dist/extensions/lifecycle.js +103 -39
- package/dist/extensions/locks.d.ts +33 -0
- package/dist/extensions/locks.js +86 -0
- package/dist/extensions/migrate-lock.d.ts +3 -4
- package/dist/extensions/org-config.controller.d.ts +1 -1
- package/dist/extensions/org-config.controller.js +8 -5
- package/dist/extensions/org-config.d.ts +48 -46
- package/dist/extensions/org-config.js +284 -226
- package/dist/extensions/registry.d.ts +50 -2
- package/dist/extensions/registry.js +89 -4
- package/dist/extensions/sources.d.ts +12 -8
- package/dist/extensions/sources.js +34 -13
- package/dist/files/files.module.d.ts +3 -0
- package/dist/files/files.module.js +22 -0
- package/dist/files/previewers.controller.d.ts +7 -2
- package/dist/files/previewers.controller.js +17 -9
- package/dist/files/previewers.d.ts +13 -18
- package/dist/files/previewers.js +83 -36
- package/dist/http/adapter.d.ts +3 -0
- package/dist/http/adapter.js +25 -0
- package/dist/http/api.module.d.ts +3 -110
- package/dist/http/api.module.js +47 -355
- package/dist/http/app.d.ts +11 -15
- package/dist/http/app.js +17 -62
- package/dist/http/error-filter.module.d.ts +5 -0
- package/dist/http/error-filter.module.js +18 -0
- package/dist/http/error.filter.js +2 -2
- package/dist/identity/accounts.d.ts +82 -29
- package/dist/identity/accounts.js +294 -175
- package/dist/identity/api-tokens.d.ts +11 -7
- package/dist/identity/api-tokens.js +71 -44
- package/dist/identity/audit.d.ts +7 -4
- package/dist/identity/audit.js +5 -1
- package/dist/identity/auth.controller.d.ts +11 -10
- package/dist/identity/auth.controller.js +31 -25
- package/dist/identity/auth.guard.d.ts +3 -3
- package/dist/identity/auth.guard.js +6 -4
- package/dist/identity/binding.d.ts +9 -11
- package/dist/identity/binding.js +41 -13
- package/dist/identity/enterprise-admin.d.ts +18 -12
- package/dist/identity/enterprise-admin.js +67 -13
- package/dist/identity/external-identity-lock.d.ts +17 -0
- package/dist/identity/external-identity-lock.js +39 -0
- package/dist/identity/external.d.ts +19 -15
- package/dist/identity/external.js +163 -125
- package/dist/identity/identity.module.d.ts +6 -0
- package/dist/identity/identity.module.js +56 -0
- package/dist/identity/me.controller.d.ts +16 -15
- package/dist/identity/me.controller.js +37 -31
- package/dist/identity/sessions.d.ts +12 -10
- package/dist/identity/sessions.js +74 -42
- package/dist/identity/settings.d.ts +20 -14
- package/dist/identity/settings.js +86 -58
- package/dist/identity/sso.controller.d.ts +7 -7
- package/dist/identity/sso.controller.js +13 -9
- package/dist/identity/sso.d.ts +9 -12
- package/dist/identity/sso.js +54 -24
- package/dist/inbox/inbox.module.d.ts +3 -0
- package/dist/inbox/inbox.module.js +22 -0
- package/dist/inbox/inbox.service.d.ts +7 -9
- package/dist/inbox/inbox.service.js +32 -11
- package/dist/index.d.ts +16 -11
- package/dist/index.js +9 -6
- package/dist/infra/cache/cache.module.d.ts +3 -0
- package/dist/infra/cache/cache.module.js +16 -0
- package/dist/infra/cache/cache.service.d.ts +21 -0
- package/dist/infra/cache/cache.service.js +80 -0
- package/dist/infra/cache/cacheable.decorator.d.ts +32 -0
- package/dist/infra/cache/cacheable.decorator.js +83 -0
- package/dist/infra/cli/kernel-cli.module.d.ts +66 -0
- package/dist/infra/cli/kernel-cli.module.js +165 -0
- package/dist/infra/close-within.d.ts +15 -0
- package/dist/infra/close-within.js +36 -0
- package/dist/infra/config/config.module.d.ts +13 -0
- package/dist/infra/config/config.module.js +39 -0
- package/dist/infra/config/kernel-config.service.d.ts +25 -0
- package/dist/infra/config/kernel-config.service.js +126 -0
- package/dist/infra/database/after-commit.d.ts +6 -0
- package/dist/infra/database/after-commit.js +9 -0
- package/dist/infra/database/database.module.d.ts +25 -0
- package/dist/infra/database/database.module.js +90 -0
- package/dist/infra/database/kernel-db.d.ts +22 -0
- package/dist/infra/database/kernel-db.js +65 -0
- package/dist/infra/database/transaction-host.d.ts +50 -0
- package/dist/infra/database/transaction-host.js +125 -0
- package/dist/infra/database/transactional.decorator.d.ts +15 -0
- package/dist/infra/database/transactional.decorator.js +27 -0
- package/dist/infra/database/xact-lock.d.ts +17 -0
- package/dist/infra/database/xact-lock.js +43 -0
- package/dist/infra/events/kernel-events.d.ts +96 -0
- package/dist/infra/events/kernel-events.js +65 -0
- package/dist/infra/health/health.controller.d.ts +26 -0
- package/dist/infra/health/health.controller.js +104 -0
- package/dist/infra/health/health.module.d.ts +9 -0
- package/dist/infra/health/health.module.js +24 -0
- package/dist/infra/health/health.options.d.ts +10 -0
- package/dist/infra/health/health.options.js +15 -0
- package/dist/infra/health/shutdown-state.d.ts +6 -0
- package/dist/infra/health/shutdown-state.js +2 -0
- package/dist/infra/lifecycle/graceful-shutdown.module.d.ts +6 -0
- package/dist/infra/lifecycle/graceful-shutdown.module.js +23 -0
- package/dist/infra/lifecycle/graceful-shutdown.service.d.ts +70 -0
- package/dist/infra/lifecycle/graceful-shutdown.service.js +135 -0
- package/dist/infra/lifecycle/process-guards.d.ts +52 -0
- package/dist/infra/lifecycle/process-guards.js +86 -0
- package/dist/infra/lifecycle/shutdown-signals.d.ts +30 -0
- package/dist/infra/lifecycle/shutdown-signals.js +48 -0
- package/dist/infra/lock/key-template.d.ts +13 -0
- package/dist/infra/lock/key-template.js +46 -0
- package/dist/infra/lock/lock.module.d.ts +3 -0
- package/dist/infra/lock/lock.module.js +16 -0
- package/dist/infra/lock/lock.service.d.ts +120 -0
- package/dist/infra/lock/lock.service.js +343 -0
- package/dist/infra/lock/shared-lease.d.ts +44 -0
- package/dist/infra/lock/shared-lease.js +121 -0
- package/dist/infra/lock/with-lock.decorator.d.ts +28 -0
- package/dist/infra/lock/with-lock.decorator.js +49 -0
- package/dist/infra/logging/logging.module.d.ts +16 -0
- package/dist/infra/logging/logging.module.js +34 -0
- package/dist/infra/queue/configured-processor.d.ts +18 -0
- package/dist/infra/queue/configured-processor.js +23 -0
- package/dist/infra/queue/job-failure.d.ts +18 -0
- package/dist/infra/queue/job-failure.js +26 -0
- package/dist/infra/queue/queue-shutdown.d.ts +27 -0
- package/dist/infra/queue/queue-shutdown.js +81 -0
- package/dist/infra/queue/queue.module.d.ts +16 -0
- package/dist/infra/queue/queue.module.js +61 -0
- package/dist/infra/queue/redis-connection.d.ts +7 -0
- package/dist/infra/queue/redis-connection.js +18 -0
- package/dist/infra/queue/retired-schedulers.d.ts +7 -0
- package/dist/infra/queue/retired-schedulers.js +9 -0
- package/dist/infra/queue/run-job.d.ts +16 -0
- package/dist/infra/queue/run-job.js +19 -0
- package/dist/infra/redis/redis.module.d.ts +24 -0
- package/dist/infra/redis/redis.module.js +87 -0
- package/dist/infra/schedule/cron-tick.d.ts +12 -0
- package/dist/infra/schedule/cron-tick.js +25 -0
- package/dist/infra/schedule/locked-cron.decorator.d.ts +27 -0
- package/dist/infra/schedule/locked-cron.decorator.js +53 -0
- package/dist/infra/schedule/locked-interval.d.ts +69 -0
- package/dist/infra/schedule/locked-interval.js +190 -0
- package/dist/infra/schedule/locked-tick.d.ts +90 -0
- package/dist/infra/schedule/locked-tick.js +137 -0
- package/dist/infra/schedule/schedule.module.d.ts +8 -0
- package/dist/infra/schedule/schedule.module.js +27 -0
- package/dist/infra/schedule/scheduled-runs.d.ts +69 -0
- package/dist/infra/schedule/scheduled-runs.js +163 -0
- package/dist/infra/swagger/swagger.d.ts +16 -0
- package/dist/infra/swagger/swagger.js +31 -0
- package/dist/infra/throttler/credential-throttler.d.ts +35 -0
- package/dist/infra/throttler/credential-throttler.js +77 -0
- package/dist/infra/throttler/named-throttlers.d.ts +31 -0
- package/dist/infra/throttler/named-throttlers.js +119 -0
- package/dist/infra/throttler/redis-throttler-storage.d.ts +38 -0
- package/dist/infra/throttler/redis-throttler-storage.js +130 -0
- package/dist/infra/throttler/throttler.guard.d.ts +23 -0
- package/dist/infra/throttler/throttler.guard.js +68 -0
- package/dist/infra/throttler/throttler.module.d.ts +15 -0
- package/dist/infra/throttler/throttler.module.js +53 -0
- package/dist/infra/tokens.d.ts +15 -0
- package/dist/infra/tokens.js +15 -0
- package/dist/infra/validation/create-zod-dto.d.ts +23 -0
- package/dist/infra/validation/create-zod-dto.js +35 -0
- package/dist/infra/validation/parse-with-zod.d.ts +7 -0
- package/dist/infra/validation/parse-with-zod.js +12 -0
- package/dist/infra/validation/validation.module.d.ts +3 -0
- package/dist/infra/validation/validation.module.js +16 -0
- package/dist/infra/validation/zod-params.d.ts +7 -0
- package/dist/infra/validation/zod-params.js +42 -0
- package/dist/infra/validation/zod-validation.pipe.d.ts +11 -0
- package/dist/infra/validation/zod-validation.pipe.js +31 -0
- package/dist/kernel.d.ts +9 -244
- package/dist/kernel.js +8 -1305
- package/dist/kernel.module.d.ts +17 -0
- package/dist/kernel.module.js +136 -0
- package/dist/lifecycle/kernel-lifecycle.d.ts +140 -0
- package/dist/lifecycle/kernel-lifecycle.js +456 -0
- package/dist/lifecycle/tokens.d.ts +3 -0
- package/dist/lifecycle/tokens.js +3 -0
- package/dist/log-context.d.ts +2 -0
- package/dist/log-context.js +4 -0
- package/dist/models/models.module.d.ts +3 -0
- package/dist/models/models.module.js +24 -0
- package/dist/models/prices.d.ts +8 -2
- package/dist/models/prices.js +65 -37
- package/dist/models/purposes.controller.d.ts +1 -1
- package/dist/models/purposes.controller.js +5 -6
- package/dist/models/purposes.d.ts +35 -13
- package/dist/models/purposes.js +101 -51
- package/dist/orgs/directory-sync.controller.d.ts +1 -1
- package/dist/orgs/directory-sync.controller.js +2 -2
- package/dist/orgs/directory-sync.d.ts +61 -31
- package/dist/orgs/directory-sync.js +212 -125
- package/dist/orgs/invitations.controller.d.ts +8 -8
- package/dist/orgs/invitations.controller.js +27 -26
- package/dist/orgs/invitations.service.d.ts +12 -9
- package/dist/orgs/invitations.service.js +130 -92
- package/dist/orgs/job-ids.d.ts +8 -0
- package/dist/orgs/job-ids.js +8 -0
- package/dist/orgs/members.service.d.ts +19 -12
- package/dist/orgs/members.service.js +161 -117
- package/dist/orgs/offboarding.d.ts +54 -57
- package/dist/orgs/offboarding.js +161 -71
- package/dist/orgs/org-lock.d.ts +28 -19
- package/dist/orgs/org-lock.js +81 -35
- package/dist/orgs/org.guard.d.ts +1 -1
- package/dist/orgs/org.guard.js +2 -2
- package/dist/orgs/orgs.controller.d.ts +13 -13
- package/dist/orgs/orgs.controller.js +29 -17
- package/dist/orgs/orgs.module.d.ts +6 -0
- package/dist/orgs/orgs.module.js +68 -0
- package/dist/orgs/orgs.service.d.ts +30 -19
- package/dist/orgs/orgs.service.js +139 -86
- package/dist/orgs/settings.controller.d.ts +1 -1
- package/dist/orgs/settings.controller.js +8 -6
- package/dist/orgs/settings.service.d.ts +16 -10
- package/dist/orgs/settings.service.js +77 -48
- package/dist/overrides.d.ts +56 -0
- package/dist/overrides.js +30 -0
- package/dist/roles/gateway-role.d.ts +43 -0
- package/dist/roles/gateway-role.js +98 -0
- package/dist/roles/gateway.module.d.ts +8 -0
- package/dist/roles/gateway.module.js +28 -0
- package/dist/roles/worker-role.d.ts +63 -0
- package/dist/roles/worker-role.js +144 -0
- package/dist/roles/worker.module.d.ts +14 -0
- package/dist/roles/worker.module.js +90 -0
- package/dist/runtime/abort.js +19 -2
- package/dist/runtime/checkpointer.d.ts +8 -3
- package/dist/runtime/checkpointer.js +87 -55
- package/dist/runtime/context/build.d.ts +6 -6
- package/dist/runtime/context/build.js +18 -8
- package/dist/runtime/context/claude-tools.d.ts +2 -1
- package/dist/runtime/context/claude-tools.js +9 -10
- package/dist/runtime/context/legacy-text.d.ts +22 -0
- package/dist/runtime/context/legacy-text.js +37 -0
- package/dist/runtime/context/skills.d.ts +29 -11
- package/dist/runtime/context/skills.js +37 -30
- package/dist/runtime/conversation-lock.d.ts +20 -11
- package/dist/runtime/conversation-lock.js +62 -72
- package/dist/runtime/hook-calls.d.ts +3 -3
- package/dist/runtime/hook-calls.js +1 -6
- package/dist/runtime/job-ids.d.ts +10 -0
- package/dist/runtime/job-ids.js +10 -0
- package/dist/runtime/langgraph-loop.js +1 -1
- package/dist/runtime/loop.d.ts +8 -1
- package/dist/runtime/loop.js +14 -0
- package/dist/runtime/maintenance-queue.d.ts +10 -0
- package/dist/runtime/maintenance-queue.js +10 -0
- package/dist/runtime/maintenance.d.ts +45 -74
- package/dist/runtime/maintenance.js +139 -137
- package/dist/runtime/model-call.d.ts +7 -4
- package/dist/runtime/model-call.js +25 -58
- package/dist/runtime/providers.d.ts +17 -6
- package/dist/runtime/providers.js +66 -25
- package/dist/runtime/quota.d.ts +17 -3
- package/dist/runtime/quota.js +27 -2
- package/dist/runtime/retired-schedulers.d.ts +7 -0
- package/dist/runtime/retired-schedulers.js +31 -0
- package/dist/runtime/run-control.d.ts +33 -0
- package/dist/runtime/run-control.js +77 -0
- package/dist/runtime/run-finish.d.ts +27 -18
- package/dist/runtime/run-finish.js +98 -51
- package/dist/runtime/run-jobs.d.ts +48 -0
- package/dist/runtime/run-jobs.js +95 -0
- package/dist/runtime/run-processors.d.ts +60 -0
- package/dist/runtime/run-processors.js +185 -0
- package/dist/runtime/run-queue.d.ts +32 -57
- package/dist/runtime/run-queue.js +291 -295
- package/dist/runtime/run-steps.d.ts +39 -0
- package/dist/runtime/run-steps.js +96 -0
- package/dist/runtime/run-worker.d.ts +122 -76
- package/dist/runtime/run-worker.js +343 -229
- package/dist/runtime/runtime.module.d.ts +10 -0
- package/dist/runtime/runtime.module.js +112 -0
- package/dist/runtime/step-log.d.ts +40 -0
- package/dist/runtime/step-log.js +94 -0
- package/dist/runtime/stream.controller.d.ts +5 -8
- package/dist/runtime/stream.controller.js +14 -12
- package/dist/runtime/stream.d.ts +24 -6
- package/dist/runtime/stream.js +78 -7
- package/dist/runtime/subagents/child.d.ts +3 -44
- package/dist/runtime/subagents/child.js +0 -79
- package/dist/runtime/subagents/definition.d.ts +5 -10
- package/dist/runtime/subagents/definition.js +13 -14
- package/dist/runtime/subagents/dispatch.d.ts +89 -8
- package/dist/runtime/subagents/dispatch.js +137 -142
- package/dist/runtime/subagents/limits.d.ts +9 -4
- package/dist/runtime/subagents/limits.js +4 -2
- package/dist/runtime/subagents/org-agents.d.ts +4 -4
- package/dist/runtime/subagents/org-agents.js +3 -2
- package/dist/runtime/subagents/progress.d.ts +2 -2
- package/dist/runtime/subagents/roster.d.ts +4 -4
- package/dist/runtime/subagents/roster.js +2 -2
- package/dist/runtime/subagents/skill-fork.d.ts +8 -9
- package/dist/runtime/subagents/skill-fork.js +17 -6
- package/dist/runtime/subagents/subagents.service.d.ts +40 -0
- package/dist/runtime/subagents/subagents.service.js +101 -0
- package/dist/runtime/usage-report.d.ts +94 -52
- package/dist/runtime/usage-report.js +200 -100
- package/dist/runtime/waits.d.ts +127 -59
- package/dist/runtime/waits.js +433 -210
- package/dist/sandbox/job-ids.d.ts +10 -0
- package/dist/sandbox/job-ids.js +10 -0
- package/dist/sandbox/jobs.d.ts +41 -0
- package/dist/sandbox/jobs.js +113 -0
- package/dist/sandbox/leases.d.ts +39 -31
- package/dist/sandbox/leases.js +117 -257
- package/dist/sandbox/providers.d.ts +19 -0
- package/dist/sandbox/providers.js +38 -0
- package/dist/sandbox/sandbox.module.d.ts +8 -0
- package/dist/sandbox/sandbox.module.js +30 -0
- package/dist/sandbox/sandbox.service.d.ts +24 -29
- package/dist/sandbox/sandbox.service.js +106 -75
- package/dist/skills/catalog.d.ts +37 -24
- package/dist/skills/catalog.js +100 -57
- package/dist/skills/changes.controller.d.ts +4 -4
- package/dist/skills/changes.controller.js +15 -9
- package/dist/skills/changes.service.d.ts +30 -20
- package/dist/skills/changes.service.js +425 -367
- package/dist/skills/invocable.controller.d.ts +1 -1
- package/dist/skills/invocable.controller.js +8 -5
- package/dist/skills/invocation-keys.d.ts +1 -1
- package/dist/skills/invocation-keys.js +1 -1
- package/dist/skills/invoke.d.ts +17 -16
- package/dist/skills/invoke.js +53 -21
- package/dist/skills/skills.controller.d.ts +1 -1
- package/dist/skills/skills.controller.js +11 -6
- package/dist/skills/skills.module.d.ts +6 -0
- package/dist/skills/skills.module.js +30 -0
- package/dist/skills/skills.service.d.ts +47 -30
- package/dist/skills/skills.service.js +221 -158
- package/dist/storage/job-ids.d.ts +6 -0
- package/dist/storage/job-ids.js +6 -0
- package/dist/storage/purge.d.ts +22 -7
- package/dist/storage/purge.js +55 -3
- package/dist/storage/storage.module.d.ts +6 -0
- package/dist/storage/storage.module.js +23 -0
- package/dist/storage/storage.service.d.ts +18 -4
- package/dist/storage/storage.service.js +44 -3
- package/dist/tools/approvals.controller.d.ts +1 -1
- package/dist/tools/approvals.controller.js +12 -8
- package/dist/tools/approvals.service.d.ts +33 -25
- package/dist/tools/approvals.service.js +343 -259
- package/dist/tools/breaker.d.ts +2 -2
- package/dist/tools/breaker.js +21 -3
- package/dist/tools/builtin-names.d.ts +73 -0
- package/dist/tools/builtin-names.js +116 -0
- package/dist/tools/builtins/agent.d.ts +7 -7
- package/dist/tools/builtins/agent.js +7 -11
- package/dist/tools/builtins/ask-user.d.ts +3 -3
- package/dist/tools/builtins/ask-user.js +3 -3
- package/dist/tools/builtins/builtin-tools.d.ts +21 -0
- package/dist/tools/builtins/builtin-tools.js +80 -0
- package/dist/tools/builtins/read-tool-output.d.ts +3 -3
- package/dist/tools/builtins/read-tool-output.js +3 -3
- package/dist/tools/builtins/sandbox/bash.d.ts +5 -5
- package/dist/tools/builtins/sandbox/bash.js +33 -30
- package/dist/tools/builtins/sandbox/common.d.ts +5 -4
- package/dist/tools/builtins/sandbox/common.js +2 -2
- package/dist/tools/builtins/sandbox/deliver.d.ts +1 -1
- package/dist/tools/builtins/sandbox/deliver.js +13 -13
- package/dist/tools/builtins/sandbox/edit.d.ts +1 -1
- package/dist/tools/builtins/sandbox/edit.js +42 -31
- package/dist/tools/builtins/sandbox/file-state.d.ts +34 -0
- package/dist/tools/builtins/sandbox/file-state.js +34 -0
- package/dist/tools/builtins/sandbox/glob-match.d.ts +1 -1
- package/dist/tools/builtins/sandbox/glob-match.js +1 -1
- package/dist/tools/builtins/sandbox/glob.d.ts +1 -1
- package/dist/tools/builtins/sandbox/glob.js +6 -6
- package/dist/tools/builtins/sandbox/grep.d.ts +7 -4
- package/dist/tools/builtins/sandbox/grep.js +149 -32
- package/dist/tools/builtins/sandbox/index.d.ts +1 -1
- package/dist/tools/builtins/sandbox/index.js +1 -1
- package/dist/tools/builtins/sandbox/read.d.ts +2 -2
- package/dist/tools/builtins/sandbox/read.js +22 -15
- package/dist/tools/builtins/sandbox/write.d.ts +1 -1
- package/dist/tools/builtins/sandbox/write.js +38 -34
- package/dist/tools/builtins/skill-load.d.ts +6 -6
- package/dist/tools/builtins/skill-load.js +33 -17
- package/dist/tools/builtins/skill-write.d.ts +4 -4
- package/dist/tools/builtins/skill-write.js +10 -10
- package/dist/tools/builtins/tool-search.d.ts +13 -9
- package/dist/tools/builtins/tool-search.js +25 -14
- package/dist/tools/canonical-json.d.ts +6 -0
- package/dist/tools/canonical-json.js +16 -0
- package/dist/tools/connector-content.controller.d.ts +1 -1
- package/dist/tools/connector-content.controller.js +11 -6
- package/dist/tools/connector-content.d.ts +12 -15
- package/dist/tools/connector-content.js +53 -18
- package/dist/tools/connectors.controller.d.ts +1 -1
- package/dist/tools/connectors.controller.js +21 -10
- package/dist/tools/connectors.service.d.ts +31 -13
- package/dist/tools/connectors.service.js +438 -348
- package/dist/tools/credentials.d.ts +17 -20
- package/dist/tools/credentials.js +55 -34
- package/dist/tools/display-names.d.ts +9 -0
- package/dist/tools/display-names.js +24 -0
- package/dist/tools/drift.d.ts +29 -41
- package/dist/tools/drift.js +116 -84
- package/dist/tools/elicitation.js +1 -1
- package/dist/tools/info.d.ts +32 -13
- package/dist/tools/info.js +88 -39
- package/dist/tools/job-ids.d.ts +13 -0
- package/dist/tools/job-ids.js +15 -0
- package/dist/tools/jobs.d.ts +24 -0
- package/dist/tools/jobs.js +69 -0
- package/dist/tools/legacy-data.d.ts +34 -0
- package/dist/tools/legacy-data.js +76 -0
- package/dist/tools/legacy-keys.d.ts +51 -0
- package/dist/tools/legacy-keys.js +115 -0
- package/dist/tools/naming.d.ts +1 -5
- package/dist/tools/naming.js +1 -7
- package/dist/tools/oauth/flow-paths.d.ts +16 -0
- package/dist/tools/oauth/flow-paths.js +38 -0
- package/dist/tools/oauth/flow.d.ts +30 -30
- package/dist/tools/oauth/flow.js +109 -81
- package/dist/tools/oauth/oauth.controller.d.ts +3 -3
- package/dist/tools/oauth/oauth.controller.js +12 -9
- package/dist/tools/oauth/tokens.d.ts +11 -3
- package/dist/tools/oauth/tokens.js +15 -14
- package/dist/tools/outputs.d.ts +13 -4
- package/dist/tools/outputs.js +48 -4
- package/dist/tools/pipeline.d.ts +72 -50
- package/dist/tools/pipeline.js +239 -100
- package/dist/tools/policy.d.ts +3 -16
- package/dist/tools/policy.js +13 -19
- package/dist/tools/questions.controller.d.ts +2 -2
- package/dist/tools/questions.controller.js +9 -6
- package/dist/tools/questions.service.d.ts +26 -25
- package/dist/tools/questions.service.js +201 -142
- package/dist/tools/registry.d.ts +43 -38
- package/dist/tools/registry.js +100 -72
- package/dist/tools/resources.d.ts +1 -1
- package/dist/tools/resources.js +1 -1
- package/dist/tools/specs.d.ts +5 -4
- package/dist/tools/specs.js +3 -1
- package/dist/tools/tools.module.d.ts +10 -0
- package/dist/tools/tools.module.js +91 -0
- package/dist/ui/call-extension.d.ts +16 -0
- package/dist/ui/call-extension.js +38 -0
- package/dist/ui/embed-token.d.ts +9 -5
- package/dist/ui/embed-token.js +34 -6
- package/dist/ui/ui-stream.d.ts +22 -17
- package/dist/ui/ui-stream.js +72 -12
- package/dist/ui/ui.module.d.ts +7 -0
- package/dist/ui/ui.module.js +28 -0
- package/dist/ui/views.controller.d.ts +14 -12
- package/dist/ui/views.controller.js +32 -25
- package/dist/ui/views.d.ts +9 -57
- package/dist/ui/views.js +43 -45
- package/package.json +10 -3
- package/src/migrations/0063_tool_keys_claude_code.sql +220 -0
- package/dist/http/health.controller.d.ts +0 -26
- package/dist/http/health.controller.js +0 -79
- package/dist/http/tokens.d.ts +0 -131
- package/dist/http/tokens.js +0 -131
- package/dist/http/zod.pipe.d.ts +0 -8
- package/dist/http/zod.pipe.js +0 -14
- package/dist/identity/rate-limit.d.ts +0 -55
- package/dist/identity/rate-limit.js +0 -121
- package/dist/sandbox/lifecycle.d.ts +0 -21
- package/dist/sandbox/lifecycle.js +0 -68
- package/dist/tools/builtins/sandbox/names.d.ts +0 -7
- package/dist/tools/builtins/sandbox/names.js +0 -20
- /package/dist/http/{gateway.module.d.ts → gateway-routes.d.ts} +0 -0
- /package/dist/http/{gateway.module.js → gateway-routes.js} +0 -0
package/dist/extensions/cli.js
CHANGED
|
@@ -1,50 +1,47 @@
|
|
|
1
1
|
import { SDK_VERSION } from "@capybara-hq/plugin-sdk";
|
|
2
|
-
import {
|
|
3
|
-
import {
|
|
4
|
-
import {
|
|
5
|
-
import { kernelDb } from "../db/kernel-schema.js";
|
|
6
|
-
import { createDb } from "../db/pool.js";
|
|
2
|
+
import { openKernelCli } from "../infra/cli/kernel-cli.module.js";
|
|
3
|
+
import { KernelDb } from "../infra/database/kernel-db.js";
|
|
4
|
+
import { KERNEL_BUS, KEYRING } from "../infra/tokens.js";
|
|
7
5
|
import { ExtensionAdminOps } from "./admin-ops.js";
|
|
8
6
|
import { ExtensionAdmin } from "./admin-view.js";
|
|
9
7
|
import { ExtensionApprovals } from "./approvals.js";
|
|
10
8
|
import { ExtensionBlobs } from "./blobs.js";
|
|
11
|
-
import {
|
|
9
|
+
import { BootstrapService } from "./bootstrap.js";
|
|
10
|
+
import { toIssues } from "./config-issues.js";
|
|
11
|
+
import { mergeDeploymentConfig, readStoredDeploymentConfig, schemaFields, secretPathsOf, } from "./deployment-config-store.js";
|
|
12
|
+
import { ExtensionsModule } from "./extensions.module.js";
|
|
12
13
|
import { ExtensionHost } from "./host.js";
|
|
13
14
|
import { ExtensionInstalls } from "./installs.js";
|
|
14
|
-
import { PLUGINS_CHANGED_TOPIC } from "./lifecycle.js";
|
|
15
|
-
import { toIssues } from "./org-config.js";
|
|
15
|
+
import { PLUGINS_CHANGED_TOPIC } from "./lifecycle-topics.js";
|
|
16
16
|
import { ExtensionPackageError, extensionPackageApiError, permissionSetOfPackage, readExtensionPackage, } from "./package.js";
|
|
17
|
-
/** CLI 发布 bus 消息时连 Redis 的时限(连不上只告警)。 */
|
|
18
|
-
const CLI_REDIS_CONNECT_TIMEOUT_MS = 3_000;
|
|
19
17
|
/**
|
|
20
|
-
* The CLI's extension management context (C18, F-Q):
|
|
21
|
-
*
|
|
22
|
-
*
|
|
23
|
-
*
|
|
24
|
-
*
|
|
25
|
-
*
|
|
26
|
-
*
|
|
18
|
+
* The CLI's extension management context (C18, F-Q): a Nest application context with
|
|
19
|
+
* the extensions module over the database and a lazy Redis connection used only for publishing
|
|
20
|
+
* and the bootstrap lock. It loads no extension and runs no extension's `setup` (a catalog import
|
|
21
|
+
* sets up the declared object-store extension itself, see `openCatalogCli`). Packages the CLI
|
|
22
|
+
* imports are always stored in PG (`blob_store = 'pg'`); replicas read by `blob_store`. Install /
|
|
23
|
+
* enable / disable / uninstall share {@link ExtensionAdminOps} with the admin console (actor null,
|
|
24
|
+
* audits without an actor); after writing PG it publishes `kernel.plugins.changed` and running
|
|
25
|
+
* replicas reconcile; a failed publish only warns (the periodic reconcile catches up).
|
|
27
26
|
*/
|
|
28
27
|
export async function openExtensionCli(config, log, opts = {}) {
|
|
29
28
|
const inspected = await ExtensionHost.inspect(config.extensions, {
|
|
30
29
|
...(opts.resolveFrom !== undefined && { resolveFrom: opts.resolveFrom }),
|
|
31
30
|
});
|
|
32
|
-
const
|
|
33
|
-
|
|
31
|
+
const app = await openKernelCli(config, {
|
|
32
|
+
logger: log,
|
|
33
|
+
...(opts.resolveFrom !== undefined && { resolveFrom: opts.resolveFrom }),
|
|
34
|
+
modules: [ExtensionsModule, ...(opts.modules ?? [])],
|
|
34
35
|
});
|
|
35
|
-
const
|
|
36
|
-
const
|
|
37
|
-
const
|
|
38
|
-
const blobs =
|
|
39
|
-
get: async (sha256) => local.get(sha256) ?? stored.get(sha256),
|
|
40
|
-
};
|
|
41
|
-
const declared = new Map(inspected.map((p) => [p.manifest.name, p.source]));
|
|
36
|
+
const close = () => app.close().catch(() => { });
|
|
37
|
+
const db = app.get(KernelDb);
|
|
38
|
+
const keyring = app.get(KEYRING);
|
|
39
|
+
const blobs = app.get(ExtensionBlobs);
|
|
42
40
|
// 部署配置 = 启动配置补上后台保存在 PG 的字段(C10);不合法的插件内核不加载(待配置)
|
|
43
|
-
const keyring = createKeyring(Buffer.from(config.masterKey, "base64"), config.masterKeyPrevious.map((k) => Buffer.from(k, "base64")));
|
|
44
41
|
const deploymentConfigOf = async (name, schema) => {
|
|
45
42
|
if (!schema)
|
|
46
43
|
return { ok: true, value: {} };
|
|
47
|
-
const stored = await readStoredDeploymentConfig(db, keyring, name, {
|
|
44
|
+
const stored = await readStoredDeploymentConfig(db.db, keyring, name, {
|
|
48
45
|
secretPaths: secretPathsOf(schemaFields(schema)),
|
|
49
46
|
});
|
|
50
47
|
const r = schema.safeParse(mergeDeploymentConfig(stored, config.extensionConfig[name], schemaFields(schema).map((f) => f.path)));
|
|
@@ -65,77 +62,28 @@ export async function openExtensionCli(config, log, opts = {}) {
|
|
|
65
62
|
}
|
|
66
63
|
}
|
|
67
64
|
catch (e) {
|
|
68
|
-
await
|
|
65
|
+
await close();
|
|
69
66
|
throw e;
|
|
70
67
|
}
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
configValid: !configIssues.has(p.manifest.name),
|
|
78
|
-
}));
|
|
79
|
-
let redis;
|
|
80
|
-
const publisher = {
|
|
81
|
-
async publish(topic, payload) {
|
|
82
|
-
if (!redis) {
|
|
83
|
-
redis = new Redis(config.redis.url, {
|
|
84
|
-
lazyConnect: true,
|
|
85
|
-
enableOfflineQueue: false,
|
|
86
|
-
maxRetriesPerRequest: 0,
|
|
87
|
-
connectTimeout: CLI_REDIS_CONNECT_TIMEOUT_MS,
|
|
88
|
-
retryStrategy: () => null,
|
|
89
|
-
});
|
|
90
|
-
redis.on("error", () => { });
|
|
91
|
-
}
|
|
92
|
-
if (redis.status !== "ready")
|
|
93
|
-
await redis.connect();
|
|
94
|
-
// 与内核 bus 同一个频道命名(cap:kernel:<topic>);CLI 只发布,不订阅
|
|
95
|
-
const bus = createBus(redis, {
|
|
96
|
-
subscribe: () => Promise.reject(new Error("the CLI does not subscribe")),
|
|
97
|
-
}, "kernel", log);
|
|
98
|
-
await bus.publish(topic, payload);
|
|
99
|
-
},
|
|
100
|
-
};
|
|
101
|
-
const installs = new ExtensionInstalls({
|
|
102
|
-
db,
|
|
103
|
-
blobs: stored,
|
|
104
|
-
config: () => config,
|
|
105
|
-
declared: () => declared,
|
|
106
|
-
});
|
|
107
|
-
const admin = new ExtensionAdmin({
|
|
108
|
-
db,
|
|
109
|
-
blobs,
|
|
110
|
-
installs,
|
|
111
|
-
config: () => config,
|
|
112
|
-
host: { declaredPlugins: () => declaredInfo },
|
|
113
|
-
bus: publisher,
|
|
114
|
-
log,
|
|
115
|
-
});
|
|
116
|
-
const ops = new ExtensionAdminOps({
|
|
117
|
-
db,
|
|
118
|
-
view: (name) => admin.get(name, { allowUnreadable: true }),
|
|
119
|
-
declared: () => declared,
|
|
120
|
-
blobs,
|
|
121
|
-
config: () => config,
|
|
122
|
-
bus: publisher,
|
|
123
|
-
log,
|
|
124
|
-
});
|
|
68
|
+
// The admin view, the operations and the bootstrap step see the declared extensions as a
|
|
69
|
+
// replica would (the CLI checked their deployment config above)
|
|
70
|
+
app
|
|
71
|
+
.get(ExtensionHost)
|
|
72
|
+
.noteInspected(inspected, new Map(inspected.map((p) => [p.manifest.name, !configIssues.has(p.manifest.name)])));
|
|
73
|
+
const bus = app.get(KERNEL_BUS);
|
|
125
74
|
return {
|
|
126
75
|
config,
|
|
127
|
-
|
|
76
|
+
app,
|
|
128
77
|
inspected,
|
|
129
78
|
configIssues,
|
|
130
79
|
deploymentConfigs,
|
|
131
80
|
deploymentConfigOf,
|
|
132
|
-
installs,
|
|
133
|
-
admin,
|
|
134
|
-
ops,
|
|
135
|
-
approvals:
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
},
|
|
81
|
+
installs: app.get(ExtensionInstalls),
|
|
82
|
+
admin: app.get(ExtensionAdmin),
|
|
83
|
+
ops: app.get(ExtensionAdminOps),
|
|
84
|
+
approvals: app.get(ExtensionApprovals),
|
|
85
|
+
bootstrap: app.get(BootstrapService),
|
|
86
|
+
remember: (sha256, bytes) => blobs.remember(sha256, bytes),
|
|
139
87
|
readPackage: (sha256) => blobs.get(sha256),
|
|
140
88
|
async packageSet(sha256) {
|
|
141
89
|
// a stored package in the pre-0.1.0 format -> extension.legacy_format
|
|
@@ -149,7 +97,7 @@ export async function openExtensionCli(config, log, opts = {}) {
|
|
|
149
97
|
},
|
|
150
98
|
async publishChanged(plugin) {
|
|
151
99
|
try {
|
|
152
|
-
await
|
|
100
|
+
await bus.publish(PLUGINS_CHANGED_TOPIC, { plugin });
|
|
153
101
|
return true;
|
|
154
102
|
}
|
|
155
103
|
catch (err) {
|
|
@@ -157,9 +105,6 @@ export async function openExtensionCli(config, log, opts = {}) {
|
|
|
157
105
|
return false;
|
|
158
106
|
}
|
|
159
107
|
},
|
|
160
|
-
|
|
161
|
-
redis?.disconnect();
|
|
162
|
-
await raw.destroy().catch(() => { });
|
|
163
|
-
},
|
|
108
|
+
close,
|
|
164
109
|
};
|
|
165
110
|
}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
/** 由 issue 类型与结构字段生成说明;不用 zod 的 message(自定义消息可能拼入输入值)。 */
|
|
2
|
+
function issueMessage(i) {
|
|
3
|
+
switch (i.code) {
|
|
4
|
+
case "invalid_type":
|
|
5
|
+
return `expected ${i.expected}`;
|
|
6
|
+
case "too_small":
|
|
7
|
+
return `too small (minimum ${String(i.minimum)})`;
|
|
8
|
+
case "too_big":
|
|
9
|
+
return `too big (maximum ${String(i.maximum)})`;
|
|
10
|
+
case "invalid_format":
|
|
11
|
+
return `invalid ${i.format}`;
|
|
12
|
+
case "not_multiple_of":
|
|
13
|
+
return `not a multiple of ${String(i.divisor)}`;
|
|
14
|
+
case "unrecognized_keys":
|
|
15
|
+
return "unrecognized keys";
|
|
16
|
+
case "invalid_union":
|
|
17
|
+
return "no union member matched";
|
|
18
|
+
case "invalid_key":
|
|
19
|
+
return "invalid key";
|
|
20
|
+
case "invalid_element":
|
|
21
|
+
return "invalid element";
|
|
22
|
+
default:
|
|
23
|
+
return "invalid value";
|
|
24
|
+
}
|
|
25
|
+
}
|
|
26
|
+
export function toIssues(error) {
|
|
27
|
+
return error.issues.map((i) => ({
|
|
28
|
+
path: i.path.map(String).join("."),
|
|
29
|
+
message: issueMessage(i),
|
|
30
|
+
}));
|
|
31
|
+
}
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
import type { core } from "zod";
|
|
2
|
+
import { type Keyring } from "../ctx/secrets.js";
|
|
3
|
+
import type { KernelSchemaDb } from "../db/kernel-schema.js";
|
|
4
|
+
type Obj = Record<string, unknown>;
|
|
5
|
+
/**
|
|
6
|
+
* The stored half of the deployment-level extension config (C10): where PG keeps it, how it is read
|
|
7
|
+
* back and merged under the startup config. Pure helpers shared by the extension installs (the
|
|
8
|
+
* desired state the host loads with), the admin service and the CLI.
|
|
9
|
+
*/
|
|
10
|
+
/** 部署级插件配置的密钥存在 `capybara.secrets` 的这个 org_id 下(不是真实组织;namespace `kernel`)。 */
|
|
11
|
+
export declare const DEPLOYMENT_SECRETS_ORG = "_deployment";
|
|
12
|
+
/** 内核自己的 secrets 命名空间(`kernel` 是保留插件名)。 */
|
|
13
|
+
export declare const SECRETS_NAMESPACE = "kernel";
|
|
14
|
+
export declare const secretKey: (plugin: string, path: string) => string;
|
|
15
|
+
/** 一个插件的部署级配置描述:真实模块的 zod schema(有的话)与字段清单。 */
|
|
16
|
+
export interface DeploymentSchemaInfo {
|
|
17
|
+
version: string;
|
|
18
|
+
schema?: core.$ZodType | undefined;
|
|
19
|
+
fields: {
|
|
20
|
+
path: string;
|
|
21
|
+
secret: boolean;
|
|
22
|
+
hot: boolean;
|
|
23
|
+
}[];
|
|
24
|
+
}
|
|
25
|
+
/** 由 zod schema 得出字段清单(`configFields`:对象路径上的叶子,secret 向下继承)。 */
|
|
26
|
+
export declare function schemaFields(schema: core.$ZodType | undefined): DeploymentSchemaInfo["fields"];
|
|
27
|
+
export declare const isObj: (v: unknown) => v is Obj;
|
|
28
|
+
/** 按点路径设值,缺失的中间对象自动创建;中间节点不是对象时放弃。 */
|
|
29
|
+
export declare function setDeep(obj: Obj, path: string, value: unknown): void;
|
|
30
|
+
/** 按点路径删除键;删完变空的中间对象一并删掉。 */
|
|
31
|
+
export declare function deleteDeep(obj: Obj, path: string): void;
|
|
32
|
+
/**
|
|
33
|
+
* 合并一个插件的部署配置(C10 的优先级:环境变量 > 文件 / Nacos > PG > schema 默认值):以启动配置
|
|
34
|
+
* (`fileValue`,已含环境变量)为底,逐字段补上 PG 里保存、而启动配置没有覆盖的值。按字段合并:启动配置给了的字段
|
|
35
|
+
* 整个以它为准(不与 PG 的值深合并)。`fields` 为字段点路径(没有 schema 时用 PG 值的叶子路径)。默认值由校验补上。
|
|
36
|
+
*/
|
|
37
|
+
export declare function mergeDeploymentConfig(stored: Obj, fileValue: unknown, fields?: string[]): unknown;
|
|
38
|
+
/**
|
|
39
|
+
* PG 里一个插件保存的部署配置(非密钥字段 + 解密的密钥字段,按点路径放回对象)。只并入 `secretPaths`(当前
|
|
40
|
+
* schema 里是密钥的字段)的密钥:旧版本留下、现在已不是密钥或已删掉的字段不解密、不并入(否则会被当成明文回显
|
|
41
|
+
* 或保存)。
|
|
42
|
+
*/
|
|
43
|
+
export declare function readStoredDeploymentConfig(db: KernelSchemaDb, keyring: Keyring, plugin: string, opts: {
|
|
44
|
+
forUpdate?: boolean;
|
|
45
|
+
secretPaths: readonly string[];
|
|
46
|
+
}): Promise<Obj>;
|
|
47
|
+
/** 字段清单里的密钥字段路径。 */
|
|
48
|
+
export declare const secretPathsOf: (fields: DeploymentSchemaInfo["fields"]) => string[];
|
|
49
|
+
export {};
|
|
@@ -0,0 +1,133 @@
|
|
|
1
|
+
import { configFields, getPath } from "../config/fields.js";
|
|
2
|
+
import { createSecrets } from "../ctx/secrets.js";
|
|
3
|
+
/**
|
|
4
|
+
* The stored half of the deployment-level extension config (C10): where PG keeps it, how it is read
|
|
5
|
+
* back and merged under the startup config. Pure helpers shared by the extension installs (the
|
|
6
|
+
* desired state the host loads with), the admin service and the CLI.
|
|
7
|
+
*/
|
|
8
|
+
/** 部署级插件配置的密钥存在 `capybara.secrets` 的这个 org_id 下(不是真实组织;namespace `kernel`)。 */
|
|
9
|
+
export const DEPLOYMENT_SECRETS_ORG = "_deployment";
|
|
10
|
+
/** 内核自己的 secrets 命名空间(`kernel` 是保留插件名)。 */
|
|
11
|
+
export const SECRETS_NAMESPACE = "kernel";
|
|
12
|
+
const SECRET_KEY_PREFIX = "plugin-deployment-config:";
|
|
13
|
+
export const secretKey = (plugin, path) => `${SECRET_KEY_PREFIX}${plugin}:${path}`;
|
|
14
|
+
/** 由 zod schema 得出字段清单(`configFields`:对象路径上的叶子,secret 向下继承)。 */
|
|
15
|
+
export function schemaFields(schema) {
|
|
16
|
+
if (!schema)
|
|
17
|
+
return [];
|
|
18
|
+
return configFields(schema).map((f) => ({
|
|
19
|
+
path: f.path,
|
|
20
|
+
secret: f.meta?.secret === true,
|
|
21
|
+
hot: f.meta?.hot === true,
|
|
22
|
+
}));
|
|
23
|
+
}
|
|
24
|
+
export const isObj = (v) => typeof v === "object" && v !== null && !Array.isArray(v);
|
|
25
|
+
/** 按点路径设值,缺失的中间对象自动创建;中间节点不是对象时放弃。 */
|
|
26
|
+
export function setDeep(obj, path, value) {
|
|
27
|
+
const segs = path.split(".");
|
|
28
|
+
let node = obj;
|
|
29
|
+
for (const seg of segs.slice(0, -1)) {
|
|
30
|
+
const next = node[seg];
|
|
31
|
+
if (next === undefined)
|
|
32
|
+
node[seg] = {};
|
|
33
|
+
else if (!isObj(next))
|
|
34
|
+
return;
|
|
35
|
+
node = node[seg];
|
|
36
|
+
}
|
|
37
|
+
node[segs[segs.length - 1]] = value;
|
|
38
|
+
}
|
|
39
|
+
/** 按点路径删除键;删完变空的中间对象一并删掉。 */
|
|
40
|
+
export function deleteDeep(obj, path) {
|
|
41
|
+
const segs = path.split(".");
|
|
42
|
+
const chain = [obj];
|
|
43
|
+
let node = obj;
|
|
44
|
+
for (const seg of segs.slice(0, -1)) {
|
|
45
|
+
if (!isObj(node))
|
|
46
|
+
return;
|
|
47
|
+
node = node[seg];
|
|
48
|
+
if (!isObj(node))
|
|
49
|
+
return;
|
|
50
|
+
chain.push(node);
|
|
51
|
+
}
|
|
52
|
+
delete chain[chain.length - 1][segs[segs.length - 1]];
|
|
53
|
+
for (let i = chain.length - 1; i > 0; i--) {
|
|
54
|
+
if (Object.keys(chain[i]).length > 0)
|
|
55
|
+
break;
|
|
56
|
+
delete chain[i - 1][segs[i - 1]];
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
/** 叶子点路径(对象递归;其余都是叶子)。 */
|
|
60
|
+
function leafPaths(value, prefix = "", out = []) {
|
|
61
|
+
if (isObj(value)) {
|
|
62
|
+
for (const [k, v] of Object.entries(value))
|
|
63
|
+
leafPaths(v, prefix ? `${prefix}.${k}` : k, out);
|
|
64
|
+
}
|
|
65
|
+
else if (prefix !== "")
|
|
66
|
+
out.push(prefix);
|
|
67
|
+
return out;
|
|
68
|
+
}
|
|
69
|
+
/** 启动配置(文件 / 环境变量合并后的值)是否覆盖了这个字段:给了它、它下面的值,或在祖先上给了非对象值。 */
|
|
70
|
+
function coveredBy(fileValue, path) {
|
|
71
|
+
let node = fileValue;
|
|
72
|
+
for (const seg of path.split(".")) {
|
|
73
|
+
if (node === undefined)
|
|
74
|
+
return false;
|
|
75
|
+
if (!isObj(node))
|
|
76
|
+
return true;
|
|
77
|
+
node = node[seg];
|
|
78
|
+
}
|
|
79
|
+
return node !== undefined;
|
|
80
|
+
}
|
|
81
|
+
/**
|
|
82
|
+
* 合并一个插件的部署配置(C10 的优先级:环境变量 > 文件 / Nacos > PG > schema 默认值):以启动配置
|
|
83
|
+
* (`fileValue`,已含环境变量)为底,逐字段补上 PG 里保存、而启动配置没有覆盖的值。按字段合并:启动配置给了的字段
|
|
84
|
+
* 整个以它为准(不与 PG 的值深合并)。`fields` 为字段点路径(没有 schema 时用 PG 值的叶子路径)。默认值由校验补上。
|
|
85
|
+
*/
|
|
86
|
+
export function mergeDeploymentConfig(stored, fileValue, fields = leafPaths(stored)) {
|
|
87
|
+
if (fileValue !== undefined && !isObj(fileValue))
|
|
88
|
+
return fileValue;
|
|
89
|
+
const out = structuredClone(fileValue ?? {});
|
|
90
|
+
for (const path of fields) {
|
|
91
|
+
const v = getPath(stored, path);
|
|
92
|
+
if (v === undefined || coveredBy(fileValue, path))
|
|
93
|
+
continue;
|
|
94
|
+
setDeep(out, path, structuredClone(v));
|
|
95
|
+
}
|
|
96
|
+
return out;
|
|
97
|
+
}
|
|
98
|
+
/**
|
|
99
|
+
* PG 里一个插件保存的部署配置(非密钥字段 + 解密的密钥字段,按点路径放回对象)。只并入 `secretPaths`(当前
|
|
100
|
+
* schema 里是密钥的字段)的密钥:旧版本留下、现在已不是密钥或已删掉的字段不解密、不并入(否则会被当成明文回显
|
|
101
|
+
* 或保存)。
|
|
102
|
+
*/
|
|
103
|
+
export async function readStoredDeploymentConfig(db, keyring, plugin, opts) {
|
|
104
|
+
let q = db
|
|
105
|
+
.selectFrom("extension_deployment_configs")
|
|
106
|
+
.select("config")
|
|
107
|
+
.where("plugin", "=", plugin);
|
|
108
|
+
if (opts.forUpdate)
|
|
109
|
+
q = q.forUpdate();
|
|
110
|
+
const row = await q.executeTakeFirst();
|
|
111
|
+
const out = structuredClone(row?.config ?? {});
|
|
112
|
+
const prefix = secretKey(plugin, "");
|
|
113
|
+
const wanted = new Set(opts.secretPaths);
|
|
114
|
+
if (wanted.size === 0)
|
|
115
|
+
return out;
|
|
116
|
+
const keys = await db
|
|
117
|
+
.selectFrom("secrets")
|
|
118
|
+
.select("key")
|
|
119
|
+
.where("namespace", "=", SECRETS_NAMESPACE)
|
|
120
|
+
.where("org_id", "=", DEPLOYMENT_SECRETS_ORG)
|
|
121
|
+
.execute();
|
|
122
|
+
const secrets = createSecrets(db, keyring, SECRETS_NAMESPACE);
|
|
123
|
+
for (const { key } of keys) {
|
|
124
|
+
if (!key.startsWith(prefix) || !wanted.has(key.slice(prefix.length)))
|
|
125
|
+
continue;
|
|
126
|
+
const v = await secrets.get(DEPLOYMENT_SECRETS_ORG, key);
|
|
127
|
+
if (v !== null)
|
|
128
|
+
setDeep(out, key.slice(prefix.length), JSON.parse(v));
|
|
129
|
+
}
|
|
130
|
+
return out;
|
|
131
|
+
}
|
|
132
|
+
/** 字段清单里的密钥字段路径。 */
|
|
133
|
+
export const secretPathsOf = (fields) => fields.filter((f) => f.secret).map((f) => f.path);
|
|
@@ -1,21 +1,25 @@
|
|
|
1
|
-
import { type Transaction } from "kysely";
|
|
2
1
|
import type { core } from "zod";
|
|
2
|
+
import type { KernelAppOptions } from "../app.js";
|
|
3
3
|
import { type ConfigSourceKind } from "../config/sources.js";
|
|
4
4
|
import { type Keyring } from "../ctx/secrets.js";
|
|
5
|
-
import type {
|
|
5
|
+
import type { KernelSchemaDb } from "../db/kernel-schema.js";
|
|
6
|
+
import { EnterpriseAdminLock } from "../identity/enterprise-admin.js";
|
|
7
|
+
import { KernelConfigService } from "../infra/config/kernel-config.service.js";
|
|
8
|
+
import { KernelDb } from "../infra/database/kernel-db.js";
|
|
9
|
+
import { TransactionHost } from "../infra/database/transaction-host.js";
|
|
10
|
+
import type { KernelLogger } from "../log.js";
|
|
11
|
+
import type { PublishBus } from "./admin-view.js";
|
|
12
|
+
import { type ConfigIssue } from "./config-issues.js";
|
|
6
13
|
import { type JsonSchema } from "./config-json-schema.js";
|
|
7
|
-
import { type
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
* 各副本重读并校验——只改了 hot 字段就地替换,改了非 hot 字段重新加载实例,不合法保持当前值并告警;
|
|
15
|
-
* 插件此刻待配置时,下一次 reconcile 加载它。
|
|
16
|
-
*/
|
|
17
|
-
export declare const PLUGIN_DEPLOYMENT_CONFIG_TOPIC = "plugin-deployment-config";
|
|
14
|
+
import { DEPLOYMENT_SECRETS_ORG, type DeploymentSchemaInfo, mergeDeploymentConfig, readStoredDeploymentConfig, schemaFields, secretPathsOf } from "./deployment-config-store.js";
|
|
15
|
+
import { ExtensionHost } from "./host.js";
|
|
16
|
+
import { ExtensionInstalls } from "./installs.js";
|
|
17
|
+
import { ExtensionLifecycle } from "./lifecycle.js";
|
|
18
|
+
import { PLUGIN_DEPLOYMENT_CONFIG_TOPIC } from "./lifecycle-topics.js";
|
|
19
|
+
import { PluginDeploymentConfigLock } from "./locks.js";
|
|
20
|
+
export { DEPLOYMENT_SECRETS_ORG, type DeploymentSchemaInfo, mergeDeploymentConfig, readStoredDeploymentConfig, schemaFields, secretPathsOf, };
|
|
18
21
|
export type { ConfigIssue };
|
|
22
|
+
export { PLUGIN_DEPLOYMENT_CONFIG_TOPIC };
|
|
19
23
|
/** 后台一个部署配置字段:来源、是否只读;非密钥字段给出生效值,密钥字段只给 `set`。 */
|
|
20
24
|
export interface DeploymentConfigField {
|
|
21
25
|
path: string;
|
|
@@ -50,57 +54,6 @@ export interface DeploymentConfigView {
|
|
|
50
54
|
/** 校验失败的原因(只有路径与说明,不含值)。 */
|
|
51
55
|
issues: ConfigIssue[];
|
|
52
56
|
}
|
|
53
|
-
/** 一个插件的部署级配置描述:真实模块的 zod schema(有的话)与字段清单。 */
|
|
54
|
-
export interface DeploymentSchemaInfo {
|
|
55
|
-
version: string;
|
|
56
|
-
schema?: core.$ZodType | undefined;
|
|
57
|
-
fields: {
|
|
58
|
-
path: string;
|
|
59
|
-
secret: boolean;
|
|
60
|
-
hot: boolean;
|
|
61
|
-
}[];
|
|
62
|
-
}
|
|
63
|
-
/** 由 zod schema 得出字段清单(`configFields`:对象路径上的叶子,secret 向下继承)。 */
|
|
64
|
-
export declare function schemaFields(schema: core.$ZodType | undefined): DeploymentSchemaInfo["fields"];
|
|
65
|
-
/**
|
|
66
|
-
* 合并一个插件的部署配置(C10 的优先级:环境变量 > 文件 / Nacos > PG > schema 默认值):以启动配置
|
|
67
|
-
* (`fileValue`,已含环境变量)为底,逐字段补上 PG 里保存、而启动配置没有覆盖的值。按字段合并:启动配置给了的字段
|
|
68
|
-
* 整个以它为准(不与 PG 的值深合并)。`fields` 为字段点路径(没有 schema 时用 PG 值的叶子路径)。默认值由校验补上。
|
|
69
|
-
*/
|
|
70
|
-
export declare function mergeDeploymentConfig(stored: Obj, fileValue: unknown, fields?: string[]): unknown;
|
|
71
|
-
/**
|
|
72
|
-
* PG 里一个插件保存的部署配置(非密钥字段 + 解密的密钥字段,按点路径放回对象)。只并入 `secretPaths`(当前
|
|
73
|
-
* schema 里是密钥的字段)的密钥:旧版本留下、现在已不是密钥或已删掉的字段不解密、不并入(否则会被当成明文回显
|
|
74
|
-
* 或保存)。
|
|
75
|
-
*/
|
|
76
|
-
export declare function readStoredDeploymentConfig(db: KernelDb | Trx, keyring: Keyring, plugin: string, opts: {
|
|
77
|
-
forUpdate?: boolean;
|
|
78
|
-
secretPaths: readonly string[];
|
|
79
|
-
}): Promise<Obj>;
|
|
80
|
-
/** 字段清单里的密钥字段路径。 */
|
|
81
|
-
export declare const secretPathsOf: (fields: DeploymentSchemaInfo["fields"]) => string[];
|
|
82
|
-
export interface ExtensionDeploymentConfigDeps {
|
|
83
|
-
db: KernelDb;
|
|
84
|
-
keyring: Keyring;
|
|
85
|
-
/** 启动配置里的 `extensionConfig`(文件 / Nacos 与环境变量合并后)。 */
|
|
86
|
-
fileConfig: () => Record<string, unknown>;
|
|
87
|
-
/** 启动配置各字段的来源(见 `extensionConfigSources`);这些字段只读。 */
|
|
88
|
-
sources: Record<string, Record<string, ConfigSourceKind>>;
|
|
89
|
-
/** The extension's deployment config description; undefined when the deployment does not know the extension (`extension.not_found`). */
|
|
90
|
-
schemaOf: (plugin: string) => Promise<DeploymentSchemaInfo | undefined>;
|
|
91
|
-
/** 保存提交后发布 {@link PLUGIN_DEPLOYMENT_CONFIG_TOPIC};失败只告警(各副本的周期 reconcile 会重读生效插件的部署配置兜底)。 */
|
|
92
|
-
bus?: {
|
|
93
|
-
publish(topic: string, payload: unknown): Promise<void>;
|
|
94
|
-
};
|
|
95
|
-
/** 本副本立即应用(不等 bus 消息回到自己;其他副本经 bus)。失败只记 error。 */
|
|
96
|
-
applyLocal?: (plugin: string) => Promise<unknown>;
|
|
97
|
-
/** 经手的密钥值(提交后),内核传 `log.addSecrets`。 */
|
|
98
|
-
onSecrets?: (values: string[]) => void;
|
|
99
|
-
log: {
|
|
100
|
-
warn(msg: string, fields?: Record<string, unknown>): void;
|
|
101
|
-
error(msg: string, fields?: Record<string, unknown>): void;
|
|
102
|
-
};
|
|
103
|
-
}
|
|
104
57
|
/**
|
|
105
58
|
* Deployment-level extension config (D8 / C10): non-secret fields are stored in
|
|
106
59
|
* `extension_deployment_configs`, each secret field encrypted in `capybara.secrets` (namespace
|
|
@@ -110,12 +63,49 @@ export interface ExtensionDeploymentConfigDeps {
|
|
|
110
63
|
* Secret values are never echoed: responses only say "set", audits only record which paths changed.
|
|
111
64
|
*/
|
|
112
65
|
export declare class ExtensionDeploymentConfigService {
|
|
113
|
-
private readonly
|
|
114
|
-
|
|
66
|
+
private readonly kdb;
|
|
67
|
+
readonly txHost: TransactionHost;
|
|
68
|
+
/** The enterprise admin lock (identity/enterprise-admin.ts): joins the transaction. */
|
|
69
|
+
private readonly adminLock;
|
|
70
|
+
private readonly configLock;
|
|
71
|
+
private readonly keyring;
|
|
72
|
+
private readonly config;
|
|
73
|
+
/** This replica's extension schemas (loaded, config-declared or prepared install records). */
|
|
74
|
+
private readonly host;
|
|
75
|
+
/** The effective (stored plus startup) deployment config. */
|
|
76
|
+
private readonly installs;
|
|
77
|
+
/** Applies a saved config on this replica at once (other replicas through the bus). */
|
|
78
|
+
private readonly lifecycle;
|
|
79
|
+
/** Publishes {@link PLUGIN_DEPLOYMENT_CONFIG_TOPIC} after a save (a failure only warns). */
|
|
80
|
+
private readonly bus;
|
|
81
|
+
private readonly log;
|
|
82
|
+
/** Where each startup-config field comes from (see `extensionConfigSources`); those fields are read-only. */
|
|
83
|
+
private readonly sources;
|
|
84
|
+
constructor(kdb: KernelDb, txHost: TransactionHost,
|
|
85
|
+
/** The enterprise admin lock (identity/enterprise-admin.ts): joins the transaction. */
|
|
86
|
+
adminLock: EnterpriseAdminLock, configLock: PluginDeploymentConfigLock, keyring: Keyring, config: KernelConfigService,
|
|
87
|
+
/** This replica's extension schemas (loaded, config-declared or prepared install records). */
|
|
88
|
+
host: ExtensionHost,
|
|
89
|
+
/** The effective (stored plus startup) deployment config. */
|
|
90
|
+
installs: ExtensionInstalls,
|
|
91
|
+
/** Applies a saved config on this replica at once (other replicas through the bus). */
|
|
92
|
+
lifecycle: ExtensionLifecycle,
|
|
93
|
+
/** Publishes {@link PLUGIN_DEPLOYMENT_CONFIG_TOPIC} after a save (a failure only warns). */
|
|
94
|
+
bus: PublishBus, log: KernelLogger, options: Pick<KernelAppOptions, "env" | "extensionConfigSources">);
|
|
95
|
+
private get db();
|
|
96
|
+
/** The startup config's `extensionConfig` (file / Nacos merged with env). */
|
|
97
|
+
private fileConfig;
|
|
98
|
+
/**
|
|
99
|
+
* The extension's deployment config description; undefined when the deployment does not know
|
|
100
|
+
* the extension (`extension.not_found`). Public for tests only.
|
|
101
|
+
*/
|
|
102
|
+
schemaOf(plugin: string): Promise<DeploymentSchemaInfo | undefined>;
|
|
115
103
|
/** 插件的生效部署配置(未校验):启动配置为底,补上 PG 里保存的字段。`schema` 给出时按它的字段合并。 */
|
|
116
104
|
effective(plugin: string, fileValue: unknown, schema?: core.$ZodType): Promise<unknown>;
|
|
117
105
|
/** Admin view; an extension unknown to the deployment -> `extension.not_found`. */
|
|
118
106
|
view(plugin: string): Promise<DeploymentConfigView>;
|
|
107
|
+
/** `REPEATABLE READ` read-only: every stored field from one snapshot. */
|
|
108
|
+
private readStored;
|
|
119
109
|
/**
|
|
120
110
|
* Saves some fields: `values` keyed by field dot path, `null` = clear (back to the default),
|
|
121
111
|
* omitted = unchanged.
|
|
@@ -129,10 +119,11 @@ export declare class ExtensionDeploymentConfigService {
|
|
|
129
119
|
* applies it on this replica right away.
|
|
130
120
|
*/
|
|
131
121
|
put(plugin: string, values: Record<string, unknown>, actor: string, actorTokenId?: string): Promise<DeploymentConfigView>;
|
|
122
|
+
private write;
|
|
132
123
|
private info;
|
|
133
124
|
private render;
|
|
134
125
|
}
|
|
135
126
|
/**
|
|
136
127
|
* 本副本拿不到模块时(未加载的安装记录)按包内审阅过的静态清单给出字段(没有 zod schema:不校验,加载时再校验)。
|
|
137
128
|
*/
|
|
138
|
-
export declare function staticDeploymentSchema(db:
|
|
129
|
+
export declare function staticDeploymentSchema(db: KernelSchemaDb, plugin: string): Promise<DeploymentSchemaInfo | undefined>;
|