| 12345678910111213141516171819202122232425262728293031323334353637 |
- import { run } from "@kirincode-ai/tui"
- import { TuiConfig } from "@kirincode-ai/tui/config"
- import { Effect } from "effect"
- import { AppNodeBuilder } from "@kirincode-ai/core/effect/app-node-builder"
- import { Global } from "@kirincode-ai/core/global"
- export function runTui(transport: { url: string; headers: RequestInit["headers"] }) {
- const config = TuiConfig.resolve({}, { terminalSuspend: false })
- return run({
- ...transport,
- args: {},
- config,
- fetch: gracefulFetch,
- pluginHost: {
- async start() {},
- async dispose() {},
- },
- }).pipe(Effect.provide(AppNodeBuilder.build(Global.node)))
- }
- const legacyDefaults: Record<string, unknown> = {
- "/config/providers": { providers: [], default: {} },
- "/provider": { all: [], default: {}, connected: [] },
- "/agent": [],
- "/config": {},
- }
- const gracefulFetch = Object.assign(
- async (input: RequestInfo | URL, init?: RequestInit) => {
- const response = await fetch(input, init)
- if (response.status !== 404) return response
- const fallback = legacyDefaults[new URL(input instanceof Request ? input.url : input).pathname]
- if (fallback === undefined) return response
- return Response.json(fallback)
- },
- { preconnect: fetch.preconnect },
- )
|