From d5633cf6e007eaf8255a44529a638d2466a74ba3 Mon Sep 17 00:00:00 2001 From: Adam Malczewski Date: Sat, 27 Jun 2026 03:40:38 +0900 Subject: feat(vision-handoff): implement vision for capable models and universal vision handoff --- packages/host-bin/package.json | 3 ++- packages/host-bin/src/main.ts | 8 ++++++++ packages/host-bin/tsconfig.json | 3 +++ 3 files changed, 13 insertions(+), 1 deletion(-) (limited to 'packages/host-bin') diff --git a/packages/host-bin/package.json b/packages/host-bin/package.json index 65ea305..b5ab954 100644 --- a/packages/host-bin/package.json +++ b/packages/host-bin/package.json @@ -33,6 +33,7 @@ "@dispatch/surface-loaded-extensions": "workspace:*", "@dispatch/surface-registry": "workspace:*", "@dispatch/transport-ws": "workspace:*", - "@dispatch/system-prompt": "workspace:*" + "@dispatch/system-prompt": "workspace:*", + "@dispatch/vision-handoff": "workspace:*" } } diff --git a/packages/host-bin/src/main.ts b/packages/host-bin/src/main.ts index 8633052..a5dabab 100644 --- a/packages/host-bin/src/main.ts +++ b/packages/host-bin/src/main.ts @@ -43,6 +43,7 @@ import { extension as toolWriteFileExt } from "@dispatch/tool-write-file"; import { extension as toolYoutubeTranscriptExt } from "@dispatch/tool-youtube-transcript"; import { createTransportHttpExtension } from "@dispatch/transport-http"; import { createTransportWsExtension } from "@dispatch/transport-ws"; +import { extension as visionHandoffExt } from "@dispatch/vision-handoff"; import type { ChildHandle } from "./collector-supervisor.js"; import { createCollectorSupervisor } from "./collector-supervisor.js"; import { configMapToAccess, envToConfigMap } from "./config.js"; @@ -204,6 +205,13 @@ async function boot(): Promise { const extensions: Extension[] = [ ...CORE_EXTENSIONS, createCredentialStoreExtension({ credentials }), + // vision-handoff activates AFTER credential-store (it resolves the + // credential-store service at activate time to find vision-capable models). + // Placed here, not in CORE_EXTENSIONS, so the service is available when it + // activates. The session-orchestrator resolves its service LAZILY + // (per-turn), so activation order between it and session-orchestrator + // doesn't matter. + visionHandoffExt, ...externalExtensions, ]; diff --git a/packages/host-bin/tsconfig.json b/packages/host-bin/tsconfig.json index 2b1edf5..305274c 100644 --- a/packages/host-bin/tsconfig.json +++ b/packages/host-bin/tsconfig.json @@ -60,6 +60,9 @@ }, { "path": "../transport-ws" + }, + { + "path": "../vision-handoff" } ] } -- cgit v1.2.3