@a5c-ai/agent-mux-adapters 0.3.0 → 0.4.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (111) hide show
  1. package/dist/amp-adapter.d.ts +31 -0
  2. package/dist/amp-adapter.d.ts.map +1 -0
  3. package/dist/amp-adapter.js +336 -0
  4. package/dist/amp-adapter.js.map +1 -0
  5. package/dist/base-adapter-helpers.d.ts +8 -0
  6. package/dist/base-adapter-helpers.d.ts.map +1 -0
  7. package/dist/base-adapter-helpers.js +68 -0
  8. package/dist/base-adapter-helpers.js.map +1 -0
  9. package/dist/base-adapter.d.ts +14 -9
  10. package/dist/base-adapter.d.ts.map +1 -1
  11. package/dist/base-adapter.js +23 -66
  12. package/dist/base-adapter.js.map +1 -1
  13. package/dist/claude-adapter.d.ts.map +1 -1
  14. package/dist/claude-adapter.js +5 -2
  15. package/dist/claude-adapter.js.map +1 -1
  16. package/dist/claude-agent-sdk-adapter.d.ts +53 -0
  17. package/dist/claude-agent-sdk-adapter.d.ts.map +1 -0
  18. package/dist/claude-agent-sdk-adapter.js +607 -0
  19. package/dist/claude-agent-sdk-adapter.js.map +1 -0
  20. package/dist/codex-adapter.d.ts.map +1 -1
  21. package/dist/codex-adapter.js +99 -11
  22. package/dist/codex-adapter.js.map +1 -1
  23. package/dist/codex-sdk-adapter.d.ts +32 -0
  24. package/dist/codex-sdk-adapter.d.ts.map +1 -0
  25. package/dist/codex-sdk-adapter.js +384 -0
  26. package/dist/codex-sdk-adapter.js.map +1 -0
  27. package/dist/codex-sdk-mocks.d.ts +51 -0
  28. package/dist/codex-sdk-mocks.d.ts.map +1 -0
  29. package/dist/codex-sdk-mocks.js +97 -0
  30. package/dist/codex-sdk-mocks.js.map +1 -0
  31. package/dist/codex-websocket-adapter.d.ts +41 -0
  32. package/dist/codex-websocket-adapter.d.ts.map +1 -0
  33. package/dist/codex-websocket-adapter.js +289 -0
  34. package/dist/codex-websocket-adapter.js.map +1 -0
  35. package/dist/codex-websocket-connection.d.ts +58 -0
  36. package/dist/codex-websocket-connection.d.ts.map +1 -0
  37. package/dist/codex-websocket-connection.js +244 -0
  38. package/dist/codex-websocket-connection.js.map +1 -0
  39. package/dist/copilot-adapter.d.ts.map +1 -1
  40. package/dist/copilot-adapter.js +7 -3
  41. package/dist/copilot-adapter.js.map +1 -1
  42. package/dist/cursor-adapter.d.ts.map +1 -1
  43. package/dist/cursor-adapter.js +5 -2
  44. package/dist/cursor-adapter.js.map +1 -1
  45. package/dist/droid-adapter.d.ts +30 -0
  46. package/dist/droid-adapter.d.ts.map +1 -0
  47. package/dist/droid-adapter.js +377 -0
  48. package/dist/droid-adapter.js.map +1 -0
  49. package/dist/gemini-adapter.d.ts.map +1 -1
  50. package/dist/gemini-adapter.js +5 -2
  51. package/dist/gemini-adapter.js.map +1 -1
  52. package/dist/hermes-adapter.d.ts.map +1 -1
  53. package/dist/hermes-adapter.js +6 -2
  54. package/dist/hermes-adapter.js.map +1 -1
  55. package/dist/index.d.ts +10 -0
  56. package/dist/index.d.ts.map +1 -1
  57. package/dist/index.js +20 -1
  58. package/dist/index.js.map +1 -1
  59. package/dist/mocks/index.d.ts +60 -0
  60. package/dist/mocks/index.d.ts.map +1 -0
  61. package/dist/mocks/index.js +203 -0
  62. package/dist/mocks/index.js.map +1 -0
  63. package/dist/mocks/mock-types.d.ts +260 -0
  64. package/dist/mocks/mock-types.d.ts.map +1 -0
  65. package/dist/mocks/mock-types.js +12 -0
  66. package/dist/mocks/mock-types.js.map +1 -0
  67. package/dist/mocks/programmatic-mocks.d.ts +50 -0
  68. package/dist/mocks/programmatic-mocks.d.ts.map +1 -0
  69. package/dist/mocks/programmatic-mocks.js +330 -0
  70. package/dist/mocks/programmatic-mocks.js.map +1 -0
  71. package/dist/mocks/remote-mocks.d.ts +52 -0
  72. package/dist/mocks/remote-mocks.d.ts.map +1 -0
  73. package/dist/mocks/remote-mocks.js +436 -0
  74. package/dist/mocks/remote-mocks.js.map +1 -0
  75. package/dist/omp-adapter.d.ts.map +1 -1
  76. package/dist/omp-adapter.js +6 -3
  77. package/dist/omp-adapter.js.map +1 -1
  78. package/dist/openclaw-adapter.d.ts.map +1 -1
  79. package/dist/openclaw-adapter.js +6 -3
  80. package/dist/openclaw-adapter.js.map +1 -1
  81. package/dist/opencode-adapter.d.ts +2 -2
  82. package/dist/opencode-adapter.d.ts.map +1 -1
  83. package/dist/opencode-adapter.js +172 -60
  84. package/dist/opencode-adapter.js.map +1 -1
  85. package/dist/opencode-http-adapter.d.ts +41 -0
  86. package/dist/opencode-http-adapter.d.ts.map +1 -0
  87. package/dist/opencode-http-adapter.js +370 -0
  88. package/dist/opencode-http-adapter.js.map +1 -0
  89. package/dist/opencode-http-connection.d.ts +33 -0
  90. package/dist/opencode-http-connection.d.ts.map +1 -0
  91. package/dist/opencode-http-connection.js +198 -0
  92. package/dist/opencode-http-connection.js.map +1 -0
  93. package/dist/pi-adapter.d.ts.map +1 -1
  94. package/dist/pi-adapter.js +5 -2
  95. package/dist/pi-adapter.js.map +1 -1
  96. package/dist/pi-sdk-adapter.d.ts +46 -0
  97. package/dist/pi-sdk-adapter.d.ts.map +1 -0
  98. package/dist/pi-sdk-adapter.js +549 -0
  99. package/dist/pi-sdk-adapter.js.map +1 -0
  100. package/dist/programmatic-adapter-base.d.ts +88 -0
  101. package/dist/programmatic-adapter-base.d.ts.map +1 -0
  102. package/dist/programmatic-adapter-base.js +169 -0
  103. package/dist/programmatic-adapter-base.js.map +1 -0
  104. package/dist/qwen-adapter.d.ts.map +1 -1
  105. package/dist/qwen-adapter.js +5 -2
  106. package/dist/qwen-adapter.js.map +1 -1
  107. package/dist/remote-adapter-base.d.ts +85 -0
  108. package/dist/remote-adapter-base.d.ts.map +1 -0
  109. package/dist/remote-adapter-base.js +102 -0
  110. package/dist/remote-adapter-base.js.map +1 -0
  111. package/package.json +2 -2
@@ -0,0 +1,330 @@
1
+ /**
2
+ * Mock implementations for programmatic adapters (SDK-based).
3
+ *
4
+ * Provides realistic simulation of SDK behavior for:
5
+ * - Claude Agent SDK
6
+ * - Codex SDK
7
+ * - Pi SDK
8
+ * - Generic programmatic adapters
9
+ */
10
+ // ---------------------------------------------------------------------------
11
+ // Mock Event Utilities
12
+ // ---------------------------------------------------------------------------
13
+ function delay(ms) {
14
+ return new Promise(resolve => setTimeout(resolve, ms));
15
+ }
16
+ function generateRunId() {
17
+ return `mock_run_${Date.now()}_${Math.random().toString(36).substring(2, 9)}`;
18
+ }
19
+ function createBaseEvent(type, runId, agent = 'mock-agent') {
20
+ return {
21
+ timestamp: new Date().toISOString(),
22
+ runId,
23
+ type,
24
+ agent,
25
+ };
26
+ }
27
+ // ---------------------------------------------------------------------------
28
+ // Programmatic Mock Builder
29
+ // ---------------------------------------------------------------------------
30
+ export class ProgrammaticMockBuilderImpl {
31
+ config = {
32
+ authSucceeds: true,
33
+ events: [],
34
+ startDelayMs: 0,
35
+ };
36
+ name(name) {
37
+ this.config.name = name;
38
+ return this;
39
+ }
40
+ withAuth(succeeds) {
41
+ this.config.authSucceeds = succeeds;
42
+ return this;
43
+ }
44
+ addEvents(events) {
45
+ this.config.events = [...(this.config.events || []), ...events];
46
+ return this;
47
+ }
48
+ addEvent(type, data, delayMs = 0) {
49
+ const event = { type, data, delayMs };
50
+ this.config.events = [...(this.config.events || []), event];
51
+ return this;
52
+ }
53
+ addTextStream(text, chunkSize = 10, delayBetweenChunks = 50) {
54
+ const chunks = [];
55
+ let accumulated = '';
56
+ for (let i = 0; i < text.length; i += chunkSize) {
57
+ const chunk = text.slice(i, i + chunkSize);
58
+ accumulated += chunk;
59
+ chunks.push({
60
+ type: 'text_delta',
61
+ data: {
62
+ delta: chunk,
63
+ accumulated,
64
+ },
65
+ delayMs: i === 0 ? 100 : delayBetweenChunks, // First chunk has longer delay
66
+ });
67
+ }
68
+ return this.addEvents(chunks);
69
+ }
70
+ addToolCall(toolName, input, output, processingTimeMs = 200) {
71
+ const toolCallId = `tool_${Date.now()}_${Math.random().toString(36).substring(2, 6)}`;
72
+ const events = [
73
+ {
74
+ type: 'tool_call_start',
75
+ data: {
76
+ toolCallId,
77
+ toolName,
78
+ },
79
+ delayMs: 50,
80
+ },
81
+ {
82
+ type: 'tool_input_delta',
83
+ data: {
84
+ toolCallId,
85
+ delta: input,
86
+ inputAccumulated: input,
87
+ },
88
+ delayMs: 30,
89
+ },
90
+ {
91
+ type: 'tool_call_ready',
92
+ data: {
93
+ toolCallId,
94
+ toolName,
95
+ input,
96
+ },
97
+ delayMs: 20,
98
+ },
99
+ {
100
+ type: 'tool_result',
101
+ data: {
102
+ toolCallId,
103
+ toolName,
104
+ output,
105
+ durationMs: processingTimeMs,
106
+ },
107
+ delayMs: processingTimeMs,
108
+ },
109
+ ];
110
+ return this.addEvents(events);
111
+ }
112
+ addThinking(thinkingContent, delayMs = 100) {
113
+ const events = [
114
+ {
115
+ type: 'thinking_start',
116
+ data: {},
117
+ delayMs: 50,
118
+ },
119
+ {
120
+ type: 'thinking_delta',
121
+ data: {
122
+ delta: thinkingContent,
123
+ accumulated: thinkingContent,
124
+ },
125
+ delayMs,
126
+ },
127
+ {
128
+ type: 'thinking_stop',
129
+ data: {
130
+ accumulated: thinkingContent,
131
+ },
132
+ delayMs: 30,
133
+ },
134
+ ];
135
+ return this.addEvents(events);
136
+ }
137
+ withCost(inputTokens, outputTokens, thinkingTokens = 0) {
138
+ // Calculate realistic cost based on tokens
139
+ const inputCost = inputTokens * 0.015 / 1000; // $0.015 per 1K tokens
140
+ const outputCost = outputTokens * 0.075 / 1000; // $0.075 per 1K tokens
141
+ const thinkingCost = thinkingTokens * 0.015 / 1000; // Same as input
142
+ const totalUsd = inputCost + outputCost + thinkingCost;
143
+ this.config.cost = {
144
+ inputTokens,
145
+ outputTokens,
146
+ thinkingTokens,
147
+ totalUsd,
148
+ };
149
+ return this;
150
+ }
151
+ withError(code, message, delayMs = 100) {
152
+ this.config.simulateError = {
153
+ errorCode: code,
154
+ message,
155
+ delayMs,
156
+ };
157
+ return this;
158
+ }
159
+ build() {
160
+ return {
161
+ authSucceeds: true,
162
+ events: [],
163
+ ...this.config,
164
+ };
165
+ }
166
+ }
167
+ // ---------------------------------------------------------------------------
168
+ // Mock Execution Engine
169
+ // ---------------------------------------------------------------------------
170
+ export class ProgrammaticMockEngine {
171
+ async execute(config, options) {
172
+ const runId = generateRunId();
173
+ const startTime = Date.now();
174
+ return this.createEventStream(config, runId, startTime, options);
175
+ }
176
+ async *createEventStream(config, runId, startTime, options) {
177
+ try {
178
+ // Authentication check
179
+ if (!config.authSucceeds) {
180
+ yield {
181
+ ...createBaseEvent('error', runId, options.agent),
182
+ code: 'AUTH_MISSING',
183
+ message: 'Mock authentication failed',
184
+ fatal: false,
185
+ recoverable: false,
186
+ };
187
+ return;
188
+ }
189
+ // Session start
190
+ yield {
191
+ ...createBaseEvent('session_start', runId, options.agent),
192
+ sessionId: `mock_session_${runId}`,
193
+ turnCount: 0,
194
+ };
195
+ // Initial delay
196
+ if (config.startDelayMs) {
197
+ await delay(config.startDelayMs);
198
+ }
199
+ // Error simulation
200
+ if (config.simulateError) {
201
+ if (config.simulateError.delayMs) {
202
+ await delay(config.simulateError.delayMs);
203
+ }
204
+ yield {
205
+ ...createBaseEvent('error', runId, options.agent),
206
+ code: config.simulateError.errorCode,
207
+ message: config.simulateError.message,
208
+ fatal: true,
209
+ recoverable: false,
210
+ };
211
+ return;
212
+ }
213
+ // Stream events
214
+ for (const mockEvent of config.events) {
215
+ if (mockEvent.delayMs) {
216
+ await delay(mockEvent.delayMs);
217
+ }
218
+ yield {
219
+ ...createBaseEvent(mockEvent.type, runId, options.agent),
220
+ ...mockEvent.data,
221
+ };
222
+ }
223
+ // Cost event (if configured)
224
+ if (config.cost) {
225
+ yield {
226
+ ...createBaseEvent('cost', runId, options.agent),
227
+ cost: config.cost,
228
+ };
229
+ }
230
+ // Message stop
231
+ yield {
232
+ ...createBaseEvent('message_stop', runId, options.agent),
233
+ };
234
+ }
235
+ catch (error) {
236
+ yield {
237
+ ...createBaseEvent('error', runId, options.agent),
238
+ code: 'INTERNAL',
239
+ message: error instanceof Error ? error.message : String(error),
240
+ fatal: true,
241
+ recoverable: false,
242
+ };
243
+ }
244
+ }
245
+ }
246
+ // ---------------------------------------------------------------------------
247
+ // Adapter-Specific Mock Factories
248
+ // ---------------------------------------------------------------------------
249
+ export class ClaudeAgentSdkMock {
250
+ static basicSuccess() {
251
+ return new ProgrammaticMockBuilderImpl()
252
+ .name('claude-agent-sdk-basic')
253
+ .withAuth(true)
254
+ .addThinking('I need to help the user with their request...')
255
+ .addTextStream('Hello! I can help you with that.')
256
+ .withCost(50, 20, 15)
257
+ .build();
258
+ }
259
+ static toolCalling() {
260
+ return new ProgrammaticMockBuilderImpl()
261
+ .name('claude-agent-sdk-tools')
262
+ .withAuth(true)
263
+ .addThinking('I should use the read_file tool to get the information...')
264
+ .addToolCall('read_file', '{"path": "/tmp/test.txt"}', 'File contents here')
265
+ .addTextStream('Based on the file contents, here is my response...')
266
+ .withCost(75, 45, 25)
267
+ .build();
268
+ }
269
+ static authFailure() {
270
+ return new ProgrammaticMockBuilderImpl()
271
+ .name('claude-agent-sdk-auth-fail')
272
+ .withAuth(false)
273
+ .build();
274
+ }
275
+ }
276
+ export class CodexSdkMock {
277
+ static basicSuccess() {
278
+ return new ProgrammaticMockBuilderImpl()
279
+ .name('codex-sdk-basic')
280
+ .withAuth(true)
281
+ .addTextStream('```python\ndef hello():\n print("Hello, World!")\n```')
282
+ .withCost(40, 60)
283
+ .build();
284
+ }
285
+ static codeGeneration() {
286
+ return new ProgrammaticMockBuilderImpl()
287
+ .name('codex-sdk-codegen')
288
+ .withAuth(true)
289
+ .addToolCall('code_execute', '{"code": "print(\\"test\\")"}', 'test')
290
+ .addTextStream('The code executed successfully and produced the output above.')
291
+ .withCost(80, 35)
292
+ .build();
293
+ }
294
+ }
295
+ export class PiSdkMock {
296
+ static basicSuccess() {
297
+ return new ProgrammaticMockBuilderImpl()
298
+ .name('pi-sdk-basic')
299
+ .withAuth(true)
300
+ .addTextStream('I understand your question. Let me help you with that.')
301
+ .withCost(30, 25)
302
+ .build();
303
+ }
304
+ static webSearch() {
305
+ return new ProgrammaticMockBuilderImpl()
306
+ .name('pi-sdk-web-search')
307
+ .withAuth(true)
308
+ .addToolCall('search_web', '{"query": "latest news"}', [
309
+ { title: 'News Article 1', url: 'https://example.com/1' },
310
+ { title: 'News Article 2', url: 'https://example.com/2' },
311
+ ])
312
+ .addTextStream('Based on the search results, here are the latest news...')
313
+ .withCost(45, 40)
314
+ .build();
315
+ }
316
+ }
317
+ // ---------------------------------------------------------------------------
318
+ // Factory Implementation
319
+ // ---------------------------------------------------------------------------
320
+ export function createProgrammaticMockBuilder() {
321
+ return new ProgrammaticMockBuilderImpl();
322
+ }
323
+ export const programmaticMocks = {
324
+ claude: ClaudeAgentSdkMock,
325
+ codex: CodexSdkMock,
326
+ pi: PiSdkMock,
327
+ engine: new ProgrammaticMockEngine(),
328
+ builder: createProgrammaticMockBuilder,
329
+ };
330
+ //# sourceMappingURL=programmatic-mocks.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"programmatic-mocks.js","sourceRoot":"","sources":["../../src/mocks/programmatic-mocks.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAUH,8EAA8E;AAC9E,uBAAuB;AACvB,8EAA8E;AAE9E,SAAS,KAAK,CAAC,EAAU;IACvB,OAAO,IAAI,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,CAAC;AACzD,CAAC;AAED,SAAS,aAAa;IACpB,OAAO,YAAY,IAAI,CAAC,GAAG,EAAE,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC;AAChF,CAAC;AAED,SAAS,eAAe,CAAC,IAAY,EAAE,KAAa,EAAE,KAAK,GAAG,YAAY;IACxE,OAAO;QACL,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;QACnC,KAAK;QACL,IAAI;QACJ,KAAK;KACN,CAAC;AACJ,CAAC;AAED,8EAA8E;AAC9E,4BAA4B;AAC5B,8EAA8E;AAE9E,MAAM,OAAO,2BAA2B;IAC9B,MAAM,GAAoC;QAChD,YAAY,EAAE,IAAI;QAClB,MAAM,EAAE,EAAE;QACV,YAAY,EAAE,CAAC;KAChB,CAAC;IAEF,IAAI,CAAC,IAAY;QACf,IAAI,CAAC,MAAM,CAAC,IAAI,GAAG,IAAI,CAAC;QACxB,OAAO,IAAI,CAAC;IACd,CAAC;IAED,QAAQ,CAAC,QAAiB;QACxB,IAAI,CAAC,MAAM,CAAC,YAAY,GAAG,QAAQ,CAAC;QACpC,OAAO,IAAI,CAAC;IACd,CAAC;IAED,SAAS,CAAC,MAAyB;QACjC,IAAI,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,IAAI,EAAE,CAAC,EAAE,GAAG,MAAM,CAAC,CAAC;QAChE,OAAO,IAAI,CAAC;IACd,CAAC;IAED,QAAQ,CAAC,IAAY,EAAE,IAA6B,EAAE,OAAO,GAAG,CAAC;QAC/D,MAAM,KAAK,GAAoB,EAAE,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC;QACvD,IAAI,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,IAAI,EAAE,CAAC,EAAE,KAAK,CAAC,CAAC;QAC5D,OAAO,IAAI,CAAC;IACd,CAAC;IAED,aAAa,CAAC,IAAY,EAAE,SAAS,GAAG,EAAE,EAAE,kBAAkB,GAAG,EAAE;QACjE,MAAM,MAAM,GAAG,EAAE,CAAC;QAClB,IAAI,WAAW,GAAG,EAAE,CAAC;QAErB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,IAAI,SAAS,EAAE,CAAC;YAChD,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,GAAG,SAAS,CAAC,CAAC;YAC3C,WAAW,IAAI,KAAK,CAAC;YAErB,MAAM,CAAC,IAAI,CAAC;gBACV,IAAI,EAAE,YAAY;gBAClB,IAAI,EAAE;oBACJ,KAAK,EAAE,KAAK;oBACZ,WAAW;iBACZ;gBACD,OAAO,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,kBAAkB,EAAE,+BAA+B;aAC7E,CAAC,CAAC;QACL,CAAC;QAED,OAAO,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;IAChC,CAAC;IAED,WAAW,CAAC,QAAgB,EAAE,KAAa,EAAE,MAAe,EAAE,gBAAgB,GAAG,GAAG;QAClF,MAAM,UAAU,GAAG,QAAQ,IAAI,CAAC,GAAG,EAAE,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC;QAEtF,MAAM,MAAM,GAAsB;YAChC;gBACE,IAAI,EAAE,iBAAiB;gBACvB,IAAI,EAAE;oBACJ,UAAU;oBACV,QAAQ;iBACT;gBACD,OAAO,EAAE,EAAE;aACZ;YACD;gBACE,IAAI,EAAE,kBAAkB;gBACxB,IAAI,EAAE;oBACJ,UAAU;oBACV,KAAK,EAAE,KAAK;oBACZ,gBAAgB,EAAE,KAAK;iBACxB;gBACD,OAAO,EAAE,EAAE;aACZ;YACD;gBACE,IAAI,EAAE,iBAAiB;gBACvB,IAAI,EAAE;oBACJ,UAAU;oBACV,QAAQ;oBACR,KAAK;iBACN;gBACD,OAAO,EAAE,EAAE;aACZ;YACD;gBACE,IAAI,EAAE,aAAa;gBACnB,IAAI,EAAE;oBACJ,UAAU;oBACV,QAAQ;oBACR,MAAM;oBACN,UAAU,EAAE,gBAAgB;iBAC7B;gBACD,OAAO,EAAE,gBAAgB;aAC1B;SACF,CAAC;QAEF,OAAO,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;IAChC,CAAC;IAED,WAAW,CAAC,eAAuB,EAAE,OAAO,GAAG,GAAG;QAChD,MAAM,MAAM,GAAsB;YAChC;gBACE,IAAI,EAAE,gBAAgB;gBACtB,IAAI,EAAE,EAAE;gBACR,OAAO,EAAE,EAAE;aACZ;YACD;gBACE,IAAI,EAAE,gBAAgB;gBACtB,IAAI,EAAE;oBACJ,KAAK,EAAE,eAAe;oBACtB,WAAW,EAAE,eAAe;iBAC7B;gBACD,OAAO;aACR;YACD;gBACE,IAAI,EAAE,eAAe;gBACrB,IAAI,EAAE;oBACJ,WAAW,EAAE,eAAe;iBAC7B;gBACD,OAAO,EAAE,EAAE;aACZ;SACF,CAAC;QAEF,OAAO,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;IAChC,CAAC;IAED,QAAQ,CAAC,WAAmB,EAAE,YAAoB,EAAE,cAAc,GAAG,CAAC;QACpE,2CAA2C;QAC3C,MAAM,SAAS,GAAG,WAAW,GAAG,KAAK,GAAG,IAAI,CAAC,CAAC,uBAAuB;QACrE,MAAM,UAAU,GAAG,YAAY,GAAG,KAAK,GAAG,IAAI,CAAC,CAAC,uBAAuB;QACvE,MAAM,YAAY,GAAG,cAAc,GAAG,KAAK,GAAG,IAAI,CAAC,CAAC,gBAAgB;QACpE,MAAM,QAAQ,GAAG,SAAS,GAAG,UAAU,GAAG,YAAY,CAAC;QAEvD,IAAI,CAAC,MAAM,CAAC,IAAI,GAAG;YACjB,WAAW;YACX,YAAY;YACZ,cAAc;YACd,QAAQ;SACT,CAAC;QAEF,OAAO,IAAI,CAAC;IACd,CAAC;IAED,SAAS,CAAC,IAAY,EAAE,OAAe,EAAE,OAAO,GAAG,GAAG;QACpD,IAAI,CAAC,MAAM,CAAC,aAAa,GAAG;YAC1B,SAAS,EAAE,IAAI;YACf,OAAO;YACP,OAAO;SACR,CAAC;QACF,OAAO,IAAI,CAAC;IACd,CAAC;IAED,KAAK;QACH,OAAO;YACL,YAAY,EAAE,IAAI;YAClB,MAAM,EAAE,EAAE;YACV,GAAG,IAAI,CAAC,MAAM;SACW,CAAC;IAC9B,CAAC;CACF;AAED,8EAA8E;AAC9E,wBAAwB;AACxB,8EAA8E;AAE9E,MAAM,OAAO,sBAAsB;IACjC,KAAK,CAAC,OAAO,CACX,MAA8B,EAC9B,OAAmB;QAEnB,MAAM,KAAK,GAAG,aAAa,EAAE,CAAC;QAC9B,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QAE7B,OAAO,IAAI,CAAC,iBAAiB,CAAC,MAAM,EAAE,KAAK,EAAE,SAAS,EAAE,OAAO,CAAC,CAAC;IACnE,CAAC;IAEO,KAAK,CAAC,CAAC,iBAAiB,CAC9B,MAA8B,EAC9B,KAAa,EACb,SAAiB,EACjB,OAAmB;QAEnB,IAAI,CAAC;YACH,uBAAuB;YACvB,IAAI,CAAC,MAAM,CAAC,YAAY,EAAE,CAAC;gBACzB,MAAM;oBACJ,GAAG,eAAe,CAAC,OAAO,EAAE,KAAK,EAAE,OAAO,CAAC,KAAe,CAAC;oBAC3D,IAAI,EAAE,cAAc;oBACpB,OAAO,EAAE,4BAA4B;oBACrC,KAAK,EAAE,KAAK;oBACZ,WAAW,EAAE,KAAK;iBACM,CAAC;gBAC3B,OAAO;YACT,CAAC;YAED,gBAAgB;YAChB,MAAM;gBACJ,GAAG,eAAe,CAAC,eAAe,EAAE,KAAK,EAAE,OAAO,CAAC,KAAe,CAAC;gBACnE,SAAS,EAAE,gBAAgB,KAAK,EAAE;gBAClC,SAAS,EAAE,CAAC;aACY,CAAC;YAE3B,gBAAgB;YAChB,IAAI,MAAM,CAAC,YAAY,EAAE,CAAC;gBACxB,MAAM,KAAK,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC;YACnC,CAAC;YAED,mBAAmB;YACnB,IAAI,MAAM,CAAC,aAAa,EAAE,CAAC;gBACzB,IAAI,MAAM,CAAC,aAAa,CAAC,OAAO,EAAE,CAAC;oBACjC,MAAM,KAAK,CAAC,MAAM,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC;gBAC5C,CAAC;gBAED,MAAM;oBACJ,GAAG,eAAe,CAAC,OAAO,EAAE,KAAK,EAAE,OAAO,CAAC,KAAe,CAAC;oBAC3D,IAAI,EAAE,MAAM,CAAC,aAAa,CAAC,SAAS;oBACpC,OAAO,EAAE,MAAM,CAAC,aAAa,CAAC,OAAO;oBACrC,KAAK,EAAE,IAAI;oBACX,WAAW,EAAE,KAAK;iBACM,CAAC;gBAC3B,OAAO;YACT,CAAC;YAED,gBAAgB;YAChB,KAAK,MAAM,SAAS,IAAI,MAAM,CAAC,MAAM,EAAE,CAAC;gBACtC,IAAI,SAAS,CAAC,OAAO,EAAE,CAAC;oBACtB,MAAM,KAAK,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC;gBACjC,CAAC;gBAED,MAAM;oBACJ,GAAG,eAAe,CAAC,SAAS,CAAC,IAAI,EAAE,KAAK,EAAE,OAAO,CAAC,KAAe,CAAC;oBAClE,GAAG,SAAS,CAAC,IAAI;iBACO,CAAC;YAC7B,CAAC;YAED,6BAA6B;YAC7B,IAAI,MAAM,CAAC,IAAI,EAAE,CAAC;gBAChB,MAAM;oBACJ,GAAG,eAAe,CAAC,MAAM,EAAE,KAAK,EAAE,OAAO,CAAC,KAAe,CAAC;oBAC1D,IAAI,EAAE,MAAM,CAAC,IAAI;iBACO,CAAC;YAC7B,CAAC;YAED,eAAe;YACf,MAAM;gBACJ,GAAG,eAAe,CAAC,cAAc,EAAE,KAAK,EAAE,OAAO,CAAC,KAAe,CAAC;aAC1C,CAAC;QAE7B,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM;gBACJ,GAAG,eAAe,CAAC,OAAO,EAAE,KAAK,EAAE,OAAO,CAAC,KAAe,CAAC;gBAC3D,IAAI,EAAE,UAAU;gBAChB,OAAO,EAAE,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC;gBAC/D,KAAK,EAAE,IAAI;gBACX,WAAW,EAAE,KAAK;aACM,CAAC;QAC7B,CAAC;IACH,CAAC;CACF;AAED,8EAA8E;AAC9E,kCAAkC;AAClC,8EAA8E;AAE9E,MAAM,OAAO,kBAAkB;IAC7B,MAAM,CAAC,YAAY;QACjB,OAAO,IAAI,2BAA2B,EAAE;aACrC,IAAI,CAAC,wBAAwB,CAAC;aAC9B,QAAQ,CAAC,IAAI,CAAC;aACd,WAAW,CAAC,+CAA+C,CAAC;aAC5D,aAAa,CAAC,kCAAkC,CAAC;aACjD,QAAQ,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC;aACpB,KAAK,EAAE,CAAC;IACb,CAAC;IAED,MAAM,CAAC,WAAW;QAChB,OAAO,IAAI,2BAA2B,EAAE;aACrC,IAAI,CAAC,wBAAwB,CAAC;aAC9B,QAAQ,CAAC,IAAI,CAAC;aACd,WAAW,CAAC,2DAA2D,CAAC;aACxE,WAAW,CAAC,WAAW,EAAE,2BAA2B,EAAE,oBAAoB,CAAC;aAC3E,aAAa,CAAC,oDAAoD,CAAC;aACnE,QAAQ,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC;aACpB,KAAK,EAAE,CAAC;IACb,CAAC;IAED,MAAM,CAAC,WAAW;QAChB,OAAO,IAAI,2BAA2B,EAAE;aACrC,IAAI,CAAC,4BAA4B,CAAC;aAClC,QAAQ,CAAC,KAAK,CAAC;aACf,KAAK,EAAE,CAAC;IACb,CAAC;CACF;AAED,MAAM,OAAO,YAAY;IACvB,MAAM,CAAC,YAAY;QACjB,OAAO,IAAI,2BAA2B,EAAE;aACrC,IAAI,CAAC,iBAAiB,CAAC;aACvB,QAAQ,CAAC,IAAI,CAAC;aACd,aAAa,CAAC,0DAA0D,CAAC;aACzE,QAAQ,CAAC,EAAE,EAAE,EAAE,CAAC;aAChB,KAAK,EAAE,CAAC;IACb,CAAC;IAED,MAAM,CAAC,cAAc;QACnB,OAAO,IAAI,2BAA2B,EAAE;aACrC,IAAI,CAAC,mBAAmB,CAAC;aACzB,QAAQ,CAAC,IAAI,CAAC;aACd,WAAW,CAAC,cAAc,EAAE,+BAA+B,EAAE,MAAM,CAAC;aACpE,aAAa,CAAC,+DAA+D,CAAC;aAC9E,QAAQ,CAAC,EAAE,EAAE,EAAE,CAAC;aAChB,KAAK,EAAE,CAAC;IACb,CAAC;CACF;AAED,MAAM,OAAO,SAAS;IACpB,MAAM,CAAC,YAAY;QACjB,OAAO,IAAI,2BAA2B,EAAE;aACrC,IAAI,CAAC,cAAc,CAAC;aACpB,QAAQ,CAAC,IAAI,CAAC;aACd,aAAa,CAAC,wDAAwD,CAAC;aACvE,QAAQ,CAAC,EAAE,EAAE,EAAE,CAAC;aAChB,KAAK,EAAE,CAAC;IACb,CAAC;IAED,MAAM,CAAC,SAAS;QACd,OAAO,IAAI,2BAA2B,EAAE;aACrC,IAAI,CAAC,mBAAmB,CAAC;aACzB,QAAQ,CAAC,IAAI,CAAC;aACd,WAAW,CAAC,YAAY,EAAE,0BAA0B,EAAE;YACrD,EAAE,KAAK,EAAE,gBAAgB,EAAE,GAAG,EAAE,uBAAuB,EAAE;YACzD,EAAE,KAAK,EAAE,gBAAgB,EAAE,GAAG,EAAE,uBAAuB,EAAE;SAC1D,CAAC;aACD,aAAa,CAAC,0DAA0D,CAAC;aACzE,QAAQ,CAAC,EAAE,EAAE,EAAE,CAAC;aAChB,KAAK,EAAE,CAAC;IACb,CAAC;CACF;AAED,8EAA8E;AAC9E,yBAAyB;AACzB,8EAA8E;AAE9E,MAAM,UAAU,6BAA6B;IAC3C,OAAO,IAAI,2BAA2B,EAAE,CAAC;AAC3C,CAAC;AAED,MAAM,CAAC,MAAM,iBAAiB,GAAG;IAC/B,MAAM,EAAE,kBAAkB;IAC1B,KAAK,EAAE,YAAY;IACnB,EAAE,EAAE,SAAS;IACb,MAAM,EAAE,IAAI,sBAAsB,EAAE;IACpC,OAAO,EAAE,6BAA6B;CACvC,CAAC"}
@@ -0,0 +1,52 @@
1
+ /**
2
+ * Mock implementations for remote adapters (HTTP/WebSocket).
3
+ *
4
+ * Provides realistic simulation of remote server/connection behavior for:
5
+ * - OpenCode HTTP
6
+ * - Codex WebSocket
7
+ * - Generic HTTP/WebSocket adapters
8
+ */
9
+ import { EventEmitter } from 'node:events';
10
+ import type { RemoteMockConfig, MockConnection, MockServerInfo, RemoteMockBuilder, MockStreamEvent } from './mock-types.js';
11
+ export declare class MockServer extends EventEmitter {
12
+ private info;
13
+ private config;
14
+ private connections;
15
+ private _started;
16
+ constructor(config: RemoteMockConfig);
17
+ start(): Promise<MockServerInfo>;
18
+ stop(): Promise<void>;
19
+ createConnection(connectionType: 'http' | 'websocket'): Promise<MockConnection>;
20
+ getInfo(): MockServerInfo;
21
+ getConnections(): MockConnection[];
22
+ }
23
+ export declare class RemoteMockBuilderImpl implements RemoteMockBuilder {
24
+ private config;
25
+ name(name: string): this;
26
+ withServer(serverConfig: RemoteMockConfig['server']): this;
27
+ withConnection(connectionConfig: RemoteMockConfig['connection']): this;
28
+ withWebSocket(wsConfig: RemoteMockConfig['websocket']): this;
29
+ withHttp(httpConfig: RemoteMockConfig['http']): this;
30
+ addEvents(events: MockStreamEvent[]): this;
31
+ withErrors(errors: RemoteMockConfig['simulateErrors']): this;
32
+ build(): RemoteMockConfig;
33
+ }
34
+ export declare class OpenCodeHttpMock {
35
+ static basicSuccess(): RemoteMockConfig;
36
+ static serverStartupFailure(): RemoteMockConfig;
37
+ static networkTimeout(): RemoteMockConfig;
38
+ }
39
+ export declare class CodexWebSocketMock {
40
+ static basicSuccess(): RemoteMockConfig;
41
+ static connectionDrop(): RemoteMockConfig;
42
+ static highThroughput(): RemoteMockConfig;
43
+ }
44
+ export declare function createRemoteMockBuilder(): RemoteMockBuilder;
45
+ export declare function createMockServer(config: RemoteMockConfig): MockServer;
46
+ export declare const remoteMocks: {
47
+ opencode: typeof OpenCodeHttpMock;
48
+ codex: typeof CodexWebSocketMock;
49
+ builder: typeof createRemoteMockBuilder;
50
+ server: typeof createMockServer;
51
+ };
52
+ //# sourceMappingURL=remote-mocks.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"remote-mocks.d.ts","sourceRoot":"","sources":["../../src/mocks/remote-mocks.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAE3C,OAAO,KAAK,EACV,gBAAgB,EAChB,cAAc,EACd,cAAc,EACd,iBAAiB,EACjB,eAAe,EAChB,MAAM,iBAAiB,CAAC;AA2BzB,qBAAa,UAAW,SAAQ,YAAY;IAC1C,OAAO,CAAC,IAAI,CAAiB;IAC7B,OAAO,CAAC,MAAM,CAAmB;IACjC,OAAO,CAAC,WAAW,CAAqC;IACxD,OAAO,CAAC,QAAQ,CAAS;gBAEb,MAAM,EAAE,gBAAgB;IAY9B,KAAK,IAAI,OAAO,CAAC,cAAc,CAAC;IAyBhC,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;IAiBrB,gBAAgB,CAAC,cAAc,EAAE,MAAM,GAAG,WAAW,GAAG,OAAO,CAAC,cAAc,CAAC;IAiBrF,OAAO,IAAI,cAAc;IAIzB,cAAc,IAAI,cAAc,EAAE;CAGnC;AA+KD,qBAAa,qBAAsB,YAAW,iBAAiB;IAC7D,OAAO,CAAC,MAAM,CAEZ;IAEF,IAAI,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI;IAKxB,UAAU,CAAC,YAAY,EAAE,gBAAgB,CAAC,QAAQ,CAAC,GAAG,IAAI;IAK1D,cAAc,CAAC,gBAAgB,EAAE,gBAAgB,CAAC,YAAY,CAAC,GAAG,IAAI;IAKtE,aAAa,CAAC,QAAQ,EAAE,gBAAgB,CAAC,WAAW,CAAC,GAAG,IAAI;IAK5D,QAAQ,CAAC,UAAU,EAAE,gBAAgB,CAAC,MAAM,CAAC,GAAG,IAAI;IAKpD,SAAS,CAAC,MAAM,EAAE,eAAe,EAAE,GAAG,IAAI;IAK1C,UAAU,CAAC,MAAM,EAAE,gBAAgB,CAAC,gBAAgB,CAAC,GAAG,IAAI;IAK5D,KAAK,IAAI,gBAAgB;CAM1B;AAMD,qBAAa,gBAAgB;IAC3B,MAAM,CAAC,YAAY,IAAI,gBAAgB;IAkCvC,MAAM,CAAC,oBAAoB,IAAI,gBAAgB;IAO/C,MAAM,CAAC,cAAc,IAAI,gBAAgB;CAQ1C;AAED,qBAAa,kBAAkB;IAC7B,MAAM,CAAC,YAAY,IAAI,gBAAgB;IAkCvC,MAAM,CAAC,cAAc,IAAI,gBAAgB;IA+BzC,MAAM,CAAC,cAAc,IAAI,gBAAgB;CAiC1C;AAMD,wBAAgB,uBAAuB,IAAI,iBAAiB,CAE3D;AAED,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,gBAAgB,GAAG,UAAU,CAErE;AAED,eAAO,MAAM,WAAW;;;;;CAKvB,CAAC"}