@vellumai/assistant 0.8.8 → 0.8.9-dev.202606091853.fbaa2ae
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/ARCHITECTURE.md +6 -6
- package/bun.lock +2 -2
- package/docs/activation-funnel-telemetry.md +310 -0
- package/examples/plugins/echo/README.md +61 -60
- package/examples/plugins/echo/hooks/post-tool-use.ts +18 -0
- package/examples/plugins/echo/hooks/stop.ts +16 -0
- package/examples/plugins/echo/hooks/user-prompt-submit.ts +18 -0
- package/examples/plugins/echo/package.json +1 -2
- package/examples/plugins/echo/src/emit.ts +19 -0
- package/node_modules/@vellumai/skill-host-contracts/src/skill-host.ts +7 -6
- package/openapi.yaml +263 -121
- package/package.json +2 -2
- package/src/__tests__/activation-early-marking.test.ts +120 -0
- package/src/__tests__/agent-loop-callsite-precedence.test.ts +69 -14
- package/src/__tests__/agent-loop-exit-reason.test.ts +204 -144
- package/src/__tests__/agent-loop-mutable-latest-user-message.test.ts +50 -35
- package/src/__tests__/agent-loop-output-hooks.test.ts +357 -0
- package/src/__tests__/agent-loop-override-profile.test.ts +25 -6
- package/src/__tests__/agent-loop-provider-error-recording.test.ts +41 -21
- package/src/__tests__/agent-loop-thinking.test.ts +36 -20
- package/src/__tests__/agent-loop.test.ts +441 -96
- package/src/__tests__/agent-wake-disk-pressure-callsite.test.ts +14 -14
- package/src/__tests__/agent-wake-override-profile.test.ts +17 -21
- package/src/__tests__/anthropic-provider.test.ts +23 -8
- package/src/__tests__/app-builder-tool-scripts.test.ts +21 -0
- package/src/__tests__/app-control-flow.test.ts +1 -1
- package/src/__tests__/app-dir-path-guard.test.ts +1 -0
- package/src/__tests__/app-executors.test.ts +132 -0
- package/src/__tests__/approval-cascade.test.ts +6 -5
- package/src/__tests__/approval-routes-http.test.ts +4 -1
- package/src/__tests__/background-workers-disk-pressure.test.ts +1 -1
- package/src/__tests__/channel-approval-routes.test.ts +1 -1
- package/src/__tests__/channel-approvals.test.ts +1 -1
- package/src/__tests__/compaction-circuit.test.ts +258 -0
- package/src/__tests__/compaction-direct.test.ts +146 -0
- package/src/__tests__/compaction-events.test.ts +7 -7
- package/src/__tests__/compaction.benchmark.test.ts +1 -1
- package/src/__tests__/compactor-web-search-strip.test.ts +213 -0
- package/src/__tests__/context-overflow-reducer.test.ts +265 -125
- package/src/__tests__/context-window-manager-compact-retry.test.ts +121 -15
- package/src/__tests__/conversation-abort-tool-results.test.ts +7 -5
- package/src/__tests__/conversation-agent-loop-disk-pressure.test.ts +7 -10
- package/src/__tests__/conversation-agent-loop-inference-profile.test.ts +78 -119
- package/src/__tests__/conversation-agent-loop-overflow.test.ts +158 -234
- package/src/__tests__/conversation-agent-loop.test.ts +342 -623
- package/src/__tests__/conversation-clean-command.test.ts +5 -2
- package/src/__tests__/conversation-confirmation-signals.test.ts +6 -5
- package/src/__tests__/conversation-crud-inference-profile.test.ts +7 -9
- package/src/__tests__/conversation-error.test.ts +15 -1
- package/src/__tests__/conversation-history-web-search.test.ts +6 -1
- package/src/__tests__/conversation-media-retry.test.ts +1 -1
- package/src/__tests__/conversation-process-app-control-preactivation.test.ts +44 -4
- package/src/__tests__/conversation-process-callsite.test.ts +15 -15
- package/src/__tests__/conversation-provider-retry-repair.test.ts +66 -65
- package/src/__tests__/conversation-queue.test.ts +10 -10
- package/src/__tests__/conversation-runtime-assembly.test.ts +1059 -231
- package/src/__tests__/conversation-runtime-workspace.test.ts +115 -20
- package/src/__tests__/conversation-slash-queue.test.ts +7 -5
- package/src/__tests__/conversation-slash-unknown.test.ts +7 -5
- package/src/__tests__/conversation-speed-override.test.ts +11 -10
- package/src/__tests__/conversation-starter-routes.test.ts +14 -6
- package/src/__tests__/conversation-surfaces-activation-emit.test.ts +395 -0
- package/src/__tests__/conversation-surfaces-app-control.test.ts +48 -1
- package/src/__tests__/conversation-tool-setup-app-refresh.test.ts +73 -4
- package/src/__tests__/conversation-undo.test.ts +2 -2
- package/src/__tests__/conversation-workspace-cache-state.test.ts +24 -21
- package/src/__tests__/conversation-workspace-injection.test.ts +69 -7
- package/src/__tests__/conversation-workspace-tool-tracking.test.ts +15 -12
- package/src/__tests__/conversations-import-system-filter.test.ts +101 -0
- package/src/__tests__/corrected-target.test.ts +93 -0
- package/src/__tests__/credential-security-invariants.test.ts +1 -0
- package/src/__tests__/cu-unified-flow.test.ts +36 -0
- package/src/__tests__/db-acp-history.test.ts +101 -0
- package/src/__tests__/dynamic-page-surface.test.ts +31 -0
- package/src/__tests__/empty-response-hook.test.ts +1 -1
- package/src/__tests__/file-write-tool.test.ts +63 -0
- package/src/__tests__/gateway-only-guard.test.ts +17 -2
- package/src/__tests__/guardian-grant-minting.test.ts +1 -1
- package/src/__tests__/guardian-routing-invariants.test.ts +93 -4
- package/src/__tests__/handlers-user-message-approval-consumption.test.ts +1 -1
- package/src/__tests__/heartbeat-disk-pressure.test.ts +1 -0
- package/src/__tests__/heartbeat-service.test.ts +1 -0
- package/src/__tests__/history-repair-hook.test.ts +5 -1
- package/src/__tests__/host-app-control-proxy.test.ts +45 -0
- package/src/__tests__/host-app-control-routes.test.ts +1 -1
- package/src/__tests__/host-cu-routes-targeted.test.ts +3 -3
- package/src/__tests__/inference-profile-reaper.test.ts +62 -0
- package/src/__tests__/inference-profile-session-handler.test.ts +86 -0
- package/src/__tests__/injector-background-turn.test.ts +13 -23
- package/src/__tests__/injector-chain.test.ts +268 -44
- package/src/__tests__/injector-disk-pressure.test.ts +210 -52
- package/src/__tests__/injector-document-comments.test.ts +97 -114
- package/src/__tests__/injector-pkb-v2-silenced.test.ts +2 -2
- package/src/__tests__/injector-v3-suppression.test.ts +4 -4
- package/src/__tests__/list-messages-client-message-id.test.ts +91 -0
- package/src/__tests__/list-messages-hidden-metadata.test.ts +38 -0
- package/src/__tests__/llm-resolver.test.ts +73 -0
- package/src/__tests__/memory-retrieval-hook.test.ts +156 -38
- package/src/__tests__/memory-v2-static-injector.test.ts +86 -8
- package/src/__tests__/notification-decision-strategy.test.ts +3 -3
- package/src/__tests__/parallel-tool.benchmark.test.ts +35 -8
- package/src/__tests__/persist-unsendable-image-downscale.test.ts +145 -0
- package/src/__tests__/persist-unsendable-image.test.ts +97 -1
- package/src/__tests__/plugin-api-shim.test.ts +6 -9
- package/src/__tests__/plugin-bootstrap.test.ts +91 -81
- package/src/__tests__/plugin-registry.test.ts +3 -49
- package/src/__tests__/plugin-skill-contribution.test.ts +15 -14
- package/src/__tests__/plugin-tool-contribution.test.ts +7 -4
- package/src/__tests__/plugin-types.test.ts +0 -70
- package/src/__tests__/post-turn-tool-result-truncation.test.ts +69 -0
- package/src/__tests__/pre-model-call-sanitize.test.ts +109 -0
- package/src/__tests__/published-app-updater.test.ts +138 -0
- package/src/__tests__/reaction-persistence.test.ts +1 -1
- package/src/__tests__/send-endpoint-busy.test.ts +4 -1
- package/src/__tests__/skill-feature-flags-integration.test.ts +31 -0
- package/src/__tests__/steer-tool-repair.test.ts +1 -1
- package/src/__tests__/subagent-call-site-routing.test.ts +1 -1
- package/src/__tests__/subagent-detail.test.ts +25 -7
- package/src/__tests__/subagent-fork-notifications.test.ts +1 -3
- package/src/__tests__/subagent-fork-spawn.test.ts +1 -1
- package/src/__tests__/subagent-manager-notify.test.ts +1 -3
- package/src/__tests__/subagent-notify-parent.test.ts +1 -3
- package/src/__tests__/subagent-spawn-tool-fork.test.ts +1 -1
- package/src/__tests__/title-generate-hook.test.ts +5 -1
- package/src/__tests__/tool-error-hook.test.ts +1 -1
- package/src/__tests__/tool-result-truncate-hook.test.ts +1 -1
- package/src/__tests__/user-plugin-loader.test.ts +54 -286
- package/src/__tests__/web-fetch.test.ts +45 -0
- package/src/acp/__tests__/agent-process.test.ts +161 -0
- package/src/acp/__tests__/client-handler.test.ts +40 -0
- package/src/acp/__tests__/helpers/acp-config-stub.ts +0 -2
- package/src/acp/__tests__/helpers/acp-history-db.ts +82 -0
- package/src/acp/__tests__/helpers/exec-file-stub.ts +106 -0
- package/src/acp/__tests__/prepare-agent-env.test.ts +97 -0
- package/src/acp/__tests__/session-manager-persistence.test.ts +95 -28
- package/src/acp/__tests__/session-manager-resume.test.ts +888 -0
- package/src/acp/agent-process.ts +61 -1
- package/src/acp/auto-install.test.ts +280 -0
- package/src/acp/auto-install.ts +232 -0
- package/src/acp/client-handler.ts +31 -0
- package/src/acp/prepare-agent-env.ts +80 -27
- package/src/acp/resolve-agent.test.ts +188 -28
- package/src/acp/resolve-agent.ts +119 -42
- package/src/acp/resume-hint.ts +23 -0
- package/src/acp/session-manager.ts +507 -73
- package/src/agent/compaction-circuit.ts +60 -102
- package/src/agent/loop.ts +403 -251
- package/src/api/responses/conversation-message.ts +22 -2
- package/src/api/responses/memory-v3-selection-log.ts +19 -10
- package/src/approvals/guardian-request-resolvers.ts +27 -1
- package/src/background-wake/next-wake.ts +1 -0
- package/src/cli/commands/__tests__/memory-v3.test.ts +191 -210
- package/src/cli/commands/channel-verification-sessions.ts +6 -6
- package/src/cli/commands/db/__tests__/repair.test.ts +3 -1
- package/src/cli/commands/memory-v3.ts +57 -199
- package/src/cli/commands/plugins.ts +43 -37
- package/src/cli/lib/__tests__/install-from-github.test.ts +790 -111
- package/src/cli/lib/__tests__/plugin-catalog-cache.test.ts +196 -0
- package/src/cli/lib/__tests__/plugin-details.test.ts +381 -0
- package/src/cli/lib/__tests__/plugin-marketplace.test.ts +270 -0
- package/src/cli/lib/__tests__/search-plugins.test.ts +233 -32
- package/src/cli/lib/install-from-github.ts +797 -60
- package/src/cli/lib/plugin-catalog-cache.ts +84 -0
- package/src/cli/lib/plugin-details.ts +416 -0
- package/src/cli/lib/plugin-marketplace.ts +215 -0
- package/src/cli/lib/search-plugins.ts +201 -29
- package/src/config/__tests__/feature-flag-registry-guard.test.ts +2 -2
- package/src/config/acp-defaults.test.ts +10 -0
- package/src/config/acp-defaults.ts +9 -3
- package/src/config/acp-schema.ts +1 -7
- package/src/config/bundled-skills/acp/SKILL.md +80 -41
- package/src/config/bundled-skills/acp/TOOLS.json +4 -4
- package/src/config/bundled-skills/app-builder/SKILL.md +224 -381
- package/src/config/bundled-skills/app-builder/TOOLS.json +72 -2
- package/src/config/bundled-skills/app-builder/references/DESIGN_SYSTEM.md +48 -0
- package/src/config/bundled-skills/app-builder/references/RESPONSIVE.md +57 -0
- package/src/config/bundled-skills/app-builder/references/SLIDES.md +38 -0
- package/src/config/bundled-skills/app-builder/tools/app-list.ts +62 -0
- package/src/config/bundled-skills/app-builder/tools/app-update.ts +18 -0
- package/src/config/bundled-skills/document-editor/SKILL.md +28 -23
- package/src/config/bundled-skills/document-editor/TOOLS.json +1 -1
- package/src/config/bundled-tool-registry.ts +4 -0
- package/src/config/call-site-defaults.ts +0 -3
- package/src/config/feature-flag-registry.json +10 -16
- package/src/config/llm-resolver.ts +39 -7
- package/src/config/schemas/__tests__/memory-v3.test.ts +25 -9
- package/src/config/schemas/call-site-catalog.ts +0 -21
- package/src/config/schemas/heartbeat.ts +9 -0
- package/src/config/schemas/llm.ts +17 -3
- package/src/config/schemas/memory-v3.ts +58 -8
- package/src/config/seed-inference-profiles.ts +18 -0
- package/src/context/compactor.ts +22 -4
- package/src/context/post-turn-tool-result-truncation.ts +39 -1
- package/src/context/strip-injections.ts +8 -2
- package/src/daemon/conversation-agent-loop-handlers.ts +18 -36
- package/src/daemon/conversation-agent-loop.ts +308 -1297
- package/src/daemon/conversation-error.ts +31 -4
- package/src/daemon/conversation-history.ts +1 -1
- package/src/daemon/conversation-lifecycle.ts +11 -255
- package/src/daemon/conversation-media-retry.ts +19 -6
- package/src/daemon/conversation-messaging.ts +17 -0
- package/src/daemon/conversation-process.ts +22 -141
- package/src/daemon/conversation-queue-manager.ts +8 -0
- package/src/daemon/conversation-registry.ts +159 -0
- package/src/daemon/conversation-runtime-assembly.ts +361 -393
- package/src/daemon/conversation-store.ts +9 -90
- package/src/daemon/conversation-surfaces.ts +165 -11
- package/src/daemon/conversation-workspace.ts +17 -0
- package/src/daemon/conversation.ts +444 -62
- package/src/daemon/disk-pressure-policy.ts +0 -1
- package/src/daemon/external-plugins-bootstrap.ts +36 -46
- package/src/daemon/handlers/config-channels.ts +11 -2
- package/src/daemon/handlers/conversations.ts +3 -1
- package/src/daemon/handlers/skills.ts +4 -1
- package/src/daemon/host-app-control-proxy.ts +72 -57
- package/src/daemon/host-proxy-preactivation.ts +1 -3
- package/src/daemon/lifecycle.ts +21 -7
- package/src/daemon/persist-unsendable-image.ts +62 -25
- package/src/daemon/process-message.ts +1 -1
- package/src/daemon/server.ts +2 -0
- package/src/daemon/tool-side-effects.ts +15 -0
- package/src/daemon/wake-conversation-ops.ts +269 -0
- package/src/embedded/plugin-api.ts +2 -2
- package/src/export/__tests__/transcript-formatter.test.ts +5 -0
- package/src/heartbeat/__tests__/heartbeat-service.test.ts +3 -0
- package/src/heartbeat/heartbeat-run-store.ts +23 -1
- package/src/heartbeat/heartbeat-service.ts +26 -0
- package/src/ipc/__tests__/browser-ipc.test.ts +1 -1
- package/src/ipc/__tests__/ui-request-route.test.ts +3 -3
- package/src/ipc/skill-routes/__tests__/memory.test.ts +15 -0
- package/src/ipc/skill-routes/memory.ts +4 -2
- package/src/memory/__tests__/activation-session-store.test.ts +41 -0
- package/src/memory/__tests__/jobs-worker-v2-schedule.test.ts +87 -0
- package/src/memory/__tests__/onboarding-events-store.test.ts +80 -0
- package/src/memory/activation-session-store.ts +43 -0
- package/src/memory/conversation-crud.ts +29 -19
- package/src/memory/conversation-starter-checkpoints.ts +1 -0
- package/src/memory/db-init.ts +6 -0
- package/src/memory/job-handlers/conversation-starters.ts +13 -2
- package/src/memory/jobs/__tests__/embed-concept-page.test.ts +5 -4
- package/src/memory/jobs-worker.ts +25 -1
- package/src/memory/migrations/272-acp-session-history-cwd.ts +36 -0
- package/src/memory/migrations/273-onboarding-events-funnel-columns.ts +46 -0
- package/src/memory/migrations/274-create-activation-sessions.ts +15 -0
- package/src/memory/migrations/index.ts +3 -0
- package/src/memory/onboarding-events-store.ts +66 -18
- package/src/memory/schema/acp.ts +4 -0
- package/src/memory/schema/infrastructure.ts +13 -0
- package/src/memory/v2/__tests__/consolidation-job.test.ts +4 -97
- package/src/memory/v2/__tests__/page-store.test.ts +22 -0
- package/src/memory/v2/consolidation-job.ts +2 -63
- package/src/memory/v2/types.ts +5 -0
- package/src/messaging/providers/telegram-bot/api.ts +14 -5
- package/src/notifications/__tests__/copy-composer.test.ts +244 -0
- package/src/notifications/access-request-copy.ts +298 -0
- package/src/notifications/adapters/slack.ts +3 -3
- package/src/notifications/adapters/telegram.ts +9 -2
- package/src/notifications/copy-composer.ts +49 -267
- package/src/notifications/decision-engine.ts +16 -35
- package/src/notifications/home-feed-side-effect.ts +1 -6
- package/src/plugin-api/constants.ts +4 -0
- package/src/plugin-api/index.ts +40 -11
- package/src/plugin-api/types.ts +108 -0
- package/src/plugins/defaults/compaction/compact.ts +106 -0
- package/src/{daemon → plugins/defaults/compaction}/context-overflow-reducer.ts +250 -42
- package/src/plugins/defaults/compaction/corrected-target.ts +53 -0
- package/src/plugins/defaults/compaction/manager-store.ts +57 -0
- package/src/plugins/defaults/compaction/package.json +1 -2
- package/src/{context → plugins/defaults/compaction}/window-manager.ts +95 -25
- package/src/plugins/defaults/empty-response/package.json +0 -1
- package/src/plugins/defaults/history-repair/package.json +0 -1
- package/src/plugins/defaults/index.ts +156 -26
- package/src/plugins/defaults/memory-retrieval/hooks/post-compact.ts +100 -52
- package/src/plugins/defaults/memory-retrieval/hooks/user-prompt-submit.ts +285 -0
- package/src/plugins/defaults/memory-retrieval/injector-chain.ts +2 -2
- package/src/plugins/defaults/{injectors/register.ts → memory-retrieval/injectors.ts} +148 -73
- package/src/plugins/defaults/memory-retrieval/package.json +14 -0
- package/src/plugins/defaults/memory-retrieval/unified-turn-context.ts +223 -0
- package/src/plugins/defaults/memory-v3-shadow/__tests__/capabilities.test.ts +71 -0
- package/src/plugins/defaults/memory-v3-shadow/__tests__/dense.test.ts +181 -0
- package/src/plugins/defaults/memory-v3-shadow/__tests__/edge.test.ts +247 -0
- package/src/{memory/v3 → plugins/defaults/memory-v3-shadow}/__tests__/live-integration.test.ts +147 -134
- package/src/plugins/defaults/memory-v3-shadow/__tests__/maintain-job.test.ts +456 -0
- package/src/plugins/defaults/memory-v3-shadow/__tests__/orchestrate.test.ts +662 -0
- package/src/plugins/defaults/memory-v3-shadow/__tests__/pool-select.test.ts +306 -0
- package/src/plugins/defaults/memory-v3-shadow/__tests__/render-injection.test.ts +91 -0
- package/src/plugins/defaults/memory-v3-shadow/__tests__/section-dense-store.test.ts +402 -0
- package/src/plugins/defaults/memory-v3-shadow/__tests__/section-needle.test.ts +135 -0
- package/src/plugins/defaults/memory-v3-shadow/__tests__/sections.test.ts +125 -0
- package/src/{memory/v3 → plugins/defaults/memory-v3-shadow}/__tests__/selection-log-store.test.ts +74 -19
- package/src/plugins/defaults/memory-v3-shadow/__tests__/shadow-integration.test.ts +446 -0
- package/src/plugins/defaults/memory-v3-shadow/__tests__/shadow-plugin.test.ts +592 -0
- package/src/{memory/v3 → plugins/defaults/memory-v3-shadow}/__tests__/types.test.ts +2 -24
- package/src/plugins/defaults/memory-v3-shadow/capabilities.ts +91 -0
- package/src/plugins/defaults/memory-v3-shadow/dense.ts +97 -0
- package/src/plugins/defaults/memory-v3-shadow/edge.ts +252 -0
- package/src/plugins/defaults/memory-v3-shadow/hooks/post-compact.ts +14 -0
- package/src/plugins/defaults/memory-v3-shadow/hooks/user-prompt-submit.ts +19 -0
- package/src/plugins/defaults/memory-v3-shadow/injector.ts +76 -0
- package/src/plugins/defaults/memory-v3-shadow/maintain-job.ts +555 -0
- package/src/plugins/defaults/memory-v3-shadow/orchestrate.ts +266 -0
- package/src/plugins/defaults/memory-v3-shadow/package.json +14 -0
- package/src/plugins/defaults/memory-v3-shadow/page-content.ts +71 -0
- package/src/plugins/defaults/memory-v3-shadow/pool-select.ts +204 -0
- package/src/{memory/v3 → plugins/defaults/memory-v3-shadow}/render-injection.ts +16 -8
- package/src/plugins/defaults/memory-v3-shadow/section-dense-store.ts +236 -0
- package/src/plugins/defaults/memory-v3-shadow/section-needle.ts +200 -0
- package/src/plugins/defaults/memory-v3-shadow/sections.ts +115 -0
- package/src/plugins/defaults/memory-v3-shadow/selection-log-store.ts +156 -0
- package/src/plugins/defaults/memory-v3-shadow/shadow-plugin.ts +382 -0
- package/src/plugins/defaults/memory-v3-shadow/types.ts +92 -0
- package/src/{memory/v3 → plugins/defaults/memory-v3-shadow}/working-set.ts +4 -1
- package/src/plugins/defaults/title-generate/package.json +0 -1
- package/src/plugins/defaults/tool-error/package.json +0 -1
- package/src/plugins/defaults/tool-result-truncate/package.json +0 -1
- package/src/plugins/external-api.ts +12 -2
- package/src/plugins/pipeline.ts +6 -293
- package/src/plugins/registry.ts +9 -37
- package/src/plugins/types.ts +76 -381
- package/src/plugins/user-loader.ts +30 -127
- package/src/prompts/__tests__/system-prompt.test.ts +6 -0
- package/src/prompts/system-prompt.ts +61 -10
- package/src/prompts/templates/BOOTSTRAP-ACTIVATION-RAIL.md +71 -4
- package/src/providers/anthropic/client.ts +9 -10
- package/src/providers/inference/kimi-cjk-token-ids.ts +493 -0
- package/src/providers/inference/logit-bias.ts +55 -0
- package/src/providers/model-catalog.ts +34 -0
- package/src/providers/openai/__tests__/vision-not-supported.test.ts +75 -0
- package/src/providers/openai/chat-completions-provider.ts +44 -1
- package/src/providers/retry.ts +22 -0
- package/src/providers/types.ts +6 -0
- package/src/runtime/__tests__/agent-wake.test.ts +555 -691
- package/src/runtime/__tests__/interactive-ui.test.ts +1 -1
- package/src/runtime/agent-wake.ts +108 -209
- package/src/runtime/assistant-event-hub.ts +1 -1
- package/src/runtime/channel-approvals.ts +1 -1
- package/src/runtime/interactive-ui.ts +1 -1
- package/src/runtime/routes/__tests__/acp-routes.test.ts +466 -55
- package/src/runtime/routes/__tests__/conversation-list-routes.test.ts +1 -1
- package/src/runtime/routes/__tests__/plugins-routes.test.ts +423 -73
- package/src/runtime/routes/__tests__/stt-routes.test.ts +112 -0
- package/src/runtime/routes/__tests__/surface-action-routes.test.ts +5 -4
- package/src/runtime/routes/__tests__/surface-content-routes.test.ts +4 -1
- package/src/runtime/routes/acp-routes.test.ts +185 -32
- package/src/runtime/routes/acp-routes.ts +328 -30
- package/src/runtime/routes/app-management-routes.ts +3 -0
- package/src/runtime/routes/approval-routes.ts +1 -1
- package/src/runtime/routes/browser-routes.ts +1 -1
- package/src/runtime/routes/browser-tabs-routes.ts +6 -10
- package/src/runtime/routes/channel-verification-routes.ts +14 -5
- package/src/runtime/routes/conversation-cli-routes.ts +1 -1
- package/src/runtime/routes/conversation-list-routes.ts +1 -1
- package/src/runtime/routes/conversation-query-routes.ts +1 -1
- package/src/runtime/routes/conversation-routes.ts +30 -2
- package/src/runtime/routes/conversation-starter-routes.ts +13 -7
- package/src/runtime/routes/conversations-import-routes.ts +24 -7
- package/src/runtime/routes/host-app-control-routes.ts +1 -1
- package/src/runtime/routes/host-cu-routes.ts +1 -1
- package/src/runtime/routes/identity-routes.ts +18 -3
- package/src/runtime/routes/inbound-message-handler.ts +1 -1
- package/src/runtime/routes/inbound-stages/acl-enforcement.ts +33 -34
- package/src/runtime/routes/inference-profile-session-handler.ts +11 -0
- package/src/runtime/routes/inference-profile-session-reaper.ts +6 -0
- package/src/runtime/routes/memory-v3-routes.ts +65 -305
- package/src/runtime/routes/playground/__tests__/force-compact.test.ts +1 -1
- package/src/runtime/routes/playground/helpers.ts +1 -1
- package/src/runtime/routes/plugins-routes.ts +337 -35
- package/src/runtime/routes/stt-routes.ts +45 -12
- package/src/runtime/routes/surface-conversation-resolver.ts +4 -3
- package/src/runtime/routes/work-items-routes.ts +2 -4
- package/src/runtime/routes/workspace-routes.ts +50 -15
- package/src/runtime/services/conversation-serializer.ts +1 -1
- package/src/runtime/verification-outbound-actions.ts +147 -2
- package/src/runtime/verification-templates.ts +29 -3
- package/src/services/published-app-updater.ts +30 -8
- package/src/signals/cancel.ts +2 -4
- package/src/subagent/manager.ts +21 -5
- package/src/telemetry/__tests__/activation-funnel.test.ts +95 -0
- package/src/telemetry/activation-funnel.ts +167 -0
- package/src/telemetry/types.ts +13 -0
- package/src/telemetry/usage-telemetry-reporter.test.ts +154 -0
- package/src/telemetry/usage-telemetry-reporter.ts +26 -1
- package/src/tools/acp/context.ts +20 -0
- package/src/tools/acp/list-agents.test.ts +9 -19
- package/src/tools/acp/list-agents.ts +3 -15
- package/src/tools/acp/spawn.test.ts +173 -202
- package/src/tools/acp/spawn.ts +37 -172
- package/src/tools/acp/steer.test.ts +105 -8
- package/src/tools/acp/steer.ts +48 -17
- package/src/tools/apps/executors.ts +166 -50
- package/src/tools/browser/browser-execution.ts +12 -2
- package/src/tools/filesystem/write.ts +34 -0
- package/src/tools/network/web-fetch.ts +65 -24
- package/src/tools/skills/load.ts +1 -1
- package/src/tools/subagent/spawn.ts +2 -4
- package/src/tools/ui-surface/definitions.ts +32 -5
- package/src/workspace/migrations/051-seed-conversation-summarization-callsite.ts +4 -5
- package/src/workspace/migrations/097-enable-adaptive-thinking-managed-profiles.ts +69 -45
- package/docs/plugins.md +0 -832
- package/examples/plugins/echo/register.ts +0 -143
- package/src/__tests__/circuit-breaker-pipeline.test.ts +0 -405
- package/src/__tests__/compaction-pipeline.test.ts +0 -210
- package/src/__tests__/compaction-timeout-recovery.test.ts +0 -251
- package/src/__tests__/overflow-reduce-pipeline.test.ts +0 -667
- package/src/__tests__/pipeline-runner.test.ts +0 -554
- package/src/daemon/wake-target-adapter.ts +0 -253
- package/src/memory/v3/__tests__/assign.test.ts +0 -242
- package/src/memory/v3/__tests__/capabilities.test.ts +0 -118
- package/src/memory/v3/__tests__/core.test.ts +0 -39
- package/src/memory/v3/__tests__/health.test.ts +0 -219
- package/src/memory/v3/__tests__/maintain-job.test.ts +0 -288
- package/src/memory/v3/__tests__/needle.test.ts +0 -107
- package/src/memory/v3/__tests__/orchestrate.test.ts +0 -436
- package/src/memory/v3/__tests__/provider-blocks.test.ts +0 -13
- package/src/memory/v3/__tests__/reconcile.test.ts +0 -274
- package/src/memory/v3/__tests__/render-injection.test.ts +0 -61
- package/src/memory/v3/__tests__/router.test.ts +0 -332
- package/src/memory/v3/__tests__/selector.test.ts +0 -470
- package/src/memory/v3/__tests__/shadow-plugin.test.ts +0 -432
- package/src/memory/v3/__tests__/snapshot.test.ts +0 -168
- package/src/memory/v3/__tests__/tree.test.ts +0 -192
- package/src/memory/v3/assign.ts +0 -268
- package/src/memory/v3/capabilities.ts +0 -124
- package/src/memory/v3/core.ts +0 -26
- package/src/memory/v3/health.ts +0 -0
- package/src/memory/v3/maintain-job.ts +0 -314
- package/src/memory/v3/needle.ts +0 -115
- package/src/memory/v3/orchestrate.ts +0 -126
- package/src/memory/v3/page-content.ts +0 -34
- package/src/memory/v3/provider-blocks.ts +0 -26
- package/src/memory/v3/reconcile.ts +0 -523
- package/src/memory/v3/router.ts +0 -190
- package/src/memory/v3/selection-log-store.ts +0 -84
- package/src/memory/v3/selector.ts +0 -226
- package/src/memory/v3/shadow-plugin.ts +0 -411
- package/src/memory/v3/snapshot.ts +0 -209
- package/src/memory/v3/tree.ts +0 -174
- package/src/memory/v3/types.ts +0 -59
- package/src/notifications/__tests__/emit-signal-home-feed.test.ts +0 -187
- package/src/plugins/defaults/circuit-breaker/middlewares/circuitBreaker.ts +0 -93
- package/src/plugins/defaults/circuit-breaker/package.json +0 -15
- package/src/plugins/defaults/circuit-breaker/register.ts +0 -39
- package/src/plugins/defaults/compaction/middlewares/compaction.ts +0 -25
- package/src/plugins/defaults/compaction/register.ts +0 -35
- package/src/plugins/defaults/compaction/terminal.ts +0 -73
- package/src/plugins/defaults/empty-response/register.ts +0 -23
- package/src/plugins/defaults/history-repair/register.ts +0 -24
- package/src/plugins/defaults/memory-retrieval/hooks/user-prompt-submit-temp.ts +0 -216
- package/src/plugins/defaults/overflow-reduce/middlewares/overflowReduce.ts +0 -126
- package/src/plugins/defaults/overflow-reduce/package.json +0 -15
- package/src/plugins/defaults/overflow-reduce/register.ts +0 -42
- package/src/plugins/defaults/title-generate/register.ts +0 -35
- package/src/plugins/defaults/tool-error/register.ts +0 -23
- package/src/plugins/defaults/tool-result-truncate/register.ts +0 -24
- package/src/proactive-artifact/aux-message-injector.ts +0 -97
- package/src/proactive-artifact/decision.test.ts +0 -226
- package/src/proactive-artifact/decision.ts +0 -165
- package/src/proactive-artifact/index.ts +0 -7
- package/src/proactive-artifact/job.test.ts +0 -962
- package/src/proactive-artifact/job.ts +0 -372
- package/src/proactive-artifact/message-copy.ts +0 -58
- package/src/proactive-artifact/trigger-state.test.ts +0 -286
- package/src/proactive-artifact/trigger-state.ts +0 -123
- package/src/util/map-limit.ts +0 -27
- /package/src/{memory/v3 → plugins/defaults/memory-v3-shadow}/__tests__/fixtures/eval-turns.json +0 -0
- /package/src/{memory/v3 → plugins/defaults/memory-v3-shadow}/__tests__/fixtures/live-turns.json +0 -0
- /package/src/{memory/v3 → plugins/defaults/memory-v3-shadow}/__tests__/working-set-eviction.test.ts +0 -0
- /package/src/{memory/v3 → plugins/defaults/memory-v3-shadow}/__tests__/working-set-skeleton.test.ts +0 -0
- /package/src/{memory/v3 → plugins/defaults/memory-v3-shadow}/data/README.md +0 -0
- /package/src/{memory/v3 → plugins/defaults/memory-v3-shadow}/data/assignments.json +0 -0
- /package/src/{memory/v3 → plugins/defaults/memory-v3-shadow}/data/core.json +0 -0
- /package/src/{memory/v3 → plugins/defaults/memory-v3-shadow}/data/leaves/domain-a/topic-x.md +0 -0
- /package/src/{memory/v3 → plugins/defaults/memory-v3-shadow}/data/leaves/domain-a/topic-y.md +0 -0
- /package/src/{memory/v3 → plugins/defaults/memory-v3-shadow}/data/leaves/domain-b/topic-z.md +0 -0
- /package/src/{memory/v3 → plugins/defaults/memory-v3-shadow}/llm-retry.ts +0 -0
|
@@ -0,0 +1,285 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Default `user-prompt-submit` hook: prepares a turn's prompt before the first
|
|
3
|
+
* provider call by running memory-graph retrieval and then applying the
|
|
4
|
+
* runtime injections that assemble the turn.
|
|
5
|
+
*
|
|
6
|
+
* **Memory graph** via {@link ConversationGraphMemory.prepareMemory} —
|
|
7
|
+
* dispatches to context-load or per-turn retrieval depending on initialization
|
|
8
|
+
* state; gated on the actor being trusted (guardian). The hook owns the
|
|
9
|
+
* retrieval's side effects — persisting the injected block onto the user
|
|
10
|
+
* message's metadata, writing the recall log, and emitting the
|
|
11
|
+
* `memory_recalled` event. The PKB query-vector pair is recorded on the
|
|
12
|
+
* conversation's graph handle for the PKB-reminder injector to read back. PKB
|
|
13
|
+
* context and NOW.md are sourced directly by their injectors (gated on block
|
|
14
|
+
* presence), not produced here.
|
|
15
|
+
*
|
|
16
|
+
* **Runtime injection** via {@link applyRuntimeInjections} — runs for every
|
|
17
|
+
* actor (not just trusted ones) on the retrieved history, assembling the Slack
|
|
18
|
+
* chronological transcript, the unified `<turn_context>` block,
|
|
19
|
+
* channel/voice/transport hints, and the NOW.md / PKB / memory-v2 / workspace
|
|
20
|
+
* blocks, then persisting the assembled blocks onto the user message's metadata
|
|
21
|
+
* so they survive reloads. This is the first-call counterpart of the
|
|
22
|
+
* post-compaction hook, which re-applies the same injections after a mid-loop
|
|
23
|
+
* compaction.
|
|
24
|
+
*
|
|
25
|
+
* Registered first in the `user-prompt-submit` chain, so it heads the chain
|
|
26
|
+
* ahead of history repair and title generation: those later hooks see the
|
|
27
|
+
* fully assembled, memory-injected history.
|
|
28
|
+
*/
|
|
29
|
+
|
|
30
|
+
import type { PluginHookFn, UserPromptSubmitContext } from "@vellumai/plugin-api";
|
|
31
|
+
|
|
32
|
+
import { getConfig } from "../../../../config/loader.js";
|
|
33
|
+
import { findConversationOrSubagent } from "../../../../daemon/conversation-registry.js";
|
|
34
|
+
import {
|
|
35
|
+
applyRuntimeInjections,
|
|
36
|
+
resolveTurnInboundActorContext,
|
|
37
|
+
resolveTurnModelProfileLabel,
|
|
38
|
+
type RuntimeInjectionResult,
|
|
39
|
+
} from "../../../../daemon/conversation-runtime-assembly.js";
|
|
40
|
+
import type { MemoryRecalled } from "../../../../daemon/message-types/memory.js";
|
|
41
|
+
import { resolveTrustClass } from "../../../../daemon/trust-context.js";
|
|
42
|
+
import { updateMessageMetadata } from "../../../../memory/conversation-crud.js";
|
|
43
|
+
import { recordMemoryRecallLog } from "../../../../memory/memory-recall-log-store.js";
|
|
44
|
+
import { broadcastMessage } from "../../../../runtime/assistant-event-hub.js";
|
|
45
|
+
import type { GraphMemoryResult } from "../../../types.js";
|
|
46
|
+
|
|
47
|
+
/**
|
|
48
|
+
* Persist and broadcast the retrieval's side effects: the injected block on
|
|
49
|
+
* the user message's metadata (so it survives reloads), a recall-log row, and
|
|
50
|
+
* the `memory_recalled` debug event. All three are best-effort — a failure to
|
|
51
|
+
* persist must not abort the turn.
|
|
52
|
+
*/
|
|
53
|
+
function recordRecallSideEffects(
|
|
54
|
+
graphResult: GraphMemoryResult,
|
|
55
|
+
ctx: UserPromptSubmitContext,
|
|
56
|
+
): void {
|
|
57
|
+
// Persist the injected block text in message metadata so it survives
|
|
58
|
+
// conversation reloads (eviction, restart, fork). loadFromDb re-injects
|
|
59
|
+
// from metadata.
|
|
60
|
+
if (graphResult.injectedBlockText) {
|
|
61
|
+
try {
|
|
62
|
+
updateMessageMetadata(ctx.userMessageId, {
|
|
63
|
+
memoryInjectedBlock: graphResult.injectedBlockText,
|
|
64
|
+
});
|
|
65
|
+
} catch (err) {
|
|
66
|
+
ctx.logger.warn(
|
|
67
|
+
{ err },
|
|
68
|
+
"Failed to persist memory injection to metadata (non-fatal)",
|
|
69
|
+
);
|
|
70
|
+
}
|
|
71
|
+
}
|
|
72
|
+
|
|
73
|
+
const m = graphResult.metrics;
|
|
74
|
+
|
|
75
|
+
try {
|
|
76
|
+
recordMemoryRecallLog({
|
|
77
|
+
conversationId: ctx.conversationId,
|
|
78
|
+
enabled: true,
|
|
79
|
+
degraded: false,
|
|
80
|
+
provider: m?.embeddingProvider ?? undefined,
|
|
81
|
+
model: m?.embeddingModel ?? undefined,
|
|
82
|
+
semanticHits: m?.semanticHits ?? 0,
|
|
83
|
+
mergedCount: m?.mergedCount ?? 0,
|
|
84
|
+
selectedCount: m?.selectedCount ?? 0,
|
|
85
|
+
tier1Count: m?.tier1Count ?? 0,
|
|
86
|
+
tier2Count: m?.tier2Count ?? 0,
|
|
87
|
+
hybridSearchLatencyMs: m?.hybridSearchLatencyMs ?? 0,
|
|
88
|
+
sparseVectorUsed: m?.sparseVectorUsed ?? false,
|
|
89
|
+
injectedTokens: graphResult.injectedTokens,
|
|
90
|
+
latencyMs: graphResult.latencyMs,
|
|
91
|
+
topCandidatesJson: (m?.topCandidates ?? []).map((c) => ({
|
|
92
|
+
key: c.nodeId,
|
|
93
|
+
type: c.type,
|
|
94
|
+
kind: "graph",
|
|
95
|
+
finalScore: c.score,
|
|
96
|
+
semantic: c.semanticSimilarity,
|
|
97
|
+
recency: c.recencyBoost,
|
|
98
|
+
})),
|
|
99
|
+
injectedText: graphResult.injectedBlockText ?? undefined,
|
|
100
|
+
reason: `graph:${graphResult.mode}`,
|
|
101
|
+
queryContext: m?.queryContext ?? undefined,
|
|
102
|
+
});
|
|
103
|
+
} catch (err) {
|
|
104
|
+
ctx.logger.warn({ err }, "Failed to persist memory recall log (non-fatal)");
|
|
105
|
+
}
|
|
106
|
+
|
|
107
|
+
if (m) {
|
|
108
|
+
const memoryRecalledEvent: MemoryRecalled = {
|
|
109
|
+
type: "memory_recalled",
|
|
110
|
+
provider: m.embeddingProvider ?? "unknown",
|
|
111
|
+
model: m.embeddingModel ?? "unknown",
|
|
112
|
+
semanticHits: m.semanticHits,
|
|
113
|
+
mergedCount: m.mergedCount,
|
|
114
|
+
selectedCount: m.selectedCount,
|
|
115
|
+
tier1Count: m.tier1Count,
|
|
116
|
+
tier2Count: m.tier2Count,
|
|
117
|
+
hybridSearchLatencyMs: m.hybridSearchLatencyMs,
|
|
118
|
+
sparseVectorUsed: m.sparseVectorUsed,
|
|
119
|
+
injectedTokens: graphResult.injectedTokens,
|
|
120
|
+
latencyMs: graphResult.latencyMs,
|
|
121
|
+
topCandidates: m.topCandidates.map((c) => ({
|
|
122
|
+
key: c.nodeId,
|
|
123
|
+
type: c.type,
|
|
124
|
+
kind: "graph",
|
|
125
|
+
finalScore: c.score,
|
|
126
|
+
semantic: c.semanticSimilarity,
|
|
127
|
+
recency: c.recencyBoost,
|
|
128
|
+
})),
|
|
129
|
+
};
|
|
130
|
+
broadcastMessage(memoryRecalledEvent);
|
|
131
|
+
}
|
|
132
|
+
}
|
|
133
|
+
|
|
134
|
+
/**
|
|
135
|
+
* Persist the assembled runtime-injection blocks onto the user message's
|
|
136
|
+
* metadata so they survive conversation reloads (eviction, restart, fork) —
|
|
137
|
+
* loadFromDb re-injects from metadata. Only this first-call site persists: the
|
|
138
|
+
* mid-loop re-entry sites send identical bytes and their tail row may not
|
|
139
|
+
* correspond to `userMessageId`. All present blocks are written in a single
|
|
140
|
+
* update to avoid doubling SQLite SELECT+UPDATE work each turn. Best-effort — a
|
|
141
|
+
* persistence failure must not abort the turn.
|
|
142
|
+
*/
|
|
143
|
+
function persistInjectionBlocks(
|
|
144
|
+
blocks: RuntimeInjectionResult["blocks"],
|
|
145
|
+
ctx: UserPromptSubmitContext,
|
|
146
|
+
): void {
|
|
147
|
+
if (
|
|
148
|
+
!blocks.unifiedTurnContext &&
|
|
149
|
+
!blocks.pkbSystemReminder &&
|
|
150
|
+
!blocks.workspaceBlock &&
|
|
151
|
+
!blocks.nowScratchpadBlock &&
|
|
152
|
+
!blocks.pkbContextBlock &&
|
|
153
|
+
!blocks.memoryV2StaticBlock
|
|
154
|
+
) {
|
|
155
|
+
return;
|
|
156
|
+
}
|
|
157
|
+
try {
|
|
158
|
+
const metadataUpdates: Record<string, unknown> = {};
|
|
159
|
+
if (blocks.unifiedTurnContext) {
|
|
160
|
+
metadataUpdates.turnContextBlock = blocks.unifiedTurnContext;
|
|
161
|
+
}
|
|
162
|
+
if (blocks.pkbSystemReminder) {
|
|
163
|
+
metadataUpdates.pkbSystemReminderBlock = blocks.pkbSystemReminder;
|
|
164
|
+
}
|
|
165
|
+
if (blocks.workspaceBlock) {
|
|
166
|
+
metadataUpdates.workspaceBlock = blocks.workspaceBlock;
|
|
167
|
+
}
|
|
168
|
+
if (blocks.nowScratchpadBlock) {
|
|
169
|
+
metadataUpdates.nowScratchpadBlock = blocks.nowScratchpadBlock;
|
|
170
|
+
}
|
|
171
|
+
if (blocks.pkbContextBlock) {
|
|
172
|
+
metadataUpdates.pkbContextBlock = blocks.pkbContextBlock;
|
|
173
|
+
}
|
|
174
|
+
if (blocks.memoryV2StaticBlock) {
|
|
175
|
+
metadataUpdates.memoryV2StaticBlock = blocks.memoryV2StaticBlock;
|
|
176
|
+
}
|
|
177
|
+
updateMessageMetadata(ctx.userMessageId, metadataUpdates);
|
|
178
|
+
} catch (err) {
|
|
179
|
+
ctx.logger.warn(
|
|
180
|
+
{ err },
|
|
181
|
+
"Failed to persist injection metadata (non-fatal)",
|
|
182
|
+
);
|
|
183
|
+
}
|
|
184
|
+
}
|
|
185
|
+
|
|
186
|
+
/**
|
|
187
|
+
* Run the default retrieval and assemble the turn's prompt. Memory-graph
|
|
188
|
+
* retrieval is gated on the actor being trusted (guardian); untrusted actors
|
|
189
|
+
* skip it, leaving `latestMessages` as the seeded input. Runtime injection then
|
|
190
|
+
* runs for every actor, writing the fully injected result back onto
|
|
191
|
+
* `latestMessages` and persisting the assembled blocks.
|
|
192
|
+
*
|
|
193
|
+
* Memory retrieval blocks the turn — there is no soft timeout here. Memory is
|
|
194
|
+
* critical context, and silently dropping it produces a worse outcome than a
|
|
195
|
+
* slower turn. Cancellation still works via `ctx.signal`, which is threaded
|
|
196
|
+
* into `prepareMemory`.
|
|
197
|
+
*/
|
|
198
|
+
const userPromptSubmitMemoryRetrieval: PluginHookFn<
|
|
199
|
+
UserPromptSubmitContext
|
|
200
|
+
> = async (ctx) => {
|
|
201
|
+
// The conversation-scoped retrieval state — graph handle, abort signal, and
|
|
202
|
+
// trust class — is resolved from the live conversation by id rather than
|
|
203
|
+
// threaded in, mirroring how `applyRuntimeInjections` self-resolves its
|
|
204
|
+
// per-turn inputs.
|
|
205
|
+
const conversation = findConversationOrSubagent(ctx.conversationId);
|
|
206
|
+
const config = getConfig();
|
|
207
|
+
const abortSignal = conversation?.abortController?.signal;
|
|
208
|
+
const isTrustedActor =
|
|
209
|
+
resolveTrustClass(conversation?.trustContext) === "guardian";
|
|
210
|
+
const actorContext = resolveTurnInboundActorContext(
|
|
211
|
+
conversation?.trustContext,
|
|
212
|
+
conversation?.assistantId,
|
|
213
|
+
);
|
|
214
|
+
|
|
215
|
+
if (conversation && isTrustedActor && abortSignal) {
|
|
216
|
+
// Retrieval progress (`memory_status`) and the `memory_recalled` summary
|
|
217
|
+
// publish to the shared `broadcastMessage` hub — the sink every turn
|
|
218
|
+
// publisher converges to — rather than a threaded event callback. This
|
|
219
|
+
// keeps any raw client-emit capability off the hook contract.
|
|
220
|
+
const graphResult = await conversation.graphMemory.prepareMemory(
|
|
221
|
+
ctx.latestMessages,
|
|
222
|
+
config,
|
|
223
|
+
abortSignal,
|
|
224
|
+
broadcastMessage,
|
|
225
|
+
);
|
|
226
|
+
|
|
227
|
+
recordRecallSideEffects(graphResult, ctx);
|
|
228
|
+
|
|
229
|
+
ctx.latestMessages = graphResult.runMessages;
|
|
230
|
+
// Select dense+sparse as a matched pair so RRF fusion combines two signals
|
|
231
|
+
// aligned to the same query text:
|
|
232
|
+
// 1. Context-load with a user query: user-query dense + user-query sparse
|
|
233
|
+
// — the cleanest pairing.
|
|
234
|
+
// 2. Otherwise (context-load without a user query, or per-turn): whatever
|
|
235
|
+
// `queryVector` / `sparseVector` the retriever produced, which are
|
|
236
|
+
// themselves co-aligned (both summary-derived in context-load, both
|
|
237
|
+
// user-last-message-derived in per-turn).
|
|
238
|
+
// Never pair a user-query dense with a summary-aligned sparse.
|
|
239
|
+
// The PKB-reminder injector reads this pair back off the same graph handle
|
|
240
|
+
// (looked up by conversation id) rather than receiving it threaded through
|
|
241
|
+
// the agent loop.
|
|
242
|
+
if (graphResult.userQueryVector) {
|
|
243
|
+
conversation.graphMemory.recordPkbQueryVectors(
|
|
244
|
+
graphResult.userQueryVector,
|
|
245
|
+
graphResult.userQuerySparseVector,
|
|
246
|
+
);
|
|
247
|
+
} else {
|
|
248
|
+
conversation.graphMemory.recordPkbQueryVectors(
|
|
249
|
+
graphResult.queryVector,
|
|
250
|
+
graphResult.sparseVector,
|
|
251
|
+
);
|
|
252
|
+
}
|
|
253
|
+
}
|
|
254
|
+
|
|
255
|
+
// Runtime injection assembles the turn's prompt onto the retrieved history.
|
|
256
|
+
// It runs for every actor (untrusted actors skip only the memory-graph step
|
|
257
|
+
// above). `applyRuntimeInjections` self-resolves every per-turn injection
|
|
258
|
+
// input — the Slack chronological transcript, the unified `<turn_context>`
|
|
259
|
+
// block, channel/voice/transport hints, and the turn's trust/index/call-site
|
|
260
|
+
// — from the live conversation, so we hand in only the request id and
|
|
261
|
+
// conversation id plus the field resolved once at turn start
|
|
262
|
+
// (`isNonInteractive`). The `model_profile` label is rendered here from the
|
|
263
|
+
// turn's resolved profile key, using the call site self-resolved from the
|
|
264
|
+
// live conversation. The unified `<turn_context>` actor input is
|
|
265
|
+
// self-resolved from the live conversation's trust context. This first-call
|
|
266
|
+
// assembly always runs at `"full"` volume; overflow reduction only downgrades
|
|
267
|
+
// the mode on later re-injection.
|
|
268
|
+
const modelProfile = resolveTurnModelProfileLabel(
|
|
269
|
+
ctx.modelProfileKey,
|
|
270
|
+
conversation?.currentCallSite ?? "mainAgent",
|
|
271
|
+
config.llm,
|
|
272
|
+
);
|
|
273
|
+
const injection = await applyRuntimeInjections(ctx.latestMessages, {
|
|
274
|
+
isNonInteractive: ctx.isNonInteractive,
|
|
275
|
+
modelProfile,
|
|
276
|
+
actorContext,
|
|
277
|
+
mode: "full",
|
|
278
|
+
requestId: ctx.requestId,
|
|
279
|
+
conversationId: ctx.conversationId,
|
|
280
|
+
});
|
|
281
|
+
ctx.latestMessages = injection.messages;
|
|
282
|
+
persistInjectionBlocks(injection.blocks, ctx);
|
|
283
|
+
};
|
|
284
|
+
|
|
285
|
+
export default userPromptSubmitMemoryRetrieval;
|
|
@@ -18,9 +18,9 @@
|
|
|
18
18
|
* ordering assumptions about when `defaultInjectors` finishes initializing.
|
|
19
19
|
*/
|
|
20
20
|
|
|
21
|
-
import { memoryV3Injector } from "../../../memory/v3/shadow-plugin.js";
|
|
22
21
|
import type { Injector } from "../../types.js";
|
|
23
|
-
import {
|
|
22
|
+
import { memoryV3Injector } from "../memory-v3-shadow/injector.js";
|
|
23
|
+
import { defaultInjectors } from "./injectors.js";
|
|
24
24
|
|
|
25
25
|
let cachedChain: Injector[] | null = null;
|
|
26
26
|
|