@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
|
@@ -0,0 +1,126 @@
|
|
|
1
|
+
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
|
2
|
+
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
3
|
+
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
4
|
+
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
5
|
+
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
6
|
+
};
|
|
7
|
+
var __param = (this && this.__param) || function (paramIndex, decorator) {
|
|
8
|
+
return function (target, key) { decorator(target, key, paramIndex); }
|
|
9
|
+
};
|
|
10
|
+
import { Inject, Injectable } from "@nestjs/common";
|
|
11
|
+
import { z } from "zod";
|
|
12
|
+
import { ComponentScopeService } from "../../catalog/component-scope.service.js";
|
|
13
|
+
import { ConnectorsService, } from "../../tools/connectors.service.js";
|
|
14
|
+
import { publicEndpoint } from "../../tools/endpoint.js";
|
|
15
|
+
import { defineOperation } from "../operation.js";
|
|
16
|
+
import { PlatformOperations } from "../registry.js";
|
|
17
|
+
import { asToolError } from "./errors.js";
|
|
18
|
+
import { Cursor, pageOf, startOf } from "./paging.js";
|
|
19
|
+
const PAGE = 50;
|
|
20
|
+
/**
|
|
21
|
+
* A connector without anything secret: the auth method and who holds the credential (the org or
|
|
22
|
+
* each person), never the auth preset's fields or a credential. The endpoint is always the public
|
|
23
|
+
* one (origin only, header names only), as the route shows readers without `connectors.manage`,
|
|
24
|
+
* whatever the actor's role: the result enters a log other people read.
|
|
25
|
+
*/
|
|
26
|
+
const summary = (c) => ({
|
|
27
|
+
id: c.id,
|
|
28
|
+
slug: c.slug,
|
|
29
|
+
name: c.name,
|
|
30
|
+
connector: c.connector,
|
|
31
|
+
endpoint: publicEndpoint(c.endpoint),
|
|
32
|
+
auth: {
|
|
33
|
+
type: c.auth.type,
|
|
34
|
+
ownership: "ownership" in c.auth ? (c.auth.ownership ?? null) : null,
|
|
35
|
+
},
|
|
36
|
+
status: c.status,
|
|
37
|
+
platformTemplateId: c.platformTemplateId,
|
|
38
|
+
updatedAt: c.updatedAt,
|
|
39
|
+
});
|
|
40
|
+
/** A connector's detail: its tools (name, description, state, default policy) and your credential state. */
|
|
41
|
+
const detail = (c) => ({
|
|
42
|
+
...summary(c),
|
|
43
|
+
credential: c.credential,
|
|
44
|
+
tools: c.tools.map((t) => ({
|
|
45
|
+
name: t.name,
|
|
46
|
+
description: t.description,
|
|
47
|
+
status: t.status,
|
|
48
|
+
defaultPolicy: t.defaultPolicy,
|
|
49
|
+
missing: t.missing,
|
|
50
|
+
pendingReview: t.pending !== null,
|
|
51
|
+
})),
|
|
52
|
+
});
|
|
53
|
+
/**
|
|
54
|
+
* Connector operations of the `Platform` tool (spec §7): read only. Creating a connector or
|
|
55
|
+
* entering a credential stays on the web (a person types credentials, spec §6.4).
|
|
56
|
+
*/
|
|
57
|
+
let ConnectorsOperations = class ConnectorsOperations {
|
|
58
|
+
registry;
|
|
59
|
+
connectors;
|
|
60
|
+
components;
|
|
61
|
+
constructor(registry, connectors, components) {
|
|
62
|
+
this.registry = registry;
|
|
63
|
+
this.connectors = connectors;
|
|
64
|
+
this.components = components;
|
|
65
|
+
}
|
|
66
|
+
onModuleInit() {
|
|
67
|
+
this.registry.register([
|
|
68
|
+
defineOperation({
|
|
69
|
+
id: "connectors.list",
|
|
70
|
+
description: "List the org's connectors: name, protocol, endpoint, auth method and status, never credentials. Pages by 50: pass the returned next as params.cursor.",
|
|
71
|
+
input: z.object({ cursor: Cursor.optional() }).strict(),
|
|
72
|
+
example: {},
|
|
73
|
+
authz: { orgAction: "connectors.use" },
|
|
74
|
+
mirrors: ["GET /api/v1/orgs/:orgId/connectors"],
|
|
75
|
+
confirm: "read",
|
|
76
|
+
run: async (input, ctx) => pageOf((await this.connectors.list(ctx.orgId)).map(summary), startOf(input.cursor), PAGE),
|
|
77
|
+
}),
|
|
78
|
+
defineOperation({
|
|
79
|
+
id: "connectors.get",
|
|
80
|
+
description: "Read one connector: its tools with their state and default policy, and whether your credential for it is connected. Credentials are never returned; a person enters them on the connector's web page.",
|
|
81
|
+
input: z.object({ connectorId: z.string().min(1).max(100) }).strict(),
|
|
82
|
+
example: { connectorId: "5d2e8f1a-0b3c-4d5e-8f9a-1b2c3d4e5f60" },
|
|
83
|
+
authz: { orgAction: "connectors.use" },
|
|
84
|
+
mirrors: ["GET /api/v1/orgs/:orgId/connectors/:connectorId"],
|
|
85
|
+
confirm: "read",
|
|
86
|
+
errors: [
|
|
87
|
+
{ code: "connector.not_found", next: "Check the connector id with connectors.list." },
|
|
88
|
+
],
|
|
89
|
+
run: async (input, ctx) => asToolError(async () => ({
|
|
90
|
+
connector: detail(await this.connectors.get(ctx.orgId, input.connectorId, ctx.actorAccountId)),
|
|
91
|
+
})),
|
|
92
|
+
}),
|
|
93
|
+
defineOperation({
|
|
94
|
+
id: "connectors.templates",
|
|
95
|
+
description: "List the platform connector templates offered to this org, with whether each is on here: the templates the web's create-from-template flow offers. Creating a connector from one needs credentials, so it is done on the web. Pages by 50: pass the returned next as params.cursor.",
|
|
96
|
+
input: z.object({ cursor: Cursor.optional() }).strict(),
|
|
97
|
+
example: {},
|
|
98
|
+
authz: { orgAction: "catalog.read" },
|
|
99
|
+
mirrors: ["GET /api/v1/orgs/:orgId/components"],
|
|
100
|
+
confirm: "read",
|
|
101
|
+
run: async (input, ctx) => {
|
|
102
|
+
const all = await this.components.orgList(ctx.orgId, { kind: "connector_template" });
|
|
103
|
+
const templates = all.map((t) => ({
|
|
104
|
+
id: t.id,
|
|
105
|
+
name: t.name,
|
|
106
|
+
description: t.description,
|
|
107
|
+
plugin: t.plugin,
|
|
108
|
+
itemId: t.itemId,
|
|
109
|
+
version: t.version,
|
|
110
|
+
on: t.on,
|
|
111
|
+
switchable: t.switchable,
|
|
112
|
+
owner: t.owner,
|
|
113
|
+
}));
|
|
114
|
+
return pageOf(templates, startOf(input.cursor), PAGE);
|
|
115
|
+
},
|
|
116
|
+
}),
|
|
117
|
+
]);
|
|
118
|
+
}
|
|
119
|
+
};
|
|
120
|
+
ConnectorsOperations = __decorate([
|
|
121
|
+
Injectable(),
|
|
122
|
+
__param(0, Inject(PlatformOperations)),
|
|
123
|
+
__param(1, Inject(ConnectorsService)),
|
|
124
|
+
__param(2, Inject(ComponentScopeService))
|
|
125
|
+
], ConnectorsOperations);
|
|
126
|
+
export { ConnectorsOperations };
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Runs a service call for an operation: an {@link ApiError} (the service's refusal: forbidden,
|
|
3
|
+
* not found, a stale preview) becomes a {@link ToolError} naming its code, so the model reads what
|
|
4
|
+
* to do next instead of a generic failure. Anything else is a bug and propagates.
|
|
5
|
+
*/
|
|
6
|
+
export declare function asToolError<T>(call: () => Promise<T>): Promise<T>;
|
|
7
|
+
/** The audit detail of a write made through the tool (spec §6): who, where and which operation. */
|
|
8
|
+
export declare function viaAgent(operation: string, ctx: {
|
|
9
|
+
conversationId: string;
|
|
10
|
+
runId: string | null;
|
|
11
|
+
}): Record<string, unknown>;
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import { ToolError } from "@capybara-hq/plugin-sdk";
|
|
2
|
+
import { ApiError } from "../../errors.js";
|
|
3
|
+
/**
|
|
4
|
+
* Runs a service call for an operation: an {@link ApiError} (the service's refusal: forbidden,
|
|
5
|
+
* not found, a stale preview) becomes a {@link ToolError} naming its code, so the model reads what
|
|
6
|
+
* to do next instead of a generic failure. Anything else is a bug and propagates.
|
|
7
|
+
*/
|
|
8
|
+
export async function asToolError(call) {
|
|
9
|
+
try {
|
|
10
|
+
return await call();
|
|
11
|
+
}
|
|
12
|
+
catch (e) {
|
|
13
|
+
if (e instanceof ApiError) {
|
|
14
|
+
throw new ToolError(`${e.code}: ${e.message}`);
|
|
15
|
+
}
|
|
16
|
+
throw e;
|
|
17
|
+
}
|
|
18
|
+
}
|
|
19
|
+
/** The audit detail of a write made through the tool (spec §6): who, where and which operation. */
|
|
20
|
+
export function viaAgent(operation, ctx) {
|
|
21
|
+
return { via: "agent", conversationId: ctx.conversationId, runId: ctx.runId, operation };
|
|
22
|
+
}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import { type OnModuleInit } from "@nestjs/common";
|
|
2
|
+
import { ExtensionDisplayNames } from "../../extensions/display-name.js";
|
|
3
|
+
import { OrgExtensionConfigs } from "../../extensions/org-config.js";
|
|
4
|
+
import { KernelDb } from "../../infra/database/kernel-db.js";
|
|
5
|
+
import { PlatformOperations } from "../registry.js";
|
|
6
|
+
/**
|
|
7
|
+
* Extension operations of the `Platform` tool (spec §7): read only, and state only. The org config,
|
|
8
|
+
* the secrets' state, the config schema and the permission list are never returned (the member
|
|
9
|
+
* projection of `GET /orgs/:orgId/extensions`, whatever the actor's role); configuring an
|
|
10
|
+
* extension is done on the web.
|
|
11
|
+
*/
|
|
12
|
+
export declare class ExtensionsOperations implements OnModuleInit {
|
|
13
|
+
private readonly registry;
|
|
14
|
+
private readonly configs;
|
|
15
|
+
private readonly displayNames;
|
|
16
|
+
private readonly kdb;
|
|
17
|
+
constructor(registry: PlatformOperations, configs: OrgExtensionConfigs, displayNames: ExtensionDisplayNames, kdb: KernelDb);
|
|
18
|
+
onModuleInit(): void;
|
|
19
|
+
}
|
|
@@ -0,0 +1,116 @@
|
|
|
1
|
+
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
|
2
|
+
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
3
|
+
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
4
|
+
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
5
|
+
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
6
|
+
};
|
|
7
|
+
var __param = (this && this.__param) || function (paramIndex, decorator) {
|
|
8
|
+
return function (target, key) { decorator(target, key, paramIndex); }
|
|
9
|
+
};
|
|
10
|
+
import { EXTENSION_POINTS, parseExtensionPoint } from "@capybara-hq/plugin-sdk";
|
|
11
|
+
import { Inject, Injectable } from "@nestjs/common";
|
|
12
|
+
import { z } from "zod";
|
|
13
|
+
import { ExtensionDisplayNames } from "../../extensions/display-name.js";
|
|
14
|
+
import { OrgExtensionConfigs, providesOf } from "../../extensions/org-config.js";
|
|
15
|
+
import { KernelDb } from "../../infra/database/kernel-db.js";
|
|
16
|
+
import { can } from "../../orgs/roles.js";
|
|
17
|
+
import { defineOperation } from "../operation.js";
|
|
18
|
+
import { PlatformOperations } from "../registry.js";
|
|
19
|
+
import { Cursor, pageOf, startOf } from "./paging.js";
|
|
20
|
+
import { roleOf } from "./role.js";
|
|
21
|
+
const NoInput = z.object({}).strict();
|
|
22
|
+
/**
|
|
23
|
+
* Extension operations of the `Platform` tool (spec §7): read only, and state only. The org config,
|
|
24
|
+
* the secrets' state, the config schema and the permission list are never returned (the member
|
|
25
|
+
* projection of `GET /orgs/:orgId/extensions`, whatever the actor's role); configuring an
|
|
26
|
+
* extension is done on the web.
|
|
27
|
+
*/
|
|
28
|
+
let ExtensionsOperations = class ExtensionsOperations {
|
|
29
|
+
registry;
|
|
30
|
+
configs;
|
|
31
|
+
displayNames;
|
|
32
|
+
kdb;
|
|
33
|
+
constructor(registry, configs, displayNames, kdb) {
|
|
34
|
+
this.registry = registry;
|
|
35
|
+
this.configs = configs;
|
|
36
|
+
this.displayNames = displayNames;
|
|
37
|
+
this.kdb = kdb;
|
|
38
|
+
}
|
|
39
|
+
onModuleInit() {
|
|
40
|
+
this.registry.register([
|
|
41
|
+
defineOperation({
|
|
42
|
+
id: "extensions.list",
|
|
43
|
+
description: "List the extensions installed on the platform as this org sees them: whether each is enabled here, available on the platform, required, which plugin brings it and which extension points it provides. State only: configuring one is done on the web. Pages by 50: pass the returned next as params.cursor.",
|
|
44
|
+
input: z.object({ cursor: Cursor.optional() }).strict(),
|
|
45
|
+
example: {},
|
|
46
|
+
authz: { orgAction: "org.extensions.read" },
|
|
47
|
+
mirrors: ["GET /api/v1/orgs/:orgId/extensions"],
|
|
48
|
+
confirm: "read",
|
|
49
|
+
run: async (input, ctx) => {
|
|
50
|
+
const views = await this.configs.list(ctx.orgId);
|
|
51
|
+
const names = await this.displayNames.many(views.map((v) => v.plugin));
|
|
52
|
+
return pageOf(views.map((v) => ({
|
|
53
|
+
plugin: v.plugin,
|
|
54
|
+
displayName: names.get(v.plugin) ?? null,
|
|
55
|
+
version: v.version,
|
|
56
|
+
enabled: v.enabled,
|
|
57
|
+
available: v.available,
|
|
58
|
+
required: v.required,
|
|
59
|
+
configurable: v.configurable,
|
|
60
|
+
switchable: v.switchable,
|
|
61
|
+
catalogItem: v.catalogItem,
|
|
62
|
+
provides: providesOf(v),
|
|
63
|
+
})), startOf(input.cursor), 50);
|
|
64
|
+
},
|
|
65
|
+
}),
|
|
66
|
+
defineOperation({
|
|
67
|
+
id: "extensions.points",
|
|
68
|
+
description: "List the extension points of the platform (the contracts extensions implement, such as channel@1 or model-provider@2): what each is for, whether it takes one provider or several, and whether an extension enabled in this org provides it (org admins also get the providers' plugin names).",
|
|
69
|
+
input: NoInput,
|
|
70
|
+
example: {},
|
|
71
|
+
authz: { orgAction: "org.extensions.read" },
|
|
72
|
+
mirrors: [],
|
|
73
|
+
confirm: "read",
|
|
74
|
+
run: async (_input, ctx) => {
|
|
75
|
+
const providers = new Map();
|
|
76
|
+
for (const v of await this.configs.list(ctx.orgId)) {
|
|
77
|
+
if (!v.enabled || !v.available)
|
|
78
|
+
continue;
|
|
79
|
+
for (const ref of providesOf(v)) {
|
|
80
|
+
let name;
|
|
81
|
+
try {
|
|
82
|
+
name = parseExtensionPoint(ref).name;
|
|
83
|
+
}
|
|
84
|
+
catch {
|
|
85
|
+
continue;
|
|
86
|
+
}
|
|
87
|
+
providers.set(name, [...(providers.get(name) ?? []), v.plugin]);
|
|
88
|
+
}
|
|
89
|
+
}
|
|
90
|
+
// provider names only for those who manage extensions, as `GET extension-points` (the
|
|
91
|
+
// members' `available` route gives no names)
|
|
92
|
+
const role = await roleOf(this.kdb.db, ctx.orgId, ctx.actorAccountId);
|
|
93
|
+
const names = role !== null && can(role, "org.extensions.manage");
|
|
94
|
+
return {
|
|
95
|
+
points: Object.entries(EXTENSION_POINTS).map(([name, p]) => ({
|
|
96
|
+
name,
|
|
97
|
+
description: p.description,
|
|
98
|
+
cardinality: p.cardinality,
|
|
99
|
+
...(names
|
|
100
|
+
? { providers: providers.get(name) ?? [] }
|
|
101
|
+
: { hasProvider: providers.has(name) }),
|
|
102
|
+
})),
|
|
103
|
+
};
|
|
104
|
+
},
|
|
105
|
+
}),
|
|
106
|
+
]);
|
|
107
|
+
}
|
|
108
|
+
};
|
|
109
|
+
ExtensionsOperations = __decorate([
|
|
110
|
+
Injectable(),
|
|
111
|
+
__param(0, Inject(PlatformOperations)),
|
|
112
|
+
__param(1, Inject(OrgExtensionConfigs)),
|
|
113
|
+
__param(2, Inject(ExtensionDisplayNames)),
|
|
114
|
+
__param(3, Inject(KernelDb))
|
|
115
|
+
], ExtensionsOperations);
|
|
116
|
+
export { ExtensionsOperations };
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import { type OnModuleInit } from "@nestjs/common";
|
|
2
|
+
import { MarketplacesService } from "../../catalog/marketplaces.service.js";
|
|
3
|
+
import { KernelDb } from "../../infra/database/kernel-db.js";
|
|
4
|
+
import { PlatformOperations } from "../registry.js";
|
|
5
|
+
/**
|
|
6
|
+
* Marketplace operations of the `Platform` tool (spec §7): the super admin's sources (list, add)
|
|
7
|
+
* and the org admins' read-only browse of the entries (deployment setting `orgMarketplaceBrowse`),
|
|
8
|
+
* from which they request an import (`requests.create-import`).
|
|
9
|
+
*/
|
|
10
|
+
export declare class MarketplacesOperations implements OnModuleInit {
|
|
11
|
+
private readonly registry;
|
|
12
|
+
private readonly marketplaces;
|
|
13
|
+
private readonly kdb;
|
|
14
|
+
constructor(registry: PlatformOperations, marketplaces: MarketplacesService, kdb: KernelDb);
|
|
15
|
+
onModuleInit(): void;
|
|
16
|
+
}
|
|
@@ -0,0 +1,157 @@
|
|
|
1
|
+
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
|
2
|
+
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
3
|
+
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
4
|
+
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
5
|
+
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
6
|
+
};
|
|
7
|
+
var __param = (this && this.__param) || function (paramIndex, decorator) {
|
|
8
|
+
return function (target, key) { decorator(target, key, paramIndex); }
|
|
9
|
+
};
|
|
10
|
+
import { Inject, Injectable } from "@nestjs/common";
|
|
11
|
+
import { z } from "zod";
|
|
12
|
+
import { MarketplacesService, } from "../../catalog/marketplaces.service.js";
|
|
13
|
+
import { itemsSeenBy } from "../../catalog/scope-state.js";
|
|
14
|
+
import { ApiError } from "../../errors.js";
|
|
15
|
+
import { readOrgMarketplaceBrowse } from "../../identity/settings.js";
|
|
16
|
+
import { KernelDb } from "../../infra/database/kernel-db.js";
|
|
17
|
+
import { defineOperation } from "../operation.js";
|
|
18
|
+
import { PlatformOperations } from "../registry.js";
|
|
19
|
+
import { asToolError, viaAgent } from "./errors.js";
|
|
20
|
+
import { Cursor, pageOf, startOf } from "./paging.js";
|
|
21
|
+
const PAGE = 50;
|
|
22
|
+
/** A marketplace source as the list shows it: no token, etag or skip list. */
|
|
23
|
+
const source = (m) => ({
|
|
24
|
+
id: m.id,
|
|
25
|
+
name: m.name,
|
|
26
|
+
url: m.url,
|
|
27
|
+
form: m.form,
|
|
28
|
+
ref: m.ref,
|
|
29
|
+
builtin: m.builtin,
|
|
30
|
+
enabled: m.enabled,
|
|
31
|
+
disabledByConfig: m.disabledByConfig,
|
|
32
|
+
lastStatus: m.lastStatus,
|
|
33
|
+
lastError: m.lastError,
|
|
34
|
+
lastRefreshedAt: m.lastRefreshedAt,
|
|
35
|
+
entryCount: m.entryCount,
|
|
36
|
+
});
|
|
37
|
+
/** One marketplace entry (one version of a plugin) as the browse list shows it. */
|
|
38
|
+
const entry = (e) => ({
|
|
39
|
+
marketplaceId: e.sourceId,
|
|
40
|
+
marketplace: e.sourceName,
|
|
41
|
+
name: e.name,
|
|
42
|
+
version: e.version,
|
|
43
|
+
displayName: e.displayName,
|
|
44
|
+
summary: e.summary,
|
|
45
|
+
format: e.format,
|
|
46
|
+
compatible: e.compatible,
|
|
47
|
+
importable: e.importable,
|
|
48
|
+
...(e.reason !== undefined && { reason: e.reason }),
|
|
49
|
+
deprecated: e.deprecated,
|
|
50
|
+
permissions: e.permissions,
|
|
51
|
+
importedAs: e.adopted,
|
|
52
|
+
newerAvailable: e.newerAvailable,
|
|
53
|
+
});
|
|
54
|
+
/**
|
|
55
|
+
* Marketplace operations of the `Platform` tool (spec §7): the super admin's sources (list, add)
|
|
56
|
+
* and the org admins' read-only browse of the entries (deployment setting `orgMarketplaceBrowse`),
|
|
57
|
+
* from which they request an import (`requests.create-import`).
|
|
58
|
+
*/
|
|
59
|
+
let MarketplacesOperations = class MarketplacesOperations {
|
|
60
|
+
registry;
|
|
61
|
+
marketplaces;
|
|
62
|
+
kdb;
|
|
63
|
+
constructor(registry, marketplaces, kdb) {
|
|
64
|
+
this.registry = registry;
|
|
65
|
+
this.marketplaces = marketplaces;
|
|
66
|
+
this.kdb = kdb;
|
|
67
|
+
}
|
|
68
|
+
onModuleInit() {
|
|
69
|
+
this.registry.register([
|
|
70
|
+
defineOperation({
|
|
71
|
+
id: "marketplaces.list",
|
|
72
|
+
description: "List the marketplace sources of the platform (super admin): the official one and the custom ones, with whether each is enabled, its last refresh and how many entries it has. Pages by 50: pass the returned next as params.cursor.",
|
|
73
|
+
input: z.object({ cursor: Cursor.optional() }).strict(),
|
|
74
|
+
example: {},
|
|
75
|
+
authz: { superAdmin: true },
|
|
76
|
+
mirrors: ["GET /api/v1/admin/marketplaces"],
|
|
77
|
+
confirm: "read",
|
|
78
|
+
run: async (input) => pageOf((await this.marketplaces.list()).map(source), startOf(input.cursor), PAGE),
|
|
79
|
+
}),
|
|
80
|
+
defineOperation({
|
|
81
|
+
id: "marketplaces.entries",
|
|
82
|
+
description: "Browse the plugins the enabled marketplaces offer (org admins, when the platform lets orgs browse): name, version, summary, whether it can be imported and whether it is in the catalog already. Filter by marketplaceId or a search text q. Pages by 50: pass the returned next as params.cursor. To get one imported, use requests.create-import.",
|
|
83
|
+
input: z
|
|
84
|
+
.object({
|
|
85
|
+
marketplaceId: z.string().min(1).max(100).optional(),
|
|
86
|
+
q: z.string().min(1).max(200).optional(),
|
|
87
|
+
cursor: Cursor.optional(),
|
|
88
|
+
})
|
|
89
|
+
.strict(),
|
|
90
|
+
example: { q: "github" },
|
|
91
|
+
authz: { orgAction: "catalog.decide" },
|
|
92
|
+
mirrors: ["GET /api/v1/orgs/:orgId/marketplaces/entries"],
|
|
93
|
+
confirm: "read",
|
|
94
|
+
errors: [
|
|
95
|
+
{
|
|
96
|
+
code: "not_found",
|
|
97
|
+
next: "The platform does not let orgs browse the marketplaces; ask the super admin.",
|
|
98
|
+
},
|
|
99
|
+
],
|
|
100
|
+
run: async (input, ctx) => asToolError(async () => {
|
|
101
|
+
if (!(await readOrgMarketplaceBrowse(this.kdb.db))) {
|
|
102
|
+
throw new ApiError("not_found", "Marketplace browsing is off for organizations");
|
|
103
|
+
}
|
|
104
|
+
const r = await this.marketplaces.entries({
|
|
105
|
+
...(input.marketplaceId !== undefined && { marketplaceId: input.marketplaceId }),
|
|
106
|
+
...(input.q !== undefined && { q: input.q }),
|
|
107
|
+
});
|
|
108
|
+
// as the route: an item the org can neither see nor request reads as not imported
|
|
109
|
+
const seen = await itemsSeenBy(this.kdb.db, ctx.orgId, r.items.flatMap((e) => (e.adopted ? [e.adopted.itemId] : [])));
|
|
110
|
+
const items = r.items.map((e) => e.adopted === null || seen.has(e.adopted.itemId)
|
|
111
|
+
? e
|
|
112
|
+
: { ...e, adopted: null, newerAvailable: false, contentChanged: false });
|
|
113
|
+
return pageOf(items.map(entry), startOf(input.cursor), PAGE);
|
|
114
|
+
}),
|
|
115
|
+
}),
|
|
116
|
+
defineOperation({
|
|
117
|
+
id: "marketplaces.add",
|
|
118
|
+
description: "Add a custom marketplace source to the platform (super admin): a name and an https URL of a marketplace.json, or a git repository (…/*.git or owner/repo) with an optional ref. Sources that need a token or mirrors are added on the web.",
|
|
119
|
+
input: z
|
|
120
|
+
.object({
|
|
121
|
+
name: z.string().min(1).max(100),
|
|
122
|
+
url: z.string().min(1).max(2000),
|
|
123
|
+
ref: z.string().min(1).max(200).optional(),
|
|
124
|
+
})
|
|
125
|
+
.strict(),
|
|
126
|
+
example: { name: "Team plugins", url: "https://plugins.example.com/marketplace.json" },
|
|
127
|
+
authz: { superAdmin: true },
|
|
128
|
+
mirrors: ["POST /api/v1/admin/marketplaces"],
|
|
129
|
+
confirm: "platform",
|
|
130
|
+
errors: [
|
|
131
|
+
{
|
|
132
|
+
code: "validation_failed",
|
|
133
|
+
next: "Fix the name or URL as the message says (https, no user info), then call again.",
|
|
134
|
+
},
|
|
135
|
+
],
|
|
136
|
+
summary: (i) => ({
|
|
137
|
+
zh: `添加市场源「${i.name}」${i.url}`,
|
|
138
|
+
en: `Add marketplace source "${i.name}" ${i.url}`,
|
|
139
|
+
}),
|
|
140
|
+
run: async (input, ctx) => asToolError(async () => ({
|
|
141
|
+
marketplace: source(await this.marketplaces.add(ctx.actorAccountId, {
|
|
142
|
+
name: input.name,
|
|
143
|
+
url: input.url,
|
|
144
|
+
...(input.ref !== undefined && { ref: input.ref }),
|
|
145
|
+
}, { auditDetail: viaAgent("marketplaces.add", ctx) })),
|
|
146
|
+
})),
|
|
147
|
+
}),
|
|
148
|
+
]);
|
|
149
|
+
}
|
|
150
|
+
};
|
|
151
|
+
MarketplacesOperations = __decorate([
|
|
152
|
+
Injectable(),
|
|
153
|
+
__param(0, Inject(PlatformOperations)),
|
|
154
|
+
__param(1, Inject(MarketplacesService)),
|
|
155
|
+
__param(2, Inject(KernelDb))
|
|
156
|
+
], MarketplacesOperations);
|
|
157
|
+
export { MarketplacesOperations };
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { z } from "zod";
|
|
2
|
+
/** `params.cursor` of a paged operation: the `next` of the previous page (an opaque string). */
|
|
3
|
+
export declare const Cursor: z.ZodString;
|
|
4
|
+
/** The offset a cursor stands for (0 without one). */
|
|
5
|
+
export declare const startOf: (cursor: string | undefined) => number;
|
|
6
|
+
/**
|
|
7
|
+
* One page of `items` from `start` (ruling: lists that can exceed 50 entries page themselves):
|
|
8
|
+
* `next` is the cursor of the following page, null on the last one.
|
|
9
|
+
*/
|
|
10
|
+
export declare function pageOf<T>(items: readonly T[], start: number, size: number): {
|
|
11
|
+
items: T[];
|
|
12
|
+
total: number;
|
|
13
|
+
next: string | null;
|
|
14
|
+
};
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import { z } from "zod";
|
|
2
|
+
/** `params.cursor` of a paged operation: the `next` of the previous page (an opaque string). */
|
|
3
|
+
export const Cursor = z
|
|
4
|
+
.string()
|
|
5
|
+
.regex(/^\d{1,7}$/, "pass the next value of the previous page")
|
|
6
|
+
.describe("The next value of the previous page; omit for the first page.");
|
|
7
|
+
/** The offset a cursor stands for (0 without one). */
|
|
8
|
+
export const startOf = (cursor) => cursor === undefined ? 0 : Number(cursor);
|
|
9
|
+
/**
|
|
10
|
+
* One page of `items` from `start` (ruling: lists that can exceed 50 entries page themselves):
|
|
11
|
+
* `next` is the cursor of the following page, null on the last one.
|
|
12
|
+
*/
|
|
13
|
+
export function pageOf(items, start, size) {
|
|
14
|
+
const end = start + size;
|
|
15
|
+
return {
|
|
16
|
+
items: items.slice(start, end),
|
|
17
|
+
total: items.length,
|
|
18
|
+
next: end < items.length ? String(end) : null,
|
|
19
|
+
};
|
|
20
|
+
}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import { type OnModuleInit } from "@nestjs/common";
|
|
2
|
+
import { AgentsService } from "../../agents/agents.service.js";
|
|
3
|
+
import { OrgSettingsService } from "../../orgs/settings.service.js";
|
|
4
|
+
import { ToolRegistry } from "../../tools/registry.js";
|
|
5
|
+
import { PlatformActor } from "../actor.js";
|
|
6
|
+
import { PlatformOperations } from "../registry.js";
|
|
7
|
+
/** The `platform` domain: orientation, and what this agent is (spec §7). Synthetic, no route. */
|
|
8
|
+
export declare class PlatformOperationsProvider implements OnModuleInit {
|
|
9
|
+
private readonly registry;
|
|
10
|
+
private readonly actor;
|
|
11
|
+
private readonly agents;
|
|
12
|
+
private readonly settings;
|
|
13
|
+
private readonly tools;
|
|
14
|
+
constructor(registry: PlatformOperations, actor: PlatformActor, agents: AgentsService, settings: OrgSettingsService, tools: ToolRegistry);
|
|
15
|
+
/**
|
|
16
|
+
* The agent's tools by the keys the model sees: builtins by name, plugin tools as
|
|
17
|
+
* `plugin__<plugin>__<tool>`, and each connector reference expanded to its live tools'
|
|
18
|
+
* `mcp__<slug>__<tool>` keys as the registry resolves them for a run; connector tools that
|
|
19
|
+
* cannot load now are listed with the registry's reason.
|
|
20
|
+
*/
|
|
21
|
+
private toolKeys;
|
|
22
|
+
onModuleInit(): void;
|
|
23
|
+
}
|