@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,36 +1,60 @@
|
|
|
1
|
-
import { type AgentTemplate, type Connector, type ConnectorTemplateFile, type ConnectorTemplateSpec, type LocalizedName, type PluginManifest } from "@capybara-hq/plugin-sdk";
|
|
1
|
+
import { type AgentTemplate, type Connector, type ConnectorTemplateFile, type ConnectorTemplateSpec, type LocalizedName, type ParsedTheme, type PluginManifest } from "@capybara-hq/plugin-sdk";
|
|
2
2
|
import type { KernelSchemaDb } from "../db/kernel-schema.js";
|
|
3
3
|
import type { ExtensionRegistry } from "../extensions/registry.js";
|
|
4
|
+
import type { ExtensionUnavailableReason } from "../extensions/unavailable.js";
|
|
4
5
|
import type { OrgLock } from "../orgs/org-lock.js";
|
|
5
6
|
import { type OrgAction } from "../orgs/roles.js";
|
|
6
7
|
import { checkSkillFiles, type SkillPackageFile } from "../skills/package.js";
|
|
7
8
|
import type { StorageService } from "../storage/storage.service.js";
|
|
8
9
|
import type { ConnectorTemplateRef, CreateConnectorInput } from "../tools/connectors.service.js";
|
|
9
10
|
import type { CatalogItemView } from "./catalog.service.js";
|
|
11
|
+
import { readDisplayFiles } from "./catalog-files.js";
|
|
10
12
|
import type { ConnectorInstallInput, PluginInstallInput, PluginInstallView } from "./plugin-install.js";
|
|
11
|
-
import type {
|
|
13
|
+
import type { OrgPluginState, PluginScope } from "./scope.js";
|
|
12
14
|
/** A catalog item from an organization's view (`GET /orgs/:orgId/catalog`). */
|
|
13
|
-
|
|
15
|
+
/** Why an org's plugin is `unavailable` ({@link OrgCatalogItem.reason}). */
|
|
16
|
+
export type PluginUnavailableReason = "plugin_disabled" | ExtensionUnavailableReason;
|
|
17
|
+
export interface OrgCatalogItem extends Omit<CatalogItemView, "installs" | "marketplaceId" | "latestMarketplaceVersion" | "newerInMarketplace" | "scopeOrgs" | "enabledOrgs" | "offCount" | "pending" | "shownToOthers" | "awaitingConfirmation" | "pendingVersion"> {
|
|
18
|
+
/** The owner org only (absent for other orgs): its upload waits for the super admin (P3-9). */
|
|
19
|
+
awaitingConfirmation?: boolean;
|
|
20
|
+
/** The owner org only (absent for other orgs): the version waiting for that confirmation. */
|
|
21
|
+
pendingVersion?: string | null;
|
|
22
|
+
scope: PluginScope;
|
|
23
|
+
/** Shipped with the deployment (a required bootstrap plugin): on in every org, never switchable. */
|
|
24
|
+
builtin: boolean;
|
|
14
25
|
/**
|
|
15
|
-
*
|
|
16
|
-
*
|
|
17
|
-
*
|
|
26
|
+
* The effective state in this org: `on`, `off`, `needs_config` (installed with an on connector
|
|
27
|
+
* template that has no connector here, ruling P2-10; or wanted but not installed, and the
|
|
28
|
+
* install needs inputs), `unavailable` (disabled by the super admin, members don't see it; or
|
|
29
|
+
* not installed here and its extension cannot run on the deployment, see `reason`) or
|
|
30
|
+
* `not_offered` (a `named` item shown to orgs outside its list: requestable, not usable).
|
|
18
31
|
*/
|
|
19
|
-
|
|
32
|
+
state: OrgPluginState;
|
|
33
|
+
/**
|
|
34
|
+
* Only when `unavailable`: why (Platform tool spec §14.2 problem 1). `plugin_disabled`: the super
|
|
35
|
+
* admin disabled the item; otherwise its extension's {@link ExtensionUnavailableReason}, the same
|
|
36
|
+
* one the org's 扩展 page shows.
|
|
37
|
+
*/
|
|
38
|
+
reason?: PluginUnavailableReason;
|
|
39
|
+
/** The org admin may switch it (never for `all` and builtin items). */
|
|
40
|
+
switchable: boolean;
|
|
41
|
+
/** The plugin's extension (or a template's connector extension) is not on the deployment. */
|
|
42
|
+
notDeployed: boolean;
|
|
20
43
|
/**
|
|
21
44
|
* This org's live plugin install of the item (installing, installed or upgrading);
|
|
22
|
-
* `upgradeAvailable` is
|
|
45
|
+
* `upgradeAvailable` is always null since plugin scope phase 2 (no per-org upgrade, ruling F2;
|
|
46
|
+
* kept for the web until its upgrade dialog goes).
|
|
23
47
|
*/
|
|
24
48
|
installed: {
|
|
25
49
|
pluginInstallId: string;
|
|
26
50
|
version: string;
|
|
27
51
|
upgradeAvailable: string | null;
|
|
28
52
|
} | null;
|
|
29
|
-
/** This org's
|
|
53
|
+
/** This org's pending request for the item (spec §5.1), null when none. */
|
|
30
54
|
request: {
|
|
31
55
|
id: string;
|
|
32
|
-
|
|
33
|
-
|
|
56
|
+
kind: "access" | "enable";
|
|
57
|
+
createdAt: string;
|
|
34
58
|
} | null;
|
|
35
59
|
}
|
|
36
60
|
/**
|
|
@@ -48,6 +72,14 @@ export interface OrgCatalogTemplate {
|
|
|
48
72
|
editableEndpoint: string[];
|
|
49
73
|
auth: Record<string, unknown>;
|
|
50
74
|
ownership: "org" | "personal" | null;
|
|
75
|
+
/**
|
|
76
|
+
* The template's setup guide in the item's latest version (`GET …/catalog/:itemId/guides/
|
|
77
|
+
* :guideId`), null without one (spec 2026-11-09-setup-guides-v2-design.md §9.3).
|
|
78
|
+
*/
|
|
79
|
+
guide: {
|
|
80
|
+
itemId: string;
|
|
81
|
+
guideId: string;
|
|
82
|
+
} | null;
|
|
51
83
|
}
|
|
52
84
|
/** `GET /orgs/:orgId/catalog/:itemId`: the item and what the install wizard needs (latest version). */
|
|
53
85
|
export interface OrgCatalogDetail {
|
|
@@ -57,26 +89,35 @@ export interface OrgCatalogDetail {
|
|
|
57
89
|
/** The plugin's extension (its name), null without one. */
|
|
58
90
|
extension: string | null;
|
|
59
91
|
templates: OrgCatalogTemplate[];
|
|
60
|
-
/**
|
|
92
|
+
/**
|
|
93
|
+
* The plugin's dependencies (name and range); `implied` ones are the connector extensions its
|
|
94
|
+
* templates use that the org has off: the install switches them on first.
|
|
95
|
+
*/
|
|
61
96
|
dependencies: {
|
|
62
97
|
name: string;
|
|
63
98
|
range: string;
|
|
99
|
+
implied?: true;
|
|
64
100
|
}[];
|
|
65
101
|
/** The skill directories. */
|
|
66
102
|
skills: string[];
|
|
67
103
|
/** The agent template files (`agents/<name>.md`, sub-agents spec §16). */
|
|
68
104
|
agents: string[];
|
|
105
|
+
/**
|
|
106
|
+
* An installed plugin whose connector templates on in the org miss a connector there
|
|
107
|
+
* (`needs_config`, ruling P2-10): those templates, for `POST …/catalog/:itemId/connectors`;
|
|
108
|
+
* empty otherwise (Task 10).
|
|
109
|
+
*/
|
|
110
|
+
missingTemplates: OrgCatalogTemplate[];
|
|
69
111
|
}
|
|
70
112
|
/**
|
|
71
113
|
* A connector template as an org sees it (the install wizard and the upgrade preview's inputs):
|
|
72
114
|
* presets and editable paths, no credentials.
|
|
73
115
|
*/
|
|
74
|
-
export declare function orgTemplateView(id: string, file: ConnectorTemplateFile): OrgCatalogTemplate;
|
|
116
|
+
export declare function orgTemplateView(id: string, file: ConnectorTemplateFile, guide?: OrgCatalogTemplate["guide"]): OrgCatalogTemplate;
|
|
75
117
|
/** An item's icon (the latest version's plugin icon). */
|
|
76
118
|
export interface CatalogIcon {
|
|
77
119
|
data: Uint8Array;
|
|
78
120
|
contentType: "image/svg+xml" | "image/png";
|
|
79
|
-
policy: "allow" | "needs_approval" | "disabled";
|
|
80
121
|
}
|
|
81
122
|
/** The parts of a catalog version row an org install reads. */
|
|
82
123
|
export interface CatalogVersionFiles {
|
|
@@ -88,6 +129,16 @@ export interface CatalogVersionFiles {
|
|
|
88
129
|
sha256: string;
|
|
89
130
|
}[];
|
|
90
131
|
}
|
|
132
|
+
/**
|
|
133
|
+
* The digest of a skill's files (paths relative to the skill directory): equal digests = the same
|
|
134
|
+
* content. Shared by the org upgrade diff and the platform components.
|
|
135
|
+
*/
|
|
136
|
+
export declare function skillFilesDigest(files: {
|
|
137
|
+
path: string;
|
|
138
|
+
sha256: string;
|
|
139
|
+
}[]): string;
|
|
140
|
+
/** The digest of the files under `dir/` of a catalog version (paths relative to it). */
|
|
141
|
+
export declare function dirDigest(row: CatalogVersionFiles, dir: string): string;
|
|
91
142
|
/** Whether the item's latest version has an icon; unreadable counts as none. */
|
|
92
143
|
export declare function catalogHasIcon(db: KernelSchemaDb, itemId: string): Promise<boolean>;
|
|
93
144
|
/**
|
|
@@ -97,14 +148,15 @@ export declare function catalogHasIcon(db: KernelSchemaDb, itemId: string): Prom
|
|
|
97
148
|
* storage); no icon -> `catalog.icon_not_found`; stored content that is not a valid svg / png
|
|
98
149
|
* (checked at import, this guards against tampered storage) -> `internal`.
|
|
99
150
|
*/
|
|
100
|
-
export declare function readCatalogIcon(db: KernelSchemaDb,
|
|
151
|
+
export declare function readCatalogIcon(db: KernelSchemaDb, itemId: string, includeDisabled: boolean): Promise<CatalogIcon>;
|
|
101
152
|
export type { ConnectorInstallInput };
|
|
102
|
-
/**
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
153
|
+
/**
|
|
154
|
+
* The input of `POST /orgs/:orgId/catalog/:itemId/install`: the platform version is installed
|
|
155
|
+
* (ruling P2-17), so there is no version.
|
|
156
|
+
*/
|
|
157
|
+
export type OrgInstallInput = PluginInstallInput;
|
|
158
|
+
/** Install result: 201 installed. */
|
|
159
|
+
export interface OrgInstallResult {
|
|
108
160
|
status: 201;
|
|
109
161
|
installed: {
|
|
110
162
|
itemId: string;
|
|
@@ -113,26 +165,19 @@ export type OrgInstallResult = {
|
|
|
113
165
|
};
|
|
114
166
|
/** The install view (its components, dependency installs included). */
|
|
115
167
|
install: PluginInstallView;
|
|
116
|
-
}
|
|
117
|
-
status: 202;
|
|
118
|
-
request: CatalogRequestView;
|
|
119
|
-
};
|
|
120
|
-
/** Upgrade result: 200 upgraded (the install view); 202 needs enterprise admin approval, a request was created. */
|
|
121
|
-
export type OrgUpgradeResult = {
|
|
122
|
-
status: 200;
|
|
123
|
-
install: PluginInstallView;
|
|
124
|
-
} | {
|
|
125
|
-
status: 202;
|
|
126
|
-
request: CatalogRequestView;
|
|
127
|
-
};
|
|
168
|
+
}
|
|
128
169
|
/**
|
|
129
170
|
* The org actions installing / uninstalling a plugin needs: the union over its components (an
|
|
130
171
|
* extension -> `org.extensions.manage`, skills -> `skills.manage`, connector templates ->
|
|
131
172
|
* `connectors.manage`, agent templates -> `agents.manage`), re-checked inside the org row lock.
|
|
132
173
|
*/
|
|
133
174
|
export declare function requiredActions(m: PluginManifest): OrgAction[];
|
|
134
|
-
/**
|
|
135
|
-
|
|
175
|
+
/**
|
|
176
|
+
* Locks the org row in the caller's transaction (`orgLock` joins it) and re-checks the actor can do
|
|
177
|
+
* every action (else `forbidden`). `actor` null is the kernel itself (the plugin scope sync): the
|
|
178
|
+
* lock only.
|
|
179
|
+
*/
|
|
180
|
+
export declare function lockOrgForActions(orgLock: Pick<OrgLock, "lock" | "lockAndAuthorize">, orgId: string, actor: string | null, actions: OrgAction[]): Promise<void>;
|
|
136
181
|
/** The value at a dot path of `v` (own keys only), undefined when absent. */
|
|
137
182
|
export declare function getPath(v: unknown, path: string): unknown;
|
|
138
183
|
/** Sets the value at a dot path of `obj`, creating the objects on the way. */
|
|
@@ -168,6 +213,16 @@ export declare function readCatalogFiles(storage: StorageService, objectPrefix:
|
|
|
168
213
|
size: number;
|
|
169
214
|
sha256: string;
|
|
170
215
|
}[], under?: string): Promise<SkillPackageFile[]>;
|
|
216
|
+
/**
|
|
217
|
+
* Reads a version's display files (icons, setup guide files; `catalog-files.ts`) from PG, sha256
|
|
218
|
+
* checked, in the order given; no object storage is involved. A listed file missing from PG is lost
|
|
219
|
+
* or tampered data (`internal`).
|
|
220
|
+
*/
|
|
221
|
+
export declare function readCatalogDisplayFiles(db: Parameters<typeof readDisplayFiles>[0], files: {
|
|
222
|
+
path: string;
|
|
223
|
+
size: number;
|
|
224
|
+
sha256: string;
|
|
225
|
+
}[]): Promise<SkillPackageFile[]>;
|
|
171
226
|
/** 校验技能文件并取名字与描述(导入时已校验过;这里防存储被改)。 */
|
|
172
227
|
export declare function skillOf(files: SkillPackageFile[]): ReturnType<typeof checkSkillFiles>;
|
|
173
228
|
/** The connector templates of a catalog version, read from storage (id = the file's base name). */
|
|
@@ -183,3 +238,35 @@ export declare function readCatalogAgentTemplates(storage: StorageService, v: Ca
|
|
|
183
238
|
path: string;
|
|
184
239
|
template: AgentTemplate;
|
|
185
240
|
}[]>;
|
|
241
|
+
/** A theme of a catalog version ({@link readCatalogThemes}). */
|
|
242
|
+
export interface CatalogTheme {
|
|
243
|
+
/** The theme id (the file's base name). */
|
|
244
|
+
id: string;
|
|
245
|
+
/** Relative to the plugin root. */
|
|
246
|
+
path: string;
|
|
247
|
+
theme: ParsedTheme;
|
|
248
|
+
/** The theme's fonts and logo files (paths relative to the plugin root), sanitized. */
|
|
249
|
+
assets: SkillPackageFile[];
|
|
250
|
+
/** {@link themeAssetsDigest} of the version's records of those files. */
|
|
251
|
+
assetsDigest: string;
|
|
252
|
+
}
|
|
253
|
+
/** The asset paths a parsed theme references (fonts, logo mark and favicon), without `./`. */
|
|
254
|
+
export declare function themeAssetPaths(theme: ParsedTheme): string[];
|
|
255
|
+
/**
|
|
256
|
+
* The digest of a theme's assets as recorded on a catalog version (`files`): equal digests = the
|
|
257
|
+
* same fonts and logo. With the canonical definition it decides whether a theme changed.
|
|
258
|
+
*/
|
|
259
|
+
export declare function themeAssetsDigest(files: {
|
|
260
|
+
path: string;
|
|
261
|
+
sha256: string;
|
|
262
|
+
}[], theme: ParsedTheme): string;
|
|
263
|
+
/**
|
|
264
|
+
* The themes of a catalog version (`manifest.themes`, listed explicitly since import), parsed from
|
|
265
|
+
* storage and their assets checked again (checked at import; again in case storage was changed).
|
|
266
|
+
* Grammar and token names are checked again (a token renamed in core stays loud, themes spec
|
|
267
|
+
* §4.1), but not readability: the version passed it at import, and a later change of the built-in
|
|
268
|
+
* tokens must not block an update or a rollback to it. A theme that fails -> 400 `theme.invalid`
|
|
269
|
+
* as at import (themes spec §6: a failing new version blocks the plugin update with the same
|
|
270
|
+
* refusal).
|
|
271
|
+
*/
|
|
272
|
+
export declare function readCatalogThemes(storage: StorageService, v: CatalogVersionFiles): Promise<CatalogTheme[]>;
|
|
@@ -1,20 +1,22 @@
|
|
|
1
1
|
// Reading a catalog version's stored content (templates, skills, agent templates, icons) and the
|
|
2
|
-
// org install helpers (no providers), shared by PluginInstaller,
|
|
2
|
+
// org install helpers (no providers), shared by PluginInstaller, PlatformPluginUpdater and
|
|
3
3
|
// OrgCatalogService: kept out of org-catalog.service.ts so the installer's module never imports a
|
|
4
4
|
// module whose provider injects PluginInstaller (an ESM import cycle would run decorators early).
|
|
5
5
|
import { createHash } from "node:crypto";
|
|
6
|
-
import { parseAgentTemplate, parseConnectorTemplateFile, } from "@capybara-hq/plugin-sdk";
|
|
6
|
+
import { parseAgentTemplate, parseConnectorTemplateFile, parseThemeFile, themeIdOf, validateThemeAssets, } from "@capybara-hq/plugin-sdk";
|
|
7
|
+
import { normalizeToolKeys } from "../agents/definition.js";
|
|
7
8
|
import { ApiError } from "../errors.js";
|
|
8
9
|
import { can } from "../orgs/roles.js";
|
|
9
10
|
import { packagePath } from "../packages/tgz.js";
|
|
10
11
|
import { checkSkillFiles, SkillArchiveError } from "../skills/package.js";
|
|
11
|
-
import {
|
|
12
|
+
import { readDisplayFiles } from "./catalog-files.js";
|
|
13
|
+
import { iconProblem, pluginThemeError, themeApiError } from "./plugin-package.js";
|
|
12
14
|
import { satisfiesRange } from "./versions.js";
|
|
13
15
|
/**
|
|
14
16
|
* A connector template as an org sees it (the install wizard and the upgrade preview's inputs):
|
|
15
17
|
* presets and editable paths, no credentials.
|
|
16
18
|
*/
|
|
17
|
-
export function orgTemplateView(id, file) {
|
|
19
|
+
export function orgTemplateView(id, file, guide = null) {
|
|
18
20
|
const t = file.template;
|
|
19
21
|
return {
|
|
20
22
|
id,
|
|
@@ -27,9 +29,29 @@ export function orgTemplateView(id, file) {
|
|
|
27
29
|
auth: t.auth,
|
|
28
30
|
ownership: t.ownership ??
|
|
29
31
|
(typeof t.auth.ownership === "string" ? t.auth.ownership : null),
|
|
32
|
+
guide,
|
|
30
33
|
};
|
|
31
34
|
}
|
|
32
35
|
const iconNotFound = () => new ApiError("catalog.icon_not_found", "This catalog item has no icon");
|
|
36
|
+
/**
|
|
37
|
+
* The digest of a skill's files (paths relative to the skill directory): equal digests = the same
|
|
38
|
+
* content. Shared by the org upgrade diff and the platform components.
|
|
39
|
+
*/
|
|
40
|
+
export function skillFilesDigest(files) {
|
|
41
|
+
return createHash("sha256")
|
|
42
|
+
.update(files
|
|
43
|
+
.map((f) => `${f.path}\0${f.sha256}\n`)
|
|
44
|
+
.sort()
|
|
45
|
+
.join(""))
|
|
46
|
+
.digest("hex");
|
|
47
|
+
}
|
|
48
|
+
/** The digest of the files under `dir/` of a catalog version (paths relative to it). */
|
|
49
|
+
export function dirDigest(row, dir) {
|
|
50
|
+
const prefix = `${dir}/`;
|
|
51
|
+
return skillFilesDigest(row.files
|
|
52
|
+
.filter((f) => f.path.startsWith(prefix))
|
|
53
|
+
.map((f) => ({ path: f.path.slice(prefix.length), sha256: f.sha256 })));
|
|
54
|
+
}
|
|
33
55
|
/**
|
|
34
56
|
* The item's latest version row; item missing, deleted or (when `includeDisabled` is false)
|
|
35
57
|
* disabled -> `catalog.item_not_found`.
|
|
@@ -39,13 +61,13 @@ async function latestVersionRow(db, itemId, includeDisabled) {
|
|
|
39
61
|
throw itemNotFound();
|
|
40
62
|
const item = await db
|
|
41
63
|
.selectFrom("catalog_items")
|
|
42
|
-
.select(["latest_version", "
|
|
64
|
+
.select(["latest_version", "disabled"])
|
|
43
65
|
.where("id", "=", itemId)
|
|
44
66
|
.where("deleted_at", "is", null)
|
|
45
67
|
.executeTakeFirst();
|
|
46
68
|
// An item the caller cannot see is "not found" before any version / storage is read, so "no icon"
|
|
47
69
|
// never reveals that it exists
|
|
48
|
-
if (!item || (!includeDisabled && item.
|
|
70
|
+
if (!item || (!includeDisabled && item.disabled))
|
|
49
71
|
throw itemNotFound();
|
|
50
72
|
const v = await db
|
|
51
73
|
.selectFrom("catalog_item_versions")
|
|
@@ -80,13 +102,13 @@ export async function catalogHasIcon(db, itemId) {
|
|
|
80
102
|
* storage); no icon -> `catalog.icon_not_found`; stored content that is not a valid svg / png
|
|
81
103
|
* (checked at import, this guards against tampered storage) -> `internal`.
|
|
82
104
|
*/
|
|
83
|
-
export async function readCatalogIcon(db,
|
|
84
|
-
const {
|
|
105
|
+
export async function readCatalogIcon(db, itemId, includeDisabled) {
|
|
106
|
+
const { v } = await latestVersionRow(db, itemId, includeDisabled);
|
|
85
107
|
const path = iconPath(v);
|
|
86
108
|
const f = path === undefined ? undefined : v.files.find((x) => x.path === path);
|
|
87
109
|
if (path === undefined || !f)
|
|
88
110
|
throw iconNotFound();
|
|
89
|
-
const [file] = await
|
|
111
|
+
const [file] = await readCatalogDisplayFiles(db, [f]);
|
|
90
112
|
if (!file)
|
|
91
113
|
throw iconNotFound();
|
|
92
114
|
const problem = iconProblem(path, file.data);
|
|
@@ -95,7 +117,6 @@ export async function readCatalogIcon(db, storage, itemId, includeDisabled) {
|
|
|
95
117
|
return {
|
|
96
118
|
data: file.data,
|
|
97
119
|
contentType: /\.svg$/i.test(path) ? "image/svg+xml" : "image/png",
|
|
98
|
-
policy: item.policy,
|
|
99
120
|
};
|
|
100
121
|
}
|
|
101
122
|
const UUID_RE = /^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/i;
|
|
@@ -118,8 +139,16 @@ export function requiredActions(m) {
|
|
|
118
139
|
out.push("agents.manage");
|
|
119
140
|
return out.length > 0 ? out : ["org.extensions.manage"];
|
|
120
141
|
}
|
|
121
|
-
/**
|
|
142
|
+
/**
|
|
143
|
+
* Locks the org row in the caller's transaction (`orgLock` joins it) and re-checks the actor can do
|
|
144
|
+
* every action (else `forbidden`). `actor` null is the kernel itself (the plugin scope sync): the
|
|
145
|
+
* lock only.
|
|
146
|
+
*/
|
|
122
147
|
export async function lockOrgForActions(orgLock, orgId, actor, actions) {
|
|
148
|
+
if (actor === null) {
|
|
149
|
+
await orgLock.lock(orgId);
|
|
150
|
+
return;
|
|
151
|
+
}
|
|
123
152
|
const [first, ...rest] = actions;
|
|
124
153
|
const { role } = await orgLock.lockAndAuthorize(orgId, actor, first);
|
|
125
154
|
for (const a of rest) {
|
|
@@ -174,12 +203,12 @@ export function findConnectorIn(registry, plugin, kind) {
|
|
|
174
203
|
*/
|
|
175
204
|
export function templatePluginProblem(d, template) {
|
|
176
205
|
if (!d.findConnector(template.plugin, template.connector)) {
|
|
177
|
-
return `Connector extension ${template.plugin} providing "${template.connector}" is not deployed; ask the
|
|
206
|
+
return `Connector extension ${template.plugin} providing "${template.connector}" is not deployed; ask the super admin to install and enable it`;
|
|
178
207
|
}
|
|
179
208
|
const range = template.pluginVersion;
|
|
180
209
|
const version = d.pluginVersion(template.plugin);
|
|
181
210
|
if (range !== undefined && version !== undefined && !satisfiesRange(version, range)) {
|
|
182
|
-
return `Connector extension ${template.plugin} is deployed at version ${version}, but the template needs ${range}; ask the
|
|
211
|
+
return `Connector extension ${template.plugin} is deployed at version ${version}, but the template needs ${range}; ask the super admin to upgrade it`;
|
|
183
212
|
}
|
|
184
213
|
return undefined;
|
|
185
214
|
}
|
|
@@ -266,6 +295,20 @@ export async function readCatalogFiles(storage, objectPrefix, files, under) {
|
|
|
266
295
|
}
|
|
267
296
|
return out;
|
|
268
297
|
}
|
|
298
|
+
/**
|
|
299
|
+
* Reads a version's display files (icons, setup guide files; `catalog-files.ts`) from PG, sha256
|
|
300
|
+
* checked, in the order given; no object storage is involved. A listed file missing from PG is lost
|
|
301
|
+
* or tampered data (`internal`).
|
|
302
|
+
*/
|
|
303
|
+
export async function readCatalogDisplayFiles(db, files) {
|
|
304
|
+
const stored = await readDisplayFiles(db, files);
|
|
305
|
+
return files.map((f) => {
|
|
306
|
+
const got = stored.get(f.path);
|
|
307
|
+
if (!got)
|
|
308
|
+
throw new ApiError("internal", `Catalog file ${f.path} is not stored`);
|
|
309
|
+
return got;
|
|
310
|
+
});
|
|
311
|
+
}
|
|
269
312
|
/** 校验技能文件并取名字与描述(导入时已校验过;这里防存储被改)。 */
|
|
270
313
|
export function skillOf(files) {
|
|
271
314
|
try {
|
|
@@ -318,6 +361,71 @@ export async function readCatalogAgentTemplates(storage, v) {
|
|
|
318
361
|
if (!parsed || "errors" in parsed) {
|
|
319
362
|
throw new ApiError("internal", `Stored agent template ${path} is missing or invalid`);
|
|
320
363
|
}
|
|
321
|
-
|
|
364
|
+
// an rc package's template may name old builtins: read as the current names (tool naming
|
|
365
|
+
// spec §8.3); rc `<x>__<tool>` keys are read with the org's scope by `loadTemplates`
|
|
366
|
+
return { path, template: normalizeToolKeys(parsed.template) };
|
|
322
367
|
});
|
|
323
368
|
}
|
|
369
|
+
/** The asset paths a parsed theme references (fonts, logo mark and favicon), without `./`. */
|
|
370
|
+
export function themeAssetPaths(theme) {
|
|
371
|
+
const refs = (theme.fonts ?? []).map((f) => f.file);
|
|
372
|
+
for (const ref of [theme.logo?.mark, theme.logo?.favicon])
|
|
373
|
+
if (ref !== undefined)
|
|
374
|
+
refs.push(ref);
|
|
375
|
+
return [...new Set(refs.map((r) => packagePath(r)))];
|
|
376
|
+
}
|
|
377
|
+
/**
|
|
378
|
+
* The digest of a theme's assets as recorded on a catalog version (`files`): equal digests = the
|
|
379
|
+
* same fonts and logo. With the canonical definition it decides whether a theme changed.
|
|
380
|
+
*/
|
|
381
|
+
export function themeAssetsDigest(files, theme) {
|
|
382
|
+
const paths = new Set(themeAssetPaths(theme));
|
|
383
|
+
return skillFilesDigest(files.filter((f) => paths.has(f.path)));
|
|
384
|
+
}
|
|
385
|
+
/**
|
|
386
|
+
* The themes of a catalog version (`manifest.themes`, listed explicitly since import), parsed from
|
|
387
|
+
* storage and their assets checked again (checked at import; again in case storage was changed).
|
|
388
|
+
* Grammar and token names are checked again (a token renamed in core stays loud, themes spec
|
|
389
|
+
* §4.1), but not readability: the version passed it at import, and a later change of the built-in
|
|
390
|
+
* tokens must not block an update or a rollback to it. A theme that fails -> 400 `theme.invalid`
|
|
391
|
+
* as at import (themes spec §6: a failing new version blocks the plugin update with the same
|
|
392
|
+
* refusal).
|
|
393
|
+
*/
|
|
394
|
+
export async function readCatalogThemes(storage, v) {
|
|
395
|
+
const refs = v.manifest.themes ?? [];
|
|
396
|
+
if (refs.length === 0)
|
|
397
|
+
return [];
|
|
398
|
+
const read = async (paths) => (await readCatalogFiles(storage, v.object_prefix, v.files.filter((f) => paths.includes(f.path)))).map((f) => [f.path, f.data]);
|
|
399
|
+
const paths = refs.map((r) => packagePath(r.path));
|
|
400
|
+
const texts = new Map(await read(paths));
|
|
401
|
+
const parsed = paths.map((path) => {
|
|
402
|
+
const id = themeIdOf(path);
|
|
403
|
+
const data = texts.get(path);
|
|
404
|
+
if (data === undefined)
|
|
405
|
+
throw new ApiError("internal", `Stored theme ${path} is missing`);
|
|
406
|
+
const r = parseThemeFile(id, new TextDecoder().decode(data), { readability: false });
|
|
407
|
+
if ("errors" in r)
|
|
408
|
+
throw themeApiError(pluginThemeError([{ theme: id, problems: r.errors }]));
|
|
409
|
+
return { id, path, theme: r };
|
|
410
|
+
});
|
|
411
|
+
const files = new Map(await read([...new Set(parsed.flatMap((t) => themeAssetPaths(t.theme)))]));
|
|
412
|
+
const out = [];
|
|
413
|
+
for (const { id, path, theme } of parsed) {
|
|
414
|
+
const { assets, errors } = validateThemeAssets(theme, files);
|
|
415
|
+
if (errors.length > 0)
|
|
416
|
+
throw themeApiError(pluginThemeError([{ theme: id, problems: errors }]));
|
|
417
|
+
out.push({
|
|
418
|
+
id,
|
|
419
|
+
path,
|
|
420
|
+
theme,
|
|
421
|
+
assets: [...assets].map(([p, bytes]) => ({
|
|
422
|
+
path: p,
|
|
423
|
+
size: bytes.byteLength,
|
|
424
|
+
sha256: createHash("sha256").update(bytes).digest("hex"),
|
|
425
|
+
data: bytes,
|
|
426
|
+
})),
|
|
427
|
+
assetsDigest: themeAssetsDigest(v.files, theme),
|
|
428
|
+
});
|
|
429
|
+
}
|
|
430
|
+
return out;
|
|
431
|
+
}
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
import { type PluginManifest } from "@capybara-hq/plugin-sdk";
|
|
2
|
+
import type { KernelSchemaDb } from "../db/kernel-schema.js";
|
|
3
|
+
type Db = Pick<KernelSchemaDb, "selectFrom" | "insertInto" | "deleteFrom">;
|
|
4
|
+
/** A stored file as a version row lists it. */
|
|
5
|
+
interface FileMeta {
|
|
6
|
+
path: string;
|
|
7
|
+
size: number;
|
|
8
|
+
sha256: string;
|
|
9
|
+
}
|
|
10
|
+
/**
|
|
11
|
+
* The display file paths of a plugin (package paths): the plugin icon, the connector templates'
|
|
12
|
+
* icons (given by the caller, which parsed the templates) and the setup guide documents (both
|
|
13
|
+
* languages; the caller keeps the ones the package has).
|
|
14
|
+
*/
|
|
15
|
+
export declare function displayFilePaths(m: PluginManifest, templateIcons?: string[]): Set<string>;
|
|
16
|
+
/**
|
|
17
|
+
* Stores display files (one row per sha256; a file already there gets its `touched_at` renewed, so
|
|
18
|
+
* the sweep never removes the bytes of an import in progress). Runs in the caller's transaction
|
|
19
|
+
* when there is one: the staging row that lists the files commits with them.
|
|
20
|
+
*/
|
|
21
|
+
export declare function putDisplayFiles(db: Db, files: {
|
|
22
|
+
sha256: string;
|
|
23
|
+
data: Uint8Array;
|
|
24
|
+
}[]): Promise<void>;
|
|
25
|
+
/**
|
|
26
|
+
* The display files of `files` found in PG, by path, each checked against its recorded sha256 (a
|
|
27
|
+
* mismatch is tampering: `internal`). Files not in PG are absent from the result.
|
|
28
|
+
*/
|
|
29
|
+
export declare function readDisplayFiles(db: Db, files: FileMeta[]): Promise<Map<string, {
|
|
30
|
+
path: string;
|
|
31
|
+
size: number;
|
|
32
|
+
sha256: string;
|
|
33
|
+
data: Uint8Array;
|
|
34
|
+
}>>;
|
|
35
|
+
/**
|
|
36
|
+
* Removes display files no catalog version and no import staging lists, last stored more than
|
|
37
|
+
* `olderThanMs` ago (the staging cleanup passes the staging TTL: an import storing a file renews
|
|
38
|
+
* it, and a concurrent renewal makes the row fail the age check when the delete re-reads it).
|
|
39
|
+
* Returns the rows removed.
|
|
40
|
+
*/
|
|
41
|
+
export declare function sweepDisplayFiles(db: Db, olderThanMs: number): Promise<number>;
|
|
42
|
+
export {};
|
|
@@ -0,0 +1,89 @@
|
|
|
1
|
+
// Catalog display files in PG (`catalog_files`, migration 0100): a plugin's icon, its connector
|
|
2
|
+
// templates' icons and its setup guide documents. They are small (64 KiB each at most, by the plugin
|
|
3
|
+
// format) and must be readable without object storage: a bootstrap plugin is imported before any
|
|
4
|
+
// object-store extension runs, and the object-store plugin's own icon can never wait for itself.
|
|
5
|
+
// Skills, connector templates and agent templates stay in object storage under the version's
|
|
6
|
+
// `object_prefix` (they are copied into platform components there).
|
|
7
|
+
import { createHash } from "node:crypto";
|
|
8
|
+
import { setupGuideDocPath } from "@capybara-hq/plugin-sdk";
|
|
9
|
+
import { sql } from "kysely";
|
|
10
|
+
import { ApiError } from "../errors.js";
|
|
11
|
+
import { packagePath } from "../packages/tgz.js";
|
|
12
|
+
/**
|
|
13
|
+
* The display file paths of a plugin (package paths): the plugin icon, the connector templates'
|
|
14
|
+
* icons (given by the caller, which parsed the templates) and the setup guide documents (both
|
|
15
|
+
* languages; the caller keeps the ones the package has).
|
|
16
|
+
*/
|
|
17
|
+
export function displayFilePaths(m, templateIcons = []) {
|
|
18
|
+
const out = new Set();
|
|
19
|
+
if (m.icon !== undefined)
|
|
20
|
+
out.add(packagePath(m.icon));
|
|
21
|
+
for (const icon of templateIcons)
|
|
22
|
+
out.add(packagePath(icon));
|
|
23
|
+
for (const g of m.setupGuides ?? []) {
|
|
24
|
+
out.add(setupGuideDocPath(g.id, "en"));
|
|
25
|
+
out.add(setupGuideDocPath(g.id, "zh"));
|
|
26
|
+
}
|
|
27
|
+
return out;
|
|
28
|
+
}
|
|
29
|
+
/**
|
|
30
|
+
* Stores display files (one row per sha256; a file already there gets its `touched_at` renewed, so
|
|
31
|
+
* the sweep never removes the bytes of an import in progress). Runs in the caller's transaction
|
|
32
|
+
* when there is one: the staging row that lists the files commits with them.
|
|
33
|
+
*/
|
|
34
|
+
export async function putDisplayFiles(db, files) {
|
|
35
|
+
const unique = new Map(files.map((f) => [f.sha256, f.data]));
|
|
36
|
+
// sorted: two imports storing overlapping sets lock the rows in the same order
|
|
37
|
+
for (const sha256 of [...unique.keys()].sort()) {
|
|
38
|
+
const data = unique.get(sha256);
|
|
39
|
+
await db
|
|
40
|
+
.insertInto("catalog_files")
|
|
41
|
+
.values({ sha256, data: Buffer.from(data) })
|
|
42
|
+
.onConflict((oc) => oc.column("sha256").doUpdateSet({ touched_at: sql `now()` }))
|
|
43
|
+
.execute();
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
/**
|
|
47
|
+
* The display files of `files` found in PG, by path, each checked against its recorded sha256 (a
|
|
48
|
+
* mismatch is tampering: `internal`). Files not in PG are absent from the result.
|
|
49
|
+
*/
|
|
50
|
+
export async function readDisplayFiles(db, files) {
|
|
51
|
+
const out = new Map();
|
|
52
|
+
if (files.length === 0)
|
|
53
|
+
return out;
|
|
54
|
+
const rows = await db
|
|
55
|
+
.selectFrom("catalog_files")
|
|
56
|
+
.select(["sha256", "data"])
|
|
57
|
+
.where("sha256", "in", [...new Set(files.map((f) => f.sha256))])
|
|
58
|
+
.execute();
|
|
59
|
+
const bySha = new Map(rows.map((r) => [r.sha256, new Uint8Array(r.data)]));
|
|
60
|
+
for (const f of files) {
|
|
61
|
+
const data = bySha.get(f.sha256);
|
|
62
|
+
if (data === undefined)
|
|
63
|
+
continue;
|
|
64
|
+
if (createHash("sha256").update(data).digest("hex") !== f.sha256) {
|
|
65
|
+
throw new ApiError("internal", `Catalog file ${f.path} does not match its recorded hash`);
|
|
66
|
+
}
|
|
67
|
+
out.set(f.path, { path: f.path, size: data.byteLength, sha256: f.sha256, data });
|
|
68
|
+
}
|
|
69
|
+
return out;
|
|
70
|
+
}
|
|
71
|
+
/**
|
|
72
|
+
* Removes display files no catalog version and no import staging lists, last stored more than
|
|
73
|
+
* `olderThanMs` ago (the staging cleanup passes the staging TTL: an import storing a file renews
|
|
74
|
+
* it, and a concurrent renewal makes the row fail the age check when the delete re-reads it).
|
|
75
|
+
* Returns the rows removed.
|
|
76
|
+
*/
|
|
77
|
+
export async function sweepDisplayFiles(db, olderThanMs) {
|
|
78
|
+
const r = await db
|
|
79
|
+
.deleteFrom("catalog_files as f")
|
|
80
|
+
.where("f.touched_at", "<", sql `now() - make_interval(secs => ${olderThanMs / 1000})`)
|
|
81
|
+
.where(({ not, exists, selectFrom }) => not(exists(selectFrom("catalog_item_versions as v")
|
|
82
|
+
.select(sql `1`.as("x"))
|
|
83
|
+
.where(sql `v.files @> jsonb_build_array(jsonb_build_object('sha256', f.sha256))`))))
|
|
84
|
+
.where(({ not, exists, selectFrom }) => not(exists(selectFrom("plugin_import_staging as s")
|
|
85
|
+
.select(sql `1`.as("x"))
|
|
86
|
+
.where(sql `s.manifest->'files' @> jsonb_build_array(jsonb_build_object('sha256', f.sha256))`))))
|
|
87
|
+
.executeTakeFirst();
|
|
88
|
+
return Number(r.numDeletedRows);
|
|
89
|
+
}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The platform side of the catalog: marketplaces, the one import review (prepare -> confirm), the
|
|
3
|
+
* items and their platform components. The CLI's `capybara plugins *` and `capybara bootstrap` run on this
|
|
4
|
+
* part alone.
|
|
5
|
+
*/
|
|
6
|
+
export declare class CatalogImportModule {
|
|
7
|
+
}
|