@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
|
@@ -15,6 +15,7 @@ import { parseBootstrapManifest, SDK_VERSION, } from "@capybara-hq/plugin-sdk";
|
|
|
15
15
|
import { Inject, Injectable, Optional } from "@nestjs/common";
|
|
16
16
|
import { sql } from "kysely";
|
|
17
17
|
import semver from "semver";
|
|
18
|
+
import { otherNameOwner } from "../catalog/ownership.js";
|
|
18
19
|
import { catalogPackageError } from "../catalog/plugin-import.js";
|
|
19
20
|
import { PluginPackageError, readPluginPackage } from "../catalog/plugin-package.js";
|
|
20
21
|
import { ApiError } from "../errors.js";
|
|
@@ -56,9 +57,15 @@ import { ExtensionRegistry } from "./registry.js";
|
|
|
56
57
|
* until expiry) aborts the run at its next step. "Done" is a `bootstrap_runs` row for the
|
|
57
58
|
* manifest's sha256 (written with the audit `bootstrap.completed` only when every entry
|
|
58
59
|
* succeeded; otherwise the next start runs it again, which is idempotent).
|
|
60
|
+
* - Two passes per start: the first runs before the extensions load (no object store yet), the
|
|
61
|
+
* second after them. A `builtin` entry (not required, but builtin in the catalog) is deferred by
|
|
62
|
+
* the first pass (`deferBuiltin`: skipped, not a failure; the run is then not recorded and the
|
|
63
|
+
* start runs the second pass), so it may ship skills and templates. A required entry is imported
|
|
64
|
+
* by the first pass and must succeed; a builtin one that fails is logged like an optional one.
|
|
59
65
|
* - Only entries new to the manifest are installed (Ruling 5): an optional entry that the last
|
|
60
|
-
* completed run already handled and that is not installed now (
|
|
61
|
-
* it) stays uninstalled -> `kept`. A required entry is always installed
|
|
66
|
+
* completed run already handled and that is not installed now (a super admin uninstalled
|
|
67
|
+
* it) stays uninstalled -> `kept`. A required or builtin entry is always installed (a
|
|
68
|
+
* declarative one imported again when its catalog item is gone).
|
|
62
69
|
* - Per entry, by the installed state of its extension:
|
|
63
70
|
* - not installed (and new, or required): imported into the catalog (source `bootstrap`, ref
|
|
64
71
|
* `bootstrap:<name>@<version>`, like a marketplace import), installed, approved (snapshot
|
|
@@ -66,8 +73,8 @@ import { ExtensionRegistry } from "./registry.js";
|
|
|
66
73
|
* and enabled -> `installed`;
|
|
67
74
|
* - installed from `bootstrap` at a lower version: upgraded the same way (core's release vouched
|
|
68
75
|
* for the version, so new permissions are pre-approved and audited), keeping the desired state
|
|
69
|
-
*
|
|
70
|
-
* - installed at a higher version, or from another source (
|
|
76
|
+
* a super admin chose (a disabled optional plugin stays disabled) -> `upgraded`;
|
|
77
|
+
* - installed at a higher version, or from another source (a super admin upgraded it), or
|
|
71
78
|
* the name is config-declared (`declared`: config wins, no install record is created):
|
|
72
79
|
* untouched, never downgraded -> `kept`;
|
|
73
80
|
* - a declarative plugin (no extension): imported into the catalog only -> `imported` (`kept`
|
|
@@ -83,22 +90,38 @@ import { ExtensionRegistry } from "./registry.js";
|
|
|
83
90
|
* A failed entry does not stop the others; the run then throws {@link BootstrapFailedError} naming
|
|
84
91
|
* them. The packages are kept in PG (`blob_store = 'pg'`), so installing an extension never needs
|
|
85
92
|
* the object store (object-store-s3 is itself a bootstrap plugin) and the directory and npm are
|
|
86
|
-
* never needed again
|
|
93
|
+
* never needed again. A plugin's icons and setup guide files are kept in PG too (`catalog_files`),
|
|
94
|
+
* so they never need it either; its skills, connector templates and agent templates do (an entry
|
|
95
|
+
* shipping them fails while no object store runs; an optional one is retried after the extensions
|
|
96
|
+
* loaded, and a plugin that must be builtin and ships them is a `builtin` entry, which only the
|
|
97
|
+
* pass after the extensions load imports).
|
|
87
98
|
*/
|
|
88
99
|
/** The bootstrap manifest that ships with the kernel package. */
|
|
89
100
|
export const BOOTSTRAP_MANIFEST_FILE = fileURLToPath(new URL("../../bootstrap.json", import.meta.url));
|
|
90
|
-
/**
|
|
101
|
+
/**
|
|
102
|
+
* Some entries failed or were deferred (the others were done); the run is not recorded as done.
|
|
103
|
+
*/
|
|
91
104
|
export class BootstrapFailedError extends Error {
|
|
92
105
|
failures;
|
|
93
106
|
results;
|
|
107
|
+
deferred;
|
|
108
|
+
packages;
|
|
94
109
|
/**
|
|
95
110
|
* @param results what the entries that did not fail did (pass them as `carry` to a later run in
|
|
96
111
|
* the same start, so its record keeps `installed` instead of `kept`).
|
|
112
|
+
* @param deferred the builtin entries a first pass skipped (`deferBuiltin`): not failures, the
|
|
113
|
+
* later pass of the same start imports them.
|
|
114
|
+
* @param packages the packages this run obtained, by entry name (pass them as `packages` to the
|
|
115
|
+
* later pass of the same start, so nothing is downloaded twice).
|
|
97
116
|
*/
|
|
98
|
-
constructor(failures, results = []) {
|
|
99
|
-
super(
|
|
117
|
+
constructor(failures, results = [], deferred = [], packages = new Map()) {
|
|
118
|
+
super(failures.length > 0
|
|
119
|
+
? `bootstrap failed for ${failures.map((f) => `${f.name}${f.required ? " (required)" : ""}: ${f.message}`).join("; ")}`
|
|
120
|
+
: `bootstrap deferred the builtin plugins ${deferred.join(", ")} to the pass after the extensions load`);
|
|
100
121
|
this.failures = failures;
|
|
101
122
|
this.results = results;
|
|
123
|
+
this.deferred = deferred;
|
|
124
|
+
this.packages = packages;
|
|
102
125
|
this.name = "BootstrapFailedError";
|
|
103
126
|
}
|
|
104
127
|
/** A required entry failed: the kernel must not serve without it. */
|
|
@@ -124,7 +147,8 @@ const integrityOf = (bytes) => `sha512-${createHash("sha512").update(bytes).dige
|
|
|
124
147
|
* file there has that sha512, else (a `source: "npm"` entry) downloaded from the npm registry and
|
|
125
148
|
* verified against the pin (the packument's `dist.integrity` is not consulted). Throws an
|
|
126
149
|
* {@link ApiError} naming the plugin for the first entry it cannot obtain
|
|
127
|
-
* (`bootstrap.missing_file`, `bootstrap.download_failed`, `bootstrap.integrity_mismatch`)
|
|
150
|
+
* (`bootstrap.missing_file`, `bootstrap.download_failed`, `bootstrap.integrity_mismatch`), except
|
|
151
|
+
* for the `soft` entries (recorded in `failed`, left out of the result).
|
|
128
152
|
*/
|
|
129
153
|
export async function resolveBootstrapPackages(manifest, o) {
|
|
130
154
|
const out = new Map();
|
|
@@ -137,11 +161,20 @@ export async function resolveBootstrapPackages(manifest, o) {
|
|
|
137
161
|
const where = o.dir !== undefined ? o.dir : "the bootstrap directory (config bootstrap.dir)";
|
|
138
162
|
for (const e of manifest.plugins) {
|
|
139
163
|
signal.throwIfAborted();
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
out.set(e.name, found);
|
|
143
|
-
continue;
|
|
164
|
+
try {
|
|
165
|
+
out.set(e.name, await obtain(e));
|
|
144
166
|
}
|
|
167
|
+
catch (err) {
|
|
168
|
+
if (signal.aborted || !(err instanceof ApiError) || o.soft?.(e) !== true)
|
|
169
|
+
throw err;
|
|
170
|
+
o.failed?.set(e.name, err);
|
|
171
|
+
}
|
|
172
|
+
}
|
|
173
|
+
return out;
|
|
174
|
+
async function obtain(e) {
|
|
175
|
+
const found = offline.get(e.integrity);
|
|
176
|
+
if (found !== undefined)
|
|
177
|
+
return found;
|
|
145
178
|
if (e.source === "workspace") {
|
|
146
179
|
throw new ApiError("bootstrap.missing_file", `Bootstrap plugin ${e.name} ${e.version}: no file in ${where} has its pinned sha512 (${e.integrity.slice(0, 19)}…), and a workspace entry cannot be downloaded; put its package tgz (pnpm pack-plugin ${e.path}) in that directory`);
|
|
147
180
|
}
|
|
@@ -149,7 +182,7 @@ export async function resolveBootstrapPackages(manifest, o) {
|
|
|
149
182
|
const offlineHint = `to install offline, put the package tgz (npm pack ${e.npm}@${e.version}, any file name) in ${where}`;
|
|
150
183
|
try {
|
|
151
184
|
const r = await fetchPackage({ registry: npmRegistry, ...(npmToken !== undefined && { token: npmToken }), maxBytes }, e.npm, e.version, signal, { expectedIntegrity: e.integrity });
|
|
152
|
-
|
|
185
|
+
return r.bytes;
|
|
153
186
|
}
|
|
154
187
|
catch (err) {
|
|
155
188
|
if (signal.aborted)
|
|
@@ -165,7 +198,6 @@ export async function resolveBootstrapPackages(manifest, o) {
|
|
|
165
198
|
throw new ApiError("bootstrap.download_failed", `Bootstrap plugin ${e.name} ${e.version}: cannot download ${e.npm}@${e.version} from ${registry} (${reason}); ${offlineHint}, or set packages.npmRegistry to a reachable mirror`);
|
|
166
199
|
}
|
|
167
200
|
}
|
|
168
|
-
return out;
|
|
169
201
|
}
|
|
170
202
|
/** The registry's origin, for messages (never its credentials or path). */
|
|
171
203
|
function registryOrigin(registry) {
|
|
@@ -294,19 +326,47 @@ let BootstrapService = class BootstrapService {
|
|
|
294
326
|
const done = await recorded();
|
|
295
327
|
if (done)
|
|
296
328
|
return done;
|
|
297
|
-
|
|
298
|
-
const
|
|
329
|
+
const deferBuiltin = o.deferBuiltin === true;
|
|
330
|
+
const isDeferred = (e) => deferBuiltin && e.builtin === true;
|
|
331
|
+
// Every package is obtained and checked before the first write (a deferred entry's by the
|
|
332
|
+
// later pass). The first pass refuses to write anything when one is missing or tampered;
|
|
333
|
+
// the later pass only fails that entry unless it is required.
|
|
334
|
+
const files = new Map();
|
|
335
|
+
const fetchFailed = new Map();
|
|
336
|
+
const toObtain = [];
|
|
337
|
+
for (const e of o.manifest.plugins) {
|
|
338
|
+
if (isDeferred(e))
|
|
339
|
+
continue;
|
|
340
|
+
const kept = o.packages?.get(e.name);
|
|
341
|
+
if (kept !== undefined && integrityOf(kept) === e.integrity)
|
|
342
|
+
files.set(e.name, kept);
|
|
343
|
+
else
|
|
344
|
+
toObtain.push(e);
|
|
345
|
+
}
|
|
346
|
+
const obtained = await resolveBootstrapPackages({ ...o.manifest, plugins: toObtain }, {
|
|
299
347
|
...(o.dir !== undefined && { dir: o.dir }),
|
|
300
348
|
config: this.config(),
|
|
301
349
|
signal,
|
|
302
350
|
log: this.log,
|
|
351
|
+
...(!deferBuiltin && { soft: (e) => !e.required, failed: fetchFailed }),
|
|
303
352
|
});
|
|
353
|
+
for (const [name, bytes] of obtained)
|
|
354
|
+
files.set(name, bytes);
|
|
304
355
|
const handled = await this.lastRunNames();
|
|
305
356
|
const results = [];
|
|
306
357
|
const failures = [];
|
|
358
|
+
const deferred = [];
|
|
307
359
|
for (const e of o.manifest.plugins) {
|
|
308
360
|
signal.throwIfAborted();
|
|
361
|
+
if (isDeferred(e)) {
|
|
362
|
+
deferred.push(e.name);
|
|
363
|
+
continue;
|
|
364
|
+
}
|
|
365
|
+
await this.warnIfHeld(e);
|
|
309
366
|
try {
|
|
367
|
+
const fetchErr = fetchFailed.get(e.name);
|
|
368
|
+
if (fetchErr !== undefined)
|
|
369
|
+
throw fetchErr;
|
|
310
370
|
const r = await this.entry(e, files.get(e.name), handled, o.imports);
|
|
311
371
|
results.push(carried(r, o.carry));
|
|
312
372
|
}
|
|
@@ -315,6 +375,7 @@ let BootstrapService = class BootstrapService {
|
|
|
315
375
|
plugin: e.name,
|
|
316
376
|
version: e.version,
|
|
317
377
|
required: e.required,
|
|
378
|
+
...(e.builtin === true && { builtin: true }),
|
|
318
379
|
err,
|
|
319
380
|
});
|
|
320
381
|
failures.push({
|
|
@@ -326,14 +387,32 @@ let BootstrapService = class BootstrapService {
|
|
|
326
387
|
}
|
|
327
388
|
}
|
|
328
389
|
results.push(...(await this.clearRemoved(o.manifest)));
|
|
329
|
-
if (failures.length > 0)
|
|
330
|
-
throw new BootstrapFailedError(failures, results);
|
|
390
|
+
if (failures.length > 0 || deferred.length > 0) {
|
|
391
|
+
throw new BootstrapFailedError(failures, results, deferred, files);
|
|
392
|
+
}
|
|
331
393
|
signal.throwIfAborted();
|
|
332
394
|
await this.recordDone(manifestSha256, results);
|
|
333
395
|
this.log.info("bootstrap completed", { manifestSha256, results });
|
|
334
396
|
return { manifestSha256, results };
|
|
335
397
|
});
|
|
336
398
|
}
|
|
399
|
+
/**
|
|
400
|
+
* A pin whose plugin name an org holds (a live org-owned catalog item): the bootstrap takes no
|
|
401
|
+
* name over (ruling P3-28), so the entry fails; this warning tells the super admin why and
|
|
402
|
+
* which org holds it (final review M4).
|
|
403
|
+
*/
|
|
404
|
+
async warnIfHeld(e) {
|
|
405
|
+
const holder = await otherNameOwner(this.db, e.name, null);
|
|
406
|
+
if (holder?.kind !== "org")
|
|
407
|
+
return;
|
|
408
|
+
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", {
|
|
409
|
+
plugin: e.name,
|
|
410
|
+
version: e.version,
|
|
411
|
+
required: e.required,
|
|
412
|
+
ownerOrgId: holder.orgId,
|
|
413
|
+
ownerOrg: holder.name,
|
|
414
|
+
});
|
|
415
|
+
}
|
|
337
416
|
/** The `bootstrap_runs` row and the `bootstrap.completed` audit, in one transaction. */
|
|
338
417
|
async recordDone(manifestSha256, results) {
|
|
339
418
|
await this.db
|
|
@@ -399,10 +478,15 @@ let BootstrapService = class BootstrapService {
|
|
|
399
478
|
const ref = `bootstrap:${e.name}@${e.version}`;
|
|
400
479
|
// Not new to the manifest: an optional entry left out on purpose stays out (Ruling 5)
|
|
401
480
|
const isNew = handled === undefined || !handled.has(e.name);
|
|
481
|
+
// Required and builtin entries are builtin in the catalog and put back when missing
|
|
482
|
+
const builtin = e.required || e.builtin === true;
|
|
402
483
|
if (!pkg.manifest.extension) {
|
|
403
|
-
|
|
484
|
+
await this.markBuiltin(e.name, builtin);
|
|
485
|
+
if (!isNew && !(builtin && !(await this.hasLiveItem(e.name)))) {
|
|
404
486
|
return { name: e.name, action: "kept", version: e.version };
|
|
487
|
+
}
|
|
405
488
|
const imported = await this.importOnly(e, bytes, ref, imports);
|
|
489
|
+
await this.markBuiltin(e.name, builtin);
|
|
406
490
|
return { name: e.name, action: imported ? "imported" : "kept", version: e.version };
|
|
407
491
|
}
|
|
408
492
|
if (this.registry.declared().has(e.name)) {
|
|
@@ -414,20 +498,21 @@ let BootstrapService = class BootstrapService {
|
|
|
414
498
|
.select(["version", "source", "required", "desired_state", "sha256"])
|
|
415
499
|
.where("name", "=", e.name)
|
|
416
500
|
.executeTakeFirst();
|
|
417
|
-
if (!row && !isNew && !
|
|
501
|
+
if (!row && !isNew && !builtin) {
|
|
418
502
|
this.log.info("bootstrap: an optional plugin that is not installed stays uninstalled", {
|
|
419
503
|
plugin: e.name,
|
|
420
504
|
});
|
|
421
505
|
return { name: e.name, action: "kept", version: e.version };
|
|
422
506
|
}
|
|
423
507
|
let result;
|
|
508
|
+
let leftDisabled;
|
|
424
509
|
if (!row) {
|
|
425
|
-
await this.deploy(e, bytes, ref, true, imports);
|
|
510
|
+
leftDisabled = await this.deploy(e, bytes, ref, true, imports);
|
|
426
511
|
result = { name: e.name, action: "installed", version: e.version };
|
|
427
512
|
}
|
|
428
513
|
else if (row.source === "bootstrap" && isLower(row.version, e.version)) {
|
|
429
514
|
// The desired state the admin chose is kept; a required plugin is enabled below anyway
|
|
430
|
-
await this.deploy(e, bytes, ref, row.desired_state === "enabled", imports);
|
|
515
|
+
leftDisabled = await this.deploy(e, bytes, ref, row.desired_state === "enabled", imports);
|
|
431
516
|
result = { name: e.name, action: "upgraded", version: e.version };
|
|
432
517
|
}
|
|
433
518
|
else {
|
|
@@ -449,9 +534,57 @@ let BootstrapService = class BootstrapService {
|
|
|
449
534
|
}
|
|
450
535
|
// A required install must run on the deployment (an org cannot use it otherwise)
|
|
451
536
|
if (e.required && row?.desired_state === "disabled") {
|
|
452
|
-
await this.
|
|
537
|
+
leftDisabled = await this.enableOrWarn(e);
|
|
453
538
|
}
|
|
454
|
-
|
|
539
|
+
await this.markBuiltin(e.name, builtin);
|
|
540
|
+
return leftDisabled === undefined ? result : { ...result, leftDisabled };
|
|
541
|
+
}
|
|
542
|
+
/** Whether a live (not deleted) platform catalog item has this name. */
|
|
543
|
+
async hasLiveItem(name) {
|
|
544
|
+
const row = await this.db
|
|
545
|
+
.selectFrom("catalog_items")
|
|
546
|
+
.select("id")
|
|
547
|
+
.where("name", "=", name)
|
|
548
|
+
.where("owner_org_id", "is", null)
|
|
549
|
+
.where("deleted_at", "is", null)
|
|
550
|
+
.executeTakeFirst();
|
|
551
|
+
return row !== undefined;
|
|
552
|
+
}
|
|
553
|
+
/**
|
|
554
|
+
* The catalog item of a bootstrap entry follows `required` / `builtin`: such an entry is builtin,
|
|
555
|
+
* offered to every org (scope `all`, which an org admin cannot switch off) and not disabled
|
|
556
|
+
* (migration 0075 could leave a required plugin disabled); an entry that stops being required or
|
|
557
|
+
* builtin is no longer builtin and keeps scope `all` (the admin may change it from then on).
|
|
558
|
+
* Only the platform item: an org-owned item of the same name (the entry then fails with
|
|
559
|
+
* `plugin.name_taken`) is never touched.
|
|
560
|
+
*/
|
|
561
|
+
async markBuiltin(name, builtin) {
|
|
562
|
+
const touch = { updated_at: sql `now()` };
|
|
563
|
+
if (builtin) {
|
|
564
|
+
await this.db
|
|
565
|
+
.updateTable("catalog_items")
|
|
566
|
+
.set({
|
|
567
|
+
builtin: true,
|
|
568
|
+
scope: "all",
|
|
569
|
+
disabled: false,
|
|
570
|
+
scope_version: sql `scope_version + 1`,
|
|
571
|
+
...touch,
|
|
572
|
+
})
|
|
573
|
+
.where("name", "=", name)
|
|
574
|
+
.where("owner_org_id", "is", null)
|
|
575
|
+
.where("deleted_at", "is", null)
|
|
576
|
+
.where((eb) => eb.or([eb("builtin", "=", false), eb("scope", "<>", "all"), eb("disabled", "=", true)]))
|
|
577
|
+
.execute();
|
|
578
|
+
return;
|
|
579
|
+
}
|
|
580
|
+
await this.db
|
|
581
|
+
.updateTable("catalog_items")
|
|
582
|
+
.set({ builtin: false, ...touch })
|
|
583
|
+
.where("name", "=", name)
|
|
584
|
+
.where("owner_org_id", "is", null)
|
|
585
|
+
.where("deleted_at", "is", null)
|
|
586
|
+
.where("builtin", "=", true)
|
|
587
|
+
.execute();
|
|
455
588
|
}
|
|
456
589
|
/** A declarative plugin: catalog only. Returns false when that version is already imported. */
|
|
457
590
|
async importOnly(e, bytes, ref, imports) {
|
|
@@ -461,10 +594,7 @@ let BootstrapService = class BootstrapService {
|
|
|
461
594
|
ref,
|
|
462
595
|
integrity: e.integrity,
|
|
463
596
|
});
|
|
464
|
-
await imports.confirm(null, stagingId, {
|
|
465
|
-
reviewHash: review.reviewHash,
|
|
466
|
-
deployExtension: false,
|
|
467
|
-
});
|
|
597
|
+
await imports.confirm(null, stagingId, { reviewHash: review.reviewHash });
|
|
468
598
|
return true;
|
|
469
599
|
}
|
|
470
600
|
catch (err) {
|
|
@@ -474,7 +604,7 @@ let BootstrapService = class BootstrapService {
|
|
|
474
604
|
}
|
|
475
605
|
}
|
|
476
606
|
/**
|
|
477
|
-
* Imports, approves, installs and enables (one review
|
|
607
|
+
* Imports, approves, installs and enables (one review; its confirm deploys the extension). When
|
|
478
608
|
* the catalog already has this version (an earlier run stopped after importing, or the same
|
|
479
609
|
* package came from a marketplace), the extension is deployed from the package store instead.
|
|
480
610
|
*/
|
|
@@ -489,19 +619,25 @@ let BootstrapService = class BootstrapService {
|
|
|
489
619
|
}
|
|
490
620
|
catch (err) {
|
|
491
621
|
if (err instanceof ApiError && err.code === "catalog.version_exists") {
|
|
492
|
-
|
|
493
|
-
return;
|
|
622
|
+
return this.deployFromStore(e, bytes, ref, enable);
|
|
494
623
|
}
|
|
495
624
|
throw err;
|
|
496
625
|
}
|
|
497
626
|
const r = await imports.confirm(null, staged.stagingId, {
|
|
498
627
|
reviewHash: staged.review.reviewHash,
|
|
499
|
-
deployExtension: true,
|
|
500
628
|
enable,
|
|
501
629
|
});
|
|
502
630
|
if (r.deploy?.result === "failed") {
|
|
503
631
|
throw new ApiError((r.deploy.code ?? "internal"), r.deploy.message ?? `installing extension ${e.name} failed`);
|
|
504
632
|
}
|
|
633
|
+
if (r.deploy?.singleProvider !== undefined) {
|
|
634
|
+
return this.leftDisabled(e, {
|
|
635
|
+
code: r.deploy.code,
|
|
636
|
+
message: r.deploy.message,
|
|
637
|
+
singleProvider: r.deploy.singleProvider,
|
|
638
|
+
});
|
|
639
|
+
}
|
|
640
|
+
return undefined;
|
|
505
641
|
}
|
|
506
642
|
/** The extension of a catalog version already imported: ingest, approve, install (, enable). */
|
|
507
643
|
async deployFromStore(e, bytes, ref, enable) {
|
|
@@ -521,11 +657,42 @@ let BootstrapService = class BootstrapService {
|
|
|
521
657
|
.selectFrom("catalog_items")
|
|
522
658
|
.select("id")
|
|
523
659
|
.where("name", "=", e.name)
|
|
660
|
+
.where("owner_org_id", "is", null)
|
|
524
661
|
.where("deleted_at", "is", null)
|
|
525
662
|
.executeTakeFirst();
|
|
526
|
-
await this.ops.install(e.name, review.sha256, null, undefined, item ? { catalogItemId: item.id } : {});
|
|
527
|
-
|
|
528
|
-
|
|
663
|
+
const installed = await this.ops.install(e.name, review.sha256, null, undefined, item ? { catalogItemId: item.id } : {});
|
|
664
|
+
// An upgrade newly providing a held single-provider point is left disabled by the install
|
|
665
|
+
if (installed.leftDisabled !== undefined)
|
|
666
|
+
return this.leftDisabled(e, installed.leftDisabled);
|
|
667
|
+
return enable ? this.enableOrWarn(e) : undefined;
|
|
668
|
+
}
|
|
669
|
+
/**
|
|
670
|
+
* Enables a bootstrap extension unless another enabled extension provides one of its
|
|
671
|
+
* single-provider extension points (see {@link leftDisabled}).
|
|
672
|
+
*/
|
|
673
|
+
async enableOrWarn(e) {
|
|
674
|
+
const r = await this.ops.enableUnlessOccupied(e.name, null);
|
|
675
|
+
return r.enabled ? undefined : this.leftDisabled(e, r.note);
|
|
676
|
+
}
|
|
677
|
+
/**
|
|
678
|
+
* A bootstrap extension left disabled because another enabled extension holds a single-provider
|
|
679
|
+
* extension point it provides. An optional preinstall (a sandbox while the super admin runs
|
|
680
|
+
* another one) stays disabled with a warning, and the entry's result says so. A required entry
|
|
681
|
+
* fails (thrown, so the run is not recorded done, `capybara bootstrap` exits 1 and
|
|
682
|
+
* `capybara start` refuses to serve): the deployment cannot run without it, and only the super
|
|
683
|
+
* admin can free the point, by disabling the other provider and running the bootstrap again.
|
|
684
|
+
*/
|
|
685
|
+
leftDisabled(e, note) {
|
|
686
|
+
const block = note.singleProvider;
|
|
687
|
+
if (e.required) {
|
|
688
|
+
const other = block.enabled.name;
|
|
689
|
+
throw new ApiError(note.code, `Required plugin ${e.name} provides ${block.extensionPoint}, which ${other} already provides; disable ${other} and run the bootstrap again`, [block]);
|
|
690
|
+
}
|
|
691
|
+
this.log.warn(`bootstrap: the plugin is installed disabled; ${note.message}`, {
|
|
692
|
+
plugin: e.name,
|
|
693
|
+
required: e.required,
|
|
694
|
+
});
|
|
695
|
+
return note;
|
|
529
696
|
}
|
|
530
697
|
/** The permission snapshot of a stored package (source `bootstrap`), under the approve lock. */
|
|
531
698
|
async approveStored(e, set, sha256) {
|
|
@@ -552,6 +719,18 @@ let BootstrapService = class BootstrapService {
|
|
|
552
719
|
if (names.length > 0)
|
|
553
720
|
q = q.where("name", "not in", names);
|
|
554
721
|
const rows = await q.returning(["name", "version"]).execute();
|
|
722
|
+
for (const r of rows)
|
|
723
|
+
await this.markBuiltin(r.name, false);
|
|
724
|
+
// A declarative plugin has no install record: clear builtin by catalog name
|
|
725
|
+
let items = this.db
|
|
726
|
+
.updateTable("catalog_items")
|
|
727
|
+
.set({ builtin: false, updated_at: sql `now()` })
|
|
728
|
+
.where("builtin", "=", true)
|
|
729
|
+
.where("owner_org_id", "is", null)
|
|
730
|
+
.where("deleted_at", "is", null);
|
|
731
|
+
if (names.length > 0)
|
|
732
|
+
items = items.where("name", "not in", names);
|
|
733
|
+
await items.execute();
|
|
555
734
|
return rows.map((r) => ({ name: r.name, action: "required_cleared", version: r.version }));
|
|
556
735
|
}
|
|
557
736
|
};
|
package/dist/extensions/cli.d.ts
CHANGED
|
@@ -54,6 +54,18 @@ export interface ExtensionCli {
|
|
|
54
54
|
publishChanged(plugin: string): Promise<boolean>;
|
|
55
55
|
close(): Promise<void>;
|
|
56
56
|
}
|
|
57
|
+
/**
|
|
58
|
+
* The effective deployment config (the startup config `fileValue` completed by the `stored` PG
|
|
59
|
+
* fields) parsed as the host's load gate does: overridable fields may stay empty (spec A §5.4a),
|
|
60
|
+
* hidden and read-only ones must be complete.
|
|
61
|
+
*/
|
|
62
|
+
export declare function parseDeploymentConfig(schema: z.ZodTypeAny, stored: Record<string, unknown>, fileValue: unknown): {
|
|
63
|
+
ok: true;
|
|
64
|
+
value: unknown;
|
|
65
|
+
} | {
|
|
66
|
+
ok: false;
|
|
67
|
+
issues: ConfigIssue[];
|
|
68
|
+
};
|
|
57
69
|
/**
|
|
58
70
|
* The CLI's extension management context (C18, F-Q): a Nest application context with
|
|
59
71
|
* the extensions module over the database and a lazy Redis connection used only for publishing
|
package/dist/extensions/cli.js
CHANGED
|
@@ -13,7 +13,17 @@ import { ExtensionsModule } from "./extensions.module.js";
|
|
|
13
13
|
import { ExtensionHost } from "./host.js";
|
|
14
14
|
import { ExtensionInstalls } from "./installs.js";
|
|
15
15
|
import { PLUGINS_CHANGED_TOPIC } from "./lifecycle-topics.js";
|
|
16
|
+
import { parseLoadGate } from "./org-levels.js";
|
|
16
17
|
import { ExtensionPackageError, extensionPackageApiError, permissionSetOfPackage, readExtensionPackage, } from "./package.js";
|
|
18
|
+
/**
|
|
19
|
+
* The effective deployment config (the startup config `fileValue` completed by the `stored` PG
|
|
20
|
+
* fields) parsed as the host's load gate does: overridable fields may stay empty (spec A §5.4a),
|
|
21
|
+
* hidden and read-only ones must be complete.
|
|
22
|
+
*/
|
|
23
|
+
export function parseDeploymentConfig(schema, stored, fileValue) {
|
|
24
|
+
const r = parseLoadGate(schema, mergeDeploymentConfig(stored, fileValue, schemaFields(schema).map((f) => f.path)));
|
|
25
|
+
return r.success ? { ok: true, value: r.data } : { ok: false, issues: toIssues(r.error) };
|
|
26
|
+
}
|
|
17
27
|
/**
|
|
18
28
|
* The CLI's extension management context (C18, F-Q): a Nest application context with
|
|
19
29
|
* the extensions module over the database and a lazy Redis connection used only for publishing
|
|
@@ -44,8 +54,7 @@ export async function openExtensionCli(config, log, opts = {}) {
|
|
|
44
54
|
const stored = await readStoredDeploymentConfig(db.db, keyring, name, {
|
|
45
55
|
secretPaths: secretPathsOf(schemaFields(schema)),
|
|
46
56
|
});
|
|
47
|
-
|
|
48
|
-
return r.success ? { ok: true, value: r.data } : { ok: false, issues: toIssues(r.error) };
|
|
57
|
+
return parseDeploymentConfig(schema, stored, config.extensionConfig[name]);
|
|
49
58
|
};
|
|
50
59
|
const configIssues = new Map();
|
|
51
60
|
const deploymentConfigs = new Map();
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import type { core } from "zod";
|
|
2
|
+
/**
|
|
3
|
+
* 插件部署配置(校验后)中非密钥部分的摘要:先把 schema 里所有 secret 叶子(`configFields` 可达路径,
|
|
4
|
+
* 加载时 `assertSecretsReachable` 已保证密钥都在这些路径上)换成固定占位值,再取 sha256(键排序 JSON) 前 16 位十六进制。
|
|
5
|
+
* 给需要「配置变了就失效」的缓存键用(如模型列表)。密钥不参与摘要:不加盐的短摘要写进 Redis 键名后,
|
|
6
|
+
* 低熵密钥可被离线猜测、泄露的密钥可被确认;代价是轮换密钥不会让缓存失效(缓存内容本来就不该依赖密钥)。
|
|
7
|
+
* 没有部署配置 schema 时无从得知哪些是密钥,摘要不按配置区分。同一份配置在各副本上得到同一摘要。
|
|
8
|
+
* 函数自己按 schema 遮蔽,调用方不必(也不能忘记)先打码。
|
|
9
|
+
*/
|
|
10
|
+
export declare function deploymentConfigHash(schema: core.$ZodType | undefined, config: unknown): string;
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
import { createHash } from "node:crypto";
|
|
2
|
+
import { configFields, getPath, setPath } from "../config/fields.js";
|
|
3
|
+
/** 键排序后的 JSON(对象键顺序不影响结果);undefined 字段与 JSON.stringify 一样省略。 */
|
|
4
|
+
const canonicalJson = (v) => {
|
|
5
|
+
if (Array.isArray(v))
|
|
6
|
+
return `[${v.map((x) => (x === undefined ? "null" : canonicalJson(x))).join(",")}]`;
|
|
7
|
+
if (v !== null && typeof v === "object") {
|
|
8
|
+
const entries = Object.entries(v)
|
|
9
|
+
.filter(([, x]) => x !== undefined)
|
|
10
|
+
.sort(([a], [b]) => (a < b ? -1 : a > b ? 1 : 0));
|
|
11
|
+
return `{${entries.map(([k, x]) => `${JSON.stringify(k)}:${canonicalJson(x)}`).join(",")}}`;
|
|
12
|
+
}
|
|
13
|
+
return JSON.stringify(v) ?? "null";
|
|
14
|
+
};
|
|
15
|
+
/** 遮蔽 secret 字段后参与摘要的固定占位值。 */
|
|
16
|
+
const SECRET_PLACEHOLDER = "<secret>";
|
|
17
|
+
/**
|
|
18
|
+
* 插件部署配置(校验后)中非密钥部分的摘要:先把 schema 里所有 secret 叶子(`configFields` 可达路径,
|
|
19
|
+
* 加载时 `assertSecretsReachable` 已保证密钥都在这些路径上)换成固定占位值,再取 sha256(键排序 JSON) 前 16 位十六进制。
|
|
20
|
+
* 给需要「配置变了就失效」的缓存键用(如模型列表)。密钥不参与摘要:不加盐的短摘要写进 Redis 键名后,
|
|
21
|
+
* 低熵密钥可被离线猜测、泄露的密钥可被确认;代价是轮换密钥不会让缓存失效(缓存内容本来就不该依赖密钥)。
|
|
22
|
+
* 没有部署配置 schema 时无从得知哪些是密钥,摘要不按配置区分。同一份配置在各副本上得到同一摘要。
|
|
23
|
+
* 函数自己按 schema 遮蔽,调用方不必(也不能忘记)先打码。
|
|
24
|
+
*/
|
|
25
|
+
export function deploymentConfigHash(schema, config) {
|
|
26
|
+
let redacted = null;
|
|
27
|
+
if (schema) {
|
|
28
|
+
redacted = structuredClone(config);
|
|
29
|
+
if (redacted !== null && typeof redacted === "object") {
|
|
30
|
+
for (const f of configFields(schema)) {
|
|
31
|
+
if (f.meta?.secret && getPath(redacted, f.path) !== undefined) {
|
|
32
|
+
setPath(redacted, f.path, SECRET_PLACEHOLDER);
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
return createHash("sha256").update(canonicalJson(redacted)).digest("hex").slice(0, 16);
|
|
38
|
+
}
|
|
@@ -1,7 +1,19 @@
|
|
|
1
1
|
import type { z } from "zod";
|
|
2
2
|
/** 校验失败的单条原因:只含路径与按 issue 类型生成的说明,不回显字段值。 */
|
|
3
3
|
export interface ConfigIssue {
|
|
4
|
+
/** The path joined with dots (`""` = the root); ambiguous when a key contains a dot. */
|
|
4
5
|
path: string;
|
|
6
|
+
/** The zod path unjoined (record keys such as endpoint names may contain dots). */
|
|
7
|
+
segments: (string | number)[];
|
|
5
8
|
message: string;
|
|
9
|
+
/**
|
|
10
|
+
* A custom issue whose `params.ui` names a key of the schema's root `x-ui.messages`: the form
|
|
11
|
+
* shows that localized message (spec §4.4). Never zod's own custom text.
|
|
12
|
+
*/
|
|
13
|
+
messageKey?: string;
|
|
6
14
|
}
|
|
7
|
-
|
|
15
|
+
/**
|
|
16
|
+
* The issues of a failed config parse. `messages` is the root `x-ui.messages` of the schema's
|
|
17
|
+
* form JSON Schema (`configMessages`): custom issues naming one of its keys get `messageKey`.
|
|
18
|
+
*/
|
|
19
|
+
export declare function toIssues(error: z.ZodError, messages?: Record<string, unknown>): ConfigIssue[];
|
|
@@ -23,9 +23,26 @@ function issueMessage(i) {
|
|
|
23
23
|
return "invalid value";
|
|
24
24
|
}
|
|
25
25
|
}
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
26
|
+
/** The `params.ui` of a custom issue when it names one of `messages` (own keys only). */
|
|
27
|
+
function messageKeyOf(i, messages) {
|
|
28
|
+
if (i.code !== "custom" || messages === undefined)
|
|
29
|
+
return undefined;
|
|
30
|
+
const key = i.params?.ui;
|
|
31
|
+
return typeof key === "string" && Object.hasOwn(messages, key) ? key : undefined;
|
|
32
|
+
}
|
|
33
|
+
/**
|
|
34
|
+
* The issues of a failed config parse. `messages` is the root `x-ui.messages` of the schema's
|
|
35
|
+
* form JSON Schema (`configMessages`): custom issues naming one of its keys get `messageKey`.
|
|
36
|
+
*/
|
|
37
|
+
export function toIssues(error, messages) {
|
|
38
|
+
return error.issues.map((i) => {
|
|
39
|
+
const segments = i.path.map((s) => (typeof s === "number" ? s : String(s)));
|
|
40
|
+
const messageKey = messageKeyOf(i, messages);
|
|
41
|
+
return {
|
|
42
|
+
path: segments.join("."),
|
|
43
|
+
segments,
|
|
44
|
+
message: issueMessage(i),
|
|
45
|
+
...(messageKey !== undefined && { messageKey }),
|
|
46
|
+
};
|
|
47
|
+
});
|
|
31
48
|
}
|
|
@@ -1,9 +1,45 @@
|
|
|
1
|
-
import { z } from "zod";
|
|
2
|
-
export type JsonSchema = Record<string, unknown>;
|
|
3
1
|
/**
|
|
4
|
-
*
|
|
5
|
-
*
|
|
6
|
-
*
|
|
7
|
-
* - 以输入侧形态输出(含 default),不带 `$schema`。
|
|
2
|
+
* Config schema → JSON Schema for forms. The conversion (and the secret scrub) lives in the SDK
|
|
3
|
+
* (`configJsonSchema`, extension config forms spec §4.1) so the packer, the checks and the kernel
|
|
4
|
+
* share one implementation; the kernel keeps no copy.
|
|
8
5
|
*/
|
|
9
|
-
|
|
6
|
+
import { type ConfigUiProblem, type JsonSchema } from "@capybara-hq/plugin-sdk";
|
|
7
|
+
import type { z } from "zod";
|
|
8
|
+
export { configJsonSchema as configToJsonSchema, type JsonSchema } from "@capybara-hq/plugin-sdk";
|
|
9
|
+
/** The config level a schema belongs to (which hints `validateConfigUi` allows). */
|
|
10
|
+
export type ConfigLevel = "deployment" | "org" | "connection";
|
|
11
|
+
/** A config schema as served to forms, with the problems of its hints (empty = kept). */
|
|
12
|
+
export interface ConfigFormSchema {
|
|
13
|
+
/** Shared by every caller: clone it before handing it out or changing it. */
|
|
14
|
+
readonly schema: JsonSchema;
|
|
15
|
+
readonly problems: ConfigUiProblem[];
|
|
16
|
+
}
|
|
17
|
+
/**
|
|
18
|
+
* Removes every `x-ui` from a JSON Schema in place (a property named `x-ui` is kept, and so are
|
|
19
|
+
* values: `default`, `const`, `enum` and `examples` are left as they are).
|
|
20
|
+
*/
|
|
21
|
+
export declare function stripConfigUi(node: unknown): void;
|
|
22
|
+
/**
|
|
23
|
+
* Validates the hints of a JSON Schema at a level and strips every `x-ui` when there is any
|
|
24
|
+
* problem (in place): invalid hints never reach a form, and never fail a load (spec §4.1).
|
|
25
|
+
*/
|
|
26
|
+
export declare function checkConfigUi(schema: JsonSchema, level: ConfigLevel): ConfigUiProblem[];
|
|
27
|
+
/** A config schema's form JSON Schema ({@link checkConfigUi} applied), cached per schema object. */
|
|
28
|
+
export declare function configFormSchema(schema: z.ZodTypeAny, level: ConfigLevel): ConfigFormSchema;
|
|
29
|
+
/**
|
|
30
|
+
* {@link configFormSchema} that never throws, for every caller that serves a form schema or reads
|
|
31
|
+
* its messages (deployment, org, connection, issues). A hint conversion that throws (a hand-made
|
|
32
|
+
* package, e.g. hints that won't serialize as JSON) drops the hints: the plain schema with every
|
|
33
|
+
* `x-ui` stripped, else `null` when even the plain conversion fails. `onFallback` runs once per
|
|
34
|
+
* schema object and level on this replica (the caller's one warning); later calls reuse the result.
|
|
35
|
+
*/
|
|
36
|
+
export declare function safeConfigFormSchema(schema: z.ZodTypeAny, level: ConfigLevel, onFallback: (err: unknown, fallback: "plain" | "none") => void): ConfigFormSchema | null;
|
|
37
|
+
/**
|
|
38
|
+
* The secret record paths some `x-ui.secrets[].path` of a form schema names (spec §4.3), anywhere in
|
|
39
|
+
* the schema. Read from a checked schema: one whose hints were invalid was stripped and names none.
|
|
40
|
+
*/
|
|
41
|
+
export declare function hintedSecretPaths(node: unknown, out?: Set<string>): Set<string>;
|
|
42
|
+
/** The root `x-ui.messages` of a form schema (the localized texts of custom issues), if any. */
|
|
43
|
+
export declare function configMessages(schema: JsonSchema | null | undefined): Record<string, unknown> | undefined;
|
|
44
|
+
/** A short text of hint problems for a status detail or a log (the first few). */
|
|
45
|
+
export declare function describeConfigUiProblems(level: ConfigLevel, problems: ConfigUiProblem[]): string;
|