Microsoft rebranet Azure AI Foundry -> Microsoft Foundry; doc-URLer flyttet /azure/ai-foundry/ -> /azure/foundry/. Ny lib/registry-migrate.mjs (rene funksjoner remapKey + migrateRegistry, 10 enhetstester) + one-shot migrate-ai-foundry.mjs (backup via lib/backup.mjs + atomisk saveRegistry). Remap: 164 ai-foundry-URLer -> foundry (2 probede DEAD-sider far eksplisitte mal: evaluation-evaluators -> built-in-evaluators; agent-service -> agents/overview). Remappede entries resettes til status=unpolled/lastmod=null sa neste poll re-evaluerer. 1 kollisjon merget (ref_files unionert). Schema-migrering: authority_source+course lagt til alle 1343 entries. Idempotent. Registry er gitignored (regenererbar) - kun kode committes. kb-update 66 tester gronne, validate 239. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01REiKFhP4w6xGXXqWKpPCJJ
35 lines
1.5 KiB
JavaScript
35 lines
1.5 KiB
JavaScript
#!/usr/bin/env node
|
|
// migrate-ai-foundry.mjs — One-shot migration: back up data/, remap registry
|
|
// keys ai-foundry -> foundry (+ 2 probed DEAD targets), migrate reserved schema
|
|
// fields, write atomically. Idempotent: re-running finds nothing to remap.
|
|
// Usage: node migrate-ai-foundry.mjs
|
|
|
|
import { dirname, join } from 'node:path';
|
|
import { fileURLToPath } from 'node:url';
|
|
import { loadRegistry, saveRegistry } from './lib/registry-io.mjs';
|
|
import { backupDir } from './lib/backup.mjs';
|
|
import { migrateRegistry } from './lib/registry-migrate.mjs';
|
|
|
|
const __dirname = dirname(fileURLToPath(import.meta.url));
|
|
const DATA_DIR = join(__dirname, 'data');
|
|
const PLUGIN_ROOT = join(__dirname, '..', '..');
|
|
const BACKUP_ROOT = join(PLUGIN_ROOT, '.kb-backup');
|
|
|
|
const registry = loadRegistry(DATA_DIR);
|
|
const before = Object.keys(registry.urls).length;
|
|
|
|
const { backupPath } = backupDir(DATA_DIR, BACKUP_ROOT);
|
|
console.log(`Backed up data/ -> ${backupPath}`);
|
|
|
|
const { registry: migrated, stats } = migrateRegistry(registry);
|
|
const after = Object.keys(migrated.urls).length;
|
|
|
|
saveRegistry(migrated, DATA_DIR);
|
|
|
|
const remainingAiFoundry = Object.keys(migrated.urls)
|
|
.filter((u) => u.includes('/azure/ai-foundry/')).length;
|
|
|
|
console.log('=== ai-foundry -> foundry remap ===');
|
|
console.log(`URLs: ${before} -> ${after} (collisions merged: ${stats.collisions})`);
|
|
console.log(`Remapped: ${stats.remapped} (DEAD explicit targets: ${stats.deadRemapped})`);
|
|
console.log(`Remaining ai-foundry keys: ${remainingAiFoundry} (expect 0)`);
|