mirror of
https://gitea.toothfairyai.com/ToothFairyAI/tf_code.git
synced 2026-03-30 13:54:01 +00:00
- Rename packages/opencode → packages/tfcode (directory only) - Rename bin/opencode → bin/tfcode (CLI binary) - Rename .opencode → .tfcode (config directory) - Update package.json name and bin field - Update config directory path references (.tfcode) - Keep internal code references as 'opencode' for easy upstream sync - Keep @opencode-ai/* workspace package names This minimal branding approach allows clean merges from upstream opencode repository while providing tfcode branding for users.
71 lines
2.1 KiB
TypeScript
71 lines
2.1 KiB
TypeScript
import { afterEach, describe, expect, test } from "bun:test"
|
|
import { Log } from "../../src/util/log"
|
|
import { WorkspaceServer } from "../../src/control-plane/workspace-server/server"
|
|
import { parseSSE } from "../../src/control-plane/sse"
|
|
import { GlobalBus } from "../../src/bus/global"
|
|
import { resetDatabase } from "../fixture/db"
|
|
import { tmpdir } from "../fixture/fixture"
|
|
|
|
afterEach(async () => {
|
|
await resetDatabase()
|
|
})
|
|
|
|
Log.init({ print: false })
|
|
|
|
describe("control-plane/workspace-server SSE", () => {
|
|
test("streams GlobalBus events and parseSSE reads them", async () => {
|
|
await using tmp = await tmpdir({ git: true })
|
|
const app = WorkspaceServer.App()
|
|
const stop = new AbortController()
|
|
const seen: unknown[] = []
|
|
try {
|
|
const response = await app.request("/event", {
|
|
signal: stop.signal,
|
|
headers: {
|
|
"x-opencode-workspace": "wrk_test_workspace",
|
|
"x-opencode-directory": tmp.path,
|
|
},
|
|
})
|
|
|
|
expect(response.status).toBe(200)
|
|
expect(response.body).toBeDefined()
|
|
|
|
const done = new Promise<void>((resolve, reject) => {
|
|
const timeout = setTimeout(() => {
|
|
reject(new Error("timed out waiting for workspace.test event"))
|
|
}, 3000)
|
|
|
|
void parseSSE(response.body!, stop.signal, (event) => {
|
|
seen.push(event)
|
|
const next = event as { type?: string }
|
|
if (next.type === "server.connected") {
|
|
GlobalBus.emit("event", {
|
|
payload: {
|
|
type: "workspace.test",
|
|
properties: { ok: true },
|
|
},
|
|
})
|
|
return
|
|
}
|
|
if (next.type !== "workspace.test") return
|
|
clearTimeout(timeout)
|
|
resolve()
|
|
}).catch((error) => {
|
|
clearTimeout(timeout)
|
|
reject(error)
|
|
})
|
|
})
|
|
|
|
await done
|
|
|
|
expect(seen.some((event) => (event as { type?: string }).type === "server.connected")).toBe(true)
|
|
expect(seen).toContainEqual({
|
|
type: "workspace.test",
|
|
properties: { ok: true },
|
|
})
|
|
} finally {
|
|
stop.abort()
|
|
}
|
|
})
|
|
})
|