MCPcopy Create free account
hub / github.com/clawbot7/cli-gateway / FakeRpc

Class FakeRpc

test/bindingRuntime.prompt.test.ts:21–176  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

19import type { JsonRpcMessage, JsonRpcRequest, JsonRpcResponse } from '../src/acp/jsonrpc.js';
20
21class FakeRpc implements StdioProcess {
22 private messageHandlers: Array<(m: JsonRpcMessage) => void> = [];
23 private stderrHandlers: Array<(line: string) => void> = [];
24 written: JsonRpcMessage[] = [];
25
26 private promptRequestId: number | null = null;
27 private sessionId = 'sess-1';
28 private workspaceFile: string;
29
30 constructor(params: { workspaceFile: string }) {
31 this.workspaceFile = params.workspaceFile;
32 }
33
34 write(message: JsonRpcMessage): void {
35 this.written.push(message);
36
37 // Client -> Agent requests
38 if ('method' in message) {
39 const req = message as JsonRpcRequest;
40
41 if (req.method === 'initialize') {
42 queueMicrotask(() => {
43 this.emit({
44 jsonrpc: '2.0',
45 id: req.id,
46 result: {
47 protocolVersion: 1,
48 agentCapabilities: { loadSession: false },
49 },
50 } as JsonRpcResponse);
51 });
52 return;
53 }
54
55 if (req.method === 'session/new') {
56 queueMicrotask(() => {
57 this.emit({
58 jsonrpc: '2.0',
59 id: req.id,
60 result: { sessionId: this.sessionId },
61 } as JsonRpcResponse);
62 });
63 return;
64 }
65
66 if (req.method === 'session/prompt') {
67 this.promptRequestId = Number(req.id);
68
69 queueMicrotask(() => {
70 // emit a tool call update (UI)
71 this.emit({
72 jsonrpc: '2.0',
73 method: 'session/update',
74 params: {
75 sessionId: this.sessionId,
76 update: {
77 sessionUpdate: 'tool_call_update',
78 title: 'terminal/create',

Callers

nothing calls this directly

Calls

no outgoing calls

Tested by

no test coverage detected