34 lines
1.0 KiB
TypeScript
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();
|
|
} |