@vellumai/assistant 0.4.44 → 0.4.45
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/.prettierignore +4 -0
- package/ARCHITECTURE.md +34 -31
- package/README.md +4 -4
- package/bun.lock +10 -35
- package/docs/architecture/integrations.md +102 -197
- package/docs/architecture/keychain-broker.md +1 -1
- package/docs/architecture/memory.md +2 -2
- package/docs/architecture/scheduling.md +1 -1
- package/docs/architecture/security.md +11 -11
- package/docs/error-handling.md +1 -1
- package/docs/trusted-contact-access.md +3 -3
- package/drizzle/meta/0000_snapshot.json +34 -100
- package/drizzle/meta/_journal.json +1 -1
- package/drizzle.config.ts +4 -4
- package/package.json +3 -2
- package/scripts/capture-x-graphql.ts +237 -141
- package/scripts/generate-bundled-tool-registry.ts +223 -0
- package/src/__tests__/access-request-decision.test.ts +0 -1
- package/src/__tests__/actor-token-service.test.ts +23 -24
- package/src/__tests__/agent-loop.test.ts +0 -131
- package/src/__tests__/always-loaded-tools-guard.test.ts +71 -0
- package/src/__tests__/amazon-cdp-integration.test.ts +11 -9
- package/src/__tests__/approval-primitive.test.ts +0 -1
- package/src/__tests__/approval-routes-http.test.ts +11 -1
- package/src/__tests__/asset-materialize-tool.test.ts +0 -1
- package/src/__tests__/asset-search-tool.test.ts +0 -1
- package/src/__tests__/assistant-attachment-directive.test.ts +1 -1
- package/src/__tests__/assistant-events-sse-hardening.test.ts +0 -1
- package/src/__tests__/assistant-feature-flag-guardrails.test.ts +0 -2
- package/src/__tests__/assistant-feature-flags-integration.test.ts +70 -18
- package/src/__tests__/assistant-id-boundary-guard.test.ts +6 -6
- package/src/__tests__/attachments-store.test.ts +0 -1
- package/src/__tests__/avatar-e2e.test.ts +74 -115
- package/src/__tests__/avatar-router.test.ts +25 -62
- package/src/__tests__/browser-manager.test.ts +24 -0
- package/src/__tests__/browser-skill-baseline-tool-payload.test.ts +4 -3
- package/src/__tests__/browser-skill-endstate.test.ts +8 -11
- package/src/__tests__/btw-routes.test.ts +326 -0
- package/src/__tests__/bundled-skill-retrieval-guard.test.ts +23 -9
- package/src/__tests__/call-controller.test.ts +0 -1
- package/src/__tests__/call-conversation-messages.test.ts +0 -1
- package/src/__tests__/call-domain.test.ts +0 -1
- package/src/__tests__/call-pointer-messages.test.ts +0 -1
- package/src/__tests__/call-recovery.test.ts +0 -1
- package/src/__tests__/call-routes-http.test.ts +0 -1
- package/src/__tests__/call-store.test.ts +0 -1
- package/src/__tests__/canonical-guardian-store.test.ts +0 -1
- package/src/__tests__/channel-approval-routes.test.ts +1 -1
- package/src/__tests__/channel-approvals.test.ts +1 -1
- package/src/__tests__/channel-delivery-store.test.ts +0 -1
- package/src/__tests__/channel-guardian.test.ts +5 -7
- package/src/__tests__/channel-retry-sweep.test.ts +0 -1
- package/src/__tests__/checker.test.ts +4 -11
- package/src/__tests__/compaction.benchmark.test.ts +16 -14
- package/src/__tests__/computer-use-session-lifecycle.test.ts +10 -11
- package/src/__tests__/computer-use-session-working-dir.test.ts +2 -6
- package/src/__tests__/computer-use-skill-lifecycle-cleanup.test.ts +2 -5
- package/src/__tests__/computer-use-tools.test.ts +35 -31
- package/src/__tests__/config-schema.test.ts +11 -15
- package/src/__tests__/config-watcher.test.ts +0 -1
- package/src/__tests__/confirmation-request-guardian-bridge.test.ts +0 -1
- package/src/__tests__/conflict-store.test.ts +0 -1
- package/src/__tests__/connection-policy.test.ts +4 -7
- package/src/__tests__/contacts-tools.test.ts +0 -1
- package/src/__tests__/context-memory-e2e.test.ts +2 -4
- package/src/__tests__/context-overflow-reducer.test.ts +2 -4
- package/src/__tests__/context-window-manager.test.ts +147 -60
- package/src/__tests__/contradiction-checker.test.ts +0 -1
- package/src/__tests__/conversation-attention-store.test.ts +0 -1
- package/src/__tests__/conversation-attention-telegram.test.ts +1 -1
- package/src/__tests__/conversation-pairing.test.ts +2 -2
- package/src/__tests__/conversation-routes-guardian-reply.test.ts +25 -1
- package/src/__tests__/conversation-routes-slash-commands.test.ts +381 -0
- package/src/__tests__/conversation-store.test.ts +0 -1
- package/src/__tests__/conversation-unread-route.test.ts +1 -2
- package/src/__tests__/credential-security-invariants.test.ts +7 -8
- package/src/__tests__/cross-provider-web-search.test.ts +353 -0
- package/src/__tests__/daemon-assistant-events.test.ts +6 -7
- package/src/__tests__/db-schedule-syntax-migration.test.ts +15 -3
- package/src/__tests__/delete-managed-skill-tool.test.ts +5 -9
- package/src/__tests__/deterministic-verification-control-plane.test.ts +0 -1
- package/src/__tests__/diagnostics-export.test.ts +189 -0
- package/src/__tests__/dynamic-skill-workflow-prompt.test.ts +0 -1
- package/src/__tests__/emit-signal-routing-intent.test.ts +3 -3
- package/src/__tests__/entity-extractor.test.ts +0 -1
- package/src/__tests__/entity-search.test.ts +0 -1
- package/src/__tests__/ephemeral-permissions.test.ts +2 -4
- package/src/__tests__/file-read-tool.test.ts +86 -0
- package/src/__tests__/followup-tools.test.ts +0 -1
- package/src/__tests__/frontmatter.test.ts +77 -34
- package/src/__tests__/gateway-only-enforcement.test.ts +0 -1
- package/src/__tests__/gateway-only-guard.test.ts +1 -1
- package/src/__tests__/guardian-action-conversation-turn.test.ts +0 -1
- package/src/__tests__/guardian-action-followup-executor.test.ts +0 -1
- package/src/__tests__/guardian-action-followup-store.test.ts +0 -1
- package/src/__tests__/guardian-action-grant-mint-consume.test.ts +0 -1
- package/src/__tests__/guardian-action-late-reply.test.ts +0 -1
- package/src/__tests__/guardian-action-store.test.ts +0 -1
- package/src/__tests__/guardian-action-sweep.test.ts +0 -1
- package/src/__tests__/guardian-decision-primitive-canonical.test.ts +0 -1
- package/src/__tests__/guardian-dispatch.test.ts +1 -2
- package/src/__tests__/guardian-grant-minting.test.ts +1 -1
- package/src/__tests__/guardian-outbound-http.test.ts +0 -1
- package/src/__tests__/guardian-principal-id-roundtrip.test.ts +0 -1
- package/src/__tests__/guardian-routing-invariants.test.ts +1 -1
- package/src/__tests__/guardian-routing-state.test.ts +0 -1
- package/src/__tests__/guardian-verification-voice-binding.test.ts +0 -1
- package/src/__tests__/guardian-verify-setup-skill-regression.test.ts +3 -5
- package/src/__tests__/handlers-user-message-approval-consumption.test.ts +28 -426
- package/src/__tests__/host-bash-proxy.test.ts +335 -0
- package/src/__tests__/host-file-proxy.test.ts +374 -0
- package/src/__tests__/host-shell-tool.test.ts +147 -1
- package/src/__tests__/http-user-message-parity.test.ts +361 -0
- package/src/__tests__/inbound-invite-redemption.test.ts +0 -1
- package/src/__tests__/integration-status.test.ts +3 -8
- package/src/__tests__/intent-routing.test.ts +7 -46
- package/src/__tests__/invite-redemption-service.test.ts +0 -1
- package/src/__tests__/invite-routes-http.test.ts +0 -1
- package/src/__tests__/llm-usage-store.test.ts +0 -1
- package/src/__tests__/managed-avatar-client.test.ts +101 -55
- package/src/__tests__/managed-skill-lifecycle.test.ts +9 -18
- package/src/__tests__/managed-store.test.ts +94 -21
- package/src/__tests__/media-reuse-story.e2e.test.ts +0 -1
- package/src/__tests__/memory-context-benchmark.benchmark.test.ts +2 -4
- package/src/__tests__/memory-lifecycle-e2e.test.ts +0 -1
- package/src/__tests__/memory-recall-quality.test.ts +0 -1
- package/src/__tests__/memory-regressions.experimental.test.ts +0 -1
- package/src/__tests__/memory-regressions.test.ts +0 -1
- package/src/__tests__/memory-retrieval.benchmark.test.ts +0 -1
- package/src/__tests__/memory-upsert-concurrency.test.ts +0 -1
- package/src/__tests__/messaging-send-tool.test.ts +35 -0
- package/src/__tests__/messaging-skill-split.test.ts +138 -0
- package/src/__tests__/migration-cross-version-compatibility.test.ts +0 -1
- package/src/__tests__/migration-export-http.test.ts +2 -3
- package/src/__tests__/migration-import-commit-http.test.ts +1 -2
- package/src/__tests__/migration-import-preflight-http.test.ts +1 -2
- package/src/__tests__/migration-validate-http.test.ts +1 -2
- package/src/__tests__/native-web-search.test.ts +475 -0
- package/src/__tests__/navigate-settings-tab.test.ts +84 -0
- package/src/__tests__/non-member-access-request.test.ts +0 -1
- package/src/__tests__/notification-broadcaster.test.ts +15 -15
- package/src/__tests__/notification-decision-strategy.test.ts +6 -6
- package/src/__tests__/notification-deep-link.test.ts +7 -7
- package/src/__tests__/notification-guardian-path.test.ts +2 -3
- package/src/__tests__/notification-telegram-adapter.test.ts +1 -1
- package/src/__tests__/notification-thread-candidates.test.ts +4 -4
- package/src/__tests__/onboarding-starter-tasks.test.ts +0 -1
- package/src/__tests__/playbook-execution.test.ts +0 -1
- package/src/__tests__/playbook-tools.test.ts +0 -1
- package/src/__tests__/profile-compiler.test.ts +0 -1
- package/src/__tests__/provider-managed-proxy-integration.test.ts +25 -0
- package/src/__tests__/qdrant-collection-migration.test.ts +223 -0
- package/src/__tests__/recording-handler.test.ts +30 -94
- package/src/__tests__/registry.test.ts +28 -35
- package/src/__tests__/relay-server.test.ts +0 -1
- package/src/__tests__/ride-shotgun-handler.test.ts +4 -20
- package/src/__tests__/runtime-attachment-metadata.test.ts +0 -1
- package/src/__tests__/runtime-events-sse-parity.test.ts +3 -4
- package/src/__tests__/runtime-events-sse.test.ts +0 -1
- package/src/__tests__/sandbox-diagnostics.test.ts +0 -1
- package/src/__tests__/scaffold-managed-skill-tool.test.ts +30 -28
- package/src/__tests__/schedule-store.test.ts +441 -1
- package/src/__tests__/schedule-tools.test.ts +468 -7
- package/src/__tests__/scheduler-recurrence.test.ts +196 -23
- package/src/__tests__/scoped-approval-grants.test.ts +0 -1
- package/src/__tests__/scoped-grant-security-matrix.test.ts +0 -1
- package/src/__tests__/secret-prompt-log-hygiene.test.ts +6 -3
- package/src/__tests__/secret-response-routing.test.ts +4 -1
- package/src/__tests__/send-endpoint-busy.test.ts +14 -2
- package/src/__tests__/send-notification-tool.test.ts +0 -7
- package/src/__tests__/sequence-store.test.ts +0 -1
- package/src/__tests__/server-history-render.test.ts +1 -2
- package/src/__tests__/session-abort-tool-results.test.ts +0 -1
- package/src/__tests__/session-agent-loop.test.ts +46 -6
- package/src/__tests__/session-confirmation-signals.test.ts +0 -1
- package/src/__tests__/session-conflict-gate.test.ts +2 -6
- package/src/__tests__/session-error.test.ts +5 -14
- package/src/__tests__/session-init.benchmark.test.ts +3 -5
- package/src/__tests__/session-load-history-repair.test.ts +0 -1
- package/src/__tests__/session-media-retry.test.ts +12 -74
- package/src/__tests__/session-pre-run-repair.test.ts +0 -1
- package/src/__tests__/session-profile-injection.test.ts +2 -6
- package/src/__tests__/session-provider-retry-repair.test.ts +2 -6
- package/src/__tests__/session-queue.test.ts +94 -139
- package/src/__tests__/session-skill-tools.test.ts +115 -115
- package/src/__tests__/session-slash-known.test.ts +0 -1
- package/src/__tests__/session-slash-queue.test.ts +0 -1
- package/src/__tests__/session-slash-unknown.test.ts +0 -1
- package/src/__tests__/session-surfaces-task-progress.test.ts +34 -0
- package/src/__tests__/session-usage.test.ts +0 -1
- package/src/__tests__/session-workspace-cache-state.test.ts +2 -6
- package/src/__tests__/session-workspace-injection.test.ts +2 -6
- package/src/__tests__/session-workspace-tool-tracking.test.ts +2 -6
- package/src/__tests__/skill-feature-flags-integration.test.ts +180 -184
- package/src/__tests__/skill-feature-flags.test.ts +125 -18
- package/src/__tests__/skill-load-feature-flag.test.ts +1 -2
- package/src/__tests__/skill-load-tool.test.ts +194 -2
- package/src/__tests__/skill-projection-feature-flag.test.ts +27 -16
- package/src/__tests__/skill-projection.benchmark.test.ts +15 -14
- package/src/__tests__/skills.test.ts +14 -53
- package/src/__tests__/slack-channel-config.test.ts +0 -1
- package/src/__tests__/slack-inbound-verification.test.ts +0 -1
- package/src/__tests__/slack-skill.test.ts +1 -1
- package/src/__tests__/subagent-tools.test.ts +2 -2
- package/src/__tests__/system-prompt.test.ts +4 -3
- package/src/__tests__/task-compiler.test.ts +0 -1
- package/src/__tests__/task-management-tools.test.ts +0 -1
- package/src/__tests__/task-memory-cleanup.test.ts +0 -1
- package/src/__tests__/task-runner.test.ts +0 -1
- package/src/__tests__/task-scheduler.test.ts +0 -1
- package/src/__tests__/terminal-tools.test.ts +0 -1
- package/src/__tests__/test-support/computer-use-skill-harness.ts +2 -4
- package/src/__tests__/thread-seed-composer.test.ts +5 -5
- package/src/__tests__/tool-approval-handler.test.ts +0 -1
- package/src/__tests__/tool-execution-abort-cleanup.test.ts +0 -1
- package/src/__tests__/tool-execution-pipeline.benchmark.test.ts +0 -1
- package/src/__tests__/tool-executor.test.ts +8 -86
- package/src/__tests__/tool-grant-request-escalation.test.ts +0 -1
- package/src/__tests__/tool-notification-listener.test.ts +1 -1
- package/src/__tests__/tool-preview-lifecycle.test.ts +416 -0
- package/src/__tests__/trust-store.test.ts +80 -4
- package/src/__tests__/trusted-contact-approval-notifier.test.ts +0 -1
- package/src/__tests__/trusted-contact-inline-approval-integration.test.ts +0 -1
- package/src/__tests__/trusted-contact-lifecycle-notifications.test.ts +0 -1
- package/src/__tests__/trusted-contact-multichannel.test.ts +0 -1
- package/src/__tests__/trusted-contact-verification.test.ts +0 -1
- package/src/__tests__/twilio-provider.test.ts +0 -1
- package/src/__tests__/twilio-routes.test.ts +0 -1
- package/src/__tests__/{request-file-tool.test.ts → ui-file-upload-surface.test.ts} +11 -72
- package/src/__tests__/update-bulletin.test.ts +0 -1
- package/src/__tests__/usage-cache-backfill-migration.test.ts +0 -1
- package/src/__tests__/usage-routes.test.ts +0 -1
- package/src/__tests__/verification-control-plane-policy.test.ts +4 -4
- package/src/__tests__/voice-invite-redemption.test.ts +0 -1
- package/src/__tests__/voice-scoped-grant-consumer.test.ts +0 -1
- package/src/__tests__/voice-session-bridge.test.ts +9 -1
- package/src/__tests__/web-fetch.test.ts +57 -0
- package/src/__tests__/workspace-git-service.test.ts +5 -14
- package/src/__tests__/workspace-policy.test.ts +0 -1
- package/src/agent/loop.ts +22 -34
- package/src/bundler/bundle-signer.ts +4 -4
- package/src/calls/call-controller.ts +1 -1
- package/src/calls/relay-server.ts +1 -1
- package/src/calls/twilio-rest.ts +1 -1
- package/src/calls/voice-session-bridge.ts +3 -1
- package/src/cli/__tests__/notifications.test.ts +3 -4
- package/src/cli/commands/map.ts +2 -6
- package/src/cli/commands/mcp.ts +73 -15
- package/src/cli/commands/notifications.ts +4 -4
- package/src/cli/commands/sessions.ts +9 -1
- package/src/cli/commands/skills.ts +6 -10
- package/src/cli/http-client.ts +2 -3
- package/src/cli/main-screen.tsx +10 -10
- package/src/cli/program.ts +0 -4
- package/src/cli/reference.ts +0 -2
- package/src/cli.ts +15 -9
- package/src/config/__tests__/bundled-tool-registry-guard.test.ts +120 -0
- package/src/config/bundled-skills/_shared/CLI_RETRIEVAL_PATTERN.md +11 -0
- package/src/config/bundled-skills/app-builder/SKILL.md +6 -1
- package/src/config/bundled-skills/browser/SKILL.md +6 -1
- package/src/config/bundled-skills/chatgpt-import/SKILL.md +5 -1
- package/src/config/bundled-skills/claude-code/SKILL.md +5 -1
- package/src/config/bundled-skills/computer-use/SKILL.md +6 -1
- package/src/config/bundled-skills/computer-use/TOOLS.json +6 -69
- package/src/config/bundled-skills/computer-use/tools/computer-use-click.ts +10 -1
- package/src/config/bundled-skills/contacts/SKILL.md +10 -1
- package/src/config/bundled-skills/contacts/TOOLS.json +35 -0
- package/src/config/bundled-skills/{messaging → contacts}/tools/google-contacts.ts +9 -2
- package/src/config/bundled-skills/document/SKILL.md +4 -1
- package/src/config/bundled-skills/doordash/SKILL.md +8 -1
- package/src/config/bundled-skills/doordash/lib/shared/platform.ts +4 -1
- package/src/config/bundled-skills/followups/SKILL.md +4 -1
- package/src/config/bundled-skills/gmail/SKILL.md +180 -0
- package/src/config/bundled-skills/gmail/TOOLS.json +506 -0
- package/src/config/bundled-skills/gmail/tools/gmail-archive.ts +149 -0
- package/src/config/bundled-skills/gmail/tools/gmail-attachments.ts +110 -0
- package/src/config/bundled-skills/{messaging → gmail}/tools/gmail-draft.ts +1 -1
- package/src/config/bundled-skills/{messaging → gmail}/tools/gmail-filters.ts +1 -1
- package/src/config/bundled-skills/{messaging → gmail}/tools/gmail-follow-up.ts +1 -1
- package/src/config/bundled-skills/{messaging → gmail}/tools/gmail-forward.ts +1 -1
- package/src/config/bundled-skills/gmail/tools/gmail-label.ts +50 -0
- package/src/config/bundled-skills/{messaging → gmail}/tools/gmail-outreach-scan.ts +8 -90
- package/src/config/bundled-skills/{messaging → gmail}/tools/gmail-send-draft.ts +1 -1
- package/src/config/bundled-skills/{messaging → gmail}/tools/gmail-sender-digest.ts +2 -2
- package/src/config/bundled-skills/{messaging → gmail}/tools/gmail-trash.ts +1 -1
- package/src/config/bundled-skills/{messaging → gmail}/tools/gmail-unsubscribe.ts +1 -1
- package/src/config/bundled-skills/{messaging → gmail}/tools/gmail-vacation.ts +1 -1
- package/src/config/bundled-skills/gmail/tools/shared.ts +47 -0
- package/src/config/bundled-skills/google-calendar/SKILL.md +5 -1
- package/src/config/bundled-skills/image-studio/SKILL.md +5 -1
- package/src/config/bundled-skills/knowledge-graph/SKILL.md +4 -1
- package/src/config/bundled-skills/media-processing/SKILL.md +7 -13
- package/src/config/bundled-skills/media-processing/TOOLS.json +0 -22
- package/src/config/bundled-skills/media-processing/tools/generate-clip.ts +12 -1
- package/src/config/bundled-skills/messaging/SKILL.md +23 -139
- package/src/config/bundled-skills/messaging/TOOLS.json +33 -1215
- package/src/config/bundled-skills/messaging/tools/gmail-mime-helpers.ts +42 -0
- package/src/config/bundled-skills/messaging/tools/messaging-send.ts +165 -2
- package/src/config/bundled-skills/messaging/tools/messaging-sender-digest.ts +1 -13
- package/src/config/bundled-skills/messaging/tools/shared.ts +81 -34
- package/src/config/bundled-skills/notifications/SKILL.md +5 -1
- package/src/config/bundled-skills/orchestration/SKILL.md +30 -0
- package/src/config/bundled-skills/orchestration/TOOLS.json +35 -0
- package/src/config/bundled-skills/{reminder/tools/reminder-create.ts → orchestration/tools/swarm-delegate.ts} +3 -3
- package/src/config/bundled-skills/phone-calls/SKILL.md +9 -1
- package/src/config/bundled-skills/playbooks/SKILL.md +4 -1
- package/src/config/bundled-skills/schedule/SKILL.md +70 -9
- package/src/config/bundled-skills/schedule/TOOLS.json +38 -6
- package/src/config/bundled-skills/screen-watch/SKILL.md +28 -0
- package/src/config/bundled-skills/screen-watch/TOOLS.json +35 -0
- package/src/config/bundled-skills/{reminder/tools/reminder-cancel.ts → screen-watch/tools/start-screen-watch.ts} +3 -3
- package/src/config/bundled-skills/sequences/SKILL.md +47 -0
- package/src/config/bundled-skills/sequences/TOOLS.json +340 -0
- package/src/config/bundled-skills/sequences/tools/sequence-update.ts +128 -0
- package/src/config/bundled-skills/sequences/tools/shared.ts +9 -0
- package/src/config/bundled-skills/settings/SKILL.md +12 -0
- package/src/config/bundled-skills/settings/TOOLS.json +112 -0
- package/src/config/bundled-skills/settings/tools/navigate-settings-tab.ts +43 -0
- package/src/config/bundled-skills/settings/tools/open-system-settings.ts +52 -0
- package/src/config/bundled-skills/{computer-use/tools/computer-use-right-click.ts → settings/tools/set-avatar.ts} +2 -6
- package/src/{tools/system/voice-config.ts → config/bundled-skills/settings/tools/voice-config-update.ts} +59 -96
- package/src/config/bundled-skills/skill-management/SKILL.md +18 -0
- package/src/config/bundled-skills/skill-management/TOOLS.json +90 -0
- package/src/config/bundled-skills/{computer-use/tools/computer-use-double-click.ts → skill-management/tools/delete-managed.ts} +2 -6
- package/src/config/bundled-skills/skill-management/tools/scaffold-managed.ts +12 -0
- package/src/config/bundled-skills/slack/SKILL.md +5 -1
- package/src/config/bundled-skills/subagent/SKILL.md +4 -1
- package/src/config/bundled-skills/tasks/SKILL.md +5 -2
- package/src/config/bundled-skills/transcribe/SKILL.md +4 -1
- package/src/config/bundled-skills/watcher/SKILL.md +4 -1
- package/src/config/bundled-tool-registry.ts +118 -107
- package/src/config/env.ts +5 -2
- package/src/config/feature-flag-registry.json +25 -9
- package/src/config/loader.ts +10 -2
- package/src/config/schema.ts +19 -16
- package/src/config/schemas/inference.ts +12 -22
- package/src/config/schemas/memory-storage.ts +19 -1
- package/src/config/schemas/platform.ts +0 -16
- package/src/config/skill-state.ts +11 -8
- package/src/config/skills.ts +83 -32
- package/src/context/token-estimator.ts +11 -0
- package/src/context/window-manager.ts +180 -151
- package/src/daemon/computer-use-session.ts +11 -43
- package/src/daemon/daemon-control.ts +4 -1
- package/src/daemon/handlers/config-channels.ts +5 -9
- package/src/daemon/handlers/config-ingress.ts +0 -4
- package/src/daemon/handlers/config-model.ts +7 -13
- package/src/daemon/handlers/config-telegram.ts +4 -8
- package/src/daemon/handlers/config-voice.ts +2 -5
- package/src/daemon/handlers/dictation.ts +2 -12
- package/src/daemon/handlers/identity.ts +0 -105
- package/src/daemon/handlers/recording.ts +3 -23
- package/src/daemon/handlers/session-history.ts +1 -1
- package/src/daemon/handlers/sessions.ts +53 -72
- package/src/daemon/handlers/shared.ts +7 -28
- package/src/daemon/handlers/skills.ts +31 -27
- package/src/daemon/host-bash-proxy.ts +148 -0
- package/src/daemon/host-file-proxy.ts +135 -0
- package/src/daemon/lifecycle.ts +49 -24
- package/src/daemon/mcp-reload-service.ts +123 -0
- package/src/daemon/message-protocol.ts +6 -0
- package/src/daemon/message-types/browser.ts +1 -1
- package/src/daemon/message-types/computer-use.ts +1 -4
- package/src/daemon/message-types/guardian-actions.ts +1 -1
- package/src/daemon/message-types/host-bash.ts +18 -0
- package/src/daemon/message-types/host-file.ts +44 -0
- package/src/daemon/message-types/integrations.ts +1 -67
- package/src/daemon/message-types/messages.ts +15 -0
- package/src/daemon/message-types/schedules.ts +11 -27
- package/src/daemon/message-types/sessions.ts +2 -1
- package/src/daemon/message-types/settings.ts +1 -1
- package/src/daemon/message-types/shared.ts +1 -1
- package/src/daemon/ride-shotgun-handler.ts +2 -42
- package/src/daemon/server.ts +43 -10
- package/src/daemon/session-agent-loop-handlers.ts +48 -7
- package/src/daemon/session-agent-loop.ts +97 -66
- package/src/daemon/session-attachments.ts +1 -1
- package/src/daemon/session-error.ts +17 -16
- package/src/daemon/session-lifecycle.ts +20 -1
- package/src/daemon/session-media-retry.ts +1 -15
- package/src/daemon/session-messaging.ts +14 -6
- package/src/daemon/session-process.ts +36 -7
- package/src/daemon/session-queue-manager.ts +62 -103
- package/src/daemon/session-runtime-assembly.ts +27 -0
- package/src/daemon/session-skill-tools.ts +12 -11
- package/src/daemon/session-slash.ts +7 -0
- package/src/daemon/session-surfaces.ts +19 -97
- package/src/daemon/session-tool-setup.ts +146 -6
- package/src/daemon/session.ts +77 -13
- package/src/errors.ts +0 -2
- package/src/export/formatter.ts +6 -0
- package/src/mcp/mcp-oauth-provider.ts +1 -3
- package/src/media/avatar-router.ts +20 -28
- package/src/media/avatar-types.ts +7 -14
- package/src/media/managed-avatar-client.ts +70 -34
- package/src/memory/conversation-title-service.ts +1 -2
- package/src/memory/db-init.ts +16 -0
- package/src/memory/embedding-backend.ts +129 -27
- package/src/memory/embedding-gemini.test.ts +256 -0
- package/src/memory/embedding-gemini.ts +47 -13
- package/src/memory/embedding-local.ts +14 -2
- package/src/memory/embedding-ollama.ts +15 -2
- package/src/memory/embedding-openai.ts +15 -2
- package/src/memory/embedding-types.test.ts +116 -0
- package/src/memory/embedding-types.ts +61 -0
- package/src/memory/fingerprint.ts +1 -1
- package/src/memory/indexer.ts +25 -1
- package/src/memory/job-handlers/embedding.test.ts +258 -0
- package/src/memory/job-handlers/embedding.ts +81 -1
- package/src/memory/job-handlers/index-maintenance.ts +35 -1
- package/src/memory/job-handlers/media-processing.ts +11 -1
- package/src/memory/job-utils.ts +21 -6
- package/src/memory/jobs-store.ts +5 -1
- package/src/memory/jobs-worker.ts +8 -0
- package/src/memory/message-content.ts +66 -0
- package/src/memory/migrations/100-core-tables.ts +1 -31
- package/src/memory/migrations/104-core-indexes.ts +0 -11
- package/src/memory/migrations/145-drop-accounts-table.ts +19 -0
- package/src/memory/migrations/146-schedule-oneshot-routing.ts +94 -0
- package/src/memory/migrations/147-migrate-reminders-to-schedules.ts +129 -0
- package/src/memory/migrations/148-drop-reminders-table.ts +18 -0
- package/src/memory/migrations/index.ts +4 -0
- package/src/memory/migrations/registry.ts +19 -0
- package/src/memory/qdrant-client.ts +158 -43
- package/src/memory/retriever.test.ts +0 -1
- package/src/memory/retriever.ts +12 -2
- package/src/memory/schema/infrastructure.ts +5 -29
- package/src/memory/search/formatting.ts +34 -9
- package/src/memory/search/semantic.ts +57 -2
- package/src/memory/search/types.ts +2 -1
- package/src/notifications/AGENTS.md +2 -2
- package/src/notifications/README.md +59 -58
- package/src/notifications/adapters/macos.ts +1 -1
- package/src/notifications/broadcaster.ts +5 -5
- package/src/notifications/copy-composer.ts +1 -1
- package/src/notifications/decision-engine.ts +2 -2
- package/src/notifications/destination-resolver.ts +2 -2
- package/src/notifications/emit-signal.ts +8 -8
- package/src/notifications/signal.ts +1 -1
- package/src/notifications/thread-seed-composer.ts +1 -1
- package/src/oauth/connect-orchestrator.ts +1 -1
- package/src/oauth/token-persistence.ts +1 -1
- package/src/permissions/checker.ts +12 -1
- package/src/permissions/defaults.ts +10 -14
- package/src/permissions/trust-store.ts +37 -0
- package/src/permissions/workspace-policy.ts +0 -1
- package/src/prompts/__tests__/build-cli-reference-section.test.ts +11 -0
- package/src/prompts/computer-use-prompt.ts +1 -1
- package/src/prompts/system-prompt.ts +29 -30
- package/src/prompts/templates/SOUL.md +1 -2
- package/src/prompts/templates/UPDATES.md +16 -7
- package/src/providers/anthropic/client.ts +87 -33
- package/src/providers/gemini/client.ts +6 -0
- package/src/providers/managed-proxy/constants.ts +5 -0
- package/src/providers/openai/client.ts +15 -0
- package/src/providers/registry.ts +2 -2
- package/src/providers/types.ts +24 -2
- package/src/runtime/AGENTS.md +18 -0
- package/src/runtime/assistant-event-hub.ts +2 -3
- package/src/runtime/assistant-event.ts +4 -4
- package/src/runtime/auth/__tests__/context.test.ts +5 -5
- package/src/runtime/auth/__tests__/credential-service.test.ts +0 -1
- package/src/runtime/auth/__tests__/guard-tests.test.ts +2 -2
- package/src/runtime/auth/__tests__/{ipc-auth-context.test.ts → local-auth-context.test.ts} +21 -21
- package/src/runtime/auth/__tests__/route-policy.test.ts +2 -2
- package/src/runtime/auth/__tests__/scopes.test.ts +7 -7
- package/src/runtime/auth/__tests__/subject.test.ts +8 -8
- package/src/runtime/auth/__tests__/token-service.test.ts +0 -1
- package/src/runtime/auth/route-policy.ts +8 -4
- package/src/runtime/auth/scopes.ts +1 -1
- package/src/runtime/auth/subject.ts +4 -4
- package/src/runtime/auth/token-service.ts +0 -23
- package/src/runtime/auth/types.ts +3 -3
- package/src/runtime/guardian-action-followup-executor.ts +1 -1
- package/src/runtime/guardian-action-grant-minter.ts +1 -1
- package/src/runtime/guardian-action-service.ts +3 -3
- package/src/runtime/http-server.ts +15 -2
- package/src/runtime/invite-service.ts +3 -3
- package/src/runtime/local-actor-identity.ts +17 -22
- package/src/runtime/pending-interactions.ts +21 -9
- package/src/runtime/routes/app-management-routes.ts +2 -3
- package/src/runtime/routes/approval-routes.ts +1 -3
- package/src/runtime/routes/btw-routes.ts +155 -0
- package/src/runtime/routes/computer-use-routes.ts +77 -31
- package/src/runtime/routes/conversation-routes.ts +230 -46
- package/src/runtime/routes/diagnostics-routes.ts +63 -29
- package/src/runtime/routes/documents-routes.ts +2 -2
- package/src/runtime/routes/global-search-routes.ts +1 -1
- package/src/runtime/routes/host-bash-routes.ts +83 -0
- package/src/runtime/routes/host-file-routes.ts +79 -0
- package/src/runtime/routes/integrations/slack/share.ts +1 -1
- package/src/runtime/routes/log-export-routes.ts +120 -0
- package/src/runtime/routes/mcp-routes.ts +20 -0
- package/src/runtime/routes/migration-routes.ts +3 -3
- package/src/runtime/routes/pairing-routes.ts +1 -1
- package/src/runtime/routes/recording-routes.ts +6 -4
- package/src/runtime/routes/schedule-routes.ts +31 -5
- package/src/runtime/routes/session-management-routes.ts +2 -6
- package/src/runtime/routes/session-query-routes.ts +18 -15
- package/src/runtime/routes/settings-routes.ts +7 -261
- package/src/runtime/routes/skills-routes.ts +7 -6
- package/src/runtime/routes/subagents-routes.ts +4 -10
- package/src/runtime/routes/surface-action-routes.ts +3 -14
- package/src/runtime/routes/surface-content-routes.ts +22 -5
- package/src/runtime/routes/work-items-routes.ts +21 -25
- package/src/runtime/routes/workspace-routes.test.ts +3 -3
- package/src/runtime/routes/workspace-utils.ts +1 -1
- package/src/runtime/telegram-streaming-delivery.ts +3 -0
- package/src/runtime/verification-outbound-actions.ts +2 -2
- package/src/schedule/integration-status.ts +0 -6
- package/src/schedule/schedule-store.ts +234 -43
- package/src/schedule/scheduler.ts +73 -74
- package/src/security/oauth2.ts +1 -1
- package/src/sequence/store.ts +12 -2
- package/src/skills/frontmatter.ts +19 -77
- package/src/skills/managed-store.ts +11 -2
- package/src/subagent/manager.ts +5 -3
- package/src/tasks/ephemeral-permissions.ts +3 -5
- package/src/tools/AGENTS.md +0 -1
- package/src/tools/browser/browser-manager.ts +17 -11
- package/src/tools/browser/jit-auth.ts +4 -1
- package/src/tools/claude-code/claude-code.ts +1 -1
- package/src/tools/computer-use/definitions.ts +48 -60
- package/src/tools/document/document-tool.ts +6 -6
- package/src/tools/filesystem/edit.ts +2 -1
- package/src/tools/filesystem/read.ts +20 -2
- package/src/tools/filesystem/write.ts +2 -1
- package/src/tools/host-filesystem/edit.ts +17 -1
- package/src/tools/host-filesystem/read.ts +16 -1
- package/src/tools/host-filesystem/write.ts +15 -1
- package/src/tools/host-terminal/host-shell.ts +24 -0
- package/src/tools/memory/definitions.ts +45 -81
- package/src/tools/memory/handlers.test.ts +0 -1
- package/src/tools/memory/handlers.ts +1 -1
- package/src/tools/memory/register.ts +26 -60
- package/src/tools/network/script-proxy/session-manager.ts +6 -8
- package/src/tools/network/web-fetch.ts +7 -1
- package/src/tools/network/web-search.ts +2 -1
- package/src/tools/registry.ts +23 -0
- package/src/tools/schedule/create.ts +113 -5
- package/src/tools/schedule/list.ts +57 -15
- package/src/tools/schedule/update.ts +73 -3
- package/src/tools/shared/filesystem/image-read.ts +192 -0
- package/src/tools/side-effects.ts +1 -7
- package/src/tools/skills/delete-managed.ts +27 -64
- package/src/tools/skills/execute.ts +54 -0
- package/src/tools/skills/load.ts +127 -5
- package/src/tools/skills/scaffold-managed.ts +93 -172
- package/src/tools/subagent/message.ts +0 -7
- package/src/tools/subagent/spawn.ts +1 -1
- package/src/tools/swarm/delegate.ts +0 -3
- package/src/tools/system/avatar-generator.ts +13 -19
- package/src/tools/system/request-permission.ts +2 -1
- package/src/tools/terminal/safe-env.ts +1 -0
- package/src/tools/tool-manifest.ts +41 -47
- package/src/tools/types.ts +6 -2
- package/src/tools/ui-surface/definitions.ts +0 -55
- package/src/util/errors.ts +0 -10
- package/src/workspace/git-service.ts +0 -2
- package/src/__tests__/account-registry.test.ts +0 -258
- package/src/__tests__/email-classifier.test.ts +0 -25
- package/src/__tests__/gmail-integration.test.ts +0 -97
- package/src/__tests__/handle-user-message-secret-resume.test.ts +0 -172
- package/src/__tests__/managed-twitter-guardrails.test.ts +0 -357
- package/src/__tests__/recording-intent-fallback.test.ts +0 -199
- package/src/__tests__/recording-intent.test.ts +0 -985
- package/src/__tests__/recording-state-machine.test.ts +0 -1574
- package/src/__tests__/reminder-store.test.ts +0 -350
- package/src/__tests__/reminder.test.ts +0 -337
- package/src/__tests__/scan-result-store.test.ts +0 -121
- package/src/__tests__/twitter-platform-proxy-client.test.ts +0 -475
- package/src/__tests__/view-image-tool.test.ts +0 -241
- package/src/cli/commands/amazon/cart.ts +0 -513
- package/src/cli/commands/amazon/checkout.ts +0 -394
- package/src/cli/commands/amazon/client.ts +0 -513
- package/src/cli/commands/amazon/index.ts +0 -885
- package/src/cli/commands/amazon/product-details.ts +0 -145
- package/src/cli/commands/amazon/request-extractor.ts +0 -187
- package/src/cli/commands/amazon/search.ts +0 -76
- package/src/cli/commands/amazon/session.ts +0 -108
- package/src/cli/commands/twitter/__tests__/cli-read-routing.test.ts +0 -345
- package/src/cli/commands/twitter/__tests__/cli-routing.test.ts +0 -252
- package/src/cli/commands/twitter/__tests__/oauth-client.test.ts +0 -151
- package/src/cli/commands/twitter/index.ts +0 -420
- package/src/cli/commands/twitter/oauth-client.ts +0 -60
- package/src/cli/commands/twitter/router.ts +0 -351
- package/src/cli/commands/twitter/types.ts +0 -30
- package/src/config/bundled-skills/agentmail/SKILL.md +0 -132
- package/src/config/bundled-skills/agentmail/icon.svg +0 -21
- package/src/config/bundled-skills/amazon/SKILL.md +0 -136
- package/src/config/bundled-skills/amazon/icon.svg +0 -13
- package/src/config/bundled-skills/api-mapping/SKILL.md +0 -78
- package/src/config/bundled-skills/api-mapping/icon.svg +0 -18
- package/src/config/bundled-skills/cli-discover/SKILL.md +0 -68
- package/src/config/bundled-skills/deploy-fullstack-vercel/SKILL.md +0 -179
- package/src/config/bundled-skills/document-writer/SKILL.md +0 -195
- package/src/config/bundled-skills/elevenlabs-voice/SKILL.md +0 -140
- package/src/config/bundled-skills/email-setup/SKILL.md +0 -68
- package/src/config/bundled-skills/frontend-design/SKILL.md +0 -44
- package/src/config/bundled-skills/frontend-design/icon.svg +0 -16
- package/src/config/bundled-skills/google-oauth-setup/SKILL.md +0 -452
- package/src/config/bundled-skills/guardian-verify-setup/SKILL.md +0 -203
- package/src/config/bundled-skills/influencer/SKILL.md +0 -144
- package/src/config/bundled-skills/influencer/scripts/client.ts +0 -1269
- package/src/config/bundled-skills/influencer/scripts/influencer.ts +0 -267
- package/src/config/bundled-skills/macos-automation/SKILL.md +0 -65
- package/src/config/bundled-skills/macos-automation/icon.svg +0 -12
- package/src/config/bundled-skills/mcp-setup/SKILL.md +0 -75
- package/src/config/bundled-skills/media-processing/tools/media-diagnostics.ts +0 -184
- package/src/config/bundled-skills/messaging/tools/gmail-archive-by-query.ts +0 -80
- package/src/config/bundled-skills/messaging/tools/gmail-archive.ts +0 -29
- package/src/config/bundled-skills/messaging/tools/gmail-batch-archive.ts +0 -56
- package/src/config/bundled-skills/messaging/tools/gmail-batch-label.ts +0 -34
- package/src/config/bundled-skills/messaging/tools/gmail-download-attachment.ts +0 -47
- package/src/config/bundled-skills/messaging/tools/gmail-label.ts +0 -31
- package/src/config/bundled-skills/messaging/tools/gmail-list-attachments.ts +0 -67
- package/src/config/bundled-skills/messaging/tools/gmail-send-with-attachments.ts +0 -97
- package/src/config/bundled-skills/messaging/tools/gmail-summarize-thread.ts +0 -87
- package/src/config/bundled-skills/messaging/tools/gmail-triage.ts +0 -135
- package/src/config/bundled-skills/messaging/tools/messaging-analyze-activity.ts +0 -24
- package/src/config/bundled-skills/messaging/tools/messaging-reply.ts +0 -201
- package/src/config/bundled-skills/messaging/tools/send-notification.ts +0 -1
- package/src/config/bundled-skills/messaging/tools/sequence-cancel.ts +0 -27
- package/src/config/bundled-skills/messaging/tools/sequence-pause.ts +0 -48
- package/src/config/bundled-skills/messaging/tools/sequence-resume.ts +0 -27
- package/src/config/bundled-skills/messaging/tools/sequence-update.ts +0 -56
- package/src/config/bundled-skills/notion/SKILL.md +0 -240
- package/src/config/bundled-skills/notion-oauth-setup/SKILL.md +0 -126
- package/src/config/bundled-skills/oauth-setup/SKILL.md +0 -143
- package/src/config/bundled-skills/public-ingress/SKILL.md +0 -258
- package/src/config/bundled-skills/reminder/SKILL.md +0 -79
- package/src/config/bundled-skills/reminder/TOOLS.json +0 -89
- package/src/config/bundled-skills/reminder/tools/reminder-list.ts +0 -12
- package/src/config/bundled-skills/restaurant-reservation/SKILL.md +0 -141
- package/src/config/bundled-skills/screen-recording/SKILL.md +0 -148
- package/src/config/bundled-skills/self-upgrade/SKILL.md +0 -69
- package/src/config/bundled-skills/skills-catalog/SKILL.md +0 -78
- package/src/config/bundled-skills/slack-app-setup/SKILL.md +0 -178
- package/src/config/bundled-skills/slack-digest-setup/SKILL.md +0 -163
- package/src/config/bundled-skills/slack-oauth-setup/SKILL.md +0 -157
- package/src/config/bundled-skills/start-the-day/SKILL.md +0 -70
- package/src/config/bundled-skills/start-the-day/icon.svg +0 -13
- package/src/config/bundled-skills/telegram-setup/SKILL.md +0 -105
- package/src/config/bundled-skills/time-based-actions/SKILL.md +0 -142
- package/src/config/bundled-skills/twilio-setup/SKILL.md +0 -232
- package/src/config/bundled-skills/twitter/SKILL.md +0 -206
- package/src/config/bundled-skills/twitter/icon.svg +0 -14
- package/src/config/bundled-skills/typescript-eval/SKILL.md +0 -60
- package/src/config/bundled-skills/vercel-token-setup/SKILL.md +0 -214
- package/src/config/bundled-skills/voice-setup/SKILL.md +0 -131
- package/src/config/bundled-skills/voice-setup/icon.svg +0 -20
- package/src/daemon/handlers/pairing.ts +0 -119
- package/src/daemon/handlers/session-user-message.ts +0 -961
- package/src/daemon/recording-executor.ts +0 -180
- package/src/daemon/recording-intent-fallback.ts +0 -162
- package/src/daemon/recording-intent.ts +0 -493
- package/src/memory/account-store.ts +0 -117
- package/src/messaging/activity-analyzer.ts +0 -76
- package/src/messaging/email-classifier.ts +0 -208
- package/src/messaging/index.ts +0 -2
- package/src/messaging/outreach-classifier.ts +0 -185
- package/src/messaging/thread-summarizer.ts +0 -346
- package/src/messaging/types.ts +0 -17
- package/src/tools/browser/x-auto-navigate.ts +0 -254
- package/src/tools/credentials/account-registry.ts +0 -144
- package/src/tools/filesystem/view-image.ts +0 -244
- package/src/tools/reminder/reminder-store.ts +0 -194
- package/src/tools/reminder/reminder.ts +0 -158
- package/src/tools/system/navigate-settings.ts +0 -74
- package/src/tools/system/open-system-settings.ts +0 -85
- package/src/tools/system/version.ts +0 -54
- package/src/twitter/platform-proxy-client.ts +0 -408
- /package/src/config/bundled-skills/{messaging → gmail}/tools/scan-result-store.ts +0 -0
- /package/src/config/bundled-skills/{messaging → sequences}/tools/sequence-analytics.ts +0 -0
- /package/src/config/bundled-skills/{messaging → sequences}/tools/sequence-create.ts +0 -0
- /package/src/config/bundled-skills/{messaging → sequences}/tools/sequence-delete.ts +0 -0
- /package/src/config/bundled-skills/{messaging → sequences}/tools/sequence-enroll.ts +0 -0
- /package/src/config/bundled-skills/{messaging → sequences}/tools/sequence-enrollment-list.ts +0 -0
- /package/src/config/bundled-skills/{messaging → sequences}/tools/sequence-get.ts +0 -0
- /package/src/config/bundled-skills/{messaging → sequences}/tools/sequence-import.ts +0 -0
- /package/src/config/bundled-skills/{messaging → sequences}/tools/sequence-list.ts +0 -0
|
@@ -27,67 +27,57 @@ const reasonProperty = {
|
|
|
27
27
|
"Brief non-technical explanation of why this tool is being called",
|
|
28
28
|
};
|
|
29
29
|
|
|
30
|
-
function makeClickTool(name: string, verb: string): Tool {
|
|
31
|
-
return {
|
|
32
|
-
name,
|
|
33
|
-
description: `${verb} on a UI element by its [ID] from the accessibility tree, or at raw screen coordinates as fallback.`,
|
|
34
|
-
category: "computer-use",
|
|
35
|
-
defaultRiskLevel: RiskLevel.Low,
|
|
36
|
-
executionMode: "proxy",
|
|
37
|
-
|
|
38
|
-
getDefinition(): ToolDefinition {
|
|
39
|
-
return {
|
|
40
|
-
name: this.name,
|
|
41
|
-
description: this.description,
|
|
42
|
-
input_schema: {
|
|
43
|
-
type: "object",
|
|
44
|
-
properties: {
|
|
45
|
-
element_id: {
|
|
46
|
-
type: "integer",
|
|
47
|
-
description:
|
|
48
|
-
"The [ID] number of the element from the accessibility tree (preferred)",
|
|
49
|
-
},
|
|
50
|
-
x: {
|
|
51
|
-
type: "integer",
|
|
52
|
-
description:
|
|
53
|
-
"X coordinate on screen (fallback when no element_id)",
|
|
54
|
-
},
|
|
55
|
-
y: {
|
|
56
|
-
type: "integer",
|
|
57
|
-
description:
|
|
58
|
-
"Y coordinate on screen (fallback when no element_id)",
|
|
59
|
-
},
|
|
60
|
-
reasoning: {
|
|
61
|
-
type: "string",
|
|
62
|
-
description: `Explanation of what you see and why you are ${verb.toLowerCase()}ing here`,
|
|
63
|
-
},
|
|
64
|
-
reason: reasonProperty,
|
|
65
|
-
},
|
|
66
|
-
required: ["reasoning"],
|
|
67
|
-
},
|
|
68
|
-
};
|
|
69
|
-
},
|
|
70
|
-
|
|
71
|
-
execute: proxyExecute,
|
|
72
|
-
};
|
|
73
|
-
}
|
|
74
|
-
|
|
75
30
|
// ---------------------------------------------------------------------------
|
|
76
|
-
//
|
|
31
|
+
// click (unified — click_type selects single / double / right)
|
|
77
32
|
// ---------------------------------------------------------------------------
|
|
78
33
|
|
|
79
|
-
export const computerUseClickTool =
|
|
80
|
-
"computer_use_click",
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
"
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
34
|
+
export const computerUseClickTool: Tool = {
|
|
35
|
+
name: "computer_use_click",
|
|
36
|
+
description:
|
|
37
|
+
"Click on a UI element by its [ID] from the accessibility tree, or at raw screen coordinates as fallback. Supports single click, double-click, and right-click via the click_type parameter.",
|
|
38
|
+
category: "computer-use",
|
|
39
|
+
defaultRiskLevel: RiskLevel.Low,
|
|
40
|
+
executionMode: "proxy",
|
|
41
|
+
|
|
42
|
+
getDefinition(): ToolDefinition {
|
|
43
|
+
return {
|
|
44
|
+
name: this.name,
|
|
45
|
+
description: this.description,
|
|
46
|
+
input_schema: {
|
|
47
|
+
type: "object",
|
|
48
|
+
properties: {
|
|
49
|
+
click_type: {
|
|
50
|
+
type: "string",
|
|
51
|
+
enum: ["single", "double", "right"],
|
|
52
|
+
description: 'Type of click to perform (default: "single")',
|
|
53
|
+
},
|
|
54
|
+
element_id: {
|
|
55
|
+
type: "integer",
|
|
56
|
+
description:
|
|
57
|
+
"The [ID] number of the element from the accessibility tree (preferred)",
|
|
58
|
+
},
|
|
59
|
+
x: {
|
|
60
|
+
type: "integer",
|
|
61
|
+
description: "X coordinate on screen (fallback when no element_id)",
|
|
62
|
+
},
|
|
63
|
+
y: {
|
|
64
|
+
type: "integer",
|
|
65
|
+
description: "Y coordinate on screen (fallback when no element_id)",
|
|
66
|
+
},
|
|
67
|
+
reasoning: {
|
|
68
|
+
type: "string",
|
|
69
|
+
description:
|
|
70
|
+
"Explanation of what you see and why you are clicking here",
|
|
71
|
+
},
|
|
72
|
+
reason: reasonProperty,
|
|
73
|
+
},
|
|
74
|
+
required: ["reasoning"],
|
|
75
|
+
},
|
|
76
|
+
};
|
|
77
|
+
},
|
|
78
|
+
|
|
79
|
+
execute: proxyExecute,
|
|
80
|
+
};
|
|
91
81
|
|
|
92
82
|
// ---------------------------------------------------------------------------
|
|
93
83
|
// type_text
|
|
@@ -474,8 +464,6 @@ export const computerUseRespondTool: Tool = {
|
|
|
474
464
|
|
|
475
465
|
export const allComputerUseTools: Tool[] = [
|
|
476
466
|
computerUseClickTool,
|
|
477
|
-
computerUseDoubleClickTool,
|
|
478
|
-
computerUseRightClickTool,
|
|
479
467
|
computerUseTypeTextTool,
|
|
480
468
|
computerUseKeyTool,
|
|
481
469
|
computerUseScrollTool,
|
|
@@ -12,7 +12,7 @@ export function executeDocumentCreate(
|
|
|
12
12
|
const initialContent = (input.initial_content as string | undefined) || "";
|
|
13
13
|
const surfaceId = `doc-${randomUUID()}`;
|
|
14
14
|
|
|
15
|
-
// Send document_editor_show
|
|
15
|
+
// Send document_editor_show message to open the built-in RTE
|
|
16
16
|
if (context.sendToClient) {
|
|
17
17
|
context.sendToClient({
|
|
18
18
|
type: "document_editor_show",
|
|
@@ -47,13 +47,13 @@ export function executeDocumentCreate(
|
|
|
47
47
|
};
|
|
48
48
|
}
|
|
49
49
|
|
|
50
|
-
// Fallback if no
|
|
50
|
+
// Fallback if no client is connected
|
|
51
51
|
return {
|
|
52
52
|
content: JSON.stringify({
|
|
53
53
|
surface_id: surfaceId,
|
|
54
54
|
title,
|
|
55
55
|
opened: false,
|
|
56
|
-
error: "No
|
|
56
|
+
error: "No client connected to open document editor",
|
|
57
57
|
}),
|
|
58
58
|
isError: false,
|
|
59
59
|
};
|
|
@@ -67,7 +67,7 @@ export function executeDocumentUpdate(
|
|
|
67
67
|
const content = input.content as string;
|
|
68
68
|
const mode = (input.mode as string | undefined) || "append";
|
|
69
69
|
|
|
70
|
-
// Send document_editor_update
|
|
70
|
+
// Send document_editor_update message to update the built-in RTE
|
|
71
71
|
if (context.sendToClient) {
|
|
72
72
|
context.sendToClient({
|
|
73
73
|
type: "document_editor_update",
|
|
@@ -88,11 +88,11 @@ export function executeDocumentUpdate(
|
|
|
88
88
|
};
|
|
89
89
|
}
|
|
90
90
|
|
|
91
|
-
// Fallback if no
|
|
91
|
+
// Fallback if no client is connected
|
|
92
92
|
return {
|
|
93
93
|
content: JSON.stringify({
|
|
94
94
|
success: false,
|
|
95
|
-
error: "No
|
|
95
|
+
error: "No client connected to update document",
|
|
96
96
|
}),
|
|
97
97
|
isError: true,
|
|
98
98
|
};
|
|
@@ -1,13 +1,20 @@
|
|
|
1
|
+
import { extname } from "node:path";
|
|
2
|
+
|
|
1
3
|
import { RiskLevel } from "../../permissions/types.js";
|
|
2
4
|
import type { ToolDefinition } from "../../providers/types.js";
|
|
3
5
|
import { registerTool } from "../registry.js";
|
|
4
6
|
import { FileSystemOps } from "../shared/filesystem/file-ops-service.js";
|
|
7
|
+
import {
|
|
8
|
+
IMAGE_EXTENSIONS,
|
|
9
|
+
readImageFile,
|
|
10
|
+
} from "../shared/filesystem/image-read.js";
|
|
5
11
|
import { sandboxPolicy } from "../shared/filesystem/path-policy.js";
|
|
6
12
|
import type { Tool, ToolContext, ToolExecutionResult } from "../types.js";
|
|
7
13
|
|
|
8
14
|
class FileReadTool implements Tool {
|
|
9
15
|
name = "file_read";
|
|
10
|
-
description =
|
|
16
|
+
description =
|
|
17
|
+
"Read the contents of a file. For image files (JPEG, PNG, GIF, WebP), returns the image for visual analysis.";
|
|
11
18
|
category = "filesystem";
|
|
12
19
|
defaultRiskLevel = RiskLevel.Low;
|
|
13
20
|
|
|
@@ -54,6 +61,16 @@ class FileReadTool implements Tool {
|
|
|
54
61
|
};
|
|
55
62
|
}
|
|
56
63
|
|
|
64
|
+
// For image files, delegate to the shared image reader.
|
|
65
|
+
const ext = extname(rawPath).toLowerCase();
|
|
66
|
+
if (IMAGE_EXTENSIONS.has(ext)) {
|
|
67
|
+
const pathCheck = sandboxPolicy(rawPath, context.workingDir);
|
|
68
|
+
if (!pathCheck.ok) {
|
|
69
|
+
return { content: `Error: ${pathCheck.error}`, isError: true };
|
|
70
|
+
}
|
|
71
|
+
return readImageFile(pathCheck.resolved);
|
|
72
|
+
}
|
|
73
|
+
|
|
57
74
|
const ops = new FileSystemOps((path, opts) =>
|
|
58
75
|
sandboxPolicy(path, context.workingDir, opts),
|
|
59
76
|
);
|
|
@@ -86,4 +103,5 @@ class FileReadTool implements Tool {
|
|
|
86
103
|
}
|
|
87
104
|
}
|
|
88
105
|
|
|
89
|
-
|
|
106
|
+
export const fileReadTool = new FileReadTool();
|
|
107
|
+
registerTool(fileReadTool);
|
|
@@ -48,7 +48,7 @@ class HostFileEditTool implements Tool {
|
|
|
48
48
|
|
|
49
49
|
async execute(
|
|
50
50
|
input: Record<string, unknown>,
|
|
51
|
-
|
|
51
|
+
context: ToolContext,
|
|
52
52
|
): Promise<ToolExecutionResult> {
|
|
53
53
|
const rawPath = input.path as string;
|
|
54
54
|
if (!rawPath || typeof rawPath !== "string") {
|
|
@@ -87,6 +87,22 @@ class HostFileEditTool implements Tool {
|
|
|
87
87
|
|
|
88
88
|
const replaceAll = input.replace_all === true;
|
|
89
89
|
|
|
90
|
+
// Proxy to connected client for execution on the user's machine
|
|
91
|
+
// when a capable client is available (managed/cloud-hosted mode).
|
|
92
|
+
if (context.hostFileProxy?.isAvailable()) {
|
|
93
|
+
return context.hostFileProxy.request(
|
|
94
|
+
{
|
|
95
|
+
operation: "edit",
|
|
96
|
+
path: rawPath,
|
|
97
|
+
old_string: oldString as string,
|
|
98
|
+
new_string: newString as string,
|
|
99
|
+
replace_all: replaceAll,
|
|
100
|
+
},
|
|
101
|
+
context.sessionId,
|
|
102
|
+
context.signal,
|
|
103
|
+
);
|
|
104
|
+
}
|
|
105
|
+
|
|
90
106
|
const ops = new FileSystemOps(hostPolicy);
|
|
91
107
|
|
|
92
108
|
const result = ops.editFileSafe({
|
|
@@ -42,7 +42,7 @@ class HostFileReadTool implements Tool {
|
|
|
42
42
|
|
|
43
43
|
async execute(
|
|
44
44
|
input: Record<string, unknown>,
|
|
45
|
-
|
|
45
|
+
context: ToolContext,
|
|
46
46
|
): Promise<ToolExecutionResult> {
|
|
47
47
|
const rawPath = input.path as string;
|
|
48
48
|
if (!rawPath || typeof rawPath !== "string") {
|
|
@@ -52,6 +52,21 @@ class HostFileReadTool implements Tool {
|
|
|
52
52
|
};
|
|
53
53
|
}
|
|
54
54
|
|
|
55
|
+
// Proxy to connected client for execution on the user's machine
|
|
56
|
+
// when a capable client is available (managed/cloud-hosted mode).
|
|
57
|
+
if (context.hostFileProxy?.isAvailable()) {
|
|
58
|
+
return context.hostFileProxy.request(
|
|
59
|
+
{
|
|
60
|
+
operation: "read",
|
|
61
|
+
path: rawPath,
|
|
62
|
+
offset: typeof input.offset === "number" ? input.offset : undefined,
|
|
63
|
+
limit: typeof input.limit === "number" ? input.limit : undefined,
|
|
64
|
+
},
|
|
65
|
+
context.sessionId,
|
|
66
|
+
context.signal,
|
|
67
|
+
);
|
|
68
|
+
}
|
|
69
|
+
|
|
55
70
|
const ops = new FileSystemOps(hostPolicy);
|
|
56
71
|
|
|
57
72
|
const result = ops.readFileSafe({
|
|
@@ -40,7 +40,7 @@ class HostFileWriteTool implements Tool {
|
|
|
40
40
|
|
|
41
41
|
async execute(
|
|
42
42
|
input: Record<string, unknown>,
|
|
43
|
-
|
|
43
|
+
context: ToolContext,
|
|
44
44
|
): Promise<ToolExecutionResult> {
|
|
45
45
|
const rawPath = input.path as string;
|
|
46
46
|
if (!rawPath || typeof rawPath !== "string") {
|
|
@@ -58,6 +58,20 @@ class HostFileWriteTool implements Tool {
|
|
|
58
58
|
};
|
|
59
59
|
}
|
|
60
60
|
|
|
61
|
+
// Proxy to connected client for execution on the user's machine
|
|
62
|
+
// when a capable client is available (managed/cloud-hosted mode).
|
|
63
|
+
if (context.hostFileProxy?.isAvailable()) {
|
|
64
|
+
return context.hostFileProxy.request(
|
|
65
|
+
{
|
|
66
|
+
operation: "write",
|
|
67
|
+
path: rawPath,
|
|
68
|
+
content: fileContent,
|
|
69
|
+
},
|
|
70
|
+
context.sessionId,
|
|
71
|
+
context.signal,
|
|
72
|
+
);
|
|
73
|
+
}
|
|
74
|
+
|
|
61
75
|
const ops = new FileSystemOps(hostPolicy);
|
|
62
76
|
|
|
63
77
|
const result = ops.writeFileSafe({ path: rawPath, content: fileContent });
|
|
@@ -101,6 +101,30 @@ class HostShellTool implements Tool {
|
|
|
101
101
|
isError: true,
|
|
102
102
|
};
|
|
103
103
|
}
|
|
104
|
+
// Proxy to connected client for execution on the user's machine
|
|
105
|
+
// when a capable client is available (managed/cloud-hosted mode).
|
|
106
|
+
if (context.hostBashProxy?.isAvailable()) {
|
|
107
|
+
const { shellDefaultTimeoutSec, shellMaxTimeoutSec } =
|
|
108
|
+
getConfig().timeouts;
|
|
109
|
+
const rawSec =
|
|
110
|
+
typeof input.timeout_seconds === "number"
|
|
111
|
+
? input.timeout_seconds
|
|
112
|
+
: shellDefaultTimeoutSec;
|
|
113
|
+
const normalizedTimeout = Math.max(
|
|
114
|
+
1,
|
|
115
|
+
Math.min(rawSec, shellMaxTimeoutSec),
|
|
116
|
+
);
|
|
117
|
+
return context.hostBashProxy.request(
|
|
118
|
+
{
|
|
119
|
+
command,
|
|
120
|
+
working_dir: rawWorkingDir as string | undefined,
|
|
121
|
+
timeout_seconds: normalizedTimeout,
|
|
122
|
+
},
|
|
123
|
+
context.sessionId,
|
|
124
|
+
context.signal,
|
|
125
|
+
);
|
|
126
|
+
}
|
|
127
|
+
|
|
104
128
|
const workingDir =
|
|
105
129
|
typeof rawWorkingDir === "string" ? rawWorkingDir : homedir();
|
|
106
130
|
|
|
@@ -3,7 +3,7 @@ import type { ToolDefinition } from "../../providers/types.js";
|
|
|
3
3
|
export const memoryRecallDefinition: ToolDefinition = {
|
|
4
4
|
name: "memory_recall",
|
|
5
5
|
description:
|
|
6
|
-
"Deep search across all memory sources (semantic, lexical, entity graph, recency) for specific information. Use this when you need to recall details about past conversations, decisions, preferences, project context, or any prior knowledge. Returns formatted memory context with item IDs for use with
|
|
6
|
+
"Deep search across all memory sources (semantic, lexical, entity graph, recency) for specific information. Use this when you need to recall details about past conversations, decisions, preferences, project context, or any prior knowledge. Returns formatted memory context with item IDs for use with memory_manage.",
|
|
7
7
|
input_schema: {
|
|
8
8
|
type: "object",
|
|
9
9
|
properties: {
|
|
@@ -26,92 +26,56 @@ export const memoryRecallDefinition: ToolDefinition = {
|
|
|
26
26
|
},
|
|
27
27
|
};
|
|
28
28
|
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
"
|
|
33
|
-
|
|
34
|
-
type: "object",
|
|
35
|
-
properties: {
|
|
36
|
-
statement: {
|
|
37
|
-
type: "string",
|
|
38
|
-
description: "The fact or preference to remember (1-2 sentences)",
|
|
39
|
-
},
|
|
40
|
-
kind: {
|
|
41
|
-
type: "string",
|
|
42
|
-
enum: [
|
|
43
|
-
"preference",
|
|
44
|
-
"fact",
|
|
45
|
-
"decision",
|
|
46
|
-
"profile",
|
|
47
|
-
"relationship",
|
|
48
|
-
"event",
|
|
49
|
-
"opinion",
|
|
50
|
-
"instruction",
|
|
51
|
-
"style",
|
|
52
|
-
"playbook",
|
|
53
|
-
"learning",
|
|
54
|
-
],
|
|
55
|
-
description: "Category of the memory item",
|
|
56
|
-
},
|
|
57
|
-
subject: {
|
|
58
|
-
type: "string",
|
|
59
|
-
description: "Short subject/topic label (2-8 words)",
|
|
60
|
-
},
|
|
61
|
-
reason: {
|
|
62
|
-
type: "string",
|
|
63
|
-
description:
|
|
64
|
-
"Brief non-technical explanation of what you are saving and why, shown to the user as a status update. Use simple language a non-technical person would understand.",
|
|
65
|
-
},
|
|
66
|
-
},
|
|
67
|
-
required: ["statement", "kind"],
|
|
29
|
+
const memoryManageProperties = {
|
|
30
|
+
op: {
|
|
31
|
+
type: "string" as const,
|
|
32
|
+
enum: ["save", "update", "delete"],
|
|
33
|
+
description: "The operation to perform",
|
|
68
34
|
},
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
"
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
35
|
+
memory_id: {
|
|
36
|
+
type: "string" as const,
|
|
37
|
+
description: "ID of existing memory item (required for update/delete)",
|
|
38
|
+
},
|
|
39
|
+
statement: {
|
|
40
|
+
type: "string" as const,
|
|
41
|
+
description:
|
|
42
|
+
"The fact or preference to remember (required for save/update, 1-2 sentences)",
|
|
43
|
+
},
|
|
44
|
+
kind: {
|
|
45
|
+
type: "string" as const,
|
|
46
|
+
enum: [
|
|
47
|
+
"preference",
|
|
48
|
+
"fact",
|
|
49
|
+
"decision",
|
|
50
|
+
"profile",
|
|
51
|
+
"relationship",
|
|
52
|
+
"event",
|
|
53
|
+
"opinion",
|
|
54
|
+
"instruction",
|
|
55
|
+
"style",
|
|
56
|
+
"playbook",
|
|
57
|
+
"learning",
|
|
58
|
+
],
|
|
59
|
+
description: "Category of the memory item (required for save)",
|
|
60
|
+
},
|
|
61
|
+
subject: {
|
|
62
|
+
type: "string" as const,
|
|
63
|
+
description: "Short subject/topic label, 2-8 words (optional, save only)",
|
|
64
|
+
},
|
|
65
|
+
reason: {
|
|
66
|
+
type: "string" as const,
|
|
67
|
+
description:
|
|
68
|
+
"Brief non-technical explanation shown to the user as a status update",
|
|
94
69
|
},
|
|
95
70
|
};
|
|
96
71
|
|
|
97
|
-
export const
|
|
98
|
-
name: "
|
|
72
|
+
export const memoryManageDefinition: ToolDefinition = {
|
|
73
|
+
name: "memory_manage",
|
|
99
74
|
description:
|
|
100
|
-
"
|
|
75
|
+
"Save, update, or delete memory items. Use 'save' for new information worth remembering, 'update' to correct existing items, 'delete' to remove outdated items.",
|
|
101
76
|
input_schema: {
|
|
102
77
|
type: "object",
|
|
103
|
-
properties:
|
|
104
|
-
|
|
105
|
-
type: "string",
|
|
106
|
-
description:
|
|
107
|
-
"ID of the memory item to delete (from memory_recall results)",
|
|
108
|
-
},
|
|
109
|
-
reason: {
|
|
110
|
-
type: "string",
|
|
111
|
-
description:
|
|
112
|
-
"Brief non-technical explanation of what you are deleting and why, shown to the user as a status update. Use simple language a non-technical person would understand.",
|
|
113
|
-
},
|
|
114
|
-
},
|
|
115
|
-
required: ["memory_id"],
|
|
78
|
+
properties: memoryManageProperties,
|
|
79
|
+
required: ["op"],
|
|
116
80
|
},
|
|
117
81
|
};
|
|
@@ -26,7 +26,6 @@ mock.module("../../util/platform.js", () => ({
|
|
|
26
26
|
isMacOS: () => process.platform === "darwin",
|
|
27
27
|
isLinux: () => process.platform === "linux",
|
|
28
28
|
isWindows: () => process.platform === "win32",
|
|
29
|
-
getSocketPath: () => join(testDir, "test.sock"),
|
|
30
29
|
getPidPath: () => join(testDir, "test.pid"),
|
|
31
30
|
getDbPath: () => join(testDir, "test.db"),
|
|
32
31
|
getLogPath: () => join(testDir, "test.log"),
|
|
@@ -468,7 +468,7 @@ function inferSubjectFromStatement(statement: string): string {
|
|
|
468
468
|
|
|
469
469
|
/**
|
|
470
470
|
* Strip a typed ID prefix (e.g. "item:abc-123" -> "abc-123") so that IDs
|
|
471
|
-
* copied from memory_recall output work in
|
|
471
|
+
* copied from memory_recall output work in memory_manage update/delete ops.
|
|
472
472
|
*/
|
|
473
473
|
function stripTypedIdPrefix(id: string): string {
|
|
474
474
|
const match = id.match(/^(?:item|segment|summary):(.+)$/);
|
|
@@ -3,10 +3,8 @@ import { RiskLevel } from "../../permissions/types.js";
|
|
|
3
3
|
import type { ToolDefinition } from "../../providers/types.js";
|
|
4
4
|
import type { Tool, ToolContext, ToolExecutionResult } from "../types.js";
|
|
5
5
|
import {
|
|
6
|
-
|
|
6
|
+
memoryManageDefinition,
|
|
7
7
|
memoryRecallDefinition,
|
|
8
|
-
memorySaveDefinition,
|
|
9
|
-
memoryUpdateDefinition,
|
|
10
8
|
} from "./definitions.js";
|
|
11
9
|
import {
|
|
12
10
|
handleMemoryDelete,
|
|
@@ -15,16 +13,16 @@ import {
|
|
|
15
13
|
handleMemoryUpdate,
|
|
16
14
|
} from "./handlers.js";
|
|
17
15
|
|
|
18
|
-
// ──
|
|
16
|
+
// ── memory_manage ────────────────────────────────────────────────────
|
|
19
17
|
|
|
20
|
-
class
|
|
21
|
-
name = "
|
|
22
|
-
description =
|
|
18
|
+
class MemoryManageTool implements Tool {
|
|
19
|
+
name = "memory_manage";
|
|
20
|
+
description = memoryManageDefinition.description;
|
|
23
21
|
category = "memory";
|
|
24
22
|
defaultRiskLevel = RiskLevel.Low;
|
|
25
23
|
|
|
26
24
|
getDefinition(): ToolDefinition {
|
|
27
|
-
return
|
|
25
|
+
return memoryManageDefinition;
|
|
28
26
|
}
|
|
29
27
|
|
|
30
28
|
async execute(
|
|
@@ -32,55 +30,25 @@ class MemorySaveTool implements Tool {
|
|
|
32
30
|
context: ToolContext,
|
|
33
31
|
): Promise<ToolExecutionResult> {
|
|
34
32
|
const config = getConfig();
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
return memoryUpdateDefinition;
|
|
55
|
-
}
|
|
56
|
-
|
|
57
|
-
async execute(
|
|
58
|
-
input: Record<string, unknown>,
|
|
59
|
-
context: ToolContext,
|
|
60
|
-
): Promise<ToolExecutionResult> {
|
|
61
|
-
const config = getConfig();
|
|
62
|
-
return handleMemoryUpdate(input, config, context.memoryScopeId);
|
|
63
|
-
}
|
|
64
|
-
}
|
|
65
|
-
|
|
66
|
-
// ── memory_delete ────────────────────────────────────────────────────
|
|
67
|
-
|
|
68
|
-
class MemoryDeleteTool implements Tool {
|
|
69
|
-
name = "memory_delete";
|
|
70
|
-
description = memoryDeleteDefinition.description;
|
|
71
|
-
category = "memory";
|
|
72
|
-
defaultRiskLevel = RiskLevel.Low;
|
|
73
|
-
|
|
74
|
-
getDefinition(): ToolDefinition {
|
|
75
|
-
return memoryDeleteDefinition;
|
|
76
|
-
}
|
|
77
|
-
|
|
78
|
-
async execute(
|
|
79
|
-
input: Record<string, unknown>,
|
|
80
|
-
context: ToolContext,
|
|
81
|
-
): Promise<ToolExecutionResult> {
|
|
82
|
-
const config = getConfig();
|
|
83
|
-
return handleMemoryDelete(input, config, context.memoryScopeId);
|
|
33
|
+
switch (input.op) {
|
|
34
|
+
case "save":
|
|
35
|
+
return handleMemorySave(
|
|
36
|
+
input,
|
|
37
|
+
config,
|
|
38
|
+
context.conversationId,
|
|
39
|
+
context.requestId,
|
|
40
|
+
context.memoryScopeId,
|
|
41
|
+
);
|
|
42
|
+
case "update":
|
|
43
|
+
return handleMemoryUpdate(input, config, context.memoryScopeId);
|
|
44
|
+
case "delete":
|
|
45
|
+
return handleMemoryDelete(input, config, context.memoryScopeId);
|
|
46
|
+
default:
|
|
47
|
+
return {
|
|
48
|
+
content: `Error: unknown op "${input.op}". Must be one of: save, update, delete`,
|
|
49
|
+
isError: true,
|
|
50
|
+
};
|
|
51
|
+
}
|
|
84
52
|
}
|
|
85
53
|
}
|
|
86
54
|
|
|
@@ -112,7 +80,5 @@ class MemoryRecallTool implements Tool {
|
|
|
112
80
|
|
|
113
81
|
// ── Exported tool instances ──────────────────────────────────────────
|
|
114
82
|
|
|
115
|
-
export const
|
|
116
|
-
export const memoryUpdateTool = new MemoryUpdateTool();
|
|
117
|
-
export const memoryDeleteTool = new MemoryDeleteTool();
|
|
83
|
+
export const memoryManageTool = new MemoryManageTool();
|
|
118
84
|
export const memoryRecallTool = new MemoryRecallTool();
|
|
@@ -528,15 +528,13 @@ export function getSessionEnv(sessionId: ProxySessionId): ProxyEnvVars {
|
|
|
528
528
|
NO_PROXY: "localhost,127.0.0.1,::1",
|
|
529
529
|
};
|
|
530
530
|
|
|
531
|
-
|
|
531
|
+
// Only set cert env vars when the CA was actually initialized (MITM mode).
|
|
532
|
+
// Without this guard, NODE_EXTRA_CA_CERTS points to a nonexistent file
|
|
533
|
+
// when the proxy runs in pass-through mode (no credentials/MITM),
|
|
534
|
+
// causing Bun/BoringSSL to fail with SSL load errors.
|
|
535
|
+
if (managed.dataDir && managed.combinedCABundlePath) {
|
|
532
536
|
env.NODE_EXTRA_CA_CERTS = getCAPath(managed.dataDir);
|
|
533
|
-
|
|
534
|
-
// the proxy CA alongside system roots via SSL_CERT_FILE.
|
|
535
|
-
// Only set when the bundle was actually created — pointing at a
|
|
536
|
-
// missing file would replace the system trust store with nothing.
|
|
537
|
-
if (managed.combinedCABundlePath) {
|
|
538
|
-
env.SSL_CERT_FILE = managed.combinedCABundlePath;
|
|
539
|
-
}
|
|
537
|
+
env.SSL_CERT_FILE = managed.combinedCABundlePath;
|
|
540
538
|
}
|
|
541
539
|
|
|
542
540
|
return env;
|