MCPcopy Create free account
hub / github.com/anomalyco/opencode / messageClient

Function messageClient

packages/app/src/context/server-session.test.ts:50–72  ·  view source on GitHub ↗
(...responses: Array<MessageResponse | Promise<MessageResponse>>)

Source from the content-addressed store, hash-verified

48const deferredResponse = () => Promise.withResolvers<MessageResponse>()
49
50function messageClient(...responses: Array<MessageResponse | Promise<MessageResponse>>) {
51 let index = 0
52 const requests: unknown[] = []
53 const waiting = new Map<number, () => void>()
54 const client = {
55 session: {
56 get: async () => ({ data: session("child", "root") }),
57 messages: (input: unknown) => {
58 requests.push(input)
59 waiting.get(requests.length)?.()
60 waiting.delete(requests.length)
61 return responses[index++]
62 },
63 },
64 } as unknown as OpencodeClient
65 return Object.assign(client, {
66 requests,
67 requested(count: number) {
68 if (requests.length >= count) return Promise.resolve()
69 return new Promise<void>((resolve) => waiting.set(count, resolve))
70 },
71 })
72}
73
74const retryImmediately: typeof retry = async (task, options = {}) => {
75 const attempts = options.attempts ?? 3

Callers 1

Calls 4

pushMethod · 0.80
sessionFunction · 0.70
getMethod · 0.65
deleteMethod · 0.45

Tested by

no test coverage detected