@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
|
@@ -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 { Inject, Injectable } from "@nestjs/common";
|
|
11
|
+
import { PluginScopeSyncProcessor } from "../catalog/scope-sync.js";
|
|
11
12
|
import { ChannelsProcessor } from "../channels/channels.module.js";
|
|
12
13
|
import { ChannelOutbound } from "../channels/outbound.js";
|
|
13
14
|
import { TitleQueue } from "../conversations/titles.js";
|
|
@@ -24,8 +25,8 @@ import { UsageReporter } from "../runtime/usage-report.js";
|
|
|
24
25
|
/**
|
|
25
26
|
* The worker role's parts, driven by `KernelLifecycle` at fixed points of its start order and stop
|
|
26
27
|
* phases (so they stay ordered after the extension load and before the extension host closes): the
|
|
27
|
-
* queue consumers (runs, sub-agent runs, evals, maintenance,
|
|
28
|
-
* titles) and the schedulers of the `@LockedCron` / `@LockedInterval` jobs. Provided only by
|
|
28
|
+
* queue consumers (runs, sub-agent runs, evals, maintenance, the plugin scope sync, channel
|
|
29
|
+
* deliveries, `usage.report`, titles) and the schedulers of the `@LockedCron` / `@LockedInterval` jobs. Provided only by
|
|
29
30
|
* `WorkerModule`, so a process without the worker role has none of them.
|
|
30
31
|
*/
|
|
31
32
|
let WorkerRole = class WorkerRole {
|
|
@@ -44,13 +45,14 @@ let WorkerRole = class WorkerRole {
|
|
|
44
45
|
channelsProcessor;
|
|
45
46
|
evalsProcessor;
|
|
46
47
|
maintenanceProcessor;
|
|
48
|
+
scopeProcessor;
|
|
47
49
|
/** The startup config (the roles). */
|
|
48
50
|
config;
|
|
49
51
|
/** The run worker was started: the runs phase drains it. */
|
|
50
52
|
runsStarted = false;
|
|
51
53
|
/** The eval worker was started: the runs phase drains it. */
|
|
52
54
|
evalsStarted = false;
|
|
53
|
-
constructor(config, log, intervals, scheduledRuns, runWorker, evalWorker, usageReport, titles, channelOutbound, runsProcessor, subagentRunsProcessor, usageProcessor, titleProcessor, channelsProcessor, evalsProcessor, maintenanceProcessor) {
|
|
55
|
+
constructor(config, log, intervals, scheduledRuns, runWorker, evalWorker, usageReport, titles, channelOutbound, runsProcessor, subagentRunsProcessor, usageProcessor, titleProcessor, channelsProcessor, evalsProcessor, maintenanceProcessor, scopeProcessor) {
|
|
54
56
|
this.log = log;
|
|
55
57
|
this.intervals = intervals;
|
|
56
58
|
this.scheduledRuns = scheduledRuns;
|
|
@@ -66,6 +68,7 @@ let WorkerRole = class WorkerRole {
|
|
|
66
68
|
this.channelsProcessor = channelsProcessor;
|
|
67
69
|
this.evalsProcessor = evalsProcessor;
|
|
68
70
|
this.maintenanceProcessor = maintenanceProcessor;
|
|
71
|
+
this.scopeProcessor = scopeProcessor;
|
|
69
72
|
this.config = config.get();
|
|
70
73
|
}
|
|
71
74
|
/**
|
|
@@ -92,6 +95,7 @@ let WorkerRole = class WorkerRole {
|
|
|
92
95
|
}
|
|
93
96
|
checkpoint();
|
|
94
97
|
this.maintenanceProcessor.start();
|
|
98
|
+
this.scopeProcessor.start();
|
|
95
99
|
this.channelOutbound.startWorker(this.channelsProcessor.worker);
|
|
96
100
|
this.usageReport.startWorker(this.usageProcessor.worker);
|
|
97
101
|
this.titles.startWorker(this.titleProcessor.worker);
|
|
@@ -101,6 +105,8 @@ let WorkerRole = class WorkerRole {
|
|
|
101
105
|
// The gate opens: from here on ticks run; the runOnStart jobs run once now, in the background
|
|
102
106
|
this.scheduledRuns.open();
|
|
103
107
|
this.intervals.runStartJobs();
|
|
108
|
+
// Every plugin's scope converges once per worker start (a failed or lost sync is retried)
|
|
109
|
+
this.scopeProcessor.resync();
|
|
104
110
|
}
|
|
105
111
|
/**
|
|
106
112
|
* Closes the start gate and stops the schedulers (no new tick; the runs in progress get the stop
|
|
@@ -117,9 +123,9 @@ let WorkerRole = class WorkerRole {
|
|
|
117
123
|
drainEvals(budgetMs) {
|
|
118
124
|
return this.evalsStarted ? this.evalWorker.close(budgetMs) : undefined;
|
|
119
125
|
}
|
|
120
|
-
/** Closes the maintenance queue's worker. */
|
|
121
|
-
closeMaintenance() {
|
|
122
|
-
|
|
126
|
+
/** Closes the maintenance queue's worker and the plugin scope sync's (it stops between pairs). */
|
|
127
|
+
async closeMaintenance() {
|
|
128
|
+
await Promise.all([this.maintenanceProcessor.worker.close(), this.scopeProcessor.close()]);
|
|
123
129
|
}
|
|
124
130
|
};
|
|
125
131
|
WorkerRole = __decorate([
|
|
@@ -139,6 +145,7 @@ WorkerRole = __decorate([
|
|
|
139
145
|
__param(12, Inject(TitleProcessor)),
|
|
140
146
|
__param(13, Inject(ChannelsProcessor)),
|
|
141
147
|
__param(14, Inject(EvalsProcessor)),
|
|
142
|
-
__param(15, Inject(MaintenanceProcessor))
|
|
148
|
+
__param(15, Inject(MaintenanceProcessor)),
|
|
149
|
+
__param(16, Inject(PluginScopeSyncProcessor))
|
|
143
150
|
], WorkerRole);
|
|
144
151
|
export { WorkerRole };
|
|
@@ -5,7 +5,7 @@ import type { KernelConfig } from "../config/schema.js";
|
|
|
5
5
|
* `worker`: the cron scheduler and the `@LockedInterval` scheduler (`KernelScheduleModule`, the one
|
|
6
6
|
* place `ScheduleModule.forRoot` is imported), every fixed-period job (`@LockedCron` /
|
|
7
7
|
* `@LockedInterval`, each once per tick across replicas), every queue consumer (`@Processor`: runs,
|
|
8
|
-
* sub-agent runs, `usage.report`, titles, evals, maintenance, channel deliveries) and
|
|
8
|
+
* sub-agent runs, `usage.report`, titles, evals, maintenance, channel deliveries, the plugin scope sync) and
|
|
9
9
|
* {@link WorkerRole}, which `KernelLifecycle` drives. A process without the worker role runs no cron
|
|
10
10
|
* and no BullMQ worker (the queues' producers exist on every role).
|
|
11
11
|
*/
|
|
@@ -6,19 +6,26 @@ var __decorate = (this && this.__decorate) || function (decorators, target, key,
|
|
|
6
6
|
};
|
|
7
7
|
var WorkerModule_1;
|
|
8
8
|
import { Module } from "@nestjs/common";
|
|
9
|
+
import { BackgroundModule } from "../background/background.module.js";
|
|
10
|
+
import { BackgroundTaskPollJob } from "../background/poll.job.js";
|
|
9
11
|
import { CatalogModule } from "../catalog/catalog.module.js";
|
|
10
12
|
import { CatalogJobs } from "../catalog/jobs.js";
|
|
13
|
+
import { PlatformMigration } from "../catalog/platform-migration.js";
|
|
14
|
+
import { PluginScopeWorkersModule } from "../catalog/scope-sync-workers.js";
|
|
11
15
|
import { ChannelsModule, ChannelWorkersModule } from "../channels/channels.module.js";
|
|
12
16
|
import { GatewayCheckJob } from "../channels/supervisor.js";
|
|
13
17
|
import { AttachmentsModule } from "../conversations/attachments.module.js";
|
|
14
18
|
import { AttachmentCleanupJob } from "../conversations/attachments.service.js";
|
|
19
|
+
import { EventLogModule } from "../conversations/event-log.js";
|
|
15
20
|
import { TitlesModule } from "../conversations/titles.js";
|
|
21
|
+
import { LegacySandboxCleanupJob } from "../environments/legacy-cleanup.job.js";
|
|
16
22
|
import { EvalWorkersModule } from "../evals/evals.module.js";
|
|
17
23
|
import { ExtensionsModule } from "../extensions/extensions.module.js";
|
|
18
24
|
import { PluginsReconcileJob } from "../extensions/lifecycle.js";
|
|
19
25
|
import { KernelScheduleModule } from "../infra/schedule/schedule.module.js";
|
|
20
26
|
import { DirectoryScanJob } from "../orgs/directory-sync.js";
|
|
21
27
|
import { OffboardSweepJob } from "../orgs/offboarding.js";
|
|
28
|
+
import { OrgLockModule } from "../orgs/org-lock.js";
|
|
22
29
|
import { OrgsModule } from "../orgs/orgs.module.js";
|
|
23
30
|
import { MaintenanceModule } from "../runtime/maintenance.js";
|
|
24
31
|
import { RuntimeWorkersModule } from "../runtime/run-processors.js";
|
|
@@ -37,7 +44,7 @@ import { WorkerRole } from "./worker-role.js";
|
|
|
37
44
|
* `worker`: the cron scheduler and the `@LockedInterval` scheduler (`KernelScheduleModule`, the one
|
|
38
45
|
* place `ScheduleModule.forRoot` is imported), every fixed-period job (`@LockedCron` /
|
|
39
46
|
* `@LockedInterval`, each once per tick across replicas), every queue consumer (`@Processor`: runs,
|
|
40
|
-
* sub-agent runs, `usage.report`, titles, evals, maintenance, channel deliveries) and
|
|
47
|
+
* sub-agent runs, `usage.report`, titles, evals, maintenance, channel deliveries, the plugin scope sync) and
|
|
41
48
|
* {@link WorkerRole}, which `KernelLifecycle` drives. A process without the worker role runs no cron
|
|
42
49
|
* and no BullMQ worker (the queues' producers exist on every role).
|
|
43
50
|
*/
|
|
@@ -52,6 +59,7 @@ let WorkerModule = WorkerModule_1 = class WorkerModule {
|
|
|
52
59
|
EvalWorkersModule.forRoot(config),
|
|
53
60
|
ChannelWorkersModule.forRoot(config),
|
|
54
61
|
MaintenanceModule,
|
|
62
|
+
PluginScopeWorkersModule,
|
|
55
63
|
// the domains the fixed-period jobs call
|
|
56
64
|
RuntimeModule,
|
|
57
65
|
UsageReportModule,
|
|
@@ -59,9 +67,12 @@ let WorkerModule = WorkerModule_1 = class WorkerModule {
|
|
|
59
67
|
AttachmentsModule,
|
|
60
68
|
StorageModule,
|
|
61
69
|
SandboxModule,
|
|
70
|
+
BackgroundModule,
|
|
71
|
+
EventLogModule,
|
|
62
72
|
ToolsModule,
|
|
63
73
|
CatalogModule,
|
|
64
74
|
OrgsModule,
|
|
75
|
+
OrgLockModule,
|
|
65
76
|
ExtensionsModule,
|
|
66
77
|
ChannelsModule,
|
|
67
78
|
],
|
|
@@ -71,8 +82,11 @@ let WorkerModule = WorkerModule_1 = class WorkerModule {
|
|
|
71
82
|
AttachmentCleanupJob,
|
|
72
83
|
StoragePurgeJob,
|
|
73
84
|
SandboxSweepJobs,
|
|
85
|
+
LegacySandboxCleanupJob,
|
|
86
|
+
BackgroundTaskPollJob,
|
|
74
87
|
ToolJobs,
|
|
75
88
|
CatalogJobs,
|
|
89
|
+
PlatformMigration,
|
|
76
90
|
DirectoryScanJob,
|
|
77
91
|
OffboardSweepJob,
|
|
78
92
|
PluginsReconcileJob,
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { type ContentBlock, type ModelInfo, type ModelRequest, type ParamValue } from "@capybara-hq/plugin-sdk";
|
|
2
2
|
import type { AgentDefinition } from "../../agents/definition.js";
|
|
3
|
-
import type
|
|
3
|
+
import { type ConversationEvent, type EventPayload } from "../../conversations/events.js";
|
|
4
4
|
import type { ResolvedTool } from "../../tools/registry.js";
|
|
5
5
|
/**
|
|
6
6
|
* 平台行为规范(模型可见,英文)。短而通用(spec 6 原则 5);不放时间戳、会话 ID 等会变化的内容,
|
|
@@ -54,13 +54,14 @@ export interface BuildModelRequestInput {
|
|
|
54
54
|
model: ModelInfo;
|
|
55
55
|
step: number;
|
|
56
56
|
/**
|
|
57
|
-
* loop
|
|
58
|
-
*
|
|
59
|
-
* -
|
|
57
|
+
* loop 已吸收到的位置(R31):the largest seq of the absorbable events (`user_message`,
|
|
58
|
+
* `background_task_finished` and `subagent_delivery`, {@link isAbsorbable}) the loop took. 提供时:
|
|
59
|
+
* - seq 大于它的可吸收事件不进请求(运行中途到达、尚未被吸收的插话或后台任务结束,由后续步骤吸收或触发下一轮);
|
|
60
|
+
* - 每个可吸收事件放在**吸收它的那次模型调用**的位置:日志里第一个 `request.absorbedUpToSeq`
|
|
60
61
|
* 不小于它的 `model_call` 之前(没有该字段的旧 model_call 视为吸收了它之前的全部消息),
|
|
61
62
|
* 本次请求吸收的放在末尾。于是模型看到的历史只追加(插话不会插到已发送的回复之前),
|
|
62
63
|
* 且请求可由日志 + `model_call` 精确还原。
|
|
63
|
-
* 不提供时按 seq
|
|
64
|
+
* 不提供时按 seq 原样回放全部可吸收事件。
|
|
64
65
|
*/
|
|
65
66
|
absorbedUpToSeq?: number;
|
|
66
67
|
/**
|
|
@@ -231,10 +232,13 @@ export declare function summaryText(summary: string): string;
|
|
|
231
232
|
* - messages:最近一条摘要(若有)作为首条 user 消息,其后按 seq 回放 `coversUpToSeq` 之后的
|
|
232
233
|
* `user_message` / `assistant_message`(content 原样,含 opaque;aborted 的也回放;媒体引用按
|
|
233
234
|
* {@link resolveMedia} 换成 base64 或文字占位)/ `reminder`
|
|
234
|
-
* (`role: "system"
|
|
235
|
+
* (`role: "system"`,放在它所在的位置)/ `tools_changed` (`role: "system"`, the text of {@link toolsChangedText}, at its position) /
|
|
236
|
+
* `background_task_finished`(`role: "system"`, the text of
|
|
237
|
+
* {@link renderBackgroundFinished}, placed like a user_message)/ `subagent_delivery` (likewise,
|
|
238
|
+
* the text of {@link renderSubagentDelivery});`tool_result` 事件还原为紧随其 assistant 消息之后的一条 user 消息
|
|
235
239
|
* (同一步的多个结果合并,按该 assistant 消息里 tool_call 的顺序;找不到对应调用的结果不进请求)。
|
|
236
240
|
* 其他事件不进请求。提供 `absorbedUpToSeq` 时,
|
|
237
|
-
*
|
|
241
|
+
* 尚未被吸收的可吸收事件不进请求,运行中途到达的放在吸收它的调用处(见 BuildModelRequestInput)。
|
|
238
242
|
* 只追加:新事件只会在 messages 末尾追加;唯一的前缀变化来自新的压缩摘要。
|
|
239
243
|
* `step` 与 `agentVersion` 不进请求内容(保证缓存前缀稳定),由调用方写入 `model_call` 事件。
|
|
240
244
|
*/
|
|
@@ -1,8 +1,12 @@
|
|
|
1
1
|
import { createHash } from "node:crypto";
|
|
2
2
|
import { MEDIA_LIMITS, } from "@capybara-hq/plugin-sdk";
|
|
3
|
+
import { renderBackgroundFinished } from "../../background/render.js";
|
|
4
|
+
import { isAbsorbable, } from "../../conversations/events.js";
|
|
3
5
|
import { catalogText, isAlwaysLoaded } from "../../tools/builtins/tool-search.js";
|
|
6
|
+
import { renderSubagentDelivery } from "../subagents/render.js";
|
|
4
7
|
import { LEGACY_CATALOG_HEADER, LEGACY_SKILL_TEXTS, usesLegacyToolNames } from "./legacy-text.js";
|
|
5
8
|
import { invokedSkillNames, invokedSkillsText, SKILL_TEXTS, skillsCatalogEvents, snapshotChangeText, snapshotCurrentText, snapshotSystemText, systemSkillsCatalog, } from "./skills.js";
|
|
9
|
+
import { toolsChangedText } from "./tool-changes.js";
|
|
6
10
|
/**
|
|
7
11
|
* 平台行为规范(模型可见,英文)。短而通用(spec 6 原则 5);不放时间戳、会话 ID 等会变化的内容,
|
|
8
12
|
* 保证同一 agent 版本在所有会话中 system 前缀一致、可命中提示词缓存。改动它会让所有缓存失效。
|
|
@@ -330,10 +334,13 @@ export function summaryText(summary) {
|
|
|
330
334
|
* - messages:最近一条摘要(若有)作为首条 user 消息,其后按 seq 回放 `coversUpToSeq` 之后的
|
|
331
335
|
* `user_message` / `assistant_message`(content 原样,含 opaque;aborted 的也回放;媒体引用按
|
|
332
336
|
* {@link resolveMedia} 换成 base64 或文字占位)/ `reminder`
|
|
333
|
-
* (`role: "system"
|
|
337
|
+
* (`role: "system"`,放在它所在的位置)/ `tools_changed` (`role: "system"`, the text of {@link toolsChangedText}, at its position) /
|
|
338
|
+
* `background_task_finished`(`role: "system"`, the text of
|
|
339
|
+
* {@link renderBackgroundFinished}, placed like a user_message)/ `subagent_delivery` (likewise,
|
|
340
|
+
* the text of {@link renderSubagentDelivery});`tool_result` 事件还原为紧随其 assistant 消息之后的一条 user 消息
|
|
334
341
|
* (同一步的多个结果合并,按该 assistant 消息里 tool_call 的顺序;找不到对应调用的结果不进请求)。
|
|
335
342
|
* 其他事件不进请求。提供 `absorbedUpToSeq` 时,
|
|
336
|
-
*
|
|
343
|
+
* 尚未被吸收的可吸收事件不进请求,运行中途到达的放在吸收它的调用处(见 BuildModelRequestInput)。
|
|
337
344
|
* 只追加:新事件只会在 messages 末尾追加;唯一的前缀变化来自新的压缩摘要。
|
|
338
345
|
* `step` 与 `agentVersion` 不进请求内容(保证缓存前缀稳定),由调用方写入 `model_call` 事件。
|
|
339
346
|
*/
|
|
@@ -378,7 +385,7 @@ export function buildModelRequest(input) {
|
|
|
378
385
|
lastCall = absorbedBy(e);
|
|
379
386
|
}
|
|
380
387
|
/**
|
|
381
|
-
* 第 i
|
|
388
|
+
* 第 i 个事件(可吸收事件:user_message / background_task_finished / subagent_delivery)的放置方式:
|
|
382
389
|
* - `inline`:在吸收它的调用(之后第一个 `absorbedBy ≥ seq` 的 model_call,或本次请求)之前,
|
|
383
390
|
* 没有「由未吸收它的调用生成的回复」→ 按 seq 原位回放(常规情况,与不提供 absorbedUpToSeq 时一致);
|
|
384
391
|
* - `deferred`:它之后有非空 assistant_message 是由一次没有吸收它的 model_call 生成的(它在那一步
|
|
@@ -462,8 +469,22 @@ export function buildModelRequest(input) {
|
|
|
462
469
|
const blocks = blocksOf(u.payload.content);
|
|
463
470
|
return report === undefined ? blocks : [...blocks, { type: "text", text: report }];
|
|
464
471
|
};
|
|
465
|
-
/**
|
|
472
|
+
/** 被某次模型调用跳过(运行中途到达)、尚未被吸收的可吸收事件,按 seq 升序。 */
|
|
466
473
|
let deferred = [];
|
|
474
|
+
/**
|
|
475
|
+
* An absorbable event as a request message: a user turn, or the system text of a finished task
|
|
476
|
+
* or a sub-agent's delivery.
|
|
477
|
+
*/
|
|
478
|
+
const absorbableMessage = (e) => {
|
|
479
|
+
switch (e.type) {
|
|
480
|
+
case "user_message":
|
|
481
|
+
return { role: "user", content: userBlocks(e) };
|
|
482
|
+
case "background_task_finished":
|
|
483
|
+
return { role: "system", content: renderBackgroundFinished(e.payload) };
|
|
484
|
+
case "subagent_delivery":
|
|
485
|
+
return { role: "system", content: renderSubagentDelivery(e.payload) };
|
|
486
|
+
}
|
|
487
|
+
};
|
|
467
488
|
/**
|
|
468
489
|
* 把已被吸收(seq ≤ upTo)的延后消息按 seq 顺序放进 messages,插在末尾连续的 system 提醒之前
|
|
469
490
|
* (若有)。这样某一步自己写在 model_call 之前的提醒(含收尾提醒)仍排在它所跟随的用户消息之后,
|
|
@@ -477,7 +498,7 @@ export function buildModelRequest(input) {
|
|
|
477
498
|
let at = messages.length;
|
|
478
499
|
while (at > 0 && messages[at - 1]?.role === "system")
|
|
479
500
|
at--;
|
|
480
|
-
messages.splice(at, 0, ...ready.map(
|
|
501
|
+
messages.splice(at, 0, ...ready.map(absorbableMessage));
|
|
481
502
|
};
|
|
482
503
|
/** (runId, callId) → 该调用的 tool_result 事件(同一调用只取第一个)。 */
|
|
483
504
|
const results = new Map();
|
|
@@ -521,21 +542,22 @@ export function buildModelRequest(input) {
|
|
|
521
542
|
for (const [i, e] of events.entries()) {
|
|
522
543
|
if (e.seq <= after)
|
|
523
544
|
continue;
|
|
545
|
+
if (isAbsorbable(e)) {
|
|
546
|
+
switch (absorbed === undefined ? "inline" : placement(i, e.seq)) {
|
|
547
|
+
case "inline":
|
|
548
|
+
// seq 更小的延后事件被同一次或更早的调用吸收:先放它们,保持发送顺序。
|
|
549
|
+
flush(e.seq - 1);
|
|
550
|
+
messages.push(absorbableMessage(e));
|
|
551
|
+
break;
|
|
552
|
+
case "deferred":
|
|
553
|
+
deferred.push(e);
|
|
554
|
+
break;
|
|
555
|
+
default:
|
|
556
|
+
break;
|
|
557
|
+
}
|
|
558
|
+
continue;
|
|
559
|
+
}
|
|
524
560
|
switch (e.type) {
|
|
525
|
-
case "user_message":
|
|
526
|
-
switch (absorbed === undefined ? "inline" : placement(i, e.seq)) {
|
|
527
|
-
case "inline":
|
|
528
|
-
// seq 更小的延后消息被同一次或更早的调用吸收:先放它们,保持用户消息的发送顺序。
|
|
529
|
-
flush(e.seq - 1);
|
|
530
|
-
messages.push({ role: "user", content: userBlocks(e) });
|
|
531
|
-
break;
|
|
532
|
-
case "deferred":
|
|
533
|
-
deferred.push(e);
|
|
534
|
-
break;
|
|
535
|
-
default:
|
|
536
|
-
break;
|
|
537
|
-
}
|
|
538
|
-
break;
|
|
539
561
|
case "model_call":
|
|
540
562
|
emitRaced(e.payload.request.toSeq);
|
|
541
563
|
if (absorbed !== undefined)
|
|
@@ -567,6 +589,11 @@ export function buildModelRequest(input) {
|
|
|
567
589
|
messages.push({ role: "system", content: e.payload.text });
|
|
568
590
|
reminderSeqs.push(e.seq);
|
|
569
591
|
break;
|
|
592
|
+
// the tool set changed since the previous request (tool naming spec §9.1); one covered by
|
|
593
|
+
// the summary is dropped: the request's tool list is current anyway
|
|
594
|
+
case "tools_changed":
|
|
595
|
+
messages.push({ role: "system", content: toolsChangedText(e.payload) });
|
|
596
|
+
break;
|
|
570
597
|
// hook_denied is not model-visible: the model sees only the denied tool call's tool_result
|
|
571
598
|
// (and nothing for a denied model request), so request building skips it
|
|
572
599
|
case "hook_denied":
|
|
@@ -7,6 +7,8 @@
|
|
|
7
7
|
* tools" instead). Changing it only affects snapshots written afterwards: a conversation's next
|
|
8
8
|
* run writes a new snapshot announcing the new map, and old snapshots keep their text (phase C
|
|
9
9
|
* changed the Task / Agent line, sub-agents spec §16.5; the tool-naming change shortened it to the
|
|
10
|
-
* Claude Code names, spec 2026-10-29 §6
|
|
10
|
+
* Claude Code names, spec 2026-10-29 §6; background Bash made TaskOutput and TaskStop available,
|
|
11
|
+
* spec 2026-11-05 §4.4; WebFetch and WebSearch joined the same-name list with the web tools;
|
|
12
|
+
* SendMessage joined it when it replaced `Agent` with `resume`, agent map spec §4.2).
|
|
11
13
|
*/
|
|
12
14
|
export declare const CLAUDE_CODE_TOOL_MAP: string;
|
|
@@ -7,17 +7,19 @@
|
|
|
7
7
|
* tools" instead). Changing it only affects snapshots written afterwards: a conversation's next
|
|
8
8
|
* run writes a new snapshot announcing the new map, and old snapshots keep their text (phase C
|
|
9
9
|
* changed the Task / Agent line, sub-agents spec §16.5; the tool-naming change shortened it to the
|
|
10
|
-
* Claude Code names, spec 2026-10-29 §6
|
|
10
|
+
* Claude Code names, spec 2026-10-29 §6; background Bash made TaskOutput and TaskStop available,
|
|
11
|
+
* spec 2026-11-05 §4.4; WebFetch and WebSearch joined the same-name list with the web tools;
|
|
12
|
+
* SendMessage joined it when it replaced `Agent` with `resume`, agent map spec §4.2).
|
|
11
13
|
*/
|
|
12
14
|
export const CLAUDE_CODE_TOOL_MAP = [
|
|
13
15
|
"Some skills in this conversation were written for Claude Code. Its tools Bash, Read, Write, Edit,",
|
|
14
|
-
"Glob, Grep, Skill, AskUserQuestion, ToolSearch and
|
|
16
|
+
"Glob, Grep, Skill, AskUserQuestion, ToolSearch, Agent, SendMessage, WebFetch and WebSearch have the same names here, when they are",
|
|
15
17
|
"in your tools. For the others:",
|
|
16
18
|
"- MultiEdit -> several Edit calls",
|
|
17
19
|
"- TodoWrite -> plugin__todo__write when it is in your tools; otherwise keep the task list in your replies",
|
|
18
|
-
"- Task -> Agent;
|
|
19
|
-
"- TaskOutput, TaskStop ->
|
|
20
|
-
"- Any other tool a skill names (for example
|
|
20
|
+
"- Task -> Agent; model names haiku / sonnet / opus -> fast / standard / capable",
|
|
21
|
+
"- TaskOutput -> TaskOutput, TaskStop -> TaskStop",
|
|
22
|
+
"- Any other tool a skill names (for example NotebookEdit, EnterWorktree) -> not available unless one of your tools does the same job",
|
|
21
23
|
// biome-ignore lint/suspicious/noTemplateCurlyInString: the literal Claude Code variable the model reads
|
|
22
|
-
"The sandbox tools exist only when this agent has a sandbox; without them a skill's scripts cannot run. A path such as ${CLAUDE_PLUGIN_ROOT}/skills/<name>/... means /skills/<name>/... after Skill has copied that skill into the sandbox.",
|
|
24
|
+
"The sandbox tools exist only when this agent has a sandbox; without them a skill's scripts cannot run. A path such as ${CLAUDE_PLUGIN_ROOT}/skills/<name>/... means /skills/<name>@<version-id>/... after Skill has copied that skill into the sandbox.",
|
|
23
25
|
].join("\n");
|
|
@@ -1,4 +1,7 @@
|
|
|
1
|
+
import { renderBackgroundFinished } from "../../background/render.js";
|
|
2
|
+
import { renderSubagentDelivery } from "../subagents/render.js";
|
|
1
3
|
import { latestSummary } from "./build.js";
|
|
4
|
+
import { toolsChangedText } from "./tool-changes.js";
|
|
2
5
|
/** 压缩请求的标记:放在 system 中,便于识别(model-fake 据此返回摘要)。 */
|
|
3
6
|
export const COMPACTION_MARKER = "CAPYBARA_COMPACTION";
|
|
4
7
|
/** 压缩请求的输出上限。 */
|
|
@@ -111,6 +114,16 @@ function transcriptLine(e) {
|
|
|
111
114
|
}
|
|
112
115
|
case "reminder":
|
|
113
116
|
return `System reminder: ${e.payload.text}`;
|
|
117
|
+
// a tool set change is a system message of the request (build.ts); kept in the transcript so
|
|
118
|
+
// the summary does not carry an earlier "I have no such tool" forward as current
|
|
119
|
+
case "tools_changed":
|
|
120
|
+
return `System reminder: ${toolsChangedText(e.payload)}`;
|
|
121
|
+
// a finished background task is a system message of the request (build.ts)
|
|
122
|
+
case "background_task_finished":
|
|
123
|
+
return `System reminder: ${renderBackgroundFinished(e.payload)}`;
|
|
124
|
+
// a sub-agent's delivery is a system message of the request (build.ts)
|
|
125
|
+
case "subagent_delivery":
|
|
126
|
+
return `System reminder: ${renderSubagentDelivery(e.payload)}`;
|
|
114
127
|
// phase D: a forked skill's report is user content of the request (build.ts)
|
|
115
128
|
case "skill_fork_result":
|
|
116
129
|
return `User: ${e.payload.text}`;
|
|
@@ -3,3 +3,5 @@
|
|
|
3
3
|
* 调用方先把它写成 `reminder` 事件,再由 `buildModelRequest` 按事件重建进请求。
|
|
4
4
|
*/
|
|
5
5
|
export declare function turnLimitReminder(step: number, maxSteps: number): string | null;
|
|
6
|
+
/** 所用模型不支持工具(`capabilities.tools` 为 false)时的提醒(模型可见,英文)。 */
|
|
7
|
+
export declare const TOOLS_UNSUPPORTED_REMINDER = "Tools are unavailable for this model. Answer without calling tools.";
|
|
@@ -9,3 +9,5 @@ export function turnLimitReminder(step, maxSteps) {
|
|
|
9
9
|
return null;
|
|
10
10
|
return `You are close to the step limit for this turn (step ${step} of ${maxSteps}). Wrap up and give the user your best answer now.`;
|
|
11
11
|
}
|
|
12
|
+
/** 所用模型不支持工具(`capabilities.tools` 为 false)时的提醒(模型可见,英文)。 */
|
|
13
|
+
export const TOOLS_UNSUPPORTED_REMINDER = "Tools are unavailable for this model. Answer without calling tools.";
|
|
@@ -81,11 +81,18 @@ export function sameSnapshot(a, b) {
|
|
|
81
81
|
function catalogChanges(prev, next, pinnedIds) {
|
|
82
82
|
const before = new Map(prev.map((s) => [s.id, s]));
|
|
83
83
|
const after = new Map(next.map((s) => [s.id, s]));
|
|
84
|
-
|
|
85
|
-
|
|
84
|
+
// A skill renamed under its id (the platform components migration renames a clashing org skill)
|
|
85
|
+
// reads as its old name removed and its new name added: the model calls skills by name.
|
|
86
|
+
const renamed = (s, other) => {
|
|
87
|
+
const o = other.get(s.id);
|
|
88
|
+
return o !== undefined && o.name !== s.name;
|
|
89
|
+
};
|
|
90
|
+
const added = next.filter((s) => !before.has(s.id) || renamed(s, before));
|
|
91
|
+
const removed = prev.filter((s) => !after.has(s.id) || renamed(s, after));
|
|
86
92
|
const updated = next.filter((s) => {
|
|
87
93
|
const p = before.get(s.id);
|
|
88
94
|
return (p !== undefined &&
|
|
95
|
+
p.name === s.name &&
|
|
89
96
|
!pinnedIds?.has(s.id) &&
|
|
90
97
|
(p.version !== s.version || p.description !== s.description || p.source !== s.source));
|
|
91
98
|
});
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import type { ConversationEvent, EventPayload } from "../../conversations/events.js";
|
|
2
|
+
/**
|
|
3
|
+
* Tool set changes mid-conversation (tool naming spec §9.1). The kernel resolves the tools on every
|
|
4
|
+
* step, so an extension switched on in the org, a connector set up or a sub-agent roster added
|
|
5
|
+
* changes the next request's tool list; earlier answers in the history ("I have no web search")
|
|
6
|
+
* would still contradict it. A step whose resolved set differs from the one the previous request
|
|
7
|
+
* offered logs a `tools_changed` event before its request; request building renders it at its
|
|
8
|
+
* position as a system message ({@link toolsChangedText}).
|
|
9
|
+
*/
|
|
10
|
+
export type ToolsChange = Pick<EventPayload<"tools_changed">, "added" | "removed">;
|
|
11
|
+
/**
|
|
12
|
+
* The tool set the conversation's previous model request offered, from the log alone: the last
|
|
13
|
+
* `model_call`'s `tools` and `catalog` keys (with `ToolSearch` the catalog holds the deferred
|
|
14
|
+
* tools, so the union is the whole resolved set), then any `tools_changed` logged after it (a
|
|
15
|
+
* step that logged its change and crashed before its request: the change is not logged twice).
|
|
16
|
+
* Skipped: a `model_call` without recorded tools (older logs) and a call whose tools were left out
|
|
17
|
+
* because its model has no tool support (empty, with that step's unsupported reminder): those say
|
|
18
|
+
* nothing about the resolved set. Null when no request offered a known set yet.
|
|
19
|
+
*/
|
|
20
|
+
export declare function previousToolSet(events: readonly ConversationEvent[]): Set<string> | null;
|
|
21
|
+
/**
|
|
22
|
+
* The change from the previous request's tool set to `current` (sorted names), or null: before
|
|
23
|
+
* the conversation's first request (its list is the baseline) and when nothing changed.
|
|
24
|
+
*/
|
|
25
|
+
export declare function toolSetChange(events: readonly ConversationEvent[], current: readonly string[]): ToolsChange | null;
|
|
26
|
+
/** The model-visible text of a `tools_changed` event (English). */
|
|
27
|
+
export declare function toolsChangedText(change: ToolsChange): string;
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
import { TOOLS_UNSUPPORTED_REMINDER } from "./reminders.js";
|
|
2
|
+
/**
|
|
3
|
+
* The tool set the conversation's previous model request offered, from the log alone: the last
|
|
4
|
+
* `model_call`'s `tools` and `catalog` keys (with `ToolSearch` the catalog holds the deferred
|
|
5
|
+
* tools, so the union is the whole resolved set), then any `tools_changed` logged after it (a
|
|
6
|
+
* step that logged its change and crashed before its request: the change is not logged twice).
|
|
7
|
+
* Skipped: a `model_call` without recorded tools (older logs) and a call whose tools were left out
|
|
8
|
+
* because its model has no tool support (empty, with that step's unsupported reminder): those say
|
|
9
|
+
* nothing about the resolved set. Null when no request offered a known set yet.
|
|
10
|
+
*/
|
|
11
|
+
export function previousToolSet(events) {
|
|
12
|
+
const unsupported = new Set();
|
|
13
|
+
for (const e of events) {
|
|
14
|
+
if (e.type === "reminder" && e.payload.text === TOOLS_UNSUPPORTED_REMINDER) {
|
|
15
|
+
unsupported.add(`${e.runId ?? ""}\u0000${e.payload.step}`);
|
|
16
|
+
}
|
|
17
|
+
}
|
|
18
|
+
let known = null;
|
|
19
|
+
for (const e of events) {
|
|
20
|
+
if (e.type === "model_call") {
|
|
21
|
+
const { tools, catalog } = e.payload.request;
|
|
22
|
+
if (tools === undefined)
|
|
23
|
+
continue;
|
|
24
|
+
const keys = [...tools, ...(catalog ?? [])].map((t) => t.key);
|
|
25
|
+
if (keys.length === 0 && unsupported.has(`${e.runId ?? ""}\u0000${e.payload.step}`))
|
|
26
|
+
continue;
|
|
27
|
+
known = new Set(keys);
|
|
28
|
+
}
|
|
29
|
+
else if (e.type === "tools_changed" && known !== null) {
|
|
30
|
+
for (const k of e.payload.removed)
|
|
31
|
+
known.delete(k);
|
|
32
|
+
for (const k of e.payload.added)
|
|
33
|
+
known.add(k);
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
return known;
|
|
37
|
+
}
|
|
38
|
+
/**
|
|
39
|
+
* The change from the previous request's tool set to `current` (sorted names), or null: before
|
|
40
|
+
* the conversation's first request (its list is the baseline) and when nothing changed.
|
|
41
|
+
*/
|
|
42
|
+
export function toolSetChange(events, current) {
|
|
43
|
+
const before = previousToolSet(events);
|
|
44
|
+
if (before === null)
|
|
45
|
+
return null;
|
|
46
|
+
const now = new Set(current);
|
|
47
|
+
const added = [...now].filter((k) => !before.has(k)).sort();
|
|
48
|
+
const removed = [...before].filter((k) => !now.has(k)).sort();
|
|
49
|
+
return added.length === 0 && removed.length === 0 ? null : { added, removed };
|
|
50
|
+
}
|
|
51
|
+
/** The model-visible text of a `tools_changed` event (English). */
|
|
52
|
+
export function toolsChangedText(change) {
|
|
53
|
+
const parts = ["Your tools changed."];
|
|
54
|
+
if (change.added.length > 0)
|
|
55
|
+
parts.push(`Now available: ${change.added.join(", ")}.`);
|
|
56
|
+
if (change.removed.length > 0)
|
|
57
|
+
parts.push(`No longer available: ${change.removed.join(", ")}.`);
|
|
58
|
+
parts.push("Use the current tool list; it replaces anything said earlier in this conversation about which tools you have.");
|
|
59
|
+
return parts.join(" ");
|
|
60
|
+
}
|
|
@@ -112,6 +112,8 @@ export function hookDeniedAudit(at, payload, denial) {
|
|
|
112
112
|
: {}),
|
|
113
113
|
// M-1: the named plugin is enabled but not loaded on the replica that handled the call
|
|
114
114
|
...(denial.notLoaded ? { notLoaded: true } : {}),
|
|
115
|
+
// layering spec A §6: the named plugin's effective config is not valid in the organization
|
|
116
|
+
...(denial.needsConfig ? { needsConfig: true } : {}),
|
|
115
117
|
},
|
|
116
118
|
};
|
|
117
119
|
}
|
|
@@ -32,7 +32,9 @@ export interface LangGraphLoopHooks {
|
|
|
32
32
|
* worker 崩溃后由其他副本从最近的 checkpoint 续跑(spec 4.4、Review Focus 1)。
|
|
33
33
|
*
|
|
34
34
|
* 图:`prepare → model →(tool_use)tools → prepare …`;prepare 发现步数超过上限 → `wrapUp` → 结束;
|
|
35
|
-
* prepare finding the deadline passed
|
|
35
|
+
* prepare finding the deadline passed → end; a sub-agent's run finding its tree's token budget used
|
|
36
|
+
* up → `wrapUp` (one tool-less call that hands back its findings) → end, or end at once when the
|
|
37
|
+
* run has made no step yet (nothing new to report);
|
|
36
38
|
* 模型中止或正常结束 → 结束。`durability: "sync"`:每个节点的 checkpoint 在下一个节点开始前落库。
|
|
37
39
|
*
|
|
38
40
|
* 幂等:`runModelStep` / `runFinalWrapUp` 按 (runId, step) 幂等,续跑重新执行 model 节点时若回复已在日志里,
|