diff options
| author | Adam Malczewski <[email protected]> | 2026-06-07 00:39:31 +0900 |
|---|---|---|
| committer | Adam Malczewski <[email protected]> | 2026-06-07 00:39:31 +0900 |
| commit | d96e504d197140e83c379a02527cf8148925ea67 (patch) | |
| tree | 8e94ca913c93e279fb0a2b9fb8ef2d78220dd57f /src/app/resolve-http-url.ts | |
| parent | 979fd1aac559805e05b36369e0fb756a8ec517dd (diff) | |
| download | dispatch-web-d96e504d197140e83c379a02527cf8148925ea67.tar.gz dispatch-web-d96e504d197140e83c379a02527cf8148925ea67.zip | |
Slice 2 wave 3: wire chat end-to-end at the composition root
- app/store.svelte.ts: one WebSocket carries surfaces AND chat (onChat ->
chatStore.handleDelta); build the conversation cache over the IndexedDB
adapter; createChatStore wired to transport (socket.send), injected HTTP
historySync, and the cache; load() on construct
- app/resolve-http-url.ts: host-relative HTTP base (port 24203), mirrors
resolve-ws-url; injected fetch
- App.svelte: render ChatView + Composer alongside the surface picker
- createAppStore gains optional injection points (httpUrl/fetchImpl/indexedDB/
conversationId) for tests
- vitest-setup.ts: fake-indexeddb/auto for jsdom IndexedDB (orchestrator-owned
config; agent change adopted)
Verified green (x2, stable): svelte-check 0/0, vitest 218, biome clean, build ok.
Slice 2 (conversation transcript: cache + delta streaming) feature-complete.
Diffstat (limited to 'src/app/resolve-http-url.ts')
| -rw-r--r-- | src/app/resolve-http-url.ts | 28 |
1 files changed, 28 insertions, 0 deletions
diff --git a/src/app/resolve-http-url.ts b/src/app/resolve-http-url.ts new file mode 100644 index 0000000..357d2fc --- /dev/null +++ b/src/app/resolve-http-url.ts @@ -0,0 +1,28 @@ +export interface HttpUrlEnv { + readonly VITE_HTTP_URL?: string; + readonly VITE_HTTP_PORT?: string; +} + +export interface HttpUrlLocation { + readonly protocol: string; + readonly hostname: string; +} + +const DEFAULT_PORT = "24203"; +const DEFAULT_FALLBACK = "http://localhost:24203"; + +export function resolveHttpUrl(env: HttpUrlEnv, location?: HttpUrlLocation): string { + if (env.VITE_HTTP_URL !== undefined && env.VITE_HTTP_URL !== "") { + return env.VITE_HTTP_URL; + } + + if (location === undefined) { + return DEFAULT_FALLBACK; + } + + const port = + env.VITE_HTTP_PORT !== undefined && env.VITE_HTTP_PORT !== "" + ? env.VITE_HTTP_PORT + : DEFAULT_PORT; + return `${location.protocol}//${location.hostname}:${port}`; +} |
