@vellumai/assistant 0.12.1-staging.1 → 0.12.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/AGENTS.md +0 -4
- package/ARCHITECTURE.md +12 -11
- package/docs/architecture/turn-actor.md +8 -15
- package/openapi.yaml +1 -291
- package/package.json +1 -1
- package/src/__tests__/always-loaded-tools-guard.test.ts +10 -18
- package/src/__tests__/app-compiler.test.ts +0 -6
- package/src/__tests__/app-control-tool-schemas.test.ts +2 -5
- package/src/__tests__/app-dir-path-guard.test.ts +3 -1
- package/src/__tests__/app-source-watcher.test.ts +218 -0
- package/src/{calls/__tests__ → __tests__}/call-controller.test.ts +82 -503
- package/src/__tests__/computer-use-skill-proxy-bridge.test.ts +2 -5
- package/src/__tests__/computer-use-tools.test.ts +5 -17
- package/src/__tests__/config-schema-cmd.test.ts +2 -2
- package/src/__tests__/config-schema.test.ts +29 -28
- package/src/__tests__/config-watcher-skill-reseed.test.ts +359 -0
- package/src/__tests__/config-watcher.test.ts +8 -23
- package/src/__tests__/connection-model-compat.test.ts +2 -2
- package/src/__tests__/conversation-key-store-disk-view.test.ts +1 -1
- package/src/__tests__/conversation-pairing.test.ts +0 -26
- package/src/__tests__/conversation-process-app-control-preactivation.test.ts +10 -4
- package/src/__tests__/conversation-queue.test.ts +207 -48
- package/src/__tests__/conversation-retry-discard.test.ts +1 -54
- package/src/__tests__/conversation-skill-tools.test.ts +0 -27
- package/src/__tests__/conversation-surfaces-app-control.test.ts +3 -8
- package/src/__tests__/conversation-surfaces-task-progress.test.ts +0 -67
- package/src/__tests__/conversation-title-service.test.ts +10 -14
- package/src/__tests__/conversation-tool-setup-app-refresh.test.ts +5 -3
- package/src/__tests__/conversation-tool-setup-attribution.test.ts +0 -51
- package/src/__tests__/credential-record-retire.test.ts +1 -171
- package/src/__tests__/credential-routes.test.ts +3 -212
- package/src/__tests__/credential-security-invariants.test.ts +1 -2
- package/src/__tests__/cu-unified-flow.test.ts +2 -8
- package/src/__tests__/drain-kick-guard.test.ts +2 -0
- package/src/__tests__/drain-requeue-on-contention.test.ts +6 -0
- package/src/__tests__/evict-conversations-for-reload.test.ts +1 -1
- package/src/__tests__/host-bash-proxy.test.ts +45 -26
- package/src/__tests__/host-browser-proxy.test.ts +17 -6
- package/src/__tests__/host-file-proxy-targeted.test.ts +0 -23
- package/src/__tests__/host-file-proxy.test.ts +23 -11
- package/src/__tests__/host-transfer-proxy-targeted.test.ts +9 -30
- package/src/__tests__/llm-catalog-parity.test.ts +0 -25
- package/src/__tests__/mcp-auth-routes.test.ts +9 -6
- package/src/__tests__/mcp-config-secret-boundary.test.ts +136 -78
- package/src/__tests__/mcp-health-check.test.ts +11 -8
- package/src/__tests__/mcp-list-plugin-servers.test.ts +10 -8
- package/src/{calls/__tests__ → __tests__}/media-stream-audio-transcode.test.ts +1 -1
- package/src/{calls/__tests__ → __tests__}/media-stream-output.test.ts +8 -37
- package/src/{calls/__tests__ → __tests__}/media-stream-parser.test.ts +1 -1
- package/src/{calls/__tests__ → __tests__}/media-stream-server-integration.test.ts +57 -150
- package/src/{calls/__tests__ → __tests__}/media-stream-stt-session.test.ts +5 -5
- package/src/{calls/__tests__ → __tests__}/media-turn-detector.test.ts +1 -1
- package/src/__tests__/messages-after-tiebreaker.test.ts +0 -91
- package/src/__tests__/messages-read-boundary-guard.test.ts +1 -1
- package/src/__tests__/messaging-send-tool.test.ts +548 -355
- package/src/__tests__/model-intents.test.ts +0 -3
- package/src/__tests__/outlook-messaging-provider.test.ts +6 -6
- package/src/__tests__/platform-client-verify-credential.test.ts +0 -2
- package/src/__tests__/plugin-import-boundary-guard.test.ts +0 -13
- package/src/__tests__/script-proxy-certs.test.ts +0 -35
- package/src/__tests__/skill-feature-flags-integration.test.ts +1 -1
- package/src/__tests__/skill-feature-flags.test.ts +2 -2
- package/src/__tests__/speaker-identification.test.ts +56 -0
- package/src/__tests__/subagent-tool-gate-mode.test.ts +3 -19
- package/src/__tests__/subagent-tools.test.ts +2 -3
- package/src/__tests__/telephony-tts-guard.test.ts +3 -38
- package/src/__tests__/vellum-self-knowledge-inline-command.test.ts +0 -4
- package/src/{calls/__tests__/voice-session-bridge-turn-flow.test.ts → __tests__/voice-session-bridge.test.ts} +12 -20
- package/src/__tests__/watch-retro-tool-availability.test.ts +17 -8
- package/src/__tests__/workspace-git-service.test.ts +0 -26
- package/src/acp/__tests__/agent-process.test.ts +4 -258
- package/src/acp/__tests__/auth-required.test.ts +0 -96
- package/src/acp/__tests__/client-handler.test.ts +2 -90
- package/src/acp/__tests__/session-manager-persistence.test.ts +1 -5
- package/src/acp/__tests__/session-manager-resume.test.ts +6 -270
- package/src/acp/__tests__/session-manager-usage.test.ts +2 -4
- package/src/acp/__tests__/session-manager.test.ts +4 -895
- package/src/acp/agent-process.test.ts +1 -4
- package/src/acp/agent-process.ts +9 -94
- package/src/acp/auth-required.ts +1 -50
- package/src/acp/auto-install.test.ts +7 -9
- package/src/acp/client-handler.ts +3 -16
- package/src/acp/resolve-agent.test.ts +6 -220
- package/src/acp/resolve-agent.ts +23 -88
- package/src/acp/session-manager.test.ts +3 -196
- package/src/acp/session-manager.ts +18 -441
- package/src/acp/types.ts +5 -50
- package/src/api/events/app-files-changed.ts +3 -4
- package/src/api/index.ts +0 -6
- package/src/apps/app-store.ts +1 -1
- package/src/bundler/app-compiler.ts +0 -15
- package/src/calls/__tests__/voice-control-protocol.test.ts +25 -58
- package/src/calls/__tests__/voice-session-bridge.test.ts +1 -37
- package/src/calls/__tests__/voice-triage-escalate.test.ts +0 -105
- package/src/calls/call-constants.ts +4 -24
- package/src/calls/call-controller.ts +199 -499
- package/src/calls/call-transport.ts +0 -16
- package/src/calls/media-stream-output.ts +0 -32
- package/src/calls/media-stream-server.ts +30 -82
- package/src/calls/media-stream-stt-session.ts +0 -15
- package/src/calls/resolve-call-tts-provider.ts +2 -33
- package/src/calls/speaker-identification.ts +233 -0
- package/src/calls/tts-call-strategy.ts +5 -9
- package/src/calls/types.ts +0 -2
- package/src/calls/voice-control-protocol.ts +21 -53
- package/src/calls/voice-session-bridge.ts +46 -59
- package/src/calls/voice-triage-escalate.ts +56 -175
- package/src/cli/commands/apps.help.ts +13 -67
- package/src/cli/commands/apps.ts +0 -183
- package/src/cli/commands/channels/index.help.ts +2 -70
- package/src/cli/commands/channels/index.ts +3 -16
- package/src/cli/commands/credentials.help.ts +2 -6
- package/src/cli/commands/credentials.ts +2 -2
- package/src/cli/commands/mcp.help.ts +8 -8
- package/src/cli/commands/mcp.ts +1 -1
- package/src/cli/commands/roadmap.help.ts +1 -5
- package/src/cli/commands/roadmap.ts +1 -1
- package/src/cli/lib/bundled-marketplace.json +90 -103
- package/src/config/__tests__/default-profile-catalog.test.ts +0 -22
- package/src/config/__tests__/memory-retrospective-schema.test.ts +1 -15
- package/src/config/__tests__/platform-rehydration.test.ts +0 -93
- package/src/config/acp-defaults.test.ts +3 -13
- package/src/config/acp-defaults.ts +6 -23
- package/src/config/acp-schema.ts +2 -30
- package/src/config/bundled-skills/acp/SKILL.md +14 -22
- package/src/config/bundled-skills/acp/TOOLS.json +1 -5
- package/src/config/bundled-skills/app-builder/SKILL.md +9 -12
- package/src/config/bundled-skills/app-builder/references/CUSTOM_ROUTES.md +1 -1
- package/src/config/bundled-skills/messaging/TOOLS.json +3 -3
- package/src/config/bundled-skills/messaging/tools/messaging-send.ts +139 -67
- package/src/config/bundled-skills/phone-calls/references/TRANSCRIPTS.md +1 -1
- package/src/config/bundled-skills/screen-annotation/SKILL.md +1 -8
- package/src/config/bundled-skills/screen-annotation/tools/screen-annotation.test.ts +1 -4
- package/src/config/bundled-skills/skill-management/TOOLS.json +2 -2
- package/src/config/default-profile-catalog.ts +1 -1
- package/src/config/env.ts +2 -2
- package/src/config/feature-flag-registry.json +12 -8
- package/src/config/memory-v3-gate.test.ts +0 -31
- package/src/config/memory-v3-gate.ts +16 -20
- package/src/config/platform-rehydration.ts +21 -75
- package/src/config/schema.ts +2 -2
- package/src/config/schemas/__tests__/live-voice.test.ts +158 -8
- package/src/config/schemas/calls.ts +28 -1
- package/src/config/schemas/live-voice.ts +173 -1
- package/src/config/schemas/mcp.ts +1 -1
- package/src/config/schemas/memory-retrospective.ts +0 -10
- package/src/config/schemas/skills.ts +14 -0
- package/src/credential-execution/process-manager.test.ts +19 -18
- package/src/daemon/__tests__/conversation-tool-setup.test.ts +121 -66
- package/src/daemon/__tests__/plugin-mcp-reconcile.test.ts +1 -4
- package/src/daemon/app-source-watcher.ts +218 -0
- package/src/daemon/config-watcher.ts +194 -13
- package/src/daemon/conversation-process.ts +64 -35
- package/src/daemon/conversation-skill-tools.ts +31 -13
- package/src/daemon/conversation-store.ts +1 -1
- package/src/daemon/conversation-surfaces.ts +8 -10
- package/src/daemon/conversation-tool-setup.ts +43 -37
- package/src/daemon/conversation.ts +3 -0
- package/src/daemon/host-bash-proxy.ts +12 -8
- package/src/daemon/host-browser-proxy.ts +1 -15
- package/src/daemon/host-file-proxy.ts +10 -8
- package/src/daemon/host-transfer-proxy.ts +18 -14
- package/src/daemon/lifecycle.ts +5 -0
- package/src/daemon/mcp-reload-service.ts +5 -5
- package/src/daemon/message-types/sync.ts +0 -1
- package/src/daemon/providers-setup.ts +1 -1
- package/src/daemon/shutdown-handlers.ts +9 -1
- package/src/daemon/skill-memory-refresh.ts +0 -64
- package/src/daemon/tool-side-effects.ts +18 -7
- package/src/hooks/types.ts +0 -33
- package/src/inbound/platform-callback-registration.ts +5 -4
- package/src/live-voice/__tests__/live-voice-metrics.test.ts +3 -0
- package/src/live-voice/__tests__/live-voice-progress.test.ts +15 -15
- package/src/live-voice/__tests__/live-voice-vad.test.ts +2 -2
- package/src/{calls → live-voice}/__tests__/progress-narration.test.ts +4 -4
- package/src/{calls → live-voice}/__tests__/progress-phrases.test.ts +1 -1
- package/src/live-voice/__tests__/runtime-websocket-shell.test.ts +69 -13
- package/src/live-voice/live-voice-session.ts +693 -213
- package/src/{calls → live-voice}/progress-narration.ts +2 -2
- package/src/live-voice/protocol.ts +2 -0
- package/src/mcp/__tests__/effective-config.test.ts +2 -2
- package/src/mcp/effective-config.ts +3 -3
- package/src/mcp/mcp-header-store.ts +45 -29
- package/src/mcp/startup.ts +4 -8
- package/src/messaging/provider.ts +3 -10
- package/src/messaging/providers/callback-routing.ts +0 -18
- package/src/messaging/providers/channel-transport.ts +0 -56
- package/src/messaging/providers/discord/transport.ts +0 -17
- package/src/messaging/providers/slack/__tests__/adapter-token-routing.test.ts +17 -6
- package/src/messaging/providers/slack/adapter.ts +44 -7
- package/src/messaging/providers/slack/transport.ts +0 -16
- package/src/messaging/providers/telegram-bot/adapter.ts +48 -1
- package/src/messaging/providers/telegram-bot/client.ts +26 -0
- package/src/messaging/providers/telegram-bot/transport.ts +0 -20
- package/src/messaging/providers/whatsapp/adapter.ts +48 -1
- package/src/messaging/providers/whatsapp/client.ts +29 -0
- package/src/messaging/providers/whatsapp/transport.ts +0 -18
- package/src/monitoring/__tests__/workspace-git-heartbeat.test.ts +0 -8
- package/src/notifications/__tests__/assistant-reply-producer.test.ts +0 -55
- package/src/notifications/__tests__/home-feed-side-effect.test.ts +3 -153
- package/src/notifications/assistant-reply-producer.ts +3 -8
- package/src/notifications/conversation-pairing.ts +16 -36
- package/src/notifications/delivered-post-record.ts +1 -11
- package/src/notifications/home-feed-side-effect.ts +7 -55
- package/src/outbound-proxy/certs.ts +5 -3
- package/src/permissions/checker.test.ts +6 -11
- package/src/persistence/compaction-log-store-clickhouse.ts +3 -3
- package/src/persistence/conversation-crud.ts +63 -71
- package/src/persistence/conversation-lineage.ts +4 -12
- package/src/persistence/conversation-title-service.ts +26 -9
- package/src/persistence/llm-request-log-sink-clickhouse.ts +3 -3
- package/src/persistence/llm-request-log-source-clickhouse.ts +3 -3
- package/src/persistence/message-reads.ts +0 -30
- package/src/persistence/migrations/157-invite-contact-id.ts +6 -18
- package/src/persistence/schema/memory-core.ts +0 -5
- package/src/platform/client.test.ts +0 -2
- package/src/platform/client.ts +10 -2
- package/src/plugin-api/constants.ts +0 -2
- package/src/plugin-api/index.ts +0 -1
- package/src/plugin-api/types.ts +0 -2
- package/src/plugins/defaults/index.ts +0 -2
- package/src/plugins/defaults/memory/__tests__/memory-retrospective-accounting.test.ts +0 -46
- package/src/plugins/defaults/memory/__tests__/memory-retrospective-enqueue.test.ts +5 -9
- package/src/plugins/defaults/memory/__tests__/memory-retrospective-job.test.ts +10 -20
- package/src/plugins/defaults/memory/__tests__/memory-retrospective-state.test.ts +0 -219
- package/src/plugins/defaults/memory/__tests__/memory-retrospective-sweep.test.ts +0 -31
- package/src/plugins/defaults/memory/__tests__/memory-retrospective-trigger-check.test.ts +0 -63
- package/src/plugins/defaults/memory/__tests__/shutdown-hook.test.ts +0 -4
- package/src/plugins/defaults/memory/graph/capability-seed.ts +6 -4
- package/src/plugins/defaults/memory/hooks/init.ts +0 -10
- package/src/plugins/defaults/memory/hooks/shutdown.ts +0 -2
- package/src/plugins/defaults/memory/jobs-worker.ts +0 -13
- package/src/plugins/defaults/memory/memory-retrospective-accounting.ts +60 -34
- package/src/plugins/defaults/memory/memory-retrospective-enqueue.ts +5 -3
- package/src/plugins/defaults/memory/memory-retrospective-job.ts +3 -12
- package/src/plugins/defaults/memory/memory-retrospective-state.ts +71 -312
- package/src/plugins/defaults/memory/memory-retrospective-sweep.ts +1 -2
- package/src/plugins/defaults/memory/memory-retrospective-trigger-check.ts +3 -5
- package/src/plugins/defaults/memory/startup.ts +1 -6
- package/src/plugins/defaults/memory/substrate/__tests__/skill-content.test.ts +9 -7
- package/src/plugins/defaults/memory/substrate/skill-content.ts +2 -2
- package/src/plugins/defaults/memory/v3/__tests__/pool-select.test.ts +0 -89
- package/src/plugins/defaults/memory/worker.ts +0 -6
- package/src/plugins/mcp-servers.ts +75 -15
- package/src/providers/__tests__/connection-model-compat.test.ts +3 -3
- package/src/providers/gemini/client.ts +23 -9
- package/src/providers/model-catalog.ts +0 -34
- package/src/providers/model-intents.ts +5 -10
- package/src/providers/openai/__tests__/chat-completions-provider-reasoning.test.ts +18 -146
- package/src/providers/openai/__tests__/tool-choice-mapping.test.ts +1 -83
- package/src/providers/openai/chat-completions-provider.ts +78 -192
- package/src/providers/openai/codex-models.ts +4 -0
- package/src/runtime/AGENTS.md +0 -2
- package/src/runtime/auth/same-actor.ts +3 -38
- package/src/runtime/http-server.ts +151 -160
- package/src/runtime/routes/__tests__/acp-routes.test.ts +4 -159
- package/src/runtime/routes/__tests__/conversation-query-routes.test.ts +1 -108
- package/src/runtime/routes/__tests__/mcp-add-default-risk.test.ts +12 -16
- package/src/runtime/routes/acp-routes.test.ts +0 -15
- package/src/runtime/routes/acp-routes.ts +9 -72
- package/src/runtime/routes/app-management-routes.ts +0 -73
- package/src/runtime/routes/app-routes.ts +1 -1
- package/src/runtime/routes/conversation-list-routes.ts +3 -14
- package/src/runtime/routes/conversation-query-routes.ts +0 -40
- package/src/runtime/routes/credential-routes.ts +10 -19
- package/src/runtime/routes/diagnostics-routes.ts +3 -55
- package/src/runtime/routes/index.ts +0 -4
- package/src/runtime/routes/log-export-routes.ts +0 -2
- package/src/runtime/routes/mcp-auth-routes.ts +47 -39
- package/src/runtime/routes/migration-routes.ts +21 -8
- package/src/runtime/routes/platform-routes.ts +15 -18
- package/src/runtime/services/__tests__/conversation-serializer.test.ts +0 -28
- package/src/runtime/services/conversation-serializer.ts +3 -16
- package/src/runtime/sync/resource-sync-events.ts +1 -2
- package/src/schedule/worker.ts +1 -1
- package/src/security/ces-rpc-record-backend.ts +0 -7
- package/src/subagent/consult-context.ts +25 -12
- package/src/tools/acp/list-agents.test.ts +1 -3
- package/src/tools/acp/spawn.test.ts +11 -146
- package/src/tools/acp/spawn.ts +3 -21
- package/src/tools/acp/status.ts +3 -40
- package/src/tools/app-control/skill-proxy-bridge.ts +1 -2
- package/src/tools/capability-offer.test.ts +2 -22
- package/src/tools/capability-offer.ts +1 -16
- package/src/tools/computer-use/definitions.ts +2 -4
- package/src/tools/computer-use/skill-proxy-bridge.ts +1 -2
- package/src/tools/credentials/metadata-store.ts +0 -100
- package/src/tools/host-filesystem/edit.test.ts +1 -2
- package/src/tools/host-filesystem/edit.ts +2 -2
- package/src/tools/host-filesystem/read.test.ts +1 -2
- package/src/tools/host-filesystem/read.ts +2 -2
- package/src/tools/host-filesystem/transfer.test.ts +1 -2
- package/src/tools/host-filesystem/transfer.ts +2 -2
- package/src/tools/host-filesystem/write.test.ts +1 -2
- package/src/tools/host-filesystem/write.ts +2 -2
- package/src/tools/host-terminal/host-shell.test.ts +0 -16
- package/src/tools/host-terminal/host-shell.ts +20 -4
- package/src/tools/policy-context.ts +7 -6
- package/src/tools/subagent/spawn.ts +8 -5
- package/src/tools/watch/watch-retro-report.ts +8 -0
- package/src/util/__tests__/language-subtag.test.ts +1 -23
- package/src/util/fs-watcher-error.ts +36 -0
- package/src/util/language-subtag.ts +0 -16
- package/src/util/platform.ts +0 -8
- package/src/workspace/git-service.ts +54 -5
- package/src/workspace/migrations/registry.ts +0 -6
- package/scripts/smoke-desktop-window-theme.ts +0 -186
- package/src/__tests__/git-porcelain.test.ts +0 -47
- package/src/__tests__/helpers/set-workspace-mcp.ts +0 -11
- package/src/__tests__/message-deleted-hook-dispatch.test.ts +0 -119
- package/src/__tests__/resolve-app.test.ts +0 -135
- package/src/__tests__/source-fingerprint.test.ts +0 -184
- package/src/__tests__/workspace-migration-154-repair-retired-codex-gpt-5-4-model-ids.test.ts +0 -336
- package/src/acp/__tests__/helpers/acp-model-option.ts +0 -51
- package/src/acp/model-config.test.ts +0 -166
- package/src/acp/model-config.ts +0 -138
- package/src/api/events/acp-session-model-update.test.ts +0 -88
- package/src/api/events/acp-session-model-update.ts +0 -46
- package/src/apps/resolve-app.ts +0 -81
- package/src/apps/source-fingerprint.ts +0 -266
- package/src/calls/__tests__/barge-in-guard.test.ts +0 -81
- package/src/calls/__tests__/voice-leg-coordinator.test.ts +0 -229
- package/src/calls/__tests__/voice-progress-cadence.test.ts +0 -274
- package/src/calls/barge-in-guard.ts +0 -118
- package/src/calls/voice-leg-coordinator.ts +0 -189
- package/src/calls/voice-progress-cadence.ts +0 -423
- package/src/cli/commands/__tests__/apps.test.ts +0 -245
- package/src/cli/commands/__tests__/roadmap.help.test.ts +0 -19
- package/src/cli/commands/channels/__tests__/send.test.ts +0 -218
- package/src/cli/commands/channels/send.ts +0 -128
- package/src/config/__tests__/platform-identity.test.ts +0 -117
- package/src/config/acp-agent-write.ts +0 -43
- package/src/config/acp-schema.test.ts +0 -81
- package/src/config/platform-identity.ts +0 -144
- package/src/config/schemas/__tests__/voice.test.ts +0 -148
- package/src/config/schemas/voice.ts +0 -150
- package/src/daemon/__tests__/skill-memory-refresh-mtime.test.ts +0 -133
- package/src/daemon/app-change-notify.ts +0 -45
- package/src/desktop/__tests__/fake-desktop.ts +0 -119
- package/src/desktop/desktop-chrome-policy.test.ts +0 -71
- package/src/desktop/desktop-chrome-policy.ts +0 -42
- package/src/desktop/desktop-dependencies.test.ts +0 -102
- package/src/desktop/desktop-dependencies.ts +0 -306
- package/src/desktop/desktop-feature.test.ts +0 -18
- package/src/desktop/desktop-feature.ts +0 -19
- package/src/desktop/desktop-panel-config.test.ts +0 -135
- package/src/desktop/desktop-panel-config.ts +0 -149
- package/src/desktop/desktop-session-manager.test.ts +0 -627
- package/src/desktop/desktop-session-manager.ts +0 -814
- package/src/desktop/desktop-stream-bridge.test.ts +0 -395
- package/src/desktop/desktop-stream-bridge.ts +0 -214
- package/src/desktop/desktop-wallpaper.test.ts +0 -191
- package/src/desktop/desktop-wallpaper.ts +0 -113
- package/src/desktop/desktop-window-theme.ts +0 -170
- package/src/i18n/AGENTS.md +0 -22
- package/src/i18n/__tests__/i18n.test.ts +0 -108
- package/src/i18n/index.ts +0 -16
- package/src/i18n/locales.ts +0 -93
- package/src/i18n/messages.ts +0 -61
- package/src/i18n/title.ts +0 -25
- package/src/mcp/__tests__/workspace-mcp-config.test.ts +0 -135
- package/src/mcp/spec-schema.ts +0 -111
- package/src/mcp/workspace-mcp-config.ts +0 -188
- package/src/messaging/providers/__tests__/proactive-address.test.ts +0 -95
- package/src/persistence/conversation-title-placeholders.ts +0 -23
- package/src/persistence/message-cursor.ts +0 -78
- package/src/persistence/migrations/__tests__/157-invite-contact-id.test.ts +0 -149
- package/src/plugins/defaults/memory/__tests__/memory-retrospective-cursor-backfill.test.ts +0 -118
- package/src/plugins/defaults/memory/__tests__/memory-retrospective-cursor-preserve.test.ts +0 -83
- package/src/plugins/defaults/memory/hooks/message-deleted.ts +0 -21
- package/src/plugins/defaults/memory/memory-retrospective-cursor-backfill.ts +0 -126
- package/src/plugins/defaults/memory/memory-retrospective-cursor-preserve.ts +0 -79
- package/src/plugins/defaults/memory/memory-retrospective-cursor.ts +0 -28
- package/src/plugins/defaults/memory/skill-md-mtime-poll.ts +0 -9
- package/src/providers/gemini-thought-signature.test.ts +0 -63
- package/src/providers/gemini-thought-signature.ts +0 -44
- package/src/providers/openai/__tests__/chat-completions-provider-thought-signature.test.ts +0 -613
- package/src/providers/openai/__tests__/google-thought-signature.test.ts +0 -235
- package/src/providers/openai/google-thought-signature.ts +0 -320
- package/src/runtime/__tests__/channel-send.test.ts +0 -443
- package/src/runtime/__tests__/desktop-stream-upgrade.test.ts +0 -89
- package/src/runtime/__tests__/live-voice-upgrade.test.ts +0 -58
- package/src/runtime/__tests__/runtime-ws-test-utils.ts +0 -72
- package/src/runtime/__tests__/watch-stream-upgrade.test.ts +0 -59
- package/src/runtime/channel-send.ts +0 -316
- package/src/runtime/routes/__tests__/apps-refresh-route.test.ts +0 -205
- package/src/runtime/routes/__tests__/channel-send-routes.test.ts +0 -127
- package/src/runtime/routes/__tests__/dictation-cleanup-guard.test.ts +0 -107
- package/src/runtime/routes/channel-send-routes.ts +0 -85
- package/src/runtime/routes/desktop-setup-routes.test.ts +0 -74
- package/src/runtime/routes/desktop-setup-routes.ts +0 -35
- package/src/security/__tests__/ces-http-record-backend.test.ts +0 -137
- package/src/security/ces-http-record-backend.ts +0 -120
- package/src/skills/__tests__/workspace-skill-md-signature.test.ts +0 -60
- package/src/skills/workspace-skill-md-signature.ts +0 -50
- package/src/tools/acp/status.test.ts +0 -94
- package/src/util/ca-bundle.ts +0 -13
- package/src/workspace/git-porcelain.ts +0 -66
- package/src/workspace/migrations/154-repair-retired-codex-gpt-5-4-model-ids.ts +0 -258
- package/src/workspace/migrations/155-move-front-model-config-to-voice.ts +0 -78
- package/src/workspace/migrations/156-extract-workspace-mcp-json.ts +0 -214
- package/src/workspace/migrations/__tests__/155-move-front-model-config-to-voice.test.ts +0 -102
- package/src/workspace/migrations/__tests__/156-extract-workspace-mcp-json.test.ts +0 -199
- /package/src/{calls → live-voice}/progress-phrases.ts +0 -0
|
@@ -16,7 +16,7 @@
|
|
|
16
16
|
"category": "productivity",
|
|
17
17
|
"homepage": "https://github.com/vellum-ai/admin-copilot",
|
|
18
18
|
"license": "MIT",
|
|
19
|
-
"icon": "
|
|
19
|
+
"icon": "🧑💼"
|
|
20
20
|
},
|
|
21
21
|
{
|
|
22
22
|
"name": "agent-wrapped",
|
|
@@ -30,7 +30,7 @@
|
|
|
30
30
|
"license": "MIT",
|
|
31
31
|
"submittedBy": "marina",
|
|
32
32
|
"homepage": "https://agent-wrapped.com",
|
|
33
|
-
"icon": "
|
|
33
|
+
"icon": "🎁"
|
|
34
34
|
},
|
|
35
35
|
{
|
|
36
36
|
"name": "ai-hero-engineer-kit",
|
|
@@ -39,11 +39,11 @@
|
|
|
39
39
|
"repo": "marinatrajk/ai-hero-engineer-kit",
|
|
40
40
|
"ref": "18d33c62b15a3e2cc22dc070723fe3077749dcec"
|
|
41
41
|
},
|
|
42
|
-
"description": "Five engineering skills adapted from Matt Pocock's '5 Agent Skills I Use Every Day'
|
|
42
|
+
"description": "Five engineering skills adapted from Matt Pocock's '5 Agent Skills I Use Every Day' — plans, PRDs, vertical-slice issues, TDD loop, and codebase deepening in one install.",
|
|
43
43
|
"category": "developer",
|
|
44
44
|
"homepage": "https://github.com/marinatrajk/ai-hero-engineer-kit",
|
|
45
45
|
"license": "MIT",
|
|
46
|
-
"icon": "
|
|
46
|
+
"icon": "🧰"
|
|
47
47
|
},
|
|
48
48
|
{
|
|
49
49
|
"name": "amex-perk-reminder",
|
|
@@ -56,7 +56,7 @@
|
|
|
56
56
|
"category": "lifestyle",
|
|
57
57
|
"homepage": "https://github.com/AnitaKirkovska/amex-perk-reminder",
|
|
58
58
|
"license": "MIT",
|
|
59
|
-
"icon": "
|
|
59
|
+
"icon": "💳"
|
|
60
60
|
},
|
|
61
61
|
{
|
|
62
62
|
"name": "astrology-horoscope",
|
|
@@ -69,20 +69,7 @@
|
|
|
69
69
|
"category": "hobby",
|
|
70
70
|
"homepage": "https://github.com/vellum-ai/astrology-horoscope",
|
|
71
71
|
"license": "MIT",
|
|
72
|
-
"icon": "
|
|
73
|
-
},
|
|
74
|
-
{
|
|
75
|
-
"name": "battleship",
|
|
76
|
-
"source": {
|
|
77
|
-
"source": "github",
|
|
78
|
-
"repo": "vellum-ai/battleship",
|
|
79
|
-
"ref": "32391ea3af71597b7507bb710bd29ab8308a4604"
|
|
80
|
-
},
|
|
81
|
-
"description": "Play Battleship against your assistant. Fire shots, track hits and misses, and sink the fleet before the assistant sinks yours.",
|
|
82
|
-
"category": "hobby",
|
|
83
|
-
"homepage": "https://github.com/vellum-ai/battleship",
|
|
84
|
-
"license": "MIT",
|
|
85
|
-
"icon": "\u2693"
|
|
72
|
+
"icon": "🔮"
|
|
86
73
|
},
|
|
87
74
|
{
|
|
88
75
|
"name": "caveman",
|
|
@@ -95,7 +82,7 @@
|
|
|
95
82
|
"category": "productivity",
|
|
96
83
|
"homepage": "https://github.com/JuliusBrussee/caveman",
|
|
97
84
|
"license": "MIT",
|
|
98
|
-
"icon": "
|
|
85
|
+
"icon": "🦴"
|
|
99
86
|
},
|
|
100
87
|
{
|
|
101
88
|
"name": "coffee-aficionado",
|
|
@@ -120,7 +107,7 @@
|
|
|
120
107
|
"category": "productivity",
|
|
121
108
|
"homepage": "https://github.com/vellum-ai/cofounder",
|
|
122
109
|
"license": "MIT",
|
|
123
|
-
"icon": "
|
|
110
|
+
"icon": "🤝"
|
|
124
111
|
},
|
|
125
112
|
{
|
|
126
113
|
"name": "cognee",
|
|
@@ -133,7 +120,7 @@
|
|
|
133
120
|
"description": "Cognee knowledge graph memory for Vellum Assistant: session-aware storage, auto-routing recall, and persistent learning across sessions. Supports local mode and Cognee Cloud.",
|
|
134
121
|
"category": "memory",
|
|
135
122
|
"homepage": "https://github.com/topoteretes/cognee-integrations/tree/main/integrations/vellum-assistant",
|
|
136
|
-
"icon": "
|
|
123
|
+
"icon": "🕸️"
|
|
137
124
|
},
|
|
138
125
|
{
|
|
139
126
|
"name": "creatorland",
|
|
@@ -147,7 +134,7 @@
|
|
|
147
134
|
"category": "marketing",
|
|
148
135
|
"homepage": "https://github.com/creatorland/creatorland-mcp-skills/tree/main/plugins/creatorland-data",
|
|
149
136
|
"license": "MIT",
|
|
150
|
-
"icon": "
|
|
137
|
+
"icon": "🎨"
|
|
151
138
|
},
|
|
152
139
|
{
|
|
153
140
|
"name": "dynamic-notch",
|
|
@@ -160,7 +147,7 @@
|
|
|
160
147
|
"category": "interface",
|
|
161
148
|
"homepage": "https://github.com/AnitaKirkovska/dynamic-notch",
|
|
162
149
|
"license": "MIT",
|
|
163
|
-
"icon": "
|
|
150
|
+
"icon": "💻"
|
|
164
151
|
},
|
|
165
152
|
{
|
|
166
153
|
"name": "family-briefing",
|
|
@@ -173,7 +160,7 @@
|
|
|
173
160
|
"category": "productivity",
|
|
174
161
|
"homepage": "https://github.com/AnitaKirkovska/family-briefing",
|
|
175
162
|
"license": "MIT",
|
|
176
|
-
"icon": "
|
|
163
|
+
"icon": "👨👩👧👦"
|
|
177
164
|
},
|
|
178
165
|
{
|
|
179
166
|
"name": "fitness-companion",
|
|
@@ -186,7 +173,7 @@
|
|
|
186
173
|
"category": "health",
|
|
187
174
|
"homepage": "https://github.com/vellum-ai/fitness-companion",
|
|
188
175
|
"license": "MIT",
|
|
189
|
-
"icon": "
|
|
176
|
+
"icon": "💪"
|
|
190
177
|
},
|
|
191
178
|
{
|
|
192
179
|
"name": "git-workflow",
|
|
@@ -199,7 +186,7 @@
|
|
|
199
186
|
"category": "developer",
|
|
200
187
|
"homepage": "https://github.com/vellum-ai/git-workflow",
|
|
201
188
|
"license": "MIT",
|
|
202
|
-
"icon": "
|
|
189
|
+
"icon": "🔀"
|
|
203
190
|
},
|
|
204
191
|
{
|
|
205
192
|
"name": "google-drive-search",
|
|
@@ -212,20 +199,7 @@
|
|
|
212
199
|
"category": "productivity",
|
|
213
200
|
"homepage": "https://github.com/ZeebBoyBlue/google-drive-search",
|
|
214
201
|
"license": "Apache-2.0",
|
|
215
|
-
"icon": "
|
|
216
|
-
},
|
|
217
|
-
{
|
|
218
|
-
"name": "imessage",
|
|
219
|
-
"source": {
|
|
220
|
-
"source": "github",
|
|
221
|
-
"repo": "vellum-ai/imessage",
|
|
222
|
-
"ref": "41b8e9ad87b4975bf3fbdc9a8e46deda489d3d51"
|
|
223
|
-
},
|
|
224
|
-
"description": "iMessage and SMS channel for the Vellum assistant, backed by a Photon line.",
|
|
225
|
-
"category": "productivity",
|
|
226
|
-
"homepage": "https://github.com/vellum-ai/imessage",
|
|
227
|
-
"license": "MIT",
|
|
228
|
-
"icon": "\ud83d\udcf2"
|
|
202
|
+
"icon": "🔍"
|
|
229
203
|
},
|
|
230
204
|
{
|
|
231
205
|
"name": "influencer-marketing",
|
|
@@ -238,33 +212,33 @@
|
|
|
238
212
|
"category": "marketing",
|
|
239
213
|
"homepage": "https://github.com/ZeebBoyBlue/influencer",
|
|
240
214
|
"license": "MIT",
|
|
241
|
-
"icon": "
|
|
215
|
+
"icon": "📣"
|
|
242
216
|
},
|
|
243
217
|
{
|
|
244
|
-
"name": "
|
|
218
|
+
"name": "imessage",
|
|
245
219
|
"source": {
|
|
246
220
|
"source": "github",
|
|
247
|
-
"repo": "vellum-ai/
|
|
248
|
-
"ref": "
|
|
221
|
+
"repo": "vellum-ai/imessage",
|
|
222
|
+
"ref": "41b8e9ad87b4975bf3fbdc9a8e46deda489d3d51"
|
|
249
223
|
},
|
|
250
|
-
"description": "
|
|
251
|
-
"category": "
|
|
252
|
-
"homepage": "https://github.com/vellum-ai/
|
|
224
|
+
"description": "iMessage and SMS channel for the Vellum assistant, backed by a Photon line.",
|
|
225
|
+
"category": "productivity",
|
|
226
|
+
"homepage": "https://github.com/vellum-ai/imessage",
|
|
253
227
|
"license": "MIT",
|
|
254
|
-
"icon": "
|
|
228
|
+
"icon": "📲"
|
|
255
229
|
},
|
|
256
230
|
{
|
|
257
|
-
"name": "
|
|
231
|
+
"name": "kitchen-companion",
|
|
258
232
|
"source": {
|
|
259
233
|
"source": "github",
|
|
260
|
-
"repo": "
|
|
261
|
-
"ref": "
|
|
234
|
+
"repo": "vellum-ai/kitchen-companion",
|
|
235
|
+
"ref": "b6ebdda6992dfa1fd2186a600a642f538fb64584"
|
|
262
236
|
},
|
|
263
|
-
"description": "
|
|
264
|
-
"category": "
|
|
265
|
-
"homepage": "https://github.com/
|
|
237
|
+
"description": "Full kitchen companion. Scan your fridge with a photo to stock a pantry inventory and get 3 makeable-now recipes, get alerts before food expires, clip recipes from any URL into a clean format, and generate meal plans with grocery lists from what you actually have.",
|
|
238
|
+
"category": "lifestyle",
|
|
239
|
+
"homepage": "https://github.com/vellum-ai/kitchen-companion",
|
|
266
240
|
"license": "MIT",
|
|
267
|
-
"icon": "
|
|
241
|
+
"icon": "🍳"
|
|
268
242
|
},
|
|
269
243
|
{
|
|
270
244
|
"name": "level-up",
|
|
@@ -277,7 +251,7 @@
|
|
|
277
251
|
"category": "developer",
|
|
278
252
|
"homepage": "https://github.com/vellum-ai/level-up",
|
|
279
253
|
"license": "MIT",
|
|
280
|
-
"icon": "
|
|
254
|
+
"icon": "🆙"
|
|
281
255
|
},
|
|
282
256
|
{
|
|
283
257
|
"name": "marketing-expert",
|
|
@@ -290,7 +264,7 @@
|
|
|
290
264
|
"category": "marketing",
|
|
291
265
|
"homepage": "https://github.com/vellum-ai/marketing-expert",
|
|
292
266
|
"license": "MIT",
|
|
293
|
-
"icon": "
|
|
267
|
+
"icon": "📈"
|
|
294
268
|
},
|
|
295
269
|
{
|
|
296
270
|
"name": "markitdown-vellum",
|
|
@@ -299,11 +273,11 @@
|
|
|
299
273
|
"repo": "simensgreen/markitdown-vellum",
|
|
300
274
|
"ref": "5e5a4ecfd6c60d613778106442003a1ed302fc3c"
|
|
301
275
|
},
|
|
302
|
-
"description": "Convert workspace documents (PDF, DOCX, PPTX, XLSX, images, MSG,
|
|
276
|
+
"description": "Convert workspace documents (PDF, DOCX, PPTX, XLSX, images, MSG, …) to markdown via @cognipeer/to-markdown, with Vellum vision OCR or Tesseract.",
|
|
303
277
|
"category": "productivity",
|
|
304
278
|
"homepage": "https://github.com/simensgreen/markitdown-vellum",
|
|
305
279
|
"license": "MIT",
|
|
306
|
-
"icon": "
|
|
280
|
+
"icon": "📄"
|
|
307
281
|
},
|
|
308
282
|
{
|
|
309
283
|
"name": "model-router",
|
|
@@ -316,7 +290,7 @@
|
|
|
316
290
|
"category": "productivity",
|
|
317
291
|
"homepage": "https://github.com/AnitaKirkovska/model-router",
|
|
318
292
|
"license": "MIT",
|
|
319
|
-
"icon": "
|
|
293
|
+
"icon": "🚦"
|
|
320
294
|
},
|
|
321
295
|
{
|
|
322
296
|
"name": "motion-design",
|
|
@@ -329,7 +303,7 @@
|
|
|
329
303
|
"category": "creative",
|
|
330
304
|
"homepage": "https://github.com/vellum-ai/motion-design",
|
|
331
305
|
"license": "MIT",
|
|
332
|
-
"icon": "
|
|
306
|
+
"icon": "🎬"
|
|
333
307
|
},
|
|
334
308
|
{
|
|
335
309
|
"name": "natural",
|
|
@@ -342,19 +316,7 @@
|
|
|
342
316
|
"category": "finance",
|
|
343
317
|
"homepage": "https://www.natural.com",
|
|
344
318
|
"license": "MIT",
|
|
345
|
-
"icon": "
|
|
346
|
-
},
|
|
347
|
-
{
|
|
348
|
-
"name": "octolens",
|
|
349
|
-
"source": {
|
|
350
|
-
"source": "github",
|
|
351
|
-
"repo": "vellum-ai/octolens",
|
|
352
|
-
"ref": "d9117f5c6b97b3bff75dec1a04bedc32571c6538"
|
|
353
|
-
},
|
|
354
|
-
"description": "Social listening plugin for Octolens. Monitor brand mentions, competitor activity, and industry conversations across 13+ platforms. Query mentions, run analytics, manage keywords and feeds via REST API tools, or connect the Octolens MCP server for natural-language workflows.",
|
|
355
|
-
"category": "growth",
|
|
356
|
-
"homepage": "https://github.com/vellum-ai/octolens",
|
|
357
|
-
"license": "MIT"
|
|
319
|
+
"icon": "💳"
|
|
358
320
|
},
|
|
359
321
|
{
|
|
360
322
|
"name": "openseo",
|
|
@@ -368,7 +330,7 @@
|
|
|
368
330
|
"category": "marketing",
|
|
369
331
|
"homepage": "https://openseo.so",
|
|
370
332
|
"license": "MIT",
|
|
371
|
-
"icon": "
|
|
333
|
+
"icon": "🔎"
|
|
372
334
|
},
|
|
373
335
|
{
|
|
374
336
|
"name": "originkit",
|
|
@@ -381,7 +343,7 @@
|
|
|
381
343
|
"category": "productivity",
|
|
382
344
|
"homepage": "https://github.com/vellum-ai/originkit",
|
|
383
345
|
"license": "MIT",
|
|
384
|
-
"icon": "
|
|
346
|
+
"icon": "🧱"
|
|
385
347
|
},
|
|
386
348
|
{
|
|
387
349
|
"name": "personal-finance",
|
|
@@ -394,7 +356,7 @@
|
|
|
394
356
|
"category": "productivity",
|
|
395
357
|
"homepage": "https://github.com/AnitaKirkovska/personal-finance",
|
|
396
358
|
"license": "MIT",
|
|
397
|
-
"icon": "
|
|
359
|
+
"icon": "💰"
|
|
398
360
|
},
|
|
399
361
|
{
|
|
400
362
|
"name": "plant-doctor",
|
|
@@ -407,7 +369,7 @@
|
|
|
407
369
|
"category": "lifestyle",
|
|
408
370
|
"homepage": "https://github.com/vellum-ai/plant-doctor",
|
|
409
371
|
"license": "MIT",
|
|
410
|
-
"icon": "
|
|
372
|
+
"icon": "🪴"
|
|
411
373
|
},
|
|
412
374
|
{
|
|
413
375
|
"name": "polyglot",
|
|
@@ -420,7 +382,7 @@
|
|
|
420
382
|
"category": "education",
|
|
421
383
|
"homepage": "https://github.com/vellum-ai/polyglot",
|
|
422
384
|
"license": "MIT",
|
|
423
|
-
"icon": "
|
|
385
|
+
"icon": "🗣️"
|
|
424
386
|
},
|
|
425
387
|
{
|
|
426
388
|
"name": "proactive-slacks",
|
|
@@ -433,7 +395,7 @@
|
|
|
433
395
|
"category": "productivity",
|
|
434
396
|
"homepage": "https://github.com/AnitaKirkovska/proactive-slacks",
|
|
435
397
|
"license": "MIT",
|
|
436
|
-
"icon": "
|
|
398
|
+
"icon": "💬"
|
|
437
399
|
},
|
|
438
400
|
{
|
|
439
401
|
"name": "reading-pal",
|
|
@@ -446,20 +408,7 @@
|
|
|
446
408
|
"category": "hobby",
|
|
447
409
|
"homepage": "https://github.com/vellum-ai/reading-pal",
|
|
448
410
|
"license": "MIT",
|
|
449
|
-
"icon": "
|
|
450
|
-
},
|
|
451
|
-
{
|
|
452
|
-
"name": "restaurant-invoice-auditor",
|
|
453
|
-
"description": "Audits restaurant food delivery slips in 14 seconds, flags silent price hikes and pack-size shrinkage, and stages approved bills in QuickBooks.",
|
|
454
|
-
"category": "commerce",
|
|
455
|
-
"icon": "\ud83e\uddfe",
|
|
456
|
-
"license": "MIT",
|
|
457
|
-
"homepage": "https://github.com/ZeebBoyBlue/restaurant-invoice-auditor",
|
|
458
|
-
"source": {
|
|
459
|
-
"source": "github",
|
|
460
|
-
"repo": "ZeebBoyBlue/restaurant-invoice-auditor",
|
|
461
|
-
"ref": "f1905e639941e98172c5032b6d722f668882d75d"
|
|
462
|
-
}
|
|
411
|
+
"icon": "📚"
|
|
463
412
|
},
|
|
464
413
|
{
|
|
465
414
|
"name": "simple-memory",
|
|
@@ -472,7 +421,7 @@
|
|
|
472
421
|
"category": "memory",
|
|
473
422
|
"homepage": "https://github.com/vellum-ai/simple-memory",
|
|
474
423
|
"license": "MIT",
|
|
475
|
-
"icon": "
|
|
424
|
+
"icon": "🧠"
|
|
476
425
|
},
|
|
477
426
|
{
|
|
478
427
|
"name": "smb-inbox-brief",
|
|
@@ -485,7 +434,7 @@
|
|
|
485
434
|
"category": "productivity",
|
|
486
435
|
"homepage": "https://github.com/AnitaKirkovska/smb-inbox-brief",
|
|
487
436
|
"license": "MIT",
|
|
488
|
-
"icon": "
|
|
437
|
+
"icon": "📧"
|
|
489
438
|
},
|
|
490
439
|
{
|
|
491
440
|
"name": "tennis-companion",
|
|
@@ -498,7 +447,7 @@
|
|
|
498
447
|
"category": "health",
|
|
499
448
|
"homepage": "https://github.com/vellum-ai/tennis-companion",
|
|
500
449
|
"license": "MIT",
|
|
501
|
-
"icon": "
|
|
450
|
+
"icon": "🎾"
|
|
502
451
|
},
|
|
503
452
|
{
|
|
504
453
|
"name": "travel-planner",
|
|
@@ -511,7 +460,7 @@
|
|
|
511
460
|
"category": "lifestyle",
|
|
512
461
|
"homepage": "https://github.com/AnitaKirkovska/travel-planner",
|
|
513
462
|
"license": "MIT",
|
|
514
|
-
"icon": "
|
|
463
|
+
"icon": "✈️"
|
|
515
464
|
},
|
|
516
465
|
{
|
|
517
466
|
"name": "unabyss",
|
|
@@ -524,7 +473,7 @@
|
|
|
524
473
|
"category": "memory",
|
|
525
474
|
"homepage": "https://unabyss.com",
|
|
526
475
|
"license": "MIT",
|
|
527
|
-
"icon": "
|
|
476
|
+
"icon": "🌊"
|
|
528
477
|
},
|
|
529
478
|
{
|
|
530
479
|
"name": "vellum-client-qa",
|
|
@@ -537,7 +486,20 @@
|
|
|
537
486
|
"category": "developer",
|
|
538
487
|
"homepage": "https://github.com/vellum-ai/vellum-client-qa",
|
|
539
488
|
"license": "MIT",
|
|
540
|
-
"icon": "
|
|
489
|
+
"icon": "🧪"
|
|
490
|
+
},
|
|
491
|
+
{
|
|
492
|
+
"name": "ledger",
|
|
493
|
+
"source": {
|
|
494
|
+
"source": "github",
|
|
495
|
+
"repo": "simensgreen/ledger",
|
|
496
|
+
"ref": "7fc04fd77b20ad4b27ccd51be22c101274b370f6"
|
|
497
|
+
},
|
|
498
|
+
"description": "Structured storage for Vellum agents: tables via JSON Schema, query/aggregate via JSON, named saved queries.",
|
|
499
|
+
"category": "developer",
|
|
500
|
+
"homepage": "https://github.com/simensgreen/ledger",
|
|
501
|
+
"license": "MIT",
|
|
502
|
+
"icon": "🗄️"
|
|
541
503
|
},
|
|
542
504
|
{
|
|
543
505
|
"name": "virlo",
|
|
@@ -551,7 +513,7 @@
|
|
|
551
513
|
"category": "marketing",
|
|
552
514
|
"homepage": "https://github.com/Virlo-AI/virlo-integrations/tree/main/integrations/vellum",
|
|
553
515
|
"license": "MIT",
|
|
554
|
-
"icon": "
|
|
516
|
+
"icon": "📱"
|
|
555
517
|
},
|
|
556
518
|
{
|
|
557
519
|
"name": "writing-coach",
|
|
@@ -564,7 +526,32 @@
|
|
|
564
526
|
"category": "hobby",
|
|
565
527
|
"homepage": "https://github.com/vellum-ai/writing-coach",
|
|
566
528
|
"license": "MIT",
|
|
567
|
-
"icon": "
|
|
529
|
+
"icon": "✍️"
|
|
530
|
+
},
|
|
531
|
+
{
|
|
532
|
+
"name": "battleship",
|
|
533
|
+
"source": {
|
|
534
|
+
"source": "github",
|
|
535
|
+
"repo": "vellum-ai/battleship",
|
|
536
|
+
"ref": "32391ea3af71597b7507bb710bd29ab8308a4604"
|
|
537
|
+
},
|
|
538
|
+
"description": "Play Battleship against your assistant. Fire shots, track hits and misses, and sink the fleet before the assistant sinks yours.",
|
|
539
|
+
"category": "hobby",
|
|
540
|
+
"homepage": "https://github.com/vellum-ai/battleship",
|
|
541
|
+
"license": "MIT",
|
|
542
|
+
"icon": "⚓"
|
|
543
|
+
},
|
|
544
|
+
{
|
|
545
|
+
"name": "octolens",
|
|
546
|
+
"source": {
|
|
547
|
+
"source": "github",
|
|
548
|
+
"repo": "vellum-ai/octolens",
|
|
549
|
+
"ref": "d9117f5c6b97b3bff75dec1a04bedc32571c6538"
|
|
550
|
+
},
|
|
551
|
+
"description": "Social listening plugin for Octolens. Monitor brand mentions, competitor activity, and industry conversations across 13+ platforms. Query mentions, run analytics, manage keywords and feeds via REST API tools, or connect the Octolens MCP server for natural-language workflows.",
|
|
552
|
+
"category": "growth",
|
|
553
|
+
"homepage": "https://github.com/vellum-ai/octolens",
|
|
554
|
+
"license": "MIT"
|
|
568
555
|
}
|
|
569
556
|
]
|
|
570
557
|
}
|
|
@@ -540,28 +540,6 @@ describe("resolveDefaultProfileForProvider", () => {
|
|
|
540
540
|
expect(entry).toBe(workspace.balanced);
|
|
541
541
|
});
|
|
542
542
|
|
|
543
|
-
// Google limits gemini-2.5-flash-lite to grandfathered accounts (other API
|
|
544
|
-
// keys get HTTP 404 "no longer available to new users"), so a default
|
|
545
|
-
// profile resolving to it lists as available and fails every request on a
|
|
546
|
-
// fresh BYOK key.
|
|
547
|
-
test("gemini BYOK defaults never resolve to a model Google refuses new keys", () => {
|
|
548
|
-
const budget = resolveDefaultProfileForProvider(
|
|
549
|
-
managedStubs(),
|
|
550
|
-
"cost-optimized",
|
|
551
|
-
dp("gemini"),
|
|
552
|
-
);
|
|
553
|
-
expect(budget?.provider).toBe("gemini");
|
|
554
|
-
expect(budget?.model).toBe("gemini-3.1-flash-lite");
|
|
555
|
-
for (const key of DEFAULT_PROFILE_KEYS) {
|
|
556
|
-
const entry = resolveDefaultProfileForProvider(
|
|
557
|
-
managedStubs(),
|
|
558
|
-
key,
|
|
559
|
-
dp("gemini"),
|
|
560
|
-
);
|
|
561
|
-
expect(entry?.model).not.toBe("gemini-2.5-flash-lite");
|
|
562
|
-
}
|
|
563
|
-
});
|
|
564
|
-
|
|
565
543
|
test("a managed-source stub contributes only label/status/topP over the provider-resolved body", () => {
|
|
566
544
|
const workspace: Record<string, ProfileEntry> = {
|
|
567
545
|
balanced: {
|
|
@@ -12,10 +12,9 @@ import { describe, expect, test } from "bun:test";
|
|
|
12
12
|
import { MemoryRetrospectiveConfigSchema } from "../schemas/memory-retrospective.js";
|
|
13
13
|
|
|
14
14
|
describe("memory.retrospective config schema", () => {
|
|
15
|
-
test("an empty block leaves retrospectives
|
|
15
|
+
test("an empty block leaves retrospectives on", () => {
|
|
16
16
|
const parsed = MemoryRetrospectiveConfigSchema.parse({});
|
|
17
17
|
expect(parsed.enabled).toBe(true);
|
|
18
|
-
expect(parsed.skillImprovement).toBe(true);
|
|
19
18
|
expect(parsed).not.toHaveProperty("forkStrategy");
|
|
20
19
|
});
|
|
21
20
|
|
|
@@ -28,19 +27,6 @@ describe("memory.retrospective config schema", () => {
|
|
|
28
27
|
).toBe(false);
|
|
29
28
|
});
|
|
30
29
|
|
|
31
|
-
test("skillImprovement is an independent boolean-only authoring switch", () => {
|
|
32
|
-
const parsed = MemoryRetrospectiveConfigSchema.parse({
|
|
33
|
-
skillImprovement: false,
|
|
34
|
-
});
|
|
35
|
-
expect(parsed.enabled).toBe(true);
|
|
36
|
-
expect(parsed.skillImprovement).toBe(false);
|
|
37
|
-
expect(
|
|
38
|
-
MemoryRetrospectiveConfigSchema.safeParse({
|
|
39
|
-
skillImprovement: "false",
|
|
40
|
-
}).success,
|
|
41
|
-
).toBe(false);
|
|
42
|
-
});
|
|
43
|
-
|
|
44
30
|
test("a leftover forkStrategy key is ignored", () => {
|
|
45
31
|
const parsed = MemoryRetrospectiveConfigSchema.parse({
|
|
46
32
|
forkStrategy: "cloning",
|
|
@@ -39,34 +39,15 @@ describe("rehydratePlatformCredentials", () => {
|
|
|
39
39
|
const originalPlatformUrlEnv = process.env.VELLUM_PLATFORM_URL;
|
|
40
40
|
const originalOrgEnv = process.env.PLATFORM_ORGANIZATION_ID;
|
|
41
41
|
const originalUserEnv = process.env.PLATFORM_USER_ID;
|
|
42
|
-
const originalAssistantApiKeyEnv = process.env.ASSISTANT_API_KEY;
|
|
43
|
-
const originalFetch = globalThis.fetch;
|
|
44
|
-
const fetchCalls: Array<{ url: string; init?: RequestInit }> = [];
|
|
45
|
-
let fetchImpl: (
|
|
46
|
-
input: RequestInfo | URL,
|
|
47
|
-
init?: RequestInit,
|
|
48
|
-
) => Promise<Response> = async () =>
|
|
49
|
-
new Response("not found", { status: 404 });
|
|
50
42
|
|
|
51
43
|
beforeEach(() => {
|
|
52
44
|
mockSecureKeys = {};
|
|
53
45
|
throwForKey = undefined;
|
|
54
|
-
fetchCalls.length = 0;
|
|
55
|
-
fetchImpl = async () => new Response("not found", { status: 404 });
|
|
56
|
-
globalThis.fetch = (async (
|
|
57
|
-
input: RequestInfo | URL,
|
|
58
|
-
init?: RequestInit,
|
|
59
|
-
) => {
|
|
60
|
-
const url = typeof input === "string" ? input : input.toString();
|
|
61
|
-
fetchCalls.push({ url, init });
|
|
62
|
-
return fetchImpl(input, init);
|
|
63
|
-
}) as unknown as typeof fetch;
|
|
64
46
|
// Env vars take precedence over the rehydrated overrides for some fields;
|
|
65
47
|
// clear them so the credential-store values are what we observe.
|
|
66
48
|
delete process.env.VELLUM_PLATFORM_URL;
|
|
67
49
|
delete process.env.PLATFORM_ORGANIZATION_ID;
|
|
68
50
|
delete process.env.PLATFORM_USER_ID;
|
|
69
|
-
delete process.env.ASSISTANT_API_KEY;
|
|
70
51
|
// Reset in-memory overrides between tests.
|
|
71
52
|
setPlatformBaseUrl(undefined);
|
|
72
53
|
setPlatformAssistantId(undefined);
|
|
@@ -75,7 +56,6 @@ describe("rehydratePlatformCredentials", () => {
|
|
|
75
56
|
});
|
|
76
57
|
|
|
77
58
|
afterEach(() => {
|
|
78
|
-
globalThis.fetch = originalFetch;
|
|
79
59
|
if (originalPlatformUrlEnv === undefined) {
|
|
80
60
|
delete process.env.VELLUM_PLATFORM_URL;
|
|
81
61
|
} else {
|
|
@@ -91,11 +71,6 @@ describe("rehydratePlatformCredentials", () => {
|
|
|
91
71
|
} else {
|
|
92
72
|
process.env.PLATFORM_USER_ID = originalUserEnv;
|
|
93
73
|
}
|
|
94
|
-
if (originalAssistantApiKeyEnv === undefined) {
|
|
95
|
-
delete process.env.ASSISTANT_API_KEY;
|
|
96
|
-
} else {
|
|
97
|
-
process.env.ASSISTANT_API_KEY = originalAssistantApiKeyEnv;
|
|
98
|
-
}
|
|
99
74
|
setPlatformBaseUrl(undefined);
|
|
100
75
|
setPlatformAssistantId(undefined);
|
|
101
76
|
setPlatformOrganizationId(undefined);
|
|
@@ -147,72 +122,4 @@ describe("rehydratePlatformCredentials", () => {
|
|
|
147
122
|
|
|
148
123
|
expect(getPlatformAssistantId()).toBe(ASSISTANT_ID);
|
|
149
124
|
});
|
|
150
|
-
|
|
151
|
-
test("trades the assistant API key for ids via platform validate", async () => {
|
|
152
|
-
mockSecureKeys[credentialKey("vellum", "platform_base_url")] = PROD_URL;
|
|
153
|
-
mockSecureKeys[credentialKey("vellum", "assistant_api_key")] =
|
|
154
|
-
"assistant-key";
|
|
155
|
-
fetchImpl = async () =>
|
|
156
|
-
new Response(
|
|
157
|
-
JSON.stringify({
|
|
158
|
-
assistant_id: ASSISTANT_ID,
|
|
159
|
-
organization_id: ORG_ID,
|
|
160
|
-
user_id: USER_ID,
|
|
161
|
-
}),
|
|
162
|
-
{ status: 200 },
|
|
163
|
-
);
|
|
164
|
-
|
|
165
|
-
await rehydratePlatformCredentials();
|
|
166
|
-
|
|
167
|
-
expect(fetchCalls).toHaveLength(1);
|
|
168
|
-
expect(fetchCalls[0]?.url).toBe(
|
|
169
|
-
`${PROD_URL}/v1/internal/assistants/validate/`,
|
|
170
|
-
);
|
|
171
|
-
const headers = new Headers(fetchCalls[0]?.init?.headers);
|
|
172
|
-
expect(headers.get("Authorization")).toBe("Api-Key assistant-key");
|
|
173
|
-
expect(getPlatformAssistantId()).toBe(ASSISTANT_ID);
|
|
174
|
-
expect(getPlatformOrganizationId()).toBe(ORG_ID);
|
|
175
|
-
expect(getPlatformUserId()).toBe(USER_ID);
|
|
176
|
-
});
|
|
177
|
-
|
|
178
|
-
test("validate ids win over vault leftovers", async () => {
|
|
179
|
-
mockSecureKeys[credentialKey("vellum", "platform_base_url")] = PROD_URL;
|
|
180
|
-
mockSecureKeys[credentialKey("vellum", "assistant_api_key")] =
|
|
181
|
-
"assistant-key";
|
|
182
|
-
mockSecureKeys[credentialKey("vellum", "platform_assistant_id")] =
|
|
183
|
-
"asst-from-vault";
|
|
184
|
-
fetchImpl = async () =>
|
|
185
|
-
new Response(
|
|
186
|
-
JSON.stringify({
|
|
187
|
-
assistant_id: ASSISTANT_ID,
|
|
188
|
-
organization_id: ORG_ID,
|
|
189
|
-
user_id: USER_ID,
|
|
190
|
-
}),
|
|
191
|
-
{ status: 200 },
|
|
192
|
-
);
|
|
193
|
-
|
|
194
|
-
await rehydratePlatformCredentials();
|
|
195
|
-
|
|
196
|
-
expect(getPlatformAssistantId()).toBe(ASSISTANT_ID);
|
|
197
|
-
});
|
|
198
|
-
|
|
199
|
-
test("falls back to the credential store when validate is unreachable", async () => {
|
|
200
|
-
mockSecureKeys[credentialKey("vellum", "platform_base_url")] = PROD_URL;
|
|
201
|
-
mockSecureKeys[credentialKey("vellum", "assistant_api_key")] =
|
|
202
|
-
"assistant-key";
|
|
203
|
-
mockSecureKeys[credentialKey("vellum", "platform_assistant_id")] =
|
|
204
|
-
ASSISTANT_ID;
|
|
205
|
-
mockSecureKeys[credentialKey("vellum", "platform_organization_id")] =
|
|
206
|
-
ORG_ID;
|
|
207
|
-
mockSecureKeys[credentialKey("vellum", "platform_user_id")] = USER_ID;
|
|
208
|
-
fetchImpl = async () => {
|
|
209
|
-
throw new Error("network down");
|
|
210
|
-
};
|
|
211
|
-
|
|
212
|
-
await rehydratePlatformCredentials();
|
|
213
|
-
|
|
214
|
-
expect(getPlatformAssistantId()).toBe(ASSISTANT_ID);
|
|
215
|
-
expect(getPlatformOrganizationId()).toBe(ORG_ID);
|
|
216
|
-
expect(getPlatformUserId()).toBe(USER_ID);
|
|
217
|
-
});
|
|
218
125
|
});
|