@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
package/src/cli/commands/mcp.ts
CHANGED
|
@@ -11,6 +11,7 @@ import {
|
|
|
11
11
|
deleteMcpOAuthCredentials,
|
|
12
12
|
McpOAuthProvider,
|
|
13
13
|
} from "../../mcp/mcp-oauth-provider.js";
|
|
14
|
+
import { httpSend } from "../http-client.js";
|
|
14
15
|
import { log } from "../logger.js";
|
|
15
16
|
|
|
16
17
|
export const HEALTH_CHECK_TIMEOUT_MS = 10_000;
|
|
@@ -66,8 +67,8 @@ server uses one of three transport types:
|
|
|
66
67
|
sse Remote server using Server-Sent Events
|
|
67
68
|
streamable-http Remote server using Streamable HTTP transport
|
|
68
69
|
|
|
69
|
-
|
|
70
|
-
|
|
70
|
+
After changing MCP server configuration, run 'vellum mcp reload' to apply
|
|
71
|
+
changes without restarting the assistant.
|
|
71
72
|
|
|
72
73
|
Examples:
|
|
73
74
|
$ assistant mcp list
|
|
@@ -244,6 +245,69 @@ Examples:
|
|
|
244
245
|
process.exit(0);
|
|
245
246
|
});
|
|
246
247
|
|
|
248
|
+
mcp
|
|
249
|
+
.command("reload")
|
|
250
|
+
.description("Reload MCP server connections in the running assistant")
|
|
251
|
+
.addHelpText(
|
|
252
|
+
"after",
|
|
253
|
+
`
|
|
254
|
+
Sends a message to the running assistant to disconnect and reconnect all MCP
|
|
255
|
+
servers using the current configuration from disk. Active sessions pick up
|
|
256
|
+
new tools on their next turn automatically. The assistant must be running.
|
|
257
|
+
|
|
258
|
+
Examples:
|
|
259
|
+
$ vellum mcp reload
|
|
260
|
+
$ vellum mcp reload # after editing config.json to add a new server
|
|
261
|
+
$ vellum mcp reload # after running "vellum mcp auth <server>"`,
|
|
262
|
+
)
|
|
263
|
+
.action(async () => {
|
|
264
|
+
log.info("Sending reload request to assistant...");
|
|
265
|
+
try {
|
|
266
|
+
const res = await httpSend("/v1/mcp/reload", { method: "POST" });
|
|
267
|
+
const response = (await res.json()) as {
|
|
268
|
+
success: boolean;
|
|
269
|
+
serverCount?: number;
|
|
270
|
+
toolCount?: number;
|
|
271
|
+
servers?: {
|
|
272
|
+
id: string;
|
|
273
|
+
connected: boolean;
|
|
274
|
+
disabled?: boolean;
|
|
275
|
+
toolCount: number;
|
|
276
|
+
tools: string[];
|
|
277
|
+
}[];
|
|
278
|
+
error?: string;
|
|
279
|
+
};
|
|
280
|
+
if (response.success) {
|
|
281
|
+
log.info(
|
|
282
|
+
`MCP servers reloaded: ${response.serverCount} server(s), ${response.toolCount} tool(s)\n`,
|
|
283
|
+
);
|
|
284
|
+
if (response.servers && response.servers.length > 0) {
|
|
285
|
+
for (const server of response.servers) {
|
|
286
|
+
const status = server.disabled
|
|
287
|
+
? "⊘ Disabled"
|
|
288
|
+
: server.connected
|
|
289
|
+
? "\u2713 Connected"
|
|
290
|
+
: "\u2717 Not connected";
|
|
291
|
+
log.info(` ${server.id}`);
|
|
292
|
+
log.info(` Status: ${status}`);
|
|
293
|
+
log.info(
|
|
294
|
+
` Tools: ${server.toolCount > 0 ? server.tools.join(", ") : "(none)"}`,
|
|
295
|
+
);
|
|
296
|
+
log.info("");
|
|
297
|
+
}
|
|
298
|
+
}
|
|
299
|
+
} else {
|
|
300
|
+
log.error(`Failed to reload: ${response.error}`);
|
|
301
|
+
process.exitCode = 1;
|
|
302
|
+
}
|
|
303
|
+
} catch (err) {
|
|
304
|
+
log.error(
|
|
305
|
+
`Failed to send reload request: ${err instanceof Error ? err.message : err}`,
|
|
306
|
+
);
|
|
307
|
+
process.exitCode = 1;
|
|
308
|
+
}
|
|
309
|
+
});
|
|
310
|
+
|
|
247
311
|
mcp
|
|
248
312
|
.command("add <name>")
|
|
249
313
|
.description("Add an MCP server configuration")
|
|
@@ -358,9 +422,7 @@ Examples:
|
|
|
358
422
|
|
|
359
423
|
saveRawConfig(raw);
|
|
360
424
|
log.info(`Added MCP server "${name}" (${opts.transportType})`);
|
|
361
|
-
log.info(
|
|
362
|
-
"Restart the assistant for changes to take effect: vellum sleep && vellum wake",
|
|
363
|
-
);
|
|
425
|
+
log.info("Run 'vellum mcp reload' to apply changes.");
|
|
364
426
|
},
|
|
365
427
|
);
|
|
366
428
|
|
|
@@ -382,8 +444,8 @@ OAuth flow. If the server already has valid cached tokens, the command succeeds
|
|
|
382
444
|
immediately without opening a browser. Tokens are cached locally for future use
|
|
383
445
|
by the assistant.
|
|
384
446
|
|
|
385
|
-
After successful authentication,
|
|
386
|
-
|
|
447
|
+
After successful authentication, run 'vellum mcp reload' to apply changes
|
|
448
|
+
without restarting the assistant.
|
|
387
449
|
|
|
388
450
|
Examples:
|
|
389
451
|
$ assistant mcp auth my-server
|
|
@@ -541,9 +603,7 @@ Examples:
|
|
|
541
603
|
provider.stopCallbackServer();
|
|
542
604
|
|
|
543
605
|
log.info(`Authentication successful for "${name}".`);
|
|
544
|
-
log.info(
|
|
545
|
-
"Restart the assistant for changes to take effect: vellum sleep && vellum wake",
|
|
546
|
-
);
|
|
606
|
+
log.info("Run 'vellum mcp reload' to apply changes.");
|
|
547
607
|
process.exit(0);
|
|
548
608
|
});
|
|
549
609
|
|
|
@@ -561,8 +621,8 @@ any stored OAuth credentials (tokens, client info, discovery metadata) for
|
|
|
561
621
|
sse/streamable-http servers. If no OAuth credentials exist, the cleanup is
|
|
562
622
|
silently skipped.
|
|
563
623
|
|
|
564
|
-
After removal,
|
|
565
|
-
|
|
624
|
+
After removal, run 'vellum mcp reload' to apply changes without restarting
|
|
625
|
+
the assistant.
|
|
566
626
|
|
|
567
627
|
Examples:
|
|
568
628
|
$ assistant mcp remove my-server
|
|
@@ -595,8 +655,6 @@ Examples:
|
|
|
595
655
|
delete servers[name];
|
|
596
656
|
saveRawConfig(raw);
|
|
597
657
|
log.info(`Removed MCP server "${name}".`);
|
|
598
|
-
log.info(
|
|
599
|
-
"Restart the assistant for changes to take effect: vellum sleep && vellum wake",
|
|
600
|
-
);
|
|
658
|
+
log.info("Run 'vellum mcp reload' to apply changes.");
|
|
601
659
|
});
|
|
602
660
|
}
|
|
@@ -56,7 +56,7 @@ ${buildSourceEventNamesHelpBlock()}
|
|
|
56
56
|
|
|
57
57
|
Examples:
|
|
58
58
|
$ assistant notifications send --source-channel assistant_tool --source-event-name user.send_notification --message "Build finished"
|
|
59
|
-
$ assistant notifications send --source-channel scheduler --source-event-name
|
|
59
|
+
$ assistant notifications send --source-channel scheduler --source-event-name schedule.notify --message "Stand-up in 5 minutes" --urgency high
|
|
60
60
|
$ assistant notifications send --source-channel watcher --source-event-name watcher.notification --message "File changed" --no-requires-action --is-async-background
|
|
61
61
|
$ assistant notifications send --source-channel assistant_tool --source-event-name user.send_notification --message "Deploy complete" --preferred-channels vellum,telegram --json`,
|
|
62
62
|
);
|
|
@@ -143,7 +143,7 @@ Behavioral notes:
|
|
|
143
143
|
|
|
144
144
|
Examples:
|
|
145
145
|
$ assistant notifications send --source-channel assistant_tool --source-event-name user.send_notification --message "Task complete"
|
|
146
|
-
$ assistant notifications send --source-channel scheduler --source-event-name
|
|
146
|
+
$ assistant notifications send --source-channel scheduler --source-event-name schedule.notify --message "Meeting in 5 min" --urgency high --title "Reminder"
|
|
147
147
|
$ assistant notifications send --source-channel watcher --source-event-name watcher.notification --message "Detected change" --no-requires-action --is-async-background --json`,
|
|
148
148
|
)
|
|
149
149
|
.action(
|
|
@@ -318,8 +318,8 @@ ${buildSourceEventNamesHelpBlock()}
|
|
|
318
318
|
Examples:
|
|
319
319
|
$ assistant notifications list
|
|
320
320
|
$ assistant notifications list --limit 5
|
|
321
|
-
$ assistant notifications list --source-event-name
|
|
322
|
-
$ assistant notifications list --source-event-name
|
|
321
|
+
$ assistant notifications list --source-event-name schedule.notify
|
|
322
|
+
$ assistant notifications list --source-event-name schedule.notify --limit 10 --json`,
|
|
323
323
|
)
|
|
324
324
|
.action(
|
|
325
325
|
(
|
|
@@ -12,6 +12,7 @@ import {
|
|
|
12
12
|
getMessages,
|
|
13
13
|
} from "../../memory/conversation-crud.js";
|
|
14
14
|
import { listConversations } from "../../memory/conversation-queries.js";
|
|
15
|
+
import { selectEmbeddingBackend } from "../../memory/embedding-backend.js";
|
|
15
16
|
import { initQdrantClient } from "../../memory/qdrant-client.js";
|
|
16
17
|
import { timeAgo } from "../../util/time.js";
|
|
17
18
|
import { initializeDb } from "../db.js";
|
|
@@ -56,7 +57,9 @@ Examples:
|
|
|
56
57
|
log.info("No sessions");
|
|
57
58
|
} else {
|
|
58
59
|
for (const s of all) {
|
|
59
|
-
log.info(
|
|
60
|
+
log.info(
|
|
61
|
+
` ${s.id} ${s.title ?? "Untitled"} ${timeAgo(s.updatedAt)}`,
|
|
62
|
+
);
|
|
60
63
|
}
|
|
61
64
|
}
|
|
62
65
|
});
|
|
@@ -221,12 +224,17 @@ Examples:
|
|
|
221
224
|
|
|
222
225
|
const config = getConfig();
|
|
223
226
|
const qdrantUrl = getQdrantUrlEnv() || config.memory.qdrant.url;
|
|
227
|
+
const embeddingSelection = selectEmbeddingBackend(config);
|
|
228
|
+
const embeddingModel = embeddingSelection.backend
|
|
229
|
+
? `${embeddingSelection.backend.provider}:${embeddingSelection.backend.model}`
|
|
230
|
+
: undefined;
|
|
224
231
|
const qdrant = initQdrantClient({
|
|
225
232
|
url: qdrantUrl,
|
|
226
233
|
collection: config.memory.qdrant.collection,
|
|
227
234
|
vectorSize: config.memory.qdrant.vectorSize,
|
|
228
235
|
onDisk: config.memory.qdrant.onDisk,
|
|
229
236
|
quantization: config.memory.qdrant.quantization,
|
|
237
|
+
embeddingModel,
|
|
230
238
|
});
|
|
231
239
|
const deleted = await qdrant.deleteCollection();
|
|
232
240
|
if (deleted) {
|
|
@@ -373,18 +373,14 @@ Examples:
|
|
|
373
373
|
.option("--json", "Machine-readable JSON output")
|
|
374
374
|
.action(async (opts: { json?: boolean }) => {
|
|
375
375
|
try {
|
|
376
|
-
|
|
377
|
-
|
|
378
|
-
// In dev mode, merge in skills from the repo-local skills/ directory
|
|
376
|
+
// In dev mode, use the local catalog as the source of truth
|
|
377
|
+
// and skip the remote Platform API entirely.
|
|
379
378
|
const repoSkillsDir = getRepoSkillsDir();
|
|
379
|
+
let catalog: CatalogSkill[];
|
|
380
380
|
if (repoSkillsDir) {
|
|
381
|
-
|
|
382
|
-
|
|
383
|
-
|
|
384
|
-
if (!remoteIds.has(local.id)) {
|
|
385
|
-
catalog.push(local);
|
|
386
|
-
}
|
|
387
|
-
}
|
|
381
|
+
catalog = readLocalCatalog(repoSkillsDir);
|
|
382
|
+
} else {
|
|
383
|
+
catalog = await fetchCatalog();
|
|
388
384
|
}
|
|
389
385
|
|
|
390
386
|
if (opts.json) {
|
package/src/cli/http-client.ts
CHANGED
|
@@ -1,9 +1,8 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* HTTP client helpers for the built-in CLI.
|
|
3
3
|
*
|
|
4
|
-
* Provides authenticated HTTP communication with the daemon's HTTP server
|
|
5
|
-
*
|
|
6
|
-
* from `cli/src/lib/http-client.ts` (external CLI).
|
|
4
|
+
* Provides authenticated HTTP communication with the daemon's HTTP server.
|
|
5
|
+
* Patterns are adapted from `cli/src/lib/http-client.ts` (external CLI).
|
|
7
6
|
*/
|
|
8
7
|
|
|
9
8
|
import { readFileSync } from "node:fs";
|
package/src/cli/main-screen.tsx
CHANGED
|
@@ -23,8 +23,14 @@ export function renderMainScreen(): MainScreenLayout {
|
|
|
23
23
|
const cliRoot = dirname(cliPkgPath);
|
|
24
24
|
// Dynamic require to bypass NodeNext strict module resolution for the
|
|
25
25
|
// CLI package which ships raw TypeScript with bundler-style imports.
|
|
26
|
-
const { render } = require(
|
|
27
|
-
|
|
26
|
+
const { render } = require(
|
|
27
|
+
join(cliRoot, "src", "components", "DefaultMainScreen.tsx"),
|
|
28
|
+
) as {
|
|
29
|
+
render: (
|
|
30
|
+
runtimeUrl: string,
|
|
31
|
+
assistantId: string,
|
|
32
|
+
species: string,
|
|
33
|
+
) => number;
|
|
28
34
|
};
|
|
29
35
|
|
|
30
36
|
const height = render(httpUrl, assistantId, "vellum");
|
|
@@ -35,19 +41,13 @@ export function renderMainScreen(): MainScreenLayout {
|
|
|
35
41
|
return { height, statusLine: statusCanvasLine, statusCol };
|
|
36
42
|
}
|
|
37
43
|
|
|
38
|
-
export function updateStatusText(
|
|
39
|
-
layout: MainScreenLayout,
|
|
40
|
-
text: string,
|
|
41
|
-
): void {
|
|
44
|
+
export function updateStatusText(layout: MainScreenLayout, text: string): void {
|
|
42
45
|
process.stdout.write(
|
|
43
46
|
`\x1b7\x1b[${layout.statusLine};${layout.statusCol}H\x1b[K${text}\x1b8`,
|
|
44
47
|
);
|
|
45
48
|
}
|
|
46
49
|
|
|
47
|
-
export function updateDaemonText(
|
|
48
|
-
layout: MainScreenLayout,
|
|
49
|
-
text: string,
|
|
50
|
-
): void {
|
|
50
|
+
export function updateDaemonText(layout: MainScreenLayout, text: string): void {
|
|
51
51
|
const daemonLine = layout.statusLine - 4;
|
|
52
52
|
process.stdout.write(
|
|
53
53
|
`\x1b7\x1b[${daemonLine};${layout.statusCol}H\x1b[K\x1b[35m${text}\x1b[0m\x1b8`,
|
package/src/cli/program.ts
CHANGED
|
@@ -3,7 +3,6 @@ import { createRequire } from "node:module";
|
|
|
3
3
|
import { Command } from "commander";
|
|
4
4
|
|
|
5
5
|
import { registerHooksCommand } from "../hooks/cli.js";
|
|
6
|
-
import { registerAmazonCommand } from "./commands/amazon/index.js";
|
|
7
6
|
import { registerAuditCommand } from "./commands/audit.js";
|
|
8
7
|
import { registerAutonomyCommand } from "./commands/autonomy.js";
|
|
9
8
|
import { registerBrowserRelayCommand } from "./commands/browser-relay.js";
|
|
@@ -27,7 +26,6 @@ import { registerSequenceCommand } from "./commands/sequence.js";
|
|
|
27
26
|
import { registerSessionsCommand } from "./commands/sessions.js";
|
|
28
27
|
import { registerSkillsCommand } from "./commands/skills.js";
|
|
29
28
|
import { registerTrustCommand } from "./commands/trust.js";
|
|
30
|
-
import { registerTwitterCommand } from "./commands/twitter/index.js";
|
|
31
29
|
|
|
32
30
|
const require = createRequire(import.meta.url);
|
|
33
31
|
const { version } = require("../../package.json") as { version: string };
|
|
@@ -52,7 +50,6 @@ export function buildCliProgram(): Command {
|
|
|
52
50
|
registerEmailCommand(program);
|
|
53
51
|
registerContactsCommand(program);
|
|
54
52
|
registerChannelVerificationSessionsCommand(program);
|
|
55
|
-
registerAmazonCommand(program);
|
|
56
53
|
registerAutonomyCommand(program);
|
|
57
54
|
registerCompletionsCommand(program);
|
|
58
55
|
registerNotificationsCommand(program);
|
|
@@ -61,7 +58,6 @@ export function buildCliProgram(): Command {
|
|
|
61
58
|
registerSkillsCommand(program);
|
|
62
59
|
registerBrowserRelayCommand(program);
|
|
63
60
|
|
|
64
|
-
registerTwitterCommand(program);
|
|
65
61
|
registerMapCommand(program);
|
|
66
62
|
registerSequenceCommand(program);
|
|
67
63
|
|
package/src/cli/reference.ts
CHANGED
|
@@ -24,7 +24,6 @@ Commands:
|
|
|
24
24
|
email [options] Email operations (provider-agnostic)
|
|
25
25
|
contacts [options] Manage and query the contact graph
|
|
26
26
|
channel-verification-sessions [options] Manage channel verification sessions
|
|
27
|
-
amazon [options] Shop on Amazon and Amazon Fresh. Requires an active session (use "refresh" to authenticate).
|
|
28
27
|
autonomy [options] View and configure autonomy tiers
|
|
29
28
|
completions <shell> Generate shell completion script (e.g. assistant completions bash >> ~/.bashrc)
|
|
30
29
|
notifications [options] Send and inspect notifications through the unified notification router
|
|
@@ -32,7 +31,6 @@ Commands:
|
|
|
32
31
|
oauth [options] Manage OAuth tokens for connected integrations
|
|
33
32
|
skills Browse and install skills from the Vellum catalog
|
|
34
33
|
browser Browser automation, extension relay, and Chrome CDP management
|
|
35
|
-
x|twitter [options] Post on X and manage connections. Supports managed (platform proxy) and OAuth (official API) paths.
|
|
36
34
|
map [options] <domain> Auto-navigate a domain and produce a deduplicated API map. Launches Chrome with CDP, starts a Ride Shotgun learn session, then analyzes captured network traffic.
|
|
37
35
|
sequence [options] Manage email sequences
|
|
38
36
|
`;
|
package/src/cli.ts
CHANGED
|
@@ -541,7 +541,10 @@ export async function startCli(): Promise<void> {
|
|
|
541
541
|
}),
|
|
542
542
|
});
|
|
543
543
|
if (resp.ok) {
|
|
544
|
-
const data = (await resp.json()) as {
|
|
544
|
+
const data = (await resp.json()) as {
|
|
545
|
+
sessionId: string;
|
|
546
|
+
title: string;
|
|
547
|
+
};
|
|
545
548
|
sessionId = data.sessionId;
|
|
546
549
|
conversationKey = newKey;
|
|
547
550
|
pendingSessionPick = false;
|
|
@@ -696,6 +699,10 @@ export async function startCli(): Promise<void> {
|
|
|
696
699
|
prompt();
|
|
697
700
|
break;
|
|
698
701
|
|
|
702
|
+
case "tool_use_preview_start":
|
|
703
|
+
// Early preview of tool use — ignored by CLI; full tool_use_start follows.
|
|
704
|
+
break;
|
|
705
|
+
|
|
699
706
|
case "tool_use_start":
|
|
700
707
|
toolStreaming = false;
|
|
701
708
|
spinner.start(formatToolProgress(msg.toolName, msg.input));
|
|
@@ -991,7 +998,9 @@ export async function startCli(): Promise<void> {
|
|
|
991
998
|
// Retry with exponential backoff (1s → 2s → 4s → … → 30s cap) until connected
|
|
992
999
|
while (true) {
|
|
993
1000
|
const delaySec = (reconnectDelay / 1000).toFixed(0);
|
|
994
|
-
process.stdout.write(
|
|
1001
|
+
process.stdout.write(
|
|
1002
|
+
`\n Reconnecting to assistant in ${delaySec}s...\n`,
|
|
1003
|
+
);
|
|
995
1004
|
await new Promise((r) => setTimeout(r, reconnectDelay));
|
|
996
1005
|
|
|
997
1006
|
// Increase backoff for next attempt before trying
|
|
@@ -1338,10 +1347,9 @@ export async function startCli(): Promise<void> {
|
|
|
1338
1347
|
process.on("SIGINT", () => {
|
|
1339
1348
|
spinner.stop();
|
|
1340
1349
|
if (generating && sessionId) {
|
|
1341
|
-
httpSend(
|
|
1342
|
-
|
|
1343
|
-
|
|
1344
|
-
).catch(() => {
|
|
1350
|
+
httpSend(`/v1/conversations/${encodeURIComponent(sessionId)}/cancel`, {
|
|
1351
|
+
method: "POST",
|
|
1352
|
+
}).catch(() => {
|
|
1345
1353
|
// Best-effort cancel
|
|
1346
1354
|
});
|
|
1347
1355
|
} else {
|
|
@@ -1360,8 +1368,6 @@ export async function startCli(): Promise<void> {
|
|
|
1360
1368
|
updateStatusText(mainScreenLayout, "ready");
|
|
1361
1369
|
|
|
1362
1370
|
// Show initial prompt since HTTP doesn't have the session_info flow
|
|
1363
|
-
process.stdout.write(
|
|
1364
|
-
`\n Type your message. Ctrl+D to detach.\n\n`,
|
|
1365
|
-
);
|
|
1371
|
+
process.stdout.write(`\n Type your message. Ctrl+D to detach.\n\n`);
|
|
1366
1372
|
prompt();
|
|
1367
1373
|
}
|
|
@@ -0,0 +1,120 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Guard test that validates bundled-tool-registry.ts stays in sync with
|
|
3
|
+
* TOOLS.json declarations across all bundled skills.
|
|
4
|
+
*
|
|
5
|
+
* If this test fails, run:
|
|
6
|
+
* cd assistant && bun run scripts/generate-bundled-tool-registry.ts
|
|
7
|
+
*/
|
|
8
|
+
|
|
9
|
+
import { readdirSync, readFileSync } from "node:fs";
|
|
10
|
+
import { join } from "node:path";
|
|
11
|
+
import { describe, expect, test } from "bun:test";
|
|
12
|
+
|
|
13
|
+
// ---------------------------------------------------------------------------
|
|
14
|
+
// Helpers
|
|
15
|
+
// ---------------------------------------------------------------------------
|
|
16
|
+
|
|
17
|
+
const BUNDLED_SKILLS_DIR = join(import.meta.dir, "..", "bundled-skills");
|
|
18
|
+
const REGISTRY_PATH = join(import.meta.dir, "..", "bundled-tool-registry.ts");
|
|
19
|
+
|
|
20
|
+
interface ToolEntry {
|
|
21
|
+
executor: string;
|
|
22
|
+
[key: string]: unknown;
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
interface ToolsJson {
|
|
26
|
+
version: number;
|
|
27
|
+
tools: ToolEntry[];
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
/** Collect all expected registry keys from TOOLS.json files. */
|
|
31
|
+
function collectToolsJsonKeys(): Set<string> {
|
|
32
|
+
const keys = new Set<string>();
|
|
33
|
+
const entries = readdirSync(BUNDLED_SKILLS_DIR, { withFileTypes: true });
|
|
34
|
+
|
|
35
|
+
for (const entry of entries) {
|
|
36
|
+
if (!entry.isDirectory() || entry.name === "_shared") continue;
|
|
37
|
+
|
|
38
|
+
const toolsJsonPath = join(BUNDLED_SKILLS_DIR, entry.name, "TOOLS.json");
|
|
39
|
+
let raw: string;
|
|
40
|
+
try {
|
|
41
|
+
raw = readFileSync(toolsJsonPath, "utf-8");
|
|
42
|
+
} catch {
|
|
43
|
+
// No TOOLS.json — skip this skill.
|
|
44
|
+
continue;
|
|
45
|
+
}
|
|
46
|
+
|
|
47
|
+
const toolsJson: ToolsJson = JSON.parse(raw);
|
|
48
|
+
for (const tool of toolsJson.tools) {
|
|
49
|
+
keys.add(`${entry.name}:${tool.executor}`);
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
|
|
53
|
+
return keys;
|
|
54
|
+
}
|
|
55
|
+
|
|
56
|
+
/** Extract all registry keys from bundled-tool-registry.ts source. */
|
|
57
|
+
function collectRegistryKeys(): Set<string> {
|
|
58
|
+
const source = readFileSync(REGISTRY_PATH, "utf-8");
|
|
59
|
+
const keys = new Set<string>();
|
|
60
|
+
// Match both inline `["key", alias]` and multi-line `[\n "key",` formats.
|
|
61
|
+
// Registry keys always follow the pattern `skillName:tools/something.ts`.
|
|
62
|
+
const pattern = /"([^"]+:tools\/[^"]+\.ts)"/g;
|
|
63
|
+
for (const match of source.matchAll(pattern)) {
|
|
64
|
+
keys.add(match[1]);
|
|
65
|
+
}
|
|
66
|
+
return keys;
|
|
67
|
+
}
|
|
68
|
+
|
|
69
|
+
// ---------------------------------------------------------------------------
|
|
70
|
+
// Tests
|
|
71
|
+
// ---------------------------------------------------------------------------
|
|
72
|
+
|
|
73
|
+
describe("bundled-tool-registry guard", () => {
|
|
74
|
+
const toolsJsonKeys = collectToolsJsonKeys();
|
|
75
|
+
const registryKeys = collectRegistryKeys();
|
|
76
|
+
|
|
77
|
+
test("every TOOLS.json executor has a registry entry", () => {
|
|
78
|
+
const violations: string[] = [];
|
|
79
|
+
|
|
80
|
+
for (const key of toolsJsonKeys) {
|
|
81
|
+
if (!registryKeys.has(key)) {
|
|
82
|
+
violations.push(key);
|
|
83
|
+
}
|
|
84
|
+
}
|
|
85
|
+
|
|
86
|
+
if (violations.length > 0) {
|
|
87
|
+
const message = [
|
|
88
|
+
"TOOLS.json declares executors that are missing from bundled-tool-registry.ts.",
|
|
89
|
+
"",
|
|
90
|
+
"Violations:",
|
|
91
|
+
...violations.map((v) => ` - ${v}`),
|
|
92
|
+
"",
|
|
93
|
+
"Run 'cd assistant && bun run scripts/generate-bundled-tool-registry.ts' to fix.",
|
|
94
|
+
].join("\n");
|
|
95
|
+
expect(violations, message).toEqual([]);
|
|
96
|
+
}
|
|
97
|
+
});
|
|
98
|
+
|
|
99
|
+
test("registry has no stale entries", () => {
|
|
100
|
+
const violations: string[] = [];
|
|
101
|
+
|
|
102
|
+
for (const key of registryKeys) {
|
|
103
|
+
if (!toolsJsonKeys.has(key)) {
|
|
104
|
+
violations.push(key);
|
|
105
|
+
}
|
|
106
|
+
}
|
|
107
|
+
|
|
108
|
+
if (violations.length > 0) {
|
|
109
|
+
const message = [
|
|
110
|
+
"bundled-tool-registry.ts contains entries not found in any TOOLS.json.",
|
|
111
|
+
"",
|
|
112
|
+
"Violations:",
|
|
113
|
+
...violations.map((v) => ` - ${v}`),
|
|
114
|
+
"",
|
|
115
|
+
"Run 'cd assistant && bun run scripts/generate-bundled-tool-registry.ts' to fix.",
|
|
116
|
+
].join("\n");
|
|
117
|
+
expect(violations, message).toEqual([]);
|
|
118
|
+
}
|
|
119
|
+
});
|
|
120
|
+
});
|
|
@@ -2,6 +2,17 @@
|
|
|
2
2
|
|
|
3
3
|
When running the `assistant` CLI, run it using the `bash` (not `host_bash`) tool.
|
|
4
4
|
|
|
5
|
+
For account and auth workflows, prefer documented `assistant` CLI commands over
|
|
6
|
+
any generic account registry:
|
|
7
|
+
|
|
8
|
+
- `assistant credentials ...` for stored secrets and credential metadata
|
|
9
|
+
- `assistant oauth token <service>` for OAuth-backed integrations
|
|
10
|
+
- `assistant mcp auth <name>` when an MCP server needs browser login
|
|
11
|
+
- `assistant platform status` for platform-linked deployment/auth context
|
|
12
|
+
|
|
13
|
+
If a bundled skill documents a service-specific `assistant <service>` auth or
|
|
14
|
+
session flow, follow that CLI exactly.
|
|
15
|
+
|
|
5
16
|
# Outbound Network Requests
|
|
6
17
|
|
|
7
18
|
When a skill needs outbound API calls with a stored credential (outside of `assistant` CLI reads), use proxied `bash`:
|
|
@@ -2,7 +2,12 @@
|
|
|
2
2
|
name: app-builder
|
|
3
3
|
description: Build interactive apps, dashboards, calculators, games, trackers, tools, landing pages, and data visualizations with HTML/CSS/JS. Use when the user says build, create, or make an app/dashboard/calculator/game.
|
|
4
4
|
compatibility: "Designed for Vellum personal assistants"
|
|
5
|
-
metadata:
|
|
5
|
+
metadata:
|
|
6
|
+
emoji: "🏗️"
|
|
7
|
+
vellum:
|
|
8
|
+
display-name: "App Builder"
|
|
9
|
+
includes:
|
|
10
|
+
- "frontend-design"
|
|
6
11
|
---
|
|
7
12
|
|
|
8
13
|
You are an expert app builder and visual designer. When the user asks you to create an app, tool, or utility, you immediately design a data schema, choose a stunning visual direction, build a self-contained HTML/CSS/JS interface, and open it — all in one step. You don't discuss or ask for permission to be creative. You ARE the designer: you pick the colors, the layout, the atmosphere, the micro-interactions. Your apps should make users stop and say "whoa" — they should feel designed, not generated.
|
|
@@ -2,7 +2,12 @@
|
|
|
2
2
|
name: browser
|
|
3
3
|
description: Navigate and interact with web pages using a headless browser
|
|
4
4
|
compatibility: "Designed for Vellum personal assistants"
|
|
5
|
-
metadata:
|
|
5
|
+
metadata:
|
|
6
|
+
emoji: "🌐"
|
|
7
|
+
vellum:
|
|
8
|
+
display-name: "Browser"
|
|
9
|
+
user-invocable: true
|
|
10
|
+
feature-flag: "browser"
|
|
6
11
|
---
|
|
7
12
|
|
|
8
13
|
Use this skill to browse the web. After loading this skill, the following browser tools become available:
|
|
@@ -2,7 +2,11 @@
|
|
|
2
2
|
name: chatgpt-import
|
|
3
3
|
description: Import conversation history from ChatGPT into Vellum
|
|
4
4
|
compatibility: "Designed for Vellum personal assistants"
|
|
5
|
-
metadata:
|
|
5
|
+
metadata:
|
|
6
|
+
emoji: "📥"
|
|
7
|
+
vellum:
|
|
8
|
+
display-name: "ChatGPT Import"
|
|
9
|
+
user-invocable: true
|
|
6
10
|
---
|
|
7
11
|
|
|
8
12
|
Import ChatGPT conversation history into Vellum so users can keep their conversation context and memory when switching from ChatGPT.
|
|
@@ -2,7 +2,11 @@
|
|
|
2
2
|
name: claude-code
|
|
3
3
|
description: Delegate coding tasks to Claude Code, an AI-powered coding agent
|
|
4
4
|
compatibility: "Designed for Vellum personal assistants"
|
|
5
|
-
metadata:
|
|
5
|
+
metadata:
|
|
6
|
+
emoji: "💻"
|
|
7
|
+
vellum:
|
|
8
|
+
display-name: "Claude Code"
|
|
9
|
+
user-invocable: true
|
|
6
10
|
---
|
|
7
11
|
|
|
8
12
|
You are delegating a coding task to Claude Code, an autonomous AI coding agent. Use this skill when the user needs hands-on software engineering work done.
|
|
@@ -2,7 +2,12 @@
|
|
|
2
2
|
name: computer-use
|
|
3
3
|
description: Computer-use action tools for controlling the macOS desktop via accessibility and screen capture.
|
|
4
4
|
compatibility: "Designed for Vellum personal assistants"
|
|
5
|
-
metadata:
|
|
5
|
+
metadata:
|
|
6
|
+
emoji: "🖥️"
|
|
7
|
+
vellum:
|
|
8
|
+
display-name: "Computer Use"
|
|
9
|
+
user-invocable: false
|
|
10
|
+
disable-model-invocation: true
|
|
6
11
|
---
|
|
7
12
|
|
|
8
13
|
This skill provides the 12 computer*use*\* action tools for controlling
|