@vellumai/assistant 0.4.26 → 0.4.29
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/.env.example +2 -2
- package/AGENTS.md +5 -0
- package/ARCHITECTURE.md +169 -69
- package/Dockerfile +1 -1
- package/README.md +111 -112
- package/bun.lock +0 -3
- package/docs/architecture/integrations.md +0 -1
- package/docs/architecture/memory.md +100 -63
- package/docs/error-handling.md +71 -0
- package/docs/runbook-trusted-contacts.md +10 -9
- package/docs/trusted-contact-access.md +48 -46
- package/package.json +3 -3
- package/scripts/compare-benchmarks.sh +12 -5
- package/scripts/ipc/check-swift-decoder-drift.ts +3 -0
- package/scripts/test.sh +89 -5
- package/src/__tests__/__snapshots__/ipc-snapshot.test.ts.snap +46 -0
- package/src/__tests__/access-request-decision.test.ts +0 -1
- package/src/__tests__/account-registry.test.ts +1 -1
- package/src/__tests__/actor-token-service.test.ts +36 -23
- package/src/__tests__/agent-loop-thinking.test.ts +29 -13
- package/src/__tests__/agent-loop.test.ts +2 -1
- package/src/__tests__/app-builder-tool-scripts.test.ts +1 -1
- package/src/__tests__/approval-routes-http.test.ts +2 -2
- package/src/__tests__/asset-materialize-tool.test.ts +7 -7
- package/src/__tests__/asset-search-tool.test.ts +7 -7
- package/src/__tests__/browser-fill-credential.test.ts +1 -1
- package/src/__tests__/bundled-skill-retrieval-guard.test.ts +217 -0
- package/src/__tests__/call-controller.test.ts +99 -69
- package/src/__tests__/call-start-guardian-guard.test.ts +1 -1
- package/src/__tests__/channel-approval-routes.test.ts +113 -70
- package/src/__tests__/channel-guardian.test.ts +173 -282
- package/src/__tests__/channel-readiness-service.test.ts +6 -2
- package/src/__tests__/channel-reply-delivery.test.ts +2 -2
- package/src/__tests__/channel-retry-sweep.test.ts +14 -14
- package/src/__tests__/checker.test.ts +12 -31
- package/src/__tests__/claude-code-tool-profiles.test.ts +1 -1
- package/src/__tests__/commit-message-enrichment-service.test.ts +67 -59
- package/src/__tests__/compaction.benchmark.test.ts +6 -2
- package/src/__tests__/computer-use-tools.test.ts +1 -1
- package/src/__tests__/config-schema.test.ts +66 -7
- package/src/__tests__/confirmation-request-guardian-bridge.test.ts +29 -29
- package/src/__tests__/contacts-tools.test.ts +63 -2
- package/src/__tests__/context-overflow-approval.test.ts +141 -0
- package/src/__tests__/context-overflow-policy.test.ts +171 -0
- package/src/__tests__/context-overflow-reducer.test.ts +533 -0
- package/src/__tests__/context-window-manager.test.ts +97 -0
- package/src/__tests__/conversation-attention-telegram.test.ts +38 -46
- package/src/__tests__/conversation-pairing.test.ts +2 -2
- package/src/__tests__/conversation-routes-guardian-reply.test.ts +214 -10
- package/src/__tests__/conversation-routes.test.ts +4 -7
- package/src/__tests__/credential-broker-browser-fill.test.ts +13 -2
- package/src/__tests__/credential-security-e2e.test.ts +1 -1
- package/src/__tests__/credential-security-invariants.test.ts +1 -1
- package/src/__tests__/credential-vault-unit.test.ts +1 -1
- package/src/__tests__/credential-vault.test.ts +11 -8
- package/src/__tests__/daemon-lifecycle.test.ts +2 -2
- package/src/__tests__/daemon-server-session-init.test.ts +6 -6
- package/src/__tests__/delete-managed-skill-tool.test.ts +1 -1
- package/src/__tests__/deterministic-verification-control-plane.test.ts +2 -2
- package/src/__tests__/emit-signal-routing-intent.test.ts +4 -0
- package/src/__tests__/encrypted-store.test.ts +10 -7
- package/src/__tests__/ephemeral-permissions.test.ts +3 -3
- package/src/__tests__/file-edit-tool.test.ts +1 -1
- package/src/__tests__/file-read-tool.test.ts +1 -1
- package/src/__tests__/file-write-tool.test.ts +1 -1
- package/src/__tests__/fixtures/credential-security-fixtures.ts +87 -64
- package/src/__tests__/fixtures/media-reuse-fixtures.ts +37 -31
- package/src/__tests__/fixtures/mock-signup-server.ts +171 -115
- package/src/__tests__/fixtures/proxy-fixtures.ts +39 -39
- package/src/__tests__/followup-tools.test.ts +1 -1
- package/src/__tests__/gateway-only-guard.test.ts +3 -0
- package/src/__tests__/guardian-actions-endpoint.test.ts +543 -1
- package/src/__tests__/guardian-control-plane-policy.test.ts +15 -15
- package/src/__tests__/guardian-dispatch.test.ts +79 -1
- package/src/__tests__/guardian-grant-minting.test.ts +14 -14
- package/src/__tests__/guardian-outbound-http.test.ts +1 -2
- package/src/__tests__/guardian-principal-id-roundtrip.test.ts +0 -41
- package/src/__tests__/guardian-routing-invariants.test.ts +2 -5
- package/src/__tests__/guardian-routing-state.test.ts +36 -52
- package/src/__tests__/guardian-verification-intent-routing.test.ts +4 -6
- package/src/__tests__/guardian-verify-setup-skill-regression.test.ts +2 -2
- package/src/__tests__/handle-user-message-secret-resume.test.ts +39 -1
- package/src/__tests__/handlers-cu-observation-blob.test.ts +21 -10
- package/src/__tests__/handlers-telegram-config.test.ts +14 -14
- package/src/__tests__/handlers-user-message-approval-consumption.test.ts +23 -2
- package/src/__tests__/headless-browser-interactions.test.ts +1 -1
- package/src/__tests__/headless-browser-navigate.test.ts +1 -1
- package/src/__tests__/headless-browser-read-tools.test.ts +1 -1
- package/src/__tests__/headless-browser-snapshot.test.ts +1 -1
- package/src/__tests__/heartbeat-service.test.ts +45 -2
- package/src/__tests__/host-file-edit-tool.test.ts +1 -1
- package/src/__tests__/host-file-read-tool.test.ts +1 -1
- package/src/__tests__/host-file-write-tool.test.ts +1 -1
- package/src/__tests__/host-shell-tool.test.ts +1 -1
- package/src/__tests__/inbound-invite-redemption.test.ts +16 -18
- package/src/__tests__/ingress-reconcile.test.ts +2 -2
- package/src/__tests__/ingress-routes-http.test.ts +2 -1
- package/src/__tests__/integrations-cli.test.ts +256 -0
- package/src/__tests__/intent-routing.test.ts +4 -5
- package/src/__tests__/invite-redemption-service.test.ts +4 -3
- package/src/__tests__/ipc-snapshot.test.ts +28 -0
- package/src/__tests__/managed-skill-lifecycle.test.ts +1 -1
- package/src/__tests__/mcp-cli.test.ts +136 -57
- package/src/__tests__/mcp-client-auth.test.ts +95 -0
- package/src/__tests__/media-generate-image.test.ts +2 -2
- package/src/__tests__/media-reuse-story.e2e.test.ts +8 -8
- package/src/__tests__/memory-regressions.test.ts +6 -6
- package/src/__tests__/messaging-send-tool.test.ts +1 -1
- package/src/__tests__/migration-cross-version-compatibility.test.ts +1855 -0
- package/src/__tests__/migration-export-http.test.ts +540 -0
- package/src/__tests__/migration-import-commit-http.test.ts +823 -0
- package/src/__tests__/migration-import-preflight-http.test.ts +755 -0
- package/src/__tests__/migration-parity-persistence.test.ts +1854 -0
- package/src/__tests__/migration-transport.test.ts +904 -0
- package/src/__tests__/migration-validate-http.test.ts +698 -0
- package/src/__tests__/migration-wizard.test.ts +1289 -0
- package/src/__tests__/non-member-access-request.test.ts +17 -17
- package/src/__tests__/notification-decision-strategy.test.ts +110 -2
- package/src/__tests__/notification-deep-link.test.ts +18 -0
- package/src/__tests__/notification-guardian-path.test.ts +0 -1
- package/src/__tests__/oauth2-gateway-transport.test.ts +1 -1
- package/src/__tests__/playbook-execution.test.ts +1 -1
- package/src/__tests__/playbook-tools.test.ts +1 -1
- package/src/__tests__/provider-streaming.benchmark.test.ts +3 -1
- package/src/__tests__/proxy-approval-callback.test.ts +1 -1
- package/src/__tests__/qdrant-manager.test.ts +40 -11
- package/src/__tests__/rebind-secrets-screen.test.ts +839 -0
- package/src/__tests__/recording-handler.test.ts +2 -2
- package/src/__tests__/recording-intent-handler.test.ts +3 -3
- package/src/__tests__/recording-state-machine.test.ts +2 -2
- package/src/__tests__/relay-server.test.ts +506 -227
- package/src/__tests__/reminder-store.test.ts +8 -0
- package/src/__tests__/reminder.test.ts +8 -0
- package/src/__tests__/{resolve-guardian-trust-class.test.ts → resolve-trust-class.test.ts} +11 -17
- package/src/__tests__/scaffold-managed-skill-tool.test.ts +1 -1
- package/src/__tests__/schedule-tools.test.ts +1 -1
- package/src/__tests__/script-proxy-certs.test.ts +1 -1
- package/src/__tests__/script-proxy-connect-tunnel.test.ts +2 -3
- package/src/__tests__/script-proxy-decision-trace.test.ts +2 -2
- package/src/__tests__/script-proxy-http-forwarder.test.ts +1 -1
- package/src/__tests__/script-proxy-injection-runtime.test.ts +5 -5
- package/src/__tests__/script-proxy-mitm-handler.test.ts +4 -4
- package/src/__tests__/script-proxy-policy-runtime.test.ts +2 -2
- package/src/__tests__/script-proxy-policy.test.ts +2 -2
- package/src/__tests__/script-proxy-session-manager.test.ts +4 -7
- package/src/__tests__/script-proxy-session-runtime.test.ts +1 -6
- package/src/__tests__/secret-onetime-send.test.ts +4 -4
- package/src/__tests__/secret-scanner-executor.test.ts +2 -2
- package/src/__tests__/send-endpoint-busy.test.ts +11 -9
- package/src/__tests__/send-notification-tool.test.ts +2 -2
- package/src/__tests__/session-abort-tool-results.test.ts +17 -2
- package/src/__tests__/session-agent-loop.test.ts +456 -35
- package/src/__tests__/session-confirmation-signals.test.ts +3 -2
- package/src/__tests__/session-conflict-gate.test.ts +20 -3
- package/src/__tests__/session-init.benchmark.test.ts +2 -2
- package/src/__tests__/session-load-history-repair.test.ts +7 -7
- package/src/__tests__/session-pre-run-repair.test.ts +17 -2
- package/src/__tests__/session-profile-injection.test.ts +20 -3
- package/src/__tests__/session-provider-retry-repair.test.ts +86 -6
- package/src/__tests__/session-queue.test.ts +33 -18
- package/src/__tests__/session-runtime-assembly.test.ts +147 -1
- package/src/__tests__/session-runtime-workspace.test.ts +40 -0
- package/src/__tests__/session-slash-known.test.ts +21 -3
- package/src/__tests__/session-slash-queue.test.ts +17 -2
- package/src/__tests__/session-slash-unknown.test.ts +17 -2
- package/src/__tests__/session-surfaces-deselection.test.ts +208 -0
- package/src/__tests__/session-workspace-cache-state.test.ts +2 -2
- package/src/__tests__/session-workspace-injection.test.ts +17 -2
- package/src/__tests__/session-workspace-tool-tracking.test.ts +17 -2
- package/src/__tests__/shell-credential-ref.test.ts +1 -1
- package/src/__tests__/shell-tool-proxy-mode.test.ts +1 -1
- package/src/__tests__/skill-load-feature-flag.test.ts +1 -1
- package/src/__tests__/skill-load-tool.test.ts +1 -1
- package/src/__tests__/skill-script-runner-host.test.ts +1 -1
- package/src/__tests__/skill-script-runner-sandbox.test.ts +1 -1
- package/src/__tests__/skill-script-runner.test.ts +1 -1
- package/src/__tests__/skill-tool-factory.test.ts +1 -1
- package/src/__tests__/slack-skill.test.ts +3 -2
- package/src/__tests__/subagent-tools.test.ts +3 -3
- package/src/__tests__/swarm-recursion.test.ts +1 -1
- package/src/__tests__/swarm-session-integration.test.ts +1 -1
- package/src/__tests__/swarm-tool.test.ts +1 -1
- package/src/__tests__/task-management-tools.test.ts +1 -1
- package/src/__tests__/task-tools.test.ts +1 -1
- package/src/__tests__/terminal-tools.test.ts +1 -1
- package/src/__tests__/test-support/browser-skill-harness.ts +39 -27
- package/src/__tests__/test-support/computer-use-skill-harness.ts +14 -14
- package/src/__tests__/tool-approval-handler.test.ts +15 -15
- package/src/__tests__/tool-execution-abort-cleanup.test.ts +1 -1
- package/src/__tests__/tool-execution-pipeline.benchmark.test.ts +1 -1
- package/src/__tests__/tool-executor-lifecycle-events.test.ts +2 -2
- package/src/__tests__/tool-executor-shell-integration.test.ts +1 -1
- package/src/__tests__/tool-executor.test.ts +23 -182
- package/src/__tests__/tool-grant-request-escalation.test.ts +11 -11
- package/src/__tests__/tool-permission-simulate-handler.test.ts +4 -4
- package/src/__tests__/transfer-progress-screen.test.ts +1180 -0
- package/src/__tests__/trust-context-guards.test.ts +25 -29
- package/src/__tests__/trusted-contact-approval-notifier.test.ts +23 -21
- package/src/__tests__/trusted-contact-inline-approval-integration.test.ts +37 -40
- package/src/__tests__/trusted-contact-lifecycle-notifications.test.ts +29 -25
- package/src/__tests__/trusted-contact-multichannel.test.ts +25 -24
- package/src/__tests__/trusted-contact-verification.test.ts +63 -77
- package/src/__tests__/turn-commit.test.ts +18 -18
- package/src/__tests__/twilio-provider.test.ts +7 -7
- package/src/__tests__/validation-results-screen.test.ts +1107 -0
- package/src/__tests__/view-image-tool.test.ts +1 -1
- package/src/__tests__/voice-invite-redemption.test.ts +3 -2
- package/src/__tests__/voice-scoped-grant-consumer.test.ts +12 -12
- package/src/__tests__/voice-session-bridge.test.ts +24 -24
- package/src/agent/attachments.ts +3 -1
- package/src/agent/loop.ts +13 -13
- package/src/agent/message-types.ts +13 -7
- package/src/amazon/cart.ts +59 -32
- package/src/amazon/checkout.ts +25 -14
- package/src/amazon/client.ts +68 -48
- package/src/amazon/product-details.ts +3 -3
- package/src/amazon/request-extractor.ts +46 -31
- package/src/amazon/search.ts +6 -4
- package/src/amazon/session.ts +33 -24
- package/src/approvals/AGENTS.md +26 -0
- package/src/approvals/approval-primitive.ts +87 -64
- package/src/approvals/guardian-decision-primitive.ts +172 -81
- package/src/approvals/guardian-request-resolvers.ts +262 -155
- package/src/autonomy/autonomy-resolver.ts +7 -5
- package/src/autonomy/autonomy-store.ts +34 -19
- package/src/autonomy/disposition-mapper.ts +5 -5
- package/src/autonomy/index.ts +6 -6
- package/src/autonomy/types.ts +7 -3
- package/src/browser-extension-relay/client.ts +50 -19
- package/src/browser-extension-relay/protocol.ts +11 -11
- package/src/browser-extension-relay/server.ts +45 -20
- package/src/bundler/app-bundler.ts +75 -50
- package/src/bundler/bundle-scanner.ts +145 -41
- package/src/bundler/bundle-signer.ts +16 -14
- package/src/bundler/signature-verifier.ts +36 -33
- package/src/calls/call-constants.ts +10 -3
- package/src/calls/call-controller.ts +473 -214
- package/src/calls/call-conversation-messages.ts +25 -15
- package/src/calls/call-domain.ts +401 -148
- package/src/calls/call-pointer-message-composer.ts +26 -21
- package/src/calls/call-pointer-messages.ts +52 -28
- package/src/calls/call-recovery.ts +53 -37
- package/src/calls/call-state-machine.ts +37 -7
- package/src/calls/call-state.ts +35 -13
- package/src/calls/call-store.ts +165 -77
- package/src/calls/elevenlabs-client.ts +39 -20
- package/src/calls/guardian-action-sweep.ts +42 -24
- package/src/calls/guardian-dispatch.ts +79 -56
- package/src/calls/guardian-question-copy.ts +28 -23
- package/src/calls/relay-server.ts +1121 -532
- package/src/calls/speaker-identification.ts +21 -15
- package/src/calls/twilio-config.ts +34 -17
- package/src/calls/twilio-provider.ts +108 -55
- package/src/calls/twilio-rest.ts +212 -100
- package/src/calls/twilio-routes.ts +165 -92
- package/src/calls/types.ts +55 -7
- package/src/calls/voice-quality.ts +6 -4
- package/src/calls/voice-session-bridge.ts +181 -133
- package/src/channels/config.ts +17 -13
- package/src/channels/types.ts +38 -10
- package/src/cli/amazon.ts +333 -227
- package/src/cli/config-commands.ts +236 -146
- package/src/cli/core-commands.ts +403 -329
- package/src/cli/email-guardrails.ts +38 -19
- package/src/cli/email.ts +207 -153
- package/src/cli/influencer.ts +58 -56
- package/src/cli/integrations.ts +362 -0
- package/src/cli/ipc-client.ts +24 -19
- package/src/cli/map.ts +176 -129
- package/src/cli/mcp.ts +260 -152
- package/src/cli/sequence.ts +165 -107
- package/src/cli/twitter.ts +302 -218
- package/src/cli.ts +418 -279
- package/src/commands/cc-command-registry.ts +52 -27
- package/src/config/agent-schema.ts +217 -134
- package/src/config/assistant-feature-flags.ts +23 -18
- package/src/config/bundled-skills/_shared/CLI_RETRIEVAL_PATTERN.md +19 -0
- package/src/config/bundled-skills/app-builder/tools/app-create.ts +7 -4
- package/src/config/bundled-skills/app-builder/tools/app-delete.ts +6 -3
- package/src/config/bundled-skills/app-builder/tools/app-file-edit.ts +7 -4
- package/src/config/bundled-skills/app-builder/tools/app-file-list.ts +6 -3
- package/src/config/bundled-skills/app-builder/tools/app-file-read.ts +6 -3
- package/src/config/bundled-skills/app-builder/tools/app-file-write.ts +7 -4
- package/src/config/bundled-skills/app-builder/tools/app-list.ts +6 -3
- package/src/config/bundled-skills/app-builder/tools/app-query.ts +6 -3
- package/src/config/bundled-skills/app-builder/tools/app-update.ts +6 -3
- package/src/config/bundled-skills/browser/tools/browser-click.ts +5 -2
- package/src/config/bundled-skills/browser/tools/browser-close.ts +5 -2
- package/src/config/bundled-skills/browser/tools/browser-extract.ts +5 -2
- package/src/config/bundled-skills/browser/tools/browser-fill-credential.ts +5 -2
- package/src/config/bundled-skills/browser/tools/browser-hover.ts +5 -2
- package/src/config/bundled-skills/browser/tools/browser-navigate.ts +5 -2
- package/src/config/bundled-skills/browser/tools/browser-press-key.ts +5 -2
- package/src/config/bundled-skills/browser/tools/browser-screenshot.ts +5 -2
- package/src/config/bundled-skills/browser/tools/browser-scroll.ts +5 -2
- package/src/config/bundled-skills/browser/tools/browser-select-option.ts +5 -2
- package/src/config/bundled-skills/browser/tools/browser-snapshot.ts +5 -2
- package/src/config/bundled-skills/browser/tools/browser-type.ts +5 -2
- package/src/config/bundled-skills/browser/tools/browser-wait-for-download.ts +13 -6
- package/src/config/bundled-skills/browser/tools/browser-wait-for.ts +5 -2
- package/src/config/bundled-skills/claude-code/TOOLS.json +4 -0
- package/src/config/bundled-skills/claude-code/tools/claude-code.ts +5 -2
- package/src/config/bundled-skills/computer-use/SKILL.md +2 -2
- package/src/config/bundled-skills/computer-use/tools/computer-use-click.ts +6 -3
- package/src/config/bundled-skills/computer-use/tools/computer-use-done.ts +6 -3
- package/src/config/bundled-skills/computer-use/tools/computer-use-double-click.ts +10 -3
- package/src/config/bundled-skills/computer-use/tools/computer-use-drag.ts +6 -3
- package/src/config/bundled-skills/computer-use/tools/computer-use-key.ts +6 -3
- package/src/config/bundled-skills/computer-use/tools/computer-use-open-app.ts +6 -3
- package/src/config/bundled-skills/computer-use/tools/computer-use-request-control.ts +10 -3
- package/src/config/bundled-skills/computer-use/tools/computer-use-respond.ts +6 -3
- package/src/config/bundled-skills/computer-use/tools/computer-use-right-click.ts +10 -3
- package/src/config/bundled-skills/computer-use/tools/computer-use-run-applescript.ts +10 -3
- package/src/config/bundled-skills/computer-use/tools/computer-use-scroll.ts +6 -3
- package/src/config/bundled-skills/computer-use/tools/computer-use-type-text.ts +6 -3
- package/src/config/bundled-skills/computer-use/tools/computer-use-wait.ts +6 -3
- package/src/config/bundled-skills/configure-settings/SKILL.md +28 -14
- package/src/config/bundled-skills/contacts/SKILL.md +446 -15
- package/src/config/bundled-skills/contacts/tools/contact-merge.ts +99 -20
- package/src/config/bundled-skills/contacts/tools/contact-search.ts +74 -17
- package/src/config/bundled-skills/contacts/tools/contact-upsert.ts +89 -26
- package/src/config/bundled-skills/document/tools/document-create.ts +5 -2
- package/src/config/bundled-skills/document/tools/document-update.ts +5 -2
- package/src/config/bundled-skills/doordash/doordash-cli.ts +17 -7
- package/src/config/bundled-skills/email-setup/SKILL.md +9 -9
- package/src/config/bundled-skills/followups/tools/followup-create.ts +5 -2
- package/src/config/bundled-skills/followups/tools/followup-list.ts +5 -2
- package/src/config/bundled-skills/followups/tools/followup-resolve.ts +5 -2
- package/src/config/bundled-skills/google-calendar/calendar-client.ts +44 -32
- package/src/config/bundled-skills/google-calendar/tools/calendar-check-availability.ts +11 -5
- package/src/config/bundled-skills/google-calendar/tools/calendar-create-event.ts +13 -7
- package/src/config/bundled-skills/google-calendar/tools/calendar-get-event.ts +11 -5
- package/src/config/bundled-skills/google-calendar/tools/calendar-list-events.ts +13 -7
- package/src/config/bundled-skills/google-calendar/tools/calendar-rsvp.ts +28 -12
- package/src/config/bundled-skills/google-calendar/tools/shared.ts +6 -4
- package/src/config/bundled-skills/google-calendar/types.ts +3 -3
- package/src/config/bundled-skills/guardian-verify-setup/SKILL.md +46 -24
- package/src/config/bundled-skills/image-studio/tools/media-generate-image.ts +36 -19
- package/src/config/bundled-skills/knowledge-graph/tools/graph-query.ts +60 -35
- package/src/config/bundled-skills/mcp-setup/SKILL.md +75 -0
- package/src/config/bundled-skills/media-processing/SKILL.md +55 -15
- package/src/config/bundled-skills/media-processing/TOOLS.json +20 -2
- package/src/config/bundled-skills/media-processing/__tests__/concurrency-pool.test.ts +12 -10
- package/src/config/bundled-skills/media-processing/__tests__/cost-tracker.test.ts +34 -19
- package/src/config/bundled-skills/media-processing/__tests__/preprocess.test.ts +82 -66
- package/src/config/bundled-skills/media-processing/services/audio-transcribe.ts +148 -0
- package/src/config/bundled-skills/media-processing/services/concurrency-pool.ts +1 -1
- package/src/config/bundled-skills/media-processing/services/cost-tracker.ts +8 -3
- package/src/config/bundled-skills/media-processing/services/gemini-map.ts +117 -53
- package/src/config/bundled-skills/media-processing/services/gemini-video.ts +273 -0
- package/src/config/bundled-skills/media-processing/services/preprocess.ts +185 -97
- package/src/config/bundled-skills/media-processing/services/processing-pipeline.ts +32 -27
- package/src/config/bundled-skills/media-processing/services/reduce.ts +101 -24
- package/src/config/bundled-skills/media-processing/tools/analyze-keyframes.ts +121 -55
- package/src/config/bundled-skills/media-processing/tools/extract-keyframes.ts +58 -24
- package/src/config/bundled-skills/media-processing/tools/generate-clip.ts +177 -91
- package/src/config/bundled-skills/media-processing/tools/ingest-media.ts +98 -70
- package/src/config/bundled-skills/media-processing/tools/media-diagnostics.ts +59 -19
- package/src/config/bundled-skills/media-processing/tools/media-status.ts +26 -10
- package/src/config/bundled-skills/media-processing/tools/query-media-events.ts +29 -14
- package/src/config/bundled-skills/messaging/SKILL.md +7 -5
- package/src/config/bundled-skills/messaging/TOOLS.json +7 -7
- package/src/config/bundled-skills/messaging/tools/gmail-archive-by-query.ts +31 -13
- package/src/config/bundled-skills/messaging/tools/gmail-archive.ts +16 -10
- package/src/config/bundled-skills/messaging/tools/gmail-batch-label.ts +18 -9
- package/src/config/bundled-skills/messaging/tools/gmail-download-attachment.ts +23 -16
- package/src/config/bundled-skills/messaging/tools/gmail-draft.ts +28 -12
- package/src/config/bundled-skills/messaging/tools/gmail-filters.ts +41 -21
- package/src/config/bundled-skills/messaging/tools/gmail-follow-up.ts +44 -23
- package/src/config/bundled-skills/messaging/tools/gmail-forward.ts +73 -33
- package/src/config/bundled-skills/messaging/tools/gmail-label.ts +15 -9
- package/src/config/bundled-skills/messaging/tools/gmail-list-attachments.ts +22 -14
- package/src/config/bundled-skills/messaging/tools/gmail-outreach-scan.ts +99 -50
- package/src/config/bundled-skills/messaging/tools/gmail-send-draft.ts +14 -8
- package/src/config/bundled-skills/messaging/tools/gmail-send-with-attachments.ts +63 -44
- package/src/config/bundled-skills/messaging/tools/gmail-sender-digest.ts +90 -46
- package/src/config/bundled-skills/messaging/tools/gmail-summarize-thread.ts +43 -22
- package/src/config/bundled-skills/messaging/tools/gmail-trash.ts +15 -9
- package/src/config/bundled-skills/messaging/tools/gmail-triage.ts +51 -22
- package/src/config/bundled-skills/messaging/tools/gmail-unsubscribe.ts +62 -26
- package/src/config/bundled-skills/messaging/tools/gmail-vacation.ts +34 -19
- package/src/config/bundled-skills/messaging/tools/google-contacts.ts +32 -16
- package/src/config/bundled-skills/messaging/tools/messaging-analyze-activity.ts +10 -4
- package/src/config/bundled-skills/messaging/tools/messaging-analyze-style.ts +91 -47
- package/src/config/bundled-skills/messaging/tools/messaging-archive-by-sender.ts +21 -9
- package/src/config/bundled-skills/messaging/tools/messaging-auth-test.ts +9 -3
- package/src/config/bundled-skills/messaging/tools/messaging-draft.ts +30 -17
- package/src/config/bundled-skills/messaging/tools/messaging-list-conversations.ts +10 -4
- package/src/config/bundled-skills/messaging/tools/messaging-mark-read.ts +14 -6
- package/src/config/bundled-skills/messaging/tools/messaging-read.ts +16 -5
- package/src/config/bundled-skills/messaging/tools/messaging-reply.ts +63 -36
- package/src/config/bundled-skills/messaging/tools/messaging-search.ts +10 -4
- package/src/config/bundled-skills/messaging/tools/messaging-send.ts +30 -12
- package/src/config/bundled-skills/messaging/tools/messaging-sender-digest.ts +48 -29
- package/src/config/bundled-skills/messaging/tools/scan-result-store.ts +20 -6
- package/src/config/bundled-skills/messaging/tools/send-notification.ts +1 -1
- package/src/config/bundled-skills/messaging/tools/sequence-analytics.ts +59 -22
- package/src/config/bundled-skills/messaging/tools/sequence-cancel.ts +13 -7
- package/src/config/bundled-skills/messaging/tools/sequence-create.ts +27 -12
- package/src/config/bundled-skills/messaging/tools/sequence-delete.ts +14 -6
- package/src/config/bundled-skills/messaging/tools/sequence-enroll.ts +30 -11
- package/src/config/bundled-skills/messaging/tools/sequence-enrollment-list.ts +16 -8
- package/src/config/bundled-skills/messaging/tools/sequence-get.ts +31 -13
- package/src/config/bundled-skills/messaging/tools/sequence-import.ts +38 -22
- package/src/config/bundled-skills/messaging/tools/sequence-list.ts +16 -7
- package/src/config/bundled-skills/messaging/tools/sequence-pause.ts +29 -10
- package/src/config/bundled-skills/messaging/tools/sequence-resume.ts +16 -8
- package/src/config/bundled-skills/messaging/tools/sequence-update.ts +35 -16
- package/src/config/bundled-skills/messaging/tools/shared.ts +26 -12
- package/src/config/bundled-skills/notifications/tools/send-notification.ts +69 -34
- package/src/config/bundled-skills/notifications/tools/shared.ts +1 -1
- package/src/config/bundled-skills/phone-calls/SKILL.md +46 -48
- package/src/config/bundled-skills/phone-calls/tools/call-end.ts +1 -1
- package/src/config/bundled-skills/phone-calls/tools/call-start.ts +1 -1
- package/src/config/bundled-skills/phone-calls/tools/call-status.ts +1 -1
- package/src/config/bundled-skills/playbooks/tools/playbook-create.ts +91 -51
- package/src/config/bundled-skills/playbooks/tools/playbook-delete.ts +30 -16
- package/src/config/bundled-skills/playbooks/tools/playbook-list.ts +66 -27
- package/src/config/bundled-skills/playbooks/tools/playbook-update.ts +89 -42
- package/src/config/bundled-skills/public-ingress/SKILL.md +26 -19
- package/src/config/bundled-skills/reminder/tools/reminder-cancel.ts +5 -2
- package/src/config/bundled-skills/reminder/tools/reminder-create.ts +5 -2
- package/src/config/bundled-skills/reminder/tools/reminder-list.ts +5 -2
- package/src/config/bundled-skills/schedule/tools/schedule-create.ts +5 -2
- package/src/config/bundled-skills/schedule/tools/schedule-delete.ts +5 -2
- package/src/config/bundled-skills/schedule/tools/schedule-list.ts +5 -2
- package/src/config/bundled-skills/schedule/tools/schedule-update.ts +5 -2
- package/src/config/bundled-skills/screen-recording/SKILL.md +11 -3
- package/src/config/bundled-skills/self-upgrade/SKILL.md +9 -8
- package/src/config/bundled-skills/slack/TOOLS.json +33 -15
- package/src/config/bundled-skills/slack/tools/shared.ts +7 -5
- package/src/config/bundled-skills/slack/tools/slack-add-reaction.ts +11 -5
- package/src/config/bundled-skills/slack/tools/slack-channel-details.ts +11 -5
- package/src/config/bundled-skills/slack/tools/slack-configure-channels.ts +46 -16
- package/src/config/bundled-skills/slack/tools/slack-delete-message.ts +11 -5
- package/src/config/bundled-skills/slack/tools/slack-edit-message.ts +28 -0
- package/src/config/bundled-skills/slack/tools/slack-leave-channel.ts +12 -6
- package/src/config/bundled-skills/sms-setup/SKILL.md +5 -8
- package/src/config/bundled-skills/subagent/tools/subagent-abort.ts +5 -2
- package/src/config/bundled-skills/subagent/tools/subagent-message.ts +5 -2
- package/src/config/bundled-skills/subagent/tools/subagent-read.ts +5 -2
- package/src/config/bundled-skills/subagent/tools/subagent-spawn.ts +5 -2
- package/src/config/bundled-skills/subagent/tools/subagent-status.ts +5 -2
- package/src/config/bundled-skills/tasks/tools/task-delete.ts +5 -2
- package/src/config/bundled-skills/tasks/tools/task-list-add.ts +5 -2
- package/src/config/bundled-skills/tasks/tools/task-list-remove.ts +5 -2
- package/src/config/bundled-skills/tasks/tools/task-list-show.ts +5 -2
- package/src/config/bundled-skills/tasks/tools/task-list-update.ts +5 -2
- package/src/config/bundled-skills/tasks/tools/task-list.ts +5 -2
- package/src/config/bundled-skills/tasks/tools/task-queue-run.ts +5 -2
- package/src/config/bundled-skills/tasks/tools/task-run.ts +5 -2
- package/src/config/bundled-skills/tasks/tools/task-save.ts +5 -2
- package/src/config/bundled-skills/telegram-setup/SKILL.md +7 -8
- package/src/config/bundled-skills/transcribe/tools/transcribe-media.ts +232 -127
- package/src/config/bundled-skills/twilio-setup/SKILL.md +7 -12
- package/src/config/bundled-skills/twitter/SKILL.md +19 -2
- package/src/config/bundled-skills/voice-setup/SKILL.md +5 -5
- package/src/config/bundled-skills/watcher/tools/watcher-create.ts +5 -2
- package/src/config/bundled-skills/watcher/tools/watcher-delete.ts +5 -2
- package/src/config/bundled-skills/watcher/tools/watcher-digest.ts +5 -2
- package/src/config/bundled-skills/watcher/tools/watcher-list.ts +5 -2
- package/src/config/bundled-skills/watcher/tools/watcher-update.ts +5 -2
- package/src/config/bundled-skills/weather/tools/get-weather.ts +5 -2
- package/src/config/calls-schema.ts +108 -63
- package/src/config/computer-use-prompt.ts +7 -7
- package/src/config/core-schema.ts +239 -155
- package/src/config/defaults.ts +2 -2
- package/src/config/elevenlabs-schema.ts +15 -15
- package/src/config/env-registry.ts +33 -33
- package/src/config/feature-flag-registry.json +31 -7
- package/src/config/loader.ts +118 -58
- package/src/config/mcp-schema.ts +29 -15
- package/src/config/memory-schema.ts +434 -229
- package/src/config/notifications-schema.ts +4 -4
- package/src/config/sandbox-schema.ts +2 -2
- package/src/config/schema.ts +12 -2
- package/src/config/skill-state.ts +27 -15
- package/src/config/skills-schema.ts +72 -23
- package/src/config/skills.ts +303 -143
- package/src/config/system-prompt.ts +25 -6
- package/src/config/types.ts +1 -1
- package/src/config/update-bulletin-format.ts +3 -3
- package/src/config/update-bulletin-state.ts +15 -6
- package/src/config/update-bulletin-template-path.ts +8 -4
- package/src/config/update-bulletin.ts +33 -14
- package/src/config/user-reference.ts +8 -8
- package/src/contacts/contact-events.ts +21 -0
- package/src/contacts/contact-store.ts +622 -100
- package/src/contacts/contacts-write.ts +287 -0
- package/src/contacts/index.ts +13 -4
- package/src/contacts/startup-migration.ts +21 -0
- package/src/contacts/types.ts +47 -2
- package/src/context/token-estimator.ts +54 -31
- package/src/context/tool-result-truncation.ts +41 -7
- package/src/context/window-manager.ts +225 -120
- package/src/daemon/approval-generators.ts +83 -55
- package/src/daemon/approved-devices-store.ts +33 -20
- package/src/daemon/assistant-attachments.ts +134 -98
- package/src/daemon/auth-manager.ts +17 -15
- package/src/daemon/classifier.ts +117 -46
- package/src/daemon/computer-use-session.ts +316 -187
- package/src/daemon/config-watcher.ts +91 -44
- package/src/daemon/connection-policy.ts +18 -10
- package/src/daemon/context-overflow-approval.ts +48 -0
- package/src/daemon/context-overflow-policy.ts +50 -0
- package/src/daemon/context-overflow-reducer.ts +300 -0
- package/src/daemon/daemon-control.ts +79 -51
- package/src/daemon/date-context.ts +119 -69
- package/src/daemon/dictation-profile-store.ts +94 -48
- package/src/daemon/dictation-text-processing.ts +33 -12
- package/src/daemon/doordash-steps.ts +92 -49
- package/src/daemon/guardian-action-generators.ts +62 -46
- package/src/daemon/guardian-verification-intent.ts +31 -18
- package/src/daemon/handlers/apps.ts +257 -111
- package/src/daemon/handlers/avatar.ts +20 -15
- package/src/daemon/handlers/computer-use.ts +82 -39
- package/src/daemon/handlers/config-channels.ts +146 -69
- package/src/daemon/handlers/config-heartbeat.ts +114 -59
- package/src/daemon/handlers/config-inbox.ts +277 -106
- package/src/daemon/handlers/config-ingress.ts +127 -55
- package/src/daemon/handlers/config-integrations.ts +145 -88
- package/src/daemon/handlers/config-model.ts +58 -22
- package/src/daemon/handlers/config-platform.ts +40 -16
- package/src/daemon/handlers/config-scheduling.ts +109 -48
- package/src/daemon/handlers/config-slack-channel.ts +67 -35
- package/src/daemon/handlers/config-slack.ts +21 -20
- package/src/daemon/handlers/config-telegram.ts +100 -70
- package/src/daemon/handlers/config-tools.ts +103 -55
- package/src/daemon/handlers/config-trust.ts +50 -20
- package/src/daemon/handlers/config.ts +72 -24
- package/src/daemon/handlers/contacts.ts +163 -0
- package/src/daemon/handlers/diagnostics.ts +90 -48
- package/src/daemon/handlers/documents.ts +74 -46
- package/src/daemon/handlers/guardian-actions.ts +118 -71
- package/src/daemon/handlers/home-base.ts +19 -16
- package/src/daemon/handlers/identity.ts +65 -45
- package/src/daemon/handlers/index.ts +78 -54
- package/src/daemon/handlers/misc.ts +664 -234
- package/src/daemon/handlers/navigate-settings.ts +14 -11
- package/src/daemon/handlers/oauth-connect.ts +48 -35
- package/src/daemon/handlers/open-bundle-handler.ts +31 -24
- package/src/daemon/handlers/pairing.ts +51 -25
- package/src/daemon/handlers/publish.ts +55 -33
- package/src/daemon/handlers/recording.ts +378 -162
- package/src/daemon/handlers/sessions.ts +923 -423
- package/src/daemon/handlers/shared.ts +202 -117
- package/src/daemon/handlers/signing.ts +25 -6
- package/src/daemon/handlers/subagents.ts +117 -56
- package/src/daemon/handlers/twitter-auth.ts +70 -49
- package/src/daemon/handlers/work-items.ts +264 -112
- package/src/daemon/handlers/workspace-files.ts +27 -20
- package/src/daemon/handlers.ts +2 -2
- package/src/daemon/history-repair.ts +16 -15
- package/src/daemon/identity-helpers.ts +4 -4
- package/src/daemon/install-cli-launchers.ts +33 -22
- package/src/daemon/ipc-blob-store.ts +38 -24
- package/src/daemon/ipc-contract/apps.ts +61 -49
- package/src/daemon/ipc-contract/computer-use.ts +47 -37
- package/src/daemon/ipc-contract/contacts.ts +69 -0
- package/src/daemon/ipc-contract/diagnostics.ts +14 -14
- package/src/daemon/ipc-contract/documents.ts +8 -8
- package/src/daemon/ipc-contract/guardian-actions.ts +4 -4
- package/src/daemon/ipc-contract/inbox.ts +16 -16
- package/src/daemon/ipc-contract/integrations.ts +57 -44
- package/src/daemon/ipc-contract/memory.ts +3 -5
- package/src/daemon/ipc-contract/messages.ts +95 -69
- package/src/daemon/ipc-contract/notifications.ts +10 -6
- package/src/daemon/ipc-contract/pairing.ts +8 -8
- package/src/daemon/ipc-contract/schedules.ts +20 -20
- package/src/daemon/ipc-contract/sessions.ts +88 -57
- package/src/daemon/ipc-contract/settings.ts +12 -7
- package/src/daemon/ipc-contract/shared.ts +9 -7
- package/src/daemon/ipc-contract/skills.ts +46 -26
- package/src/daemon/ipc-contract/subagents.ts +9 -9
- package/src/daemon/ipc-contract/trust.ts +11 -11
- package/src/daemon/ipc-contract/work-items.ts +33 -28
- package/src/daemon/ipc-contract/workspace.ts +28 -21
- package/src/daemon/ipc-contract-inventory.json +8 -0
- package/src/daemon/ipc-contract-inventory.ts +29 -26
- package/src/daemon/ipc-contract.ts +111 -44
- package/src/daemon/ipc-handler.ts +27 -19
- package/src/daemon/ipc-protocol.ts +22 -12
- package/src/daemon/ipc-validate.ts +91 -46
- package/src/daemon/lifecycle.ts +25 -1
- package/src/daemon/main.ts +10 -8
- package/src/daemon/media-visibility-policy.ts +3 -1
- package/src/daemon/pairing-store.ts +72 -40
- package/src/daemon/providers-setup.ts +35 -25
- package/src/daemon/recording-executor.ts +37 -30
- package/src/daemon/recording-intent-fallback.ts +58 -28
- package/src/daemon/recording-intent.ts +71 -61
- package/src/daemon/ride-shotgun-handler.ts +201 -121
- package/src/daemon/seed-files.ts +28 -17
- package/src/daemon/server.ts +23 -14
- package/src/daemon/session-agent-loop-handlers.ts +261 -135
- package/src/daemon/session-agent-loop.ts +795 -253
- package/src/daemon/session-attachments.ts +104 -39
- package/src/daemon/session-conflict-gate.ts +72 -28
- package/src/daemon/session-dynamic-profile.ts +36 -22
- package/src/daemon/session-error.ts +50 -45
- package/src/daemon/session-evictor.ts +17 -10
- package/src/daemon/session-history.ts +201 -89
- package/src/daemon/session-lifecycle.ts +79 -42
- package/src/daemon/session-media-retry.ts +89 -41
- package/src/daemon/session-memory.ts +77 -55
- package/src/daemon/session-messaging.ts +261 -111
- package/src/daemon/session-notifiers.ts +57 -45
- package/src/daemon/session-process.ts +370 -154
- package/src/daemon/session-queue-manager.ts +30 -13
- package/src/daemon/session-runtime-assembly.ts +61 -15
- package/src/daemon/session-skill-tools.ts +84 -36
- package/src/daemon/session-slash.ts +178 -113
- package/src/daemon/session-surfaces.ts +498 -211
- package/src/daemon/session-tool-setup.ts +22 -17
- package/src/daemon/session-usage.ts +26 -13
- package/src/daemon/session-workspace.ts +7 -4
- package/src/daemon/session.ts +18 -19
- package/src/daemon/shutdown-handlers.ts +36 -33
- package/src/daemon/tls-certs.ts +90 -57
- package/src/daemon/tool-side-effects.ts +97 -65
- package/src/daemon/trace-emitter.ts +8 -7
- package/src/daemon/video-thumbnail.ts +55 -25
- package/src/daemon/watch-handler.ts +164 -86
- package/src/email/provider.ts +1 -1
- package/src/email/providers/agentmail.ts +87 -45
- package/src/email/providers/index.ts +19 -14
- package/src/email/service.ts +52 -24
- package/src/email/types.ts +2 -2
- package/src/errors.ts +1 -1
- package/src/events/bus.ts +30 -10
- package/src/events/domain-events.ts +19 -13
- package/src/events/index.ts +6 -6
- package/src/events/tool-audit-listener.ts +34 -20
- package/src/events/tool-domain-event-publisher.ts +22 -20
- package/src/events/tool-metrics-listener.ts +26 -21
- package/src/events/tool-notification-listener.ts +5 -5
- package/src/events/tool-profiling-listener.ts +33 -23
- package/src/events/tool-trace-listener.ts +70 -46
- package/src/export/formatter.ts +38 -32
- package/src/followups/followup-store.ts +43 -36
- package/src/followups/index.ts +2 -2
- package/src/followups/types.ts +1 -1
- package/src/gallery/default-gallery.ts +37 -34
- package/src/gallery/gallery-manifest.ts +9 -9
- package/src/heartbeat/heartbeat-service.ts +59 -37
- package/src/home-base/app-link-store.ts +14 -12
- package/src/home-base/bootstrap.ts +14 -8
- package/src/home-base/prebuilt/seed.ts +35 -26
- package/src/home-base/prebuilt-home-base-updater.ts +14 -8
- package/src/hooks/cli.ts +56 -43
- package/src/hooks/config.ts +27 -14
- package/src/hooks/discovery.ts +53 -33
- package/src/hooks/manager.ts +50 -26
- package/src/hooks/runner.ts +35 -29
- package/src/hooks/templates.ts +38 -15
- package/src/hooks/types.ts +13 -13
- package/src/inbound/platform-callback-registration.ts +21 -15
- package/src/inbound/public-ingress-urls.ts +9 -6
- package/src/index.ts +20 -19
- package/src/influencer/client.ts +269 -108
- package/src/instrument.ts +3 -1
- package/src/logfire.ts +64 -39
- package/src/mcp/client.ts +107 -55
- package/src/mcp/manager.ts +45 -18
- package/src/mcp/mcp-oauth-provider.ts +114 -62
- package/src/media/gemini-image-service.ts +28 -21
- package/src/memory/account-store.ts +16 -9
- package/src/memory/admin.ts +87 -57
- package/src/memory/app-git-service.ts +77 -47
- package/src/memory/app-store.ts +151 -77
- package/src/memory/attachments-store.ts +123 -53
- package/src/memory/canonical-guardian-store.ts +190 -48
- package/src/memory/channel-delivery-store.ts +5 -5
- package/src/memory/channel-guardian-store.ts +31 -16
- package/src/memory/checkpoints.ts +14 -7
- package/src/memory/clarification-resolver.ts +219 -104
- package/src/memory/conflict-intent.ts +74 -23
- package/src/memory/conflict-policy.ts +20 -7
- package/src/memory/conflict-store.ts +144 -94
- package/src/memory/contradiction-checker.ts +257 -132
- package/src/memory/conversation-attention-store.ts +72 -32
- package/src/memory/conversation-bootstrap.ts +28 -0
- package/src/memory/conversation-crud.ts +12 -5
- package/src/memory/conversation-display-order-migration.ts +7 -7
- package/src/memory/conversation-key-store.ts +18 -13
- package/src/memory/conversation-queries.ts +130 -52
- package/src/memory/conversation-store.ts +43 -26
- package/src/memory/conversation-title-service.ts +89 -66
- package/src/memory/db-init.ts +90 -2
- package/src/memory/db.ts +10 -3
- package/src/memory/delivery-channels.ts +12 -6
- package/src/memory/delivery-crud.ts +26 -12
- package/src/memory/delivery-status.ts +19 -16
- package/src/memory/embedding-backend.ts +205 -77
- package/src/memory/embedding-gemini.ts +23 -10
- package/src/memory/embedding-local.ts +89 -44
- package/src/memory/embedding-ollama.ts +25 -13
- package/src/memory/embedding-openai.ts +20 -11
- package/src/memory/embedding-runtime-manager.ts +163 -90
- package/src/memory/entity-extractor.ts +185 -123
- package/src/memory/external-conversation-store.ts +30 -12
- package/src/memory/fingerprint.ts +2 -2
- package/src/memory/fts-reconciler.ts +57 -28
- package/src/memory/guardian-action-store.ts +162 -100
- package/src/memory/guardian-approvals.ts +63 -129
- package/src/memory/guardian-rate-limits.ts +20 -9
- package/src/memory/guardian-verification.ts +82 -35
- package/src/memory/indexer.ts +96 -55
- package/src/memory/ingress-invite-store.ts +28 -169
- package/src/memory/items-extractor.ts +313 -157
- package/src/memory/job-handlers/backfill.ts +116 -63
- package/src/memory/job-handlers/cleanup.ts +64 -41
- package/src/memory/job-handlers/conflict.ts +90 -49
- package/src/memory/job-handlers/embedding.ts +32 -17
- package/src/memory/job-handlers/extraction.ts +58 -33
- package/src/memory/job-handlers/index-maintenance.ts +31 -17
- package/src/memory/job-handlers/media-processing.ts +65 -24
- package/src/memory/job-handlers/summarization.ts +186 -128
- package/src/memory/job-utils.ts +100 -57
- package/src/memory/jobs-store.ts +235 -142
- package/src/memory/jobs-worker.ts +167 -83
- package/src/memory/llm-request-log-store.ts +13 -11
- package/src/memory/llm-usage-store.ts +35 -26
- package/src/memory/media-store.ts +151 -44
- package/src/memory/message-content.ts +28 -18
- package/src/memory/migrations/001-job-deferrals.ts +11 -5
- package/src/memory/migrations/002-tool-invocations-fk.ts +14 -6
- package/src/memory/migrations/003-memory-fts-backfill.ts +11 -5
- package/src/memory/migrations/004-entity-relation-dedup.ts +17 -11
- package/src/memory/migrations/005-fingerprint-scope-unique.ts +36 -21
- package/src/memory/migrations/006-scope-salted-fingerprints.ts +35 -20
- package/src/memory/migrations/007-assistant-id-to-self.ts +40 -27
- package/src/memory/migrations/008-remove-assistant-id-columns.ts +58 -36
- package/src/memory/migrations/009-llm-usage-events-drop-assistant-id.ts +36 -22
- package/src/memory/migrations/010-ext-conv-bindings-channel-chat-unique.ts +21 -11
- package/src/memory/migrations/011-call-sessions-provider-sid-dedup.ts +30 -15
- package/src/memory/migrations/012-call-sessions-add-initiated-from.ts +4 -2
- package/src/memory/migrations/013-guardian-action-tables.ts +29 -11
- package/src/memory/migrations/014-backfill-inbox-thread-state.ts +35 -21
- package/src/memory/migrations/015-drop-active-search-index.ts +17 -11
- package/src/memory/migrations/016-memory-segments-indexes.ts +7 -3
- package/src/memory/migrations/017-memory-items-indexes.ts +4 -2
- package/src/memory/migrations/018-remaining-table-indexes.ts +13 -5
- package/src/memory/migrations/019-notification-tables-schema-migration.ts +34 -20
- package/src/memory/migrations/020-rename-macos-ios-channel-to-vellum.ts +87 -53
- package/src/memory/migrations/021-conversation-status-indexes.ts +7 -3
- package/src/memory/migrations/022-add-origin-interface.ts +4 -2
- package/src/memory/migrations/023-memory-item-sources-indexes.ts +4 -2
- package/src/memory/migrations/024-embedding-vector-blob.ts +34 -18
- package/src/memory/migrations/025-messages-fts-backfill.ts +11 -5
- package/src/memory/migrations/026-guardian-verification-sessions.ts +80 -14
- package/src/memory/migrations/026a-embeddings-nullable-vector-json.ts +42 -26
- package/src/memory/migrations/027-notification-delivery-pairing-columns.ts +22 -8
- package/src/memory/migrations/027a-guardian-bootstrap-token.ts +11 -3
- package/src/memory/migrations/028-call-session-mode.ts +13 -3
- package/src/memory/migrations/028-notification-delivery-client-ack.ts +22 -8
- package/src/memory/migrations/029-channel-inbound-delivered-segments.ts +7 -3
- package/src/memory/migrations/030-guardian-action-followup.ts +46 -8
- package/src/memory/migrations/030-guardian-verification-purpose.ts +4 -2
- package/src/memory/migrations/031-conversations-thread-type-index.ts +4 -2
- package/src/memory/migrations/032-guardian-delivery-conversation-index.ts +4 -2
- package/src/memory/migrations/032-notification-delivery-thread-decision.ts +22 -8
- package/src/memory/migrations/033-scoped-approval-grants.ts +1 -1
- package/src/memory/migrations/034-guardian-action-tool-metadata.ts +15 -3
- package/src/memory/migrations/035-guardian-action-supersession.ts +15 -3
- package/src/memory/migrations/036-normalize-phone-identities.ts +101 -87
- package/src/memory/migrations/037-voice-invite-columns.ts +22 -4
- package/src/memory/migrations/038-actor-token-records.ts +5 -9
- package/src/memory/migrations/039-actor-refresh-token-records.ts +7 -13
- package/src/memory/migrations/100-core-tables.ts +1 -1
- package/src/memory/migrations/101-watchers-and-logs.ts +1 -1
- package/src/memory/migrations/103-complex-migrations.ts +9 -9
- package/src/memory/migrations/104-core-indexes.ts +188 -64
- package/src/memory/migrations/105-contacts-and-triage.ts +28 -10
- package/src/memory/migrations/106-call-sessions.ts +58 -16
- package/src/memory/migrations/107-followups.ts +16 -6
- package/src/memory/migrations/108-tasks-and-work-items.ts +43 -11
- package/src/memory/migrations/109-external-conversation-bindings.ts +11 -5
- package/src/memory/migrations/110-channel-guardian.ts +48 -10
- package/src/memory/migrations/111-media-assets.ts +52 -18
- package/src/memory/migrations/112-assistant-inbox.ts +32 -12
- package/src/memory/migrations/113-late-migrations.ts +12 -12
- package/src/memory/migrations/114-notifications.ts +28 -12
- package/src/memory/migrations/115-sequences.ts +10 -4
- package/src/memory/migrations/116-messages-fts.ts +1 -1
- package/src/memory/migrations/117-conversation-attention.ts +16 -6
- package/src/memory/migrations/118-reminder-routing-intent.ts +7 -3
- package/src/memory/migrations/119-schema-indexes-and-columns.ts +35 -15
- package/src/memory/migrations/120-fk-cascade-rebuilds.ts +36 -17
- package/src/memory/migrations/121-canonical-guardian-requests.ts +25 -9
- package/src/memory/migrations/122-canonical-guardian-requester-chat-id.ts +11 -3
- package/src/memory/migrations/123-canonical-guardian-deliveries-destination-index.ts +4 -2
- package/src/memory/migrations/124-voice-invite-display-metadata.ts +15 -3
- package/src/memory/migrations/125-guardian-principal-id-columns.ts +22 -4
- package/src/memory/migrations/126-backfill-guardian-principal-id.ts +174 -126
- package/src/memory/migrations/127-guardian-principal-id-not-null.ts +58 -42
- package/src/memory/migrations/128-contacts-role-principal.ts +26 -0
- package/src/memory/migrations/129-contact-channels-access-fields.ts +105 -0
- package/src/memory/migrations/130-contact-channels-type-ext-chat-id-index.ts +15 -0
- package/src/memory/migrations/131-drop-legacy-member-guardian-tables.ts +134 -0
- package/src/memory/migrations/132-contacts-assistant-id.ts +21 -0
- package/src/memory/migrations/index.ts +82 -73
- package/src/memory/migrations/registry.ts +53 -37
- package/src/memory/migrations/validate-migration-state.ts +73 -46
- package/src/memory/profile-compiler.ts +58 -24
- package/src/memory/published-pages-store.ts +12 -16
- package/src/memory/qdrant-circuit-breaker.ts +28 -20
- package/src/memory/qdrant-client.ts +99 -63
- package/src/memory/qdrant-manager.ts +89 -57
- package/src/memory/query-builder.ts +9 -7
- package/src/memory/raw-query.ts +63 -14
- package/src/memory/recall-cache.ts +15 -8
- package/src/memory/retrieval-budget.ts +0 -1
- package/src/memory/retriever.ts +385 -192
- package/src/memory/schema-migration.ts +1 -1
- package/src/memory/schema.ts +44 -56
- package/src/memory/scoped-approval-grants.ts +99 -45
- package/src/memory/search/entity.ts +102 -40
- package/src/memory/search/formatting.ts +70 -52
- package/src/memory/search/lexical.ts +82 -43
- package/src/memory/search/ranking.ts +103 -39
- package/src/memory/search/semantic.ts +59 -35
- package/src/memory/search/types.ts +8 -8
- package/src/memory/segmenter.ts +20 -12
- package/src/memory/shared-app-links-store.ts +21 -16
- package/src/memory/task-memory-cleanup.ts +18 -8
- package/src/memory/tool-usage-store.ts +27 -19
- package/src/memory/validation.ts +4 -2
- package/src/messaging/activity-analyzer.ts +7 -7
- package/src/messaging/draft-store.ts +13 -10
- package/src/messaging/email-classifier.ts +73 -37
- package/src/messaging/index.ts +3 -3
- package/src/messaging/outreach-classifier.ts +76 -38
- package/src/messaging/provider-types.ts +2 -4
- package/src/messaging/provider.ts +37 -8
- package/src/messaging/providers/gmail/adapter.ts +183 -66
- package/src/messaging/providers/gmail/client.ts +3 -1
- package/src/messaging/providers/gmail/mime-builder.ts +21 -19
- package/src/messaging/providers/gmail/people-client.ts +22 -9
- package/src/messaging/providers/gmail/types.ts +6 -6
- package/src/messaging/providers/slack/adapter.ts +93 -43
- package/src/messaging/providers/slack/client.ts +100 -41
- package/src/messaging/providers/slack/types.ts +6 -0
- package/src/messaging/providers/sms/adapter.ts +76 -40
- package/src/messaging/providers/sms/client.ts +4 -4
- package/src/messaging/providers/telegram-bot/adapter.ts +52 -30
- package/src/messaging/providers/telegram-bot/client.ts +7 -7
- package/src/messaging/providers/whatsapp/adapter.ts +58 -31
- package/src/messaging/providers/whatsapp/client.ts +4 -4
- package/src/messaging/registry.ts +9 -5
- package/src/messaging/style-analyzer.ts +69 -39
- package/src/messaging/thread-summarizer.ts +101 -53
- package/src/messaging/triage-engine.ts +111 -82
- package/src/messaging/types.ts +10 -10
- package/src/migrations/config-merge.ts +18 -10
- package/src/migrations/data-layout.ts +35 -22
- package/src/migrations/data-merge.ts +17 -7
- package/src/migrations/hooks-merge.ts +43 -16
- package/src/migrations/index.ts +6 -6
- package/src/migrations/log.ts +9 -5
- package/src/migrations/skills-merge.ts +17 -7
- package/src/migrations/workspace-layout.ts +39 -25
- package/src/notifications/AGENTS.md +5 -0
- package/src/notifications/adapters/macos.ts +21 -14
- package/src/notifications/adapters/sms.ts +28 -15
- package/src/notifications/adapters/telegram.ts +24 -15
- package/src/notifications/broadcaster.ts +108 -52
- package/src/notifications/conversation-pairing.ts +64 -29
- package/src/notifications/copy-composer.ts +165 -95
- package/src/notifications/decision-engine.ts +353 -147
- package/src/notifications/decisions-store.ts +26 -10
- package/src/notifications/deliveries-store.ts +23 -13
- package/src/notifications/destination-resolver.ts +42 -24
- package/src/notifications/deterministic-checks.ts +78 -27
- package/src/notifications/emit-signal.ts +83 -45
- package/src/notifications/events-store.ts +13 -7
- package/src/notifications/guardian-question-mode.ts +125 -75
- package/src/notifications/preference-extractor.ts +85 -53
- package/src/notifications/preference-summary.ts +31 -18
- package/src/notifications/preferences-store.ts +29 -18
- package/src/notifications/runtime-dispatch.ts +22 -12
- package/src/notifications/signal.ts +4 -4
- package/src/notifications/thread-candidates.ts +59 -23
- package/src/notifications/thread-seed-composer.ts +45 -27
- package/src/notifications/types.ts +19 -10
- package/src/oauth/connect-orchestrator.ts +105 -54
- package/src/oauth/connect-types.ts +3 -3
- package/src/oauth/provider-profiles.ts +80 -59
- package/src/oauth/scope-policy.ts +5 -2
- package/src/oauth/token-persistence.ts +58 -24
- package/src/outbound-proxy/certs.ts +284 -0
- package/src/outbound-proxy/config.ts +94 -0
- package/src/outbound-proxy/connect-tunnel.ts +84 -0
- package/src/outbound-proxy/health.ts +62 -0
- package/src/outbound-proxy/host-pattern-match.ts +67 -0
- package/src/outbound-proxy/http-forwarder.ts +162 -0
- package/src/outbound-proxy/index.ts +80 -0
- package/src/outbound-proxy/logging.ts +193 -0
- package/src/outbound-proxy/mitm-handler.ts +292 -0
- package/src/outbound-proxy/policy.ts +172 -0
- package/src/outbound-proxy/router.ts +64 -0
- package/src/outbound-proxy/server.ts +145 -0
- package/src/outbound-proxy/types.ts +150 -0
- package/src/permissions/checker.ts +481 -189
- package/src/permissions/defaults.ts +135 -108
- package/src/permissions/prompter.ts +53 -27
- package/src/permissions/secret-prompter.ts +21 -15
- package/src/permissions/shell-identity.ts +47 -16
- package/src/permissions/trust-store.ts +185 -73
- package/src/permissions/types.ts +22 -12
- package/src/permissions/workspace-policy.ts +47 -38
- package/src/playbooks/index.ts +10 -2
- package/src/playbooks/playbook-compiler.ts +30 -24
- package/src/playbooks/types.ts +11 -8
- package/src/providers/anthropic/client.ts +325 -168
- package/src/providers/failover.ts +57 -22
- package/src/providers/fireworks/client.ts +9 -5
- package/src/providers/gemini/client.ts +61 -39
- package/src/providers/model-intents.ts +40 -33
- package/src/providers/ollama/client.ts +7 -7
- package/src/providers/openai/client.ts +106 -68
- package/src/providers/openrouter/client.ts +9 -5
- package/src/providers/provider-send-message.ts +59 -27
- package/src/providers/ratelimit.ts +25 -8
- package/src/providers/registry.ts +86 -38
- package/src/providers/retry.ts +84 -36
- package/src/providers/stream-timeout.ts +5 -3
- package/src/providers/types.ts +7 -6
- package/src/runtime/AGENTS.md +42 -0
- package/src/runtime/access-request-helper.ts +118 -68
- package/src/runtime/actor-refresh-token-store.ts +21 -16
- package/src/runtime/actor-token-store.ts +25 -18
- package/src/runtime/actor-trust-resolver.ts +183 -80
- package/src/runtime/approval-conversation-turn.ts +39 -26
- package/src/runtime/approval-message-composer.ts +116 -84
- package/src/runtime/assistant-event-hub.ts +25 -6
- package/src/runtime/assistant-event.ts +4 -4
- package/src/runtime/assistant-scope.ts +1 -1
- package/src/runtime/auth/__tests__/guard-tests.test.ts +36 -14
- package/src/runtime/auth/context.ts +8 -7
- package/src/runtime/auth/credential-service.ts +60 -38
- package/src/runtime/auth/external-assistant-id.ts +16 -8
- package/src/runtime/auth/index.ts +23 -16
- package/src/runtime/auth/route-policy.ts +170 -104
- package/src/runtime/auth/scopes.ts +22 -29
- package/src/runtime/auth/subject.ts +19 -13
- package/src/runtime/auth/token-service.ts +3 -3
- package/src/runtime/auth/types.ts +23 -23
- package/src/runtime/channel-approval-parser.ts +37 -14
- package/src/runtime/channel-approval-types.ts +12 -4
- package/src/runtime/channel-approvals.ts +41 -23
- package/src/runtime/channel-guardian-service.ts +144 -103
- package/src/runtime/channel-invite-transport.ts +4 -2
- package/src/runtime/channel-invite-transports/telegram.ts +16 -10
- package/src/runtime/channel-invite-transports/voice.ts +7 -7
- package/src/runtime/channel-readiness-service.ts +139 -90
- package/src/runtime/channel-readiness-types.ts +4 -2
- package/src/runtime/channel-reply-delivery.ts +21 -11
- package/src/runtime/channel-retry-sweep.ts +111 -62
- package/src/runtime/confirmation-request-guardian-bridge.ts +73 -54
- package/src/runtime/gateway-client.ts +86 -53
- package/src/runtime/guardian-action-conversation-turn.ts +34 -18
- package/src/runtime/guardian-action-followup-executor.ts +115 -45
- package/src/runtime/guardian-action-grant-minter.ts +40 -24
- package/src/runtime/guardian-action-message-composer.ts +105 -84
- package/src/runtime/guardian-decision-types.ts +28 -13
- package/src/runtime/guardian-outbound-actions.ts +9 -0
- package/src/runtime/guardian-reply-router.ts +274 -145
- package/src/runtime/guardian-vellum-migration.ts +38 -24
- package/src/runtime/guardian-verification-templates.ts +8 -11
- package/src/runtime/http-router.ts +175 -0
- package/src/runtime/http-server.ts +931 -669
- package/src/runtime/http-types.ts +2 -2
- package/src/runtime/ingress-service.ts +182 -89
- package/src/runtime/invite-redemption-service.ts +211 -134
- package/src/runtime/invite-redemption-templates.ts +18 -11
- package/src/runtime/local-actor-identity.ts +73 -55
- package/src/runtime/middleware/auth.ts +25 -14
- package/src/runtime/middleware/error-handler.ts +15 -11
- package/src/runtime/middleware/rate-limiter.ts +23 -17
- package/src/runtime/middleware/request-logger.ts +4 -4
- package/src/runtime/middleware/twilio-validation.ts +29 -20
- package/src/runtime/migrations/migration-transport.ts +575 -0
- package/src/runtime/migrations/migration-wizard.ts +715 -0
- package/src/runtime/migrations/rebind-secrets-screen.ts +351 -0
- package/src/runtime/migrations/transfer-progress-screen.ts +321 -0
- package/src/runtime/migrations/validation-results-screen.ts +467 -0
- package/src/runtime/migrations/vbundle-builder.ts +295 -0
- package/src/runtime/migrations/vbundle-import-analyzer.ts +212 -0
- package/src/runtime/migrations/vbundle-importer.ts +339 -0
- package/src/runtime/migrations/vbundle-validator.ts +356 -0
- package/src/runtime/pending-interactions.ts +16 -7
- package/src/runtime/routes/access-request-decision.ts +73 -52
- package/src/runtime/routes/app-routes.ts +56 -38
- package/src/runtime/routes/approval-routes.ts +165 -74
- package/src/runtime/routes/approval-strategies/guardian-callback-strategy.ts +930 -0
- package/src/runtime/routes/approval-strategies/guardian-legacy-fallback-strategy.ts +82 -0
- package/src/runtime/routes/approval-strategies/guardian-text-engine-strategy.ts +151 -0
- package/src/runtime/routes/attachment-routes.ts +59 -48
- package/src/runtime/routes/brain-graph-routes.ts +85 -69
- package/src/runtime/routes/call-routes.ts +79 -38
- package/src/runtime/routes/canonical-guardian-expiry-sweep.ts +10 -10
- package/src/runtime/routes/channel-delivery-routes.ts +19 -14
- package/src/runtime/routes/channel-guardian-routes.ts +3 -3
- package/src/runtime/routes/channel-inbound-routes.ts +2 -2
- package/src/runtime/routes/channel-readiness-routes.ts +12 -6
- package/src/runtime/routes/channel-route-shared.ts +33 -25
- package/src/runtime/routes/channel-routes.ts +4 -6
- package/src/runtime/routes/contact-routes.ts +205 -16
- package/src/runtime/routes/conversation-attention-routes.ts +57 -28
- package/src/runtime/routes/conversation-routes.ts +321 -174
- package/src/runtime/routes/debug-routes.ts +14 -10
- package/src/runtime/routes/events-routes.ts +90 -57
- package/src/runtime/routes/global-search-routes.ts +266 -0
- package/src/runtime/routes/guardian-action-routes.ts +147 -56
- package/src/runtime/routes/guardian-approval-interception.ts +255 -880
- package/src/runtime/routes/guardian-approval-prompt.ts +40 -24
- package/src/runtime/routes/guardian-approval-reply-helpers.ts +135 -0
- package/src/runtime/routes/guardian-bootstrap-routes.ts +55 -36
- package/src/runtime/routes/guardian-expiry-sweep.ts +63 -37
- package/src/runtime/routes/guardian-refresh-routes.ts +40 -19
- package/src/runtime/routes/identity-routes.ts +71 -42
- package/src/runtime/routes/inbound-conversation.ts +17 -11
- package/src/runtime/routes/inbound-message-handler.ts +278 -1460
- package/src/runtime/routes/inbound-stages/acl-enforcement.ts +658 -0
- package/src/runtime/routes/inbound-stages/background-dispatch.ts +492 -0
- package/src/runtime/routes/inbound-stages/bootstrap-intercept.ts +214 -0
- package/src/runtime/routes/inbound-stages/edit-intercept.ts +116 -0
- package/src/runtime/routes/inbound-stages/escalation-intercept.ts +167 -0
- package/src/runtime/routes/inbound-stages/guardian-reply-intercept.ts +185 -0
- package/src/runtime/routes/inbound-stages/secret-ingress-check.ts +132 -0
- package/src/runtime/routes/inbound-stages/verification-intercept.ts +340 -0
- package/src/runtime/routes/ingress-routes.ts +34 -23
- package/src/runtime/routes/integration-routes.ts +60 -21
- package/src/runtime/routes/migration-routes.ts +434 -0
- package/src/runtime/routes/pairing-routes.ts +157 -79
- package/src/runtime/routes/secret-routes.ts +6 -2
- package/src/runtime/routes/twilio-routes.ts +443 -249
- package/src/runtime/tool-grant-request-helper.ts +36 -27
- package/src/runtime/{guardian-context-resolver.ts → trust-context-resolver.ts} +29 -41
- package/src/schedule/integration-status.ts +44 -9
- package/src/schedule/recurrence-engine.ts +47 -24
- package/src/schedule/recurrence-types.ts +12 -7
- package/src/schedule/schedule-store.ts +166 -83
- package/src/schedule/scheduler.ts +26 -22
- package/src/security/encrypted-store.ts +68 -38
- package/src/security/keychain.ts +183 -120
- package/src/security/oauth-callback-registry.ts +3 -3
- package/src/security/oauth2.ts +226 -138
- package/src/security/redaction.ts +24 -24
- package/src/security/secret-allowlist.ts +46 -21
- package/src/security/secret-ingress.ts +15 -7
- package/src/security/secret-scanner.ts +193 -104
- package/src/security/secure-keys.ts +9 -3
- package/src/security/token-manager.ts +99 -40
- package/src/security/tool-approval-digest.ts +3 -3
- package/src/sequence/analytics.ts +52 -27
- package/src/sequence/engine.ts +135 -72
- package/src/sequence/guardrails.ts +32 -20
- package/src/sequence/importer.ts +75 -37
- package/src/sequence/reply-matcher.ts +36 -18
- package/src/sequence/store.ts +137 -75
- package/src/sequence/types.ts +30 -16
- package/src/services/published-app-updater.ts +26 -16
- package/src/services/vercel-deploy.ts +19 -15
- package/src/skills/active-skill-tools.ts +3 -3
- package/src/skills/clawhub.ts +178 -90
- package/src/skills/include-graph.ts +24 -17
- package/src/skills/managed-store.ts +89 -42
- package/src/skills/path-classifier.ts +10 -10
- package/src/skills/remote-skill-policy.ts +31 -22
- package/src/skills/slash-commands.ts +36 -30
- package/src/skills/tool-manifest.ts +60 -31
- package/src/skills/version-hash.ts +25 -15
- package/src/slack/slack-webhook.ts +19 -15
- package/src/subagent/index.ts +4 -8
- package/src/subagent/manager.ts +119 -69
- package/src/subagent/types.ts +9 -12
- package/src/swarm/backend-claude-code.ts +124 -45
- package/src/swarm/checkpoint.ts +36 -16
- package/src/swarm/graph-utils.ts +1 -3
- package/src/swarm/index.ts +38 -19
- package/src/swarm/limits.ts +13 -4
- package/src/swarm/orchestrator.ts +108 -57
- package/src/swarm/plan-validator.ts +23 -17
- package/src/swarm/router-planner.ts +51 -22
- package/src/swarm/router-prompts.ts +4 -1
- package/src/swarm/synthesizer.ts +26 -18
- package/src/swarm/types.ts +14 -4
- package/src/swarm/worker-backend.ts +36 -26
- package/src/swarm/worker-prompts.ts +13 -9
- package/src/swarm/worker-runner.ts +40 -34
- package/src/tasks/candidate-store.ts +14 -6
- package/src/tasks/ephemeral-permissions.ts +9 -5
- package/src/tasks/task-compiler.ts +41 -38
- package/src/tasks/task-runner.ts +54 -26
- package/src/tasks/task-scheduler.ts +1 -1
- package/src/tasks/task-store.ts +20 -7
- package/src/tasks/tool-sanitizer.ts +3 -3
- package/src/tools/apps/definitions.ts +23 -15
- package/src/tools/apps/executors.ts +118 -37
- package/src/tools/apps/open-proxy.ts +5 -5
- package/src/tools/apps/registry.ts +2 -2
- package/src/tools/assets/materialize.ts +59 -41
- package/src/tools/assets/search.ts +86 -48
- package/src/tools/browser/api-map.ts +52 -36
- package/src/tools/browser/auth-cache.ts +21 -18
- package/src/tools/browser/auth-detector.ts +43 -28
- package/src/tools/browser/auto-navigate.ts +149 -68
- package/src/tools/browser/browser-execution.ts +9 -3
- package/src/tools/browser/headless-browser.ts +287 -150
- package/src/tools/browser/jit-auth.ts +37 -21
- package/src/tools/browser/network-recorder.ts +138 -56
- package/src/tools/browser/recording-store.ts +22 -15
- package/src/tools/browser/runtime-check.ts +8 -5
- package/src/tools/browser/x-auto-navigate.ts +88 -47
- package/src/tools/calls/call-end.ts +9 -6
- package/src/tools/calls/call-start.ts +30 -20
- package/src/tools/calls/call-status.ts +8 -5
- package/src/tools/claude-code/claude-code.ts +301 -165
- package/src/tools/computer-use/definitions.ts +159 -130
- package/src/tools/computer-use/registry.ts +2 -2
- package/src/tools/computer-use/request-computer-control.ts +21 -13
- package/src/tools/computer-use/skill-proxy-bridge.ts +1 -1
- package/src/tools/credentials/account-registry.ts +52 -35
- package/src/tools/credentials/broker-types.ts +1 -1
- package/src/tools/credentials/broker.ts +97 -55
- package/src/tools/credentials/domain-policy.ts +5 -2
- package/src/tools/credentials/host-pattern-match.ts +15 -8
- package/src/tools/credentials/metadata-store.ts +93 -43
- package/src/tools/credentials/policy-types.ts +5 -2
- package/src/tools/credentials/policy-validate.ts +21 -14
- package/src/tools/credentials/post-connect-hooks.ts +18 -7
- package/src/tools/credentials/resolve.ts +11 -10
- package/src/tools/credentials/selection.ts +30 -25
- package/src/tools/credentials/tool-policy.ts +5 -2
- package/src/tools/credentials/vault.ts +452 -183
- package/src/tools/document/document-tool.ts +23 -17
- package/src/tools/document/editor-template.ts +12 -7
- package/src/tools/execution-target.ts +13 -10
- package/src/tools/execution-timeout.ts +6 -5
- package/src/tools/executor.ts +141 -74
- package/src/tools/filesystem/edit.ts +82 -45
- package/src/tools/filesystem/fuzzy-match.ts +70 -32
- package/src/tools/filesystem/read.ts +46 -28
- package/src/tools/filesystem/view-image.ts +86 -42
- package/src/tools/filesystem/write.ts +53 -32
- package/src/tools/followups/followup_create.ts +43 -17
- package/src/tools/followups/followup_list.ts +28 -13
- package/src/tools/followups/followup_resolve.ts +9 -6
- package/src/tools/guardian-control-plane-policy.ts +15 -14
- package/src/tools/host-filesystem/edit.ts +77 -42
- package/src/tools/host-filesystem/read.ts +52 -33
- package/src/tools/host-filesystem/write.ts +50 -29
- package/src/tools/host-terminal/host-shell.ts +97 -61
- package/src/tools/mcp/mcp-tool-factory.ts +21 -14
- package/src/tools/memory/definitions.ts +60 -28
- package/src/tools/memory/handlers.ts +149 -77
- package/src/tools/memory/register.ts +39 -16
- package/src/tools/network/__tests__/web-search.test.ts +236 -177
- package/src/tools/network/domain-normalize.ts +13 -9
- package/src/tools/network/script-proxy/__tests__/logging.test.ts +193 -123
- package/src/tools/network/script-proxy/__tests__/policy.test.ts +225 -127
- package/src/tools/network/script-proxy/index.ts +1 -17
- package/src/tools/network/script-proxy/session-manager.ts +151 -84
- package/src/tools/network/url-safety.ts +56 -34
- package/src/tools/network/web-fetch.ts +273 -155
- package/src/tools/network/web-search.ts +166 -81
- package/src/tools/permission-checker.ts +6 -25
- package/src/tools/policy-context.ts +8 -5
- package/src/tools/registry.ts +73 -46
- package/src/tools/reminder/reminder-store.ts +65 -44
- package/src/tools/reminder/reminder.ts +76 -35
- package/src/tools/schedule/create.ts +44 -21
- package/src/tools/schedule/delete.ts +8 -5
- package/src/tools/schedule/list.ts +39 -19
- package/src/tools/schedule/update.ts +49 -26
- package/src/tools/secret-detection-handler.ts +130 -49
- package/src/tools/sensitive-output-placeholders.ts +15 -8
- package/src/tools/shared/filesystem/edit-engine.ts +45 -14
- package/src/tools/shared/filesystem/errors.ts +18 -18
- package/src/tools/shared/filesystem/file-ops-service.ts +59 -32
- package/src/tools/shared/filesystem/format-diff.ts +21 -11
- package/src/tools/shared/filesystem/path-policy.ts +17 -13
- package/src/tools/shared/filesystem/size-guard.ts +8 -4
- package/src/tools/shared/filesystem/types.ts +2 -2
- package/src/tools/shared/shell-output.ts +4 -3
- package/src/tools/side-effects.ts +36 -28
- package/src/tools/skills/delete-managed.ts +30 -17
- package/src/tools/skills/load.ts +88 -46
- package/src/tools/skills/sandbox-runner.ts +62 -46
- package/src/tools/skills/scaffold-managed.ts +98 -48
- package/src/tools/skills/script-contract.ts +5 -2
- package/src/tools/skills/skill-script-runner.ts +29 -13
- package/src/tools/skills/skill-tool-factory.ts +20 -10
- package/src/tools/subagent/abort.ts +10 -4
- package/src/tools/subagent/message.ts +14 -8
- package/src/tools/subagent/read.ts +20 -11
- package/src/tools/subagent/spawn.ts +14 -6
- package/src/tools/subagent/status.ts +7 -4
- package/src/tools/swarm/delegate.ts +75 -49
- package/src/tools/system/avatar-generator.ts +46 -33
- package/src/tools/system/navigate-settings.ts +29 -19
- package/src/tools/system/open-system-settings.ts +30 -20
- package/src/tools/system/request-permission.ts +59 -44
- package/src/tools/system/version.ts +27 -16
- package/src/tools/system/voice-config.ts +116 -53
- package/src/tools/tasks/index.ts +8 -8
- package/src/tools/tasks/task-delete.ts +61 -22
- package/src/tools/tasks/task-list.ts +23 -11
- package/src/tools/tasks/task-run.ts +41 -16
- package/src/tools/tasks/task-save.ts +27 -10
- package/src/tools/tasks/work-item-enqueue.ts +114 -48
- package/src/tools/tasks/work-item-list.ts +20 -10
- package/src/tools/tasks/work-item-remove.ts +49 -15
- package/src/tools/tasks/work-item-run.ts +34 -13
- package/src/tools/tasks/work-item-update.ts +84 -31
- package/src/tools/terminal/backends/native.ts +64 -35
- package/src/tools/terminal/backends/types.ts +6 -2
- package/src/tools/terminal/parser.ts +200 -125
- package/src/tools/terminal/safe-env.ts +27 -21
- package/src/tools/terminal/sandbox-diagnostics.ts +31 -13
- package/src/tools/terminal/sandbox.ts +10 -6
- package/src/tools/terminal/shell.ts +124 -68
- package/src/tools/tool-approval-handler.ts +193 -138
- package/src/tools/types.ts +43 -23
- package/src/tools/ui-surface/definitions.ts +124 -89
- package/src/tools/ui-surface/registry.ts +2 -2
- package/src/tools/watch/screen-watch.ts +50 -32
- package/src/tools/watch/watch-state.ts +41 -15
- package/src/tools/watcher/create.ts +37 -15
- package/src/tools/watcher/delete.ts +9 -6
- package/src/tools/watcher/digest.ts +10 -6
- package/src/tools/watcher/list.ts +37 -14
- package/src/tools/watcher/update.ts +33 -18
- package/src/tools/weather/service.ts +331 -174
- package/src/twitter/client.ts +261 -138
- package/src/twitter/oauth-client.ts +17 -13
- package/src/twitter/router.ts +51 -23
- package/src/twitter/session.ts +27 -18
- package/src/types/qrcode.d.ts +6 -3
- package/src/usage/actors.ts +16 -16
- package/src/usage/types.ts +3 -3
- package/src/util/bundled-asset.ts +10 -6
- package/src/util/canonicalize-identity.ts +11 -4
- package/src/util/clipboard.ts +7 -7
- package/src/util/content-id.ts +3 -3
- package/src/util/debounce.ts +3 -2
- package/src/util/diff.ts +55 -33
- package/src/util/errors.ts +26 -26
- package/src/util/fs.ts +8 -2
- package/src/util/log-redact.ts +12 -12
- package/src/util/logger.ts +112 -51
- package/src/util/network-info.ts +13 -5
- package/src/util/object.ts +4 -2
- package/src/util/phone.ts +4 -4
- package/src/util/platform.ts +80 -58
- package/src/util/pricing.ts +49 -31
- package/src/util/retry.ts +18 -7
- package/src/util/row-mapper.ts +7 -4
- package/src/util/silently.ts +7 -4
- package/src/util/spawn.ts +48 -0
- package/src/util/spinner.ts +9 -7
- package/src/util/time.ts +16 -3
- package/src/util/truncate.ts +1 -1
- package/src/util/voice-code.ts +6 -4
- package/src/util/xml.ts +5 -1
- package/src/version.ts +12 -8
- package/src/watcher/engine.ts +71 -44
- package/src/watcher/provider-registry.ts +1 -1
- package/src/watcher/providers/github.ts +40 -23
- package/src/watcher/providers/gmail.ts +59 -38
- package/src/watcher/providers/google-calendar.ts +62 -48
- package/src/watcher/providers/linear.ts +219 -150
- package/src/watcher/providers/slack.ts +93 -27
- package/src/watcher/watcher-store.ts +75 -55
- package/src/work-items/work-item-runner.ts +62 -29
- package/src/work-items/work-item-store.ts +137 -47
- package/src/workspace/commit-message-enrichment-service.ts +65 -25
- package/src/workspace/commit-message-provider.ts +14 -12
- package/src/workspace/git-service.ts +355 -239
- package/src/workspace/heartbeat-service.ts +74 -37
- package/src/workspace/provider-commit-message-generator.ts +95 -70
- package/src/workspace/top-level-renderer.ts +10 -8
- package/src/workspace/top-level-scanner.ts +9 -3
- package/src/workspace/turn-commit.ts +63 -36
- package/src/__tests__/ingress-member-store.test.ts +0 -294
- package/src/__tests__/script-proxy-router.test.ts +0 -215
- package/src/config/bundled-skills/trusted-contacts/SKILL.md +0 -372
- package/src/memory/guardian-bindings.ts +0 -158
- package/src/memory/ingress-member-store.ts +0 -352
- package/src/tools/network/script-proxy/__tests__/router.test.ts +0 -77
- package/src/tools/network/script-proxy/certs.ts +0 -7
- package/src/tools/network/script-proxy/connect-tunnel.ts +0 -1
- package/src/tools/network/script-proxy/http-forwarder.ts +0 -2
- package/src/tools/network/script-proxy/logging.ts +0 -12
- package/src/tools/network/script-proxy/mitm-handler.ts +0 -2
- package/src/tools/network/script-proxy/policy.ts +0 -4
- package/src/tools/network/script-proxy/router.ts +0 -2
- package/src/tools/network/script-proxy/server.ts +0 -5
- package/src/tools/network/script-proxy/types.ts +0 -19
|
@@ -8,9 +8,9 @@ import { describe, expect, it } from "bun:test";
|
|
|
8
8
|
* These tests prevent reintroduction of removed compatibility patterns
|
|
9
9
|
* by scanning source files for type invariants:
|
|
10
10
|
*
|
|
11
|
-
* (a) guardianPrincipalId in
|
|
11
|
+
* (a) guardianPrincipalId in TrustContext must be `?: string`
|
|
12
12
|
* (optional string), NOT `string | null`.
|
|
13
|
-
* (b)
|
|
13
|
+
* (b) trustClass in ToolContext must be a required field (no `?`).
|
|
14
14
|
* (c) The channel retry sweep parser must not reference `actorRole`.
|
|
15
15
|
* (d) guardianPrincipalId in GuardianBinding must be `string` (non-null,
|
|
16
16
|
* non-optional).
|
|
@@ -23,16 +23,14 @@ describe("trust-context guards", () => {
|
|
|
23
23
|
// (a) No `string | null` for guardianPrincipalId in runtime types
|
|
24
24
|
// -----------------------------------------------------------------------
|
|
25
25
|
|
|
26
|
-
it("guardianPrincipalId is not typed as string | null in
|
|
26
|
+
it("guardianPrincipalId is not typed as string | null in TrustContext", () => {
|
|
27
27
|
const source = readFileSync(
|
|
28
28
|
join(srcDir, "daemon", "session-runtime-assembly.ts"),
|
|
29
29
|
"utf-8",
|
|
30
30
|
);
|
|
31
31
|
|
|
32
|
-
// Extract the
|
|
33
|
-
const ifaceStart = source.indexOf(
|
|
34
|
-
"export interface GuardianRuntimeContext",
|
|
35
|
-
);
|
|
32
|
+
// Extract the TrustContext interface block
|
|
33
|
+
const ifaceStart = source.indexOf("export interface TrustContext");
|
|
36
34
|
expect(ifaceStart).toBeGreaterThan(-1);
|
|
37
35
|
|
|
38
36
|
const blockStart = source.indexOf("{", ifaceStart);
|
|
@@ -54,13 +52,13 @@ describe("trust-context guards", () => {
|
|
|
54
52
|
.find((l) => l.includes("guardianPrincipalId"));
|
|
55
53
|
expect(
|
|
56
54
|
principalLine,
|
|
57
|
-
"Expected to find guardianPrincipalId in
|
|
55
|
+
"Expected to find guardianPrincipalId in TrustContext",
|
|
58
56
|
).toBeDefined();
|
|
59
57
|
|
|
60
58
|
expect(
|
|
61
59
|
principalLine!.includes("string | null") ||
|
|
62
60
|
principalLine!.includes("null | string"),
|
|
63
|
-
"guardianPrincipalId must not be typed as nullable in
|
|
61
|
+
"guardianPrincipalId must not be typed as nullable in TrustContext. " +
|
|
64
62
|
"Use `guardianPrincipalId?: string` (optional, non-nullable) instead. " +
|
|
65
63
|
`Found: "${principalLine!.trim()}"`,
|
|
66
64
|
).toBe(false);
|
|
@@ -69,17 +67,17 @@ describe("trust-context guards", () => {
|
|
|
69
67
|
// principal exists should be able to omit it.
|
|
70
68
|
expect(
|
|
71
69
|
/guardianPrincipalId\s*\?/.test(principalLine!),
|
|
72
|
-
"guardianPrincipalId must remain optional (`?:`) in
|
|
70
|
+
"guardianPrincipalId must remain optional (`?:`) in TrustContext. " +
|
|
73
71
|
"Channels without a guardian principal need to omit this field. " +
|
|
74
72
|
`Found: "${principalLine!.trim()}"`,
|
|
75
73
|
).toBe(true);
|
|
76
74
|
});
|
|
77
75
|
|
|
78
76
|
// -----------------------------------------------------------------------
|
|
79
|
-
// (b)
|
|
77
|
+
// (b) trustClass is required in ToolContext
|
|
80
78
|
// -----------------------------------------------------------------------
|
|
81
79
|
|
|
82
|
-
it("
|
|
80
|
+
it("trustClass is a required field in ToolContext", () => {
|
|
83
81
|
const source = readFileSync(join(srcDir, "tools", "types.ts"), "utf-8");
|
|
84
82
|
|
|
85
83
|
// Extract the ToolContext interface block
|
|
@@ -99,18 +97,16 @@ describe("trust-context guards", () => {
|
|
|
99
97
|
}
|
|
100
98
|
const block = source.slice(blockStart, blockEnd);
|
|
101
99
|
|
|
102
|
-
const trustLine = block
|
|
103
|
-
.split("\n")
|
|
104
|
-
.find((l) => l.includes("guardianTrustClass"));
|
|
100
|
+
const trustLine = block.split("\n").find((l) => l.includes("trustClass"));
|
|
105
101
|
expect(
|
|
106
102
|
trustLine,
|
|
107
|
-
"Expected to find
|
|
103
|
+
"Expected to find trustClass in ToolContext",
|
|
108
104
|
).toBeDefined();
|
|
109
105
|
|
|
110
106
|
// The field must NOT have a `?` before the colon — it must be required.
|
|
111
107
|
expect(
|
|
112
|
-
/
|
|
113
|
-
"
|
|
108
|
+
/trustClass\s*\?/.test(trustLine!),
|
|
109
|
+
"trustClass must be a required field in ToolContext (no `?`). " +
|
|
114
110
|
"Explicit trust gates must not be optional — every tool execution " +
|
|
115
111
|
`must carry a trust classification. Found: "${trustLine!.trim()}"`,
|
|
116
112
|
).toBe(false);
|
|
@@ -126,9 +122,9 @@ describe("trust-context guards", () => {
|
|
|
126
122
|
"utf-8",
|
|
127
123
|
);
|
|
128
124
|
|
|
129
|
-
// The
|
|
125
|
+
// The parseTrustRuntimeContext function must use strict trustClass
|
|
130
126
|
// parsing only — no legacy actorRole fallback.
|
|
131
|
-
const parserStart = source.indexOf("function
|
|
127
|
+
const parserStart = source.indexOf("function parseTrustRuntimeContext");
|
|
132
128
|
expect(parserStart).toBeGreaterThan(-1);
|
|
133
129
|
|
|
134
130
|
// Find the end of the function (next function-level declaration or EOF)
|
|
@@ -138,30 +134,30 @@ describe("trust-context guards", () => {
|
|
|
138
134
|
|
|
139
135
|
expect(
|
|
140
136
|
parserSource.includes("actorRole"),
|
|
141
|
-
"
|
|
137
|
+
"parseTrustRuntimeContext must not reference `actorRole`. " +
|
|
142
138
|
"The retry sweep uses strict `trustClass` parsing — no legacy actorRole fallback.",
|
|
143
139
|
).toBe(false);
|
|
144
140
|
});
|
|
145
141
|
|
|
146
142
|
// -----------------------------------------------------------------------
|
|
147
|
-
// (d) Retry sweep never passes undefined
|
|
143
|
+
// (d) Retry sweep never passes undefined trustContext to processMessage
|
|
148
144
|
// -----------------------------------------------------------------------
|
|
149
145
|
|
|
150
|
-
it("retry sweep always provides an explicit
|
|
146
|
+
it("retry sweep always provides an explicit trustContext (never undefined)", () => {
|
|
151
147
|
const source = readFileSync(
|
|
152
148
|
join(srcDir, "runtime", "channel-retry-sweep.ts"),
|
|
153
149
|
"utf-8",
|
|
154
150
|
);
|
|
155
151
|
|
|
156
|
-
// The sweep must synthesize a trust context when
|
|
157
|
-
// so `
|
|
152
|
+
// The sweep must synthesize a trust context when trustCtx is absent,
|
|
153
|
+
// so `trustContext` should never be conditionally undefined at the
|
|
158
154
|
// processMessage callsite. Look for the pattern that ensures this:
|
|
159
|
-
// a `const
|
|
155
|
+
// a `const trustContext: TrustContext = parsedTrustContext ?? {`
|
|
160
156
|
// fallback that synthesizes trustClass: 'unknown'.
|
|
161
157
|
expect(
|
|
162
|
-
source.includes(
|
|
158
|
+
source.includes('trustClass: "unknown"'),
|
|
163
159
|
"The retry sweep must synthesize an explicit `trustClass: 'unknown'` context " +
|
|
164
|
-
"when
|
|
160
|
+
"when trustCtx is absent from stored payloads. This prevents downstream " +
|
|
165
161
|
"defaults from granting implicit guardian trust on replay.",
|
|
166
162
|
).toBe(true);
|
|
167
163
|
});
|
|
@@ -172,7 +168,7 @@ describe("trust-context guards", () => {
|
|
|
172
168
|
|
|
173
169
|
it("guardianPrincipalId is typed as string (non-null) in GuardianBinding", () => {
|
|
174
170
|
const source = readFileSync(
|
|
175
|
-
join(srcDir, "memory", "guardian-
|
|
171
|
+
join(srcDir, "memory", "channel-guardian-store.ts"),
|
|
176
172
|
"utf-8",
|
|
177
173
|
);
|
|
178
174
|
|
|
@@ -128,7 +128,7 @@ mock.module("../config/user-reference.js", () => ({
|
|
|
128
128
|
// Import module under test AFTER mocks are set up
|
|
129
129
|
import type { ChannelId } from "../channels/types.js";
|
|
130
130
|
import { resolveUserReference } from "../config/user-reference.js";
|
|
131
|
-
import type {
|
|
131
|
+
import type { TrustContext } from "../daemon/session-runtime-assembly.js";
|
|
132
132
|
|
|
133
133
|
// We need to test the private functions by importing the module.
|
|
134
134
|
// Since startTrustedContactApprovalNotifier is not exported, we test it
|
|
@@ -156,7 +156,7 @@ async function simulateNotifierPoll(params: {
|
|
|
156
156
|
conversationId: string;
|
|
157
157
|
sourceChannel: ChannelId;
|
|
158
158
|
externalChatId: string;
|
|
159
|
-
|
|
159
|
+
trustClass: TrustContext["trustClass"];
|
|
160
160
|
guardianExternalUserId?: string;
|
|
161
161
|
replyCallbackUrl: string;
|
|
162
162
|
bearerToken?: string;
|
|
@@ -165,13 +165,13 @@ async function simulateNotifierPoll(params: {
|
|
|
165
165
|
}): Promise<boolean> {
|
|
166
166
|
const {
|
|
167
167
|
conversationId,
|
|
168
|
-
|
|
168
|
+
trustClass,
|
|
169
169
|
guardianExternalUserId,
|
|
170
170
|
notifiedRequestIds,
|
|
171
171
|
} = params;
|
|
172
172
|
|
|
173
173
|
// Gate check: only trusted contacts with guardian route
|
|
174
|
-
if (
|
|
174
|
+
if (trustClass !== "trusted_contact" || !guardianExternalUserId) {
|
|
175
175
|
return false;
|
|
176
176
|
}
|
|
177
177
|
|
|
@@ -226,7 +226,9 @@ async function simulateNotifierPoll(params: {
|
|
|
226
226
|
}
|
|
227
227
|
}
|
|
228
228
|
|
|
229
|
-
const waitingText = `Waiting for ${
|
|
229
|
+
const waitingText = `Waiting for ${
|
|
230
|
+
guardianName ?? resolveUserReference()
|
|
231
|
+
}'s approval...`;
|
|
230
232
|
|
|
231
233
|
try {
|
|
232
234
|
await deliverChannelReply(
|
|
@@ -285,7 +287,7 @@ describe("trusted-contact pending-approval notifier", () => {
|
|
|
285
287
|
conversationId: "conv-1",
|
|
286
288
|
sourceChannel: "telegram",
|
|
287
289
|
externalChatId: "chat-123",
|
|
288
|
-
|
|
290
|
+
trustClass: "trusted_contact",
|
|
289
291
|
guardianExternalUserId: "guardian-1",
|
|
290
292
|
replyCallbackUrl: "http://localhost:3000/deliver/telegram",
|
|
291
293
|
bearerToken: "test-token",
|
|
@@ -322,7 +324,7 @@ describe("trusted-contact pending-approval notifier", () => {
|
|
|
322
324
|
conversationId: "conv-1",
|
|
323
325
|
sourceChannel: "telegram",
|
|
324
326
|
externalChatId: "chat-123",
|
|
325
|
-
|
|
327
|
+
trustClass: "trusted_contact",
|
|
326
328
|
guardianExternalUserId: "guardian-1",
|
|
327
329
|
replyCallbackUrl: "http://localhost:3000/deliver/telegram",
|
|
328
330
|
notifiedRequestIds: notified,
|
|
@@ -355,7 +357,7 @@ describe("trusted-contact pending-approval notifier", () => {
|
|
|
355
357
|
conversationId: "conv-1",
|
|
356
358
|
sourceChannel: "telegram",
|
|
357
359
|
externalChatId: "chat-123",
|
|
358
|
-
|
|
360
|
+
trustClass: "trusted_contact",
|
|
359
361
|
guardianExternalUserId: "guardian-1",
|
|
360
362
|
replyCallbackUrl: "http://localhost:3000/deliver/telegram",
|
|
361
363
|
notifiedRequestIds: notified,
|
|
@@ -384,7 +386,7 @@ describe("trusted-contact pending-approval notifier", () => {
|
|
|
384
386
|
conversationId: "conv-1",
|
|
385
387
|
sourceChannel: "telegram",
|
|
386
388
|
externalChatId: "chat-123",
|
|
387
|
-
|
|
389
|
+
trustClass: "trusted_contact",
|
|
388
390
|
guardianExternalUserId: "guardian-1",
|
|
389
391
|
replyCallbackUrl: "http://localhost:3000/deliver/telegram",
|
|
390
392
|
notifiedRequestIds: notified,
|
|
@@ -416,7 +418,7 @@ describe("trusted-contact pending-approval notifier", () => {
|
|
|
416
418
|
conversationId: "conv-1",
|
|
417
419
|
sourceChannel: "telegram" as ChannelId,
|
|
418
420
|
externalChatId: "chat-123",
|
|
419
|
-
|
|
421
|
+
trustClass: "trusted_contact" as const,
|
|
420
422
|
guardianExternalUserId: "guardian-1",
|
|
421
423
|
replyCallbackUrl: "http://localhost:3000/deliver/telegram",
|
|
422
424
|
notifiedRequestIds: notified,
|
|
@@ -444,7 +446,7 @@ describe("trusted-contact pending-approval notifier", () => {
|
|
|
444
446
|
conversationId: "conv-1",
|
|
445
447
|
sourceChannel: "telegram" as ChannelId,
|
|
446
448
|
externalChatId: "chat-123",
|
|
447
|
-
|
|
449
|
+
trustClass: "trusted_contact" as const,
|
|
448
450
|
guardianExternalUserId: "guardian-1",
|
|
449
451
|
replyCallbackUrl: "http://localhost:3000/deliver/telegram",
|
|
450
452
|
notifiedRequestIds: notified,
|
|
@@ -497,7 +499,7 @@ describe("trusted-contact pending-approval notifier", () => {
|
|
|
497
499
|
conversationId: "conv-A",
|
|
498
500
|
sourceChannel: "telegram",
|
|
499
501
|
externalChatId: "chat-A",
|
|
500
|
-
|
|
502
|
+
trustClass: "trusted_contact",
|
|
501
503
|
guardianExternalUserId: "guardian-1",
|
|
502
504
|
replyCallbackUrl: "http://localhost:3000/deliver/telegram",
|
|
503
505
|
notifiedRequestIds: notified,
|
|
@@ -512,7 +514,7 @@ describe("trusted-contact pending-approval notifier", () => {
|
|
|
512
514
|
conversationId: "conv-B",
|
|
513
515
|
sourceChannel: "telegram",
|
|
514
516
|
externalChatId: "chat-B",
|
|
515
|
-
|
|
517
|
+
trustClass: "trusted_contact",
|
|
516
518
|
guardianExternalUserId: "guardian-1",
|
|
517
519
|
replyCallbackUrl: "http://localhost:3000/deliver/telegram",
|
|
518
520
|
notifiedRequestIds: notified,
|
|
@@ -535,7 +537,7 @@ describe("trusted-contact pending-approval notifier", () => {
|
|
|
535
537
|
conversationId: "conv-A",
|
|
536
538
|
sourceChannel: "telegram",
|
|
537
539
|
externalChatId: "chat-A",
|
|
538
|
-
|
|
540
|
+
trustClass: "trusted_contact",
|
|
539
541
|
guardianExternalUserId: "guardian-1",
|
|
540
542
|
replyCallbackUrl: "http://localhost:3000/deliver/telegram",
|
|
541
543
|
notifiedRequestIds: notified,
|
|
@@ -559,7 +561,7 @@ describe("trusted-contact pending-approval notifier", () => {
|
|
|
559
561
|
conversationId: "conv-1",
|
|
560
562
|
sourceChannel: "telegram",
|
|
561
563
|
externalChatId: "chat-123",
|
|
562
|
-
|
|
564
|
+
trustClass: "guardian",
|
|
563
565
|
guardianExternalUserId: "guardian-1",
|
|
564
566
|
replyCallbackUrl: "http://localhost:3000/deliver/telegram",
|
|
565
567
|
notifiedRequestIds: notified,
|
|
@@ -584,7 +586,7 @@ describe("trusted-contact pending-approval notifier", () => {
|
|
|
584
586
|
conversationId: "conv-1",
|
|
585
587
|
sourceChannel: "telegram",
|
|
586
588
|
externalChatId: "chat-123",
|
|
587
|
-
|
|
589
|
+
trustClass: "unknown",
|
|
588
590
|
replyCallbackUrl: "http://localhost:3000/deliver/telegram",
|
|
589
591
|
notifiedRequestIds: notified,
|
|
590
592
|
});
|
|
@@ -608,7 +610,7 @@ describe("trusted-contact pending-approval notifier", () => {
|
|
|
608
610
|
conversationId: "conv-1",
|
|
609
611
|
sourceChannel: "telegram",
|
|
610
612
|
externalChatId: "chat-123",
|
|
611
|
-
|
|
613
|
+
trustClass: "trusted_contact",
|
|
612
614
|
guardianExternalUserId: undefined,
|
|
613
615
|
replyCallbackUrl: "http://localhost:3000/deliver/telegram",
|
|
614
616
|
notifiedRequestIds: notified,
|
|
@@ -638,7 +640,7 @@ describe("trusted-contact pending-approval notifier", () => {
|
|
|
638
640
|
conversationId: "conv-1",
|
|
639
641
|
sourceChannel: "telegram" as ChannelId,
|
|
640
642
|
externalChatId: "chat-123",
|
|
641
|
-
|
|
643
|
+
trustClass: "trusted_contact" as const,
|
|
642
644
|
guardianExternalUserId: "guardian-1",
|
|
643
645
|
replyCallbackUrl: "http://localhost:3000/deliver/telegram",
|
|
644
646
|
notifiedRequestIds: notified,
|
|
@@ -666,7 +668,7 @@ describe("trusted-contact pending-approval notifier", () => {
|
|
|
666
668
|
conversationId: "conv-1",
|
|
667
669
|
sourceChannel: "telegram",
|
|
668
670
|
externalChatId: "chat-123",
|
|
669
|
-
|
|
671
|
+
trustClass: "trusted_contact",
|
|
670
672
|
guardianExternalUserId: "guardian-1",
|
|
671
673
|
replyCallbackUrl: "http://localhost:3000/deliver/telegram",
|
|
672
674
|
notifiedRequestIds: notified,
|
|
@@ -699,7 +701,7 @@ describe("trusted-contact pending-approval notifier", () => {
|
|
|
699
701
|
conversationId: "conv-1",
|
|
700
702
|
sourceChannel: "telegram",
|
|
701
703
|
externalChatId: "chat-123",
|
|
702
|
-
|
|
704
|
+
trustClass: "trusted_contact",
|
|
703
705
|
guardianExternalUserId: "guardian-1",
|
|
704
706
|
replyCallbackUrl: "http://localhost:3000/deliver/telegram",
|
|
705
707
|
notifiedRequestIds: notified,
|
|
@@ -731,7 +733,7 @@ describe("trusted-contact pending-approval notifier", () => {
|
|
|
731
733
|
conversationId: "conv-1",
|
|
732
734
|
sourceChannel: "telegram",
|
|
733
735
|
externalChatId: "chat-123",
|
|
734
|
-
|
|
736
|
+
trustClass: "trusted_contact",
|
|
735
737
|
guardianExternalUserId: "guardian-1",
|
|
736
738
|
replyCallbackUrl: "http://localhost:3000/deliver/telegram",
|
|
737
739
|
notifiedRequestIds: notified,
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
* End-to-end integration tests for the trusted-contact inline guardian approval feature.
|
|
3
3
|
*
|
|
4
4
|
* Verifies the full integration of M1-M4 milestones:
|
|
5
|
-
* M1: RoutingState (
|
|
5
|
+
* M1: RoutingState (trust-context-resolver.ts)
|
|
6
6
|
* M2: Confirmation request guardian bridge (confirmation-request-guardian-bridge.ts)
|
|
7
7
|
* M3: Pending approval notifier (inbound-message-handler.ts)
|
|
8
8
|
* M4: Inline grant wait-and-resume (tool-approval-handler.ts) +
|
|
@@ -182,7 +182,7 @@ mock.module("../config/env.js", () => ({
|
|
|
182
182
|
import { applyCanonicalGuardianDecision } from "../approvals/guardian-decision-primitive.js";
|
|
183
183
|
import type { ActorContext } from "../approvals/guardian-request-resolvers.js";
|
|
184
184
|
import { getResolver } from "../approvals/guardian-request-resolvers.js";
|
|
185
|
-
import type {
|
|
185
|
+
import type { TrustContext } from "../daemon/session-runtime-assembly.js";
|
|
186
186
|
import {
|
|
187
187
|
createCanonicalGuardianRequest,
|
|
188
188
|
getCanonicalGuardianRequest,
|
|
@@ -192,10 +192,7 @@ import {
|
|
|
192
192
|
import { getDb, initializeDb, resetDb } from "../memory/db.js";
|
|
193
193
|
import { scopedApprovalGrants } from "../memory/schema.js";
|
|
194
194
|
import { bridgeConfirmationRequestToGuardian } from "../runtime/confirmation-request-guardian-bridge.js";
|
|
195
|
-
import {
|
|
196
|
-
type GuardianContext,
|
|
197
|
-
resolveRoutingState,
|
|
198
|
-
} from "../runtime/guardian-context-resolver.js";
|
|
195
|
+
import { resolveRoutingState } from "../runtime/trust-context-resolver.js";
|
|
199
196
|
import {
|
|
200
197
|
TC_GRANT_WAIT_MAX_MS,
|
|
201
198
|
ToolApprovalHandler,
|
|
@@ -231,7 +228,7 @@ function makeToolContext(overrides: Partial<ToolContext> = {}): ToolContext {
|
|
|
231
228
|
conversationId: "conv-1",
|
|
232
229
|
assistantId: "self",
|
|
233
230
|
requestId: "req-1",
|
|
234
|
-
|
|
231
|
+
trustClass: "trusted_contact",
|
|
235
232
|
executionChannel: "telegram",
|
|
236
233
|
requesterExternalUserId: "requester-1",
|
|
237
234
|
...overrides,
|
|
@@ -247,7 +244,7 @@ function guardianActor(overrides: Partial<ActorContext> = {}): ActorContext {
|
|
|
247
244
|
};
|
|
248
245
|
}
|
|
249
246
|
|
|
250
|
-
function
|
|
247
|
+
function makeTrustedContactTrustContext(): TrustContext {
|
|
251
248
|
return {
|
|
252
249
|
sourceChannel: "telegram",
|
|
253
250
|
trustClass: "trusted_contact",
|
|
@@ -292,7 +289,7 @@ describe("(a) target flow: trusted-contact inline guardian approval end-to-end",
|
|
|
292
289
|
test("trusted contact requests tool, guardian approves mid-wait, tool executes inline", async () => {
|
|
293
290
|
const toolName = "bash";
|
|
294
291
|
const input = { command: "echo hello" };
|
|
295
|
-
const context = makeToolContext({
|
|
292
|
+
const context = makeToolContext({ trustClass: "trusted_contact" });
|
|
296
293
|
|
|
297
294
|
// Schedule guardian approval after 100ms during the inline wait
|
|
298
295
|
const approvalPromise = (async () => {
|
|
@@ -349,20 +346,20 @@ describe("(a) target flow: trusted-contact inline guardian approval end-to-end",
|
|
|
349
346
|
|
|
350
347
|
test("complete flow: routing state allows interactive + bridge notifies guardian + tool resumes", async () => {
|
|
351
348
|
// Step 1: Verify routing state allows interactive turns for trusted contacts
|
|
352
|
-
const
|
|
349
|
+
const trustCtx: TrustContext = {
|
|
353
350
|
sourceChannel: "telegram",
|
|
354
351
|
trustClass: "trusted_contact",
|
|
355
352
|
guardianExternalUserId: "guardian-1",
|
|
356
353
|
guardianChatId: "guardian-chat-1",
|
|
357
354
|
};
|
|
358
|
-
const routing = resolveRoutingState(
|
|
355
|
+
const routing = resolveRoutingState(trustCtx);
|
|
359
356
|
expect(routing.promptWaitingAllowed).toBe(true);
|
|
360
357
|
expect(routing.guardianRouteResolvable).toBe(true);
|
|
361
358
|
|
|
362
359
|
// Step 2: Tool invocation creates escalation + waits inline + guardian approves
|
|
363
360
|
const toolName = "bash";
|
|
364
361
|
const input = { command: "deploy" };
|
|
365
|
-
const context = makeToolContext({
|
|
362
|
+
const context = makeToolContext({ trustClass: "trusted_contact" });
|
|
366
363
|
|
|
367
364
|
const approvalPromise = (async () => {
|
|
368
365
|
await new Promise((r) => setTimeout(r, 80));
|
|
@@ -431,11 +428,11 @@ describe("(b) prompt-path flow: confirmation_request bridges to guardian", () =>
|
|
|
431
428
|
expiresAt: new Date(Date.now() + 5 * 60_000).toISOString(),
|
|
432
429
|
});
|
|
433
430
|
|
|
434
|
-
const
|
|
431
|
+
const trustContext = makeTrustedContactTrustContext();
|
|
435
432
|
|
|
436
433
|
const result = bridgeConfirmationRequestToGuardian({
|
|
437
434
|
canonicalRequest,
|
|
438
|
-
|
|
435
|
+
trustContext,
|
|
439
436
|
conversationId: "conv-bridge-1",
|
|
440
437
|
toolName: "bash",
|
|
441
438
|
});
|
|
@@ -470,11 +467,11 @@ describe("(b) prompt-path flow: confirmation_request bridges to guardian", () =>
|
|
|
470
467
|
expiresAt: new Date(Date.now() + 5 * 60_000).toISOString(),
|
|
471
468
|
});
|
|
472
469
|
|
|
473
|
-
const
|
|
470
|
+
const trustContext = makeTrustedContactTrustContext();
|
|
474
471
|
|
|
475
472
|
bridgeConfirmationRequestToGuardian({
|
|
476
473
|
canonicalRequest,
|
|
477
|
-
|
|
474
|
+
trustContext,
|
|
478
475
|
conversationId: "conv-unified-1",
|
|
479
476
|
toolName: "bash",
|
|
480
477
|
});
|
|
@@ -505,7 +502,7 @@ describe("(c) no-binding flow: trusted contact fails fast without guardian bindi
|
|
|
505
502
|
});
|
|
506
503
|
|
|
507
504
|
test("routing state blocks prompt waiting when no guardian binding exists", () => {
|
|
508
|
-
const ctx:
|
|
505
|
+
const ctx: TrustContext = {
|
|
509
506
|
sourceChannel: "telegram",
|
|
510
507
|
trustClass: "trusted_contact",
|
|
511
508
|
// No guardianExternalUserId — mirrors no binding
|
|
@@ -521,7 +518,7 @@ describe("(c) no-binding flow: trusted contact fails fast without guardian bindi
|
|
|
521
518
|
const toolName = "bash";
|
|
522
519
|
const input = { command: "ls" };
|
|
523
520
|
const context = makeToolContext({
|
|
524
|
-
|
|
521
|
+
trustClass: "trusted_contact",
|
|
525
522
|
executionChannel: "telegram",
|
|
526
523
|
});
|
|
527
524
|
|
|
@@ -569,11 +566,11 @@ describe("(c) no-binding flow: trusted contact fails fast without guardian bindi
|
|
|
569
566
|
expiresAt: new Date(Date.now() + 5 * 60_000).toISOString(),
|
|
570
567
|
});
|
|
571
568
|
|
|
572
|
-
const
|
|
569
|
+
const trustContext = makeTrustedContactTrustContext();
|
|
573
570
|
|
|
574
571
|
const result = bridgeConfirmationRequestToGuardian({
|
|
575
572
|
canonicalRequest,
|
|
576
|
-
|
|
573
|
+
trustContext,
|
|
577
574
|
conversationId: "conv-nobinding",
|
|
578
575
|
toolName: "bash",
|
|
579
576
|
});
|
|
@@ -614,7 +611,7 @@ describe("(d) unknown actor flow: fail-closed with no interactive approval", ()
|
|
|
614
611
|
const toolName = "bash";
|
|
615
612
|
const input = { command: "ls" };
|
|
616
613
|
const context = makeToolContext({
|
|
617
|
-
|
|
614
|
+
trustClass: "unknown",
|
|
618
615
|
executionChannel: "telegram",
|
|
619
616
|
requesterExternalUserId: "unknown-user",
|
|
620
617
|
});
|
|
@@ -649,12 +646,12 @@ describe("(d) unknown actor flow: fail-closed with no interactive approval", ()
|
|
|
649
646
|
});
|
|
650
647
|
|
|
651
648
|
test("unknown actors have promptWaitingAllowed=false regardless of guardian route", () => {
|
|
652
|
-
const withRoute:
|
|
649
|
+
const withRoute: TrustContext = {
|
|
653
650
|
sourceChannel: "telegram",
|
|
654
651
|
trustClass: "unknown",
|
|
655
652
|
guardianExternalUserId: "guardian-1",
|
|
656
653
|
};
|
|
657
|
-
const withoutRoute:
|
|
654
|
+
const withoutRoute: TrustContext = {
|
|
658
655
|
sourceChannel: "telegram",
|
|
659
656
|
trustClass: "unknown",
|
|
660
657
|
};
|
|
@@ -680,14 +677,14 @@ describe("(d) unknown actor flow: fail-closed with no interactive approval", ()
|
|
|
680
677
|
expiresAt: new Date(Date.now() + 5 * 60_000).toISOString(),
|
|
681
678
|
});
|
|
682
679
|
|
|
683
|
-
const
|
|
680
|
+
const trustContext: TrustContext = {
|
|
684
681
|
sourceChannel: "telegram",
|
|
685
682
|
trustClass: "unknown",
|
|
686
683
|
};
|
|
687
684
|
|
|
688
685
|
const result = bridgeConfirmationRequestToGuardian({
|
|
689
686
|
canonicalRequest,
|
|
690
|
-
|
|
687
|
+
trustContext,
|
|
691
688
|
conversationId: "conv-unknown",
|
|
692
689
|
toolName: "bash",
|
|
693
690
|
});
|
|
@@ -710,12 +707,12 @@ describe("(d) unknown actor flow: fail-closed with no interactive approval", ()
|
|
|
710
707
|
* flags as always-false under strict literal narrowing — TS2367/TS2872).
|
|
711
708
|
*/
|
|
712
709
|
function checkIsBoundGuardianActor(params: {
|
|
713
|
-
|
|
710
|
+
trustClass: string;
|
|
714
711
|
guardianExternalUserId: string | undefined;
|
|
715
712
|
requesterExternalUserId: string;
|
|
716
713
|
}): boolean {
|
|
717
714
|
return (
|
|
718
|
-
params.
|
|
715
|
+
params.trustClass === "guardian" &&
|
|
719
716
|
!!params.guardianExternalUserId &&
|
|
720
717
|
params.requesterExternalUserId === params.guardianExternalUserId
|
|
721
718
|
);
|
|
@@ -741,7 +738,7 @@ describe("(e) guardian-only prompt delivery invariant", () => {
|
|
|
741
738
|
// actors matching the binding receive the prompt.
|
|
742
739
|
|
|
743
740
|
const result = checkIsBoundGuardianActor({
|
|
744
|
-
|
|
741
|
+
trustClass: "trusted_contact",
|
|
745
742
|
guardianExternalUserId: "guardian-1",
|
|
746
743
|
requesterExternalUserId: "requester-1",
|
|
747
744
|
});
|
|
@@ -752,7 +749,7 @@ describe("(e) guardian-only prompt delivery invariant", () => {
|
|
|
752
749
|
|
|
753
750
|
test("unknown actors do NOT receive approval prompt UI", () => {
|
|
754
751
|
const result = checkIsBoundGuardianActor({
|
|
755
|
-
|
|
752
|
+
trustClass: "unknown",
|
|
756
753
|
guardianExternalUserId: "guardian-1",
|
|
757
754
|
requesterExternalUserId: "unknown-user",
|
|
758
755
|
});
|
|
@@ -762,7 +759,7 @@ describe("(e) guardian-only prompt delivery invariant", () => {
|
|
|
762
759
|
|
|
763
760
|
test("guardian actor that matches binding DOES receive approval prompt UI", () => {
|
|
764
761
|
const result = checkIsBoundGuardianActor({
|
|
765
|
-
|
|
762
|
+
trustClass: "guardian",
|
|
766
763
|
guardianExternalUserId: "guardian-1",
|
|
767
764
|
requesterExternalUserId: "guardian-1",
|
|
768
765
|
});
|
|
@@ -773,7 +770,7 @@ describe("(e) guardian-only prompt delivery invariant", () => {
|
|
|
773
770
|
test("guardian actor with identity mismatch does NOT receive approval prompt UI", () => {
|
|
774
771
|
// After guardian rotation, old guardian identity should not receive prompts
|
|
775
772
|
const result = checkIsBoundGuardianActor({
|
|
776
|
-
|
|
773
|
+
trustClass: "guardian",
|
|
777
774
|
guardianExternalUserId: "new-guardian-2",
|
|
778
775
|
requesterExternalUserId: "old-guardian-1",
|
|
779
776
|
});
|
|
@@ -810,7 +807,7 @@ describe("(f) timeout/stale flow: stale guardian decision after inline wait time
|
|
|
810
807
|
test("inline wait timeout clears followupState so later approval sends retry notification", async () => {
|
|
811
808
|
const toolName = "bash";
|
|
812
809
|
const input = { command: "echo stale" };
|
|
813
|
-
const context = makeToolContext({
|
|
810
|
+
const context = makeToolContext({ trustClass: "trusted_contact" });
|
|
814
811
|
|
|
815
812
|
// Let the tool invocation time out (no guardian approval within 100ms)
|
|
816
813
|
const result = await handler.checkPreExecutionGates(
|
|
@@ -966,7 +963,7 @@ describe("(f) timeout/stale flow: stale guardian decision after inline wait time
|
|
|
966
963
|
test("denied inline wait produces explicit denial (no false success)", async () => {
|
|
967
964
|
const toolName = "bash";
|
|
968
965
|
const input = { command: "rm -rf /" };
|
|
969
|
-
const context = makeToolContext({
|
|
966
|
+
const context = makeToolContext({ trustClass: "trusted_contact" });
|
|
970
967
|
|
|
971
968
|
// Schedule guardian rejection after 80ms
|
|
972
969
|
const rejectionPromise = (async () => {
|
|
@@ -1009,7 +1006,7 @@ describe("(f) timeout/stale flow: stale guardian decision after inline wait time
|
|
|
1009
1006
|
test("timeout produces explicit timeout message (no false success)", async () => {
|
|
1010
1007
|
const toolName = "bash";
|
|
1011
1008
|
const input = { command: "curl example.com" };
|
|
1012
|
-
const context = makeToolContext({
|
|
1009
|
+
const context = makeToolContext({ trustClass: "trusted_contact" });
|
|
1013
1010
|
|
|
1014
1011
|
const result = await handler.checkPreExecutionGates(
|
|
1015
1012
|
toolName,
|
|
@@ -1054,7 +1051,7 @@ describe("cross-milestone integration checks", () => {
|
|
|
1054
1051
|
|
|
1055
1052
|
test("M1+M4: routing state interactivity drives inline wait eligibility", async () => {
|
|
1056
1053
|
// With guardian binding: interactive + inline wait allowed
|
|
1057
|
-
const withBinding:
|
|
1054
|
+
const withBinding: TrustContext = {
|
|
1058
1055
|
sourceChannel: "telegram",
|
|
1059
1056
|
trustClass: "trusted_contact",
|
|
1060
1057
|
guardianExternalUserId: "guardian-1",
|
|
@@ -1062,7 +1059,7 @@ describe("cross-milestone integration checks", () => {
|
|
|
1062
1059
|
expect(resolveRoutingState(withBinding).promptWaitingAllowed).toBe(true);
|
|
1063
1060
|
|
|
1064
1061
|
// Without guardian binding: not interactive + inline wait should not enter dead-end
|
|
1065
|
-
const withoutBinding:
|
|
1062
|
+
const withoutBinding: TrustContext = {
|
|
1066
1063
|
sourceChannel: "telegram",
|
|
1067
1064
|
trustClass: "trusted_contact",
|
|
1068
1065
|
};
|
|
@@ -1090,11 +1087,11 @@ describe("cross-milestone integration checks", () => {
|
|
|
1090
1087
|
expiresAt: new Date(Date.now() + 5 * 60_000).toISOString(),
|
|
1091
1088
|
});
|
|
1092
1089
|
|
|
1093
|
-
const
|
|
1090
|
+
const trustContext = makeTrustedContactTrustContext();
|
|
1094
1091
|
|
|
1095
1092
|
const bridgeResult = bridgeConfirmationRequestToGuardian({
|
|
1096
1093
|
canonicalRequest,
|
|
1097
|
-
|
|
1094
|
+
trustContext,
|
|
1098
1095
|
conversationId: "conv-consistency",
|
|
1099
1096
|
toolName: "bash",
|
|
1100
1097
|
});
|
|
@@ -1125,7 +1122,7 @@ describe("cross-milestone integration checks", () => {
|
|
|
1125
1122
|
const toolName = "bash";
|
|
1126
1123
|
const input = { command: "ls" };
|
|
1127
1124
|
const context = makeToolContext({
|
|
1128
|
-
|
|
1125
|
+
trustClass: "guardian",
|
|
1129
1126
|
executionChannel: "telegram",
|
|
1130
1127
|
requesterExternalUserId: "guardian-1",
|
|
1131
1128
|
});
|
|
@@ -1158,7 +1155,7 @@ describe("cross-milestone integration checks", () => {
|
|
|
1158
1155
|
const input = { command: "aborted-command" };
|
|
1159
1156
|
const controller = new AbortController();
|
|
1160
1157
|
const context = makeToolContext({
|
|
1161
|
-
|
|
1158
|
+
trustClass: "trusted_contact",
|
|
1162
1159
|
signal: controller.signal,
|
|
1163
1160
|
});
|
|
1164
1161
|
|