single source of truth for pi config via ~/.pi/agent

auth.json stores api keys, models.json stores local providers directly.
no more copies, sync layers, or per-user config generation.
docker containers mount pi config read-only.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
2026-02-26 18:42:30 +00:00
co-authored by Claude Opus 4.6
parent 500a70910e
commit 11845fbae5
12 changed files with 302 additions and 580 deletions
+2 -32
View File
@@ -1,9 +1,5 @@
import { mkdirSync, existsSync, copyFileSync } from 'node:fs';
import { join } from 'node:path';
import { homedir } from 'node:os';
import { DATA_PATH, PI_CONFIG_DIR } from './data-path';
import { syncLocalProvidersToPiConfig } from './api/server-settings/sync-pi-config';
import { syncAllUserPiConfigs } from './api/server-settings/sync-user-pi-config';
import { mkdirSync } from 'node:fs';
import { DATA_PATH } from './data-path';
import { syncSeedSkills } from './sync-skills';
import { syncSeedTools } from './sync-tools';
import { syncSeedExtensions } from './sync-extensions';
@@ -13,7 +9,6 @@ import { generateResourceSkill } from './api/pi/pi-bridge';
import { initQueue } from './queue';
mkdirSync(DATA_PATH, { recursive: true });
mkdirSync(PI_CONFIG_DIR, { recursive: true });
async function ensurePiInstalled(): Promise<boolean> {
try {
@@ -46,22 +41,6 @@ async function installPi(): Promise<boolean> {
}
}
function seedPiConfig(): void {
const hostPiDir = join(homedir(), '.pi', 'agent');
const filesToCopy = ['models.json', 'settings.json'];
for (const file of filesToCopy) {
const target = join(PI_CONFIG_DIR, file);
if (existsSync(target)) continue;
const source = join(hostPiDir, file);
if (existsSync(source)) {
copyFileSync(source, target);
console.log(`[bootstrap] Seeded ${file} from host Pi config`);
}
}
}
(async () => {
const installed = await ensurePiInstalled();
if (!installed) {
@@ -72,7 +51,6 @@ function seedPiConfig(): void {
}
}
seedPiConfig();
syncSeedSkills();
syncSeedTools();
syncSeedExtensions();
@@ -80,14 +58,6 @@ function seedPiConfig(): void {
await migrateSettingsToResources();
generateResourceSkill(DATA_PATH);
await syncLocalProvidersToPiConfig().catch(err => {
console.error('[bootstrap] Failed to sync local providers to Pi config:', err);
});
await syncAllUserPiConfigs().catch(err => {
console.error('[bootstrap] Failed to sync user Pi configs:', err);
});
await initQueue().catch(err => {
console.error('[bootstrap] Failed to initialize queue:', err);
});