@vellumai/assistant 0.11.1 → 0.11.2-dev.202608042227.b54139c
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/Dockerfile +1 -3
- package/README.md +1 -1
- package/eslint.config.mjs +28 -8
- package/node_modules/@vellumai/ces-client/node_modules/@vellumai/service-contracts/package.json +1 -0
- package/node_modules/@vellumai/ces-client/node_modules/@vellumai/service-contracts/src/__tests__/stripe-currency.test.ts +37 -0
- package/node_modules/@vellumai/ces-client/node_modules/@vellumai/service-contracts/src/stripe-currency.ts +55 -0
- package/node_modules/@vellumai/environments/src/__tests__/install-layout.test.ts +98 -0
- package/node_modules/@vellumai/environments/src/__tests__/package-boundary.test.ts +5 -5
- package/node_modules/@vellumai/environments/src/index.ts +17 -6
- package/node_modules/@vellumai/environments/src/install-layout.ts +49 -0
- package/node_modules/@vellumai/gateway-client/node_modules/@vellumai/service-contracts/package.json +1 -0
- package/node_modules/@vellumai/gateway-client/node_modules/@vellumai/service-contracts/src/__tests__/stripe-currency.test.ts +37 -0
- package/node_modules/@vellumai/gateway-client/node_modules/@vellumai/service-contracts/src/stripe-currency.ts +55 -0
- package/node_modules/@vellumai/service-contracts/package.json +1 -0
- package/node_modules/@vellumai/service-contracts/src/__tests__/stripe-currency.test.ts +37 -0
- package/node_modules/@vellumai/service-contracts/src/stripe-currency.ts +55 -0
- package/node_modules/@vellumai/slack-text/src/index.test.ts +48 -0
- package/node_modules/@vellumai/slack-text/src/index.ts +41 -8
- package/openapi.yaml +442 -8
- package/package.json +1 -1
- package/src/__tests__/agent-image-optimize.test.ts +4 -4
- package/src/__tests__/agent-loop-resume-interrupted.test.ts +223 -0
- package/src/__tests__/agent-loop-subagent-billing-headers.test.ts +166 -0
- package/src/__tests__/answered-question-persistence.test.ts +240 -0
- package/src/__tests__/assistant-feature-flags-integration.test.ts +10 -0
- package/src/__tests__/attachments-store-heic-normalize.test.ts +16 -12
- package/src/__tests__/attachments-store.test.ts +130 -68
- package/src/__tests__/attachments.test.ts +36 -36
- package/src/__tests__/byok-default-profile-ensure.test.ts +43 -0
- package/src/__tests__/cli-logger-boundary-guard.test.ts +87 -0
- package/src/__tests__/compaction-events.test.ts +139 -2
- package/src/__tests__/compactor-image-manifest-trust.test.ts +1 -1
- package/src/__tests__/compactor-truncation-pairing.test.ts +368 -0
- package/src/__tests__/config-loader-backfill.test.ts +35 -3
- package/src/__tests__/config-schema.test.ts +1 -0
- package/src/__tests__/consult-deadline.test.ts +65 -0
- package/src/__tests__/conversation-agent-loop-fatal-cleanup.test.ts +30 -0
- package/src/__tests__/conversation-agent-loop.test.ts +255 -8
- package/src/__tests__/conversation-disk-view-integration.test.ts +5 -1
- package/src/__tests__/conversation-disk-view.test.ts +4 -4
- package/src/__tests__/conversation-error.test.ts +211 -4
- package/src/__tests__/conversation-fork-crud.test.ts +5 -1
- package/src/__tests__/conversation-fork-retrospective.test.ts +5 -1
- package/src/__tests__/conversation-options-turn-scoped-transport.test.ts +64 -0
- package/src/__tests__/conversation-queue.test.ts +255 -1
- package/src/__tests__/conversation-retry-route.test.ts +46 -7
- package/src/__tests__/conversation-slash.test.ts +4 -2
- package/src/__tests__/conversation-store.test.ts +26 -10
- package/src/__tests__/conversation-summarize-route.test.ts +7 -1
- package/src/__tests__/conversation-summarize-up-to.test.ts +71 -5
- package/src/__tests__/conversation-surfaces-action-delivery.test.ts +10 -0
- package/src/__tests__/conversation-surfaces-history-restored-completion.test.ts +969 -0
- package/src/__tests__/conversation-surfaces-persisted-info.test.ts +312 -0
- package/src/__tests__/cu-unified-flow.test.ts +75 -11
- package/src/__tests__/disk-pressure-guard.test.ts +55 -55
- package/src/__tests__/disk-pressure-routes.test.ts +10 -10
- package/src/__tests__/disk-pressure-tools.test.ts +2 -2
- package/src/__tests__/disk-usage.test.ts +35 -20
- package/src/__tests__/document-create-dedupe.test.ts +2 -1
- package/src/__tests__/document-find-replace.test.ts +2 -1
- package/src/__tests__/document-tool-security.test.ts +2 -1
- package/src/__tests__/document-update-default-surface.test.ts +2 -1
- package/src/__tests__/document-workspace-file.test.ts +467 -0
- package/src/__tests__/dynamic-skill-background-guard.test.ts +2 -2
- package/src/__tests__/emit-signal-routing-intent.test.ts +290 -49
- package/src/__tests__/file-list-tool.test.ts +12 -10
- package/src/__tests__/file-ops-service.test.ts +76 -40
- package/src/__tests__/file-url-path-guard.test.ts +83 -0
- package/src/__tests__/filesystem-tools.test.ts +82 -66
- package/src/__tests__/guardian-card-withdrawal.test.ts +91 -3
- package/src/__tests__/history-repair.test.ts +39 -0
- package/src/__tests__/http-user-message-parity.test.ts +66 -0
- package/src/__tests__/identity-routes.test.ts +13 -13
- package/src/__tests__/image-conversion.test.ts +29 -26
- package/src/__tests__/image-source-path-reinject.test.ts +2 -2
- package/src/__tests__/list-messages-attachments.test.ts +139 -28
- package/src/__tests__/list-messages-background-tool-completion.test.ts +4 -4
- package/src/__tests__/list-messages-client-message-id.test.ts +2 -2
- package/src/__tests__/list-messages-hidden-metadata.test.ts +16 -16
- package/src/__tests__/list-messages-page-latest.test.ts +61 -61
- package/src/__tests__/list-messages-provider-error.test.ts +143 -0
- package/src/__tests__/list-messages-queued.test.ts +6 -6
- package/src/__tests__/list-messages-system-card.test.ts +100 -0
- package/src/__tests__/list-messages-tool-merge.test.ts +9 -9
- package/src/__tests__/llm-resolver.test.ts +19 -9
- package/src/__tests__/llm-usage-store.test.ts +55 -0
- package/src/__tests__/managed-profile-guard.test.ts +23 -0
- package/src/__tests__/migration-export-http.test.ts +1 -1
- package/src/__tests__/migration-import-commit-http.test.ts +1 -1
- package/src/__tests__/migration-import-preflight-http.test.ts +1 -1
- package/src/__tests__/migration-validate-http.test.ts +1 -1
- package/src/__tests__/notification-platform-adapter.test.ts +130 -2
- package/src/__tests__/notification-telegram-adapter.test.ts +6 -0
- package/src/__tests__/notification-vellum-adapter.test.ts +45 -0
- package/src/__tests__/persist-media-references.test.ts +2 -2
- package/src/__tests__/persist-unsendable-image-downscale.test.ts +5 -5
- package/src/__tests__/persist-unsendable-image.test.ts +23 -23
- package/src/__tests__/plugin-api-model-profiles.test.ts +10 -1
- package/src/__tests__/plugin-import-boundary-guard.test.ts +3 -0
- package/src/__tests__/profiler-routes.test.ts +13 -13
- package/src/__tests__/provider-error-scenarios.test.ts +140 -0
- package/src/__tests__/provider-send-message-override-profile.test.ts +95 -0
- package/src/__tests__/run-conversation-turn-persistence.test.ts +66 -3
- package/src/__tests__/runtime-attachment-metadata.test.ts +15 -7
- package/src/__tests__/scripted-turn-metadata-persistence.test.ts +209 -0
- package/src/__tests__/server-history-render.test.ts +97 -7
- package/src/__tests__/size-guard.test.ts +8 -8
- package/src/__tests__/skill-docs-sync-guard.test.ts +3 -2
- package/src/__tests__/skill-tool-factory.test.ts +247 -0
- package/src/__tests__/skills-install-staging.test.ts +15 -6
- package/src/__tests__/skills.test.ts +27 -0
- package/src/__tests__/slack-channels-routes.test.ts +0 -2
- package/src/__tests__/slack-edit-ordering-characterization.test.ts +103 -0
- package/src/__tests__/slack-mention-binding-invariance.test.ts +103 -0
- package/src/__tests__/slack-mention-provider-leak-audit.test.ts +135 -0
- package/src/__tests__/slack-share-routes.test.ts +0 -3
- package/src/__tests__/slack-users-routes.test.ts +0 -2
- package/src/__tests__/subagent-allowlist-validation.test.ts +26 -4
- package/src/__tests__/subagent-disposal.test.ts +10 -0
- package/src/__tests__/subagent-fork-notifications.test.ts +10 -0
- package/src/__tests__/subagent-fork-prompt-role.test.ts +85 -11
- package/src/__tests__/subagent-fork-spawn.test.ts +15 -7
- package/src/__tests__/subagent-manager-notify.test.ts +148 -0
- package/src/__tests__/subagent-notify-parent.test.ts +1 -1
- package/src/__tests__/subagent-persistence.test.ts +141 -0
- package/src/__tests__/subagent-role-registry.test.ts +172 -63
- package/src/__tests__/subagent-role-resolution.test.ts +88 -0
- package/src/__tests__/subagent-spawn-and-await.test.ts +48 -0
- package/src/__tests__/subagent-spawn-tool-fork.test.ts +111 -10
- package/src/__tests__/subagent-terminal-message.test.ts +88 -1
- package/src/__tests__/subagent-tool-gate-mode.test.ts +215 -0
- package/src/__tests__/subagent-tools.test.ts +1945 -97
- package/src/__tests__/surface-completion-compaction-boundary.test.ts +124 -0
- package/src/__tests__/surface-completion-in-flight-snapshot.test.ts +298 -0
- package/src/__tests__/tool-preview-lifecycle.test.ts +58 -0
- package/src/__tests__/tool-result-spool.test.ts +5 -4
- package/src/__tests__/tools-audio-read.test.ts +10 -10
- package/src/__tests__/tools-get-route.test.ts +85 -12
- package/src/__tests__/tools-list-cli.test.ts +171 -0
- package/src/__tests__/turn-boundary-resolution.test.ts +53 -0
- package/src/__tests__/turn-events-store.test.ts +26 -0
- package/src/__tests__/ui-visual-surface.test.ts +695 -0
- package/src/__tests__/unified-turn-context-visible-app.test.ts +99 -0
- package/src/__tests__/visible-app-context.test.ts +189 -0
- package/src/__tests__/workspace-git-service.test.ts +173 -33
- package/src/__tests__/workspace-migration-137-repair-retired-fireworks-minimax-model-id.test.ts +157 -0
- package/src/__tests__/workspace-migration-138-backfill-home-feed-titles.test.ts +373 -0
- package/src/__tests__/workspace-migration-139-clear-renamed-cost-profile-label.test.ts +137 -0
- package/src/agent/attachments.ts +26 -24
- package/src/agent/history-repair/history-repair.ts +8 -0
- package/src/agent/image-optimize.ts +6 -6
- package/src/agent/loop.ts +57 -16
- package/src/agent/message-types.ts +3 -3
- package/src/api/events/context-window-usage.ts +31 -0
- package/src/api/events/notification-intent.ts +8 -0
- package/src/api/events/question-answered.ts +53 -0
- package/src/api/events/tool-result.ts +7 -0
- package/src/api/events/ui-surface-pending.ts +35 -0
- package/src/api/index.ts +20 -0
- package/src/api/responses/conversation-message.ts +36 -4
- package/src/api/surfaces.ts +90 -1
- package/src/approvals/guardian-card-withdrawal.ts +66 -31
- package/src/approvals/guardian-decision-primitive.ts +4 -0
- package/src/calls/__tests__/call-setup-router.test.ts +156 -26
- package/src/calls/__tests__/voice-session-bridge.test.ts +201 -12
- package/src/calls/call-setup-router.ts +80 -36
- package/src/calls/voice-session-bridge.ts +173 -26
- package/src/cli/commands/__tests__/cache.test.ts +7 -4
- package/src/cli/commands/inference.help.ts +3 -3
- package/src/cli/commands/mcp.help.ts +4 -2
- package/src/cli/commands/notifications.help.ts +3 -2
- package/src/cli/commands/platform/__tests__/callback-routes-list.test.ts +42 -128
- package/src/cli/commands/platform/__tests__/credits.test.ts +9 -78
- package/src/cli/commands/platform/__tests__/helpers.ts +90 -0
- package/src/cli/commands/platform/__tests__/invoices.test.ts +238 -0
- package/src/cli/commands/platform/__tests__/plans.test.ts +9 -88
- package/src/cli/commands/platform/__tests__/status.test.ts +12 -87
- package/src/cli/commands/platform/__tests__/subscription.test.ts +9 -86
- package/src/cli/commands/platform/index.help.ts +92 -0
- package/src/cli/commands/platform/index.ts +7 -0
- package/src/cli/commands/platform/invoices.ts +132 -0
- package/src/cli/commands/tools.help.ts +4 -2
- package/src/cli/commands/tools.ts +38 -0
- package/src/cli/commands/usage.help.ts +1 -1
- package/src/cli/lib/list-installed-plugins.ts +2 -1
- package/src/config/__tests__/default-profile-catalog.test.ts +7 -10
- package/src/config/__tests__/deployment-context-defaults.test.ts +27 -5
- package/src/config/__tests__/profile-tool-support.test.ts +131 -0
- package/src/config/assistant-feature-flags.ts +7 -2
- package/src/config/bundled-skills/AGENTS.md +1 -1
- package/src/config/bundled-skills/app-builder/SKILL.md +3 -2
- package/src/config/bundled-skills/media-processing/SKILL.md +1 -1
- package/src/config/bundled-skills/media-processing/TOOLS.json +1 -1
- package/src/config/bundled-skills/media-processing/__tests__/media-analysis-default-model.test.ts +177 -0
- package/src/config/bundled-skills/media-processing/services/gemini-map.ts +4 -3
- package/src/config/bundled-skills/media-processing/services/gemini-video.ts +2 -1
- package/src/config/bundled-skills/media-processing/services/media-analysis-model.ts +12 -0
- package/src/config/bundled-skills/subagent/SKILL.md +55 -22
- package/src/config/bundled-skills/subagent/TOOLS.json +15 -14
- package/src/config/bundled-skills/visualize/SKILL.md +163 -0
- package/src/config/call-site-defaults.ts +3 -2
- package/src/config/default-profile-catalog.ts +75 -70
- package/src/config/default-profile-names.ts +13 -28
- package/src/config/env-registry.ts +1 -0
- package/src/config/feature-flag-registry.json +32 -8
- package/src/config/llm-resolver.ts +25 -8
- package/src/config/loader.ts +18 -11
- package/src/config/profile-tool-support.ts +110 -0
- package/src/config/schemas/llm.ts +1 -9
- package/src/config/schemas/memory-retrospective.ts +9 -0
- package/src/config/schemas/monitoring.ts +28 -2
- package/src/config/schemas/workspace-git.ts +15 -0
- package/src/config/seed-inference-profiles.ts +19 -5
- package/src/context/compactor.ts +45 -8
- package/src/context/post-turn-tool-result-truncation.ts +2 -2
- package/src/conversations/__tests__/message-consolidation.test.ts +54 -0
- package/src/conversations/message-consolidation.ts +17 -15
- package/src/daemon/__tests__/abort-null-controller.test.ts +141 -5
- package/src/daemon/__tests__/install-assistant-command.test.ts +234 -0
- package/src/daemon/__tests__/turn-tail-assistant-reply-notify.test.ts +182 -0
- package/src/daemon/__tests__/turn-tail-deleted-conversation.test.ts +181 -0
- package/src/daemon/conversation-agent-loop-handlers.ts +204 -64
- package/src/daemon/conversation-agent-loop.ts +115 -23
- package/src/daemon/conversation-attachments.ts +1 -1
- package/src/daemon/conversation-error.ts +169 -48
- package/src/daemon/conversation-lifecycle.ts +119 -17
- package/src/daemon/conversation-messaging.ts +118 -30
- package/src/daemon/conversation-process.ts +91 -64
- package/src/daemon/conversation-runtime-assembly.ts +57 -0
- package/src/daemon/conversation-store.ts +36 -1
- package/src/daemon/conversation-surface-state.ts +9 -0
- package/src/daemon/conversation-surfaces.ts +476 -108
- package/src/daemon/conversation-tool-setup.ts +54 -2
- package/src/daemon/conversation-turn-finalize.ts +76 -18
- package/src/daemon/conversation.ts +151 -29
- package/src/daemon/disk-pressure-guard-lifecycle.ts +2 -2
- package/src/daemon/disk-pressure-guard.ts +3 -3
- package/src/daemon/handlers/shared.ts +12 -0
- package/src/daemon/handlers/skills.ts +1 -1
- package/src/daemon/install-assistant-command.ts +322 -0
- package/src/daemon/lifecycle.ts +12 -3
- package/src/daemon/message-types/conversations.ts +8 -0
- package/src/daemon/message-types/surfaces.ts +3 -0
- package/src/daemon/persist-media-references.ts +23 -14
- package/src/daemon/process-message.ts +6 -6
- package/src/daemon/tool-setup-types.ts +31 -2
- package/src/documents/document-store.ts +247 -10
- package/src/home/__tests__/feed-types.test.ts +43 -8
- package/src/home/__tests__/feed-writer.test.ts +59 -0
- package/src/home/feed-types.ts +34 -7
- package/src/home/feed-writer.ts +15 -6
- package/src/live-voice/__tests__/activity-label.test.ts +95 -0
- package/src/live-voice/__tests__/live-activity-reporter.test.ts +86 -5
- package/src/live-voice/__tests__/live-voice-agent-turn.test.ts +310 -25
- package/src/live-voice/__tests__/live-voice-archive.test.ts +16 -16
- package/src/live-voice/__tests__/live-voice-events.test.ts +4 -4
- package/src/live-voice/__tests__/live-voice-integration.test.ts +7 -5
- package/src/live-voice/__tests__/live-voice-triage-escalate.test.ts +8 -4
- package/src/live-voice/__tests__/live-voice-vad.test.ts +44 -16
- package/src/live-voice/activity-label.ts +169 -0
- package/src/live-voice/live-activity-reporter.ts +35 -6
- package/src/live-voice/live-voice-archive.ts +13 -13
- package/src/live-voice/live-voice-session.ts +288 -41
- package/src/live-voice/protocol.ts +35 -0
- package/src/messaging/providers/slack/__tests__/adapter-mention-rendering.test.ts +84 -2
- package/src/messaging/providers/slack/adapter.ts +86 -19
- package/src/messaging/providers/slack/api.test.ts +85 -1
- package/src/messaging/providers/slack/api.ts +121 -288
- package/src/messaging/providers/slack/client.ts +20 -251
- package/src/messaging/providers/slack/mention-source.test.ts +285 -0
- package/src/messaging/providers/slack/mention-source.ts +287 -0
- package/src/messaging/providers/slack/send.test.ts +4 -9
- package/src/messaging/providers/slack/send.ts +1 -1
- package/src/messaging/providers/slack/types.ts +5 -0
- package/src/messaging/providers/slack/web-api-transport.test.ts +181 -0
- package/src/messaging/providers/slack/web-api-transport.ts +367 -0
- package/src/messaging/providers/slack/withdraw.ts +6 -14
- package/src/messaging/providers/telegram-bot/send.test.ts +31 -1
- package/src/messaging/providers/telegram-bot/send.ts +23 -2
- package/src/messaging/providers/telegram-bot/withdraw.test.ts +152 -0
- package/src/messaging/providers/telegram-bot/withdraw.ts +166 -0
- package/src/monitoring/__tests__/db-integrity-sample.test.ts +22 -5
- package/src/monitoring/__tests__/file-descriptors.test.ts +144 -0
- package/src/monitoring/db-integrity-sample.ts +6 -1
- package/src/monitoring/file-descriptors.ts +262 -0
- package/src/monitoring/process-memory.ts +4 -11
- package/src/monitoring/resource-sampler.ts +26 -5
- package/src/monitoring/worker.ts +12 -0
- package/src/notifications/__tests__/assistant-reply-producer.test.ts +740 -0
- package/src/notifications/__tests__/broadcaster.test.ts +347 -7
- package/src/notifications/__tests__/copy-composer.test.ts +53 -3
- package/src/notifications/__tests__/decision-engine.test.ts +349 -29
- package/src/notifications/__tests__/deterministic-checks.test.ts +21 -0
- package/src/notifications/__tests__/edit-notification.test.ts +330 -0
- package/src/notifications/__tests__/guardian-delivery-recorder.test.ts +71 -0
- package/src/notifications/__tests__/home-feed-side-effect.test.ts +170 -12
- package/src/notifications/adapters/macos.ts +3 -0
- package/src/notifications/adapters/platform.ts +90 -14
- package/src/notifications/adapters/telegram.ts +6 -4
- package/src/notifications/assistant-reply-producer.ts +219 -0
- package/src/notifications/broadcaster.ts +523 -317
- package/src/notifications/copy-composer.ts +27 -6
- package/src/notifications/decision-engine.ts +154 -77
- package/src/notifications/deterministic-checks.ts +6 -7
- package/src/notifications/edit-notification.ts +8 -4
- package/src/notifications/emit-signal.ts +49 -16
- package/src/notifications/guardian-delivery-recorder.ts +8 -2
- package/src/notifications/home-feed-side-effect.ts +43 -6
- package/src/notifications/notification-utils.ts +39 -4
- package/src/notifications/signal.ts +10 -0
- package/src/notifications/types.ts +17 -0
- package/src/permissions/question-prompter.test.ts +4 -0
- package/src/permissions/question-prompter.ts +21 -4
- package/src/persistence/attachments-store.ts +15 -15
- package/src/persistence/bookmark-crud.ts +18 -9
- package/src/persistence/conversation-attention-store.ts +26 -0
- package/src/persistence/conversation-bootstrap.ts +17 -0
- package/src/persistence/conversation-crud.ts +89 -32
- package/src/persistence/conversation-queries.ts +30 -15
- package/src/persistence/conversation-title-service.ts +5 -170
- package/src/persistence/conversation-types.ts +192 -1
- package/src/persistence/db-init.ts +14 -1
- package/src/persistence/db-maintenance.ts +5 -4
- package/src/persistence/embeddings/__tests__/plugin-index-qdrant-init.test.ts +219 -0
- package/src/persistence/embeddings/__tests__/plugin-index.test.ts +22 -0
- package/src/persistence/embeddings/__tests__/worker-script-version.test.ts +76 -0
- package/src/persistence/embeddings/embedding-local.ts +2 -1
- package/src/persistence/embeddings/embedding-runtime-manager.ts +29 -5
- package/src/persistence/embeddings/plugin-index.ts +84 -12
- package/src/persistence/llm-usage-store.ts +22 -0
- package/src/persistence/migrations/360-add-document-workspace-path.test.ts +110 -0
- package/src/persistence/migrations/360-add-document-workspace-path.ts +39 -0
- package/src/persistence/migrations/361-normalize-managed-connection-rows.test.ts +168 -0
- package/src/persistence/migrations/361-normalize-managed-connection-rows.ts +76 -0
- package/src/persistence/migrations/362-add-conversation-subagent-kind.test.ts +187 -0
- package/src/persistence/migrations/362-add-conversation-subagent-kind.ts +93 -0
- package/src/persistence/planner-statistics.ts +14 -0
- package/src/persistence/schema/conversations.ts +22 -0
- package/src/persistence/schema/documents.ts +26 -11
- package/src/persistence/steps.ts +19 -0
- package/src/persistence/subagent-store.ts +148 -6
- package/src/platform/client.test.ts +172 -2
- package/src/platform/client.ts +178 -55
- package/src/plugin-api/conversation-turn.ts +13 -0
- package/src/plugin-api/model-profiles.test.ts +6 -2
- package/src/plugins/defaults/exploration-drift/hooks/post-tool-use.ts +5 -5
- package/src/plugins/defaults/exploration-drift/package.json +1 -1
- package/src/plugins/defaults/image-recovery/hooks/post-model-call.ts +4 -2
- package/src/plugins/defaults/image-recovery/recover.ts +67 -57
- package/src/plugins/defaults/index.ts +1 -1
- package/src/plugins/defaults/memory/__tests__/bookmark-crud.test.ts +34 -0
- package/src/plugins/defaults/memory/__tests__/conversation-queries.test.ts +22 -0
- package/src/plugins/defaults/memory/__tests__/jobs-store-enqueue-gate.test.ts +11 -0
- package/src/plugins/defaults/memory/__tests__/memory-retrospective-accounting.test.ts +199 -0
- package/src/plugins/defaults/memory/__tests__/memory-retrospective-enqueue.test.ts +98 -1
- package/src/plugins/defaults/memory/__tests__/memory-retrospective-job.test.ts +105 -1
- package/src/plugins/defaults/memory/__tests__/memory-retrospective-sweep.test.ts +24 -2
- package/src/plugins/defaults/memory/__tests__/memory-retrospective-wake-chain.test.ts +524 -0
- package/src/plugins/defaults/memory/__tests__/memory-tier-boundary-guard.test.ts +1 -1
- package/src/plugins/defaults/memory/graph/__tests__/conversation-graph-memory-v2-routing.test.ts +9 -4
- package/src/plugins/defaults/memory/host-utils.ts +5 -0
- package/src/plugins/defaults/memory/memory-retrospective-accounting.ts +105 -1
- package/src/plugins/defaults/memory/memory-retrospective-enqueue.ts +64 -5
- package/src/plugins/defaults/memory/memory-retrospective-job.ts +36 -1
- package/src/plugins/defaults/memory/memory-retrospective-sweep.ts +12 -3
- package/src/plugins/defaults/memory/src/__tests__/memory-v2-simulate-route.test.ts +1 -0
- package/src/plugins/defaults/memory/substrate/__tests__/skill-store.test.ts +195 -1
- package/src/plugins/defaults/memory/substrate/consolidation-job.ts +1 -1
- package/src/plugins/defaults/memory/substrate/skill-store.ts +167 -29
- package/src/plugins/defaults/memory/v1/graph/injection.ts +1 -1
- package/src/plugins/defaults/memory/v2/__tests__/injection.test.ts +131 -0
- package/src/plugins/defaults/memory/v2/__tests__/router.test.ts +1 -0
- package/src/plugins/defaults/memory/v2/activation-log-store.ts +4 -0
- package/src/plugins/defaults/memory/v2/injection.ts +48 -3
- package/src/plugins/defaults/memory/v2/rerank-local.ts +6 -2
- package/src/plugins/defaults/memory/v3/__tests__/pool-select.test.ts +1 -1
- package/src/plugins/defaults/platform-hosted/routes/reengage.ts +1 -1
- package/src/plugins/defaults/turn-context/injectors.ts +1 -0
- package/src/plugins/defaults/turn-context/unified-turn-context.ts +26 -0
- package/src/plugins/types.ts +17 -0
- package/src/prompts/templates/system-sections.ts +2 -2
- package/src/providers/__tests__/dispatch-connection-routing.test.ts +43 -2
- package/src/providers/__tests__/retry-callsite.test.ts +67 -0
- package/src/providers/__tests__/vellum-connection-routing.test.ts +5 -10
- package/src/providers/__tests__/vellum-mismatch-routing.test.ts +8 -0
- package/src/providers/anthropic/client.ts +6 -4
- package/src/providers/call-site-routing.ts +77 -14
- package/src/providers/connection-resolution.ts +42 -2
- package/src/providers/gemini/client.ts +5 -5
- package/src/providers/inference/__tests__/adapter-factory-openai-compatible.test.ts +127 -1
- package/src/providers/inference/adapter-factory.ts +71 -12
- package/src/providers/media-resolve.ts +21 -11
- package/src/providers/model-catalog.ts +0 -11
- package/src/providers/model-intents.ts +11 -0
- package/src/providers/openai/__tests__/orphan-tool-result-guard.test.ts +478 -0
- package/src/providers/openai/chat-completions-provider.ts +50 -34
- package/src/providers/openai/orphaned-tool-result.ts +79 -0
- package/src/providers/openai/responses-provider.ts +53 -27
- package/src/providers/registry.ts +8 -0
- package/src/providers/retry.ts +110 -17
- package/src/providers/types.ts +8 -1
- package/src/providers/vellum-model-routing.ts +6 -7
- package/src/runtime/AGENTS.md +2 -0
- package/src/runtime/__tests__/agent-wake.test.ts +181 -0
- package/src/runtime/agent-wake.ts +132 -9
- package/src/runtime/channel-approval-types.ts +25 -0
- package/src/runtime/routes/__tests__/connection-routes-vs-cli-parity.test.ts +2 -2
- package/src/runtime/routes/__tests__/conversation-query-routes.test.ts +11 -0
- package/src/runtime/routes/__tests__/inference-provider-connection-routes.test.ts +121 -9
- package/src/runtime/routes/__tests__/llm-call-sites-routes.test.ts +28 -1
- package/src/runtime/routes/__tests__/platform-invoice-routes.test.ts +392 -0
- package/src/runtime/routes/__tests__/question-routes.test.ts +64 -0
- package/src/runtime/routes/__tests__/slack-channel-routes.test.ts +7 -0
- package/src/runtime/routes/__tests__/workspace-commit-routes.test.ts +63 -0
- package/src/runtime/routes/archive-utils.ts +16 -12
- package/src/runtime/routes/attachment-routes.ts +13 -6
- package/src/runtime/routes/consolidation-routes.ts +1 -1
- package/src/runtime/routes/conversation-management-routes.ts +18 -6
- package/src/runtime/routes/conversation-query-routes.ts +14 -23
- package/src/runtime/routes/conversation-routes.ts +297 -181
- package/src/runtime/routes/credential-routes.ts +1 -5
- package/src/runtime/routes/documents-routes.ts +207 -12
- package/src/runtime/routes/identity-routes.ts +9 -99
- package/src/runtime/routes/inbound-message-handler.ts +5 -5
- package/src/runtime/routes/inbound-stages/admission-policy.test.ts +31 -1
- package/src/runtime/routes/inbound-stages/admission-policy.ts +18 -0
- package/src/runtime/routes/inference-profiles-routes.ts +1 -1
- package/src/runtime/routes/inference-provider-connection-routes.ts +52 -19
- package/src/runtime/routes/llm-call-sites-routes.ts +13 -0
- package/src/runtime/routes/log-export-routes.ts +1 -1
- package/src/runtime/routes/notification-routes.ts +4 -1
- package/src/runtime/routes/platform-routes.ts +238 -3
- package/src/runtime/routes/playground/guard.ts +1 -2
- package/src/runtime/routes/profiler-routes.ts +4 -2
- package/src/runtime/routes/question-routes.ts +28 -10
- package/src/runtime/routes/secret-routes.ts +8 -2
- package/src/runtime/routes/settings-routes.ts +41 -13
- package/src/runtime/routes/slack-channel-routes.ts +2 -4
- package/src/runtime/routes/workspace-commit-routes.ts +49 -2
- package/src/runtime/routes/workspace-routes.ts +11 -12
- package/src/runtime/routes/workspace-utils.ts +49 -2
- package/src/runtime/services/conversation-serializer.ts +2 -4
- package/src/skills/catalog-install.ts +20 -7
- package/src/skills/skillssh-registry.ts +1 -1
- package/src/subagent/__tests__/consult-context-gating.test.ts +98 -0
- package/src/subagent/__tests__/consult-context-skills.test.ts +82 -0
- package/src/subagent/__tests__/consult-context.test.ts +84 -0
- package/src/subagent/__tests__/consult-prompt.test.ts +61 -0
- package/src/subagent/consult-context.ts +410 -0
- package/src/subagent/consult-prompt.ts +41 -6
- package/src/subagent/consult-transcript.ts +1 -1
- package/src/subagent/manager.ts +288 -46
- package/src/subagent/progress-events.ts +35 -0
- package/src/subagent/role-resolution.ts +88 -0
- package/src/subagent/types.ts +303 -67
- package/src/subagent/validate-allowlists.ts +3 -4
- package/src/telemetry/__tests__/telemetry-event-fixtures.ts +2 -0
- package/src/telemetry/telemetry-event-sources.ts +13 -0
- package/src/telemetry/telemetry-wire-source.json +1 -1
- package/src/telemetry/telemetry-wire.generated.ts +3 -0
- package/src/telemetry/turn-events-store.ts +30 -1
- package/src/telemetry/types.ts +44 -0
- package/src/telemetry/usage-telemetry-reporter.test.ts +52 -0
- package/src/tools/__tests__/subagent-workflow-tool-input-schemas.test.ts +1 -1
- package/src/tools/ask-question/ask-question-tool.test.ts +118 -3
- package/src/tools/ask-question/ask-question-tool.ts +56 -2
- package/src/tools/browser/browser-execution.ts +1 -1
- package/src/tools/browser/pinned-tabs.ts +3 -1
- package/src/tools/executor.ts +7 -6
- package/src/tools/filesystem/edit.ts +1 -1
- package/src/tools/filesystem/list.ts +1 -1
- package/src/tools/filesystem/read.ts +1 -1
- package/src/tools/filesystem/search.ts +23 -21
- package/src/tools/filesystem/write.ts +4 -1
- package/src/tools/host-filesystem/edit.ts +1 -1
- package/src/tools/host-filesystem/read.ts +1 -1
- package/src/tools/host-filesystem/write.ts +4 -1
- package/src/tools/permission-checker.ts +8 -3
- package/src/tools/shared/filesystem/audio-read.ts +6 -4
- package/src/tools/shared/filesystem/file-ops-service.ts +140 -113
- package/src/tools/shared/filesystem/image-read.ts +12 -12
- package/src/tools/shared/filesystem/size-guard.ts +6 -6
- package/src/tools/shared/input-misuse.ts +72 -0
- package/src/tools/skills/skill-tool-factory.ts +14 -1
- package/src/tools/subagent/consult-deadline.ts +12 -7
- package/src/tools/subagent/read.ts +66 -4
- package/src/tools/subagent/spawn.ts +541 -51
- package/src/tools/terminal/safe-env.ts +1 -0
- package/src/tools/types.ts +9 -0
- package/src/tools/ui-surface/definitions.ts +39 -1
- package/src/tools/ui-surface/surface-shape-docs.ts +38 -4
- package/src/tools/ui-surface/visual-validation.ts +789 -0
- package/src/tools/workflows/run-workflow.test.ts +1 -0
- package/src/usage/__tests__/subagent-attribution.test.ts +109 -0
- package/src/usage/subagent-attribution.ts +108 -0
- package/src/util/__tests__/short-title.test.ts +229 -0
- package/src/util/__tests__/worker-compute.test.ts +65 -0
- package/src/util/abort-reasons.ts +16 -0
- package/src/util/cgroup-cpu.ts +93 -0
- package/src/util/disk-usage.ts +17 -13
- package/src/util/errors.ts +27 -0
- package/src/util/image-conversion.ts +20 -13
- package/src/util/process-tree.ts +19 -0
- package/src/util/short-title.ts +189 -0
- package/src/util/worker-compute.ts +83 -0
- package/src/util/worker-process.ts +7 -1
- package/src/workspace/byok-default-profile-ensure.ts +25 -15
- package/src/workspace/git-service.ts +89 -39
- package/src/workspace/migrations/137-repair-retired-fireworks-minimax-model-id.ts +131 -0
- package/src/workspace/migrations/138-backfill-home-feed-titles.ts +179 -0
- package/src/workspace/migrations/139-clear-renamed-cost-profile-label.ts +92 -0
- package/src/workspace/migrations/registry.ts +6 -0
- package/src/daemon/install-symlink.ts +0 -207
- package/src/plugins/defaults/memory/substrate/constants.ts +0 -8
|
@@ -5,7 +5,7 @@ export interface RenderSlackTextOptions {
|
|
|
5
5
|
channelFallbackLabel?: string;
|
|
6
6
|
}
|
|
7
7
|
|
|
8
|
-
const SLACK_USER_MENTION_RE = /<@([UW][A-Z0-9]+)
|
|
8
|
+
const SLACK_USER_MENTION_RE = /<@([UW][A-Z0-9]+)(?:\|[^>]*)?>/g;
|
|
9
9
|
const SLACK_CHANNEL_REFERENCE_RE = /<#([CDG][A-Z0-9]+)(?:\|[^>]*)?>/g;
|
|
10
10
|
|
|
11
11
|
export function extractSlackUserMentionIds(text: string): string[] {
|
|
@@ -107,7 +107,14 @@ export async function buildSlackUserLabelMap(
|
|
|
107
107
|
|
|
108
108
|
for (const text of texts) {
|
|
109
109
|
if (!text) continue;
|
|
110
|
-
for (const
|
|
110
|
+
for (const match of text.matchAll(SLACK_USER_MENTION_RE)) {
|
|
111
|
+
const id = match[1];
|
|
112
|
+
// A pipe-form mention carrying a usable embedded label renders from
|
|
113
|
+
// that label directly; only queue a lookup when the label is missing,
|
|
114
|
+
// empty, or ID-shaped. Mirrors the channel builder below.
|
|
115
|
+
const [, embeddedLabel] = splitSlackLabel(match[0].slice(1, -1));
|
|
116
|
+
const sanitizedEmbeddedLabel = sanitizeOptionalLabel(embeddedLabel);
|
|
117
|
+
if (sanitizedEmbeddedLabel && sanitizedEmbeddedLabel !== id) continue;
|
|
111
118
|
if (seen.has(id)) continue;
|
|
112
119
|
seen.add(id);
|
|
113
120
|
ids.push(id);
|
|
@@ -175,17 +182,29 @@ function renderUserMention(
|
|
|
175
182
|
content: string,
|
|
176
183
|
options: RenderSlackTextOptions,
|
|
177
184
|
): string {
|
|
178
|
-
const
|
|
185
|
+
const [idWithPrefix, label] = splitSlackLabel(content);
|
|
186
|
+
const id = idWithPrefix.slice(1);
|
|
179
187
|
if (!isSlackUserId(id)) {
|
|
180
188
|
return `<${content}>`;
|
|
181
189
|
}
|
|
182
190
|
|
|
191
|
+
// Slack's legacy pipe form (`<@U123|username>`) carries its own label:
|
|
192
|
+
// prefer it over a lookup, mirroring renderChannelReference. The embedded
|
|
193
|
+
// label is Slack-sourced (part of the token), so entities decode before
|
|
194
|
+
// sanitization; the caller-resolved label below is not.
|
|
195
|
+
const embeddedLabel = sanitizeOptionalLabel(
|
|
196
|
+
label === undefined ? undefined : decodeSlackHtmlEntities(label),
|
|
197
|
+
);
|
|
198
|
+
if (embeddedLabel && embeddedLabel !== id) {
|
|
199
|
+
return `@${embeddedLabel}`;
|
|
200
|
+
}
|
|
201
|
+
|
|
183
202
|
const fallback = sanitizeLabel(options.userFallbackLabel, "unknown-user");
|
|
184
|
-
const
|
|
185
|
-
if (
|
|
203
|
+
const resolvedLabel = sanitizeLabel(options.userLabels?.[id], fallback);
|
|
204
|
+
if (resolvedLabel === id) {
|
|
186
205
|
return `@${fallback}`;
|
|
187
206
|
}
|
|
188
|
-
return `@${
|
|
207
|
+
return `@${resolvedLabel}`;
|
|
189
208
|
}
|
|
190
209
|
|
|
191
210
|
function renderChannelReference(
|
|
@@ -282,13 +301,27 @@ function sanitizeLabel(label: string | undefined, fallback: string): string {
|
|
|
282
301
|
return sanitizedFallback || "unknown";
|
|
283
302
|
}
|
|
284
303
|
|
|
285
|
-
|
|
286
|
-
|
|
304
|
+
/**
|
|
305
|
+
* Normalize a mention label to the renderer's semantics: strip angle
|
|
306
|
+
* brackets, collapse whitespace, strip leading `@`/`#` prefixes. Exported as
|
|
307
|
+
* the single source of truth so persistence-side validation applies exactly
|
|
308
|
+
* the normalization rendering applies; returns `undefined` when nothing
|
|
309
|
+
* usable remains.
|
|
310
|
+
*/
|
|
311
|
+
export function sanitizeSlackLabel(
|
|
312
|
+
label: string | undefined,
|
|
313
|
+
): string | undefined {
|
|
314
|
+
const sanitized = label
|
|
287
315
|
?.replace(/[<>]/g, "")
|
|
288
316
|
.replace(/\s+/g, " ")
|
|
289
317
|
.trim()
|
|
290
318
|
.replace(/^[@#]+/, "")
|
|
291
319
|
.trim();
|
|
320
|
+
return sanitized || undefined;
|
|
321
|
+
}
|
|
322
|
+
|
|
323
|
+
function sanitizeOptionalLabel(label: string | undefined): string | undefined {
|
|
324
|
+
return sanitizeSlackLabel(label);
|
|
292
325
|
}
|
|
293
326
|
|
|
294
327
|
function isSlackUserId(value: string): boolean {
|
package/openapi.yaml
CHANGED
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
openapi: 3.1.0
|
|
4
4
|
info:
|
|
5
5
|
title: Vellum Assistant API
|
|
6
|
-
version: 0.11.
|
|
6
|
+
version: 0.11.2
|
|
7
7
|
description: Auto-generated OpenAPI specification for the Vellum Assistant runtime HTTP server.
|
|
8
8
|
servers:
|
|
9
9
|
- url: http://127.0.0.1:7821
|
|
@@ -699,6 +699,52 @@ paths:
|
|
|
699
699
|
required:
|
|
700
700
|
- ok
|
|
701
701
|
additionalProperties: false
|
|
702
|
+
/v1/admin/workspace-compact-history:
|
|
703
|
+
post:
|
|
704
|
+
operationId: admin_workspacecompacthistory_post
|
|
705
|
+
summary: Compact workspace git history
|
|
706
|
+
description:
|
|
707
|
+
Squash workspace git history older than the retention window into a single base commit and prune reclaimed
|
|
708
|
+
objects. By default acts only when an oversized blob is reclaimable; with force, the squash runs
|
|
709
|
+
unconditionally.
|
|
710
|
+
tags:
|
|
711
|
+
- admin
|
|
712
|
+
requestBody:
|
|
713
|
+
required: true
|
|
714
|
+
content:
|
|
715
|
+
application/json:
|
|
716
|
+
schema:
|
|
717
|
+
type: object
|
|
718
|
+
properties:
|
|
719
|
+
force:
|
|
720
|
+
description: Squash aged history even when no oversized blob is reclaimable
|
|
721
|
+
type: boolean
|
|
722
|
+
retentionDays:
|
|
723
|
+
description: Retention window override in days (default 7)
|
|
724
|
+
type: integer
|
|
725
|
+
exclusiveMinimum: 0
|
|
726
|
+
maximum: 9007199254740991
|
|
727
|
+
responses:
|
|
728
|
+
"200":
|
|
729
|
+
description: Successful response
|
|
730
|
+
content:
|
|
731
|
+
application/json:
|
|
732
|
+
schema:
|
|
733
|
+
type: object
|
|
734
|
+
properties:
|
|
735
|
+
rewrote:
|
|
736
|
+
type: boolean
|
|
737
|
+
squashedCommits:
|
|
738
|
+
type: number
|
|
739
|
+
keptCommits:
|
|
740
|
+
type: number
|
|
741
|
+
retryAfterMs:
|
|
742
|
+
type: number
|
|
743
|
+
required:
|
|
744
|
+
- rewrote
|
|
745
|
+
- squashedCommits
|
|
746
|
+
- keptCommits
|
|
747
|
+
additionalProperties: false
|
|
702
748
|
/v1/apps:
|
|
703
749
|
get:
|
|
704
750
|
operationId: apps_get
|
|
@@ -4691,6 +4737,8 @@ paths:
|
|
|
4691
4737
|
type: string
|
|
4692
4738
|
defaultProfile:
|
|
4693
4739
|
type: string
|
|
4740
|
+
shippedDefaultProfile:
|
|
4741
|
+
type: string
|
|
4694
4742
|
required:
|
|
4695
4743
|
- id
|
|
4696
4744
|
- displayName
|
|
@@ -10665,6 +10713,11 @@ paths:
|
|
|
10665
10713
|
type: number
|
|
10666
10714
|
updatedAt:
|
|
10667
10715
|
type: number
|
|
10716
|
+
workspacePath:
|
|
10717
|
+
anyOf:
|
|
10718
|
+
- type: string
|
|
10719
|
+
- type: "null"
|
|
10720
|
+
description: Workspace-relative file this document is bound to, or null
|
|
10668
10721
|
required:
|
|
10669
10722
|
- success
|
|
10670
10723
|
- surfaceId
|
|
@@ -10674,6 +10727,7 @@ paths:
|
|
|
10674
10727
|
- wordCount
|
|
10675
10728
|
- createdAt
|
|
10676
10729
|
- updatedAt
|
|
10730
|
+
- workspacePath
|
|
10677
10731
|
additionalProperties: false
|
|
10678
10732
|
/v1/documents/{id}/comments:
|
|
10679
10733
|
get:
|
|
@@ -11091,6 +11145,74 @@ paths:
|
|
|
11091
11145
|
schema:
|
|
11092
11146
|
type: string
|
|
11093
11147
|
format: binary
|
|
11148
|
+
/v1/documents/for-workspace-file:
|
|
11149
|
+
post:
|
|
11150
|
+
operationId: documents_forworkspacefile_post
|
|
11151
|
+
summary: Get or create the document for a workspace markdown file
|
|
11152
|
+
description:
|
|
11153
|
+
"Return the document bound to a workspace markdown file, creating it on first open. The file is the source
|
|
11154
|
+
of truth at open time: stored content that has drifted from the file is refreshed from disk before the document
|
|
11155
|
+
is returned."
|
|
11156
|
+
tags:
|
|
11157
|
+
- documents
|
|
11158
|
+
requestBody:
|
|
11159
|
+
required: true
|
|
11160
|
+
content:
|
|
11161
|
+
application/json:
|
|
11162
|
+
schema:
|
|
11163
|
+
type: object
|
|
11164
|
+
properties:
|
|
11165
|
+
path:
|
|
11166
|
+
type: string
|
|
11167
|
+
description: Workspace-relative path to a .md/.markdown file
|
|
11168
|
+
conversationId:
|
|
11169
|
+
type: string
|
|
11170
|
+
description: Conversation the document is opened from
|
|
11171
|
+
required:
|
|
11172
|
+
- path
|
|
11173
|
+
- conversationId
|
|
11174
|
+
responses:
|
|
11175
|
+
"200":
|
|
11176
|
+
description: Successful response
|
|
11177
|
+
content:
|
|
11178
|
+
application/json:
|
|
11179
|
+
schema:
|
|
11180
|
+
type: object
|
|
11181
|
+
properties:
|
|
11182
|
+
success:
|
|
11183
|
+
type: boolean
|
|
11184
|
+
surfaceId:
|
|
11185
|
+
type: string
|
|
11186
|
+
conversationId:
|
|
11187
|
+
type: string
|
|
11188
|
+
title:
|
|
11189
|
+
type: string
|
|
11190
|
+
content:
|
|
11191
|
+
type: string
|
|
11192
|
+
wordCount:
|
|
11193
|
+
type: number
|
|
11194
|
+
createdAt:
|
|
11195
|
+
type: number
|
|
11196
|
+
updatedAt:
|
|
11197
|
+
type: number
|
|
11198
|
+
workspacePath:
|
|
11199
|
+
anyOf:
|
|
11200
|
+
- type: string
|
|
11201
|
+
- type: "null"
|
|
11202
|
+
description: Workspace-relative file this document is bound to, or null
|
|
11203
|
+
required:
|
|
11204
|
+
- success
|
|
11205
|
+
- surfaceId
|
|
11206
|
+
- conversationId
|
|
11207
|
+
- title
|
|
11208
|
+
- content
|
|
11209
|
+
- wordCount
|
|
11210
|
+
- createdAt
|
|
11211
|
+
- updatedAt
|
|
11212
|
+
- workspacePath
|
|
11213
|
+
additionalProperties: false
|
|
11214
|
+
"422":
|
|
11215
|
+
description: Path is not a markdown file
|
|
11094
11216
|
/v1/domain/register:
|
|
11095
11217
|
post:
|
|
11096
11218
|
operationId: domain_register_post
|
|
@@ -14517,7 +14639,9 @@ paths:
|
|
|
14517
14639
|
"404":
|
|
14518
14640
|
description: Profile not found
|
|
14519
14641
|
"409":
|
|
14520
|
-
description:
|
|
14642
|
+
description:
|
|
14643
|
+
Profile is still referenced by activeProfile, advisorProfile, a call site, a default-tier override, or a
|
|
14644
|
+
mix arm
|
|
14521
14645
|
get:
|
|
14522
14646
|
operationId: inference_profiles_by_name_get
|
|
14523
14647
|
summary: Get an effective inference profile
|
|
@@ -14633,8 +14757,9 @@ paths:
|
|
|
14633
14757
|
summary: Create a provider connection
|
|
14634
14758
|
description:
|
|
14635
14759
|
Create a new named provider connection. When auth is omitted it is derived from the provider (keyless
|
|
14636
|
-
providers get none, vellum gets platform, everything else needs credential for api_key auth).
|
|
14637
|
-
|
|
14760
|
+
providers get none, vellum gets platform, everything else needs credential for api_key auth). An explicit auth
|
|
14761
|
+
object must agree with the provider; platform auth belongs to vellum and only to vellum. Fails with 409 if a
|
|
14762
|
+
connection with this name already exists.
|
|
14638
14763
|
tags:
|
|
14639
14764
|
- inference
|
|
14640
14765
|
requestBody:
|
|
@@ -14743,8 +14868,9 @@ paths:
|
|
|
14743
14868
|
summary: Update a provider connection
|
|
14744
14869
|
description:
|
|
14745
14870
|
Update an existing connection. Cannot rename or change the provider. Omitting auth keeps the stored auth;
|
|
14746
|
-
passing credential alone rotates the key via provider-derived api_key auth.
|
|
14747
|
-
|
|
14871
|
+
passing credential alone rotates the key via provider-derived api_key auth. An explicit auth object must agree
|
|
14872
|
+
with the connection's provider; platform auth belongs to vellum and only to vellum. For the Vellum-managed
|
|
14873
|
+
connection (vellum) the auth is locked to platform; label remains editable.
|
|
14748
14874
|
tags:
|
|
14749
14875
|
- inference
|
|
14750
14876
|
parameters:
|
|
@@ -18930,6 +19056,76 @@ paths:
|
|
|
18930
19056
|
- requestId
|
|
18931
19057
|
- entries
|
|
18932
19058
|
additionalProperties: false
|
|
19059
|
+
answeredQuestion:
|
|
19060
|
+
type: object
|
|
19061
|
+
properties:
|
|
19062
|
+
requestId:
|
|
19063
|
+
type: string
|
|
19064
|
+
questions:
|
|
19065
|
+
type: array
|
|
19066
|
+
items:
|
|
19067
|
+
type: object
|
|
19068
|
+
properties:
|
|
19069
|
+
id:
|
|
19070
|
+
type: string
|
|
19071
|
+
question:
|
|
19072
|
+
type: string
|
|
19073
|
+
description:
|
|
19074
|
+
type: string
|
|
19075
|
+
options:
|
|
19076
|
+
type: array
|
|
19077
|
+
items:
|
|
19078
|
+
type: object
|
|
19079
|
+
properties:
|
|
19080
|
+
id:
|
|
19081
|
+
type: string
|
|
19082
|
+
label:
|
|
19083
|
+
type: string
|
|
19084
|
+
description:
|
|
19085
|
+
type: string
|
|
19086
|
+
required:
|
|
19087
|
+
- id
|
|
19088
|
+
- label
|
|
19089
|
+
additionalProperties: false
|
|
19090
|
+
freeTextPlaceholder:
|
|
19091
|
+
type: string
|
|
19092
|
+
required:
|
|
19093
|
+
- id
|
|
19094
|
+
- question
|
|
19095
|
+
- options
|
|
19096
|
+
additionalProperties: false
|
|
19097
|
+
responses:
|
|
19098
|
+
type: array
|
|
19099
|
+
items:
|
|
19100
|
+
type: object
|
|
19101
|
+
properties:
|
|
19102
|
+
questionId:
|
|
19103
|
+
type: string
|
|
19104
|
+
decision:
|
|
19105
|
+
type: string
|
|
19106
|
+
enum:
|
|
19107
|
+
- option
|
|
19108
|
+
- free_text
|
|
19109
|
+
- skipped
|
|
19110
|
+
optionId:
|
|
19111
|
+
type: string
|
|
19112
|
+
text:
|
|
19113
|
+
type: string
|
|
19114
|
+
required:
|
|
19115
|
+
- questionId
|
|
19116
|
+
- decision
|
|
19117
|
+
additionalProperties: false
|
|
19118
|
+
overall:
|
|
19119
|
+
type: string
|
|
19120
|
+
enum:
|
|
19121
|
+
- completed
|
|
19122
|
+
- closed
|
|
19123
|
+
required:
|
|
19124
|
+
- requestId
|
|
19125
|
+
- questions
|
|
19126
|
+
- responses
|
|
19127
|
+
- overall
|
|
19128
|
+
additionalProperties: false
|
|
18933
19129
|
required:
|
|
18934
19130
|
- name
|
|
18935
19131
|
- input
|
|
@@ -19369,6 +19565,76 @@ paths:
|
|
|
19369
19565
|
- requestId
|
|
19370
19566
|
- entries
|
|
19371
19567
|
additionalProperties: false
|
|
19568
|
+
answeredQuestion:
|
|
19569
|
+
type: object
|
|
19570
|
+
properties:
|
|
19571
|
+
requestId:
|
|
19572
|
+
type: string
|
|
19573
|
+
questions:
|
|
19574
|
+
type: array
|
|
19575
|
+
items:
|
|
19576
|
+
type: object
|
|
19577
|
+
properties:
|
|
19578
|
+
id:
|
|
19579
|
+
type: string
|
|
19580
|
+
question:
|
|
19581
|
+
type: string
|
|
19582
|
+
description:
|
|
19583
|
+
type: string
|
|
19584
|
+
options:
|
|
19585
|
+
type: array
|
|
19586
|
+
items:
|
|
19587
|
+
type: object
|
|
19588
|
+
properties:
|
|
19589
|
+
id:
|
|
19590
|
+
type: string
|
|
19591
|
+
label:
|
|
19592
|
+
type: string
|
|
19593
|
+
description:
|
|
19594
|
+
type: string
|
|
19595
|
+
required:
|
|
19596
|
+
- id
|
|
19597
|
+
- label
|
|
19598
|
+
additionalProperties: false
|
|
19599
|
+
freeTextPlaceholder:
|
|
19600
|
+
type: string
|
|
19601
|
+
required:
|
|
19602
|
+
- id
|
|
19603
|
+
- question
|
|
19604
|
+
- options
|
|
19605
|
+
additionalProperties: false
|
|
19606
|
+
responses:
|
|
19607
|
+
type: array
|
|
19608
|
+
items:
|
|
19609
|
+
type: object
|
|
19610
|
+
properties:
|
|
19611
|
+
questionId:
|
|
19612
|
+
type: string
|
|
19613
|
+
decision:
|
|
19614
|
+
type: string
|
|
19615
|
+
enum:
|
|
19616
|
+
- option
|
|
19617
|
+
- free_text
|
|
19618
|
+
- skipped
|
|
19619
|
+
optionId:
|
|
19620
|
+
type: string
|
|
19621
|
+
text:
|
|
19622
|
+
type: string
|
|
19623
|
+
required:
|
|
19624
|
+
- questionId
|
|
19625
|
+
- decision
|
|
19626
|
+
additionalProperties: false
|
|
19627
|
+
overall:
|
|
19628
|
+
type: string
|
|
19629
|
+
enum:
|
|
19630
|
+
- completed
|
|
19631
|
+
- closed
|
|
19632
|
+
required:
|
|
19633
|
+
- requestId
|
|
19634
|
+
- questions
|
|
19635
|
+
- responses
|
|
19636
|
+
- overall
|
|
19637
|
+
additionalProperties: false
|
|
19372
19638
|
required:
|
|
19373
19639
|
- name
|
|
19374
19640
|
- input
|
|
@@ -19543,6 +19809,14 @@ paths:
|
|
|
19543
19809
|
additionalProperties: false
|
|
19544
19810
|
systemCard:
|
|
19545
19811
|
type: boolean
|
|
19812
|
+
providerError:
|
|
19813
|
+
type: object
|
|
19814
|
+
properties:
|
|
19815
|
+
code:
|
|
19816
|
+
type: string
|
|
19817
|
+
category:
|
|
19818
|
+
type: string
|
|
19819
|
+
additionalProperties: false
|
|
19546
19820
|
slackMessage:
|
|
19547
19821
|
type: object
|
|
19548
19822
|
properties:
|
|
@@ -19709,6 +19983,13 @@ paths:
|
|
|
19709
19983
|
Client OS surface ("web" | "ios" | "macos" | "android"), reported separately from `interface`. Drives the
|
|
19710
19984
|
per-turn `client_os` context only; does not affect transport/host-proxy capabilities.
|
|
19711
19985
|
type: string
|
|
19986
|
+
visibleAppId:
|
|
19987
|
+
description:
|
|
19988
|
+
'Id of the app the client currently has open on screen (app viewer or the app-editing split). Drives the
|
|
19989
|
+
per-turn `visible_app:` context line so the assistant can resolve "the app" to what the user is
|
|
19990
|
+
looking at. View state only: it never affects transport, routing, or tool gating, and is omitted
|
|
19991
|
+
whenever no app is in view.'
|
|
19992
|
+
type: string
|
|
19712
19993
|
clientMessageId:
|
|
19713
19994
|
type: string
|
|
19714
19995
|
description:
|
|
@@ -19752,6 +20033,16 @@ paths:
|
|
|
19752
20033
|
snapshots, emits no echo, and does not supersede pending interactions. Honored on the standard send
|
|
19753
20034
|
path only — slash-command content bypasses it."
|
|
19754
20035
|
type: boolean
|
|
20036
|
+
scripted:
|
|
20037
|
+
description:
|
|
20038
|
+
"When true, this turn was auto-sent on the user's behalf rather than typed by them: onboarding research
|
|
20039
|
+
prompts, the personality rewrite message, research corrections, hidden kickoff greetings, the legacy
|
|
20040
|
+
pre-chat bootstrap. Stamped onto the persisted message and forwarded to turn telemetry, where
|
|
20041
|
+
activation metrics exclude it. Send false for a genuine typed message; OMIT the field only if the
|
|
20042
|
+
client genuinely cannot tell, since absent means UNKNOWN and a wrong false is trusted downstream.
|
|
20043
|
+
Independent of `hidden`: a turn can be visible and scripted (the research prompt) or hidden and
|
|
20044
|
+
scripted (the kickoff greeting)."
|
|
20045
|
+
type: boolean
|
|
19755
20046
|
onboarding:
|
|
19756
20047
|
type: object
|
|
19757
20048
|
properties:
|
|
@@ -21372,6 +21663,7 @@ paths:
|
|
|
21372
21663
|
minLength: 1
|
|
21373
21664
|
description: Feed item id (notif:<uuid>) or bare uuid
|
|
21374
21665
|
title:
|
|
21666
|
+
description: New title. An empty value is ignored, never cleared.
|
|
21375
21667
|
type: string
|
|
21376
21668
|
body:
|
|
21377
21669
|
type: string
|
|
@@ -22765,6 +23057,145 @@ paths:
|
|
|
22765
23057
|
- disconnected
|
|
22766
23058
|
- previousBaseUrl
|
|
22767
23059
|
additionalProperties: false
|
|
23060
|
+
/v1/platform/invoices:
|
|
23061
|
+
get:
|
|
23062
|
+
operationId: platform_invoices_get
|
|
23063
|
+
summary: List one page of the organization's Stripe invoices
|
|
23064
|
+
description:
|
|
23065
|
+
Fetches one page of the org's Stripe invoice history (newest first) from the platform billing invoices
|
|
23066
|
+
endpoint. Amounts are in the currency's minor units. When has_more is true, pass the last invoice's id as
|
|
23067
|
+
starting_after to fetch the next page.
|
|
23068
|
+
tags:
|
|
23069
|
+
- platform
|
|
23070
|
+
parameters:
|
|
23071
|
+
- name: starting_after
|
|
23072
|
+
in: query
|
|
23073
|
+
required: false
|
|
23074
|
+
schema:
|
|
23075
|
+
type: string
|
|
23076
|
+
description: "Cursor: return invoices older than the invoice with this id (from the previous page's last entry)."
|
|
23077
|
+
responses:
|
|
23078
|
+
"200":
|
|
23079
|
+
description: Successful response
|
|
23080
|
+
content:
|
|
23081
|
+
application/json:
|
|
23082
|
+
schema:
|
|
23083
|
+
type: object
|
|
23084
|
+
properties:
|
|
23085
|
+
invoices:
|
|
23086
|
+
type: array
|
|
23087
|
+
items:
|
|
23088
|
+
type: object
|
|
23089
|
+
properties:
|
|
23090
|
+
id:
|
|
23091
|
+
type: string
|
|
23092
|
+
number:
|
|
23093
|
+
anyOf:
|
|
23094
|
+
- type: string
|
|
23095
|
+
- type: "null"
|
|
23096
|
+
status:
|
|
23097
|
+
anyOf:
|
|
23098
|
+
- type: string
|
|
23099
|
+
- type: "null"
|
|
23100
|
+
currency:
|
|
23101
|
+
type: string
|
|
23102
|
+
amount_due:
|
|
23103
|
+
type: number
|
|
23104
|
+
amount_paid:
|
|
23105
|
+
type: number
|
|
23106
|
+
amount_remaining:
|
|
23107
|
+
type: number
|
|
23108
|
+
created:
|
|
23109
|
+
type: number
|
|
23110
|
+
hosted_invoice_url:
|
|
23111
|
+
anyOf:
|
|
23112
|
+
- type: string
|
|
23113
|
+
- type: "null"
|
|
23114
|
+
invoice_pdf:
|
|
23115
|
+
anyOf:
|
|
23116
|
+
- type: string
|
|
23117
|
+
- type: "null"
|
|
23118
|
+
required:
|
|
23119
|
+
- id
|
|
23120
|
+
- number
|
|
23121
|
+
- status
|
|
23122
|
+
- currency
|
|
23123
|
+
- amount_due
|
|
23124
|
+
- amount_paid
|
|
23125
|
+
- amount_remaining
|
|
23126
|
+
- created
|
|
23127
|
+
- hosted_invoice_url
|
|
23128
|
+
- invoice_pdf
|
|
23129
|
+
additionalProperties: false
|
|
23130
|
+
has_more:
|
|
23131
|
+
type: boolean
|
|
23132
|
+
required:
|
|
23133
|
+
- invoices
|
|
23134
|
+
- has_more
|
|
23135
|
+
additionalProperties: false
|
|
23136
|
+
/v1/platform/invoices/{id}:
|
|
23137
|
+
get:
|
|
23138
|
+
operationId: platform_invoices_by_id_get
|
|
23139
|
+
summary: Get a single Stripe invoice by ID
|
|
23140
|
+
description:
|
|
23141
|
+
Pages through the org's invoice list from the platform and returns the invoice matching the given Stripe
|
|
23142
|
+
invoice ID (e.g. in_xxx). 404 if no such invoice.
|
|
23143
|
+
tags:
|
|
23144
|
+
- platform
|
|
23145
|
+
parameters:
|
|
23146
|
+
- name: id
|
|
23147
|
+
in: path
|
|
23148
|
+
required: true
|
|
23149
|
+
schema:
|
|
23150
|
+
type: string
|
|
23151
|
+
responses:
|
|
23152
|
+
"200":
|
|
23153
|
+
description: Successful response
|
|
23154
|
+
content:
|
|
23155
|
+
application/json:
|
|
23156
|
+
schema:
|
|
23157
|
+
type: object
|
|
23158
|
+
properties:
|
|
23159
|
+
id:
|
|
23160
|
+
type: string
|
|
23161
|
+
number:
|
|
23162
|
+
anyOf:
|
|
23163
|
+
- type: string
|
|
23164
|
+
- type: "null"
|
|
23165
|
+
status:
|
|
23166
|
+
anyOf:
|
|
23167
|
+
- type: string
|
|
23168
|
+
- type: "null"
|
|
23169
|
+
currency:
|
|
23170
|
+
type: string
|
|
23171
|
+
amount_due:
|
|
23172
|
+
type: number
|
|
23173
|
+
amount_paid:
|
|
23174
|
+
type: number
|
|
23175
|
+
amount_remaining:
|
|
23176
|
+
type: number
|
|
23177
|
+
created:
|
|
23178
|
+
type: number
|
|
23179
|
+
hosted_invoice_url:
|
|
23180
|
+
anyOf:
|
|
23181
|
+
- type: string
|
|
23182
|
+
- type: "null"
|
|
23183
|
+
invoice_pdf:
|
|
23184
|
+
anyOf:
|
|
23185
|
+
- type: string
|
|
23186
|
+
- type: "null"
|
|
23187
|
+
required:
|
|
23188
|
+
- id
|
|
23189
|
+
- number
|
|
23190
|
+
- status
|
|
23191
|
+
- currency
|
|
23192
|
+
- amount_due
|
|
23193
|
+
- amount_paid
|
|
23194
|
+
- amount_remaining
|
|
23195
|
+
- created
|
|
23196
|
+
- hosted_invoice_url
|
|
23197
|
+
- invoice_pdf
|
|
23198
|
+
additionalProperties: false
|
|
22768
23199
|
/v1/platform/plans:
|
|
22769
23200
|
get:
|
|
22770
23201
|
operationId: platform_plans_get
|
|
@@ -26999,10 +27430,13 @@ paths:
|
|
|
26999
27430
|
type: string
|
|
27000
27431
|
name:
|
|
27001
27432
|
type: string
|
|
27433
|
+
error:
|
|
27434
|
+
description:
|
|
27435
|
+
Why the secret was not stored (e.g. provider-side API key validation failed). Present only when success is
|
|
27436
|
+
false.
|
|
27437
|
+
type: string
|
|
27002
27438
|
required:
|
|
27003
27439
|
- success
|
|
27004
|
-
- type
|
|
27005
|
-
- name
|
|
27006
27440
|
additionalProperties: false
|
|
27007
27441
|
/v1/secrets/read:
|
|
27008
27442
|
post:
|
package/package.json
CHANGED
|
@@ -115,9 +115,9 @@ describe("upscaleTargetDimensions", () => {
|
|
|
115
115
|
});
|
|
116
116
|
|
|
117
117
|
describe("upscaleImageToMinimum", () => {
|
|
118
|
-
it("returns null when dimensions are unparseable", () => {
|
|
118
|
+
it("returns null when dimensions are unparseable", async () => {
|
|
119
119
|
expect(
|
|
120
|
-
upscaleImageToMinimum(
|
|
120
|
+
await upscaleImageToMinimum(
|
|
121
121
|
Buffer.from("not an image").toString("base64"),
|
|
122
122
|
"image/png",
|
|
123
123
|
),
|
|
@@ -126,12 +126,12 @@ describe("upscaleImageToMinimum", () => {
|
|
|
126
126
|
});
|
|
127
127
|
|
|
128
128
|
describe("optimizeImageForTransport", () => {
|
|
129
|
-
it("passes an undersized image through unchanged
|
|
129
|
+
it("passes an undersized image through unchanged: the minimum floor is rejection-path only", async () => {
|
|
130
130
|
// The floor is undocumented provider behavior, so pre-send transport
|
|
131
131
|
// never enforces it; only the image-recovery plugin reacts to an actual
|
|
132
132
|
// "Could not process image" rejection.
|
|
133
133
|
const tiny = makePngBase64(16, 14);
|
|
134
|
-
expect(optimizeImageForTransport(tiny, "image/png")).toEqual({
|
|
134
|
+
expect(await optimizeImageForTransport(tiny, "image/png")).toEqual({
|
|
135
135
|
data: tiny,
|
|
136
136
|
mediaType: "image/png",
|
|
137
137
|
});
|