@a5c-ai/agent-mux-adapters 0.4.0 → 0.4.2
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/README.md +3 -1
- package/dist/agent-mux-remote-adapter.d.ts.map +1 -1
- package/dist/agent-mux-remote-adapter.js +4 -0
- package/dist/agent-mux-remote-adapter.js.map +1 -1
- package/dist/amp-adapter.d.ts +2 -1
- package/dist/amp-adapter.d.ts.map +1 -1
- package/dist/amp-adapter.js +93 -17
- package/dist/amp-adapter.js.map +1 -1
- package/dist/babysitter-adapter.d.ts +29 -0
- package/dist/babysitter-adapter.d.ts.map +1 -0
- package/dist/babysitter-adapter.js +338 -0
- package/dist/babysitter-adapter.js.map +1 -0
- package/dist/base-adapter.d.ts +7 -0
- package/dist/base-adapter.d.ts.map +1 -1
- package/dist/base-adapter.js +113 -1
- package/dist/base-adapter.js.map +1 -1
- package/dist/claude-adapter.d.ts +14 -3
- package/dist/claude-adapter.d.ts.map +1 -1
- package/dist/claude-adapter.js +222 -25
- package/dist/claude-adapter.js.map +1 -1
- package/dist/claude-agent-sdk-adapter.d.ts +21 -34
- package/dist/claude-agent-sdk-adapter.d.ts.map +1 -1
- package/dist/claude-agent-sdk-adapter.js +629 -397
- package/dist/claude-agent-sdk-adapter.js.map +1 -1
- package/dist/claude-code/runtime-hooks/ephemeral-config.d.ts +12 -0
- package/dist/claude-code/runtime-hooks/ephemeral-config.d.ts.map +1 -0
- package/dist/claude-code/runtime-hooks/ephemeral-config.js +143 -0
- package/dist/claude-code/runtime-hooks/ephemeral-config.js.map +1 -0
- package/dist/claude-code/runtime-hooks/hook-socket-server.d.ts +10 -0
- package/dist/claude-code/runtime-hooks/hook-socket-server.d.ts.map +1 -0
- package/dist/claude-code/runtime-hooks/hook-socket-server.js +79 -0
- package/dist/claude-code/runtime-hooks/hook-socket-server.js.map +1 -0
- package/dist/claude-code/runtime-hooks/lifecycle.d.ts +3 -0
- package/dist/claude-code/runtime-hooks/lifecycle.d.ts.map +1 -0
- package/dist/claude-code/runtime-hooks/lifecycle.js +24 -0
- package/dist/claude-code/runtime-hooks/lifecycle.js.map +1 -0
- package/dist/claude-remote-control-adapter.d.ts +43 -0
- package/dist/claude-remote-control-adapter.d.ts.map +1 -0
- package/dist/claude-remote-control-adapter.js +505 -0
- package/dist/claude-remote-control-adapter.js.map +1 -0
- package/dist/codex-adapter.d.ts.map +1 -1
- package/dist/codex-adapter.js +64 -41
- package/dist/codex-adapter.js.map +1 -1
- package/dist/codex-sdk-adapter.d.ts.map +1 -1
- package/dist/codex-sdk-adapter.js +6 -2
- package/dist/codex-sdk-adapter.js.map +1 -1
- package/dist/codex-websocket-adapter.d.ts +11 -18
- package/dist/codex-websocket-adapter.d.ts.map +1 -1
- package/dist/codex-websocket-adapter.js +199 -90
- package/dist/codex-websocket-adapter.js.map +1 -1
- package/dist/codex-websocket-connection.d.ts +60 -40
- package/dist/codex-websocket-connection.d.ts.map +1 -1
- package/dist/codex-websocket-connection.js +692 -203
- package/dist/codex-websocket-connection.js.map +1 -1
- package/dist/copilot-adapter.d.ts.map +1 -1
- package/dist/copilot-adapter.js +4 -0
- package/dist/copilot-adapter.js.map +1 -1
- package/dist/cursor-adapter.d.ts +3 -1
- package/dist/cursor-adapter.d.ts.map +1 -1
- package/dist/cursor-adapter.js +5 -1
- package/dist/cursor-adapter.js.map +1 -1
- package/dist/droid-adapter.d.ts +4 -2
- package/dist/droid-adapter.d.ts.map +1 -1
- package/dist/droid-adapter.js +12 -11
- package/dist/droid-adapter.js.map +1 -1
- package/dist/gemini-adapter.d.ts +3 -1
- package/dist/gemini-adapter.d.ts.map +1 -1
- package/dist/gemini-adapter.js +5 -1
- package/dist/gemini-adapter.js.map +1 -1
- package/dist/hermes-adapter.d.ts.map +1 -1
- package/dist/hermes-adapter.js +4 -0
- package/dist/hermes-adapter.js.map +1 -1
- package/dist/index.d.ts +4 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +3 -10
- package/dist/index.js.map +1 -1
- package/dist/mcp-plugins.d.ts +5 -3
- package/dist/mcp-plugins.d.ts.map +1 -1
- package/dist/mcp-plugins.js +58 -24
- package/dist/mcp-plugins.js.map +1 -1
- package/dist/omp-adapter.d.ts.map +1 -1
- package/dist/omp-adapter.js +4 -0
- package/dist/omp-adapter.js.map +1 -1
- package/dist/openclaw-adapter.d.ts +3 -1
- package/dist/openclaw-adapter.d.ts.map +1 -1
- package/dist/openclaw-adapter.js +5 -1
- package/dist/openclaw-adapter.js.map +1 -1
- package/dist/opencode-adapter.d.ts +3 -1
- package/dist/opencode-adapter.d.ts.map +1 -1
- package/dist/opencode-adapter.js +7 -3
- package/dist/opencode-adapter.js.map +1 -1
- package/dist/opencode-http-adapter.d.ts +3 -1
- package/dist/opencode-http-adapter.d.ts.map +1 -1
- package/dist/opencode-http-adapter.js +5 -1
- package/dist/opencode-http-adapter.js.map +1 -1
- package/dist/pi-adapter.d.ts.map +1 -1
- package/dist/pi-adapter.js +4 -0
- package/dist/pi-adapter.js.map +1 -1
- package/dist/pi-sdk-adapter.d.ts.map +1 -1
- package/dist/pi-sdk-adapter.js +4 -0
- package/dist/pi-sdk-adapter.js.map +1 -1
- package/dist/provider-translation.d.ts +10 -0
- package/dist/provider-translation.d.ts.map +1 -0
- package/dist/provider-translation.js +2 -0
- package/dist/provider-translation.js.map +1 -0
- package/dist/qwen-adapter.d.ts +3 -1
- package/dist/qwen-adapter.d.ts.map +1 -1
- package/dist/qwen-adapter.js +5 -1
- package/dist/qwen-adapter.js.map +1 -1
- package/dist/session-fs.d.ts +15 -5
- package/dist/session-fs.d.ts.map +1 -1
- package/dist/session-fs.js +249 -0
- package/dist/session-fs.js.map +1 -1
- package/dist/shared/runtime-hooks-virtual.d.ts +3 -0
- package/dist/shared/runtime-hooks-virtual.d.ts.map +1 -0
- package/dist/shared/runtime-hooks-virtual.js +13 -0
- package/dist/shared/runtime-hooks-virtual.js.map +1 -0
- package/dist/translate-for-harness.d.ts +6 -0
- package/dist/translate-for-harness.d.ts.map +1 -0
- package/dist/translate-for-harness.js +36 -0
- package/dist/translate-for-harness.js.map +1 -0
- package/dist/translations/claude-translation.d.ts +4 -0
- package/dist/translations/claude-translation.d.ts.map +1 -0
- package/dist/translations/claude-translation.js +50 -0
- package/dist/translations/claude-translation.js.map +1 -0
- package/dist/translations/codex-translation.d.ts +4 -0
- package/dist/translations/codex-translation.d.ts.map +1 -0
- package/dist/translations/codex-translation.js +32 -0
- package/dist/translations/codex-translation.js.map +1 -0
- package/dist/translations/gemini-translation.d.ts +4 -0
- package/dist/translations/gemini-translation.d.ts.map +1 -0
- package/dist/translations/gemini-translation.js +20 -0
- package/dist/translations/gemini-translation.js.map +1 -0
- package/dist/translations/generic-openai-translation.d.ts +4 -0
- package/dist/translations/generic-openai-translation.d.ts.map +1 -0
- package/dist/translations/generic-openai-translation.js +19 -0
- package/dist/translations/generic-openai-translation.js.map +1 -0
- package/dist/translations/opencode-translation.d.ts +4 -0
- package/dist/translations/opencode-translation.d.ts.map +1 -0
- package/dist/translations/opencode-translation.js +51 -0
- package/dist/translations/opencode-translation.js.map +1 -0
- package/package.json +4 -2
- package/dist/mocks/index.d.ts +0 -60
- package/dist/mocks/index.d.ts.map +0 -1
- package/dist/mocks/index.js +0 -203
- package/dist/mocks/index.js.map +0 -1
- package/dist/mocks/mock-types.d.ts +0 -260
- package/dist/mocks/mock-types.d.ts.map +0 -1
- package/dist/mocks/mock-types.js +0 -12
- package/dist/mocks/mock-types.js.map +0 -1
- package/dist/mocks/programmatic-mocks.d.ts +0 -50
- package/dist/mocks/programmatic-mocks.d.ts.map +0 -1
- package/dist/mocks/programmatic-mocks.js +0 -330
- package/dist/mocks/programmatic-mocks.js.map +0 -1
- package/dist/mocks/remote-mocks.d.ts +0 -52
- package/dist/mocks/remote-mocks.d.ts.map +0 -1
- package/dist/mocks/remote-mocks.js +0 -436
- package/dist/mocks/remote-mocks.js.map +0 -1
|
@@ -1,260 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Mock types for new adapter architectures (programmatic, remote, WebSocket).
|
|
3
|
-
*
|
|
4
|
-
* These mocks complement the existing harness-mock package which focuses on
|
|
5
|
-
* subprocess adapters. These types handle:
|
|
6
|
-
* - Programmatic adapters (SDK integration)
|
|
7
|
-
* - Remote HTTP/WebSocket adapters
|
|
8
|
-
* - Connection lifecycle simulation
|
|
9
|
-
* - Real-time streaming behaviors
|
|
10
|
-
*/
|
|
11
|
-
import type { AgentEvent } from '@a5c-ai/agent-mux-core';
|
|
12
|
-
/**
|
|
13
|
-
* Configuration for mocking SDK behavior in programmatic adapters.
|
|
14
|
-
*/
|
|
15
|
-
export interface ProgrammaticMockConfig {
|
|
16
|
-
/** Mock scenario name for identification */
|
|
17
|
-
name?: string;
|
|
18
|
-
/** Whether authentication should succeed */
|
|
19
|
-
authSucceeds: boolean;
|
|
20
|
-
/** Sequence of events to emit during execution */
|
|
21
|
-
events: MockStreamEvent[];
|
|
22
|
-
/** Delay before starting to emit events (ms) */
|
|
23
|
-
startDelayMs?: number;
|
|
24
|
-
/** Whether to simulate SDK errors */
|
|
25
|
-
simulateError?: {
|
|
26
|
-
errorCode: string;
|
|
27
|
-
message: string;
|
|
28
|
-
delayMs?: number;
|
|
29
|
-
};
|
|
30
|
-
/** Cost information to return */
|
|
31
|
-
cost?: {
|
|
32
|
-
inputTokens: number;
|
|
33
|
-
outputTokens: number;
|
|
34
|
-
thinkingTokens?: number;
|
|
35
|
-
totalUsd: number;
|
|
36
|
-
};
|
|
37
|
-
}
|
|
38
|
-
/**
|
|
39
|
-
* A mock event in the stream with timing and content.
|
|
40
|
-
*/
|
|
41
|
-
export interface MockStreamEvent {
|
|
42
|
-
/** Event type matching AgentEvent taxonomy */
|
|
43
|
-
type: string;
|
|
44
|
-
/** Event data/payload */
|
|
45
|
-
data: Record<string, unknown>;
|
|
46
|
-
/** Delay before this event (ms, relative to previous) */
|
|
47
|
-
delayMs?: number;
|
|
48
|
-
}
|
|
49
|
-
/**
|
|
50
|
-
* Configuration for mocking remote server/connection behavior.
|
|
51
|
-
*/
|
|
52
|
-
export interface RemoteMockConfig {
|
|
53
|
-
/** Mock scenario name */
|
|
54
|
-
name?: string;
|
|
55
|
-
/** Server startup behavior */
|
|
56
|
-
server?: {
|
|
57
|
-
/** Delay before server becomes ready */
|
|
58
|
-
startupDelayMs?: number;
|
|
59
|
-
/** Port to simulate (for testing) */
|
|
60
|
-
port?: number;
|
|
61
|
-
/** Whether server startup should fail */
|
|
62
|
-
startupFails?: boolean;
|
|
63
|
-
};
|
|
64
|
-
/** Connection behavior */
|
|
65
|
-
connection?: {
|
|
66
|
-
/** Delay for connection establishment */
|
|
67
|
-
connectDelayMs?: number;
|
|
68
|
-
/** Whether connection should fail */
|
|
69
|
-
connectFails?: boolean;
|
|
70
|
-
/** Disconnect after N events (for testing reconnection) */
|
|
71
|
-
disconnectAfterEvents?: number;
|
|
72
|
-
};
|
|
73
|
-
/** WebSocket-specific behavior */
|
|
74
|
-
websocket?: {
|
|
75
|
-
/** Channels to simulate */
|
|
76
|
-
channels?: string[];
|
|
77
|
-
/** Ping/pong intervals (ms) */
|
|
78
|
-
pingIntervalMs?: number;
|
|
79
|
-
/** Simulated connection drops */
|
|
80
|
-
dropConnection?: {
|
|
81
|
-
afterMs: number;
|
|
82
|
-
reconnectDelayMs?: number;
|
|
83
|
-
};
|
|
84
|
-
};
|
|
85
|
-
/** HTTP-specific behavior */
|
|
86
|
-
http?: {
|
|
87
|
-
/** Base URL for simulation */
|
|
88
|
-
baseUrl?: string;
|
|
89
|
-
/** Response delays for different endpoints */
|
|
90
|
-
endpointDelays?: Record<string, number>;
|
|
91
|
-
/** Status codes to return */
|
|
92
|
-
statusCodes?: Record<string, number>;
|
|
93
|
-
};
|
|
94
|
-
/** Events to emit during session */
|
|
95
|
-
events: MockStreamEvent[];
|
|
96
|
-
/** Whether to simulate various error conditions */
|
|
97
|
-
simulateErrors?: {
|
|
98
|
-
networkTimeout?: boolean;
|
|
99
|
-
connectionReset?: boolean;
|
|
100
|
-
invalidResponse?: boolean;
|
|
101
|
-
authFailure?: boolean;
|
|
102
|
-
};
|
|
103
|
-
}
|
|
104
|
-
/**
|
|
105
|
-
* Response from a programmatic mock execution.
|
|
106
|
-
*/
|
|
107
|
-
export interface ProgrammaticMockResponse {
|
|
108
|
-
/** All events that were emitted */
|
|
109
|
-
events: AgentEvent[];
|
|
110
|
-
/** Total duration of the mock execution */
|
|
111
|
-
durationMs: number;
|
|
112
|
-
/** Whether the execution completed successfully */
|
|
113
|
-
success: boolean;
|
|
114
|
-
/** Error information if execution failed */
|
|
115
|
-
error?: {
|
|
116
|
-
code: string;
|
|
117
|
-
message: string;
|
|
118
|
-
};
|
|
119
|
-
}
|
|
120
|
-
/**
|
|
121
|
-
* Information about a mock remote server instance.
|
|
122
|
-
*/
|
|
123
|
-
export interface MockServerInfo {
|
|
124
|
-
/** Server ID for tracking */
|
|
125
|
-
serverId: string;
|
|
126
|
-
/** Simulated endpoint */
|
|
127
|
-
endpoint: string;
|
|
128
|
-
/** Port (simulated) */
|
|
129
|
-
port: number;
|
|
130
|
-
/** Server start time */
|
|
131
|
-
startedAt: Date;
|
|
132
|
-
/** Current status */
|
|
133
|
-
status: 'starting' | 'running' | 'stopped' | 'error';
|
|
134
|
-
}
|
|
135
|
-
/**
|
|
136
|
-
* Mock connection handle for remote adapters.
|
|
137
|
-
*/
|
|
138
|
-
export interface MockConnection {
|
|
139
|
-
/** Connection ID */
|
|
140
|
-
connectionId: string;
|
|
141
|
-
/** Connection type */
|
|
142
|
-
connectionType: 'http' | 'websocket';
|
|
143
|
-
/** Endpoint URL */
|
|
144
|
-
endpoint: string;
|
|
145
|
-
/** Connection state */
|
|
146
|
-
state: 'connecting' | 'connected' | 'disconnected' | 'error';
|
|
147
|
-
/** Send data through the mock connection */
|
|
148
|
-
send(data: unknown): Promise<void>;
|
|
149
|
-
/** Receive events from the mock connection */
|
|
150
|
-
receive(): AsyncIterableIterator<AgentEvent>;
|
|
151
|
-
/** Close the mock connection */
|
|
152
|
-
close(): Promise<void>;
|
|
153
|
-
/** Get connection statistics */
|
|
154
|
-
getStats(): {
|
|
155
|
-
eventsReceived: number;
|
|
156
|
-
eventsSent: number;
|
|
157
|
-
connectTime: Date;
|
|
158
|
-
lastActivity: Date;
|
|
159
|
-
};
|
|
160
|
-
}
|
|
161
|
-
/**
|
|
162
|
-
* Builder interface for creating programmatic mocks.
|
|
163
|
-
*/
|
|
164
|
-
export interface ProgrammaticMockBuilder {
|
|
165
|
-
/** Set mock name */
|
|
166
|
-
name(name: string): this;
|
|
167
|
-
/** Configure authentication behavior */
|
|
168
|
-
withAuth(succeeds: boolean): this;
|
|
169
|
-
/** Add events to the stream */
|
|
170
|
-
addEvents(events: MockStreamEvent[]): this;
|
|
171
|
-
/** Add a single event */
|
|
172
|
-
addEvent(type: string, data: Record<string, unknown>, delayMs?: number): this;
|
|
173
|
-
/** Add realistic text streaming events */
|
|
174
|
-
addTextStream(text: string, chunkSize?: number, delayBetweenChunks?: number): this;
|
|
175
|
-
/** Add tool calling sequence */
|
|
176
|
-
addToolCall(toolName: string, input: string, output: unknown, processingTimeMs?: number): this;
|
|
177
|
-
/** Add thinking sequence (for Claude) */
|
|
178
|
-
addThinking(thinkingContent: string, delayMs?: number): this;
|
|
179
|
-
/** Add cost information */
|
|
180
|
-
withCost(inputTokens: number, outputTokens: number, thinkingTokens?: number): this;
|
|
181
|
-
/** Simulate an error */
|
|
182
|
-
withError(code: string, message: string, delayMs?: number): this;
|
|
183
|
-
/** Build the final configuration */
|
|
184
|
-
build(): ProgrammaticMockConfig;
|
|
185
|
-
}
|
|
186
|
-
/**
|
|
187
|
-
* Builder interface for creating remote mocks.
|
|
188
|
-
*/
|
|
189
|
-
export interface RemoteMockBuilder {
|
|
190
|
-
/** Set mock name */
|
|
191
|
-
name(name: string): this;
|
|
192
|
-
/** Configure server behavior */
|
|
193
|
-
withServer(config: RemoteMockConfig['server']): this;
|
|
194
|
-
/** Configure connection behavior */
|
|
195
|
-
withConnection(config: RemoteMockConfig['connection']): this;
|
|
196
|
-
/** Configure WebSocket-specific behavior */
|
|
197
|
-
withWebSocket(config: RemoteMockConfig['websocket']): this;
|
|
198
|
-
/** Configure HTTP-specific behavior */
|
|
199
|
-
withHttp(config: RemoteMockConfig['http']): this;
|
|
200
|
-
/** Add events to emit */
|
|
201
|
-
addEvents(events: MockStreamEvent[]): this;
|
|
202
|
-
/** Add error simulation */
|
|
203
|
-
withErrors(errors: RemoteMockConfig['simulateErrors']): this;
|
|
204
|
-
/** Build the final configuration */
|
|
205
|
-
build(): RemoteMockConfig;
|
|
206
|
-
}
|
|
207
|
-
/**
|
|
208
|
-
* Factory for creating adapter-specific mock configurations.
|
|
209
|
-
*/
|
|
210
|
-
export interface MockConfigFactory {
|
|
211
|
-
/** Create Claude Agent SDK mock */
|
|
212
|
-
claudeAgentSdk(): ProgrammaticMockBuilder;
|
|
213
|
-
/** Create Codex SDK mock */
|
|
214
|
-
codexSdk(): ProgrammaticMockBuilder;
|
|
215
|
-
/** Create Pi SDK mock */
|
|
216
|
-
piSdk(): ProgrammaticMockBuilder;
|
|
217
|
-
/** Create OpenCode HTTP mock */
|
|
218
|
-
opencodeHttp(): RemoteMockBuilder;
|
|
219
|
-
/** Create Codex WebSocket mock */
|
|
220
|
-
codexWebSocket(): RemoteMockBuilder;
|
|
221
|
-
/** Create custom programmatic mock */
|
|
222
|
-
programmatic(): ProgrammaticMockBuilder;
|
|
223
|
-
/** Create custom remote mock */
|
|
224
|
-
remote(): RemoteMockBuilder;
|
|
225
|
-
}
|
|
226
|
-
/**
|
|
227
|
-
* Pre-built mock scenarios for common test cases.
|
|
228
|
-
*/
|
|
229
|
-
export interface MockScenarios {
|
|
230
|
-
/** Basic successful text generation */
|
|
231
|
-
basicSuccess: {
|
|
232
|
-
programmatic: ProgrammaticMockConfig;
|
|
233
|
-
remote: RemoteMockConfig;
|
|
234
|
-
};
|
|
235
|
-
/** Tool calling scenarios */
|
|
236
|
-
toolCalling: {
|
|
237
|
-
programmatic: ProgrammaticMockConfig;
|
|
238
|
-
remote: RemoteMockConfig;
|
|
239
|
-
};
|
|
240
|
-
/** Error conditions */
|
|
241
|
-
errors: {
|
|
242
|
-
authFailure: ProgrammaticMockConfig;
|
|
243
|
-
networkTimeout: RemoteMockConfig;
|
|
244
|
-
connectionDrop: RemoteMockConfig;
|
|
245
|
-
invalidResponse: RemoteMockConfig;
|
|
246
|
-
};
|
|
247
|
-
/** Performance testing */
|
|
248
|
-
performance: {
|
|
249
|
-
highThroughput: RemoteMockConfig;
|
|
250
|
-
lowLatency: ProgrammaticMockConfig;
|
|
251
|
-
largeBatch: ProgrammaticMockConfig;
|
|
252
|
-
};
|
|
253
|
-
/** Edge cases */
|
|
254
|
-
edgeCases: {
|
|
255
|
-
emptyResponse: ProgrammaticMockConfig;
|
|
256
|
-
malformedEvents: RemoteMockConfig;
|
|
257
|
-
reconnection: RemoteMockConfig;
|
|
258
|
-
};
|
|
259
|
-
}
|
|
260
|
-
//# sourceMappingURL=mock-types.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"mock-types.d.ts","sourceRoot":"","sources":["../../src/mocks/mock-types.ts"],"names":[],"mappings":"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"}
|
package/dist/mocks/mock-types.js
DELETED
|
@@ -1,12 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Mock types for new adapter architectures (programmatic, remote, WebSocket).
|
|
3
|
-
*
|
|
4
|
-
* These mocks complement the existing harness-mock package which focuses on
|
|
5
|
-
* subprocess adapters. These types handle:
|
|
6
|
-
* - Programmatic adapters (SDK integration)
|
|
7
|
-
* - Remote HTTP/WebSocket adapters
|
|
8
|
-
* - Connection lifecycle simulation
|
|
9
|
-
* - Real-time streaming behaviors
|
|
10
|
-
*/
|
|
11
|
-
export {};
|
|
12
|
-
//# sourceMappingURL=mock-types.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"mock-types.js","sourceRoot":"","sources":["../../src/mocks/mock-types.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG"}
|
|
@@ -1,50 +0,0 @@
|
|
|
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
|
-
import type { AgentEvent, RunOptions } from '@a5c-ai/agent-mux-core';
|
|
11
|
-
import type { ProgrammaticMockConfig, ProgrammaticMockBuilder, MockStreamEvent } from './mock-types.js';
|
|
12
|
-
export declare class ProgrammaticMockBuilderImpl implements ProgrammaticMockBuilder {
|
|
13
|
-
private config;
|
|
14
|
-
name(name: string): this;
|
|
15
|
-
withAuth(succeeds: boolean): this;
|
|
16
|
-
addEvents(events: MockStreamEvent[]): this;
|
|
17
|
-
addEvent(type: string, data: Record<string, unknown>, delayMs?: number): this;
|
|
18
|
-
addTextStream(text: string, chunkSize?: number, delayBetweenChunks?: number): this;
|
|
19
|
-
addToolCall(toolName: string, input: string, output: unknown, processingTimeMs?: number): this;
|
|
20
|
-
addThinking(thinkingContent: string, delayMs?: number): this;
|
|
21
|
-
withCost(inputTokens: number, outputTokens: number, thinkingTokens?: number): this;
|
|
22
|
-
withError(code: string, message: string, delayMs?: number): this;
|
|
23
|
-
build(): ProgrammaticMockConfig;
|
|
24
|
-
}
|
|
25
|
-
export declare class ProgrammaticMockEngine {
|
|
26
|
-
execute(config: ProgrammaticMockConfig, options: RunOptions): Promise<AsyncIterableIterator<AgentEvent>>;
|
|
27
|
-
private createEventStream;
|
|
28
|
-
}
|
|
29
|
-
export declare class ClaudeAgentSdkMock {
|
|
30
|
-
static basicSuccess(): ProgrammaticMockConfig;
|
|
31
|
-
static toolCalling(): ProgrammaticMockConfig;
|
|
32
|
-
static authFailure(): ProgrammaticMockConfig;
|
|
33
|
-
}
|
|
34
|
-
export declare class CodexSdkMock {
|
|
35
|
-
static basicSuccess(): ProgrammaticMockConfig;
|
|
36
|
-
static codeGeneration(): ProgrammaticMockConfig;
|
|
37
|
-
}
|
|
38
|
-
export declare class PiSdkMock {
|
|
39
|
-
static basicSuccess(): ProgrammaticMockConfig;
|
|
40
|
-
static webSearch(): ProgrammaticMockConfig;
|
|
41
|
-
}
|
|
42
|
-
export declare function createProgrammaticMockBuilder(): ProgrammaticMockBuilder;
|
|
43
|
-
export declare const programmaticMocks: {
|
|
44
|
-
claude: typeof ClaudeAgentSdkMock;
|
|
45
|
-
codex: typeof CodexSdkMock;
|
|
46
|
-
pi: typeof PiSdkMock;
|
|
47
|
-
engine: ProgrammaticMockEngine;
|
|
48
|
-
builder: typeof createProgrammaticMockBuilder;
|
|
49
|
-
};
|
|
50
|
-
//# sourceMappingURL=programmatic-mocks.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"programmatic-mocks.d.ts","sourceRoot":"","sources":["../../src/mocks/programmatic-mocks.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,KAAK,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAC;AACrE,OAAO,KAAK,EACV,sBAAsB,EAEtB,uBAAuB,EACvB,eAAe,EAChB,MAAM,iBAAiB,CAAC;AA2BzB,qBAAa,2BAA4B,YAAW,uBAAuB;IACzE,OAAO,CAAC,MAAM,CAIZ;IAEF,IAAI,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI;IAKxB,QAAQ,CAAC,QAAQ,EAAE,OAAO,GAAG,IAAI;IAKjC,SAAS,CAAC,MAAM,EAAE,eAAe,EAAE,GAAG,IAAI;IAK1C,QAAQ,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,OAAO,SAAI,GAAG,IAAI;IAMxE,aAAa,CAAC,IAAI,EAAE,MAAM,EAAE,SAAS,SAAK,EAAE,kBAAkB,SAAK,GAAG,IAAI;IAqB1E,WAAW,CAAC,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,gBAAgB,SAAM,GAAG,IAAI;IA6C3F,WAAW,CAAC,eAAe,EAAE,MAAM,EAAE,OAAO,SAAM,GAAG,IAAI;IA2BzD,QAAQ,CAAC,WAAW,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,EAAE,cAAc,SAAI,GAAG,IAAI;IAiB7E,SAAS,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,SAAM,GAAG,IAAI;IAS7D,KAAK,IAAI,sBAAsB;CAOhC;AAMD,qBAAa,sBAAsB;IAC3B,OAAO,CACX,MAAM,EAAE,sBAAsB,EAC9B,OAAO,EAAE,UAAU,GAClB,OAAO,CAAC,qBAAqB,CAAC,UAAU,CAAC,CAAC;YAO9B,iBAAiB;CAkFjC;AAMD,qBAAa,kBAAkB;IAC7B,MAAM,CAAC,YAAY,IAAI,sBAAsB;IAU7C,MAAM,CAAC,WAAW,IAAI,sBAAsB;IAW5C,MAAM,CAAC,WAAW,IAAI,sBAAsB;CAM7C;AAED,qBAAa,YAAY;IACvB,MAAM,CAAC,YAAY,IAAI,sBAAsB;IAS7C,MAAM,CAAC,cAAc,IAAI,sBAAsB;CAShD;AAED,qBAAa,SAAS;IACpB,MAAM,CAAC,YAAY,IAAI,sBAAsB;IAS7C,MAAM,CAAC,SAAS,IAAI,sBAAsB;CAY3C;AAMD,wBAAgB,6BAA6B,IAAI,uBAAuB,CAEvE;AAED,eAAO,MAAM,iBAAiB;;;;;;CAM7B,CAAC"}
|
|
@@ -1,330 +0,0 @@
|
|
|
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
|