mirror of
https://github.com/anomalyco/opencode.git
synced 2026-08-06 17:33:23 +00:00
55 lines
1.7 KiB
TypeScript
55 lines
1.7 KiB
TypeScript
import { Effect, Layer, Stream } from "effect"
|
|
import { HttpClient, HttpClientResponse } from "effect/unstable/http"
|
|
import { AppNodeBuilder } from "@opencode-ai/core/effect/app-node-builder"
|
|
import { LayerNode } from "@opencode-ai/util/effect/layer-node"
|
|
import { Credential } from "@opencode-ai/core/credential"
|
|
import { Config } from "@opencode-ai/core/config"
|
|
import { Bus } from "@opencode-ai/core/bus"
|
|
import { Form } from "@opencode-ai/core/form"
|
|
import { Integration } from "@opencode-ai/core/integration"
|
|
import { WebSearch } from "@opencode-ai/core/websearch"
|
|
import { testEffect } from "../lib/effect"
|
|
|
|
interface WebSearchRequest {
|
|
readonly url: string
|
|
readonly headers: Record<string, string>
|
|
readonly body: unknown
|
|
}
|
|
|
|
export const requests: WebSearchRequest[] = []
|
|
let responseBody = ""
|
|
|
|
export function resetWebSearchFixture(body: string) {
|
|
requests.length = 0
|
|
responseBody = body
|
|
}
|
|
|
|
const http = Layer.succeed(
|
|
HttpClient.HttpClient,
|
|
HttpClient.make((request) =>
|
|
Effect.sync(() => {
|
|
if (request.body._tag !== "Uint8Array") throw new Error(`Unexpected request body: ${request.body._tag}`)
|
|
requests.push({
|
|
url: request.url,
|
|
headers: request.headers,
|
|
body: JSON.parse(new TextDecoder().decode(request.body.body)),
|
|
})
|
|
return HttpClientResponse.fromWeb(request, new Response(responseBody, { status: 200 }))
|
|
}),
|
|
),
|
|
)
|
|
|
|
export const webSearchIntegrationTest = testEffect(
|
|
Layer.merge(
|
|
AppNodeBuilder.build(
|
|
LayerNode.group([Integration.node, Credential.node, Bus.node, Form.node, WebSearch.node]),
|
|
[
|
|
[
|
|
Config.node,
|
|
Config.testLayer(),
|
|
],
|
|
],
|
|
),
|
|
http,
|
|
),
|
|
)
|