const test = require("node:test"); const assert = require("node:assert"); const cp = require("node:child_process"); const { createRequire } = require("node:module"); const path = require("node:path"); const GATE = path.join(__dirname, "..", "..", "tht-gate.js"); if (typeof globalThis.require === "undefined") globalThis.require = createRequire(GATE); test("repository write tools persist CTE and final SQL through deterministic tht commands", async () => { const calls = []; const original = cp.execFileSync; cp.execFileSync = (file, args, options) => { calls.push({ args, input: options?.input }); return ""; }; try { const gate = require(GATE); const { createFakePi } = require("./fake_pi_runtime.js"); const { pi, ctx, tools } = createFakePi(); ctx.cwd = "/nonexistent-thothii-test-cwd"; gate.default(pi); const cte = tools.get("write_cte_sql"); const final = tools.get("write_final_sql"); assert.ok(cte, "write_cte_sql must be registered"); assert.ok(final, "write_final_sql must be registered"); await cte.def.execute("cte", { session: "s1", name: "base", sql: "WITH base AS (SELECT 1)" }, null, null, ctx); await final.def.execute("sql", { session: "s1", sql: "SELECT * FROM base" }, null, null, ctx); assert.deepEqual(calls.map((call) => call.args), [ ["cte", "save", "--session", "s1", "--name", "base", "--file", "-"], ["sql", "set-final", "--session", "s1", "--file", "-"], ]); assert.deepEqual(calls.map((call) => call.input), ["WITH base AS (SELECT 1)", "SELECT * FROM base"]); assert.equal(JSON.stringify(calls).includes("sessions/s1"), false); } finally { cp.execFileSync = original; } });