@capybara-hq/kernel 0.1.0-rc.1 → 0.1.0-rc.10
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/bootstrap.json +85 -5
- package/dist/admin/admin.controller.d.ts +52 -71
- package/dist/admin/admin.controller.js +117 -63
- package/dist/admin/admin.module.d.ts +3 -0
- package/dist/admin/admin.module.js +22 -0
- package/dist/admin/admin.schemas.d.ts +57 -0
- package/dist/admin/admin.schemas.js +50 -0
- package/dist/admin/extensions.controller.d.ts +47 -16
- package/dist/admin/extensions.controller.js +94 -23
- package/dist/admin/extensions.schemas.d.ts +7 -0
- package/dist/admin/extensions.schemas.js +10 -0
- package/dist/admin/limit-defaults.d.ts +20 -0
- package/dist/admin/limit-defaults.js +10 -0
- package/dist/admin/setup-lock.d.ts +16 -0
- package/dist/admin/setup-lock.js +47 -0
- package/dist/admin/setup.controller.d.ts +9 -9
- package/dist/admin/setup.controller.js +28 -26
- package/dist/admin/setup.service.d.ts +20 -28
- package/dist/admin/setup.service.js +65 -65
- package/dist/agents/agent-lookup.d.ts +72 -0
- package/dist/agents/agent-lookup.js +208 -0
- package/dist/agents/agent-profile.service.d.ts +31 -0
- package/dist/agents/agent-profile.service.js +122 -0
- package/dist/agents/agents.controller.d.ts +54 -169
- package/dist/agents/agents.controller.js +172 -37
- package/dist/agents/agents.module.d.ts +10 -0
- package/dist/agents/agents.module.js +71 -0
- package/dist/agents/agents.schemas.d.ts +389 -0
- package/dist/agents/agents.schemas.js +126 -0
- package/dist/agents/agents.service.d.ts +104 -76
- package/dist/agents/agents.service.js +509 -383
- package/dist/agents/definition.d.ts +133 -21
- package/dist/agents/definition.js +361 -41
- package/dist/agents/from-template.d.ts +106 -0
- package/dist/agents/from-template.js +680 -0
- package/dist/agents/from-template.service.d.ts +72 -0
- package/dist/agents/from-template.service.js +178 -0
- package/dist/agents/instruction-files.d.ts +60 -0
- package/dist/agents/instruction-files.js +111 -0
- package/dist/agents/models.controller.d.ts +44 -6
- package/dist/agents/models.controller.js +84 -8
- package/dist/agents/org-templates.d.ts +186 -0
- package/dist/agents/org-templates.js +868 -0
- package/dist/agents/pending-connector-requests.d.ts +79 -0
- package/dist/agents/pending-connector-requests.js +215 -0
- package/dist/agents/pending-connectors.controller.d.ts +39 -0
- package/dist/agents/pending-connectors.controller.js +91 -0
- package/dist/agents/pending-connectors.service.d.ts +62 -0
- package/dist/agents/pending-connectors.service.js +282 -0
- package/dist/agents/profile.d.ts +114 -0
- package/dist/agents/profile.js +55 -0
- package/dist/agents/readiness.controller.d.ts +26 -0
- package/dist/agents/readiness.controller.js +56 -0
- package/dist/agents/templates.controller.d.ts +78 -6
- package/dist/agents/templates.controller.js +154 -8
- package/dist/agents/templates.d.ts +132 -30
- package/dist/agents/templates.js +500 -46
- package/dist/agents/templates.schemas.d.ts +20 -0
- package/dist/agents/templates.schemas.js +45 -0
- package/dist/app.d.ts +93 -0
- package/dist/app.js +150 -0
- package/dist/background/background.controller.d.ts +38 -0
- package/dist/background/background.controller.js +88 -0
- package/dist/background/background.module.d.ts +10 -0
- package/dist/background/background.module.js +39 -0
- package/dist/background/background.schemas.d.ts +10 -0
- package/dist/background/background.schemas.js +16 -0
- package/dist/background/finish.d.ts +44 -0
- package/dist/background/finish.js +95 -0
- package/dist/background/launch-lock.d.ts +15 -0
- package/dist/background/launch-lock.js +40 -0
- package/dist/background/launch.d.ts +42 -0
- package/dist/background/launch.js +77 -0
- package/dist/background/poll.job.d.ts +56 -0
- package/dist/background/poll.job.js +195 -0
- package/dist/background/render.d.ts +23 -0
- package/dist/background/render.js +48 -0
- package/dist/background/session.d.ts +48 -0
- package/dist/background/session.js +80 -0
- package/dist/background/status.d.ts +35 -0
- package/dist/background/status.js +57 -0
- package/dist/background/stop.d.ts +68 -0
- package/dist/background/stop.js +244 -0
- package/dist/background/store.d.ts +167 -0
- package/dist/background/store.js +361 -0
- package/dist/background/store.module.d.ts +6 -0
- package/dist/background/store.module.js +22 -0
- package/dist/background/tasks.service.d.ts +77 -0
- package/dist/background/tasks.service.js +216 -0
- package/dist/background/wake-rules.d.ts +66 -0
- package/dist/background/wake-rules.js +113 -0
- package/dist/background/wake.d.ts +30 -0
- package/dist/background/wake.js +63 -0
- package/dist/catalog/admin-catalog.controller.d.ts +102 -52
- package/dist/catalog/admin-catalog.controller.js +222 -67
- package/dist/catalog/admin-catalog.schemas.d.ts +72 -0
- package/dist/catalog/admin-catalog.schemas.js +92 -0
- package/dist/catalog/catalog-content.d.ts +232 -0
- package/dist/catalog/catalog-content.js +367 -0
- package/dist/catalog/catalog-files.d.ts +41 -0
- package/dist/catalog/catalog-files.js +86 -0
- package/dist/catalog/catalog-import.module.d.ts +7 -0
- package/dist/catalog/catalog-import.module.js +60 -0
- package/dist/catalog/catalog-items.d.ts +290 -0
- package/dist/catalog/catalog-items.js +676 -0
- package/dist/catalog/catalog-scope.service.d.ts +260 -0
- package/dist/catalog/catalog-scope.service.js +1124 -0
- package/dist/catalog/catalog.module.d.ts +12 -0
- package/dist/catalog/catalog.module.js +81 -0
- package/dist/catalog/catalog.service.d.ts +141 -206
- package/dist/catalog/catalog.service.js +237 -528
- package/dist/catalog/claude/agents.js +15 -10
- package/dist/catalog/cli.d.ts +14 -3
- package/dist/catalog/cli.js +39 -32
- package/dist/catalog/component-promotion.d.ts +96 -0
- package/dist/catalog/component-promotion.js +395 -0
- package/dist/catalog/component-scope.controller.d.ts +90 -0
- package/dist/catalog/component-scope.controller.js +234 -0
- package/dist/catalog/component-scope.schemas.d.ts +114 -0
- package/dist/catalog/component-scope.schemas.js +97 -0
- package/dist/catalog/component-scope.service.d.ts +327 -0
- package/dist/catalog/component-scope.service.js +990 -0
- package/dist/catalog/component-state.d.ts +188 -0
- package/dist/catalog/component-state.js +455 -0
- package/dist/catalog/git-source.d.ts +9 -1
- package/dist/catalog/git-source.js +29 -2
- package/dist/catalog/job-ids.d.ts +45 -0
- package/dist/catalog/job-ids.js +40 -0
- package/dist/catalog/jobs.d.ts +27 -0
- package/dist/catalog/jobs.js +70 -0
- package/dist/catalog/locks.d.ts +24 -0
- package/dist/catalog/locks.js +63 -0
- package/dist/catalog/marketplace-fetch.d.ts +1 -1
- package/dist/catalog/marketplace-icons.d.ts +64 -0
- package/dist/catalog/marketplace-icons.js +131 -0
- package/dist/catalog/marketplaces.controller.d.ts +53 -44
- package/dist/catalog/marketplaces.controller.js +146 -51
- package/dist/catalog/marketplaces.schemas.d.ts +48 -0
- package/dist/catalog/marketplaces.schemas.js +53 -0
- package/dist/catalog/marketplaces.service.d.ts +136 -26
- package/dist/catalog/marketplaces.service.js +663 -281
- package/dist/catalog/org-catalog.controller.d.ts +115 -63
- package/dist/catalog/org-catalog.controller.js +207 -100
- package/dist/catalog/org-catalog.schemas.d.ts +88 -0
- package/dist/catalog/org-catalog.schemas.js +93 -0
- package/dist/catalog/org-catalog.service.d.ts +89 -216
- package/dist/catalog/org-catalog.service.js +431 -472
- package/dist/catalog/org-extension-switch.d.ts +41 -0
- package/dist/catalog/org-extension-switch.js +115 -0
- package/dist/catalog/org-extension.controller.d.ts +113 -0
- package/dist/catalog/org-extension.controller.js +271 -0
- package/dist/catalog/org-extension.schemas.d.ts +15 -0
- package/dist/catalog/org-extension.schemas.js +22 -0
- package/dist/catalog/org-plugin-uploads.controller.d.ts +77 -0
- package/dist/catalog/org-plugin-uploads.controller.js +200 -0
- package/dist/catalog/org-plugin-uploads.d.ts +71 -0
- package/dist/catalog/org-plugin-uploads.js +122 -0
- package/dist/catalog/org-plugin-uploads.schemas.d.ts +20 -0
- package/dist/catalog/org-plugin-uploads.schemas.js +32 -0
- package/dist/catalog/owned-items.d.ts +188 -0
- package/dist/catalog/owned-items.js +801 -0
- package/dist/catalog/owned-plugin-cleanup.d.ts +56 -0
- package/dist/catalog/owned-plugin-cleanup.js +194 -0
- package/dist/catalog/ownership.d.ts +172 -0
- package/dist/catalog/ownership.js +326 -0
- package/dist/catalog/platform-components.d.ts +223 -0
- package/dist/catalog/platform-components.js +763 -0
- package/dist/catalog/platform-migration.d.ts +115 -0
- package/dist/catalog/platform-migration.js +582 -0
- package/dist/catalog/plugin-import.d.ts +270 -68
- package/dist/catalog/plugin-import.js +1004 -277
- package/dist/catalog/plugin-install.d.ts +251 -65
- package/dist/catalog/plugin-install.js +1128 -344
- package/dist/catalog/plugin-package.js +14 -1
- package/dist/catalog/plugin-upgrade.d.ts +301 -188
- package/dist/catalog/plugin-upgrade.js +1256 -1068
- package/dist/catalog/request-rules.d.ts +65 -0
- package/dist/catalog/request-rules.js +217 -0
- package/dist/catalog/requests.service.d.ts +205 -117
- package/dist/catalog/requests.service.js +612 -369
- package/dist/catalog/reserved-names.d.ts +8 -0
- package/dist/catalog/reserved-names.js +42 -0
- package/dist/catalog/scope-orgs.d.ts +21 -0
- package/dist/catalog/scope-orgs.js +67 -0
- package/dist/catalog/scope-state.d.ts +35 -0
- package/dist/catalog/scope-state.js +87 -0
- package/dist/catalog/scope-sync-workers.d.ts +7 -0
- package/dist/catalog/scope-sync-workers.js +29 -0
- package/dist/catalog/scope-sync.d.ts +176 -0
- package/dist/catalog/scope-sync.js +576 -0
- package/dist/catalog/scope.d.ts +42 -0
- package/dist/catalog/scope.js +42 -0
- package/dist/catalog/unshare.d.ts +22 -0
- package/dist/catalog/unshare.js +118 -0
- package/dist/channels/actions.d.ts +6 -4
- package/dist/channels/actions.js +11 -4
- package/dist/channels/cards.d.ts +33 -11
- package/dist/channels/cards.js +96 -24
- package/dist/channels/channels.module.d.ts +40 -0
- package/dist/channels/channels.module.js +130 -0
- package/dist/channels/channels.schemas.d.ts +37 -0
- package/dist/channels/channels.schemas.js +38 -0
- package/dist/channels/connections.controller.d.ts +44 -37
- package/dist/channels/connections.controller.js +83 -38
- package/dist/channels/connections.service.d.ts +101 -30
- package/dist/channels/connections.service.js +380 -147
- package/dist/channels/inbound.d.ts +44 -38
- package/dist/channels/inbound.js +190 -44
- package/dist/channels/job-ids.d.ts +10 -0
- package/dist/channels/job-ids.js +10 -0
- package/dist/channels/jobs.d.ts +85 -0
- package/dist/channels/jobs.js +157 -0
- package/dist/channels/outbound.d.ts +71 -80
- package/dist/channels/outbound.js +219 -202
- package/dist/channels/phrases.d.ts +33 -2
- package/dist/channels/phrases.js +29 -1
- package/dist/channels/supervisor.d.ts +88 -46
- package/dist/channels/supervisor.js +230 -132
- package/dist/channels/threads.d.ts +34 -8
- package/dist/channels/threads.js +79 -13
- package/dist/channels/webhook.d.ts +20 -14
- package/dist/channels/webhook.js +51 -20
- package/dist/config/docs.js +5 -1
- package/dist/config/load.d.ts +3 -2
- package/dist/config/load.js +3 -2
- package/dist/config/nacos-source.js +11 -2
- package/dist/config/schema.d.ts +36 -2
- package/dist/config/schema.js +226 -25
- package/dist/conversations/access.d.ts +31 -0
- package/dist/conversations/access.js +110 -0
- package/dist/conversations/agent-tree.d.ts +46 -0
- package/dist/conversations/agent-tree.js +92 -0
- package/dist/conversations/artifacts.d.ts +11 -11
- package/dist/conversations/artifacts.js +36 -10
- package/dist/conversations/attachments.controller.d.ts +1 -1
- package/dist/conversations/attachments.controller.js +8 -6
- package/dist/conversations/attachments.module.d.ts +7 -0
- package/dist/conversations/attachments.module.js +25 -0
- package/dist/conversations/attachments.service.d.ts +60 -22
- package/dist/conversations/attachments.service.js +249 -51
- package/dist/conversations/conversations.controller.d.ts +86 -50
- package/dist/conversations/conversations.controller.js +184 -103
- package/dist/conversations/conversations.module.d.ts +8 -0
- package/dist/conversations/conversations.module.js +72 -0
- package/dist/conversations/conversations.schemas.d.ts +52 -0
- package/dist/conversations/conversations.schemas.js +79 -0
- package/dist/conversations/conversations.service.d.ts +166 -49
- package/dist/conversations/conversations.service.js +383 -179
- package/dist/conversations/environment-status.d.ts +24 -0
- package/dist/conversations/environment-status.js +71 -0
- package/dist/conversations/event-log.d.ts +64 -27
- package/dist/conversations/event-log.js +167 -31
- package/dist/conversations/events.d.ts +252 -9
- package/dist/conversations/events.js +243 -32
- package/dist/conversations/files.d.ts +10 -10
- package/dist/conversations/files.js +37 -11
- package/dist/conversations/idem-keys.d.ts +5 -0
- package/dist/conversations/idem-keys.js +5 -0
- package/dist/conversations/job-ids.d.ts +6 -0
- package/dist/conversations/job-ids.js +6 -0
- package/dist/conversations/message-context.d.ts +79 -0
- package/dist/conversations/message-context.js +145 -0
- package/dist/conversations/outputs-read.d.ts +11 -11
- package/dist/conversations/outputs-read.js +31 -7
- package/dist/conversations/queue.d.ts +53 -58
- package/dist/conversations/queue.js +37 -293
- package/dist/conversations/queue.service.d.ts +60 -0
- package/dist/conversations/queue.service.js +350 -0
- package/dist/conversations/titles.d.ts +83 -27
- package/dist/conversations/titles.js +195 -71
- package/dist/conversations/tree.d.ts +17 -0
- package/dist/conversations/tree.js +42 -0
- package/dist/ctx/bus.js +9 -3
- package/dist/ctx/create-ctx.d.ts +26 -1
- package/dist/ctx/create-ctx.js +45 -16
- package/dist/ctx/lock.d.ts +7 -3
- package/dist/ctx/lock.js +9 -20
- package/dist/ctx/secrets.d.ts +10 -2
- package/dist/ctx/secrets.js +7 -3
- package/dist/db/kernel-schema.d.ts +550 -25
- package/dist/db/pool.d.ts +10 -0
- package/dist/db/pool.js +4 -0
- package/dist/devices/device-auth.controller.d.ts +42 -0
- package/dist/devices/device-auth.controller.js +116 -0
- package/dist/devices/device-auth.d.ts +119 -0
- package/dist/devices/device-auth.js +403 -0
- package/dist/devices/device-auth.module.d.ts +7 -0
- package/dist/devices/device-auth.module.js +25 -0
- package/dist/devices/device-gateway.d.ts +128 -0
- package/dist/devices/device-gateway.js +530 -0
- package/dist/devices/device-provider.d.ts +89 -0
- package/dist/devices/device-provider.js +151 -0
- package/dist/devices/device-routes.d.ts +36 -0
- package/dist/devices/device-routes.js +90 -0
- package/dist/devices/devices.module.d.ts +16 -0
- package/dist/devices/devices.module.js +44 -0
- package/dist/devices/dto.d.ts +66 -0
- package/dist/devices/dto.js +44 -0
- package/dist/devices/keys.d.ts +25 -0
- package/dist/devices/keys.js +25 -0
- package/dist/devices/machines.d.ts +118 -0
- package/dist/devices/machines.js +366 -0
- package/dist/devices/relay.d.ts +100 -0
- package/dist/devices/relay.js +373 -0
- package/dist/devices/targets.d.ts +28 -0
- package/dist/devices/targets.js +73 -0
- package/dist/environments/access.d.ts +66 -0
- package/dist/environments/access.js +113 -0
- package/dist/environments/conversation-environments.d.ts +75 -0
- package/dist/environments/conversation-environments.js +231 -0
- package/dist/environments/dto.d.ts +25 -0
- package/dist/environments/dto.js +12 -0
- package/dist/environments/environments.controller.d.ts +36 -0
- package/dist/environments/environments.controller.js +124 -0
- package/dist/environments/environments.module.d.ts +8 -0
- package/dist/environments/environments.module.js +31 -0
- package/dist/environments/environments.schemas.d.ts +3 -0
- package/dist/environments/environments.schemas.js +14 -0
- package/dist/environments/environments.service.d.ts +251 -0
- package/dist/environments/environments.service.js +791 -0
- package/dist/environments/label.d.ts +11 -0
- package/dist/environments/label.js +25 -0
- package/dist/environments/legacy-cleanup.job.d.ts +34 -0
- package/dist/environments/legacy-cleanup.job.js +141 -0
- package/dist/errors.d.ts +135 -2
- package/dist/errors.js +135 -2
- package/dist/evals/budget.d.ts +42 -21
- package/dist/evals/budget.js +114 -62
- package/dist/evals/evals.module.d.ts +31 -0
- package/dist/evals/evals.module.js +114 -0
- package/dist/evals/evals.schemas.d.ts +110 -0
- package/dist/evals/evals.schemas.js +107 -0
- package/dist/evals/jobs.d.ts +20 -0
- package/dist/evals/jobs.js +45 -0
- package/dist/evals/reconstruct.d.ts +18 -9
- package/dist/evals/reconstruct.js +36 -10
- package/dist/evals/recorded-tools.d.ts +37 -1
- package/dist/evals/recorded-tools.js +120 -10
- package/dist/evals/run-replay.d.ts +75 -10
- package/dist/evals/run-replay.js +218 -94
- package/dist/evals/runs.controller.d.ts +3 -58
- package/dist/evals/runs.controller.js +18 -50
- package/dist/evals/runs.service.d.ts +31 -52
- package/dist/evals/runs.service.js +281 -255
- package/dist/evals/sets.controller.d.ts +3 -29
- package/dist/evals/sets.controller.js +18 -39
- package/dist/evals/sets.service.d.ts +29 -13
- package/dist/evals/sets.service.js +262 -202
- package/dist/evals/snapshot.d.ts +5 -4
- package/dist/evals/snapshot.js +17 -4
- package/dist/evals/step-replay.d.ts +6 -8
- package/dist/evals/step-replay.js +17 -10
- package/dist/evals/trajectory.controller.d.ts +1 -1
- package/dist/evals/trajectory.controller.js +11 -7
- package/dist/evals/trajectory.d.ts +2 -2
- package/dist/evals/trajectory.js +1 -1
- package/dist/evals/trajectory.service.d.ts +13 -7
- package/dist/evals/trajectory.service.js +56 -21
- package/dist/evals/worker.d.ts +48 -31
- package/dist/evals/worker.js +229 -124
- package/dist/extensions/admin-ops.d.ts +133 -41
- package/dist/extensions/admin-ops.js +378 -172
- package/dist/extensions/admin-view.d.ts +82 -32
- package/dist/extensions/admin-view.js +284 -71
- package/dist/extensions/approvals.d.ts +24 -10
- package/dist/extensions/approvals.js +73 -46
- package/dist/extensions/blobs.d.ts +27 -10
- package/dist/extensions/blobs.js +112 -45
- package/dist/extensions/bootstrap.d.ts +99 -36
- package/dist/extensions/bootstrap.js +290 -134
- package/dist/extensions/cli.d.ts +32 -10
- package/dist/extensions/cli.js +52 -98
- package/dist/extensions/config-hash.d.ts +10 -0
- package/dist/extensions/config-hash.js +38 -0
- package/dist/extensions/config-issues.d.ts +19 -0
- package/dist/extensions/config-issues.js +48 -0
- package/dist/extensions/config-json-schema.d.ts +43 -7
- package/dist/extensions/config-json-schema.js +124 -58
- package/dist/extensions/deployment-config-store.d.ts +55 -0
- package/dist/extensions/deployment-config-store.js +133 -0
- package/dist/extensions/deployment-config.d.ts +146 -70
- package/dist/extensions/deployment-config.js +439 -246
- package/dist/extensions/display-name.d.ts +22 -0
- package/dist/extensions/display-name.js +77 -0
- package/dist/extensions/effective-config.d.ts +127 -0
- package/dist/extensions/effective-config.js +368 -0
- package/dist/extensions/enabled.d.ts +5 -5
- package/dist/extensions/extensions.module.d.ts +8 -0
- package/dist/extensions/extensions.module.js +96 -0
- package/dist/extensions/hooks.d.ts +40 -6
- package/dist/extensions/hooks.js +83 -17
- package/dist/extensions/host.d.ts +161 -80
- package/dist/extensions/host.js +505 -213
- package/dist/extensions/installs.d.ts +73 -19
- package/dist/extensions/installs.js +174 -37
- package/dist/extensions/job-ids.d.ts +6 -0
- package/dist/extensions/job-ids.js +6 -0
- package/dist/extensions/lifecycle-topics.d.ts +18 -0
- package/dist/extensions/lifecycle-topics.js +18 -0
- package/dist/extensions/lifecycle.d.ts +35 -47
- package/dist/extensions/lifecycle.js +103 -39
- package/dist/extensions/locks.d.ts +45 -0
- package/dist/extensions/locks.js +112 -0
- package/dist/extensions/migrate-lock.d.ts +3 -4
- package/dist/extensions/org-config.d.ts +141 -49
- package/dist/extensions/org-config.js +471 -243
- package/dist/extensions/org-levels.d.ts +37 -0
- package/dist/extensions/org-levels.js +71 -0
- package/dist/extensions/org-overrides.d.ts +151 -0
- package/dist/extensions/org-overrides.js +524 -0
- package/dist/extensions/package.d.ts +14 -1
- package/dist/extensions/package.js +51 -2
- package/dist/extensions/permission-view.d.ts +59 -6
- package/dist/extensions/permission-view.js +7 -5
- package/dist/extensions/plugin-guides.d.ts +129 -0
- package/dist/extensions/plugin-guides.js +283 -0
- package/dist/extensions/plugin-icons.d.ts +54 -0
- package/dist/extensions/plugin-icons.js +125 -0
- package/dist/extensions/plugin-items.d.ts +21 -0
- package/dist/extensions/plugin-items.js +42 -0
- package/dist/extensions/point-defaults.controller.d.ts +28 -0
- package/dist/extensions/point-defaults.controller.js +69 -0
- package/dist/extensions/point-defaults.d.ts +73 -0
- package/dist/extensions/point-defaults.js +236 -0
- package/dist/extensions/point-defaults.schemas.d.ts +9 -0
- package/dist/extensions/point-defaults.schemas.js +14 -0
- package/dist/extensions/registry.d.ts +50 -2
- package/dist/extensions/registry.js +91 -4
- package/dist/extensions/resolve.d.ts +51 -1
- package/dist/extensions/resolve.js +85 -3
- package/dist/extensions/single-provider.d.ts +92 -0
- package/dist/extensions/single-provider.js +180 -0
- package/dist/extensions/sources.d.ts +19 -10
- package/dist/extensions/sources.js +34 -13
- package/dist/extensions/state.module.d.ts +9 -0
- package/dist/extensions/state.module.js +38 -0
- package/dist/extensions/unavailable.d.ts +50 -0
- package/dist/extensions/unavailable.js +115 -0
- package/dist/files/files.module.d.ts +3 -0
- package/dist/files/files.module.js +22 -0
- package/dist/files/previewers.controller.d.ts +7 -2
- package/dist/files/previewers.controller.js +19 -12
- package/dist/files/previewers.d.ts +21 -19
- package/dist/files/previewers.js +114 -38
- package/dist/files/previewers.schemas.d.ts +10 -0
- package/dist/files/previewers.schemas.js +9 -0
- package/dist/http/adapter.d.ts +3 -0
- package/dist/http/adapter.js +25 -0
- package/dist/http/api.module.d.ts +3 -110
- package/dist/http/api.module.js +86 -358
- package/dist/http/app.d.ts +22 -17
- package/dist/http/app.js +46 -65
- package/dist/http/error-filter.module.d.ts +5 -0
- package/dist/http/error-filter.module.js +18 -0
- package/dist/http/error.filter.js +2 -2
- package/dist/http/{gateway.module.d.ts → gateway-routes.d.ts} +7 -3
- package/dist/http/gateway-routes.js +16 -0
- package/dist/http/nest-logger.d.ts +6 -5
- package/dist/http/nest-logger.js +24 -10
- package/dist/http/plugin-dispatch.d.ts +4 -1
- package/dist/http/plugin-dispatch.js +14 -2
- package/dist/identity/accounts.d.ts +130 -38
- package/dist/identity/accounts.js +373 -186
- package/dist/identity/api-tokens.d.ts +11 -7
- package/dist/identity/api-tokens.js +71 -44
- package/dist/identity/audit.d.ts +9 -5
- package/dist/identity/audit.js +5 -1
- package/dist/identity/auth.controller.d.ts +11 -10
- package/dist/identity/auth.controller.js +40 -30
- package/dist/identity/auth.guard.d.ts +16 -8
- package/dist/identity/auth.guard.js +41 -13
- package/dist/identity/binding.d.ts +9 -11
- package/dist/identity/binding.js +41 -13
- package/dist/identity/cookies.d.ts +26 -5
- package/dist/identity/cookies.js +58 -6
- package/dist/identity/external-identity-lock.d.ts +17 -0
- package/dist/identity/external-identity-lock.js +39 -0
- package/dist/identity/external.d.ts +19 -15
- package/dist/identity/external.js +163 -125
- package/dist/identity/identity.module.d.ts +6 -0
- package/dist/identity/identity.module.js +59 -0
- package/dist/identity/initial-passwords.controller.d.ts +22 -0
- package/dist/identity/initial-passwords.controller.js +49 -0
- package/dist/identity/initial-passwords.d.ts +61 -0
- package/dist/identity/initial-passwords.job.d.ts +16 -0
- package/dist/identity/initial-passwords.job.js +46 -0
- package/dist/identity/initial-passwords.js +159 -0
- package/dist/identity/me.controller.d.ts +32 -15
- package/dist/identity/me.controller.js +78 -33
- package/dist/identity/me.schemas.d.ts +14 -0
- package/dist/identity/me.schemas.js +17 -0
- package/dist/identity/principal.d.ts +11 -3
- package/dist/identity/principal.js +11 -3
- package/dist/identity/sessions.d.ts +24 -10
- package/dist/identity/sessions.js +119 -42
- package/dist/identity/settings.d.ts +42 -23
- package/dist/identity/settings.js +137 -72
- package/dist/identity/sso.controller.d.ts +7 -7
- package/dist/identity/sso.controller.js +13 -9
- package/dist/identity/sso.d.ts +9 -12
- package/dist/identity/sso.js +54 -24
- package/dist/identity/super-admin.d.ts +20 -0
- package/dist/identity/super-admin.js +81 -0
- package/dist/inbox/inbox.module.d.ts +6 -0
- package/dist/inbox/inbox.module.js +26 -0
- package/dist/inbox/inbox.schemas.d.ts +8 -0
- package/dist/inbox/inbox.schemas.js +11 -0
- package/dist/inbox/inbox.service.d.ts +68 -11
- package/dist/inbox/inbox.service.js +104 -13
- package/dist/inbox/org-notices.d.ts +63 -0
- package/dist/inbox/org-notices.js +91 -0
- package/dist/inbox/platform-inbox.controller.d.ts +23 -0
- package/dist/inbox/platform-inbox.controller.js +58 -0
- package/dist/inbox/platform-inbox.service.d.ts +151 -0
- package/dist/inbox/platform-inbox.service.js +263 -0
- package/dist/inbox/platform-notices.d.ts +19 -0
- package/dist/inbox/platform-notices.js +9 -0
- package/dist/index.d.ts +22 -13
- package/dist/index.js +16 -7
- package/dist/infra/cache/cache.module.d.ts +3 -0
- package/dist/infra/cache/cache.module.js +16 -0
- package/dist/infra/cache/cache.service.d.ts +21 -0
- package/dist/infra/cache/cache.service.js +80 -0
- package/dist/infra/cache/cacheable.decorator.d.ts +32 -0
- package/dist/infra/cache/cacheable.decorator.js +83 -0
- package/dist/infra/cli/kernel-cli.module.d.ts +66 -0
- package/dist/infra/cli/kernel-cli.module.js +173 -0
- package/dist/infra/close-within.d.ts +15 -0
- package/dist/infra/close-within.js +36 -0
- package/dist/infra/config/config.module.d.ts +13 -0
- package/dist/infra/config/config.module.js +39 -0
- package/dist/infra/config/kernel-config.service.d.ts +25 -0
- package/dist/infra/config/kernel-config.service.js +157 -0
- package/dist/infra/database/after-commit.d.ts +6 -0
- package/dist/infra/database/after-commit.js +9 -0
- package/dist/infra/database/database.module.d.ts +25 -0
- package/dist/infra/database/database.module.js +91 -0
- package/dist/infra/database/kernel-db.d.ts +22 -0
- package/dist/infra/database/kernel-db.js +65 -0
- package/dist/infra/database/transaction-host.d.ts +50 -0
- package/dist/infra/database/transaction-host.js +125 -0
- package/dist/infra/database/transactional.decorator.d.ts +15 -0
- package/dist/infra/database/transactional.decorator.js +27 -0
- package/dist/infra/database/xact-lock.d.ts +17 -0
- package/dist/infra/database/xact-lock.js +43 -0
- package/dist/infra/events/kernel-events.d.ts +121 -0
- package/dist/infra/events/kernel-events.js +65 -0
- package/dist/infra/health/health.controller.d.ts +26 -0
- package/dist/infra/health/health.controller.js +104 -0
- package/dist/infra/health/health.module.d.ts +9 -0
- package/dist/infra/health/health.module.js +24 -0
- package/dist/infra/health/health.options.d.ts +10 -0
- package/dist/infra/health/health.options.js +15 -0
- package/dist/infra/health/shutdown-state.d.ts +6 -0
- package/dist/infra/health/shutdown-state.js +2 -0
- package/dist/infra/lifecycle/graceful-shutdown.module.d.ts +6 -0
- package/dist/infra/lifecycle/graceful-shutdown.module.js +23 -0
- package/dist/infra/lifecycle/graceful-shutdown.service.d.ts +70 -0
- package/dist/infra/lifecycle/graceful-shutdown.service.js +135 -0
- package/dist/infra/lifecycle/process-guards.d.ts +52 -0
- package/dist/infra/lifecycle/process-guards.js +90 -0
- package/dist/infra/lifecycle/shutdown-signals.d.ts +30 -0
- package/dist/infra/lifecycle/shutdown-signals.js +48 -0
- package/dist/infra/lock/key-template.d.ts +13 -0
- package/dist/infra/lock/key-template.js +46 -0
- package/dist/infra/lock/lock.module.d.ts +3 -0
- package/dist/infra/lock/lock.module.js +16 -0
- package/dist/infra/lock/lock.service.d.ts +120 -0
- package/dist/infra/lock/lock.service.js +343 -0
- package/dist/infra/lock/shared-lease.d.ts +44 -0
- package/dist/infra/lock/shared-lease.js +121 -0
- package/dist/infra/lock/with-lock.decorator.d.ts +28 -0
- package/dist/infra/lock/with-lock.decorator.js +49 -0
- package/dist/infra/logging/logging.module.d.ts +18 -0
- package/dist/infra/logging/logging.module.js +52 -0
- package/dist/infra/queue/add-job-once.d.ts +14 -0
- package/dist/infra/queue/add-job-once.js +16 -0
- package/dist/infra/queue/configured-processor.d.ts +18 -0
- package/dist/infra/queue/configured-processor.js +23 -0
- package/dist/infra/queue/job-failure.d.ts +18 -0
- package/dist/infra/queue/job-failure.js +26 -0
- package/dist/infra/queue/queue-shutdown.d.ts +27 -0
- package/dist/infra/queue/queue-shutdown.js +81 -0
- package/dist/infra/queue/queue.module.d.ts +16 -0
- package/dist/infra/queue/queue.module.js +61 -0
- package/dist/infra/queue/redis-connection.d.ts +13 -0
- package/dist/infra/queue/redis-connection.js +25 -0
- package/dist/infra/queue/retired-schedulers.d.ts +7 -0
- package/dist/infra/queue/retired-schedulers.js +9 -0
- package/dist/infra/queue/run-job.d.ts +16 -0
- package/dist/infra/queue/run-job.js +19 -0
- package/dist/infra/redis/redis.module.d.ts +24 -0
- package/dist/infra/redis/redis.module.js +91 -0
- package/dist/infra/schedule/cron-tick.d.ts +12 -0
- package/dist/infra/schedule/cron-tick.js +25 -0
- package/dist/infra/schedule/locked-cron.decorator.d.ts +27 -0
- package/dist/infra/schedule/locked-cron.decorator.js +53 -0
- package/dist/infra/schedule/locked-interval.d.ts +69 -0
- package/dist/infra/schedule/locked-interval.js +190 -0
- package/dist/infra/schedule/locked-tick.d.ts +90 -0
- package/dist/infra/schedule/locked-tick.js +137 -0
- package/dist/infra/schedule/schedule.module.d.ts +8 -0
- package/dist/infra/schedule/schedule.module.js +27 -0
- package/dist/infra/schedule/scheduled-runs.d.ts +69 -0
- package/dist/infra/schedule/scheduled-runs.js +163 -0
- package/dist/infra/swagger/swagger.d.ts +16 -0
- package/dist/infra/swagger/swagger.js +31 -0
- package/dist/infra/throttler/credential-throttler.d.ts +35 -0
- package/dist/infra/throttler/credential-throttler.js +77 -0
- package/dist/infra/throttler/named-throttlers.d.ts +36 -0
- package/dist/infra/throttler/named-throttlers.js +157 -0
- package/dist/infra/throttler/redis-throttler-storage.d.ts +38 -0
- package/dist/infra/throttler/redis-throttler-storage.js +130 -0
- package/dist/infra/throttler/throttler.guard.d.ts +23 -0
- package/dist/infra/throttler/throttler.guard.js +68 -0
- package/dist/infra/throttler/throttler.module.d.ts +15 -0
- package/dist/infra/throttler/throttler.module.js +53 -0
- package/dist/infra/tokens.d.ts +20 -0
- package/dist/infra/tokens.js +20 -0
- package/dist/infra/validation/create-zod-dto.d.ts +23 -0
- package/dist/infra/validation/create-zod-dto.js +35 -0
- package/dist/infra/validation/parse-with-zod.d.ts +7 -0
- package/dist/infra/validation/parse-with-zod.js +12 -0
- package/dist/infra/validation/validation.module.d.ts +3 -0
- package/dist/infra/validation/validation.module.js +16 -0
- package/dist/infra/validation/zod-params.d.ts +7 -0
- package/dist/infra/validation/zod-params.js +42 -0
- package/dist/infra/validation/zod-validation.pipe.d.ts +11 -0
- package/dist/infra/validation/zod-validation.pipe.js +31 -0
- package/dist/kernel.d.ts +9 -244
- package/dist/kernel.js +8 -1305
- package/dist/kernel.module.d.ts +17 -0
- package/dist/kernel.module.js +145 -0
- package/dist/lifecycle/kernel-lifecycle.d.ts +140 -0
- package/dist/lifecycle/kernel-lifecycle.js +465 -0
- package/dist/lifecycle/tokens.d.ts +3 -0
- package/dist/lifecycle/tokens.js +3 -0
- package/dist/log-context.d.ts +2 -0
- package/dist/log-context.js +4 -0
- package/dist/log.d.ts +13 -1
- package/dist/log.js +93 -17
- package/dist/models/embeddings.d.ts +82 -0
- package/dist/models/embeddings.js +326 -0
- package/dist/models/enablement.controller.d.ts +40 -0
- package/dist/models/enablement.controller.js +74 -0
- package/dist/models/enablement.d.ts +101 -0
- package/dist/models/enablement.js +264 -0
- package/dist/models/models.module.d.ts +7 -0
- package/dist/models/models.module.js +36 -0
- package/dist/models/org-models.schemas.d.ts +8 -0
- package/dist/models/org-models.schemas.js +22 -0
- package/dist/models/prices.d.ts +13 -5
- package/dist/models/prices.js +69 -39
- package/dist/models/purposes.controller.d.ts +6 -4
- package/dist/models/purposes.controller.js +16 -11
- package/dist/models/purposes.d.ts +103 -23
- package/dist/models/purposes.js +208 -77
- package/dist/orgs/directory-sync.controller.d.ts +1 -1
- package/dist/orgs/directory-sync.controller.js +2 -2
- package/dist/orgs/directory-sync.d.ts +74 -35
- package/dist/orgs/directory-sync.js +243 -132
- package/dist/orgs/invitations.controller.d.ts +8 -8
- package/dist/orgs/invitations.controller.js +27 -26
- package/dist/orgs/invitations.service.d.ts +12 -9
- package/dist/orgs/invitations.service.js +130 -92
- package/dist/orgs/job-ids.d.ts +8 -0
- package/dist/orgs/job-ids.js +8 -0
- package/dist/orgs/members.service.d.ts +19 -12
- package/dist/orgs/members.service.js +161 -117
- package/dist/orgs/offboarding.d.ts +61 -60
- package/dist/orgs/offboarding.js +206 -95
- package/dist/orgs/org-lock.d.ts +33 -19
- package/dist/orgs/org-lock.js +94 -35
- package/dist/orgs/org.guard.d.ts +11 -1
- package/dist/orgs/org.guard.js +45 -34
- package/dist/orgs/orgs.controller.d.ts +13 -16
- package/dist/orgs/orgs.controller.js +29 -20
- package/dist/orgs/orgs.module.d.ts +6 -0
- package/dist/orgs/orgs.module.js +71 -0
- package/dist/orgs/orgs.schemas.d.ts +8 -0
- package/dist/orgs/orgs.schemas.js +16 -0
- package/dist/orgs/orgs.service.d.ts +47 -21
- package/dist/orgs/orgs.service.js +166 -91
- package/dist/orgs/roles.d.ts +1 -1
- package/dist/orgs/roles.js +5 -1
- package/dist/orgs/settings.controller.d.ts +2 -2
- package/dist/orgs/settings.controller.js +8 -6
- package/dist/orgs/settings.service.d.ts +45 -14
- package/dist/orgs/settings.service.js +110 -51
- package/dist/overrides.d.ts +63 -0
- package/dist/overrides.js +34 -0
- package/dist/platform/actor.d.ts +48 -0
- package/dist/platform/actor.js +100 -0
- package/dist/platform/agent-docs.d.ts +18 -0
- package/dist/platform/agent-docs.js +59 -0
- package/dist/platform/availability.d.ts +14 -0
- package/dist/platform/availability.js +43 -0
- package/dist/platform/errors.d.ts +28 -0
- package/dist/platform/errors.js +65 -0
- package/dist/platform/exclusions.d.ts +11 -0
- package/dist/platform/exclusions.js +667 -0
- package/dist/platform/method.d.ts +6 -0
- package/dist/platform/method.js +15 -0
- package/dist/platform/operation.d.ts +169 -0
- package/dist/platform/operation.js +90 -0
- package/dist/platform/ops/accounts.ops.d.ts +32 -0
- package/dist/platform/ops/accounts.ops.js +291 -0
- package/dist/platform/ops/admin.ops.d.ts +36 -0
- package/dist/platform/ops/admin.ops.js +389 -0
- package/dist/platform/ops/agent-skills.ops.d.ts +24 -0
- package/dist/platform/ops/agent-skills.ops.js +226 -0
- package/dist/platform/ops/agent-templates.ops.d.ts +17 -0
- package/dist/platform/ops/agent-templates.ops.js +272 -0
- package/dist/platform/ops/agents.ops.d.ts +37 -0
- package/dist/platform/ops/agents.ops.js +717 -0
- package/dist/platform/ops/approvals.ops.d.ts +30 -0
- package/dist/platform/ops/approvals.ops.js +116 -0
- package/dist/platform/ops/background.ops.d.ts +14 -0
- package/dist/platform/ops/background.ops.js +134 -0
- package/dist/platform/ops/catalog-admin.ops.d.ts +74 -0
- package/dist/platform/ops/catalog-admin.ops.js +599 -0
- package/dist/platform/ops/channels.ops.d.ts +16 -0
- package/dist/platform/ops/channels.ops.js +195 -0
- package/dist/platform/ops/components.ops.d.ts +46 -0
- package/dist/platform/ops/components.ops.js +853 -0
- package/dist/platform/ops/connectors.ops.d.ts +17 -0
- package/dist/platform/ops/connectors.ops.js +188 -0
- package/dist/platform/ops/conversations.ops.d.ts +30 -0
- package/dist/platform/ops/conversations.ops.js +470 -0
- package/dist/platform/ops/environments.ops.d.ts +26 -0
- package/dist/platform/ops/environments.ops.js +311 -0
- package/dist/platform/ops/errors.d.ts +16 -0
- package/dist/platform/ops/errors.js +30 -0
- package/dist/platform/ops/evals.ops.d.ts +28 -0
- package/dist/platform/ops/evals.ops.js +783 -0
- package/dist/platform/ops/extensions-admin.ops.d.ts +25 -0
- package/dist/platform/ops/extensions-admin.ops.js +372 -0
- package/dist/platform/ops/extensions.ops.d.ts +25 -0
- package/dist/platform/ops/extensions.ops.js +347 -0
- package/dist/platform/ops/inbox.ops.d.ts +25 -0
- package/dist/platform/ops/inbox.ops.js +378 -0
- package/dist/platform/ops/marketplaces.ops.d.ts +22 -0
- package/dist/platform/ops/marketplaces.ops.js +466 -0
- package/dist/platform/ops/models.ops.d.ts +25 -0
- package/dist/platform/ops/models.ops.js +232 -0
- package/dist/platform/ops/org-plugins.ops.d.ts +29 -0
- package/dist/platform/ops/org-plugins.ops.js +329 -0
- package/dist/platform/ops/org-settings.ops.d.ts +16 -0
- package/dist/platform/ops/org-settings.ops.js +102 -0
- package/dist/platform/ops/orgs.ops.d.ts +28 -0
- package/dist/platform/ops/orgs.ops.js +295 -0
- package/dist/platform/ops/other-orgs.d.ts +20 -0
- package/dist/platform/ops/other-orgs.js +72 -0
- package/dist/platform/ops/paging.d.ts +14 -0
- package/dist/platform/ops/paging.js +20 -0
- package/dist/platform/ops/platform.ops.d.ts +28 -0
- package/dist/platform/ops/platform.ops.js +204 -0
- package/dist/platform/ops/plugins.ops.d.ts +35 -0
- package/dist/platform/ops/plugins.ops.js +476 -0
- package/dist/platform/ops/previewers.ops.d.ts +14 -0
- package/dist/platform/ops/previewers.ops.js +109 -0
- package/dist/platform/ops/requests.ops.d.ts +14 -0
- package/dist/platform/ops/requests.ops.js +191 -0
- package/dist/platform/ops/role.d.ts +4 -0
- package/dist/platform/ops/role.js +10 -0
- package/dist/platform/ops/skills.ops.d.ts +17 -0
- package/dist/platform/ops/skills.ops.js +216 -0
- package/dist/platform/ops/summary.d.ts +10 -0
- package/dist/platform/ops/summary.js +18 -0
- package/dist/platform/ops/unavailable.d.ts +23 -0
- package/dist/platform/ops/unavailable.js +118 -0
- package/dist/platform/parity.d.ts +33 -0
- package/dist/platform/parity.js +272 -0
- package/dist/platform/platform-ops.module.d.ts +39 -0
- package/dist/platform/platform-ops.module.js +122 -0
- package/dist/platform/platform.module.d.ts +8 -0
- package/dist/platform/platform.module.js +25 -0
- package/dist/platform/registry.d.ts +30 -0
- package/dist/platform/registry.js +111 -0
- package/dist/platform/route-schemas.d.ts +18 -0
- package/dist/platform/route-schemas.js +63 -0
- package/dist/roles/gateway-role.d.ts +54 -0
- package/dist/roles/gateway-role.js +118 -0
- package/dist/roles/gateway.module.d.ts +9 -0
- package/dist/roles/gateway.module.js +31 -0
- package/dist/roles/worker-role.d.ts +65 -0
- package/dist/roles/worker-role.js +151 -0
- package/dist/roles/worker.module.d.ts +14 -0
- package/dist/roles/worker.module.js +106 -0
- package/dist/runtime/abort.js +19 -2
- package/dist/runtime/checkpointer.d.ts +8 -3
- package/dist/runtime/checkpointer.js +87 -55
- package/dist/runtime/context/build.d.ts +21 -13
- package/dist/runtime/context/build.js +106 -29
- package/dist/runtime/context/claude-tools.d.ts +4 -1
- package/dist/runtime/context/claude-tools.js +13 -12
- package/dist/runtime/context/compaction.js +24 -1
- package/dist/runtime/context/environment-paths.d.ts +40 -0
- package/dist/runtime/context/environment-paths.js +48 -0
- package/dist/runtime/context/legacy-text.d.ts +22 -0
- package/dist/runtime/context/legacy-text.js +37 -0
- package/dist/runtime/context/reminders.d.ts +2 -0
- package/dist/runtime/context/reminders.js +2 -0
- package/dist/runtime/context/run-context.d.ts +65 -0
- package/dist/runtime/context/run-context.js +215 -0
- package/dist/runtime/context/skills.d.ts +29 -11
- package/dist/runtime/context/skills.js +46 -32
- package/dist/runtime/context/tool-changes.d.ts +27 -0
- package/dist/runtime/context/tool-changes.js +60 -0
- package/dist/runtime/conversation-lock.d.ts +20 -11
- package/dist/runtime/conversation-lock.js +62 -72
- package/dist/runtime/hook-calls.d.ts +11 -4
- package/dist/runtime/hook-calls.js +41 -13
- package/dist/runtime/job-ids.d.ts +10 -0
- package/dist/runtime/job-ids.js +10 -0
- package/dist/runtime/langgraph-loop.d.ts +3 -1
- package/dist/runtime/langgraph-loop.js +37 -18
- package/dist/runtime/loop.d.ts +42 -6
- package/dist/runtime/loop.js +14 -0
- package/dist/runtime/maintenance-queue.d.ts +10 -0
- package/dist/runtime/maintenance-queue.js +10 -0
- package/dist/runtime/maintenance.d.ts +50 -74
- package/dist/runtime/maintenance.js +166 -137
- package/dist/runtime/model-call.d.ts +61 -15
- package/dist/runtime/model-call.js +128 -84
- package/dist/runtime/providers.d.ts +158 -27
- package/dist/runtime/providers.js +373 -63
- package/dist/runtime/quota.d.ts +17 -3
- package/dist/runtime/quota.js +27 -2
- package/dist/runtime/retired-schedulers.d.ts +7 -0
- package/dist/runtime/retired-schedulers.js +31 -0
- package/dist/runtime/run-context.service.d.ts +65 -0
- package/dist/runtime/run-context.service.js +236 -0
- package/dist/runtime/run-control.d.ts +43 -0
- package/dist/runtime/run-control.js +89 -0
- package/dist/runtime/run-drafts.d.ts +85 -0
- package/dist/runtime/run-drafts.js +230 -0
- package/dist/runtime/run-finish.d.ts +27 -18
- package/dist/runtime/run-finish.js +98 -51
- package/dist/runtime/run-jobs.d.ts +46 -0
- package/dist/runtime/run-jobs.js +91 -0
- package/dist/runtime/run-processors.d.ts +60 -0
- package/dist/runtime/run-processors.js +185 -0
- package/dist/runtime/run-queue.d.ts +90 -58
- package/dist/runtime/run-queue.js +566 -297
- package/dist/runtime/run-steps.d.ts +39 -0
- package/dist/runtime/run-steps.js +96 -0
- package/dist/runtime/run-worker.d.ts +134 -77
- package/dist/runtime/run-worker.js +412 -237
- package/dist/runtime/runtime.module.d.ts +10 -0
- package/dist/runtime/runtime.module.js +122 -0
- package/dist/runtime/step-log.d.ts +51 -0
- package/dist/runtime/step-log.js +111 -0
- package/dist/runtime/stream.controller.d.ts +28 -9
- package/dist/runtime/stream.controller.js +72 -13
- package/dist/runtime/stream.d.ts +27 -6
- package/dist/runtime/stream.js +102 -7
- package/dist/runtime/subagents/child.d.ts +58 -51
- package/dist/runtime/subagents/child.js +105 -86
- package/dist/runtime/subagents/definition.d.ts +32 -28
- package/dist/runtime/subagents/definition.js +89 -143
- package/dist/runtime/subagents/deliveries.d.ts +71 -0
- package/dist/runtime/subagents/deliveries.js +228 -0
- package/dist/runtime/subagents/dispatch.d.ts +197 -27
- package/dist/runtime/subagents/dispatch.js +336 -270
- package/dist/runtime/subagents/limits.d.ts +32 -8
- package/dist/runtime/subagents/limits.js +44 -8
- package/dist/runtime/subagents/messages.d.ts +95 -0
- package/dist/runtime/subagents/messages.js +328 -0
- package/dist/runtime/subagents/org-agents.d.ts +4 -4
- package/dist/runtime/subagents/org-agents.js +3 -2
- package/dist/runtime/subagents/preamble.d.ts +4 -4
- package/dist/runtime/subagents/preamble.js +9 -7
- package/dist/runtime/subagents/progress.d.ts +10 -8
- package/dist/runtime/subagents/progress.js +11 -6
- package/dist/runtime/subagents/render.d.ts +30 -0
- package/dist/runtime/subagents/render.js +53 -0
- package/dist/runtime/subagents/roster.d.ts +27 -10
- package/dist/runtime/subagents/roster.js +49 -13
- package/dist/runtime/subagents/skill-fork.d.ts +10 -10
- package/dist/runtime/subagents/skill-fork.js +23 -8
- package/dist/runtime/subagents/status.d.ts +14 -0
- package/dist/runtime/subagents/status.js +23 -0
- package/dist/runtime/subagents/subagents.service.d.ts +43 -0
- package/dist/runtime/subagents/subagents.service.js +106 -0
- package/dist/runtime/usage-report-jobs.d.ts +88 -0
- package/dist/runtime/usage-report-jobs.js +158 -0
- package/dist/runtime/usage-report.d.ts +121 -83
- package/dist/runtime/usage-report.js +355 -181
- package/dist/runtime/waits.d.ts +258 -81
- package/dist/runtime/waits.js +800 -263
- package/dist/sandbox/job-ids.d.ts +10 -0
- package/dist/sandbox/job-ids.js +10 -0
- package/dist/sandbox/jobs.d.ts +68 -0
- package/dist/sandbox/jobs.js +150 -0
- package/dist/sandbox/leases.d.ts +73 -82
- package/dist/sandbox/leases.js +162 -346
- package/dist/sandbox/providers.d.ts +46 -0
- package/dist/sandbox/providers.js +83 -0
- package/dist/sandbox/sandbox.module.d.ts +9 -0
- package/dist/sandbox/sandbox.module.js +36 -0
- package/dist/sandbox/sandbox.service.d.ts +359 -151
- package/dist/sandbox/sandbox.service.js +950 -435
- package/dist/sandbox/unreachable.d.ts +30 -0
- package/dist/sandbox/unreachable.js +108 -0
- package/dist/skills/catalog.d.ts +40 -26
- package/dist/skills/catalog.js +120 -99
- package/dist/skills/changes.controller.d.ts +11 -4
- package/dist/skills/changes.controller.js +34 -9
- package/dist/skills/changes.service.d.ts +31 -21
- package/dist/skills/changes.service.js +426 -368
- package/dist/skills/invocable.controller.d.ts +2 -2
- package/dist/skills/invocable.controller.js +10 -7
- package/dist/skills/invocation-keys.d.ts +1 -1
- package/dist/skills/invocation-keys.js +1 -1
- package/dist/skills/invoke.d.ts +19 -18
- package/dist/skills/invoke.js +68 -24
- package/dist/skills/package.d.ts +20 -1
- package/dist/skills/package.js +28 -1
- package/dist/skills/skills.controller.d.ts +33 -7
- package/dist/skills/skills.controller.js +79 -12
- package/dist/skills/skills.module.d.ts +6 -0
- package/dist/skills/skills.module.js +39 -0
- package/dist/skills/skills.schemas.d.ts +48 -0
- package/dist/skills/skills.schemas.js +61 -0
- package/dist/skills/skills.service.d.ts +151 -44
- package/dist/skills/skills.service.js +636 -204
- package/dist/skills/usable.d.ts +81 -0
- package/dist/skills/usable.js +379 -0
- package/dist/storage/job-ids.d.ts +6 -0
- package/dist/storage/job-ids.js +6 -0
- package/dist/storage/purge.d.ts +22 -7
- package/dist/storage/purge.js +55 -3
- package/dist/storage/storage.module.d.ts +6 -0
- package/dist/storage/storage.module.js +23 -0
- package/dist/storage/storage.service.d.ts +18 -4
- package/dist/storage/storage.service.js +44 -3
- package/dist/time-zone.d.ts +5 -0
- package/dist/time-zone.js +19 -0
- package/dist/tools/approvals.controller.d.ts +1 -1
- package/dist/tools/approvals.controller.js +14 -11
- package/dist/tools/approvals.schemas.d.ts +21 -0
- package/dist/tools/approvals.schemas.js +15 -0
- package/dist/tools/approvals.service.d.ts +53 -27
- package/dist/tools/approvals.service.js +365 -260
- package/dist/tools/breaker.d.ts +2 -2
- package/dist/tools/breaker.js +21 -3
- package/dist/tools/builtin-names.d.ts +109 -0
- package/dist/tools/builtin-names.js +173 -0
- package/dist/tools/builtins/agent.d.ts +27 -25
- package/dist/tools/builtins/agent.js +66 -63
- package/dist/tools/builtins/ask-user.d.ts +3 -3
- package/dist/tools/builtins/ask-user.js +3 -3
- package/dist/tools/builtins/builtin-tools.d.ts +41 -0
- package/dist/tools/builtins/builtin-tools.js +151 -0
- package/dist/tools/builtins/current-time.d.ts +26 -0
- package/dist/tools/builtins/current-time.js +99 -0
- package/dist/tools/builtins/handback.d.ts +28 -0
- package/dist/tools/builtins/handback.js +53 -0
- package/dist/tools/builtins/platform.d.ts +51 -0
- package/dist/tools/builtins/platform.js +451 -0
- package/dist/tools/builtins/read-tool-output.d.ts +3 -3
- package/dist/tools/builtins/read-tool-output.js +3 -3
- package/dist/tools/builtins/sandbox/bash.d.ts +5 -5
- package/dist/tools/builtins/sandbox/bash.js +293 -41
- package/dist/tools/builtins/sandbox/common.d.ts +137 -37
- package/dist/tools/builtins/sandbox/common.js +222 -62
- package/dist/tools/builtins/sandbox/deliver.d.ts +1 -1
- package/dist/tools/builtins/sandbox/deliver.js +21 -18
- package/dist/tools/builtins/sandbox/edit.d.ts +1 -1
- package/dist/tools/builtins/sandbox/edit.js +65 -51
- package/dist/tools/builtins/sandbox/file-state.d.ts +34 -0
- package/dist/tools/builtins/sandbox/file-state.js +34 -0
- package/dist/tools/builtins/sandbox/glob-match.d.ts +1 -1
- package/dist/tools/builtins/sandbox/glob-match.js +1 -1
- package/dist/tools/builtins/sandbox/glob.d.ts +1 -1
- package/dist/tools/builtins/sandbox/glob.js +19 -14
- package/dist/tools/builtins/sandbox/grep.d.ts +7 -4
- package/dist/tools/builtins/sandbox/grep.js +155 -36
- package/dist/tools/builtins/sandbox/index.d.ts +9 -5
- package/dist/tools/builtins/sandbox/index.js +13 -5
- package/dist/tools/builtins/sandbox/read.d.ts +2 -2
- package/dist/tools/builtins/sandbox/read.js +30 -20
- package/dist/tools/builtins/sandbox/task-output.d.ts +79 -0
- package/dist/tools/builtins/sandbox/task-output.js +334 -0
- package/dist/tools/builtins/sandbox/task-stop.d.ts +10 -0
- package/dist/tools/builtins/sandbox/task-stop.js +113 -0
- package/dist/tools/builtins/sandbox/write.d.ts +1 -1
- package/dist/tools/builtins/sandbox/write.js +52 -45
- package/dist/tools/builtins/send-message.d.ts +56 -0
- package/dist/tools/builtins/send-message.js +100 -0
- package/dist/tools/builtins/skill-load.d.ts +32 -21
- package/dist/tools/builtins/skill-load.js +125 -74
- package/dist/tools/builtins/skill-write.d.ts +4 -4
- package/dist/tools/builtins/skill-write.js +12 -12
- package/dist/tools/builtins/tool-search.d.ts +13 -9
- package/dist/tools/builtins/tool-search.js +25 -14
- package/dist/tools/builtins/web/errors.d.ts +8 -0
- package/dist/tools/builtins/web/errors.js +53 -0
- package/dist/tools/builtins/web/extract.d.ts +62 -0
- package/dist/tools/builtins/web/extract.js +271 -0
- package/dist/tools/builtins/web/fetch.d.ts +55 -0
- package/dist/tools/builtins/web/fetch.js +175 -0
- package/dist/tools/builtins/web/index.d.ts +13 -0
- package/dist/tools/builtins/web/index.js +12 -0
- package/dist/tools/builtins/web/page-cache.d.ts +25 -0
- package/dist/tools/builtins/web/page-cache.js +77 -0
- package/dist/tools/builtins/web/search.d.ts +25 -0
- package/dist/tools/builtins/web/search.js +210 -0
- package/dist/tools/builtins/web/url.d.ts +17 -0
- package/dist/tools/builtins/web/url.js +43 -0
- package/dist/tools/canonical-json.d.ts +6 -0
- package/dist/tools/canonical-json.js +16 -0
- package/dist/tools/connector-content.controller.d.ts +1 -1
- package/dist/tools/connector-content.controller.js +11 -6
- package/dist/tools/connector-content.d.ts +12 -15
- package/dist/tools/connector-content.js +53 -18
- package/dist/tools/connectors.controller.d.ts +16 -3
- package/dist/tools/connectors.controller.js +34 -14
- package/dist/tools/connectors.schemas.d.ts +12 -0
- package/dist/tools/connectors.schemas.js +19 -0
- package/dist/tools/connectors.service.d.ts +80 -18
- package/dist/tools/connectors.service.js +529 -358
- package/dist/tools/credentials.d.ts +20 -20
- package/dist/tools/credentials.js +55 -34
- package/dist/tools/display-names.d.ts +9 -0
- package/dist/tools/display-names.js +24 -0
- package/dist/tools/drift.d.ts +29 -41
- package/dist/tools/drift.js +116 -84
- package/dist/tools/elicitation.js +1 -1
- package/dist/tools/extension-tools.controller.d.ts +14 -0
- package/dist/tools/extension-tools.controller.js +37 -0
- package/dist/tools/info.d.ts +73 -13
- package/dist/tools/info.js +151 -39
- package/dist/tools/job-ids.d.ts +13 -0
- package/dist/tools/job-ids.js +15 -0
- package/dist/tools/jobs.d.ts +24 -0
- package/dist/tools/jobs.js +69 -0
- package/dist/tools/legacy-data.d.ts +34 -0
- package/dist/tools/legacy-data.js +76 -0
- package/dist/tools/legacy-keys.d.ts +51 -0
- package/dist/tools/legacy-keys.js +115 -0
- package/dist/tools/naming.d.ts +1 -5
- package/dist/tools/naming.js +1 -7
- package/dist/tools/oauth/flow-paths.d.ts +16 -0
- package/dist/tools/oauth/flow-paths.js +38 -0
- package/dist/tools/oauth/flow.d.ts +30 -30
- package/dist/tools/oauth/flow.js +109 -81
- package/dist/tools/oauth/oauth.controller.d.ts +3 -3
- package/dist/tools/oauth/oauth.controller.js +12 -9
- package/dist/tools/oauth/tokens.d.ts +45 -10
- package/dist/tools/oauth/tokens.js +70 -24
- package/dist/tools/org-tool-switches.d.ts +88 -0
- package/dist/tools/org-tool-switches.js +201 -0
- package/dist/tools/outputs.d.ts +13 -4
- package/dist/tools/outputs.js +48 -4
- package/dist/tools/pipeline.d.ts +108 -80
- package/dist/tools/pipeline.js +396 -409
- package/dist/tools/policy.d.ts +4 -17
- package/dist/tools/policy.js +49 -35
- package/dist/tools/questions.controller.d.ts +2 -2
- package/dist/tools/questions.controller.js +9 -6
- package/dist/tools/questions.service.d.ts +26 -25
- package/dist/tools/questions.service.js +201 -142
- package/dist/tools/registry.d.ts +215 -84
- package/dist/tools/registry.js +382 -264
- package/dist/tools/resources.d.ts +1 -1
- package/dist/tools/resources.js +1 -1
- package/dist/tools/specs.d.ts +5 -4
- package/dist/tools/specs.js +3 -1
- package/dist/tools/tools.module.d.ts +10 -0
- package/dist/tools/tools.module.js +113 -0
- package/dist/tools/validate.js +1 -1
- package/dist/ui/call-extension.d.ts +16 -0
- package/dist/ui/call-extension.js +38 -0
- package/dist/ui/embed-token.d.ts +9 -5
- package/dist/ui/embed-token.js +34 -6
- package/dist/ui/ui-stream.d.ts +22 -17
- package/dist/ui/ui-stream.js +72 -12
- package/dist/ui/ui.module.d.ts +7 -0
- package/dist/ui/ui.module.js +28 -0
- package/dist/ui/views.controller.d.ts +14 -12
- package/dist/ui/views.controller.js +32 -25
- package/dist/ui/views.d.ts +10 -57
- package/dist/ui/views.js +58 -46
- package/package.json +13 -3
- package/src/migrations/0063_tool_keys_claude_code.sql +220 -0
- package/src/migrations/0064_account_last_org.sql +7 -0
- package/src/migrations/0065_conversation_archive.sql +8 -0
- package/src/migrations/0066_extension_display_name.sql +4 -0
- package/src/migrations/0067_agent_profiles.sql +20 -0
- package/src/migrations/0068_agent_avatar_uploads.sql +7 -0
- package/src/migrations/0069_attachments_agent_idx.sql +3 -0
- package/src/migrations/0070_background_tasks.sql +37 -0
- package/src/migrations/0071_background_tasks_reserve.sql +6 -0
- package/src/migrations/0072_background_tasks_stopping.sql +5 -0
- package/src/migrations/0073_org_extension_point_defaults.sql +11 -0
- package/src/migrations/0074_subagent_tree.sql +50 -0
- package/src/migrations/0075_plugin_scope.sql +61 -0
- package/src/migrations/0076_skills_created_by_nullable.sql +6 -0
- package/src/migrations/0077_scope_requests.sql +52 -0
- package/src/migrations/0078_scope_grant_switches.sql +18 -0
- package/src/migrations/0079_scope_live_install_switches.sql +19 -0
- package/src/migrations/0080_rename_enterprise_admin.sql +18 -0
- package/src/migrations/0081_platform_components.sql +129 -0
- package/src/migrations/0082_platform_migration.sql +33 -0
- package/src/migrations/0083_plugin_scope_sync_failures.sql +15 -0
- package/src/migrations/0084_org_owned_items.sql +85 -0
- package/src/migrations/0085_agent_templates_phase4.sql +45 -0
- package/src/migrations/0086_org_layering.sql +30 -0
- package/src/migrations/0087_approval_summary.sql +6 -0
- package/src/migrations/0088_environments.sql +80 -0
- package/src/migrations/0089_model_kinds_usage.sql +38 -0
- package/src/migrations/0090_initial_passwords.sql +27 -0
- package/src/migrations/0091_account_time_zone.sql +4 -0
- package/src/migrations/0092_tools_default_on.sql +27 -0
- package/src/migrations/0093_connected_environments.sql +37 -0
- package/src/migrations/0094_environment_paths_idx.sql +7 -0
- package/src/migrations/0095_environment_files_resets.sql +5 -0
- package/src/migrations/0096_environment_demoted_default.sql +18 -0
- package/src/migrations/0097_extension_installs_enabled_at.sql +16 -0
- package/src/migrations/0098_single_provider_running_first.sql +41 -0
- package/src/migrations/0099_channel_connection_guide_ack.sql +6 -0
- package/src/migrations/0100_catalog_files.sql +13 -0
- package/src/migrations/0101_marketplace_icons.sql +32 -0
- package/dist/catalog/upgrade-targets.d.ts +0 -59
- package/dist/catalog/upgrade-targets.js +0 -90
- package/dist/conversations/sandbox-status.d.ts +0 -21
- package/dist/conversations/sandbox-status.js +0 -24
- package/dist/extensions/org-config.controller.d.ts +0 -24
- package/dist/extensions/org-config.controller.js +0 -59
- package/dist/http/gateway.module.js +0 -13
- package/dist/http/health.controller.d.ts +0 -26
- package/dist/http/health.controller.js +0 -79
- package/dist/http/tokens.d.ts +0 -131
- package/dist/http/tokens.js +0 -131
- package/dist/http/zod.pipe.d.ts +0 -8
- package/dist/http/zod.pipe.js +0 -14
- package/dist/identity/enterprise-admin.d.ts +0 -14
- package/dist/identity/enterprise-admin.js +0 -27
- package/dist/identity/rate-limit.d.ts +0 -55
- package/dist/identity/rate-limit.js +0 -121
- package/dist/sandbox/lifecycle.d.ts +0 -21
- package/dist/sandbox/lifecycle.js +0 -68
- package/dist/tools/builtins/sandbox/names.d.ts +0 -7
- package/dist/tools/builtins/sandbox/names.js +0 -20
|
@@ -1,17 +1,34 @@
|
|
|
1
|
+
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
|
2
|
+
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
3
|
+
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
4
|
+
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
5
|
+
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
6
|
+
};
|
|
7
|
+
var __param = (this && this.__param) || function (paramIndex, decorator) {
|
|
8
|
+
return function (target, key) { decorator(target, key, paramIndex); }
|
|
9
|
+
};
|
|
1
10
|
import { isSafePackagePath, marketplaceEntryVersion, } from "@capybara-hq/plugin-sdk";
|
|
11
|
+
import { Inject, Injectable } from "@nestjs/common";
|
|
2
12
|
import { sql } from "kysely";
|
|
3
13
|
import { ApiError } from "../errors.js";
|
|
4
|
-
import {
|
|
14
|
+
import { ExtensionAdmin } from "../extensions/admin-view.js";
|
|
15
|
+
import { ExtensionInstalls } from "../extensions/installs.js";
|
|
16
|
+
import { PluginInstallLock } from "../extensions/locks.js";
|
|
5
17
|
import { audit } from "../identity/audit.js";
|
|
6
|
-
import {
|
|
18
|
+
import { SuperAdminLock } from "../identity/super-admin.js";
|
|
19
|
+
import { KernelConfigService } from "../infra/config/kernel-config.service.js";
|
|
20
|
+
import { KernelDb } from "../infra/database/kernel-db.js";
|
|
21
|
+
import { TransactionHost } from "../infra/database/transaction-host.js";
|
|
22
|
+
import { Transactional } from "../infra/database/transactional.decorator.js";
|
|
7
23
|
import { sameRepository } from "../packages/provenance.js";
|
|
8
|
-
import {
|
|
9
|
-
import { expandGitUrl, GitSourceError, gitErrorDetails,
|
|
10
|
-
import { marketplaceNetPolicy, marketplaceUrlProblem } from "./marketplace-fetch.js";
|
|
11
|
-
import {
|
|
12
|
-
import {
|
|
13
|
-
import {
|
|
14
|
-
import {
|
|
24
|
+
import { countInstalls, itemConfirmations, itemScopeFacts, itemView, marketplaceLatest, versionUsable, } from "./catalog-items.js";
|
|
25
|
+
import { expandGitUrl, GitSourceError, gitErrorDetails, normalGitPath, readGitTreeAndOids, resolveGitCommit, } from "./git-source.js";
|
|
26
|
+
import { fetchMarketplaceArchive, marketplaceNetPolicy, marketplaceUrlProblem, } from "./marketplace-fetch.js";
|
|
27
|
+
import { assertEntryNotDeprecated, entryCompatible, entrySourceHost, HOST_VERSIONS, hostAllowed, loadMarketplaceEntry, MarketplacesService, pluginNameFrom, } from "./marketplaces.service.js";
|
|
28
|
+
import { releaseExtensionClaim } from "./ownership.js";
|
|
29
|
+
import { PluginImport } from "./plugin-import.js";
|
|
30
|
+
import { cancelPendingRequests } from "./request-rules.js";
|
|
31
|
+
import { newestFirst } from "./versions.js";
|
|
15
32
|
const UUID_RE = /^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/i;
|
|
16
33
|
const notFound = () => new ApiError("catalog.item_not_found", "Catalog item not found");
|
|
17
34
|
/** An archive URL as recorded (origin + path): a query string or fragment may carry a token. */
|
|
@@ -58,33 +75,66 @@ function gitSource(loc, read, pinned) {
|
|
|
58
75
|
ref: `${u.origin}${u.pathname}@${commit}${path === "." ? "" : `:${path}`}`,
|
|
59
76
|
};
|
|
60
77
|
}
|
|
61
|
-
/**
|
|
62
|
-
* The object storage prefix of one import (relative to `deployment/`):
|
|
63
|
-
* `directory/<itemId>/<version>/<importId>/`. Each import gets a new `importId`, so the losing one of
|
|
64
|
-
* two concurrent imports of the same version never overwrites the committed version's files; reads
|
|
65
|
-
* always go through the `object_prefix` stored on the version row. Build metadata's `+` is written
|
|
66
|
-
* as `_` (a `+` in a key can turn into a space through URL query encoding).
|
|
67
|
-
*/
|
|
68
|
-
export const catalogObjectPrefix = (itemId, version, importId) => `directory/${itemId}/${version.replace(/\+/g, "_")}/${importId}/`;
|
|
69
78
|
/** Default / largest page size of the list. */
|
|
70
79
|
export const CATALOG_LIST_DEFAULT_LIMIT = 200;
|
|
71
80
|
export const CATALOG_LIST_MAX_LIMIT = 1000;
|
|
72
|
-
const PUT_CONCURRENCY = 8;
|
|
73
81
|
/**
|
|
74
|
-
*
|
|
82
|
+
* Platform catalog items (D9 / C21 / C22, `/api/v1/admin/catalog/*`, super admins only). One
|
|
75
83
|
* kind: every item is a plugin (spec §4), imported through {@link PluginImport} (prepare -> confirm,
|
|
76
|
-
* one review); this service lists and shows items,
|
|
77
|
-
*
|
|
84
|
+
* one review, whose confirm installs the plugin's extension); this service lists and shows items,
|
|
85
|
+
* deletes, and prepares marketplace imports (scope and disable: `CatalogScopeService`). Stateless,
|
|
86
|
+
* shared by every replica.
|
|
78
87
|
*/
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
88
|
+
let CatalogService = class CatalogService {
|
|
89
|
+
kdb;
|
|
90
|
+
adminLock;
|
|
91
|
+
config;
|
|
92
|
+
installs;
|
|
93
|
+
admin;
|
|
94
|
+
pluginImport;
|
|
95
|
+
marketplaces;
|
|
96
|
+
installLock;
|
|
97
|
+
txHost;
|
|
98
|
+
constructor(kdb,
|
|
99
|
+
/** The super admin lock (identity/super-admin.ts): joins the caller's transaction. */
|
|
100
|
+
adminLock, config, installs,
|
|
101
|
+
/** The deployment's extensions with their approvals (what is pending confirmation). */
|
|
102
|
+
admin,
|
|
103
|
+
/** Plugin import (a marketplace entry goes through its prepare). */
|
|
104
|
+
pluginImport,
|
|
105
|
+
/** The token of a custom marketplace (sent only to its URL's origin). */
|
|
106
|
+
marketplaces,
|
|
107
|
+
/** Serializes a claim release with an install of that name still committing (F10). */
|
|
108
|
+
installLock, txHost) {
|
|
109
|
+
this.kdb = kdb;
|
|
110
|
+
this.adminLock = adminLock;
|
|
111
|
+
this.config = config;
|
|
112
|
+
this.installs = installs;
|
|
113
|
+
this.admin = admin;
|
|
114
|
+
this.pluginImport = pluginImport;
|
|
115
|
+
this.marketplaces = marketplaces;
|
|
116
|
+
this.installLock = installLock;
|
|
117
|
+
this.txHost = txHost;
|
|
118
|
+
}
|
|
119
|
+
/** The kernel-schema handle of the current context (the transaction, else the pool). */
|
|
120
|
+
get db() {
|
|
121
|
+
return this.kdb.db;
|
|
122
|
+
}
|
|
123
|
+
/** Downloads a marketplace archive source, verified against its integrity. */
|
|
124
|
+
fetchArchive(archive, signal) {
|
|
125
|
+
const config = this.config.get();
|
|
126
|
+
return fetchMarketplaceArchive(archive, {
|
|
127
|
+
maxBytes: config.packages.maxBytes,
|
|
128
|
+
timeoutMs: 120_000,
|
|
129
|
+
net: marketplaceNetPolicy(config),
|
|
130
|
+
...(signal !== undefined && { signal }),
|
|
131
|
+
});
|
|
83
132
|
}
|
|
84
133
|
/**
|
|
85
134
|
* Prepares the import of one marketplace entry (C25 / C26, spec §5.2): `version` defaults to the
|
|
86
135
|
* newest compatible version the marketplace lists for `name`; the entry must be compatible with
|
|
87
|
-
* the host (`marketplace.incompatible`)
|
|
136
|
+
* the host (`marketplace.incompatible`) and not deprecated (`marketplace.entry_deprecated`, 409; the
|
|
137
|
+
* confirm does not read the marketplace again); an npm source is downloaded from the configured registry
|
|
88
138
|
* and an archive source from its URL, both always verified against the marketplace's integrity
|
|
89
139
|
* (`marketplace.integrity_mismatch`, nothing written). A `path` source is read from the git
|
|
90
140
|
* marketplace's repository at its last refreshed commit (an http marketplace has none:
|
|
@@ -100,12 +150,13 @@ export class CatalogService {
|
|
|
100
150
|
* `marketplace.not_found`; disabled, or the entry / version missing -> `marketplace.entry_not_found`.
|
|
101
151
|
*/
|
|
102
152
|
async importFromMarketplace(actor, input, opts = {}) {
|
|
103
|
-
const config = this.
|
|
104
|
-
const { entry, marketplace, claude } = await loadMarketplaceEntry(this.
|
|
153
|
+
const config = this.config.get();
|
|
154
|
+
const { entry, marketplace, claude } = await loadMarketplaceEntry(this.db, config, input.marketplaceId, input.name, input.version);
|
|
105
155
|
const version = marketplaceEntryVersion(entry);
|
|
106
156
|
if (!entryCompatible(entry)) {
|
|
107
157
|
throw new ApiError("marketplace.incompatible", `${entry.name}${version !== null ? `@${version}` : ""} needs kernel >= ${entry.minKernel}; this deployment runs kernel ${HOST_VERSIONS.kernel}`);
|
|
108
158
|
}
|
|
159
|
+
assertEntryNotDeprecated(entry);
|
|
109
160
|
const src = entry.source;
|
|
110
161
|
const host = entrySourceHost(entry);
|
|
111
162
|
if (host !== undefined && !hostAllowed(host, config)) {
|
|
@@ -113,6 +164,7 @@ export class CatalogService {
|
|
|
113
164
|
}
|
|
114
165
|
const prepareOpts = {
|
|
115
166
|
...(opts.actorTokenId !== undefined && { actorTokenId: opts.actorTokenId }),
|
|
167
|
+
...(opts.auditDetail !== undefined && { auditDetail: opts.auditDetail }),
|
|
116
168
|
expect: {
|
|
117
169
|
marketplace: {
|
|
118
170
|
name: entry.name,
|
|
@@ -129,20 +181,20 @@ export class CatalogService {
|
|
|
129
181
|
let detail;
|
|
130
182
|
let provenance;
|
|
131
183
|
if ("npm" in src) {
|
|
132
|
-
got = await this.
|
|
184
|
+
got = await this.installs.fetchMarketplacePackage({ package: src.npm.package, version: src.npm.version, integrity: src.npm.integrity }, opts.signal);
|
|
133
185
|
ref = `${input.marketplaceId}:${src.npm.package}@${src.npm.version}`;
|
|
134
186
|
detail = { registry: new URL(config.packages.npmRegistry).origin };
|
|
135
|
-
const p = await this.
|
|
187
|
+
const p = await this.installs.fetchProvenance({ package: src.npm.package, version: src.npm.version, integrity: got.integrity }, opts.signal);
|
|
136
188
|
// a git marketplace declares its repository: an attestation from another one is a warning
|
|
137
189
|
const mismatch = p.checked && marketplace.form === "git" && !sameRepository(p.repository, marketplace.url);
|
|
138
190
|
provenance = { provenance: p, ...(mismatch && { warning: "repository_mismatch" }) };
|
|
139
191
|
}
|
|
140
192
|
else {
|
|
141
|
-
got = await this.
|
|
193
|
+
got = await this.fetchArchive(src.archive, opts.signal);
|
|
142
194
|
ref = `${input.marketplaceId}:${archiveRef(src.archive.url)}`;
|
|
143
195
|
detail = { url: archiveRef(src.archive.url) };
|
|
144
196
|
}
|
|
145
|
-
staged = await this.
|
|
197
|
+
staged = await this.pluginImport.prepare(actor, got.bytes, {
|
|
146
198
|
kind: "marketplace",
|
|
147
199
|
ref,
|
|
148
200
|
integrity: got.integrity,
|
|
@@ -184,7 +236,7 @@ export class CatalogService {
|
|
|
184
236
|
}
|
|
185
237
|
const token = marketplace.builtin
|
|
186
238
|
? undefined
|
|
187
|
-
: await this.
|
|
239
|
+
: await this.marketplaces.token(input.marketplaceId);
|
|
188
240
|
const read = await this.readGit(loc, {
|
|
189
241
|
...(token !== undefined && { token, tokenOrigin: new URL(marketplace.url).origin }),
|
|
190
242
|
...(opts.signal !== undefined && { signal: opts.signal }),
|
|
@@ -192,7 +244,7 @@ export class CatalogService {
|
|
|
192
244
|
// path entries follow the marketplace's ref; git entries follow theirs unless a commit is pinned
|
|
193
245
|
const pinned = "git" in src && src.git.commit !== undefined;
|
|
194
246
|
const where = gitSource("path" in src && marketplace.ref !== null ? { ...loc, ref: marketplace.ref } : loc, read, pinned);
|
|
195
|
-
staged = await this.
|
|
247
|
+
staged = await this.pluginImport.prepareGit(actor, read.files, {
|
|
196
248
|
kind: "git",
|
|
197
249
|
ref: `${input.marketplaceId}:${where.ref}`,
|
|
198
250
|
marketplaceId: input.marketplaceId,
|
|
@@ -224,7 +276,7 @@ export class CatalogService {
|
|
|
224
276
|
*/
|
|
225
277
|
async importFromGit(actor, input, opts = {}) {
|
|
226
278
|
const url = expandGitUrl(input.url);
|
|
227
|
-
const problem = marketplaceUrlProblem(url, this.
|
|
279
|
+
const problem = marketplaceUrlProblem(url, this.config.get().marketplaces.allowInsecureLoopback);
|
|
228
280
|
if (problem !== null)
|
|
229
281
|
throw new ApiError("validation_failed", `url: ${problem}`);
|
|
230
282
|
if (input.path !== undefined) {
|
|
@@ -247,8 +299,9 @@ export class CatalogService {
|
|
|
247
299
|
.filter((s) => s !== "")
|
|
248
300
|
.pop() ?? "plugin")
|
|
249
301
|
: where.detail.path.split("/").pop();
|
|
250
|
-
const r = await this.
|
|
302
|
+
const r = await this.pluginImport.prepareGit(actor, read.files, { kind: "git", ref: where.ref, detail: where.detail }, {
|
|
251
303
|
...(opts.actorTokenId !== undefined && { actorTokenId: opts.actorTokenId }),
|
|
304
|
+
...(opts.auditDetail !== undefined && { auditDetail: opts.auditDetail }),
|
|
252
305
|
fallback: {
|
|
253
306
|
name: pluginNameFrom(segment),
|
|
254
307
|
version: gitFallbackVersion(read.commit),
|
|
@@ -259,7 +312,7 @@ export class CatalogService {
|
|
|
259
312
|
}
|
|
260
313
|
/** Resolves the commit and reads the plugin's files; git failures become API errors. */
|
|
261
314
|
async readGit(loc, o) {
|
|
262
|
-
const config = this.
|
|
315
|
+
const config = this.config.get();
|
|
263
316
|
const options = {
|
|
264
317
|
net: marketplaceNetPolicy(config),
|
|
265
318
|
maxBytes: config.packages.maxBytes,
|
|
@@ -287,9 +340,28 @@ export class CatalogService {
|
|
|
287
340
|
}
|
|
288
341
|
/** Same as {@link list}, plus the offset of the next page (null when there is none). */
|
|
289
342
|
async page(q = {}) {
|
|
343
|
+
// `pending`: every item waiting for a confirmation (one list, not paged: the pending set is small)
|
|
344
|
+
if (q.pending === true) {
|
|
345
|
+
const all = await this.page({
|
|
346
|
+
...(q.includeDeleted && { includeDeleted: true }),
|
|
347
|
+
limit: CATALOG_LIST_MAX_LIMIT,
|
|
348
|
+
});
|
|
349
|
+
const items = [...all.items];
|
|
350
|
+
let next = all.nextOffset;
|
|
351
|
+
while (next !== null) {
|
|
352
|
+
const more = await this.page({
|
|
353
|
+
...(q.includeDeleted && { includeDeleted: true }),
|
|
354
|
+
limit: CATALOG_LIST_MAX_LIMIT,
|
|
355
|
+
offset: next,
|
|
356
|
+
});
|
|
357
|
+
items.push(...more.items);
|
|
358
|
+
next = more.nextOffset;
|
|
359
|
+
}
|
|
360
|
+
return { items: items.filter((i) => i.pending), nextOffset: null };
|
|
361
|
+
}
|
|
290
362
|
const limit = Math.min(Math.max(1, q.limit ?? CATALOG_LIST_DEFAULT_LIMIT), CATALOG_LIST_MAX_LIMIT);
|
|
291
363
|
const offset = Math.max(0, q.offset ?? 0);
|
|
292
|
-
let query = this.
|
|
364
|
+
let query = this.db
|
|
293
365
|
.selectFrom("catalog_items")
|
|
294
366
|
.selectAll()
|
|
295
367
|
.orderBy("name")
|
|
@@ -303,7 +375,7 @@ export class CatalogService {
|
|
|
303
375
|
const items = rows.slice(0, limit);
|
|
304
376
|
if (items.length === 0)
|
|
305
377
|
return { items: [], nextOffset: null };
|
|
306
|
-
const versions = await this.
|
|
378
|
+
const versions = await this.db
|
|
307
379
|
.selectFrom("catalog_item_versions")
|
|
308
380
|
.select([
|
|
309
381
|
"item_id",
|
|
@@ -314,19 +386,29 @@ export class CatalogService {
|
|
|
314
386
|
"integrity",
|
|
315
387
|
"source_detail",
|
|
316
388
|
"imported_at",
|
|
389
|
+
"manifest",
|
|
390
|
+
"source_format",
|
|
391
|
+
"applied_at",
|
|
392
|
+
"rejected_at",
|
|
317
393
|
])
|
|
318
394
|
.where("item_id", "in", items.map((i) => i.id))
|
|
319
395
|
.execute();
|
|
396
|
+
const platformOwned = new Set(items.filter((i) => i.owner_org_id === null).map((i) => i.id));
|
|
320
397
|
const byItem = new Map();
|
|
321
398
|
for (const v of versions) {
|
|
399
|
+
// a platform item offers only versions it may use (a transferred org item's rejected or
|
|
400
|
+
// never-applied uploads stay out, ruling P3-52); an org item's pending ones show in 待确认
|
|
401
|
+
if (platformOwned.has(v.item_id) && !versionUsable(v))
|
|
402
|
+
continue;
|
|
322
403
|
const list = byItem.get(v.item_id) ?? [];
|
|
323
404
|
list.push(v);
|
|
324
405
|
byItem.set(v.item_id, list);
|
|
325
406
|
}
|
|
326
|
-
const installs = await countInstalls(this.
|
|
327
|
-
const latest = await marketplaceLatest(this.
|
|
407
|
+
const installs = await countInstalls(this.db, items, byItem);
|
|
408
|
+
const latest = await marketplaceLatest(this.db, this.config.get(), items, byItem);
|
|
409
|
+
const facts = await itemScopeFacts(this.db, items, await itemConfirmations(this.admin, items, byItem));
|
|
328
410
|
return {
|
|
329
|
-
items: items.map((i) => itemView(i, byItem.get(i.id) ?? [], installs.get(i.id) ?? 0, latest.get(i.id))),
|
|
411
|
+
items: items.map((i) => itemView(i, byItem.get(i.id) ?? [], installs.get(i.id) ?? 0, latest.get(i.id), facts.get(i.id))),
|
|
330
412
|
nextOffset,
|
|
331
413
|
};
|
|
332
414
|
}
|
|
@@ -334,27 +416,29 @@ export class CatalogService {
|
|
|
334
416
|
async get(itemId) {
|
|
335
417
|
if (!UUID_RE.test(itemId))
|
|
336
418
|
throw notFound();
|
|
337
|
-
const item = await this.
|
|
419
|
+
const item = await this.db
|
|
338
420
|
.selectFrom("catalog_items")
|
|
339
421
|
.selectAll()
|
|
340
422
|
.where("id", "=", itemId)
|
|
341
423
|
.executeTakeFirst();
|
|
342
424
|
if (!item)
|
|
343
425
|
throw notFound();
|
|
344
|
-
const rows = await this.
|
|
426
|
+
const rows = (await this.db
|
|
345
427
|
.selectFrom("catalog_item_versions")
|
|
346
428
|
.selectAll()
|
|
347
429
|
.where("item_id", "=", itemId)
|
|
348
|
-
.execute();
|
|
430
|
+
.execute()).filter((v) => item.owner_org_id !== null || versionUsable(v));
|
|
349
431
|
rows.sort((a, b) => newestFirst({ version: a.version, importedAt: a.imported_at }, { version: b.version, importedAt: b.imported_at }));
|
|
350
432
|
const byItem = new Map([[item.id, rows]]);
|
|
351
|
-
const installs = await countInstalls(this.
|
|
352
|
-
const latest = await marketplaceLatest(this.
|
|
433
|
+
const installs = await countInstalls(this.db, [item], byItem);
|
|
434
|
+
const latest = await marketplaceLatest(this.db, this.config.get(), [item], byItem);
|
|
435
|
+
const facts = await itemScopeFacts(this.db, [item], await itemConfirmations(this.admin, [item], byItem));
|
|
353
436
|
return {
|
|
354
437
|
item: {
|
|
355
|
-
...itemView(item, rows, installs.get(item.id) ?? 0, latest.get(item.id)),
|
|
438
|
+
...itemView(item, rows, installs.get(item.id) ?? 0, latest.get(item.id), facts.get(item.id)),
|
|
356
439
|
packageName: item.package_name,
|
|
357
440
|
deletedAt: item.deleted_at?.toISOString() ?? null,
|
|
441
|
+
platformVersion: item.platform_synced_version ?? item.latest_version,
|
|
358
442
|
},
|
|
359
443
|
versions: rows.map((v) => ({
|
|
360
444
|
version: v.version,
|
|
@@ -376,507 +460,132 @@ export class CatalogService {
|
|
|
376
460
|
})),
|
|
377
461
|
};
|
|
378
462
|
}
|
|
379
|
-
/**
|
|
380
|
-
* Changes the policy (audit `catalog.policy_changed`, not written when unchanged). Deleted /
|
|
381
|
-
* missing -> `catalog.item_not_found`.
|
|
382
|
-
*/
|
|
383
|
-
async setPolicy(actor, itemId, policy, opts = {}) {
|
|
384
|
-
if (!UUID_RE.test(itemId))
|
|
385
|
-
throw notFound();
|
|
386
|
-
await this.d.db.transaction().execute(async (trx) => {
|
|
387
|
-
await lockEnterpriseAdminsAndAuthorize(trx, actor);
|
|
388
|
-
const row = await trx
|
|
389
|
-
.selectFrom("catalog_items")
|
|
390
|
-
.select(["name", "policy"])
|
|
391
|
-
.where("id", "=", itemId)
|
|
392
|
-
.where("deleted_at", "is", null)
|
|
393
|
-
.forUpdate()
|
|
394
|
-
.executeTakeFirst();
|
|
395
|
-
if (!row)
|
|
396
|
-
throw notFound();
|
|
397
|
-
if (row.policy === policy)
|
|
398
|
-
return;
|
|
399
|
-
await trx
|
|
400
|
-
.updateTable("catalog_items")
|
|
401
|
-
.set({ policy, updated_at: sql `now()` })
|
|
402
|
-
.where("id", "=", itemId)
|
|
403
|
-
.execute();
|
|
404
|
-
await audit(trx, {
|
|
405
|
-
actorAccountId: actor,
|
|
406
|
-
...(opts.actorTokenId !== undefined && { actorTokenId: opts.actorTokenId }),
|
|
407
|
-
action: "catalog.policy_changed",
|
|
408
|
-
target: itemId,
|
|
409
|
-
detail: { name: row.name, from: row.policy, to: policy },
|
|
410
|
-
});
|
|
411
|
-
});
|
|
412
|
-
return this.view(itemId);
|
|
413
|
-
}
|
|
414
463
|
/**
|
|
415
464
|
* Deletes the item (soft delete, audit `catalog.removed`; requests still pending are cancelled in
|
|
416
465
|
* the same transaction): versions and stored files are kept (installed components still refer to
|
|
417
466
|
* them), organizations no longer see it; the same name can later be imported again as a new
|
|
418
|
-
* item. Deleted / missing -> `catalog.item_not_found`.
|
|
467
|
+
* item. Deleted / missing -> `catalog.item_not_found`. A platform plugin whose extension is
|
|
468
|
+
* still enabled on the deployment -> 409 `catalog.extension_enabled` (details
|
|
469
|
+
* `[{ extension, displayName }]`): disable it on the Extensions page first, as an uninstall
|
|
470
|
+
* requires. A disabled extension keeps its install record (the super admin uninstalls it on the
|
|
471
|
+
* Extensions page); an org-owned item's extension is taken out by `OwnedPluginCleanup`.
|
|
419
472
|
*/
|
|
420
473
|
async remove(actor, itemId, opts = {}) {
|
|
421
474
|
if (!UUID_RE.test(itemId))
|
|
422
475
|
throw notFound();
|
|
423
|
-
await this.
|
|
424
|
-
await lockEnterpriseAdminsAndAuthorize(trx, actor);
|
|
425
|
-
const row = await trx
|
|
426
|
-
.updateTable("catalog_items")
|
|
427
|
-
.set({
|
|
428
|
-
deleted_at: sql `now()`,
|
|
429
|
-
updated_at: sql `now()`,
|
|
430
|
-
})
|
|
431
|
-
.where("id", "=", itemId)
|
|
432
|
-
.where("deleted_at", "is", null)
|
|
433
|
-
.returning(["name"])
|
|
434
|
-
.executeTakeFirst();
|
|
435
|
-
if (!row)
|
|
436
|
-
throw notFound();
|
|
437
|
-
// Pending requests for a deleted item are pointless: cancel them in the same transaction
|
|
438
|
-
await cancelPendingRequests(trx, { itemId }, actor, "item_removed", opts);
|
|
439
|
-
await audit(trx, {
|
|
440
|
-
actorAccountId: actor,
|
|
441
|
-
...(opts.actorTokenId !== undefined && { actorTokenId: opts.actorTokenId }),
|
|
442
|
-
action: "catalog.removed",
|
|
443
|
-
target: itemId,
|
|
444
|
-
detail: { name: row.name },
|
|
445
|
-
});
|
|
446
|
-
});
|
|
476
|
+
await this.writeRemove(actor, itemId, opts);
|
|
447
477
|
}
|
|
448
478
|
/**
|
|
449
|
-
*
|
|
450
|
-
*
|
|
451
|
-
* state; audit `extension.installed`), with the install record linked to the item (F-AA). The
|
|
452
|
-
* returned status may be `pending_approval` when the version's permissions are not approved yet.
|
|
453
|
-
* A version without an extension -> `catalog.no_extension`; item or version missing ->
|
|
454
|
-
* `catalog.item_not_found`.
|
|
479
|
+
* The precheck of {@link remove} (the Platform tool's `plugins.delete`): throws what the delete
|
|
480
|
+
* would throw for an enabled extension; read-only, no locks.
|
|
455
481
|
*/
|
|
456
|
-
async
|
|
482
|
+
async assertRemovable(itemId) {
|
|
457
483
|
if (!UUID_RE.test(itemId))
|
|
458
484
|
throw notFound();
|
|
459
|
-
|
|
485
|
+
await this.assertExtensionDisabled(this.kdb.db, itemId);
|
|
486
|
+
}
|
|
487
|
+
async writeRemove(actor, itemId, opts) {
|
|
488
|
+
await this.adminLock.lockAndAuthorize(actor);
|
|
489
|
+
await this.assertExtensionDisabled(this.db, itemId, true);
|
|
490
|
+
if ((await this.removeIn(actor, itemId, opts)) === null)
|
|
491
|
+
throw notFound();
|
|
492
|
+
}
|
|
493
|
+
/**
|
|
494
|
+
* A live platform item whose extension (the install of the item's name from its package) is
|
|
495
|
+
* enabled -> 409 `catalog.extension_enabled`. With `lock`, under the per-name install lock an
|
|
496
|
+
* enable takes too (the caller's transaction), so no enable slips in between.
|
|
497
|
+
*/
|
|
498
|
+
async assertExtensionDisabled(db, itemId, lock = false) {
|
|
499
|
+
const item = await db
|
|
460
500
|
.selectFrom("catalog_items")
|
|
461
|
-
.select(["
|
|
501
|
+
.select(["name", "package_name", "owner_org_id", "display_name"])
|
|
462
502
|
.where("id", "=", itemId)
|
|
463
503
|
.where("deleted_at", "is", null)
|
|
464
504
|
.executeTakeFirst();
|
|
465
|
-
if (!item)
|
|
466
|
-
|
|
467
|
-
|
|
468
|
-
.
|
|
469
|
-
|
|
470
|
-
.
|
|
471
|
-
.
|
|
505
|
+
if (!item || item.owner_org_id !== null)
|
|
506
|
+
return;
|
|
507
|
+
if (lock)
|
|
508
|
+
await this.installLock.lock(item.name);
|
|
509
|
+
const install = await db
|
|
510
|
+
.selectFrom("extension_installs as x")
|
|
511
|
+
.innerJoin("extension_packages as p", "p.sha256", "x.sha256")
|
|
512
|
+
.select(["x.desired_state", "p.package_name"])
|
|
513
|
+
.where("x.name", "=", item.name)
|
|
472
514
|
.executeTakeFirst();
|
|
473
|
-
if (
|
|
474
|
-
|
|
475
|
-
|
|
476
|
-
|
|
477
|
-
|
|
478
|
-
}
|
|
479
|
-
return this.d.ops.install(item.name, v.extension_sha256, actor, opts.actorTokenId, {
|
|
480
|
-
catalogItemId: itemId,
|
|
481
|
-
});
|
|
482
|
-
}
|
|
483
|
-
async view(itemId) {
|
|
484
|
-
return (await this.get(itemId)).item;
|
|
485
|
-
}
|
|
486
|
-
}
|
|
487
|
-
/**
|
|
488
|
-
* Checks a connector template against the loaded connector `c` (problem paths start with `at`): the
|
|
489
|
-
* endpoint matches its `endpointSchema` and carries no credential-like headers / query / URL user
|
|
490
|
-
* info (the same rule as connector installs); every `editableEndpoint` path exists in the endpoint
|
|
491
|
-
* schema.
|
|
492
|
-
*/
|
|
493
|
-
export function templateProblems(c, t, at) {
|
|
494
|
-
const problems = [];
|
|
495
|
-
const r = c.endpointSchema.safeParse(t.endpoint);
|
|
496
|
-
if (!r.success) {
|
|
497
|
-
for (const i of r.error.issues) {
|
|
498
|
-
problems.push(`${[`${at}.endpoint`, ...i.path.map(String)].join(".")}: ${i.message}`);
|
|
499
|
-
}
|
|
500
|
-
}
|
|
501
|
-
else {
|
|
502
|
-
for (const leak of endpointCredentialIssues(r.data)) {
|
|
503
|
-
problems.push(`${at}.${leak.path}: ${leak.message}`);
|
|
504
|
-
}
|
|
515
|
+
if (install === undefined || install.desired_state !== "enabled")
|
|
516
|
+
return;
|
|
517
|
+
if (item.package_name !== null && install.package_name !== item.package_name)
|
|
518
|
+
return;
|
|
519
|
+
throw new ApiError("catalog.extension_enabled", `The extension "${item.name}" of this plugin is enabled on the deployment; disable it on the Extensions page first, then delete the plugin`, [{ extension: item.name, displayName: item.display_name ?? null }]);
|
|
505
520
|
}
|
|
506
|
-
|
|
507
|
-
|
|
508
|
-
|
|
509
|
-
|
|
510
|
-
|
|
511
|
-
|
|
512
|
-
|
|
513
|
-
|
|
514
|
-
|
|
515
|
-
|
|
516
|
-
|
|
517
|
-
|
|
518
|
-
for (let f = queue.shift(); f; f = queue.shift()) {
|
|
519
|
-
await store.put(`${prefix}${f.path}`, f.data, {
|
|
520
|
-
contentType: "application/octet-stream",
|
|
521
|
-
size: f.size,
|
|
522
|
-
});
|
|
523
|
-
}
|
|
524
|
-
}));
|
|
525
|
-
}
|
|
526
|
-
/** Compares the marketplace's permission summary with the computed keys ({@link PermissionsMismatch}). */
|
|
527
|
-
export function permissionsMismatch(declared, actual) {
|
|
528
|
-
if (declared === undefined || actual === undefined)
|
|
529
|
-
return null;
|
|
530
|
-
const want = new Set(declared);
|
|
531
|
-
const have = new Set(actual);
|
|
532
|
-
const missing = [...have].filter((k) => !want.has(k)).sort();
|
|
533
|
-
const extra = [...want].filter((k) => !have.has(k)).sort();
|
|
534
|
-
return missing.length > 0 || extra.length > 0 ? { missing, extra } : null;
|
|
535
|
-
}
|
|
536
|
-
/** Takes the transaction-level advisory lock of an item name (concurrent imports of it serialize). */
|
|
537
|
-
export async function lockCatalogName(trx, name) {
|
|
538
|
-
await sql `SELECT pg_advisory_xact_lock(hashtext(${`capybara.directory-item:${name}`}))`.execute(trx);
|
|
539
|
-
}
|
|
540
|
-
/**
|
|
541
|
-
* The live item of a name, with the source identity of its latest version
|
|
542
|
-
* ({@link sourceIdentity}; null when there is none).
|
|
543
|
-
*/
|
|
544
|
-
async function liveItem(db, name) {
|
|
545
|
-
const item = await db
|
|
546
|
-
.selectFrom("catalog_items")
|
|
547
|
-
.select(["id", "package_name", "latest_version", "marketplace_id"])
|
|
548
|
-
.where("name", "=", name)
|
|
549
|
-
.where("deleted_at", "is", null)
|
|
550
|
-
.executeTakeFirst();
|
|
551
|
-
if (!item)
|
|
552
|
-
return undefined;
|
|
553
|
-
const latest = await db
|
|
554
|
-
.selectFrom("catalog_item_versions")
|
|
555
|
-
.select("source_detail")
|
|
556
|
-
.where("item_id", "=", item.id)
|
|
557
|
-
.where("version", "=", item.latest_version)
|
|
558
|
-
.executeTakeFirst();
|
|
559
|
-
return {
|
|
560
|
-
...item,
|
|
561
|
-
source: sourceIdentity(latest?.source_detail ?? undefined, item.marketplace_id ?? undefined),
|
|
562
|
-
};
|
|
563
|
-
}
|
|
564
|
-
/**
|
|
565
|
-
* The identity of a git source, `<host>/<repo>:<path>` (host lower case, no `.git`), or null when
|
|
566
|
-
* the source is not git. An item without package.json is identified by it instead of a package name.
|
|
567
|
-
*/
|
|
568
|
-
export function gitIdentity(detail) {
|
|
569
|
-
if (detail === undefined || !("commit" in detail))
|
|
570
|
-
return null;
|
|
571
|
-
return gitLocationIdentity(detail);
|
|
572
|
-
}
|
|
573
|
-
/**
|
|
574
|
-
* What identifies the source of a plugin without package.json: `git <host>/<repo>:<path>`, or, for
|
|
575
|
-
* a marketplace archive (a skills-only tgz without plugin.json), `marketplace <id>` (the
|
|
576
|
-
* marketplace vouches for its entries; archive URLs change from version to version). null for
|
|
577
|
-
* anything else.
|
|
578
|
-
*/
|
|
579
|
-
function sourceIdentity(detail, marketplaceId) {
|
|
580
|
-
const git = gitIdentity(detail);
|
|
581
|
-
if (git !== null)
|
|
582
|
-
return `git ${git}`;
|
|
583
|
-
if (detail !== undefined && "url" in detail && marketplaceId !== undefined) {
|
|
584
|
-
return `marketplace ${marketplaceId}`;
|
|
585
|
-
}
|
|
586
|
-
return null;
|
|
587
|
-
}
|
|
588
|
-
/** The versions of an item, with what tells their content apart. */
|
|
589
|
-
async function itemVersions(db, itemId) {
|
|
590
|
-
return db
|
|
591
|
-
.selectFrom("catalog_item_versions")
|
|
592
|
-
.select(["version", "content_digest", "integrity"])
|
|
593
|
-
.where("item_id", "=", itemId)
|
|
594
|
-
.execute();
|
|
595
|
-
}
|
|
596
|
-
/** `atConfirm`: found under the lock at confirm (another import committed after the review). */
|
|
597
|
-
const versionExists = (version, sameContent, atConfirm = false) => new ApiError("catalog.version_exists", (sameContent
|
|
598
|
-
? `Version ${version} of this catalog item is already imported with the same content`
|
|
599
|
-
: `Version ${version} of this catalog item has already been imported`) +
|
|
600
|
-
(atConfirm
|
|
601
|
-
? " (by another import since this one was prepared); prepare the import again"
|
|
602
|
-
: ""));
|
|
603
|
-
/**
|
|
604
|
-
* No version of the release of `p.version` (equal but for build metadata) holds the same content
|
|
605
|
-
* (digest; for a version without one, the same integrity), else `catalog.version_exists`.
|
|
606
|
-
*/
|
|
607
|
-
function assertNewContent(existing, p, atConfirm = false) {
|
|
608
|
-
const same = existing.find((v) => sameRelease(v.version, p.version) &&
|
|
609
|
-
(v.content_digest !== null
|
|
610
|
-
? v.content_digest === p.contentDigest
|
|
611
|
-
: v.integrity !== null && v.integrity === p.integrity));
|
|
612
|
-
if (same)
|
|
613
|
-
throw versionExists(same.version, true, atConfirm);
|
|
614
|
-
}
|
|
615
|
-
/**
|
|
616
|
-
* The version a new import records (Decision 6, spec §5.3): the plugin's own version, unless that
|
|
617
|
-
* release is already imported. A version of the same release (equal but for build metadata) with
|
|
618
|
-
* the same content (digest; for versions without one, the same integrity) -> `catalog.version_exists`
|
|
619
|
-
* "already imported"; other content -> `<version>+git.<sha12>` (git) or `+sha256.<12>` (any other
|
|
620
|
-
* source, the digest's first 12 hex), never overwriting the imported version. A git commit already
|
|
621
|
-
* recorded with other content (a Claude Code plugin whose marketplace entry changed while its own
|
|
622
|
-
* commit did not, see `claudeContentDigest`) falls back to `+sha256.<12>`.
|
|
623
|
-
*/
|
|
624
|
-
export function recordedVersion(existing, p) {
|
|
625
|
-
assertNewContent(existing, p);
|
|
626
|
-
if (!existing.some((v) => v.version === p.version))
|
|
627
|
-
return p.version;
|
|
628
|
-
const d = p.detail;
|
|
629
|
-
const byDigest = withBuild(p.version, `sha256.${p.contentDigest.slice(0, 12)}`);
|
|
630
|
-
let next = d !== undefined && "commit" in d
|
|
631
|
-
? withBuild(p.version, `git.${d.commit.slice(0, 12)}`)
|
|
632
|
-
: byDigest;
|
|
633
|
-
if (existing.some((v) => v.version === next))
|
|
634
|
-
next = byDigest;
|
|
635
|
-
if (existing.some((v) => v.version === next))
|
|
636
|
-
throw versionExists(next, false);
|
|
637
|
-
return next;
|
|
638
|
-
}
|
|
639
|
-
/**
|
|
640
|
-
* Conflict precheck before writing (no lock; {@link writeCatalogVersion}'s re-check inside the
|
|
641
|
-
* transaction is final): an item with the same name from another npm package (or, without one,
|
|
642
|
-
* another git source) -> `catalog.name_conflict`; the release already imported with the same
|
|
643
|
-
* content -> `catalog.version_exists`. Returns the existing item (undefined when there is none) and
|
|
644
|
-
* the version to record ({@link recordedVersion}).
|
|
645
|
-
*/
|
|
646
|
-
export async function precheckCatalogImport(db, name, p) {
|
|
647
|
-
const existing = await liveItem(db, name);
|
|
648
|
-
if (!existing)
|
|
649
|
-
return { existing, version: p.version };
|
|
650
|
-
assertSameSource(existing, p.packageName, sourceIdentity(p.detail, p.marketplaceId));
|
|
651
|
-
return { existing, version: recordedVersion(await itemVersions(db, existing.id), p) };
|
|
652
|
-
}
|
|
653
|
-
/**
|
|
654
|
-
* Writes a catalog version in the caller's transaction (the caller has re-checked the enterprise
|
|
655
|
-
* admin): takes the name's advisory lock, checks conflicts again (the same source; no version of
|
|
656
|
-
* the release with the same content; `version` not taken meanwhile), creates the item when there is
|
|
657
|
-
* none or adds the version (latest and display fields change only for a newer version, a version
|
|
658
|
-
* equal but for build metadata being newer as the later import), and writes the version row (with
|
|
659
|
-
* its content digest) and the `catalog.imported` audit. Returns the item id.
|
|
660
|
-
*/
|
|
661
|
-
export async function writeCatalogVersion(trx, w) {
|
|
662
|
-
const { name, version, listing } = w;
|
|
663
|
-
await lockCatalogName(trx, name);
|
|
664
|
-
const live = await liveItem(trx, name);
|
|
665
|
-
let id;
|
|
666
|
-
if (live) {
|
|
667
|
-
id = live.id;
|
|
668
|
-
assertSameSource(live, w.packageName, sourceIdentity(w.source.detail, w.marketplaceId));
|
|
669
|
-
const existing = await itemVersions(trx, id);
|
|
670
|
-
// the same content under any version of the release, then the recorded version itself
|
|
671
|
-
assertNewContent(existing, {
|
|
672
|
-
version,
|
|
673
|
-
contentDigest: w.contentDigest,
|
|
674
|
-
...(w.source.integrity !== undefined && { integrity: w.source.integrity }),
|
|
675
|
-
}, true);
|
|
676
|
-
if (existing.some((v) => v.version === version))
|
|
677
|
-
throw versionExists(version, false, true);
|
|
678
|
-
const newer = compareVersions(version, live.latest_version) >= 0;
|
|
679
|
-
await trx
|
|
521
|
+
/**
|
|
522
|
+
* The soft delete of {@link remove} in the caller's transaction, without its super admin check
|
|
523
|
+
* (pre-flight F14: the super admin's remove and an owner's delete or an org deletion,
|
|
524
|
+
* `OwnedItems.transferOrRemove`, share it): `deleted_at` set, a pending version cleared, the
|
|
525
|
+
* extension name claim of a first upload still waiting released (ruling P3-37, F10), pending
|
|
526
|
+
* requests cancelled, audit `catalog.removed` (`actor` null: the kernel). Returns the removed
|
|
527
|
+
* item's name, or null when it is gone already.
|
|
528
|
+
*/
|
|
529
|
+
async removeIn(actor, itemId, opts = {}) {
|
|
530
|
+
const t = this.db;
|
|
531
|
+
const now = sql `now()`;
|
|
532
|
+
const row = await t
|
|
680
533
|
.updateTable("catalog_items")
|
|
681
534
|
.set({
|
|
682
|
-
|
|
683
|
-
|
|
684
|
-
|
|
685
|
-
|
|
686
|
-
|
|
687
|
-
description: listing.description,
|
|
688
|
-
display_name: listing.displayName ? JSON.stringify(listing.displayName) : null,
|
|
689
|
-
}),
|
|
535
|
+
deleted_at: now,
|
|
536
|
+
updated_at: now,
|
|
537
|
+
pending_version: null,
|
|
538
|
+
pending_by: null,
|
|
539
|
+
pending_at: null,
|
|
690
540
|
})
|
|
691
|
-
.where("id", "=",
|
|
692
|
-
.
|
|
693
|
-
|
|
694
|
-
|
|
695
|
-
|
|
696
|
-
|
|
697
|
-
|
|
698
|
-
|
|
699
|
-
|
|
700
|
-
|
|
701
|
-
|
|
702
|
-
|
|
703
|
-
description: listing.description,
|
|
704
|
-
display_name: listing.displayName ? JSON.stringify(listing.displayName) : null,
|
|
705
|
-
latest_version: version,
|
|
706
|
-
created_by: w.actor,
|
|
707
|
-
marketplace_id: w.marketplaceId ?? null,
|
|
708
|
-
})
|
|
709
|
-
.execute();
|
|
710
|
-
}
|
|
711
|
-
await trx
|
|
712
|
-
.insertInto("catalog_item_versions")
|
|
713
|
-
.values({
|
|
714
|
-
item_id: id,
|
|
715
|
-
version,
|
|
716
|
-
manifest: JSON.stringify(w.manifest),
|
|
717
|
-
source: w.source.source,
|
|
718
|
-
source_ref: w.source.ref,
|
|
719
|
-
integrity: w.source.integrity ?? null,
|
|
720
|
-
source_detail: w.source.detail !== undefined ? JSON.stringify(w.source.detail) : null,
|
|
721
|
-
content_digest: w.contentDigest,
|
|
722
|
-
object_prefix: w.objectPrefix,
|
|
723
|
-
extension_sha256: w.extensionSha256,
|
|
724
|
-
files: JSON.stringify(w.files.map(({ path, size, sha256 }) => ({ path, size, sha256 }))),
|
|
725
|
-
size: w.size,
|
|
726
|
-
imported_by: w.actor,
|
|
727
|
-
source_format: w.sourceFormat ?? "capybara",
|
|
728
|
-
translation: w.translation != null ? JSON.stringify(w.translation) : null,
|
|
729
|
-
license_text: w.licenseText ?? null,
|
|
730
|
-
license_truncated: w.licenseTruncated === true,
|
|
731
|
-
})
|
|
732
|
-
.execute();
|
|
733
|
-
await audit(trx, {
|
|
734
|
-
...(w.actor !== null && { actorAccountId: w.actor }),
|
|
735
|
-
...(w.actorTokenId !== undefined && { actorTokenId: w.actorTokenId }),
|
|
736
|
-
action: "catalog.imported",
|
|
737
|
-
target: id,
|
|
738
|
-
detail: {
|
|
739
|
-
name,
|
|
740
|
-
version,
|
|
741
|
-
source: w.source.source,
|
|
742
|
-
sourceRef: w.source.ref,
|
|
743
|
-
contentDigest: w.contentDigest,
|
|
744
|
-
...(w.extensionSha256 !== null && { sha256: w.extensionSha256 }),
|
|
745
|
-
...(w.source.integrity !== undefined && { integrity: w.source.integrity }),
|
|
746
|
-
...(w.marketplaceId !== undefined && { marketplaceId: w.marketplaceId }),
|
|
747
|
-
...w.auditDetail,
|
|
748
|
-
},
|
|
749
|
-
});
|
|
750
|
-
return id;
|
|
751
|
-
}
|
|
752
|
-
/**
|
|
753
|
-
* An extension name belongs to the npm package that first installed it (`extension_name_owners`,
|
|
754
|
-
* Ruling P3): when another package owns it, the import is refused right away with
|
|
755
|
-
* `extension.name_conflict` (the same code as at install), instead of failing only at deploy time.
|
|
756
|
-
*/
|
|
757
|
-
export async function assertPluginNameOwner(db, name, packageName) {
|
|
758
|
-
const owner = await db
|
|
759
|
-
.selectFrom("extension_name_owners")
|
|
760
|
-
.select("package_name")
|
|
761
|
-
.where("name", "=", name)
|
|
762
|
-
.executeTakeFirst();
|
|
763
|
-
if (owner && owner.package_name !== packageName) {
|
|
764
|
-
throw new ApiError("extension.name_conflict", `Extension name ${name} belongs to package ${owner.package_name}; ${packageLabel(packageName)} cannot use it`);
|
|
765
|
-
}
|
|
766
|
-
}
|
|
767
|
-
/** "package <name>", or what a plugin without package.json is called in messages. */
|
|
768
|
-
const packageLabel = (p) => p === null ? "a plugin without package.json" : `package ${p}`;
|
|
769
|
-
/**
|
|
770
|
-
* Whether a plugin may add a version to an existing item: the same npm package, or, for an item
|
|
771
|
-
* without package.json, the same source ({@link sourceIdentity}: git host, repo and path, so
|
|
772
|
-
* unrelated repos that resolve to the same name never merge; or the same marketplace for an
|
|
773
|
-
* archive); never a mix of the two.
|
|
774
|
-
*/
|
|
775
|
-
function assertSameSource(item, packageName, source) {
|
|
776
|
-
const from = (p, src) => p !== null ? `package ${p}` : (src ?? "a plugin without package.json");
|
|
777
|
-
const same = item.package_name !== null
|
|
778
|
-
? item.package_name === packageName
|
|
779
|
-
: packageName === null && item.source !== null && item.source === source;
|
|
780
|
-
if (!same) {
|
|
781
|
-
throw new ApiError("catalog.name_conflict", `A catalog item with this name comes from ${from(item.package_name, item.source)}; ${from(packageName, source)} cannot add versions to it`);
|
|
782
|
-
}
|
|
783
|
-
}
|
|
784
|
-
/**
|
|
785
|
-
* For each marketplace-imported item, its marketplace (when enabled): the highest compatible
|
|
786
|
-
* version listed, and whether a compatible entry's content changed at an imported version.
|
|
787
|
-
*/
|
|
788
|
-
async function marketplaceLatest(db, config, items, versions) {
|
|
789
|
-
const out = new Map();
|
|
790
|
-
const sourced = items.filter((i) => typeof i.marketplace_id === "string");
|
|
791
|
-
if (sourced.length === 0)
|
|
792
|
-
return out;
|
|
793
|
-
const rows = await db
|
|
794
|
-
.selectFrom("marketplace_entries as e")
|
|
795
|
-
.innerJoin("marketplaces as s", "s.id", "e.source_id")
|
|
796
|
-
.select([
|
|
797
|
-
"e.source_id",
|
|
798
|
-
"e.name",
|
|
799
|
-
"e.version",
|
|
800
|
-
"e.entry",
|
|
801
|
-
"e.head_commit",
|
|
802
|
-
"e.tree_oid",
|
|
803
|
-
"s.builtin",
|
|
804
|
-
"s.enabled",
|
|
805
|
-
"s.url",
|
|
806
|
-
"s.last_commit",
|
|
807
|
-
])
|
|
808
|
-
.where("e.source_id", "in", [...new Set(sourced.map((i) => i.marketplace_id))])
|
|
809
|
-
.where("e.name", "in", [...new Set(sourced.map((i) => i.name))])
|
|
810
|
-
.execute();
|
|
811
|
-
for (const i of sourced) {
|
|
812
|
-
const listed = rows.filter((r) => r.source_id === i.marketplace_id &&
|
|
813
|
-
r.name === i.name &&
|
|
814
|
-
sourceEffective(r, config) &&
|
|
815
|
-
entryCompatible(r.entry));
|
|
816
|
-
const [best] = listed
|
|
817
|
-
.filter((r) => r.version !== "")
|
|
818
|
-
.map((r) => r.version)
|
|
819
|
-
.sort(newestFirst);
|
|
820
|
-
const recorded = versions.get(i.id) ?? [];
|
|
821
|
-
out.set(i.id, {
|
|
822
|
-
latest: best ?? null,
|
|
823
|
-
contentChanged: listed.some((r) => entryContentChanged(r.entry, {
|
|
824
|
-
marketplaceId: r.source_id,
|
|
825
|
-
headCommit: r.head_commit,
|
|
826
|
-
treeOid: r.tree_oid,
|
|
827
|
-
url: r.url,
|
|
828
|
-
lastCommit: r.last_commit,
|
|
829
|
-
}, recorded)),
|
|
830
|
-
});
|
|
831
|
-
}
|
|
832
|
-
return out;
|
|
833
|
-
}
|
|
834
|
-
/** Org install counts per item (see {@link CatalogItemView.installs}). */
|
|
835
|
-
async function countInstalls(db, items, versions) {
|
|
836
|
-
const orgs = new Map(items.map((i) => [i.id, new Set()]));
|
|
837
|
-
const installed = await db
|
|
838
|
-
.selectFrom("plugin_installs")
|
|
839
|
-
.select(["item_id", "org_id"])
|
|
840
|
-
.where("item_id", "in", items.map((i) => i.id))
|
|
841
|
-
.where("status", "in", ["installed", "upgrading"])
|
|
842
|
-
.execute();
|
|
843
|
-
for (const r of installed)
|
|
844
|
-
orgs.get(r.item_id)?.add(r.org_id);
|
|
845
|
-
const withExtension = items.filter((i) => (versions.get(i.id) ?? []).find((v) => v.version === i.latest_version)?.extension_sha256 !=
|
|
846
|
-
null);
|
|
847
|
-
if (withExtension.length > 0) {
|
|
848
|
-
const enabled = await db
|
|
849
|
-
.selectFrom(enabledExtensionsByOrg(db).as("en"))
|
|
850
|
-
.select(["en.plugin", "en.org_id"])
|
|
851
|
-
.where("en.plugin", "in", withExtension.map((p) => p.name))
|
|
852
|
-
.execute();
|
|
853
|
-
for (const i of withExtension) {
|
|
854
|
-
for (const r of enabled)
|
|
855
|
-
if (r.plugin === i.name)
|
|
856
|
-
orgs.get(i.id)?.add(r.org_id);
|
|
541
|
+
.where("id", "=", itemId)
|
|
542
|
+
.where("deleted_at", "is", null)
|
|
543
|
+
.returning(["name", "awaiting_confirmation", "package_name", "owner_org_id"])
|
|
544
|
+
.executeTakeFirst();
|
|
545
|
+
if (!row)
|
|
546
|
+
return null;
|
|
547
|
+
// An org upload still waiting: free the name when nothing is installed under its claim
|
|
548
|
+
// (ruling P3-37, pre-flight F10). Under the install lock, so an install a running confirmation
|
|
549
|
+
// is committing is seen: that claim stays for its take-out or the cleanup job
|
|
550
|
+
if (row.awaiting_confirmation && row.package_name !== null) {
|
|
551
|
+
await this.installLock.lock(row.name);
|
|
552
|
+
await releaseExtensionClaim(t, row.name, row.package_name);
|
|
857
553
|
}
|
|
554
|
+
// Pending requests for a deleted item are pointless: cancel them in the same transaction
|
|
555
|
+
await cancelPendingRequests(t, { itemId }, actor, "item_removed", opts);
|
|
556
|
+
await audit(t, {
|
|
557
|
+
actorAccountId: actor,
|
|
558
|
+
...(opts.actorTokenId !== undefined && { actorTokenId: opts.actorTokenId }),
|
|
559
|
+
// an org-owned item's removal shows in its owner org's audit log too
|
|
560
|
+
...(row.owner_org_id !== null && { orgId: row.owner_org_id }),
|
|
561
|
+
action: "catalog.removed",
|
|
562
|
+
target: itemId,
|
|
563
|
+
detail: {
|
|
564
|
+
name: row.name,
|
|
565
|
+
...(row.owner_org_id !== null && { ownerOrgId: row.owner_org_id }),
|
|
566
|
+
...(opts.reason !== undefined && { reason: opts.reason }),
|
|
567
|
+
...opts.auditDetail,
|
|
568
|
+
},
|
|
569
|
+
});
|
|
570
|
+
return { name: row.name };
|
|
858
571
|
}
|
|
859
|
-
|
|
860
|
-
|
|
861
|
-
|
|
862
|
-
|
|
863
|
-
|
|
864
|
-
|
|
865
|
-
|
|
866
|
-
|
|
867
|
-
|
|
868
|
-
|
|
869
|
-
|
|
870
|
-
|
|
871
|
-
|
|
872
|
-
|
|
873
|
-
|
|
874
|
-
|
|
875
|
-
|
|
876
|
-
|
|
877
|
-
|
|
878
|
-
|
|
879
|
-
contentChanged: marketplace.contentChanged,
|
|
880
|
-
updatedAt: i.updated_at.toISOString(),
|
|
881
|
-
};
|
|
882
|
-
}
|
|
572
|
+
};
|
|
573
|
+
__decorate([
|
|
574
|
+
Transactional()
|
|
575
|
+
], CatalogService.prototype, "writeRemove", null);
|
|
576
|
+
__decorate([
|
|
577
|
+
Transactional({ propagation: "mandatory" })
|
|
578
|
+
], CatalogService.prototype, "removeIn", null);
|
|
579
|
+
CatalogService = __decorate([
|
|
580
|
+
Injectable(),
|
|
581
|
+
__param(0, Inject(KernelDb)),
|
|
582
|
+
__param(1, Inject(SuperAdminLock)),
|
|
583
|
+
__param(2, Inject(KernelConfigService)),
|
|
584
|
+
__param(3, Inject(ExtensionInstalls)),
|
|
585
|
+
__param(4, Inject(ExtensionAdmin)),
|
|
586
|
+
__param(5, Inject(PluginImport)),
|
|
587
|
+
__param(6, Inject(MarketplacesService)),
|
|
588
|
+
__param(7, Inject(PluginInstallLock)),
|
|
589
|
+
__param(8, Inject(TransactionHost))
|
|
590
|
+
], CatalogService);
|
|
591
|
+
export { CatalogService };
|