Remove test files
This commit is contained in:
@@ -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,
|
||||
})
|
||||
@@ -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()
|
||||
Reference in New Issue
Block a user