@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.
- package/dist/amp-adapter.d.ts +31 -0
- package/dist/amp-adapter.d.ts.map +1 -0
- package/dist/amp-adapter.js +336 -0
- package/dist/amp-adapter.js.map +1 -0
- package/dist/base-adapter-helpers.d.ts +8 -0
- package/dist/base-adapter-helpers.d.ts.map +1 -0
- package/dist/base-adapter-helpers.js +68 -0
- package/dist/base-adapter-helpers.js.map +1 -0
- package/dist/base-adapter.d.ts +14 -9
- package/dist/base-adapter.d.ts.map +1 -1
- package/dist/base-adapter.js +23 -66
- package/dist/base-adapter.js.map +1 -1
- package/dist/claude-adapter.d.ts.map +1 -1
- package/dist/claude-adapter.js +5 -2
- package/dist/claude-adapter.js.map +1 -1
- package/dist/claude-agent-sdk-adapter.d.ts +53 -0
- package/dist/claude-agent-sdk-adapter.d.ts.map +1 -0
- package/dist/claude-agent-sdk-adapter.js +607 -0
- package/dist/claude-agent-sdk-adapter.js.map +1 -0
- package/dist/codex-adapter.d.ts.map +1 -1
- package/dist/codex-adapter.js +99 -11
- package/dist/codex-adapter.js.map +1 -1
- package/dist/codex-sdk-adapter.d.ts +32 -0
- package/dist/codex-sdk-adapter.d.ts.map +1 -0
- package/dist/codex-sdk-adapter.js +384 -0
- package/dist/codex-sdk-adapter.js.map +1 -0
- package/dist/codex-sdk-mocks.d.ts +51 -0
- package/dist/codex-sdk-mocks.d.ts.map +1 -0
- package/dist/codex-sdk-mocks.js +97 -0
- package/dist/codex-sdk-mocks.js.map +1 -0
- package/dist/codex-websocket-adapter.d.ts +41 -0
- package/dist/codex-websocket-adapter.d.ts.map +1 -0
- package/dist/codex-websocket-adapter.js +289 -0
- package/dist/codex-websocket-adapter.js.map +1 -0
- package/dist/codex-websocket-connection.d.ts +58 -0
- package/dist/codex-websocket-connection.d.ts.map +1 -0
- package/dist/codex-websocket-connection.js +244 -0
- package/dist/codex-websocket-connection.js.map +1 -0
- package/dist/copilot-adapter.d.ts.map +1 -1
- package/dist/copilot-adapter.js +7 -3
- package/dist/copilot-adapter.js.map +1 -1
- package/dist/cursor-adapter.d.ts.map +1 -1
- package/dist/cursor-adapter.js +5 -2
- package/dist/cursor-adapter.js.map +1 -1
- package/dist/droid-adapter.d.ts +30 -0
- package/dist/droid-adapter.d.ts.map +1 -0
- package/dist/droid-adapter.js +377 -0
- package/dist/droid-adapter.js.map +1 -0
- package/dist/gemini-adapter.d.ts.map +1 -1
- package/dist/gemini-adapter.js +5 -2
- package/dist/gemini-adapter.js.map +1 -1
- package/dist/hermes-adapter.d.ts.map +1 -1
- package/dist/hermes-adapter.js +6 -2
- package/dist/hermes-adapter.js.map +1 -1
- package/dist/index.d.ts +10 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +20 -1
- package/dist/index.js.map +1 -1
- package/dist/mocks/index.d.ts +60 -0
- package/dist/mocks/index.d.ts.map +1 -0
- package/dist/mocks/index.js +203 -0
- package/dist/mocks/index.js.map +1 -0
- package/dist/mocks/mock-types.d.ts +260 -0
- package/dist/mocks/mock-types.d.ts.map +1 -0
- package/dist/mocks/mock-types.js +12 -0
- package/dist/mocks/mock-types.js.map +1 -0
- package/dist/mocks/programmatic-mocks.d.ts +50 -0
- package/dist/mocks/programmatic-mocks.d.ts.map +1 -0
- package/dist/mocks/programmatic-mocks.js +330 -0
- package/dist/mocks/programmatic-mocks.js.map +1 -0
- package/dist/mocks/remote-mocks.d.ts +52 -0
- package/dist/mocks/remote-mocks.d.ts.map +1 -0
- package/dist/mocks/remote-mocks.js +436 -0
- package/dist/mocks/remote-mocks.js.map +1 -0
- package/dist/omp-adapter.d.ts.map +1 -1
- package/dist/omp-adapter.js +6 -3
- package/dist/omp-adapter.js.map +1 -1
- package/dist/openclaw-adapter.d.ts.map +1 -1
- package/dist/openclaw-adapter.js +6 -3
- package/dist/openclaw-adapter.js.map +1 -1
- package/dist/opencode-adapter.d.ts +2 -2
- package/dist/opencode-adapter.d.ts.map +1 -1
- package/dist/opencode-adapter.js +172 -60
- package/dist/opencode-adapter.js.map +1 -1
- package/dist/opencode-http-adapter.d.ts +41 -0
- package/dist/opencode-http-adapter.d.ts.map +1 -0
- package/dist/opencode-http-adapter.js +370 -0
- package/dist/opencode-http-adapter.js.map +1 -0
- package/dist/opencode-http-connection.d.ts +33 -0
- package/dist/opencode-http-connection.d.ts.map +1 -0
- package/dist/opencode-http-connection.js +198 -0
- package/dist/opencode-http-connection.js.map +1 -0
- package/dist/pi-adapter.d.ts.map +1 -1
- package/dist/pi-adapter.js +5 -2
- package/dist/pi-adapter.js.map +1 -1
- package/dist/pi-sdk-adapter.d.ts +46 -0
- package/dist/pi-sdk-adapter.d.ts.map +1 -0
- package/dist/pi-sdk-adapter.js +549 -0
- package/dist/pi-sdk-adapter.js.map +1 -0
- package/dist/programmatic-adapter-base.d.ts +88 -0
- package/dist/programmatic-adapter-base.d.ts.map +1 -0
- package/dist/programmatic-adapter-base.js +169 -0
- package/dist/programmatic-adapter-base.js.map +1 -0
- package/dist/qwen-adapter.d.ts.map +1 -1
- package/dist/qwen-adapter.js +5 -2
- package/dist/qwen-adapter.js.map +1 -1
- package/dist/remote-adapter-base.d.ts +85 -0
- package/dist/remote-adapter-base.d.ts.map +1 -0
- package/dist/remote-adapter-base.js +102 -0
- package/dist/remote-adapter-base.js.map +1 -0
- 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":"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"}
|
|
@@ -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"}
|