blob: faa16ed2f827ab9bc872447ff52a8243eef14592 [file]
import { runMakaPiTui } from './pi-tui-runner.js';
import { createRuntimeHostTuiContext } from './runtime-host-tui-context.js';
export interface RunRuntimeHostTuiInput {
readonly workspaceRoot: string;
readonly cwd: string;
readonly resumeSessionId?: string;
readonly onProcessExit: (exitCode: number, error?: Error) => void;
}
export async function runRuntimeHostTui(input: RunRuntimeHostTuiInput): Promise<number> {
const context = await createRuntimeHostTuiContext({
rootPath: input.workspaceRoot,
cwd: input.cwd,
...(input.resumeSessionId ? { resumeSessionId: input.resumeSessionId } : {}),
});
try {
await runMakaPiTui({
driver: context.driver,
title: 'Maka',
cwd: context.cwd,
model: context.model,
models: context.modelChoices
.filter((choice) => choice.connectionSlug === context.connectionSlug)
.map((choice) => choice.model),
modelChoices: context.modelChoices,
connectionSlug: context.connectionSlug,
providerType: context.providerType,
modelContextWindow: context.modelContextWindow,
permissionMode: 'ask',
goalLifecycle: context.goalLifecycle,
listSkills: context.listSkills,
recap: context.recap,
subscribeShellRunUpdates: (listener) => context.driver.subscribeShellRunUpdates(listener),
listShellRunUpdates: (sessionId) => context.driver.listShellRunUpdates(sessionId),
onProcessExit: input.onProcessExit,
resumeSessionId: input.resumeSessionId,
});
const sessionId = context.driver.getSessionId();
if (sessionId)
process.stdout.write(`Resume this session with:\n maka --resume ${sessionId}\n`);
return 0;
} finally {
await context.close();
}
}