@capybara-hq/kernel 0.1.0-rc.2 → 0.1.0-rc.21
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 +94 -5
- package/dist/admin/admin-agents.controller.d.ts +28 -0
- package/dist/admin/admin-agents.controller.js +79 -0
- package/dist/admin/admin-connectors.controller.d.ts +29 -0
- package/dist/admin/admin-connectors.controller.js +79 -0
- package/dist/admin/admin-items.schemas.d.ts +42 -0
- package/dist/admin/admin-items.schemas.js +48 -0
- package/dist/admin/admin.controller.d.ts +52 -80
- package/dist/admin/admin.controller.js +112 -81
- package/dist/admin/admin.module.d.ts +4 -1
- package/dist/admin/admin.module.js +50 -4
- package/dist/admin/admin.schemas.d.ts +69 -0
- package/dist/admin/admin.schemas.js +53 -0
- package/dist/admin/audit.controller.d.ts +14 -0
- package/dist/admin/audit.controller.js +42 -0
- package/dist/admin/audit.schemas.d.ts +8 -0
- package/dist/admin/audit.schemas.js +17 -0
- package/dist/admin/extensions.controller.d.ts +34 -3
- package/dist/admin/extensions.controller.js +66 -8
- package/dist/admin/extensions.schemas.d.ts +7 -0
- package/dist/admin/extensions.schemas.js +10 -0
- package/dist/admin/health.service.d.ts +104 -0
- package/dist/admin/health.service.js +246 -0
- package/dist/admin/limit-defaults.d.ts +20 -0
- package/dist/admin/limit-defaults.js +10 -0
- package/dist/admin/overview.controller.d.ts +31 -0
- package/dist/admin/overview.controller.js +78 -0
- package/dist/admin/overview.schemas.d.ts +8 -0
- package/dist/admin/overview.schemas.js +13 -0
- package/dist/admin/overview.service.d.ts +112 -0
- package/dist/admin/overview.service.js +223 -0
- package/dist/admin/platform-audit.service.d.ts +41 -0
- package/dist/admin/platform-audit.service.js +70 -0
- package/dist/admin/setup-lock.d.ts +1 -1
- package/dist/admin/setup-lock.js +1 -1
- package/dist/admin/setup.controller.d.ts +1 -1
- package/dist/admin/setup.controller.js +1 -1
- package/dist/admin/setup.service.d.ts +4 -4
- package/dist/admin/setup.service.js +8 -8
- package/dist/admin/usage.service.d.ts +149 -0
- package/dist/admin/usage.service.js +321 -0
- package/dist/agents/admin-agents.d.ts +92 -0
- package/dist/agents/admin-agents.js +170 -0
- package/dist/agents/agent-lookup.d.ts +24 -0
- package/dist/agents/agent-lookup.js +46 -2
- 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 +53 -168
- package/dist/agents/agents.controller.js +163 -34
- package/dist/agents/agents.module.d.ts +6 -2
- package/dist/agents/agents.module.js +41 -7
- package/dist/agents/agents.schemas.d.ts +392 -0
- package/dist/agents/agents.schemas.js +126 -0
- package/dist/agents/agents.service.d.ts +121 -36
- package/dist/agents/agents.service.js +411 -121
- package/dist/agents/definition.d.ts +142 -21
- package/dist/agents/definition.js +389 -43
- 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 +876 -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 +77 -5
- package/dist/agents/templates.controller.js +153 -7
- package/dist/agents/templates.d.ts +127 -23
- package/dist/agents/templates.js +482 -44
- package/dist/agents/templates.schemas.d.ts +20 -0
- package/dist/agents/templates.schemas.js +45 -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 +109 -0
- package/dist/background/tasks.service.js +271 -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 +136 -52
- package/dist/catalog/admin-catalog.controller.js +275 -65
- package/dist/catalog/admin-catalog.schemas.d.ts +82 -0
- package/dist/catalog/admin-catalog.schemas.js +99 -0
- package/dist/catalog/appearance.schemas.d.ts +10 -0
- package/dist/catalog/appearance.schemas.js +20 -0
- package/dist/catalog/appearance.service.d.ts +105 -0
- package/dist/catalog/appearance.service.js +306 -0
- package/dist/catalog/catalog-content.d.ts +122 -35
- package/dist/catalog/catalog-content.js +122 -14
- package/dist/catalog/catalog-files.d.ts +42 -0
- package/dist/catalog/catalog-files.js +89 -0
- package/dist/catalog/catalog-import.module.d.ts +7 -0
- package/dist/catalog/catalog-import.module.js +63 -0
- package/dist/catalog/catalog-items.d.ts +122 -7
- package/dist/catalog/catalog-items.js +301 -13
- package/dist/catalog/catalog-scope.service.d.ts +293 -0
- package/dist/catalog/catalog-scope.service.js +1236 -0
- package/dist/catalog/catalog.module.d.ts +7 -9
- package/dist/catalog/catalog.module.js +47 -31
- package/dist/catalog/catalog.service.d.ts +122 -31
- package/dist/catalog/catalog.service.js +177 -105
- package/dist/catalog/claude/agents.js +15 -10
- package/dist/catalog/claude/translate.js +3 -0
- package/dist/catalog/cli.d.ts +11 -1
- package/dist/catalog/cli.js +29 -1
- 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 +102 -0
- package/dist/catalog/component-scope.controller.js +257 -0
- package/dist/catalog/component-scope.schemas.d.ts +118 -0
- package/dist/catalog/component-scope.schemas.js +97 -0
- package/dist/catalog/component-scope.service.d.ts +394 -0
- package/dist/catalog/component-scope.service.js +1133 -0
- package/dist/catalog/component-state.d.ts +207 -0
- package/dist/catalog/component-state.js +484 -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 +30 -0
- package/dist/catalog/job-ids.js +25 -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 +50 -41
- package/dist/catalog/marketplaces.controller.js +130 -46
- package/dist/catalog/marketplaces.schemas.d.ts +48 -0
- package/dist/catalog/marketplaces.schemas.js +53 -0
- package/dist/catalog/marketplaces.service.d.ts +110 -17
- package/dist/catalog/marketplaces.service.js +337 -29
- package/dist/catalog/org-catalog.controller.d.ts +114 -62
- package/dist/catalog/org-catalog.controller.js +191 -98
- package/dist/catalog/org-catalog.schemas.d.ts +104 -0
- package/dist/catalog/org-catalog.schemas.js +107 -0
- package/dist/catalog/org-catalog.service.d.ts +72 -33
- package/dist/catalog/org-catalog.service.js +367 -158
- 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 +133 -0
- package/dist/catalog/org-extension.controller.js +313 -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 +808 -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 +243 -0
- package/dist/catalog/platform-components.js +872 -0
- package/dist/catalog/platform-migration.d.ts +115 -0
- package/dist/catalog/platform-migration.js +583 -0
- package/dist/catalog/plugin-import.d.ts +254 -47
- package/dist/catalog/plugin-import.js +810 -112
- package/dist/catalog/plugin-install.d.ts +205 -42
- package/dist/catalog/plugin-install.js +828 -126
- package/dist/catalog/plugin-package.d.ts +43 -4
- package/dist/catalog/plugin-package.js +194 -7
- package/dist/catalog/plugin-upgrade.d.ts +308 -225
- package/dist/catalog/plugin-upgrade.js +1325 -1131
- package/dist/catalog/request-rules.d.ts +65 -0
- package/dist/catalog/request-rules.js +217 -0
- package/dist/catalog/requests.service.d.ts +194 -118
- package/dist/catalog/requests.service.js +530 -343
- 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 +119 -0
- package/dist/channels/actions.js +10 -3
- package/dist/channels/cards.d.ts +36 -10
- package/dist/channels/cards.js +100 -25
- package/dist/channels/channels.module.js +13 -2
- package/dist/channels/channels.schemas.d.ts +41 -0
- package/dist/channels/channels.schemas.js +40 -0
- package/dist/channels/connections.controller.d.ts +46 -37
- package/dist/channels/connections.controller.js +76 -34
- package/dist/channels/connections.service.d.ts +102 -10
- package/dist/channels/connections.service.js +271 -24
- package/dist/channels/inbound.d.ts +11 -1
- package/dist/channels/inbound.js +87 -7
- package/dist/channels/outbound.d.ts +14 -1
- package/dist/channels/outbound.js +64 -15
- package/dist/channels/phrases.d.ts +33 -2
- package/dist/channels/phrases.js +29 -1
- package/dist/channels/supervisor.d.ts +2 -0
- package/dist/channels/supervisor.js +4 -0
- package/dist/channels/threads.d.ts +5 -0
- package/dist/channels/threads.js +8 -0
- package/dist/channels/webhook.d.ts +21 -1
- package/dist/channels/webhook.js +39 -4
- package/dist/client/client-access.service.d.ts +102 -0
- package/dist/client/client-access.service.js +303 -0
- package/dist/client/client-builds.service.d.ts +109 -0
- package/dist/client/client-builds.service.js +229 -0
- package/dist/client/client-delivery.controller.d.ts +25 -0
- package/dist/client/client-delivery.controller.js +66 -0
- package/dist/client/client-files.d.ts +48 -0
- package/dist/client/client-files.js +136 -0
- package/dist/client/client-reports.cron.d.ts +13 -0
- package/dist/client/client-reports.cron.js +42 -0
- package/dist/client/client-reports.service.d.ts +30 -0
- package/dist/client/client-reports.service.js +102 -0
- package/dist/client/client-sign-in.service.d.ts +21 -0
- package/dist/client/client-sign-in.service.js +49 -0
- package/dist/client/client.controller.d.ts +49 -0
- package/dist/client/client.controller.js +129 -0
- package/dist/client/client.module.d.ts +8 -0
- package/dist/client/client.module.js +28 -0
- package/dist/client/client.schemas.d.ts +61 -0
- package/dist/client/client.schemas.js +27 -0
- package/dist/config/docs.js +5 -1
- package/dist/config/schema.d.ts +35 -2
- package/dist/config/schema.js +216 -21
- package/dist/conversations/access.d.ts +6 -4
- package/dist/conversations/access.js +29 -5
- package/dist/conversations/agent-tree.d.ts +46 -0
- package/dist/conversations/agent-tree.js +92 -0
- package/dist/conversations/artifacts.d.ts +1 -1
- package/dist/conversations/artifacts.js +1 -1
- package/dist/conversations/attachments.service.d.ts +30 -0
- package/dist/conversations/attachments.service.js +130 -5
- package/dist/conversations/conversations.controller.d.ts +79 -44
- package/dist/conversations/conversations.controller.js +133 -82
- package/dist/conversations/conversations.module.d.ts +1 -1
- package/dist/conversations/conversations.module.js +10 -7
- package/dist/conversations/conversations.schemas.d.ts +52 -0
- package/dist/conversations/conversations.schemas.js +79 -0
- package/dist/conversations/conversations.service.d.ts +161 -13
- package/dist/conversations/conversations.service.js +329 -57
- package/dist/conversations/device-status.d.ts +24 -0
- package/dist/conversations/device-status.js +71 -0
- package/dist/conversations/event-log.d.ts +45 -9
- package/dist/conversations/event-log.js +113 -6
- package/dist/conversations/events.d.ts +255 -9
- package/dist/conversations/events.js +250 -34
- package/dist/conversations/message-context.d.ts +79 -0
- package/dist/conversations/message-context.js +145 -0
- package/dist/conversations/queue.d.ts +5 -2
- package/dist/conversations/queue.js +24 -4
- package/dist/conversations/queue.service.d.ts +2 -2
- package/dist/conversations/queue.service.js +21 -3
- package/dist/conversations/titles.d.ts +12 -3
- package/dist/conversations/titles.js +40 -16
- package/dist/conversations/tree.d.ts +17 -0
- package/dist/conversations/tree.js +42 -0
- package/dist/ctx/create-ctx.d.ts +48 -5
- package/dist/ctx/create-ctx.js +174 -34
- package/dist/db/kernel-schema.d.ts +668 -27
- package/dist/db/pool.d.ts +5 -0
- package/dist/db/pool.js +3 -0
- package/dist/devices/access.d.ts +66 -0
- package/dist/devices/access.js +113 -0
- package/dist/devices/conversation-devices.d.ts +75 -0
- package/dist/devices/conversation-devices.js +230 -0
- package/dist/devices/devices.controller.d.ts +36 -0
- package/dist/devices/devices.controller.js +124 -0
- package/dist/devices/devices.module.d.ts +8 -0
- package/dist/devices/devices.module.js +34 -0
- package/dist/devices/devices.schemas.d.ts +3 -0
- package/dist/devices/devices.schemas.js +14 -0
- package/dist/devices/devices.service.d.ts +251 -0
- package/dist/devices/devices.service.js +791 -0
- package/dist/devices/dto.d.ts +25 -0
- package/dist/devices/dto.js +12 -0
- package/dist/devices/label.d.ts +11 -0
- package/dist/devices/label.js +25 -0
- package/dist/devices/legacy-cleanup.job.d.ts +34 -0
- package/dist/devices/legacy-cleanup.job.js +141 -0
- package/dist/errors.d.ts +215 -3
- package/dist/errors.js +215 -3
- package/dist/evals/evals.module.js +11 -2
- package/dist/evals/evals.schemas.d.ts +110 -0
- package/dist/evals/evals.schemas.js +107 -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 +20 -3
- package/dist/evals/run-replay.js +78 -14
- package/dist/evals/runs.controller.d.ts +2 -57
- package/dist/evals/runs.controller.js +1 -42
- package/dist/evals/runs.service.d.ts +8 -7
- package/dist/evals/runs.service.js +45 -30
- package/dist/evals/sets.controller.d.ts +2 -28
- package/dist/evals/sets.controller.js +1 -31
- package/dist/evals/sets.service.d.ts +7 -7
- package/dist/evals/sets.service.js +23 -17
- package/dist/evals/snapshot.d.ts +3 -2
- package/dist/evals/snapshot.js +17 -4
- package/dist/evals/step-replay.d.ts +4 -6
- package/dist/evals/step-replay.js +16 -9
- package/dist/evals/trajectory.d.ts +5 -3
- package/dist/evals/trajectory.js +4 -1
- package/dist/evals/trajectory.service.d.ts +8 -3
- package/dist/evals/trajectory.service.js +26 -14
- package/dist/evals/worker.d.ts +5 -5
- package/dist/evals/worker.js +9 -3
- package/dist/extensions/admin-ops.d.ts +81 -14
- package/dist/extensions/admin-ops.js +181 -47
- package/dist/extensions/admin-view.d.ts +57 -10
- package/dist/extensions/admin-view.js +249 -27
- package/dist/extensions/approvals.d.ts +12 -2
- package/dist/extensions/blobs.d.ts +14 -1
- package/dist/extensions/blobs.js +49 -5
- package/dist/extensions/bootstrap.d.ts +85 -10
- package/dist/extensions/bootstrap.js +215 -36
- package/dist/extensions/cli.d.ts +12 -0
- package/dist/extensions/cli.js +11 -2
- package/dist/extensions/config-hash.d.ts +10 -0
- package/dist/extensions/config-hash.js +38 -0
- package/dist/extensions/config-issues.d.ts +13 -1
- package/dist/extensions/config-issues.js +22 -5
- 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 +6 -0
- package/dist/extensions/deployment-config.d.ts +94 -9
- package/dist/extensions/deployment-config.js +255 -34
- package/dist/extensions/display-name.d.ts +22 -0
- package/dist/extensions/display-name.js +77 -0
- package/dist/extensions/effective-config.d.ts +133 -0
- package/dist/extensions/effective-config.js +379 -0
- package/dist/extensions/extensions.module.js +31 -12
- package/dist/extensions/guide-places.d.ts +68 -0
- package/dist/extensions/guide-places.js +152 -0
- package/dist/extensions/hooks.d.ts +37 -4
- package/dist/extensions/hooks.js +82 -16
- package/dist/extensions/host.d.ts +105 -12
- package/dist/extensions/host.js +372 -87
- package/dist/extensions/installs.d.ts +30 -9
- package/dist/extensions/installs.js +57 -16
- package/dist/extensions/instance.d.ts +17 -2
- package/dist/extensions/instance.js +21 -0
- package/dist/extensions/ledger.d.ts +1 -1
- package/dist/extensions/locks.d.ts +12 -0
- package/dist/extensions/locks.js +26 -0
- package/dist/extensions/org-config.d.ts +97 -7
- package/dist/extensions/org-config.js +215 -45
- 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 +18 -4
- package/dist/extensions/package.js +56 -3
- package/dist/extensions/permission-set.d.ts +35 -5
- package/dist/extensions/permission-set.js +36 -5
- package/dist/extensions/permission-view.d.ts +106 -13
- package/dist/extensions/permission-view.js +33 -15
- package/dist/extensions/plugin-guides.d.ts +282 -0
- package/dist/extensions/plugin-guides.js +554 -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 +1 -1
- package/dist/extensions/registry.js +2 -0
- 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 +13 -2
- package/dist/extensions/sources.js +2 -0
- package/dist/extensions/state.module.d.ts +9 -0
- package/dist/extensions/state.module.js +46 -0
- package/dist/extensions/unavailable.d.ts +50 -0
- package/dist/extensions/unavailable.js +115 -0
- package/dist/files/previewers.controller.js +2 -3
- package/dist/files/previewers.d.ts +10 -3
- package/dist/files/previewers.js +40 -11
- package/dist/files/previewers.schemas.d.ts +10 -0
- package/dist/files/previewers.schemas.js +9 -0
- package/dist/http/api.module.js +76 -4
- package/dist/http/app.d.ts +11 -2
- package/dist/http/app.js +31 -5
- package/dist/http/gateway-routes.d.ts +7 -3
- package/dist/http/gateway-routes.js +6 -3
- 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 +77 -31
- package/dist/identity/accounts.js +133 -52
- package/dist/identity/audit.d.ts +2 -1
- package/dist/identity/auth.controller.js +9 -5
- package/dist/identity/auth.guard.d.ts +13 -5
- package/dist/identity/auth.guard.js +35 -9
- package/dist/identity/cookies.d.ts +26 -5
- package/dist/identity/cookies.js +58 -6
- package/dist/identity/identity.module.d.ts +1 -1
- package/dist/identity/identity.module.js +7 -4
- 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 +17 -1
- package/dist/identity/me.controller.js +45 -4
- package/dist/identity/me.schemas.d.ts +24 -0
- package/dist/identity/me.schemas.js +25 -0
- package/dist/identity/principal.d.ts +11 -3
- package/dist/identity/principal.js +11 -3
- package/dist/identity/sessions.d.ts +12 -0
- package/dist/identity/sessions.js +45 -0
- package/dist/identity/settings.d.ts +99 -12
- package/dist/identity/settings.js +234 -25
- package/dist/identity/{enterprise-admin.d.ts → super-admin.d.ts} +5 -5
- package/dist/identity/{enterprise-admin.js → super-admin.js} +24 -24
- package/dist/identity/write-actor.d.ts +11 -0
- package/dist/identity/write-actor.js +7 -0
- package/dist/inbox/inbox.module.d.ts +4 -1
- package/dist/inbox/inbox.module.js +7 -3
- package/dist/inbox/inbox.schemas.d.ts +8 -0
- package/dist/inbox/inbox.schemas.js +11 -0
- package/dist/inbox/inbox.service.d.ts +64 -4
- package/dist/inbox/inbox.service.js +74 -4
- 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 +157 -0
- package/dist/inbox/platform-inbox.service.js +281 -0
- package/dist/inbox/platform-notices.d.ts +19 -0
- package/dist/inbox/platform-notices.js +9 -0
- package/dist/index.d.ts +6 -2
- package/dist/index.js +7 -1
- package/dist/infra/cli/kernel-cli.module.js +9 -1
- package/dist/infra/config/kernel-config.service.js +32 -1
- package/dist/infra/database/database.module.js +1 -0
- package/dist/infra/database/xact-lock.d.ts +1 -1
- package/dist/infra/database/xact-lock.js +1 -1
- package/dist/infra/events/kernel-events.d.ts +31 -3
- package/dist/infra/lifecycle/process-guards.js +4 -0
- package/dist/infra/lock/lock.service.d.ts +8 -0
- package/dist/infra/lock/lock.service.js +27 -0
- package/dist/infra/logging/logging.module.d.ts +4 -2
- package/dist/infra/logging/logging.module.js +24 -6
- package/dist/infra/presence/presence.module.d.ts +6 -0
- package/dist/infra/presence/presence.module.js +22 -0
- package/dist/infra/presence/replica-presence.d.ts +87 -0
- package/dist/infra/presence/replica-presence.js +189 -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/redis-connection.d.ts +6 -0
- package/dist/infra/queue/redis-connection.js +7 -0
- package/dist/infra/redis/redis.module.js +6 -2
- package/dist/infra/throttler/named-throttlers.d.ts +12 -0
- package/dist/infra/throttler/named-throttlers.js +67 -0
- package/dist/infra/throttler/throttler.guard.js +1 -1
- package/dist/infra/tokens.d.ts +6 -1
- package/dist/infra/tokens.js +6 -1
- package/dist/kernel.module.js +15 -0
- package/dist/lifecycle/kernel-lifecycle.d.ts +9 -3
- package/dist/lifecycle/kernel-lifecycle.js +51 -11
- package/dist/local-devices/device-auth.controller.d.ts +42 -0
- package/dist/local-devices/device-auth.controller.js +116 -0
- package/dist/local-devices/device-auth.d.ts +119 -0
- package/dist/local-devices/device-auth.js +401 -0
- package/dist/local-devices/device-auth.module.d.ts +7 -0
- package/dist/local-devices/device-auth.module.js +25 -0
- package/dist/local-devices/device-routes.d.ts +36 -0
- package/dist/local-devices/device-routes.js +90 -0
- package/dist/local-devices/dto.d.ts +66 -0
- package/dist/local-devices/dto.js +44 -0
- package/dist/local-devices/keys.d.ts +25 -0
- package/dist/local-devices/keys.js +25 -0
- package/dist/local-devices/local-device-gateway.d.ts +134 -0
- package/dist/local-devices/local-device-gateway.js +542 -0
- package/dist/local-devices/local-device-provider.d.ts +89 -0
- package/dist/local-devices/local-device-provider.js +151 -0
- package/dist/local-devices/local-devices.module.d.ts +16 -0
- package/dist/local-devices/local-devices.module.js +44 -0
- package/dist/local-devices/machines.d.ts +118 -0
- package/dist/local-devices/machines.js +366 -0
- package/dist/local-devices/relay.d.ts +100 -0
- package/dist/local-devices/relay.js +373 -0
- package/dist/local-devices/targets.d.ts +28 -0
- package/dist/local-devices/targets.js +73 -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 +5 -1
- package/dist/models/models.module.js +16 -4
- 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 +8 -6
- package/dist/models/prices.js +11 -9
- package/dist/models/purposes.controller.d.ts +6 -4
- package/dist/models/purposes.controller.js +13 -7
- package/dist/models/purposes.d.ts +72 -14
- package/dist/models/purposes.js +115 -34
- package/dist/orgs/directory-sync.d.ts +14 -5
- package/dist/orgs/directory-sync.js +41 -17
- package/dist/orgs/offboarding.d.ts +12 -8
- package/dist/orgs/offboarding.js +54 -33
- package/dist/orgs/org-lock.d.ts +5 -0
- package/dist/orgs/org-lock.js +13 -0
- package/dist/orgs/org.guard.d.ts +10 -0
- package/dist/orgs/org.guard.js +43 -32
- package/dist/orgs/orgs.controller.d.ts +2 -5
- package/dist/orgs/orgs.controller.js +3 -6
- package/dist/orgs/orgs.module.js +3 -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 +23 -8
- package/dist/orgs/orgs.service.js +38 -16
- package/dist/orgs/roles.d.ts +1 -1
- package/dist/orgs/roles.js +5 -1
- package/dist/orgs/settings.controller.d.ts +1 -1
- package/dist/orgs/settings.service.d.ts +66 -6
- package/dist/orgs/settings.service.js +89 -10
- package/dist/overrides.d.ts +16 -1
- package/dist/overrides.js +10 -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 +774 -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 +102 -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-items.ops.d.ts +37 -0
- package/dist/platform/ops/admin-items.ops.js +278 -0
- package/dist/platform/ops/admin.ops.d.ts +38 -0
- package/dist/platform/ops/admin.ops.js +497 -0
- package/dist/platform/ops/agent-skills.ops.d.ts +50 -0
- package/dist/platform/ops/agent-skills.ops.js +509 -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 +730 -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 +92 -0
- package/dist/platform/ops/catalog-admin.ops.js +682 -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 +854 -0
- package/dist/platform/ops/connectors.ops.d.ts +17 -0
- package/dist/platform/ops/connectors.ops.js +190 -0
- package/dist/platform/ops/conversations.ops.d.ts +30 -0
- package/dist/platform/ops/conversations.ops.js +470 -0
- package/dist/platform/ops/devices.ops.d.ts +26 -0
- package/dist/platform/ops/devices.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 +381 -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 +35 -0
- package/dist/platform/ops/org-plugins.ops.js +388 -0
- package/dist/platform/ops/org-settings.ops.d.ts +18 -0
- package/dist/platform/ops/org-settings.ops.js +127 -0
- package/dist/platform/ops/orgs.ops.d.ts +28 -0
- package/dist/platform/ops/orgs.ops.js +298 -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 +30 -0
- package/dist/platform/ops/platform.ops.js +231 -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/setup.ops.d.ts +24 -0
- package/dist/platform/ops/setup.ops.js +212 -0
- package/dist/platform/ops/skills.ops.d.ts +17 -0
- package/dist/platform/ops/skills.ops.js +160 -0
- package/dist/platform/ops/summary.d.ts +10 -0
- package/dist/platform/ops/summary.js +18 -0
- package/dist/platform/ops/themes.ops.d.ts +14 -0
- package/dist/platform/ops/themes.ops.js +47 -0
- package/dist/platform/ops/ui.ops.d.ts +8 -0
- package/dist/platform/ops/ui.ops.js +41 -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 +43 -0
- package/dist/platform/platform-ops.module.js +142 -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 +85 -0
- package/dist/roles/gateway-role.d.ts +18 -3
- package/dist/roles/gateway-role.js +33 -5
- package/dist/roles/gateway.module.d.ts +2 -1
- package/dist/roles/gateway.module.js +6 -3
- package/dist/roles/worker-role.d.ts +6 -4
- package/dist/roles/worker-role.js +14 -7
- package/dist/roles/worker.module.d.ts +1 -1
- package/dist/roles/worker.module.js +21 -1
- 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/device-paths.d.ts +40 -0
- package/dist/runtime/context/device-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/hook-calls.d.ts +8 -1
- package/dist/runtime/hook-calls.js +40 -7
- package/dist/runtime/langgraph-loop.d.ts +3 -1
- package/dist/runtime/langgraph-loop.js +36 -17
- package/dist/runtime/loop.d.ts +35 -6
- package/dist/runtime/maintenance.d.ts +9 -4
- package/dist/runtime/maintenance.js +35 -8
- package/dist/runtime/model-call.d.ts +54 -11
- package/dist/runtime/model-call.js +105 -28
- package/dist/runtime/providers.d.ts +149 -29
- package/dist/runtime/providers.js +332 -63
- 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 +11 -1
- package/dist/runtime/run-control.js +12 -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 +1 -1
- package/dist/runtime/run-jobs.d.ts +3 -5
- package/dist/runtime/run-jobs.js +7 -9
- package/dist/runtime/run-queue.d.ts +62 -5
- package/dist/runtime/run-queue.js +313 -40
- package/dist/runtime/run-worker.d.ts +19 -8
- package/dist/runtime/run-worker.js +105 -44
- package/dist/runtime/runtime.module.js +13 -3
- package/dist/runtime/step-log.d.ts +15 -4
- package/dist/runtime/step-log.js +24 -7
- package/dist/runtime/stream.controller.d.ts +23 -1
- package/dist/runtime/stream.controller.js +60 -3
- package/dist/runtime/stream.d.ts +4 -1
- package/dist/runtime/stream.js +27 -3
- package/dist/runtime/subagents/child.d.ts +55 -7
- package/dist/runtime/subagents/child.js +105 -7
- package/dist/runtime/subagents/definition.d.ts +31 -26
- package/dist/runtime/subagents/definition.js +89 -142
- package/dist/runtime/subagents/deliveries.d.ts +71 -0
- package/dist/runtime/subagents/deliveries.js +228 -0
- package/dist/runtime/subagents/dispatch.d.ts +116 -27
- package/dist/runtime/subagents/dispatch.js +213 -142
- package/dist/runtime/subagents/limits.d.ts +24 -5
- package/dist/runtime/subagents/limits.js +40 -6
- package/dist/runtime/subagents/messages.d.ts +95 -0
- package/dist/runtime/subagents/messages.js +328 -0
- package/dist/runtime/subagents/org-agents.js +2 -1
- package/dist/runtime/subagents/preamble.d.ts +4 -4
- package/dist/runtime/subagents/preamble.js +9 -7
- package/dist/runtime/subagents/progress.d.ts +8 -6
- 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 +25 -8
- package/dist/runtime/subagents/roster.js +48 -12
- package/dist/runtime/subagents/skill-fork.d.ts +4 -3
- package/dist/runtime/subagents/skill-fork.js +9 -5
- 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 +9 -6
- package/dist/runtime/subagents/subagents.service.js +13 -8
- 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 +35 -39
- package/dist/runtime/usage-report.js +171 -97
- package/dist/runtime/waits.d.ts +148 -39
- package/dist/runtime/waits.js +426 -112
- package/dist/sandbox/jobs.d.ts +40 -13
- package/dist/sandbox/jobs.js +57 -20
- package/dist/sandbox/leases.d.ts +37 -54
- package/dist/sandbox/leases.js +71 -115
- package/dist/sandbox/providers.d.ts +34 -7
- package/dist/sandbox/providers.js +54 -9
- package/dist/sandbox/sandbox-file-reader.d.ts +35 -0
- package/dist/sandbox/sandbox-file-reader.js +98 -0
- package/dist/sandbox/sandbox.module.d.ts +3 -2
- package/dist/sandbox/sandbox.module.js +10 -4
- package/dist/sandbox/sandbox.service.d.ts +345 -132
- package/dist/sandbox/sandbox.service.js +883 -399
- package/dist/sandbox/unreachable.d.ts +30 -0
- package/dist/sandbox/unreachable.js +108 -0
- package/dist/setup/kernel-checks.d.ts +91 -0
- package/dist/setup/kernel-checks.js +295 -0
- package/dist/setup/oauth-token-probe.d.ts +47 -0
- package/dist/setup/oauth-token-probe.js +108 -0
- package/dist/setup/redact-check.d.ts +18 -0
- package/dist/setup/redact-check.js +46 -0
- package/dist/setup/setup-check-registry.d.ts +86 -0
- package/dist/setup/setup-check-registry.js +75 -0
- package/dist/setup/setup-checks.controller.d.ts +28 -0
- package/dist/setup/setup-checks.controller.js +78 -0
- package/dist/setup/setup-checks.schemas.d.ts +38 -0
- package/dist/setup/setup-checks.schemas.js +43 -0
- package/dist/setup/setup-checks.service.d.ts +144 -0
- package/dist/setup/setup-checks.service.js +683 -0
- package/dist/setup/setup-guides.controller.d.ts +18 -0
- package/dist/setup/setup-guides.controller.js +48 -0
- package/dist/setup/setup-guides.schemas.d.ts +10 -0
- package/dist/setup/setup-guides.schemas.js +6 -0
- package/dist/setup/setup-guides.service.d.ts +126 -0
- package/dist/setup/setup-guides.service.js +315 -0
- package/dist/setup/setup.module.d.ts +8 -0
- package/dist/setup/setup.module.js +31 -0
- package/dist/skills/agent-skills.controller.d.ts +48 -0
- package/dist/skills/agent-skills.controller.js +131 -0
- package/dist/skills/agent-skills.service.d.ts +262 -0
- package/dist/skills/agent-skills.service.js +996 -0
- package/dist/skills/catalog.d.ts +14 -11
- package/dist/skills/catalog.js +32 -50
- package/dist/skills/changes.controller.d.ts +12 -22
- package/dist/skills/changes.controller.js +27 -56
- package/dist/skills/changes.service.d.ts +69 -115
- package/dist/skills/changes.service.js +249 -598
- package/dist/skills/conversation-catalog.d.ts +53 -0
- package/dist/skills/conversation-catalog.js +149 -0
- package/dist/skills/invocable.controller.d.ts +1 -1
- package/dist/skills/invocable.controller.js +2 -2
- package/dist/skills/invocation-keys.d.ts +1 -1
- package/dist/skills/invocation-keys.js +1 -1
- package/dist/skills/invoke.d.ts +3 -3
- package/dist/skills/invoke.js +21 -8
- package/dist/skills/package.d.ts +15 -1
- package/dist/skills/package.js +14 -1
- package/dist/skills/skills.controller.d.ts +32 -6
- package/dist/skills/skills.controller.js +64 -11
- package/dist/skills/skills.module.js +25 -3
- package/dist/skills/skills.schemas.d.ts +44 -0
- package/dist/skills/skills.schemas.js +68 -0
- package/dist/skills/skills.service.d.ts +123 -26
- package/dist/skills/skills.service.js +493 -76
- package/dist/skills/usable.d.ts +82 -0
- package/dist/skills/usable.js +388 -0
- package/dist/themes/render-css.d.ts +13 -0
- package/dist/themes/render-css.js +135 -0
- package/dist/themes/theme-delivery.service.d.ts +36 -0
- package/dist/themes/theme-delivery.service.js +116 -0
- package/dist/themes/theme-state.d.ts +116 -0
- package/dist/themes/theme-state.js +221 -0
- package/dist/themes/theme-usage.d.ts +61 -0
- package/dist/themes/theme-usage.js +98 -0
- package/dist/themes/themes-public.controller.d.ts +33 -0
- package/dist/themes/themes-public.controller.js +98 -0
- package/dist/themes/themes.controller.d.ts +13 -0
- package/dist/themes/themes.controller.js +38 -0
- package/dist/themes/themes.module.d.ts +3 -0
- package/dist/themes/themes.module.js +21 -0
- package/dist/themes/themes.schemas.d.ts +3 -0
- package/dist/themes/themes.schemas.js +2 -0
- package/dist/themes/themes.service.d.ts +50 -0
- package/dist/themes/themes.service.js +99 -0
- package/dist/time-zone.d.ts +5 -0
- package/dist/time-zone.js +19 -0
- package/dist/tools/admin-connectors.d.ts +69 -0
- package/dist/tools/admin-connectors.js +135 -0
- package/dist/tools/approvals.controller.js +2 -3
- package/dist/tools/approvals.schemas.d.ts +21 -0
- package/dist/tools/approvals.schemas.js +15 -0
- package/dist/tools/approvals.service.d.ts +26 -2
- package/dist/tools/approvals.service.js +44 -5
- package/dist/tools/builtin-names.d.ts +104 -0
- package/dist/tools/builtin-names.js +164 -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 +1 -1
- package/dist/tools/builtins/ask-user.js +5 -4
- package/dist/tools/builtins/builtin-tools.d.ts +23 -4
- package/dist/tools/builtins/builtin-tools.js +78 -12
- 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 +1 -1
- package/dist/tools/builtins/read-tool-output.js +2 -2
- package/dist/tools/builtins/sandbox/bash.d.ts +5 -5
- package/dist/tools/builtins/sandbox/bash.js +291 -39
- package/dist/tools/builtins/sandbox/common.d.ts +135 -36
- 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 +19 -16
- package/dist/tools/builtins/sandbox/edit.d.ts +1 -1
- package/dist/tools/builtins/sandbox/edit.js +64 -50
- 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 +17 -12
- package/dist/tools/builtins/sandbox/grep.d.ts +7 -4
- package/dist/tools/builtins/sandbox/grep.js +153 -34
- 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 +29 -19
- 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 +51 -44
- 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 +29 -18
- package/dist/tools/builtins/skill-load.js +125 -73
- 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/connector-account-policies.d.ts +51 -0
- package/dist/tools/connector-account-policies.js +165 -0
- package/dist/tools/connectors.controller.d.ts +74 -9
- package/dist/tools/connectors.controller.js +133 -16
- package/dist/tools/connectors.schemas.d.ts +27 -0
- package/dist/tools/connectors.schemas.js +34 -0
- package/dist/tools/connectors.service.d.ts +101 -8
- package/dist/tools/connectors.service.js +266 -28
- package/dist/tools/credentials.d.ts +23 -0
- package/dist/tools/credentials.js +90 -1
- package/dist/tools/display-names.d.ts +9 -0
- package/dist/tools/display-names.js +24 -0
- package/dist/tools/drift.js +5 -5
- 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 +61 -4
- package/dist/tools/info.js +119 -33
- 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 +114 -0
- package/dist/tools/naming.d.ts +1 -5
- package/dist/tools/naming.js +1 -7
- package/dist/tools/oauth/flow-paths.d.ts +1 -1
- package/dist/tools/oauth/flow-paths.js +1 -1
- package/dist/tools/oauth/flow.js +1 -1
- package/dist/tools/oauth/tokens.d.ts +54 -7
- package/dist/tools/oauth/tokens.js +87 -17
- package/dist/tools/org-tool-switches.d.ts +89 -0
- package/dist/tools/org-tool-switches.js +201 -0
- package/dist/tools/outputs.js +1 -1
- package/dist/tools/pipeline.d.ts +67 -47
- package/dist/tools/pipeline.js +319 -380
- package/dist/tools/policy.d.ts +30 -23
- package/dist/tools/policy.js +142 -64
- package/dist/tools/questions.controller.d.ts +1 -1
- package/dist/tools/questions.controller.js +1 -1
- package/dist/tools/questions.service.d.ts +23 -2
- package/dist/tools/questions.service.js +104 -2
- package/dist/tools/registry.d.ts +189 -68
- package/dist/tools/registry.js +318 -236
- package/dist/tools/resources.d.ts +1 -1
- package/dist/tools/resources.js +1 -1
- package/dist/tools/tools.module.js +31 -3
- package/dist/tools/validate.js +1 -1
- package/dist/ui/admin-ui.controller.d.ts +56 -0
- package/dist/ui/admin-ui.controller.js +192 -0
- package/dist/ui/arrangement.d.ts +65 -0
- package/dist/ui/arrangement.js +171 -0
- package/dist/ui/embed-token.d.ts +2 -2
- package/dist/ui/embed-token.js +30 -5
- package/dist/ui/registry.d.ts +42 -17
- package/dist/ui/registry.js +46 -14
- package/dist/ui/slots.controller.d.ts +11 -0
- package/dist/ui/slots.controller.js +25 -0
- package/dist/ui/ui-stream.d.ts +20 -3
- package/dist/ui/ui-stream.js +25 -7
- package/dist/ui/ui.schemas.d.ts +70 -0
- package/dist/ui/ui.schemas.js +65 -0
- package/dist/ui/views.controller.d.ts +35 -49
- package/dist/ui/views.controller.js +48 -70
- package/dist/ui/views.d.ts +112 -18
- package/dist/ui/views.js +254 -47
- package/package.json +6 -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/src/migrations/0102_themes.sql +64 -0
- package/src/migrations/0103_ui_theme_setting.sql +7 -0
- package/src/migrations/0104_connector_tool_account_policies.sql +16 -0
- package/src/migrations/0105_devices_rename.sql +136 -0
- package/src/migrations/0106_setup_guides_v2.sql +10 -0
- package/src/migrations/0107_extension_client_builds.sql +50 -0
- package/src/migrations/0108_question_skipped.sql +6 -0
- package/src/migrations/0109_audit_platform_idx.sql +5 -0
- package/src/migrations/0110_usage_time_idx.sql +8 -0
- package/src/migrations/0111_agent_skill_sharing.sql +22 -0
- package/src/migrations/0112_skill_share_requests.sql +4 -0
- package/dist/catalog/upgrade-targets.d.ts +0 -56
- package/dist/catalog/upgrade-targets.js +0 -90
- package/dist/conversations/sandbox-status.d.ts +0 -24
- package/dist/conversations/sandbox-status.js +0 -52
- package/dist/extensions/org-config.controller.d.ts +0 -24
- package/dist/extensions/org-config.controller.js +0 -62
- package/dist/tools/builtins/sandbox/names.d.ts +0 -7
- package/dist/tools/builtins/sandbox/names.js +0 -20
- package/dist/tools/builtins/skill-write.d.ts +0 -59
- package/dist/tools/builtins/skill-write.js +0 -244
|
@@ -1,7 +1,57 @@
|
|
|
1
1
|
import { type ExtensionManifest } from "@capybara-hq/plugin-sdk";
|
|
2
|
+
/**
|
|
3
|
+
* Code of the {@link ExtensionResolveError} for a single-provider extension point that more than
|
|
4
|
+
* one extension provides: nothing is missing, the extensions conflict (replica reason `conflict`).
|
|
5
|
+
*/
|
|
6
|
+
export declare const PROVIDER_CONFLICT = "extension.provider_conflict";
|
|
7
|
+
/**
|
|
8
|
+
* The message (and replica `detail`) of a {@link PROVIDER_CONFLICT}; read back by
|
|
9
|
+
* {@link parseProviderConflict}. `unloaded`: the provider the single-provider election picked
|
|
10
|
+
* (named first) is not loaded on this replica, so nothing provides the point here.
|
|
11
|
+
*/
|
|
12
|
+
export declare function providerConflictMessage(extensionPoint: string, providers: string[], unloaded?: string): string;
|
|
13
|
+
/**
|
|
14
|
+
* The extension point and its providers from a {@link providerConflictMessage}; null for any other
|
|
15
|
+
* text. `unprovided`: the message says the elected provider is not loaded (no running provider).
|
|
16
|
+
*/
|
|
17
|
+
export declare function parseProviderConflict(detail: string | null): {
|
|
18
|
+
extensionPoint: string;
|
|
19
|
+
providers: string[];
|
|
20
|
+
unprovided?: true;
|
|
21
|
+
} | null;
|
|
22
|
+
/**
|
|
23
|
+
* The single-provider extension points (`sandbox`, `object-store`, `secret-store`,
|
|
24
|
+
* `config-source`; `EXTENSION_POINT_CARDINALITY`) among `provides`, sorted (the lock order).
|
|
25
|
+
*/
|
|
26
|
+
export declare function singlePointsOf(provides: readonly string[]): string[];
|
|
27
|
+
/**
|
|
28
|
+
* The single-provider election over enabled install records in `ExtensionInstalls.desired` order
|
|
29
|
+
* (the earliest enabled first): for each single-provider extension point the first record
|
|
30
|
+
* providing it wins (`owners`: point -> winner); every later one is a loser (`losers`: name -> the
|
|
31
|
+
* point it lost and the winner). A loser claims none of its points. The host loads by it; the
|
|
32
|
+
* single-provider guard names its winners, so a refusal names the provider actually running.
|
|
33
|
+
*/
|
|
34
|
+
export declare function electSingleProviders(desired: readonly {
|
|
35
|
+
name: string;
|
|
36
|
+
section: {
|
|
37
|
+
manifest: {
|
|
38
|
+
provides: readonly string[];
|
|
39
|
+
};
|
|
40
|
+
};
|
|
41
|
+
}[]): {
|
|
42
|
+
owners: Map<string, string>;
|
|
43
|
+
losers: Map<string, {
|
|
44
|
+
extensionPoint: string;
|
|
45
|
+
winner: string;
|
|
46
|
+
}>;
|
|
47
|
+
};
|
|
2
48
|
/** 插件依赖解析失败(信息列出插件名与能力名)。 */
|
|
3
49
|
export declare class ExtensionResolveError extends Error {
|
|
4
|
-
|
|
50
|
+
/** Error code of the failure, when it has one. */
|
|
51
|
+
readonly code?: string | undefined;
|
|
52
|
+
constructor(message: string,
|
|
53
|
+
/** Error code of the failure, when it has one. */
|
|
54
|
+
code?: string | undefined);
|
|
5
55
|
}
|
|
6
56
|
/**
|
|
7
57
|
* 校验 sdk 范围、依赖满足度、单选能力唯一性与无环,返回按依赖拓扑排序后的列表(同层保持输入顺序)。
|
|
@@ -1,9 +1,82 @@
|
|
|
1
|
-
import { EXTENSION_POINT_CARDINALITY, OBJECT_STORE_EXTENSION_POINT, parseExtensionPoint, } from "@capybara-hq/plugin-sdk";
|
|
1
|
+
import { EXTENSION_POINT_CARDINALITY, EXTENSION_POINTS, OBJECT_STORE_EXTENSION_POINT, parseExtensionPoint, } from "@capybara-hq/plugin-sdk";
|
|
2
2
|
import semver from "semver";
|
|
3
|
+
/**
|
|
4
|
+
* Code of the {@link ExtensionResolveError} for a single-provider extension point that more than
|
|
5
|
+
* one extension provides: nothing is missing, the extensions conflict (replica reason `conflict`).
|
|
6
|
+
*/
|
|
7
|
+
export const PROVIDER_CONFLICT = "extension.provider_conflict";
|
|
8
|
+
const CONFLICT_RE = /^extension point (\S+) is single-provider but provided by: (.+?)(; \S+ is not loaded, so \S+ has no running provider)?$/;
|
|
9
|
+
/**
|
|
10
|
+
* The message (and replica `detail`) of a {@link PROVIDER_CONFLICT}; read back by
|
|
11
|
+
* {@link parseProviderConflict}. `unloaded`: the provider the single-provider election picked
|
|
12
|
+
* (named first) is not loaded on this replica, so nothing provides the point here.
|
|
13
|
+
*/
|
|
14
|
+
export function providerConflictMessage(extensionPoint, providers, unloaded) {
|
|
15
|
+
const base = `extension point ${extensionPoint} is single-provider but provided by: ${providers.join(", ")}`;
|
|
16
|
+
return unloaded === undefined
|
|
17
|
+
? base
|
|
18
|
+
: `${base}; ${unloaded} is not loaded, so ${extensionPoint} has no running provider`;
|
|
19
|
+
}
|
|
20
|
+
/**
|
|
21
|
+
* The extension point and its providers from a {@link providerConflictMessage}; null for any other
|
|
22
|
+
* text. `unprovided`: the message says the elected provider is not loaded (no running provider).
|
|
23
|
+
*/
|
|
24
|
+
export function parseProviderConflict(detail) {
|
|
25
|
+
const m = detail === null ? null : CONFLICT_RE.exec(detail);
|
|
26
|
+
if (!m)
|
|
27
|
+
return null;
|
|
28
|
+
return {
|
|
29
|
+
extensionPoint: m[1],
|
|
30
|
+
providers: m[2].split(", "),
|
|
31
|
+
...(m[3] !== undefined && { unprovided: true }),
|
|
32
|
+
};
|
|
33
|
+
}
|
|
34
|
+
/**
|
|
35
|
+
* The single-provider extension points (`sandbox`, `object-store`, `secret-store`,
|
|
36
|
+
* `config-source`; `EXTENSION_POINT_CARDINALITY`) among `provides`, sorted (the lock order).
|
|
37
|
+
*/
|
|
38
|
+
export function singlePointsOf(provides) {
|
|
39
|
+
return [
|
|
40
|
+
...new Set(provides.filter((ref) => {
|
|
41
|
+
try {
|
|
42
|
+
return EXTENSION_POINT_CARDINALITY[parseExtensionPoint(ref).name] === "single";
|
|
43
|
+
}
|
|
44
|
+
catch {
|
|
45
|
+
return false;
|
|
46
|
+
}
|
|
47
|
+
})),
|
|
48
|
+
].sort();
|
|
49
|
+
}
|
|
50
|
+
/**
|
|
51
|
+
* The single-provider election over enabled install records in `ExtensionInstalls.desired` order
|
|
52
|
+
* (the earliest enabled first): for each single-provider extension point the first record
|
|
53
|
+
* providing it wins (`owners`: point -> winner); every later one is a loser (`losers`: name -> the
|
|
54
|
+
* point it lost and the winner). A loser claims none of its points. The host loads by it; the
|
|
55
|
+
* single-provider guard names its winners, so a refusal names the provider actually running.
|
|
56
|
+
*/
|
|
57
|
+
export function electSingleProviders(desired) {
|
|
58
|
+
const owners = new Map();
|
|
59
|
+
const losers = new Map();
|
|
60
|
+
for (const d of desired) {
|
|
61
|
+
const points = singlePointsOf(d.section.manifest.provides);
|
|
62
|
+
const lost = points.find((p) => owners.has(p));
|
|
63
|
+
if (lost !== undefined) {
|
|
64
|
+
losers.set(d.name, { extensionPoint: lost, winner: owners.get(lost) });
|
|
65
|
+
continue;
|
|
66
|
+
}
|
|
67
|
+
for (const p of points)
|
|
68
|
+
owners.set(p, d.name);
|
|
69
|
+
}
|
|
70
|
+
return { owners, losers };
|
|
71
|
+
}
|
|
3
72
|
/** 插件依赖解析失败(信息列出插件名与能力名)。 */
|
|
4
73
|
export class ExtensionResolveError extends Error {
|
|
5
|
-
|
|
74
|
+
code;
|
|
75
|
+
constructor(message,
|
|
76
|
+
/** Error code of the failure, when it has one. */
|
|
77
|
+
code) {
|
|
6
78
|
super(message);
|
|
79
|
+
this.code = code;
|
|
7
80
|
this.name = "ExtensionResolveError";
|
|
8
81
|
}
|
|
9
82
|
}
|
|
@@ -23,6 +96,15 @@ export function resolveExtensions(manifests, sdkVersion) {
|
|
|
23
96
|
throw new ExtensionResolveError(`plugin ${m.name}: sdk range "${m.sdk}" is not satisfied by SDK_VERSION ${sdkVersion}`);
|
|
24
97
|
}
|
|
25
98
|
}
|
|
99
|
+
for (const m of manifests) {
|
|
100
|
+
for (const ref of m.provides) {
|
|
101
|
+
const { name, major } = parseExtensionPoint(ref);
|
|
102
|
+
const majors = EXTENSION_POINTS[name]?.majors;
|
|
103
|
+
if (majors && !majors.includes(major)) {
|
|
104
|
+
throw new ExtensionResolveError(`Plugin ${m.name} provides ${ref}, which this kernel no longer supports; upgrade it to a version that provides ${name}@${Math.max(...majors)}.`, "extension.unsupported_extension_point");
|
|
105
|
+
}
|
|
106
|
+
}
|
|
107
|
+
}
|
|
26
108
|
const providers = new Map();
|
|
27
109
|
for (const m of manifests) {
|
|
28
110
|
for (const cap of m.provides)
|
|
@@ -31,7 +113,7 @@ export function resolveExtensions(manifests, sdkVersion) {
|
|
|
31
113
|
for (const [cap, list] of providers) {
|
|
32
114
|
if (EXTENSION_POINT_CARDINALITY[parseExtensionPoint(cap).name] === "single" &&
|
|
33
115
|
list.length > 1) {
|
|
34
|
-
throw new ExtensionResolveError(
|
|
116
|
+
throw new ExtensionResolveError(providerConflictMessage(cap, list.map((p) => p.name)), PROVIDER_CONFLICT);
|
|
35
117
|
}
|
|
36
118
|
}
|
|
37
119
|
for (const m of manifests) {
|
|
@@ -0,0 +1,92 @@
|
|
|
1
|
+
import type { LocalizedName } from "@capybara-hq/plugin-sdk";
|
|
2
|
+
import { ApiError } from "../errors.js";
|
|
3
|
+
import { KernelDb } from "../infra/database/kernel-db.js";
|
|
4
|
+
import { TransactionHost } from "../infra/database/transaction-host.js";
|
|
5
|
+
import { ExtensionDisplayNames } from "./display-name.js";
|
|
6
|
+
import { SingleProviderLock } from "./locks.js";
|
|
7
|
+
import { ExtensionRegistry } from "./registry.js";
|
|
8
|
+
/** The error code of an enable refused because another extension provides the same single point. */
|
|
9
|
+
export declare const SINGLE_PROVIDER_ENABLED = "extension.single_provider_enabled";
|
|
10
|
+
/**
|
|
11
|
+
* The error code of an enable refused because a required bootstrap plugin provides the same single
|
|
12
|
+
* point: a required plugin cannot be disabled, so nothing can replace it. A code of its own (not
|
|
13
|
+
* {@link SINGLE_PROVIDER_ENABLED} with a flag) because the next step differs: there is none, while
|
|
14
|
+
* {@link SINGLE_PROVIDER_ENABLED} says to disable the other one first; the web, the CLI and the
|
|
15
|
+
* Platform tool key their text on the code.
|
|
16
|
+
*/
|
|
17
|
+
export declare const SINGLE_PROVIDER_REQUIRED = "extension.single_provider_required";
|
|
18
|
+
/** Either single-provider refusal code. */
|
|
19
|
+
export declare const isSingleProviderCode: (code: string) => boolean;
|
|
20
|
+
/**
|
|
21
|
+
* What keeps an extension from being enabled: the point and the enabled extension providing it
|
|
22
|
+
* (`required`: a required bootstrap plugin, which cannot be disabled).
|
|
23
|
+
*/
|
|
24
|
+
export interface SingleProviderBlock {
|
|
25
|
+
extensionPoint: string;
|
|
26
|
+
enabled: {
|
|
27
|
+
name: string;
|
|
28
|
+
displayName: LocalizedName | null;
|
|
29
|
+
};
|
|
30
|
+
required?: true;
|
|
31
|
+
}
|
|
32
|
+
/**
|
|
33
|
+
* An extension left disabled by an install or import path because a single-provider point it
|
|
34
|
+
* provides is taken: the refusal's code and message and the block (as in the 409's details).
|
|
35
|
+
*/
|
|
36
|
+
export interface SingleProviderNote {
|
|
37
|
+
code: string;
|
|
38
|
+
message: string;
|
|
39
|
+
singleProvider: SingleProviderBlock;
|
|
40
|
+
}
|
|
41
|
+
/** The English message of the refusal ({@link SINGLE_PROVIDER_ENABLED} / {@link SINGLE_PROVIDER_REQUIRED}). */
|
|
42
|
+
export declare function singleProviderMessage(block: SingleProviderBlock, name: string, displayName: LocalizedName | null): string;
|
|
43
|
+
/** The 409 refusal, details `[{ extensionPoint, enabled, required? }]`. */
|
|
44
|
+
export declare function singleProviderError(block: SingleProviderBlock, name: string, displayName: LocalizedName | null): ApiError;
|
|
45
|
+
/** The note of a refusal ({@link singleProviderError}) an install path reports instead of failing. */
|
|
46
|
+
export declare function singleProviderNote(refusal: ApiError): SingleProviderNote;
|
|
47
|
+
/**
|
|
48
|
+
* The single-provider rule of the deployment (maintainer decision 2026-11-08): a single-provider
|
|
49
|
+
* extension point has at most one enabled provider. Enabling a second one is refused (409
|
|
50
|
+
* {@link SINGLE_PROVIDER_ENABLED}); to switch, the super admin disables the current one first. A
|
|
51
|
+
* required bootstrap plugin cannot be disabled, so a point it holds cannot change provider (409
|
|
52
|
+
* {@link SINGLE_PROVIDER_REQUIRED}). An upgrade that newly provides a held point installs the new
|
|
53
|
+
* version disabled (`ExtensionAdminOps.install`, `leftDisabled`).
|
|
54
|
+
* Every path that sets an install record's desired state to `enabled` goes through
|
|
55
|
+
* `ExtensionAdminOps.enable`, which calls {@link assertFree} in its transaction; install and import
|
|
56
|
+
* paths that would enable call it through `enableUnlessOccupied` and leave the extension disabled
|
|
57
|
+
* when the point is taken. Stateless.
|
|
58
|
+
*/
|
|
59
|
+
export declare class SingleProviderGuard {
|
|
60
|
+
private readonly kdb;
|
|
61
|
+
readonly txHost: TransactionHost;
|
|
62
|
+
private readonly pointLock;
|
|
63
|
+
/** Config-declared extensions loaded on this replica (empty in the CLI: install records only). */
|
|
64
|
+
private readonly registry;
|
|
65
|
+
private readonly displayNames;
|
|
66
|
+
constructor(kdb: KernelDb, txHost: TransactionHost, pointLock: SingleProviderLock,
|
|
67
|
+
/** Config-declared extensions loaded on this replica (empty in the CLI: install records only). */
|
|
68
|
+
registry: ExtensionRegistry, displayNames: ExtensionDisplayNames);
|
|
69
|
+
/**
|
|
70
|
+
* The first single-provider point of `provides` that an extension other than `name` holds, or
|
|
71
|
+
* null: a config-declared extension loaded here, else the winner of the single-provider election
|
|
72
|
+
* ({@link electSingleProviders}, the host's) over the other enabled install records, so the
|
|
73
|
+
* extension named is the one actually loaded (a loser of the election holds nothing). A read
|
|
74
|
+
* without locks: views and prechecks use it; the enable itself uses {@link assertFree}.
|
|
75
|
+
*/
|
|
76
|
+
occupant(name: string, provides: readonly string[]): Promise<SingleProviderBlock | null>;
|
|
77
|
+
/**
|
|
78
|
+
* The occupant ({@link occupant}) of `name`'s single-provider points among `provides`, read
|
|
79
|
+
* after taking one transaction-scoped lock per point ({@link SingleProviderLock}, sorted) in the
|
|
80
|
+
* caller's transaction (after its install lock), so two concurrent writes enabling providers of
|
|
81
|
+
* one point run one after the other and the second sees the first's committed state.
|
|
82
|
+
*/
|
|
83
|
+
lockedOccupant(name: string, provides: readonly string[]): Promise<SingleProviderBlock | null>;
|
|
84
|
+
/** The note of `name` left disabled by `block` (the refusal's code, message and block). */
|
|
85
|
+
note(block: SingleProviderBlock, name: string): Promise<SingleProviderNote>;
|
|
86
|
+
/**
|
|
87
|
+
* Refuses (409 {@link SINGLE_PROVIDER_ENABLED}, or {@link SINGLE_PROVIDER_REQUIRED} when the
|
|
88
|
+
* holder is a required plugin) to enable `name` while another extension holds one of its
|
|
89
|
+
* single-provider points; under the points' locks ({@link lockedOccupant}).
|
|
90
|
+
*/
|
|
91
|
+
assertFree(name: string, provides: readonly string[]): Promise<void>;
|
|
92
|
+
}
|
|
@@ -0,0 +1,180 @@
|
|
|
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 { ApiError } from "../errors.js";
|
|
13
|
+
import { KernelDb } from "../infra/database/kernel-db.js";
|
|
14
|
+
import { TransactionHost } from "../infra/database/transaction-host.js";
|
|
15
|
+
import { Transactional } from "../infra/database/transactional.decorator.js";
|
|
16
|
+
import { ExtensionDisplayNames } from "./display-name.js";
|
|
17
|
+
import { SingleProviderLock } from "./locks.js";
|
|
18
|
+
import { ExtensionRegistry } from "./registry.js";
|
|
19
|
+
import { electSingleProviders, singlePointsOf } from "./resolve.js";
|
|
20
|
+
/** The error code of an enable refused because another extension provides the same single point. */
|
|
21
|
+
export const SINGLE_PROVIDER_ENABLED = "extension.single_provider_enabled";
|
|
22
|
+
/**
|
|
23
|
+
* The error code of an enable refused because a required bootstrap plugin provides the same single
|
|
24
|
+
* point: a required plugin cannot be disabled, so nothing can replace it. A code of its own (not
|
|
25
|
+
* {@link SINGLE_PROVIDER_ENABLED} with a flag) because the next step differs: there is none, while
|
|
26
|
+
* {@link SINGLE_PROVIDER_ENABLED} says to disable the other one first; the web, the CLI and the
|
|
27
|
+
* Platform tool key their text on the code.
|
|
28
|
+
*/
|
|
29
|
+
export const SINGLE_PROVIDER_REQUIRED = "extension.single_provider_required";
|
|
30
|
+
/** Either single-provider refusal code. */
|
|
31
|
+
export const isSingleProviderCode = (code) => code === SINGLE_PROVIDER_ENABLED || code === SINGLE_PROVIDER_REQUIRED;
|
|
32
|
+
/** The English message of the refusal ({@link SINGLE_PROVIDER_ENABLED} / {@link SINGLE_PROVIDER_REQUIRED}). */
|
|
33
|
+
export function singleProviderMessage(block, name, displayName) {
|
|
34
|
+
const other = block.enabled.displayName?.en ?? block.enabled.name;
|
|
35
|
+
if (block.required === true) {
|
|
36
|
+
return `${block.extensionPoint} is provided by the required plugin ${other}; it can't be replaced`;
|
|
37
|
+
}
|
|
38
|
+
const self = displayName?.en ?? name;
|
|
39
|
+
return `Only one extension may provide ${block.extensionPoint}; disable ${other} first, then enable ${self}`;
|
|
40
|
+
}
|
|
41
|
+
/** The 409 refusal, details `[{ extensionPoint, enabled, required? }]`. */
|
|
42
|
+
export function singleProviderError(block, name, displayName) {
|
|
43
|
+
return new ApiError(block.required === true ? SINGLE_PROVIDER_REQUIRED : SINGLE_PROVIDER_ENABLED, singleProviderMessage(block, name, displayName), [block]);
|
|
44
|
+
}
|
|
45
|
+
/** The note of a refusal ({@link singleProviderError}) an install path reports instead of failing. */
|
|
46
|
+
export function singleProviderNote(refusal) {
|
|
47
|
+
return {
|
|
48
|
+
code: refusal.code,
|
|
49
|
+
message: refusal.message,
|
|
50
|
+
singleProvider: refusal.details?.[0],
|
|
51
|
+
};
|
|
52
|
+
}
|
|
53
|
+
/**
|
|
54
|
+
* The single-provider rule of the deployment (maintainer decision 2026-11-08): a single-provider
|
|
55
|
+
* extension point has at most one enabled provider. Enabling a second one is refused (409
|
|
56
|
+
* {@link SINGLE_PROVIDER_ENABLED}); to switch, the super admin disables the current one first. A
|
|
57
|
+
* required bootstrap plugin cannot be disabled, so a point it holds cannot change provider (409
|
|
58
|
+
* {@link SINGLE_PROVIDER_REQUIRED}). An upgrade that newly provides a held point installs the new
|
|
59
|
+
* version disabled (`ExtensionAdminOps.install`, `leftDisabled`).
|
|
60
|
+
* Every path that sets an install record's desired state to `enabled` goes through
|
|
61
|
+
* `ExtensionAdminOps.enable`, which calls {@link assertFree} in its transaction; install and import
|
|
62
|
+
* paths that would enable call it through `enableUnlessOccupied` and leave the extension disabled
|
|
63
|
+
* when the point is taken. Stateless.
|
|
64
|
+
*/
|
|
65
|
+
let SingleProviderGuard = class SingleProviderGuard {
|
|
66
|
+
kdb;
|
|
67
|
+
txHost;
|
|
68
|
+
pointLock;
|
|
69
|
+
registry;
|
|
70
|
+
displayNames;
|
|
71
|
+
constructor(kdb, txHost, pointLock,
|
|
72
|
+
/** Config-declared extensions loaded on this replica (empty in the CLI: install records only). */
|
|
73
|
+
registry, displayNames) {
|
|
74
|
+
this.kdb = kdb;
|
|
75
|
+
this.txHost = txHost;
|
|
76
|
+
this.pointLock = pointLock;
|
|
77
|
+
this.registry = registry;
|
|
78
|
+
this.displayNames = displayNames;
|
|
79
|
+
}
|
|
80
|
+
/**
|
|
81
|
+
* The first single-provider point of `provides` that an extension other than `name` holds, or
|
|
82
|
+
* null: a config-declared extension loaded here, else the winner of the single-provider election
|
|
83
|
+
* ({@link electSingleProviders}, the host's) over the other enabled install records, so the
|
|
84
|
+
* extension named is the one actually loaded (a loser of the election holds nothing). A read
|
|
85
|
+
* without locks: views and prechecks use it; the enable itself uses {@link assertFree}.
|
|
86
|
+
*/
|
|
87
|
+
async occupant(name, provides) {
|
|
88
|
+
const points = singlePointsOf(provides);
|
|
89
|
+
if (points.length === 0)
|
|
90
|
+
return null;
|
|
91
|
+
const declared = this.registry
|
|
92
|
+
.all()
|
|
93
|
+
.filter((i) => i.source === "config" && i.name !== name)
|
|
94
|
+
.map((i) => ({ name: i.name, provides: i.manifest.provides }));
|
|
95
|
+
const declaredNames = new Set(this.registry.declared().keys());
|
|
96
|
+
const rows = await this.kdb.db
|
|
97
|
+
.selectFrom("extension_installs")
|
|
98
|
+
.innerJoin("extension_packages", "extension_packages.sha256", "extension_installs.sha256")
|
|
99
|
+
.select([
|
|
100
|
+
"extension_installs.name",
|
|
101
|
+
"extension_installs.required",
|
|
102
|
+
"extension_packages.section",
|
|
103
|
+
])
|
|
104
|
+
.where("extension_installs.desired_state", "=", "enabled")
|
|
105
|
+
.where("extension_installs.name", "<>", name)
|
|
106
|
+
// ExtensionInstalls.desired's order: the election's
|
|
107
|
+
.orderBy(sql `extension_installs.enabled_at ASC NULLS LAST`)
|
|
108
|
+
.orderBy("extension_installs.installed_at")
|
|
109
|
+
.orderBy("extension_installs.name")
|
|
110
|
+
.execute();
|
|
111
|
+
const installs = rows
|
|
112
|
+
.filter((r) => !declaredNames.has(r.name))
|
|
113
|
+
.map((r) => ({
|
|
114
|
+
name: r.name,
|
|
115
|
+
required: r.required,
|
|
116
|
+
section: {
|
|
117
|
+
manifest: {
|
|
118
|
+
provides: r.section?.manifest?.provides ?? [],
|
|
119
|
+
},
|
|
120
|
+
},
|
|
121
|
+
}));
|
|
122
|
+
const { owners } = electSingleProviders(installs);
|
|
123
|
+
for (const extensionPoint of points) {
|
|
124
|
+
const config = declared.find((o) => o.provides.includes(extensionPoint));
|
|
125
|
+
const holder = config?.name ?? owners.get(extensionPoint);
|
|
126
|
+
if (holder === undefined)
|
|
127
|
+
continue;
|
|
128
|
+
const required = config === undefined && installs.find((i) => i.name === holder)?.required;
|
|
129
|
+
return {
|
|
130
|
+
extensionPoint,
|
|
131
|
+
enabled: { name: holder, displayName: await this.displayNames.get(holder) },
|
|
132
|
+
...(required === true && { required: true }),
|
|
133
|
+
};
|
|
134
|
+
}
|
|
135
|
+
return null;
|
|
136
|
+
}
|
|
137
|
+
/**
|
|
138
|
+
* The occupant ({@link occupant}) of `name`'s single-provider points among `provides`, read
|
|
139
|
+
* after taking one transaction-scoped lock per point ({@link SingleProviderLock}, sorted) in the
|
|
140
|
+
* caller's transaction (after its install lock), so two concurrent writes enabling providers of
|
|
141
|
+
* one point run one after the other and the second sees the first's committed state.
|
|
142
|
+
*/
|
|
143
|
+
async lockedOccupant(name, provides) {
|
|
144
|
+
const points = singlePointsOf(provides);
|
|
145
|
+
if (points.length === 0)
|
|
146
|
+
return null;
|
|
147
|
+
for (const p of points)
|
|
148
|
+
await this.pointLock.lock(p);
|
|
149
|
+
return this.occupant(name, points);
|
|
150
|
+
}
|
|
151
|
+
/** The note of `name` left disabled by `block` (the refusal's code, message and block). */
|
|
152
|
+
async note(block, name) {
|
|
153
|
+
return singleProviderNote(singleProviderError(block, name, await this.displayNames.get(name)));
|
|
154
|
+
}
|
|
155
|
+
/**
|
|
156
|
+
* Refuses (409 {@link SINGLE_PROVIDER_ENABLED}, or {@link SINGLE_PROVIDER_REQUIRED} when the
|
|
157
|
+
* holder is a required plugin) to enable `name` while another extension holds one of its
|
|
158
|
+
* single-provider points; under the points' locks ({@link lockedOccupant}).
|
|
159
|
+
*/
|
|
160
|
+
async assertFree(name, provides) {
|
|
161
|
+
const block = await this.lockedOccupant(name, provides);
|
|
162
|
+
if (block)
|
|
163
|
+
throw singleProviderError(block, name, await this.displayNames.get(name));
|
|
164
|
+
}
|
|
165
|
+
};
|
|
166
|
+
__decorate([
|
|
167
|
+
Transactional({ propagation: "mandatory" })
|
|
168
|
+
], SingleProviderGuard.prototype, "lockedOccupant", null);
|
|
169
|
+
__decorate([
|
|
170
|
+
Transactional({ propagation: "mandatory" })
|
|
171
|
+
], SingleProviderGuard.prototype, "assertFree", null);
|
|
172
|
+
SingleProviderGuard = __decorate([
|
|
173
|
+
Injectable(),
|
|
174
|
+
__param(0, Inject(KernelDb)),
|
|
175
|
+
__param(1, Inject(TransactionHost)),
|
|
176
|
+
__param(2, Inject(SingleProviderLock)),
|
|
177
|
+
__param(3, Inject(ExtensionRegistry)),
|
|
178
|
+
__param(4, Inject(ExtensionDisplayNames))
|
|
179
|
+
], SingleProviderGuard);
|
|
180
|
+
export { SingleProviderGuard };
|
|
@@ -14,8 +14,13 @@ import type { KernelLogger } from "../log.js";
|
|
|
14
14
|
export type ExtensionSource = "config" | "install";
|
|
15
15
|
/** 副本(进程)id:`<hostname>-<pid>-<6 位随机>`,每个进程唯一(`http.replicaId` 可能跨重启不变或多副本相同)。 */
|
|
16
16
|
export declare function newReplicaId(): string;
|
|
17
|
-
/**
|
|
18
|
-
|
|
17
|
+
/**
|
|
18
|
+
* Why `extension_replica_status.state = pending` (F-I: the admin view derives pending_config and so
|
|
19
|
+
* on from it). `dependency`: an extension point it requires has no provider; `conflict`: it
|
|
20
|
+
* provides a single-provider extension point another loaded extension already provides (it loads
|
|
21
|
+
* once that one is disabled or uninstalled, no restart).
|
|
22
|
+
*/
|
|
23
|
+
export type PendingReason = "config" | "approval" | "migration" | "dependency" | "conflict";
|
|
19
24
|
/** One load result (written to `extension_replica_status`). */
|
|
20
25
|
export interface ExtensionLoadStatus {
|
|
21
26
|
plugin: string;
|
|
@@ -31,6 +36,12 @@ export interface ExtensionLoadStatus {
|
|
|
31
36
|
* 省略视同 null。
|
|
32
37
|
*/
|
|
33
38
|
servingVersion?: string | null;
|
|
39
|
+
/**
|
|
40
|
+
* The package sha256 this replica serves for the plugin: the row's own `sha256` when `loaded`,
|
|
41
|
+
* the older package still running beside a failed / pending version, null when none runs.
|
|
42
|
+
* Omitted counts as null.
|
|
43
|
+
*/
|
|
44
|
+
servingSha256?: string | null;
|
|
34
45
|
}
|
|
35
46
|
/** This replica's extension load status (PG `extension_replica_status`; each replica writes only its own rows). */
|
|
36
47
|
export declare class ReplicaStatusStore {
|
|
@@ -55,6 +55,7 @@ let ReplicaStatusStore = class ReplicaStatusStore {
|
|
|
55
55
|
reason: s.reason,
|
|
56
56
|
detail: s.detail === null ? null : this.cleanDetail(s.detail),
|
|
57
57
|
serving_version: s.servingVersion ?? null,
|
|
58
|
+
serving_sha256: s.servingSha256 ?? null,
|
|
58
59
|
http_replica_id: this.httpReplicaId ?? null,
|
|
59
60
|
heartbeat_at: sql `now()`,
|
|
60
61
|
};
|
|
@@ -69,6 +70,7 @@ let ReplicaStatusStore = class ReplicaStatusStore {
|
|
|
69
70
|
reason: values.reason,
|
|
70
71
|
detail: values.detail,
|
|
71
72
|
serving_version: values.serving_version,
|
|
73
|
+
serving_sha256: values.serving_sha256,
|
|
72
74
|
http_replica_id: values.http_replica_id,
|
|
73
75
|
heartbeat_at: values.heartbeat_at,
|
|
74
76
|
}))
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The extension state the model domain reads below the host: the install records with their
|
|
3
|
+
* packages and approvals, and each extension's effective config per org. Apart from
|
|
4
|
+
* `ExtensionsModule` so the model provider registry (and the `ctx.models` broker the host injects)
|
|
5
|
+
* can depend on it without a module cycle (writing-kernel-api: a cycle is cut by moving the shared
|
|
6
|
+
* part into its own provider both sides inject). `ExtensionsModule` re-exports it.
|
|
7
|
+
*/
|
|
8
|
+
export declare class ExtensionStateModule {
|
|
9
|
+
}
|
|
@@ -0,0 +1,46 @@
|
|
|
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
|
+
import { Module } from "@nestjs/common";
|
|
8
|
+
import { ClientModule } from "../client/client.module.js";
|
|
9
|
+
import { SuperAdminLockModule } from "../identity/super-admin.js";
|
|
10
|
+
import { OrgLockModule } from "../orgs/org-lock.js";
|
|
11
|
+
import { StorageModule } from "../storage/storage.module.js";
|
|
12
|
+
import { ExtensionApprovals } from "./approvals.js";
|
|
13
|
+
import { ExtensionBlobs } from "./blobs.js";
|
|
14
|
+
import { EffectiveConfigs } from "./effective-config.js";
|
|
15
|
+
import { ExtensionInstalls } from "./installs.js";
|
|
16
|
+
import { ExtensionRegistryModule } from "./registry.js";
|
|
17
|
+
/**
|
|
18
|
+
* The extension state the model domain reads below the host: the install records with their
|
|
19
|
+
* packages and approvals, and each extension's effective config per org. Apart from
|
|
20
|
+
* `ExtensionsModule` so the model provider registry (and the `ctx.models` broker the host injects)
|
|
21
|
+
* can depend on it without a module cycle (writing-kernel-api: a cycle is cut by moving the shared
|
|
22
|
+
* part into its own provider both sides inject). `ExtensionsModule` re-exports it.
|
|
23
|
+
*/
|
|
24
|
+
let ExtensionStateModule = class ExtensionStateModule {
|
|
25
|
+
};
|
|
26
|
+
ExtensionStateModule = __decorate([
|
|
27
|
+
Module({
|
|
28
|
+
imports: [
|
|
29
|
+
ExtensionRegistryModule,
|
|
30
|
+
SuperAdminLockModule,
|
|
31
|
+
OrgLockModule,
|
|
32
|
+
StorageModule,
|
|
33
|
+
// a package with client code stores its client build (`ExtensionBlobs`)
|
|
34
|
+
ClientModule,
|
|
35
|
+
],
|
|
36
|
+
providers: [ExtensionApprovals, ExtensionBlobs, ExtensionInstalls, EffectiveConfigs],
|
|
37
|
+
exports: [
|
|
38
|
+
ExtensionRegistryModule,
|
|
39
|
+
ExtensionApprovals,
|
|
40
|
+
ExtensionBlobs,
|
|
41
|
+
ExtensionInstalls,
|
|
42
|
+
EffectiveConfigs,
|
|
43
|
+
],
|
|
44
|
+
})
|
|
45
|
+
], ExtensionStateModule);
|
|
46
|
+
export { ExtensionStateModule };
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
import { KernelConfigService } from "../infra/config/kernel-config.service.js";
|
|
2
|
+
import { KernelDb } from "../infra/database/kernel-db.js";
|
|
3
|
+
import { type DeploymentExtensionStatus } from "./permission-view.js";
|
|
4
|
+
import { ExtensionRegistry } from "./registry.js";
|
|
5
|
+
/**
|
|
6
|
+
* Why an extension cannot be used right now (Platform tool spec §14.2 problem 1, §14.5 item 4):
|
|
7
|
+
* - `not_deployed`: no install record on the platform (a catalog plugin whose extension was never
|
|
8
|
+
* installed);
|
|
9
|
+
* - `needs_deployment_config`: installed, its deployment config is missing or invalid;
|
|
10
|
+
* - `pending_approval`: its permissions wait for the super admin's approval;
|
|
11
|
+
* - `pending_migration` / `loading`: the platform is still bringing it up;
|
|
12
|
+
* - `dependency`: an extension point it requires has no loaded provider;
|
|
13
|
+
* - `conflict`: it provides a single-provider extension point another loaded extension provides;
|
|
14
|
+
* - `failed`: it failed to load (or its package cannot be read);
|
|
15
|
+
* - `deployment_disabled`: the super admin disabled it on the platform.
|
|
16
|
+
* State only: never a config value or field name.
|
|
17
|
+
*/
|
|
18
|
+
export type ExtensionUnavailableReason = "not_deployed" | "needs_deployment_config" | "pending_approval" | "pending_migration" | "loading" | "dependency" | "conflict" | "failed" | "deployment_disabled";
|
|
19
|
+
/** The deployment status of an extension that is not loaded, and the reason it shows for it. */
|
|
20
|
+
export interface ExtensionUnavailability {
|
|
21
|
+
/** Null when it has no install record (`not_deployed`). */
|
|
22
|
+
status: DeploymentExtensionStatus | null;
|
|
23
|
+
reason: ExtensionUnavailableReason;
|
|
24
|
+
}
|
|
25
|
+
/** The reason an org or the Platform tool shows for a deployment status of a not-loaded extension. */
|
|
26
|
+
export declare function unavailableReason(status: DeploymentExtensionStatus): ExtensionUnavailableReason;
|
|
27
|
+
/**
|
|
28
|
+
* The state of extensions that are not loaded on this replica, derived like the admin console's
|
|
29
|
+
* status ({@link deriveExtensionStatus}) from the install record and the replicas' recent reports,
|
|
30
|
+
* without reading packages: a pending approval and a pending config come from the replicas' rows
|
|
31
|
+
* (`pending` with reason `approval` / `config`). Reads PG on every call (no in-process state).
|
|
32
|
+
*
|
|
33
|
+
* Its inputs differ slightly from the admin view's (`ExtensionAdmin`): there `pendingApproval`
|
|
34
|
+
* compares the package's permission set with the snapshot and `configValid` checks the deployment
|
|
35
|
+
* config, while here both come from what the replicas last reported. They agree once a replica
|
|
36
|
+
* has tried the current package; until then this view says `loading` where the admin view may
|
|
37
|
+
* already say `pending_approval` or `pending_config`.
|
|
38
|
+
*
|
|
39
|
+
* Which extensions count as loaded is this replica's registry: replica-local and transient. During
|
|
40
|
+
* a rollout, or right after an enable or upgrade, one replica may answer `loading` while another
|
|
41
|
+
* has it loaded; the next call (or the next reconcile) converges.
|
|
42
|
+
*/
|
|
43
|
+
export declare class ExtensionAvailability {
|
|
44
|
+
private readonly kdb;
|
|
45
|
+
private readonly config;
|
|
46
|
+
private readonly registry;
|
|
47
|
+
constructor(kdb: KernelDb, config: KernelConfigService, registry: ExtensionRegistry);
|
|
48
|
+
/** For each of `names` not loaded on this replica: its status and reason (loaded ones absent). */
|
|
49
|
+
unavailable(names: readonly string[]): Promise<Map<string, ExtensionUnavailability>>;
|
|
50
|
+
}
|