@capybara-hq/kernel 0.1.0-rc.2 → 0.1.0-rc.20
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/bootstrap.json +85 -5
- package/dist/admin/admin-agents.controller.d.ts +28 -0
- package/dist/admin/admin-agents.controller.js +79 -0
- package/dist/admin/admin-connectors.controller.d.ts +29 -0
- package/dist/admin/admin-connectors.controller.js +79 -0
- package/dist/admin/admin-items.schemas.d.ts +42 -0
- package/dist/admin/admin-items.schemas.js +48 -0
- package/dist/admin/admin.controller.d.ts +52 -80
- package/dist/admin/admin.controller.js +112 -81
- package/dist/admin/admin.module.d.ts +4 -1
- package/dist/admin/admin.module.js +50 -4
- package/dist/admin/admin.schemas.d.ts +69 -0
- package/dist/admin/admin.schemas.js +53 -0
- package/dist/admin/audit.controller.d.ts +14 -0
- package/dist/admin/audit.controller.js +42 -0
- package/dist/admin/audit.schemas.d.ts +8 -0
- package/dist/admin/audit.schemas.js +17 -0
- package/dist/admin/extensions.controller.d.ts +34 -3
- package/dist/admin/extensions.controller.js +66 -8
- package/dist/admin/extensions.schemas.d.ts +7 -0
- package/dist/admin/extensions.schemas.js +10 -0
- package/dist/admin/health.service.d.ts +104 -0
- package/dist/admin/health.service.js +246 -0
- package/dist/admin/limit-defaults.d.ts +20 -0
- package/dist/admin/limit-defaults.js +10 -0
- package/dist/admin/overview.controller.d.ts +31 -0
- package/dist/admin/overview.controller.js +78 -0
- package/dist/admin/overview.schemas.d.ts +8 -0
- package/dist/admin/overview.schemas.js +13 -0
- package/dist/admin/overview.service.d.ts +112 -0
- package/dist/admin/overview.service.js +223 -0
- package/dist/admin/platform-audit.service.d.ts +41 -0
- package/dist/admin/platform-audit.service.js +70 -0
- 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/admin/usage.service.d.ts +149 -0
- package/dist/admin/usage.service.js +321 -0
- package/dist/agents/admin-agents.d.ts +92 -0
- package/dist/agents/admin-agents.js +170 -0
- package/dist/agents/agent-lookup.d.ts +24 -0
- package/dist/agents/agent-lookup.js +46 -2
- package/dist/agents/agent-profile.service.d.ts +31 -0
- package/dist/agents/agent-profile.service.js +122 -0
- package/dist/agents/agents.controller.d.ts +53 -168
- package/dist/agents/agents.controller.js +163 -34
- package/dist/agents/agents.module.d.ts +6 -2
- package/dist/agents/agents.module.js +41 -7
- package/dist/agents/agents.schemas.d.ts +392 -0
- package/dist/agents/agents.schemas.js +126 -0
- package/dist/agents/agents.service.d.ts +121 -36
- package/dist/agents/agents.service.js +411 -121
- package/dist/agents/definition.d.ts +142 -21
- package/dist/agents/definition.js +389 -43
- package/dist/agents/from-template.d.ts +106 -0
- package/dist/agents/from-template.js +680 -0
- package/dist/agents/from-template.service.d.ts +72 -0
- package/dist/agents/from-template.service.js +178 -0
- package/dist/agents/instruction-files.d.ts +60 -0
- package/dist/agents/instruction-files.js +111 -0
- package/dist/agents/models.controller.d.ts +44 -6
- package/dist/agents/models.controller.js +84 -8
- package/dist/agents/org-templates.d.ts +186 -0
- package/dist/agents/org-templates.js +876 -0
- package/dist/agents/pending-connector-requests.d.ts +79 -0
- package/dist/agents/pending-connector-requests.js +215 -0
- package/dist/agents/pending-connectors.controller.d.ts +39 -0
- package/dist/agents/pending-connectors.controller.js +91 -0
- package/dist/agents/pending-connectors.service.d.ts +62 -0
- package/dist/agents/pending-connectors.service.js +282 -0
- package/dist/agents/profile.d.ts +114 -0
- package/dist/agents/profile.js +55 -0
- package/dist/agents/readiness.controller.d.ts +26 -0
- package/dist/agents/readiness.controller.js +56 -0
- package/dist/agents/templates.controller.d.ts +77 -5
- package/dist/agents/templates.controller.js +153 -7
- package/dist/agents/templates.d.ts +127 -23
- package/dist/agents/templates.js +482 -44
- package/dist/agents/templates.schemas.d.ts +20 -0
- package/dist/agents/templates.schemas.js +45 -0
- package/dist/background/background.controller.d.ts +38 -0
- package/dist/background/background.controller.js +88 -0
- package/dist/background/background.module.d.ts +10 -0
- package/dist/background/background.module.js +39 -0
- package/dist/background/background.schemas.d.ts +10 -0
- package/dist/background/background.schemas.js +16 -0
- package/dist/background/finish.d.ts +44 -0
- package/dist/background/finish.js +95 -0
- package/dist/background/launch-lock.d.ts +15 -0
- package/dist/background/launch-lock.js +40 -0
- package/dist/background/launch.d.ts +42 -0
- package/dist/background/launch.js +77 -0
- package/dist/background/poll.job.d.ts +56 -0
- package/dist/background/poll.job.js +195 -0
- package/dist/background/render.d.ts +23 -0
- package/dist/background/render.js +48 -0
- package/dist/background/session.d.ts +48 -0
- package/dist/background/session.js +80 -0
- package/dist/background/status.d.ts +35 -0
- package/dist/background/status.js +57 -0
- package/dist/background/stop.d.ts +68 -0
- package/dist/background/stop.js +244 -0
- package/dist/background/store.d.ts +167 -0
- package/dist/background/store.js +361 -0
- package/dist/background/store.module.d.ts +6 -0
- package/dist/background/store.module.js +22 -0
- package/dist/background/tasks.service.d.ts +109 -0
- package/dist/background/tasks.service.js +271 -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 +136 -52
- package/dist/catalog/admin-catalog.controller.js +275 -65
- package/dist/catalog/admin-catalog.schemas.d.ts +82 -0
- package/dist/catalog/admin-catalog.schemas.js +99 -0
- package/dist/catalog/appearance.schemas.d.ts +10 -0
- package/dist/catalog/appearance.schemas.js +20 -0
- package/dist/catalog/appearance.service.d.ts +105 -0
- package/dist/catalog/appearance.service.js +306 -0
- package/dist/catalog/catalog-content.d.ts +122 -35
- package/dist/catalog/catalog-content.js +122 -14
- package/dist/catalog/catalog-files.d.ts +42 -0
- package/dist/catalog/catalog-files.js +89 -0
- package/dist/catalog/catalog-import.module.d.ts +7 -0
- package/dist/catalog/catalog-import.module.js +63 -0
- package/dist/catalog/catalog-items.d.ts +122 -7
- package/dist/catalog/catalog-items.js +301 -13
- package/dist/catalog/catalog-scope.service.d.ts +293 -0
- package/dist/catalog/catalog-scope.service.js +1236 -0
- package/dist/catalog/catalog.module.d.ts +7 -9
- package/dist/catalog/catalog.module.js +47 -31
- package/dist/catalog/catalog.service.d.ts +122 -31
- package/dist/catalog/catalog.service.js +177 -105
- package/dist/catalog/claude/agents.js +15 -10
- package/dist/catalog/claude/translate.js +3 -0
- package/dist/catalog/cli.d.ts +11 -1
- package/dist/catalog/cli.js +29 -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 +102 -0
- package/dist/catalog/component-scope.controller.js +257 -0
- package/dist/catalog/component-scope.schemas.d.ts +118 -0
- package/dist/catalog/component-scope.schemas.js +97 -0
- package/dist/catalog/component-scope.service.d.ts +394 -0
- package/dist/catalog/component-scope.service.js +1133 -0
- package/dist/catalog/component-state.d.ts +207 -0
- package/dist/catalog/component-state.js +484 -0
- package/dist/catalog/git-source.d.ts +9 -1
- package/dist/catalog/git-source.js +29 -2
- package/dist/catalog/job-ids.d.ts +30 -0
- package/dist/catalog/job-ids.js +25 -0
- package/dist/catalog/marketplace-fetch.d.ts +1 -1
- package/dist/catalog/marketplace-icons.d.ts +64 -0
- package/dist/catalog/marketplace-icons.js +131 -0
- package/dist/catalog/marketplaces.controller.d.ts +50 -41
- package/dist/catalog/marketplaces.controller.js +130 -46
- package/dist/catalog/marketplaces.schemas.d.ts +48 -0
- package/dist/catalog/marketplaces.schemas.js +53 -0
- package/dist/catalog/marketplaces.service.d.ts +110 -17
- package/dist/catalog/marketplaces.service.js +337 -29
- package/dist/catalog/org-catalog.controller.d.ts +114 -62
- package/dist/catalog/org-catalog.controller.js +191 -98
- package/dist/catalog/org-catalog.schemas.d.ts +104 -0
- package/dist/catalog/org-catalog.schemas.js +107 -0
- package/dist/catalog/org-catalog.service.d.ts +72 -33
- package/dist/catalog/org-catalog.service.js +367 -158
- 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 +133 -0
- package/dist/catalog/org-extension.controller.js +313 -0
- package/dist/catalog/org-extension.schemas.d.ts +15 -0
- package/dist/catalog/org-extension.schemas.js +22 -0
- package/dist/catalog/org-plugin-uploads.controller.d.ts +77 -0
- package/dist/catalog/org-plugin-uploads.controller.js +200 -0
- package/dist/catalog/org-plugin-uploads.d.ts +71 -0
- package/dist/catalog/org-plugin-uploads.js +122 -0
- package/dist/catalog/org-plugin-uploads.schemas.d.ts +20 -0
- package/dist/catalog/org-plugin-uploads.schemas.js +32 -0
- package/dist/catalog/owned-items.d.ts +188 -0
- package/dist/catalog/owned-items.js +808 -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 +243 -0
- package/dist/catalog/platform-components.js +872 -0
- package/dist/catalog/platform-migration.d.ts +115 -0
- package/dist/catalog/platform-migration.js +583 -0
- package/dist/catalog/plugin-import.d.ts +254 -47
- package/dist/catalog/plugin-import.js +810 -112
- package/dist/catalog/plugin-install.d.ts +205 -42
- package/dist/catalog/plugin-install.js +828 -126
- package/dist/catalog/plugin-package.d.ts +43 -4
- package/dist/catalog/plugin-package.js +194 -7
- package/dist/catalog/plugin-upgrade.d.ts +308 -225
- package/dist/catalog/plugin-upgrade.js +1325 -1131
- package/dist/catalog/request-rules.d.ts +65 -0
- package/dist/catalog/request-rules.js +217 -0
- package/dist/catalog/requests.service.d.ts +194 -118
- package/dist/catalog/requests.service.js +530 -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 +119 -0
- package/dist/channels/actions.js +10 -3
- package/dist/channels/cards.d.ts +36 -10
- package/dist/channels/cards.js +100 -25
- package/dist/channels/channels.module.js +13 -2
- package/dist/channels/channels.schemas.d.ts +41 -0
- package/dist/channels/channels.schemas.js +40 -0
- package/dist/channels/connections.controller.d.ts +46 -37
- package/dist/channels/connections.controller.js +76 -34
- package/dist/channels/connections.service.d.ts +102 -10
- package/dist/channels/connections.service.js +271 -24
- package/dist/channels/inbound.d.ts +11 -1
- package/dist/channels/inbound.js +87 -7
- package/dist/channels/outbound.d.ts +14 -1
- package/dist/channels/outbound.js +64 -15
- package/dist/channels/phrases.d.ts +33 -2
- package/dist/channels/phrases.js +29 -1
- package/dist/channels/supervisor.d.ts +2 -0
- package/dist/channels/supervisor.js +4 -0
- package/dist/channels/threads.d.ts +5 -0
- package/dist/channels/threads.js +8 -0
- package/dist/channels/webhook.d.ts +21 -1
- package/dist/channels/webhook.js +39 -4
- package/dist/client/client-access.service.d.ts +102 -0
- package/dist/client/client-access.service.js +303 -0
- package/dist/client/client-builds.service.d.ts +109 -0
- package/dist/client/client-builds.service.js +229 -0
- package/dist/client/client-delivery.controller.d.ts +25 -0
- package/dist/client/client-delivery.controller.js +66 -0
- package/dist/client/client-files.d.ts +48 -0
- package/dist/client/client-files.js +136 -0
- package/dist/client/client-reports.cron.d.ts +13 -0
- package/dist/client/client-reports.cron.js +42 -0
- package/dist/client/client-reports.service.d.ts +30 -0
- package/dist/client/client-reports.service.js +102 -0
- package/dist/client/client-sign-in.service.d.ts +21 -0
- package/dist/client/client-sign-in.service.js +49 -0
- package/dist/client/client.controller.d.ts +49 -0
- package/dist/client/client.controller.js +129 -0
- package/dist/client/client.module.d.ts +8 -0
- package/dist/client/client.module.js +28 -0
- package/dist/client/client.schemas.d.ts +61 -0
- package/dist/client/client.schemas.js +27 -0
- package/dist/config/docs.js +5 -1
- package/dist/config/schema.d.ts +35 -2
- package/dist/config/schema.js +216 -21
- 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/artifacts.d.ts +1 -1
- package/dist/conversations/artifacts.js +1 -1
- 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 -44
- package/dist/conversations/conversations.controller.js +133 -82
- package/dist/conversations/conversations.module.d.ts +1 -1
- package/dist/conversations/conversations.module.js +10 -7
- package/dist/conversations/conversations.schemas.d.ts +52 -0
- package/dist/conversations/conversations.schemas.js +79 -0
- package/dist/conversations/conversations.service.d.ts +161 -13
- package/dist/conversations/conversations.service.js +329 -57
- package/dist/conversations/device-status.d.ts +24 -0
- package/dist/conversations/device-status.js +71 -0
- package/dist/conversations/event-log.d.ts +45 -9
- package/dist/conversations/event-log.js +113 -6
- package/dist/conversations/events.d.ts +255 -9
- package/dist/conversations/events.js +250 -34
- package/dist/conversations/message-context.d.ts +79 -0
- package/dist/conversations/message-context.js +145 -0
- package/dist/conversations/queue.d.ts +5 -2
- package/dist/conversations/queue.js +24 -4
- package/dist/conversations/queue.service.d.ts +2 -2
- package/dist/conversations/queue.service.js +21 -3
- package/dist/conversations/titles.d.ts +12 -3
- package/dist/conversations/titles.js +40 -16
- package/dist/conversations/tree.d.ts +17 -0
- package/dist/conversations/tree.js +42 -0
- package/dist/ctx/create-ctx.d.ts +48 -5
- package/dist/ctx/create-ctx.js +174 -34
- package/dist/db/kernel-schema.d.ts +668 -27
- package/dist/db/pool.d.ts +5 -0
- package/dist/db/pool.js +3 -0
- package/dist/devices/access.d.ts +66 -0
- package/dist/devices/access.js +113 -0
- package/dist/devices/conversation-devices.d.ts +75 -0
- package/dist/devices/conversation-devices.js +230 -0
- package/dist/devices/devices.controller.d.ts +36 -0
- package/dist/devices/devices.controller.js +124 -0
- package/dist/devices/devices.module.d.ts +8 -0
- package/dist/devices/devices.module.js +34 -0
- package/dist/devices/devices.schemas.d.ts +3 -0
- package/dist/devices/devices.schemas.js +14 -0
- package/dist/devices/devices.service.d.ts +251 -0
- package/dist/devices/devices.service.js +791 -0
- package/dist/devices/dto.d.ts +25 -0
- package/dist/devices/dto.js +12 -0
- package/dist/devices/label.d.ts +11 -0
- package/dist/devices/label.js +25 -0
- package/dist/devices/legacy-cleanup.job.d.ts +34 -0
- package/dist/devices/legacy-cleanup.job.js +141 -0
- package/dist/errors.d.ts +215 -3
- package/dist/errors.js +215 -3
- package/dist/evals/evals.module.js +11 -2
- package/dist/evals/evals.schemas.d.ts +110 -0
- package/dist/evals/evals.schemas.js +107 -0
- package/dist/evals/reconstruct.d.ts +18 -9
- package/dist/evals/reconstruct.js +36 -10
- package/dist/evals/recorded-tools.d.ts +37 -1
- package/dist/evals/recorded-tools.js +120 -10
- package/dist/evals/run-replay.d.ts +20 -3
- package/dist/evals/run-replay.js +78 -14
- package/dist/evals/runs.controller.d.ts +2 -57
- package/dist/evals/runs.controller.js +1 -42
- package/dist/evals/runs.service.d.ts +8 -7
- package/dist/evals/runs.service.js +45 -30
- package/dist/evals/sets.controller.d.ts +2 -28
- package/dist/evals/sets.controller.js +1 -31
- package/dist/evals/sets.service.d.ts +7 -7
- package/dist/evals/sets.service.js +23 -17
- package/dist/evals/snapshot.d.ts +3 -2
- package/dist/evals/snapshot.js +17 -4
- package/dist/evals/step-replay.d.ts +4 -6
- package/dist/evals/step-replay.js +16 -9
- package/dist/evals/trajectory.d.ts +5 -3
- package/dist/evals/trajectory.js +4 -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 +81 -14
- package/dist/extensions/admin-ops.js +181 -47
- package/dist/extensions/admin-view.d.ts +57 -10
- package/dist/extensions/admin-view.js +249 -27
- package/dist/extensions/approvals.d.ts +12 -2
- package/dist/extensions/blobs.d.ts +14 -1
- package/dist/extensions/blobs.js +49 -5
- package/dist/extensions/bootstrap.d.ts +41 -5
- package/dist/extensions/bootstrap.js +121 -19
- 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/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 +94 -9
- package/dist/extensions/deployment-config.js +255 -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 +133 -0
- package/dist/extensions/effective-config.js +379 -0
- package/dist/extensions/extensions.module.js +31 -12
- package/dist/extensions/guide-places.d.ts +68 -0
- package/dist/extensions/guide-places.js +152 -0
- package/dist/extensions/hooks.d.ts +37 -4
- package/dist/extensions/hooks.js +82 -16
- package/dist/extensions/host.d.ts +105 -12
- package/dist/extensions/host.js +372 -87
- package/dist/extensions/installs.d.ts +30 -9
- package/dist/extensions/installs.js +57 -16
- package/dist/extensions/instance.d.ts +17 -2
- package/dist/extensions/instance.js +21 -0
- package/dist/extensions/ledger.d.ts +1 -1
- package/dist/extensions/locks.d.ts +12 -0
- package/dist/extensions/locks.js +26 -0
- package/dist/extensions/org-config.d.ts +97 -7
- package/dist/extensions/org-config.js +215 -45
- 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 +18 -4
- package/dist/extensions/package.js +56 -3
- package/dist/extensions/permission-set.d.ts +35 -5
- package/dist/extensions/permission-set.js +36 -5
- package/dist/extensions/permission-view.d.ts +106 -13
- package/dist/extensions/permission-view.js +33 -15
- package/dist/extensions/plugin-guides.d.ts +282 -0
- package/dist/extensions/plugin-guides.js +554 -0
- package/dist/extensions/plugin-icons.d.ts +54 -0
- package/dist/extensions/plugin-icons.js +125 -0
- package/dist/extensions/plugin-items.d.ts +21 -0
- package/dist/extensions/plugin-items.js +42 -0
- package/dist/extensions/point-defaults.controller.d.ts +28 -0
- package/dist/extensions/point-defaults.controller.js +69 -0
- package/dist/extensions/point-defaults.d.ts +73 -0
- package/dist/extensions/point-defaults.js +236 -0
- package/dist/extensions/point-defaults.schemas.d.ts +9 -0
- package/dist/extensions/point-defaults.schemas.js +14 -0
- package/dist/extensions/registry.d.ts +1 -1
- package/dist/extensions/registry.js +2 -0
- package/dist/extensions/resolve.d.ts +51 -1
- package/dist/extensions/resolve.js +85 -3
- package/dist/extensions/single-provider.d.ts +92 -0
- package/dist/extensions/single-provider.js +180 -0
- package/dist/extensions/sources.d.ts +13 -2
- package/dist/extensions/sources.js +2 -0
- package/dist/extensions/state.module.d.ts +9 -0
- package/dist/extensions/state.module.js +46 -0
- package/dist/extensions/unavailable.d.ts +50 -0
- package/dist/extensions/unavailable.js +115 -0
- package/dist/files/previewers.controller.js +2 -3
- package/dist/files/previewers.d.ts +10 -3
- package/dist/files/previewers.js +40 -11
- package/dist/files/previewers.schemas.d.ts +10 -0
- package/dist/files/previewers.schemas.js +9 -0
- package/dist/http/api.module.js +76 -4
- package/dist/http/app.d.ts +11 -2
- package/dist/http/app.js +31 -5
- package/dist/http/gateway-routes.d.ts +7 -3
- package/dist/http/gateway-routes.js +6 -3
- package/dist/http/nest-logger.d.ts +6 -5
- package/dist/http/nest-logger.js +24 -10
- package/dist/http/plugin-dispatch.d.ts +4 -1
- package/dist/http/plugin-dispatch.js +14 -2
- package/dist/identity/accounts.d.ts +77 -31
- package/dist/identity/accounts.js +133 -52
- 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 +35 -9
- package/dist/identity/cookies.d.ts +26 -5
- package/dist/identity/cookies.js +58 -6
- package/dist/identity/identity.module.d.ts +1 -1
- package/dist/identity/identity.module.js +7 -4
- package/dist/identity/initial-passwords.controller.d.ts +22 -0
- package/dist/identity/initial-passwords.controller.js +49 -0
- package/dist/identity/initial-passwords.d.ts +61 -0
- package/dist/identity/initial-passwords.job.d.ts +16 -0
- package/dist/identity/initial-passwords.job.js +46 -0
- package/dist/identity/initial-passwords.js +159 -0
- package/dist/identity/me.controller.d.ts +17 -1
- package/dist/identity/me.controller.js +45 -4
- package/dist/identity/me.schemas.d.ts +24 -0
- package/dist/identity/me.schemas.js +25 -0
- package/dist/identity/principal.d.ts +11 -3
- package/dist/identity/principal.js +11 -3
- package/dist/identity/sessions.d.ts +12 -0
- package/dist/identity/sessions.js +45 -0
- package/dist/identity/settings.d.ts +99 -12
- package/dist/identity/settings.js +234 -25
- 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/identity/write-actor.d.ts +11 -0
- package/dist/identity/write-actor.js +7 -0
- package/dist/inbox/inbox.module.d.ts +4 -1
- package/dist/inbox/inbox.module.js +7 -3
- package/dist/inbox/inbox.schemas.d.ts +8 -0
- package/dist/inbox/inbox.schemas.js +11 -0
- package/dist/inbox/inbox.service.d.ts +64 -4
- 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 +157 -0
- package/dist/inbox/platform-inbox.service.js +281 -0
- package/dist/inbox/platform-notices.d.ts +19 -0
- package/dist/inbox/platform-notices.js +9 -0
- package/dist/index.d.ts +6 -2
- package/dist/index.js +7 -1
- package/dist/infra/cli/kernel-cli.module.js +9 -1
- package/dist/infra/config/kernel-config.service.js +32 -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 +31 -3
- package/dist/infra/lifecycle/process-guards.js +4 -0
- package/dist/infra/lock/lock.service.d.ts +8 -0
- package/dist/infra/lock/lock.service.js +27 -0
- package/dist/infra/logging/logging.module.d.ts +4 -2
- package/dist/infra/logging/logging.module.js +24 -6
- package/dist/infra/presence/presence.module.d.ts +6 -0
- package/dist/infra/presence/presence.module.js +22 -0
- package/dist/infra/presence/replica-presence.d.ts +87 -0
- package/dist/infra/presence/replica-presence.js +189 -0
- package/dist/infra/queue/add-job-once.d.ts +14 -0
- package/dist/infra/queue/add-job-once.js +16 -0
- package/dist/infra/queue/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/throttler/named-throttlers.d.ts +12 -0
- package/dist/infra/throttler/named-throttlers.js +67 -0
- package/dist/infra/throttler/throttler.guard.js +1 -1
- package/dist/infra/tokens.d.ts +6 -1
- package/dist/infra/tokens.js +6 -1
- package/dist/kernel.module.js +15 -0
- package/dist/lifecycle/kernel-lifecycle.d.ts +4 -2
- package/dist/lifecycle/kernel-lifecycle.js +35 -7
- package/dist/local-devices/device-auth.controller.d.ts +42 -0
- package/dist/local-devices/device-auth.controller.js +116 -0
- package/dist/local-devices/device-auth.d.ts +119 -0
- package/dist/local-devices/device-auth.js +401 -0
- package/dist/local-devices/device-auth.module.d.ts +7 -0
- package/dist/local-devices/device-auth.module.js +25 -0
- package/dist/local-devices/device-routes.d.ts +36 -0
- package/dist/local-devices/device-routes.js +90 -0
- package/dist/local-devices/dto.d.ts +66 -0
- package/dist/local-devices/dto.js +44 -0
- package/dist/local-devices/keys.d.ts +25 -0
- package/dist/local-devices/keys.js +25 -0
- package/dist/local-devices/local-device-gateway.d.ts +134 -0
- package/dist/local-devices/local-device-gateway.js +542 -0
- package/dist/local-devices/local-device-provider.d.ts +89 -0
- package/dist/local-devices/local-device-provider.js +151 -0
- package/dist/local-devices/local-devices.module.d.ts +16 -0
- package/dist/local-devices/local-devices.module.js +44 -0
- package/dist/local-devices/machines.d.ts +118 -0
- package/dist/local-devices/machines.js +366 -0
- package/dist/local-devices/relay.d.ts +100 -0
- package/dist/local-devices/relay.js +373 -0
- package/dist/local-devices/targets.d.ts +28 -0
- package/dist/local-devices/targets.js +73 -0
- package/dist/log.d.ts +13 -1
- package/dist/log.js +93 -17
- package/dist/models/embeddings.d.ts +82 -0
- package/dist/models/embeddings.js +326 -0
- package/dist/models/enablement.controller.d.ts +40 -0
- package/dist/models/enablement.controller.js +74 -0
- package/dist/models/enablement.d.ts +101 -0
- package/dist/models/enablement.js +264 -0
- package/dist/models/models.module.d.ts +5 -1
- package/dist/models/models.module.js +16 -4
- package/dist/models/org-models.schemas.d.ts +8 -0
- package/dist/models/org-models.schemas.js +22 -0
- package/dist/models/prices.d.ts +8 -6
- package/dist/models/prices.js +11 -9
- package/dist/models/purposes.controller.d.ts +6 -4
- package/dist/models/purposes.controller.js +13 -7
- package/dist/models/purposes.d.ts +72 -14
- package/dist/models/purposes.js +115 -34
- 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.controller.d.ts +2 -5
- package/dist/orgs/orgs.controller.js +3 -6
- package/dist/orgs/orgs.module.js +3 -0
- package/dist/orgs/orgs.schemas.d.ts +8 -0
- package/dist/orgs/orgs.schemas.js +16 -0
- package/dist/orgs/orgs.service.d.ts +23 -8
- package/dist/orgs/orgs.service.js +38 -16
- 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 +66 -6
- package/dist/orgs/settings.service.js +89 -10
- package/dist/overrides.d.ts +16 -1
- package/dist/overrides.js +10 -0
- package/dist/platform/actor.d.ts +48 -0
- package/dist/platform/actor.js +100 -0
- package/dist/platform/agent-docs.d.ts +18 -0
- package/dist/platform/agent-docs.js +59 -0
- package/dist/platform/availability.d.ts +14 -0
- package/dist/platform/availability.js +43 -0
- package/dist/platform/errors.d.ts +28 -0
- package/dist/platform/errors.js +65 -0
- package/dist/platform/exclusions.d.ts +11 -0
- package/dist/platform/exclusions.js +774 -0
- package/dist/platform/method.d.ts +6 -0
- package/dist/platform/method.js +15 -0
- package/dist/platform/operation.d.ts +169 -0
- package/dist/platform/operation.js +102 -0
- package/dist/platform/ops/accounts.ops.d.ts +32 -0
- package/dist/platform/ops/accounts.ops.js +291 -0
- package/dist/platform/ops/admin-items.ops.d.ts +37 -0
- package/dist/platform/ops/admin-items.ops.js +278 -0
- package/dist/platform/ops/admin.ops.d.ts +38 -0
- package/dist/platform/ops/admin.ops.js +497 -0
- package/dist/platform/ops/agent-skills.ops.d.ts +50 -0
- package/dist/platform/ops/agent-skills.ops.js +509 -0
- package/dist/platform/ops/agent-templates.ops.d.ts +17 -0
- package/dist/platform/ops/agent-templates.ops.js +272 -0
- package/dist/platform/ops/agents.ops.d.ts +37 -0
- package/dist/platform/ops/agents.ops.js +730 -0
- package/dist/platform/ops/approvals.ops.d.ts +30 -0
- package/dist/platform/ops/approvals.ops.js +116 -0
- package/dist/platform/ops/background.ops.d.ts +14 -0
- package/dist/platform/ops/background.ops.js +134 -0
- package/dist/platform/ops/catalog-admin.ops.d.ts +92 -0
- package/dist/platform/ops/catalog-admin.ops.js +682 -0
- package/dist/platform/ops/channels.ops.d.ts +16 -0
- package/dist/platform/ops/channels.ops.js +195 -0
- package/dist/platform/ops/components.ops.d.ts +46 -0
- package/dist/platform/ops/components.ops.js +854 -0
- package/dist/platform/ops/connectors.ops.d.ts +17 -0
- package/dist/platform/ops/connectors.ops.js +190 -0
- package/dist/platform/ops/conversations.ops.d.ts +30 -0
- package/dist/platform/ops/conversations.ops.js +470 -0
- package/dist/platform/ops/devices.ops.d.ts +26 -0
- package/dist/platform/ops/devices.ops.js +311 -0
- package/dist/platform/ops/errors.d.ts +16 -0
- package/dist/platform/ops/errors.js +30 -0
- package/dist/platform/ops/evals.ops.d.ts +28 -0
- package/dist/platform/ops/evals.ops.js +783 -0
- package/dist/platform/ops/extensions-admin.ops.d.ts +25 -0
- package/dist/platform/ops/extensions-admin.ops.js +372 -0
- package/dist/platform/ops/extensions.ops.d.ts +25 -0
- package/dist/platform/ops/extensions.ops.js +347 -0
- package/dist/platform/ops/inbox.ops.d.ts +25 -0
- package/dist/platform/ops/inbox.ops.js +381 -0
- package/dist/platform/ops/marketplaces.ops.d.ts +22 -0
- package/dist/platform/ops/marketplaces.ops.js +466 -0
- package/dist/platform/ops/models.ops.d.ts +25 -0
- package/dist/platform/ops/models.ops.js +232 -0
- package/dist/platform/ops/org-plugins.ops.d.ts +35 -0
- package/dist/platform/ops/org-plugins.ops.js +388 -0
- package/dist/platform/ops/org-settings.ops.d.ts +18 -0
- package/dist/platform/ops/org-settings.ops.js +127 -0
- package/dist/platform/ops/orgs.ops.d.ts +28 -0
- package/dist/platform/ops/orgs.ops.js +298 -0
- package/dist/platform/ops/other-orgs.d.ts +20 -0
- package/dist/platform/ops/other-orgs.js +72 -0
- package/dist/platform/ops/paging.d.ts +14 -0
- package/dist/platform/ops/paging.js +20 -0
- package/dist/platform/ops/platform.ops.d.ts +30 -0
- package/dist/platform/ops/platform.ops.js +231 -0
- package/dist/platform/ops/plugins.ops.d.ts +35 -0
- package/dist/platform/ops/plugins.ops.js +476 -0
- package/dist/platform/ops/previewers.ops.d.ts +14 -0
- package/dist/platform/ops/previewers.ops.js +109 -0
- package/dist/platform/ops/requests.ops.d.ts +14 -0
- package/dist/platform/ops/requests.ops.js +191 -0
- package/dist/platform/ops/role.d.ts +4 -0
- package/dist/platform/ops/role.js +10 -0
- package/dist/platform/ops/setup.ops.d.ts +24 -0
- package/dist/platform/ops/setup.ops.js +212 -0
- package/dist/platform/ops/skills.ops.d.ts +17 -0
- package/dist/platform/ops/skills.ops.js +160 -0
- package/dist/platform/ops/summary.d.ts +10 -0
- package/dist/platform/ops/summary.js +18 -0
- package/dist/platform/ops/themes.ops.d.ts +14 -0
- package/dist/platform/ops/themes.ops.js +47 -0
- package/dist/platform/ops/ui.ops.d.ts +8 -0
- package/dist/platform/ops/ui.ops.js +41 -0
- package/dist/platform/ops/unavailable.d.ts +23 -0
- package/dist/platform/ops/unavailable.js +118 -0
- package/dist/platform/parity.d.ts +33 -0
- package/dist/platform/parity.js +272 -0
- package/dist/platform/platform-ops.module.d.ts +43 -0
- package/dist/platform/platform-ops.module.js +142 -0
- package/dist/platform/platform.module.d.ts +8 -0
- package/dist/platform/platform.module.js +25 -0
- package/dist/platform/registry.d.ts +30 -0
- package/dist/platform/registry.js +111 -0
- package/dist/platform/route-schemas.d.ts +18 -0
- package/dist/platform/route-schemas.js +85 -0
- package/dist/roles/gateway-role.d.ts +18 -3
- package/dist/roles/gateway-role.js +33 -5
- package/dist/roles/gateway.module.d.ts +2 -1
- package/dist/roles/gateway.module.js +6 -3
- 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 +21 -1
- package/dist/runtime/context/build.d.ts +21 -13
- package/dist/runtime/context/build.js +106 -29
- package/dist/runtime/context/claude-tools.d.ts +4 -1
- package/dist/runtime/context/claude-tools.js +13 -12
- package/dist/runtime/context/compaction.js +24 -1
- package/dist/runtime/context/device-paths.d.ts +40 -0
- package/dist/runtime/context/device-paths.js +48 -0
- package/dist/runtime/context/legacy-text.d.ts +22 -0
- package/dist/runtime/context/legacy-text.js +37 -0
- package/dist/runtime/context/reminders.d.ts +2 -0
- package/dist/runtime/context/reminders.js +2 -0
- package/dist/runtime/context/run-context.d.ts +65 -0
- package/dist/runtime/context/run-context.js +215 -0
- package/dist/runtime/context/skills.d.ts +29 -11
- package/dist/runtime/context/skills.js +46 -32
- package/dist/runtime/context/tool-changes.d.ts +27 -0
- package/dist/runtime/context/tool-changes.js +60 -0
- package/dist/runtime/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 +36 -17
- package/dist/runtime/loop.d.ts +35 -6
- package/dist/runtime/maintenance.d.ts +9 -4
- package/dist/runtime/maintenance.js +35 -8
- package/dist/runtime/model-call.d.ts +54 -11
- package/dist/runtime/model-call.js +105 -28
- package/dist/runtime/providers.d.ts +149 -29
- package/dist/runtime/providers.js +332 -63
- package/dist/runtime/run-context.service.d.ts +65 -0
- package/dist/runtime/run-context.service.js +236 -0
- package/dist/runtime/run-control.d.ts +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-finish.d.ts +1 -1
- package/dist/runtime/run-jobs.d.ts +3 -5
- package/dist/runtime/run-jobs.js +7 -9
- package/dist/runtime/run-queue.d.ts +62 -5
- package/dist/runtime/run-queue.js +313 -40
- package/dist/runtime/run-worker.d.ts +19 -8
- package/dist/runtime/run-worker.js +105 -44
- package/dist/runtime/runtime.module.js +13 -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 +31 -26
- package/dist/runtime/subagents/definition.js +89 -142
- package/dist/runtime/subagents/deliveries.d.ts +71 -0
- package/dist/runtime/subagents/deliveries.js +228 -0
- package/dist/runtime/subagents/dispatch.d.ts +116 -27
- package/dist/runtime/subagents/dispatch.js +213 -142
- 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/org-agents.js +2 -1
- 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 +25 -8
- package/dist/runtime/subagents/roster.js +48 -12
- package/dist/runtime/subagents/skill-fork.d.ts +4 -3
- package/dist/runtime/subagents/skill-fork.js +9 -5
- 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 +9 -6
- package/dist/runtime/subagents/subagents.service.js +13 -8
- 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 +35 -39
- package/dist/runtime/usage-report.js +171 -97
- package/dist/runtime/waits.d.ts +148 -39
- package/dist/runtime/waits.js +426 -112
- 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 +34 -7
- package/dist/sandbox/providers.js +54 -9
- package/dist/sandbox/sandbox-file-reader.d.ts +35 -0
- package/dist/sandbox/sandbox-file-reader.js +98 -0
- package/dist/sandbox/sandbox.module.d.ts +3 -2
- package/dist/sandbox/sandbox.module.js +10 -4
- package/dist/sandbox/sandbox.service.d.ts +345 -132
- package/dist/sandbox/sandbox.service.js +883 -399
- package/dist/sandbox/unreachable.d.ts +30 -0
- package/dist/sandbox/unreachable.js +108 -0
- package/dist/setup/kernel-checks.d.ts +91 -0
- package/dist/setup/kernel-checks.js +295 -0
- package/dist/setup/oauth-token-probe.d.ts +47 -0
- package/dist/setup/oauth-token-probe.js +108 -0
- package/dist/setup/redact-check.d.ts +18 -0
- package/dist/setup/redact-check.js +46 -0
- package/dist/setup/setup-check-registry.d.ts +86 -0
- package/dist/setup/setup-check-registry.js +75 -0
- package/dist/setup/setup-checks.controller.d.ts +28 -0
- package/dist/setup/setup-checks.controller.js +78 -0
- package/dist/setup/setup-checks.schemas.d.ts +38 -0
- package/dist/setup/setup-checks.schemas.js +43 -0
- package/dist/setup/setup-checks.service.d.ts +144 -0
- package/dist/setup/setup-checks.service.js +683 -0
- package/dist/setup/setup-guides.controller.d.ts +18 -0
- package/dist/setup/setup-guides.controller.js +48 -0
- package/dist/setup/setup-guides.schemas.d.ts +10 -0
- package/dist/setup/setup-guides.schemas.js +6 -0
- package/dist/setup/setup-guides.service.d.ts +126 -0
- package/dist/setup/setup-guides.service.js +315 -0
- package/dist/setup/setup.module.d.ts +8 -0
- package/dist/setup/setup.module.js +31 -0
- package/dist/skills/agent-skills.controller.d.ts +48 -0
- package/dist/skills/agent-skills.controller.js +131 -0
- package/dist/skills/agent-skills.service.d.ts +262 -0
- package/dist/skills/agent-skills.service.js +996 -0
- package/dist/skills/catalog.d.ts +14 -11
- package/dist/skills/catalog.js +32 -50
- package/dist/skills/changes.controller.d.ts +12 -22
- package/dist/skills/changes.controller.js +27 -56
- package/dist/skills/changes.service.d.ts +69 -115
- package/dist/skills/changes.service.js +249 -598
- package/dist/skills/conversation-catalog.d.ts +53 -0
- package/dist/skills/conversation-catalog.js +149 -0
- package/dist/skills/invocable.controller.d.ts +1 -1
- package/dist/skills/invocable.controller.js +2 -2
- package/dist/skills/invocation-keys.d.ts +1 -1
- package/dist/skills/invocation-keys.js +1 -1
- package/dist/skills/invoke.d.ts +3 -3
- package/dist/skills/invoke.js +21 -8
- package/dist/skills/package.d.ts +15 -1
- package/dist/skills/package.js +14 -1
- package/dist/skills/skills.controller.d.ts +32 -6
- package/dist/skills/skills.controller.js +64 -11
- package/dist/skills/skills.module.js +25 -3
- package/dist/skills/skills.schemas.d.ts +44 -0
- package/dist/skills/skills.schemas.js +68 -0
- package/dist/skills/skills.service.d.ts +123 -26
- package/dist/skills/skills.service.js +493 -76
- package/dist/skills/usable.d.ts +82 -0
- package/dist/skills/usable.js +388 -0
- package/dist/themes/render-css.d.ts +13 -0
- package/dist/themes/render-css.js +135 -0
- package/dist/themes/theme-delivery.service.d.ts +36 -0
- package/dist/themes/theme-delivery.service.js +116 -0
- package/dist/themes/theme-state.d.ts +116 -0
- package/dist/themes/theme-state.js +221 -0
- package/dist/themes/theme-usage.d.ts +61 -0
- package/dist/themes/theme-usage.js +98 -0
- package/dist/themes/themes-public.controller.d.ts +33 -0
- package/dist/themes/themes-public.controller.js +98 -0
- package/dist/themes/themes.controller.d.ts +13 -0
- package/dist/themes/themes.controller.js +38 -0
- package/dist/themes/themes.module.d.ts +3 -0
- package/dist/themes/themes.module.js +21 -0
- package/dist/themes/themes.schemas.d.ts +3 -0
- package/dist/themes/themes.schemas.js +2 -0
- package/dist/themes/themes.service.d.ts +50 -0
- package/dist/themes/themes.service.js +99 -0
- package/dist/time-zone.d.ts +5 -0
- package/dist/time-zone.js +19 -0
- package/dist/tools/admin-connectors.d.ts +69 -0
- package/dist/tools/admin-connectors.js +135 -0
- package/dist/tools/approvals.controller.js +2 -3
- package/dist/tools/approvals.schemas.d.ts +21 -0
- package/dist/tools/approvals.schemas.js +15 -0
- package/dist/tools/approvals.service.d.ts +26 -2
- package/dist/tools/approvals.service.js +44 -5
- package/dist/tools/builtin-names.d.ts +104 -0
- package/dist/tools/builtin-names.js +164 -0
- package/dist/tools/builtins/agent.d.ts +27 -25
- package/dist/tools/builtins/agent.js +66 -63
- package/dist/tools/builtins/ask-user.d.ts +1 -1
- package/dist/tools/builtins/ask-user.js +5 -4
- package/dist/tools/builtins/builtin-tools.d.ts +23 -4
- package/dist/tools/builtins/builtin-tools.js +78 -12
- package/dist/tools/builtins/current-time.d.ts +26 -0
- package/dist/tools/builtins/current-time.js +99 -0
- package/dist/tools/builtins/handback.d.ts +28 -0
- package/dist/tools/builtins/handback.js +53 -0
- package/dist/tools/builtins/platform.d.ts +51 -0
- package/dist/tools/builtins/platform.js +451 -0
- package/dist/tools/builtins/read-tool-output.d.ts +1 -1
- package/dist/tools/builtins/read-tool-output.js +2 -2
- package/dist/tools/builtins/sandbox/bash.d.ts +5 -5
- package/dist/tools/builtins/sandbox/bash.js +291 -39
- package/dist/tools/builtins/sandbox/common.d.ts +135 -36
- package/dist/tools/builtins/sandbox/common.js +222 -62
- package/dist/tools/builtins/sandbox/deliver.d.ts +1 -1
- package/dist/tools/builtins/sandbox/deliver.js +19 -16
- package/dist/tools/builtins/sandbox/edit.d.ts +1 -1
- package/dist/tools/builtins/sandbox/edit.js +64 -50
- package/dist/tools/builtins/sandbox/file-state.d.ts +34 -0
- package/dist/tools/builtins/sandbox/file-state.js +34 -0
- package/dist/tools/builtins/sandbox/glob-match.d.ts +1 -1
- package/dist/tools/builtins/sandbox/glob-match.js +1 -1
- package/dist/tools/builtins/sandbox/glob.d.ts +1 -1
- package/dist/tools/builtins/sandbox/glob.js +17 -12
- package/dist/tools/builtins/sandbox/grep.d.ts +7 -4
- package/dist/tools/builtins/sandbox/grep.js +153 -34
- package/dist/tools/builtins/sandbox/index.d.ts +9 -5
- package/dist/tools/builtins/sandbox/index.js +13 -5
- package/dist/tools/builtins/sandbox/read.d.ts +2 -2
- package/dist/tools/builtins/sandbox/read.js +29 -19
- package/dist/tools/builtins/sandbox/task-output.d.ts +79 -0
- package/dist/tools/builtins/sandbox/task-output.js +334 -0
- package/dist/tools/builtins/sandbox/task-stop.d.ts +10 -0
- package/dist/tools/builtins/sandbox/task-stop.js +113 -0
- package/dist/tools/builtins/sandbox/write.d.ts +1 -1
- package/dist/tools/builtins/sandbox/write.js +51 -44
- 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 +29 -18
- package/dist/tools/builtins/skill-load.js +125 -73
- package/dist/tools/builtins/tool-search.d.ts +13 -9
- package/dist/tools/builtins/tool-search.js +25 -14
- package/dist/tools/builtins/web/errors.d.ts +8 -0
- package/dist/tools/builtins/web/errors.js +53 -0
- package/dist/tools/builtins/web/extract.d.ts +62 -0
- package/dist/tools/builtins/web/extract.js +271 -0
- package/dist/tools/builtins/web/fetch.d.ts +55 -0
- package/dist/tools/builtins/web/fetch.js +175 -0
- package/dist/tools/builtins/web/index.d.ts +13 -0
- package/dist/tools/builtins/web/index.js +12 -0
- package/dist/tools/builtins/web/page-cache.d.ts +25 -0
- package/dist/tools/builtins/web/page-cache.js +77 -0
- package/dist/tools/builtins/web/search.d.ts +25 -0
- package/dist/tools/builtins/web/search.js +210 -0
- package/dist/tools/builtins/web/url.d.ts +17 -0
- package/dist/tools/builtins/web/url.js +43 -0
- package/dist/tools/connector-account-policies.d.ts +51 -0
- package/dist/tools/connector-account-policies.js +165 -0
- package/dist/tools/connectors.controller.d.ts +74 -9
- package/dist/tools/connectors.controller.js +133 -16
- package/dist/tools/connectors.schemas.d.ts +27 -0
- package/dist/tools/connectors.schemas.js +34 -0
- package/dist/tools/connectors.service.d.ts +101 -8
- package/dist/tools/connectors.service.js +266 -28
- package/dist/tools/credentials.d.ts +23 -0
- package/dist/tools/credentials.js +90 -1
- package/dist/tools/display-names.d.ts +9 -0
- package/dist/tools/display-names.js +24 -0
- package/dist/tools/drift.js +5 -5
- package/dist/tools/elicitation.js +1 -1
- package/dist/tools/extension-tools.controller.d.ts +14 -0
- package/dist/tools/extension-tools.controller.js +37 -0
- package/dist/tools/info.d.ts +61 -4
- package/dist/tools/info.js +119 -33
- package/dist/tools/legacy-data.d.ts +34 -0
- package/dist/tools/legacy-data.js +76 -0
- package/dist/tools/legacy-keys.d.ts +51 -0
- package/dist/tools/legacy-keys.js +114 -0
- package/dist/tools/naming.d.ts +1 -5
- package/dist/tools/naming.js +1 -7
- package/dist/tools/oauth/flow-paths.d.ts +1 -1
- package/dist/tools/oauth/flow-paths.js +1 -1
- package/dist/tools/oauth/flow.js +1 -1
- package/dist/tools/oauth/tokens.d.ts +54 -7
- package/dist/tools/oauth/tokens.js +87 -17
- package/dist/tools/org-tool-switches.d.ts +89 -0
- package/dist/tools/org-tool-switches.js +201 -0
- package/dist/tools/outputs.js +1 -1
- package/dist/tools/pipeline.d.ts +67 -47
- package/dist/tools/pipeline.js +319 -380
- package/dist/tools/policy.d.ts +30 -23
- package/dist/tools/policy.js +142 -64
- package/dist/tools/questions.controller.d.ts +1 -1
- package/dist/tools/questions.controller.js +1 -1
- package/dist/tools/questions.service.d.ts +23 -2
- package/dist/tools/questions.service.js +104 -2
- package/dist/tools/registry.d.ts +189 -68
- package/dist/tools/registry.js +318 -236
- package/dist/tools/resources.d.ts +1 -1
- package/dist/tools/resources.js +1 -1
- package/dist/tools/tools.module.js +31 -3
- package/dist/tools/validate.js +1 -1
- package/dist/ui/admin-ui.controller.d.ts +56 -0
- package/dist/ui/admin-ui.controller.js +192 -0
- package/dist/ui/arrangement.d.ts +65 -0
- package/dist/ui/arrangement.js +171 -0
- package/dist/ui/embed-token.d.ts +2 -2
- package/dist/ui/embed-token.js +30 -5
- package/dist/ui/registry.d.ts +42 -17
- package/dist/ui/registry.js +46 -14
- package/dist/ui/slots.controller.d.ts +11 -0
- package/dist/ui/slots.controller.js +25 -0
- package/dist/ui/ui-stream.d.ts +20 -3
- package/dist/ui/ui-stream.js +25 -7
- package/dist/ui/ui.schemas.d.ts +70 -0
- package/dist/ui/ui.schemas.js +65 -0
- package/dist/ui/views.controller.d.ts +35 -49
- package/dist/ui/views.controller.js +48 -70
- package/dist/ui/views.d.ts +112 -18
- package/dist/ui/views.js +254 -47
- package/package.json +6 -3
- package/src/migrations/0063_tool_keys_claude_code.sql +220 -0
- package/src/migrations/0064_account_last_org.sql +7 -0
- package/src/migrations/0065_conversation_archive.sql +8 -0
- package/src/migrations/0066_extension_display_name.sql +4 -0
- package/src/migrations/0067_agent_profiles.sql +20 -0
- package/src/migrations/0068_agent_avatar_uploads.sql +7 -0
- package/src/migrations/0069_attachments_agent_idx.sql +3 -0
- package/src/migrations/0070_background_tasks.sql +37 -0
- package/src/migrations/0071_background_tasks_reserve.sql +6 -0
- package/src/migrations/0072_background_tasks_stopping.sql +5 -0
- package/src/migrations/0073_org_extension_point_defaults.sql +11 -0
- package/src/migrations/0074_subagent_tree.sql +50 -0
- package/src/migrations/0075_plugin_scope.sql +61 -0
- package/src/migrations/0076_skills_created_by_nullable.sql +6 -0
- package/src/migrations/0077_scope_requests.sql +52 -0
- package/src/migrations/0078_scope_grant_switches.sql +18 -0
- package/src/migrations/0079_scope_live_install_switches.sql +19 -0
- package/src/migrations/0080_rename_enterprise_admin.sql +18 -0
- package/src/migrations/0081_platform_components.sql +129 -0
- package/src/migrations/0082_platform_migration.sql +33 -0
- package/src/migrations/0083_plugin_scope_sync_failures.sql +15 -0
- package/src/migrations/0084_org_owned_items.sql +85 -0
- package/src/migrations/0085_agent_templates_phase4.sql +45 -0
- package/src/migrations/0086_org_layering.sql +30 -0
- package/src/migrations/0087_approval_summary.sql +6 -0
- package/src/migrations/0088_environments.sql +80 -0
- package/src/migrations/0089_model_kinds_usage.sql +38 -0
- package/src/migrations/0090_initial_passwords.sql +27 -0
- package/src/migrations/0091_account_time_zone.sql +4 -0
- package/src/migrations/0092_tools_default_on.sql +27 -0
- package/src/migrations/0093_connected_environments.sql +37 -0
- package/src/migrations/0094_environment_paths_idx.sql +7 -0
- package/src/migrations/0095_environment_files_resets.sql +5 -0
- package/src/migrations/0096_environment_demoted_default.sql +18 -0
- package/src/migrations/0097_extension_installs_enabled_at.sql +16 -0
- package/src/migrations/0098_single_provider_running_first.sql +41 -0
- package/src/migrations/0099_channel_connection_guide_ack.sql +6 -0
- package/src/migrations/0100_catalog_files.sql +13 -0
- package/src/migrations/0101_marketplace_icons.sql +32 -0
- package/src/migrations/0102_themes.sql +64 -0
- package/src/migrations/0103_ui_theme_setting.sql +7 -0
- package/src/migrations/0104_connector_tool_account_policies.sql +16 -0
- package/src/migrations/0105_devices_rename.sql +136 -0
- package/src/migrations/0106_setup_guides_v2.sql +10 -0
- package/src/migrations/0107_extension_client_builds.sql +50 -0
- package/src/migrations/0108_question_skipped.sql +6 -0
- package/src/migrations/0109_audit_platform_idx.sql +5 -0
- package/src/migrations/0110_usage_time_idx.sql +8 -0
- package/src/migrations/0111_agent_skill_sharing.sql +22 -0
- package/src/migrations/0112_skill_share_requests.sql +4 -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
- package/dist/tools/builtins/sandbox/names.d.ts +0 -7
- package/dist/tools/builtins/sandbox/names.js +0 -20
- package/dist/tools/builtins/skill-write.d.ts +0 -59
- package/dist/tools/builtins/skill-write.js +0 -244
|
@@ -8,6 +8,7 @@ var __param = (this && this.__param) || function (paramIndex, decorator) {
|
|
|
8
8
|
return function (target, key) { decorator(target, key, paramIndex); }
|
|
9
9
|
};
|
|
10
10
|
import { randomUUID } from "node:crypto";
|
|
11
|
+
import { parseToolKey } from "@capybara-hq/plugin-sdk";
|
|
11
12
|
import { Inject, Injectable } from "@nestjs/common";
|
|
12
13
|
import { sql } from "kysely";
|
|
13
14
|
import { ApiError } from "../errors.js";
|
|
@@ -16,22 +17,48 @@ import { audit } from "../identity/audit.js";
|
|
|
16
17
|
import { KernelDb } from "../infra/database/kernel-db.js";
|
|
17
18
|
import { TransactionHost } from "../infra/database/transaction-host.js";
|
|
18
19
|
import { Transactional } from "../infra/database/transactional.decorator.js";
|
|
19
|
-
import { KERNEL_LOGGER } from "../infra/tokens.js";
|
|
20
20
|
import { rejectAnonymousGuest } from "../orgs/members.service.js";
|
|
21
21
|
import { OrgLock } from "../orgs/org-lock.js";
|
|
22
|
-
import { roleAtLeast } from "../orgs/roles.js";
|
|
22
|
+
import { can, roleAtLeast } from "../orgs/roles.js";
|
|
23
23
|
import { ProviderRegistry } from "../runtime/providers.js";
|
|
24
|
-
import { SandboxJobs } from "../sandbox/jobs.js";
|
|
25
24
|
import { SkillChangesService } from "../skills/changes.service.js";
|
|
26
25
|
import { assertOrgSkills, assertPinnedSkills } from "../skills/skills.service.js";
|
|
26
|
+
import { legacyKeySaveText } from "../tools/legacy-keys.js";
|
|
27
27
|
import { ToolRegistry } from "../tools/registry.js";
|
|
28
28
|
import { AgentLookup, isAgentVisibleTo, visibleTo, } from "./agent-lookup.js";
|
|
29
|
-
import { normalizeStoredDefinition, paramIssues, SUBAGENT_NAME_RE, SUBAGENT_ROSTER_MAX, } from "./definition.js";
|
|
29
|
+
import { canonicalDisabledTools, normalizeStoredDefinition, paramIssues, SUBAGENT_NAME_RE, SUBAGENT_ROSTER_MAX, withoutRemovedBuiltinPolicies, } from "./definition.js";
|
|
30
|
+
import { deriveInstructions } from "./instruction-files.js";
|
|
31
|
+
import { PendingConnectorRequests } from "./pending-connector-requests.js";
|
|
32
|
+
import { randomPreset } from "./profile.js";
|
|
33
|
+
import { loadTemplates, templateTypeOf } from "./templates.js";
|
|
30
34
|
export { AGENT_VISIBILITIES, isAgentVisibleTo, visibleTo, } from "./agent-lookup.js";
|
|
31
35
|
export { paramIssues, SUBAGENT_ROSTER_MAX } from "./definition.js";
|
|
32
|
-
/**
|
|
33
|
-
|
|
36
|
+
/**
|
|
37
|
+
* The definition with its description (run context spec §3.5): `given` when the save gives one
|
|
38
|
+
* (trimmed; empty removes it), else `kept` (the current version's).
|
|
39
|
+
*/
|
|
40
|
+
function withDescription(definition, given, kept) {
|
|
41
|
+
const { description: _drop, ...rest } = definition;
|
|
42
|
+
const next = given !== undefined ? given.trim() : kept;
|
|
43
|
+
return next === undefined || next === "" ? rest : { ...rest, description: next };
|
|
44
|
+
}
|
|
45
|
+
/** A new agent has no id to bind an upload to yet: a client can only choose a preset on create. */
|
|
46
|
+
export function assertProfileWritable(profile) {
|
|
47
|
+
if (profile?.avatar?.kind === "upload") {
|
|
48
|
+
throw new ApiError("validation_failed", "Choose a preset avatar when creating an agent; upload one afterwards", [{ path: "avatar.kind", message: "upload is not supported on create" }]);
|
|
49
|
+
}
|
|
50
|
+
}
|
|
34
51
|
const notFound = () => new ApiError("agent.not_found", "Agent not found");
|
|
52
|
+
/** A per-operation policy key of the `Platform` tool (Platform tool spec §6.2). */
|
|
53
|
+
const PLATFORM_POLICY_KEY = /^Platform:[a-z][a-z-]*\.[a-z][a-z-]*$/;
|
|
54
|
+
/**
|
|
55
|
+
* May `toolPolicies` hold this key: one of the agent's tool keys, or `Platform:<operation>` when
|
|
56
|
+
* `Platform` is among them (an unknown operation id is kept: a removed operation's policy is
|
|
57
|
+
* harmless).
|
|
58
|
+
*/
|
|
59
|
+
function isToolPolicyKey(key, toolKeys) {
|
|
60
|
+
return toolKeys.has(key) || (toolKeys.has("Platform") && PLATFORM_POLICY_KEY.test(key));
|
|
61
|
+
}
|
|
35
62
|
/** 键排序后的 JSON:jsonb 不保留键顺序,比较定义是否变化时用。 */
|
|
36
63
|
function canonical(v) {
|
|
37
64
|
if (Array.isArray(v))
|
|
@@ -44,12 +71,43 @@ function canonical(v) {
|
|
|
44
71
|
}
|
|
45
72
|
return JSON.stringify(v);
|
|
46
73
|
}
|
|
74
|
+
/**
|
|
75
|
+
* The pending connectors of a saved definition (ruling P4-6): absent from the request = the current
|
|
76
|
+
* version's (an editor that does not know them never drops them); given = a subset of the current
|
|
77
|
+
* ones, unchanged (only creating from a template adds them, only binding resolves them); `[]`
|
|
78
|
+
* removes them all. Another entry → 400 `validation_failed` at `pendingConnectors.<i>`.
|
|
79
|
+
*/
|
|
80
|
+
export function keepPendingConnectors(definition, given, current) {
|
|
81
|
+
const { pendingConnectors: _given, ...rest } = definition;
|
|
82
|
+
const next = given ?? current ?? [];
|
|
83
|
+
if (given !== undefined) {
|
|
84
|
+
const known = new Map((current ?? []).map((c) => [c.key, canonical(c)]));
|
|
85
|
+
const details = given.flatMap((c, i) => known.get(c.key) === canonical(c)
|
|
86
|
+
? []
|
|
87
|
+
: [
|
|
88
|
+
{
|
|
89
|
+
path: `pendingConnectors.${i}`,
|
|
90
|
+
message: "pending connectors come only from a template; keep or remove them",
|
|
91
|
+
},
|
|
92
|
+
]);
|
|
93
|
+
if (details.length > 0) {
|
|
94
|
+
throw new ApiError("validation_failed", "Invalid pending connectors", details);
|
|
95
|
+
}
|
|
96
|
+
}
|
|
97
|
+
return next.length > 0 ? { ...rest, pendingConnectors: [...next] } : rest;
|
|
98
|
+
}
|
|
99
|
+
/** `definition` with `disabledTools` in its canonical form (tools default-on spec §2). */
|
|
100
|
+
function withCanonicalTools(definition) {
|
|
101
|
+
return { ...definition, disabledTools: canonicalDisabledTools(definition.disabledTools ?? []) };
|
|
102
|
+
}
|
|
47
103
|
/**
|
|
48
104
|
* Checks `subagents` of an agent definition in the caller's transaction (spec §5.2); throws 400
|
|
49
105
|
* `agent.subagents_invalid` with one detail per problem (`{ reason, path, value? }`):
|
|
50
|
-
* - `not_found`: a template id that is not a
|
|
106
|
+
* - `not_found`: a template id that is not a usable agent template of the org (its own, a linked
|
|
107
|
+
* copy, or a platform template on in the org);
|
|
51
108
|
* - `invalid_name`: an inline name or `agents[].as` outside {@link SUBAGENT_NAME_RE}, or
|
|
52
|
-
* `general-purpose`; `duplicate`: a roster type listed twice (a template id twice included
|
|
109
|
+
* `general-purpose`; `duplicate`: a roster type listed twice (a template id twice included, a
|
|
110
|
+
* bare template type equal to an inline name, a template typed `general-purpose`);
|
|
53
111
|
* - `tool_not_selected`: an inline template's `tools`, `disallowedTools` or `toolPolicies` key that
|
|
54
112
|
* is not a tool key of this agent (`toolKeys`, from `ToolRegistry.checkRefs`);
|
|
55
113
|
* - `skill_not_selected`: an inline skill id that is neither in `skills.orgSkills` nor a live
|
|
@@ -67,8 +125,13 @@ export async function assertSubagents(t, a) {
|
|
|
67
125
|
if (sub === undefined)
|
|
68
126
|
return;
|
|
69
127
|
const details = [];
|
|
70
|
-
const add = (reason, path, value) => {
|
|
71
|
-
details.push({
|
|
128
|
+
const add = (reason, path, value, message) => {
|
|
129
|
+
details.push({
|
|
130
|
+
reason,
|
|
131
|
+
path,
|
|
132
|
+
...(value !== undefined && { value }),
|
|
133
|
+
...(message !== undefined && { message }),
|
|
134
|
+
});
|
|
72
135
|
};
|
|
73
136
|
const types = new Set(sub.general === false ? [] : ["general-purpose"]);
|
|
74
137
|
const claim = (type, path) => {
|
|
@@ -86,24 +149,44 @@ export async function assertSubagents(t, a) {
|
|
|
86
149
|
const templates = sub.templates ?? [];
|
|
87
150
|
const keptTemplates = new Set(a.kept?.templates ?? []);
|
|
88
151
|
const ids = [...new Set(templates)];
|
|
89
|
-
//
|
|
90
|
-
const
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
152
|
+
// usable templates (the org's, linked copies, platform templates on in the org) by id
|
|
153
|
+
const usable = await loadTemplates(t, a.orgId, ids);
|
|
154
|
+
// kept ids that are no longer usable: their type from the stored row, deleted or off included
|
|
155
|
+
const gone = ids.filter((id) => !usable.has(id) && keptTemplates.has(id));
|
|
156
|
+
const goneTypes = new Map();
|
|
157
|
+
if (gone.length > 0) {
|
|
158
|
+
const [orgRows, platformRows] = await Promise.all([
|
|
159
|
+
t
|
|
160
|
+
.selectFrom("agent_templates")
|
|
161
|
+
.select(["id", "name", "plugin_name"])
|
|
162
|
+
.where("org_id", "=", a.orgId)
|
|
163
|
+
.where("id", "in", gone)
|
|
164
|
+
.execute(),
|
|
165
|
+
t
|
|
166
|
+
.selectFrom("platform_agent_templates")
|
|
167
|
+
.select(["id", "name", "plugin_name"])
|
|
168
|
+
.where("id", "in", gone)
|
|
169
|
+
.execute(),
|
|
170
|
+
]);
|
|
171
|
+
for (const r of [...platformRows, ...orgRows]) {
|
|
172
|
+
goneTypes.set(r.id, templateTypeOf(r.plugin_name, r.name));
|
|
173
|
+
}
|
|
174
|
+
}
|
|
98
175
|
templates.forEach((id, i) => {
|
|
99
176
|
const path = `subagents.templates.${i}`;
|
|
100
|
-
const row =
|
|
101
|
-
if (!keptTemplates.has(id) &&
|
|
177
|
+
const row = usable.get(id);
|
|
178
|
+
if (!keptTemplates.has(id) && row === undefined) {
|
|
102
179
|
add("not_found", path, id);
|
|
103
180
|
return;
|
|
104
181
|
}
|
|
105
|
-
// claimed by its roster type (`<plugin>:<name>`,
|
|
106
|
-
|
|
182
|
+
// claimed by its roster type (`<plugin>:<name>`, or a bare `<name>` without a plugin;
|
|
183
|
+
// roster.ts templateType), so nothing shadows it; `general-purpose` is reserved
|
|
184
|
+
const type = row === undefined
|
|
185
|
+
? (goneTypes.get(id) ?? `template:${id}`)
|
|
186
|
+
: templateTypeOf(row.plugin, row.name);
|
|
187
|
+
if (type === "general-purpose" && sub.general === false)
|
|
188
|
+
add("duplicate", path, type);
|
|
189
|
+
claim(type, path);
|
|
107
190
|
});
|
|
108
191
|
const inline = sub.inline ?? [];
|
|
109
192
|
const selected = new Set(a.definition.skills?.orgSkills ?? []);
|
|
@@ -123,16 +206,21 @@ export async function assertSubagents(t, a) {
|
|
|
123
206
|
const base = `subagents.inline.${i}`;
|
|
124
207
|
name(x.name, `${base}.name`);
|
|
125
208
|
const tool = (key, path) => {
|
|
126
|
-
if (
|
|
127
|
-
|
|
209
|
+
if (a.toolKeys.has(key))
|
|
210
|
+
return;
|
|
211
|
+
// an rc key names its current key(s) (tool naming spec §8.3)
|
|
212
|
+
const renamed = legacyKeySaveText(key, a.toolKeys);
|
|
213
|
+
add("tool_not_selected", path, key, renamed ?? undefined);
|
|
128
214
|
};
|
|
129
215
|
for (const [j, key] of (x.tools ?? []).entries())
|
|
130
216
|
tool(key, `${base}.tools.${j}`);
|
|
131
217
|
for (const [j, key] of (x.disallowedTools ?? []).entries()) {
|
|
132
218
|
tool(key, `${base}.disallowedTools.${j}`);
|
|
133
219
|
}
|
|
134
|
-
for (const key of Object.keys(x.toolPolicies ?? {}))
|
|
135
|
-
|
|
220
|
+
for (const key of Object.keys(x.toolPolicies ?? {})) {
|
|
221
|
+
if (!isToolPolicyKey(key, a.toolKeys))
|
|
222
|
+
tool(key, `${base}.toolPolicies.${key}`);
|
|
223
|
+
}
|
|
136
224
|
(x.skills ?? []).forEach((id, j) => {
|
|
137
225
|
if (!selected.has(id) && !own.has(id))
|
|
138
226
|
add("skill_not_selected", `${base}.skills.${j}`, id);
|
|
@@ -167,7 +255,9 @@ export async function assertSubagents(t, a) {
|
|
|
167
255
|
if (count > SUBAGENT_ROSTER_MAX)
|
|
168
256
|
add("too_many", "subagents");
|
|
169
257
|
if (details.length > 0) {
|
|
170
|
-
throw new ApiError("agent.subagents_invalid", `Invalid sub-agents: ${details
|
|
258
|
+
throw new ApiError("agent.subagents_invalid", `Invalid sub-agents: ${details
|
|
259
|
+
.map((d) => `${d.path} (${d.reason}${d.message === undefined ? "" : `: ${d.message}`})`)
|
|
260
|
+
.join(", ")}`, details);
|
|
171
261
|
}
|
|
172
262
|
}
|
|
173
263
|
/**
|
|
@@ -181,48 +271,65 @@ let AgentsService = class AgentsService {
|
|
|
181
271
|
skillChanges;
|
|
182
272
|
orgLock;
|
|
183
273
|
providers;
|
|
184
|
-
sandboxJobs;
|
|
185
|
-
log;
|
|
186
274
|
txHost;
|
|
187
275
|
evalBudget;
|
|
276
|
+
setupRequests;
|
|
188
277
|
constructor(db, lookup, tools,
|
|
189
|
-
/**
|
|
278
|
+
/**
|
|
279
|
+
* Cancels the agent's pending skill requests: all of them when it is deleted, share requests
|
|
280
|
+
* when its owner changes.
|
|
281
|
+
*/
|
|
190
282
|
skillChanges,
|
|
191
283
|
/** The org row lock (orgs/org-lock.ts): joins the caller's transaction. */
|
|
192
284
|
orgLock,
|
|
193
285
|
/** Resolves the agent's models (and their parameter declarations) when it is saved. */
|
|
194
|
-
providers,
|
|
195
|
-
/**
|
|
196
|
-
* The sandbox destruction after a delete (内核投递一次性维护任务 `sandbox-destroy-for`,worker
|
|
197
|
-
* 在锁内逐个销毁,幂等).
|
|
198
|
-
*/
|
|
199
|
-
sandboxJobs, log, txHost,
|
|
286
|
+
providers, txHost,
|
|
200
287
|
/** Cancels the deleted agent's running eval runs (in the delete's transaction). */
|
|
201
|
-
evalBudget
|
|
288
|
+
evalBudget,
|
|
289
|
+
/** Settles the agent's connector setup request when its pending connectors change (P4-7). */
|
|
290
|
+
setupRequests) {
|
|
202
291
|
this.db = db;
|
|
203
292
|
this.lookup = lookup;
|
|
204
293
|
this.tools = tools;
|
|
205
294
|
this.skillChanges = skillChanges;
|
|
206
295
|
this.orgLock = orgLock;
|
|
207
296
|
this.providers = providers;
|
|
208
|
-
this.sandboxJobs = sandboxJobs;
|
|
209
|
-
this.log = log;
|
|
210
297
|
this.txHost = txHost;
|
|
211
298
|
this.evalBudget = evalBudget;
|
|
299
|
+
this.setupRequests = setupRequests;
|
|
212
300
|
}
|
|
213
301
|
/**
|
|
214
|
-
*
|
|
215
|
-
*
|
|
216
|
-
*
|
|
302
|
+
* Checks the turned-off tools and the policies (tools default-on spec §2): `disabledTools` must
|
|
303
|
+
* name existing builtins, extensions and connectors (`ToolRegistry.checkDisabled`); `toolPolicies`
|
|
304
|
+
* keys must be tools the agent could have, on or off (values only tighten, by the schema); a
|
|
305
|
+
* sub-agent's key filter is never saved. Invalid → `validation_failed` at `disabledTools.<i>` /
|
|
306
|
+
* `toolPolicies.<key>` / `subagentTools`. The list is stored in canonical form.
|
|
217
307
|
*/
|
|
218
|
-
async checkTools(orgId, def) {
|
|
219
|
-
const { keys, issues } = await this.tools.
|
|
308
|
+
async checkTools(orgId, def, kept = []) {
|
|
309
|
+
const { keys, issues } = await this.tools.checkDisabled(orgId, def.disabledTools ?? [], kept);
|
|
220
310
|
const details = [...issues];
|
|
221
|
-
|
|
222
|
-
|
|
311
|
+
if (def.subagentTools !== undefined) {
|
|
312
|
+
details.push({
|
|
313
|
+
path: "subagentTools",
|
|
314
|
+
message: "subagentTools is set only on a sub-agent's definition at dispatch",
|
|
315
|
+
});
|
|
316
|
+
}
|
|
317
|
+
for (const [key, policy] of Object.entries(def.toolPolicies)) {
|
|
318
|
+
// `allow` counts only for a connector tool (decision 2026-11-09): elsewhere a policy only
|
|
319
|
+
// tightens, so an `allow` there is refused rather than kept as a no-op
|
|
320
|
+
if (policy === "allow" && parseToolKey(key)?.kind !== "connector") {
|
|
321
|
+
details.push({
|
|
322
|
+
path: `toolPolicies.${key}`,
|
|
323
|
+
message: `"allow" applies only to a connector's tools; "${key}" can only be tightened (ask or deny)`,
|
|
324
|
+
});
|
|
325
|
+
continue;
|
|
326
|
+
}
|
|
327
|
+
if (!isToolPolicyKey(key, keys)) {
|
|
328
|
+
// an rc key (tool naming spec §8.3): saving writes current keys only, so name them
|
|
329
|
+
const renamed = legacyKeySaveText(key, keys);
|
|
223
330
|
details.push({
|
|
224
331
|
path: `toolPolicies.${key}`,
|
|
225
|
-
message: `"${key}" is not a tool of this agent`,
|
|
332
|
+
message: renamed ?? `"${key}" is not a tool of this agent`,
|
|
226
333
|
});
|
|
227
334
|
}
|
|
228
335
|
}
|
|
@@ -232,13 +339,32 @@ let AgentsService = class AgentsService {
|
|
|
232
339
|
return keys;
|
|
233
340
|
}
|
|
234
341
|
/**
|
|
235
|
-
*
|
|
342
|
+
* The current version's `disabledTools` (empty for an agent that is not there: the update's own
|
|
343
|
+
* checks report that): entries kept from it are not re-checked, so a connector deleted or an
|
|
344
|
+
* extension uninstalled later never blocks other edits.
|
|
345
|
+
*/
|
|
346
|
+
async keptDisabled(orgId, agentId) {
|
|
347
|
+
const row = await this.db.db
|
|
348
|
+
.selectFrom("agents")
|
|
349
|
+
.innerJoin("agent_versions", (j) => j
|
|
350
|
+
.onRef("agent_versions.agent_id", "=", "agents.id")
|
|
351
|
+
.onRef("agent_versions.version", "=", "agents.current_version"))
|
|
352
|
+
.select("agent_versions.definition")
|
|
353
|
+
.where("agents.id", "=", agentId)
|
|
354
|
+
.where("agents.org_id", "=", orgId)
|
|
355
|
+
.executeTakeFirst();
|
|
356
|
+
return row === undefined ? [] : (normalizeStoredDefinition(row.definition).disabledTools ?? []);
|
|
357
|
+
}
|
|
358
|
+
/**
|
|
359
|
+
* 校验主模型与兜底都可解析:enabled `chat` models in the org (`resolve`'s default kind; a model the
|
|
360
|
+
* platform or the org disabled, or an embedding model → 400 `agent.model_unavailable`, spec B
|
|
361
|
+
* §5.3),并用各自模型的参数声明严格校验 `modelParams` / `fallbackParams`
|
|
236
362
|
* (没有兜底时 `fallbackParams` 必须为空);不合法 → `validation_failed`,details 逐键点名。返回提示。
|
|
237
363
|
*/
|
|
238
|
-
async checkModels(def) {
|
|
364
|
+
async checkModels(orgId, def) {
|
|
239
365
|
const registry = this.providers;
|
|
240
|
-
const main = await registry.resolve(def.model);
|
|
241
|
-
const fallback = def.fallback === null ? null : await registry.resolve(def.fallback);
|
|
366
|
+
const main = await registry.resolve(orgId, def.model);
|
|
367
|
+
const fallback = def.fallback === null ? null : await registry.resolve(orgId, def.fallback);
|
|
242
368
|
const details = [
|
|
243
369
|
...paramIssues("modelParams", main.info.parameters, def.modelParams),
|
|
244
370
|
...paramIssues("fallbackParams", fallback?.info.parameters ?? [], def.fallbackParams),
|
|
@@ -279,19 +405,46 @@ let AgentsService = class AgentsService {
|
|
|
279
405
|
* 新建 agent(版本 1):在组织行锁内授权 `agents.create`;主模型与兜底都必须可解析
|
|
280
406
|
* (`agent.model_unavailable`);兜底与主模型同一供应商只提示 `fallback_same_provider`。
|
|
281
407
|
*/
|
|
282
|
-
async create(orgId, actorAccountId,
|
|
408
|
+
async create(orgId, actorAccountId, request, actorTokenId, auditDetail) {
|
|
409
|
+
const { agent, warnings } = await this.createChecked(orgId, actorAccountId, request, null, actorTokenId, auditDetail);
|
|
410
|
+
return { agent, warnings };
|
|
411
|
+
}
|
|
412
|
+
/**
|
|
413
|
+
* Creates an agent from a planned template definition (rulings P4-3, P4-8): {@link create}'s
|
|
414
|
+
* checks, plus, under the org row lock, 403 `agent.visibility_forbidden` when the visibility is
|
|
415
|
+
* not `private` and the creator lacks `agents.manage`; the provenance columns are written once.
|
|
416
|
+
* Returns the creator's role read under the lock (the caller decides on the pending connector
|
|
417
|
+
* request after the commit).
|
|
418
|
+
*/
|
|
419
|
+
createFromTemplate(orgId, actorAccountId, request, template, actorTokenId, auditDetail) {
|
|
420
|
+
return this.createChecked(orgId, actorAccountId, request, template, actorTokenId, auditDetail);
|
|
421
|
+
}
|
|
422
|
+
async createChecked(orgId, actorAccountId, request, template, actorTokenId, auditDetail) {
|
|
423
|
+
// a policy key of a removed builtin (e.g. copied from a template) is dropped, never refused
|
|
424
|
+
const given = withoutRemovedBuiltinPolicies(request.definition);
|
|
425
|
+
const input = {
|
|
426
|
+
...request,
|
|
427
|
+
// run context spec §3.5: version 1 carries the description (the profile's when the
|
|
428
|
+
// definition gives none)
|
|
429
|
+
definition: withCanonicalTools(withDescription(deriveInstructions(given, null), given.description ?? request.profile?.description, undefined)),
|
|
430
|
+
};
|
|
283
431
|
// 先解析模型(可能访问供应商),不在持有组织行锁时做
|
|
284
|
-
const warnings = await this.checkModels(input.definition);
|
|
432
|
+
const warnings = await this.checkModels(orgId, input.definition);
|
|
285
433
|
const toolKeys = await this.checkTools(orgId, input.definition);
|
|
286
434
|
if (input.visibility !== "members" && (input.memberIds?.length ?? 0) > 0) {
|
|
287
435
|
throw new ApiError("validation_failed", "memberIds requires visibility 'members'");
|
|
288
436
|
}
|
|
289
|
-
|
|
290
|
-
|
|
437
|
+
assertProfileWritable(input.profile);
|
|
438
|
+
const { agent, role } = await this.createIn(orgId, actorAccountId, input, toolKeys, template, actorTokenId, auditDetail);
|
|
439
|
+
return { agent, warnings, role };
|
|
291
440
|
}
|
|
292
|
-
async createIn(orgId, actorAccountId, input, toolKeys, actorTokenId) {
|
|
441
|
+
async createIn(orgId, actorAccountId, input, toolKeys, template, actorTokenId, auditDetail) {
|
|
293
442
|
const t = this.db.db;
|
|
294
|
-
await this.orgLock.lockAndAuthorize(orgId, actorAccountId, "agents.create");
|
|
443
|
+
const { role } = await this.orgLock.lockAndAuthorize(orgId, actorAccountId, "agents.create");
|
|
444
|
+
// ruling P4-3: a member creates a template agent for themself; sharing it is an admin's call
|
|
445
|
+
if (template !== null && input.visibility !== "private" && !can(role, "agents.manage")) {
|
|
446
|
+
throw new ApiError("agent.visibility_forbidden", "Only an organization admin can create an agent from a template for others; create it private");
|
|
447
|
+
}
|
|
295
448
|
await assertOrgSkills(t, orgId, input.definition.skills?.orgSkills ?? []);
|
|
296
449
|
await assertPinnedSkills(t, orgId, null, input.definition.skills);
|
|
297
450
|
await assertSubagents(t, {
|
|
@@ -313,6 +466,14 @@ let AgentsService = class AgentsService {
|
|
|
313
466
|
owner_account_id: actorAccountId,
|
|
314
467
|
visibility: input.visibility,
|
|
315
468
|
current_version: 1,
|
|
469
|
+
profile_avatar: JSON.stringify(input.profile?.avatar ?? { kind: "preset", id: randomPreset() }),
|
|
470
|
+
profile_description: input.definition.description ?? "",
|
|
471
|
+
profile_quick_actions: JSON.stringify(input.profile?.quickActions ?? []),
|
|
472
|
+
...(template !== null && {
|
|
473
|
+
created_from_template_id: template.id,
|
|
474
|
+
created_from_template_version: template.version,
|
|
475
|
+
created_from_template_name: template.name,
|
|
476
|
+
}),
|
|
316
477
|
})
|
|
317
478
|
.execute();
|
|
318
479
|
await t
|
|
@@ -331,9 +492,14 @@ let AgentsService = class AgentsService {
|
|
|
331
492
|
orgId,
|
|
332
493
|
action: "agent.created",
|
|
333
494
|
target: id,
|
|
334
|
-
detail: {
|
|
495
|
+
detail: {
|
|
496
|
+
version: 1,
|
|
497
|
+
visibility: input.visibility,
|
|
498
|
+
...(template !== null && { template: { id: template.id, version: template.version } }),
|
|
499
|
+
...auditDetail,
|
|
500
|
+
},
|
|
335
501
|
});
|
|
336
|
-
return this.lookup.view(id);
|
|
502
|
+
return { agent: await this.lookup.view(id), role };
|
|
337
503
|
}
|
|
338
504
|
/**
|
|
339
505
|
* 锁组织行并复核发起人,再锁 agent 行:发起人须仍具备 `agents.create`(member 以上),且是负责人或组织管理员以上;
|
|
@@ -342,11 +508,29 @@ let AgentsService = class AgentsService {
|
|
|
342
508
|
async lockForWrite(orgId, agentId, actorAccountId) {
|
|
343
509
|
const t = this.db.db;
|
|
344
510
|
const { role } = await this.orgLock.lockAndAuthorize(orgId, actorAccountId, "agents.create");
|
|
511
|
+
const agent = await this.lockAgentRow(orgId, agentId);
|
|
512
|
+
if (agent.owner_account_id === actorAccountId || roleAtLeast(role, "admin"))
|
|
513
|
+
return agent;
|
|
514
|
+
const visible = await t
|
|
515
|
+
.selectFrom("agents")
|
|
516
|
+
.select("id")
|
|
517
|
+
.where("id", "=", agentId)
|
|
518
|
+
.where(visibleTo(actorAccountId))
|
|
519
|
+
.executeTakeFirst();
|
|
520
|
+
if (!visible)
|
|
521
|
+
throw notFound();
|
|
522
|
+
throw new ApiError("forbidden", "Only the agent owner or an organization admin can modify it");
|
|
523
|
+
}
|
|
524
|
+
/**
|
|
525
|
+
* Locks the live agent row of `orgId` (the caller holds the org row lock); missing or deleted →
|
|
526
|
+
* `agent.not_found`.
|
|
527
|
+
*/
|
|
528
|
+
async lockAgentRow(orgId, agentId) {
|
|
345
529
|
// NO KEY UPDATE: a soft delete then appends revert snapshots to conversations; FOR UPDATE would
|
|
346
530
|
// block the agent foreign key check of an append already holding one of them (40P01)
|
|
347
|
-
const agent = await
|
|
531
|
+
const agent = await this.db.db
|
|
348
532
|
.selectFrom("agents")
|
|
349
|
-
.select(["owner_account_id", "visibility", "current_version"])
|
|
533
|
+
.select(["owner_account_id", "needs_reassignment", "visibility", "current_version"])
|
|
350
534
|
.where("id", "=", agentId)
|
|
351
535
|
.where("org_id", "=", orgId)
|
|
352
536
|
.where("deleted_at", "is", null)
|
|
@@ -354,29 +538,44 @@ let AgentsService = class AgentsService {
|
|
|
354
538
|
.executeTakeFirst();
|
|
355
539
|
if (!agent)
|
|
356
540
|
throw notFound();
|
|
357
|
-
|
|
358
|
-
|
|
359
|
-
|
|
541
|
+
return agent;
|
|
542
|
+
}
|
|
543
|
+
/**
|
|
544
|
+
* The platform path's lock (a super admin who need not be a member of the org): finds the live
|
|
545
|
+
* agent's org, locks the org row, then the agent row. A missing or deleted agent, or one of a
|
|
546
|
+
* deleted org → `agent.not_found`. The super admin check is the caller's (`@SuperAdmin()`).
|
|
547
|
+
*/
|
|
548
|
+
async lockForPlatform(agentId) {
|
|
549
|
+
const found = await this.db.db
|
|
360
550
|
.selectFrom("agents")
|
|
361
|
-
.select("
|
|
551
|
+
.select("org_id")
|
|
362
552
|
.where("id", "=", agentId)
|
|
363
|
-
.where(
|
|
553
|
+
.where("deleted_at", "is", null)
|
|
364
554
|
.executeTakeFirst();
|
|
365
|
-
if (!
|
|
555
|
+
if (!found)
|
|
366
556
|
throw notFound();
|
|
367
|
-
|
|
557
|
+
const orgId = found.org_id;
|
|
558
|
+
if (!(await this.orgLock.tryLock(orgId)))
|
|
559
|
+
throw notFound();
|
|
560
|
+
return { orgId, agent: await this.lockAgentRow(orgId, agentId) };
|
|
368
561
|
}
|
|
369
562
|
/**
|
|
370
563
|
* 修改 agent:`definition` 变化时写新版本(`current_version + 1`),只改 visibility / memberIds 不产生新版本。
|
|
371
564
|
* 只有负责人或组织管理员以上可改,在组织行锁内复核。
|
|
372
565
|
*/
|
|
373
|
-
async update(orgId, agentId, actorAccountId,
|
|
374
|
-
|
|
375
|
-
const
|
|
376
|
-
|
|
566
|
+
async update(orgId, agentId, actorAccountId, request, actorTokenId, auditDetail) {
|
|
567
|
+
// a policy key of a removed builtin (stored before it went) is dropped, never refused
|
|
568
|
+
const patch = request.definition === undefined
|
|
569
|
+
? request
|
|
570
|
+
: { ...request, definition: withoutRemovedBuiltinPolicies(request.definition) };
|
|
571
|
+
const warnings = patch.definition ? await this.checkModels(orgId, patch.definition) : [];
|
|
572
|
+
const toolKeys = patch.definition
|
|
573
|
+
? await this.checkTools(orgId, patch.definition, await this.keptDisabled(orgId, agentId))
|
|
574
|
+
: null;
|
|
575
|
+
const agent = await this.updateIn(orgId, agentId, actorAccountId, patch, toolKeys, actorTokenId, auditDetail);
|
|
377
576
|
return { agent, warnings };
|
|
378
577
|
}
|
|
379
|
-
async updateIn(orgId, agentId, actorAccountId, patch, toolKeys, actorTokenId) {
|
|
578
|
+
async updateIn(orgId, agentId, actorAccountId, patch, toolKeys, actorTokenId, auditDetail) {
|
|
380
579
|
const t = this.db.db;
|
|
381
580
|
const before = await this.lockForWrite(orgId, agentId, actorAccountId);
|
|
382
581
|
if (patch.expectedVersion !== undefined && patch.expectedVersion !== before.current_version) {
|
|
@@ -394,26 +593,50 @@ let AgentsService = class AgentsService {
|
|
|
394
593
|
.where("agent_id", "=", agentId)
|
|
395
594
|
.where("version", "=", before.current_version)
|
|
396
595
|
.executeTakeFirstOrThrow();
|
|
596
|
+
// the prompt: instructionFiles give instructions; a save given neither keeps the current one
|
|
597
|
+
const currentDefinition = normalizeStoredDefinition(current.definition);
|
|
598
|
+
const definition = withCanonicalTools(withDescription(keepPendingConnectors(deriveInstructions(patch.definition, currentDefinition), patch.definition.pendingConnectors, currentDefinition.pendingConnectors), patch.definition.description, currentDefinition.description));
|
|
599
|
+
// the display copy follows every description the save gives (run context spec §3.5)
|
|
600
|
+
if (patch.definition.description !== undefined) {
|
|
601
|
+
await t
|
|
602
|
+
.updateTable("agents")
|
|
603
|
+
.set({ profile_description: definition.description ?? "" })
|
|
604
|
+
.where("id", "=", agentId)
|
|
605
|
+
.execute();
|
|
606
|
+
}
|
|
397
607
|
// 当前版本已有的技能引用保存时合法,不再核对(被删的技能不挡住其他改动);新加的照常核对
|
|
398
608
|
const kept = new Set(current.definition.skills?.orgSkills ?? []);
|
|
399
|
-
await assertOrgSkills(t, orgId,
|
|
400
|
-
await assertPinnedSkills(t, orgId, agentId,
|
|
609
|
+
await assertOrgSkills(t, orgId, definition.skills?.orgSkills ?? [], kept);
|
|
610
|
+
await assertPinnedSkills(t, orgId, agentId, definition.skills, current.definition.skills?.pinned ?? []);
|
|
401
611
|
await assertSubagents(t, {
|
|
402
612
|
orgId,
|
|
403
613
|
agentId,
|
|
404
614
|
actorAccountId,
|
|
405
|
-
definition
|
|
615
|
+
definition,
|
|
406
616
|
toolKeys: toolKeys ?? new Set(),
|
|
407
617
|
kept: current.definition.subagents,
|
|
408
618
|
});
|
|
409
|
-
if (canonical(current.definition) !== canonical(
|
|
619
|
+
if (canonical(current.definition) !== canonical(definition)) {
|
|
620
|
+
// removing pending connectors in the editor narrows or cancels the setup request (P4-T6-3)
|
|
621
|
+
const keys = (definition.pendingConnectors ?? []).map((c) => c.key);
|
|
622
|
+
if (canonical((currentDefinition.pendingConnectors ?? []).map((c) => c.key)) !==
|
|
623
|
+
canonical(keys)) {
|
|
624
|
+
await this.setupRequests.settleIn({
|
|
625
|
+
orgId,
|
|
626
|
+
agentId,
|
|
627
|
+
keys,
|
|
628
|
+
close: "cancelled",
|
|
629
|
+
actor: actorAccountId,
|
|
630
|
+
actorTokenId,
|
|
631
|
+
});
|
|
632
|
+
}
|
|
410
633
|
toVersion = before.current_version + 1;
|
|
411
634
|
await t
|
|
412
635
|
.insertInto("agent_versions")
|
|
413
636
|
.values({
|
|
414
637
|
agent_id: agentId,
|
|
415
638
|
version: toVersion,
|
|
416
|
-
definition: JSON.stringify(
|
|
639
|
+
definition: JSON.stringify(definition),
|
|
417
640
|
created_by: actorAccountId,
|
|
418
641
|
})
|
|
419
642
|
.execute();
|
|
@@ -442,74 +665,100 @@ let AgentsService = class AgentsService {
|
|
|
442
665
|
...(visibility !== before.visibility && {
|
|
443
666
|
visibility: { from: before.visibility, to: visibility },
|
|
444
667
|
}),
|
|
668
|
+
...auditDetail,
|
|
445
669
|
},
|
|
446
670
|
});
|
|
447
671
|
return this.lookup.view(agentId);
|
|
448
672
|
}
|
|
449
673
|
/** 软删除:权限同 update。待处理的技能改动与该 agent 评测集在执行的评测运行一并取消,提交后删除草稿(T15)。 */
|
|
450
|
-
async softDelete(orgId, agentId, actorAccountId, actorTokenId) {
|
|
451
|
-
const cancelled = await this.softDeleteIn(orgId, agentId, actorAccountId, actorTokenId);
|
|
674
|
+
async softDelete(orgId, agentId, actorAccountId, actorTokenId, auditDetail) {
|
|
675
|
+
const cancelled = await this.softDeleteIn(orgId, agentId, actorAccountId, actorTokenId, auditDetail);
|
|
452
676
|
await this.skillChanges.finishCancel(orgId, cancelled);
|
|
453
|
-
await this.destroySandboxes(orgId, agentId);
|
|
454
677
|
}
|
|
455
|
-
async softDeleteIn(orgId, agentId, actorAccountId, actorTokenId) {
|
|
456
|
-
const t = this.db.db;
|
|
678
|
+
async softDeleteIn(orgId, agentId, actorAccountId, actorTokenId, auditDetail) {
|
|
457
679
|
await this.lockForWrite(orgId, agentId, actorAccountId);
|
|
680
|
+
return this.softDeleteLocked(orgId, agentId, { accountId: actorAccountId, ...(actorTokenId !== undefined && { tokenId: actorTokenId }) }, auditDetail);
|
|
681
|
+
}
|
|
682
|
+
/**
|
|
683
|
+
* The platform's delete (a super admin who need not be a member of the agent's org): the same
|
|
684
|
+
* effects as {@link softDelete}, under the org row lock, audited `agent.deleted` with
|
|
685
|
+
* `detail.via = "platform"`. A missing or deleted agent, or one of a deleted org →
|
|
686
|
+
* `agent.not_found`. `auditDetail` (a Platform tool write's `viaAgent`) is merged into the
|
|
687
|
+
* detail; `via` stays `"platform"`.
|
|
688
|
+
*/
|
|
689
|
+
async softDeleteAsPlatform(agentId, actor, auditDetail) {
|
|
690
|
+
const { orgId, cancelled } = await this.softDeleteAsPlatformIn(agentId, actor, auditDetail);
|
|
691
|
+
await this.skillChanges.finishCancel(orgId, cancelled);
|
|
692
|
+
}
|
|
693
|
+
async softDeleteAsPlatformIn(agentId, actor, auditDetail) {
|
|
694
|
+
const { orgId } = await this.lockForPlatform(agentId);
|
|
695
|
+
const cancelled = await this.softDeleteLocked(orgId, agentId, actor, {
|
|
696
|
+
...auditDetail,
|
|
697
|
+
via: "platform",
|
|
698
|
+
});
|
|
699
|
+
return { orgId, cancelled };
|
|
700
|
+
}
|
|
701
|
+
/** The delete itself; the caller holds the org row and agent row locks. */
|
|
702
|
+
async softDeleteLocked(orgId, agentId, actor, auditDetail) {
|
|
703
|
+
const t = this.db.db;
|
|
704
|
+
const { accountId: actorAccountId, tokenId: actorTokenId } = actor;
|
|
458
705
|
await t
|
|
459
706
|
.updateTable("agents")
|
|
460
707
|
.set({ deleted_at: sql `now()`, updated_at: sql `now()` })
|
|
461
708
|
.where("id", "=", agentId)
|
|
462
709
|
.execute();
|
|
710
|
+
// the avatar upload is garbage now: the cleanup job deletes it (and its object) once expired
|
|
711
|
+
await t
|
|
712
|
+
.updateTable("attachments")
|
|
713
|
+
.set({ expires_at: sql `now()` })
|
|
714
|
+
.where("agent_id", "=", agentId)
|
|
715
|
+
.where("purpose", "=", "agent-avatar")
|
|
716
|
+
.execute();
|
|
463
717
|
await audit(t, {
|
|
464
718
|
actorAccountId,
|
|
465
719
|
...(actorTokenId !== undefined && { actorTokenId }),
|
|
466
720
|
orgId,
|
|
467
721
|
action: "agent.deleted",
|
|
468
722
|
target: agentId,
|
|
723
|
+
...(auditDetail !== undefined && { detail: auditDetail }),
|
|
724
|
+
});
|
|
725
|
+
// the agent row stays (soft delete), so its setup request is closed here (P4-T6-3)
|
|
726
|
+
await this.setupRequests.settleIn({
|
|
727
|
+
orgId,
|
|
728
|
+
agentId,
|
|
729
|
+
keys: [],
|
|
730
|
+
close: "cancelled",
|
|
731
|
+
actor: actorAccountId,
|
|
732
|
+
actorTokenId,
|
|
469
733
|
});
|
|
470
734
|
// 评测集的 agent 删除后其评测运行不再花钱:显式取消(审计带原因)
|
|
471
735
|
await this.evalBudget.cancelRuns({ orgId, agentId }, { accountId: actorAccountId, ...(actorTokenId !== undefined && { tokenId: actorTokenId }) }, "agent_deleted");
|
|
472
736
|
// joins this transaction (mandatory: it relies on the agent row lock taken above)
|
|
473
737
|
return this.skillChanges.cancelPendingForAgent(orgId, agentId, actorAccountId, "agent_deleted", actorTokenId);
|
|
474
738
|
}
|
|
475
|
-
/** 提交后尽力而为:投递销毁这个 agent 各对话还没销毁的沙箱(失败只记日志,留给不活跃销毁扫描)。 */
|
|
476
|
-
async destroySandboxes(orgId, agentId) {
|
|
477
|
-
try {
|
|
478
|
-
const rows = await this.db
|
|
479
|
-
.selectFrom("sandboxes as s")
|
|
480
|
-
.innerJoin("conversations as c", "c.id", "s.conversation_id")
|
|
481
|
-
.select("s.conversation_id")
|
|
482
|
-
.where("c.org_id", "=", orgId)
|
|
483
|
-
.where("c.agent_id", "=", agentId)
|
|
484
|
-
.where("s.status", "<>", "destroyed")
|
|
485
|
-
.execute();
|
|
486
|
-
const ids = rows.map((r) => r.conversation_id);
|
|
487
|
-
for (let i = 0; i < ids.length; i += SANDBOX_DESTROY_BATCH) {
|
|
488
|
-
await this.sandboxJobs.destroy(ids.slice(i, i + SANDBOX_DESTROY_BATCH));
|
|
489
|
-
}
|
|
490
|
-
}
|
|
491
|
-
catch (err) {
|
|
492
|
-
this.log.warn("cannot schedule sandbox destruction for a deleted agent", { agentId, err });
|
|
493
|
-
}
|
|
494
|
-
}
|
|
495
739
|
/**
|
|
496
740
|
* 重新指派负责人(`agents.manage`,admin):在组织行锁内授权;agent 不存在 / 已删除 → `agent.not_found`;
|
|
497
741
|
* 新负责人不是该组织成员 → `member.not_found`;是匿名访客 → `member.anonymous_guest`。
|
|
498
742
|
* 清除 `needs_reassignment`,审计 `agent.owner_changed`。
|
|
499
743
|
*/
|
|
500
744
|
async reassignOwner(orgId, agentId, newOwnerId, actorAccountId, actorTokenId) {
|
|
501
|
-
const t = this.db.db;
|
|
502
745
|
await this.orgLock.lockAndAuthorize(orgId, actorAccountId, "agents.manage");
|
|
503
|
-
const agent = await
|
|
504
|
-
|
|
505
|
-
|
|
506
|
-
|
|
507
|
-
|
|
508
|
-
|
|
509
|
-
|
|
510
|
-
|
|
511
|
-
|
|
512
|
-
|
|
746
|
+
const agent = await this.lockAgentRow(orgId, agentId);
|
|
747
|
+
return this.reassignOwnerLocked(orgId, agentId, agent, newOwnerId, { accountId: actorAccountId, ...(actorTokenId !== undefined && { tokenId: actorTokenId }) }, undefined);
|
|
748
|
+
}
|
|
749
|
+
/**
|
|
750
|
+
* The platform's owner transfer (a super admin who need not be a member of the agent's org):
|
|
751
|
+
* the same checks and effects as {@link reassignOwner} (the new owner is a member of the agent's
|
|
752
|
+
* org and not its anonymous guest), audited with `detail.via = "platform"`. A missing or deleted
|
|
753
|
+
* agent, or one of a deleted org → `agent.not_found`.
|
|
754
|
+
*/
|
|
755
|
+
async reassignOwnerAsPlatform(agentId, newOwnerId, actor) {
|
|
756
|
+
const { orgId, agent } = await this.lockForPlatform(agentId);
|
|
757
|
+
return this.reassignOwnerLocked(orgId, agentId, agent, newOwnerId, actor, { via: "platform" });
|
|
758
|
+
}
|
|
759
|
+
/** The owner transfer itself; the caller holds the org row and agent row locks. */
|
|
760
|
+
async reassignOwnerLocked(orgId, agentId, agent, newOwnerId, actor, auditDetail) {
|
|
761
|
+
const t = this.db.db;
|
|
513
762
|
const member = await t
|
|
514
763
|
.selectFrom("memberships")
|
|
515
764
|
.select("role")
|
|
@@ -524,9 +773,14 @@ let AgentsService = class AgentsService {
|
|
|
524
773
|
.set({ owner_account_id: newOwnerId, needs_reassignment: false, updated_at: sql `now()` })
|
|
525
774
|
.where("id", "=", agentId)
|
|
526
775
|
.execute();
|
|
776
|
+
// the new owner hears about the agent's connector setup request (P4-T6-4)
|
|
777
|
+
await this.setupRequests.retargetIn([agentId], newOwnerId);
|
|
778
|
+
// the previous owner's asks to share the agent's skills lapse (the new owner did not ask);
|
|
779
|
+
// a share request has no draft or trial, so nothing is left to clean up after the commit
|
|
780
|
+
await this.skillChanges.cancelPendingForAgent(orgId, agentId, actor.accountId, "owner_changed", actor.tokenId, ["share"]);
|
|
527
781
|
await audit(t, {
|
|
528
|
-
actorAccountId,
|
|
529
|
-
...(
|
|
782
|
+
actorAccountId: actor.accountId,
|
|
783
|
+
...(actor.tokenId !== undefined && { actorTokenId: actor.tokenId }),
|
|
530
784
|
orgId,
|
|
531
785
|
action: "agent.owner_changed",
|
|
532
786
|
target: agentId,
|
|
@@ -534,10 +788,29 @@ let AgentsService = class AgentsService {
|
|
|
534
788
|
from: agent.owner_account_id,
|
|
535
789
|
to: newOwnerId,
|
|
536
790
|
neededReassignment: agent.needs_reassignment,
|
|
791
|
+
...auditDetail,
|
|
537
792
|
},
|
|
538
793
|
});
|
|
539
794
|
return this.lookup.view(agentId);
|
|
540
795
|
}
|
|
796
|
+
/**
|
|
797
|
+
* `views` with `createdFrom.available` set (ruling P4-8): whether each recorded template is
|
|
798
|
+
* still usable in the org. One template read for all of them; only the agents API calls it.
|
|
799
|
+
*/
|
|
800
|
+
async withTemplateLinks(orgId, views) {
|
|
801
|
+
const ids = [
|
|
802
|
+
...new Set(views.flatMap((v) => (v.createdFrom === null ? [] : [v.createdFrom.templateId]))),
|
|
803
|
+
];
|
|
804
|
+
if (ids.length === 0)
|
|
805
|
+
return views;
|
|
806
|
+
const usable = await loadTemplates(this.db.db, orgId, ids);
|
|
807
|
+
return views.map((v) => v.createdFrom === null
|
|
808
|
+
? v
|
|
809
|
+
: {
|
|
810
|
+
...v,
|
|
811
|
+
createdFrom: { ...v.createdFrom, available: usable.has(v.createdFrom.templateId) },
|
|
812
|
+
});
|
|
813
|
+
}
|
|
541
814
|
/** 取对 viewer 可见的 agent;`viewerAccountId = null` 表示该组织的服务令牌。不可见 → `agent.not_found`。 */
|
|
542
815
|
get(orgId, agentId, viewerAccountId) {
|
|
543
816
|
return this.lookup.get(orgId, agentId, viewerAccountId);
|
|
@@ -584,15 +857,33 @@ __decorate([
|
|
|
584
857
|
__decorate([
|
|
585
858
|
Transactional({ propagation: "mandatory" })
|
|
586
859
|
], AgentsService.prototype, "lockForWrite", null);
|
|
860
|
+
__decorate([
|
|
861
|
+
Transactional({ propagation: "mandatory" })
|
|
862
|
+
], AgentsService.prototype, "lockAgentRow", null);
|
|
863
|
+
__decorate([
|
|
864
|
+
Transactional({ propagation: "mandatory" })
|
|
865
|
+
], AgentsService.prototype, "lockForPlatform", null);
|
|
587
866
|
__decorate([
|
|
588
867
|
Transactional()
|
|
589
868
|
], AgentsService.prototype, "updateIn", null);
|
|
590
869
|
__decorate([
|
|
591
870
|
Transactional()
|
|
592
871
|
], AgentsService.prototype, "softDeleteIn", null);
|
|
872
|
+
__decorate([
|
|
873
|
+
Transactional()
|
|
874
|
+
], AgentsService.prototype, "softDeleteAsPlatformIn", null);
|
|
875
|
+
__decorate([
|
|
876
|
+
Transactional({ propagation: "mandatory" })
|
|
877
|
+
], AgentsService.prototype, "softDeleteLocked", null);
|
|
593
878
|
__decorate([
|
|
594
879
|
Transactional()
|
|
595
880
|
], AgentsService.prototype, "reassignOwner", null);
|
|
881
|
+
__decorate([
|
|
882
|
+
Transactional()
|
|
883
|
+
], AgentsService.prototype, "reassignOwnerAsPlatform", null);
|
|
884
|
+
__decorate([
|
|
885
|
+
Transactional({ propagation: "mandatory" })
|
|
886
|
+
], AgentsService.prototype, "reassignOwnerLocked", null);
|
|
596
887
|
AgentsService = __decorate([
|
|
597
888
|
Injectable(),
|
|
598
889
|
__param(0, Inject(KernelDb)),
|
|
@@ -601,9 +892,8 @@ AgentsService = __decorate([
|
|
|
601
892
|
__param(3, Inject(SkillChangesService)),
|
|
602
893
|
__param(4, Inject(OrgLock)),
|
|
603
894
|
__param(5, Inject(ProviderRegistry)),
|
|
604
|
-
__param(6, Inject(
|
|
605
|
-
__param(7, Inject(
|
|
606
|
-
__param(8, Inject(
|
|
607
|
-
__param(9, Inject(EvalBudget))
|
|
895
|
+
__param(6, Inject(TransactionHost)),
|
|
896
|
+
__param(7, Inject(EvalBudget)),
|
|
897
|
+
__param(8, Inject(PendingConnectorRequests))
|
|
608
898
|
], AgentsService);
|
|
609
899
|
export { AgentsService };
|