@capybara-hq/kernel 0.1.0-rc.0 → 0.1.0-rc.10
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/bootstrap.json +92 -8
- package/dist/admin/admin.controller.d.ts +52 -71
- package/dist/admin/admin.controller.js +117 -63
- package/dist/admin/admin.module.d.ts +3 -0
- package/dist/admin/admin.module.js +22 -0
- package/dist/admin/admin.schemas.d.ts +57 -0
- package/dist/admin/admin.schemas.js +50 -0
- package/dist/admin/extensions.controller.d.ts +47 -16
- package/dist/admin/extensions.controller.js +94 -23
- package/dist/admin/extensions.schemas.d.ts +7 -0
- package/dist/admin/extensions.schemas.js +10 -0
- package/dist/admin/limit-defaults.d.ts +20 -0
- package/dist/admin/limit-defaults.js +10 -0
- package/dist/admin/setup-lock.d.ts +16 -0
- package/dist/admin/setup-lock.js +47 -0
- package/dist/admin/setup.controller.d.ts +9 -9
- package/dist/admin/setup.controller.js +28 -26
- package/dist/admin/setup.service.d.ts +20 -28
- package/dist/admin/setup.service.js +65 -65
- package/dist/agents/agent-lookup.d.ts +72 -0
- package/dist/agents/agent-lookup.js +208 -0
- package/dist/agents/agent-profile.service.d.ts +31 -0
- package/dist/agents/agent-profile.service.js +122 -0
- package/dist/agents/agents.controller.d.ts +54 -169
- package/dist/agents/agents.controller.js +172 -37
- package/dist/agents/agents.module.d.ts +10 -0
- package/dist/agents/agents.module.js +71 -0
- package/dist/agents/agents.schemas.d.ts +389 -0
- package/dist/agents/agents.schemas.js +126 -0
- package/dist/agents/agents.service.d.ts +104 -76
- package/dist/agents/agents.service.js +509 -383
- package/dist/agents/definition.d.ts +133 -21
- package/dist/agents/definition.js +361 -41
- package/dist/agents/from-template.d.ts +106 -0
- package/dist/agents/from-template.js +680 -0
- package/dist/agents/from-template.service.d.ts +72 -0
- package/dist/agents/from-template.service.js +178 -0
- package/dist/agents/instruction-files.d.ts +60 -0
- package/dist/agents/instruction-files.js +111 -0
- package/dist/agents/models.controller.d.ts +44 -6
- package/dist/agents/models.controller.js +84 -8
- package/dist/agents/org-templates.d.ts +186 -0
- package/dist/agents/org-templates.js +868 -0
- package/dist/agents/pending-connector-requests.d.ts +79 -0
- package/dist/agents/pending-connector-requests.js +215 -0
- package/dist/agents/pending-connectors.controller.d.ts +39 -0
- package/dist/agents/pending-connectors.controller.js +91 -0
- package/dist/agents/pending-connectors.service.d.ts +62 -0
- package/dist/agents/pending-connectors.service.js +282 -0
- package/dist/agents/profile.d.ts +114 -0
- package/dist/agents/profile.js +55 -0
- package/dist/agents/readiness.controller.d.ts +26 -0
- package/dist/agents/readiness.controller.js +56 -0
- package/dist/agents/templates.controller.d.ts +78 -6
- package/dist/agents/templates.controller.js +154 -8
- package/dist/agents/templates.d.ts +132 -30
- package/dist/agents/templates.js +500 -46
- package/dist/agents/templates.schemas.d.ts +20 -0
- package/dist/agents/templates.schemas.js +45 -0
- package/dist/app.d.ts +93 -0
- package/dist/app.js +150 -0
- package/dist/background/background.controller.d.ts +38 -0
- package/dist/background/background.controller.js +88 -0
- package/dist/background/background.module.d.ts +10 -0
- package/dist/background/background.module.js +39 -0
- package/dist/background/background.schemas.d.ts +10 -0
- package/dist/background/background.schemas.js +16 -0
- package/dist/background/finish.d.ts +44 -0
- package/dist/background/finish.js +95 -0
- package/dist/background/launch-lock.d.ts +15 -0
- package/dist/background/launch-lock.js +40 -0
- package/dist/background/launch.d.ts +42 -0
- package/dist/background/launch.js +77 -0
- package/dist/background/poll.job.d.ts +56 -0
- package/dist/background/poll.job.js +195 -0
- package/dist/background/render.d.ts +23 -0
- package/dist/background/render.js +48 -0
- package/dist/background/session.d.ts +48 -0
- package/dist/background/session.js +80 -0
- package/dist/background/status.d.ts +35 -0
- package/dist/background/status.js +57 -0
- package/dist/background/stop.d.ts +68 -0
- package/dist/background/stop.js +244 -0
- package/dist/background/store.d.ts +167 -0
- package/dist/background/store.js +361 -0
- package/dist/background/store.module.d.ts +6 -0
- package/dist/background/store.module.js +22 -0
- package/dist/background/tasks.service.d.ts +77 -0
- package/dist/background/tasks.service.js +216 -0
- package/dist/background/wake-rules.d.ts +66 -0
- package/dist/background/wake-rules.js +113 -0
- package/dist/background/wake.d.ts +30 -0
- package/dist/background/wake.js +63 -0
- package/dist/catalog/admin-catalog.controller.d.ts +102 -52
- package/dist/catalog/admin-catalog.controller.js +222 -67
- package/dist/catalog/admin-catalog.schemas.d.ts +72 -0
- package/dist/catalog/admin-catalog.schemas.js +92 -0
- package/dist/catalog/catalog-content.d.ts +232 -0
- package/dist/catalog/catalog-content.js +367 -0
- package/dist/catalog/catalog-files.d.ts +41 -0
- package/dist/catalog/catalog-files.js +86 -0
- package/dist/catalog/catalog-import.module.d.ts +7 -0
- package/dist/catalog/catalog-import.module.js +60 -0
- package/dist/catalog/catalog-items.d.ts +290 -0
- package/dist/catalog/catalog-items.js +676 -0
- package/dist/catalog/catalog-scope.service.d.ts +260 -0
- package/dist/catalog/catalog-scope.service.js +1124 -0
- package/dist/catalog/catalog.module.d.ts +12 -0
- package/dist/catalog/catalog.module.js +81 -0
- package/dist/catalog/catalog.service.d.ts +141 -206
- package/dist/catalog/catalog.service.js +237 -528
- package/dist/catalog/claude/agents.js +15 -10
- package/dist/catalog/cli.d.ts +14 -3
- package/dist/catalog/cli.js +39 -32
- package/dist/catalog/component-promotion.d.ts +96 -0
- package/dist/catalog/component-promotion.js +395 -0
- package/dist/catalog/component-scope.controller.d.ts +90 -0
- package/dist/catalog/component-scope.controller.js +234 -0
- package/dist/catalog/component-scope.schemas.d.ts +114 -0
- package/dist/catalog/component-scope.schemas.js +97 -0
- package/dist/catalog/component-scope.service.d.ts +327 -0
- package/dist/catalog/component-scope.service.js +990 -0
- package/dist/catalog/component-state.d.ts +188 -0
- package/dist/catalog/component-state.js +455 -0
- package/dist/catalog/git-source.d.ts +9 -1
- package/dist/catalog/git-source.js +29 -2
- package/dist/catalog/job-ids.d.ts +45 -0
- package/dist/catalog/job-ids.js +40 -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/marketplace-fetch.d.ts +1 -1
- package/dist/catalog/marketplace-icons.d.ts +64 -0
- package/dist/catalog/marketplace-icons.js +131 -0
- package/dist/catalog/marketplaces.controller.d.ts +53 -44
- package/dist/catalog/marketplaces.controller.js +146 -51
- package/dist/catalog/marketplaces.schemas.d.ts +48 -0
- package/dist/catalog/marketplaces.schemas.js +53 -0
- package/dist/catalog/marketplaces.service.d.ts +136 -26
- package/dist/catalog/marketplaces.service.js +663 -281
- package/dist/catalog/org-catalog.controller.d.ts +115 -63
- package/dist/catalog/org-catalog.controller.js +207 -100
- package/dist/catalog/org-catalog.schemas.d.ts +88 -0
- package/dist/catalog/org-catalog.schemas.js +93 -0
- package/dist/catalog/org-catalog.service.d.ts +89 -216
- package/dist/catalog/org-catalog.service.js +431 -472
- package/dist/catalog/org-extension-switch.d.ts +41 -0
- package/dist/catalog/org-extension-switch.js +115 -0
- package/dist/catalog/org-extension.controller.d.ts +113 -0
- package/dist/catalog/org-extension.controller.js +271 -0
- package/dist/catalog/org-extension.schemas.d.ts +15 -0
- package/dist/catalog/org-extension.schemas.js +22 -0
- package/dist/catalog/org-plugin-uploads.controller.d.ts +77 -0
- package/dist/catalog/org-plugin-uploads.controller.js +200 -0
- package/dist/catalog/org-plugin-uploads.d.ts +71 -0
- package/dist/catalog/org-plugin-uploads.js +122 -0
- package/dist/catalog/org-plugin-uploads.schemas.d.ts +20 -0
- package/dist/catalog/org-plugin-uploads.schemas.js +32 -0
- package/dist/catalog/owned-items.d.ts +188 -0
- package/dist/catalog/owned-items.js +801 -0
- package/dist/catalog/owned-plugin-cleanup.d.ts +56 -0
- package/dist/catalog/owned-plugin-cleanup.js +194 -0
- package/dist/catalog/ownership.d.ts +172 -0
- package/dist/catalog/ownership.js +326 -0
- package/dist/catalog/platform-components.d.ts +223 -0
- package/dist/catalog/platform-components.js +763 -0
- package/dist/catalog/platform-migration.d.ts +115 -0
- package/dist/catalog/platform-migration.js +582 -0
- package/dist/catalog/plugin-import.d.ts +270 -68
- package/dist/catalog/plugin-import.js +1004 -277
- package/dist/catalog/plugin-install.d.ts +251 -65
- package/dist/catalog/plugin-install.js +1128 -344
- package/dist/catalog/plugin-package.js +14 -1
- package/dist/catalog/plugin-upgrade.d.ts +301 -188
- package/dist/catalog/plugin-upgrade.js +1256 -1068
- package/dist/catalog/request-rules.d.ts +65 -0
- package/dist/catalog/request-rules.js +217 -0
- package/dist/catalog/requests.service.d.ts +205 -117
- package/dist/catalog/requests.service.js +612 -369
- package/dist/catalog/reserved-names.d.ts +8 -0
- package/dist/catalog/reserved-names.js +42 -0
- package/dist/catalog/scope-orgs.d.ts +21 -0
- package/dist/catalog/scope-orgs.js +67 -0
- package/dist/catalog/scope-state.d.ts +35 -0
- package/dist/catalog/scope-state.js +87 -0
- package/dist/catalog/scope-sync-workers.d.ts +7 -0
- package/dist/catalog/scope-sync-workers.js +29 -0
- package/dist/catalog/scope-sync.d.ts +176 -0
- package/dist/catalog/scope-sync.js +576 -0
- package/dist/catalog/scope.d.ts +42 -0
- package/dist/catalog/scope.js +42 -0
- package/dist/catalog/unshare.d.ts +22 -0
- package/dist/catalog/unshare.js +118 -0
- package/dist/channels/actions.d.ts +6 -4
- package/dist/channels/actions.js +11 -4
- package/dist/channels/cards.d.ts +33 -11
- package/dist/channels/cards.js +96 -24
- package/dist/channels/channels.module.d.ts +40 -0
- package/dist/channels/channels.module.js +130 -0
- package/dist/channels/channels.schemas.d.ts +37 -0
- package/dist/channels/channels.schemas.js +38 -0
- package/dist/channels/connections.controller.d.ts +44 -37
- package/dist/channels/connections.controller.js +83 -38
- package/dist/channels/connections.service.d.ts +101 -30
- package/dist/channels/connections.service.js +380 -147
- package/dist/channels/inbound.d.ts +44 -38
- package/dist/channels/inbound.js +190 -44
- 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 +71 -80
- package/dist/channels/outbound.js +219 -201
- package/dist/channels/phrases.d.ts +33 -2
- package/dist/channels/phrases.js +29 -1
- package/dist/channels/supervisor.d.ts +88 -46
- package/dist/channels/supervisor.js +230 -132
- package/dist/channels/threads.d.ts +34 -8
- package/dist/channels/threads.js +79 -13
- package/dist/channels/webhook.d.ts +20 -14
- package/dist/channels/webhook.js +51 -20
- package/dist/config/docs.js +5 -1
- 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 +51 -3
- package/dist/config/schema.js +269 -27
- package/dist/conversations/access.d.ts +31 -0
- package/dist/conversations/access.js +110 -0
- package/dist/conversations/agent-tree.d.ts +46 -0
- package/dist/conversations/agent-tree.js +92 -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 +60 -22
- package/dist/conversations/attachments.service.js +249 -51
- package/dist/conversations/conversations.controller.d.ts +86 -50
- package/dist/conversations/conversations.controller.js +184 -103
- package/dist/conversations/conversations.module.d.ts +8 -0
- package/dist/conversations/conversations.module.js +72 -0
- package/dist/conversations/conversations.schemas.d.ts +52 -0
- package/dist/conversations/conversations.schemas.js +79 -0
- package/dist/conversations/conversations.service.d.ts +166 -49
- package/dist/conversations/conversations.service.js +383 -179
- package/dist/conversations/environment-status.d.ts +24 -0
- package/dist/conversations/environment-status.js +71 -0
- package/dist/conversations/event-log.d.ts +64 -27
- package/dist/conversations/event-log.js +167 -31
- package/dist/conversations/events.d.ts +252 -9
- package/dist/conversations/events.js +243 -32
- 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/message-context.d.ts +79 -0
- package/dist/conversations/message-context.js +145 -0
- package/dist/conversations/outputs-read.d.ts +11 -11
- package/dist/conversations/outputs-read.js +31 -7
- package/dist/conversations/queue.d.ts +53 -58
- package/dist/conversations/queue.js +37 -293
- package/dist/conversations/queue.service.d.ts +60 -0
- package/dist/conversations/queue.service.js +350 -0
- package/dist/conversations/titles.d.ts +83 -27
- package/dist/conversations/titles.js +195 -70
- package/dist/conversations/tree.d.ts +17 -0
- package/dist/conversations/tree.js +42 -0
- package/dist/ctx/bus.js +9 -3
- package/dist/ctx/create-ctx.d.ts +26 -1
- package/dist/ctx/create-ctx.js +45 -16
- package/dist/ctx/lock.d.ts +7 -3
- package/dist/ctx/lock.js +9 -20
- package/dist/ctx/queue.js +3 -2
- package/dist/ctx/secrets.d.ts +10 -2
- package/dist/ctx/secrets.js +7 -3
- package/dist/db/kernel-schema.d.ts +550 -25
- package/dist/db/pool.d.ts +10 -0
- package/dist/db/pool.js +4 -0
- package/dist/devices/device-auth.controller.d.ts +42 -0
- package/dist/devices/device-auth.controller.js +116 -0
- package/dist/devices/device-auth.d.ts +119 -0
- package/dist/devices/device-auth.js +403 -0
- package/dist/devices/device-auth.module.d.ts +7 -0
- package/dist/devices/device-auth.module.js +25 -0
- package/dist/devices/device-gateway.d.ts +128 -0
- package/dist/devices/device-gateway.js +530 -0
- package/dist/devices/device-provider.d.ts +89 -0
- package/dist/devices/device-provider.js +151 -0
- package/dist/devices/device-routes.d.ts +36 -0
- package/dist/devices/device-routes.js +90 -0
- package/dist/devices/devices.module.d.ts +16 -0
- package/dist/devices/devices.module.js +44 -0
- package/dist/devices/dto.d.ts +66 -0
- package/dist/devices/dto.js +44 -0
- package/dist/devices/keys.d.ts +25 -0
- package/dist/devices/keys.js +25 -0
- package/dist/devices/machines.d.ts +118 -0
- package/dist/devices/machines.js +366 -0
- package/dist/devices/relay.d.ts +100 -0
- package/dist/devices/relay.js +373 -0
- package/dist/devices/targets.d.ts +28 -0
- package/dist/devices/targets.js +73 -0
- package/dist/environments/access.d.ts +66 -0
- package/dist/environments/access.js +113 -0
- package/dist/environments/conversation-environments.d.ts +75 -0
- package/dist/environments/conversation-environments.js +231 -0
- package/dist/environments/dto.d.ts +25 -0
- package/dist/environments/dto.js +12 -0
- package/dist/environments/environments.controller.d.ts +36 -0
- package/dist/environments/environments.controller.js +124 -0
- package/dist/environments/environments.module.d.ts +8 -0
- package/dist/environments/environments.module.js +31 -0
- package/dist/environments/environments.schemas.d.ts +3 -0
- package/dist/environments/environments.schemas.js +14 -0
- package/dist/environments/environments.service.d.ts +251 -0
- package/dist/environments/environments.service.js +791 -0
- package/dist/environments/label.d.ts +11 -0
- package/dist/environments/label.js +25 -0
- package/dist/environments/legacy-cleanup.job.d.ts +34 -0
- package/dist/environments/legacy-cleanup.job.js +141 -0
- package/dist/errors.d.ts +136 -2
- package/dist/errors.js +136 -2
- 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/evals.schemas.d.ts +110 -0
- package/dist/evals/evals.schemas.js +107 -0
- package/dist/evals/jobs.d.ts +20 -0
- package/dist/evals/jobs.js +45 -0
- package/dist/evals/reconstruct.d.ts +18 -9
- package/dist/evals/reconstruct.js +36 -10
- package/dist/evals/recorded-tools.d.ts +37 -1
- package/dist/evals/recorded-tools.js +120 -10
- package/dist/evals/run-replay.d.ts +75 -10
- package/dist/evals/run-replay.js +218 -94
- package/dist/evals/runs.controller.d.ts +3 -58
- package/dist/evals/runs.controller.js +18 -50
- package/dist/evals/runs.service.d.ts +31 -52
- package/dist/evals/runs.service.js +281 -255
- package/dist/evals/sets.controller.d.ts +3 -29
- package/dist/evals/sets.controller.js +18 -39
- package/dist/evals/sets.service.d.ts +29 -13
- package/dist/evals/sets.service.js +262 -202
- package/dist/evals/snapshot.d.ts +5 -4
- package/dist/evals/snapshot.js +17 -4
- package/dist/evals/step-replay.d.ts +6 -8
- package/dist/evals/step-replay.js +17 -10
- 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.js +1 -1
- package/dist/evals/trajectory.service.d.ts +13 -7
- package/dist/evals/trajectory.service.js +56 -21
- package/dist/evals/worker.d.ts +48 -31
- package/dist/evals/worker.js +229 -123
- package/dist/extensions/admin-ops.d.ts +133 -41
- package/dist/extensions/admin-ops.js +378 -172
- package/dist/extensions/admin-view.d.ts +82 -32
- package/dist/extensions/admin-view.js +284 -71
- package/dist/extensions/approvals.d.ts +24 -10
- package/dist/extensions/approvals.js +73 -46
- package/dist/extensions/blobs.d.ts +27 -10
- package/dist/extensions/blobs.js +112 -45
- package/dist/extensions/bootstrap.d.ts +136 -46
- package/dist/extensions/bootstrap.js +417 -167
- package/dist/extensions/cli.d.ts +32 -10
- package/dist/extensions/cli.js +52 -98
- package/dist/extensions/config-hash.d.ts +10 -0
- package/dist/extensions/config-hash.js +38 -0
- package/dist/extensions/config-issues.d.ts +19 -0
- package/dist/extensions/config-issues.js +48 -0
- package/dist/extensions/config-json-schema.d.ts +43 -7
- package/dist/extensions/config-json-schema.js +124 -58
- package/dist/extensions/deployment-config-store.d.ts +55 -0
- package/dist/extensions/deployment-config-store.js +133 -0
- package/dist/extensions/deployment-config.d.ts +146 -70
- package/dist/extensions/deployment-config.js +439 -246
- package/dist/extensions/display-name.d.ts +22 -0
- package/dist/extensions/display-name.js +77 -0
- package/dist/extensions/effective-config.d.ts +127 -0
- package/dist/extensions/effective-config.js +368 -0
- package/dist/extensions/enabled.d.ts +5 -5
- package/dist/extensions/extensions.module.d.ts +8 -0
- package/dist/extensions/extensions.module.js +96 -0
- package/dist/extensions/hooks.d.ts +40 -6
- package/dist/extensions/hooks.js +83 -17
- package/dist/extensions/host.d.ts +161 -80
- package/dist/extensions/host.js +505 -213
- package/dist/extensions/installs.d.ts +73 -19
- package/dist/extensions/installs.js +174 -37
- 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 +45 -0
- package/dist/extensions/locks.js +112 -0
- package/dist/extensions/migrate-lock.d.ts +3 -4
- package/dist/extensions/org-config.d.ts +141 -49
- package/dist/extensions/org-config.js +471 -243
- package/dist/extensions/org-levels.d.ts +37 -0
- package/dist/extensions/org-levels.js +71 -0
- package/dist/extensions/org-overrides.d.ts +151 -0
- package/dist/extensions/org-overrides.js +524 -0
- package/dist/extensions/package.d.ts +14 -1
- package/dist/extensions/package.js +51 -2
- package/dist/extensions/permission-view.d.ts +59 -6
- package/dist/extensions/permission-view.js +7 -5
- package/dist/extensions/plugin-guides.d.ts +129 -0
- package/dist/extensions/plugin-guides.js +283 -0
- package/dist/extensions/plugin-icons.d.ts +54 -0
- package/dist/extensions/plugin-icons.js +125 -0
- package/dist/extensions/plugin-items.d.ts +21 -0
- package/dist/extensions/plugin-items.js +42 -0
- package/dist/extensions/point-defaults.controller.d.ts +28 -0
- package/dist/extensions/point-defaults.controller.js +69 -0
- package/dist/extensions/point-defaults.d.ts +73 -0
- package/dist/extensions/point-defaults.js +236 -0
- package/dist/extensions/point-defaults.schemas.d.ts +9 -0
- package/dist/extensions/point-defaults.schemas.js +14 -0
- package/dist/extensions/registry.d.ts +50 -2
- package/dist/extensions/registry.js +91 -4
- package/dist/extensions/resolve.d.ts +51 -1
- package/dist/extensions/resolve.js +85 -3
- package/dist/extensions/single-provider.d.ts +92 -0
- package/dist/extensions/single-provider.js +180 -0
- package/dist/extensions/sources.d.ts +19 -10
- package/dist/extensions/sources.js +34 -13
- package/dist/extensions/state.module.d.ts +9 -0
- package/dist/extensions/state.module.js +38 -0
- package/dist/extensions/unavailable.d.ts +50 -0
- package/dist/extensions/unavailable.js +115 -0
- 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 +19 -12
- package/dist/files/previewers.d.ts +21 -19
- package/dist/files/previewers.js +114 -38
- package/dist/files/previewers.schemas.d.ts +10 -0
- package/dist/files/previewers.schemas.js +9 -0
- 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 +86 -358
- package/dist/http/app.d.ts +22 -17
- package/dist/http/app.js +83 -52
- 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/http/{gateway.module.d.ts → gateway-routes.d.ts} +7 -3
- package/dist/http/gateway-routes.js +16 -0
- package/dist/http/nest-logger.d.ts +6 -5
- package/dist/http/nest-logger.js +24 -10
- package/dist/http/plugin-dispatch.d.ts +4 -1
- package/dist/http/plugin-dispatch.js +14 -2
- package/dist/identity/accounts.d.ts +130 -38
- package/dist/identity/accounts.js +373 -186
- package/dist/identity/api-tokens.d.ts +11 -7
- package/dist/identity/api-tokens.js +71 -44
- package/dist/identity/audit.d.ts +9 -5
- package/dist/identity/audit.js +5 -1
- package/dist/identity/auth.controller.d.ts +11 -10
- package/dist/identity/auth.controller.js +40 -30
- package/dist/identity/auth.guard.d.ts +16 -8
- package/dist/identity/auth.guard.js +41 -13
- package/dist/identity/binding.d.ts +9 -11
- package/dist/identity/binding.js +41 -13
- package/dist/identity/cookies.d.ts +26 -5
- package/dist/identity/cookies.js +58 -6
- 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 +59 -0
- package/dist/identity/initial-passwords.controller.d.ts +22 -0
- package/dist/identity/initial-passwords.controller.js +49 -0
- package/dist/identity/initial-passwords.d.ts +61 -0
- package/dist/identity/initial-passwords.job.d.ts +16 -0
- package/dist/identity/initial-passwords.job.js +46 -0
- package/dist/identity/initial-passwords.js +159 -0
- package/dist/identity/me.controller.d.ts +32 -15
- package/dist/identity/me.controller.js +78 -33
- package/dist/identity/me.schemas.d.ts +14 -0
- package/dist/identity/me.schemas.js +17 -0
- package/dist/identity/principal.d.ts +11 -3
- package/dist/identity/principal.js +11 -3
- package/dist/identity/sessions.d.ts +24 -10
- package/dist/identity/sessions.js +119 -42
- package/dist/identity/settings.d.ts +42 -23
- package/dist/identity/settings.js +137 -72
- 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/identity/super-admin.d.ts +20 -0
- package/dist/identity/super-admin.js +81 -0
- package/dist/inbox/inbox.module.d.ts +6 -0
- package/dist/inbox/inbox.module.js +26 -0
- package/dist/inbox/inbox.schemas.d.ts +8 -0
- package/dist/inbox/inbox.schemas.js +11 -0
- package/dist/inbox/inbox.service.d.ts +68 -11
- package/dist/inbox/inbox.service.js +104 -13
- package/dist/inbox/org-notices.d.ts +63 -0
- package/dist/inbox/org-notices.js +91 -0
- package/dist/inbox/platform-inbox.controller.d.ts +23 -0
- package/dist/inbox/platform-inbox.controller.js +58 -0
- package/dist/inbox/platform-inbox.service.d.ts +151 -0
- package/dist/inbox/platform-inbox.service.js +263 -0
- package/dist/inbox/platform-notices.d.ts +19 -0
- package/dist/inbox/platform-notices.js +9 -0
- package/dist/index.d.ts +25 -14
- package/dist/index.js +20 -9
- 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 +173 -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 +157 -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 +91 -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 +121 -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 +90 -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 +18 -0
- package/dist/infra/logging/logging.module.js +52 -0
- package/dist/infra/queue/add-job-once.d.ts +14 -0
- package/dist/infra/queue/add-job-once.js +16 -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 +13 -0
- package/dist/infra/queue/redis-connection.js +25 -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 +91 -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 +36 -0
- package/dist/infra/throttler/named-throttlers.js +157 -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 +20 -0
- package/dist/infra/tokens.js +20 -0
- package/dist/infra/validation/create-zod-dto.d.ts +23 -0
- package/dist/infra/validation/create-zod-dto.js +35 -0
- package/dist/infra/validation/parse-with-zod.d.ts +7 -0
- package/dist/infra/validation/parse-with-zod.js +12 -0
- package/dist/infra/validation/validation.module.d.ts +3 -0
- package/dist/infra/validation/validation.module.js +16 -0
- package/dist/infra/validation/zod-params.d.ts +7 -0
- package/dist/infra/validation/zod-params.js +42 -0
- package/dist/infra/validation/zod-validation.pipe.d.ts +11 -0
- package/dist/infra/validation/zod-validation.pipe.js +31 -0
- package/dist/kernel.d.ts +9 -241
- package/dist/kernel.js +8 -1305
- package/dist/kernel.module.d.ts +17 -0
- package/dist/kernel.module.js +145 -0
- package/dist/lifecycle/kernel-lifecycle.d.ts +140 -0
- package/dist/lifecycle/kernel-lifecycle.js +465 -0
- package/dist/lifecycle/tokens.d.ts +3 -0
- package/dist/lifecycle/tokens.js +3 -0
- package/dist/log-config.d.ts +9 -0
- package/dist/log-config.js +27 -0
- package/dist/log-context.d.ts +34 -0
- package/dist/log-context.js +44 -0
- package/dist/log-loki.d.ts +34 -0
- package/dist/log-loki.js +145 -0
- package/dist/log.d.ts +53 -10
- package/dist/log.js +168 -18
- package/dist/models/embeddings.d.ts +82 -0
- package/dist/models/embeddings.js +326 -0
- package/dist/models/enablement.controller.d.ts +40 -0
- package/dist/models/enablement.controller.js +74 -0
- package/dist/models/enablement.d.ts +101 -0
- package/dist/models/enablement.js +264 -0
- package/dist/models/models.module.d.ts +7 -0
- package/dist/models/models.module.js +36 -0
- package/dist/models/org-models.schemas.d.ts +8 -0
- package/dist/models/org-models.schemas.js +22 -0
- package/dist/models/prices.d.ts +13 -5
- package/dist/models/prices.js +69 -39
- package/dist/models/purposes.controller.d.ts +6 -4
- package/dist/models/purposes.controller.js +16 -11
- package/dist/models/purposes.d.ts +103 -23
- package/dist/models/purposes.js +208 -77
- package/dist/net/public-address.js +3 -2
- package/dist/orgs/directory-sync.controller.d.ts +1 -1
- package/dist/orgs/directory-sync.controller.js +2 -2
- package/dist/orgs/directory-sync.d.ts +74 -35
- package/dist/orgs/directory-sync.js +243 -132
- 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 +61 -60
- package/dist/orgs/offboarding.js +206 -95
- package/dist/orgs/org-lock.d.ts +33 -19
- package/dist/orgs/org-lock.js +94 -35
- package/dist/orgs/org.guard.d.ts +11 -1
- package/dist/orgs/org.guard.js +45 -34
- package/dist/orgs/orgs.controller.d.ts +13 -16
- package/dist/orgs/orgs.controller.js +29 -20
- package/dist/orgs/orgs.module.d.ts +6 -0
- package/dist/orgs/orgs.module.js +71 -0
- package/dist/orgs/orgs.schemas.d.ts +8 -0
- package/dist/orgs/orgs.schemas.js +16 -0
- package/dist/orgs/orgs.service.d.ts +47 -21
- package/dist/orgs/orgs.service.js +166 -91
- package/dist/orgs/roles.d.ts +1 -1
- package/dist/orgs/roles.js +5 -1
- package/dist/orgs/settings.controller.d.ts +2 -2
- package/dist/orgs/settings.controller.js +8 -6
- package/dist/orgs/settings.service.d.ts +45 -14
- package/dist/orgs/settings.service.js +110 -51
- package/dist/overrides.d.ts +63 -0
- package/dist/overrides.js +34 -0
- package/dist/platform/actor.d.ts +48 -0
- package/dist/platform/actor.js +100 -0
- package/dist/platform/agent-docs.d.ts +18 -0
- package/dist/platform/agent-docs.js +59 -0
- package/dist/platform/availability.d.ts +14 -0
- package/dist/platform/availability.js +43 -0
- package/dist/platform/errors.d.ts +28 -0
- package/dist/platform/errors.js +65 -0
- package/dist/platform/exclusions.d.ts +11 -0
- package/dist/platform/exclusions.js +667 -0
- package/dist/platform/method.d.ts +6 -0
- package/dist/platform/method.js +15 -0
- package/dist/platform/operation.d.ts +169 -0
- package/dist/platform/operation.js +90 -0
- package/dist/platform/ops/accounts.ops.d.ts +32 -0
- package/dist/platform/ops/accounts.ops.js +291 -0
- package/dist/platform/ops/admin.ops.d.ts +36 -0
- package/dist/platform/ops/admin.ops.js +389 -0
- package/dist/platform/ops/agent-skills.ops.d.ts +24 -0
- package/dist/platform/ops/agent-skills.ops.js +226 -0
- package/dist/platform/ops/agent-templates.ops.d.ts +17 -0
- package/dist/platform/ops/agent-templates.ops.js +272 -0
- package/dist/platform/ops/agents.ops.d.ts +37 -0
- package/dist/platform/ops/agents.ops.js +717 -0
- package/dist/platform/ops/approvals.ops.d.ts +30 -0
- package/dist/platform/ops/approvals.ops.js +116 -0
- package/dist/platform/ops/background.ops.d.ts +14 -0
- package/dist/platform/ops/background.ops.js +134 -0
- package/dist/platform/ops/catalog-admin.ops.d.ts +74 -0
- package/dist/platform/ops/catalog-admin.ops.js +599 -0
- package/dist/platform/ops/channels.ops.d.ts +16 -0
- package/dist/platform/ops/channels.ops.js +195 -0
- package/dist/platform/ops/components.ops.d.ts +46 -0
- package/dist/platform/ops/components.ops.js +853 -0
- package/dist/platform/ops/connectors.ops.d.ts +17 -0
- package/dist/platform/ops/connectors.ops.js +188 -0
- package/dist/platform/ops/conversations.ops.d.ts +30 -0
- package/dist/platform/ops/conversations.ops.js +470 -0
- package/dist/platform/ops/environments.ops.d.ts +26 -0
- package/dist/platform/ops/environments.ops.js +311 -0
- package/dist/platform/ops/errors.d.ts +16 -0
- package/dist/platform/ops/errors.js +30 -0
- package/dist/platform/ops/evals.ops.d.ts +28 -0
- package/dist/platform/ops/evals.ops.js +783 -0
- package/dist/platform/ops/extensions-admin.ops.d.ts +25 -0
- package/dist/platform/ops/extensions-admin.ops.js +372 -0
- package/dist/platform/ops/extensions.ops.d.ts +25 -0
- package/dist/platform/ops/extensions.ops.js +347 -0
- package/dist/platform/ops/inbox.ops.d.ts +25 -0
- package/dist/platform/ops/inbox.ops.js +378 -0
- package/dist/platform/ops/marketplaces.ops.d.ts +22 -0
- package/dist/platform/ops/marketplaces.ops.js +466 -0
- package/dist/platform/ops/models.ops.d.ts +25 -0
- package/dist/platform/ops/models.ops.js +232 -0
- package/dist/platform/ops/org-plugins.ops.d.ts +29 -0
- package/dist/platform/ops/org-plugins.ops.js +329 -0
- package/dist/platform/ops/org-settings.ops.d.ts +16 -0
- package/dist/platform/ops/org-settings.ops.js +102 -0
- package/dist/platform/ops/orgs.ops.d.ts +28 -0
- package/dist/platform/ops/orgs.ops.js +295 -0
- package/dist/platform/ops/other-orgs.d.ts +20 -0
- package/dist/platform/ops/other-orgs.js +72 -0
- package/dist/platform/ops/paging.d.ts +14 -0
- package/dist/platform/ops/paging.js +20 -0
- package/dist/platform/ops/platform.ops.d.ts +28 -0
- package/dist/platform/ops/platform.ops.js +204 -0
- package/dist/platform/ops/plugins.ops.d.ts +35 -0
- package/dist/platform/ops/plugins.ops.js +476 -0
- package/dist/platform/ops/previewers.ops.d.ts +14 -0
- package/dist/platform/ops/previewers.ops.js +109 -0
- package/dist/platform/ops/requests.ops.d.ts +14 -0
- package/dist/platform/ops/requests.ops.js +191 -0
- package/dist/platform/ops/role.d.ts +4 -0
- package/dist/platform/ops/role.js +10 -0
- package/dist/platform/ops/skills.ops.d.ts +17 -0
- package/dist/platform/ops/skills.ops.js +216 -0
- package/dist/platform/ops/summary.d.ts +10 -0
- package/dist/platform/ops/summary.js +18 -0
- package/dist/platform/ops/unavailable.d.ts +23 -0
- package/dist/platform/ops/unavailable.js +118 -0
- package/dist/platform/parity.d.ts +33 -0
- package/dist/platform/parity.js +272 -0
- package/dist/platform/platform-ops.module.d.ts +39 -0
- package/dist/platform/platform-ops.module.js +122 -0
- package/dist/platform/platform.module.d.ts +8 -0
- package/dist/platform/platform.module.js +25 -0
- package/dist/platform/registry.d.ts +30 -0
- package/dist/platform/registry.js +111 -0
- package/dist/platform/route-schemas.d.ts +18 -0
- package/dist/platform/route-schemas.js +63 -0
- package/dist/roles/gateway-role.d.ts +54 -0
- package/dist/roles/gateway-role.js +118 -0
- package/dist/roles/gateway.module.d.ts +9 -0
- package/dist/roles/gateway.module.js +31 -0
- package/dist/roles/worker-role.d.ts +65 -0
- package/dist/roles/worker-role.js +151 -0
- package/dist/roles/worker.module.d.ts +14 -0
- package/dist/roles/worker.module.js +106 -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 +21 -13
- package/dist/runtime/context/build.js +106 -29
- package/dist/runtime/context/claude-tools.d.ts +4 -1
- package/dist/runtime/context/claude-tools.js +13 -12
- package/dist/runtime/context/compaction.js +24 -1
- package/dist/runtime/context/environment-paths.d.ts +40 -0
- package/dist/runtime/context/environment-paths.js +48 -0
- package/dist/runtime/context/legacy-text.d.ts +22 -0
- package/dist/runtime/context/legacy-text.js +37 -0
- package/dist/runtime/context/reminders.d.ts +2 -0
- package/dist/runtime/context/reminders.js +2 -0
- package/dist/runtime/context/run-context.d.ts +65 -0
- package/dist/runtime/context/run-context.js +215 -0
- package/dist/runtime/context/skills.d.ts +29 -11
- package/dist/runtime/context/skills.js +46 -32
- package/dist/runtime/context/tool-changes.d.ts +27 -0
- package/dist/runtime/context/tool-changes.js +60 -0
- package/dist/runtime/conversation-lock.d.ts +20 -11
- package/dist/runtime/conversation-lock.js +62 -72
- package/dist/runtime/hook-calls.d.ts +11 -4
- package/dist/runtime/hook-calls.js +41 -13
- package/dist/runtime/job-ids.d.ts +10 -0
- package/dist/runtime/job-ids.js +10 -0
- package/dist/runtime/langgraph-loop.d.ts +3 -1
- package/dist/runtime/langgraph-loop.js +37 -18
- package/dist/runtime/loop.d.ts +42 -6
- 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 +50 -74
- package/dist/runtime/maintenance.js +166 -136
- package/dist/runtime/model-call.d.ts +61 -15
- package/dist/runtime/model-call.js +128 -84
- package/dist/runtime/providers.d.ts +158 -27
- package/dist/runtime/providers.js +373 -63
- 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-context.service.d.ts +65 -0
- package/dist/runtime/run-context.service.js +236 -0
- package/dist/runtime/run-control.d.ts +43 -0
- package/dist/runtime/run-control.js +89 -0
- package/dist/runtime/run-drafts.d.ts +85 -0
- package/dist/runtime/run-drafts.js +230 -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 +46 -0
- package/dist/runtime/run-jobs.js +91 -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 +90 -58
- package/dist/runtime/run-queue.js +566 -297
- package/dist/runtime/run-steps.d.ts +39 -0
- package/dist/runtime/run-steps.js +96 -0
- package/dist/runtime/run-worker.d.ts +134 -77
- package/dist/runtime/run-worker.js +412 -236
- package/dist/runtime/runtime.module.d.ts +10 -0
- package/dist/runtime/runtime.module.js +122 -0
- package/dist/runtime/step-log.d.ts +51 -0
- package/dist/runtime/step-log.js +111 -0
- package/dist/runtime/stream.controller.d.ts +28 -9
- package/dist/runtime/stream.controller.js +72 -13
- package/dist/runtime/stream.d.ts +27 -6
- package/dist/runtime/stream.js +102 -7
- package/dist/runtime/subagents/child.d.ts +58 -51
- package/dist/runtime/subagents/child.js +105 -86
- package/dist/runtime/subagents/definition.d.ts +32 -28
- package/dist/runtime/subagents/definition.js +89 -143
- package/dist/runtime/subagents/deliveries.d.ts +71 -0
- package/dist/runtime/subagents/deliveries.js +228 -0
- package/dist/runtime/subagents/dispatch.d.ts +197 -27
- package/dist/runtime/subagents/dispatch.js +336 -270
- package/dist/runtime/subagents/limits.d.ts +32 -8
- package/dist/runtime/subagents/limits.js +44 -8
- package/dist/runtime/subagents/messages.d.ts +95 -0
- package/dist/runtime/subagents/messages.js +328 -0
- package/dist/runtime/subagents/org-agents.d.ts +4 -4
- package/dist/runtime/subagents/org-agents.js +3 -2
- package/dist/runtime/subagents/preamble.d.ts +4 -4
- package/dist/runtime/subagents/preamble.js +9 -7
- package/dist/runtime/subagents/progress.d.ts +10 -8
- package/dist/runtime/subagents/progress.js +11 -6
- package/dist/runtime/subagents/render.d.ts +30 -0
- package/dist/runtime/subagents/render.js +53 -0
- package/dist/runtime/subagents/roster.d.ts +27 -10
- package/dist/runtime/subagents/roster.js +49 -13
- package/dist/runtime/subagents/skill-fork.d.ts +10 -10
- package/dist/runtime/subagents/skill-fork.js +23 -8
- package/dist/runtime/subagents/status.d.ts +14 -0
- package/dist/runtime/subagents/status.js +23 -0
- package/dist/runtime/subagents/subagents.service.d.ts +43 -0
- package/dist/runtime/subagents/subagents.service.js +106 -0
- package/dist/runtime/usage-report-jobs.d.ts +88 -0
- package/dist/runtime/usage-report-jobs.js +158 -0
- package/dist/runtime/usage-report.d.ts +121 -83
- package/dist/runtime/usage-report.js +355 -180
- package/dist/runtime/waits.d.ts +258 -81
- package/dist/runtime/waits.js +800 -263
- package/dist/sandbox/job-ids.d.ts +10 -0
- package/dist/sandbox/job-ids.js +10 -0
- package/dist/sandbox/jobs.d.ts +68 -0
- package/dist/sandbox/jobs.js +150 -0
- package/dist/sandbox/leases.d.ts +73 -82
- package/dist/sandbox/leases.js +162 -346
- package/dist/sandbox/providers.d.ts +46 -0
- package/dist/sandbox/providers.js +83 -0
- package/dist/sandbox/sandbox.module.d.ts +9 -0
- package/dist/sandbox/sandbox.module.js +36 -0
- package/dist/sandbox/sandbox.service.d.ts +359 -151
- package/dist/sandbox/sandbox.service.js +950 -435
- package/dist/sandbox/unreachable.d.ts +30 -0
- package/dist/sandbox/unreachable.js +108 -0
- package/dist/skills/catalog.d.ts +40 -26
- package/dist/skills/catalog.js +120 -99
- package/dist/skills/changes.controller.d.ts +11 -4
- package/dist/skills/changes.controller.js +34 -9
- package/dist/skills/changes.service.d.ts +31 -21
- package/dist/skills/changes.service.js +426 -368
- package/dist/skills/invocable.controller.d.ts +2 -2
- package/dist/skills/invocable.controller.js +10 -7
- package/dist/skills/invocation-keys.d.ts +1 -1
- package/dist/skills/invocation-keys.js +1 -1
- package/dist/skills/invoke.d.ts +19 -18
- package/dist/skills/invoke.js +68 -24
- package/dist/skills/package.d.ts +20 -1
- package/dist/skills/package.js +28 -1
- package/dist/skills/skills.controller.d.ts +33 -7
- package/dist/skills/skills.controller.js +79 -12
- package/dist/skills/skills.module.d.ts +6 -0
- package/dist/skills/skills.module.js +39 -0
- package/dist/skills/skills.schemas.d.ts +48 -0
- package/dist/skills/skills.schemas.js +61 -0
- package/dist/skills/skills.service.d.ts +151 -44
- package/dist/skills/skills.service.js +636 -204
- package/dist/skills/usable.d.ts +81 -0
- package/dist/skills/usable.js +379 -0
- 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/time-zone.d.ts +5 -0
- package/dist/time-zone.js +19 -0
- package/dist/tools/approvals.controller.d.ts +1 -1
- package/dist/tools/approvals.controller.js +14 -11
- package/dist/tools/approvals.schemas.d.ts +21 -0
- package/dist/tools/approvals.schemas.js +15 -0
- package/dist/tools/approvals.service.d.ts +53 -27
- package/dist/tools/approvals.service.js +365 -260
- package/dist/tools/breaker.d.ts +2 -2
- package/dist/tools/breaker.js +21 -3
- package/dist/tools/builtin-names.d.ts +109 -0
- package/dist/tools/builtin-names.js +173 -0
- package/dist/tools/builtins/agent.d.ts +27 -25
- package/dist/tools/builtins/agent.js +66 -63
- 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 +41 -0
- package/dist/tools/builtins/builtin-tools.js +151 -0
- package/dist/tools/builtins/current-time.d.ts +26 -0
- package/dist/tools/builtins/current-time.js +99 -0
- package/dist/tools/builtins/handback.d.ts +28 -0
- package/dist/tools/builtins/handback.js +53 -0
- package/dist/tools/builtins/platform.d.ts +51 -0
- package/dist/tools/builtins/platform.js +451 -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 +293 -41
- package/dist/tools/builtins/sandbox/common.d.ts +142 -40
- package/dist/tools/builtins/sandbox/common.js +227 -65
- package/dist/tools/builtins/sandbox/deliver.d.ts +1 -1
- package/dist/tools/builtins/sandbox/deliver.js +21 -18
- package/dist/tools/builtins/sandbox/edit.d.ts +1 -1
- package/dist/tools/builtins/sandbox/edit.js +65 -51
- 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 +19 -14
- package/dist/tools/builtins/sandbox/grep.d.ts +7 -4
- package/dist/tools/builtins/sandbox/grep.js +155 -36
- package/dist/tools/builtins/sandbox/index.d.ts +9 -5
- package/dist/tools/builtins/sandbox/index.js +13 -5
- package/dist/tools/builtins/sandbox/read.d.ts +2 -2
- package/dist/tools/builtins/sandbox/read.js +30 -20
- package/dist/tools/builtins/sandbox/task-output.d.ts +79 -0
- package/dist/tools/builtins/sandbox/task-output.js +334 -0
- package/dist/tools/builtins/sandbox/task-stop.d.ts +10 -0
- package/dist/tools/builtins/sandbox/task-stop.js +113 -0
- package/dist/tools/builtins/sandbox/write.d.ts +1 -1
- package/dist/tools/builtins/sandbox/write.js +52 -45
- package/dist/tools/builtins/send-message.d.ts +56 -0
- package/dist/tools/builtins/send-message.js +100 -0
- package/dist/tools/builtins/skill-load.d.ts +32 -21
- package/dist/tools/builtins/skill-load.js +125 -74
- package/dist/tools/builtins/skill-write.d.ts +4 -4
- package/dist/tools/builtins/skill-write.js +12 -12
- package/dist/tools/builtins/tool-search.d.ts +13 -9
- package/dist/tools/builtins/tool-search.js +25 -14
- package/dist/tools/builtins/web/errors.d.ts +8 -0
- package/dist/tools/builtins/web/errors.js +53 -0
- package/dist/tools/builtins/web/extract.d.ts +62 -0
- package/dist/tools/builtins/web/extract.js +271 -0
- package/dist/tools/builtins/web/fetch.d.ts +55 -0
- package/dist/tools/builtins/web/fetch.js +175 -0
- package/dist/tools/builtins/web/index.d.ts +13 -0
- package/dist/tools/builtins/web/index.js +12 -0
- package/dist/tools/builtins/web/page-cache.d.ts +25 -0
- package/dist/tools/builtins/web/page-cache.js +77 -0
- package/dist/tools/builtins/web/search.d.ts +25 -0
- package/dist/tools/builtins/web/search.js +210 -0
- package/dist/tools/builtins/web/url.d.ts +17 -0
- package/dist/tools/builtins/web/url.js +43 -0
- 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 +16 -3
- package/dist/tools/connectors.controller.js +34 -14
- package/dist/tools/connectors.schemas.d.ts +12 -0
- package/dist/tools/connectors.schemas.js +19 -0
- package/dist/tools/connectors.service.d.ts +80 -18
- package/dist/tools/connectors.service.js +529 -358
- package/dist/tools/credentials.d.ts +20 -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/extension-tools.controller.d.ts +14 -0
- package/dist/tools/extension-tools.controller.js +37 -0
- package/dist/tools/info.d.ts +73 -13
- package/dist/tools/info.js +151 -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 +45 -10
- package/dist/tools/oauth/tokens.js +70 -24
- package/dist/tools/org-tool-switches.d.ts +88 -0
- package/dist/tools/org-tool-switches.js +201 -0
- package/dist/tools/outputs.d.ts +13 -4
- package/dist/tools/outputs.js +48 -4
- package/dist/tools/pipeline.d.ts +108 -80
- package/dist/tools/pipeline.js +396 -409
- package/dist/tools/policy.d.ts +4 -17
- package/dist/tools/policy.js +49 -35
- 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 +215 -84
- package/dist/tools/registry.js +382 -264
- 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 +113 -0
- package/dist/tools/validate.js +1 -1
- 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 +10 -57
- package/dist/ui/views.js +58 -46
- package/package.json +15 -3
- package/src/migrations/0063_tool_keys_claude_code.sql +220 -0
- package/src/migrations/0064_account_last_org.sql +7 -0
- package/src/migrations/0065_conversation_archive.sql +8 -0
- package/src/migrations/0066_extension_display_name.sql +4 -0
- package/src/migrations/0067_agent_profiles.sql +20 -0
- package/src/migrations/0068_agent_avatar_uploads.sql +7 -0
- package/src/migrations/0069_attachments_agent_idx.sql +3 -0
- package/src/migrations/0070_background_tasks.sql +37 -0
- package/src/migrations/0071_background_tasks_reserve.sql +6 -0
- package/src/migrations/0072_background_tasks_stopping.sql +5 -0
- package/src/migrations/0073_org_extension_point_defaults.sql +11 -0
- package/src/migrations/0074_subagent_tree.sql +50 -0
- package/src/migrations/0075_plugin_scope.sql +61 -0
- package/src/migrations/0076_skills_created_by_nullable.sql +6 -0
- package/src/migrations/0077_scope_requests.sql +52 -0
- package/src/migrations/0078_scope_grant_switches.sql +18 -0
- package/src/migrations/0079_scope_live_install_switches.sql +19 -0
- package/src/migrations/0080_rename_enterprise_admin.sql +18 -0
- package/src/migrations/0081_platform_components.sql +129 -0
- package/src/migrations/0082_platform_migration.sql +33 -0
- package/src/migrations/0083_plugin_scope_sync_failures.sql +15 -0
- package/src/migrations/0084_org_owned_items.sql +85 -0
- package/src/migrations/0085_agent_templates_phase4.sql +45 -0
- package/src/migrations/0086_org_layering.sql +30 -0
- package/src/migrations/0087_approval_summary.sql +6 -0
- package/src/migrations/0088_environments.sql +80 -0
- package/src/migrations/0089_model_kinds_usage.sql +38 -0
- package/src/migrations/0090_initial_passwords.sql +27 -0
- package/src/migrations/0091_account_time_zone.sql +4 -0
- package/src/migrations/0092_tools_default_on.sql +27 -0
- package/src/migrations/0093_connected_environments.sql +37 -0
- package/src/migrations/0094_environment_paths_idx.sql +7 -0
- package/src/migrations/0095_environment_files_resets.sql +5 -0
- package/src/migrations/0096_environment_demoted_default.sql +18 -0
- package/src/migrations/0097_extension_installs_enabled_at.sql +16 -0
- package/src/migrations/0098_single_provider_running_first.sql +41 -0
- package/src/migrations/0099_channel_connection_guide_ack.sql +6 -0
- package/src/migrations/0100_catalog_files.sql +13 -0
- package/src/migrations/0101_marketplace_icons.sql +32 -0
- package/dist/catalog/upgrade-targets.d.ts +0 -59
- package/dist/catalog/upgrade-targets.js +0 -90
- package/dist/conversations/sandbox-status.d.ts +0 -21
- package/dist/conversations/sandbox-status.js +0 -24
- package/dist/extensions/org-config.controller.d.ts +0 -24
- package/dist/extensions/org-config.controller.js +0 -59
- package/dist/http/gateway.module.js +0 -13
- 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/enterprise-admin.d.ts +0 -14
- package/dist/identity/enterprise-admin.js +0 -27
- 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
|
@@ -0,0 +1,157 @@
|
|
|
1
|
+
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
|
2
|
+
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
3
|
+
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
4
|
+
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
5
|
+
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
6
|
+
};
|
|
7
|
+
var __param = (this && this.__param) || function (paramIndex, decorator) {
|
|
8
|
+
return function (target, key) { decorator(target, key, paramIndex); }
|
|
9
|
+
};
|
|
10
|
+
import { Inject, Injectable } from "@nestjs/common";
|
|
11
|
+
import { changedPaths, configFields, getPath, secretValues, setPath } from "../../config/fields.js";
|
|
12
|
+
import { resolveConfig } from "../../config/load.js";
|
|
13
|
+
import { KernelConfigSchema } from "../../config/schema.js";
|
|
14
|
+
import { KERNEL_CONFIG_INPUT, KERNEL_LOGGER } from "../tokens.js";
|
|
15
|
+
/**
|
|
16
|
+
* Appliers of the hot-reloadable fields: the key is a dotted path marked `hot` in the schema. A
|
|
17
|
+
* hot field without an applier here makes the service refuse to start, so "marked hot but never
|
|
18
|
+
* takes effect" cannot happen.
|
|
19
|
+
*/
|
|
20
|
+
const HOT_APPLIERS = {
|
|
21
|
+
"log.level": (k, v) => k.log.setLevel(String(v)),
|
|
22
|
+
// The runtime reads the concurrency cap through the config service on every quota request.
|
|
23
|
+
"runtime.orgConcurrency": () => { },
|
|
24
|
+
// Eval org concurrency is read the same way at every quota request.
|
|
25
|
+
"evals.orgConcurrency": () => { },
|
|
26
|
+
// Login methods and trusted identity sources are read on every request.
|
|
27
|
+
"auth.loginSources": () => { },
|
|
28
|
+
"auth.trustedIdentitySources": () => { },
|
|
29
|
+
// The hook registry reads the time limit on every run.
|
|
30
|
+
"hooks.timeoutMs": () => { },
|
|
31
|
+
// The provider registry reads the list time limit at every listModels call.
|
|
32
|
+
"models.listTimeoutMs": () => { },
|
|
33
|
+
"models.embedTimeoutMs": () => { },
|
|
34
|
+
// SandboxService reads the shared-lease cap at every acquisition.
|
|
35
|
+
"sandbox.maxConcurrentCommands": () => { },
|
|
36
|
+
// The environments service reads the personal limit at every create.
|
|
37
|
+
"environments.maxPersonal": () => { },
|
|
38
|
+
// The device relay reads the reconnect grace at every disconnect and token response.
|
|
39
|
+
"environments.device.reconnectGraceSeconds": () => { },
|
|
40
|
+
// Sub-agent limits are read at every dispatch, child step and tool resolution.
|
|
41
|
+
"subagents.maxDepth": () => { },
|
|
42
|
+
"subagents.maxConcurrentPerConversation": () => { },
|
|
43
|
+
"subagents.maxDispatchesPerRun": () => { },
|
|
44
|
+
"subagents.maxTokensPerRun": () => { },
|
|
45
|
+
// The web tools read these limits through the config service on every call.
|
|
46
|
+
"web.search.maxResults": () => { },
|
|
47
|
+
"web.fetch.maxPageChars": () => { },
|
|
48
|
+
"web.fetch.maxAnswerTokens": () => { },
|
|
49
|
+
"web.fetch.cacheSeconds": () => { },
|
|
50
|
+
"web.fetch.timeoutMs": () => { },
|
|
51
|
+
};
|
|
52
|
+
/**
|
|
53
|
+
* Environment variables of renamed config keys, with their replacements: warned about once when
|
|
54
|
+
* the service starts (agent map spec §6: `subagents.maxConcurrentPerRun` became
|
|
55
|
+
* `subagents.maxConcurrentPerConversation`). A retired file or Nacos key cannot be told here: the
|
|
56
|
+
* schema strips unknown keys before the kernel receives its config.
|
|
57
|
+
*/
|
|
58
|
+
const RETIRED_ENV = [
|
|
59
|
+
[
|
|
60
|
+
"CAPYBARA_SUBAGENTS__MAX_CONCURRENT_PER_RUN",
|
|
61
|
+
"CAPYBARA_SUBAGENTS__MAX_CONCURRENT_PER_CONVERSATION",
|
|
62
|
+
],
|
|
63
|
+
];
|
|
64
|
+
const HOT_PATHS = configFields(KernelConfigSchema)
|
|
65
|
+
.filter((f) => f.meta?.hot)
|
|
66
|
+
.map((f) => f.path);
|
|
67
|
+
const errMsg = (e) => (e instanceof Error ? e.message : String(e));
|
|
68
|
+
/** The current kernel config: `get()` always returns the latest hot-applied value. */
|
|
69
|
+
let KernelConfigService = class KernelConfigService {
|
|
70
|
+
log;
|
|
71
|
+
current;
|
|
72
|
+
env;
|
|
73
|
+
listeners = new Set();
|
|
74
|
+
constructor(input, log) {
|
|
75
|
+
this.log = log;
|
|
76
|
+
for (const p of HOT_PATHS) {
|
|
77
|
+
if (!HOT_APPLIERS[p])
|
|
78
|
+
throw new Error(`config field ${p} is marked hot but has no applier`);
|
|
79
|
+
}
|
|
80
|
+
this.current = input.config;
|
|
81
|
+
this.env = input.env ?? process.env;
|
|
82
|
+
log.setLevel(input.config.log.level);
|
|
83
|
+
log.addSecrets(secretValues(KernelConfigSchema, input.config));
|
|
84
|
+
for (const [old, now] of RETIRED_ENV) {
|
|
85
|
+
if (this.env[old] !== undefined) {
|
|
86
|
+
log.warn(`${old} is no longer read and is ignored; set ${now} instead`, { env: old });
|
|
87
|
+
}
|
|
88
|
+
}
|
|
89
|
+
}
|
|
90
|
+
get() {
|
|
91
|
+
return this.current;
|
|
92
|
+
}
|
|
93
|
+
/** Subscribes to applied changes (hot fields only); returns the unsubscribe function. */
|
|
94
|
+
onChange(listener) {
|
|
95
|
+
this.listeners.add(listener);
|
|
96
|
+
return () => {
|
|
97
|
+
this.listeners.delete(listener);
|
|
98
|
+
};
|
|
99
|
+
}
|
|
100
|
+
/**
|
|
101
|
+
* Hot reload: re-validates the raw config; only hot fields are applied, other changes warn and
|
|
102
|
+
* list the keys needing a restart; a validation failure keeps the current config.
|
|
103
|
+
*/
|
|
104
|
+
apply(raw) {
|
|
105
|
+
const log = this.log;
|
|
106
|
+
let next;
|
|
107
|
+
try {
|
|
108
|
+
next = resolveConfig(raw, this.env);
|
|
109
|
+
}
|
|
110
|
+
catch (e) {
|
|
111
|
+
log.error("config reload rejected; keeping current config", { error: errMsg(e) });
|
|
112
|
+
return;
|
|
113
|
+
}
|
|
114
|
+
log.addSecrets(secretValues(KernelConfigSchema, next));
|
|
115
|
+
const changed = changedPaths(KernelConfigSchema, this.current, next);
|
|
116
|
+
if (changed.length === 0)
|
|
117
|
+
return;
|
|
118
|
+
const hot = changed.filter((p) => HOT_PATHS.includes(p));
|
|
119
|
+
const restart = changed.filter((p) => !HOT_PATHS.includes(p));
|
|
120
|
+
const updated = structuredClone(this.current);
|
|
121
|
+
const applied = [];
|
|
122
|
+
for (const p of hot) {
|
|
123
|
+
try {
|
|
124
|
+
HOT_APPLIERS[p]({ log }, getPath(next, p));
|
|
125
|
+
setPath(updated, p, getPath(next, p));
|
|
126
|
+
applied.push(p);
|
|
127
|
+
}
|
|
128
|
+
catch (e) {
|
|
129
|
+
log.error("config reload: cannot apply field; keeping current value", {
|
|
130
|
+
key: p,
|
|
131
|
+
error: errMsg(e),
|
|
132
|
+
});
|
|
133
|
+
}
|
|
134
|
+
}
|
|
135
|
+
this.current = updated;
|
|
136
|
+
if (applied.length > 0) {
|
|
137
|
+
log.info("config reloaded", { applied });
|
|
138
|
+
for (const l of [...this.listeners]) {
|
|
139
|
+
try {
|
|
140
|
+
l(updated, applied);
|
|
141
|
+
}
|
|
142
|
+
catch (e) {
|
|
143
|
+
log.error("config change listener threw", { error: errMsg(e) });
|
|
144
|
+
}
|
|
145
|
+
}
|
|
146
|
+
}
|
|
147
|
+
if (restart.length > 0) {
|
|
148
|
+
log.warn("config changed but requires restart to take effect", { keys: restart });
|
|
149
|
+
}
|
|
150
|
+
}
|
|
151
|
+
};
|
|
152
|
+
KernelConfigService = __decorate([
|
|
153
|
+
Injectable(),
|
|
154
|
+
__param(0, Inject(KERNEL_CONFIG_INPUT)),
|
|
155
|
+
__param(1, Inject(KERNEL_LOGGER))
|
|
156
|
+
], KernelConfigService);
|
|
157
|
+
export { KernelConfigService };
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Runs a side effect (enqueue a job, publish on the bus) only after the root transaction commits;
|
|
3
|
+
* a rollback drops it; it runs outside any transaction. Outside a transaction it runs immediately.
|
|
4
|
+
* A failing hook is logged and never fails the committed call.
|
|
5
|
+
*/
|
|
6
|
+
export declare function afterCommit(fn: () => void | Promise<void>): void;
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { queueAfterCommit } from "./transaction-host.js";
|
|
2
|
+
/**
|
|
3
|
+
* Runs a side effect (enqueue a job, publish on the bus) only after the root transaction commits;
|
|
4
|
+
* a rollback drops it; it runs outside any transaction. Outside a transaction it runs immediately.
|
|
5
|
+
* A failing hook is logged and never fails the committed call.
|
|
6
|
+
*/
|
|
7
|
+
export function afterCommit(fn) {
|
|
8
|
+
queueAfterCommit(fn);
|
|
9
|
+
}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import { type DynamicModule } from "@nestjs/common";
|
|
2
|
+
import type { Kysely } from "kysely";
|
|
3
|
+
import type { KernelLogger } from "../../log.js";
|
|
4
|
+
import { GracefulShutdown } from "../lifecycle/graceful-shutdown.service.js";
|
|
5
|
+
/**
|
|
6
|
+
* Closes the pool at the end of the shutdown (`GracefulShutdown.closeLast`: after everything that
|
|
7
|
+
* uses it has stopped, together with Redis), within what is left of the total stop budget.
|
|
8
|
+
*/
|
|
9
|
+
export declare class PoolLifecycle {
|
|
10
|
+
private readonly pool;
|
|
11
|
+
private readonly log;
|
|
12
|
+
private readonly shutdown;
|
|
13
|
+
constructor(pool: Kysely<any>, log: KernelLogger, shutdown: GracefulShutdown);
|
|
14
|
+
close(): Promise<void>;
|
|
15
|
+
}
|
|
16
|
+
/** Global: the Kysely pool, `TransactionHost`, the context-aware `KernelDb` and `XactLock`. */
|
|
17
|
+
export declare class DatabaseModule {
|
|
18
|
+
/** The pool `db.*` of the config describes, closed at shutdown ({@link PoolLifecycle}). */
|
|
19
|
+
static forRoot(): DynamicModule;
|
|
20
|
+
/**
|
|
21
|
+
* The handles over a pool the caller owns and closes (`@capybara-hq/testing`'s
|
|
22
|
+
* `createLocalAccount`, which has a pool and no config): the context never closes it.
|
|
23
|
+
*/
|
|
24
|
+
static borrowing(pool: Kysely<any>): DynamicModule;
|
|
25
|
+
}
|
|
@@ -0,0 +1,91 @@
|
|
|
1
|
+
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
|
2
|
+
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
3
|
+
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
4
|
+
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
5
|
+
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
6
|
+
};
|
|
7
|
+
var __param = (this && this.__param) || function (paramIndex, decorator) {
|
|
8
|
+
return function (target, key) { decorator(target, key, paramIndex); }
|
|
9
|
+
};
|
|
10
|
+
import { Global, Inject, Injectable, Module, } from "@nestjs/common";
|
|
11
|
+
import { createDb } from "../../db/pool.js";
|
|
12
|
+
import { closeWithin } from "../close-within.js";
|
|
13
|
+
import { KernelConfigService } from "../config/kernel-config.service.js";
|
|
14
|
+
import { GracefulShutdownModule } from "../lifecycle/graceful-shutdown.module.js";
|
|
15
|
+
import { GracefulShutdown } from "../lifecycle/graceful-shutdown.service.js";
|
|
16
|
+
import { KERNEL_LOGGER, KERNEL_POOL } from "../tokens.js";
|
|
17
|
+
import { KernelDb } from "./kernel-db.js";
|
|
18
|
+
import { TransactionHost } from "./transaction-host.js";
|
|
19
|
+
import { XactLock } from "./xact-lock.js";
|
|
20
|
+
/**
|
|
21
|
+
* Closes the pool at the end of the shutdown (`GracefulShutdown.closeLast`: after everything that
|
|
22
|
+
* uses it has stopped, together with Redis), within what is left of the total stop budget.
|
|
23
|
+
*/
|
|
24
|
+
let PoolLifecycle = class PoolLifecycle {
|
|
25
|
+
pool;
|
|
26
|
+
log;
|
|
27
|
+
shutdown;
|
|
28
|
+
constructor(
|
|
29
|
+
// biome-ignore lint/suspicious/noExplicitAny: the pool carries no schema types
|
|
30
|
+
pool, log, shutdown) {
|
|
31
|
+
this.pool = pool;
|
|
32
|
+
this.log = log;
|
|
33
|
+
this.shutdown = shutdown;
|
|
34
|
+
shutdown.closeLast(() => this.close());
|
|
35
|
+
}
|
|
36
|
+
async close() {
|
|
37
|
+
await closeWithin("pg", this.pool.destroy(), this.shutdown.remainingMs(), this.log);
|
|
38
|
+
}
|
|
39
|
+
};
|
|
40
|
+
PoolLifecycle = __decorate([
|
|
41
|
+
Injectable(),
|
|
42
|
+
__param(0, Inject(KERNEL_POOL)),
|
|
43
|
+
__param(1, Inject(KERNEL_LOGGER)),
|
|
44
|
+
__param(2, Inject(GracefulShutdown))
|
|
45
|
+
], PoolLifecycle);
|
|
46
|
+
export { PoolLifecycle };
|
|
47
|
+
/** The handles over the pool, the same for both pool sources. */
|
|
48
|
+
function databaseModule(pool, imports) {
|
|
49
|
+
return {
|
|
50
|
+
module: DatabaseModule,
|
|
51
|
+
global: true,
|
|
52
|
+
imports,
|
|
53
|
+
providers: [...pool, TransactionHost, KernelDb, XactLock],
|
|
54
|
+
exports: [KERNEL_POOL, TransactionHost, KernelDb, XactLock],
|
|
55
|
+
};
|
|
56
|
+
}
|
|
57
|
+
/** Global: the Kysely pool, `TransactionHost`, the context-aware `KernelDb` and `XactLock`. */
|
|
58
|
+
let DatabaseModule = class DatabaseModule {
|
|
59
|
+
/** The pool `db.*` of the config describes, closed at shutdown ({@link PoolLifecycle}). */
|
|
60
|
+
static forRoot() {
|
|
61
|
+
return databaseModule([
|
|
62
|
+
{
|
|
63
|
+
provide: KERNEL_POOL,
|
|
64
|
+
inject: [KernelConfigService, KERNEL_LOGGER],
|
|
65
|
+
useFactory: (config, log) => {
|
|
66
|
+
const { db } = config.get();
|
|
67
|
+
return createDb(db.url, db.poolMax, (err) => log.error("pg idle client error", { err }), {
|
|
68
|
+
connectTimeoutMs: db.connectTimeoutMs,
|
|
69
|
+
idleTimeoutMs: db.idleTimeoutMs,
|
|
70
|
+
onClientError: (err) => log.warn("pg client error", { err }),
|
|
71
|
+
});
|
|
72
|
+
},
|
|
73
|
+
},
|
|
74
|
+
PoolLifecycle,
|
|
75
|
+
], [GracefulShutdownModule]);
|
|
76
|
+
}
|
|
77
|
+
/**
|
|
78
|
+
* The handles over a pool the caller owns and closes (`@capybara-hq/testing`'s
|
|
79
|
+
* `createLocalAccount`, which has a pool and no config): the context never closes it.
|
|
80
|
+
*/
|
|
81
|
+
// biome-ignore lint/suspicious/noExplicitAny: the pool carries no schema types
|
|
82
|
+
static borrowing(pool) {
|
|
83
|
+
return databaseModule([{ provide: KERNEL_POOL, useValue: pool }], []);
|
|
84
|
+
}
|
|
85
|
+
};
|
|
86
|
+
DatabaseModule = __decorate([
|
|
87
|
+
Global(),
|
|
88
|
+
Module({})
|
|
89
|
+
// biome-ignore lint/complexity/noStaticOnlyClass: a Nest dynamic module
|
|
90
|
+
], DatabaseModule);
|
|
91
|
+
export { DatabaseModule };
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import type { Kysely, Transaction } from "kysely";
|
|
2
|
+
import { type KernelDatabase } from "../../db/kernel-schema.js";
|
|
3
|
+
import { TransactionHost } from "./transaction-host.js";
|
|
4
|
+
type View = Kysely<KernelDatabase>;
|
|
5
|
+
/** The Kysely query entry points services use; each resolves to the context transaction or the pool. */
|
|
6
|
+
declare const QUERY_METHODS: readonly ["selectFrom", "selectNoFrom", "insertInto", "replaceInto", "updateTable", "deleteFrom", "mergeInto", "with", "withRecursive", "executeQuery"];
|
|
7
|
+
type QueryMethod = (typeof QUERY_METHODS)[number];
|
|
8
|
+
export interface KernelDb extends Pick<View, QueryMethod | "fn"> {
|
|
9
|
+
}
|
|
10
|
+
/**
|
|
11
|
+
* What services inject instead of a Kysely instance: every call resolves to the transaction of
|
|
12
|
+
* the current async context (opened by `@Transactional()`), else to the pool; the `capybara`
|
|
13
|
+
* schema view applies either way. No `trx` parameters are passed around.
|
|
14
|
+
*/
|
|
15
|
+
export declare class KernelDb {
|
|
16
|
+
readonly pool: Kysely<any>;
|
|
17
|
+
private readonly txHost;
|
|
18
|
+
constructor(pool: Kysely<any>, txHost: TransactionHost);
|
|
19
|
+
/** The kernel-schema handle of the current context (transaction or pool). */
|
|
20
|
+
get db(): View | Transaction<KernelDatabase>;
|
|
21
|
+
}
|
|
22
|
+
export {};
|
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
|
2
|
+
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
3
|
+
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
4
|
+
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
5
|
+
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
6
|
+
};
|
|
7
|
+
var __param = (this && this.__param) || function (paramIndex, decorator) {
|
|
8
|
+
return function (target, key) { decorator(target, key, paramIndex); }
|
|
9
|
+
};
|
|
10
|
+
import { Inject, Injectable } from "@nestjs/common";
|
|
11
|
+
import { kernelDb } from "../../db/kernel-schema.js";
|
|
12
|
+
import { KERNEL_POOL } from "../tokens.js";
|
|
13
|
+
import { TransactionHost } from "./transaction-host.js";
|
|
14
|
+
/** The Kysely query entry points services use; each resolves to the context transaction or the pool. */
|
|
15
|
+
const QUERY_METHODS = [
|
|
16
|
+
"selectFrom",
|
|
17
|
+
"selectNoFrom",
|
|
18
|
+
"insertInto",
|
|
19
|
+
"replaceInto",
|
|
20
|
+
"updateTable",
|
|
21
|
+
"deleteFrom",
|
|
22
|
+
"mergeInto",
|
|
23
|
+
"with",
|
|
24
|
+
"withRecursive",
|
|
25
|
+
"executeQuery",
|
|
26
|
+
];
|
|
27
|
+
/**
|
|
28
|
+
* What services inject instead of a Kysely instance: every call resolves to the transaction of
|
|
29
|
+
* the current async context (opened by `@Transactional()`), else to the pool; the `capybara`
|
|
30
|
+
* schema view applies either way. No `trx` parameters are passed around.
|
|
31
|
+
*/
|
|
32
|
+
let KernelDb = class KernelDb {
|
|
33
|
+
pool;
|
|
34
|
+
txHost;
|
|
35
|
+
constructor(
|
|
36
|
+
// biome-ignore lint/suspicious/noExplicitAny: the pool carries no schema types
|
|
37
|
+
pool, txHost) {
|
|
38
|
+
this.pool = pool;
|
|
39
|
+
this.txHost = txHost;
|
|
40
|
+
}
|
|
41
|
+
/** The kernel-schema handle of the current context (transaction or pool). */
|
|
42
|
+
get db() {
|
|
43
|
+
return kernelDb(this.txHost.current() ?? this.pool);
|
|
44
|
+
}
|
|
45
|
+
};
|
|
46
|
+
KernelDb = __decorate([
|
|
47
|
+
Injectable()
|
|
48
|
+
// biome-ignore lint/suspicious/noUnsafeDeclarationMerging: types the prototype-attached query methods
|
|
49
|
+
,
|
|
50
|
+
__param(0, Inject(KERNEL_POOL)),
|
|
51
|
+
__param(1, Inject(TransactionHost))
|
|
52
|
+
], KernelDb);
|
|
53
|
+
export { KernelDb };
|
|
54
|
+
for (const name of QUERY_METHODS) {
|
|
55
|
+
Object.defineProperty(KernelDb.prototype, name, {
|
|
56
|
+
value(...args) {
|
|
57
|
+
return this.db[name](...args);
|
|
58
|
+
},
|
|
59
|
+
});
|
|
60
|
+
}
|
|
61
|
+
Object.defineProperty(KernelDb.prototype, "fn", {
|
|
62
|
+
get() {
|
|
63
|
+
return this.db.fn;
|
|
64
|
+
},
|
|
65
|
+
});
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
import type { AccessMode, IsolationLevel, Kysely, Transaction } from "kysely";
|
|
2
|
+
import type { KernelLogger } from "../../log.js";
|
|
3
|
+
type AfterCommitHook = () => void | Promise<void>;
|
|
4
|
+
interface TransactionStore {
|
|
5
|
+
pool: Kysely<any>;
|
|
6
|
+
trx: Transaction<any>;
|
|
7
|
+
/** Side effects queued by `afterCommit`, run after this root transaction commits. */
|
|
8
|
+
hooks: AfterCommitHook[];
|
|
9
|
+
/** Set once the transaction settled: continuations that outlive it must not use it. */
|
|
10
|
+
done: boolean;
|
|
11
|
+
}
|
|
12
|
+
export type Propagation = "required" | "requires_new" | "mandatory";
|
|
13
|
+
export interface TransactionOptions {
|
|
14
|
+
/**
|
|
15
|
+
* `required` (default): join the transaction in context, else open one. `requires_new`: a
|
|
16
|
+
* separate transaction on the pool, whatever the context. `mandatory`: join the transaction in
|
|
17
|
+
* context, and throw outside one (for methods whose correctness depends on a lock the caller
|
|
18
|
+
* took in its transaction).
|
|
19
|
+
*/
|
|
20
|
+
propagation?: Propagation;
|
|
21
|
+
/** Isolation level of a transaction this call opens (ignored when it joins one). */
|
|
22
|
+
isolationLevel?: IsolationLevel;
|
|
23
|
+
/** Access mode of a transaction this call opens (ignored when it joins one). */
|
|
24
|
+
accessMode?: AccessMode;
|
|
25
|
+
}
|
|
26
|
+
/** Queues `fn` on the current live root transaction; with none open, runs it at once. */
|
|
27
|
+
export declare function queueAfterCommit(fn: AfterCommitHook): void;
|
|
28
|
+
/** The transaction store in the current async context (used by `afterCommit`). */
|
|
29
|
+
export declare function currentStore(): TransactionStore | undefined;
|
|
30
|
+
/**
|
|
31
|
+
* Runs `fn` with no transaction in context, whatever the caller had open. Queue processors and
|
|
32
|
+
* scheduled jobs start from here: a job outlives the transaction that enqueued it and must never
|
|
33
|
+
* join (or write through) a transaction that may already be committed or rolled back.
|
|
34
|
+
*/
|
|
35
|
+
export declare function runOutsideTransaction<T>(fn: () => T): T;
|
|
36
|
+
export declare class TransactionHost {
|
|
37
|
+
private readonly pool;
|
|
38
|
+
private readonly log;
|
|
39
|
+
constructor(pool: Kysely<any>, log: KernelLogger);
|
|
40
|
+
/** The transaction of the current async context on this pool, if any. */
|
|
41
|
+
current(): Transaction<any> | undefined;
|
|
42
|
+
/**
|
|
43
|
+
* Runs `fn` in a transaction: a throw rolls back, a return commits. REQUIRED (default) joins the
|
|
44
|
+
* transaction in context; `requires_new` always opens its own on the pool; `mandatory` joins the
|
|
45
|
+
* one in context and throws when there is none. Hooks queued by `afterCommit` run after the
|
|
46
|
+
* root's COMMIT, outside any transaction, and are dropped on rollback.
|
|
47
|
+
*/
|
|
48
|
+
run<T>(fn: () => Promise<T>, opts?: TransactionOptions): Promise<T>;
|
|
49
|
+
}
|
|
50
|
+
export {};
|
|
@@ -0,0 +1,125 @@
|
|
|
1
|
+
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
|
2
|
+
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
3
|
+
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
4
|
+
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
5
|
+
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
6
|
+
};
|
|
7
|
+
var __param = (this && this.__param) || function (paramIndex, decorator) {
|
|
8
|
+
return function (target, key) { decorator(target, key, paramIndex); }
|
|
9
|
+
};
|
|
10
|
+
// Ported from octok-platform libs/common/src/typeorm/transaction-context.ts (owner-approved, 2026-10-28).
|
|
11
|
+
// Adapted to Kysely: the context holds a Kysely `Transaction` instead of a TypeORM QueryRunner.
|
|
12
|
+
import { AsyncLocalStorage } from "node:async_hooks";
|
|
13
|
+
import { Inject, Injectable } from "@nestjs/common";
|
|
14
|
+
import { KERNEL_LOGGER, KERNEL_POOL } from "../tokens.js";
|
|
15
|
+
/** One store for the process: `afterCommit` (a free function) reads it without a host instance. */
|
|
16
|
+
const storage = new AsyncLocalStorage();
|
|
17
|
+
/** Logger for hook failures outside a transaction; set by `TransactionHost`, console until then. */
|
|
18
|
+
let hookLog = {
|
|
19
|
+
error: (msg, fields) => console.error(`[afterCommit] ${msg}`, fields ?? ""),
|
|
20
|
+
};
|
|
21
|
+
const errMsg = (e) => (e instanceof Error ? e.message : String(e));
|
|
22
|
+
/** Queues `fn` on the current live root transaction; with none open, runs it at once. */
|
|
23
|
+
export function queueAfterCommit(fn) {
|
|
24
|
+
const store = liveStore();
|
|
25
|
+
if (store) {
|
|
26
|
+
store.hooks.push(fn);
|
|
27
|
+
return;
|
|
28
|
+
}
|
|
29
|
+
try {
|
|
30
|
+
const r = fn();
|
|
31
|
+
if (r instanceof Promise) {
|
|
32
|
+
r.catch((e) => hookLog.error("afterCommit hook failed", { error: errMsg(e) }));
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
catch (e) {
|
|
36
|
+
hookLog.error("afterCommit hook failed", { error: errMsg(e) });
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
/** The store of the current context unless its transaction already finished. */
|
|
40
|
+
function liveStore() {
|
|
41
|
+
const store = storage.getStore();
|
|
42
|
+
return store && !store.done ? store : undefined;
|
|
43
|
+
}
|
|
44
|
+
/** The transaction store in the current async context (used by `afterCommit`). */
|
|
45
|
+
export function currentStore() {
|
|
46
|
+
return liveStore();
|
|
47
|
+
}
|
|
48
|
+
/**
|
|
49
|
+
* Runs `fn` with no transaction in context, whatever the caller had open. Queue processors and
|
|
50
|
+
* scheduled jobs start from here: a job outlives the transaction that enqueued it and must never
|
|
51
|
+
* join (or write through) a transaction that may already be committed or rolled back.
|
|
52
|
+
*/
|
|
53
|
+
export function runOutsideTransaction(fn) {
|
|
54
|
+
return storage.exit(fn);
|
|
55
|
+
}
|
|
56
|
+
let TransactionHost = class TransactionHost {
|
|
57
|
+
pool;
|
|
58
|
+
log;
|
|
59
|
+
constructor(
|
|
60
|
+
// biome-ignore lint/suspicious/noExplicitAny: the pool carries no schema types
|
|
61
|
+
pool, log) {
|
|
62
|
+
this.pool = pool;
|
|
63
|
+
this.log = log;
|
|
64
|
+
hookLog = log;
|
|
65
|
+
}
|
|
66
|
+
/** The transaction of the current async context on this pool, if any. */
|
|
67
|
+
// biome-ignore lint/suspicious/noExplicitAny: the pool carries no schema types
|
|
68
|
+
current() {
|
|
69
|
+
const store = liveStore();
|
|
70
|
+
return store?.pool === this.pool ? store.trx : undefined;
|
|
71
|
+
}
|
|
72
|
+
/**
|
|
73
|
+
* Runs `fn` in a transaction: a throw rolls back, a return commits. REQUIRED (default) joins the
|
|
74
|
+
* transaction in context; `requires_new` always opens its own on the pool; `mandatory` joins the
|
|
75
|
+
* one in context and throws when there is none. Hooks queued by `afterCommit` run after the
|
|
76
|
+
* root's COMMIT, outside any transaction, and are dropped on rollback.
|
|
77
|
+
*/
|
|
78
|
+
async run(fn, opts = {}) {
|
|
79
|
+
const propagation = opts.propagation ?? "required";
|
|
80
|
+
if (propagation === "mandatory") {
|
|
81
|
+
if (!this.current()) {
|
|
82
|
+
throw new Error('propagation "mandatory": no transaction in context (the caller must open one and ' +
|
|
83
|
+
"hold the locks this method relies on)");
|
|
84
|
+
}
|
|
85
|
+
return fn();
|
|
86
|
+
}
|
|
87
|
+
if (propagation === "required" && this.current())
|
|
88
|
+
return fn();
|
|
89
|
+
const hooks = [];
|
|
90
|
+
let store;
|
|
91
|
+
let result;
|
|
92
|
+
try {
|
|
93
|
+
let builder = this.pool.transaction();
|
|
94
|
+
if (opts.isolationLevel !== undefined)
|
|
95
|
+
builder = builder.setIsolationLevel(opts.isolationLevel);
|
|
96
|
+
if (opts.accessMode !== undefined)
|
|
97
|
+
builder = builder.setAccessMode(opts.accessMode);
|
|
98
|
+
result = await builder.execute((trx) => {
|
|
99
|
+
store = { pool: this.pool, trx, hooks, done: false };
|
|
100
|
+
return storage.run(store, fn);
|
|
101
|
+
});
|
|
102
|
+
}
|
|
103
|
+
finally {
|
|
104
|
+
if (store)
|
|
105
|
+
store.done = true;
|
|
106
|
+
}
|
|
107
|
+
for (const hook of hooks) {
|
|
108
|
+
try {
|
|
109
|
+
// outside any transaction: a requires_new nested in an outer one must not have its side
|
|
110
|
+
// effects join (and roll back with) the outer transaction
|
|
111
|
+
await runOutsideTransaction(hook);
|
|
112
|
+
}
|
|
113
|
+
catch (e) {
|
|
114
|
+
this.log.error("afterCommit hook failed", { error: errMsg(e) });
|
|
115
|
+
}
|
|
116
|
+
}
|
|
117
|
+
return result;
|
|
118
|
+
}
|
|
119
|
+
};
|
|
120
|
+
TransactionHost = __decorate([
|
|
121
|
+
Injectable(),
|
|
122
|
+
__param(0, Inject(KERNEL_POOL)),
|
|
123
|
+
__param(1, Inject(KERNEL_LOGGER))
|
|
124
|
+
], TransactionHost);
|
|
125
|
+
export { TransactionHost };
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import type { TransactionOptions } from "./transaction-host.js";
|
|
2
|
+
/**
|
|
3
|
+
* Method decorator: runs the method in a database transaction (REQUIRED by default: join the one
|
|
4
|
+
* in context, else open it; a throw rolls back, a normal return commits). The class must inject
|
|
5
|
+
* the host as a property named `txHost`:
|
|
6
|
+
*
|
|
7
|
+
* ```ts
|
|
8
|
+
* constructor(@Inject(TransactionHost) readonly txHost: TransactionHost) {}
|
|
9
|
+
* ```
|
|
10
|
+
*
|
|
11
|
+
* Use `{ propagation: "requires_new" }` for a transaction independent of the caller's, and
|
|
12
|
+
* `{ propagation: "mandatory" }` for a method whose correctness depends on a lock its caller holds
|
|
13
|
+
* (it joins the caller's transaction and throws when called outside one).
|
|
14
|
+
*/
|
|
15
|
+
export declare function Transactional(opts?: TransactionOptions): (_target: object, _key: string | symbol, descriptor: PropertyDescriptor) => PropertyDescriptor;
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Method decorator: runs the method in a database transaction (REQUIRED by default: join the one
|
|
3
|
+
* in context, else open it; a throw rolls back, a normal return commits). The class must inject
|
|
4
|
+
* the host as a property named `txHost`:
|
|
5
|
+
*
|
|
6
|
+
* ```ts
|
|
7
|
+
* constructor(@Inject(TransactionHost) readonly txHost: TransactionHost) {}
|
|
8
|
+
* ```
|
|
9
|
+
*
|
|
10
|
+
* Use `{ propagation: "requires_new" }` for a transaction independent of the caller's, and
|
|
11
|
+
* `{ propagation: "mandatory" }` for a method whose correctness depends on a lock its caller holds
|
|
12
|
+
* (it joins the caller's transaction and throws when called outside one).
|
|
13
|
+
*/
|
|
14
|
+
export function Transactional(opts = {}) {
|
|
15
|
+
return (_target, _key, descriptor) => {
|
|
16
|
+
const original = descriptor.value;
|
|
17
|
+
descriptor.value = function (...args) {
|
|
18
|
+
const host = this.txHost;
|
|
19
|
+
if (!host) {
|
|
20
|
+
throw new Error("@Transactional() needs the class to inject `TransactionHost` as `txHost` " +
|
|
21
|
+
"(`@Inject(TransactionHost) readonly txHost: TransactionHost`).");
|
|
22
|
+
}
|
|
23
|
+
return host.run(() => original.apply(this, args), opts);
|
|
24
|
+
};
|
|
25
|
+
return descriptor;
|
|
26
|
+
};
|
|
27
|
+
}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import { KernelDb } from "./kernel-db.js";
|
|
2
|
+
import { TransactionHost } from "./transaction-host.js";
|
|
3
|
+
/**
|
|
4
|
+
* Transaction-scoped advisory locks (decision R9 of the Nest kernel spec): `pg_advisory_xact_lock`
|
|
5
|
+
* is transaction semantics, like `FOR UPDATE`. It is held by the caller's transaction and released
|
|
6
|
+
* at its COMMIT or ROLLBACK, so it serializes writers whose invariant is checked inside that same
|
|
7
|
+
* transaction ("never zero active super admins", "set up once", "one account per external
|
|
8
|
+
* identity"). The one place that takes such a lock; `propagation: "mandatory"` makes a call outside
|
|
9
|
+
* a transaction (where the lock would be released at once) throw.
|
|
10
|
+
*/
|
|
11
|
+
export declare class XactLock {
|
|
12
|
+
private readonly db;
|
|
13
|
+
readonly txHost: TransactionHost;
|
|
14
|
+
constructor(db: KernelDb, txHost: TransactionHost);
|
|
15
|
+
/** Takes the lock named `key` until the caller's transaction ends (waits while another holds it). */
|
|
16
|
+
lock(key: string): Promise<void>;
|
|
17
|
+
}
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
|
2
|
+
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
3
|
+
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
4
|
+
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
5
|
+
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
6
|
+
};
|
|
7
|
+
var __param = (this && this.__param) || function (paramIndex, decorator) {
|
|
8
|
+
return function (target, key) { decorator(target, key, paramIndex); }
|
|
9
|
+
};
|
|
10
|
+
import { Inject, Injectable } from "@nestjs/common";
|
|
11
|
+
import { sql } from "kysely";
|
|
12
|
+
import { KernelDb } from "./kernel-db.js";
|
|
13
|
+
import { TransactionHost } from "./transaction-host.js";
|
|
14
|
+
import { Transactional } from "./transactional.decorator.js";
|
|
15
|
+
/**
|
|
16
|
+
* Transaction-scoped advisory locks (decision R9 of the Nest kernel spec): `pg_advisory_xact_lock`
|
|
17
|
+
* is transaction semantics, like `FOR UPDATE`. It is held by the caller's transaction and released
|
|
18
|
+
* at its COMMIT or ROLLBACK, so it serializes writers whose invariant is checked inside that same
|
|
19
|
+
* transaction ("never zero active super admins", "set up once", "one account per external
|
|
20
|
+
* identity"). The one place that takes such a lock; `propagation: "mandatory"` makes a call outside
|
|
21
|
+
* a transaction (where the lock would be released at once) throw.
|
|
22
|
+
*/
|
|
23
|
+
let XactLock = class XactLock {
|
|
24
|
+
db;
|
|
25
|
+
txHost;
|
|
26
|
+
constructor(db, txHost) {
|
|
27
|
+
this.db = db;
|
|
28
|
+
this.txHost = txHost;
|
|
29
|
+
}
|
|
30
|
+
/** Takes the lock named `key` until the caller's transaction ends (waits while another holds it). */
|
|
31
|
+
async lock(key) {
|
|
32
|
+
await sql `SELECT pg_advisory_xact_lock(hashtext(${key}))`.execute(this.db.db);
|
|
33
|
+
}
|
|
34
|
+
};
|
|
35
|
+
__decorate([
|
|
36
|
+
Transactional({ propagation: "mandatory" })
|
|
37
|
+
], XactLock.prototype, "lock", null);
|
|
38
|
+
XactLock = __decorate([
|
|
39
|
+
Injectable(),
|
|
40
|
+
__param(0, Inject(KernelDb)),
|
|
41
|
+
__param(1, Inject(TransactionHost))
|
|
42
|
+
], XactLock);
|
|
43
|
+
export { XactLock };
|