@capybara-hq/kernel 0.1.0-rc.3 → 0.1.0-rc.5
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/bootstrap.json +61 -5
- package/dist/admin/admin.controller.d.ts +47 -16
- package/dist/admin/admin.controller.js +44 -19
- package/dist/admin/extensions.controller.d.ts +24 -3
- package/dist/admin/extensions.controller.js +48 -8
- package/dist/admin/setup-lock.d.ts +1 -1
- package/dist/admin/setup-lock.js +1 -1
- package/dist/admin/setup.controller.d.ts +1 -1
- package/dist/admin/setup.controller.js +1 -1
- package/dist/admin/setup.service.d.ts +4 -4
- package/dist/admin/setup.service.js +8 -8
- package/dist/agents/agent-lookup.d.ts +19 -0
- package/dist/agents/agent-lookup.js +21 -0
- package/dist/agents/agent-profile.service.d.ts +29 -0
- package/dist/agents/agent-profile.service.js +117 -0
- package/dist/agents/agents.controller.d.ts +168 -3
- package/dist/agents/agents.controller.js +201 -12
- package/dist/agents/agents.module.d.ts +4 -1
- package/dist/agents/agents.module.js +36 -6
- package/dist/agents/agents.service.d.ts +64 -27
- package/dist/agents/agents.service.js +199 -74
- package/dist/agents/definition.d.ts +53 -0
- package/dist/agents/definition.js +55 -0
- package/dist/agents/from-template.d.ts +106 -0
- package/dist/agents/from-template.js +649 -0
- package/dist/agents/from-template.service.d.ts +60 -0
- package/dist/agents/from-template.service.js +161 -0
- package/dist/agents/instruction-files.d.ts +60 -0
- package/dist/agents/instruction-files.js +111 -0
- package/dist/agents/models.controller.d.ts +9 -3
- package/dist/agents/models.controller.js +19 -4
- package/dist/agents/org-templates.d.ts +176 -0
- package/dist/agents/org-templates.js +827 -0
- package/dist/agents/pending-connector-requests.d.ts +77 -0
- package/dist/agents/pending-connector-requests.js +215 -0
- package/dist/agents/pending-connectors.controller.d.ts +39 -0
- package/dist/agents/pending-connectors.controller.js +91 -0
- package/dist/agents/pending-connectors.service.d.ts +62 -0
- package/dist/agents/pending-connectors.service.js +282 -0
- package/dist/agents/profile.d.ts +96 -0
- package/dist/agents/profile.js +51 -0
- package/dist/agents/readiness.controller.d.ts +26 -0
- package/dist/agents/readiness.controller.js +56 -0
- package/dist/agents/templates.controller.d.ts +86 -5
- package/dist/agents/templates.controller.js +171 -7
- package/dist/agents/templates.d.ts +127 -23
- package/dist/agents/templates.js +476 -53
- package/dist/background/background.controller.d.ts +38 -0
- package/dist/background/background.controller.js +87 -0
- package/dist/background/background.module.d.ts +10 -0
- package/dist/background/background.module.js +39 -0
- package/dist/background/finish.d.ts +44 -0
- package/dist/background/finish.js +94 -0
- package/dist/background/launch-lock.d.ts +15 -0
- package/dist/background/launch-lock.js +40 -0
- package/dist/background/launch.d.ts +36 -0
- package/dist/background/launch.js +70 -0
- package/dist/background/poll.job.d.ts +56 -0
- package/dist/background/poll.job.js +190 -0
- package/dist/background/render.d.ts +23 -0
- package/dist/background/render.js +48 -0
- package/dist/background/session.d.ts +48 -0
- package/dist/background/session.js +79 -0
- package/dist/background/status.d.ts +35 -0
- package/dist/background/status.js +57 -0
- package/dist/background/stop.d.ts +68 -0
- package/dist/background/stop.js +243 -0
- package/dist/background/store.d.ts +162 -0
- package/dist/background/store.js +357 -0
- package/dist/background/store.module.d.ts +6 -0
- package/dist/background/store.module.js +22 -0
- package/dist/background/tasks.service.d.ts +77 -0
- package/dist/background/tasks.service.js +211 -0
- package/dist/background/wake-rules.d.ts +66 -0
- package/dist/background/wake-rules.js +113 -0
- package/dist/background/wake.d.ts +30 -0
- package/dist/background/wake.js +63 -0
- package/dist/catalog/admin-catalog.controller.d.ts +129 -30
- package/dist/catalog/admin-catalog.controller.js +213 -42
- package/dist/catalog/catalog-content.d.ts +58 -32
- package/dist/catalog/catalog-content.js +34 -8
- package/dist/catalog/catalog-import.module.d.ts +7 -0
- package/dist/catalog/catalog-import.module.js +60 -0
- package/dist/catalog/catalog-items.d.ts +111 -7
- package/dist/catalog/catalog-items.js +279 -13
- package/dist/catalog/catalog-scope.service.d.ts +260 -0
- package/dist/catalog/catalog-scope.service.js +1116 -0
- package/dist/catalog/catalog.module.d.ts +7 -9
- package/dist/catalog/catalog.module.js +41 -31
- package/dist/catalog/catalog.service.d.ts +101 -29
- package/dist/catalog/catalog.service.js +104 -106
- package/dist/catalog/claude/agents.js +2 -0
- package/dist/catalog/cli.d.ts +11 -1
- package/dist/catalog/cli.js +26 -1
- package/dist/catalog/component-promotion.d.ts +96 -0
- package/dist/catalog/component-promotion.js +395 -0
- package/dist/catalog/component-scope.controller.d.ts +152 -0
- package/dist/catalog/component-scope.controller.js +287 -0
- package/dist/catalog/component-scope.service.d.ts +303 -0
- package/dist/catalog/component-scope.service.js +936 -0
- package/dist/catalog/component-state.d.ts +174 -0
- package/dist/catalog/component-state.js +437 -0
- package/dist/catalog/job-ids.d.ts +30 -0
- package/dist/catalog/job-ids.js +25 -0
- package/dist/catalog/marketplace-fetch.d.ts +1 -1
- package/dist/catalog/marketplaces.controller.d.ts +22 -5
- package/dist/catalog/marketplaces.controller.js +56 -7
- package/dist/catalog/marketplaces.service.d.ts +54 -14
- package/dist/catalog/marketplaces.service.js +71 -22
- package/dist/catalog/org-catalog.controller.d.ts +125 -34
- package/dist/catalog/org-catalog.controller.js +181 -65
- package/dist/catalog/org-catalog.service.d.ts +65 -33
- package/dist/catalog/org-catalog.service.js +324 -157
- package/dist/catalog/org-extension-switch.d.ts +41 -0
- package/dist/catalog/org-extension-switch.js +115 -0
- package/dist/catalog/org-extension.controller.d.ts +119 -0
- package/dist/catalog/org-extension.controller.js +266 -0
- package/dist/catalog/org-plugin-uploads.controller.d.ts +98 -0
- package/dist/catalog/org-plugin-uploads.controller.js +213 -0
- package/dist/catalog/org-plugin-uploads.d.ts +63 -0
- package/dist/catalog/org-plugin-uploads.js +116 -0
- package/dist/catalog/owned-items.d.ts +184 -0
- package/dist/catalog/owned-items.js +789 -0
- package/dist/catalog/owned-plugin-cleanup.d.ts +56 -0
- package/dist/catalog/owned-plugin-cleanup.js +194 -0
- package/dist/catalog/ownership.d.ts +172 -0
- package/dist/catalog/ownership.js +326 -0
- package/dist/catalog/platform-components.d.ts +221 -0
- package/dist/catalog/platform-components.js +761 -0
- package/dist/catalog/platform-migration.d.ts +115 -0
- package/dist/catalog/platform-migration.js +582 -0
- package/dist/catalog/plugin-import.d.ts +178 -34
- package/dist/catalog/plugin-import.js +623 -83
- package/dist/catalog/plugin-install.d.ts +185 -41
- package/dist/catalog/plugin-install.js +758 -126
- package/dist/catalog/plugin-upgrade.d.ts +260 -225
- package/dist/catalog/plugin-upgrade.js +1148 -1137
- package/dist/catalog/request-rules.d.ts +65 -0
- package/dist/catalog/request-rules.js +217 -0
- package/dist/catalog/requests.service.d.ts +193 -118
- package/dist/catalog/requests.service.js +526 -343
- package/dist/catalog/reserved-names.d.ts +8 -0
- package/dist/catalog/reserved-names.js +42 -0
- package/dist/catalog/scope-orgs.d.ts +21 -0
- package/dist/catalog/scope-orgs.js +67 -0
- package/dist/catalog/scope-state.d.ts +35 -0
- package/dist/catalog/scope-state.js +87 -0
- package/dist/catalog/scope-sync-workers.d.ts +7 -0
- package/dist/catalog/scope-sync-workers.js +29 -0
- package/dist/catalog/scope-sync.d.ts +176 -0
- package/dist/catalog/scope-sync.js +576 -0
- package/dist/catalog/scope.d.ts +42 -0
- package/dist/catalog/scope.js +42 -0
- package/dist/catalog/unshare.d.ts +22 -0
- package/dist/catalog/unshare.js +118 -0
- package/dist/channels/actions.js +1 -0
- package/dist/channels/cards.js +21 -3
- package/dist/channels/channels.module.js +2 -0
- package/dist/channels/connections.service.d.ts +16 -1
- package/dist/channels/connections.service.js +38 -4
- package/dist/channels/inbound.d.ts +9 -1
- package/dist/channels/inbound.js +67 -5
- package/dist/channels/phrases.d.ts +35 -0
- package/dist/channels/phrases.js +29 -0
- package/dist/channels/threads.d.ts +5 -0
- package/dist/channels/threads.js +8 -0
- package/dist/config/docs.js +3 -1
- package/dist/config/schema.d.ts +24 -2
- package/dist/config/schema.js +145 -19
- package/dist/conversations/access.d.ts +6 -4
- package/dist/conversations/access.js +29 -5
- package/dist/conversations/agent-tree.d.ts +46 -0
- package/dist/conversations/agent-tree.js +92 -0
- package/dist/conversations/attachments.service.d.ts +30 -0
- package/dist/conversations/attachments.service.js +130 -5
- package/dist/conversations/conversations.controller.d.ts +79 -23
- package/dist/conversations/conversations.controller.js +141 -50
- package/dist/conversations/conversations.module.d.ts +1 -1
- package/dist/conversations/conversations.module.js +10 -7
- package/dist/conversations/conversations.service.d.ts +108 -9
- package/dist/conversations/conversations.service.js +237 -30
- package/dist/conversations/environment-status.d.ts +24 -0
- package/dist/conversations/environment-status.js +71 -0
- package/dist/conversations/event-log.d.ts +21 -6
- package/dist/conversations/event-log.js +70 -1
- package/dist/conversations/events.d.ts +140 -0
- package/dist/conversations/events.js +142 -13
- package/dist/conversations/queue.d.ts +3 -1
- package/dist/conversations/queue.js +13 -2
- package/dist/conversations/queue.service.d.ts +1 -1
- package/dist/conversations/queue.service.js +8 -1
- package/dist/conversations/titles.d.ts +12 -3
- package/dist/conversations/titles.js +36 -8
- package/dist/conversations/tree.d.ts +17 -0
- package/dist/conversations/tree.js +42 -0
- package/dist/ctx/create-ctx.d.ts +5 -0
- package/dist/ctx/create-ctx.js +15 -5
- package/dist/db/kernel-schema.d.ts +420 -20
- package/dist/db/pool.d.ts +5 -0
- package/dist/db/pool.js +3 -0
- package/dist/environments/access.d.ts +41 -0
- package/dist/environments/access.js +77 -0
- package/dist/environments/conversation-environments.d.ts +61 -0
- package/dist/environments/conversation-environments.js +170 -0
- package/dist/environments/dto.d.ts +25 -0
- package/dist/environments/dto.js +12 -0
- package/dist/environments/environments.controller.d.ts +33 -0
- package/dist/environments/environments.controller.js +110 -0
- package/dist/environments/environments.module.d.ts +8 -0
- package/dist/environments/environments.module.js +27 -0
- package/dist/environments/environments.service.d.ts +153 -0
- package/dist/environments/environments.service.js +541 -0
- package/dist/environments/legacy-cleanup.job.d.ts +34 -0
- package/dist/environments/legacy-cleanup.job.js +141 -0
- package/dist/errors.d.ts +90 -2
- package/dist/errors.js +90 -2
- package/dist/evals/reconstruct.d.ts +18 -9
- package/dist/evals/reconstruct.js +26 -7
- package/dist/evals/run-replay.d.ts +7 -2
- package/dist/evals/run-replay.js +42 -7
- package/dist/evals/step-replay.d.ts +2 -5
- package/dist/evals/step-replay.js +13 -7
- package/dist/evals/trajectory.js +1 -1
- package/dist/evals/trajectory.service.d.ts +8 -3
- package/dist/evals/trajectory.service.js +26 -14
- package/dist/evals/worker.d.ts +5 -5
- package/dist/evals/worker.js +9 -3
- package/dist/extensions/admin-ops.d.ts +36 -10
- package/dist/extensions/admin-ops.js +67 -42
- package/dist/extensions/admin-view.d.ts +39 -10
- package/dist/extensions/admin-view.js +111 -20
- package/dist/extensions/blobs.js +1 -0
- package/dist/extensions/bootstrap.d.ts +17 -4
- package/dist/extensions/bootstrap.js +70 -9
- package/dist/extensions/cli.d.ts +12 -0
- package/dist/extensions/cli.js +11 -2
- package/dist/extensions/config-issues.d.ts +13 -1
- package/dist/extensions/config-issues.js +22 -5
- package/dist/extensions/config-json-schema.d.ts +43 -7
- package/dist/extensions/config-json-schema.js +124 -58
- package/dist/extensions/deployment-config-store.d.ts +6 -0
- package/dist/extensions/deployment-config.d.ts +78 -8
- package/dist/extensions/deployment-config.js +172 -34
- package/dist/extensions/display-name.d.ts +22 -0
- package/dist/extensions/display-name.js +77 -0
- package/dist/extensions/effective-config.d.ts +127 -0
- package/dist/extensions/effective-config.js +368 -0
- package/dist/extensions/extensions.module.js +14 -2
- package/dist/extensions/hooks.d.ts +37 -4
- package/dist/extensions/hooks.js +82 -16
- package/dist/extensions/host.d.ts +45 -2
- package/dist/extensions/host.js +112 -16
- package/dist/extensions/installs.d.ts +20 -8
- package/dist/extensions/installs.js +37 -15
- package/dist/extensions/org-config.d.ts +81 -6
- package/dist/extensions/org-config.js +195 -44
- package/dist/extensions/org-levels.d.ts +37 -0
- package/dist/extensions/org-levels.js +71 -0
- package/dist/extensions/org-overrides.d.ts +151 -0
- package/dist/extensions/org-overrides.js +524 -0
- package/dist/extensions/package.d.ts +14 -1
- package/dist/extensions/package.js +51 -2
- package/dist/extensions/permission-view.d.ts +19 -4
- package/dist/extensions/permission-view.js +4 -4
- package/dist/extensions/plugin-items.d.ts +21 -0
- package/dist/extensions/plugin-items.js +42 -0
- package/dist/extensions/point-defaults.controller.d.ts +34 -0
- package/dist/extensions/point-defaults.controller.js +71 -0
- package/dist/extensions/point-defaults.d.ts +71 -0
- package/dist/extensions/point-defaults.js +234 -0
- package/dist/extensions/registry.d.ts +1 -1
- package/dist/extensions/registry.js +2 -0
- package/dist/extensions/resolve.d.ts +5 -1
- package/dist/extensions/resolve.js +15 -2
- package/dist/files/previewers.d.ts +8 -1
- package/dist/files/previewers.js +35 -6
- package/dist/http/api.module.js +31 -3
- package/dist/http/app.d.ts +11 -2
- package/dist/http/app.js +31 -5
- package/dist/http/nest-logger.d.ts +6 -5
- package/dist/http/nest-logger.js +24 -10
- package/dist/identity/accounts.d.ts +29 -29
- package/dist/identity/accounts.js +47 -47
- package/dist/identity/audit.d.ts +2 -1
- package/dist/identity/auth.controller.js +9 -5
- package/dist/identity/auth.guard.d.ts +13 -5
- package/dist/identity/auth.guard.js +26 -9
- package/dist/identity/cookies.d.ts +20 -5
- package/dist/identity/cookies.js +44 -6
- package/dist/identity/identity.module.d.ts +1 -1
- package/dist/identity/identity.module.js +4 -4
- package/dist/identity/me.controller.d.ts +5 -1
- package/dist/identity/me.controller.js +12 -3
- package/dist/identity/principal.d.ts +3 -3
- package/dist/identity/principal.js +3 -3
- package/dist/identity/sessions.d.ts +12 -0
- package/dist/identity/sessions.js +45 -0
- package/dist/identity/settings.d.ts +22 -11
- package/dist/identity/settings.js +53 -18
- package/dist/identity/{enterprise-admin.d.ts → super-admin.d.ts} +5 -5
- package/dist/identity/{enterprise-admin.js → super-admin.js} +24 -24
- package/dist/inbox/inbox.module.d.ts +4 -1
- package/dist/inbox/inbox.module.js +7 -3
- package/dist/inbox/inbox.service.d.ts +62 -3
- package/dist/inbox/inbox.service.js +74 -4
- package/dist/inbox/org-notices.d.ts +63 -0
- package/dist/inbox/org-notices.js +91 -0
- package/dist/inbox/platform-inbox.controller.d.ts +23 -0
- package/dist/inbox/platform-inbox.controller.js +58 -0
- package/dist/inbox/platform-inbox.service.d.ts +151 -0
- package/dist/inbox/platform-inbox.service.js +263 -0
- package/dist/inbox/platform-notices.d.ts +19 -0
- package/dist/inbox/platform-notices.js +9 -0
- package/dist/index.d.ts +2 -2
- package/dist/index.js +1 -1
- package/dist/infra/cli/kernel-cli.module.js +9 -1
- package/dist/infra/config/kernel-config.service.js +27 -1
- package/dist/infra/database/database.module.js +1 -0
- package/dist/infra/database/xact-lock.d.ts +1 -1
- package/dist/infra/database/xact-lock.js +1 -1
- package/dist/infra/events/kernel-events.d.ts +19 -2
- package/dist/infra/lifecycle/process-guards.js +4 -0
- package/dist/infra/logging/logging.module.d.ts +4 -2
- package/dist/infra/logging/logging.module.js +24 -6
- package/dist/infra/queue/add-job-once.d.ts +14 -0
- package/dist/infra/queue/add-job-once.js +16 -0
- package/dist/infra/queue/redis-connection.d.ts +6 -0
- package/dist/infra/queue/redis-connection.js +7 -0
- package/dist/infra/redis/redis.module.js +6 -2
- package/dist/infra/tokens.d.ts +6 -1
- package/dist/infra/tokens.js +6 -1
- package/dist/kernel.module.js +6 -0
- package/dist/lifecycle/kernel-lifecycle.d.ts +1 -1
- package/dist/lifecycle/kernel-lifecycle.js +4 -4
- package/dist/log.d.ts +13 -1
- package/dist/log.js +93 -17
- package/dist/models/prices.d.ts +5 -5
- package/dist/models/prices.js +4 -4
- package/dist/models/purposes.controller.d.ts +6 -4
- package/dist/models/purposes.controller.js +13 -7
- package/dist/models/purposes.d.ts +43 -9
- package/dist/models/purposes.js +48 -18
- package/dist/orgs/directory-sync.d.ts +14 -5
- package/dist/orgs/directory-sync.js +41 -17
- package/dist/orgs/offboarding.d.ts +12 -8
- package/dist/orgs/offboarding.js +54 -33
- package/dist/orgs/org-lock.d.ts +5 -0
- package/dist/orgs/org-lock.js +13 -0
- package/dist/orgs/org.guard.d.ts +10 -0
- package/dist/orgs/org.guard.js +43 -32
- package/dist/orgs/orgs.module.js +3 -0
- package/dist/orgs/orgs.service.d.ts +20 -7
- package/dist/orgs/orgs.service.js +32 -12
- package/dist/orgs/roles.d.ts +1 -1
- package/dist/orgs/roles.js +5 -1
- package/dist/orgs/settings.controller.d.ts +1 -1
- package/dist/orgs/settings.service.d.ts +20 -3
- package/dist/orgs/settings.service.js +19 -4
- package/dist/overrides.d.ts +3 -0
- package/dist/overrides.js +2 -0
- package/dist/platform/actor.d.ts +48 -0
- package/dist/platform/actor.js +100 -0
- package/dist/platform/agent-docs.d.ts +18 -0
- package/dist/platform/agent-docs.js +59 -0
- package/dist/platform/availability.d.ts +14 -0
- package/dist/platform/availability.js +43 -0
- package/dist/platform/errors.d.ts +11 -0
- package/dist/platform/errors.js +26 -0
- package/dist/platform/exclusions.d.ts +12 -0
- package/dist/platform/exclusions.js +1387 -0
- package/dist/platform/method.d.ts +6 -0
- package/dist/platform/method.js +15 -0
- package/dist/platform/operation.d.ts +92 -0
- package/dist/platform/operation.js +35 -0
- package/dist/platform/ops/agent-templates.ops.d.ts +14 -0
- package/dist/platform/ops/agent-templates.ops.js +92 -0
- package/dist/platform/ops/agents.ops.d.ts +19 -0
- package/dist/platform/ops/agents.ops.js +294 -0
- package/dist/platform/ops/connectors.ops.d.ts +15 -0
- package/dist/platform/ops/connectors.ops.js +126 -0
- package/dist/platform/ops/errors.d.ts +11 -0
- package/dist/platform/ops/errors.js +22 -0
- package/dist/platform/ops/extensions.ops.d.ts +19 -0
- package/dist/platform/ops/extensions.ops.js +116 -0
- package/dist/platform/ops/marketplaces.ops.d.ts +16 -0
- package/dist/platform/ops/marketplaces.ops.js +157 -0
- package/dist/platform/ops/paging.d.ts +14 -0
- package/dist/platform/ops/paging.js +20 -0
- package/dist/platform/ops/platform.ops.d.ts +23 -0
- package/dist/platform/ops/platform.ops.js +158 -0
- package/dist/platform/ops/plugins.ops.d.ts +33 -0
- package/dist/platform/ops/plugins.ops.js +377 -0
- package/dist/platform/ops/requests.ops.d.ts +14 -0
- package/dist/platform/ops/requests.ops.js +153 -0
- package/dist/platform/ops/role.d.ts +4 -0
- package/dist/platform/ops/role.js +10 -0
- package/dist/platform/ops/skills.ops.d.ts +13 -0
- package/dist/platform/ops/skills.ops.js +98 -0
- package/dist/platform/ops/summary.d.ts +10 -0
- package/dist/platform/ops/summary.js +18 -0
- package/dist/platform/platform-ops.module.d.ts +7 -0
- package/dist/platform/platform-ops.module.js +55 -0
- package/dist/platform/platform.module.d.ts +8 -0
- package/dist/platform/platform.module.js +25 -0
- package/dist/platform/redact-orgs.d.ts +7 -0
- package/dist/platform/redact-orgs.js +52 -0
- package/dist/platform/registry.d.ts +30 -0
- package/dist/platform/registry.js +111 -0
- package/dist/roles/worker-role.d.ts +6 -4
- package/dist/roles/worker-role.js +14 -7
- package/dist/roles/worker.module.d.ts +1 -1
- package/dist/roles/worker.module.js +15 -1
- package/dist/runtime/context/build.d.ts +11 -7
- package/dist/runtime/context/build.js +46 -19
- package/dist/runtime/context/claude-tools.d.ts +3 -1
- package/dist/runtime/context/claude-tools.js +8 -6
- package/dist/runtime/context/compaction.js +13 -0
- package/dist/runtime/context/reminders.d.ts +2 -0
- package/dist/runtime/context/reminders.js +2 -0
- package/dist/runtime/context/skills.js +9 -2
- package/dist/runtime/context/tool-changes.d.ts +27 -0
- package/dist/runtime/context/tool-changes.js +60 -0
- package/dist/runtime/hook-calls.js +2 -0
- package/dist/runtime/langgraph-loop.d.ts +3 -1
- package/dist/runtime/langgraph-loop.js +36 -17
- package/dist/runtime/loop.d.ts +34 -5
- package/dist/runtime/maintenance.d.ts +9 -4
- package/dist/runtime/maintenance.js +35 -8
- package/dist/runtime/model-call.d.ts +46 -8
- package/dist/runtime/model-call.js +72 -21
- package/dist/runtime/providers.d.ts +6 -0
- package/dist/runtime/providers.js +8 -0
- package/dist/runtime/run-control.d.ts +11 -1
- package/dist/runtime/run-control.js +12 -0
- package/dist/runtime/run-drafts.d.ts +85 -0
- package/dist/runtime/run-drafts.js +230 -0
- package/dist/runtime/run-jobs.d.ts +3 -5
- package/dist/runtime/run-jobs.js +3 -7
- package/dist/runtime/run-queue.d.ts +59 -2
- package/dist/runtime/run-queue.js +311 -38
- package/dist/runtime/run-worker.d.ts +11 -5
- package/dist/runtime/run-worker.js +69 -33
- package/dist/runtime/runtime.module.js +11 -3
- package/dist/runtime/step-log.d.ts +15 -4
- package/dist/runtime/step-log.js +24 -7
- package/dist/runtime/stream.controller.d.ts +23 -1
- package/dist/runtime/stream.controller.js +60 -3
- package/dist/runtime/stream.d.ts +4 -1
- package/dist/runtime/stream.js +27 -3
- package/dist/runtime/subagents/child.d.ts +55 -7
- package/dist/runtime/subagents/child.js +105 -7
- package/dist/runtime/subagents/definition.d.ts +12 -3
- package/dist/runtime/subagents/definition.js +44 -28
- package/dist/runtime/subagents/deliveries.d.ts +71 -0
- package/dist/runtime/subagents/deliveries.js +228 -0
- package/dist/runtime/subagents/dispatch.d.ts +115 -26
- package/dist/runtime/subagents/dispatch.js +212 -141
- package/dist/runtime/subagents/limits.d.ts +24 -5
- package/dist/runtime/subagents/limits.js +40 -6
- package/dist/runtime/subagents/messages.d.ts +95 -0
- package/dist/runtime/subagents/messages.js +328 -0
- package/dist/runtime/subagents/preamble.d.ts +4 -4
- package/dist/runtime/subagents/preamble.js +9 -7
- package/dist/runtime/subagents/progress.d.ts +8 -6
- package/dist/runtime/subagents/progress.js +11 -6
- package/dist/runtime/subagents/render.d.ts +30 -0
- package/dist/runtime/subagents/render.js +53 -0
- package/dist/runtime/subagents/roster.d.ts +24 -7
- package/dist/runtime/subagents/roster.js +47 -11
- package/dist/runtime/subagents/skill-fork.d.ts +3 -2
- package/dist/runtime/subagents/skill-fork.js +8 -4
- package/dist/runtime/subagents/status.d.ts +14 -0
- package/dist/runtime/subagents/status.js +23 -0
- package/dist/runtime/subagents/subagents.service.d.ts +7 -4
- package/dist/runtime/subagents/subagents.service.js +11 -6
- package/dist/runtime/usage-report.d.ts +2 -1
- package/dist/runtime/usage-report.js +19 -13
- package/dist/runtime/waits.d.ts +145 -36
- package/dist/runtime/waits.js +423 -109
- package/dist/sandbox/jobs.d.ts +40 -13
- package/dist/sandbox/jobs.js +57 -20
- package/dist/sandbox/leases.d.ts +37 -54
- package/dist/sandbox/leases.js +71 -115
- package/dist/sandbox/providers.d.ts +2 -2
- package/dist/sandbox/providers.js +1 -1
- package/dist/sandbox/sandbox.module.d.ts +3 -2
- package/dist/sandbox/sandbox.module.js +10 -4
- package/dist/sandbox/sandbox.service.d.ts +282 -129
- package/dist/sandbox/sandbox.service.js +736 -381
- package/dist/skills/catalog.d.ts +3 -2
- package/dist/skills/catalog.js +21 -43
- package/dist/skills/changes.controller.d.ts +7 -0
- package/dist/skills/changes.controller.js +19 -1
- package/dist/skills/invoke.js +8 -3
- package/dist/skills/package.d.ts +20 -1
- package/dist/skills/package.js +28 -1
- package/dist/skills/skills.controller.d.ts +39 -4
- package/dist/skills/skills.controller.js +88 -10
- package/dist/skills/skills.module.js +10 -1
- package/dist/skills/skills.service.d.ts +106 -26
- package/dist/skills/skills.service.js +421 -75
- package/dist/skills/usable.d.ts +81 -0
- package/dist/skills/usable.js +379 -0
- package/dist/tools/approvals.service.d.ts +20 -2
- package/dist/tools/approvals.service.js +25 -4
- package/dist/tools/builtin-names.d.ts +41 -7
- package/dist/tools/builtin-names.js +59 -7
- package/dist/tools/builtins/agent.d.ts +23 -21
- package/dist/tools/builtins/agent.js +62 -55
- package/dist/tools/builtins/builtin-tools.d.ts +19 -1
- package/dist/tools/builtins/builtin-tools.js +59 -2
- package/dist/tools/builtins/handback.d.ts +28 -0
- package/dist/tools/builtins/handback.js +53 -0
- package/dist/tools/builtins/platform.d.ts +34 -0
- package/dist/tools/builtins/platform.js +362 -0
- package/dist/tools/builtins/sandbox/bash.d.ts +1 -1
- package/dist/tools/builtins/sandbox/bash.js +241 -4
- package/dist/tools/builtins/sandbox/common.d.ts +69 -27
- package/dist/tools/builtins/sandbox/common.js +87 -48
- package/dist/tools/builtins/sandbox/deliver.js +1 -1
- package/dist/tools/builtins/sandbox/edit.js +2 -2
- package/dist/tools/builtins/sandbox/glob.js +2 -2
- package/dist/tools/builtins/sandbox/grep.js +2 -4
- package/dist/tools/builtins/sandbox/index.d.ts +3 -1
- package/dist/tools/builtins/sandbox/index.js +7 -1
- package/dist/tools/builtins/sandbox/read.js +1 -1
- package/dist/tools/builtins/sandbox/task-output.d.ts +74 -0
- package/dist/tools/builtins/sandbox/task-output.js +329 -0
- package/dist/tools/builtins/sandbox/task-stop.d.ts +10 -0
- package/dist/tools/builtins/sandbox/task-stop.js +113 -0
- package/dist/tools/builtins/sandbox/write.js +2 -2
- package/dist/tools/builtins/send-message.d.ts +56 -0
- package/dist/tools/builtins/send-message.js +100 -0
- package/dist/tools/builtins/skill-load.d.ts +22 -14
- package/dist/tools/builtins/skill-load.js +86 -57
- package/dist/tools/builtins/skill-write.js +1 -1
- package/dist/tools/builtins/web/errors.d.ts +8 -0
- package/dist/tools/builtins/web/errors.js +53 -0
- package/dist/tools/builtins/web/extract.d.ts +62 -0
- package/dist/tools/builtins/web/extract.js +271 -0
- package/dist/tools/builtins/web/fetch.d.ts +55 -0
- package/dist/tools/builtins/web/fetch.js +175 -0
- package/dist/tools/builtins/web/index.d.ts +13 -0
- package/dist/tools/builtins/web/index.js +12 -0
- package/dist/tools/builtins/web/page-cache.d.ts +25 -0
- package/dist/tools/builtins/web/page-cache.js +77 -0
- package/dist/tools/builtins/web/search.d.ts +25 -0
- package/dist/tools/builtins/web/search.js +210 -0
- package/dist/tools/builtins/web/url.d.ts +17 -0
- package/dist/tools/builtins/web/url.js +43 -0
- package/dist/tools/connectors.controller.d.ts +10 -0
- package/dist/tools/connectors.controller.js +12 -0
- package/dist/tools/connectors.service.d.ts +46 -5
- package/dist/tools/connectors.service.js +94 -15
- package/dist/tools/extension-tools.controller.d.ts +14 -0
- package/dist/tools/extension-tools.controller.js +37 -0
- package/dist/tools/info.d.ts +42 -1
- package/dist/tools/info.js +64 -1
- package/dist/tools/oauth/flow-paths.d.ts +1 -1
- package/dist/tools/oauth/flow-paths.js +1 -1
- package/dist/tools/org-tool-switches.d.ts +74 -0
- package/dist/tools/org-tool-switches.js +184 -0
- package/dist/tools/pipeline.d.ts +46 -40
- package/dist/tools/pipeline.js +202 -364
- package/dist/tools/policy.d.ts +1 -1
- package/dist/tools/policy.js +36 -16
- package/dist/tools/registry.d.ts +120 -8
- package/dist/tools/registry.js +112 -19
- package/dist/tools/tools.module.js +24 -2
- package/dist/tools/validate.js +1 -1
- package/dist/ui/views.d.ts +2 -1
- package/dist/ui/views.js +17 -3
- package/package.json +3 -3
- package/src/migrations/0064_account_last_org.sql +7 -0
- package/src/migrations/0065_conversation_archive.sql +8 -0
- package/src/migrations/0066_extension_display_name.sql +4 -0
- package/src/migrations/0067_agent_profiles.sql +20 -0
- package/src/migrations/0068_agent_avatar_uploads.sql +7 -0
- package/src/migrations/0069_attachments_agent_idx.sql +3 -0
- package/src/migrations/0070_background_tasks.sql +37 -0
- package/src/migrations/0071_background_tasks_reserve.sql +6 -0
- package/src/migrations/0072_background_tasks_stopping.sql +5 -0
- package/src/migrations/0073_org_extension_point_defaults.sql +11 -0
- package/src/migrations/0074_subagent_tree.sql +50 -0
- package/src/migrations/0075_plugin_scope.sql +61 -0
- package/src/migrations/0076_skills_created_by_nullable.sql +6 -0
- package/src/migrations/0077_scope_requests.sql +52 -0
- package/src/migrations/0078_scope_grant_switches.sql +18 -0
- package/src/migrations/0079_scope_live_install_switches.sql +19 -0
- package/src/migrations/0080_rename_enterprise_admin.sql +18 -0
- package/src/migrations/0081_platform_components.sql +129 -0
- package/src/migrations/0082_platform_migration.sql +33 -0
- package/src/migrations/0083_plugin_scope_sync_failures.sql +15 -0
- package/src/migrations/0084_org_owned_items.sql +85 -0
- package/src/migrations/0085_agent_templates_phase4.sql +45 -0
- package/src/migrations/0086_org_layering.sql +30 -0
- package/src/migrations/0087_approval_summary.sql +6 -0
- package/src/migrations/0088_environments.sql +80 -0
- package/dist/catalog/upgrade-targets.d.ts +0 -56
- package/dist/catalog/upgrade-targets.js +0 -90
- package/dist/conversations/sandbox-status.d.ts +0 -24
- package/dist/conversations/sandbox-status.js +0 -52
- package/dist/extensions/org-config.controller.d.ts +0 -24
- package/dist/extensions/org-config.controller.js +0 -62
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
import type { KernelSchemaDb } from "../db/kernel-schema.js";
|
|
2
|
+
/**
|
|
3
|
+
* The wake rules of an idle conversation (spec 2026-11-05-background-bash-design §3, generalized
|
|
4
|
+
* by agent map spec §5.3 to a second event kind): a finished background task or a sub-agent's
|
|
5
|
+
* delivery starts a run. Read by `RunQueue.ensureRun` in its transaction: every path that may start
|
|
6
|
+
* a run (a finish, a delivery, the end of a run, the delayed wake job, a page opening) applies the
|
|
7
|
+
* same rules. `BackgroundWake` is what calls `ensureRun` when a task finishes or a delivery lands.
|
|
8
|
+
*/
|
|
9
|
+
/** No two wakes of one conversation start within this window. */
|
|
10
|
+
export declare const WAKE_WINDOW_MS = 60000;
|
|
11
|
+
/** The delayed job that wakes a conversation at the end of its window (`cap-kernel-maintenance`). */
|
|
12
|
+
export declare const BG_WAKE_JOB = "bg-wake";
|
|
13
|
+
/**
|
|
14
|
+
* Its job id: one job per conversation and window end (no `:`). `retry` > 0 is a job that fired
|
|
15
|
+
* before the window ended on the database's clock and scheduled itself again: a distinct id, since
|
|
16
|
+
* BullMQ ignores an add under the id of the job still running.
|
|
17
|
+
*/
|
|
18
|
+
export declare const bgWakeJobId: (conversationId: string, windowEnd: number, retry?: number) => string;
|
|
19
|
+
export interface BgWakeJobData {
|
|
20
|
+
conversationId: string;
|
|
21
|
+
/** How many times this window's wake fired early (absent: none). */
|
|
22
|
+
retry?: number;
|
|
23
|
+
}
|
|
24
|
+
/**
|
|
25
|
+
* What a conversation's unconsumed wake events decide:
|
|
26
|
+
* - `wake`: start a run whose boundary is the event at `seq`, as `triggerAccountId`;
|
|
27
|
+
* - `later`: a wake started less than {@link WAKE_WINDOW_MS} ago; the window ends at `windowEnd`
|
|
28
|
+
* (epoch ms, the database's clock), `delayMs` from now;
|
|
29
|
+
* - null: nothing wakes the conversation.
|
|
30
|
+
*/
|
|
31
|
+
export type WakeDecision = {
|
|
32
|
+
kind: "wake";
|
|
33
|
+
seq: number;
|
|
34
|
+
triggerAccountId: string;
|
|
35
|
+
} | {
|
|
36
|
+
kind: "later";
|
|
37
|
+
windowEnd: number;
|
|
38
|
+
delayMs: number;
|
|
39
|
+
} | null;
|
|
40
|
+
/**
|
|
41
|
+
* The wake decision for a conversation that is idle and has no unconsumed message (the caller
|
|
42
|
+
* checked these under the conversation's row lock): a chat conversation (`rootId` = its own id) or
|
|
43
|
+
* a sub-agent's (`rootId` = the root of its tree). An event wakes it when:
|
|
44
|
+
* - it is after `consumed` and is either
|
|
45
|
+
* - a `background_task_finished` of a task of this conversation (the join on `conversation_id`
|
|
46
|
+
* reads the task's trigger account) that is not `reported` (a tool call already told the model)
|
|
47
|
+
* and has no `stoppedBy` (`"person"`: that person is looking at the conversation;
|
|
48
|
+
* `"deletion"`: the conversation is being deleted), or
|
|
49
|
+
* - a `subagent_delivery` (its own `triggerAccountId`: the trigger account of the child run that
|
|
50
|
+
* delivered it, agent map spec §7), except the finish of a child that was stopped
|
|
51
|
+
* (`status: "aborted"`: a person's stop of it or of a sub-agent above it, a tree stop, the
|
|
52
|
+
* deletion of the root), for the same reason as a person's task stop; a tree stop thus never
|
|
53
|
+
* wakes the stopped ancestors through their descendants' finishes, which land after them;
|
|
54
|
+
* - the wake setting is on (the org's override, else `deploymentOn`);
|
|
55
|
+
* - the root's queue is not paused and the root is not deleted (a paused root holds the wakes of
|
|
56
|
+
* the whole tree, agent map spec §5.3);
|
|
57
|
+
* - the event's trigger account can still send to the root (`canSend`, which the caller binds to
|
|
58
|
+
* the root);
|
|
59
|
+
* - no other wake of this conversation started in the last {@link WAKE_WINDOW_MS} (else `later`).
|
|
60
|
+
* The boundary is the newest event whose trigger account can send.
|
|
61
|
+
*/
|
|
62
|
+
export declare function wakeDecisionIn(t: KernelSchemaDb, conv: {
|
|
63
|
+
id: string;
|
|
64
|
+
orgId: string;
|
|
65
|
+
rootId: string;
|
|
66
|
+
}, consumed: number, deploymentOn: boolean, canSend: (accountId: string) => Promise<boolean>): Promise<WakeDecision>;
|
|
@@ -0,0 +1,113 @@
|
|
|
1
|
+
import { sql } from "kysely";
|
|
2
|
+
import { effectiveWakeOnBackgroundTask, readOrgSettings } from "../orgs/settings.service.js";
|
|
3
|
+
/**
|
|
4
|
+
* The wake rules of an idle conversation (spec 2026-11-05-background-bash-design §3, generalized
|
|
5
|
+
* by agent map spec §5.3 to a second event kind): a finished background task or a sub-agent's
|
|
6
|
+
* delivery starts a run. Read by `RunQueue.ensureRun` in its transaction: every path that may start
|
|
7
|
+
* a run (a finish, a delivery, the end of a run, the delayed wake job, a page opening) applies the
|
|
8
|
+
* same rules. `BackgroundWake` is what calls `ensureRun` when a task finishes or a delivery lands.
|
|
9
|
+
*/
|
|
10
|
+
/** No two wakes of one conversation start within this window. */
|
|
11
|
+
export const WAKE_WINDOW_MS = 60_000;
|
|
12
|
+
/** The delayed job that wakes a conversation at the end of its window (`cap-kernel-maintenance`). */
|
|
13
|
+
export const BG_WAKE_JOB = "bg-wake";
|
|
14
|
+
/**
|
|
15
|
+
* Its job id: one job per conversation and window end (no `:`). `retry` > 0 is a job that fired
|
|
16
|
+
* before the window ended on the database's clock and scheduled itself again: a distinct id, since
|
|
17
|
+
* BullMQ ignores an add under the id of the job still running.
|
|
18
|
+
*/
|
|
19
|
+
export const bgWakeJobId = (conversationId, windowEnd, retry = 0) => `bg-wake-${conversationId}-${windowEnd}${retry > 0 ? `-r${retry}` : ""}`;
|
|
20
|
+
/** How many unconsumed events are tried for a trigger account that can still send. */
|
|
21
|
+
const CANDIDATES = 20;
|
|
22
|
+
/** The event types whose run is a wake run (its boundary, `runs.trigger_seq`, is one of them). */
|
|
23
|
+
const WAKE_EVENT_TYPES = ["background_task_finished", "subagent_delivery"];
|
|
24
|
+
/**
|
|
25
|
+
* The wake decision for a conversation that is idle and has no unconsumed message (the caller
|
|
26
|
+
* checked these under the conversation's row lock): a chat conversation (`rootId` = its own id) or
|
|
27
|
+
* a sub-agent's (`rootId` = the root of its tree). An event wakes it when:
|
|
28
|
+
* - it is after `consumed` and is either
|
|
29
|
+
* - a `background_task_finished` of a task of this conversation (the join on `conversation_id`
|
|
30
|
+
* reads the task's trigger account) that is not `reported` (a tool call already told the model)
|
|
31
|
+
* and has no `stoppedBy` (`"person"`: that person is looking at the conversation;
|
|
32
|
+
* `"deletion"`: the conversation is being deleted), or
|
|
33
|
+
* - a `subagent_delivery` (its own `triggerAccountId`: the trigger account of the child run that
|
|
34
|
+
* delivered it, agent map spec §7), except the finish of a child that was stopped
|
|
35
|
+
* (`status: "aborted"`: a person's stop of it or of a sub-agent above it, a tree stop, the
|
|
36
|
+
* deletion of the root), for the same reason as a person's task stop; a tree stop thus never
|
|
37
|
+
* wakes the stopped ancestors through their descendants' finishes, which land after them;
|
|
38
|
+
* - the wake setting is on (the org's override, else `deploymentOn`);
|
|
39
|
+
* - the root's queue is not paused and the root is not deleted (a paused root holds the wakes of
|
|
40
|
+
* the whole tree, agent map spec §5.3);
|
|
41
|
+
* - the event's trigger account can still send to the root (`canSend`, which the caller binds to
|
|
42
|
+
* the root);
|
|
43
|
+
* - no other wake of this conversation started in the last {@link WAKE_WINDOW_MS} (else `later`).
|
|
44
|
+
* The boundary is the newest event whose trigger account can send.
|
|
45
|
+
*/
|
|
46
|
+
export async function wakeDecisionIn(t, conv, consumed, deploymentOn, canSend) {
|
|
47
|
+
const finishes = await t
|
|
48
|
+
.selectFrom("conversation_events as e")
|
|
49
|
+
.innerJoin("background_tasks as b", (j) => j
|
|
50
|
+
.on(sql `b.id = e.payload ->> 'taskId'`)
|
|
51
|
+
.onRef("b.conversation_id", "=", "e.conversation_id"))
|
|
52
|
+
.select(["e.seq", "b.trigger_account_id as account"])
|
|
53
|
+
.where("e.conversation_id", "=", conv.id)
|
|
54
|
+
.where("e.type", "=", "background_task_finished")
|
|
55
|
+
.where("e.seq", ">", String(consumed))
|
|
56
|
+
.where(sql `(e.payload ->> 'reported')::boolean = false`)
|
|
57
|
+
.where(sql `e.payload ->> 'stoppedBy' IS NULL`)
|
|
58
|
+
.orderBy("e.seq", "desc")
|
|
59
|
+
.limit(CANDIDATES)
|
|
60
|
+
.execute();
|
|
61
|
+
const deliveries = await t
|
|
62
|
+
.selectFrom("conversation_events as e")
|
|
63
|
+
.select(["e.seq", sql `e.payload ->> 'triggerAccountId'`.as("account")])
|
|
64
|
+
.where("e.conversation_id", "=", conv.id)
|
|
65
|
+
.where("e.type", "=", "subagent_delivery")
|
|
66
|
+
.where("e.seq", ">", String(consumed))
|
|
67
|
+
.where(sql `e.payload ->> 'status' IS DISTINCT FROM 'aborted'`)
|
|
68
|
+
.orderBy("e.seq", "desc")
|
|
69
|
+
.limit(CANDIDATES)
|
|
70
|
+
.execute();
|
|
71
|
+
const candidates = [...finishes, ...deliveries]
|
|
72
|
+
.sort((a, b) => Number(b.seq) - Number(a.seq))
|
|
73
|
+
.slice(0, CANDIDATES);
|
|
74
|
+
if (candidates.length === 0)
|
|
75
|
+
return null;
|
|
76
|
+
const org = (await readOrgSettings(t, conv.orgId)).wakeOnBackgroundTask;
|
|
77
|
+
if (!effectiveWakeOnBackgroundTask(deploymentOn, org))
|
|
78
|
+
return null;
|
|
79
|
+
const root = await t
|
|
80
|
+
.selectFrom("conversations")
|
|
81
|
+
.select(["queue_paused", "deleted_at"])
|
|
82
|
+
.where("id", "=", conv.rootId)
|
|
83
|
+
.executeTakeFirst();
|
|
84
|
+
if (!root || root.queue_paused || root.deleted_at !== null)
|
|
85
|
+
return null;
|
|
86
|
+
let boundary;
|
|
87
|
+
for (const c of candidates) {
|
|
88
|
+
if (await canSend(c.account)) {
|
|
89
|
+
boundary = { seq: Number(c.seq), triggerAccountId: c.account };
|
|
90
|
+
break;
|
|
91
|
+
}
|
|
92
|
+
}
|
|
93
|
+
if (boundary === undefined)
|
|
94
|
+
return null;
|
|
95
|
+
// the window starts when the last wake run was created (PG, so every replica reads the same)
|
|
96
|
+
const last = await t
|
|
97
|
+
.selectFrom("runs as r")
|
|
98
|
+
.innerJoin("conversation_events as w", (j) => j.onRef("w.conversation_id", "=", "r.conversation_id").onRef("w.seq", "=", "r.trigger_seq"))
|
|
99
|
+
.select([
|
|
100
|
+
sql `floor(extract(epoch from max(r.created_at)) * 1000)::bigint`.as("started"),
|
|
101
|
+
sql `floor(extract(epoch from now()) * 1000)::bigint`.as("now"),
|
|
102
|
+
])
|
|
103
|
+
.where("r.conversation_id", "=", conv.id)
|
|
104
|
+
.where("w.type", "in", WAKE_EVENT_TYPES)
|
|
105
|
+
.executeTakeFirst();
|
|
106
|
+
if (last?.started != null) {
|
|
107
|
+
const windowEnd = Number(last.started) + WAKE_WINDOW_MS;
|
|
108
|
+
const now = Number(last.now);
|
|
109
|
+
if (windowEnd > now)
|
|
110
|
+
return { kind: "later", windowEnd, delayMs: windowEnd - now };
|
|
111
|
+
}
|
|
112
|
+
return { kind: "wake", ...boundary };
|
|
113
|
+
}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
import type { Logger } from "@capybara-hq/plugin-sdk";
|
|
2
|
+
import { type OnApplicationShutdown } from "@nestjs/common";
|
|
3
|
+
import { KernelEvents } from "../infra/events/kernel-events.js";
|
|
4
|
+
import { RunQueue } from "../runtime/run-queue.js";
|
|
5
|
+
/**
|
|
6
|
+
* Wakes an idle conversation when one of its background tasks finished (spec
|
|
7
|
+
* 2026-11-05-background-bash-design §3) or a sub-agent delivered to it (agent map spec §5.3).
|
|
8
|
+
* {@link BackgroundTaskFinisher} announces the committed finish (`background_task.finished`) and
|
|
9
|
+
* `SubagentDeliveries` the committed delivery (`subagent.delivered`), both in-process domain
|
|
10
|
+
* events emitted after the commit; {@link onFinished} asks the run queue for a run. The wake rules
|
|
11
|
+
* themselves (own task, not reported, the wake setting, the root's queue not paused, the trigger
|
|
12
|
+
* account can still send to the root, the 60 s window and its delayed `bg-wake` job) are applied
|
|
13
|
+
* by `RunQueue.ensureRun` in its transaction (`wakeDecisionIn`, ./wake-rules.ts), so a run's end,
|
|
14
|
+
* the delayed job and a page opening apply the same rules; a lost event is re-derived by the next
|
|
15
|
+
* of them. Provided by `RuntimeModule`.
|
|
16
|
+
*/
|
|
17
|
+
export declare class BackgroundWake implements OnApplicationShutdown {
|
|
18
|
+
private readonly runs;
|
|
19
|
+
private readonly log;
|
|
20
|
+
/** Drops the subscriptions (the events may outlive this instance). */
|
|
21
|
+
private readonly unsubscribe;
|
|
22
|
+
constructor(runs: Pick<RunQueue, "ensureRun">, events: KernelEvents, log: Pick<Logger, "warn">);
|
|
23
|
+
/**
|
|
24
|
+
* A task of `conversationId` finished, or a sub-agent delivered to it (after the commit): starts
|
|
25
|
+
* a wake run when the rules allow it, or schedules one at the end of the wake window. A run in
|
|
26
|
+
* progress absorbs the event at its next step instead, or its end starts the wake. Never throws.
|
|
27
|
+
*/
|
|
28
|
+
onFinished(conversationId: string): Promise<void>;
|
|
29
|
+
onApplicationShutdown(): void;
|
|
30
|
+
}
|
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
|
2
|
+
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
3
|
+
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
4
|
+
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
5
|
+
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
6
|
+
};
|
|
7
|
+
var __param = (this && this.__param) || function (paramIndex, decorator) {
|
|
8
|
+
return function (target, key) { decorator(target, key, paramIndex); }
|
|
9
|
+
};
|
|
10
|
+
import { Inject, Injectable } from "@nestjs/common";
|
|
11
|
+
import { KernelEvents } from "../infra/events/kernel-events.js";
|
|
12
|
+
import { KERNEL_LOGGER } from "../infra/tokens.js";
|
|
13
|
+
import { RunQueue } from "../runtime/run-queue.js";
|
|
14
|
+
/**
|
|
15
|
+
* Wakes an idle conversation when one of its background tasks finished (spec
|
|
16
|
+
* 2026-11-05-background-bash-design §3) or a sub-agent delivered to it (agent map spec §5.3).
|
|
17
|
+
* {@link BackgroundTaskFinisher} announces the committed finish (`background_task.finished`) and
|
|
18
|
+
* `SubagentDeliveries` the committed delivery (`subagent.delivered`), both in-process domain
|
|
19
|
+
* events emitted after the commit; {@link onFinished} asks the run queue for a run. The wake rules
|
|
20
|
+
* themselves (own task, not reported, the wake setting, the root's queue not paused, the trigger
|
|
21
|
+
* account can still send to the root, the 60 s window and its delayed `bg-wake` job) are applied
|
|
22
|
+
* by `RunQueue.ensureRun` in its transaction (`wakeDecisionIn`, ./wake-rules.ts), so a run's end,
|
|
23
|
+
* the delayed job and a page opening apply the same rules; a lost event is re-derived by the next
|
|
24
|
+
* of them. Provided by `RuntimeModule`.
|
|
25
|
+
*/
|
|
26
|
+
let BackgroundWake = class BackgroundWake {
|
|
27
|
+
runs;
|
|
28
|
+
log;
|
|
29
|
+
/** Drops the subscriptions (the events may outlive this instance). */
|
|
30
|
+
unsubscribe;
|
|
31
|
+
constructor(runs, events, log) {
|
|
32
|
+
this.runs = runs;
|
|
33
|
+
this.log = log;
|
|
34
|
+
this.unsubscribe = [
|
|
35
|
+
events.on("background_task.finished", ({ conversationId }) => this.onFinished(conversationId)),
|
|
36
|
+
events.on("subagent.delivered", ({ conversationId }) => this.onFinished(conversationId)),
|
|
37
|
+
];
|
|
38
|
+
}
|
|
39
|
+
/**
|
|
40
|
+
* A task of `conversationId` finished, or a sub-agent delivered to it (after the commit): starts
|
|
41
|
+
* a wake run when the rules allow it, or schedules one at the end of the wake window. A run in
|
|
42
|
+
* progress absorbs the event at its next step instead, or its end starts the wake. Never throws.
|
|
43
|
+
*/
|
|
44
|
+
async onFinished(conversationId) {
|
|
45
|
+
try {
|
|
46
|
+
await this.runs.ensureRun(conversationId);
|
|
47
|
+
}
|
|
48
|
+
catch (err) {
|
|
49
|
+
this.log.warn("background wake failed", { conversationId, err });
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
onApplicationShutdown() {
|
|
53
|
+
for (const off of this.unsubscribe)
|
|
54
|
+
off();
|
|
55
|
+
}
|
|
56
|
+
};
|
|
57
|
+
BackgroundWake = __decorate([
|
|
58
|
+
Injectable(),
|
|
59
|
+
__param(0, Inject(RunQueue)),
|
|
60
|
+
__param(1, Inject(KernelEvents)),
|
|
61
|
+
__param(2, Inject(KERNEL_LOGGER))
|
|
62
|
+
], BackgroundWake);
|
|
63
|
+
export { BackgroundWake };
|
|
@@ -1,10 +1,11 @@
|
|
|
1
1
|
import type { FastifyReply } from "fastify";
|
|
2
2
|
import { z } from "zod";
|
|
3
|
-
import type { AdminExtensionView } from "../extensions/permission-view.js";
|
|
4
3
|
import { type Principal } from "../identity/principal.js";
|
|
5
4
|
import { type CatalogItemDetail, type CatalogItemView, CatalogService, type PermissionsMismatch } from "./catalog.service.js";
|
|
5
|
+
import { CatalogScopeService, type ScopePreview } from "./catalog-scope.service.js";
|
|
6
6
|
import { OrgCatalogService } from "./org-catalog.service.js";
|
|
7
7
|
import { type PluginConfirmResult, PluginImport, type PluginReview } from "./plugin-import.js";
|
|
8
|
+
import { PlatformPluginUpdater, type PlatformUpdatePreview, type PlatformUpdateResult } from "./plugin-upgrade.js";
|
|
8
9
|
declare const NpmBody: z.ZodObject<{
|
|
9
10
|
package: z.ZodString;
|
|
10
11
|
version: z.ZodOptional<z.ZodString>;
|
|
@@ -14,21 +15,42 @@ declare const GitBody: z.ZodObject<{
|
|
|
14
15
|
ref: z.ZodOptional<z.ZodString>;
|
|
15
16
|
path: z.ZodOptional<z.ZodString>;
|
|
16
17
|
}, z.core.$strict>;
|
|
17
|
-
declare const PolicyBody: z.ZodObject<{
|
|
18
|
-
policy: z.ZodEnum<{
|
|
19
|
-
allow: "allow";
|
|
20
|
-
disabled: "disabled";
|
|
21
|
-
needs_approval: "needs_approval";
|
|
22
|
-
}>;
|
|
23
|
-
}, z.core.$strip>;
|
|
24
|
-
declare const InstallBody: z.ZodObject<{
|
|
25
|
-
version: z.ZodString;
|
|
26
|
-
}, z.core.$strip>;
|
|
27
18
|
declare const ConfirmBody: z.ZodObject<{
|
|
28
19
|
reviewHash: z.ZodString;
|
|
29
|
-
|
|
20
|
+
scope: z.ZodOptional<z.ZodEnum<{
|
|
21
|
+
all: "all";
|
|
22
|
+
named: "named";
|
|
23
|
+
optional: "optional";
|
|
24
|
+
}>>;
|
|
25
|
+
orgs: z.ZodOptional<z.ZodArray<z.ZodString>>;
|
|
30
26
|
pinnedSuggestions: z.ZodOptional<z.ZodArray<z.ZodString>>;
|
|
31
|
-
}, z.core.$
|
|
27
|
+
}, z.core.$strict>;
|
|
28
|
+
/** `{ scope, orgs? }` (a scope change) or `{ disabled: true }` (a disable), not both. */
|
|
29
|
+
declare const ScopePreviewBody: z.ZodObject<{
|
|
30
|
+
scope: z.ZodOptional<z.ZodEnum<{
|
|
31
|
+
all: "all";
|
|
32
|
+
named: "named";
|
|
33
|
+
optional: "optional";
|
|
34
|
+
}>>;
|
|
35
|
+
orgs: z.ZodOptional<z.ZodArray<z.ZodString>>;
|
|
36
|
+
disabled: z.ZodOptional<z.ZodLiteral<true>>;
|
|
37
|
+
}, z.core.$strict>;
|
|
38
|
+
declare const ScopeBody: z.ZodObject<{
|
|
39
|
+
scope: z.ZodEnum<{
|
|
40
|
+
all: "all";
|
|
41
|
+
named: "named";
|
|
42
|
+
optional: "optional";
|
|
43
|
+
}>;
|
|
44
|
+
orgs: z.ZodOptional<z.ZodArray<z.ZodString>>;
|
|
45
|
+
scopeHash: z.ZodString;
|
|
46
|
+
}, z.core.$strict>;
|
|
47
|
+
declare const DisabledBody: z.ZodObject<{
|
|
48
|
+
disabled: z.ZodBoolean;
|
|
49
|
+
scopeHash: z.ZodOptional<z.ZodString>;
|
|
50
|
+
}, z.core.$strict>;
|
|
51
|
+
declare const ShownBody: z.ZodObject<{
|
|
52
|
+
shownToOthers: z.ZodBoolean;
|
|
53
|
+
}, z.core.$strict>;
|
|
32
54
|
declare const ListQuery: z.ZodObject<{
|
|
33
55
|
includeDeleted: z.ZodOptional<z.ZodEnum<{
|
|
34
56
|
false: "false";
|
|
@@ -36,18 +58,38 @@ declare const ListQuery: z.ZodObject<{
|
|
|
36
58
|
}>>;
|
|
37
59
|
limit: z.ZodOptional<z.ZodCoercedNumber<unknown>>;
|
|
38
60
|
offset: z.ZodOptional<z.ZodCoercedNumber<unknown>>;
|
|
61
|
+
pending: z.ZodOptional<z.ZodEnum<{
|
|
62
|
+
false: "false";
|
|
63
|
+
true: "true";
|
|
64
|
+
}>>;
|
|
39
65
|
}, z.core.$strip>;
|
|
66
|
+
declare const ConfirmPermissionsBody: z.ZodObject<{
|
|
67
|
+
permissionsHash: z.ZodString;
|
|
68
|
+
}, z.core.$strict>;
|
|
69
|
+
/** The reason shown to the owner org in its `upload_rejected` notice (optional). */
|
|
70
|
+
declare const RejectBody: z.ZodObject<{
|
|
71
|
+
reason: z.ZodOptional<z.ZodString>;
|
|
72
|
+
}, z.core.$strict>;
|
|
73
|
+
declare const UpdatePreviewBody: z.ZodObject<{
|
|
74
|
+
version: z.ZodString;
|
|
75
|
+
}, z.core.$strict>;
|
|
76
|
+
declare const UpdateBody: z.ZodObject<{
|
|
77
|
+
version: z.ZodString;
|
|
78
|
+
diffHash: z.ZodString;
|
|
79
|
+
}, z.core.$strict>;
|
|
40
80
|
/**
|
|
41
|
-
* The
|
|
42
|
-
* prepare, then confirm), the item list and detail,
|
|
43
|
-
*
|
|
81
|
+
* The platform catalog (`/api/v1/admin/catalog/*`, super admins): plugin import (upload / npm
|
|
82
|
+
* prepare, then confirm, which installs the plugin's extension), the item list and detail, scope and
|
|
83
|
+
* disable (previewed, then confirmed with `scopeHash`), delete. Writes re-check the super admin inside the service's lock and are
|
|
44
84
|
* audited.
|
|
45
85
|
*/
|
|
46
86
|
export declare class AdminCatalogController {
|
|
47
87
|
private readonly catalog;
|
|
48
88
|
private readonly pluginImport;
|
|
49
89
|
private readonly orgCatalog;
|
|
50
|
-
|
|
90
|
+
private readonly scope;
|
|
91
|
+
private readonly updater;
|
|
92
|
+
constructor(catalog: CatalogService, pluginImport: PluginImport, orgCatalog: OrgCatalogService, scope: CatalogScopeService, updater: PlatformPluginUpdater);
|
|
51
93
|
/**
|
|
52
94
|
* Prepares the import of an uploaded plugin (an npm-pack tgz as the raw body,
|
|
53
95
|
* `application/octet-stream`, at most `packages.maxBytes`): reads and checks the whole plugin
|
|
@@ -97,11 +139,13 @@ export declare class AdminCatalogController {
|
|
|
97
139
|
permissionsMismatch?: PermissionsMismatch;
|
|
98
140
|
}>;
|
|
99
141
|
/**
|
|
100
|
-
* Confirms a staged import: approves the plugin's extension when this import installs
|
|
101
|
-
* its snapshot)
|
|
102
|
-
*
|
|
103
|
-
*
|
|
104
|
-
*
|
|
142
|
+
* Confirms a staged import: approves the plugin's extension when this import installs or upgrades
|
|
143
|
+
* it (writes its snapshot), creates the item (with `scope`, default `optional`; `orgs` only with
|
|
144
|
+
* `named`, each an existing org, else 400 `validation_failed`) or adds the version, installs and
|
|
145
|
+
* enables the plugin's own extension after the commit and enqueues the item's scope sync; returns
|
|
146
|
+
* `{ item, deploy }`, where `deploy` says enabled / failed (+ code), null without an extension to
|
|
147
|
+
* deploy; a failed deploy does not make the committed import fail (retry from the extension admin
|
|
148
|
+
* by sha256). An unknown field (the removed `deployExtension`) -> 400 `validation_failed`. A foreseeable failure (a downgrade to a version with
|
|
105
149
|
* unrun migrations) is a 409 `extension.downgrade_unsupported` before anything is written.
|
|
106
150
|
* Staging missing or expired -> 404 `plugin.staging_not_found`; `reviewHash` differs or the
|
|
107
151
|
* extension on the deployment changed -> 409 `plugin.review_stale`. `pinnedSuggestions` (skill
|
|
@@ -129,15 +173,70 @@ export declare class AdminCatalogController {
|
|
|
129
173
|
* `sendCatalogIcon`). No icon -> 404 `catalog.icon_not_found`.
|
|
130
174
|
*/
|
|
131
175
|
icon(id: string, reply: FastifyReply): Promise<void>;
|
|
132
|
-
/** 改策略(allow / needs_approval / disabled)。 */
|
|
133
|
-
setPolicy(principal: Principal, id: string, body: z.infer<typeof PolicyBody>): Promise<CatalogItemView>;
|
|
134
|
-
/** 删除条目(软删除,已安装的组件不受影响)。 */
|
|
135
|
-
remove(principal: Principal, id: string): Promise<void>;
|
|
136
176
|
/**
|
|
137
|
-
*
|
|
138
|
-
*
|
|
139
|
-
* `
|
|
177
|
+
* What a scope change (`{ scope, orgs? }`, `orgs` only with `named`) or a disable
|
|
178
|
+
* (`{ disabled: true }`) would take away: `{ affected: [{ orgId, orgName, agents,
|
|
179
|
+
* connectorsKept }], needsConfig, scopeHash }` (spec §5 rule 8; nothing written; the connectors
|
|
180
|
+
* stay as the orgs' own). A builtin item -> 409 `plugin.builtin`; unknown
|
|
181
|
+
* orgs -> 400 `validation_failed`.
|
|
182
|
+
*/
|
|
183
|
+
previewScope(id: string, body: z.infer<typeof ScopePreviewBody>): Promise<ScopePreview>;
|
|
184
|
+
/**
|
|
185
|
+
* Changes the scope, confirmed with the preview's `scopeHash` (recomputed under the item row lock;
|
|
186
|
+
* a difference -> 409 `plugin.scope_stale`); bumps the scope version, audits
|
|
187
|
+
* `catalog.scope_changed` and enqueues the scope sync. Builtin -> 409 `plugin.builtin`.
|
|
188
|
+
*/
|
|
189
|
+
setScope(principal: Principal, id: string, body: z.infer<typeof ScopeBody>): Promise<CatalogItemView>;
|
|
190
|
+
/**
|
|
191
|
+
* Disables the plugin on the whole deployment (`scopeHash` of the `{ disabled: true }` preview
|
|
192
|
+
* required; the scope sync then uninstalls it everywhere, its scope and the org switches are kept)
|
|
193
|
+
* or enables it again (no hash; the sync reinstalls where it is wanted). Builtin -> 409
|
|
194
|
+
* `plugin.builtin`; a stale hash -> 409 `plugin.scope_stale`.
|
|
195
|
+
*/
|
|
196
|
+
setDisabled(principal: Principal, id: string, body: z.infer<typeof DisabledBody>): Promise<CatalogItemView>;
|
|
197
|
+
/**
|
|
198
|
+
* Confirms the item's extension permissions (the admin's 待确认; body `{ permissionsHash }` from
|
|
199
|
+
* the item view): approves the current permission set (snapshot source `web`) and installs and
|
|
200
|
+
* enables an extension that was never deployed. A changed set -> 409 `extension.approval_stale`;
|
|
201
|
+
* nothing to confirm -> 409 `extension.not_pending`. Returns the item. An org's upload
|
|
202
|
+
* (`owner.kind` org, ruling P3-10): the digest of its pending version's package; a first version
|
|
203
|
+
* is installed, approved, enabled and synced, a new version applied by the platform update
|
|
204
|
+
* (the item removed meanwhile -> 409 `catalog.item_removed`, P3-21).
|
|
140
205
|
*/
|
|
141
|
-
|
|
206
|
+
confirmPermissions(principal: Principal, id: string, body: z.infer<typeof ConfirmPermissionsBody>): Promise<CatalogItemView>;
|
|
207
|
+
/**
|
|
208
|
+
* Rejects an org upload's pending version (ruling P3-10; body `{ reason? }`, told to the owner
|
|
209
|
+
* org in `upload_rejected`): a first version is removed (its name free again), a new version's
|
|
210
|
+
* pending state cleared. Nothing pending, or a platform item (pre-flight F11) -> 409
|
|
211
|
+
* `extension.not_pending`. 204.
|
|
212
|
+
*/
|
|
213
|
+
reject(principal: Principal, id: string, body: z.infer<typeof RejectBody>): Promise<void>;
|
|
214
|
+
/**
|
|
215
|
+
* Whether orgs outside a `named` item's list see it as requestable (spec §5.1 rule 1). Hiding it
|
|
216
|
+
* keeps pending requests as they are; new requests from unlisted orgs are then 404. Never makes
|
|
217
|
+
* anything usable, so no preview and no scope sync. Audits `catalog.shown_changed`.
|
|
218
|
+
*/
|
|
219
|
+
setShown(principal: Principal, id: string, body: z.infer<typeof ShownBody>): Promise<CatalogItemView>;
|
|
220
|
+
/**
|
|
221
|
+
* What updating the platform plugin to `version` would do (spec §7.1, `PlatformPluginUpdater`):
|
|
222
|
+
* `{ itemId, name, from, to, components: [{ kind, id, name, change: added | removed | upgrade |
|
|
223
|
+
* downgrade | same, from, to, updatedOnOwn, ownScope, pinnedOrgs, kept? }], extension,
|
|
224
|
+
* connectorOrgs: [{ orgId, connectors, needsConfig }], diffHash }`. Nothing written. The same
|
|
225
|
+
* version, a target the deployment's extension or a dependent plugin cannot take -> 409
|
|
226
|
+
* `plugin.upgrade_target_invalid`; an added skill named like one in use where the plugin is on
|
|
227
|
+
* -> 409 `plugin.skill_conflict`; disabled -> 403 `catalog.item_disabled`.
|
|
228
|
+
*/
|
|
229
|
+
previewUpdate(id: string, body: z.infer<typeof UpdatePreviewBody>): Promise<PlatformUpdatePreview>;
|
|
230
|
+
/**
|
|
231
|
+
* Updates the platform plugin, confirmed with the preview's `diffHash` (recomputed under the item
|
|
232
|
+
* lock; a difference -> 409 `plugin.upgrade_stale`; another update running -> 409
|
|
233
|
+
* `plugin.install_in_progress`). A failure undoes everything -> 502 `plugin.upgrade_failed`.
|
|
234
|
+
* Audits `plugin.platform_updated`. A version an org upload waits with (or an item whose first
|
|
235
|
+
* version waits) -> 409 `catalog.item_pending`: confirm it in 待确认 (pre-flight F8); the
|
|
236
|
+
* preview answers the same.
|
|
237
|
+
*/
|
|
238
|
+
update(principal: Principal, id: string, body: z.infer<typeof UpdateBody>): Promise<PlatformUpdateResult>;
|
|
239
|
+
/** 删除条目(软删除,已安装的组件不受影响)。 */
|
|
240
|
+
remove(principal: Principal, id: string): Promise<void>;
|
|
142
241
|
}
|
|
143
242
|
export {};
|