refactor(coding-agent): replace AgentSessionRuntimeHost with closure-based AgentSessionRuntime
- Replace AgentSessionRuntimeHost and bootstrap abstractions with AgentSessionRuntime - Runtime creation is now closure-based via CreateAgentSessionRuntimeFactory - Factory closes over process-global fixed inputs, recreates cwd-bound services per effective cwd - Session config (model, thinking, tools, scoped models) re-resolved per target cwd - CLI resource paths resolved once at startup as absolute paths - Swap lifecycle: teardown old, create next, apply next (hard fail on creation error) - Unified diagnostics model (info/warning/error) for args, services, session resolution, resources - No logging or process exits inside creation/parsing logic - Removed session_directory support - Removed session_switch and session_fork extension events (use session_start with reason) - Moved package/config CLI to package-manager-cli.ts - Fixed theme init for --resume session picker - Fixed flaky reftable footer test (content-based polling) - Fixed silent drop of unknown single-dash CLI flags - Added error diagnostics for missing explicit CLI resource paths - Updated SDK docs, examples, plans, exports, tests, changelog fixes #2753
This commit is contained in:
@@ -6,7 +6,7 @@ import {
|
||||
TUI_KEYBINDINGS,
|
||||
KeybindingsManager as TuiKeybindingsManager,
|
||||
} from "@mariozechner/pi-tui";
|
||||
import { existsSync, readFileSync, writeFileSync } from "fs";
|
||||
import { existsSync, readFileSync } from "fs";
|
||||
import { join } from "path";
|
||||
import { getAgentDir } from "../config.js";
|
||||
|
||||
@@ -219,7 +219,7 @@ function toKeybindingsConfig(value: unknown): KeybindingsConfig {
|
||||
return config;
|
||||
}
|
||||
|
||||
function migrateKeybindingNames(rawConfig: Record<string, unknown>): {
|
||||
export function migrateKeybindingsConfig(rawConfig: Record<string, unknown>): {
|
||||
config: Record<string, unknown>;
|
||||
migrated: boolean;
|
||||
} {
|
||||
@@ -269,18 +269,6 @@ function loadRawConfig(path: string): Record<string, unknown> | undefined {
|
||||
}
|
||||
}
|
||||
|
||||
export function migrateKeybindingsConfigFile(agentDir: string = getAgentDir()): boolean {
|
||||
const configPath = join(agentDir, "keybindings.json");
|
||||
const rawConfig = loadRawConfig(configPath);
|
||||
if (!rawConfig) return false;
|
||||
|
||||
const { config, migrated } = migrateKeybindingNames(rawConfig);
|
||||
if (!migrated) return false;
|
||||
|
||||
writeFileSync(configPath, `${JSON.stringify(config, null, 2)}\n`, "utf-8");
|
||||
return true;
|
||||
}
|
||||
|
||||
export class KeybindingsManager extends TuiKeybindingsManager {
|
||||
private configPath: string | undefined;
|
||||
|
||||
@@ -307,7 +295,7 @@ export class KeybindingsManager extends TuiKeybindingsManager {
|
||||
private static loadFromFile(path: string): KeybindingsConfig {
|
||||
const rawConfig = loadRawConfig(path);
|
||||
if (!rawConfig) return {};
|
||||
return toKeybindingsConfig(migrateKeybindingNames(rawConfig).config);
|
||||
return toKeybindingsConfig(migrateKeybindingsConfig(rawConfig).config);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user