import { Effect } from "effect" const { configure } = await import("./packages/llm/src/opencode/providers/openai-compatible.js") const { LLMClient } = await import("./packages/llm/src/opencode/route/client.js") const { LLMRequest, Message } = await import("./packages/llm/src/opencode/schema/index.js") const { RequestExecutor } = await import("./packages/llm/src/opencode/route/executor.js") const apiKey = process.env.AIRCODING_API_KEY || "" if (!apiKey) { console.log("NO_KEY"); process.exit(0) } const baseURL = process.env.AIRCODING_API_URL || "https://open.bigmodel.cn/api/paas/v4" const provider = configure({ baseURL, apiKey }) const model = provider.model("glm-5.1") const req = new LLMRequest({ model, messages: [Message.user("say ok")], generation: { maxTokens: 10 }, }) const executor = RequestExecutor.Service.of({ http: RequestExecutor.HttpExecutor.make({ fetch: globalThis.fetch }), webSocket: undefined, }) const program = Effect.gen(function* () { const resp = yield* LLMClient.generate(req) const texts: string[] = [] for (const ev of resp.events) { const e = ev as any if (e.text) texts.push(e.text) if (e.content) for (const c of e.content) if (c.text) texts.push(c.text) } return texts.join("") }) const layer = LLMClient.layer.pipe(Effect.provide(executor)) const result = await Effect.runPromise(Effect.provide(program, layer)) console.log("OK:", result)