// Rewrite replay gate F4 "tabelle/colonne/esclusioni" as a `schema-linking` // descriptor carrying the real catalog columns (schema-linking-fixture.json), // so the SchemaLinkingGateWidget renders in replay. Run after editing the // fixture: node tools/replay/augment-schema-linking.mjs import { readFileSync, writeFileSync } from "node:fs"; import { fileURLToPath } from "node:url"; import { dirname, join } from "node:path"; const HERE = dirname(fileURLToPath(import.meta.url)); const replayPath = join(HERE, "replay.json"); const replay = JSON.parse(readFileSync(replayPath, "utf8")); const tables = JSON.parse(readFileSync(join(HERE, "schema-linking-fixture.json"), "utf8")); const idx = replay.gates.findIndex( (g) => /tabelle\/colonne\/esclusioni/.test(g.descriptor?.title ?? "") && (g.descriptor?.widget === "multiselect" || g.descriptor?.widget === "schema-linking") ); if (idx < 0) { console.error("F4 tables gate not found in replay.json"); process.exit(1); } const d = replay.gates[idx].descriptor; replay.gates[idx].descriptor = { type: "ui_request", id: d.id, phase: d.phase, schema_version: d.schema_version, widget: "schema-linking", title: d.title, tables, reserved: ["back", "exit", "other"], }; writeFileSync(replayPath, JSON.stringify(replay, null, 2) + "\n"); console.log(`Rewrote gate ${idx} -> schema-linking (${tables.length} tables)`);