feat: complete evidence restructuring worktree
This commit is contained in:
@@ -56,6 +56,34 @@ export function validateDeclarativePiConfig(raw: string): void {
|
||||
assertDeclarativePiConfig(parsePiConfigJson(raw));
|
||||
}
|
||||
|
||||
/** Return the selected provider's declarative apiKey value without knowing provider IDs in code. */
|
||||
export function configuredPiProviderApiKey(
|
||||
raw: string | undefined,
|
||||
provider: string | undefined,
|
||||
): string | undefined {
|
||||
if (raw === undefined || provider === undefined) return undefined;
|
||||
const parsed = parsePiConfigJson(raw);
|
||||
if (!parsed || typeof parsed !== "object" || Array.isArray(parsed)) {
|
||||
throw new PiManagedConfigError();
|
||||
}
|
||||
const providers = (parsed as { providers?: unknown }).providers;
|
||||
if (!providers || typeof providers !== "object" || Array.isArray(providers)) {
|
||||
throw new PiManagedConfigError();
|
||||
}
|
||||
const entry = Object.entries(providers as Record<string, unknown>)
|
||||
.find(([id]) => id.trim().toLowerCase() === provider.trim().toLowerCase());
|
||||
if (!entry) return undefined;
|
||||
const config = entry[1];
|
||||
if (!config || typeof config !== "object" || Array.isArray(config)) {
|
||||
throw new PiManagedConfigError();
|
||||
}
|
||||
assertDeclarativePiConfig(config);
|
||||
const apiKey = (config as { apiKey?: unknown }).apiKey;
|
||||
if (apiKey === undefined) return undefined;
|
||||
if (typeof apiKey !== "string" || apiKey.length === 0) throw new PiManagedConfigError();
|
||||
return apiKey;
|
||||
}
|
||||
|
||||
function configuredPiAgentDir(): string {
|
||||
return resolve(process.env.PI_CODING_AGENT_DIR ?? join(homedir(), ".pi", "agent"));
|
||||
}
|
||||
@@ -102,6 +130,7 @@ export function readConfiguredPiAgentFile(
|
||||
export interface PiRuntimeAgentSnapshot {
|
||||
agentDir: string;
|
||||
sessionDir: string;
|
||||
models?: string;
|
||||
cleanup: () => void;
|
||||
}
|
||||
|
||||
@@ -152,6 +181,7 @@ export function createPiRuntimeAgentSnapshot(): PiRuntimeAgentSnapshot {
|
||||
return {
|
||||
agentDir: snapshotDir,
|
||||
sessionDir: process.env.PI_CODING_AGENT_SESSION_DIR || join(sourceAgentDir, "sessions"),
|
||||
models,
|
||||
cleanup: () => {
|
||||
if (cleaned) return;
|
||||
cleaned = true;
|
||||
|
||||
Reference in New Issue
Block a user