Ctrl K
ComunidadGuías…

test/home-draft-model-selection.test.js

Rama main · réplica de lectura del repositorio original.

Archivo original ↗Preguntar a KiBot
var assert = require("node:assert/strict");
var fs = require("node:fs");
var path = require("node:path");
var test = require("node:test");

var root = path.join(__dirname, "..");

async function loadConfirmationModule() {
  var source = fs.readFileSync(path.join(root, "lib/public/modules/home-session-model-confirmation.js"), "utf8");
  return import("data:text/javascript;base64," + Buffer.from(source).toString("base64"));
}

test("confirmed draft model applies to the exact session and promotes its durable identity", async function () {
  var helpers = await loadConfirmationModule();
  var exact = helpers.confirmedHomeSessionModel({ mateId: "mate-a", sessionId: "draft-a" }, {
    mateId: "mate-a", requestedSessionId: "draft-a", sessionId: "draft-a", sessionApplied: true,
    sessionVendor: "codex", sessionModel: "gpt-5.6",
  });
  assert.deepEqual(exact, { sessionId: "draft-a", vendor: "codex", model: "gpt-5.6" });

  var promoted = helpers.confirmedHomeSessionModel({ mateId: "mate-a", sessionId: "local:11" }, {
    mateId: "mate-a", requestedSessionId: "local:11", sessionId: "durable-11", sessionApplied: true,
    sessionVendor: "claude", sessionModel: "sonnet",
  });
  assert.deepEqual(promoted, { sessionId: "durable-11", vendor: "claude", model: "sonnet" });
});

test("stale, different-Mate, and non-applied model confirmations cannot overwrite the composer", async function () {
  var helpers = await loadConfirmationModule();
  var active = { mateId: "mate-a", sessionId: "draft-a" };
  var base = { mateId: "mate-a", requestedSessionId: "draft-b", sessionId: "draft-b", sessionApplied: true, sessionVendor: "codex", sessionModel: "gpt-5.6" };
  assert.equal(helpers.confirmedHomeSessionModel(active, base), null);
  assert.equal(helpers.confirmedHomeSessionModel(active, Object.assign({}, base, { mateId: "mate-b", requestedSessionId: "draft-a", sessionId: "draft-a" })), null);
  assert.equal(helpers.confirmedHomeSessionModel(active, Object.assign({}, base, { requestedSessionId: "draft-a", sessionId: "draft-a", sessionApplied: false })), null);
});

test("composer chooser opens Model settings with its exact pristine session", function () {
  var chat = fs.readFileSync(path.join(root, "lib/public/modules/home-mate-chat.js"), "utf8");
  var picker = fs.readFileSync(path.join(root, "lib/public/modules/home-mate-model-picker.js"), "utf8");
  var settings = fs.readFileSync(path.join(root, "lib/public/modules/home-mate-settings.js"), "utf8");
  assert.match(chat, /openHomeMateSettings\(mate\.id, sessionModelChooseEl, \{ section: "model", sessionId: store\.get\('homeChatSessionId'\) \}\)/);
  assert.match(picker, /if \(s\.sessionId\) message\.sessionId = s\.sessionId/);
  assert.match(settings, /resetHomeMateModelPicker\(mateId, getMateName\(mate\), mate, options && options\.sessionId\)/);
  assert.match(chat, /export function openHomeMateAction\(kind, initialTopic\)/);
});