Files
locode/src/ui/ink/index.tsx
T
2026-07-06 12:41:15 +09:00

34 lines
1.0 KiB
TypeScript

import { render } from "ink";
import { makeClient } from "../../backend/client.js";
import type { ToolCallMode } from "../../backend/capabilityProbe.js";
import { App } from "./App.js";
export interface RunInkAppOptions {
baseURL: string;
model?: string;
suggestedModel?: string;
cwd: string;
toolModeOverride?: ToolCallMode;
}
export async function runInkApp(opts: RunInkAppOptions): Promise<void> {
if (!process.stdin.isTTY) {
console.error(
"locode needs an interactive terminal (it can't read piped or redirected input). Run it directly in your terminal.",
);
process.exit(1);
}
// Start the UI immediately — no blocking network calls before rendering.
// Model listing happens inside the App component so the user sees the UI right away.
const instance = render(
<App
baseURL={opts.baseURL}
cwd={opts.cwd}
toolModeOverride={opts.toolModeOverride}
initialModel={opts.model}
suggestedModel={opts.suggestedModel}
/>,
);
await instance.waitUntilExit();
}