Something went wrong. Try again.
presents omp as codex for use with chatgpt remote
Something went wrong. Try again.
5.2 kB · 77 lines
JavaScript
at main
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778import test from "node:test";import assert from "node:assert/strict";import fs from "node:fs/promises";import os from "node:os";import path from "node:path";import { listPrimeAgents, primeControlConfigure, primeControlInterrupt, primeControlSend, primeControlStatus } from "../src/prime-control.mjs";import { findPrimeSession, listPrimeSessionsForCwd } from "../src/prime-sessions.mjs";import { parseOmpSessionFile } from "../src/omp-sessions.mjs";
test("Prime external discovery preserves durable identity and CLI fallback control", async () => { const temp = await fs.mkdtemp(path.join(os.tmpdir(), "prime-external-test-")); const previous = { bin: process.env.OMP_CODEX_PRIME_BIN, socket: process.env.PRIME_AGENT_DAEMON_SOCKET, sessionDir: process.env.PRIME_AGENT_SESSION_DIR, capture: process.env.FAKE_PRIME_CAPTURE, }; try { const durableId = "01a03a49-f6e9-750e-be20-f69e3288e50e"; const filenameId = "01a03a49-f111-7000-8000-000000000000"; const sessionFile = path.join(temp, `${filenameId}.jsonl`); await fs.writeFile(sessionFile, [ JSON.stringify({ type: "session", version: 3, id: durableId, timestamp: new Date().toISOString(), cwd: temp }), JSON.stringify({ type: "model_change", id: "model001", parentId: null, timestamp: new Date().toISOString(), provider: "openai-codex", modelId: "gpt-5.6-luna" }), JSON.stringify({ type: "thinking_level_change", id: "think001", parentId: "model001", timestamp: new Date().toISOString(), thinkingLevel: "high" }), JSON.stringify({ type: "message", id: "user0001", parentId: "think001", timestamp: new Date().toISOString(), message: { role: "user", content: [{ type: "text", text: "external prompt" }] } }), JSON.stringify({ type: "message", id: "answer01", parentId: "user0001", timestamp: new Date().toISOString(), message: { role: "assistant", content: [{ type: "text", text: "external answer" }], stopReason: "stop", usage: { input: 2, output: 2 } } }), ].join("\n") + "\n"); const capture = path.join(temp, "capture.jsonl"); const fake = path.join(temp, "prime-agent.cjs"); await fs.writeFile(fake, `#!/usr/bin/env nodeconst fs = require("node:fs");const args = process.argv.slice(2);fs.appendFileSync(process.env.FAKE_PRIME_CAPTURE, JSON.stringify(args) + "\\n");if (args[0] === "list") console.log(JSON.stringify({sessions:[ {id:"active123456",activeSessionId:"active123456",sessionId:"${durableId}",sessionFile:"${sessionFile}",cwd:"${temp}",lifecycle:"live",activity:"idle",model:{provider:"openai-codex",id:"gpt-5.6-luna"},thinkingLevel:"high",firstMessage:"external prompt",created:new Date().toISOString(),modified:new Date().toISOString(),sessionActions:{queuedCount:0}}, {id:"saved-session",sessionId:"saved-session",lifecycle:"live",activity:"idle",sessionActions:{queuedCount:0}}]}));else console.log(JSON.stringify({success:true}));`); await fs.chmod(fake, 0o755); process.env.OMP_CODEX_PRIME_BIN = fake; process.env.PRIME_AGENT_DAEMON_SOCKET = path.join(temp, "missing.sock"); process.env.PRIME_AGENT_SESSION_DIR = temp; process.env.FAKE_PRIME_CAPTURE = capture;
const agents = await listPrimeAgents({ force: true }); assert.equal(agents[0].sessionId, durableId); const listed = await listPrimeSessionsForCwd(temp); assert.equal(listed.sessions.length, 1); assert.equal(listed.sessions[0].id, durableId); assert.equal(listed.sessions[0].activeSessionId, "active123456"); assert.equal((await findPrimeSession(durableId)).file, sessionFile); assert.equal(await findPrimeSession(filenameId), null);
const parsed = await parseOmpSessionFile(sessionFile); assert.equal(parsed.thread.model?.id || parsed.thread.model, "gpt-5.6-luna"); assert.equal(parsed.thread.modelSelector || parsed.thread.model?.selector, "openai-codex/gpt-5.6-luna"); assert.equal(parsed.thread.turns[0].items.find((item) => item.type === "agentMessage").text, "external answer");
const target = { sessionId: durableId, activeSessionId: "active123456", sessionPath: sessionFile }; assert.equal((await primeControlStatus(target)).idle, true); assert.equal(await primeControlStatus({ sessionId: "saved-session" }), null); assert.equal(await primeControlConfigure(target, { model: "openai-codex/gpt-5.6-luna", reasoningEffort: "high" }), true); assert.equal(await primeControlConfigure(target, { model: "openai-codex/other" }), false); assert.equal(await primeControlSend(target, "hello", { deliverAs: "steer" }), true); assert.equal(await primeControlInterrupt(target), false); const calls = (await fs.readFile(capture, "utf8")).trim().split("\n").map(JSON.parse); assert.ok(calls.some((args) => args[0] === "send" && args.includes("hello") && args.includes("active123456"))); } finally { for (const [key, value] of Object.entries(previous)) { const envKey = key === "bin" ? "OMP_CODEX_PRIME_BIN" : key === "socket" ? "PRIME_AGENT_DAEMON_SOCKET" : key === "sessionDir" ? "PRIME_AGENT_SESSION_DIR" : "FAKE_PRIME_CAPTURE"; if (value === undefined) delete process.env[envKey]; else process.env[envKey] = value; } await fs.rm(temp, { recursive: true, force: true }); }});