@vellumai/assistant 0.7.2 → 0.7.3
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/ARCHITECTURE.md +16 -1
- package/docs/architecture/memory.md +5 -2
- package/node_modules/@vellumai/gateway-client/src/ipc-client.ts +13 -4
- package/node_modules/@vellumai/skill-host-contracts/src/assistant-event.ts +0 -9
- package/node_modules/@vellumai/slack-text/src/index.test.ts +18 -35
- package/node_modules/@vellumai/slack-text/src/index.ts +2 -48
- package/openapi.yaml +449 -22
- package/package.json +1 -1
- package/src/__tests__/app-control-flow.test.ts +21 -11
- package/src/__tests__/assistant-event-hub.test.ts +48 -0
- package/src/__tests__/assistant-event.test.ts +0 -10
- package/src/__tests__/assistant-events-sse-hardening.test.ts +2 -7
- package/src/__tests__/assistant-feature-flags-integration.test.ts +18 -0
- package/src/__tests__/auto-analysis-end-to-end.test.ts +62 -1
- package/src/__tests__/background-workers-disk-pressure.test.ts +268 -0
- package/src/__tests__/call-conversation-messages.test.ts +8 -2
- package/src/__tests__/channel-inbound-disk-pressure.test.ts +537 -0
- package/src/__tests__/channel-readiness-service.test.ts +4 -2
- package/src/__tests__/config-loader-backfill.test.ts +379 -0
- package/src/__tests__/config-schema.test.ts +1 -0
- package/src/__tests__/config-watcher-cleanup-throttle.test.ts +18 -9
- package/src/__tests__/config-watcher.test.ts +140 -69
- package/src/__tests__/context-search-agent-runner.test.ts +61 -3
- package/src/__tests__/context-search-conversations-source.test.ts +0 -24
- package/src/__tests__/context-search-fanout.test.ts +0 -1
- package/src/__tests__/context-search-memory-source.test.ts +3 -7
- package/src/__tests__/context-search-memory-v2-source.test.ts +0 -2
- package/src/__tests__/context-search-pkb-source.test.ts +0 -1
- package/src/__tests__/context-search-workspace-source.test.ts +0 -1
- package/src/__tests__/conversation-abort-tool-results.test.ts +6 -0
- package/src/__tests__/conversation-agent-loop-disk-pressure.test.ts +223 -0
- package/src/__tests__/conversation-agent-loop.test.ts +454 -5
- package/src/__tests__/conversation-error.test.ts +150 -3
- package/src/__tests__/conversation-process-callsite.test.ts +43 -0
- package/src/__tests__/conversation-provider-retry-repair.test.ts +6 -0
- package/src/__tests__/conversation-runtime-assembly.test.ts +65 -0
- package/src/__tests__/conversation-slash-unknown.test.ts +6 -0
- package/src/__tests__/conversation-speed-override.test.ts +0 -3
- package/src/__tests__/conversation-store.test.ts +0 -18
- package/src/__tests__/conversation-surfaces-app-control.test.ts +15 -4
- package/src/__tests__/conversation-surfaces-data-persist.test.ts +404 -0
- package/src/__tests__/conversation-tool-setup-app-refresh.test.ts +2 -5
- package/src/__tests__/conversation-workspace-injection.test.ts +6 -0
- package/src/__tests__/conversation-workspace-tool-tracking.test.ts +6 -0
- package/src/__tests__/credentials-cli.test.ts +7 -0
- package/src/__tests__/cu-unified-flow.test.ts +176 -10
- package/src/__tests__/date-context.test.ts +164 -2
- package/src/__tests__/disk-pressure-guard.test.ts +262 -0
- package/src/__tests__/disk-pressure-lifecycle.test.ts +168 -0
- package/src/__tests__/disk-pressure-policy.test.ts +241 -0
- package/src/__tests__/disk-pressure-routes.test.ts +379 -0
- package/src/__tests__/disk-pressure-tools.test.ts +277 -0
- package/src/__tests__/disk-usage.test.ts +150 -0
- package/src/__tests__/events-client-registration.test.ts +52 -0
- package/src/__tests__/events-dev-bypass-actor.test.ts +162 -0
- package/src/__tests__/file-write-tool.test.ts +4 -10
- package/src/__tests__/filing-service.test.ts +3 -4
- package/src/__tests__/heartbeat-disk-pressure.test.ts +183 -0
- package/src/__tests__/heartbeat-service.test.ts +260 -11
- package/src/__tests__/host-app-control-proxy.test.ts +195 -25
- package/src/__tests__/host-bash-proxy.test.ts +227 -34
- package/src/__tests__/host-bash-routes.test.ts +178 -13
- package/src/__tests__/host-cu-proxy.test.ts +210 -3
- package/src/__tests__/host-cu-routes-targeted.test.ts +141 -12
- package/src/__tests__/host-file-proxy-targeted.test.ts +48 -9
- package/src/__tests__/host-file-proxy.test.ts +268 -6
- package/src/__tests__/host-file-routes-targeted.test.ts +175 -17
- package/src/__tests__/host-transfer-proxy-targeted.test.ts +408 -59
- package/src/__tests__/host-transfer-routes-targeted.test.ts +232 -17
- package/src/__tests__/http-user-message-parity.test.ts +107 -1
- package/src/__tests__/injector-chain.test.ts +18 -6
- package/src/__tests__/injector-disk-pressure.test.ts +224 -0
- package/src/__tests__/managed-profile-guard.test.ts +18 -0
- package/src/__tests__/mcp-abort-signal.test.ts +130 -0
- package/src/__tests__/memory-admin-recall.test.ts +3 -11
- package/src/__tests__/memory-retrieval-pipeline.test.ts +22 -1
- package/src/__tests__/normalize-onboarding.test.ts +180 -0
- package/src/__tests__/oauth-connect-routes.test.ts +316 -0
- package/src/__tests__/oauth-provider-seed-logos.test.ts +24 -2
- package/src/__tests__/onboarding-persona-write.test.ts +308 -0
- package/src/__tests__/openai-provider.test.ts +45 -8
- package/src/__tests__/persist-onboarding-artifacts.test.ts +44 -64
- package/src/__tests__/platform-callback-registration.test.ts +21 -4
- package/src/__tests__/platform.test.ts +2 -1
- package/src/__tests__/playbook-execution.test.ts +0 -43
- package/src/__tests__/plugin-tool-contribution.test.ts +47 -0
- package/src/__tests__/prechat-onboarding-contract.test.ts +214 -27
- package/src/__tests__/provider-tool-name.test.ts +23 -0
- package/src/__tests__/relay-server.test.ts +15 -4
- package/src/__tests__/runtime-events-sse.test.ts +4 -8
- package/src/__tests__/scheduler-disk-pressure.test.ts +148 -0
- package/src/__tests__/secret-ingress-http.test.ts +0 -1
- package/src/__tests__/suggestion-routes.test.ts +46 -0
- package/src/__tests__/twilio-validation.test.ts +2 -2
- package/src/__tests__/workspace-migration-065-bump-stale-heartbeat-interval.test.ts +122 -0
- package/src/__tests__/workspace-migration-066-seed-heartbeat-callsite-cost-default.test.ts +285 -0
- package/src/__tests__/workspace-migration-068-release-notes-local-timezone.test.ts +90 -0
- package/src/__tests__/workspace-migration-safe-storage-limits-release.test.ts +90 -0
- package/src/approvals/guardian-decision-primitive.ts +13 -0
- package/src/approvals/guardian-request-resolvers.ts +16 -17
- package/src/backup/snapshot-lock.ts +2 -27
- package/src/bundler/compiler-tools.ts +3 -2
- package/src/calls/call-conversation-messages.ts +46 -10
- package/src/cli/commands/__tests__/webhooks.test.ts +0 -4
- package/src/cli/commands/bash.ts +35 -108
- package/src/cli/commands/contacts.ts +64 -25
- package/src/cli/commands/credentials.ts +56 -0
- package/src/cli/commands/memory-v2.ts +7 -6
- package/src/cli/commands/oauth/__tests__/connect.test.ts +437 -1
- package/src/cli/commands/oauth/connect.ts +127 -1
- package/src/cli/commands/platform/__tests__/callback-routes-list.test.ts +0 -3
- package/src/cli/commands/platform/__tests__/connect.test.ts +7 -1
- package/src/cli/commands/platform/__tests__/disconnect.test.ts +7 -1
- package/src/cli/commands/platform/__tests__/status.test.ts +103 -6
- package/src/cli/commands/platform/index.ts +16 -7
- package/src/cli/commands/status.ts +57 -0
- package/src/cli/program.ts +4 -2
- package/src/config/assistant-feature-flags.ts +13 -3
- package/src/config/bundled-skills/messaging/tools/messaging-analyze-style.ts +4 -3
- package/src/config/bundled-skills/phone-calls/references/TROUBLESHOOTING.md +13 -7
- package/src/config/bundled-skills/playbooks/tools/playbook-create.ts +2 -2
- package/src/config/bundled-skills/playbooks/tools/playbook-delete.ts +2 -2
- package/src/config/bundled-skills/playbooks/tools/playbook-list.ts +2 -2
- package/src/config/bundled-skills/playbooks/tools/playbook-update.ts +2 -2
- package/src/config/env.ts +0 -8
- package/src/config/feature-flag-registry.json +27 -3
- package/src/config/loader.ts +127 -8
- package/src/config/schemas/__tests__/memory-v2.test.ts +10 -5
- package/src/config/schemas/call-site-catalog.ts +14 -0
- package/src/config/schemas/channels.ts +0 -5
- package/src/config/schemas/heartbeat.ts +1 -1
- package/src/config/schemas/llm.ts +2 -0
- package/src/config/schemas/memory-lifecycle.ts +13 -0
- package/src/config/schemas/memory-v2.ts +75 -11
- package/src/config/schemas/platform.ts +43 -3
- package/src/config/schemas/services.ts +28 -0
- package/src/config/seed-inference-profiles.ts +230 -33
- package/src/contacts/contact-store.ts +0 -25
- package/src/daemon/__tests__/conversation-tool-setup.test.ts +86 -25
- package/src/daemon/assistant-attachments.ts +4 -4
- package/src/daemon/config-watcher.ts +85 -57
- package/src/daemon/conversation-agent-loop-handlers.ts +6 -0
- package/src/daemon/conversation-agent-loop.ts +170 -33
- package/src/daemon/conversation-error.ts +87 -15
- package/src/daemon/conversation-lifecycle.ts +1 -3
- package/src/daemon/conversation-process.ts +8 -0
- package/src/daemon/conversation-runtime-assembly.ts +26 -0
- package/src/daemon/conversation-store.ts +2 -2
- package/src/daemon/conversation-surfaces.ts +195 -15
- package/src/daemon/conversation-tool-setup.ts +57 -14
- package/src/daemon/conversation.ts +17 -22
- package/src/daemon/date-context.ts +71 -22
- package/src/daemon/disk-pressure-background-gate.ts +73 -0
- package/src/daemon/disk-pressure-guard.ts +343 -0
- package/src/daemon/disk-pressure-policy.ts +163 -0
- package/src/daemon/handlers/shared.ts +0 -1
- package/src/daemon/handlers/skills.ts +3 -4
- package/src/daemon/host-app-control-proxy.ts +137 -41
- package/src/daemon/host-bash-proxy.ts +46 -21
- package/src/daemon/host-cu-proxy.ts +49 -3
- package/src/daemon/host-file-proxy.ts +43 -7
- package/src/daemon/host-transfer-proxy.ts +95 -4
- package/src/daemon/lifecycle.ts +79 -28
- package/src/daemon/meet-host-supervisor.ts +4 -4
- package/src/daemon/meet-manifest-loader.ts +0 -1
- package/src/daemon/memory-v2-startup.ts +14 -4
- package/src/daemon/message-protocol.ts +3 -0
- package/src/daemon/message-types/conversations.ts +4 -0
- package/src/daemon/message-types/disk-pressure.ts +9 -0
- package/src/daemon/message-types/messages.ts +3 -0
- package/src/daemon/profiler-run-store.ts +5 -5
- package/src/daemon/tool-setup-types.ts +2 -2
- package/src/documents/document-store.ts +85 -0
- package/src/filing/filing-service.ts +30 -5
- package/src/heartbeat/__tests__/heartbeat-feed-event.test.ts +9 -16
- package/src/heartbeat/__tests__/heartbeat-run-store.test.ts +36 -0
- package/src/heartbeat/heartbeat-run-store.ts +13 -0
- package/src/heartbeat/heartbeat-service.ts +205 -31
- package/src/home/feed-scheduler.ts +18 -0
- package/src/inbound/platform-callback-registration.ts +8 -15
- package/src/ipc/__tests__/clients-list-ipc.test.ts +169 -0
- package/src/ipc/assistant-server.ts +56 -2
- package/src/ipc/gateway-client.ts +37 -3
- package/src/live-voice/live-voice-archive.ts +4 -4
- package/src/live-voice/protocol.ts +5 -7
- package/src/media/image-service.ts +1 -7
- package/src/memory/__tests__/fixtures/memory-v2-activation-fixtures.ts +21 -13
- package/src/memory/__tests__/jobs-worker-v2-schedule.test.ts +52 -22
- package/src/memory/__tests__/memory-v2-activation-log-store.test.ts +0 -6
- package/src/memory/__tests__/memory-v2-concept-frequency.test.ts +272 -0
- package/src/memory/admin.ts +5 -9
- package/src/memory/context-search/agent-runner.ts +19 -2
- package/src/memory/context-search/sources/conversations.ts +2 -11
- package/src/memory/context-search/sources/memory-v2.ts +5 -4
- package/src/memory/context-search/sources/memory.ts +0 -1
- package/src/memory/context-search/types.ts +0 -1
- package/src/memory/conversation-crud.ts +4 -12
- package/src/memory/db-init.ts +2 -0
- package/src/memory/embedding-runtime-manager.ts +119 -5
- package/src/memory/graph/__tests__/conversation-graph-memory-v2-routing.test.ts +32 -21
- package/src/memory/graph/conversation-graph-memory.ts +42 -54
- package/src/memory/graph/extraction.ts +1 -3
- package/src/memory/graph/graph-search.test.ts +10 -67
- package/src/memory/graph/graph-search.ts +1 -20
- package/src/memory/graph/retriever.test.ts +6 -0
- package/src/memory/graph/retriever.ts +6 -10
- package/src/memory/indexer.ts +54 -45
- package/src/memory/job-handlers/backfill.ts +2 -11
- package/src/memory/job-handlers/cleanup.ts +43 -0
- package/src/memory/job-handlers/embedding.ts +6 -8
- package/src/memory/job-handlers/summarization.ts +2 -7
- package/src/memory/jobs-store.ts +48 -0
- package/src/memory/jobs-worker.ts +81 -43
- package/src/memory/memory-v2-activation-log-store.ts +32 -14
- package/src/memory/memory-v2-concept-frequency.ts +169 -0
- package/src/memory/migrations/239-trace-events-created-at-index.ts +18 -0
- package/src/memory/migrations/index.ts +1 -0
- package/src/memory/pkb/pkb-search.test.ts +6 -0
- package/src/memory/qdrant-client.ts +0 -13
- package/src/memory/rerank-local.ts +374 -0
- package/src/memory/search/semantic.ts +6 -67
- package/src/memory/trace-event-store.ts +1 -17
- package/src/memory/v2/__tests__/activation.test.ts +311 -250
- package/src/memory/v2/__tests__/consolidation-job.test.ts +40 -8
- package/src/memory/v2/__tests__/injection.test.ts +157 -167
- package/src/memory/v2/__tests__/prompts-consolidation.test.ts +61 -2
- package/src/memory/v2/__tests__/qdrant.test.ts +16 -0
- package/src/memory/v2/__tests__/reranker.test.ts +338 -0
- package/src/memory/v2/__tests__/sim.test.ts +5 -199
- package/src/memory/v2/__tests__/skill-store.test.ts +71 -65
- package/src/memory/v2/__tests__/static-context.test.ts +76 -1
- package/src/memory/v2/activation.ts +149 -156
- package/src/memory/v2/consolidation-job.ts +62 -12
- package/src/memory/v2/injection.ts +47 -60
- package/src/memory/v2/prompts/consolidation.ts +36 -1
- package/src/memory/v2/qdrant.ts +99 -0
- package/src/memory/v2/reranker.ts +177 -0
- package/src/memory/v2/sim.ts +10 -84
- package/src/memory/v2/skill-content.ts +4 -3
- package/src/memory/v2/skill-store.ts +82 -59
- package/src/memory/v2/static-context.ts +22 -0
- package/src/memory/v2/types.ts +10 -10
- package/src/notifications/copy-composer.ts +13 -0
- package/src/notifications/signal.ts +4 -0
- package/src/oauth/AGENTS.md +3 -1
- package/src/oauth/__tests__/oauth-connect-state.test.ts +137 -0
- package/src/oauth/connect-orchestrator.ts +2 -0
- package/src/oauth/connection-resolver.test.ts +66 -1
- package/src/oauth/connection-resolver.ts +55 -1
- package/src/oauth/oauth-connect-state.ts +77 -0
- package/src/oauth/seed-providers.ts +58 -1
- package/src/plugins/defaults/injectors.ts +35 -2
- package/src/plugins/defaults/memory-retrieval.ts +5 -6
- package/src/plugins/types.ts +7 -0
- package/src/proactive-artifact/aux-message-injector.ts +74 -0
- package/src/proactive-artifact/decision.test.ts +226 -0
- package/src/proactive-artifact/decision.ts +165 -0
- package/src/proactive-artifact/index.ts +7 -0
- package/src/proactive-artifact/job.test.ts +867 -0
- package/src/proactive-artifact/job.ts +352 -0
- package/src/proactive-artifact/message-copy.ts +41 -0
- package/src/proactive-artifact/trigger-state.test.ts +277 -0
- package/src/proactive-artifact/trigger-state.ts +119 -0
- package/src/prompts/normalize-onboarding.ts +80 -0
- package/src/prompts/persona-resolver.ts +101 -9
- package/src/prompts/system-prompt.ts +21 -7
- package/src/prompts/templates/BOOTSTRAP.md +13 -5
- package/src/providers/__tests__/retry-callsite.test.ts +222 -1
- package/src/providers/model-intents.ts +7 -0
- package/src/providers/openrouter/client.ts +8 -0
- package/src/providers/retry.ts +50 -0
- package/src/providers/types.ts +1 -0
- package/src/runtime/__tests__/agent-wake.test.ts +456 -3
- package/src/runtime/agent-wake.ts +238 -100
- package/src/runtime/assistant-event-hub.ts +36 -6
- package/src/runtime/assistant-event.ts +0 -1
- package/src/runtime/auth/__tests__/route-policy.test.ts +64 -0
- package/src/runtime/auth/route-policy.ts +14 -1
- package/src/runtime/auth/same-actor.ts +216 -0
- package/src/runtime/channel-retry-sweep.ts +65 -1
- package/src/runtime/guardian-reply-router.ts +10 -0
- package/src/runtime/local-actor-identity.ts +52 -11
- package/src/runtime/pending-interactions.ts +8 -0
- package/src/runtime/routes/__tests__/client-routes.test.ts +155 -0
- package/src/runtime/routes/__tests__/conversation-query-routes.test.ts +0 -5
- package/src/runtime/routes/__tests__/heartbeat-routes.test.ts +1 -1
- package/src/runtime/routes/client-routes.ts +20 -2
- package/src/runtime/routes/contact-routes.ts +0 -25
- package/src/runtime/routes/conversation-routes.ts +35 -26
- package/src/runtime/routes/debug-bash-routes.ts +163 -0
- package/src/runtime/routes/disk-pressure-routes.ts +121 -0
- package/src/runtime/routes/document-pdf-renderer.ts +6 -2
- package/src/runtime/routes/documents-routes.ts +2 -75
- package/src/runtime/routes/events-routes.ts +41 -9
- package/src/runtime/routes/host-bash-routes.ts +23 -3
- package/src/runtime/routes/host-cu-routes.ts +33 -6
- package/src/runtime/routes/host-file-routes.ts +32 -6
- package/src/runtime/routes/host-transfer-routes.ts +79 -16
- package/src/runtime/routes/identity-routes.ts +7 -138
- package/src/runtime/routes/inbound-message-handler.ts +77 -12
- package/src/runtime/routes/inbound-stages/guardian-reply-intercept.ts +3 -0
- package/src/runtime/routes/index.ts +6 -0
- package/src/runtime/routes/memory-item-routes.test.ts +41 -15
- package/src/runtime/routes/memory-v2-routes.ts +33 -0
- package/src/runtime/routes/oauth-connect-routes.ts +153 -0
- package/src/runtime/verification-outbound-actions.ts +4 -4
- package/src/schedule/run-script.ts +37 -5
- package/src/schedule/scheduler.ts +20 -1
- package/src/security/encrypted-store.ts +2 -0
- package/src/security/secure-keys.ts +55 -0
- package/src/skills/remote-skill-policy.ts +4 -10
- package/src/subagent/index.ts +1 -7
- package/src/subagent/manager.ts +1 -15
- package/src/tasks/task-runner.ts +0 -1
- package/src/tasks/task-store.ts +0 -3
- package/src/tools/background-tool-registry.ts +17 -3
- package/src/tools/host-filesystem/edit.test.ts +151 -0
- package/src/tools/host-filesystem/edit.ts +43 -1
- package/src/tools/host-filesystem/read.test.ts +129 -0
- package/src/tools/host-filesystem/read.ts +43 -1
- package/src/tools/host-filesystem/transfer.test.ts +127 -2
- package/src/tools/host-filesystem/transfer.ts +56 -11
- package/src/tools/host-filesystem/write.test.ts +134 -0
- package/src/tools/host-filesystem/write.ts +43 -1
- package/src/tools/host-terminal/host-shell.ts +13 -6
- package/src/tools/mcp/mcp-tool-factory.ts +2 -1
- package/src/tools/memory/register.test.ts +12 -9
- package/src/tools/memory/register.ts +1 -2
- package/src/tools/provider-tool-name.ts +28 -0
- package/src/tools/registry.ts +30 -9
- package/src/tools/terminal/shell.ts +9 -1
- package/src/tools/tool-approval-handler.ts +31 -6
- package/src/tools/types.ts +24 -2
- package/src/tts/provider-catalog.ts +3 -5
- package/src/util/disk-usage.ts +138 -0
- package/src/util/platform.ts +21 -11
- package/src/util/process-liveness.ts +26 -0
- package/src/workspace/heartbeat-service.ts +19 -0
- package/src/workspace/migrations/065-bump-stale-heartbeat-interval.ts +60 -0
- package/src/workspace/migrations/066-seed-heartbeat-callsite-cost-default.ts +146 -0
- package/src/workspace/migrations/067-release-notes-safe-storage-limits.ts +72 -0
- package/src/workspace/migrations/068-release-notes-local-timezone.ts +65 -0
- package/src/workspace/migrations/registry.ts +8 -0
- package/src/__tests__/conversation-tool-setup-memory-scope.test.ts +0 -167
- package/src/memory/v2/__tests__/skill-qdrant.test.ts +0 -657
- package/src/memory/v2/skill-qdrant.ts +0 -404
- package/src/signals/bash.ts +0 -198
package/openapi.yaml
CHANGED
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
openapi: 3.0.0
|
|
4
4
|
info:
|
|
5
5
|
title: Vellum Assistant API
|
|
6
|
-
version: 0.7.
|
|
6
|
+
version: 0.7.3
|
|
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
|
|
@@ -2886,21 +2886,6 @@ paths:
|
|
|
2886
2886
|
- assistantMetadata
|
|
2887
2887
|
additionalProperties: false
|
|
2888
2888
|
/v1/contacts/{id}:
|
|
2889
|
-
delete:
|
|
2890
|
-
operationId: contacts_by_id_delete
|
|
2891
|
-
summary: Delete a contact
|
|
2892
|
-
description: Delete a contact by ID.
|
|
2893
|
-
tags:
|
|
2894
|
-
- contacts
|
|
2895
|
-
responses:
|
|
2896
|
-
"204":
|
|
2897
|
-
description: Successful response
|
|
2898
|
-
parameters:
|
|
2899
|
-
- name: id
|
|
2900
|
-
in: path
|
|
2901
|
-
required: true
|
|
2902
|
-
schema:
|
|
2903
|
-
type: string
|
|
2904
2889
|
get:
|
|
2905
2890
|
operationId: contacts_by_id_get
|
|
2906
2891
|
summary: Get a contact
|
|
@@ -4244,6 +4229,55 @@ paths:
|
|
|
4244
4229
|
- schedules
|
|
4245
4230
|
- timestamp
|
|
4246
4231
|
additionalProperties: false
|
|
4232
|
+
/v1/debug/bash:
|
|
4233
|
+
post:
|
|
4234
|
+
operationId: debug_bash_post
|
|
4235
|
+
summary: Execute a shell command in the assistant process
|
|
4236
|
+
description: Developer debugging tool. Requires the assistant to be running with VELLUM_DEBUG=1.
|
|
4237
|
+
tags:
|
|
4238
|
+
- debug
|
|
4239
|
+
responses:
|
|
4240
|
+
"200":
|
|
4241
|
+
description: Successful response
|
|
4242
|
+
content:
|
|
4243
|
+
application/json:
|
|
4244
|
+
schema:
|
|
4245
|
+
type: object
|
|
4246
|
+
properties:
|
|
4247
|
+
stdout:
|
|
4248
|
+
type: string
|
|
4249
|
+
stderr:
|
|
4250
|
+
type: string
|
|
4251
|
+
exitCode:
|
|
4252
|
+
anyOf:
|
|
4253
|
+
- type: number
|
|
4254
|
+
- type: "null"
|
|
4255
|
+
timedOut:
|
|
4256
|
+
type: boolean
|
|
4257
|
+
error:
|
|
4258
|
+
type: string
|
|
4259
|
+
required:
|
|
4260
|
+
- stdout
|
|
4261
|
+
- stderr
|
|
4262
|
+
- exitCode
|
|
4263
|
+
- timedOut
|
|
4264
|
+
additionalProperties: false
|
|
4265
|
+
requestBody:
|
|
4266
|
+
required: true
|
|
4267
|
+
content:
|
|
4268
|
+
application/json:
|
|
4269
|
+
schema:
|
|
4270
|
+
type: object
|
|
4271
|
+
properties:
|
|
4272
|
+
command:
|
|
4273
|
+
type: string
|
|
4274
|
+
description: Shell command to execute via bash -c
|
|
4275
|
+
timeoutMs:
|
|
4276
|
+
description: "Execution timeout in milliseconds (default: 30000)"
|
|
4277
|
+
type: number
|
|
4278
|
+
required:
|
|
4279
|
+
- command
|
|
4280
|
+
additionalProperties: false
|
|
4247
4281
|
/v1/defer/cancel:
|
|
4248
4282
|
post:
|
|
4249
4283
|
operationId: defer_cancel_post
|
|
@@ -4454,6 +4488,275 @@ paths:
|
|
|
4454
4488
|
- transcription
|
|
4455
4489
|
- context
|
|
4456
4490
|
additionalProperties: false
|
|
4491
|
+
/v1/disk-pressure/acknowledge:
|
|
4492
|
+
post:
|
|
4493
|
+
operationId: diskpressure_acknowledge_post
|
|
4494
|
+
summary: Acknowledge disk pressure
|
|
4495
|
+
description: Acknowledge the current disk pressure lock and enter cleanup mode without overriding assistant protections.
|
|
4496
|
+
tags:
|
|
4497
|
+
- disk-pressure
|
|
4498
|
+
responses:
|
|
4499
|
+
"200":
|
|
4500
|
+
description: Successful response
|
|
4501
|
+
content:
|
|
4502
|
+
application/json:
|
|
4503
|
+
schema:
|
|
4504
|
+
type: object
|
|
4505
|
+
properties:
|
|
4506
|
+
status:
|
|
4507
|
+
type: object
|
|
4508
|
+
properties:
|
|
4509
|
+
enabled:
|
|
4510
|
+
type: boolean
|
|
4511
|
+
state:
|
|
4512
|
+
type: string
|
|
4513
|
+
enum:
|
|
4514
|
+
- disabled
|
|
4515
|
+
- ok
|
|
4516
|
+
- critical
|
|
4517
|
+
- unknown
|
|
4518
|
+
locked:
|
|
4519
|
+
type: boolean
|
|
4520
|
+
acknowledged:
|
|
4521
|
+
type: boolean
|
|
4522
|
+
overrideActive:
|
|
4523
|
+
type: boolean
|
|
4524
|
+
effectivelyLocked:
|
|
4525
|
+
type: boolean
|
|
4526
|
+
lockId:
|
|
4527
|
+
anyOf:
|
|
4528
|
+
- type: string
|
|
4529
|
+
- type: "null"
|
|
4530
|
+
usagePercent:
|
|
4531
|
+
anyOf:
|
|
4532
|
+
- type: number
|
|
4533
|
+
- type: "null"
|
|
4534
|
+
thresholdPercent:
|
|
4535
|
+
type: number
|
|
4536
|
+
path:
|
|
4537
|
+
anyOf:
|
|
4538
|
+
- type: string
|
|
4539
|
+
- type: "null"
|
|
4540
|
+
lastCheckedAt:
|
|
4541
|
+
anyOf:
|
|
4542
|
+
- type: string
|
|
4543
|
+
- type: "null"
|
|
4544
|
+
blockedCapabilities:
|
|
4545
|
+
type: array
|
|
4546
|
+
items:
|
|
4547
|
+
type: string
|
|
4548
|
+
enum:
|
|
4549
|
+
- agent-turns
|
|
4550
|
+
- background-work
|
|
4551
|
+
- remote-ingress
|
|
4552
|
+
error:
|
|
4553
|
+
anyOf:
|
|
4554
|
+
- type: string
|
|
4555
|
+
- type: "null"
|
|
4556
|
+
required:
|
|
4557
|
+
- enabled
|
|
4558
|
+
- state
|
|
4559
|
+
- locked
|
|
4560
|
+
- acknowledged
|
|
4561
|
+
- overrideActive
|
|
4562
|
+
- effectivelyLocked
|
|
4563
|
+
- lockId
|
|
4564
|
+
- usagePercent
|
|
4565
|
+
- thresholdPercent
|
|
4566
|
+
- path
|
|
4567
|
+
- lastCheckedAt
|
|
4568
|
+
- blockedCapabilities
|
|
4569
|
+
- error
|
|
4570
|
+
additionalProperties: false
|
|
4571
|
+
required:
|
|
4572
|
+
- status
|
|
4573
|
+
additionalProperties: false
|
|
4574
|
+
"409":
|
|
4575
|
+
description: No active lock or lock already acknowledged.
|
|
4576
|
+
/v1/disk-pressure/override:
|
|
4577
|
+
post:
|
|
4578
|
+
operationId: diskpressure_override_post
|
|
4579
|
+
summary: Override disk pressure
|
|
4580
|
+
description: Override the current disk pressure lock only after confirming "I understand the risks".
|
|
4581
|
+
tags:
|
|
4582
|
+
- disk-pressure
|
|
4583
|
+
responses:
|
|
4584
|
+
"200":
|
|
4585
|
+
description: Successful response
|
|
4586
|
+
content:
|
|
4587
|
+
application/json:
|
|
4588
|
+
schema:
|
|
4589
|
+
type: object
|
|
4590
|
+
properties:
|
|
4591
|
+
status:
|
|
4592
|
+
type: object
|
|
4593
|
+
properties:
|
|
4594
|
+
enabled:
|
|
4595
|
+
type: boolean
|
|
4596
|
+
state:
|
|
4597
|
+
type: string
|
|
4598
|
+
enum:
|
|
4599
|
+
- disabled
|
|
4600
|
+
- ok
|
|
4601
|
+
- critical
|
|
4602
|
+
- unknown
|
|
4603
|
+
locked:
|
|
4604
|
+
type: boolean
|
|
4605
|
+
acknowledged:
|
|
4606
|
+
type: boolean
|
|
4607
|
+
overrideActive:
|
|
4608
|
+
type: boolean
|
|
4609
|
+
effectivelyLocked:
|
|
4610
|
+
type: boolean
|
|
4611
|
+
lockId:
|
|
4612
|
+
anyOf:
|
|
4613
|
+
- type: string
|
|
4614
|
+
- type: "null"
|
|
4615
|
+
usagePercent:
|
|
4616
|
+
anyOf:
|
|
4617
|
+
- type: number
|
|
4618
|
+
- type: "null"
|
|
4619
|
+
thresholdPercent:
|
|
4620
|
+
type: number
|
|
4621
|
+
path:
|
|
4622
|
+
anyOf:
|
|
4623
|
+
- type: string
|
|
4624
|
+
- type: "null"
|
|
4625
|
+
lastCheckedAt:
|
|
4626
|
+
anyOf:
|
|
4627
|
+
- type: string
|
|
4628
|
+
- type: "null"
|
|
4629
|
+
blockedCapabilities:
|
|
4630
|
+
type: array
|
|
4631
|
+
items:
|
|
4632
|
+
type: string
|
|
4633
|
+
enum:
|
|
4634
|
+
- agent-turns
|
|
4635
|
+
- background-work
|
|
4636
|
+
- remote-ingress
|
|
4637
|
+
error:
|
|
4638
|
+
anyOf:
|
|
4639
|
+
- type: string
|
|
4640
|
+
- type: "null"
|
|
4641
|
+
required:
|
|
4642
|
+
- enabled
|
|
4643
|
+
- state
|
|
4644
|
+
- locked
|
|
4645
|
+
- acknowledged
|
|
4646
|
+
- overrideActive
|
|
4647
|
+
- effectivelyLocked
|
|
4648
|
+
- lockId
|
|
4649
|
+
- usagePercent
|
|
4650
|
+
- thresholdPercent
|
|
4651
|
+
- path
|
|
4652
|
+
- lastCheckedAt
|
|
4653
|
+
- blockedCapabilities
|
|
4654
|
+
- error
|
|
4655
|
+
additionalProperties: false
|
|
4656
|
+
required:
|
|
4657
|
+
- status
|
|
4658
|
+
additionalProperties: false
|
|
4659
|
+
"400":
|
|
4660
|
+
description: Confirmation phrase is invalid.
|
|
4661
|
+
"409":
|
|
4662
|
+
description: No active lock or lock already overridden.
|
|
4663
|
+
requestBody:
|
|
4664
|
+
required: true
|
|
4665
|
+
content:
|
|
4666
|
+
application/json:
|
|
4667
|
+
schema:
|
|
4668
|
+
type: object
|
|
4669
|
+
properties:
|
|
4670
|
+
confirmation:
|
|
4671
|
+
type: string
|
|
4672
|
+
required:
|
|
4673
|
+
- confirmation
|
|
4674
|
+
additionalProperties: false
|
|
4675
|
+
/v1/disk-pressure/status:
|
|
4676
|
+
get:
|
|
4677
|
+
operationId: diskpressure_status_get
|
|
4678
|
+
summary: Get disk pressure status
|
|
4679
|
+
description:
|
|
4680
|
+
Return the current disk pressure status snapshot. When safe storage limits are disabled, returns a disabled
|
|
4681
|
+
status.
|
|
4682
|
+
tags:
|
|
4683
|
+
- disk-pressure
|
|
4684
|
+
responses:
|
|
4685
|
+
"200":
|
|
4686
|
+
description: Successful response
|
|
4687
|
+
content:
|
|
4688
|
+
application/json:
|
|
4689
|
+
schema:
|
|
4690
|
+
type: object
|
|
4691
|
+
properties:
|
|
4692
|
+
status:
|
|
4693
|
+
type: object
|
|
4694
|
+
properties:
|
|
4695
|
+
enabled:
|
|
4696
|
+
type: boolean
|
|
4697
|
+
state:
|
|
4698
|
+
type: string
|
|
4699
|
+
enum:
|
|
4700
|
+
- disabled
|
|
4701
|
+
- ok
|
|
4702
|
+
- critical
|
|
4703
|
+
- unknown
|
|
4704
|
+
locked:
|
|
4705
|
+
type: boolean
|
|
4706
|
+
acknowledged:
|
|
4707
|
+
type: boolean
|
|
4708
|
+
overrideActive:
|
|
4709
|
+
type: boolean
|
|
4710
|
+
effectivelyLocked:
|
|
4711
|
+
type: boolean
|
|
4712
|
+
lockId:
|
|
4713
|
+
anyOf:
|
|
4714
|
+
- type: string
|
|
4715
|
+
- type: "null"
|
|
4716
|
+
usagePercent:
|
|
4717
|
+
anyOf:
|
|
4718
|
+
- type: number
|
|
4719
|
+
- type: "null"
|
|
4720
|
+
thresholdPercent:
|
|
4721
|
+
type: number
|
|
4722
|
+
path:
|
|
4723
|
+
anyOf:
|
|
4724
|
+
- type: string
|
|
4725
|
+
- type: "null"
|
|
4726
|
+
lastCheckedAt:
|
|
4727
|
+
anyOf:
|
|
4728
|
+
- type: string
|
|
4729
|
+
- type: "null"
|
|
4730
|
+
blockedCapabilities:
|
|
4731
|
+
type: array
|
|
4732
|
+
items:
|
|
4733
|
+
type: string
|
|
4734
|
+
enum:
|
|
4735
|
+
- agent-turns
|
|
4736
|
+
- background-work
|
|
4737
|
+
- remote-ingress
|
|
4738
|
+
error:
|
|
4739
|
+
anyOf:
|
|
4740
|
+
- type: string
|
|
4741
|
+
- type: "null"
|
|
4742
|
+
required:
|
|
4743
|
+
- enabled
|
|
4744
|
+
- state
|
|
4745
|
+
- locked
|
|
4746
|
+
- acknowledged
|
|
4747
|
+
- overrideActive
|
|
4748
|
+
- effectivelyLocked
|
|
4749
|
+
- lockId
|
|
4750
|
+
- usagePercent
|
|
4751
|
+
- thresholdPercent
|
|
4752
|
+
- path
|
|
4753
|
+
- lastCheckedAt
|
|
4754
|
+
- blockedCapabilities
|
|
4755
|
+
- error
|
|
4756
|
+
additionalProperties: false
|
|
4757
|
+
required:
|
|
4758
|
+
- status
|
|
4759
|
+
additionalProperties: false
|
|
4457
4760
|
/v1/documents:
|
|
4458
4761
|
get:
|
|
4459
4762
|
operationId: documents_get
|
|
@@ -4615,6 +4918,32 @@ paths:
|
|
|
4615
4918
|
schema:
|
|
4616
4919
|
type: string
|
|
4617
4920
|
description: Scope to a single conversation
|
|
4921
|
+
/v1/events/emit:
|
|
4922
|
+
post:
|
|
4923
|
+
operationId: events_emit_post
|
|
4924
|
+
summary: Emit an assistant event
|
|
4925
|
+
description:
|
|
4926
|
+
Trigger an in-process assistant event by kind. Used by the gateway after owning a write that the assistant
|
|
4927
|
+
runtime would normally emit.
|
|
4928
|
+
tags:
|
|
4929
|
+
- events
|
|
4930
|
+
responses:
|
|
4931
|
+
"204":
|
|
4932
|
+
description: Successful response
|
|
4933
|
+
requestBody:
|
|
4934
|
+
required: true
|
|
4935
|
+
content:
|
|
4936
|
+
application/json:
|
|
4937
|
+
schema:
|
|
4938
|
+
type: object
|
|
4939
|
+
properties:
|
|
4940
|
+
kind:
|
|
4941
|
+
type: string
|
|
4942
|
+
enum:
|
|
4943
|
+
- contacts_changed
|
|
4944
|
+
required:
|
|
4945
|
+
- kind
|
|
4946
|
+
additionalProperties: false
|
|
4618
4947
|
/v1/export:
|
|
4619
4948
|
post:
|
|
4620
4949
|
operationId: export_post
|
|
@@ -6083,7 +6412,9 @@ paths:
|
|
|
6083
6412
|
"400":
|
|
6084
6413
|
description: x-vellum-client-id header is missing for a targeted host bash request.
|
|
6085
6414
|
"403":
|
|
6086
|
-
description:
|
|
6415
|
+
description:
|
|
6416
|
+
Submitting client does not match the targeted client, or the submitting actor's principal does not match
|
|
6417
|
+
the target client's actor.
|
|
6087
6418
|
"404":
|
|
6088
6419
|
description: No pending interaction found for the given requestId.
|
|
6089
6420
|
"409":
|
|
@@ -6241,7 +6572,9 @@ paths:
|
|
|
6241
6572
|
"400":
|
|
6242
6573
|
description: x-vellum-client-id header is missing for a targeted host CU request.
|
|
6243
6574
|
"403":
|
|
6244
|
-
description:
|
|
6575
|
+
description:
|
|
6576
|
+
Submitting client does not match the targeted client, or the submitting actor's principal does not match
|
|
6577
|
+
the target client's actor.
|
|
6245
6578
|
"404":
|
|
6246
6579
|
description: No pending interaction found for the given requestId, or the conversation/proxy no longer exists.
|
|
6247
6580
|
"409":
|
|
@@ -6307,7 +6640,9 @@ paths:
|
|
|
6307
6640
|
"400":
|
|
6308
6641
|
description: x-vellum-client-id header is missing for a targeted host file request.
|
|
6309
6642
|
"403":
|
|
6310
|
-
description:
|
|
6643
|
+
description:
|
|
6644
|
+
Submitting client does not match the targeted client, or the submitting actor's principal does not match
|
|
6645
|
+
the target client's actor.
|
|
6311
6646
|
"404":
|
|
6312
6647
|
description: No pending interaction found for the given requestId.
|
|
6313
6648
|
"409":
|
|
@@ -6357,7 +6692,9 @@ paths:
|
|
|
6357
6692
|
"400":
|
|
6358
6693
|
description: x-vellum-client-id header is missing for a targeted host transfer request.
|
|
6359
6694
|
"403":
|
|
6360
|
-
description:
|
|
6695
|
+
description:
|
|
6696
|
+
Submitting client does not match the targeted client, or the submitting actor's principal does not match
|
|
6697
|
+
the target client's actor.
|
|
6361
6698
|
requestBody:
|
|
6362
6699
|
required: true
|
|
6363
6700
|
content:
|
|
@@ -6784,6 +7121,61 @@ paths:
|
|
|
6784
7121
|
required:
|
|
6785
7122
|
- state
|
|
6786
7123
|
additionalProperties: false
|
|
7124
|
+
/v1/internal/oauth/connect/start:
|
|
7125
|
+
post:
|
|
7126
|
+
operationId: internal_oauth_connect_start_post
|
|
7127
|
+
summary: Start daemon-owned OAuth connect flow
|
|
7128
|
+
description: Starts an OAuth connect flow in the daemon and returns the authorization URL for the CLI to open in the browser.
|
|
7129
|
+
tags:
|
|
7130
|
+
- internal
|
|
7131
|
+
responses:
|
|
7132
|
+
"200":
|
|
7133
|
+
description: Successful response
|
|
7134
|
+
requestBody:
|
|
7135
|
+
required: true
|
|
7136
|
+
content:
|
|
7137
|
+
application/json:
|
|
7138
|
+
schema:
|
|
7139
|
+
type: object
|
|
7140
|
+
properties:
|
|
7141
|
+
service:
|
|
7142
|
+
type: string
|
|
7143
|
+
clientId:
|
|
7144
|
+
type: string
|
|
7145
|
+
clientSecret:
|
|
7146
|
+
type: string
|
|
7147
|
+
callbackTransport:
|
|
7148
|
+
type: string
|
|
7149
|
+
enum:
|
|
7150
|
+
- loopback
|
|
7151
|
+
- gateway
|
|
7152
|
+
requestedScopes:
|
|
7153
|
+
type: array
|
|
7154
|
+
items:
|
|
7155
|
+
type: string
|
|
7156
|
+
required:
|
|
7157
|
+
- service
|
|
7158
|
+
- clientId
|
|
7159
|
+
- callbackTransport
|
|
7160
|
+
additionalProperties: false
|
|
7161
|
+
/v1/internal/oauth/connect/status/{state}:
|
|
7162
|
+
get:
|
|
7163
|
+
operationId: internal_oauth_connect_status_by_state_get
|
|
7164
|
+
summary: Poll daemon OAuth connect flow status
|
|
7165
|
+
description: Returns the current status of an in-flight daemon-owned OAuth connect flow (pending/complete/error).
|
|
7166
|
+
tags:
|
|
7167
|
+
- internal
|
|
7168
|
+
responses:
|
|
7169
|
+
"200":
|
|
7170
|
+
description: Successful response
|
|
7171
|
+
"404":
|
|
7172
|
+
description: No active OAuth connect flow for the given state token
|
|
7173
|
+
parameters:
|
|
7174
|
+
- name: state
|
|
7175
|
+
in: path
|
|
7176
|
+
required: true
|
|
7177
|
+
schema:
|
|
7178
|
+
type: string
|
|
6787
7179
|
/v1/internal/twilio/connect-action:
|
|
6788
7180
|
post:
|
|
6789
7181
|
operationId: internal_twilio_connectaction_post
|
|
@@ -7118,6 +7510,35 @@ paths:
|
|
|
7118
7510
|
required:
|
|
7119
7511
|
- op
|
|
7120
7512
|
additionalProperties: false
|
|
7513
|
+
/v1/memory/v2/concept-frequency:
|
|
7514
|
+
post:
|
|
7515
|
+
operationId: memory_v2_conceptfrequency_post
|
|
7516
|
+
summary: Aggregate per-concept injection frequency from activation logs
|
|
7517
|
+
description:
|
|
7518
|
+
"Debug-only. Aggregates the existing memory_v2_activation_logs table by (slug, status) and cross-references
|
|
7519
|
+
on-disk concept pages so an operator can see which concepts get injected often, which get scored but rejected,
|
|
7520
|
+
and which on-disk pages never even surface as candidates. Optional filters: conversationId narrows to a single
|
|
7521
|
+
conversation; sinceMs restricts to logs created at-or-after the given epoch ms timestamp."
|
|
7522
|
+
tags:
|
|
7523
|
+
- memory
|
|
7524
|
+
responses:
|
|
7525
|
+
"200":
|
|
7526
|
+
description: Successful response
|
|
7527
|
+
requestBody:
|
|
7528
|
+
required: true
|
|
7529
|
+
content:
|
|
7530
|
+
application/json:
|
|
7531
|
+
schema:
|
|
7532
|
+
type: object
|
|
7533
|
+
properties:
|
|
7534
|
+
conversationId:
|
|
7535
|
+
type: string
|
|
7536
|
+
minLength: 1
|
|
7537
|
+
sinceMs:
|
|
7538
|
+
type: integer
|
|
7539
|
+
minimum: 0
|
|
7540
|
+
maximum: 9007199254740991
|
|
7541
|
+
additionalProperties: false
|
|
7121
7542
|
/v1/memory/v2/concept-page:
|
|
7122
7543
|
post:
|
|
7123
7544
|
operationId: memory_v2_conceptpage_post
|
|
@@ -7340,6 +7761,8 @@ paths:
|
|
|
7340
7761
|
type: string
|
|
7341
7762
|
slashCommand:
|
|
7342
7763
|
type: string
|
|
7764
|
+
clientTimezone:
|
|
7765
|
+
type: string
|
|
7343
7766
|
inferenceProfile:
|
|
7344
7767
|
anyOf:
|
|
7345
7768
|
- type: string
|
|
@@ -11403,7 +11826,9 @@ paths:
|
|
|
11403
11826
|
"400":
|
|
11404
11827
|
description: x-vellum-client-id header is missing for a targeted transfer.
|
|
11405
11828
|
"403":
|
|
11406
|
-
description:
|
|
11829
|
+
description:
|
|
11830
|
+
Submitting client does not match the targeted client, or the submitting actor's principal does not match
|
|
11831
|
+
the target client's actor.
|
|
11407
11832
|
parameters:
|
|
11408
11833
|
- name: transferId
|
|
11409
11834
|
in: path
|
|
@@ -11422,7 +11847,9 @@ paths:
|
|
|
11422
11847
|
"400":
|
|
11423
11848
|
description: x-vellum-client-id header is missing for a targeted transfer.
|
|
11424
11849
|
"403":
|
|
11425
|
-
description:
|
|
11850
|
+
description:
|
|
11851
|
+
Submitting client does not match the targeted client, or the submitting actor's principal does not match
|
|
11852
|
+
the target client's actor.
|
|
11426
11853
|
parameters:
|
|
11427
11854
|
- name: transferId
|
|
11428
11855
|
in: path
|
package/package.json
CHANGED
|
@@ -13,8 +13,9 @@
|
|
|
13
13
|
* differs in two notable ways:
|
|
14
14
|
* 1. Result payloads carry `pngBase64` (not screenshots-as-strings) and
|
|
15
15
|
* surface as image content blocks with `media_type: "image/png"`.
|
|
16
|
-
* 2. A module-level
|
|
17
|
-
* conversation may hold an active session at a time
|
|
16
|
+
* 2. A module-level session lock binds `(conversationId, app)` — only
|
|
17
|
+
* one conversation may hold an active session at a time, and non-start
|
|
18
|
+
* tools must target the same `app` the user approved at start time.
|
|
18
19
|
*/
|
|
19
20
|
import { afterEach, beforeEach, describe, expect, mock, test } from "bun:test";
|
|
20
21
|
|
|
@@ -87,8 +88,9 @@ mock.module("../runtime/pending-interactions.js", () => ({
|
|
|
87
88
|
|
|
88
89
|
const {
|
|
89
90
|
HostAppControlProxy,
|
|
90
|
-
|
|
91
|
-
|
|
91
|
+
_getActiveAppControlSession,
|
|
92
|
+
_resetActiveAppControlSession,
|
|
93
|
+
_setActiveAppControlSession,
|
|
92
94
|
} = await import("../daemon/host-app-control-proxy.js");
|
|
93
95
|
const { ROUTES } = await import("../runtime/routes/host-app-control-routes.js");
|
|
94
96
|
const { surfaceProxyResolver } =
|
|
@@ -176,11 +178,11 @@ describe("app-control end-to-end flow", () => {
|
|
|
176
178
|
pending.clear();
|
|
177
179
|
clearConversations();
|
|
178
180
|
mockHasClient = true;
|
|
179
|
-
|
|
181
|
+
_resetActiveAppControlSession();
|
|
180
182
|
});
|
|
181
183
|
|
|
182
184
|
afterEach(() => {
|
|
183
|
-
|
|
185
|
+
_resetActiveAppControlSession();
|
|
184
186
|
clearConversations();
|
|
185
187
|
});
|
|
186
188
|
|
|
@@ -238,8 +240,10 @@ describe("app-control end-to-end flow", () => {
|
|
|
238
240
|
},
|
|
239
241
|
});
|
|
240
242
|
|
|
241
|
-
//
|
|
242
|
-
|
|
243
|
+
// Session lock is held by this conversation now, bound to the started app.
|
|
244
|
+
const session = _getActiveAppControlSession();
|
|
245
|
+
expect(session?.conversationId).toBe(conversationId);
|
|
246
|
+
expect(session?.app).toBe("com.example.app");
|
|
243
247
|
|
|
244
248
|
proxy.dispose();
|
|
245
249
|
});
|
|
@@ -253,6 +257,12 @@ describe("app-control end-to-end flow", () => {
|
|
|
253
257
|
const proxy = new HostAppControlProxy(conversationId);
|
|
254
258
|
const ctx = buildContext(proxy, conversationId);
|
|
255
259
|
registerConversation(conversationId, proxy);
|
|
260
|
+
// Prime a session so observe passes the auth gate. This test exercises
|
|
261
|
+
// the result-formatting path, not the start flow.
|
|
262
|
+
_setActiveAppControlSession({
|
|
263
|
+
conversationId,
|
|
264
|
+
app: "com.example.app",
|
|
265
|
+
});
|
|
256
266
|
|
|
257
267
|
const resultPromise = surfaceProxyResolver(ctx, "app_control_observe", {
|
|
258
268
|
tool: "observe",
|
|
@@ -306,7 +316,7 @@ describe("app-control end-to-end flow", () => {
|
|
|
306
316
|
});
|
|
307
317
|
await postResult({ state: "running", pngBase64: TINY_PNG_B64 });
|
|
308
318
|
await startPromise;
|
|
309
|
-
expect(
|
|
319
|
+
expect(_getActiveAppControlSession()?.conversationId).toBe(conversationId);
|
|
310
320
|
|
|
311
321
|
// Wrap dispose to verify it was called by the resolver.
|
|
312
322
|
let disposeCalls = 0;
|
|
@@ -328,7 +338,7 @@ describe("app-control end-to-end flow", () => {
|
|
|
328
338
|
expect(sentMessages).toHaveLength(0);
|
|
329
339
|
expect(disposeCalls).toBe(1);
|
|
330
340
|
// Lock released.
|
|
331
|
-
expect(
|
|
341
|
+
expect(_getActiveAppControlSession()).toBeUndefined();
|
|
332
342
|
});
|
|
333
343
|
|
|
334
344
|
// -------------------------------------------------------------------------
|
|
@@ -347,7 +357,7 @@ describe("app-control end-to-end flow", () => {
|
|
|
347
357
|
await postResult({ state: "running", pngBase64: TINY_PNG_B64 });
|
|
348
358
|
const resultA = await startA;
|
|
349
359
|
expect(resultA.isError).toBe(false);
|
|
350
|
-
expect(
|
|
360
|
+
expect(_getActiveAppControlSession()?.conversationId).toBe("conv-a");
|
|
351
361
|
|
|
352
362
|
// Second conversation tries to start while conv-a holds the lock.
|
|
353
363
|
sentMessages.length = 0;
|