@vellumai/assistant 0.7.0 → 0.7.1
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 -7
- package/Dockerfile +1 -0
- package/README.md +2 -2
- package/__tests__/permissions/gateway-threshold-reader.test.ts +79 -139
- package/bun.lock +3 -0
- package/docs/architecture/security.md +18 -16
- package/knip.json +1 -0
- package/node_modules/@vellumai/skill-host-contracts/__tests__/client.test.ts +1 -5
- package/node_modules/@vellumai/skill-host-contracts/src/assistant-event.ts +0 -5
- package/node_modules/@vellumai/skill-host-contracts/src/client.ts +10 -16
- package/node_modules/@vellumai/skill-host-contracts/src/skill-host.ts +1 -9
- package/node_modules/@vellumai/skill-host-contracts/src/tool-types.ts +12 -12
- package/node_modules/@vellumai/slack-text/bun.lock +24 -0
- package/node_modules/@vellumai/slack-text/package.json +18 -0
- package/node_modules/@vellumai/slack-text/src/index.test.ts +153 -0
- package/node_modules/@vellumai/slack-text/src/index.ts +235 -0
- package/node_modules/@vellumai/slack-text/tsconfig.json +20 -0
- package/openapi.yaml +294 -107
- package/package.json +4 -2
- package/scripts/generate-openapi.ts +16 -111
- package/src/__tests__/agent-wake-override-profile.test.ts +23 -1
- package/src/__tests__/anthropic-provider.test.ts +56 -13
- package/src/__tests__/app-conversation-ids-backfill.test.ts +278 -0
- package/src/__tests__/app-conversation-ids.test.ts +151 -0
- package/src/__tests__/approval-cascade.test.ts +0 -15
- package/src/__tests__/approval-routes-http.test.ts +6 -17
- package/src/__tests__/assistant-event-hub.test.ts +126 -77
- package/src/__tests__/assistant-event.test.ts +0 -5
- package/src/__tests__/assistant-events-sse-hardening.test.ts +37 -15
- package/src/__tests__/assistant-feature-flags-integration.test.ts +0 -29
- package/src/__tests__/background-shell-host-bash.test.ts +34 -43
- package/src/__tests__/call-controller.test.ts +1 -1
- package/src/__tests__/call-site-routing-provider.test.ts +193 -0
- package/src/__tests__/channel-approval-routes.test.ts +10 -296
- package/src/__tests__/channel-approvals.test.ts +25 -17
- package/src/__tests__/channel-guardian.test.ts +100 -146
- package/src/__tests__/checker.test.ts +20 -34
- package/src/__tests__/compact-event-conversation-id-guard.test.ts +50 -0
- package/src/__tests__/compaction-events.test.ts +2 -0
- package/src/__tests__/config-schema.test.ts +6 -48
- package/src/__tests__/config-watcher.test.ts +12 -0
- package/src/__tests__/connection-policy.test.ts +1 -52
- package/src/__tests__/contacts-write.test.ts +2 -64
- package/src/__tests__/context-image-dimensions.test.ts +1 -1
- package/src/__tests__/context-search-memory-source.test.ts +120 -1
- package/src/__tests__/context-search-memory-v2-source.test.ts +383 -0
- package/src/__tests__/context-search-pkb-source.test.ts +49 -0
- package/src/__tests__/context-search-workspace-source.test.ts +9 -22
- package/src/__tests__/context-window-manager.test.ts +46 -0
- package/src/__tests__/conversation-agent-loop-inference-profile.test.ts +2 -0
- package/src/__tests__/conversation-agent-loop-overflow.test.ts +102 -29
- package/src/__tests__/conversation-agent-loop.test.ts +980 -13
- package/src/__tests__/conversation-analysis-routes.test.ts +12 -10
- package/src/__tests__/conversation-attention-telegram.test.ts +11 -3
- package/src/__tests__/conversation-confirmation-signals.test.ts +0 -291
- package/src/__tests__/conversation-history-web-search.test.ts +4 -3
- package/src/__tests__/conversation-inference-profile-route.test.ts +12 -23
- package/src/__tests__/conversation-lifecycle.test.ts +4 -4
- package/src/__tests__/conversation-process-callsite.test.ts +79 -2
- package/src/__tests__/conversation-queue.test.ts +3 -8
- package/src/__tests__/conversation-routes-disk-view.test.ts +1 -161
- package/src/__tests__/conversation-routes-guardian-reply.test.ts +0 -32
- package/src/__tests__/conversation-routes-slash-commands.test.ts +75 -66
- package/src/__tests__/conversation-runtime-assembly.test.ts +257 -3
- package/src/__tests__/conversation-slash-commands.test.ts +24 -4
- package/src/__tests__/conversation-slash-queue.test.ts +2 -0
- package/src/__tests__/conversation-speed-override.test.ts +0 -3
- package/src/__tests__/conversation-starter-routes.test.ts +79 -2
- package/src/__tests__/conversation-surfaces-standalone-payloads.test.ts +12 -5
- package/src/__tests__/conversation-surfaces-standalone.test.ts +18 -14
- package/src/__tests__/conversation-surfaces-state-update.test.ts +3 -2
- package/src/__tests__/conversation-tool-setup-app-refresh.test.ts +8 -46
- package/src/__tests__/conversation-usage.test.ts +253 -3
- package/src/__tests__/credential-execution-shell-lockdown.test.ts +0 -39
- package/src/__tests__/credential-health-service.test.ts +68 -0
- package/src/__tests__/credential-security-e2e.test.ts +4 -3
- package/src/__tests__/credential-security-invariants.test.ts +1 -5
- package/src/__tests__/credential-token-resolver.test.ts +180 -0
- package/src/__tests__/cu-unified-flow.test.ts +33 -16
- package/src/__tests__/daemon-assistant-events.test.ts +34 -21
- package/src/__tests__/daemon-credential-client.test.ts +4 -1
- package/src/__tests__/db-connection-isolation.test.ts +125 -0
- package/src/__tests__/db-migration-rollback.test.ts +101 -0
- package/src/__tests__/db-slack-compaction-watermark-migration.test.ts +169 -0
- package/src/__tests__/deterministic-verification-control-plane.test.ts +7 -80
- package/src/__tests__/document-conversations.test.ts +332 -0
- package/src/__tests__/embedding-managed-proxy-selection.test.ts +2 -2
- package/src/__tests__/emit-event-signal.test.ts +4 -6
- package/src/__tests__/events-client-registration.test.ts +193 -49
- package/src/__tests__/filing-service.test.ts +58 -7
- package/src/__tests__/first-greeting.test.ts +156 -150
- package/src/__tests__/fixtures/mock-chrome-extension.ts +108 -66
- package/src/__tests__/get-skill-detail-audit.test.ts +3 -8
- package/src/__tests__/guardian-binding-drift-heal.test.ts +1 -1
- package/src/__tests__/guardian-dispatch.test.ts +1 -1
- package/src/__tests__/guardian-grant-minting.test.ts +7 -2
- package/src/__tests__/guardian-routing-invariants.test.ts +7 -2
- package/src/__tests__/guardian-routing-state.test.ts +1 -1
- package/src/__tests__/handlers-skills-memory-v2-reseed.test.ts +32 -11
- package/src/__tests__/handlers-user-message-approval-consumption.test.ts +2 -83
- package/src/__tests__/headless-browser-mode.test.ts +4 -9
- package/src/__tests__/headless-browser-navigate.test.ts +21 -20
- package/src/__tests__/heartbeat-service.test.ts +289 -7
- package/src/__tests__/helpers/channel-test-adapter.ts +2 -2
- package/src/__tests__/helpers/create-guardian-binding.ts +91 -0
- package/src/__tests__/host-bash-proxy.test.ts +46 -122
- package/src/__tests__/host-browser-e2e-cloud.test.ts +36 -497
- package/src/__tests__/host-browser-e2e-self-hosted-capability.test.ts +26 -96
- package/src/__tests__/host-browser-proxy.test.ts +111 -185
- package/src/__tests__/host-browser-routes.test.ts +45 -75
- package/src/__tests__/host-browser-ws-events-e2e.test.ts +26 -30
- package/src/__tests__/host-cu-proxy.test.ts +56 -111
- package/src/__tests__/host-file-proxy.test.ts +44 -98
- package/src/__tests__/host-file-read-tool.test.ts +42 -21
- package/src/__tests__/host-shell-tool.test.ts +33 -68
- package/src/__tests__/host-transfer-pending-interactions.test.ts +2 -18
- package/src/__tests__/host-transfer-proxy.test.ts +43 -53
- package/src/__tests__/http-user-message-parity.test.ts +0 -6
- package/src/__tests__/inbound-slack-persistence.test.ts +31 -0
- package/src/__tests__/injector-chain.test.ts +10 -5
- package/src/__tests__/injector-pkb-v2-silenced.test.ts +124 -0
- package/src/__tests__/inline-command-runner.test.ts +0 -66
- package/src/__tests__/inline-skill-load-permissions.test.ts +0 -2
- package/src/__tests__/install-skill-routing.test.ts +1 -13
- package/src/__tests__/llm-callsite-catalog.test.ts +34 -0
- package/src/__tests__/llm-catalog-parity.test.ts +90 -0
- package/src/__tests__/llm-context-resolution.test.ts +180 -0
- package/src/__tests__/llm-resolver.test.ts +80 -12
- package/src/__tests__/llm-usage-store.test.ts +269 -4
- package/src/__tests__/log-export-routes.test.ts +89 -0
- package/src/__tests__/managed-profile-guard.test.ts +225 -0
- package/src/__tests__/managed-skill-lifecycle.test.ts +0 -10
- package/src/__tests__/manual-token-reconciliation.test.ts +334 -0
- package/src/__tests__/memory-v2-static-injector.test.ts +95 -0
- package/src/__tests__/migration-cross-version-compatibility.test.ts +197 -291
- package/src/__tests__/migration-export-http.test.ts +33 -26
- package/src/__tests__/migration-export-streaming.test.ts +18 -10
- package/src/__tests__/migration-export-to-gcs.test.ts +49 -9
- package/src/__tests__/migration-import-commit-http.test.ts +66 -21
- package/src/__tests__/migration-import-from-gcs.test.ts +50 -9
- package/src/__tests__/migration-import-from-url.test.ts +20 -6
- package/src/__tests__/migration-import-preflight-http.test.ts +95 -95
- package/src/__tests__/migration-parity-persistence.test.ts +62 -25
- package/src/__tests__/migration-transport.test.ts +115 -23
- package/src/__tests__/migration-validate-http.test.ts +105 -80
- package/src/__tests__/migration-wizard.test.ts +133 -27
- package/src/__tests__/non-member-access-request.test.ts +1 -1
- package/src/__tests__/notification-guardian-path.test.ts +1 -1
- package/src/__tests__/oauth-store.test.ts +19 -0
- package/src/__tests__/platform-bash-auto-approve.test.ts +21 -12
- package/src/__tests__/prechat-onboarding-contract.test.ts +31 -7
- package/src/__tests__/pricing.test.ts +68 -4
- package/src/__tests__/process-message-background-slack.test.ts +331 -0
- package/src/__tests__/provider-managed-proxy-integration.test.ts +153 -17
- package/src/__tests__/provider-send-message-override-profile.test.ts +50 -0
- package/src/__tests__/provider-usage-tracking.test.ts +208 -0
- package/src/__tests__/reaction-persistence.test.ts +9 -6
- package/src/__tests__/rebind-secrets-screen.test.ts +53 -16
- package/src/__tests__/recording-handler.test.ts +64 -81
- package/src/__tests__/regenerate-fire-and-forget-trace.test.ts +4 -3
- package/src/__tests__/relay-server.test.ts +18 -13
- package/src/__tests__/require-fresh-approval.test.ts +13 -22
- package/src/__tests__/runtime-attachment-metadata.test.ts +1 -1
- package/src/__tests__/runtime-events-sse-parity.test.ts +3 -4
- package/src/__tests__/runtime-events-sse.test.ts +3 -12
- package/src/__tests__/search-skills-unified.test.ts +9 -15
- package/src/__tests__/secret-ingress-cli.test.ts +2 -5
- package/src/__tests__/secret-ingress-http.test.ts +0 -4
- package/src/__tests__/secret-onetime-send.test.ts +4 -2
- package/src/__tests__/secret-prompt-log-hygiene.test.ts +24 -7
- package/src/__tests__/secret-prompter-channel-fallback.test.ts +42 -47
- package/src/__tests__/secret-response-routing.test.ts +29 -15
- package/src/__tests__/secret-routes-managed-proxy.test.ts +5 -1
- package/src/__tests__/secret-scanner.test.ts +2 -545
- package/src/__tests__/send-endpoint-busy.test.ts +9 -24
- package/src/__tests__/settings-routes.test.ts +1 -1
- package/src/__tests__/shell-credential-ref.test.ts +0 -8
- package/src/__tests__/shell-tool-proxy-mode.test.ts +0 -56
- package/src/__tests__/skill-script-runner-sandbox.test.ts +0 -11
- package/src/__tests__/skill-tool-factory.test.ts +97 -0
- package/src/__tests__/skills-file-content-endpoint.test.ts +9 -30
- package/src/__tests__/skills-files-catalog-fallback.test.ts +11 -17
- package/src/__tests__/slack-inbound-verification.test.ts +1 -62
- package/src/__tests__/subagent-fork-notifications.test.ts +57 -47
- package/src/__tests__/subagent-manager-notify.test.ts +70 -70
- package/src/__tests__/subagent-notify-parent.test.ts +80 -83
- package/src/__tests__/system-prompt.test.ts +115 -13
- package/src/__tests__/terminal-tools.test.ts +0 -89
- package/src/__tests__/thread-backfill.test.ts +945 -31
- package/src/__tests__/tool-domain-event-publisher.test.ts +0 -36
- package/src/__tests__/tool-execute-pipeline.test.ts +0 -6
- package/src/__tests__/tool-execution-abort-cleanup.test.ts +0 -16
- package/src/__tests__/tool-execution-pipeline.benchmark.test.ts +9 -19
- package/src/__tests__/tool-executor-lifecycle-events.test.ts +4 -7
- package/src/__tests__/tool-executor.test.ts +12 -19
- package/src/__tests__/tool-metrics-listener.test.ts +0 -35
- package/src/__tests__/tool-side-effects-slack-dm.test.ts +1 -0
- package/src/__tests__/tool-trace-listener.test.ts +0 -17
- package/src/__tests__/transfer-progress-screen.test.ts +63 -26
- package/src/__tests__/trusted-contact-lifecycle-notifications.test.ts +2 -149
- package/src/__tests__/trusted-contact-multichannel.test.ts +2 -4
- package/src/__tests__/trusted-contact-verification.test.ts +1 -1
- package/src/__tests__/tts-catalog-parity.test.ts +16 -5
- package/src/__tests__/usage-attribution.test.ts +247 -0
- package/src/__tests__/usage-cli.test.ts +143 -0
- package/src/__tests__/usage-grouped-buckets.test.ts +155 -0
- package/src/__tests__/usage-routes.test.ts +150 -0
- package/src/__tests__/validation-results-screen.test.ts +39 -16
- package/src/__tests__/vbundle-pax-and-symlink.test.ts +12 -3
- package/src/__tests__/vellum-self-knowledge-inline-command.test.ts +49 -137
- package/src/__tests__/verification-control-plane-policy.test.ts +4 -7
- package/src/__tests__/voice-session-bridge.test.ts +5 -5
- package/src/__tests__/workspace-migration-062-drop-memory-v2-edges-json.test.ts +103 -0
- package/src/__tests__/workspace-migration-063-release-notes-dynamic-model-context.test.ts +77 -0
- package/src/__tests__/workspace-migration-064-unwind-main-agent-opus-seed.test.ts +225 -0
- package/src/__tests__/workspace-migration-memory-v2-init.test.ts +8 -30
- package/src/acp/index.ts +0 -15
- package/src/acp/session-manager.ts +37 -34
- package/src/agent/loop.ts +16 -1
- package/src/approvals/AGENTS.md +4 -0
- package/src/approvals/__tests__/guardian-feed-event.test.ts +10 -3
- package/src/approvals/guardian-request-resolvers.ts +10 -2
- package/src/backup/__tests__/backup-worker.test.ts +36 -8
- package/src/backup/__tests__/paths.test.ts +2 -2
- package/src/backup/__tests__/restore.test.ts +45 -28
- package/src/backup/backup-worker.ts +36 -2
- package/src/backup/paths.ts +9 -6
- package/src/browser-session/events.ts +0 -9
- package/src/calls/call-store.ts +1 -34
- package/src/calls/guardian-question-copy.ts +0 -108
- package/src/calls/relay-server.ts +0 -24
- package/src/calls/twilio-rest.ts +0 -38
- package/src/calls/twilio-routes.ts +1 -1
- package/src/calls/voice-session-bridge.ts +7 -38
- package/src/channels/types.ts +1 -36
- package/src/cli/commands/__tests__/cache.test.ts +152 -5
- package/src/cli/commands/__tests__/memory-v2.test.ts +14 -28
- package/src/cli/commands/__tests__/trust.test.ts +21 -387
- package/src/cli/commands/backup.ts +4 -4
- package/src/cli/commands/cache-fs.ts +8 -0
- package/src/cli/commands/cache.ts +153 -82
- package/src/cli/commands/clients.ts +63 -5
- package/src/cli/commands/completions.ts +3 -3
- package/src/cli/commands/contacts.ts +231 -76
- package/src/cli/commands/keys.ts +4 -1
- package/src/cli/commands/memory-v2.ts +24 -52
- package/src/cli/commands/oauth/shared.ts +2 -29
- package/src/cli/commands/pending.ts +102 -0
- package/src/cli/commands/skills.ts +77 -35
- package/src/cli/commands/trust.ts +70 -430
- package/src/cli/commands/usage.ts +25 -16
- package/src/cli/lib/daemon-credential-client.ts +14 -0
- package/src/cli/program.ts +2 -0
- package/src/cli.ts +0 -21
- package/src/config/__tests__/feature-flag-registry-guard.test.ts +2 -2
- package/src/config/bundled-skills/messaging/TOOLS.json +14 -4
- package/src/config/env-registry.ts +12 -2
- package/src/config/env.ts +3 -14
- package/src/config/feature-flag-registry.json +30 -30
- package/src/config/llm-callsite-catalog.ts +12 -0
- package/src/config/llm-context-resolution.ts +80 -0
- package/src/config/llm-resolver.ts +58 -22
- package/src/config/loader.ts +3 -3
- package/src/config/schema.ts +2 -158
- package/src/config/schemas/__tests__/memory-v2.test.ts +1 -0
- package/src/config/schemas/call-site-catalog.ts +271 -0
- package/src/config/schemas/calls.ts +5 -5
- package/src/config/schemas/inference.ts +1 -1
- package/src/config/schemas/ingress.ts +1 -1
- package/src/config/schemas/llm.ts +31 -3
- package/src/config/schemas/memory-retrieval.ts +2 -2
- package/src/config/schemas/memory-v2.ts +9 -0
- package/src/config/schemas/security.ts +1 -42
- package/src/config/schemas/services.ts +6 -6
- package/src/config/schemas/skills.ts +5 -5
- package/src/config/schemas/tts.ts +1 -1
- package/src/config/seed-inference-profiles.ts +117 -0
- package/src/config/skills.ts +0 -90
- package/src/config/types.ts +3 -6
- package/src/contacts/contact-store.ts +0 -17
- package/src/contacts/contacts-write.ts +1 -105
- package/src/context/window-manager.ts +44 -5
- package/src/credential-execution/process-manager.ts +34 -10
- package/src/credential-health/credential-health-service.ts +21 -16
- package/src/daemon/__tests__/conversation-surfaces-launch.test.ts +75 -82
- package/src/daemon/__tests__/daemon-skill-host.test.ts +2 -9
- package/src/daemon/connection-policy.ts +1 -26
- package/src/daemon/conversation-agent-loop-handlers.ts +53 -4
- package/src/daemon/conversation-agent-loop.ts +277 -36
- package/src/daemon/conversation-history.ts +8 -8
- package/src/daemon/conversation-launch.ts +20 -135
- package/src/daemon/conversation-lifecycle.ts +1 -1
- package/src/daemon/conversation-messaging.ts +1 -0
- package/src/daemon/conversation-process.ts +83 -163
- package/src/daemon/conversation-runtime-assembly.ts +219 -76
- package/src/daemon/conversation-slash.ts +47 -5
- package/src/daemon/conversation-store.ts +7 -31
- package/src/daemon/conversation-surfaces.ts +22 -28
- package/src/daemon/conversation-tool-setup.ts +3 -33
- package/src/daemon/conversation-usage.ts +36 -0
- package/src/daemon/conversation.ts +117 -233
- package/src/daemon/daemon-control.ts +3 -71
- package/src/daemon/daemon-skill-host.ts +8 -11
- package/src/daemon/dictation-profile-store.ts +2 -26
- package/src/daemon/first-greeting.ts +44 -156
- package/src/daemon/handlers/config-channels.ts +12 -12
- package/src/daemon/handlers/config-ingress.ts +4 -165
- package/src/daemon/handlers/config-model.ts +1 -1
- package/src/daemon/handlers/config-voice.ts +0 -42
- package/src/daemon/handlers/conversations.ts +11 -190
- package/src/daemon/handlers/recording.ts +26 -158
- package/src/daemon/handlers/shared.ts +23 -71
- package/src/daemon/handlers/skills.ts +42 -93
- package/src/daemon/host-bash-proxy.ts +67 -45
- package/src/daemon/host-browser-proxy.ts +65 -27
- package/src/daemon/host-cu-proxy.ts +40 -39
- package/src/daemon/host-file-proxy.ts +58 -37
- package/src/daemon/host-transfer-proxy.ts +84 -46
- package/src/daemon/lifecycle.ts +49 -15
- package/src/daemon/message-types/conversations.ts +7 -0
- package/src/daemon/message-types/host-bash.ts +1 -0
- package/src/daemon/message-types/host-cu.ts +1 -0
- package/src/daemon/message-types/host-file.ts +1 -0
- package/src/daemon/message-types/host-transfer.ts +1 -0
- package/src/daemon/message-types/messages.ts +10 -9
- package/src/daemon/message-types/workspace.ts +1 -1
- package/src/daemon/process-message.ts +102 -239
- package/src/daemon/server.ts +13 -462
- package/src/daemon/shutdown-handlers.ts +2 -2
- package/src/daemon/tool-side-effects.ts +125 -107
- package/src/daemon/trust-context.ts +13 -0
- package/src/daemon/wake-target-adapter.ts +4 -9
- package/src/events/domain-events.ts +0 -8
- package/src/events/tool-audit-listener.ts +3 -1
- package/src/events/tool-domain-event-publisher.ts +0 -10
- package/src/events/tool-metrics-listener.ts +0 -17
- package/src/events/tool-trace-listener.ts +0 -14
- package/src/filing/filing-service.ts +13 -1
- package/src/heartbeat/__tests__/heartbeat-feed-event.test.ts +6 -2
- package/src/heartbeat/heartbeat-service.ts +23 -5
- package/src/home/__tests__/feed-writer.test.ts +0 -4
- package/src/home/__tests__/relationship-state-writer.test.ts +30 -0
- package/src/home/feed-writer.ts +1 -2
- package/src/home/relationship-state-writer.ts +16 -3
- package/src/ipc/__tests__/browser-ipc.test.ts +2 -12
- package/src/ipc/__tests__/skill-server-bidirectional.test.ts +0 -1
- package/src/ipc/assistant-server.ts +3 -10
- package/src/ipc/routes/__tests__/memory-v2-backfill.test.ts +39 -20
- package/src/ipc/routes/route-adapter.ts +1 -1
- package/src/ipc/routes/trust-rules.test.ts +0 -95
- package/src/ipc/skill-ipc-types.ts +41 -0
- package/src/ipc/skill-routes/__tests__/events-ipc.test.ts +13 -27
- package/src/ipc/skill-routes/__tests__/identity.test.ts +4 -23
- package/src/ipc/skill-routes/events.ts +12 -23
- package/src/ipc/skill-routes/identity.ts +4 -17
- package/src/ipc/skill-routes/index.ts +1 -1
- package/src/ipc/skill-server.ts +6 -39
- package/src/live-voice/__tests__/runtime-websocket-shell.test.ts +0 -8
- package/src/live-voice/protocol.ts +4 -13
- package/src/mcp/manager.ts +0 -5
- package/src/memory/__tests__/fixtures/memory-v2-activation-fixtures.ts +55 -0
- package/src/memory/__tests__/memory-v2-activation-log-store.test.ts +127 -0
- package/src/memory/app-git-service.ts +0 -32
- package/src/memory/app-store.ts +154 -0
- package/src/memory/attachments-store.ts +6 -0
- package/src/memory/context-search/sources/memory-v2.ts +578 -0
- package/src/memory/context-search/sources/memory.ts +5 -0
- package/src/memory/context-search/sources/pkb.ts +10 -1
- package/src/memory/context-search/sources/workspace.ts +3 -2
- package/src/memory/conversation-crud.ts +29 -4
- package/src/memory/conversation-disk-view.ts +1 -5
- package/src/memory/conversation-starter-checkpoints.ts +63 -0
- package/src/memory/db-connection.ts +62 -0
- package/src/memory/db-init.ts +14 -0
- package/src/memory/embedding-backend.ts +3 -21
- package/src/memory/embedding-gemini.ts +0 -2
- package/src/memory/embedding-local.ts +6 -6
- package/src/memory/embedding-ollama.ts +6 -6
- package/src/memory/embedding-openai.ts +6 -6
- package/src/memory/embedding-types.ts +21 -0
- package/src/memory/graph/__tests__/conversation-graph-memory-v2-routing.test.ts +3 -7
- package/src/memory/graph/conversation-graph-memory.ts +35 -13
- package/src/memory/graph/injection.test.ts +2 -2
- package/src/memory/graph/injection.ts +1 -1
- package/src/memory/guardian-action-store.ts +0 -83
- package/src/memory/guardian-approvals.ts +0 -48
- package/src/memory/indexer.ts +1 -15
- package/src/memory/job-handlers/conversation-starters.ts +36 -53
- package/src/memory/job-utils.ts +0 -6
- package/src/memory/jobs-store.ts +0 -1
- package/src/memory/jobs-worker.ts +2 -16
- package/src/memory/llm-request-log-store.ts +0 -41
- package/src/memory/llm-usage-store.ts +129 -43
- package/src/memory/memory-v2-activation-log-store.ts +115 -0
- package/src/memory/migrations/233-document-conversations.ts +54 -0
- package/src/memory/migrations/234-memory-v2-activation-logs.ts +55 -0
- package/src/memory/migrations/235-llm-usage-attribution.ts +31 -0
- package/src/memory/migrations/235-slack-compaction-watermark.ts +44 -0
- package/src/memory/migrations/236-tool-invocations-matched-rule-id.ts +26 -0
- package/src/memory/migrations/__tests__/234-memory-v2-activation-logs.test.ts +182 -0
- package/src/memory/migrations/index.ts +14 -0
- package/src/memory/migrations/registry.ts +24 -0
- package/src/memory/raw-query.ts +2 -68
- package/src/memory/schema/conversations.ts +7 -0
- package/src/memory/schema/infrastructure.ts +25 -0
- package/src/memory/search/semantic.ts +5 -16
- package/src/memory/tool-usage-store.ts +2 -0
- package/src/memory/usage-buckets.ts +40 -1
- package/src/memory/usage-grouped-buckets.ts +127 -0
- package/src/memory/v2/__tests__/activation.test.ts +289 -90
- package/src/memory/v2/__tests__/backfill-jobs.test.ts +2 -129
- package/src/memory/v2/__tests__/consolidation-job.test.ts +28 -11
- package/src/memory/v2/__tests__/edge-index.test.ts +278 -0
- package/src/memory/v2/__tests__/injection.test.ts +384 -15
- package/src/memory/v2/__tests__/migration.test.ts +64 -36
- package/src/memory/v2/__tests__/page-store.test.ts +191 -8
- package/src/memory/v2/__tests__/prompts-consolidation.test.ts +181 -0
- package/src/memory/v2/__tests__/skill-store.test.ts +115 -3
- package/src/memory/v2/__tests__/static-context.test.ts +153 -0
- package/src/memory/v2/activation.ts +168 -97
- package/src/memory/v2/backfill-jobs.ts +15 -100
- package/src/memory/v2/consolidation-job.ts +14 -12
- package/src/memory/v2/edge-index.ts +191 -0
- package/src/memory/v2/injection.ts +182 -58
- package/src/memory/v2/migration.ts +57 -64
- package/src/memory/v2/now-text.ts +2 -3
- package/src/memory/v2/page-store.ts +168 -31
- package/src/memory/v2/prompts/consolidation.ts +118 -42
- package/src/memory/v2/prompts/sweep.ts +3 -3
- package/src/memory/v2/skill-store.ts +55 -7
- package/src/memory/v2/static-context.ts +62 -0
- package/src/memory/v2/types.ts +10 -20
- package/src/memory/validation.ts +0 -11
- package/src/messaging/draft-store.ts +0 -6
- package/src/messaging/provider-types.ts +8 -0
- package/src/messaging/provider.ts +7 -0
- package/src/messaging/providers/gmail/client.ts +1 -121
- package/src/messaging/providers/outlook/client.ts +0 -73
- package/src/messaging/providers/slack/__tests__/adapter-mention-rendering.test.ts +226 -0
- package/src/messaging/providers/slack/adapter.ts +122 -21
- package/src/messaging/providers/slack/backfill.test.ts +95 -6
- package/src/messaging/providers/slack/backfill.ts +89 -11
- package/src/messaging/providers/slack/client.ts +10 -124
- package/src/messaging/providers/slack/message-metadata.ts +12 -2
- package/src/messaging/providers/slack/render-transcript.test.ts +56 -0
- package/src/messaging/providers/slack/render-transcript.ts +126 -25
- package/src/messaging/providers/slack/types.ts +1 -0
- package/src/oauth/connection-resolver.test.ts +8 -0
- package/src/oauth/connection-resolver.ts +8 -16
- package/src/oauth/credential-token-resolver.ts +97 -0
- package/src/oauth/manual-token-connection.ts +30 -34
- package/src/oauth/oauth-store.ts +6 -4
- package/src/outbound-proxy/certs.ts +0 -7
- package/src/outbound-proxy/config.ts +0 -74
- package/src/outbound-proxy/health.ts +0 -44
- package/src/outbound-proxy/index.ts +0 -22
- package/src/permissions/approval-provenance.test.ts +184 -0
- package/src/permissions/approval-provenance.ts +70 -0
- package/src/permissions/checker.ts +4 -1
- package/src/permissions/gateway-threshold-reader.ts +4 -1
- package/src/permissions/prompter.ts +9 -2
- package/src/permissions/secret-prompter.ts +21 -48
- package/src/permissions/types.ts +33 -0
- package/src/permissions/workspace-policy.ts +0 -5
- package/src/platform/sync-identity.ts +0 -8
- package/src/plugins/defaults/injectors.ts +69 -2
- package/src/plugins/defaults/overflow-reduce.ts +3 -2
- package/src/plugins/types.ts +8 -0
- package/src/prompts/system-prompt.ts +34 -70
- package/src/prompts/templates/BOOTSTRAP.md +52 -6
- package/src/prompts/update-bulletin-job.ts +2 -0
- package/src/providers/__tests__/retry-callsite.test.ts +138 -1
- package/src/providers/anthropic/client.ts +72 -33
- package/src/providers/call-site-routing.ts +42 -3
- package/src/providers/gemini/client.ts +18 -2
- package/src/providers/managed-proxy/context.ts +0 -5
- package/src/providers/model-catalog.ts +105 -19
- package/src/providers/openai/chat-completions-provider.ts +6 -0
- package/src/providers/openai/responses-provider.ts +7 -1
- package/src/providers/provider-send-message.ts +45 -2
- package/src/providers/ratelimit.ts +7 -2
- package/src/providers/registry.ts +14 -9
- package/src/providers/retry.ts +96 -8
- package/src/providers/types.ts +13 -0
- package/src/providers/usage-tracking.ts +96 -0
- package/src/runtime/AGENTS.md +10 -6
- package/src/runtime/__tests__/agent-wake.test.ts +89 -0
- package/src/runtime/agent-wake.ts +39 -2
- package/src/runtime/assistant-event-hub.ts +541 -45
- package/src/runtime/assistant-event.ts +1 -6
- package/src/runtime/auth/context.ts +0 -9
- package/src/runtime/auth/middleware.ts +1 -1
- package/src/runtime/auth/route-policy.ts +11 -9
- package/src/runtime/auth/token-service.ts +0 -11
- package/src/runtime/channel-approvals.ts +6 -2
- package/src/runtime/channel-verification-service.ts +3 -5
- package/src/runtime/http-errors.ts +0 -34
- package/src/runtime/http-router.ts +6 -3
- package/src/runtime/http-server.ts +22 -82
- package/src/runtime/http-types.ts +5 -0
- package/src/runtime/interactive-ui.ts +0 -1
- package/src/runtime/middleware/auth.ts +0 -20
- package/src/runtime/migrations/__tests__/v1-test-helpers.ts +112 -0
- package/src/runtime/migrations/__tests__/vbundle-builder-credentials.test.ts +11 -4
- package/src/runtime/migrations/__tests__/vbundle-builder-v1-shape.test.ts +253 -0
- package/src/runtime/migrations/__tests__/vbundle-import-credentials.test.ts +19 -6
- package/src/runtime/migrations/__tests__/vbundle-legacy-user-md.test.ts +71 -27
- package/src/runtime/migrations/__tests__/vbundle-metadata-merge-integration.test.ts +41 -2
- package/src/runtime/migrations/__tests__/vbundle-streaming-importer.test.ts +143 -79
- package/src/runtime/migrations/__tests__/vbundle-streaming-validator.test.ts +143 -23
- package/src/runtime/migrations/__tests__/vbundle-tar-stream.test.ts +2 -2
- package/src/runtime/migrations/__tests__/vbundle-validator-v1-schema.test.ts +371 -0
- package/src/runtime/migrations/migration-transport.ts +46 -13
- package/src/runtime/migrations/migration-wizard.ts +2 -2
- package/src/runtime/migrations/origin-mode.ts +40 -0
- package/src/runtime/migrations/vbundle-builder.ts +133 -79
- package/src/runtime/migrations/vbundle-import-analyzer.ts +9 -7
- package/src/runtime/migrations/vbundle-importer.ts +7 -7
- package/src/runtime/migrations/vbundle-metadata-merge.ts +1 -1
- package/src/runtime/migrations/vbundle-streaming-importer.ts +3 -3
- package/src/runtime/migrations/vbundle-streaming-validator.ts +48 -26
- package/src/runtime/migrations/vbundle-validator.ts +214 -41
- package/src/runtime/pending-interactions.ts +13 -4
- package/src/runtime/routes/__tests__/acp-routes.test.ts +0 -1
- package/src/runtime/routes/__tests__/backup-routes.test.ts +28 -19
- package/src/runtime/routes/__tests__/conversation-query-routes.test.ts +235 -0
- package/src/runtime/routes/__tests__/llm-call-sites-routes.test.ts +58 -0
- package/src/runtime/routes/__tests__/migration-export-secrets-redacted.test.ts +54 -0
- package/src/runtime/routes/__tests__/migration-import-credential-filter.test.ts +19 -6
- package/src/runtime/routes/__tests__/user-route-dispatcher.test.ts +7 -7
- package/src/runtime/routes/acp-routes.test.ts +0 -3
- package/src/runtime/routes/acp-routes.ts +3 -7
- package/src/runtime/routes/app-management-routes.ts +18 -9
- package/src/runtime/routes/approval-routes.ts +55 -14
- package/src/runtime/routes/avatar-routes.ts +3 -5
- package/src/runtime/routes/browser-routes.ts +1 -15
- package/src/runtime/routes/channel-guardian-routes.ts +1 -5
- package/src/runtime/routes/channel-readiness-routes.ts +3 -7
- package/src/runtime/routes/channel-route-shared.ts +2 -28
- package/src/runtime/routes/client-routes.ts +45 -12
- package/src/runtime/routes/consolidation-routes.ts +115 -0
- package/src/runtime/routes/conversation-list-routes.ts +12 -29
- package/src/runtime/routes/conversation-management-routes.ts +14 -51
- package/src/runtime/routes/conversation-query-routes.ts +120 -8
- package/src/runtime/routes/conversation-routes.ts +44 -528
- package/src/runtime/routes/conversation-starter-routes.ts +19 -40
- package/src/runtime/routes/documents-routes.ts +53 -18
- package/src/runtime/routes/events-routes.ts +59 -91
- package/src/runtime/routes/filing-routes.ts +18 -1
- package/src/runtime/routes/guardian-action-routes.ts +4 -9
- package/src/runtime/routes/host-bash-routes.ts +3 -2
- package/src/runtime/routes/host-browser-routes.ts +9 -33
- package/src/runtime/routes/host-cu-routes.ts +6 -1
- package/src/runtime/routes/host-file-routes.ts +3 -2
- package/src/runtime/routes/host-transfer-routes.ts +11 -15
- package/src/runtime/routes/identity-routes.ts +78 -6
- package/src/runtime/routes/inbound-message-handler.ts +580 -137
- package/src/runtime/routes/inbound-stages/acl-enforcement.ts +2 -88
- package/src/runtime/routes/inbound-stages/background-dispatch.ts +3 -0
- package/src/runtime/routes/index.ts +4 -0
- package/src/runtime/routes/integrations/slack/channel.ts +0 -24
- package/src/runtime/routes/llm-call-sites-routes.ts +22 -0
- package/src/runtime/routes/memory-v2-routes.ts +10 -15
- package/src/runtime/routes/migration-routes.ts +188 -31
- package/src/runtime/routes/playground/guard.ts +1 -1
- package/src/runtime/routes/playground/index.ts +0 -2
- package/src/runtime/routes/recording-routes.ts +4 -24
- package/src/runtime/routes/rename-conversation-routes.ts +2 -6
- package/src/runtime/routes/schedule-routes.ts +3 -6
- package/src/runtime/routes/secret-routes.ts +87 -18
- package/src/runtime/routes/settings-routes.ts +29 -28
- package/src/runtime/routes/skills-routes.ts +12 -31
- package/src/runtime/routes/suggest-trust-rule-routes.ts +32 -1
- package/src/runtime/routes/task-routes.ts +6 -6
- package/src/runtime/routes/trust-rules-routes.ts +3 -94
- package/src/runtime/routes/types.ts +4 -4
- package/src/runtime/routes/upgrade-broadcast-routes.ts +3 -10
- package/src/runtime/routes/usage-routes.ts +87 -10
- package/src/runtime/routes/user-routes.ts +17 -31
- package/src/runtime/routes/work-items-routes.ts +1 -4
- package/src/runtime/services/__tests__/analyze-conversation.test.ts +2 -2
- package/src/runtime/services/analyze-conversation.ts +7 -17
- package/src/runtime/services/conversation-serializer.ts +2 -4
- package/src/runtime/verification-outbound-actions.ts +1 -1
- package/src/runtime/verification-rate-limiter.ts +1 -1
- package/src/schedule/schedule-store.ts +0 -16
- package/src/security/secret-scanner.ts +14 -547
- package/src/security/secure-keys.ts +31 -11
- package/src/security/token-manager.ts +7 -3
- package/src/signals/cancel.ts +16 -25
- package/src/signals/conversation-undo.ts +2 -27
- package/src/signals/emit-event.ts +1 -2
- package/src/signals/user-message.ts +108 -22
- package/src/skills/catalog-install.ts +1 -0
- package/src/skills/clawhub.ts +2 -2
- package/src/skills/inline-command-runner.ts +1 -7
- package/src/subagent/manager.ts +67 -84
- package/src/tasks/task-store.ts +1 -28
- package/src/telemetry/types.ts +6 -0
- package/src/telemetry/usage-telemetry-reporter.test.ts +38 -15
- package/src/telemetry/usage-telemetry-reporter.ts +3 -5
- package/src/tools/acp/spawn.test.ts +1 -2
- package/src/tools/acp/steer.test.ts +1 -2
- package/src/tools/browser/__tests__/browser-status.test.ts +44 -127
- package/src/tools/browser/browser-execution.ts +31 -147
- package/src/tools/browser/cdp-client/__tests__/factory.test.ts +92 -68
- package/src/tools/browser/cdp-client/factory.ts +48 -76
- package/src/tools/browser/cdp-client/index.ts +1 -14
- package/src/tools/executor.ts +44 -31
- package/src/tools/host-filesystem/edit.ts +3 -2
- package/src/tools/host-filesystem/read.ts +3 -2
- package/src/tools/host-filesystem/transfer.test.ts +45 -42
- package/src/tools/host-filesystem/transfer.ts +4 -3
- package/src/tools/host-filesystem/write.ts +3 -2
- package/src/tools/host-terminal/host-shell.ts +4 -3
- package/src/tools/network/script-proxy/index.ts +1 -10
- package/src/tools/permission-checker.ts +66 -1
- package/src/tools/skills/sandbox-runner.ts +1 -6
- package/src/tools/skills/skill-tool-factory.ts +32 -0
- package/src/tools/terminal/safe-env.ts +1 -0
- package/src/tools/terminal/shell.ts +2 -78
- package/src/tools/types.ts +12 -39
- package/src/tts/__tests__/provider-catalog.test.ts +2 -2
- package/src/tts/provider-catalog.ts +1 -1
- package/src/usage/actors.ts +2 -1
- package/src/usage/attribution.ts +185 -0
- package/src/usage/pricing.ts +166 -0
- package/src/usage/types.ts +14 -0
- package/src/util/json.ts +13 -0
- package/src/util/logger.ts +3 -3
- package/src/util/pricing.ts +50 -3
- package/src/work-items/work-item-runner.ts +15 -42
- package/src/workspace/migrations/050-seed-main-agent-opus-callsite.ts +4 -3
- package/src/workspace/migrations/052-seed-default-inference-profiles.ts +3 -3
- package/src/workspace/migrations/060-memory-v2-init.ts +2 -18
- package/src/workspace/migrations/061-move-backup-key-to-workspace.ts +59 -0
- package/src/workspace/migrations/062-drop-memory-v2-edges-json.ts +27 -0
- package/src/workspace/migrations/063-release-notes-dynamic-model-context.ts +70 -0
- package/src/workspace/migrations/064-unwind-main-agent-opus-seed.ts +64 -0
- package/src/workspace/migrations/registry.ts +8 -0
- package/src/workspace/provider-commit-message-generator.ts +3 -3
- package/src/__tests__/sandbox-diagnostics.test.ts +0 -138
- package/src/__tests__/sandbox-host-parity.test.ts +0 -1024
- package/src/__tests__/secret-detection-handler.test.ts +0 -67
- package/src/__tests__/secret-scanner-executor.test.ts +0 -450
- package/src/__tests__/tcc-sandbox-deny.test.ts +0 -198
- package/src/__tests__/terminal-sandbox.test.ts +0 -374
- package/src/__tests__/tool-notification-listener.test.ts +0 -65
- package/src/context/__tests__/microcompact.test.ts +0 -805
- package/src/context/microcompact.ts +0 -443
- package/src/daemon/handlers/slack-channel-oauth-install.ts +0 -197
- package/src/events/tool-notification-listener.ts +0 -17
- package/src/ipc/routes/__tests__/memory-v2-validate.test.ts +0 -219
- package/src/memory/v2/__tests__/edges.test.ts +0 -435
- package/src/memory/v2/edges.ts +0 -217
- package/src/prompts/__tests__/system-prompt-memory-v2.test.ts +0 -197
- package/src/runtime/__tests__/chrome-extension-registry.test.ts +0 -518
- package/src/runtime/__tests__/client-registry.test.ts +0 -271
- package/src/runtime/chrome-extension-registry.ts +0 -368
- package/src/runtime/client-registry.ts +0 -254
- package/src/runtime/routes/inbound-stages/verification-intercept.ts +0 -329
- package/src/tools/secret-detection-handler.ts +0 -269
- package/src/tools/terminal/backends/native.ts +0 -327
- package/src/tools/terminal/backends/types.ts +0 -37
- package/src/tools/terminal/sandbox-diagnostics.ts +0 -87
- package/src/tools/terminal/sandbox.ts +0 -40
|
@@ -104,40 +104,6 @@ export interface AclResult {
|
|
|
104
104
|
resolvedMember: ResolvedMember | null;
|
|
105
105
|
/** When set, the caller must return this response immediately. */
|
|
106
106
|
earlyResponse?: Record<string, unknown>;
|
|
107
|
-
/**
|
|
108
|
-
* Parsed guardian verification code from the message content, if any.
|
|
109
|
-
* Surfaced here so downstream verification intercept logic can use it
|
|
110
|
-
* without re-parsing.
|
|
111
|
-
*/
|
|
112
|
-
guardianVerifyCode: string | undefined;
|
|
113
|
-
}
|
|
114
|
-
|
|
115
|
-
/**
|
|
116
|
-
* Strip Slack/Telegram mrkdwn formatting wrappers from a raw message.
|
|
117
|
-
* When users copy-paste a verification code from the desktop app with
|
|
118
|
-
* rich-text formatting (e.g. bold), Slack preserves it as `*code*` in
|
|
119
|
-
* the message text, which would otherwise fail the strict bare-code regex.
|
|
120
|
-
*/
|
|
121
|
-
function stripMrkdwnFormatting(text: string): string {
|
|
122
|
-
// Bold (*…*), italic (_…_), strikethrough (~…~), inline code (`…`)
|
|
123
|
-
return text.replace(/^[*_~`]+/, "").replace(/[*_~`]+$/, "");
|
|
124
|
-
}
|
|
125
|
-
|
|
126
|
-
/**
|
|
127
|
-
* Parse a guardian verification code from message content.
|
|
128
|
-
* Accepts a bare code as the entire message: 6-digit numeric OR 64-char hex
|
|
129
|
-
* (hex is retained for compatibility with unbound inbound/bootstrap sessions
|
|
130
|
-
* that intentionally use high-entropy secrets).
|
|
131
|
-
*
|
|
132
|
-
* Strips surrounding mrkdwn formatting characters first so that codes
|
|
133
|
-
* pasted with bold/italic/code formatting are still recognized.
|
|
134
|
-
*/
|
|
135
|
-
function parseGuardianVerifyCode(content: string): string | undefined {
|
|
136
|
-
const stripped = stripMrkdwnFormatting(content);
|
|
137
|
-
const bareMatch = stripped.match(/^([0-9a-fA-F]{64}|\d{6})$/);
|
|
138
|
-
if (bareMatch) return bareMatch[1];
|
|
139
|
-
|
|
140
|
-
return undefined;
|
|
141
107
|
}
|
|
142
108
|
|
|
143
109
|
/** Map ChannelStatus to the API-facing member status (excludes "unverified"). */
|
|
@@ -174,11 +140,6 @@ export async function enforceIngressAcl(
|
|
|
174
140
|
|
|
175
141
|
let resolvedMember: ResolvedMember | null = null;
|
|
176
142
|
|
|
177
|
-
// Verification codes must bypass the ACL membership check — users without a
|
|
178
|
-
// member record need to verify before they can be recognized as members.
|
|
179
|
-
const guardianVerifyCode = parseGuardianVerifyCode(trimmedContent);
|
|
180
|
-
const isGuardianVerifyCode = guardianVerifyCode !== undefined;
|
|
181
|
-
|
|
182
143
|
// /start gv_<token> bootstrap commands must also bypass ACL — the user
|
|
183
144
|
// hasn't been verified yet and needs to complete the bootstrap handshake.
|
|
184
145
|
const rawCommandIntentForAcl = sourceMetadata?.commandIntent;
|
|
@@ -228,27 +189,7 @@ export async function enforceIngressAcl(
|
|
|
228
189
|
}
|
|
229
190
|
|
|
230
191
|
if (!resolvedMember) {
|
|
231
|
-
// Determine whether a verification-code bypass is warranted: only allow
|
|
232
|
-
// when there is a pending (unconsumed, unexpired) challenge AND no
|
|
233
|
-
// active guardian binding for this (assistantId, channel).
|
|
234
192
|
let denyNonMember = true;
|
|
235
|
-
if (isGuardianVerifyCode) {
|
|
236
|
-
// Allow bypass when there is any consumable challenge or active
|
|
237
|
-
// outbound session. The !hasActiveBinding guard is intentionally
|
|
238
|
-
// omitted: rebind sessions create a consumable challenge while a
|
|
239
|
-
// binding already exists, and the identity check inside
|
|
240
|
-
// validateAndConsumeVerification prevents unauthorized takeovers.
|
|
241
|
-
const hasPendingChallenge = !!getPendingSession(sourceChannel);
|
|
242
|
-
const hasActiveOutboundSession = !!findActiveSession(sourceChannel);
|
|
243
|
-
if (hasPendingChallenge || hasActiveOutboundSession) {
|
|
244
|
-
denyNonMember = false;
|
|
245
|
-
} else {
|
|
246
|
-
log.info(
|
|
247
|
-
{ sourceChannel, hasPendingChallenge, hasActiveOutboundSession },
|
|
248
|
-
"Ingress ACL: guardian verification bypass denied",
|
|
249
|
-
);
|
|
250
|
-
}
|
|
251
|
-
}
|
|
252
193
|
|
|
253
194
|
// Bootstrap deep-link commands bypass ACL only when the token
|
|
254
195
|
// resolves to a real pending_bootstrap session. Without this check,
|
|
@@ -297,7 +238,6 @@ export async function enforceIngressAcl(
|
|
|
297
238
|
return {
|
|
298
239
|
resolvedMember: null,
|
|
299
240
|
earlyResponse: inviteResult,
|
|
300
|
-
guardianVerifyCode,
|
|
301
241
|
};
|
|
302
242
|
}
|
|
303
243
|
|
|
@@ -322,7 +262,6 @@ export async function enforceIngressAcl(
|
|
|
322
262
|
return {
|
|
323
263
|
resolvedMember: null,
|
|
324
264
|
earlyResponse: codeInterceptResult,
|
|
325
|
-
guardianVerifyCode,
|
|
326
265
|
};
|
|
327
266
|
}
|
|
328
267
|
|
|
@@ -400,7 +339,6 @@ export async function enforceIngressAcl(
|
|
|
400
339
|
reason: "verification_challenge_sent",
|
|
401
340
|
verificationSessionId: slackVerifyResult.sessionId,
|
|
402
341
|
}),
|
|
403
|
-
guardianVerifyCode,
|
|
404
342
|
};
|
|
405
343
|
}
|
|
406
344
|
}
|
|
@@ -466,7 +404,6 @@ export async function enforceIngressAcl(
|
|
|
466
404
|
// callback delivery failed (e.g. signing-key mismatch → 401).
|
|
467
405
|
...(!replyDelivered && { replyText }),
|
|
468
406
|
}),
|
|
469
|
-
guardianVerifyCode,
|
|
470
407
|
};
|
|
471
408
|
}
|
|
472
409
|
}
|
|
@@ -474,27 +411,9 @@ export async function enforceIngressAcl(
|
|
|
474
411
|
if (resolvedMember) {
|
|
475
412
|
if (resolvedMember.channel.status !== "active") {
|
|
476
413
|
const isBlockedMember = resolvedMember.channel.status === "blocked";
|
|
477
|
-
//
|
|
478
|
-
// bootstrap commands must pass through for re-verifiable states
|
|
414
|
+
// Bootstrap commands must pass through for re-verifiable states
|
|
479
415
|
// (pending/revoked), but never for blocked members.
|
|
480
416
|
let denyInactiveMember = true;
|
|
481
|
-
if (!isBlockedMember && isGuardianVerifyCode) {
|
|
482
|
-
const hasPendingChallenge = !!getPendingSession(sourceChannel);
|
|
483
|
-
const hasActiveOutboundSession = !!findActiveSession(sourceChannel);
|
|
484
|
-
if (hasPendingChallenge || hasActiveOutboundSession) {
|
|
485
|
-
denyInactiveMember = false;
|
|
486
|
-
} else {
|
|
487
|
-
log.info(
|
|
488
|
-
{
|
|
489
|
-
sourceChannel,
|
|
490
|
-
channelId: resolvedMember.channel.id,
|
|
491
|
-
hasPendingChallenge,
|
|
492
|
-
hasActiveOutboundSession,
|
|
493
|
-
},
|
|
494
|
-
"Ingress ACL: inactive member verification bypass denied",
|
|
495
|
-
);
|
|
496
|
-
}
|
|
497
|
-
}
|
|
498
417
|
if (!isBlockedMember && isBootstrapCommand) {
|
|
499
418
|
const bootstrapPayload = (
|
|
500
419
|
rawCommandIntentForAcl as Record<string, unknown>
|
|
@@ -543,7 +462,6 @@ export async function enforceIngressAcl(
|
|
|
543
462
|
return {
|
|
544
463
|
resolvedMember: null,
|
|
545
464
|
earlyResponse: inviteResult,
|
|
546
|
-
guardianVerifyCode,
|
|
547
465
|
};
|
|
548
466
|
}
|
|
549
467
|
|
|
@@ -573,7 +491,6 @@ export async function enforceIngressAcl(
|
|
|
573
491
|
return {
|
|
574
492
|
resolvedMember: null,
|
|
575
493
|
earlyResponse: codeInterceptResult,
|
|
576
|
-
guardianVerifyCode,
|
|
577
494
|
};
|
|
578
495
|
}
|
|
579
496
|
|
|
@@ -657,7 +574,6 @@ export async function enforceIngressAcl(
|
|
|
657
574
|
reason: "verification_challenge_sent",
|
|
658
575
|
verificationSessionId: slackVerifyResult.sessionId,
|
|
659
576
|
}),
|
|
660
|
-
guardianVerifyCode,
|
|
661
577
|
};
|
|
662
578
|
}
|
|
663
579
|
}
|
|
@@ -730,7 +646,6 @@ export async function enforceIngressAcl(
|
|
|
730
646
|
reason: `member_${channelStatusToMemberStatus(resolvedMember.channel.status)}`,
|
|
731
647
|
...(!inactiveReplyDelivered && { replyText: inactiveReplyText }),
|
|
732
648
|
}),
|
|
733
|
-
guardianVerifyCode,
|
|
734
649
|
};
|
|
735
650
|
}
|
|
736
651
|
}
|
|
@@ -771,7 +686,6 @@ export async function enforceIngressAcl(
|
|
|
771
686
|
reason: "policy_deny",
|
|
772
687
|
...(!denyReplyDelivered && { replyText: denyReplyText }),
|
|
773
688
|
}),
|
|
774
|
-
guardianVerifyCode,
|
|
775
689
|
};
|
|
776
690
|
}
|
|
777
691
|
|
|
@@ -784,7 +698,7 @@ export async function enforceIngressAcl(
|
|
|
784
698
|
}
|
|
785
699
|
}
|
|
786
700
|
|
|
787
|
-
return { resolvedMember
|
|
701
|
+
return { resolvedMember };
|
|
788
702
|
}
|
|
789
703
|
|
|
790
704
|
// ---------------------------------------------------------------------------
|
|
@@ -74,6 +74,7 @@ export interface BackgroundProcessingParams {
|
|
|
74
74
|
externalChatId: string;
|
|
75
75
|
trustCtx: TrustContext;
|
|
76
76
|
metadataHints: string[];
|
|
77
|
+
slackRuntimeContextNotice?: string;
|
|
77
78
|
metadataUxBrief?: string;
|
|
78
79
|
replyCallbackUrl?: string;
|
|
79
80
|
assistantId?: string;
|
|
@@ -108,6 +109,7 @@ export function processChannelMessageInBackground(
|
|
|
108
109
|
externalChatId,
|
|
109
110
|
trustCtx,
|
|
110
111
|
metadataHints,
|
|
112
|
+
slackRuntimeContextNotice,
|
|
111
113
|
metadataUxBrief,
|
|
112
114
|
replyCallbackUrl,
|
|
113
115
|
assistantId,
|
|
@@ -222,6 +224,7 @@ export function processChannelMessageInBackground(
|
|
|
222
224
|
trustContext: trustCtx,
|
|
223
225
|
isInteractive: resolveRoutingState(trustCtx).promptWaitingAllowed,
|
|
224
226
|
...(cmdIntent ? { commandIntent: cmdIntent } : {}),
|
|
227
|
+
...(slackRuntimeContextNotice ? { slackRuntimeContextNotice } : {}),
|
|
225
228
|
...(slackInbound ? { slackInbound } : {}),
|
|
226
229
|
},
|
|
227
230
|
sourceChannel,
|
|
@@ -26,6 +26,7 @@ import { ROUTES as CHANNEL_READINESS_ROUTES } from "./channel-readiness-routes.j
|
|
|
26
26
|
import { CHANNEL_ROUTES } from "./channel-route-definitions.js";
|
|
27
27
|
import { ROUTES as CHANNEL_VERIFICATION_ROUTES } from "./channel-verification-routes.js";
|
|
28
28
|
import { ROUTES as CLIENT_ROUTES } from "./client-routes.js";
|
|
29
|
+
import { ROUTES as CONSOLIDATION_ROUTES } from "./consolidation-routes.js";
|
|
29
30
|
import { ROUTES as CONTACT_ROUTES } from "./contact-routes.js";
|
|
30
31
|
import { ROUTES as CONVERSATION_ANALYSIS_ROUTES } from "./conversation-analysis-routes.js";
|
|
31
32
|
import { ROUTES as CONVERSATION_ATTENTION_ROUTES } from "./conversation-attention-routes.js";
|
|
@@ -61,6 +62,7 @@ import { ROUTES as VERCEL_ROUTES } from "./integrations/vercel.js";
|
|
|
61
62
|
import { ROUTES as INTERFACE_ROUTES } from "./interface-routes.js";
|
|
62
63
|
import { ROUTES as INTERNAL_OAUTH_ROUTES } from "./internal-oauth-routes.js";
|
|
63
64
|
import { ROUTES as INTERNAL_TWILIO_ROUTES } from "./internal-twilio-routes.js";
|
|
65
|
+
import { ROUTES as LLM_CALL_SITES_ROUTES } from "./llm-call-sites-routes.js";
|
|
64
66
|
import { ROUTES as LOG_EXPORT_ROUTES } from "./log-export-routes.js";
|
|
65
67
|
import { ROUTES as MEMORY_ITEM_ROUTES } from "./memory-item-routes.js";
|
|
66
68
|
import { ROUTES as MEMORY_V2_ROUTES } from "./memory-v2-routes.js";
|
|
@@ -125,6 +127,7 @@ export const ROUTES: RouteDefinition[] = [
|
|
|
125
127
|
...CONVERSATION_LIST_ROUTES,
|
|
126
128
|
...CONVERSATION_MANAGEMENT_ROUTES,
|
|
127
129
|
...CONVERSATION_MESSAGE_ROUTES,
|
|
130
|
+
...CONSOLIDATION_ROUTES,
|
|
128
131
|
...CREDENTIAL_PROMPT_ROUTES,
|
|
129
132
|
...DEFER_ROUTES,
|
|
130
133
|
...CONVERSATION_QUERY_ROUTES,
|
|
@@ -150,6 +153,7 @@ export const ROUTES: RouteDefinition[] = [
|
|
|
150
153
|
...INTERNAL_OAUTH_ROUTES,
|
|
151
154
|
...INTERNAL_TWILIO_ROUTES,
|
|
152
155
|
...LOG_EXPORT_ROUTES,
|
|
156
|
+
...LLM_CALL_SITES_ROUTES,
|
|
153
157
|
...MEMORY_ITEM_ROUTES,
|
|
154
158
|
...MEMORY_V2_ROUTES,
|
|
155
159
|
...MIGRATION_ROLLBACK_ROUTES,
|
|
@@ -4,7 +4,6 @@
|
|
|
4
4
|
* GET /v1/integrations/slack/channel/config — get current config status
|
|
5
5
|
* POST /v1/integrations/slack/channel/config — validate and store credentials
|
|
6
6
|
* DELETE /v1/integrations/slack/channel/config — clear credentials
|
|
7
|
-
* POST /v1/integrations/slack/channel/oauth-install — run OAuth loopback to capture bot+user tokens
|
|
8
7
|
*/
|
|
9
8
|
|
|
10
9
|
import {
|
|
@@ -12,7 +11,6 @@ import {
|
|
|
12
11
|
getSlackChannelConfig,
|
|
13
12
|
setSlackChannelConfig,
|
|
14
13
|
} from "../../../../daemon/handlers/config-slack-channel.js";
|
|
15
|
-
import { runSlackChannelOAuthInstall } from "../../../../daemon/handlers/slack-channel-oauth-install.js";
|
|
16
14
|
import { BadRequestError } from "../../errors.js";
|
|
17
15
|
import type { RouteDefinition, RouteHandlerArgs } from "../../types.js";
|
|
18
16
|
|
|
@@ -45,17 +43,6 @@ async function handleClearSlackChannelConfig() {
|
|
|
45
43
|
return clearSlackChannelConfig();
|
|
46
44
|
}
|
|
47
45
|
|
|
48
|
-
async function handleSlackChannelOAuthInstall() {
|
|
49
|
-
const result = await runSlackChannelOAuthInstall();
|
|
50
|
-
if (!result.success) {
|
|
51
|
-
throw new BadRequestError(
|
|
52
|
-
(result as { error?: string }).error ??
|
|
53
|
-
"Slack OAuth install failed",
|
|
54
|
-
);
|
|
55
|
-
}
|
|
56
|
-
return result;
|
|
57
|
-
}
|
|
58
|
-
|
|
59
46
|
// ---------------------------------------------------------------------------
|
|
60
47
|
// Route definitions
|
|
61
48
|
// ---------------------------------------------------------------------------
|
|
@@ -91,15 +78,4 @@ export const ROUTES: RouteDefinition[] = [
|
|
|
91
78
|
requirePolicyEnforcement: true,
|
|
92
79
|
handler: () => handleClearSlackChannelConfig(),
|
|
93
80
|
},
|
|
94
|
-
{
|
|
95
|
-
operationId: "integrations_slack_channel_oauth_install_post",
|
|
96
|
-
endpoint: "integrations/slack/channel/oauth-install",
|
|
97
|
-
method: "POST",
|
|
98
|
-
summary: "Run Slack OAuth install",
|
|
99
|
-
description:
|
|
100
|
-
"Run an OAuth2 loopback flow to install the Slack app and capture bot + user tokens.",
|
|
101
|
-
tags: ["integrations"],
|
|
102
|
-
requirePolicyEnforcement: true,
|
|
103
|
-
handler: () => handleSlackChannelOAuthInstall(),
|
|
104
|
-
},
|
|
105
81
|
];
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import { CALL_SITE_CATALOG, CALL_SITE_DOMAINS } from "../../config/schemas/call-site-catalog.js";
|
|
2
|
+
import type { RouteDefinition } from "./types.js";
|
|
3
|
+
|
|
4
|
+
async function handleGetCallSites() {
|
|
5
|
+
return {
|
|
6
|
+
domains: CALL_SITE_DOMAINS,
|
|
7
|
+
callSites: CALL_SITE_CATALOG,
|
|
8
|
+
};
|
|
9
|
+
}
|
|
10
|
+
|
|
11
|
+
export const ROUTES: RouteDefinition[] = [
|
|
12
|
+
{
|
|
13
|
+
operationId: "llm_call_sites_list",
|
|
14
|
+
method: "GET",
|
|
15
|
+
endpoint: "config/llm/call-sites",
|
|
16
|
+
handler: handleGetCallSites,
|
|
17
|
+
summary: "List LLM call sites",
|
|
18
|
+
description:
|
|
19
|
+
"Returns the full catalog of LLM call sites with display names, descriptions, and domain groupings. Used by clients to render the per-call-site override settings UI.",
|
|
20
|
+
tags: ["config"],
|
|
21
|
+
},
|
|
22
|
+
];
|
|
@@ -12,7 +12,11 @@ import {
|
|
|
12
12
|
enqueueMemoryJob,
|
|
13
13
|
type MemoryJobType,
|
|
14
14
|
} from "../../memory/jobs-store.js";
|
|
15
|
-
import {
|
|
15
|
+
import {
|
|
16
|
+
getEdgeIndex,
|
|
17
|
+
totalEdgeCount,
|
|
18
|
+
validateEdgeTargets,
|
|
19
|
+
} from "../../memory/v2/edge-index.js";
|
|
16
20
|
import { listPages, readPage } from "../../memory/v2/page-store.js";
|
|
17
21
|
import { seedV2SkillEntries } from "../../memory/v2/skill-store.js";
|
|
18
22
|
import { getWorkspaceDir } from "../../util/platform.js";
|
|
@@ -24,7 +28,7 @@ import type { RouteHandlerArgs } from "./types.js";
|
|
|
24
28
|
|
|
25
29
|
const MemoryV2BackfillParams = z
|
|
26
30
|
.object({
|
|
27
|
-
op: z.enum(["migrate", "
|
|
31
|
+
op: z.enum(["migrate", "reembed", "activation-recompute"]),
|
|
28
32
|
force: z.boolean().optional(),
|
|
29
33
|
})
|
|
30
34
|
.strict();
|
|
@@ -37,7 +41,6 @@ export type MemoryV2BackfillResult = {
|
|
|
37
41
|
|
|
38
42
|
const OP_TO_JOB_TYPE: Record<MemoryV2BackfillOp, MemoryJobType> = {
|
|
39
43
|
migrate: "memory_v2_migrate",
|
|
40
|
-
"rebuild-edges": "memory_v2_rebuild_edges",
|
|
41
44
|
reembed: "memory_v2_reembed",
|
|
42
45
|
"activation-recompute": "memory_v2_activation_recompute",
|
|
43
46
|
};
|
|
@@ -98,21 +101,13 @@ async function handleValidate({
|
|
|
98
101
|
}
|
|
99
102
|
}
|
|
100
103
|
|
|
101
|
-
const
|
|
102
|
-
const
|
|
103
|
-
|
|
104
|
-
const missing = new Set(validation.missing);
|
|
105
|
-
const missingEdgeEndpoints: MissingEdgeEndpoint[] = [];
|
|
106
|
-
for (const [from, to] of edgesIdx.edges) {
|
|
107
|
-
if (missing.has(from) || missing.has(to)) {
|
|
108
|
-
missingEdgeEndpoints.push({ from, to });
|
|
109
|
-
}
|
|
110
|
-
}
|
|
104
|
+
const edgeIndex = await getEdgeIndex(workspaceDir);
|
|
105
|
+
const { missing } = validateEdgeTargets(edgeIndex, knownSlugs);
|
|
111
106
|
|
|
112
107
|
return {
|
|
113
108
|
pageCount: knownSlugs.size,
|
|
114
|
-
edgeCount:
|
|
115
|
-
missingEdgeEndpoints,
|
|
109
|
+
edgeCount: totalEdgeCount(edgeIndex),
|
|
110
|
+
missingEdgeEndpoints: missing,
|
|
116
111
|
oversizedPages,
|
|
117
112
|
parseFailures,
|
|
118
113
|
};
|