diff --git a/lint/plugin.js b/lint/plugin.js index 3c2ed0f48..b2dec8298 100644 --- a/lint/plugin.js +++ b/lint/plugin.js @@ -1116,7 +1116,7 @@ const noDirectOpenPencilWindowInternals = { context.report({ node, message: - 'Do not access window.__OPEN_PENCIL* directly. Use src/app/window-api.ts or tests/helpers/store.ts instead.' + 'Do not access window.__OPEN_PENCIL* directly. Use src/app/browser-bridge.ts or tests/helpers/store.ts instead.' }) } } diff --git a/src/app/ai/chat/use.ts b/src/app/ai/chat/use.ts index 950c74d46..77bbfbea1 100644 --- a/src/app/ai/chat/use.ts +++ b/src/app/ai/chat/use.ts @@ -19,8 +19,8 @@ import { unsplashAccessKey } from '@/app/ai/chat/storage' import { createChatSessionManager } from '@/app/ai/chat/transports' +import { exposeChatTransportOverride } from '@/app/browser-bridge' import { getActiveEditorStore } from '@/app/editor/active-store' -import { setOpenPencilTransportFactorySetter } from '@/app/window-api' const activeTab = ref<'design' | 'code' | 'ai'>('design') @@ -40,7 +40,7 @@ const chatSession = createChatSessionManager({ registerAIChatEffects(chatSession.markTransportDirty) if (IS_BROWSER) { - setOpenPencilTransportFactorySetter((factory) => { + exposeChatTransportOverride((factory) => { chatSession.setOverrideTransport(factory) }) } diff --git a/src/app/window-api.ts b/src/app/browser-bridge.ts similarity index 72% rename from src/app/window-api.ts rename to src/app/browser-bridge.ts index 84c3269fb..e4041c676 100644 --- a/src/app/window-api.ts +++ b/src/app/browser-bridge.ts @@ -4,7 +4,7 @@ import type { EditorStore } from '@/app/editor/session/create' export interface OpenPencilWindowAPI { store?: EditorStore - setTransport?: (factory: () => ChatTransport) => void + setChatTransport?: (factory: () => ChatTransport) => void openFile?: (path: string) => Promise } @@ -23,10 +23,10 @@ export function setOpenPencilStore(store: EditorStore) { windowApi().store = store } -export function setOpenPencilTransportFactorySetter( - setTransport: (factory: () => ChatTransport) => void +export function exposeChatTransportOverride( + setChatTransport: (factory: () => ChatTransport) => void ) { - windowApi().setTransport = setTransport + windowApi().setChatTransport = setChatTransport } export function setOpenPencilOpenFileHandler(openFile: (path: string) => Promise) { diff --git a/src/app/shell/menu/files.ts b/src/app/shell/menu/files.ts index 941ff06bd..50b6ea025 100644 --- a/src/app/shell/menu/files.ts +++ b/src/app/shell/menu/files.ts @@ -1,8 +1,8 @@ import { useFileDialog } from '@vueuse/core' +import { setOpenPencilOpenFileHandler } from '@/app/browser-bridge' import { openFileInNewTab } from '@/app/tabs' import { isTauri } from '@/app/tauri/env' -import { setOpenPencilOpenFileHandler } from '@/app/window-api' import { IS_BROWSER } from '@/constants' const fileDialog = useFileDialog({ accept: '.fig,.pen', multiple: false, reset: true }) diff --git a/src/app/tabs/index.ts b/src/app/tabs/index.ts index ba2f5926b..9debbb5ed 100644 --- a/src/app/tabs/index.ts +++ b/src/app/tabs/index.ts @@ -4,10 +4,10 @@ import { BUILTIN_IO_FORMATS, IORegistry } from '@open-pencil/core/io' import { readFigFile } from '@open-pencil/core/io/formats/fig' import type { SceneGraph } from '@open-pencil/core/scene-graph' +import { setOpenPencilStore } from '@/app/browser-bridge' import { setActiveEditorStore } from '@/app/editor/active-store' import { createEditorStore } from '@/app/editor/session' import type { EditorStore } from '@/app/editor/session' -import { setOpenPencilStore } from '@/app/window-api' export interface Tab { id: string diff --git a/tests/e2e/chat/panel.spec.ts b/tests/e2e/chat/panel.spec.ts index 7f63e56d2..3e5100c42 100644 --- a/tests/e2e/chat/panel.spec.ts +++ b/tests/e2e/chat/panel.spec.ts @@ -27,12 +27,12 @@ test.afterAll(async () => { async function injectMockTransport(page: Page) { await page.evaluate(() => { - const setTransport = window.openPencil?.setTransport - if (!setTransport) throw new Error('Transport override not available') + const setChatTransport = window.openPencil?.setChatTransport + if (!setChatTransport) throw new Error('Transport override not available') let msgCounter = 0 - setTransport(() => ({ + setChatTransport(() => ({ async sendMessages({ messages }: {