diff --git a/packages/opencode/src/test-projection.ts b/packages/opencode/src/test-projection.ts deleted file mode 100644 index 8d3629ca2a..0000000000 --- a/packages/opencode/src/test-projection.ts +++ /dev/null @@ -1,83 +0,0 @@ -import os from "os" -import path from "path" -import fs from "fs/promises" - -// Set XDG env vars BEFORE any src/ imports to isolate from real data -const dir = path.join(os.tmpdir(), "opencode-test-projection-" + process.pid) -await fs.mkdir(dir, { recursive: true }) -process.env["XDG_DATA_HOME"] = path.join(dir, "share") -process.env["XDG_CACHE_HOME"] = path.join(dir, "cache") -process.env["XDG_CONFIG_HOME"] = path.join(dir, "config") -process.env["XDG_STATE_HOME"] = path.join(dir, "state") - -// Write the cache version file -const cache = path.join(dir, "cache", "opencode") -await fs.mkdir(cache, { recursive: true }) -await fs.writeFile(path.join(cache, "version"), "14") - -// Now safe to import src/ -const { Log } = await import("@/util/log") -Log.init({ print: true, dev: true, level: "DEBUG" }) - -const { Instance } = await import("@/project/instance") -const { Database } = await import("@/storage/db") -const { GlobalBus } = await import("@/bus/global") -const { Bus } = await import("@/bus") -const { Session } = await import("@/session") -const { Server } = await import("@/server/server") -const { SessionPrompt } = await import("@/session/prompt") - -async function wait(ms: number) { - return new Promise((resolve) => { - setTimeout(resolve, ms) - }) -} - -async function run() { - console.log("project id:", Instance.project.id) - - // start the server - const server = Server.listen({ - port: 0, - hostname: "127.0.0.1", - }) - console.log("server listening on:", server.url.toString()) - console.log("SSE endpoint:", `${server.url}event`) - - const base = server.url.toString().replace(/\/$/, "") - console.log("\nServer running. Try:") - console.log(` curl -N ${base}/event`) - console.log("\nPress Ctrl+C to stop.\n") - - while (1) { - await wait(5000) - - const session = await Session.create({ - title: "test session", - }) - console.log("created session:", session.id, session.title) - - // send messages to the session - async function prompt(text: string) { - console.log(`\n--- sending: "${text}" ---`) - await SessionPrompt.prompt({ - sessionID: session.id, - parts: [{ type: "text", text }], - }) - console.log(`--- done: "${text}" ---`) - } - - await prompt("What is 2 + 2?") - await wait(2500) - await prompt("Now multiply that by 10") - await wait(2500) - await prompt("Summarize what we've discussed") - } - - await new Promise(() => {}) -} - -await Instance.provide({ - directory: "~/tmp/project-test7", - fn: run, -}) diff --git a/packages/opencode/src/test-replicate.ts b/packages/opencode/src/test-replicate.ts deleted file mode 100644 index 6f1fed11c1..0000000000 --- a/packages/opencode/src/test-replicate.ts +++ /dev/null @@ -1,85 +0,0 @@ -import os from "os" -import path from "path" -import fs from "fs/promises" - -// Set XDG env vars BEFORE any src/ imports to isolate from real data -// const dir = path.join("/Users/james/tmp/opencode-test-replicate") -const dir = path.join(os.tmpdir(), "opencode-test-projection-" + process.pid) -await fs.mkdir(dir, { recursive: true }) -console.log(dir) -process.env["XDG_DATA_HOME"] = path.join(dir, "share") -process.env["XDG_CACHE_HOME"] = path.join(dir, "cache") -process.env["XDG_CONFIG_HOME"] = path.join(dir, "config") -process.env["XDG_STATE_HOME"] = path.join(dir, "state") - -// Write the cache version file -const cache = path.join(dir, "cache", "opencode") -await fs.mkdir(cache, { recursive: true }) -await fs.writeFile(path.join(cache, "version"), "14") - -// Now safe to import src/ -const { Log } = await import("@/util/log") -Log.init({ print: true, dev: true, level: "DEBUG" }) - -const { Database } = await import("@/storage/db") -const { SyncEvent } = await import("@/sync") -const { parseSSE } = await import("@/control-plane/sse") -const { initProjectors } = await import("@/server/projectors") - -const url = process.argv[2] || "http://127.0.0.1:4096/global/sync-event" -const ac = new AbortController() - -process.on("SIGINT", () => ac.abort()) -process.on("SIGTERM", () => ac.abort()) - -async function run() { - const res = await fetch(url, { - headers: { accept: "text/event-stream" }, - signal: ac.signal, - }) - - console.log(res.statusText) - - if (!res.ok) { - console.error("failed to connect:", res.status, await res.text()) - process.exit(1) - } - - if (!res.body) { - console.error("no response body") - process.exit(1) - } - - console.log("connected, listening for events...\n") - initProjectors() - - Database.Client() - - await parseSSE(res.body, ac.signal, (event: any) => { - // console.log("[sse]", JSON.stringify(event, null, 2)) - const payload = event.payload - if (!payload.type.startsWith("server.")) { - console.log(payload) - try { - SyncEvent.replay({ - type: payload.type, - id: payload.id, - seq: payload.seq, - aggregateID: payload.aggregateID, - data: payload.data, - }) - - // console.log("[apply] ok:", event.type) - console.log("db path", Database.Path) - } catch (err) { - console.error("[apply] error:", err) - } - } - }) - - console.log("\ndisconnected") - Database.close() - // await fs.rm(dir, { recursive: true, force: true }) -} - -run()