@vellumai/assistant 0.4.43 → 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 +46 -44
- package/README.md +15 -16
- package/bun.lock +10 -35
- package/docs/architecture/integrations.md +102 -215
- 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 -3
- 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-asset.test.ts +1 -1
- 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 +32 -36
- 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 +31 -7
- 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 +8 -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__/error-handler-friendly-messages.test.ts +46 -0
- 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__/onboarding-template-contract.test.ts +0 -10
- 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-fail-open-selection.test.ts +12 -2
- 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 -5
- 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 +7 -46
- 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__/starter-task-flow.test.ts +9 -19
- package/src/__tests__/subagent-tools.test.ts +2 -2
- package/src/__tests__/system-prompt.test.ts +7 -7
- 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 +84 -8
- 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 -7
- package/src/config/bundled-skills/app-builder/TOOLS.json +0 -4
- 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 -2
- package/src/config/bundled-skills/doordash/__tests__/doordash-session.test.ts +1 -82
- package/src/config/bundled-skills/doordash/doordash-cli.ts +17 -28
- package/src/config/bundled-skills/doordash/lib/session.ts +21 -17
- 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-cancel.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-create.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 +33 -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 +42 -10
- 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 +53 -41
- package/src/daemon/mcp-reload-service.ts +123 -0
- package/src/daemon/message-protocol.ts +6 -0
- package/src/daemon/message-types/apps.ts +0 -25
- 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 -73
- 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 +8 -2
- package/src/daemon/message-types/settings.ts +1 -1
- package/src/daemon/message-types/shared.ts +1 -1
- package/src/daemon/message-types/surfaces.ts +2 -0
- package/src/daemon/ride-shotgun-handler.ts +35 -43
- package/src/daemon/seed-files.ts +3 -27
- package/src/daemon/server.ts +45 -28
- package/src/daemon/session-agent-loop-handlers.ts +72 -9
- 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 -7
- package/src/daemon/session-skill-tools.ts +12 -11
- package/src/daemon/session-slash.ts +7 -0
- package/src/daemon/session-surfaces.ts +192 -118
- package/src/daemon/session-tool-setup.ts +146 -6
- package/src/daemon/session.ts +75 -37
- 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/app-store.ts +0 -18
- 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 -37
- 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 +13 -17
- 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 +33 -35
- package/src/prompts/templates/BOOTSTRAP.md +0 -3
- 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 +4 -6
- 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 +3 -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 +9 -8
- 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 -8
- package/src/runtime/auth/scopes.ts +2 -1
- package/src/runtime/auth/subject.ts +4 -4
- package/src/runtime/auth/token-service.ts +1 -24
- 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/http-types.ts +10 -0
- package/src/runtime/invite-service.ts +3 -3
- package/src/runtime/local-actor-identity.ts +17 -22
- package/src/runtime/middleware/error-handler.ts +14 -1
- package/src/runtime/pending-interactions.ts +21 -9
- package/src/runtime/routes/app-management-routes.ts +63 -67
- package/src/runtime/routes/approval-routes.ts +1 -3
- package/src/runtime/routes/brain-graph/brain-graph.html +1845 -0
- package/src/runtime/routes/brain-graph-routes.ts +4 -42
- 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 +234 -47
- package/src/runtime/routes/diagnostics-routes.ts +154 -43
- 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 -351
- 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 +37 -0
- package/src/tools/apps/executors.ts +0 -6
- 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/document/editor-template.ts +10 -8
- 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 +12 -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__/home-base-bootstrap.test.ts +0 -84
- package/src/__tests__/managed-twitter-guardrails.test.ts +0 -353
- package/src/__tests__/prebuilt-home-base-seed.test.ts +0 -79
- 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 -450
- 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 -920
- 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 -116
- package/src/cli/commands/twitter/__tests__/cli-error-shaping.test.ts +0 -265
- package/src/cli/commands/twitter/__tests__/cli-read-routing.test.ts +0 -483
- package/src/cli/commands/twitter/__tests__/cli-routing.test.ts +0 -412
- package/src/cli/commands/twitter/__tests__/oauth-client.test.ts +0 -197
- package/src/cli/commands/twitter/client.ts +0 -989
- package/src/cli/commands/twitter/index.ts +0 -1160
- package/src/cli/commands/twitter/oauth-client.ts +0 -94
- package/src/cli/commands/twitter/router.ts +0 -396
- package/src/cli/commands/twitter/session.ts +0 -121
- 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 -137
- 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 -319
- 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/home-base/app-link-store.ts +0 -78
- package/src/home-base/bootstrap.ts +0 -74
- package/src/home-base/prebuilt/brain-graph.html +0 -1483
- package/src/home-base/prebuilt/index.html +0 -702
- package/src/home-base/prebuilt/seed-metadata.json +0 -21
- package/src/home-base/prebuilt/seed.ts +0 -122
- package/src/home-base/prebuilt-home-base-updater.ts +0 -36
- 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 -405
- package/src/util/cookie-session.ts +0 -98
- /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
|
@@ -1,132 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
name: agentmail
|
|
3
|
-
description: Run email operations through a provider-agnostic CLI wrapper
|
|
4
|
-
compatibility: "Designed for Vellum personal assistants"
|
|
5
|
-
metadata: {"emoji":"📬","vellum":{"display-name":"Email CLI Ops","user-invocable":true}}
|
|
6
|
-
---
|
|
7
|
-
|
|
8
|
-
## How to run
|
|
9
|
-
|
|
10
|
-
`vellum` is your own CLI binary — it is already installed and available on the PATH.
|
|
11
|
-
Run all commands via `bash`. Do NOT attempt to install, build, or locate the CLI — just execute it directly.
|
|
12
|
-
|
|
13
|
-
Example: `bash("assistant email status --json")`
|
|
14
|
-
|
|
15
|
-
Never use browser/computer-use unless user explicitly approves fallback.
|
|
16
|
-
|
|
17
|
-
## When to Use This Skill
|
|
18
|
-
|
|
19
|
-
This skill manages the **assistant's own** AgentMail address (`@agentmail.to`) — not the user's personal email. Only use this skill when the user explicitly asks the assistant to send email **from the assistant's own address**, manage the assistant's inbox, or perform operations on the assistant's AgentMail account. Generic email requests ("send an email", "check my email", "draft a reply") are about the **user's Gmail** and should be handled by the Messaging skill instead.
|
|
20
|
-
|
|
21
|
-
## Rules
|
|
22
|
-
|
|
23
|
-
- Always run `assistant email` commands via `bash` and parse JSON output.
|
|
24
|
-
- Always do `assistant email status --json` preflight first.
|
|
25
|
-
- Prefer `draft create` before any send — never bypass draft flow.
|
|
26
|
-
- Require explicit user confirmation before `draft approve-send --confirm`.
|
|
27
|
-
- When uncertain, draft to ops@ inbox and notify user.
|
|
28
|
-
- Never send cold outreach without explicit user authorization.
|
|
29
|
-
|
|
30
|
-
## API Key Setup
|
|
31
|
-
|
|
32
|
-
If `assistant email status --json` returns an error about a missing API key, prompt the user for their AgentMail API key using the secure credential prompt. **Never ask the user to paste the key in chat.**
|
|
33
|
-
|
|
34
|
-
Use `credential_store` with:
|
|
35
|
-
- action: `prompt`
|
|
36
|
-
- service: `agentmail`
|
|
37
|
-
- field: `api_key`
|
|
38
|
-
- label: `AgentMail API Key`
|
|
39
|
-
- description: `Get your API key from console.agentmail.to`
|
|
40
|
-
- placeholder: `am_us_...`
|
|
41
|
-
- allowed_tools: `["bash"]`
|
|
42
|
-
- usage_description: `AgentMail email operations via vellum CLI`
|
|
43
|
-
|
|
44
|
-
After the credential is stored, retry `assistant email status --json` to confirm it works.
|
|
45
|
-
|
|
46
|
-
## Workflow
|
|
47
|
-
|
|
48
|
-
1. **Preflight:** `assistant email status --json` (if API key error, run API Key Setup above)
|
|
49
|
-
2. **Quick inbox:** `assistant email inbox create --username <name>` (creates e.g. sam@agentmail.to — no custom domain needed)
|
|
50
|
-
3. **Custom domain setup (optional):** domain -> dns -> verify -> inboxes -> webhook
|
|
51
|
-
4. **Draft path:** `assistant email draft create ...` — always draft first
|
|
52
|
-
5. **Send path:** show draft -> user confirms -> `draft approve-send --draft-id <id> --confirm`
|
|
53
|
-
6. **Inbound triage:** list -> get -> summarize -> propose reply draft
|
|
54
|
-
7. **Guardrails:** check with `guardrails get`, use `guardrails set` to change
|
|
55
|
-
|
|
56
|
-
## Command Reference
|
|
57
|
-
|
|
58
|
-
### Provider
|
|
59
|
-
|
|
60
|
-
```
|
|
61
|
-
assistant email provider get [--json] # Show active provider
|
|
62
|
-
assistant email provider set <provider> [--json] # Switch provider
|
|
63
|
-
```
|
|
64
|
-
|
|
65
|
-
### Status
|
|
66
|
-
|
|
67
|
-
```
|
|
68
|
-
assistant email status [--json] # Provider health + guardrails
|
|
69
|
-
```
|
|
70
|
-
|
|
71
|
-
### Inbox Management
|
|
72
|
-
|
|
73
|
-
```
|
|
74
|
-
assistant email inbox create --username <name> [--domain <d>] [--display-name <n>] [--json] # Create a new inbox (e.g. --username sam)
|
|
75
|
-
assistant email inbox list [--json] # List all inboxes
|
|
76
|
-
```
|
|
77
|
-
|
|
78
|
-
### Setup
|
|
79
|
-
|
|
80
|
-
```
|
|
81
|
-
assistant email setup domain --domain <d> [--dry-run] [--json]
|
|
82
|
-
assistant email setup dns --domain <d> [--json]
|
|
83
|
-
assistant email setup verify --domain <d> [--json]
|
|
84
|
-
assistant email setup inboxes --domain <d> [--json] # Creates standard hello@/support@/ops@ inboxes
|
|
85
|
-
assistant email setup webhook --url <u> [--secret <s>] [--json]
|
|
86
|
-
```
|
|
87
|
-
|
|
88
|
-
### Drafts
|
|
89
|
-
|
|
90
|
-
```
|
|
91
|
-
assistant email draft create --from <addr> --to <addr> --subject <s> --body <b> [--cc <addr>] [--in-reply-to <msg-id>] [--json]
|
|
92
|
-
assistant email draft list [--status pending|approved|sent|rejected] [--json]
|
|
93
|
-
assistant email draft get <draft-id> [--json]
|
|
94
|
-
assistant email draft approve-send --draft-id <id> --confirm [--json]
|
|
95
|
-
assistant email draft reject --draft-id <id> [--reason <text>] [--json]
|
|
96
|
-
assistant email draft delete <draft-id> [--json]
|
|
97
|
-
```
|
|
98
|
-
|
|
99
|
-
### Inbound
|
|
100
|
-
|
|
101
|
-
```
|
|
102
|
-
assistant email inbound list [--thread-id <id>] [--json]
|
|
103
|
-
assistant email inbound get <message-id> [--json]
|
|
104
|
-
```
|
|
105
|
-
|
|
106
|
-
### Threads
|
|
107
|
-
|
|
108
|
-
```
|
|
109
|
-
assistant email thread list [--json]
|
|
110
|
-
assistant email thread get <thread-id> [--json]
|
|
111
|
-
```
|
|
112
|
-
|
|
113
|
-
### Guardrails
|
|
114
|
-
|
|
115
|
-
```
|
|
116
|
-
assistant email guardrails get [--json]
|
|
117
|
-
assistant email guardrails set --paused <true|false> --daily-cap <n> [--json]
|
|
118
|
-
assistant email guardrails block <pattern> [--json]
|
|
119
|
-
assistant email guardrails allow <pattern> [--json]
|
|
120
|
-
assistant email guardrails rules [--json]
|
|
121
|
-
assistant email guardrails unrule <rule-id> [--json]
|
|
122
|
-
```
|
|
123
|
-
|
|
124
|
-
## Output Format
|
|
125
|
-
|
|
126
|
-
All commands output JSON (pretty-printed by default, compact with `--json`).
|
|
127
|
-
Every response includes `ok: true|false`.
|
|
128
|
-
|
|
129
|
-
Exit codes:
|
|
130
|
-
- `0` = success (`ok: true`)
|
|
131
|
-
- `1` = error (`ok: false, error: "..."`)
|
|
132
|
-
- `2` = guardrail blocked (`ok: false, error: "outbound_paused|daily_cap_reached|address_blocked"`)
|
|
@@ -1,21 +0,0 @@
|
|
|
1
|
-
<svg viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
|
|
2
|
-
<rect width="16" height="16" fill="#0a0e27"/>
|
|
3
|
-
<rect x="2" y="3" width="12" height="8" fill="#1e40af" stroke="#60a5fa" stroke-width="1"/>
|
|
4
|
-
<rect x="2" y="3" width="12" height="2" fill="#3b82f6"/>
|
|
5
|
-
<rect x="3" y="4" width="10" height="1" fill="#0a0e27"/>
|
|
6
|
-
<rect x="3" y="5" width="5" height="1" fill="#93c5fd"/>
|
|
7
|
-
<rect x="3" y="6" width="5" height="1" fill="#bfdbfe"/>
|
|
8
|
-
<rect x="9" y="5" width="3" height="1" fill="#bfdbfe"/>
|
|
9
|
-
<rect x="9" y="6" width="3" height="1" fill="#93c5fd"/>
|
|
10
|
-
<rect x="2" y="12" width="3" height="1" fill="#059669"/>
|
|
11
|
-
<rect x="3" y="13" width="2" height="1" fill="#10b981"/>
|
|
12
|
-
<rect x="2" y="14" width="1" height="1" fill="#10b981"/>
|
|
13
|
-
<rect x="3" y="14" width="1" height="1" fill="#34d399"/>
|
|
14
|
-
<rect x="6" y="12" width="8" height="1" fill="#1f2937"/>
|
|
15
|
-
<rect x="6" y="13" width="8" height="1" fill="#374151"/>
|
|
16
|
-
<rect x="6" y="14" width="8" height="1" fill="#1f2937"/>
|
|
17
|
-
<rect x="7" y="13" width="1" height="1" fill="#60a5fa"/>
|
|
18
|
-
<rect x="9" y="13" width="1" height="1" fill="#60a5fa"/>
|
|
19
|
-
<rect x="11" y="13" width="1" height="1" fill="#60a5fa"/>
|
|
20
|
-
<rect x="13" y="13" width="1" height="1" fill="#60a5fa"/>
|
|
21
|
-
</svg>
|
|
@@ -1,137 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
name: amazon
|
|
3
|
-
description: Shop on Amazon and Amazon Fresh using the built-in CLI integration
|
|
4
|
-
compatibility: "Designed for Vellum personal assistants"
|
|
5
|
-
metadata: {"emoji":"📦","vellum":{"display-name":"Amazon","user-invocable":true}}
|
|
6
|
-
---
|
|
7
|
-
|
|
8
|
-
You can shop on Amazon (and Amazon Fresh for groceries) for the user using the `assistant amazon` CLI.
|
|
9
|
-
|
|
10
|
-
## CLI Setup
|
|
11
|
-
|
|
12
|
-
**IMPORTANT: Always use `host_bash` (not `bash`) for all `assistant amazon` commands.** The Amazon CLI needs host access for session cookies and the `vellum` binary — neither of which are available inside the sandbox.
|
|
13
|
-
|
|
14
|
-
`assistant amazon` is a built-in subcommand of the Vellum assistant CLI — it is NOT a separate tool you need to find or install. It should already be on your PATH. If `vellum` is not found, prepend `PATH="$HOME/.local/bin:$PATH"` to the command. Do NOT search for the binary, inspect wrapper scripts, or try to discover how the CLI works. Just run the commands as documented below.
|
|
15
|
-
|
|
16
|
-
## Typical Flow — Regular Amazon Shopping
|
|
17
|
-
|
|
18
|
-
When the user asks you to order something from Amazon:
|
|
19
|
-
|
|
20
|
-
1. **Check session** — run `assistant amazon status --json`. If `loggedIn` is false or the session is expired, tell the user: "A Chrome window will open to the Amazon login page. Please sign in there — I'll detect your login automatically and minimize the window." Then run `assistant amazon refresh --json`. This starts a Ride Shotgun learn session that records your login and auto-stops once it detects you've signed in. The session is imported automatically. **This command blocks until login is complete — just wait for it.**
|
|
21
|
-
|
|
22
|
-
2. **Search** — run `assistant amazon search "<query>" --json` to find matching products. Present the top results with ASIN, title, price, and Prime status. If the user named a specific product, pick the best match. If ambiguous, ask.
|
|
23
|
-
|
|
24
|
-
3. **Product details** (if needed) — run `assistant amazon product <asin> --json` to get full details including price and variations. For products with variants (size, color, etc.), see the Variations section below.
|
|
25
|
-
|
|
26
|
-
4. **Add to cart** — run `assistant amazon cart add --asin <asin> [--quantity <n>] --json`. The response includes the updated cart with all items.
|
|
27
|
-
|
|
28
|
-
5. **Review cart** — run `assistant amazon cart view --json` and show the user what's in their cart with prices. Ask if they want to add anything else or proceed.
|
|
29
|
-
|
|
30
|
-
6. **Payment methods** — run `assistant amazon payment-methods --json` to see saved cards.
|
|
31
|
-
|
|
32
|
-
7. **Checkout summary** — run `assistant amazon checkout --json` to get order totals (subtotal, shipping, tax, total).
|
|
33
|
-
|
|
34
|
-
8. **Place order** — after the user explicitly confirms, run `assistant amazon order place [--payment-method-id <id>] --json`. The response contains `orderId` on success.
|
|
35
|
-
|
|
36
|
-
## Typical Flow — Amazon Fresh Groceries
|
|
37
|
-
|
|
38
|
-
Amazon Fresh delivers groceries. The flow is the same as regular Amazon, with these additions:
|
|
39
|
-
|
|
40
|
-
1. **Search Fresh** — use the `--fresh` flag: `assistant amazon search "<query>" --fresh --json`
|
|
41
|
-
|
|
42
|
-
2. **Add Fresh items** — use the `--fresh` flag: `assistant amazon cart add --asin <asin> --fresh --json`
|
|
43
|
-
|
|
44
|
-
3. **Select delivery slot** — Fresh orders require a delivery window:
|
|
45
|
-
- `assistant amazon fresh delivery-slots --json` — list available slots
|
|
46
|
-
- `assistant amazon fresh select-slot --slot-id <id> --json` — select a slot
|
|
47
|
-
- Do this BEFORE checkout.
|
|
48
|
-
|
|
49
|
-
4. **Checkout and order** — same as regular Amazon.
|
|
50
|
-
|
|
51
|
-
## Handling Variations
|
|
52
|
-
|
|
53
|
-
Many Amazon products (clothing, electronics) have variations (size, color, style):
|
|
54
|
-
|
|
55
|
-
1. Run `assistant amazon product <asin> --json` to get the product and its `variations[]` array
|
|
56
|
-
2. Each variation has: `dimensionName` (e.g. "size"), `value` (e.g. "Large"), `asin` (child ASIN), `isAvailable`, `priceValue`
|
|
57
|
-
3. Use the child ASIN when adding to cart: `assistant amazon cart add --asin <child-asin> --json`
|
|
58
|
-
|
|
59
|
-
Alternatively, run `assistant amazon variations <asin> --json` to list just the variations.
|
|
60
|
-
|
|
61
|
-
## Session Storage
|
|
62
|
-
|
|
63
|
-
Session cookies are stored in the encrypted credential store under the key `amazon:session:cookies`. You can inspect the stored session with:
|
|
64
|
-
|
|
65
|
-
```bash
|
|
66
|
-
assistant credentials inspect amazon:session:cookies
|
|
67
|
-
```
|
|
68
|
-
|
|
69
|
-
Session capture (`assistant amazon refresh`) and session checks (`assistant amazon status`) use the credential store automatically — no manual file management is needed.
|
|
70
|
-
|
|
71
|
-
## Important Behavior
|
|
72
|
-
|
|
73
|
-
- **Chrome extension relay required.** The Amazon CLI uses `assistant browser chrome relay` internally for browser automation. The Chrome extension must be connected before Amazon commands will work. If a command fails with a connection error, tell the user: "Please open Chrome, click the Vellum extension icon, and click Connect — then I'll retry."
|
|
74
|
-
- **Always confirm before placing order.** Never call `order place` without explicit user approval. Show the cart and total first.
|
|
75
|
-
- **Be proactive.** If the user says "order AA batteries", don't ask clarifying questions upfront — search, find the product, and suggest it. Only ask when you need a choice the user hasn't specified.
|
|
76
|
-
- **Handle expired sessions gracefully.** If any command returns `"error": "session_expired"`, run `assistant amazon refresh --json` to re-capture the session.
|
|
77
|
-
- **Show prices.** Always show prices when presenting products or the cart summary.
|
|
78
|
-
- **Use `--json` flag** on all commands for reliable parsing.
|
|
79
|
-
- **Do NOT use the browser skill.** All Amazon interaction goes through the CLI, not browser automation.
|
|
80
|
-
- **Rate limiting.** Amazon may rate-limit rapid sequential requests. Wait 8–10 seconds between cart operations. If you get a 403 error, wait 15–20 seconds and retry.
|
|
81
|
-
- **Always-allow tip.** At the start of an ordering flow, suggest the user enable "always allow" for `assistant amazon` commands: "Tip: You can type 'a' to always allow `assistant amazon` commands for this session so you won't be prompted each time."
|
|
82
|
-
- **Fresh slot required.** Amazon Fresh orders require a delivery slot to be selected before checkout. If the user skips this step, remind them to run `assistant amazon fresh delivery-slots --json` and select a slot.
|
|
83
|
-
|
|
84
|
-
## Command Reference
|
|
85
|
-
|
|
86
|
-
```
|
|
87
|
-
assistant amazon status --json # Check if logged in
|
|
88
|
-
assistant amazon refresh --json # Capture fresh session via Ride Shotgun
|
|
89
|
-
assistant amazon login --recording <path> # Import session from a recording file
|
|
90
|
-
assistant amazon logout # Clear session
|
|
91
|
-
|
|
92
|
-
assistant amazon search "<query>" [--fresh] [--limit <n>] --json
|
|
93
|
-
assistant amazon product <asin> [--fresh] --json
|
|
94
|
-
assistant amazon variations <asin> --json
|
|
95
|
-
|
|
96
|
-
assistant amazon cart view --json
|
|
97
|
-
assistant amazon cart add --asin <asin> [--quantity <n>] [--fresh] --json
|
|
98
|
-
assistant amazon cart remove --cart-item-id <id> --json
|
|
99
|
-
|
|
100
|
-
assistant amazon fresh delivery-slots --json
|
|
101
|
-
assistant amazon fresh select-slot --slot-id <id> --json
|
|
102
|
-
|
|
103
|
-
assistant amazon payment-methods --json
|
|
104
|
-
assistant amazon checkout --json
|
|
105
|
-
assistant amazon order place [--payment-method-id <id>] --json
|
|
106
|
-
```
|
|
107
|
-
|
|
108
|
-
## Example Interactions
|
|
109
|
-
|
|
110
|
-
**User**: "Order a pack of AA batteries from Amazon"
|
|
111
|
-
|
|
112
|
-
1. `assistant amazon status --json` → logged in
|
|
113
|
-
2. `assistant amazon search "AA batteries" --json` → finds products
|
|
114
|
-
3. Show top results: "Duracell AA 20-pack ($12.99, Prime), Amazon Basics AA 48-pack ($14.49, Prime)..."
|
|
115
|
-
4. User picks Duracell → `assistant amazon cart add --asin B00000J1ER --json`
|
|
116
|
-
5. `assistant amazon cart view --json` → show cart summary
|
|
117
|
-
6. `assistant amazon checkout --json` → show total
|
|
118
|
-
7. "Your cart has 1x Duracell AA Batteries 20-pack ($12.99), total $12.99 with free Prime shipping. Ready to order?"
|
|
119
|
-
8. User confirms → `assistant amazon order place --json`
|
|
120
|
-
|
|
121
|
-
**User**: "Order a large blue t-shirt from Amazon"
|
|
122
|
-
|
|
123
|
-
1. `assistant amazon search "blue t-shirt" --json` → finds products
|
|
124
|
-
2. User picks a shirt → `assistant amazon variations <parentAsin> --json` → shows Size + Color combinations
|
|
125
|
-
3. Find the child ASIN for Large + Blue → `assistant amazon cart add --asin <childAsin> --json`
|
|
126
|
-
|
|
127
|
-
**User**: "Order milk and eggs from Amazon Fresh"
|
|
128
|
-
|
|
129
|
-
1. `assistant amazon status --json` → logged in
|
|
130
|
-
2. `assistant amazon search "whole milk" --fresh --json` → Fresh results
|
|
131
|
-
3. `assistant amazon cart add --asin <milkAsin> --fresh --json`
|
|
132
|
-
4. `assistant amazon search "eggs" --fresh --json` → Fresh results
|
|
133
|
-
5. `assistant amazon cart add --asin <eggsAsin> --fresh --json`
|
|
134
|
-
6. `assistant amazon fresh delivery-slots --json` → show available slots
|
|
135
|
-
7. User picks a slot → `assistant amazon fresh select-slot --slot-id <id> --json`
|
|
136
|
-
8. `assistant amazon checkout --json` → show totals
|
|
137
|
-
9. User confirms → `assistant amazon order place --json`
|
|
@@ -1,13 +0,0 @@
|
|
|
1
|
-
<svg viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
|
|
2
|
-
<rect width="16" height="16" fill="#ffffff"/>
|
|
3
|
-
<rect x="2" y="3" width="12" height="9" fill="#FF9900" stroke="#232F3E" stroke-width="1"/>
|
|
4
|
-
<rect x="3" y="4" width="10" height="7" fill="#FF9900"/>
|
|
5
|
-
<rect x="4" y="5" width="2" height="2" fill="#232F3E"/>
|
|
6
|
-
<rect x="7" y="5" width="2" height="2" fill="#232F3E"/>
|
|
7
|
-
<rect x="10" y="5" width="2" height="2" fill="#232F3E"/>
|
|
8
|
-
<rect x="4" y="8" width="2" height="2" fill="#232F3E"/>
|
|
9
|
-
<rect x="7" y="8" width="2" height="2" fill="#232F3E"/>
|
|
10
|
-
<rect x="10" y="8" width="2" height="2" fill="#232F3E"/>
|
|
11
|
-
<path d="M 3 13 Q 8 14 13 13" stroke="#232F3E" stroke-width="1" fill="none"/>
|
|
12
|
-
<rect x="2" y="13" width="12" height="1" fill="#232F3E"/>
|
|
13
|
-
</svg>
|
|
@@ -1,78 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
name: api-mapping
|
|
3
|
-
description: Record and analyze API surfaces of web services
|
|
4
|
-
compatibility: "Designed for Vellum personal assistants"
|
|
5
|
-
metadata: {"emoji":"🗺️","vellum":{"display-name":"API Mapping","user-invocable":true}}
|
|
6
|
-
---
|
|
7
|
-
|
|
8
|
-
You can record and analyze the API surface of any web service using the `map` CLI.
|
|
9
|
-
|
|
10
|
-
## CLI Setup
|
|
11
|
-
|
|
12
|
-
**IMPORTANT: Always use `host_bash` (not `bash`) for all `map` commands.** The API mapping CLI needs host access for Chrome CDP, network recording, and browser automation — none of which are available inside the sandbox.
|
|
13
|
-
|
|
14
|
-
`map` is a standalone CLI tool installed at `~/.vellum/bin/map`. It should already be on your PATH. If `map` is not found, prepend `PATH="$HOME/.vellum/bin:$PATH"` to the command. Do NOT search for the binary or try to discover how the CLI works. Just run the commands as documented below.
|
|
15
|
-
|
|
16
|
-
## Typical Flow
|
|
17
|
-
|
|
18
|
-
When the user wants to map a web service's API (e.g. "Map the Notion API" or "Figure out how Figma's API works"):
|
|
19
|
-
|
|
20
|
-
1. **Ask about the objective** — Ask the user: "What service do you want to map?" and "What are you trying to build or integrate with?" This helps focus the recording on the relevant parts of the API surface.
|
|
21
|
-
|
|
22
|
-
2. **Choose mode** — Ask the user: "Should I browse automatically, or do you want to drive?" This determines whether to use auto mode or manual mode:
|
|
23
|
-
- **Auto mode**: The CLI launches a headless browser, navigates the service, and records API calls automatically. Best for broad discovery.
|
|
24
|
-
- **Manual mode**: A Chrome window opens for the user to interact with the service while the CLI records all API traffic in the background. Best for capturing a specific workflow.
|
|
25
|
-
|
|
26
|
-
3. **Run the mapping** — Execute the appropriate `map` command:
|
|
27
|
-
- Auto mode: `map <domain> --json`
|
|
28
|
-
- Manual mode: `map <domain> --manual --json`
|
|
29
|
-
- For longer sessions: `map <domain> --duration 120 --json`
|
|
30
|
-
|
|
31
|
-
4. **Wait for recording to complete** — In auto mode, the CLI will browse and record for the default duration (60 seconds) then stop. In manual mode, the CLI blocks until the user closes the browser or presses Ctrl+C. The command outputs a JSON summary of all discovered endpoints.
|
|
32
|
-
|
|
33
|
-
5. **Analyze the API map** — Review the output and present findings to the user:
|
|
34
|
-
- List discovered endpoints grouped by resource type (e.g., `/api/v1/users`, `/api/v1/documents`)
|
|
35
|
-
- Note authentication patterns (Bearer tokens, cookies, API keys)
|
|
36
|
-
- Identify CRUD operations and their HTTP methods
|
|
37
|
-
- Highlight any WebSocket or streaming endpoints
|
|
38
|
-
- Call out rate limiting headers or pagination patterns
|
|
39
|
-
|
|
40
|
-
6. **Offer next steps** — Based on the discovered API surface, offer to:
|
|
41
|
-
- Create CLI tools that wrap the discovered endpoints
|
|
42
|
-
- Generate TypeScript types from observed request/response payloads
|
|
43
|
-
- Build a focused integration for the user's specific use case
|
|
44
|
-
- Re-record with a longer duration or manual mode to capture more endpoints
|
|
45
|
-
|
|
46
|
-
## Important Behavior
|
|
47
|
-
|
|
48
|
-
- **Be proactive.** If the user names a service, start mapping immediately rather than asking unnecessary clarifying questions. Ask about mode preference, then go.
|
|
49
|
-
- **Always use `--json` flag** on all commands for reliable parsing.
|
|
50
|
-
- **Present findings clearly.** Group endpoints logically, show HTTP methods, and highlight the most useful ones for the user's stated objective.
|
|
51
|
-
- **Suggest manual mode for authenticated services.** If auto mode returns mostly auth redirects or login pages, suggest switching to manual mode so the user can log in first.
|
|
52
|
-
- **Handle errors gracefully.** If the domain is unreachable or the recording captures no API calls, suggest checking the domain, trying manual mode, or increasing the duration.
|
|
53
|
-
|
|
54
|
-
## Command Reference
|
|
55
|
-
|
|
56
|
-
```
|
|
57
|
-
map <domain> --json # Auto mode: browse and record API calls (default 60s)
|
|
58
|
-
map <domain> --manual --json # Manual mode: user drives the browser, CLI records
|
|
59
|
-
map <domain> --duration <secs> --json # Auto mode with custom duration
|
|
60
|
-
map <domain> --manual --duration <secs> --json # Manual mode with custom timeout
|
|
61
|
-
```
|
|
62
|
-
|
|
63
|
-
## Example Interaction
|
|
64
|
-
|
|
65
|
-
**User**: "Map the Notion API"
|
|
66
|
-
|
|
67
|
-
1. Ask: "What are you trying to build with Notion? And should I browse automatically, or do you want to drive the browser?"
|
|
68
|
-
2. User says: "I want to build a CLI to manage my pages. I'll drive."
|
|
69
|
-
3. `map notion.com --manual --json` -> Chrome window opens
|
|
70
|
-
4. Tell user: "A Chrome window is open. Log into Notion and do a representative workflow — create a page, edit it, maybe move it. I'll record all API calls in the background. Close the browser when you're done."
|
|
71
|
-
5. User closes browser -> CLI outputs discovered endpoints
|
|
72
|
-
6. Present findings: "I found 14 API endpoints. Here are the key ones for page management:
|
|
73
|
-
- `POST /api/v3/getSpaces` — lists workspaces
|
|
74
|
-
- `POST /api/v3/syncRecordValues` — fetches page content
|
|
75
|
-
- `POST /api/v3/submitTransaction` — creates/updates pages
|
|
76
|
-
- `POST /api/v3/enqueueTask` — async operations (export, duplicate)
|
|
77
|
-
Authentication: Cookie-based session with `token_v2`."
|
|
78
|
-
7. Offer: "Want me to create a CLI tool that wraps these endpoints for managing Notion pages?"
|
|
@@ -1,18 +0,0 @@
|
|
|
1
|
-
<svg viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
|
|
2
|
-
<rect width="16" height="16" fill="#0f172a"/>
|
|
3
|
-
<rect x="2" y="2" width="12" height="12" fill="#1e293b"/>
|
|
4
|
-
<rect x="3" y="3" width="10" height="10" fill="#0f172a" stroke="#3b82f6" stroke-width="1"/>
|
|
5
|
-
<rect x="4" y="4" width="2" height="2" fill="#3b82f6"/>
|
|
6
|
-
<rect x="10" y="4" width="2" height="2" fill="#3b82f6"/>
|
|
7
|
-
<rect x="4" y="10" width="2" height="2" fill="#3b82f6"/>
|
|
8
|
-
<rect x="10" y="10" width="2" height="2" fill="#3b82f6"/>
|
|
9
|
-
<line x1="5" y1="5" x2="11" y2="5" stroke="#10b981" stroke-width="1"/>
|
|
10
|
-
<line x1="5" y1="5" x2="5" y2="11" stroke="#10b981" stroke-width="1"/>
|
|
11
|
-
<line x1="11" y1="5" x2="11" y2="11" stroke="#10b981" stroke-width="1"/>
|
|
12
|
-
<line x1="5" y1="11" x2="11" y2="11" stroke="#10b981" stroke-width="1"/>
|
|
13
|
-
<rect x="7" y="7" width="2" height="2" fill="#f59e0b"/>
|
|
14
|
-
<line x1="5" y1="8" x2="7" y2="8" stroke="#60a5fa" stroke-width="1"/>
|
|
15
|
-
<line x1="9" y1="8" x2="11" y2="8" stroke="#60a5fa" stroke-width="1"/>
|
|
16
|
-
<line x1="8" y1="5" x2="8" y2="7" stroke="#60a5fa" stroke-width="1"/>
|
|
17
|
-
<line x1="8" y1="9" x2="8" y2="11" stroke="#60a5fa" stroke-width="1"/>
|
|
18
|
-
</svg>
|
|
@@ -1,68 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
name: cli-discover
|
|
3
|
-
description: Discover which CLI tools are installed, their versions, and authentication status
|
|
4
|
-
compatibility: "Designed for Vellum personal assistants"
|
|
5
|
-
metadata: {"emoji":"🔍","vellum":{"display-name":"CLI Discovery","user-invocable":false}}
|
|
6
|
-
---
|
|
7
|
-
|
|
8
|
-
# CLI Discovery
|
|
9
|
-
|
|
10
|
-
When you need to discover what CLI tools are available on the system, use `host_bash` to check directly. Do not use sandboxed `bash` for discovery — it may not see host-installed CLIs or auth state, leading to false negatives.
|
|
11
|
-
|
|
12
|
-
## Checking if a CLI exists
|
|
13
|
-
|
|
14
|
-
```bash
|
|
15
|
-
which <name> # returns path if found, exits non-zero if missing
|
|
16
|
-
command -v <name> # alternative, works in all POSIX shells
|
|
17
|
-
```
|
|
18
|
-
|
|
19
|
-
## Getting version info
|
|
20
|
-
|
|
21
|
-
```bash
|
|
22
|
-
<name> --version # most CLIs support this flag
|
|
23
|
-
```
|
|
24
|
-
|
|
25
|
-
Use a 5-second timeout to avoid hanging on unresponsive CLIs.
|
|
26
|
-
|
|
27
|
-
## Auth-check commands
|
|
28
|
-
|
|
29
|
-
For CLIs that support authentication, check whether the user is logged in:
|
|
30
|
-
|
|
31
|
-
| CLI | Auth check command |
|
|
32
|
-
|-----|-------------------|
|
|
33
|
-
| `gh` | `gh auth status` |
|
|
34
|
-
| `aws` | `aws sts get-caller-identity` |
|
|
35
|
-
| `gcloud` | `gcloud auth list --filter=status:ACTIVE --format=value(account)` |
|
|
36
|
-
| `az` | `az account show` |
|
|
37
|
-
| `vercel` | `vercel whoami` |
|
|
38
|
-
| `netlify` | `netlify status` |
|
|
39
|
-
| `fly` | `fly auth whoami` |
|
|
40
|
-
| `heroku` | `heroku auth:whoami` |
|
|
41
|
-
| `railway` | `railway whoami` |
|
|
42
|
-
|
|
43
|
-
## Common CLIs worth checking
|
|
44
|
-
|
|
45
|
-
When doing a broad discovery, check these categories:
|
|
46
|
-
|
|
47
|
-
- **Version control & code hosting:** `gh`, `git`, `gitlab`
|
|
48
|
-
- **Project management:** `linear`, `jira`
|
|
49
|
-
- **Communication:** `slack`
|
|
50
|
-
- **Cloud providers:** `aws`, `gcloud`, `az`
|
|
51
|
-
- **Containers & infra:** `docker`, `kubectl`, `terraform`
|
|
52
|
-
- **Runtimes & package managers:** `node`, `bun`, `deno`, `python3`, `pip3`
|
|
53
|
-
- **HTTP clients:** `curl`, `httpie`
|
|
54
|
-
- **Hosting & deploy:** `vercel`, `netlify`, `fly`, `heroku`, `railway`
|
|
55
|
-
|
|
56
|
-
## Output format
|
|
57
|
-
|
|
58
|
-
Report findings in markdown:
|
|
59
|
-
|
|
60
|
-
```markdown
|
|
61
|
-
## Available CLIs
|
|
62
|
-
|
|
63
|
-
- **git** (/usr/bin/git) — git version 2.x.x
|
|
64
|
-
- **gh** (/usr/bin/gh) — gh version 2.x.x [authenticated: user@example.com]
|
|
65
|
-
- **bun** (~/.bun/bin/bun) — 1.x.x
|
|
66
|
-
|
|
67
|
-
## Not found: jira, linear, slack
|
|
68
|
-
```
|
|
@@ -1,179 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
name: deploy-fullstack-vercel
|
|
3
|
-
description: Build and deploy a full-stack app (React frontend + Python/FastAPI backend) to Vercel as a serverless demo with seeded data
|
|
4
|
-
compatibility: "Designed for Vellum personal assistants"
|
|
5
|
-
metadata: {"emoji":"🚀","vellum":{"display-name":"Deploy Fullstack to Vercel"}}
|
|
6
|
-
---
|
|
7
|
-
|
|
8
|
-
# Deploy Fullstack to Vercel
|
|
9
|
-
|
|
10
|
-
Deploy a full-stack app with a React/Vite frontend and Python/FastAPI backend to Vercel as a serverless demo. No auth required — meant for demos, portfolio pieces, and quick showcases.
|
|
11
|
-
|
|
12
|
-
## When to Use
|
|
13
|
-
|
|
14
|
-
- User says "deploy this to Vercel", "host this", "publish this"
|
|
15
|
-
- User has a project with a frontend + backend they want live
|
|
16
|
-
- User wants a quick demo deployment (no persistent database needed)
|
|
17
|
-
|
|
18
|
-
## Prerequisites
|
|
19
|
-
|
|
20
|
-
- A project with a frontend (React/Vite) and backend (FastAPI/Python)
|
|
21
|
-
- Vercel CLI installed (`npm install -g vercel`) and authenticated (`vercel login`)
|
|
22
|
-
|
|
23
|
-
## Workflow
|
|
24
|
-
|
|
25
|
-
### 1. Build the Frontend
|
|
26
|
-
|
|
27
|
-
```bash
|
|
28
|
-
cd <project>/frontend
|
|
29
|
-
npm install
|
|
30
|
-
npx vite build
|
|
31
|
-
```
|
|
32
|
-
|
|
33
|
-
This produces static files in `frontend/dist/`.
|
|
34
|
-
|
|
35
|
-
### 2. Create the Vercel Deploy Directory
|
|
36
|
-
|
|
37
|
-
```
|
|
38
|
-
<project>/vercel-deploy/
|
|
39
|
-
├── api/
|
|
40
|
-
│ ├── index.py ← FastAPI app wrapper (entry point)
|
|
41
|
-
│ ├── database.py ← DB config (use /tmp for SQLite)
|
|
42
|
-
│ ├── models.py
|
|
43
|
-
│ ├── schemas.py
|
|
44
|
-
│ ├── seed_data.py ← Must seed ALL required data (users, etc.)
|
|
45
|
-
│ ├── routers/
|
|
46
|
-
│ │ ├── __init__.py
|
|
47
|
-
│ │ └── *.py
|
|
48
|
-
│ └── requirements.txt ← Python deps (fastapi, sqlalchemy, pydantic)
|
|
49
|
-
├── index.html ← From frontend/dist/
|
|
50
|
-
├── assets/ ← From frontend/dist/assets/
|
|
51
|
-
└── vercel.json
|
|
52
|
-
```
|
|
53
|
-
|
|
54
|
-
**Key steps:**
|
|
55
|
-
```bash
|
|
56
|
-
mkdir -p <project>/vercel-deploy/api
|
|
57
|
-
|
|
58
|
-
# Copy frontend build output to deploy root
|
|
59
|
-
cp -r <project>/frontend/dist/* <project>/vercel-deploy/
|
|
60
|
-
|
|
61
|
-
# Copy backend files into api/
|
|
62
|
-
cp <project>/backend/models.py <project>/vercel-deploy/api/
|
|
63
|
-
cp <project>/backend/database.py <project>/vercel-deploy/api/
|
|
64
|
-
cp <project>/backend/schemas.py <project>/vercel-deploy/api/
|
|
65
|
-
cp <project>/backend/seed_data.py <project>/vercel-deploy/api/
|
|
66
|
-
cp -r <project>/backend/routers <project>/vercel-deploy/api/
|
|
67
|
-
cp <project>/backend/requirements.txt <project>/vercel-deploy/api/
|
|
68
|
-
```
|
|
69
|
-
|
|
70
|
-
### 3. Create api/index.py (Serverless Entry Point)
|
|
71
|
-
|
|
72
|
-
```python
|
|
73
|
-
import sys, os
|
|
74
|
-
sys.path.insert(0, os.path.dirname(__file__))
|
|
75
|
-
|
|
76
|
-
from fastapi import FastAPI
|
|
77
|
-
from fastapi.middleware.cors import CORSMiddleware
|
|
78
|
-
from database import engine, Base, SessionLocal
|
|
79
|
-
from seed_data import seed_exercises, seed_default_user # all seed functions
|
|
80
|
-
from routers import users, exercises, workouts, schedule, progress
|
|
81
|
-
|
|
82
|
-
# Create tables and seed on EVERY cold start
|
|
83
|
-
Base.metadata.create_all(bind=engine)
|
|
84
|
-
db = SessionLocal()
|
|
85
|
-
try:
|
|
86
|
-
seed_exercises(db)
|
|
87
|
-
seed_default_user(db) # IMPORTANT: seed all required data
|
|
88
|
-
finally:
|
|
89
|
-
db.close()
|
|
90
|
-
|
|
91
|
-
app = FastAPI(title="MyApp")
|
|
92
|
-
|
|
93
|
-
app.add_middleware(
|
|
94
|
-
CORSMiddleware,
|
|
95
|
-
allow_origins=["*"],
|
|
96
|
-
allow_credentials=True,
|
|
97
|
-
allow_methods=["*"],
|
|
98
|
-
allow_headers=["*"],
|
|
99
|
-
)
|
|
100
|
-
|
|
101
|
-
app.include_router(users.router)
|
|
102
|
-
# ... other routers
|
|
103
|
-
|
|
104
|
-
@app.get("/api/health")
|
|
105
|
-
def health_check():
|
|
106
|
-
return {"status": "ok"}
|
|
107
|
-
```
|
|
108
|
-
|
|
109
|
-
### 4. Update database.py for Vercel
|
|
110
|
-
|
|
111
|
-
**Critical:** Vercel serverless functions can only write to `/tmp`. Update the SQLite path:
|
|
112
|
-
|
|
113
|
-
```python
|
|
114
|
-
SQLALCHEMY_DATABASE_URL = "sqlite:////tmp/app.db"
|
|
115
|
-
```
|
|
116
|
-
|
|
117
|
-
### 5. Seed ALL Required Data
|
|
118
|
-
|
|
119
|
-
**This is the #1 gotcha.** Since `/tmp` is ephemeral, every cold start gets a fresh database. If your frontend assumes certain data exists (like user ID 1), you MUST seed it:
|
|
120
|
-
|
|
121
|
-
```python
|
|
122
|
-
def seed_default_user(db: Session):
|
|
123
|
-
count = db.query(UserProfile).count()
|
|
124
|
-
if count > 0:
|
|
125
|
-
return
|
|
126
|
-
user = UserProfile(name="Demo User", ...)
|
|
127
|
-
db.add(user)
|
|
128
|
-
db.commit()
|
|
129
|
-
```
|
|
130
|
-
|
|
131
|
-
### 6. Create vercel.json
|
|
132
|
-
|
|
133
|
-
```json
|
|
134
|
-
{
|
|
135
|
-
"rewrites": [
|
|
136
|
-
{ "source": "/api/(.*)", "destination": "/api/index.py" },
|
|
137
|
-
{ "source": "/((?!assets/).*)", "destination": "/index.html" }
|
|
138
|
-
]
|
|
139
|
-
}
|
|
140
|
-
```
|
|
141
|
-
|
|
142
|
-
This routes:
|
|
143
|
-
- `/api/*` → Python serverless function
|
|
144
|
-
- Everything else → React SPA (index.html)
|
|
145
|
-
|
|
146
|
-
### 7. Deploy
|
|
147
|
-
|
|
148
|
-
```bash
|
|
149
|
-
cd <project>/vercel-deploy
|
|
150
|
-
vercel --yes --prod
|
|
151
|
-
```
|
|
152
|
-
|
|
153
|
-
### 8. Verify
|
|
154
|
-
|
|
155
|
-
```bash
|
|
156
|
-
curl -s <deployed-url>/api/health
|
|
157
|
-
# Should return: {"status":"ok"}
|
|
158
|
-
```
|
|
159
|
-
|
|
160
|
-
## Gotchas & Limitations
|
|
161
|
-
|
|
162
|
-
| Issue | Solution |
|
|
163
|
-
|-------|----------|
|
|
164
|
-
| SQLite resets on cold start | Seed ALL required data in index.py startup |
|
|
165
|
-
| No persistent storage | Acceptable for demos. For production, use Vercel Postgres or Supabase |
|
|
166
|
-
| No auth | Fine for demos/portfolios. Add auth layer for real apps |
|
|
167
|
-
| `requirements.txt` location | Must be inside `api/` folder (next to index.py) |
|
|
168
|
-
| Module imports in routers | Use `sys.path.insert(0, os.path.dirname(__file__))` in index.py |
|
|
169
|
-
| CORS | Set `allow_origins=["*"]` for demo deployments |
|
|
170
|
-
| `--name` flag deprecated | Don't use `--name` with Vercel CLI, just deploy from the directory |
|
|
171
|
-
|
|
172
|
-
## Vercel CLI Quick Reference
|
|
173
|
-
|
|
174
|
-
```bash
|
|
175
|
-
npm install -g vercel # Install
|
|
176
|
-
vercel login # Authenticate (opens browser)
|
|
177
|
-
vercel --yes --prod # Deploy to production (skip prompts)
|
|
178
|
-
vercel logs --project <name> # Check function logs
|
|
179
|
-
```
|