@capybara-hq/kernel 0.1.0-rc.4 → 0.1.0-rc.6
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 +61 -5
- package/dist/admin/admin.controller.d.ts +51 -14
- package/dist/admin/admin.controller.js +60 -19
- package/dist/admin/extensions.controller.d.ts +16 -2
- package/dist/admin/extensions.controller.js +26 -6
- package/dist/admin/setup-lock.d.ts +1 -1
- package/dist/admin/setup-lock.js +1 -1
- package/dist/admin/setup.controller.d.ts +1 -1
- package/dist/admin/setup.controller.js +1 -1
- package/dist/admin/setup.service.d.ts +4 -4
- package/dist/admin/setup.service.js +8 -8
- package/dist/agents/agent-lookup.d.ts +16 -0
- package/dist/agents/agent-lookup.js +11 -0
- package/dist/agents/agents.controller.d.ts +76 -1
- package/dist/agents/agents.controller.js +90 -11
- package/dist/agents/agents.module.d.ts +4 -1
- package/dist/agents/agents.module.js +32 -6
- package/dist/agents/agents.service.d.ts +54 -23
- package/dist/agents/agents.service.js +180 -76
- package/dist/agents/definition.d.ts +49 -0
- package/dist/agents/definition.js +45 -0
- package/dist/agents/from-template.d.ts +106 -0
- package/dist/agents/from-template.js +649 -0
- package/dist/agents/from-template.service.d.ts +60 -0
- package/dist/agents/from-template.service.js +161 -0
- package/dist/agents/models.controller.d.ts +34 -5
- package/dist/agents/models.controller.js +50 -6
- package/dist/agents/org-templates.d.ts +176 -0
- package/dist/agents/org-templates.js +827 -0
- package/dist/agents/pending-connector-requests.d.ts +77 -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/readiness.controller.d.ts +5 -5
- package/dist/agents/readiness.controller.js +6 -6
- package/dist/agents/templates.controller.d.ts +86 -5
- package/dist/agents/templates.controller.js +171 -7
- package/dist/agents/templates.d.ts +127 -23
- package/dist/agents/templates.js +475 -52
- package/dist/background/background.module.js +8 -1
- package/dist/background/finish.d.ts +3 -2
- package/dist/background/launch-lock.d.ts +4 -3
- package/dist/background/launch-lock.js +4 -3
- package/dist/background/poll.job.d.ts +9 -6
- package/dist/background/poll.job.js +30 -22
- package/dist/background/session.d.ts +13 -2
- package/dist/background/session.js +13 -0
- package/dist/background/stop.d.ts +12 -6
- package/dist/background/stop.js +57 -39
- package/dist/background/store.d.ts +18 -6
- package/dist/background/store.js +12 -6
- package/dist/background/tasks.service.d.ts +15 -5
- package/dist/background/tasks.service.js +42 -17
- package/dist/background/wake-rules.d.ts +27 -18
- package/dist/background/wake-rules.js +52 -22
- package/dist/background/wake.d.ts +13 -11
- package/dist/background/wake.js +20 -14
- package/dist/catalog/admin-catalog.controller.d.ts +129 -30
- package/dist/catalog/admin-catalog.controller.js +213 -42
- package/dist/catalog/catalog-content.d.ts +58 -32
- package/dist/catalog/catalog-content.js +34 -8
- 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 +111 -7
- package/dist/catalog/catalog-items.js +279 -13
- package/dist/catalog/catalog-scope.service.d.ts +260 -0
- package/dist/catalog/catalog-scope.service.js +1116 -0
- package/dist/catalog/catalog.module.d.ts +7 -9
- package/dist/catalog/catalog.module.js +41 -31
- package/dist/catalog/catalog.service.d.ts +101 -29
- package/dist/catalog/catalog.service.js +104 -106
- package/dist/catalog/cli.d.ts +11 -1
- package/dist/catalog/cli.js +26 -1
- package/dist/catalog/component-promotion.d.ts +96 -0
- package/dist/catalog/component-promotion.js +395 -0
- package/dist/catalog/component-scope.controller.d.ts +152 -0
- package/dist/catalog/component-scope.controller.js +287 -0
- package/dist/catalog/component-scope.service.d.ts +303 -0
- package/dist/catalog/component-scope.service.js +936 -0
- package/dist/catalog/component-state.d.ts +174 -0
- package/dist/catalog/component-state.js +437 -0
- package/dist/catalog/job-ids.d.ts +30 -0
- package/dist/catalog/job-ids.js +25 -0
- package/dist/catalog/marketplace-fetch.d.ts +1 -1
- package/dist/catalog/marketplaces.controller.d.ts +22 -5
- package/dist/catalog/marketplaces.controller.js +56 -7
- package/dist/catalog/marketplaces.service.d.ts +54 -14
- package/dist/catalog/marketplaces.service.js +71 -22
- package/dist/catalog/org-catalog.controller.d.ts +125 -34
- package/dist/catalog/org-catalog.controller.js +181 -65
- package/dist/catalog/org-catalog.service.d.ts +65 -33
- package/dist/catalog/org-catalog.service.js +324 -157
- 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 +119 -0
- package/dist/catalog/org-extension.controller.js +266 -0
- package/dist/catalog/org-plugin-uploads.controller.d.ts +98 -0
- package/dist/catalog/org-plugin-uploads.controller.js +213 -0
- package/dist/catalog/org-plugin-uploads.d.ts +63 -0
- package/dist/catalog/org-plugin-uploads.js +116 -0
- package/dist/catalog/owned-items.d.ts +184 -0
- package/dist/catalog/owned-items.js +789 -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 +221 -0
- package/dist/catalog/platform-components.js +761 -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 +178 -34
- package/dist/catalog/plugin-import.js +622 -82
- package/dist/catalog/plugin-install.d.ts +185 -41
- package/dist/catalog/plugin-install.js +758 -126
- package/dist/catalog/plugin-upgrade.d.ts +260 -225
- package/dist/catalog/plugin-upgrade.js +1147 -1136
- package/dist/catalog/request-rules.d.ts +65 -0
- package/dist/catalog/request-rules.js +217 -0
- package/dist/catalog/requests.service.d.ts +193 -118
- package/dist/catalog/requests.service.js +526 -343
- package/dist/catalog/reserved-names.d.ts +8 -0
- package/dist/catalog/reserved-names.js +42 -0
- package/dist/catalog/scope-orgs.d.ts +21 -0
- package/dist/catalog/scope-orgs.js +67 -0
- package/dist/catalog/scope-state.d.ts +35 -0
- package/dist/catalog/scope-state.js +87 -0
- package/dist/catalog/scope-sync-workers.d.ts +7 -0
- package/dist/catalog/scope-sync-workers.js +29 -0
- package/dist/catalog/scope-sync.d.ts +176 -0
- package/dist/catalog/scope-sync.js +576 -0
- package/dist/catalog/scope.d.ts +42 -0
- package/dist/catalog/scope.js +42 -0
- package/dist/catalog/unshare.d.ts +22 -0
- package/dist/catalog/unshare.js +118 -0
- package/dist/channels/actions.js +1 -0
- package/dist/channels/cards.js +20 -2
- package/dist/channels/channels.module.js +2 -0
- package/dist/channels/inbound.d.ts +9 -1
- package/dist/channels/inbound.js +67 -5
- package/dist/channels/phrases.d.ts +35 -0
- package/dist/channels/phrases.js +29 -0
- package/dist/config/docs.js +3 -1
- package/dist/config/schema.d.ts +10 -2
- package/dist/config/schema.js +70 -22
- package/dist/conversations/access.d.ts +6 -4
- package/dist/conversations/access.js +27 -5
- package/dist/conversations/agent-tree.d.ts +46 -0
- package/dist/conversations/agent-tree.js +92 -0
- package/dist/conversations/conversations.controller.d.ts +43 -18
- package/dist/conversations/conversations.controller.js +79 -38
- package/dist/conversations/conversations.module.d.ts +1 -1
- package/dist/conversations/conversations.module.js +7 -7
- package/dist/conversations/conversations.service.d.ts +73 -15
- package/dist/conversations/conversations.service.js +115 -35
- package/dist/conversations/environment-status.d.ts +24 -0
- package/dist/conversations/environment-status.js +71 -0
- package/dist/conversations/event-log.d.ts +20 -5
- package/dist/conversations/event-log.js +60 -0
- package/dist/conversations/events.d.ts +84 -2
- package/dist/conversations/events.js +91 -17
- package/dist/conversations/queue.service.d.ts +1 -1
- package/dist/conversations/queue.service.js +5 -0
- package/dist/conversations/titles.d.ts +5 -3
- package/dist/conversations/titles.js +21 -8
- package/dist/conversations/tree.d.ts +17 -0
- package/dist/conversations/tree.js +42 -0
- package/dist/ctx/create-ctx.d.ts +20 -1
- package/dist/ctx/create-ctx.js +38 -7
- package/dist/db/kernel-schema.d.ts +386 -18
- package/dist/environments/access.d.ts +41 -0
- package/dist/environments/access.js +77 -0
- package/dist/environments/conversation-environments.d.ts +61 -0
- package/dist/environments/conversation-environments.js +170 -0
- package/dist/environments/dto.d.ts +25 -0
- package/dist/environments/dto.js +12 -0
- package/dist/environments/environments.controller.d.ts +33 -0
- package/dist/environments/environments.controller.js +110 -0
- package/dist/environments/environments.module.d.ts +8 -0
- package/dist/environments/environments.module.js +27 -0
- package/dist/environments/environments.service.d.ts +153 -0
- package/dist/environments/environments.service.js +541 -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 +85 -2
- package/dist/errors.js +85 -2
- package/dist/evals/reconstruct.d.ts +18 -9
- package/dist/evals/reconstruct.js +26 -7
- package/dist/evals/run-replay.d.ts +4 -2
- package/dist/evals/run-replay.js +20 -6
- package/dist/evals/runs.service.d.ts +2 -1
- package/dist/evals/runs.service.js +13 -12
- package/dist/evals/step-replay.d.ts +4 -6
- package/dist/evals/step-replay.js +4 -3
- package/dist/evals/trajectory.service.d.ts +8 -3
- package/dist/evals/trajectory.service.js +26 -14
- package/dist/evals/worker.d.ts +5 -5
- package/dist/evals/worker.js +9 -3
- package/dist/extensions/admin-ops.d.ts +36 -10
- package/dist/extensions/admin-ops.js +65 -42
- package/dist/extensions/admin-view.d.ts +37 -10
- package/dist/extensions/admin-view.js +103 -20
- package/dist/extensions/bootstrap.d.ts +17 -4
- package/dist/extensions/bootstrap.js +70 -9
- package/dist/extensions/cli.d.ts +12 -0
- package/dist/extensions/cli.js +11 -2
- package/dist/extensions/config-hash.d.ts +10 -0
- package/dist/extensions/config-hash.js +38 -0
- package/dist/extensions/deployment-config.d.ts +28 -5
- package/dist/extensions/deployment-config.js +48 -7
- package/dist/extensions/effective-config.d.ts +127 -0
- package/dist/extensions/effective-config.js +368 -0
- package/dist/extensions/extensions.module.js +11 -11
- package/dist/extensions/hooks.d.ts +37 -4
- package/dist/extensions/hooks.js +82 -16
- package/dist/extensions/host.d.ts +24 -10
- package/dist/extensions/host.js +49 -54
- package/dist/extensions/installs.d.ts +20 -8
- package/dist/extensions/installs.js +37 -15
- package/dist/extensions/org-config.d.ts +75 -6
- package/dist/extensions/org-config.js +184 -32
- 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/permission-view.d.ts +16 -4
- package/dist/extensions/permission-view.js +4 -4
- package/dist/extensions/plugin-items.d.ts +21 -0
- package/dist/extensions/plugin-items.js +42 -0
- package/dist/extensions/point-defaults.d.ts +12 -5
- package/dist/extensions/point-defaults.js +37 -9
- package/dist/extensions/resolve.d.ts +5 -1
- package/dist/extensions/resolve.js +15 -2
- package/dist/extensions/state.module.d.ts +9 -0
- package/dist/extensions/state.module.js +38 -0
- package/dist/files/previewers.d.ts +8 -1
- package/dist/files/previewers.js +35 -6
- package/dist/http/api.module.js +25 -3
- package/dist/http/app.d.ts +11 -2
- package/dist/http/app.js +31 -5
- package/dist/http/plugin-dispatch.d.ts +4 -1
- package/dist/http/plugin-dispatch.js +14 -2
- package/dist/identity/accounts.d.ts +29 -29
- package/dist/identity/accounts.js +47 -47
- package/dist/identity/audit.d.ts +2 -1
- package/dist/identity/auth.guard.d.ts +13 -5
- package/dist/identity/auth.guard.js +26 -9
- package/dist/identity/identity.module.d.ts +1 -1
- package/dist/identity/identity.module.js +4 -4
- package/dist/identity/me.controller.js +1 -1
- package/dist/identity/principal.d.ts +3 -3
- package/dist/identity/principal.js +3 -3
- package/dist/identity/settings.d.ts +22 -11
- package/dist/identity/settings.js +53 -18
- package/dist/identity/{enterprise-admin.d.ts → super-admin.d.ts} +5 -5
- package/dist/identity/{enterprise-admin.js → super-admin.js} +24 -24
- package/dist/inbox/inbox.module.d.ts +4 -1
- package/dist/inbox/inbox.module.js +7 -3
- package/dist/inbox/inbox.service.d.ts +62 -3
- package/dist/inbox/inbox.service.js +74 -4
- package/dist/inbox/org-notices.d.ts +63 -0
- package/dist/inbox/org-notices.js +91 -0
- package/dist/inbox/platform-inbox.controller.d.ts +23 -0
- package/dist/inbox/platform-inbox.controller.js +58 -0
- package/dist/inbox/platform-inbox.service.d.ts +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 +1 -1
- package/dist/index.js +1 -1
- package/dist/infra/cli/kernel-cli.module.js +9 -1
- package/dist/infra/config/kernel-config.service.js +24 -1
- package/dist/infra/database/xact-lock.d.ts +1 -1
- package/dist/infra/database/xact-lock.js +1 -1
- package/dist/infra/events/kernel-events.d.ts +19 -2
- package/dist/infra/queue/add-job-once.d.ts +14 -0
- package/dist/infra/queue/add-job-once.js +16 -0
- package/dist/kernel.module.js +6 -0
- package/dist/lifecycle/kernel-lifecycle.d.ts +1 -1
- package/dist/lifecycle/kernel-lifecycle.js +4 -4
- 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 +99 -0
- package/dist/models/enablement.js +263 -0
- package/dist/models/models.module.d.ts +5 -1
- package/dist/models/models.module.js +16 -4
- package/dist/models/prices.d.ts +5 -5
- package/dist/models/prices.js +4 -4
- package/dist/models/purposes.controller.d.ts +6 -4
- package/dist/models/purposes.controller.js +13 -7
- package/dist/models/purposes.d.ts +37 -12
- package/dist/models/purposes.js +63 -17
- package/dist/orgs/directory-sync.d.ts +14 -5
- package/dist/orgs/directory-sync.js +41 -17
- package/dist/orgs/offboarding.d.ts +9 -7
- package/dist/orgs/offboarding.js +28 -17
- package/dist/orgs/org-lock.d.ts +5 -0
- package/dist/orgs/org-lock.js +13 -0
- package/dist/orgs/org.guard.d.ts +10 -0
- package/dist/orgs/org.guard.js +43 -32
- package/dist/orgs/orgs.module.js +3 -0
- package/dist/orgs/orgs.service.d.ts +20 -7
- package/dist/orgs/orgs.service.js +32 -12
- package/dist/orgs/roles.d.ts +1 -1
- package/dist/orgs/roles.js +5 -1
- package/dist/orgs/settings.controller.d.ts +1 -1
- package/dist/orgs/settings.service.d.ts +15 -3
- package/dist/orgs/settings.service.js +6 -2
- package/dist/overrides.d.ts +3 -0
- package/dist/overrides.js +2 -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 +11 -0
- package/dist/platform/errors.js +26 -0
- package/dist/platform/exclusions.d.ts +12 -0
- package/dist/platform/exclusions.js +1405 -0
- package/dist/platform/method.d.ts +6 -0
- package/dist/platform/method.js +15 -0
- package/dist/platform/operation.d.ts +92 -0
- package/dist/platform/operation.js +35 -0
- package/dist/platform/ops/agent-templates.ops.d.ts +14 -0
- package/dist/platform/ops/agent-templates.ops.js +92 -0
- package/dist/platform/ops/agents.ops.d.ts +19 -0
- package/dist/platform/ops/agents.ops.js +294 -0
- package/dist/platform/ops/connectors.ops.d.ts +15 -0
- package/dist/platform/ops/connectors.ops.js +126 -0
- package/dist/platform/ops/errors.d.ts +11 -0
- package/dist/platform/ops/errors.js +22 -0
- package/dist/platform/ops/extensions.ops.d.ts +19 -0
- package/dist/platform/ops/extensions.ops.js +116 -0
- package/dist/platform/ops/marketplaces.ops.d.ts +16 -0
- package/dist/platform/ops/marketplaces.ops.js +157 -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 +23 -0
- package/dist/platform/ops/platform.ops.js +158 -0
- package/dist/platform/ops/plugins.ops.d.ts +33 -0
- package/dist/platform/ops/plugins.ops.js +377 -0
- package/dist/platform/ops/requests.ops.d.ts +14 -0
- package/dist/platform/ops/requests.ops.js +153 -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 +13 -0
- package/dist/platform/ops/skills.ops.js +98 -0
- package/dist/platform/ops/summary.d.ts +10 -0
- package/dist/platform/ops/summary.js +18 -0
- package/dist/platform/platform-ops.module.d.ts +7 -0
- package/dist/platform/platform-ops.module.js +55 -0
- package/dist/platform/platform.module.d.ts +8 -0
- package/dist/platform/platform.module.js +25 -0
- package/dist/platform/redact-orgs.d.ts +7 -0
- package/dist/platform/redact-orgs.js +52 -0
- package/dist/platform/registry.d.ts +30 -0
- package/dist/platform/registry.js +111 -0
- package/dist/roles/worker-role.d.ts +6 -4
- package/dist/roles/worker-role.js +14 -7
- package/dist/roles/worker.module.d.ts +1 -1
- package/dist/roles/worker.module.js +9 -1
- package/dist/runtime/context/build.d.ts +6 -4
- package/dist/runtime/context/build.js +26 -7
- package/dist/runtime/context/claude-tools.d.ts +2 -1
- package/dist/runtime/context/claude-tools.js +5 -4
- package/dist/runtime/context/compaction.js +9 -0
- package/dist/runtime/context/reminders.d.ts +2 -0
- package/dist/runtime/context/reminders.js +2 -0
- package/dist/runtime/context/skills.js +9 -2
- package/dist/runtime/context/tool-changes.d.ts +27 -0
- package/dist/runtime/context/tool-changes.js +60 -0
- package/dist/runtime/hook-calls.d.ts +8 -1
- package/dist/runtime/hook-calls.js +40 -7
- package/dist/runtime/langgraph-loop.d.ts +3 -1
- package/dist/runtime/langgraph-loop.js +35 -17
- package/dist/runtime/loop.d.ts +32 -4
- package/dist/runtime/maintenance.d.ts +7 -4
- package/dist/runtime/maintenance.js +23 -8
- package/dist/runtime/model-call.d.ts +38 -11
- package/dist/runtime/model-call.js +97 -24
- package/dist/runtime/providers.d.ts +146 -32
- package/dist/runtime/providers.js +321 -67
- package/dist/runtime/run-control.d.ts +11 -1
- package/dist/runtime/run-control.js +12 -0
- package/dist/runtime/run-drafts.d.ts +85 -0
- package/dist/runtime/run-drafts.js +230 -0
- package/dist/runtime/run-jobs.d.ts +3 -5
- package/dist/runtime/run-jobs.js +3 -7
- package/dist/runtime/run-queue.d.ts +37 -3
- package/dist/runtime/run-queue.js +188 -11
- package/dist/runtime/run-worker.d.ts +12 -6
- package/dist/runtime/run-worker.js +58 -35
- package/dist/runtime/runtime.module.js +3 -0
- package/dist/runtime/step-log.d.ts +9 -4
- package/dist/runtime/step-log.js +8 -5
- package/dist/runtime/stream.controller.d.ts +23 -1
- package/dist/runtime/stream.controller.js +60 -3
- package/dist/runtime/stream.d.ts +4 -1
- package/dist/runtime/stream.js +27 -3
- package/dist/runtime/subagents/child.d.ts +55 -7
- package/dist/runtime/subagents/child.js +105 -7
- package/dist/runtime/subagents/definition.d.ts +12 -3
- package/dist/runtime/subagents/definition.js +46 -32
- package/dist/runtime/subagents/deliveries.d.ts +71 -0
- package/dist/runtime/subagents/deliveries.js +228 -0
- package/dist/runtime/subagents/dispatch.d.ts +115 -26
- package/dist/runtime/subagents/dispatch.js +212 -141
- package/dist/runtime/subagents/limits.d.ts +24 -5
- package/dist/runtime/subagents/limits.js +40 -6
- package/dist/runtime/subagents/messages.d.ts +95 -0
- package/dist/runtime/subagents/messages.js +328 -0
- package/dist/runtime/subagents/preamble.d.ts +4 -4
- package/dist/runtime/subagents/preamble.js +9 -7
- package/dist/runtime/subagents/progress.d.ts +8 -6
- package/dist/runtime/subagents/progress.js +11 -6
- package/dist/runtime/subagents/render.d.ts +30 -0
- package/dist/runtime/subagents/render.js +53 -0
- package/dist/runtime/subagents/roster.d.ts +24 -7
- package/dist/runtime/subagents/roster.js +47 -11
- package/dist/runtime/subagents/skill-fork.d.ts +3 -2
- package/dist/runtime/subagents/skill-fork.js +8 -4
- 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 +7 -4
- package/dist/runtime/subagents/subagents.service.js +11 -6
- 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 +33 -38
- package/dist/runtime/usage-report.js +169 -96
- package/dist/runtime/waits.d.ts +140 -37
- package/dist/runtime/waits.js +394 -106
- package/dist/sandbox/jobs.d.ts +40 -13
- package/dist/sandbox/jobs.js +57 -20
- package/dist/sandbox/leases.d.ts +37 -54
- package/dist/sandbox/leases.js +71 -115
- package/dist/sandbox/providers.d.ts +2 -2
- package/dist/sandbox/providers.js +1 -1
- package/dist/sandbox/sandbox.module.d.ts +3 -2
- package/dist/sandbox/sandbox.module.js +4 -3
- package/dist/sandbox/sandbox.service.d.ts +229 -134
- package/dist/sandbox/sandbox.service.js +630 -409
- package/dist/skills/catalog.d.ts +3 -2
- package/dist/skills/catalog.js +21 -43
- package/dist/skills/changes.controller.d.ts +7 -0
- package/dist/skills/changes.controller.js +19 -1
- package/dist/skills/invoke.js +8 -3
- package/dist/skills/package.d.ts +20 -1
- package/dist/skills/package.js +28 -1
- package/dist/skills/skills.controller.d.ts +39 -4
- package/dist/skills/skills.controller.js +88 -10
- package/dist/skills/skills.module.js +10 -1
- package/dist/skills/skills.service.d.ts +106 -26
- package/dist/skills/skills.service.js +421 -75
- package/dist/skills/usable.d.ts +81 -0
- package/dist/skills/usable.js +379 -0
- package/dist/tools/approvals.service.d.ts +20 -2
- package/dist/tools/approvals.service.js +23 -4
- package/dist/tools/builtin-names.d.ts +21 -5
- package/dist/tools/builtin-names.js +30 -5
- package/dist/tools/builtins/agent.d.ts +23 -21
- package/dist/tools/builtins/agent.js +62 -55
- package/dist/tools/builtins/builtin-tools.d.ts +6 -2
- package/dist/tools/builtins/builtin-tools.js +37 -12
- package/dist/tools/builtins/handback.d.ts +28 -0
- package/dist/tools/builtins/handback.js +53 -0
- package/dist/tools/builtins/platform.d.ts +34 -0
- package/dist/tools/builtins/platform.js +362 -0
- package/dist/tools/builtins/sandbox/bash.js +13 -3
- package/dist/tools/builtins/sandbox/common.d.ts +43 -24
- package/dist/tools/builtins/sandbox/common.js +80 -45
- package/dist/tools/builtins/sandbox/edit.js +2 -2
- package/dist/tools/builtins/sandbox/glob.js +2 -2
- package/dist/tools/builtins/sandbox/grep.js +2 -4
- package/dist/tools/builtins/sandbox/index.d.ts +1 -1
- package/dist/tools/builtins/sandbox/index.js +1 -1
- package/dist/tools/builtins/sandbox/read.js +1 -1
- package/dist/tools/builtins/sandbox/task-output.d.ts +14 -3
- package/dist/tools/builtins/sandbox/task-output.js +30 -5
- package/dist/tools/builtins/sandbox/task-stop.js +2 -1
- package/dist/tools/builtins/sandbox/write.js +2 -2
- 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 +22 -14
- package/dist/tools/builtins/skill-load.js +86 -57
- package/dist/tools/builtins/skill-write.js +1 -1
- package/dist/tools/builtins/web/extract.js +5 -1
- package/dist/tools/builtins/web/fetch.js +1 -0
- package/dist/tools/builtins/web/search.js +1 -0
- package/dist/tools/connectors.controller.d.ts +10 -0
- package/dist/tools/connectors.controller.js +12 -0
- package/dist/tools/connectors.service.d.ts +46 -5
- package/dist/tools/connectors.service.js +94 -15
- 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 +42 -1
- package/dist/tools/info.js +64 -1
- package/dist/tools/org-tool-switches.d.ts +74 -0
- package/dist/tools/org-tool-switches.js +184 -0
- package/dist/tools/pipeline.d.ts +46 -40
- package/dist/tools/pipeline.js +193 -364
- package/dist/tools/policy.d.ts +1 -1
- package/dist/tools/policy.js +36 -16
- package/dist/tools/registry.d.ts +98 -5
- package/dist/tools/registry.js +87 -9
- package/dist/tools/tools.module.js +12 -2
- package/dist/ui/views.d.ts +2 -1
- package/dist/ui/views.js +17 -3
- package/package.json +3 -3
- 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/dist/catalog/upgrade-targets.d.ts +0 -56
- package/dist/catalog/upgrade-targets.js +0 -90
- package/dist/conversations/sandbox-status.d.ts +0 -24
- package/dist/conversations/sandbox-status.js +0 -52
- package/dist/extensions/org-config.controller.d.ts +0 -32
- package/dist/extensions/org-config.controller.js +0 -70
|
@@ -2,18 +2,31 @@ import type { FastifyReply } from "fastify";
|
|
|
2
2
|
import { z } from "zod";
|
|
3
3
|
import { type Principal } from "../identity/principal.js";
|
|
4
4
|
import { type OrgContext } from "../orgs/org.guard.js";
|
|
5
|
-
import type {
|
|
5
|
+
import type { ConnectorDetail, ToolIssue } from "../tools/connectors.service.js";
|
|
6
|
+
import type { MarketplaceImportResult } from "./catalog.service.js";
|
|
7
|
+
import type { CatalogIcon, OrgCatalogDetail, OrgCatalogItem, OrgInstallResult } from "./catalog-content.js";
|
|
6
8
|
import { OrgCatalogService } from "./org-catalog.service.js";
|
|
7
|
-
import { PluginInstaller, type PluginInstallView, type UninstallReport } from "./plugin-install.js";
|
|
8
|
-
import type { UpgradePreview } from "./plugin-upgrade.js";
|
|
9
|
+
import { PluginInstaller, type PluginInstallView, type UninstallPreview, type UninstallReport } from "./plugin-install.js";
|
|
9
10
|
import { CatalogRequestsService, type CatalogRequestView } from "./requests.service.js";
|
|
10
11
|
declare const RequestBody: z.ZodObject<{
|
|
12
|
+
kind: z.ZodEnum<{
|
|
13
|
+
access: "access";
|
|
14
|
+
enable: "enable";
|
|
15
|
+
}>;
|
|
16
|
+
note: z.ZodOptional<z.ZodString>;
|
|
17
|
+
}, z.core.$strict>;
|
|
18
|
+
/** An org admin's request for a marketplace entry not in the catalog yet. */
|
|
19
|
+
declare const MarketplaceRequestBody: z.ZodObject<{
|
|
20
|
+
marketplaceId: z.ZodString;
|
|
21
|
+
name: z.ZodString;
|
|
22
|
+
version: z.ZodString;
|
|
11
23
|
note: z.ZodOptional<z.ZodString>;
|
|
12
|
-
version: z.ZodOptional<z.ZodString>;
|
|
13
24
|
}, z.core.$strict>;
|
|
14
|
-
/**
|
|
25
|
+
/**
|
|
26
|
+
* The org install body: template input, the extension's org config. No version: an org installs the
|
|
27
|
+
* platform version (one per deployment, ruling P2-17).
|
|
28
|
+
*/
|
|
15
29
|
declare const InstallBody: z.ZodObject<{
|
|
16
|
-
version: z.ZodOptional<z.ZodString>;
|
|
17
30
|
connectors: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodObject<{
|
|
18
31
|
name: z.ZodOptional<z.ZodString>;
|
|
19
32
|
slug: z.ZodOptional<z.ZodString>;
|
|
@@ -26,16 +39,28 @@ declare const InstallBody: z.ZodObject<{
|
|
|
26
39
|
}, z.core.$strict>>>;
|
|
27
40
|
extensionConfig: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
|
|
28
41
|
}, z.core.$strict>;
|
|
29
|
-
/** The
|
|
30
|
-
declare const
|
|
31
|
-
|
|
42
|
+
/** The connectors body (ruling P2-10): the input of missing connectors, by template id, as at install. */
|
|
43
|
+
declare const ConnectorsBody: z.ZodObject<{
|
|
44
|
+
inputs: z.ZodObject<{
|
|
45
|
+
connectors: z.ZodRecord<z.ZodString, z.ZodObject<{
|
|
46
|
+
name: z.ZodOptional<z.ZodString>;
|
|
47
|
+
slug: z.ZodOptional<z.ZodString>;
|
|
48
|
+
endpoint: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
|
|
49
|
+
credential: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
|
|
50
|
+
client: z.ZodOptional<z.ZodObject<{
|
|
51
|
+
clientId: z.ZodString;
|
|
52
|
+
clientSecret: z.ZodOptional<z.ZodString>;
|
|
53
|
+
}, z.core.$strict>>;
|
|
54
|
+
}, z.core.$strict>>;
|
|
55
|
+
}, z.core.$strict>;
|
|
32
56
|
}, z.core.$strict>;
|
|
33
|
-
/**
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
57
|
+
/**
|
|
58
|
+
* One more connector from a platform connector template (ruling P4-T6-8): its name and an
|
|
59
|
+
* install's connector input (`config`).
|
|
60
|
+
*/
|
|
61
|
+
declare const TemplateConnectorBody: z.ZodObject<{
|
|
62
|
+
name: z.ZodOptional<z.ZodString>;
|
|
63
|
+
config: z.ZodObject<{
|
|
39
64
|
slug: z.ZodOptional<z.ZodString>;
|
|
40
65
|
endpoint: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
|
|
41
66
|
credential: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
|
|
@@ -43,8 +68,25 @@ declare const UpgradeBody: z.ZodObject<{
|
|
|
43
68
|
clientId: z.ZodString;
|
|
44
69
|
clientSecret: z.ZodOptional<z.ZodString>;
|
|
45
70
|
}, z.core.$strict>>;
|
|
46
|
-
}, z.core.$strict
|
|
47
|
-
|
|
71
|
+
}, z.core.$strict>;
|
|
72
|
+
}, z.core.$strict>;
|
|
73
|
+
/** The switch body: on (with the install inputs), or off (with the preview's hash to confirm). */
|
|
74
|
+
declare const SwitchBody: z.ZodObject<{
|
|
75
|
+
enabled: z.ZodBoolean;
|
|
76
|
+
inputs: z.ZodOptional<z.ZodObject<{
|
|
77
|
+
connectors: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodObject<{
|
|
78
|
+
name: z.ZodOptional<z.ZodString>;
|
|
79
|
+
slug: z.ZodOptional<z.ZodString>;
|
|
80
|
+
endpoint: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
|
|
81
|
+
credential: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
|
|
82
|
+
client: z.ZodOptional<z.ZodObject<{
|
|
83
|
+
clientId: z.ZodString;
|
|
84
|
+
clientSecret: z.ZodOptional<z.ZodString>;
|
|
85
|
+
}, z.core.$strict>>;
|
|
86
|
+
}, z.core.$strict>>>;
|
|
87
|
+
extensionConfig: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
|
|
88
|
+
}, z.core.$strict>>;
|
|
89
|
+
confirm: z.ZodOptional<z.ZodString>;
|
|
48
90
|
}, z.core.$strict>;
|
|
49
91
|
/**
|
|
50
92
|
* 条目图标的响应头:图标可能是 SVG(可含脚本),只许网页以 `<img>` 显示;直接打开时 CSP sandbox 禁止脚本与一切外部
|
|
@@ -52,10 +94,8 @@ declare const UpgradeBody: z.ZodObject<{
|
|
|
52
94
|
*/
|
|
53
95
|
export declare function sendCatalogIcon(reply: FastifyReply, icon: CatalogIcon): Promise<void>;
|
|
54
96
|
declare const DecideBody: z.ZodObject<{
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
reject: "reject";
|
|
58
|
-
}>;
|
|
97
|
+
approve: z.ZodBoolean;
|
|
98
|
+
reason: z.ZodOptional<z.ZodString>;
|
|
59
99
|
}, z.core.$strict>;
|
|
60
100
|
declare const AdminListQuery: z.ZodObject<{
|
|
61
101
|
status: z.ZodOptional<z.ZodEnum<{
|
|
@@ -66,21 +106,27 @@ declare const AdminListQuery: z.ZodObject<{
|
|
|
66
106
|
}>>;
|
|
67
107
|
}, z.core.$strip>;
|
|
68
108
|
/**
|
|
69
|
-
* The
|
|
109
|
+
* The platform catalog from an organization's view (`/api/v1/orgs/:orgId/...`, human users only):
|
|
70
110
|
* - `GET catalog` (`catalog.read`, member and up; members do not see disabled items);
|
|
71
|
-
* - `POST catalog/:itemId/requests` (`catalog.request`
|
|
72
|
-
* inbox
|
|
73
|
-
*
|
|
111
|
+
* - `POST catalog/:itemId/requests` (`catalog.request`; `access` needs an org admin): requests
|
|
112
|
+
* under plugin scope (spec §5.1), `enable` into the org admins' inbox, `access` to the super
|
|
113
|
+
* admin; `POST marketplace-requests` (org admins): an `import` request for a marketplace entry;
|
|
114
|
+
* - `PUT catalog/:itemId/switch` (scope phase 1): `{ enabled: true, inputs? }` installs -> 200 `{ item }`;
|
|
115
|
+
* `{ enabled: false, confirm? }` -> 200 `{ preview, confirm }`, then with the hash 200 `{ item }`;
|
|
116
|
+
* - `POST catalog/:itemId/install` (an alias of switching on, no longer creates requests): the route only requires `catalog.read`; the service re-checks
|
|
74
117
|
* the plugin's component actions (`org.extensions.manage` for an extension, `connectors.manage`
|
|
75
118
|
* for templates, `skills.manage` for skills) inside the org row lock; needs_approval without a
|
|
76
119
|
* grant -> 202 `{ request }`, otherwise 201 `{ installed, install }` (the install view);
|
|
77
120
|
* - `GET / DELETE plugin-installs[/:installId]` (`org.extensions.manage`; uninstall re-checks the
|
|
78
121
|
* plugin's component actions in the service);
|
|
79
|
-
* -
|
|
80
|
-
*
|
|
81
|
-
*
|
|
82
|
-
*
|
|
83
|
-
* - `POST catalog-requests/:id/decide` (`catalog.decide`, org admins
|
|
122
|
+
* - no per-org upgrade: a platform plugin has one version for the deployment, updated by the super
|
|
123
|
+
* admin (`PUT /admin/catalog/items/:id/update`, ruling F2);
|
|
124
|
+
* - `POST connector-templates/:templateId/connectors` (`connectors.manage`): one more connector
|
|
125
|
+
* from a platform connector template on in the org (ruling P4-T6-8);
|
|
126
|
+
* - `POST catalog-requests/:id/decide` (`catalog.decide`, org admins; `enable` and
|
|
127
|
+
* `connector_setup` requests, `{ approve, reason? }`; a `connector_setup` request is only
|
|
128
|
+
* rejected here, ruling P4-T6-6), `POST catalog-requests/:id/dismiss` (the requester, a decided
|
|
129
|
+
* request).
|
|
84
130
|
*/
|
|
85
131
|
export declare class OrgCatalogController {
|
|
86
132
|
private readonly catalog;
|
|
@@ -100,22 +146,66 @@ export declare class OrgCatalogController {
|
|
|
100
146
|
* -> 404 `catalog.icon_not_found`; members do not see disabled items.
|
|
101
147
|
*/
|
|
102
148
|
icon(org: OrgContext, itemId: string, reply: FastifyReply): Promise<void>;
|
|
149
|
+
/**
|
|
150
|
+
* A request for an item (spec §5.1): `enable` (members and up, an item that is off) or `access`
|
|
151
|
+
* (org admins, a `named` item shown to the org) -> 201 `{ request }`.
|
|
152
|
+
*/
|
|
103
153
|
request(principal: Principal, org: OrgContext, itemId: string, body: z.infer<typeof RequestBody>): Promise<{
|
|
104
154
|
request: CatalogRequestView;
|
|
105
|
-
|
|
155
|
+
}>;
|
|
156
|
+
/**
|
|
157
|
+
* An org admin asks for a marketplace entry to be imported (deployment setting
|
|
158
|
+
* `orgMarketplaceBrowse`) -> 201 `{ request }`.
|
|
159
|
+
*/
|
|
160
|
+
marketplaceRequest(principal: Principal, org: OrgContext, body: z.infer<typeof MarketplaceRequestBody>): Promise<{
|
|
161
|
+
request: CatalogRequestView;
|
|
162
|
+
}>;
|
|
163
|
+
setSwitch(principal: Principal, org: OrgContext, itemId: string, body: z.infer<typeof SwitchBody>): Promise<{
|
|
164
|
+
item: OrgCatalogItem;
|
|
165
|
+
} | {
|
|
166
|
+
preview: UninstallPreview;
|
|
167
|
+
confirm: string;
|
|
106
168
|
}>;
|
|
107
169
|
install(principal: Principal, org: OrgContext, itemId: string, body: z.infer<typeof InstallBody>, reply: FastifyReply): Promise<Omit<OrgInstallResult, "status">>;
|
|
170
|
+
/**
|
|
171
|
+
* Creates the connectors an installed plugin is missing (ruling P2-10: a connector template on
|
|
172
|
+
* in the org without a connector there, e.g. added by a platform update; the plugin shows
|
|
173
|
+
* `needs_config`): `{ inputs: { connectors: { <templateId>: input } } }` with the same input
|
|
174
|
+
* checks as an install; recorded on the install -> 201 `{ connectors: [{ templateId,
|
|
175
|
+
* connectorId }] }`. Not installed -> 404 `plugin.install_not_found`; a template not missing ->
|
|
176
|
+
* 400 `validation_failed`.
|
|
177
|
+
*/
|
|
178
|
+
configureConnectors(principal: Principal, org: OrgContext, itemId: string, body: z.infer<typeof ConnectorsBody>): Promise<{
|
|
179
|
+
connectors: {
|
|
180
|
+
templateId: string;
|
|
181
|
+
connectorId: string;
|
|
182
|
+
}[];
|
|
183
|
+
}>;
|
|
184
|
+
/**
|
|
185
|
+
* One more connector from a platform connector template on in the org (rulings P4-7, P4-T6-8):
|
|
186
|
+
* `{ name?, config: { slug?, endpoint?, credential?, client? } }` with the checks of an install
|
|
187
|
+
* -> 201 `{ connector, issues }` (as `POST connectors`). A template not usable in the org -> 404
|
|
188
|
+
* `component.not_found`; off there -> 409 `component.off`; input errors -> 400 at `config.*`.
|
|
189
|
+
*/
|
|
190
|
+
templateConnector(principal: Principal, org: OrgContext, templateId: string, body: z.infer<typeof TemplateConnectorBody>): Promise<{
|
|
191
|
+
connector: ConnectorDetail;
|
|
192
|
+
issues: ToolIssue[];
|
|
193
|
+
}>;
|
|
108
194
|
listInstalls(org: OrgContext): Promise<{
|
|
109
195
|
installs: PluginInstallView[];
|
|
110
196
|
}>;
|
|
111
197
|
uninstall(principal: Principal, org: OrgContext, installId: string): Promise<UninstallReport>;
|
|
112
|
-
upgradePreview(principal: Principal, org: OrgContext, installId: string, body: z.infer<typeof UpgradePreviewBody>): Promise<UpgradePreview>;
|
|
113
|
-
upgrade(principal: Principal, org: OrgContext, installId: string, body: z.infer<typeof UpgradeBody>, reply: FastifyReply): Promise<Omit<OrgUpgradeResult, "status">>;
|
|
114
198
|
decide(principal: Principal, org: OrgContext, id: string, body: z.infer<typeof DecideBody>): Promise<{
|
|
115
199
|
request: CatalogRequestView;
|
|
116
200
|
}>;
|
|
201
|
+
/** The requester dismisses a decided request from the inbox -> 204. */
|
|
202
|
+
dismiss(principal: Principal, org: OrgContext, id: string): Promise<void>;
|
|
117
203
|
}
|
|
118
|
-
/**
|
|
204
|
+
/**
|
|
205
|
+
* Super admins decide `access` and `import` requests (`/api/v1/admin/catalog/requests`):
|
|
206
|
+
* approving an `import` returns the prepared import (`import: { stagingId, review, ... }`), confirmed
|
|
207
|
+
* with `POST /api/v1/admin/catalog/imports/:stagingId/confirm`.
|
|
208
|
+
*/
|
|
119
209
|
export declare class AdminCatalogRequestsController {
|
|
120
210
|
private readonly requests;
|
|
121
211
|
constructor(requests: CatalogRequestsService);
|
|
@@ -124,6 +214,7 @@ export declare class AdminCatalogRequestsController {
|
|
|
124
214
|
}>;
|
|
125
215
|
decide(principal: Principal, id: string, body: z.infer<typeof DecideBody>): Promise<{
|
|
126
216
|
request: CatalogRequestView;
|
|
217
|
+
import?: MarketplaceImportResult;
|
|
127
218
|
}>;
|
|
128
219
|
}
|
|
129
220
|
export {};
|
|
@@ -7,21 +7,30 @@ var __decorate = (this && this.__decorate) || function (decorators, target, key,
|
|
|
7
7
|
var __param = (this && this.__param) || function (paramIndex, decorator) {
|
|
8
8
|
return function (target, key) { decorator(target, key, paramIndex); }
|
|
9
9
|
};
|
|
10
|
-
import { Controller, Delete, Get, HttpCode, Inject, Param, Post, Res } from "@nestjs/common";
|
|
10
|
+
import { Controller, Delete, Get, HttpCode, Inject, Param, Post, Put, Res } from "@nestjs/common";
|
|
11
11
|
import { z } from "zod";
|
|
12
|
-
import { CurrentPrincipal,
|
|
12
|
+
import { CurrentPrincipal, patTokenId, requireUser, SuperAdmin, } from "../identity/principal.js";
|
|
13
13
|
import { createZodDto } from "../infra/validation/create-zod-dto.js";
|
|
14
14
|
import { ZBody, ZQuery } from "../infra/validation/zod-params.js";
|
|
15
15
|
import { CurrentOrg, OrgAction } from "../orgs/org.guard.js";
|
|
16
16
|
import { roleAtLeast } from "../orgs/roles.js";
|
|
17
17
|
import { CredentialValue } from "../tools/connectors.controller.js";
|
|
18
18
|
import { OrgCatalogService } from "./org-catalog.service.js";
|
|
19
|
-
import { PluginInstaller } from "./plugin-install.js";
|
|
19
|
+
import { PluginInstaller, } from "./plugin-install.js";
|
|
20
20
|
import { CatalogRequestsService } from "./requests.service.js";
|
|
21
21
|
const RequestBody = z
|
|
22
22
|
.object({
|
|
23
|
+
kind: z.enum(["access", "enable"]),
|
|
24
|
+
note: z.string().max(1000).optional(),
|
|
25
|
+
})
|
|
26
|
+
.strict();
|
|
27
|
+
/** An org admin's request for a marketplace entry not in the catalog yet. */
|
|
28
|
+
const MarketplaceRequestBody = z
|
|
29
|
+
.object({
|
|
30
|
+
marketplaceId: z.string().min(1).max(100),
|
|
31
|
+
name: z.string().min(1).max(214),
|
|
32
|
+
version: z.string().min(1).max(256),
|
|
23
33
|
note: z.string().max(1000).optional(),
|
|
24
|
-
version: z.string().min(1).max(256).optional(),
|
|
25
34
|
})
|
|
26
35
|
.strict();
|
|
27
36
|
const ConnectorInput = z
|
|
@@ -39,23 +48,41 @@ const ConnectorInput = z
|
|
|
39
48
|
.optional(),
|
|
40
49
|
})
|
|
41
50
|
.strict();
|
|
42
|
-
/**
|
|
51
|
+
/**
|
|
52
|
+
* The org install body: template input, the extension's org config. No version: an org installs the
|
|
53
|
+
* platform version (one per deployment, ruling P2-17).
|
|
54
|
+
*/
|
|
43
55
|
const InstallBody = z
|
|
44
56
|
.object({
|
|
45
|
-
version: z.string().min(1).max(256).optional(),
|
|
46
57
|
connectors: z.record(z.string(), ConnectorInput).optional(),
|
|
47
58
|
extensionConfig: z.record(z.string(), z.unknown()).optional(),
|
|
48
59
|
})
|
|
49
60
|
.strict();
|
|
50
|
-
/** The
|
|
51
|
-
const
|
|
52
|
-
/** The upgrade body: the target version, the preview's diffHash, the inputs it listed. */
|
|
53
|
-
const UpgradeBody = z
|
|
61
|
+
/** The connectors body (ruling P2-10): the input of missing connectors, by template id, as at install. */
|
|
62
|
+
const ConnectorsBody = z
|
|
54
63
|
.object({
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
64
|
+
inputs: z.object({ connectors: z.record(z.string(), ConnectorInput) }).strict(),
|
|
65
|
+
})
|
|
66
|
+
.strict();
|
|
67
|
+
/**
|
|
68
|
+
* One more connector from a platform connector template (ruling P4-T6-8): its name and an
|
|
69
|
+
* install's connector input (`config`).
|
|
70
|
+
*/
|
|
71
|
+
const TemplateConnectorBody = z
|
|
72
|
+
.object({
|
|
73
|
+
name: z.string().trim().min(1).max(80).optional(),
|
|
74
|
+
config: ConnectorInput.omit({ name: true }),
|
|
75
|
+
})
|
|
76
|
+
.strict();
|
|
77
|
+
/** The switch body: on (with the install inputs), or off (with the preview's hash to confirm). */
|
|
78
|
+
const SwitchBody = z
|
|
79
|
+
.object({
|
|
80
|
+
enabled: z.boolean(),
|
|
81
|
+
inputs: InstallBody.optional(),
|
|
82
|
+
confirm: z
|
|
83
|
+
.string()
|
|
84
|
+
.regex(/^[0-9a-f]{64}$/)
|
|
85
|
+
.optional(),
|
|
59
86
|
})
|
|
60
87
|
.strict();
|
|
61
88
|
/**
|
|
@@ -70,7 +97,9 @@ export async function sendCatalogIcon(reply, icon) {
|
|
|
70
97
|
.header("cache-control", "private, max-age=300")
|
|
71
98
|
.send(Buffer.from(icon.data.buffer, icon.data.byteOffset, icon.data.byteLength));
|
|
72
99
|
}
|
|
73
|
-
const DecideBody = z
|
|
100
|
+
const DecideBody = z
|
|
101
|
+
.object({ approve: z.boolean(), reason: z.string().max(1000).optional() })
|
|
102
|
+
.strict();
|
|
74
103
|
const AdminListQuery = z.object({
|
|
75
104
|
status: z.enum(["pending", "approved", "rejected", "cancelled"]).optional(),
|
|
76
105
|
});
|
|
@@ -80,28 +109,38 @@ class CatalogDecideBody extends createZodDto(DecideBody, "CatalogDecideBody") {
|
|
|
80
109
|
}
|
|
81
110
|
class OrgPluginInstallBody extends createZodDto(InstallBody, "OrgPluginInstallBody") {
|
|
82
111
|
}
|
|
83
|
-
class
|
|
112
|
+
class OrgPluginConnectorsBody extends createZodDto(ConnectorsBody, "OrgPluginConnectorsBody") {
|
|
113
|
+
}
|
|
114
|
+
class OrgPluginSwitchBody extends createZodDto(SwitchBody, "OrgPluginSwitchBody") {
|
|
84
115
|
}
|
|
85
|
-
class
|
|
116
|
+
class OrgTemplateConnectorBody extends createZodDto(TemplateConnectorBody, "OrgTemplateConnectorBody") {
|
|
86
117
|
}
|
|
87
|
-
class
|
|
118
|
+
class CatalogRequestBody extends createZodDto(RequestBody, "CatalogRequestBody") {
|
|
119
|
+
}
|
|
120
|
+
class CatalogMarketplaceRequestBody extends createZodDto(MarketplaceRequestBody, "CatalogMarketplaceRequestBody") {
|
|
88
121
|
}
|
|
89
122
|
/**
|
|
90
|
-
* The
|
|
123
|
+
* The platform catalog from an organization's view (`/api/v1/orgs/:orgId/...`, human users only):
|
|
91
124
|
* - `GET catalog` (`catalog.read`, member and up; members do not see disabled items);
|
|
92
|
-
* - `POST catalog/:itemId/requests` (`catalog.request`
|
|
93
|
-
* inbox
|
|
94
|
-
*
|
|
125
|
+
* - `POST catalog/:itemId/requests` (`catalog.request`; `access` needs an org admin): requests
|
|
126
|
+
* under plugin scope (spec §5.1), `enable` into the org admins' inbox, `access` to the super
|
|
127
|
+
* admin; `POST marketplace-requests` (org admins): an `import` request for a marketplace entry;
|
|
128
|
+
* - `PUT catalog/:itemId/switch` (scope phase 1): `{ enabled: true, inputs? }` installs -> 200 `{ item }`;
|
|
129
|
+
* `{ enabled: false, confirm? }` -> 200 `{ preview, confirm }`, then with the hash 200 `{ item }`;
|
|
130
|
+
* - `POST catalog/:itemId/install` (an alias of switching on, no longer creates requests): the route only requires `catalog.read`; the service re-checks
|
|
95
131
|
* the plugin's component actions (`org.extensions.manage` for an extension, `connectors.manage`
|
|
96
132
|
* for templates, `skills.manage` for skills) inside the org row lock; needs_approval without a
|
|
97
133
|
* grant -> 202 `{ request }`, otherwise 201 `{ installed, install }` (the install view);
|
|
98
134
|
* - `GET / DELETE plugin-installs[/:installId]` (`org.extensions.manage`; uninstall re-checks the
|
|
99
135
|
* plugin's component actions in the service);
|
|
100
|
-
* -
|
|
101
|
-
*
|
|
102
|
-
*
|
|
103
|
-
*
|
|
104
|
-
* - `POST catalog-requests/:id/decide` (`catalog.decide`, org admins
|
|
136
|
+
* - no per-org upgrade: a platform plugin has one version for the deployment, updated by the super
|
|
137
|
+
* admin (`PUT /admin/catalog/items/:id/update`, ruling F2);
|
|
138
|
+
* - `POST connector-templates/:templateId/connectors` (`connectors.manage`): one more connector
|
|
139
|
+
* from a platform connector template on in the org (ruling P4-T6-8);
|
|
140
|
+
* - `POST catalog-requests/:id/decide` (`catalog.decide`, org admins; `enable` and
|
|
141
|
+
* `connector_setup` requests, `{ approve, reason? }`; a `connector_setup` request is only
|
|
142
|
+
* rejected here, ruling P4-T6-6), `POST catalog-requests/:id/dismiss` (the requester, a decided
|
|
143
|
+
* request).
|
|
105
144
|
*/
|
|
106
145
|
let OrgCatalogController = class OrgCatalogController {
|
|
107
146
|
catalog;
|
|
@@ -129,13 +168,42 @@ let OrgCatalogController = class OrgCatalogController {
|
|
|
129
168
|
* -> 404 `catalog.icon_not_found`; members do not see disabled items.
|
|
130
169
|
*/
|
|
131
170
|
async icon(org, itemId, reply) {
|
|
132
|
-
const icon = await this.catalog.icon(itemId, roleAtLeast(org.role, "admin"));
|
|
171
|
+
const icon = await this.catalog.icon(itemId, roleAtLeast(org.role, "admin"), org.orgId);
|
|
133
172
|
await sendCatalogIcon(reply, icon);
|
|
134
173
|
}
|
|
174
|
+
/**
|
|
175
|
+
* A request for an item (spec §5.1): `enable` (members and up, an item that is off) or `access`
|
|
176
|
+
* (org admins, a `named` item shown to the org) -> 201 `{ request }`.
|
|
177
|
+
*/
|
|
135
178
|
async request(principal, org, itemId, body) {
|
|
136
179
|
const p = requireUser(principal);
|
|
137
180
|
const tokenId = patTokenId(p);
|
|
138
|
-
return
|
|
181
|
+
return {
|
|
182
|
+
request: await this.requests.requestItem(org.orgId, p.account.id, itemId, body, tokenId !== undefined ? { actorTokenId: tokenId } : {}),
|
|
183
|
+
};
|
|
184
|
+
}
|
|
185
|
+
/**
|
|
186
|
+
* An org admin asks for a marketplace entry to be imported (deployment setting
|
|
187
|
+
* `orgMarketplaceBrowse`) -> 201 `{ request }`.
|
|
188
|
+
*/
|
|
189
|
+
async marketplaceRequest(principal, org, body) {
|
|
190
|
+
const p = requireUser(principal);
|
|
191
|
+
const tokenId = patTokenId(p);
|
|
192
|
+
return {
|
|
193
|
+
request: await this.requests.requestImport(org.orgId, p.account.id, body, tokenId !== undefined ? { actorTokenId: tokenId } : {}),
|
|
194
|
+
};
|
|
195
|
+
}
|
|
196
|
+
async setSwitch(principal, org, itemId, body) {
|
|
197
|
+
const p = requireUser(principal);
|
|
198
|
+
const r = await this.catalog.setSwitch(org.orgId, p.account.id, itemId, body.enabled
|
|
199
|
+
? {
|
|
200
|
+
enabled: true,
|
|
201
|
+
...(body.inputs !== undefined && {
|
|
202
|
+
inputs: body.inputs,
|
|
203
|
+
}),
|
|
204
|
+
}
|
|
205
|
+
: { enabled: false, ...(body.confirm !== undefined && { confirm: body.confirm }) }, patTokenId(p));
|
|
206
|
+
return r.kind === "done" ? { item: r.item } : { preview: r.preview, confirm: r.confirm };
|
|
139
207
|
}
|
|
140
208
|
async install(principal, org, itemId, body, reply) {
|
|
141
209
|
const p = requireUser(principal);
|
|
@@ -144,32 +212,55 @@ let OrgCatalogController = class OrgCatalogController {
|
|
|
144
212
|
const { status: _status, ...rest } = r;
|
|
145
213
|
return rest;
|
|
146
214
|
}
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
215
|
+
/**
|
|
216
|
+
* Creates the connectors an installed plugin is missing (ruling P2-10: a connector template on
|
|
217
|
+
* in the org without a connector there, e.g. added by a platform update; the plugin shows
|
|
218
|
+
* `needs_config`): `{ inputs: { connectors: { <templateId>: input } } }` with the same input
|
|
219
|
+
* checks as an install; recorded on the install -> 201 `{ connectors: [{ templateId,
|
|
220
|
+
* connectorId }] }`. Not installed -> 404 `plugin.install_not_found`; a template not missing ->
|
|
221
|
+
* 400 `validation_failed`.
|
|
222
|
+
*/
|
|
223
|
+
async configureConnectors(principal, org, itemId, body) {
|
|
151
224
|
const p = requireUser(principal);
|
|
152
225
|
const tokenId = patTokenId(p);
|
|
153
|
-
return
|
|
226
|
+
return {
|
|
227
|
+
connectors: await this.pluginInstaller.configureConnectors(org.orgId, p.account.id, itemId, body.inputs, tokenId !== undefined ? { actorTokenId: tokenId } : {}),
|
|
228
|
+
};
|
|
154
229
|
}
|
|
155
|
-
|
|
230
|
+
/**
|
|
231
|
+
* One more connector from a platform connector template on in the org (rulings P4-7, P4-T6-8):
|
|
232
|
+
* `{ name?, config: { slug?, endpoint?, credential?, client? } }` with the checks of an install
|
|
233
|
+
* -> 201 `{ connector, issues }` (as `POST connectors`). A template not usable in the org -> 404
|
|
234
|
+
* `component.not_found`; off there -> 409 `component.off`; input errors -> 400 at `config.*`.
|
|
235
|
+
*/
|
|
236
|
+
async templateConnector(principal, org, templateId, body) {
|
|
156
237
|
const p = requireUser(principal);
|
|
157
|
-
|
|
238
|
+
const tokenId = patTokenId(p);
|
|
239
|
+
return this.pluginInstaller.addTemplateConnector(org.orgId, p.account.id, templateId, {
|
|
240
|
+
config: body.config,
|
|
241
|
+
...(body.name !== undefined && { name: body.name }),
|
|
242
|
+
}, tokenId !== undefined ? { actorTokenId: tokenId } : {});
|
|
243
|
+
}
|
|
244
|
+
async listInstalls(org) {
|
|
245
|
+
return { installs: await this.pluginInstaller.list(org.orgId) };
|
|
158
246
|
}
|
|
159
|
-
async
|
|
247
|
+
async uninstall(principal, org, installId) {
|
|
160
248
|
const p = requireUser(principal);
|
|
161
|
-
const
|
|
162
|
-
|
|
163
|
-
const { status: _status, ...rest } = r;
|
|
164
|
-
return rest;
|
|
249
|
+
const tokenId = patTokenId(p);
|
|
250
|
+
return this.catalog.uninstall(org.orgId, p.account.id, installId, tokenId);
|
|
165
251
|
}
|
|
166
252
|
async decide(principal, org, id, body) {
|
|
167
253
|
const p = requireUser(principal);
|
|
168
254
|
const tokenId = patTokenId(p);
|
|
169
255
|
return {
|
|
170
|
-
request: await this.requests.decideOrg(org.orgId, p.account.id, id, body
|
|
256
|
+
request: await this.requests.decideOrg(org.orgId, p.account.id, id, body, tokenId !== undefined ? { actorTokenId: tokenId } : {}),
|
|
171
257
|
};
|
|
172
258
|
}
|
|
259
|
+
/** The requester dismisses a decided request from the inbox -> 204. */
|
|
260
|
+
async dismiss(principal, org, id) {
|
|
261
|
+
const p = requireUser(principal);
|
|
262
|
+
await this.requests.dismiss(org.orgId, p.account.id, id);
|
|
263
|
+
}
|
|
173
264
|
};
|
|
174
265
|
__decorate([
|
|
175
266
|
Get("catalog"),
|
|
@@ -193,12 +284,29 @@ __decorate([
|
|
|
193
284
|
], OrgCatalogController.prototype, "icon", null);
|
|
194
285
|
__decorate([
|
|
195
286
|
Post("catalog/:itemId/requests"),
|
|
287
|
+
HttpCode(201),
|
|
196
288
|
OrgAction("catalog.request"),
|
|
197
289
|
__param(0, CurrentPrincipal()),
|
|
198
290
|
__param(1, CurrentOrg()),
|
|
199
291
|
__param(2, Param("itemId")),
|
|
200
292
|
__param(3, ZBody(CatalogRequestBody))
|
|
201
293
|
], OrgCatalogController.prototype, "request", null);
|
|
294
|
+
__decorate([
|
|
295
|
+
Post("marketplace-requests"),
|
|
296
|
+
HttpCode(201),
|
|
297
|
+
OrgAction("catalog.decide"),
|
|
298
|
+
__param(0, CurrentPrincipal()),
|
|
299
|
+
__param(1, CurrentOrg()),
|
|
300
|
+
__param(2, ZBody(CatalogMarketplaceRequestBody))
|
|
301
|
+
], OrgCatalogController.prototype, "marketplaceRequest", null);
|
|
302
|
+
__decorate([
|
|
303
|
+
Put("catalog/:itemId/switch"),
|
|
304
|
+
OrgAction("catalog.read"),
|
|
305
|
+
__param(0, CurrentPrincipal()),
|
|
306
|
+
__param(1, CurrentOrg()),
|
|
307
|
+
__param(2, Param("itemId")),
|
|
308
|
+
__param(3, ZBody(OrgPluginSwitchBody))
|
|
309
|
+
], OrgCatalogController.prototype, "setSwitch", null);
|
|
202
310
|
__decorate([
|
|
203
311
|
Post("catalog/:itemId/install"),
|
|
204
312
|
OrgAction("catalog.read"),
|
|
@@ -208,6 +316,22 @@ __decorate([
|
|
|
208
316
|
__param(3, ZBody(OrgPluginInstallBody)),
|
|
209
317
|
__param(4, Res({ passthrough: true }))
|
|
210
318
|
], OrgCatalogController.prototype, "install", null);
|
|
319
|
+
__decorate([
|
|
320
|
+
Post("catalog/:itemId/connectors"),
|
|
321
|
+
OrgAction("connectors.manage"),
|
|
322
|
+
__param(0, CurrentPrincipal()),
|
|
323
|
+
__param(1, CurrentOrg()),
|
|
324
|
+
__param(2, Param("itemId")),
|
|
325
|
+
__param(3, ZBody(OrgPluginConnectorsBody))
|
|
326
|
+
], OrgCatalogController.prototype, "configureConnectors", null);
|
|
327
|
+
__decorate([
|
|
328
|
+
Post("connector-templates/:templateId/connectors"),
|
|
329
|
+
OrgAction("connectors.manage"),
|
|
330
|
+
__param(0, CurrentPrincipal()),
|
|
331
|
+
__param(1, CurrentOrg()),
|
|
332
|
+
__param(2, Param("templateId")),
|
|
333
|
+
__param(3, ZBody(OrgTemplateConnectorBody))
|
|
334
|
+
], OrgCatalogController.prototype, "templateConnector", null);
|
|
211
335
|
__decorate([
|
|
212
336
|
Get("plugin-installs"),
|
|
213
337
|
OrgAction("org.extensions.manage"),
|
|
@@ -220,24 +344,6 @@ __decorate([
|
|
|
220
344
|
__param(1, CurrentOrg()),
|
|
221
345
|
__param(2, Param("installId"))
|
|
222
346
|
], OrgCatalogController.prototype, "uninstall", null);
|
|
223
|
-
__decorate([
|
|
224
|
-
Post("plugin-installs/:installId/upgrade/preview"),
|
|
225
|
-
HttpCode(200),
|
|
226
|
-
OrgAction("catalog.read"),
|
|
227
|
-
__param(0, CurrentPrincipal()),
|
|
228
|
-
__param(1, CurrentOrg()),
|
|
229
|
-
__param(2, Param("installId")),
|
|
230
|
-
__param(3, ZBody(OrgPluginUpgradePreviewBody))
|
|
231
|
-
], OrgCatalogController.prototype, "upgradePreview", null);
|
|
232
|
-
__decorate([
|
|
233
|
-
Post("plugin-installs/:installId/upgrade"),
|
|
234
|
-
OrgAction("catalog.read"),
|
|
235
|
-
__param(0, CurrentPrincipal()),
|
|
236
|
-
__param(1, CurrentOrg()),
|
|
237
|
-
__param(2, Param("installId")),
|
|
238
|
-
__param(3, ZBody(OrgPluginUpgradeBody)),
|
|
239
|
-
__param(4, Res({ passthrough: true }))
|
|
240
|
-
], OrgCatalogController.prototype, "upgrade", null);
|
|
241
347
|
__decorate([
|
|
242
348
|
Post("catalog-requests/:id/decide"),
|
|
243
349
|
HttpCode(200),
|
|
@@ -247,6 +353,14 @@ __decorate([
|
|
|
247
353
|
__param(2, Param("id")),
|
|
248
354
|
__param(3, ZBody(CatalogDecideBody))
|
|
249
355
|
], OrgCatalogController.prototype, "decide", null);
|
|
356
|
+
__decorate([
|
|
357
|
+
Post("catalog-requests/:id/dismiss"),
|
|
358
|
+
HttpCode(204),
|
|
359
|
+
OrgAction("catalog.read"),
|
|
360
|
+
__param(0, CurrentPrincipal()),
|
|
361
|
+
__param(1, CurrentOrg()),
|
|
362
|
+
__param(2, Param("id"))
|
|
363
|
+
], OrgCatalogController.prototype, "dismiss", null);
|
|
250
364
|
OrgCatalogController = __decorate([
|
|
251
365
|
Controller("api/v1/orgs/:orgId"),
|
|
252
366
|
__param(0, Inject(OrgCatalogService)),
|
|
@@ -254,7 +368,11 @@ OrgCatalogController = __decorate([
|
|
|
254
368
|
__param(2, Inject(PluginInstaller))
|
|
255
369
|
], OrgCatalogController);
|
|
256
370
|
export { OrgCatalogController };
|
|
257
|
-
/**
|
|
371
|
+
/**
|
|
372
|
+
* Super admins decide `access` and `import` requests (`/api/v1/admin/catalog/requests`):
|
|
373
|
+
* approving an `import` returns the prepared import (`import: { stagingId, review, ... }`), confirmed
|
|
374
|
+
* with `POST /api/v1/admin/catalog/imports/:stagingId/confirm`.
|
|
375
|
+
*/
|
|
258
376
|
let AdminCatalogRequestsController = class AdminCatalogRequestsController {
|
|
259
377
|
requests;
|
|
260
378
|
constructor(requests) {
|
|
@@ -268,9 +386,7 @@ let AdminCatalogRequestsController = class AdminCatalogRequestsController {
|
|
|
268
386
|
async decide(principal, id, body) {
|
|
269
387
|
const p = requireUser(principal);
|
|
270
388
|
const tokenId = patTokenId(p);
|
|
271
|
-
return {
|
|
272
|
-
request: await this.requests.decideDeployment(p.account.id, id, body.decision, tokenId !== undefined ? { actorTokenId: tokenId } : {}),
|
|
273
|
-
};
|
|
389
|
+
return this.requests.decideDeployment(p.account.id, id, body, tokenId !== undefined ? { actorTokenId: tokenId } : {});
|
|
274
390
|
}
|
|
275
391
|
};
|
|
276
392
|
__decorate([
|
|
@@ -286,7 +402,7 @@ __decorate([
|
|
|
286
402
|
], AdminCatalogRequestsController.prototype, "decide", null);
|
|
287
403
|
AdminCatalogRequestsController = __decorate([
|
|
288
404
|
Controller("api/v1/admin/catalog/requests"),
|
|
289
|
-
|
|
405
|
+
SuperAdmin(),
|
|
290
406
|
__param(0, Inject(CatalogRequestsService))
|
|
291
407
|
], AdminCatalogRequestsController);
|
|
292
408
|
export { AdminCatalogRequestsController };
|