@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,263 @@
|
|
|
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, Module } from "@nestjs/common";
|
|
11
|
+
import { ApiError } from "../errors.js";
|
|
12
|
+
import { ExtensionRegistry, ExtensionRegistryModule } from "../extensions/registry.js";
|
|
13
|
+
import { audit } from "../identity/audit.js";
|
|
14
|
+
import { SuperAdminLock, SuperAdminLockModule } from "../identity/super-admin.js";
|
|
15
|
+
import { CacheService } from "../infra/cache/cache.service.js";
|
|
16
|
+
import { Cacheable, CacheEvict } from "../infra/cache/cacheable.decorator.js";
|
|
17
|
+
import { KernelDb } from "../infra/database/kernel-db.js";
|
|
18
|
+
import { TransactionHost } from "../infra/database/transaction-host.js";
|
|
19
|
+
import { Transactional } from "../infra/database/transactional.decorator.js";
|
|
20
|
+
import { OrgLock, OrgLockModule } from "../orgs/org-lock.js";
|
|
21
|
+
/** The key of a model in a disabled set: `provider\u0000model`. */
|
|
22
|
+
export const modelKey = (provider, model) => `${provider}\u0000${model}`;
|
|
23
|
+
/** How long a disabled list stays cached (s); every write evicts it after its commit. */
|
|
24
|
+
const DISABLED_TTL_SECONDS = 300;
|
|
25
|
+
/** The cache key of a scope's disabled list (`platform` or `org.<id>`). */
|
|
26
|
+
const PLATFORM_SCOPE = "platform";
|
|
27
|
+
const orgScope = (orgId) => `org.${orgId}`;
|
|
28
|
+
/**
|
|
29
|
+
* Models disabled on two layers (spec B §5.3, table `model_disabled`): the platform's list (the
|
|
30
|
+
* super admin; such a model is invisible to every org) and each org's (an org admin). Every model a
|
|
31
|
+
* provider lists is enabled unless a layer disabled it; a row keys on the model id, so it applies to
|
|
32
|
+
* whichever list the org sees, and an id the list does not contain is kept harmlessly. Disabling
|
|
33
|
+
* never creates an org config copy.
|
|
34
|
+
*
|
|
35
|
+
* The lists are read from PG and cached in Redis (`@Cacheable`, evicted after the commit of each
|
|
36
|
+
* write), never in process memory. `ProviderRegistry` filters its lists and `resolve` with them;
|
|
37
|
+
* purposes check their targets with {@link isEnabled}.
|
|
38
|
+
*/
|
|
39
|
+
let ModelEnablement = class ModelEnablement {
|
|
40
|
+
kdb;
|
|
41
|
+
txHost;
|
|
42
|
+
cacheService;
|
|
43
|
+
extensions;
|
|
44
|
+
adminLock;
|
|
45
|
+
orgLock;
|
|
46
|
+
constructor(kdb, txHost, cacheService, extensions, adminLock, orgLock) {
|
|
47
|
+
this.kdb = kdb;
|
|
48
|
+
this.txHost = txHost;
|
|
49
|
+
this.cacheService = cacheService;
|
|
50
|
+
this.extensions = extensions;
|
|
51
|
+
this.adminLock = adminLock;
|
|
52
|
+
this.orgLock = orgLock;
|
|
53
|
+
}
|
|
54
|
+
get db() {
|
|
55
|
+
return this.kdb.db;
|
|
56
|
+
}
|
|
57
|
+
/** One layer's disabled models (keys {@link modelKey}): the platform's (`null`) or the org's own. */
|
|
58
|
+
async disabled(orgId) {
|
|
59
|
+
return new Set(await this.disabledKeys(orgId === null ? PLATFORM_SCOPE : orgScope(orgId)));
|
|
60
|
+
}
|
|
61
|
+
async disabledKeys(scope) {
|
|
62
|
+
const orgId = scope === PLATFORM_SCOPE ? null : scope.slice("org.".length);
|
|
63
|
+
const rows = await this.rowsOf(orgId);
|
|
64
|
+
return rows.map((r) => modelKey(r.provider, r.model)).sort();
|
|
65
|
+
}
|
|
66
|
+
rowsOf(orgId, provider) {
|
|
67
|
+
let q = this.db
|
|
68
|
+
.selectFrom("model_disabled")
|
|
69
|
+
.select(["provider", "model"])
|
|
70
|
+
.where((eb) => (orgId === null ? eb("org_id", "is", null) : eb("org_id", "=", orgId)));
|
|
71
|
+
if (provider !== undefined)
|
|
72
|
+
q = q.where("provider", "=", provider);
|
|
73
|
+
return q.execute();
|
|
74
|
+
}
|
|
75
|
+
/**
|
|
76
|
+
* The extensions `orgId` explicitly turned off: a row of the org's own switch
|
|
77
|
+
* (`extension_org_configs.enabled = false`, what the org's extension or plugin switch writes when
|
|
78
|
+
* an org admin turns it off), never a required bootstrap plugin. An extension with no row for the
|
|
79
|
+
* org is not in the set (it keeps working as before: spec A §8 with B's no-breakage anti-goal).
|
|
80
|
+
* Read from PG on every call (one small query; the switch has its own writers, nothing to evict).
|
|
81
|
+
*/
|
|
82
|
+
async switchedOff(orgId) {
|
|
83
|
+
const rows = await this.db
|
|
84
|
+
.selectFrom("extension_org_configs as eoc")
|
|
85
|
+
.leftJoin("extension_installs as ri", (j) => j.onRef("ri.name", "=", "eoc.plugin").on("ri.required", "=", true))
|
|
86
|
+
.select("eoc.plugin")
|
|
87
|
+
.where("eoc.org_id", "=", orgId)
|
|
88
|
+
.where("eoc.enabled", "=", false)
|
|
89
|
+
.where("ri.name", "is", null)
|
|
90
|
+
.execute();
|
|
91
|
+
return new Set(rows.map((r) => r.plugin));
|
|
92
|
+
}
|
|
93
|
+
/** Whether neither the platform nor `orgId` disabled the model (the lists only; see the class). */
|
|
94
|
+
async isEnabled(orgId, provider, model) {
|
|
95
|
+
const key = modelKey(provider, model);
|
|
96
|
+
const [platform, org] = await Promise.all([this.disabled(null), this.disabled(orgId)]);
|
|
97
|
+
return !platform.has(key) && !org.has(key);
|
|
98
|
+
}
|
|
99
|
+
/**
|
|
100
|
+
* Changes the platform's disabled ids of `provider` by `change` (super admin, re-checked under
|
|
101
|
+
* the lock): ids in neither list keep their stored state. Returns what now points at a newly
|
|
102
|
+
* disabled model, across orgs.
|
|
103
|
+
*/
|
|
104
|
+
async setPlatform(provider, change, actor) {
|
|
105
|
+
await this.adminLock.lockAndAuthorize(actor.accountId);
|
|
106
|
+
return this.apply(null, provider, change, actor);
|
|
107
|
+
}
|
|
108
|
+
/**
|
|
109
|
+
* Changes the org's disabled ids of `provider` by `change` (`org.models.manage`, re-checked under
|
|
110
|
+
* the org lock): ids in neither list keep their stored state, so rows for models the org's page
|
|
111
|
+
* does not show (platform-disabled, or no longer listed) survive. Returns what in the org now
|
|
112
|
+
* points at a newly disabled model (its agents, its overrides and the deployment defaults it uses).
|
|
113
|
+
*/
|
|
114
|
+
async setOrg(orgId, provider, change, actor) {
|
|
115
|
+
await this.orgLock.lockAndAuthorize(orgId, actor.accountId, "org.models.manage");
|
|
116
|
+
return this.apply(orgId, provider, change, actor);
|
|
117
|
+
}
|
|
118
|
+
async apply(orgId, provider, change, actor) {
|
|
119
|
+
if (!this.extensions.list("model-provider").some((e) => e.plugin === provider)) {
|
|
120
|
+
throw new ApiError("model.provider_not_found", `Model provider ${provider} is not installed`);
|
|
121
|
+
}
|
|
122
|
+
const disable = new Set(change.disable);
|
|
123
|
+
const both = change.enable.filter((m) => disable.has(m));
|
|
124
|
+
if (both.length > 0) {
|
|
125
|
+
throw new ApiError("validation_failed", `A model cannot be both disabled and enabled: ${[...new Set(both)].join(", ")}`);
|
|
126
|
+
}
|
|
127
|
+
const had = new Set((await this.rowsOf(orgId, provider)).map((r) => r.model));
|
|
128
|
+
const added = [...disable].filter((m) => !had.has(m)).sort();
|
|
129
|
+
const removed = [...new Set(change.enable)].filter((m) => had.has(m)).sort();
|
|
130
|
+
if (removed.length > 0) {
|
|
131
|
+
await this.db
|
|
132
|
+
.deleteFrom("model_disabled")
|
|
133
|
+
.where((eb) => (orgId === null ? eb("org_id", "is", null) : eb("org_id", "=", orgId)))
|
|
134
|
+
.where("provider", "=", provider)
|
|
135
|
+
.where("model", "in", removed)
|
|
136
|
+
.execute();
|
|
137
|
+
}
|
|
138
|
+
if (added.length > 0) {
|
|
139
|
+
await this.db
|
|
140
|
+
.insertInto("model_disabled")
|
|
141
|
+
.values(added.map((model) => ({
|
|
142
|
+
org_id: orgId,
|
|
143
|
+
provider,
|
|
144
|
+
model,
|
|
145
|
+
disabled_by: actor.accountId,
|
|
146
|
+
})))
|
|
147
|
+
.execute();
|
|
148
|
+
}
|
|
149
|
+
if (added.length > 0 || removed.length > 0) {
|
|
150
|
+
await audit(this.db, {
|
|
151
|
+
actorAccountId: actor.accountId,
|
|
152
|
+
...(actor.tokenId !== undefined && { actorTokenId: actor.tokenId }),
|
|
153
|
+
...(orgId !== null && { orgId }),
|
|
154
|
+
action: orgId === null ? "model.disabled_set" : "org.model_disabled_set",
|
|
155
|
+
target: provider,
|
|
156
|
+
detail: {
|
|
157
|
+
scope: orgId === null ? "platform" : "org",
|
|
158
|
+
disabled: added,
|
|
159
|
+
enabled: removed,
|
|
160
|
+
},
|
|
161
|
+
});
|
|
162
|
+
}
|
|
163
|
+
return {
|
|
164
|
+
affected: {
|
|
165
|
+
agents: await this.agentsUsing(orgId, provider, added),
|
|
166
|
+
purposes: await this.purposesUsing(orgId, provider, added),
|
|
167
|
+
},
|
|
168
|
+
};
|
|
169
|
+
}
|
|
170
|
+
/** Live agents (of `orgId`, or of every org) whose current version uses one of `models`. */
|
|
171
|
+
async agentsUsing(orgId, provider, models) {
|
|
172
|
+
if (models.length === 0)
|
|
173
|
+
return [];
|
|
174
|
+
const wanted = new Set(models);
|
|
175
|
+
let q = this.db
|
|
176
|
+
.selectFrom("agents as a")
|
|
177
|
+
.innerJoin("agent_versions as v", (j) => j.onRef("v.agent_id", "=", "a.id").onRef("v.version", "=", "a.current_version"))
|
|
178
|
+
.select(["a.id", "a.org_id", "v.definition"])
|
|
179
|
+
.where("a.deleted_at", "is", null)
|
|
180
|
+
.orderBy("a.org_id")
|
|
181
|
+
.orderBy("a.id");
|
|
182
|
+
if (orgId !== null)
|
|
183
|
+
q = q.where("a.org_id", "=", orgId);
|
|
184
|
+
const out = [];
|
|
185
|
+
for (const r of await q.execute()) {
|
|
186
|
+
const def = r.definition;
|
|
187
|
+
const uses = [def?.model, def?.fallback].some((x) => {
|
|
188
|
+
const ref = x;
|
|
189
|
+
return ref?.provider === provider && typeof ref.model === "string" && wanted.has(ref.model);
|
|
190
|
+
});
|
|
191
|
+
if (uses) {
|
|
192
|
+
out.push({
|
|
193
|
+
id: r.id,
|
|
194
|
+
name: typeof def?.name === "string" ? def.name : r.id,
|
|
195
|
+
orgId: r.org_id,
|
|
196
|
+
});
|
|
197
|
+
}
|
|
198
|
+
}
|
|
199
|
+
return out;
|
|
200
|
+
}
|
|
201
|
+
/**
|
|
202
|
+
* Purpose mappings targeting one of `models`: for the platform every default and override, for
|
|
203
|
+
* an org its overrides and the deployment defaults (an org that disabled a default's model has
|
|
204
|
+
* that purpose unconfigured).
|
|
205
|
+
*/
|
|
206
|
+
async purposesUsing(orgId, provider, models) {
|
|
207
|
+
if (models.length === 0)
|
|
208
|
+
return [];
|
|
209
|
+
let q = this.db
|
|
210
|
+
.selectFrom("model_purpose_mappings")
|
|
211
|
+
.select(["purpose", "org_id"])
|
|
212
|
+
.where("provider", "=", provider)
|
|
213
|
+
.where("model", "in", models)
|
|
214
|
+
.orderBy("purpose")
|
|
215
|
+
.orderBy("org_id", (ob) => ob.nullsFirst());
|
|
216
|
+
if (orgId === null) {
|
|
217
|
+
return (await q.execute()).map((r) => ({ purpose: r.purpose, orgId: r.org_id }));
|
|
218
|
+
}
|
|
219
|
+
q = q.where((eb) => eb.or([eb("org_id", "is", null), eb("org_id", "=", orgId)]));
|
|
220
|
+
const rows = await q.execute();
|
|
221
|
+
// a default the org overrides is not what the org uses
|
|
222
|
+
const overridden = new Set((await this.db
|
|
223
|
+
.selectFrom("model_purpose_mappings")
|
|
224
|
+
.select("purpose")
|
|
225
|
+
.where("org_id", "=", orgId)
|
|
226
|
+
.execute()).map((r) => r.purpose));
|
|
227
|
+
return rows
|
|
228
|
+
.filter((r) => r.org_id !== null || !overridden.has(r.purpose))
|
|
229
|
+
.map((r) => ({ purpose: r.purpose, orgId: r.org_id }));
|
|
230
|
+
}
|
|
231
|
+
};
|
|
232
|
+
__decorate([
|
|
233
|
+
Cacheable({ key: "capk:model-disabled:#{0}", ttl: DISABLED_TTL_SECONDS })
|
|
234
|
+
], ModelEnablement.prototype, "disabledKeys", null);
|
|
235
|
+
__decorate([
|
|
236
|
+
Transactional(),
|
|
237
|
+
CacheEvict({ key: `capk:model-disabled:${PLATFORM_SCOPE}` })
|
|
238
|
+
], ModelEnablement.prototype, "setPlatform", null);
|
|
239
|
+
__decorate([
|
|
240
|
+
Transactional(),
|
|
241
|
+
CacheEvict({ key: "capk:model-disabled:org.#{0}" })
|
|
242
|
+
], ModelEnablement.prototype, "setOrg", null);
|
|
243
|
+
ModelEnablement = __decorate([
|
|
244
|
+
Injectable(),
|
|
245
|
+
__param(0, Inject(KernelDb)),
|
|
246
|
+
__param(1, Inject(TransactionHost)),
|
|
247
|
+
__param(2, Inject(CacheService)),
|
|
248
|
+
__param(3, Inject(ExtensionRegistry)),
|
|
249
|
+
__param(4, Inject(SuperAdminLock)),
|
|
250
|
+
__param(5, Inject(OrgLock))
|
|
251
|
+
], ModelEnablement);
|
|
252
|
+
export { ModelEnablement };
|
|
253
|
+
/** The one {@link ModelEnablement}: the provider registry, purposes and the controllers read it. */
|
|
254
|
+
let ModelEnablementModule = class ModelEnablementModule {
|
|
255
|
+
};
|
|
256
|
+
ModelEnablementModule = __decorate([
|
|
257
|
+
Module({
|
|
258
|
+
imports: [ExtensionRegistryModule, SuperAdminLockModule, OrgLockModule],
|
|
259
|
+
providers: [ModelEnablement],
|
|
260
|
+
exports: [ModelEnablement],
|
|
261
|
+
})
|
|
262
|
+
], ModelEnablementModule);
|
|
263
|
+
export { ModelEnablementModule };
|
|
@@ -1,3 +1,7 @@
|
|
|
1
|
-
/**
|
|
1
|
+
/**
|
|
2
|
+
* Model prices, model purposes, the model disabled lists and the `ctx.models` embeddings broker.
|
|
3
|
+
* Below the extension host (the host injects {@link ModelEmbeddings} for `ctx.models`): it must not
|
|
4
|
+
* import `ExtensionsModule`.
|
|
5
|
+
*/
|
|
2
6
|
export declare class ModelsModule {
|
|
3
7
|
}
|
|
@@ -9,16 +9,28 @@ import { ExtensionRegistryModule } from "../extensions/registry.js";
|
|
|
9
9
|
import { IdentityModule } from "../identity/identity.module.js";
|
|
10
10
|
import { OrgLockModule } from "../orgs/org-lock.js";
|
|
11
11
|
import { ProvidersModule } from "../runtime/providers.js";
|
|
12
|
+
import { ModelEmbeddings } from "./embeddings.js";
|
|
13
|
+
import { ModelEnablementModule } from "./enablement.js";
|
|
12
14
|
import { PricesService } from "./prices.js";
|
|
13
15
|
import { ModelPurposesService } from "./purposes.js";
|
|
14
|
-
/**
|
|
16
|
+
/**
|
|
17
|
+
* Model prices, model purposes, the model disabled lists and the `ctx.models` embeddings broker.
|
|
18
|
+
* Below the extension host (the host injects {@link ModelEmbeddings} for `ctx.models`): it must not
|
|
19
|
+
* import `ExtensionsModule`.
|
|
20
|
+
*/
|
|
15
21
|
let ModelsModule = class ModelsModule {
|
|
16
22
|
};
|
|
17
23
|
ModelsModule = __decorate([
|
|
18
24
|
Module({
|
|
19
|
-
imports: [
|
|
20
|
-
|
|
21
|
-
|
|
25
|
+
imports: [
|
|
26
|
+
ExtensionRegistryModule,
|
|
27
|
+
IdentityModule,
|
|
28
|
+
OrgLockModule,
|
|
29
|
+
ProvidersModule,
|
|
30
|
+
ModelEnablementModule,
|
|
31
|
+
],
|
|
32
|
+
providers: [PricesService, ModelPurposesService, ModelEmbeddings],
|
|
33
|
+
exports: [PricesService, ModelPurposesService, ModelEnablementModule, ModelEmbeddings],
|
|
22
34
|
})
|
|
23
35
|
], ModelsModule);
|
|
24
36
|
export { ModelsModule };
|
package/dist/models/prices.d.ts
CHANGED
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
import type { ModelUsage } from "@capybara-hq/plugin-sdk";
|
|
2
2
|
import { z } from "zod";
|
|
3
|
-
import {
|
|
3
|
+
import { SuperAdminLock } from "../identity/super-admin.js";
|
|
4
4
|
import { KernelDb } from "../infra/database/kernel-db.js";
|
|
5
5
|
import { TransactionHost } from "../infra/database/transaction-host.js";
|
|
6
6
|
/**
|
|
7
|
-
* 一个模型的价格(C2):每百万 token,币种为部署设置 `priceCurrency
|
|
7
|
+
* 一个模型的价格(C2):每百万 token,币种为部署设置 `priceCurrency`。由超级管理员录入,插件不声明价格。
|
|
8
8
|
* 缓存读 / 写价为 null 时按输入价计。
|
|
9
9
|
*/
|
|
10
10
|
export interface ModelPrice {
|
|
@@ -40,13 +40,13 @@ export declare class PricesService {
|
|
|
40
40
|
private readonly db;
|
|
41
41
|
readonly txHost: TransactionHost;
|
|
42
42
|
private readonly adminLock;
|
|
43
|
-
constructor(db: KernelDb, txHost: TransactionHost, adminLock:
|
|
43
|
+
constructor(db: KernelDb, txHost: TransactionHost, adminLock: SuperAdminLock);
|
|
44
44
|
/** 全部价格,按 provider、model 排序。 */
|
|
45
45
|
list(): Promise<ModelPrice[]>;
|
|
46
46
|
/** 价格表(按 {@link priceKey} 查)。 */
|
|
47
47
|
table(): Promise<PriceTable>;
|
|
48
48
|
/**
|
|
49
|
-
* 设置或删除(`price: null
|
|
49
|
+
* 设置或删除(`price: null`)一个模型的价格:事务内取超级管理员锁并复核发起人仍是活跃超级管理员
|
|
50
50
|
* (否则 `forbidden`),写审计 `model_price.updated` / `model_price.deleted`。
|
|
51
51
|
*/
|
|
52
52
|
put(input: ModelPrice | {
|
|
@@ -54,6 +54,6 @@ export declare class PricesService {
|
|
|
54
54
|
model: string;
|
|
55
55
|
price: null;
|
|
56
56
|
}, actorAccountId: string, actorTokenId?: string): Promise<void>;
|
|
57
|
-
/** The write of {@link put}, under the
|
|
57
|
+
/** The write of {@link put}, under the super admin lock. */
|
|
58
58
|
private write;
|
|
59
59
|
}
|
package/dist/models/prices.js
CHANGED
|
@@ -11,7 +11,7 @@ import { Inject, Injectable } from "@nestjs/common";
|
|
|
11
11
|
import { z } from "zod";
|
|
12
12
|
import { ApiError } from "../errors.js";
|
|
13
13
|
import { audit } from "../identity/audit.js";
|
|
14
|
-
import {
|
|
14
|
+
import { SuperAdminLock } from "../identity/super-admin.js";
|
|
15
15
|
import { KernelDb } from "../infra/database/kernel-db.js";
|
|
16
16
|
import { TransactionHost } from "../infra/database/transaction-host.js";
|
|
17
17
|
import { Transactional } from "../infra/database/transactional.decorator.js";
|
|
@@ -87,7 +87,7 @@ let PricesService = class PricesService {
|
|
|
87
87
|
return new Map((await this.list()).map((p) => [priceKey(p.provider, p.model), p]));
|
|
88
88
|
}
|
|
89
89
|
/**
|
|
90
|
-
* 设置或删除(`price: null
|
|
90
|
+
* 设置或删除(`price: null`)一个模型的价格:事务内取超级管理员锁并复核发起人仍是活跃超级管理员
|
|
91
91
|
* (否则 `forbidden`),写审计 `model_price.updated` / `model_price.deleted`。
|
|
92
92
|
*/
|
|
93
93
|
async put(input, actorAccountId, actorTokenId) {
|
|
@@ -97,7 +97,7 @@ let PricesService = class PricesService {
|
|
|
97
97
|
}
|
|
98
98
|
await this.write(check.data, actorAccountId, actorTokenId);
|
|
99
99
|
}
|
|
100
|
-
/** The write of {@link put}, under the
|
|
100
|
+
/** The write of {@link put}, under the super admin lock. */
|
|
101
101
|
async write(v, actorAccountId, actorTokenId) {
|
|
102
102
|
await this.adminLock.lockAndAuthorize(actorAccountId);
|
|
103
103
|
const target = `${v.provider}/${v.model}`;
|
|
@@ -144,6 +144,6 @@ PricesService = __decorate([
|
|
|
144
144
|
Injectable(),
|
|
145
145
|
__param(0, Inject(KernelDb)),
|
|
146
146
|
__param(1, Inject(TransactionHost)),
|
|
147
|
-
__param(2, Inject(
|
|
147
|
+
__param(2, Inject(SuperAdminLock))
|
|
148
148
|
], PricesService);
|
|
149
149
|
export { PricesService };
|
|
@@ -1,6 +1,7 @@
|
|
|
1
|
+
import { ExtensionDisplayNames } from "../extensions/display-name.js";
|
|
1
2
|
import { type Principal } from "../identity/principal.js";
|
|
2
3
|
import { type OrgContext } from "../orgs/org.guard.js";
|
|
3
|
-
import { ModelPurposesService, type
|
|
4
|
+
import { ModelPurposesService, type PurposeListing, type PurposePut, type PurposeTarget } from "./purposes.js";
|
|
4
5
|
/** body 的目标(参数缺省为 `{}`)。 */
|
|
5
6
|
export declare const purposeTargetOf: (b: PurposePut) => PurposeTarget | null;
|
|
6
7
|
/**
|
|
@@ -9,11 +10,12 @@ export declare const purposeTargetOf: (b: PurposePut) => PurposeTarget | null;
|
|
|
9
10
|
*/
|
|
10
11
|
export declare class ModelPurposesController {
|
|
11
12
|
private readonly purposes;
|
|
12
|
-
|
|
13
|
+
private readonly displayNames;
|
|
14
|
+
constructor(purposes: ModelPurposesService, displayNames: ExtensionDisplayNames);
|
|
13
15
|
list(principal: Principal, org: OrgContext): Promise<{
|
|
14
|
-
purposes:
|
|
16
|
+
purposes: PurposeListing[];
|
|
15
17
|
}>;
|
|
16
18
|
put(principal: Principal, org: OrgContext, purpose: string, body: PurposePut): Promise<{
|
|
17
|
-
purpose:
|
|
19
|
+
purpose: PurposeListing;
|
|
18
20
|
}>;
|
|
19
21
|
}
|
|
@@ -8,10 +8,11 @@ var __param = (this && this.__param) || function (paramIndex, decorator) {
|
|
|
8
8
|
return function (target, key) { decorator(target, key, paramIndex); }
|
|
9
9
|
};
|
|
10
10
|
import { Controller, Get, Inject, Param, Put } from "@nestjs/common";
|
|
11
|
+
import { ExtensionDisplayNames } from "../extensions/display-name.js";
|
|
11
12
|
import { CurrentPrincipal, patTokenId, requireUser, } from "../identity/principal.js";
|
|
12
13
|
import { ZBody } from "../infra/validation/zod-params.js";
|
|
13
14
|
import { CurrentOrg, OrgAction } from "../orgs/org.guard.js";
|
|
14
|
-
import { ModelPurposesService, PurposePutDto, } from "./purposes.js";
|
|
15
|
+
import { ModelPurposesService, PurposePutDto, withDeclaredByNames, } from "./purposes.js";
|
|
15
16
|
/** body 的目标(参数缺省为 `{}`)。 */
|
|
16
17
|
export const purposeTargetOf = (b) => b.target === null ? null : { model: b.target.model, params: b.target.params ?? {} };
|
|
17
18
|
/**
|
|
@@ -20,18 +21,22 @@ export const purposeTargetOf = (b) => b.target === null ? null : { model: b.targ
|
|
|
20
21
|
*/
|
|
21
22
|
let ModelPurposesController = class ModelPurposesController {
|
|
22
23
|
purposes;
|
|
23
|
-
|
|
24
|
+
displayNames;
|
|
25
|
+
constructor(purposes, displayNames) {
|
|
24
26
|
this.purposes = purposes;
|
|
27
|
+
this.displayNames = displayNames;
|
|
25
28
|
}
|
|
26
29
|
async list(principal, org) {
|
|
27
30
|
requireUser(principal);
|
|
28
|
-
return {
|
|
31
|
+
return {
|
|
32
|
+
purposes: await withDeclaredByNames(await this.purposes.list(org.orgId), this.displayNames),
|
|
33
|
+
};
|
|
29
34
|
}
|
|
30
35
|
async put(principal, org, purpose, body) {
|
|
31
36
|
const p = requireUser(principal);
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
};
|
|
37
|
+
const view = await this.purposes.setOrg(org.orgId, purpose, purposeTargetOf(body), p.account.id, patTokenId(p));
|
|
38
|
+
const [listing] = await withDeclaredByNames([view], this.displayNames);
|
|
39
|
+
return { purpose: listing };
|
|
35
40
|
}
|
|
36
41
|
};
|
|
37
42
|
__decorate([
|
|
@@ -50,6 +55,7 @@ __decorate([
|
|
|
50
55
|
], ModelPurposesController.prototype, "put", null);
|
|
51
56
|
ModelPurposesController = __decorate([
|
|
52
57
|
Controller("api/v1/orgs/:orgId/model-purposes"),
|
|
53
|
-
__param(0, Inject(ModelPurposesService))
|
|
58
|
+
__param(0, Inject(ModelPurposesService)),
|
|
59
|
+
__param(1, Inject(ExtensionDisplayNames))
|
|
54
60
|
], ModelPurposesController);
|
|
55
61
|
export { ModelPurposesController };
|
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
import { type ContentBlock, type ModelRequest, type ModelUsage, type ParamValue, type StopReason } from "@capybara-hq/plugin-sdk";
|
|
1
|
+
import { type ContentBlock, type LocalizedName, type ModelRequest, type ModelUsage, type ParamValue, type StopReason } from "@capybara-hq/plugin-sdk";
|
|
2
2
|
import { z } from "zod";
|
|
3
3
|
import { ModelRef } from "../agents/definition.js";
|
|
4
4
|
import { ExtensionRegistry } from "../extensions/registry.js";
|
|
5
|
-
import {
|
|
5
|
+
import { SuperAdminLock } from "../identity/super-admin.js";
|
|
6
6
|
import { KernelConfigService } from "../infra/config/kernel-config.service.js";
|
|
7
7
|
import { KernelDb } from "../infra/database/kernel-db.js";
|
|
8
8
|
import { TransactionHost } from "../infra/database/transaction-host.js";
|
|
@@ -11,9 +11,11 @@ import { ProviderRegistry } from "../runtime/providers.js";
|
|
|
11
11
|
/**
|
|
12
12
|
* 模型用途映射(C9):内核与插件按「用途」取模型,不在代码里写死模型。
|
|
13
13
|
* - 用途 = 内核用途 {@link KERNEL_PURPOSES}(目前只有评委 `eval`),或已加载插件 `permissions.models` 声明的;
|
|
14
|
-
* - 映射 = 部署默认(`org_id` 为 null
|
|
14
|
+
* - 映射 = 部署默认(`org_id` 为 null,超级管理员设)+ 组织覆盖(组织管理员设,`org.models.manage`);
|
|
15
15
|
* 生效的映射先取组织覆盖、再取部署默认,都没有 → `model.unconfigured`;
|
|
16
|
-
* -
|
|
16
|
+
* - a target's kind must equal the purpose's kind; an org's override must be enabled in the org on
|
|
17
|
+
* save (a deployment default: not disabled on the platform), and an effective target disabled in
|
|
18
|
+
* the org (by either layer) counts as unconfigured there (spec B §5.3);参数按目标模型自己的声明严格校验;
|
|
17
19
|
* - 每次都查 PG,不在进程内缓存(多副本下改映射立即生效)。`ctx.models` 仍预留,插件暂不能调用。
|
|
18
20
|
*/
|
|
19
21
|
/**
|
|
@@ -46,21 +48,21 @@ export declare const KERNEL_PURPOSES: readonly [{
|
|
|
46
48
|
readonly purpose: "subagent_fast";
|
|
47
49
|
readonly kind: "chat";
|
|
48
50
|
readonly label: {
|
|
49
|
-
readonly zh: "
|
|
51
|
+
readonly zh: "子智能体:快速";
|
|
50
52
|
readonly en: "Sub-agent: fast";
|
|
51
53
|
};
|
|
52
54
|
}, {
|
|
53
55
|
readonly purpose: "subagent_standard";
|
|
54
56
|
readonly kind: "chat";
|
|
55
57
|
readonly label: {
|
|
56
|
-
readonly zh: "
|
|
58
|
+
readonly zh: "子智能体:标准";
|
|
57
59
|
readonly en: "Sub-agent: standard";
|
|
58
60
|
};
|
|
59
61
|
}, {
|
|
60
62
|
readonly purpose: "subagent_capable";
|
|
61
63
|
readonly kind: "chat";
|
|
62
64
|
readonly label: {
|
|
63
|
-
readonly zh: "
|
|
65
|
+
readonly zh: "子智能体:最强";
|
|
64
66
|
readonly en: "Sub-agent: capable";
|
|
65
67
|
};
|
|
66
68
|
}];
|
|
@@ -82,6 +84,17 @@ export interface PurposeView {
|
|
|
82
84
|
override: PurposeTarget | null;
|
|
83
85
|
effective: PurposeTarget | null;
|
|
84
86
|
}
|
|
87
|
+
/**
|
|
88
|
+
* A purpose as the purpose APIs return it: the view plus the declaring extension's display name
|
|
89
|
+
* (`null` for a kernel purpose, or an extension without one), so a page names the extension.
|
|
90
|
+
*/
|
|
91
|
+
export interface PurposeListing extends PurposeView {
|
|
92
|
+
declaredByName: LocalizedName | null;
|
|
93
|
+
}
|
|
94
|
+
/** {@link PurposeListing}s of `views`, the display names read in one call. */
|
|
95
|
+
export declare function withDeclaredByNames(views: PurposeView[], names: {
|
|
96
|
+
many(names: string[]): Promise<Map<string, LocalizedName | null>>;
|
|
97
|
+
}): Promise<PurposeListing[]>;
|
|
85
98
|
/** `PUT …/model-purposes/:purpose` 的 body:设映射,或 `target: null` 清除。 */
|
|
86
99
|
export declare const PURPOSE_PUT: z.ZodObject<{
|
|
87
100
|
target: z.ZodNullable<z.ZodObject<{
|
|
@@ -128,7 +141,7 @@ export declare class ModelPurposesService {
|
|
|
128
141
|
readonly txHost: TransactionHost;
|
|
129
142
|
private readonly adminLock;
|
|
130
143
|
private readonly orgLock;
|
|
131
|
-
constructor(db: KernelDb, extensions: ExtensionRegistry, config: KernelConfigService, providers: Pick<ProviderRegistry, "resolve">, txHost: TransactionHost, adminLock:
|
|
144
|
+
constructor(db: KernelDb, extensions: ExtensionRegistry, config: KernelConfigService, providers: Pick<ProviderRegistry, "resolve" | "platformInfo">, txHost: TransactionHost, adminLock: SuperAdminLock, orgLock: OrgLock);
|
|
132
145
|
/** 全部已声明的用途:内核的在前,其后按插件加载顺序。 */
|
|
133
146
|
private declared;
|
|
134
147
|
private find;
|
|
@@ -136,16 +149,28 @@ export declare class ModelPurposesService {
|
|
|
136
149
|
private views;
|
|
137
150
|
/** 全部用途与映射;不给 `orgId` = 部署级视图(`override` 一律为 null)。 */
|
|
138
151
|
list(orgId?: string): Promise<PurposeView[]>;
|
|
139
|
-
/**
|
|
152
|
+
/**
|
|
153
|
+
* 校验目标:模型可解析且启用(an org's override for the org, a deployment default in the
|
|
154
|
+
* platform view)、its kind is the purpose's `kind`、参数按它的声明严格通过。
|
|
155
|
+
*/
|
|
140
156
|
private check;
|
|
141
157
|
private set;
|
|
142
|
-
/** The mapping write of {@link set}, under the
|
|
158
|
+
/** The mapping write of {@link set}, under the super admin or org lock. */
|
|
143
159
|
private write;
|
|
144
|
-
/** 设置(或 `null`
|
|
160
|
+
/** 设置(或 `null` 清除)部署默认;只有超级管理员(事务内复核)。 */
|
|
145
161
|
setDefault(purpose: string, target: PurposeTarget | null, actor: string, actorTokenId?: string): Promise<PurposeView>;
|
|
146
162
|
/** 设置(或 `null` 清除)组织覆盖;事务内锁组织并复核 `org.models.manage`。 */
|
|
147
163
|
setOrg(orgId: string, purpose: string, target: PurposeTarget | null, actor: string, actorTokenId?: string): Promise<PurposeView>;
|
|
148
|
-
/**
|
|
164
|
+
/**
|
|
165
|
+
* 生效的映射:组织覆盖,否则部署默认;都没有 → `model.unconfigured`;用途未声明 → `model.purpose_unknown`。
|
|
166
|
+
* An effective target the org cannot use counts as unconfigured there (spec B §5.3): checked in
|
|
167
|
+
* the registry's org view, so a model the platform or the org disabled, a provider off or needing
|
|
168
|
+
* configuration in the org, a model gone from the org's list or of another kind than the purpose
|
|
169
|
+
* all give `model.unconfigured`. A provider whose list fails (`ProviderListError`) keeps the
|
|
170
|
+
* mapping: the call that follows resolves the model again and fails there, retryably, so paths
|
|
171
|
+
* that only read the mapping (sub-agent tiers, eval start, `ctx.models.describe`) do not fail on
|
|
172
|
+
* a transient list error.
|
|
173
|
+
*/
|
|
149
174
|
resolve(orgId: string, purpose: string): Promise<PurposeTarget>;
|
|
150
175
|
/** The target a {@link chat} call on `purpose` uses: the mapping, else `fallback` when unmapped. */
|
|
151
176
|
private chatTarget;
|