@capybara-hq/kernel 0.1.0-rc.1 → 0.1.0-rc.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/admin/admin.controller.d.ts +17 -17
- package/dist/admin/admin.controller.js +43 -26
- package/dist/admin/admin.module.d.ts +3 -0
- package/dist/admin/admin.module.js +22 -0
- package/dist/admin/extensions.controller.d.ts +14 -14
- package/dist/admin/extensions.controller.js +30 -17
- package/dist/admin/setup-lock.d.ts +16 -0
- package/dist/admin/setup-lock.js +47 -0
- package/dist/admin/setup.controller.d.ts +8 -8
- package/dist/admin/setup.controller.js +27 -25
- package/dist/admin/setup.service.d.ts +19 -27
- package/dist/admin/setup.service.js +61 -61
- package/dist/agents/agent-lookup.d.ts +53 -0
- package/dist/agents/agent-lookup.js +179 -0
- package/dist/agents/agents.controller.d.ts +1 -1
- package/dist/agents/agents.controller.js +14 -8
- package/dist/agents/agents.module.d.ts +7 -0
- package/dist/agents/agents.module.js +41 -0
- package/dist/agents/agents.service.d.ts +39 -58
- package/dist/agents/agents.service.js +261 -329
- package/dist/agents/definition.d.ts +8 -0
- package/dist/agents/definition.js +8 -0
- package/dist/agents/models.controller.d.ts +1 -1
- package/dist/agents/models.controller.js +2 -2
- package/dist/agents/templates.controller.d.ts +1 -1
- package/dist/agents/templates.controller.js +2 -2
- package/dist/agents/templates.d.ts +6 -8
- package/dist/agents/templates.js +20 -4
- package/dist/app.d.ts +93 -0
- package/dist/app.js +150 -0
- package/dist/catalog/admin-catalog.controller.d.ts +3 -3
- package/dist/catalog/admin-catalog.controller.js +27 -13
- package/dist/catalog/catalog-content.d.ts +185 -0
- package/dist/catalog/catalog-content.js +323 -0
- package/dist/catalog/catalog-items.d.ts +186 -0
- package/dist/catalog/catalog-items.js +410 -0
- package/dist/catalog/catalog.module.d.ts +14 -0
- package/dist/catalog/catalog.module.js +71 -0
- package/dist/catalog/catalog.service.d.ts +34 -188
- package/dist/catalog/catalog.service.js +155 -489
- package/dist/catalog/cli.d.ts +3 -2
- package/dist/catalog/cli.js +13 -31
- package/dist/catalog/job-ids.d.ts +15 -0
- package/dist/catalog/job-ids.js +15 -0
- package/dist/catalog/jobs.d.ts +27 -0
- package/dist/catalog/jobs.js +70 -0
- package/dist/catalog/locks.d.ts +24 -0
- package/dist/catalog/locks.js +63 -0
- package/dist/catalog/marketplaces.controller.d.ts +4 -4
- package/dist/catalog/marketplaces.controller.js +22 -11
- package/dist/catalog/marketplaces.service.d.ts +30 -13
- package/dist/catalog/marketplaces.service.js +330 -256
- package/dist/catalog/org-catalog.controller.d.ts +4 -3
- package/dist/catalog/org-catalog.controller.js +29 -14
- package/dist/catalog/org-catalog.service.d.ts +32 -198
- package/dist/catalog/org-catalog.service.js +159 -400
- package/dist/catalog/plugin-import.d.ts +73 -34
- package/dist/catalog/plugin-import.js +356 -217
- package/dist/catalog/plugin-install.d.ts +83 -41
- package/dist/catalog/plugin-install.js +421 -269
- package/dist/catalog/plugin-upgrade.d.ts +59 -4
- package/dist/catalog/plugin-upgrade.js +407 -282
- package/dist/catalog/requests.service.d.ts +27 -15
- package/dist/catalog/requests.service.js +201 -145
- package/dist/catalog/upgrade-targets.d.ts +4 -7
- package/dist/channels/actions.d.ts +6 -4
- package/dist/channels/actions.js +1 -1
- package/dist/channels/cards.d.ts +2 -2
- package/dist/channels/channels.module.d.ts +40 -0
- package/dist/channels/channels.module.js +128 -0
- package/dist/channels/connections.controller.d.ts +1 -1
- package/dist/channels/connections.controller.js +11 -6
- package/dist/channels/connections.service.d.ts +43 -21
- package/dist/channels/connections.service.js +236 -131
- package/dist/channels/inbound.d.ts +34 -38
- package/dist/channels/inbound.js +107 -41
- package/dist/channels/job-ids.d.ts +10 -0
- package/dist/channels/job-ids.js +10 -0
- package/dist/channels/jobs.d.ts +85 -0
- package/dist/channels/jobs.js +157 -0
- package/dist/channels/outbound.d.ts +60 -82
- package/dist/channels/outbound.js +165 -194
- package/dist/channels/supervisor.d.ts +88 -46
- package/dist/channels/supervisor.js +230 -132
- package/dist/channels/threads.d.ts +29 -8
- package/dist/channels/threads.js +71 -13
- package/dist/channels/webhook.d.ts +20 -14
- package/dist/channels/webhook.js +51 -20
- package/dist/config/load.d.ts +3 -2
- package/dist/config/load.js +3 -2
- package/dist/config/nacos-source.js +11 -2
- package/dist/config/schema.d.ts +1 -0
- package/dist/config/schema.js +10 -4
- package/dist/conversations/access.d.ts +29 -0
- package/dist/conversations/access.js +86 -0
- package/dist/conversations/artifacts.d.ts +10 -10
- package/dist/conversations/artifacts.js +35 -9
- package/dist/conversations/attachments.controller.d.ts +1 -1
- package/dist/conversations/attachments.controller.js +8 -6
- package/dist/conversations/attachments.module.d.ts +7 -0
- package/dist/conversations/attachments.module.js +25 -0
- package/dist/conversations/attachments.service.d.ts +30 -22
- package/dist/conversations/attachments.service.js +119 -46
- package/dist/conversations/conversations.controller.d.ts +8 -7
- package/dist/conversations/conversations.controller.js +59 -29
- package/dist/conversations/conversations.module.d.ts +8 -0
- package/dist/conversations/conversations.module.js +69 -0
- package/dist/conversations/conversations.service.d.ts +40 -38
- package/dist/conversations/conversations.service.js +130 -140
- package/dist/conversations/event-log.d.ts +28 -18
- package/dist/conversations/event-log.js +74 -27
- package/dist/conversations/files.d.ts +10 -10
- package/dist/conversations/files.js +37 -11
- package/dist/conversations/idem-keys.d.ts +5 -0
- package/dist/conversations/idem-keys.js +5 -0
- package/dist/conversations/job-ids.d.ts +6 -0
- package/dist/conversations/job-ids.js +6 -0
- package/dist/conversations/outputs-read.d.ts +11 -11
- package/dist/conversations/outputs-read.js +31 -7
- package/dist/conversations/queue.d.ts +48 -56
- package/dist/conversations/queue.js +13 -289
- package/dist/conversations/queue.service.d.ts +60 -0
- package/dist/conversations/queue.service.js +343 -0
- package/dist/conversations/sandbox-status.d.ts +13 -10
- package/dist/conversations/sandbox-status.js +36 -8
- package/dist/conversations/titles.d.ts +71 -24
- package/dist/conversations/titles.js +159 -63
- package/dist/ctx/bus.js +9 -3
- package/dist/ctx/create-ctx.d.ts +6 -0
- package/dist/ctx/create-ctx.js +7 -9
- package/dist/ctx/lock.d.ts +7 -3
- package/dist/ctx/lock.js +9 -20
- package/dist/ctx/secrets.d.ts +10 -2
- package/dist/ctx/secrets.js +7 -3
- package/dist/db/kernel-schema.d.ts +2 -2
- package/dist/db/pool.d.ts +5 -0
- package/dist/db/pool.js +1 -0
- package/dist/errors.d.ts +1 -0
- package/dist/errors.js +1 -0
- package/dist/evals/budget.d.ts +42 -21
- package/dist/evals/budget.js +114 -62
- package/dist/evals/evals.module.d.ts +31 -0
- package/dist/evals/evals.module.js +114 -0
- package/dist/evals/jobs.d.ts +20 -0
- package/dist/evals/jobs.js +45 -0
- package/dist/evals/run-replay.d.ts +56 -8
- package/dist/evals/run-replay.js +140 -80
- package/dist/evals/runs.controller.d.ts +1 -1
- package/dist/evals/runs.controller.js +17 -8
- package/dist/evals/runs.service.d.ts +23 -45
- package/dist/evals/runs.service.js +245 -234
- package/dist/evals/sets.controller.d.ts +1 -1
- package/dist/evals/sets.controller.js +17 -8
- package/dist/evals/sets.service.d.ts +22 -6
- package/dist/evals/sets.service.js +248 -194
- package/dist/evals/snapshot.d.ts +2 -2
- package/dist/evals/step-replay.d.ts +2 -2
- package/dist/evals/step-replay.js +1 -1
- package/dist/evals/trajectory.controller.d.ts +1 -1
- package/dist/evals/trajectory.controller.js +11 -7
- package/dist/evals/trajectory.service.d.ts +5 -4
- package/dist/evals/trajectory.service.js +30 -7
- package/dist/evals/worker.d.ts +44 -27
- package/dist/evals/worker.js +220 -121
- package/dist/extensions/admin-ops.d.ts +61 -33
- package/dist/extensions/admin-ops.js +248 -154
- package/dist/extensions/admin-view.d.ts +38 -27
- package/dist/extensions/admin-view.js +126 -55
- package/dist/extensions/approvals.d.ts +12 -8
- package/dist/extensions/approvals.js +73 -46
- package/dist/extensions/blobs.d.ts +27 -10
- package/dist/extensions/blobs.js +111 -45
- package/dist/extensions/bootstrap.d.ts +58 -31
- package/dist/extensions/bootstrap.js +175 -121
- package/dist/extensions/cli.d.ts +20 -10
- package/dist/extensions/cli.js +41 -96
- package/dist/extensions/config-issues.d.ts +7 -0
- package/dist/extensions/config-issues.js +31 -0
- package/dist/extensions/deployment-config-store.d.ts +49 -0
- package/dist/extensions/deployment-config-store.js +133 -0
- package/dist/extensions/deployment-config.d.ts +58 -67
- package/dist/extensions/deployment-config.js +202 -230
- package/dist/extensions/enabled.d.ts +5 -5
- package/dist/extensions/extensions.module.d.ts +8 -0
- package/dist/extensions/extensions.module.js +77 -0
- package/dist/extensions/hooks.d.ts +3 -2
- package/dist/extensions/hooks.js +1 -1
- package/dist/extensions/host.d.ts +72 -68
- package/dist/extensions/host.js +191 -152
- package/dist/extensions/installs.d.ts +49 -16
- package/dist/extensions/installs.js +128 -32
- package/dist/extensions/job-ids.d.ts +6 -0
- package/dist/extensions/job-ids.js +6 -0
- package/dist/extensions/lifecycle-topics.d.ts +18 -0
- package/dist/extensions/lifecycle-topics.js +18 -0
- package/dist/extensions/lifecycle.d.ts +35 -47
- package/dist/extensions/lifecycle.js +103 -39
- package/dist/extensions/locks.d.ts +33 -0
- package/dist/extensions/locks.js +86 -0
- package/dist/extensions/migrate-lock.d.ts +3 -4
- package/dist/extensions/org-config.controller.d.ts +1 -1
- package/dist/extensions/org-config.controller.js +8 -5
- package/dist/extensions/org-config.d.ts +48 -46
- package/dist/extensions/org-config.js +284 -226
- package/dist/extensions/registry.d.ts +50 -2
- package/dist/extensions/registry.js +89 -4
- package/dist/extensions/sources.d.ts +12 -8
- package/dist/extensions/sources.js +34 -13
- package/dist/files/files.module.d.ts +3 -0
- package/dist/files/files.module.js +22 -0
- package/dist/files/previewers.controller.d.ts +7 -2
- package/dist/files/previewers.controller.js +17 -9
- package/dist/files/previewers.d.ts +13 -18
- package/dist/files/previewers.js +83 -36
- package/dist/http/adapter.d.ts +3 -0
- package/dist/http/adapter.js +25 -0
- package/dist/http/api.module.d.ts +3 -110
- package/dist/http/api.module.js +47 -355
- package/dist/http/app.d.ts +11 -15
- package/dist/http/app.js +17 -62
- package/dist/http/error-filter.module.d.ts +5 -0
- package/dist/http/error-filter.module.js +18 -0
- package/dist/http/error.filter.js +2 -2
- package/dist/identity/accounts.d.ts +82 -29
- package/dist/identity/accounts.js +294 -175
- package/dist/identity/api-tokens.d.ts +11 -7
- package/dist/identity/api-tokens.js +71 -44
- package/dist/identity/audit.d.ts +7 -4
- package/dist/identity/audit.js +5 -1
- package/dist/identity/auth.controller.d.ts +11 -10
- package/dist/identity/auth.controller.js +31 -25
- package/dist/identity/auth.guard.d.ts +3 -3
- package/dist/identity/auth.guard.js +6 -4
- package/dist/identity/binding.d.ts +9 -11
- package/dist/identity/binding.js +41 -13
- package/dist/identity/enterprise-admin.d.ts +18 -12
- package/dist/identity/enterprise-admin.js +67 -13
- package/dist/identity/external-identity-lock.d.ts +17 -0
- package/dist/identity/external-identity-lock.js +39 -0
- package/dist/identity/external.d.ts +19 -15
- package/dist/identity/external.js +163 -125
- package/dist/identity/identity.module.d.ts +6 -0
- package/dist/identity/identity.module.js +56 -0
- package/dist/identity/me.controller.d.ts +16 -15
- package/dist/identity/me.controller.js +37 -31
- package/dist/identity/sessions.d.ts +12 -10
- package/dist/identity/sessions.js +74 -42
- package/dist/identity/settings.d.ts +20 -14
- package/dist/identity/settings.js +85 -57
- package/dist/identity/sso.controller.d.ts +7 -7
- package/dist/identity/sso.controller.js +13 -9
- package/dist/identity/sso.d.ts +9 -12
- package/dist/identity/sso.js +54 -24
- package/dist/inbox/inbox.module.d.ts +3 -0
- package/dist/inbox/inbox.module.js +22 -0
- package/dist/inbox/inbox.service.d.ts +7 -9
- package/dist/inbox/inbox.service.js +32 -11
- package/dist/index.d.ts +16 -11
- package/dist/index.js +9 -6
- package/dist/infra/cache/cache.module.d.ts +3 -0
- package/dist/infra/cache/cache.module.js +16 -0
- package/dist/infra/cache/cache.service.d.ts +21 -0
- package/dist/infra/cache/cache.service.js +80 -0
- package/dist/infra/cache/cacheable.decorator.d.ts +32 -0
- package/dist/infra/cache/cacheable.decorator.js +83 -0
- package/dist/infra/cli/kernel-cli.module.d.ts +66 -0
- package/dist/infra/cli/kernel-cli.module.js +165 -0
- package/dist/infra/close-within.d.ts +15 -0
- package/dist/infra/close-within.js +36 -0
- package/dist/infra/config/config.module.d.ts +13 -0
- package/dist/infra/config/config.module.js +39 -0
- package/dist/infra/config/kernel-config.service.d.ts +25 -0
- package/dist/infra/config/kernel-config.service.js +126 -0
- package/dist/infra/database/after-commit.d.ts +6 -0
- package/dist/infra/database/after-commit.js +9 -0
- package/dist/infra/database/database.module.d.ts +25 -0
- package/dist/infra/database/database.module.js +90 -0
- package/dist/infra/database/kernel-db.d.ts +22 -0
- package/dist/infra/database/kernel-db.js +65 -0
- package/dist/infra/database/transaction-host.d.ts +50 -0
- package/dist/infra/database/transaction-host.js +125 -0
- package/dist/infra/database/transactional.decorator.d.ts +15 -0
- package/dist/infra/database/transactional.decorator.js +27 -0
- package/dist/infra/database/xact-lock.d.ts +17 -0
- package/dist/infra/database/xact-lock.js +43 -0
- package/dist/infra/events/kernel-events.d.ts +96 -0
- package/dist/infra/events/kernel-events.js +65 -0
- package/dist/infra/health/health.controller.d.ts +26 -0
- package/dist/infra/health/health.controller.js +104 -0
- package/dist/infra/health/health.module.d.ts +9 -0
- package/dist/infra/health/health.module.js +24 -0
- package/dist/infra/health/health.options.d.ts +10 -0
- package/dist/infra/health/health.options.js +15 -0
- package/dist/infra/health/shutdown-state.d.ts +6 -0
- package/dist/infra/health/shutdown-state.js +2 -0
- package/dist/infra/lifecycle/graceful-shutdown.module.d.ts +6 -0
- package/dist/infra/lifecycle/graceful-shutdown.module.js +23 -0
- package/dist/infra/lifecycle/graceful-shutdown.service.d.ts +70 -0
- package/dist/infra/lifecycle/graceful-shutdown.service.js +135 -0
- package/dist/infra/lifecycle/process-guards.d.ts +52 -0
- package/dist/infra/lifecycle/process-guards.js +86 -0
- package/dist/infra/lifecycle/shutdown-signals.d.ts +30 -0
- package/dist/infra/lifecycle/shutdown-signals.js +48 -0
- package/dist/infra/lock/key-template.d.ts +13 -0
- package/dist/infra/lock/key-template.js +46 -0
- package/dist/infra/lock/lock.module.d.ts +3 -0
- package/dist/infra/lock/lock.module.js +16 -0
- package/dist/infra/lock/lock.service.d.ts +120 -0
- package/dist/infra/lock/lock.service.js +343 -0
- package/dist/infra/lock/shared-lease.d.ts +44 -0
- package/dist/infra/lock/shared-lease.js +121 -0
- package/dist/infra/lock/with-lock.decorator.d.ts +28 -0
- package/dist/infra/lock/with-lock.decorator.js +49 -0
- package/dist/infra/logging/logging.module.d.ts +16 -0
- package/dist/infra/logging/logging.module.js +34 -0
- package/dist/infra/queue/configured-processor.d.ts +18 -0
- package/dist/infra/queue/configured-processor.js +23 -0
- package/dist/infra/queue/job-failure.d.ts +18 -0
- package/dist/infra/queue/job-failure.js +26 -0
- package/dist/infra/queue/queue-shutdown.d.ts +27 -0
- package/dist/infra/queue/queue-shutdown.js +81 -0
- package/dist/infra/queue/queue.module.d.ts +16 -0
- package/dist/infra/queue/queue.module.js +61 -0
- package/dist/infra/queue/redis-connection.d.ts +7 -0
- package/dist/infra/queue/redis-connection.js +18 -0
- package/dist/infra/queue/retired-schedulers.d.ts +7 -0
- package/dist/infra/queue/retired-schedulers.js +9 -0
- package/dist/infra/queue/run-job.d.ts +16 -0
- package/dist/infra/queue/run-job.js +19 -0
- package/dist/infra/redis/redis.module.d.ts +24 -0
- package/dist/infra/redis/redis.module.js +87 -0
- package/dist/infra/schedule/cron-tick.d.ts +12 -0
- package/dist/infra/schedule/cron-tick.js +25 -0
- package/dist/infra/schedule/locked-cron.decorator.d.ts +27 -0
- package/dist/infra/schedule/locked-cron.decorator.js +53 -0
- package/dist/infra/schedule/locked-interval.d.ts +69 -0
- package/dist/infra/schedule/locked-interval.js +190 -0
- package/dist/infra/schedule/locked-tick.d.ts +90 -0
- package/dist/infra/schedule/locked-tick.js +137 -0
- package/dist/infra/schedule/schedule.module.d.ts +8 -0
- package/dist/infra/schedule/schedule.module.js +27 -0
- package/dist/infra/schedule/scheduled-runs.d.ts +69 -0
- package/dist/infra/schedule/scheduled-runs.js +163 -0
- package/dist/infra/swagger/swagger.d.ts +16 -0
- package/dist/infra/swagger/swagger.js +31 -0
- package/dist/infra/throttler/credential-throttler.d.ts +35 -0
- package/dist/infra/throttler/credential-throttler.js +77 -0
- package/dist/infra/throttler/named-throttlers.d.ts +31 -0
- package/dist/infra/throttler/named-throttlers.js +119 -0
- package/dist/infra/throttler/redis-throttler-storage.d.ts +38 -0
- package/dist/infra/throttler/redis-throttler-storage.js +130 -0
- package/dist/infra/throttler/throttler.guard.d.ts +23 -0
- package/dist/infra/throttler/throttler.guard.js +68 -0
- package/dist/infra/throttler/throttler.module.d.ts +15 -0
- package/dist/infra/throttler/throttler.module.js +53 -0
- package/dist/infra/tokens.d.ts +15 -0
- package/dist/infra/tokens.js +15 -0
- package/dist/infra/validation/create-zod-dto.d.ts +23 -0
- package/dist/infra/validation/create-zod-dto.js +35 -0
- package/dist/infra/validation/parse-with-zod.d.ts +7 -0
- package/dist/infra/validation/parse-with-zod.js +12 -0
- package/dist/infra/validation/validation.module.d.ts +3 -0
- package/dist/infra/validation/validation.module.js +16 -0
- package/dist/infra/validation/zod-params.d.ts +7 -0
- package/dist/infra/validation/zod-params.js +42 -0
- package/dist/infra/validation/zod-validation.pipe.d.ts +11 -0
- package/dist/infra/validation/zod-validation.pipe.js +31 -0
- package/dist/kernel.d.ts +9 -244
- package/dist/kernel.js +8 -1305
- package/dist/kernel.module.d.ts +17 -0
- package/dist/kernel.module.js +136 -0
- package/dist/lifecycle/kernel-lifecycle.d.ts +140 -0
- package/dist/lifecycle/kernel-lifecycle.js +451 -0
- package/dist/lifecycle/tokens.d.ts +3 -0
- package/dist/lifecycle/tokens.js +3 -0
- package/dist/log-context.d.ts +2 -0
- package/dist/log-context.js +4 -0
- package/dist/models/models.module.d.ts +3 -0
- package/dist/models/models.module.js +24 -0
- package/dist/models/prices.d.ts +8 -2
- package/dist/models/prices.js +65 -37
- package/dist/models/purposes.controller.d.ts +1 -1
- package/dist/models/purposes.controller.js +5 -6
- package/dist/models/purposes.d.ts +35 -13
- package/dist/models/purposes.js +101 -51
- package/dist/orgs/directory-sync.controller.d.ts +1 -1
- package/dist/orgs/directory-sync.controller.js +2 -2
- package/dist/orgs/directory-sync.d.ts +61 -31
- package/dist/orgs/directory-sync.js +212 -125
- package/dist/orgs/invitations.controller.d.ts +8 -8
- package/dist/orgs/invitations.controller.js +27 -26
- package/dist/orgs/invitations.service.d.ts +12 -9
- package/dist/orgs/invitations.service.js +130 -92
- package/dist/orgs/job-ids.d.ts +8 -0
- package/dist/orgs/job-ids.js +8 -0
- package/dist/orgs/members.service.d.ts +19 -12
- package/dist/orgs/members.service.js +161 -117
- package/dist/orgs/offboarding.d.ts +54 -57
- package/dist/orgs/offboarding.js +161 -71
- package/dist/orgs/org-lock.d.ts +28 -19
- package/dist/orgs/org-lock.js +81 -35
- package/dist/orgs/org.guard.d.ts +1 -1
- package/dist/orgs/org.guard.js +2 -2
- package/dist/orgs/orgs.controller.d.ts +13 -13
- package/dist/orgs/orgs.controller.js +29 -17
- package/dist/orgs/orgs.module.d.ts +6 -0
- package/dist/orgs/orgs.module.js +68 -0
- package/dist/orgs/orgs.service.d.ts +30 -19
- package/dist/orgs/orgs.service.js +139 -86
- package/dist/orgs/settings.controller.d.ts +1 -1
- package/dist/orgs/settings.controller.js +8 -6
- package/dist/orgs/settings.service.d.ts +14 -8
- package/dist/orgs/settings.service.js +75 -46
- package/dist/overrides.d.ts +56 -0
- package/dist/overrides.js +30 -0
- package/dist/roles/gateway-role.d.ts +43 -0
- package/dist/roles/gateway-role.js +98 -0
- package/dist/roles/gateway.module.d.ts +8 -0
- package/dist/roles/gateway.module.js +28 -0
- package/dist/roles/worker-role.d.ts +63 -0
- package/dist/roles/worker-role.js +144 -0
- package/dist/roles/worker.module.d.ts +14 -0
- package/dist/roles/worker.module.js +90 -0
- package/dist/runtime/abort.js +19 -2
- package/dist/runtime/checkpointer.d.ts +8 -3
- package/dist/runtime/checkpointer.js +87 -55
- package/dist/runtime/conversation-lock.d.ts +20 -11
- package/dist/runtime/conversation-lock.js +62 -72
- package/dist/runtime/hook-calls.d.ts +3 -3
- package/dist/runtime/hook-calls.js +1 -6
- package/dist/runtime/job-ids.d.ts +10 -0
- package/dist/runtime/job-ids.js +10 -0
- package/dist/runtime/langgraph-loop.js +1 -1
- package/dist/runtime/loop.d.ts +7 -0
- package/dist/runtime/loop.js +14 -0
- package/dist/runtime/maintenance-queue.d.ts +10 -0
- package/dist/runtime/maintenance-queue.js +10 -0
- package/dist/runtime/maintenance.d.ts +45 -74
- package/dist/runtime/maintenance.js +139 -137
- package/dist/runtime/model-call.d.ts +7 -4
- package/dist/runtime/model-call.js +24 -57
- package/dist/runtime/providers.d.ts +17 -6
- package/dist/runtime/providers.js +66 -25
- package/dist/runtime/quota.d.ts +17 -3
- package/dist/runtime/quota.js +27 -2
- package/dist/runtime/retired-schedulers.d.ts +7 -0
- package/dist/runtime/retired-schedulers.js +31 -0
- package/dist/runtime/run-control.d.ts +33 -0
- package/dist/runtime/run-control.js +77 -0
- package/dist/runtime/run-finish.d.ts +26 -17
- package/dist/runtime/run-finish.js +98 -51
- package/dist/runtime/run-jobs.d.ts +48 -0
- package/dist/runtime/run-jobs.js +95 -0
- package/dist/runtime/run-processors.d.ts +60 -0
- package/dist/runtime/run-processors.js +185 -0
- package/dist/runtime/run-queue.d.ts +32 -57
- package/dist/runtime/run-queue.js +291 -295
- package/dist/runtime/run-steps.d.ts +39 -0
- package/dist/runtime/run-steps.js +96 -0
- package/dist/runtime/run-worker.d.ts +121 -75
- package/dist/runtime/run-worker.js +340 -226
- package/dist/runtime/runtime.module.d.ts +10 -0
- package/dist/runtime/runtime.module.js +112 -0
- package/dist/runtime/step-log.d.ts +40 -0
- package/dist/runtime/step-log.js +94 -0
- package/dist/runtime/stream.controller.d.ts +5 -8
- package/dist/runtime/stream.controller.js +14 -12
- package/dist/runtime/stream.d.ts +24 -6
- package/dist/runtime/stream.js +78 -7
- package/dist/runtime/subagents/child.d.ts +3 -44
- package/dist/runtime/subagents/child.js +0 -79
- package/dist/runtime/subagents/definition.d.ts +4 -4
- package/dist/runtime/subagents/definition.js +2 -2
- package/dist/runtime/subagents/dispatch.d.ts +87 -6
- package/dist/runtime/subagents/dispatch.js +135 -140
- package/dist/runtime/subagents/limits.d.ts +9 -4
- package/dist/runtime/subagents/limits.js +4 -2
- package/dist/runtime/subagents/org-agents.d.ts +4 -4
- package/dist/runtime/subagents/org-agents.js +1 -1
- package/dist/runtime/subagents/progress.d.ts +2 -2
- package/dist/runtime/subagents/roster.d.ts +3 -3
- package/dist/runtime/subagents/roster.js +1 -1
- package/dist/runtime/subagents/skill-fork.d.ts +6 -7
- package/dist/runtime/subagents/skill-fork.js +16 -5
- package/dist/runtime/subagents/subagents.service.d.ts +40 -0
- package/dist/runtime/subagents/subagents.service.js +101 -0
- package/dist/runtime/usage-report.d.ts +94 -52
- package/dist/runtime/usage-report.js +200 -100
- package/dist/runtime/waits.d.ts +125 -57
- package/dist/runtime/waits.js +431 -208
- package/dist/sandbox/job-ids.d.ts +10 -0
- package/dist/sandbox/job-ids.js +10 -0
- package/dist/sandbox/jobs.d.ts +41 -0
- package/dist/sandbox/jobs.js +113 -0
- package/dist/sandbox/leases.d.ts +39 -31
- package/dist/sandbox/leases.js +117 -257
- package/dist/sandbox/providers.d.ts +19 -0
- package/dist/sandbox/providers.js +38 -0
- package/dist/sandbox/sandbox.module.d.ts +8 -0
- package/dist/sandbox/sandbox.module.js +30 -0
- package/dist/sandbox/sandbox.service.d.ts +24 -29
- package/dist/sandbox/sandbox.service.js +106 -75
- package/dist/skills/catalog.d.ts +33 -20
- package/dist/skills/catalog.js +96 -53
- package/dist/skills/changes.controller.d.ts +4 -4
- package/dist/skills/changes.controller.js +15 -9
- package/dist/skills/changes.service.d.ts +28 -18
- package/dist/skills/changes.service.js +421 -364
- package/dist/skills/invocable.controller.d.ts +1 -1
- package/dist/skills/invocable.controller.js +8 -5
- package/dist/skills/invoke.d.ts +16 -15
- package/dist/skills/invoke.js +48 -17
- package/dist/skills/skills.controller.d.ts +1 -1
- package/dist/skills/skills.controller.js +11 -6
- package/dist/skills/skills.module.d.ts +6 -0
- package/dist/skills/skills.module.js +30 -0
- package/dist/skills/skills.service.d.ts +47 -30
- package/dist/skills/skills.service.js +221 -158
- package/dist/storage/job-ids.d.ts +6 -0
- package/dist/storage/job-ids.js +6 -0
- package/dist/storage/purge.d.ts +22 -7
- package/dist/storage/purge.js +55 -3
- package/dist/storage/storage.module.d.ts +6 -0
- package/dist/storage/storage.module.js +23 -0
- package/dist/storage/storage.service.d.ts +18 -4
- package/dist/storage/storage.service.js +44 -3
- package/dist/tools/approvals.controller.d.ts +1 -1
- package/dist/tools/approvals.controller.js +12 -8
- package/dist/tools/approvals.service.d.ts +27 -25
- package/dist/tools/approvals.service.js +324 -258
- package/dist/tools/breaker.d.ts +2 -2
- package/dist/tools/breaker.js +21 -3
- package/dist/tools/builtins/ask-user.d.ts +2 -2
- package/dist/tools/builtins/ask-user.js +1 -1
- package/dist/tools/builtins/builtin-tools.d.ts +21 -0
- package/dist/tools/builtins/builtin-tools.js +80 -0
- package/dist/tools/builtins/read-tool-output.d.ts +2 -2
- package/dist/tools/builtins/read-tool-output.js +1 -1
- package/dist/tools/builtins/sandbox/bash.js +2 -2
- package/dist/tools/builtins/sandbox/common.d.ts +2 -1
- package/dist/tools/builtins/sandbox/deliver.js +2 -2
- package/dist/tools/builtins/sandbox/edit.js +1 -1
- package/dist/tools/builtins/sandbox/glob.js +2 -2
- package/dist/tools/builtins/sandbox/grep.js +2 -2
- package/dist/tools/builtins/sandbox/read.js +1 -1
- package/dist/tools/builtins/sandbox/write.js +1 -1
- package/dist/tools/builtins/skill-load.d.ts +3 -3
- package/dist/tools/builtins/skill-load.js +1 -1
- package/dist/tools/canonical-json.d.ts +6 -0
- package/dist/tools/canonical-json.js +16 -0
- package/dist/tools/connector-content.controller.d.ts +1 -1
- package/dist/tools/connector-content.controller.js +11 -6
- package/dist/tools/connector-content.d.ts +12 -15
- package/dist/tools/connector-content.js +53 -18
- package/dist/tools/connectors.controller.d.ts +1 -1
- package/dist/tools/connectors.controller.js +21 -10
- package/dist/tools/connectors.service.d.ts +31 -13
- package/dist/tools/connectors.service.js +434 -344
- package/dist/tools/credentials.d.ts +17 -20
- package/dist/tools/credentials.js +55 -34
- package/dist/tools/drift.d.ts +29 -41
- package/dist/tools/drift.js +111 -79
- package/dist/tools/info.d.ts +12 -9
- package/dist/tools/info.js +33 -7
- package/dist/tools/job-ids.d.ts +13 -0
- package/dist/tools/job-ids.js +15 -0
- package/dist/tools/jobs.d.ts +24 -0
- package/dist/tools/jobs.js +69 -0
- package/dist/tools/oauth/flow-paths.d.ts +16 -0
- package/dist/tools/oauth/flow-paths.js +38 -0
- package/dist/tools/oauth/flow.d.ts +30 -30
- package/dist/tools/oauth/flow.js +109 -81
- package/dist/tools/oauth/oauth.controller.d.ts +3 -3
- package/dist/tools/oauth/oauth.controller.js +12 -9
- package/dist/tools/oauth/tokens.d.ts +11 -3
- package/dist/tools/oauth/tokens.js +15 -14
- package/dist/tools/outputs.d.ts +13 -4
- package/dist/tools/outputs.js +47 -3
- package/dist/tools/pipeline.d.ts +62 -46
- package/dist/tools/pipeline.js +145 -64
- package/dist/tools/policy.d.ts +2 -2
- package/dist/tools/questions.controller.d.ts +1 -1
- package/dist/tools/questions.controller.js +8 -5
- package/dist/tools/questions.service.d.ts +25 -24
- package/dist/tools/questions.service.js +201 -142
- package/dist/tools/registry.d.ts +30 -20
- package/dist/tools/registry.js +73 -37
- package/dist/tools/specs.d.ts +5 -4
- package/dist/tools/specs.js +3 -1
- package/dist/tools/tools.module.d.ts +10 -0
- package/dist/tools/tools.module.js +91 -0
- package/dist/ui/call-extension.d.ts +16 -0
- package/dist/ui/call-extension.js +38 -0
- package/dist/ui/embed-token.d.ts +9 -5
- package/dist/ui/embed-token.js +34 -6
- package/dist/ui/ui-stream.d.ts +22 -17
- package/dist/ui/ui-stream.js +72 -12
- package/dist/ui/ui.module.d.ts +7 -0
- package/dist/ui/ui.module.js +28 -0
- package/dist/ui/views.controller.d.ts +14 -12
- package/dist/ui/views.controller.js +32 -25
- package/dist/ui/views.d.ts +9 -57
- package/dist/ui/views.js +43 -45
- package/package.json +9 -2
- package/dist/http/health.controller.d.ts +0 -26
- package/dist/http/health.controller.js +0 -79
- package/dist/http/tokens.d.ts +0 -131
- package/dist/http/tokens.js +0 -131
- package/dist/http/zod.pipe.d.ts +0 -8
- package/dist/http/zod.pipe.js +0 -14
- package/dist/identity/rate-limit.d.ts +0 -55
- package/dist/identity/rate-limit.js +0 -121
- package/dist/sandbox/lifecycle.d.ts +0 -21
- package/dist/sandbox/lifecycle.js +0 -68
- /package/dist/http/{gateway.module.d.ts → gateway-routes.d.ts} +0 -0
- /package/dist/http/{gateway.module.js → gateway-routes.js} +0 -0
package/dist/extensions/blobs.js
CHANGED
|
@@ -1,4 +1,19 @@
|
|
|
1
|
+
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
|
2
|
+
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
3
|
+
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
4
|
+
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
5
|
+
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
6
|
+
};
|
|
7
|
+
var __param = (this && this.__param) || function (paramIndex, decorator) {
|
|
8
|
+
return function (target, key) { decorator(target, key, paramIndex); }
|
|
9
|
+
};
|
|
1
10
|
import { createHash } from "node:crypto";
|
|
11
|
+
import { Inject, Injectable } from "@nestjs/common";
|
|
12
|
+
import { KernelConfigService } from "../infra/config/kernel-config.service.js";
|
|
13
|
+
import { KernelDb } from "../infra/database/kernel-db.js";
|
|
14
|
+
import { TransactionHost } from "../infra/database/transaction-host.js";
|
|
15
|
+
import { Transactional } from "../infra/database/transactional.decorator.js";
|
|
16
|
+
import { StorageService } from "../storage/storage.service.js";
|
|
2
17
|
/**
|
|
3
18
|
* Content-addressed extension package store (C13): one copy per sha256 of the whole tgz.
|
|
4
19
|
* - With object storage: `deployment/plugins/blobs/<sha256>.tgz` (`blob_store = object`);
|
|
@@ -17,10 +32,46 @@ export class ExtensionBlobIntegrityError extends Error {
|
|
|
17
32
|
/** 对象存储里的键(相对 `deployment/`)。 */
|
|
18
33
|
export const blobKey = (sha256) => `plugins/blobs/${sha256}.tgz`;
|
|
19
34
|
const SHA256_RE = /^[0-9a-f]{64}$/;
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
35
|
+
/** How many packages {@link ExtensionBlobs.remember} keeps; the oldest is dropped beyond it. */
|
|
36
|
+
const REMEMBERED_MAX = 8;
|
|
37
|
+
let ExtensionBlobs = class ExtensionBlobs {
|
|
38
|
+
db;
|
|
39
|
+
txHost;
|
|
40
|
+
storage;
|
|
41
|
+
config;
|
|
42
|
+
/**
|
|
43
|
+
* CLI only: packages the CLI process imported itself and reads back before the store, since such
|
|
44
|
+
* a package may be recorded in an object store the CLI cannot read. Each entry's sha256 was
|
|
45
|
+
* checked by {@link remember}; content-addressed and immutable, so it is never stale. Bounded
|
|
46
|
+
* ({@link REMEMBERED_MAX}, oldest dropped); a kernel replica never fills it.
|
|
47
|
+
*/
|
|
48
|
+
local = new Map();
|
|
49
|
+
constructor(db, txHost,
|
|
50
|
+
/** Without an object-store extension (the CLI) packages go to PG. */
|
|
51
|
+
storage, config) {
|
|
52
|
+
this.db = db;
|
|
53
|
+
this.txHost = txHost;
|
|
54
|
+
this.storage = storage;
|
|
55
|
+
this.config = config;
|
|
56
|
+
}
|
|
57
|
+
/** `packages.maxBytes` (read at every call). */
|
|
58
|
+
maxBytes() {
|
|
59
|
+
return this.config.get().packages.maxBytes;
|
|
60
|
+
}
|
|
61
|
+
/**
|
|
62
|
+
* CLI only: keeps `bytes` for {@link get} in this process (see {@link local}). Bytes whose sha256
|
|
63
|
+
* is not `sha256` throw {@link ExtensionBlobIntegrityError} and are not kept.
|
|
64
|
+
*/
|
|
65
|
+
remember(sha256, bytes) {
|
|
66
|
+
if (createHash("sha256").update(bytes).digest("hex") !== sha256) {
|
|
67
|
+
throw new ExtensionBlobIntegrityError(sha256);
|
|
68
|
+
}
|
|
69
|
+
this.local.delete(sha256);
|
|
70
|
+
this.local.set(sha256, bytes);
|
|
71
|
+
while (this.local.size > REMEMBERED_MAX) {
|
|
72
|
+
const oldest = this.local.keys().next().value;
|
|
73
|
+
this.local.delete(oldest);
|
|
74
|
+
}
|
|
24
75
|
}
|
|
25
76
|
/**
|
|
26
77
|
* Stores a validated package (the result of {@link readExtensionPackage}) and its bytes, and writes
|
|
@@ -28,13 +79,13 @@ export class ExtensionBlobs {
|
|
|
28
79
|
* (content-addressed, idempotent; replicas writing the same package concurrently is harmless).
|
|
29
80
|
*/
|
|
30
81
|
async put(p, bytes, src) {
|
|
31
|
-
if (bytes.byteLength > this.
|
|
32
|
-
throw new Error(`the package is larger than ${this.
|
|
82
|
+
if (bytes.byteLength > this.maxBytes()) {
|
|
83
|
+
throw new Error(`the package is larger than ${this.maxBytes()} bytes`);
|
|
33
84
|
}
|
|
34
85
|
if (createHash("sha256").update(bytes).digest("hex") !== p.sha256) {
|
|
35
86
|
throw new ExtensionBlobIntegrityError(p.sha256);
|
|
36
87
|
}
|
|
37
|
-
const existing = await this.
|
|
88
|
+
const existing = await this.db
|
|
38
89
|
.selectFrom("extension_packages")
|
|
39
90
|
.select("blob_store")
|
|
40
91
|
.where("sha256", "=", p.sha256)
|
|
@@ -44,58 +95,59 @@ export class ExtensionBlobs {
|
|
|
44
95
|
await this.repair(p.sha256, existing.blob_store, bytes);
|
|
45
96
|
return;
|
|
46
97
|
}
|
|
47
|
-
const store = src.store ?? (this.
|
|
98
|
+
const store = src.store ?? (this.storage.available ? "object" : "pg");
|
|
48
99
|
if (store === "object") {
|
|
49
|
-
if (!this.
|
|
100
|
+
if (!this.storage.available)
|
|
50
101
|
throw new Error("object storage is not available");
|
|
51
|
-
await this.
|
|
102
|
+
await this.storage.deployment().put(blobKey(p.sha256), bytes, {
|
|
52
103
|
contentType: "application/gzip",
|
|
53
104
|
size: bytes.byteLength,
|
|
54
105
|
});
|
|
55
106
|
}
|
|
56
|
-
const m = p.section.manifest;
|
|
57
107
|
// the row stores the plugin's extension section as reviewed (without the name / version copy)
|
|
58
108
|
const { name: _name, version: _version, ...section } = p.section;
|
|
59
|
-
await this.
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
109
|
+
await this.record(p, section, bytes, src, store);
|
|
110
|
+
}
|
|
111
|
+
async record(p, section, bytes, src, store) {
|
|
112
|
+
const m = p.section.manifest;
|
|
113
|
+
const inserted = await this.db
|
|
114
|
+
.insertInto("extension_packages")
|
|
115
|
+
.values({
|
|
116
|
+
sha256: p.sha256,
|
|
117
|
+
name: m.name,
|
|
118
|
+
package_name: String(p.packageJson.name),
|
|
119
|
+
version: m.version,
|
|
120
|
+
size: p.size,
|
|
121
|
+
section: JSON.stringify(section),
|
|
122
|
+
blob_store: store,
|
|
123
|
+
source: src.source,
|
|
124
|
+
source_ref: src.ref,
|
|
125
|
+
uploaded_by: src.actor,
|
|
126
|
+
})
|
|
127
|
+
.onConflict((oc) => oc.column("sha256").doNothing())
|
|
128
|
+
.returning("sha256")
|
|
129
|
+
.executeTakeFirst();
|
|
130
|
+
if (inserted && store === "pg") {
|
|
131
|
+
await this.db
|
|
132
|
+
.insertInto("extension_blobs")
|
|
133
|
+
.values({ sha256: p.sha256, bytes: Buffer.from(bytes) })
|
|
74
134
|
.onConflict((oc) => oc.column("sha256").doNothing())
|
|
75
|
-
.
|
|
76
|
-
|
|
77
|
-
if (inserted && store === "pg") {
|
|
78
|
-
await trx
|
|
79
|
-
.insertInto("extension_blobs")
|
|
80
|
-
.values({ sha256: p.sha256, bytes: Buffer.from(bytes) })
|
|
81
|
-
.onConflict((oc) => oc.column("sha256").doNothing())
|
|
82
|
-
.execute();
|
|
83
|
-
}
|
|
84
|
-
});
|
|
135
|
+
.execute();
|
|
136
|
+
}
|
|
85
137
|
}
|
|
86
138
|
/** 已有记录的包:按记录的存放位置检查字节在不在,不在就写回(调用方已校验 sha256)。 */
|
|
87
139
|
async repair(sha256, store, bytes) {
|
|
88
140
|
if (store === "pg") {
|
|
89
|
-
await this.
|
|
141
|
+
await this.db
|
|
90
142
|
.insertInto("extension_blobs")
|
|
91
143
|
.values({ sha256, bytes: Buffer.from(bytes) })
|
|
92
144
|
.onConflict((oc) => oc.column("sha256").doNothing())
|
|
93
145
|
.execute();
|
|
94
146
|
return;
|
|
95
147
|
}
|
|
96
|
-
if (!this.
|
|
148
|
+
if (!this.storage.available)
|
|
97
149
|
return;
|
|
98
|
-
const d = this.
|
|
150
|
+
const d = this.storage.deployment();
|
|
99
151
|
if ((await d.head(blobKey(sha256))) === null) {
|
|
100
152
|
await d.put(blobKey(sha256), bytes, {
|
|
101
153
|
contentType: "application/gzip",
|
|
@@ -107,7 +159,10 @@ export class ExtensionBlobs {
|
|
|
107
159
|
async get(sha256) {
|
|
108
160
|
if (!SHA256_RE.test(sha256))
|
|
109
161
|
throw new Error(`invalid package sha256 "${sha256}"`);
|
|
110
|
-
const
|
|
162
|
+
const local = this.local.get(sha256);
|
|
163
|
+
if (local)
|
|
164
|
+
return local;
|
|
165
|
+
const row = await this.db
|
|
111
166
|
.selectFrom("extension_packages")
|
|
112
167
|
.select("blob_store")
|
|
113
168
|
.where("sha256", "=", sha256)
|
|
@@ -116,7 +171,7 @@ export class ExtensionBlobs {
|
|
|
116
171
|
throw new Error(`plugin package ${sha256} is not in the package store`);
|
|
117
172
|
let bytes;
|
|
118
173
|
if (row.blob_store === "pg") {
|
|
119
|
-
const b = await this.
|
|
174
|
+
const b = await this.db
|
|
120
175
|
.selectFrom("extension_blobs")
|
|
121
176
|
.select("bytes")
|
|
122
177
|
.where("sha256", "=", sha256)
|
|
@@ -126,21 +181,32 @@ export class ExtensionBlobs {
|
|
|
126
181
|
bytes = b.bytes;
|
|
127
182
|
}
|
|
128
183
|
else {
|
|
129
|
-
if (!this.
|
|
184
|
+
if (!this.storage.available)
|
|
130
185
|
throw new Error("object storage is not available");
|
|
131
|
-
const got = await this.
|
|
186
|
+
const got = await this.storage.deployment().get(blobKey(sha256));
|
|
132
187
|
if (!got) {
|
|
133
188
|
// 常见原因:对象存储换了桶 / 地址,旧桶里的包没有带过来
|
|
134
189
|
throw new Error(`plugin package ${sha256} is recorded in object storage, but deployment/${blobKey(sha256)} is missing there; if the object store's bucket or endpoint was changed, copy the deployment/ prefix from the old bucket, or upload the same package again to restore it`);
|
|
135
190
|
}
|
|
136
|
-
bytes = await readCapped(got.body, this.
|
|
191
|
+
bytes = await readCapped(got.body, this.maxBytes());
|
|
137
192
|
}
|
|
138
193
|
if (createHash("sha256").update(bytes).digest("hex") !== sha256) {
|
|
139
194
|
throw new ExtensionBlobIntegrityError(sha256);
|
|
140
195
|
}
|
|
141
196
|
return bytes;
|
|
142
197
|
}
|
|
143
|
-
}
|
|
198
|
+
};
|
|
199
|
+
__decorate([
|
|
200
|
+
Transactional()
|
|
201
|
+
], ExtensionBlobs.prototype, "record", null);
|
|
202
|
+
ExtensionBlobs = __decorate([
|
|
203
|
+
Injectable(),
|
|
204
|
+
__param(0, Inject(KernelDb)),
|
|
205
|
+
__param(1, Inject(TransactionHost)),
|
|
206
|
+
__param(2, Inject(StorageService)),
|
|
207
|
+
__param(3, Inject(KernelConfigService))
|
|
208
|
+
], ExtensionBlobs);
|
|
209
|
+
export { ExtensionBlobs };
|
|
144
210
|
async function readCapped(body, max) {
|
|
145
211
|
const reader = body.getReader();
|
|
146
212
|
const chunks = [];
|
|
@@ -1,11 +1,16 @@
|
|
|
1
1
|
import { type BootstrapManifest, type Logger } from "@capybara-hq/plugin-sdk";
|
|
2
2
|
import { type PluginImport } from "../catalog/plugin-import.js";
|
|
3
3
|
import type { KernelConfig } from "../config/schema.js";
|
|
4
|
-
import
|
|
4
|
+
import { KernelConfigService } from "../infra/config/kernel-config.service.js";
|
|
5
|
+
import { KernelDb } from "../infra/database/kernel-db.js";
|
|
6
|
+
import { TransactionHost } from "../infra/database/transaction-host.js";
|
|
7
|
+
import { LockService } from "../infra/lock/lock.service.js";
|
|
8
|
+
import type { KernelLogger } from "../log.js";
|
|
5
9
|
import { fetchNpmPackage } from "../packages/npm.js";
|
|
6
|
-
import
|
|
7
|
-
import
|
|
8
|
-
import
|
|
10
|
+
import { ExtensionAdminOps } from "./admin-ops.js";
|
|
11
|
+
import { ExtensionInstalls } from "./installs.js";
|
|
12
|
+
import { PluginApproveLock } from "./locks.js";
|
|
13
|
+
import { ExtensionRegistry } from "./registry.js";
|
|
9
14
|
/**
|
|
10
15
|
* The bootstrap step (package ecosystem spec §7, startup bootstrap spec): installs the plugins
|
|
11
16
|
* pinned by the bootstrap manifest (`packages/kernel/bootstrap.json`). It replaced the builtin
|
|
@@ -21,15 +26,14 @@ import type { ExtensionSource } from "./sources.js";
|
|
|
21
26
|
* download `bootstrap.download_failed`, a download that differs from the pin
|
|
22
27
|
* `bootstrap.integrity_mismatch` (all name the plugin), and then nothing is written. Downloading
|
|
23
28
|
* inside the lock means a fleet starting together downloads once.
|
|
24
|
-
* - The whole run holds the
|
|
25
|
-
*
|
|
26
|
-
*
|
|
27
|
-
*
|
|
29
|
+
* - The whole run holds the Redis lock `lock:bootstrap` (`LockService`, decision R5 of the Nest
|
|
30
|
+
* kernel spec: TTL {@link BOOTSTRAP_LOCK_TTL_MS}, renewed every third of it, so a run longer than the TTL keeps
|
|
31
|
+
* it and a crashed holder's lock expires within it), taken by an unbounded wait that observes
|
|
32
|
+
* the signal: when several replicas (or `capybara bootstrap` and a starting kernel) run it
|
|
33
|
+
* together only one runs it; the others wait, then find it done. A lost lock (renewal failed
|
|
34
|
+
* until expiry) aborts the run at its next step. "Done" is a `bootstrap_runs` row for the
|
|
28
35
|
* manifest's sha256 (written with the audit `bootstrap.completed` only when every entry
|
|
29
|
-
* succeeded; otherwise the next start runs it again, which is idempotent).
|
|
30
|
-
* that drops mid-run is not detected (its errors are swallowed) and the run goes on without the
|
|
31
|
-
* lock, so a second replica could run concurrently: accepted, since a concurrent import or
|
|
32
|
-
* install degrades to `catalog.version_exists` and a deploy from the package store.
|
|
36
|
+
* succeeded; otherwise the next start runs it again, which is idempotent).
|
|
33
37
|
* - Only entries new to the manifest are installed (Ruling 5): an optional entry that the last
|
|
34
38
|
* completed run already handled and that is not installed now (an enterprise admin uninstalled
|
|
35
39
|
* it) stays uninstalled -> `kept`. A required entry is always installed.
|
|
@@ -117,25 +121,42 @@ export interface BootstrapResolveOptions {
|
|
|
117
121
|
* (`bootstrap.missing_file`, `bootstrap.download_failed`, `bootstrap.integrity_mismatch`).
|
|
118
122
|
*/
|
|
119
123
|
export declare function resolveBootstrapPackages(manifest: BootstrapManifest, o: BootstrapResolveOptions): Promise<Map<string, Uint8Array>>;
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
124
|
+
/** The lock around a whole run (`lock:bootstrap`). */
|
|
125
|
+
export declare const BOOTSTRAP_LOCK_KEY = "bootstrap";
|
|
126
|
+
/** Its lifetime without renewal; a run keeps it by renewal, a crashed holder's expires. */
|
|
127
|
+
export declare const BOOTSTRAP_LOCK_TTL_MS = 120000;
|
|
128
|
+
/** Optional provider: the lock's lifetime (ms) instead of {@link BOOTSTRAP_LOCK_TTL_MS} (tests shorten it). */
|
|
129
|
+
export declare const BOOTSTRAP_LOCK_TTL: unique symbol;
|
|
130
|
+
/** What a run imports a declarative entry or an entry's catalog version with. */
|
|
131
|
+
export type BootstrapImports = Pick<PluginImport, "prepare" | "confirm">;
|
|
132
|
+
export declare class BootstrapService {
|
|
133
|
+
private readonly kdb;
|
|
134
|
+
readonly txHost: TransactionHost;
|
|
135
|
+
private readonly locks;
|
|
136
|
+
private readonly approveLock;
|
|
137
|
+
private readonly installs;
|
|
138
|
+
private readonly ops;
|
|
129
139
|
/**
|
|
130
140
|
* Config-declared extension names (an entry of the same name is kept, config wins, and no
|
|
131
|
-
* install record is created)
|
|
141
|
+
* install record is created): the start sequence records them before the bootstrap step, the
|
|
142
|
+
* CLI from its inspection.
|
|
132
143
|
*/
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
private readonly
|
|
138
|
-
constructor(
|
|
144
|
+
private readonly registry;
|
|
145
|
+
private readonly configService;
|
|
146
|
+
private readonly log;
|
|
147
|
+
/** The lock's lifetime without renewal. */
|
|
148
|
+
private readonly lockTtlMs;
|
|
149
|
+
constructor(kdb: KernelDb, txHost: TransactionHost, locks: LockService, approveLock: PluginApproveLock, installs: ExtensionInstalls, ops: ExtensionAdminOps,
|
|
150
|
+
/**
|
|
151
|
+
* Config-declared extension names (an entry of the same name is kept, config wins, and no
|
|
152
|
+
* install record is created): the start sequence records them before the bootstrap step, the
|
|
153
|
+
* CLI from its inspection.
|
|
154
|
+
*/
|
|
155
|
+
registry: ExtensionRegistry, configService: KernelConfigService, log: KernelLogger,
|
|
156
|
+
/** The lock's lifetime without renewal. */
|
|
157
|
+
lockTtlMs?: number);
|
|
158
|
+
private get db();
|
|
159
|
+
private config;
|
|
139
160
|
/** Whether the bootstrap step completed for the manifest with this sha256. */
|
|
140
161
|
isDone(manifestSha256: string): Promise<boolean>;
|
|
141
162
|
/**
|
|
@@ -151,11 +172,15 @@ export declare class BootstrapService {
|
|
|
151
172
|
dir?: string;
|
|
152
173
|
signal?: AbortSignal;
|
|
153
174
|
carry?: readonly BootstrapEntryResult[];
|
|
175
|
+
/** The plugin import a declarative entry (or an entry's catalog version) goes through. */
|
|
176
|
+
imports: BootstrapImports;
|
|
154
177
|
}): Promise<BootstrapResult>;
|
|
178
|
+
/** The `bootstrap_runs` row and the `bootstrap.completed` audit, in one transaction. */
|
|
179
|
+
private recordDone;
|
|
155
180
|
/**
|
|
156
|
-
* Runs `fn` holding
|
|
157
|
-
*
|
|
158
|
-
*
|
|
181
|
+
* Runs `fn` holding `lock:bootstrap`: waits without bound while another replica holds it
|
|
182
|
+
* (until `signal` aborts), renews it while `fn` runs and releases it afterwards. `fn` gets a
|
|
183
|
+
* signal that also aborts when the lock is lost.
|
|
159
184
|
*/
|
|
160
185
|
private locked;
|
|
161
186
|
/** The entry names the last completed run handled (undefined before any run completed). */
|
|
@@ -171,6 +196,8 @@ export declare class BootstrapService {
|
|
|
171
196
|
private deploy;
|
|
172
197
|
/** The extension of a catalog version already imported: ingest, approve, install (, enable). */
|
|
173
198
|
private deployFromStore;
|
|
199
|
+
/** The permission snapshot of a stored package (source `bootstrap`), under the approve lock. */
|
|
200
|
+
private approveStored;
|
|
174
201
|
/** Install records still `required` whose entry left the manifest lose `required`. */
|
|
175
202
|
private clearRemoved;
|
|
176
203
|
}
|