@capybara-hq/kernel 0.1.0-rc.1 → 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 +85 -5
- 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 -202
- 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 +36 -2
- package/dist/config/schema.js +226 -25
- 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 -71
- 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/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 +135 -2
- package/dist/errors.js +135 -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 -124
- 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 +99 -36
- package/dist/extensions/bootstrap.js +290 -134
- 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 +46 -65
- 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 +22 -13
- package/dist/index.js +16 -7
- 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 -244
- 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-context.d.ts +2 -0
- package/dist/log-context.js +4 -0
- package/dist/log.d.ts +13 -1
- package/dist/log.js +93 -17
- 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/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 -137
- 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 -237
- 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 -181
- 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 +137 -37
- package/dist/tools/builtins/sandbox/common.js +222 -62
- 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 +13 -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
|
@@ -1,20 +1,39 @@
|
|
|
1
|
+
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
|
2
|
+
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
3
|
+
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
4
|
+
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
5
|
+
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
6
|
+
};
|
|
7
|
+
var __param = (this && this.__param) || function (paramIndex, decorator) {
|
|
8
|
+
return function (target, key) { decorator(target, key, paramIndex); }
|
|
9
|
+
};
|
|
1
10
|
import { createHash } from "node:crypto";
|
|
2
11
|
import { readdir, readFile, stat } from "node:fs/promises";
|
|
3
12
|
import { join } from "node:path";
|
|
4
13
|
import { fileURLToPath } from "node:url";
|
|
5
14
|
import { parseBootstrapManifest, SDK_VERSION, } from "@capybara-hq/plugin-sdk";
|
|
15
|
+
import { Inject, Injectable, Optional } from "@nestjs/common";
|
|
6
16
|
import { sql } from "kysely";
|
|
7
|
-
import pg from "pg";
|
|
8
17
|
import semver from "semver";
|
|
18
|
+
import { otherNameOwner } from "../catalog/ownership.js";
|
|
9
19
|
import { catalogPackageError } from "../catalog/plugin-import.js";
|
|
10
20
|
import { PluginPackageError, readPluginPackage } from "../catalog/plugin-package.js";
|
|
11
|
-
import { pgConnectOptions } from "../db/pool.js";
|
|
12
21
|
import { ApiError } from "../errors.js";
|
|
13
22
|
import { audit } from "../identity/audit.js";
|
|
23
|
+
import { KernelConfigService } from "../infra/config/kernel-config.service.js";
|
|
24
|
+
import { KernelDb } from "../infra/database/kernel-db.js";
|
|
25
|
+
import { TransactionHost } from "../infra/database/transaction-host.js";
|
|
26
|
+
import { Transactional } from "../infra/database/transactional.decorator.js";
|
|
27
|
+
import { LockService } from "../infra/lock/lock.service.js";
|
|
28
|
+
import { KERNEL_LOGGER } from "../infra/tokens.js";
|
|
14
29
|
import { fetchNpmPackage, IntegrityMismatchError, NpmFetchError, PackageTooLargeError, } from "../packages/npm.js";
|
|
30
|
+
import { ExtensionAdminOps } from "./admin-ops.js";
|
|
15
31
|
import { writeSnapshot } from "./approvals.js";
|
|
32
|
+
import { ExtensionInstalls } from "./installs.js";
|
|
33
|
+
import { PluginApproveLock } from "./locks.js";
|
|
16
34
|
import { ExtensionPackageError, permissionSetOfPackage, readExtensionPackage } from "./package.js";
|
|
17
35
|
import { diffPermissions } from "./permission-set.js";
|
|
36
|
+
import { ExtensionRegistry } from "./registry.js";
|
|
18
37
|
/**
|
|
19
38
|
* The bootstrap step (package ecosystem spec §7, startup bootstrap spec): installs the plugins
|
|
20
39
|
* pinned by the bootstrap manifest (`packages/kernel/bootstrap.json`). It replaced the builtin
|
|
@@ -30,17 +49,16 @@ import { diffPermissions } from "./permission-set.js";
|
|
|
30
49
|
* download `bootstrap.download_failed`, a download that differs from the pin
|
|
31
50
|
* `bootstrap.integrity_mismatch` (all name the plugin), and then nothing is written. Downloading
|
|
32
51
|
* inside the lock means a fleet starting together downloads once.
|
|
33
|
-
* - The whole run holds the
|
|
34
|
-
*
|
|
35
|
-
*
|
|
36
|
-
*
|
|
52
|
+
* - The whole run holds the Redis lock `lock:bootstrap` (`LockService`, decision R5 of the Nest
|
|
53
|
+
* kernel spec: TTL {@link BOOTSTRAP_LOCK_TTL_MS}, renewed every third of it, so a run longer than the TTL keeps
|
|
54
|
+
* it and a crashed holder's lock expires within it), taken by an unbounded wait that observes
|
|
55
|
+
* the signal: when several replicas (or `capybara bootstrap` and a starting kernel) run it
|
|
56
|
+
* together only one runs it; the others wait, then find it done. A lost lock (renewal failed
|
|
57
|
+
* until expiry) aborts the run at its next step. "Done" is a `bootstrap_runs` row for the
|
|
37
58
|
* manifest's sha256 (written with the audit `bootstrap.completed` only when every entry
|
|
38
|
-
* succeeded; otherwise the next start runs it again, which is idempotent).
|
|
39
|
-
* that drops mid-run is not detected (its errors are swallowed) and the run goes on without the
|
|
40
|
-
* lock, so a second replica could run concurrently: accepted, since a concurrent import or
|
|
41
|
-
* install degrades to `catalog.version_exists` and a deploy from the package store.
|
|
59
|
+
* succeeded; otherwise the next start runs it again, which is idempotent).
|
|
42
60
|
* - Only entries new to the manifest are installed (Ruling 5): an optional entry that the last
|
|
43
|
-
* completed run already handled and that is not installed now (
|
|
61
|
+
* completed run already handled and that is not installed now (a super admin uninstalled
|
|
44
62
|
* it) stays uninstalled -> `kept`. A required entry is always installed.
|
|
45
63
|
* - Per entry, by the installed state of its extension:
|
|
46
64
|
* - not installed (and new, or required): imported into the catalog (source `bootstrap`, ref
|
|
@@ -49,8 +67,8 @@ import { diffPermissions } from "./permission-set.js";
|
|
|
49
67
|
* and enabled -> `installed`;
|
|
50
68
|
* - installed from `bootstrap` at a lower version: upgraded the same way (core's release vouched
|
|
51
69
|
* for the version, so new permissions are pre-approved and audited), keeping the desired state
|
|
52
|
-
*
|
|
53
|
-
* - installed at a higher version, or from another source (
|
|
70
|
+
* a super admin chose (a disabled optional plugin stays disabled) -> `upgraded`;
|
|
71
|
+
* - installed at a higher version, or from another source (a super admin upgraded it), or
|
|
54
72
|
* the name is config-declared (`declared`: config wins, no install record is created):
|
|
55
73
|
* untouched, never downgraded -> `kept`;
|
|
56
74
|
* - a declarative plugin (no extension): imported into the catalog only -> `imported` (`kept`
|
|
@@ -66,7 +84,10 @@ import { diffPermissions } from "./permission-set.js";
|
|
|
66
84
|
* A failed entry does not stop the others; the run then throws {@link BootstrapFailedError} naming
|
|
67
85
|
* them. The packages are kept in PG (`blob_store = 'pg'`), so installing an extension never needs
|
|
68
86
|
* the object store (object-store-s3 is itself a bootstrap plugin) and the directory and npm are
|
|
69
|
-
* never needed again
|
|
87
|
+
* never needed again. A plugin's icons and setup guide files are kept in PG too (`catalog_files`),
|
|
88
|
+
* so they never need it either; its skills, connector templates and agent templates do (an entry
|
|
89
|
+
* shipping them fails while no object store runs; an optional one is retried after the extensions
|
|
90
|
+
* loaded).
|
|
70
91
|
*/
|
|
71
92
|
/** The bootstrap manifest that ships with the kernel package. */
|
|
72
93
|
export const BOOTSTRAP_MANIFEST_FILE = fileURLToPath(new URL("../../bootstrap.json", import.meta.url));
|
|
@@ -197,16 +218,54 @@ async function scanOfflineDir(dir, maxBytes, log) {
|
|
|
197
218
|
}
|
|
198
219
|
return out;
|
|
199
220
|
}
|
|
200
|
-
/** The
|
|
201
|
-
const
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
221
|
+
/** The lock around a whole run (`lock:bootstrap`). */
|
|
222
|
+
export const BOOTSTRAP_LOCK_KEY = "bootstrap";
|
|
223
|
+
/** Its lifetime without renewal; a run keeps it by renewal, a crashed holder's expires. */
|
|
224
|
+
export const BOOTSTRAP_LOCK_TTL_MS = 120_000;
|
|
225
|
+
/** Optional provider: the lock's lifetime (ms) instead of {@link BOOTSTRAP_LOCK_TTL_MS} (tests shorten it). */
|
|
226
|
+
export const BOOTSTRAP_LOCK_TTL = Symbol("BOOTSTRAP_LOCK_TTL");
|
|
227
|
+
/** The pause between attempts while another holder runs the step. */
|
|
228
|
+
const LOCK_RETRY_MS = 500;
|
|
229
|
+
let BootstrapService = class BootstrapService {
|
|
230
|
+
kdb;
|
|
231
|
+
txHost;
|
|
232
|
+
locks;
|
|
233
|
+
approveLock;
|
|
234
|
+
installs;
|
|
235
|
+
ops;
|
|
236
|
+
registry;
|
|
237
|
+
configService;
|
|
238
|
+
log;
|
|
239
|
+
lockTtlMs;
|
|
240
|
+
constructor(kdb, txHost, locks, approveLock, installs, ops,
|
|
241
|
+
/**
|
|
242
|
+
* Config-declared extension names (an entry of the same name is kept, config wins, and no
|
|
243
|
+
* install record is created): the start sequence records them before the bootstrap step, the
|
|
244
|
+
* CLI from its inspection.
|
|
245
|
+
*/
|
|
246
|
+
registry, configService, log,
|
|
247
|
+
/** The lock's lifetime without renewal. */
|
|
248
|
+
lockTtlMs = BOOTSTRAP_LOCK_TTL_MS) {
|
|
249
|
+
this.kdb = kdb;
|
|
250
|
+
this.txHost = txHost;
|
|
251
|
+
this.locks = locks;
|
|
252
|
+
this.approveLock = approveLock;
|
|
253
|
+
this.installs = installs;
|
|
254
|
+
this.ops = ops;
|
|
255
|
+
this.registry = registry;
|
|
256
|
+
this.configService = configService;
|
|
257
|
+
this.log = log;
|
|
258
|
+
this.lockTtlMs = lockTtlMs;
|
|
259
|
+
}
|
|
260
|
+
get db() {
|
|
261
|
+
return this.kdb.db;
|
|
262
|
+
}
|
|
263
|
+
config() {
|
|
264
|
+
return this.configService.get();
|
|
206
265
|
}
|
|
207
266
|
/** Whether the bootstrap step completed for the manifest with this sha256. */
|
|
208
267
|
async isDone(manifestSha256) {
|
|
209
|
-
const row = await this.
|
|
268
|
+
const row = await this.db
|
|
210
269
|
.selectFrom("bootstrap_runs")
|
|
211
270
|
.select("manifest_sha256")
|
|
212
271
|
.where("manifest_sha256", "=", manifestSha256)
|
|
@@ -223,7 +282,7 @@ export class BootstrapService {
|
|
|
223
282
|
async run(o) {
|
|
224
283
|
const manifestSha256 = bootstrapManifestSha256(o.manifest);
|
|
225
284
|
const recorded = async () => {
|
|
226
|
-
const done = await this.
|
|
285
|
+
const done = await this.db
|
|
227
286
|
.selectFrom("bootstrap_runs")
|
|
228
287
|
.select("results")
|
|
229
288
|
.where("manifest_sha256", "=", manifestSha256)
|
|
@@ -234,7 +293,7 @@ export class BootstrapService {
|
|
|
234
293
|
const before = await recorded();
|
|
235
294
|
if (before)
|
|
236
295
|
return before;
|
|
237
|
-
return this.locked(o.signal, async () => {
|
|
296
|
+
return this.locked(o.signal, async (signal) => {
|
|
238
297
|
// Another replica may have finished it while this one waited for the lock
|
|
239
298
|
const done = await recorded();
|
|
240
299
|
if (done)
|
|
@@ -242,21 +301,22 @@ export class BootstrapService {
|
|
|
242
301
|
// Every package is obtained and checked before the first write
|
|
243
302
|
const files = await resolveBootstrapPackages(o.manifest, {
|
|
244
303
|
...(o.dir !== undefined && { dir: o.dir }),
|
|
245
|
-
config: this.
|
|
246
|
-
|
|
247
|
-
log: this.
|
|
304
|
+
config: this.config(),
|
|
305
|
+
signal,
|
|
306
|
+
log: this.log,
|
|
248
307
|
});
|
|
249
308
|
const handled = await this.lastRunNames();
|
|
250
309
|
const results = [];
|
|
251
310
|
const failures = [];
|
|
252
311
|
for (const e of o.manifest.plugins) {
|
|
253
|
-
|
|
312
|
+
signal.throwIfAborted();
|
|
313
|
+
await this.warnIfHeld(e);
|
|
254
314
|
try {
|
|
255
|
-
const r = await this.entry(e, files.get(e.name), handled);
|
|
315
|
+
const r = await this.entry(e, files.get(e.name), handled, o.imports);
|
|
256
316
|
results.push(carried(r, o.carry));
|
|
257
317
|
}
|
|
258
318
|
catch (err) {
|
|
259
|
-
this.
|
|
319
|
+
this.log.error("bootstrap: a plugin could not be installed", {
|
|
260
320
|
plugin: e.name,
|
|
261
321
|
version: e.version,
|
|
262
322
|
required: e.required,
|
|
@@ -273,63 +333,70 @@ export class BootstrapService {
|
|
|
273
333
|
results.push(...(await this.clearRemoved(o.manifest)));
|
|
274
334
|
if (failures.length > 0)
|
|
275
335
|
throw new BootstrapFailedError(failures, results);
|
|
276
|
-
|
|
277
|
-
|
|
278
|
-
|
|
279
|
-
.values({
|
|
280
|
-
manifest_sha256: manifestSha256,
|
|
281
|
-
completed_at: sql `now()`,
|
|
282
|
-
results: JSON.stringify(results),
|
|
283
|
-
})
|
|
284
|
-
.execute();
|
|
285
|
-
await audit(trx, {
|
|
286
|
-
action: "bootstrap.completed",
|
|
287
|
-
target: manifestSha256,
|
|
288
|
-
detail: { manifestSha256, results },
|
|
289
|
-
});
|
|
290
|
-
});
|
|
291
|
-
this.d.log.info("bootstrap completed", { manifestSha256, results });
|
|
336
|
+
signal.throwIfAborted();
|
|
337
|
+
await this.recordDone(manifestSha256, results);
|
|
338
|
+
this.log.info("bootstrap completed", { manifestSha256, results });
|
|
292
339
|
return { manifestSha256, results };
|
|
293
340
|
});
|
|
294
341
|
}
|
|
295
342
|
/**
|
|
296
|
-
*
|
|
297
|
-
*
|
|
298
|
-
*
|
|
343
|
+
* A pin whose plugin name an org holds (a live org-owned catalog item): the bootstrap takes no
|
|
344
|
+
* name over (ruling P3-28), so the entry fails; this warning tells the super admin why and
|
|
345
|
+
* which org holds it (final review M4).
|
|
346
|
+
*/
|
|
347
|
+
async warnIfHeld(e) {
|
|
348
|
+
const holder = await otherNameOwner(this.db, e.name, null);
|
|
349
|
+
if (holder?.kind !== "org")
|
|
350
|
+
return;
|
|
351
|
+
this.log.warn("bootstrap: the plugin name is held by an organization; the entry cannot take it over until the organization renames or deletes its plugin", {
|
|
352
|
+
plugin: e.name,
|
|
353
|
+
version: e.version,
|
|
354
|
+
required: e.required,
|
|
355
|
+
ownerOrgId: holder.orgId,
|
|
356
|
+
ownerOrg: holder.name,
|
|
357
|
+
});
|
|
358
|
+
}
|
|
359
|
+
/** The `bootstrap_runs` row and the `bootstrap.completed` audit, in one transaction. */
|
|
360
|
+
async recordDone(manifestSha256, results) {
|
|
361
|
+
await this.db
|
|
362
|
+
.insertInto("bootstrap_runs")
|
|
363
|
+
.values({
|
|
364
|
+
manifest_sha256: manifestSha256,
|
|
365
|
+
completed_at: sql `now()`,
|
|
366
|
+
results: JSON.stringify(results),
|
|
367
|
+
})
|
|
368
|
+
.execute();
|
|
369
|
+
await audit(this.db, {
|
|
370
|
+
action: "bootstrap.completed",
|
|
371
|
+
target: manifestSha256,
|
|
372
|
+
detail: { manifestSha256, results },
|
|
373
|
+
});
|
|
374
|
+
}
|
|
375
|
+
/**
|
|
376
|
+
* Runs `fn` holding `lock:bootstrap`: waits without bound while another replica holds it
|
|
377
|
+
* (until `signal` aborts), renews it while `fn` runs and releases it afterwards. `fn` gets a
|
|
378
|
+
* signal that also aborts when the lock is lost.
|
|
299
379
|
*/
|
|
300
380
|
async locked(signal, fn) {
|
|
301
|
-
const
|
|
302
|
-
|
|
303
|
-
|
|
381
|
+
const handle = await this.locks.acquire(BOOTSTRAP_LOCK_KEY, {
|
|
382
|
+
ttlMs: this.lockTtlMs,
|
|
383
|
+
waitMs: Number.POSITIVE_INFINITY,
|
|
384
|
+
retryMs: LOCK_RETRY_MS,
|
|
385
|
+
...(signal !== undefined && { signal }),
|
|
304
386
|
});
|
|
305
|
-
|
|
387
|
+
// An unbounded wait returns a handle or throws the abort reason
|
|
388
|
+
if (!handle)
|
|
389
|
+
throw new Error("bootstrap: the lock could not be taken");
|
|
306
390
|
try {
|
|
307
|
-
await
|
|
308
|
-
for (let wait = 100;; wait = Math.min(wait * 2, 1_000)) {
|
|
309
|
-
signal?.throwIfAborted();
|
|
310
|
-
const r = await client.query("SELECT pg_try_advisory_lock(hashtext($1)) AS ok", [LOCK_KEY]);
|
|
311
|
-
if (r.rows[0]?.ok === true)
|
|
312
|
-
break;
|
|
313
|
-
await sleep(wait, signal);
|
|
314
|
-
}
|
|
315
|
-
try {
|
|
316
|
-
return await fn();
|
|
317
|
-
}
|
|
318
|
-
finally {
|
|
319
|
-
await client
|
|
320
|
-
.query("SELECT pg_advisory_unlock(hashtext($1))", [LOCK_KEY])
|
|
321
|
-
.catch((err) => this.d.log.warn("bootstrap: cannot release the advisory lock; closing its connection", {
|
|
322
|
-
err,
|
|
323
|
-
}));
|
|
324
|
-
}
|
|
391
|
+
return await fn(signal ? AbortSignal.any([signal, handle.lost]) : handle.lost);
|
|
325
392
|
}
|
|
326
393
|
finally {
|
|
327
|
-
await
|
|
394
|
+
await handle.release();
|
|
328
395
|
}
|
|
329
396
|
}
|
|
330
397
|
/** The entry names the last completed run handled (undefined before any run completed). */
|
|
331
398
|
async lastRunNames() {
|
|
332
|
-
const row = await this.
|
|
399
|
+
const row = await this.db
|
|
333
400
|
.selectFrom("bootstrap_runs")
|
|
334
401
|
.select("results")
|
|
335
402
|
.orderBy("completed_at", "desc")
|
|
@@ -341,9 +408,9 @@ export class BootstrapService {
|
|
|
341
408
|
.filter((r) => r.action !== "required_cleared")
|
|
342
409
|
.map((r) => r.name));
|
|
343
410
|
}
|
|
344
|
-
async entry(e, bytes, handled) {
|
|
411
|
+
async entry(e, bytes, handled, imports) {
|
|
345
412
|
const pkg = await readPluginPackage(bytes, {
|
|
346
|
-
maxBytes: this.
|
|
413
|
+
maxBytes: this.config().packages.maxBytes,
|
|
347
414
|
hostSdkVersion: SDK_VERSION,
|
|
348
415
|
}).catch((err) => {
|
|
349
416
|
throw err instanceof PluginPackageError ? catalogPackageError(err) : err;
|
|
@@ -355,34 +422,37 @@ export class BootstrapService {
|
|
|
355
422
|
// Not new to the manifest: an optional entry left out on purpose stays out (Ruling 5)
|
|
356
423
|
const isNew = handled === undefined || !handled.has(e.name);
|
|
357
424
|
if (!pkg.manifest.extension) {
|
|
425
|
+
await this.markBuiltin(e.name, e.required);
|
|
358
426
|
if (!isNew)
|
|
359
427
|
return { name: e.name, action: "kept", version: e.version };
|
|
360
|
-
const imported = await this.importOnly(e, bytes, ref);
|
|
428
|
+
const imported = await this.importOnly(e, bytes, ref, imports);
|
|
429
|
+
await this.markBuiltin(e.name, e.required);
|
|
361
430
|
return { name: e.name, action: imported ? "imported" : "kept", version: e.version };
|
|
362
431
|
}
|
|
363
|
-
if (this.
|
|
364
|
-
this.
|
|
432
|
+
if (this.registry.declared().has(e.name)) {
|
|
433
|
+
this.log.warn("bootstrap: the plugin is declared in the extensions config list; the config plugin is used", { plugin: e.name });
|
|
365
434
|
return { name: e.name, action: "kept", version: e.version };
|
|
366
435
|
}
|
|
367
|
-
const row = await this.
|
|
436
|
+
const row = await this.db
|
|
368
437
|
.selectFrom("extension_installs")
|
|
369
438
|
.select(["version", "source", "required", "desired_state", "sha256"])
|
|
370
439
|
.where("name", "=", e.name)
|
|
371
440
|
.executeTakeFirst();
|
|
372
441
|
if (!row && !isNew && !e.required) {
|
|
373
|
-
this.
|
|
442
|
+
this.log.info("bootstrap: an optional plugin that is not installed stays uninstalled", {
|
|
374
443
|
plugin: e.name,
|
|
375
444
|
});
|
|
376
445
|
return { name: e.name, action: "kept", version: e.version };
|
|
377
446
|
}
|
|
378
447
|
let result;
|
|
448
|
+
let leftDisabled;
|
|
379
449
|
if (!row) {
|
|
380
|
-
await this.deploy(e, bytes, ref, true);
|
|
450
|
+
leftDisabled = await this.deploy(e, bytes, ref, true, imports);
|
|
381
451
|
result = { name: e.name, action: "installed", version: e.version };
|
|
382
452
|
}
|
|
383
453
|
else if (row.source === "bootstrap" && isLower(row.version, e.version)) {
|
|
384
454
|
// The desired state the admin chose is kept; a required plugin is enabled below anyway
|
|
385
|
-
await this.deploy(e, bytes, ref, row.desired_state === "enabled");
|
|
455
|
+
leftDisabled = await this.deploy(e, bytes, ref, row.desired_state === "enabled", imports);
|
|
386
456
|
result = { name: e.name, action: "upgraded", version: e.version };
|
|
387
457
|
}
|
|
388
458
|
else {
|
|
@@ -391,12 +461,12 @@ export class BootstrapService {
|
|
|
391
461
|
row.sha256 !== createHash("sha256").update(bytes).digest("hex")) {
|
|
392
462
|
// The pin changed bytes without a version bump (an image built from main between
|
|
393
463
|
// releases): the installed package stays, so say so instead of keeping it silently
|
|
394
|
-
this.
|
|
464
|
+
this.log.warn("bootstrap: the image's package differs from the installed one at the same version; the installed package is kept (bump the version to roll it out)", { plugin: e.name, version: e.version });
|
|
395
465
|
}
|
|
396
466
|
result = { name: e.name, action: "kept", version: row.version };
|
|
397
467
|
}
|
|
398
468
|
if (row?.required !== e.required) {
|
|
399
|
-
await this.
|
|
469
|
+
await this.db
|
|
400
470
|
.updateTable("extension_installs")
|
|
401
471
|
.set({ required: e.required })
|
|
402
472
|
.where("name", "=", e.name)
|
|
@@ -404,22 +474,52 @@ export class BootstrapService {
|
|
|
404
474
|
}
|
|
405
475
|
// A required install must run on the deployment (an org cannot use it otherwise)
|
|
406
476
|
if (e.required && row?.desired_state === "disabled") {
|
|
407
|
-
await this.
|
|
477
|
+
leftDisabled = await this.enableOrWarn(e);
|
|
478
|
+
}
|
|
479
|
+
await this.markBuiltin(e.name, e.required);
|
|
480
|
+
return leftDisabled === undefined ? result : { ...result, leftDisabled };
|
|
481
|
+
}
|
|
482
|
+
/**
|
|
483
|
+
* The catalog item of a bootstrap entry follows `required`: a required entry is builtin, offered
|
|
484
|
+
* to every org (scope `all`) and not disabled (migration 0075 could leave a required plugin
|
|
485
|
+
* disabled); an entry that stops being required is no longer builtin and keeps scope `all` (the
|
|
486
|
+
* admin may change it from then on).
|
|
487
|
+
*/
|
|
488
|
+
async markBuiltin(name, required) {
|
|
489
|
+
const touch = { updated_at: sql `now()` };
|
|
490
|
+
if (required) {
|
|
491
|
+
await this.db
|
|
492
|
+
.updateTable("catalog_items")
|
|
493
|
+
.set({
|
|
494
|
+
builtin: true,
|
|
495
|
+
scope: "all",
|
|
496
|
+
disabled: false,
|
|
497
|
+
scope_version: sql `scope_version + 1`,
|
|
498
|
+
...touch,
|
|
499
|
+
})
|
|
500
|
+
.where("name", "=", name)
|
|
501
|
+
.where("deleted_at", "is", null)
|
|
502
|
+
.where((eb) => eb.or([eb("builtin", "=", false), eb("scope", "<>", "all"), eb("disabled", "=", true)]))
|
|
503
|
+
.execute();
|
|
504
|
+
return;
|
|
408
505
|
}
|
|
409
|
-
|
|
506
|
+
await this.db
|
|
507
|
+
.updateTable("catalog_items")
|
|
508
|
+
.set({ builtin: false, ...touch })
|
|
509
|
+
.where("name", "=", name)
|
|
510
|
+
.where("deleted_at", "is", null)
|
|
511
|
+
.where("builtin", "=", true)
|
|
512
|
+
.execute();
|
|
410
513
|
}
|
|
411
514
|
/** A declarative plugin: catalog only. Returns false when that version is already imported. */
|
|
412
|
-
async importOnly(e, bytes, ref) {
|
|
515
|
+
async importOnly(e, bytes, ref, imports) {
|
|
413
516
|
try {
|
|
414
|
-
const { stagingId, review } = await
|
|
517
|
+
const { stagingId, review } = await imports.prepare(null, bytes, {
|
|
415
518
|
kind: "bootstrap",
|
|
416
519
|
ref,
|
|
417
520
|
integrity: e.integrity,
|
|
418
521
|
});
|
|
419
|
-
await
|
|
420
|
-
reviewHash: review.reviewHash,
|
|
421
|
-
deployExtension: false,
|
|
422
|
-
});
|
|
522
|
+
await imports.confirm(null, stagingId, { reviewHash: review.reviewHash });
|
|
423
523
|
return true;
|
|
424
524
|
}
|
|
425
525
|
catch (err) {
|
|
@@ -429,14 +529,14 @@ export class BootstrapService {
|
|
|
429
529
|
}
|
|
430
530
|
}
|
|
431
531
|
/**
|
|
432
|
-
* Imports, approves, installs and enables (one review
|
|
532
|
+
* Imports, approves, installs and enables (one review; its confirm deploys the extension). When
|
|
433
533
|
* the catalog already has this version (an earlier run stopped after importing, or the same
|
|
434
534
|
* package came from a marketplace), the extension is deployed from the package store instead.
|
|
435
535
|
*/
|
|
436
|
-
async deploy(e, bytes, ref, enable) {
|
|
536
|
+
async deploy(e, bytes, ref, enable, imports) {
|
|
437
537
|
let staged;
|
|
438
538
|
try {
|
|
439
|
-
staged = await
|
|
539
|
+
staged = await imports.prepare(null, bytes, {
|
|
440
540
|
kind: "bootstrap",
|
|
441
541
|
ref,
|
|
442
542
|
integrity: e.integrity,
|
|
@@ -444,70 +544,140 @@ export class BootstrapService {
|
|
|
444
544
|
}
|
|
445
545
|
catch (err) {
|
|
446
546
|
if (err instanceof ApiError && err.code === "catalog.version_exists") {
|
|
447
|
-
|
|
448
|
-
return;
|
|
547
|
+
return this.deployFromStore(e, bytes, ref, enable);
|
|
449
548
|
}
|
|
450
549
|
throw err;
|
|
451
550
|
}
|
|
452
|
-
const r = await
|
|
551
|
+
const r = await imports.confirm(null, staged.stagingId, {
|
|
453
552
|
reviewHash: staged.review.reviewHash,
|
|
454
|
-
deployExtension: true,
|
|
455
553
|
enable,
|
|
456
554
|
});
|
|
457
555
|
if (r.deploy?.result === "failed") {
|
|
458
556
|
throw new ApiError((r.deploy.code ?? "internal"), r.deploy.message ?? `installing extension ${e.name} failed`);
|
|
459
557
|
}
|
|
558
|
+
if (r.deploy?.singleProvider !== undefined) {
|
|
559
|
+
return this.leftDisabled(e, {
|
|
560
|
+
code: r.deploy.code,
|
|
561
|
+
message: r.deploy.message,
|
|
562
|
+
singleProvider: r.deploy.singleProvider,
|
|
563
|
+
});
|
|
564
|
+
}
|
|
565
|
+
return undefined;
|
|
460
566
|
}
|
|
461
567
|
/** The extension of a catalog version already imported: ingest, approve, install (, enable). */
|
|
462
568
|
async deployFromStore(e, bytes, ref, enable) {
|
|
463
|
-
const review = await this.
|
|
569
|
+
const review = await this.installs.ingest(null, bytes, { source: "bootstrap", ref }, { store: "pg" });
|
|
464
570
|
let set;
|
|
465
571
|
try {
|
|
466
572
|
set = permissionSetOfPackage(await readExtensionPackage(bytes, {
|
|
467
|
-
maxBytes: this.
|
|
573
|
+
maxBytes: this.config().packages.maxBytes,
|
|
468
574
|
hostSdkVersion: SDK_VERSION,
|
|
469
575
|
}));
|
|
470
576
|
}
|
|
471
577
|
catch (err) {
|
|
472
578
|
throw err instanceof ExtensionPackageError ? catalogPackageError(err) : err;
|
|
473
579
|
}
|
|
474
|
-
await this.
|
|
475
|
-
|
|
476
|
-
const snap = await trx
|
|
477
|
-
.selectFrom("extension_permission_snapshots")
|
|
478
|
-
.select("permissions")
|
|
479
|
-
.where("plugin", "=", e.name)
|
|
480
|
-
.forUpdate()
|
|
481
|
-
.executeTakeFirst();
|
|
482
|
-
const { added, removed } = diffPermissions(snap?.permissions, set);
|
|
483
|
-
await writeSnapshot(trx, e.name, e.version, set, {
|
|
484
|
-
source: "bootstrap",
|
|
485
|
-
audit: { added, removed, sha256: review.sha256 },
|
|
486
|
-
});
|
|
487
|
-
});
|
|
488
|
-
const item = await this.d.db
|
|
580
|
+
await this.approveStored(e, set, review.sha256);
|
|
581
|
+
const item = await this.db
|
|
489
582
|
.selectFrom("catalog_items")
|
|
490
583
|
.select("id")
|
|
491
584
|
.where("name", "=", e.name)
|
|
492
585
|
.where("deleted_at", "is", null)
|
|
493
586
|
.executeTakeFirst();
|
|
494
|
-
await this.
|
|
495
|
-
|
|
496
|
-
|
|
587
|
+
const installed = await this.ops.install(e.name, review.sha256, null, undefined, item ? { catalogItemId: item.id } : {});
|
|
588
|
+
// An upgrade newly providing a held single-provider point is left disabled by the install
|
|
589
|
+
if (installed.leftDisabled !== undefined)
|
|
590
|
+
return this.leftDisabled(e, installed.leftDisabled);
|
|
591
|
+
return enable ? this.enableOrWarn(e) : undefined;
|
|
592
|
+
}
|
|
593
|
+
/**
|
|
594
|
+
* Enables a bootstrap extension unless another enabled extension provides one of its
|
|
595
|
+
* single-provider extension points (see {@link leftDisabled}).
|
|
596
|
+
*/
|
|
597
|
+
async enableOrWarn(e) {
|
|
598
|
+
const r = await this.ops.enableUnlessOccupied(e.name, null);
|
|
599
|
+
return r.enabled ? undefined : this.leftDisabled(e, r.note);
|
|
600
|
+
}
|
|
601
|
+
/**
|
|
602
|
+
* A bootstrap extension left disabled because another enabled extension holds a single-provider
|
|
603
|
+
* extension point it provides. An optional preinstall (a sandbox while the super admin runs
|
|
604
|
+
* another one) stays disabled with a warning, and the entry's result says so. A required entry
|
|
605
|
+
* fails (thrown, so the run is not recorded done, `capybara bootstrap` exits 1 and
|
|
606
|
+
* `capybara start` refuses to serve): the deployment cannot run without it, and only the super
|
|
607
|
+
* admin can free the point, by disabling the other provider and running the bootstrap again.
|
|
608
|
+
*/
|
|
609
|
+
leftDisabled(e, note) {
|
|
610
|
+
const block = note.singleProvider;
|
|
611
|
+
if (e.required) {
|
|
612
|
+
const other = block.enabled.name;
|
|
613
|
+
throw new ApiError(note.code, `Required plugin ${e.name} provides ${block.extensionPoint}, which ${other} already provides; disable ${other} and run the bootstrap again`, [block]);
|
|
614
|
+
}
|
|
615
|
+
this.log.warn(`bootstrap: the plugin is installed disabled; ${note.message}`, {
|
|
616
|
+
plugin: e.name,
|
|
617
|
+
required: e.required,
|
|
618
|
+
});
|
|
619
|
+
return note;
|
|
620
|
+
}
|
|
621
|
+
/** The permission snapshot of a stored package (source `bootstrap`), under the approve lock. */
|
|
622
|
+
async approveStored(e, set, sha256) {
|
|
623
|
+
await this.approveLock.lock(e.name);
|
|
624
|
+
const snap = await this.db
|
|
625
|
+
.selectFrom("extension_permission_snapshots")
|
|
626
|
+
.select("permissions")
|
|
627
|
+
.where("plugin", "=", e.name)
|
|
628
|
+
.forUpdate()
|
|
629
|
+
.executeTakeFirst();
|
|
630
|
+
const { added, removed } = diffPermissions(snap?.permissions, set);
|
|
631
|
+
await writeSnapshot(this.db, e.name, e.version, set, {
|
|
632
|
+
source: "bootstrap",
|
|
633
|
+
audit: { added, removed, sha256 },
|
|
634
|
+
});
|
|
497
635
|
}
|
|
498
636
|
/** Install records still `required` whose entry left the manifest lose `required`. */
|
|
499
637
|
async clearRemoved(manifest) {
|
|
500
638
|
const names = manifest.plugins.map((p) => p.name);
|
|
501
|
-
let q = this.
|
|
639
|
+
let q = this.db
|
|
502
640
|
.updateTable("extension_installs")
|
|
503
641
|
.set({ required: false })
|
|
504
642
|
.where("required", "=", true);
|
|
505
643
|
if (names.length > 0)
|
|
506
644
|
q = q.where("name", "not in", names);
|
|
507
645
|
const rows = await q.returning(["name", "version"]).execute();
|
|
646
|
+
for (const r of rows)
|
|
647
|
+
await this.markBuiltin(r.name, false);
|
|
648
|
+
// A declarative plugin has no install record: clear builtin by catalog name
|
|
649
|
+
let items = this.db
|
|
650
|
+
.updateTable("catalog_items")
|
|
651
|
+
.set({ builtin: false, updated_at: sql `now()` })
|
|
652
|
+
.where("builtin", "=", true)
|
|
653
|
+
.where("deleted_at", "is", null);
|
|
654
|
+
if (names.length > 0)
|
|
655
|
+
items = items.where("name", "not in", names);
|
|
656
|
+
await items.execute();
|
|
508
657
|
return rows.map((r) => ({ name: r.name, action: "required_cleared", version: r.version }));
|
|
509
658
|
}
|
|
510
|
-
}
|
|
659
|
+
};
|
|
660
|
+
__decorate([
|
|
661
|
+
Transactional()
|
|
662
|
+
], BootstrapService.prototype, "recordDone", null);
|
|
663
|
+
__decorate([
|
|
664
|
+
Transactional()
|
|
665
|
+
], BootstrapService.prototype, "approveStored", null);
|
|
666
|
+
BootstrapService = __decorate([
|
|
667
|
+
Injectable(),
|
|
668
|
+
__param(0, Inject(KernelDb)),
|
|
669
|
+
__param(1, Inject(TransactionHost)),
|
|
670
|
+
__param(2, Inject(LockService)),
|
|
671
|
+
__param(3, Inject(PluginApproveLock)),
|
|
672
|
+
__param(4, Inject(ExtensionInstalls)),
|
|
673
|
+
__param(5, Inject(ExtensionAdminOps)),
|
|
674
|
+
__param(6, Inject(ExtensionRegistry)),
|
|
675
|
+
__param(7, Inject(KernelConfigService)),
|
|
676
|
+
__param(8, Inject(KERNEL_LOGGER)),
|
|
677
|
+
__param(9, Optional()),
|
|
678
|
+
__param(9, Inject(BOOTSTRAP_LOCK_TTL))
|
|
679
|
+
], BootstrapService);
|
|
680
|
+
export { BootstrapService };
|
|
511
681
|
/** A `kept` result whose entry an earlier pass of the same start installed / upgraded / imported. */
|
|
512
682
|
function carried(r, carry) {
|
|
513
683
|
if (r.action !== "kept")
|
|
@@ -517,19 +687,5 @@ function carried(r, carry) {
|
|
|
517
687
|
? before
|
|
518
688
|
: r;
|
|
519
689
|
}
|
|
520
|
-
/** Resolves after `ms`; rejects with the abort reason when `signal` aborts first. */
|
|
521
|
-
function sleep(ms, signal) {
|
|
522
|
-
return new Promise((resolve, reject) => {
|
|
523
|
-
const onAbort = () => {
|
|
524
|
-
clearTimeout(timer);
|
|
525
|
-
reject(signal?.reason);
|
|
526
|
-
};
|
|
527
|
-
const timer = setTimeout(() => {
|
|
528
|
-
signal?.removeEventListener("abort", onAbort);
|
|
529
|
-
resolve();
|
|
530
|
-
}, ms);
|
|
531
|
-
signal?.addEventListener("abort", onAbort, { once: true });
|
|
532
|
-
});
|
|
533
|
-
}
|
|
534
690
|
/** `installed` is below `pinned` (a version that is not semver is never upgraded). */
|
|
535
691
|
const isLower = (installed, pinned) => semver.valid(installed) !== null && semver.valid(pinned) !== null && semver.lt(installed, pinned);
|