@capybara-hq/kernel 0.1.0-rc.3 → 0.1.0-rc.5
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 +47 -16
- package/dist/admin/admin.controller.js +44 -19
- package/dist/admin/extensions.controller.d.ts +24 -3
- package/dist/admin/extensions.controller.js +48 -8
- 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 +19 -0
- package/dist/agents/agent-lookup.js +21 -0
- package/dist/agents/agent-profile.service.d.ts +29 -0
- package/dist/agents/agent-profile.service.js +117 -0
- package/dist/agents/agents.controller.d.ts +168 -3
- package/dist/agents/agents.controller.js +201 -12
- package/dist/agents/agents.module.d.ts +4 -1
- package/dist/agents/agents.module.js +36 -6
- package/dist/agents/agents.service.d.ts +64 -27
- package/dist/agents/agents.service.js +199 -74
- package/dist/agents/definition.d.ts +53 -0
- package/dist/agents/definition.js +55 -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/instruction-files.d.ts +60 -0
- package/dist/agents/instruction-files.js +111 -0
- package/dist/agents/models.controller.d.ts +9 -3
- package/dist/agents/models.controller.js +19 -4
- 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/profile.d.ts +96 -0
- package/dist/agents/profile.js +51 -0
- package/dist/agents/readiness.controller.d.ts +26 -0
- package/dist/agents/readiness.controller.js +56 -0
- package/dist/agents/templates.controller.d.ts +86 -5
- package/dist/agents/templates.controller.js +171 -7
- package/dist/agents/templates.d.ts +127 -23
- package/dist/agents/templates.js +476 -53
- package/dist/background/background.controller.d.ts +38 -0
- package/dist/background/background.controller.js +87 -0
- package/dist/background/background.module.d.ts +10 -0
- package/dist/background/background.module.js +39 -0
- package/dist/background/finish.d.ts +44 -0
- package/dist/background/finish.js +94 -0
- package/dist/background/launch-lock.d.ts +15 -0
- package/dist/background/launch-lock.js +40 -0
- package/dist/background/launch.d.ts +36 -0
- package/dist/background/launch.js +70 -0
- package/dist/background/poll.job.d.ts +56 -0
- package/dist/background/poll.job.js +190 -0
- package/dist/background/render.d.ts +23 -0
- package/dist/background/render.js +48 -0
- package/dist/background/session.d.ts +48 -0
- package/dist/background/session.js +79 -0
- package/dist/background/status.d.ts +35 -0
- package/dist/background/status.js +57 -0
- package/dist/background/stop.d.ts +68 -0
- package/dist/background/stop.js +243 -0
- package/dist/background/store.d.ts +162 -0
- package/dist/background/store.js +357 -0
- package/dist/background/store.module.d.ts +6 -0
- package/dist/background/store.module.js +22 -0
- package/dist/background/tasks.service.d.ts +77 -0
- package/dist/background/tasks.service.js +211 -0
- package/dist/background/wake-rules.d.ts +66 -0
- package/dist/background/wake-rules.js +113 -0
- package/dist/background/wake.d.ts +30 -0
- package/dist/background/wake.js +63 -0
- package/dist/catalog/admin-catalog.controller.d.ts +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/claude/agents.js +2 -0
- 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 +623 -83
- 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 +1148 -1137
- 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 +21 -3
- package/dist/channels/channels.module.js +2 -0
- package/dist/channels/connections.service.d.ts +16 -1
- package/dist/channels/connections.service.js +38 -4
- 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/channels/threads.d.ts +5 -0
- package/dist/channels/threads.js +8 -0
- package/dist/config/docs.js +3 -1
- package/dist/config/schema.d.ts +24 -2
- package/dist/config/schema.js +145 -19
- package/dist/conversations/access.d.ts +6 -4
- package/dist/conversations/access.js +29 -5
- package/dist/conversations/agent-tree.d.ts +46 -0
- package/dist/conversations/agent-tree.js +92 -0
- package/dist/conversations/attachments.service.d.ts +30 -0
- package/dist/conversations/attachments.service.js +130 -5
- package/dist/conversations/conversations.controller.d.ts +79 -23
- package/dist/conversations/conversations.controller.js +141 -50
- package/dist/conversations/conversations.module.d.ts +1 -1
- package/dist/conversations/conversations.module.js +10 -7
- package/dist/conversations/conversations.service.d.ts +108 -9
- package/dist/conversations/conversations.service.js +237 -30
- package/dist/conversations/environment-status.d.ts +24 -0
- package/dist/conversations/environment-status.js +71 -0
- package/dist/conversations/event-log.d.ts +21 -6
- package/dist/conversations/event-log.js +70 -1
- package/dist/conversations/events.d.ts +140 -0
- package/dist/conversations/events.js +142 -13
- package/dist/conversations/queue.d.ts +3 -1
- package/dist/conversations/queue.js +13 -2
- package/dist/conversations/queue.service.d.ts +1 -1
- package/dist/conversations/queue.service.js +8 -1
- package/dist/conversations/titles.d.ts +12 -3
- package/dist/conversations/titles.js +36 -8
- package/dist/conversations/tree.d.ts +17 -0
- package/dist/conversations/tree.js +42 -0
- package/dist/ctx/create-ctx.d.ts +5 -0
- package/dist/ctx/create-ctx.js +15 -5
- package/dist/db/kernel-schema.d.ts +420 -20
- package/dist/db/pool.d.ts +5 -0
- package/dist/db/pool.js +3 -0
- 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 +90 -2
- package/dist/errors.js +90 -2
- package/dist/evals/reconstruct.d.ts +18 -9
- package/dist/evals/reconstruct.js +26 -7
- package/dist/evals/run-replay.d.ts +7 -2
- package/dist/evals/run-replay.js +42 -7
- package/dist/evals/step-replay.d.ts +2 -5
- package/dist/evals/step-replay.js +13 -7
- package/dist/evals/trajectory.js +1 -1
- package/dist/evals/trajectory.service.d.ts +8 -3
- package/dist/evals/trajectory.service.js +26 -14
- package/dist/evals/worker.d.ts +5 -5
- package/dist/evals/worker.js +9 -3
- package/dist/extensions/admin-ops.d.ts +36 -10
- package/dist/extensions/admin-ops.js +67 -42
- package/dist/extensions/admin-view.d.ts +39 -10
- package/dist/extensions/admin-view.js +111 -20
- package/dist/extensions/blobs.js +1 -0
- 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-issues.d.ts +13 -1
- package/dist/extensions/config-issues.js +22 -5
- package/dist/extensions/config-json-schema.d.ts +43 -7
- package/dist/extensions/config-json-schema.js +124 -58
- package/dist/extensions/deployment-config-store.d.ts +6 -0
- package/dist/extensions/deployment-config.d.ts +78 -8
- package/dist/extensions/deployment-config.js +172 -34
- package/dist/extensions/display-name.d.ts +22 -0
- package/dist/extensions/display-name.js +77 -0
- package/dist/extensions/effective-config.d.ts +127 -0
- package/dist/extensions/effective-config.js +368 -0
- package/dist/extensions/extensions.module.js +14 -2
- package/dist/extensions/hooks.d.ts +37 -4
- package/dist/extensions/hooks.js +82 -16
- package/dist/extensions/host.d.ts +45 -2
- package/dist/extensions/host.js +112 -16
- package/dist/extensions/installs.d.ts +20 -8
- package/dist/extensions/installs.js +37 -15
- package/dist/extensions/org-config.d.ts +81 -6
- package/dist/extensions/org-config.js +195 -44
- package/dist/extensions/org-levels.d.ts +37 -0
- package/dist/extensions/org-levels.js +71 -0
- package/dist/extensions/org-overrides.d.ts +151 -0
- package/dist/extensions/org-overrides.js +524 -0
- package/dist/extensions/package.d.ts +14 -1
- package/dist/extensions/package.js +51 -2
- package/dist/extensions/permission-view.d.ts +19 -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.controller.d.ts +34 -0
- package/dist/extensions/point-defaults.controller.js +71 -0
- package/dist/extensions/point-defaults.d.ts +71 -0
- package/dist/extensions/point-defaults.js +234 -0
- package/dist/extensions/registry.d.ts +1 -1
- package/dist/extensions/registry.js +2 -0
- package/dist/extensions/resolve.d.ts +5 -1
- package/dist/extensions/resolve.js +15 -2
- package/dist/files/previewers.d.ts +8 -1
- package/dist/files/previewers.js +35 -6
- package/dist/http/api.module.js +31 -3
- package/dist/http/app.d.ts +11 -2
- package/dist/http/app.js +31 -5
- package/dist/http/nest-logger.d.ts +6 -5
- package/dist/http/nest-logger.js +24 -10
- 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.controller.js +9 -5
- package/dist/identity/auth.guard.d.ts +13 -5
- package/dist/identity/auth.guard.js +26 -9
- package/dist/identity/cookies.d.ts +20 -5
- package/dist/identity/cookies.js +44 -6
- package/dist/identity/identity.module.d.ts +1 -1
- package/dist/identity/identity.module.js +4 -4
- package/dist/identity/me.controller.d.ts +5 -1
- package/dist/identity/me.controller.js +12 -3
- package/dist/identity/principal.d.ts +3 -3
- package/dist/identity/principal.js +3 -3
- package/dist/identity/sessions.d.ts +12 -0
- package/dist/identity/sessions.js +45 -0
- 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 +2 -2
- package/dist/index.js +1 -1
- package/dist/infra/cli/kernel-cli.module.js +9 -1
- package/dist/infra/config/kernel-config.service.js +27 -1
- package/dist/infra/database/database.module.js +1 -0
- package/dist/infra/database/xact-lock.d.ts +1 -1
- package/dist/infra/database/xact-lock.js +1 -1
- package/dist/infra/events/kernel-events.d.ts +19 -2
- package/dist/infra/lifecycle/process-guards.js +4 -0
- package/dist/infra/logging/logging.module.d.ts +4 -2
- package/dist/infra/logging/logging.module.js +24 -6
- package/dist/infra/queue/add-job-once.d.ts +14 -0
- package/dist/infra/queue/add-job-once.js +16 -0
- package/dist/infra/queue/redis-connection.d.ts +6 -0
- package/dist/infra/queue/redis-connection.js +7 -0
- package/dist/infra/redis/redis.module.js +6 -2
- package/dist/infra/tokens.d.ts +6 -1
- package/dist/infra/tokens.js +6 -1
- 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/log.d.ts +13 -1
- package/dist/log.js +93 -17
- 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 +43 -9
- package/dist/models/purposes.js +48 -18
- package/dist/orgs/directory-sync.d.ts +14 -5
- package/dist/orgs/directory-sync.js +41 -17
- package/dist/orgs/offboarding.d.ts +12 -8
- package/dist/orgs/offboarding.js +54 -33
- package/dist/orgs/org-lock.d.ts +5 -0
- package/dist/orgs/org-lock.js +13 -0
- package/dist/orgs/org.guard.d.ts +10 -0
- package/dist/orgs/org.guard.js +43 -32
- package/dist/orgs/orgs.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 +20 -3
- package/dist/orgs/settings.service.js +19 -4
- 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 +1387 -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 +15 -1
- package/dist/runtime/context/build.d.ts +11 -7
- package/dist/runtime/context/build.js +46 -19
- package/dist/runtime/context/claude-tools.d.ts +3 -1
- package/dist/runtime/context/claude-tools.js +8 -6
- package/dist/runtime/context/compaction.js +13 -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.js +2 -0
- package/dist/runtime/langgraph-loop.d.ts +3 -1
- package/dist/runtime/langgraph-loop.js +36 -17
- package/dist/runtime/loop.d.ts +34 -5
- package/dist/runtime/maintenance.d.ts +9 -4
- package/dist/runtime/maintenance.js +35 -8
- package/dist/runtime/model-call.d.ts +46 -8
- package/dist/runtime/model-call.js +72 -21
- package/dist/runtime/providers.d.ts +6 -0
- package/dist/runtime/providers.js +8 -0
- package/dist/runtime/run-control.d.ts +11 -1
- package/dist/runtime/run-control.js +12 -0
- package/dist/runtime/run-drafts.d.ts +85 -0
- package/dist/runtime/run-drafts.js +230 -0
- package/dist/runtime/run-jobs.d.ts +3 -5
- package/dist/runtime/run-jobs.js +3 -7
- package/dist/runtime/run-queue.d.ts +59 -2
- package/dist/runtime/run-queue.js +311 -38
- package/dist/runtime/run-worker.d.ts +11 -5
- package/dist/runtime/run-worker.js +69 -33
- package/dist/runtime/runtime.module.js +11 -3
- package/dist/runtime/step-log.d.ts +15 -4
- package/dist/runtime/step-log.js +24 -7
- package/dist/runtime/stream.controller.d.ts +23 -1
- package/dist/runtime/stream.controller.js +60 -3
- package/dist/runtime/stream.d.ts +4 -1
- package/dist/runtime/stream.js +27 -3
- package/dist/runtime/subagents/child.d.ts +55 -7
- package/dist/runtime/subagents/child.js +105 -7
- package/dist/runtime/subagents/definition.d.ts +12 -3
- package/dist/runtime/subagents/definition.js +44 -28
- 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.d.ts +2 -1
- package/dist/runtime/usage-report.js +19 -13
- package/dist/runtime/waits.d.ts +145 -36
- package/dist/runtime/waits.js +423 -109
- 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 +10 -4
- package/dist/sandbox/sandbox.service.d.ts +282 -129
- package/dist/sandbox/sandbox.service.js +736 -381
- 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 +25 -4
- package/dist/tools/builtin-names.d.ts +41 -7
- package/dist/tools/builtin-names.js +59 -7
- 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 +19 -1
- package/dist/tools/builtins/builtin-tools.js +59 -2
- 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.d.ts +1 -1
- package/dist/tools/builtins/sandbox/bash.js +241 -4
- package/dist/tools/builtins/sandbox/common.d.ts +69 -27
- package/dist/tools/builtins/sandbox/common.js +87 -48
- package/dist/tools/builtins/sandbox/deliver.js +1 -1
- 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 +3 -1
- package/dist/tools/builtins/sandbox/index.js +7 -1
- package/dist/tools/builtins/sandbox/read.js +1 -1
- package/dist/tools/builtins/sandbox/task-output.d.ts +74 -0
- package/dist/tools/builtins/sandbox/task-output.js +329 -0
- package/dist/tools/builtins/sandbox/task-stop.d.ts +10 -0
- package/dist/tools/builtins/sandbox/task-stop.js +113 -0
- package/dist/tools/builtins/sandbox/write.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/errors.d.ts +8 -0
- package/dist/tools/builtins/web/errors.js +53 -0
- package/dist/tools/builtins/web/extract.d.ts +62 -0
- package/dist/tools/builtins/web/extract.js +271 -0
- package/dist/tools/builtins/web/fetch.d.ts +55 -0
- package/dist/tools/builtins/web/fetch.js +175 -0
- package/dist/tools/builtins/web/index.d.ts +13 -0
- package/dist/tools/builtins/web/index.js +12 -0
- package/dist/tools/builtins/web/page-cache.d.ts +25 -0
- package/dist/tools/builtins/web/page-cache.js +77 -0
- package/dist/tools/builtins/web/search.d.ts +25 -0
- package/dist/tools/builtins/web/search.js +210 -0
- package/dist/tools/builtins/web/url.d.ts +17 -0
- package/dist/tools/builtins/web/url.js +43 -0
- package/dist/tools/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/oauth/flow-paths.d.ts +1 -1
- package/dist/tools/oauth/flow-paths.js +1 -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 +202 -364
- package/dist/tools/policy.d.ts +1 -1
- package/dist/tools/policy.js +36 -16
- package/dist/tools/registry.d.ts +120 -8
- package/dist/tools/registry.js +112 -19
- package/dist/tools/tools.module.js +24 -2
- package/dist/tools/validate.js +1 -1
- package/dist/ui/views.d.ts +2 -1
- package/dist/ui/views.js +17 -3
- package/package.json +3 -3
- package/src/migrations/0064_account_last_org.sql +7 -0
- package/src/migrations/0065_conversation_archive.sql +8 -0
- package/src/migrations/0066_extension_display_name.sql +4 -0
- package/src/migrations/0067_agent_profiles.sql +20 -0
- package/src/migrations/0068_agent_avatar_uploads.sql +7 -0
- package/src/migrations/0069_attachments_agent_idx.sql +3 -0
- package/src/migrations/0070_background_tasks.sql +37 -0
- package/src/migrations/0071_background_tasks_reserve.sql +6 -0
- package/src/migrations/0072_background_tasks_stopping.sql +5 -0
- package/src/migrations/0073_org_extension_point_defaults.sql +11 -0
- package/src/migrations/0074_subagent_tree.sql +50 -0
- package/src/migrations/0075_plugin_scope.sql +61 -0
- package/src/migrations/0076_skills_created_by_nullable.sql +6 -0
- package/src/migrations/0077_scope_requests.sql +52 -0
- package/src/migrations/0078_scope_grant_switches.sql +18 -0
- package/src/migrations/0079_scope_live_install_switches.sql +19 -0
- package/src/migrations/0080_rename_enterprise_admin.sql +18 -0
- package/src/migrations/0081_platform_components.sql +129 -0
- package/src/migrations/0082_platform_migration.sql +33 -0
- package/src/migrations/0083_plugin_scope_sync_failures.sql +15 -0
- package/src/migrations/0084_org_owned_items.sql +85 -0
- package/src/migrations/0085_agent_templates_phase4.sql +45 -0
- package/src/migrations/0086_org_layering.sql +30 -0
- package/src/migrations/0087_approval_summary.sql +6 -0
- package/src/migrations/0088_environments.sql +80 -0
- package/dist/catalog/upgrade-targets.d.ts +0 -56
- package/dist/catalog/upgrade-targets.js +0 -90
- package/dist/conversations/sandbox-status.d.ts +0 -24
- package/dist/conversations/sandbox-status.js +0 -52
- package/dist/extensions/org-config.controller.d.ts +0 -24
- package/dist/extensions/org-config.controller.js +0 -62
|
@@ -56,7 +56,7 @@ let SetupController = class SetupController {
|
|
|
56
56
|
return this.setup.status();
|
|
57
57
|
}
|
|
58
58
|
/**
|
|
59
|
-
*
|
|
59
|
+
* 建首个超级管理员(可选同时建组织),成功后直接登录(设会话 Cookie)。
|
|
60
60
|
* 配置了 `auth.setupToken` 时 body 中的 `setupToken` 必须与之相等,否则 `setup.token_invalid`;
|
|
61
61
|
* 核对前先占用限流额度,超限 → 429 `auth.rate_limited`,核对通过后退还。
|
|
62
62
|
*/
|
|
@@ -4,8 +4,8 @@ import { TransactionHost } from "../infra/database/transaction-host.js";
|
|
|
4
4
|
import { type Org, OrgsService } from "../orgs/orgs.service.js";
|
|
5
5
|
import { SetupLock } from "./setup-lock.js";
|
|
6
6
|
/**
|
|
7
|
-
* The setup wizard. The CLI's
|
|
8
|
-
* `
|
|
7
|
+
* The setup wizard. The CLI's super admin creation (`createSuperAdmin`,
|
|
8
|
+
* `createSuperAdminIfNone`) is on `AccountsService`, under the same {@link SetupLock}.
|
|
9
9
|
*/
|
|
10
10
|
export declare class SetupService {
|
|
11
11
|
private readonly db;
|
|
@@ -14,13 +14,13 @@ export declare class SetupService {
|
|
|
14
14
|
private readonly accounts;
|
|
15
15
|
private readonly orgs;
|
|
16
16
|
constructor(db: KernelDb, txHost: TransactionHost, setupLock: SetupLock, accounts: AccountsService, orgs: OrgsService);
|
|
17
|
-
/**
|
|
17
|
+
/** 不存在活跃超级管理员即需要初始化(每次实时查 PG,不缓存)。 */
|
|
18
18
|
status(): Promise<{
|
|
19
19
|
needsSetup: boolean;
|
|
20
20
|
}>;
|
|
21
21
|
/**
|
|
22
22
|
* Completes the setup in one transaction: {@link SetupLock} serializes concurrent setups, and
|
|
23
|
-
* under it there must still be no active
|
|
23
|
+
* under it there must still be no active super admin; then creates the super admin
|
|
24
24
|
* and (with `orgName`) an org it owns. Any failure rolls everything back. `inTx` runs last in the
|
|
25
25
|
* same transaction (the wizard creates the session there), its result is `extra`; its failure
|
|
26
26
|
* rolls back too.
|
|
@@ -18,8 +18,8 @@ import { OrgsService } from "../orgs/orgs.service.js";
|
|
|
18
18
|
import { SetupLock } from "./setup-lock.js";
|
|
19
19
|
const alreadyCompleted = () => new ApiError("setup.already_completed", "Deployment is already set up");
|
|
20
20
|
/**
|
|
21
|
-
* The setup wizard. The CLI's
|
|
22
|
-
* `
|
|
21
|
+
* The setup wizard. The CLI's super admin creation (`createSuperAdmin`,
|
|
22
|
+
* `createSuperAdminIfNone`) is on `AccountsService`, under the same {@link SetupLock}.
|
|
23
23
|
*/
|
|
24
24
|
let SetupService = class SetupService {
|
|
25
25
|
db;
|
|
@@ -34,13 +34,13 @@ let SetupService = class SetupService {
|
|
|
34
34
|
this.accounts = accounts;
|
|
35
35
|
this.orgs = orgs;
|
|
36
36
|
}
|
|
37
|
-
/**
|
|
37
|
+
/** 不存在活跃超级管理员即需要初始化(每次实时查 PG,不缓存)。 */
|
|
38
38
|
async status() {
|
|
39
|
-
return { needsSetup: (await this.accounts.
|
|
39
|
+
return { needsSetup: (await this.accounts.countSuperAdmins()) === 0 };
|
|
40
40
|
}
|
|
41
41
|
/**
|
|
42
42
|
* Completes the setup in one transaction: {@link SetupLock} serializes concurrent setups, and
|
|
43
|
-
* under it there must still be no active
|
|
43
|
+
* under it there must still be no active super admin; then creates the super admin
|
|
44
44
|
* and (with `orgName`) an org it owns. Any failure rolls everything back. `inTx` runs last in the
|
|
45
45
|
* same transaction (the wizard creates the session there), its result is `extra`; its failure
|
|
46
46
|
* rolls back too.
|
|
@@ -48,20 +48,20 @@ let SetupService = class SetupService {
|
|
|
48
48
|
async complete(input, inTx) {
|
|
49
49
|
// A cheap pre-check first (a set-up deployment does not run scrypt for nothing), then the hash
|
|
50
50
|
// before BEGIN: no scrypt inside the transaction holding the lock; the check runs again under it
|
|
51
|
-
if ((await this.accounts.
|
|
51
|
+
if ((await this.accounts.countSuperAdmins()) > 0)
|
|
52
52
|
throw alreadyCompleted();
|
|
53
53
|
const passwordHash = await this.accounts.hashNewPassword(input.password);
|
|
54
54
|
return this.completeIn(input, passwordHash, inTx);
|
|
55
55
|
}
|
|
56
56
|
async completeIn(input, passwordHash, inTx) {
|
|
57
57
|
await this.setupLock.lock();
|
|
58
|
-
if ((await this.accounts.
|
|
58
|
+
if ((await this.accounts.countSuperAdmins()) > 0)
|
|
59
59
|
throw alreadyCompleted();
|
|
60
60
|
const account = await this.accounts.createLocal({
|
|
61
61
|
login: input.login,
|
|
62
62
|
password: input.password,
|
|
63
63
|
displayName: input.displayName,
|
|
64
|
-
|
|
64
|
+
superAdmin: true,
|
|
65
65
|
}, passwordHash);
|
|
66
66
|
const org = input.orgName !== undefined
|
|
67
67
|
? await this.orgs.create({ name: input.orgName }, account)
|
|
@@ -2,6 +2,7 @@ import { type ExpressionBuilder } from "kysely";
|
|
|
2
2
|
import type { KernelDatabase, KernelSchemaDb } from "../db/kernel-schema.js";
|
|
3
3
|
import { KernelDb } from "../infra/database/kernel-db.js";
|
|
4
4
|
import { type AgentDefinition } from "./definition.js";
|
|
5
|
+
import type { AgentProfile } from "./profile.js";
|
|
5
6
|
export declare const AGENT_VISIBILITIES: readonly ["private", "org", "members"];
|
|
6
7
|
export type AgentVisibility = (typeof AGENT_VISIBILITIES)[number];
|
|
7
8
|
/** 对外的 agent 视图:当前版本的定义 + 元数据;`memberIds` 只在 visibility='members' 时为数组。 */
|
|
@@ -12,12 +13,30 @@ export interface AgentView {
|
|
|
12
13
|
visibility: AgentVisibility;
|
|
13
14
|
currentVersion: number;
|
|
14
15
|
definition: AgentDefinition;
|
|
16
|
+
/** Display data outside the versions (never model-visible). */
|
|
17
|
+
profile: AgentProfile;
|
|
15
18
|
memberIds: string[] | null;
|
|
16
19
|
/** 负责人离职后被转给组织所有者、等待管理员重新指派。 */
|
|
17
20
|
needsReassignment: boolean;
|
|
21
|
+
/**
|
|
22
|
+
* The template the agent was created from (ruling P4-8; set once, never versioned), null for an
|
|
23
|
+
* agent created otherwise. `name` and `version` are the snapshot taken at create.
|
|
24
|
+
*/
|
|
25
|
+
createdFrom: AgentProvenance | null;
|
|
18
26
|
createdAt: Date;
|
|
19
27
|
updatedAt: Date;
|
|
20
28
|
}
|
|
29
|
+
/** {@link AgentView.createdFrom}. */
|
|
30
|
+
export interface AgentProvenance {
|
|
31
|
+
templateId: string;
|
|
32
|
+
version: number;
|
|
33
|
+
name: string;
|
|
34
|
+
/**
|
|
35
|
+
* The template is still usable in the org (the agent page links it only then). Set on the
|
|
36
|
+
* agents API's responses only (`AgentsService.withTemplateLinks`), never on internal reads.
|
|
37
|
+
*/
|
|
38
|
+
available?: boolean;
|
|
39
|
+
}
|
|
21
40
|
/**
|
|
22
41
|
* 可见性判定(`canUse`)的 SQL 条件:agent 未删除、所属组织未删除,且
|
|
23
42
|
* - viewer 为账号:仍是该组织成员(含访客),并且是负责人 / visibility='org' / 在 agent_members 名单中;
|
|
@@ -132,6 +132,13 @@ let AgentLookup = class AgentLookup {
|
|
|
132
132
|
"agents.needs_reassignment",
|
|
133
133
|
"agents.created_at",
|
|
134
134
|
"agents.updated_at",
|
|
135
|
+
"agents.profile_avatar",
|
|
136
|
+
"agents.profile_description",
|
|
137
|
+
"agents.profile_quick_actions",
|
|
138
|
+
"agents.profile_updated_at",
|
|
139
|
+
"agents.created_from_template_id",
|
|
140
|
+
"agents.created_from_template_version",
|
|
141
|
+
"agents.created_from_template_name",
|
|
135
142
|
"agent_versions.definition",
|
|
136
143
|
])
|
|
137
144
|
.where("agents.id", "in", ids)
|
|
@@ -154,6 +161,7 @@ let AgentLookup = class AgentLookup {
|
|
|
154
161
|
const r = byId.get(id);
|
|
155
162
|
if (!r)
|
|
156
163
|
return [];
|
|
164
|
+
const fromId = r.created_from_template_id;
|
|
157
165
|
return [
|
|
158
166
|
{
|
|
159
167
|
id: r.id,
|
|
@@ -162,10 +170,23 @@ let AgentLookup = class AgentLookup {
|
|
|
162
170
|
visibility: r.visibility,
|
|
163
171
|
currentVersion: r.current_version,
|
|
164
172
|
definition: normalizeStoredDefinition(r.definition, scopes.get(r.org_id)),
|
|
173
|
+
profile: {
|
|
174
|
+
avatar: r.profile_avatar,
|
|
175
|
+
description: r.profile_description,
|
|
176
|
+
quickActions: r.profile_quick_actions,
|
|
177
|
+
updatedAt: r.profile_updated_at.toISOString(),
|
|
178
|
+
},
|
|
165
179
|
memberIds: r.visibility === "members"
|
|
166
180
|
? memberRows.filter((m) => m.agent_id === id).map((m) => m.account_id)
|
|
167
181
|
: null,
|
|
168
182
|
needsReassignment: r.needs_reassignment,
|
|
183
|
+
createdFrom: fromId === null
|
|
184
|
+
? null
|
|
185
|
+
: {
|
|
186
|
+
templateId: fromId,
|
|
187
|
+
version: r.created_from_template_version ?? 1,
|
|
188
|
+
name: r.created_from_template_name ?? "",
|
|
189
|
+
},
|
|
169
190
|
createdAt: r.created_at,
|
|
170
191
|
updatedAt: r.updated_at,
|
|
171
192
|
},
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
import { AttachmentsService } from "../conversations/attachments.service.js";
|
|
2
|
+
import { KernelDb } from "../infra/database/kernel-db.js";
|
|
3
|
+
import { TransactionHost } from "../infra/database/transaction-host.js";
|
|
4
|
+
import { AgentLookup } from "./agent-lookup.js";
|
|
5
|
+
import { AgentsService } from "./agents.service.js";
|
|
6
|
+
import type { AgentProfile, ProfileInput } from "./profile.js";
|
|
7
|
+
/**
|
|
8
|
+
* Writes an agent's profile (avatar, description, quick actions): display data stored beside the
|
|
9
|
+
* agent, never model-visible, so a change creates no agent version. The permission is the one of
|
|
10
|
+
* `AgentsService.update` (owner or org admin, checked under the org row lock).
|
|
11
|
+
*/
|
|
12
|
+
export declare class AgentProfileService {
|
|
13
|
+
private readonly db;
|
|
14
|
+
private readonly lookup;
|
|
15
|
+
private readonly agents;
|
|
16
|
+
private readonly attachments;
|
|
17
|
+
readonly txHost: TransactionHost;
|
|
18
|
+
constructor(db: KernelDb, lookup: AgentLookup, agents: Pick<AgentsService, "lockForWrite">, attachments: Pick<AttachmentsService, "prepareAgentAvatar" | "consumeAgentAvatar">, txHost: TransactionHost);
|
|
19
|
+
/**
|
|
20
|
+
* Applies `patch` (only the given fields) when `expectedUpdatedAt` is still the profile's
|
|
21
|
+
* `updatedAt`, else 409 `agent.profile_conflict` (never a silent overwrite). Audit
|
|
22
|
+
* `agent.profile_updated` `{ fields, channel }`: `api` for a personal access token, else `web`.
|
|
23
|
+
* An `upload` avatar must be the actor's own upload that no other agent uses (else 404
|
|
24
|
+
* `attachment.not_found`): it is finalized first (outside the transaction, it reads the object
|
|
25
|
+
* store; 503 `storage.unavailable` without one) and bound to the agent inside it.
|
|
26
|
+
*/
|
|
27
|
+
update(orgId: string, agentId: string, actorAccountId: string, patch: ProfileInput, expectedUpdatedAt: string, actorTokenId?: string): Promise<AgentProfile>;
|
|
28
|
+
private updateIn;
|
|
29
|
+
}
|
|
@@ -0,0 +1,117 @@
|
|
|
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 { sql } from "kysely";
|
|
12
|
+
import { AttachmentsService } from "../conversations/attachments.service.js";
|
|
13
|
+
import { ApiError } from "../errors.js";
|
|
14
|
+
import { audit } from "../identity/audit.js";
|
|
15
|
+
import { KernelDb } from "../infra/database/kernel-db.js";
|
|
16
|
+
import { TransactionHost } from "../infra/database/transaction-host.js";
|
|
17
|
+
import { Transactional } from "../infra/database/transactional.decorator.js";
|
|
18
|
+
import { AgentLookup } from "./agent-lookup.js";
|
|
19
|
+
import { AgentsService } from "./agents.service.js";
|
|
20
|
+
/**
|
|
21
|
+
* Writes an agent's profile (avatar, description, quick actions): display data stored beside the
|
|
22
|
+
* agent, never model-visible, so a change creates no agent version. The permission is the one of
|
|
23
|
+
* `AgentsService.update` (owner or org admin, checked under the org row lock).
|
|
24
|
+
*/
|
|
25
|
+
let AgentProfileService = class AgentProfileService {
|
|
26
|
+
db;
|
|
27
|
+
lookup;
|
|
28
|
+
agents;
|
|
29
|
+
attachments;
|
|
30
|
+
txHost;
|
|
31
|
+
constructor(db, lookup, agents, attachments, txHost) {
|
|
32
|
+
this.db = db;
|
|
33
|
+
this.lookup = lookup;
|
|
34
|
+
this.agents = agents;
|
|
35
|
+
this.attachments = attachments;
|
|
36
|
+
this.txHost = txHost;
|
|
37
|
+
}
|
|
38
|
+
/**
|
|
39
|
+
* Applies `patch` (only the given fields) when `expectedUpdatedAt` is still the profile's
|
|
40
|
+
* `updatedAt`, else 409 `agent.profile_conflict` (never a silent overwrite). Audit
|
|
41
|
+
* `agent.profile_updated` `{ fields, channel }`: `api` for a personal access token, else `web`.
|
|
42
|
+
* An `upload` avatar must be the actor's own upload that no other agent uses (else 404
|
|
43
|
+
* `attachment.not_found`): it is finalized first (outside the transaction, it reads the object
|
|
44
|
+
* store; 503 `storage.unavailable` without one) and bound to the agent inside it.
|
|
45
|
+
*/
|
|
46
|
+
async update(orgId, agentId, actorAccountId, patch, expectedUpdatedAt, actorTokenId) {
|
|
47
|
+
if (patch.avatar?.kind === "upload") {
|
|
48
|
+
await this.attachments.prepareAgentAvatar(orgId, actorAccountId, patch.avatar.uploadId, agentId);
|
|
49
|
+
}
|
|
50
|
+
return this.updateIn(orgId, agentId, actorAccountId, patch, expectedUpdatedAt, actorTokenId);
|
|
51
|
+
}
|
|
52
|
+
async updateIn(orgId, agentId, actorAccountId, patch, expectedUpdatedAt, actorTokenId) {
|
|
53
|
+
const t = this.db.db;
|
|
54
|
+
await this.agents.lockForWrite(orgId, agentId, actorAccountId);
|
|
55
|
+
const current = await t
|
|
56
|
+
.selectFrom("agents")
|
|
57
|
+
.select(sql `to_char(profile_updated_at at time zone 'UTC', 'YYYY-MM-DD"T"HH24:MI:SS.MS"Z"')`.as("at"))
|
|
58
|
+
.where("id", "=", agentId)
|
|
59
|
+
.executeTakeFirstOrThrow();
|
|
60
|
+
if (current.at !== expectedUpdatedAt) {
|
|
61
|
+
throw new ApiError("agent.profile_conflict", "The profile was changed by someone else; reload it and apply your changes again");
|
|
62
|
+
}
|
|
63
|
+
if (patch.avatar?.kind === "upload") {
|
|
64
|
+
await this.attachments.consumeAgentAvatar(orgId, actorAccountId, patch.avatar.uploadId, agentId);
|
|
65
|
+
}
|
|
66
|
+
const fields = ["avatar", "description", "quickActions"].filter((f) => patch[f] !== undefined);
|
|
67
|
+
// nothing to write: no timestamp bump, no audit row
|
|
68
|
+
if (fields.length === 0)
|
|
69
|
+
return (await this.lookup.view(agentId)).profile;
|
|
70
|
+
await t
|
|
71
|
+
.updateTable("agents")
|
|
72
|
+
.set({
|
|
73
|
+
...(patch.avatar !== undefined && {
|
|
74
|
+
profile_avatar: patch.avatar === null ? sql `null` : JSON.stringify(patch.avatar),
|
|
75
|
+
}),
|
|
76
|
+
...(patch.description !== undefined && { profile_description: patch.description }),
|
|
77
|
+
...(patch.quickActions !== undefined && {
|
|
78
|
+
profile_quick_actions: JSON.stringify(patch.quickActions),
|
|
79
|
+
}),
|
|
80
|
+
profile_updated_at: sql `greatest(date_trunc('milliseconds', now()), profile_updated_at + interval '1 millisecond')`,
|
|
81
|
+
})
|
|
82
|
+
.where("id", "=", agentId)
|
|
83
|
+
.execute();
|
|
84
|
+
if (patch.avatar !== undefined) {
|
|
85
|
+
// the avatar changed: every other upload bound to this agent is garbage; the cleanup job
|
|
86
|
+
// deletes it (and its object) once expired. Re-saving the same upload keeps it.
|
|
87
|
+
await t
|
|
88
|
+
.updateTable("attachments")
|
|
89
|
+
.set({ expires_at: sql `now()` })
|
|
90
|
+
.where("agent_id", "=", agentId)
|
|
91
|
+
.where("purpose", "=", "agent-avatar")
|
|
92
|
+
.$if(patch.avatar?.kind === "upload", (q) => q.where("id", "<>", patch.avatar.uploadId))
|
|
93
|
+
.execute();
|
|
94
|
+
}
|
|
95
|
+
await audit(t, {
|
|
96
|
+
actorAccountId,
|
|
97
|
+
...(actorTokenId !== undefined && { actorTokenId }),
|
|
98
|
+
orgId,
|
|
99
|
+
action: "agent.profile_updated",
|
|
100
|
+
target: agentId,
|
|
101
|
+
detail: { fields, channel: actorTokenId !== undefined ? "api" : "web" },
|
|
102
|
+
});
|
|
103
|
+
return (await this.lookup.view(agentId)).profile;
|
|
104
|
+
}
|
|
105
|
+
};
|
|
106
|
+
__decorate([
|
|
107
|
+
Transactional()
|
|
108
|
+
], AgentProfileService.prototype, "updateIn", null);
|
|
109
|
+
AgentProfileService = __decorate([
|
|
110
|
+
Injectable(),
|
|
111
|
+
__param(0, Inject(KernelDb)),
|
|
112
|
+
__param(1, Inject(AgentLookup)),
|
|
113
|
+
__param(2, Inject(AgentsService)),
|
|
114
|
+
__param(3, Inject(AttachmentsService)),
|
|
115
|
+
__param(4, Inject(TransactionHost))
|
|
116
|
+
], AgentProfileService);
|
|
117
|
+
export { AgentProfileService };
|
|
@@ -1,7 +1,12 @@
|
|
|
1
|
+
import type { FastifyReply } from "fastify";
|
|
1
2
|
import { z } from "zod";
|
|
3
|
+
import { AttachmentsService, type CreatedAttachment } from "../conversations/attachments.service.js";
|
|
2
4
|
import { type Principal } from "../identity/principal.js";
|
|
3
5
|
import { type OrgContext } from "../orgs/org.guard.js";
|
|
6
|
+
import { AgentProfileService } from "./agent-profile.service.js";
|
|
4
7
|
import { AgentsService, type AgentVersionSummary, type AgentView, type AgentWarning } from "./agents.service.js";
|
|
8
|
+
import { AgentsFromTemplate, type TemplatePreview } from "./from-template.service.js";
|
|
9
|
+
import { type AgentProfile } from "./profile.js";
|
|
5
10
|
declare const OwnerBody: z.ZodObject<{
|
|
6
11
|
accountId: z.ZodString;
|
|
7
12
|
}, z.core.$strict>;
|
|
@@ -9,7 +14,10 @@ declare const CreateBody: z.ZodObject<{
|
|
|
9
14
|
definition: z.ZodObject<{
|
|
10
15
|
name: z.ZodString;
|
|
11
16
|
avatarUrl: z.ZodDefault<z.ZodNullable<z.ZodURL>>;
|
|
12
|
-
|
|
17
|
+
instructionFiles: z.ZodOptional<z.ZodArray<z.ZodObject<{
|
|
18
|
+
name: z.ZodString;
|
|
19
|
+
content: z.ZodString;
|
|
20
|
+
}, z.core.$strict>>>;
|
|
13
21
|
model: z.ZodObject<{
|
|
14
22
|
provider: z.ZodString;
|
|
15
23
|
model: z.ZodString;
|
|
@@ -68,6 +76,7 @@ declare const CreateBody: z.ZodObject<{
|
|
|
68
76
|
}, z.core.$strict>>>;
|
|
69
77
|
dispatchable: z.ZodOptional<z.ZodBoolean>;
|
|
70
78
|
}, z.core.$strict>>;
|
|
79
|
+
instructions: z.ZodOptional<z.ZodString>;
|
|
71
80
|
tools: z.ZodDefault<z.ZodArray<z.ZodPreprocess<z.ZodDiscriminatedUnion<[z.ZodObject<{
|
|
72
81
|
kind: z.ZodLiteral<"builtin">;
|
|
73
82
|
name: z.ZodString;
|
|
@@ -87,12 +96,75 @@ declare const CreateBody: z.ZodObject<{
|
|
|
87
96
|
private: "private";
|
|
88
97
|
}>;
|
|
89
98
|
memberIds: z.ZodOptional<z.ZodArray<z.ZodString>>;
|
|
99
|
+
profile: z.ZodOptional<z.ZodObject<{
|
|
100
|
+
avatar: z.ZodOptional<z.ZodNullable<z.ZodDiscriminatedUnion<[z.ZodObject<{
|
|
101
|
+
kind: z.ZodLiteral<"preset">;
|
|
102
|
+
id: z.ZodEnum<{
|
|
103
|
+
"black-bear": "black-bear";
|
|
104
|
+
capybara: "capybara";
|
|
105
|
+
elephant: "elephant";
|
|
106
|
+
fox: "fox";
|
|
107
|
+
owl: "owl";
|
|
108
|
+
panda: "panda";
|
|
109
|
+
penguin: "penguin";
|
|
110
|
+
rabbit: "rabbit";
|
|
111
|
+
turtle: "turtle";
|
|
112
|
+
whale: "whale";
|
|
113
|
+
}>;
|
|
114
|
+
}, z.core.$strict>, z.ZodObject<{
|
|
115
|
+
kind: z.ZodLiteral<"upload">;
|
|
116
|
+
uploadId: z.ZodString;
|
|
117
|
+
}, z.core.$strict>], "kind">>>;
|
|
118
|
+
description: z.ZodOptional<z.ZodString>;
|
|
119
|
+
quickActions: z.ZodOptional<z.ZodArray<z.ZodObject<{
|
|
120
|
+
title: z.ZodString;
|
|
121
|
+
body: z.ZodString;
|
|
122
|
+
}, z.core.$strict>>>;
|
|
123
|
+
}, z.core.$strict>>;
|
|
124
|
+
}, z.core.$strict>;
|
|
125
|
+
declare const ProfileBody: z.ZodObject<{
|
|
126
|
+
avatar: z.ZodOptional<z.ZodNullable<z.ZodDiscriminatedUnion<[z.ZodObject<{
|
|
127
|
+
kind: z.ZodLiteral<"preset">;
|
|
128
|
+
id: z.ZodEnum<{
|
|
129
|
+
"black-bear": "black-bear";
|
|
130
|
+
capybara: "capybara";
|
|
131
|
+
elephant: "elephant";
|
|
132
|
+
fox: "fox";
|
|
133
|
+
owl: "owl";
|
|
134
|
+
panda: "panda";
|
|
135
|
+
penguin: "penguin";
|
|
136
|
+
rabbit: "rabbit";
|
|
137
|
+
turtle: "turtle";
|
|
138
|
+
whale: "whale";
|
|
139
|
+
}>;
|
|
140
|
+
}, z.core.$strict>, z.ZodObject<{
|
|
141
|
+
kind: z.ZodLiteral<"upload">;
|
|
142
|
+
uploadId: z.ZodString;
|
|
143
|
+
}, z.core.$strict>], "kind">>>;
|
|
144
|
+
description: z.ZodOptional<z.ZodString>;
|
|
145
|
+
quickActions: z.ZodOptional<z.ZodArray<z.ZodObject<{
|
|
146
|
+
title: z.ZodString;
|
|
147
|
+
body: z.ZodString;
|
|
148
|
+
}, z.core.$strict>>>;
|
|
149
|
+
expectedUpdatedAt: z.ZodString;
|
|
150
|
+
}, z.core.$strict>;
|
|
151
|
+
declare const AvatarUploadBody: z.ZodObject<{
|
|
152
|
+
name: z.ZodString;
|
|
153
|
+
contentType: z.ZodEnum<{
|
|
154
|
+
"image/jpeg": "image/jpeg";
|
|
155
|
+
"image/png": "image/png";
|
|
156
|
+
"image/webp": "image/webp";
|
|
157
|
+
}>;
|
|
158
|
+
size: z.ZodNumber;
|
|
90
159
|
}, z.core.$strict>;
|
|
91
160
|
declare const UpdateBody: z.ZodObject<{
|
|
92
161
|
definition: z.ZodOptional<z.ZodObject<{
|
|
93
162
|
name: z.ZodString;
|
|
94
163
|
avatarUrl: z.ZodDefault<z.ZodNullable<z.ZodURL>>;
|
|
95
|
-
|
|
164
|
+
instructionFiles: z.ZodOptional<z.ZodArray<z.ZodObject<{
|
|
165
|
+
name: z.ZodString;
|
|
166
|
+
content: z.ZodString;
|
|
167
|
+
}, z.core.$strict>>>;
|
|
96
168
|
model: z.ZodObject<{
|
|
97
169
|
provider: z.ZodString;
|
|
98
170
|
model: z.ZodString;
|
|
@@ -163,6 +235,29 @@ declare const UpdateBody: z.ZodObject<{
|
|
|
163
235
|
}, z.core.$strict>>>;
|
|
164
236
|
dispatchable: z.ZodOptional<z.ZodBoolean>;
|
|
165
237
|
}, z.core.$strict>>;
|
|
238
|
+
pendingConnectors: z.ZodOptional<z.ZodArray<z.ZodObject<{
|
|
239
|
+
key: z.ZodString;
|
|
240
|
+
label: z.ZodString;
|
|
241
|
+
source: z.ZodUnion<readonly [z.ZodObject<{
|
|
242
|
+
template: z.ZodString;
|
|
243
|
+
}, z.core.$strict>, z.ZodObject<{
|
|
244
|
+
needs: z.ZodObject<{
|
|
245
|
+
protocol: z.ZodEnum<{
|
|
246
|
+
mcp: "mcp";
|
|
247
|
+
openapi: "openapi";
|
|
248
|
+
}>;
|
|
249
|
+
endpoint: z.ZodString;
|
|
250
|
+
tools: z.ZodArray<z.ZodString>;
|
|
251
|
+
label: z.ZodString;
|
|
252
|
+
}, z.core.$strict>;
|
|
253
|
+
}, z.core.$strict>]>;
|
|
254
|
+
tools: z.ZodOptional<z.ZodArray<z.ZodString>>;
|
|
255
|
+
policies: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodEnum<{
|
|
256
|
+
ask: "ask";
|
|
257
|
+
deny: "deny";
|
|
258
|
+
}>>>;
|
|
259
|
+
}, z.core.$strict>>>;
|
|
260
|
+
instructions: z.ZodOptional<z.ZodString>;
|
|
166
261
|
}, z.core.$strip>>;
|
|
167
262
|
visibility: z.ZodOptional<z.ZodEnum<{
|
|
168
263
|
members: "members";
|
|
@@ -172,13 +267,67 @@ declare const UpdateBody: z.ZodObject<{
|
|
|
172
267
|
memberIds: z.ZodOptional<z.ZodArray<z.ZodString>>;
|
|
173
268
|
expectedVersion: z.ZodOptional<z.ZodNumber>;
|
|
174
269
|
}, z.core.$strict>;
|
|
270
|
+
declare const FromTemplatePreviewBody: z.ZodObject<{
|
|
271
|
+
templateId: z.ZodString;
|
|
272
|
+
}, z.core.$strict>;
|
|
273
|
+
declare const FromTemplateBody: z.ZodObject<{
|
|
274
|
+
templateId: z.ZodString;
|
|
275
|
+
name: z.ZodString;
|
|
276
|
+
visibility: z.ZodOptional<z.ZodEnum<{
|
|
277
|
+
members: "members";
|
|
278
|
+
org: "org";
|
|
279
|
+
private: "private";
|
|
280
|
+
}>>;
|
|
281
|
+
members: z.ZodOptional<z.ZodArray<z.ZodString>>;
|
|
282
|
+
model: z.ZodOptional<z.ZodObject<{
|
|
283
|
+
provider: z.ZodString;
|
|
284
|
+
model: z.ZodString;
|
|
285
|
+
}, z.core.$strict>>;
|
|
286
|
+
avatar: z.ZodOptional<z.ZodObject<{
|
|
287
|
+
kind: z.ZodLiteral<"preset">;
|
|
288
|
+
id: z.ZodEnum<{
|
|
289
|
+
"black-bear": "black-bear";
|
|
290
|
+
capybara: "capybara";
|
|
291
|
+
elephant: "elephant";
|
|
292
|
+
fox: "fox";
|
|
293
|
+
owl: "owl";
|
|
294
|
+
panda: "panda";
|
|
295
|
+
penguin: "penguin";
|
|
296
|
+
rabbit: "rabbit";
|
|
297
|
+
turtle: "turtle";
|
|
298
|
+
whale: "whale";
|
|
299
|
+
}>;
|
|
300
|
+
}, z.core.$strict>>;
|
|
301
|
+
previewHash: z.ZodString;
|
|
302
|
+
}, z.core.$strict>;
|
|
175
303
|
/**
|
|
176
304
|
* Agent 定义(`/api/v1/orgs/:orgId/agents`)。读用 `agents.use`(访客与服务令牌可用),
|
|
177
305
|
* 写用 `agents.create`(member 以上、HUMAN_ONLY),修改 / 删除的负责人或管理员判定在服务的组织行锁内完成。
|
|
178
306
|
*/
|
|
179
307
|
export declare class AgentsController {
|
|
180
308
|
private readonly agents;
|
|
181
|
-
|
|
309
|
+
private readonly profiles;
|
|
310
|
+
private readonly attachments;
|
|
311
|
+
private readonly fromTemplate;
|
|
312
|
+
constructor(agents: AgentsService, profiles: AgentProfileService, attachments: AttachmentsService, fromTemplate: AgentsFromTemplate);
|
|
313
|
+
/** A response's view with its provenance link (`createdFrom.available`, ruling P4-8). */
|
|
314
|
+
private linked;
|
|
315
|
+
/**
|
|
316
|
+
* What creating an agent from a template would carry over (rulings P4-3, P4-5): the items
|
|
317
|
+
* (carried / pending / unavailable, with reasons), the model the dialog preselects (P4-4), the
|
|
318
|
+
* template fields with no place in the agent, and the `previewHash` the create must send. A
|
|
319
|
+
* template not usable in the org → 404 `component.not_found`.
|
|
320
|
+
*/
|
|
321
|
+
previewFromTemplate(org: OrgContext, body: z.infer<typeof FromTemplatePreviewBody>): Promise<TemplatePreview>;
|
|
322
|
+
/**
|
|
323
|
+
* Creates an agent from a template (ruling P4-3): private by default; another visibility without
|
|
324
|
+
* `agents.manage` → 403 `agent.visibility_forbidden`; a plan that no longer matches the preview →
|
|
325
|
+
* 409 `agent.template_preview_stale`. The agent records its provenance (P4-8) and carries the
|
|
326
|
+
* template's missing connectors as `pendingConnectors` (P4-6).
|
|
327
|
+
*/
|
|
328
|
+
createFromTemplate(principal: Principal, org: OrgContext, body: z.infer<typeof FromTemplateBody>): Promise<{
|
|
329
|
+
agent: AgentView;
|
|
330
|
+
}>;
|
|
182
331
|
create(principal: Principal, org: OrgContext, body: z.infer<typeof CreateBody>): Promise<{
|
|
183
332
|
agent: AgentView;
|
|
184
333
|
warnings: AgentWarning[];
|
|
@@ -193,6 +342,22 @@ export declare class AgentsController {
|
|
|
193
342
|
agent: AgentView;
|
|
194
343
|
warnings: AgentWarning[];
|
|
195
344
|
}>;
|
|
345
|
+
/** Display data only: no agent version. Same permission as `PATCH :agentId`. */
|
|
346
|
+
updateProfile(principal: Principal, org: OrgContext, agentId: string, body: z.infer<typeof ProfileBody>): Promise<{
|
|
347
|
+
profile: AgentProfile;
|
|
348
|
+
}>;
|
|
349
|
+
/**
|
|
350
|
+
* Registers an avatar image upload (presigned, like chat attachments and skill packages): the
|
|
351
|
+
* browser uploads straight to the object store, then saves `{ kind: "upload", uploadId }` with
|
|
352
|
+
* the profile PATCH, which finalizes it. 503 `storage.unavailable` without an object store.
|
|
353
|
+
*/
|
|
354
|
+
createAvatarUpload(principal: Principal, org: OrgContext, agentId: string, body: z.infer<typeof AvatarUploadBody>): Promise<CreatedAttachment>;
|
|
355
|
+
/**
|
|
356
|
+
* The avatar image: 302 to a short-lived presigned URL for an upload avatar, or to the stored
|
|
357
|
+
* URL of an external avatar when it is https; 404 for presets, no avatar, or an agent the
|
|
358
|
+
* reader cannot see.
|
|
359
|
+
*/
|
|
360
|
+
avatar(principal: Principal, org: OrgContext, agentId: string, reply: FastifyReply): Promise<void>;
|
|
196
361
|
remove(principal: Principal, org: OrgContext, agentId: string): Promise<void>;
|
|
197
362
|
/** 重新指派负责人(admin,如负责人离职后);清除 `needsReassignment`。 */
|
|
198
363
|
reassign(principal: Principal, org: OrgContext, agentId: string, body: z.infer<typeof OwnerBody>): Promise<{
|