| 186 | } |
| 187 | |
| 188 | write(message: JsonRpcMessage): void { |
| 189 | if (!('method' in message)) { |
| 190 | if ('id' in message && 'result' in message) { |
| 191 | const res = message as JsonRpcResponse; |
| 192 | if (res.id === 700) { |
| 193 | queueMicrotask(() => { |
| 194 | this.emit({ |
| 195 | jsonrpc: '2.0', |
| 196 | method: 'session/update', |
| 197 | params: { |
| 198 | sessionId: this.sessionId, |
| 199 | update: { |
| 200 | sessionUpdate: 'agent_message_chunk', |
| 201 | content: { type: 'text', text: 'done' }, |
| 202 | }, |
| 203 | }, |
| 204 | } as any); |
| 205 | |
| 206 | this.emit({ |
| 207 | jsonrpc: '2.0', |
| 208 | id: this.promptRequestId!, |
| 209 | result: { stopReason: 'end' }, |
| 210 | } as JsonRpcResponse); |
| 211 | }); |
| 212 | } |
| 213 | } |
| 214 | return; |
| 215 | } |
| 216 | |
| 217 | const req = message as JsonRpcRequest; |
| 218 | |
| 219 | if (req.method === 'initialize') { |
| 220 | queueMicrotask(() => { |
| 221 | this.emit({ |
| 222 | jsonrpc: '2.0', |
| 223 | id: req.id, |
| 224 | result: { |
| 225 | protocolVersion: 1, |
| 226 | agentCapabilities: { loadSession: false }, |
| 227 | }, |
| 228 | } as JsonRpcResponse); |
| 229 | }); |
| 230 | return; |
| 231 | } |
| 232 | |
| 233 | if (req.method === 'session/new') { |
| 234 | queueMicrotask(() => { |
| 235 | this.emit({ |
| 236 | jsonrpc: '2.0', |
| 237 | id: req.id, |
| 238 | result: { sessionId: this.sessionId }, |
| 239 | } as JsonRpcResponse); |
| 240 | }); |
| 241 | return; |
| 242 | } |
| 243 | |
| 244 | if (req.method === 'session/prompt') { |
| 245 | this.promptRequestId = Number(req.id); |