@a5c-ai/adapters-harness-mock 5.1.1-staging.52898ebfc24f

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 (91) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +227 -0
  3. package/dist/bin/adapters-harness-mock.d.ts +32 -0
  4. package/dist/bin/adapters-harness-mock.d.ts.map +1 -0
  5. package/dist/bin/adapters-harness-mock.js +155 -0
  6. package/dist/bin/adapters-harness-mock.js.map +1 -0
  7. package/dist/bin/mock-harness.d.ts +2 -0
  8. package/dist/bin/mock-harness.d.ts.map +1 -0
  9. package/dist/bin/mock-harness.js +25 -0
  10. package/dist/bin/mock-harness.js.map +1 -0
  11. package/dist/http-mock.d.ts +39 -0
  12. package/dist/http-mock.d.ts.map +1 -0
  13. package/dist/http-mock.js +206 -0
  14. package/dist/http-mock.js.map +1 -0
  15. package/dist/index.d.ts +9 -0
  16. package/dist/index.d.ts.map +1 -0
  17. package/dist/index.js +10 -0
  18. package/dist/index.js.map +1 -0
  19. package/dist/mock-process.d.ts +57 -0
  20. package/dist/mock-process.d.ts.map +1 -0
  21. package/dist/mock-process.js +388 -0
  22. package/dist/mock-process.js.map +1 -0
  23. package/dist/mocks/index.d.ts +53 -0
  24. package/dist/mocks/index.d.ts.map +1 -0
  25. package/dist/mocks/index.js +140 -0
  26. package/dist/mocks/index.js.map +1 -0
  27. package/dist/mocks/mock-types.d.ts +170 -0
  28. package/dist/mocks/mock-types.d.ts.map +1 -0
  29. package/dist/mocks/mock-types.js +2 -0
  30. package/dist/mocks/mock-types.js.map +1 -0
  31. package/dist/mocks/programmatic-mocks.d.ts +40 -0
  32. package/dist/mocks/programmatic-mocks.d.ts.map +1 -0
  33. package/dist/mocks/programmatic-mocks.js +229 -0
  34. package/dist/mocks/programmatic-mocks.js.map +1 -0
  35. package/dist/mocks/remote-mocks.d.ts +43 -0
  36. package/dist/mocks/remote-mocks.d.ts.map +1 -0
  37. package/dist/mocks/remote-mocks.js +332 -0
  38. package/dist/mocks/remote-mocks.js.map +1 -0
  39. package/dist/mocks/scriptable-transport.d.ts +23 -0
  40. package/dist/mocks/scriptable-transport.d.ts.map +1 -0
  41. package/dist/mocks/scriptable-transport.js +83 -0
  42. package/dist/mocks/scriptable-transport.js.map +1 -0
  43. package/dist/multi-execution.d.ts +1 -0
  44. package/dist/multi-execution.d.ts.map +1 -0
  45. package/dist/multi-execution.js +2 -0
  46. package/dist/multi-execution.js.map +1 -0
  47. package/dist/probe.d.ts +113 -0
  48. package/dist/probe.d.ts.map +1 -0
  49. package/dist/probe.js +722 -0
  50. package/dist/probe.js.map +1 -0
  51. package/dist/scenarios/errors.d.ts +21 -0
  52. package/dist/scenarios/errors.d.ts.map +1 -0
  53. package/dist/scenarios/errors.js +73 -0
  54. package/dist/scenarios/errors.js.map +1 -0
  55. package/dist/scenarios/hooks.d.ts +17 -0
  56. package/dist/scenarios/hooks.d.ts.map +1 -0
  57. package/dist/scenarios/hooks.js +129 -0
  58. package/dist/scenarios/hooks.js.map +1 -0
  59. package/dist/scenarios/index.d.ts +22 -0
  60. package/dist/scenarios/index.d.ts.map +1 -0
  61. package/dist/scenarios/index.js +65 -0
  62. package/dist/scenarios/index.js.map +1 -0
  63. package/dist/scenarios/interactive.d.ts +17 -0
  64. package/dist/scenarios/interactive.d.ts.map +1 -0
  65. package/dist/scenarios/interactive.js +65 -0
  66. package/dist/scenarios/interactive.js.map +1 -0
  67. package/dist/scenarios/per-agent.d.ts +17 -0
  68. package/dist/scenarios/per-agent.d.ts.map +1 -0
  69. package/dist/scenarios/per-agent.js +597 -0
  70. package/dist/scenarios/per-agent.js.map +1 -0
  71. package/dist/scenarios/wire-format.d.ts +56 -0
  72. package/dist/scenarios/wire-format.d.ts.map +1 -0
  73. package/dist/scenarios/wire-format.js +261 -0
  74. package/dist/scenarios/wire-format.js.map +1 -0
  75. package/dist/scenarios.d.ts +29 -0
  76. package/dist/scenarios.d.ts.map +1 -0
  77. package/dist/scenarios.js +141 -0
  78. package/dist/scenarios.js.map +1 -0
  79. package/dist/types.d.ts +463 -0
  80. package/dist/types.d.ts.map +1 -0
  81. package/dist/types.js +9 -0
  82. package/dist/types.js.map +1 -0
  83. package/dist/websocket-mock.d.ts +58 -0
  84. package/dist/websocket-mock.d.ts.map +1 -0
  85. package/dist/websocket-mock.js +367 -0
  86. package/dist/websocket-mock.js.map +1 -0
  87. package/dist/workspace.d.ts +52 -0
  88. package/dist/workspace.d.ts.map +1 -0
  89. package/dist/workspace.js +157 -0
  90. package/dist/workspace.js.map +1 -0
  91. package/package.json +71 -0
@@ -0,0 +1,388 @@
1
+ /**
2
+ * MockProcess — simulates a harness subprocess with configurable behavior.
3
+ *
4
+ * Emits output chunks on a schedule, handles stdin interactions,
5
+ * simulates file operations, and exits with the configured code/timing.
6
+ */
7
+ import { EventEmitter } from 'node:events';
8
+ // ---------------------------------------------------------------------------
9
+ // Internal state
10
+ // ---------------------------------------------------------------------------
11
+ let nextPid = 10000;
12
+ let nextHandleId = 1;
13
+ // ---------------------------------------------------------------------------
14
+ // MockProcess
15
+ // ---------------------------------------------------------------------------
16
+ export class MockProcess extends EventEmitter {
17
+ scenario;
18
+ pid;
19
+ id;
20
+ _exited = false;
21
+ _exitCode;
22
+ _stdout = '';
23
+ _stderr = '';
24
+ _fileChanges = [];
25
+ _timers = [];
26
+ _stdinBuffer = '';
27
+ _pendingInteraction = null;
28
+ _startedAt = Date.now();
29
+ constructor(scenario) {
30
+ super();
31
+ this.scenario = scenario;
32
+ this.pid = nextPid++;
33
+ this.id = nextHandleId++;
34
+ }
35
+ // -----------------------------------------------------------------------
36
+ // MockHarnessHandle
37
+ // -----------------------------------------------------------------------
38
+ get exited() { return this._exited; }
39
+ get exitCode() { return this._exitCode; }
40
+ get stdout() { return this._stdout; }
41
+ get stderr() { return this._stderr; }
42
+ get fileChanges() { return [...this._fileChanges]; }
43
+ async stop() {
44
+ this.kill('SIGTERM');
45
+ await this.waitForExit();
46
+ }
47
+ forceStop() {
48
+ this.kill('SIGKILL');
49
+ }
50
+ write(data) {
51
+ if (this._exited)
52
+ throw new Error('Cannot write to exited process');
53
+ this._acceptInput(data);
54
+ }
55
+ kill(signal = 'SIGTERM') {
56
+ if (this._exited)
57
+ return;
58
+ this._cleanup();
59
+ this._exit(signal === 'SIGKILL' ? 137 : 143);
60
+ }
61
+ waitForExit() {
62
+ if (this._exited) {
63
+ return Promise.resolve({
64
+ exitCode: this._exitCode,
65
+ stdout: this._stdout,
66
+ stderr: this._stderr,
67
+ });
68
+ }
69
+ return new Promise((resolve) => {
70
+ this.once('exit', () => {
71
+ resolve({
72
+ exitCode: this._exitCode,
73
+ stdout: this._stdout,
74
+ stderr: this._stderr,
75
+ });
76
+ });
77
+ });
78
+ }
79
+ async waitForCompletion() {
80
+ const result = await this.waitForExit();
81
+ const subprocess = {
82
+ type: 'subprocess',
83
+ exitCode: result.exitCode,
84
+ stdout: result.stdout,
85
+ stderr: result.stderr,
86
+ };
87
+ return {
88
+ success: result.exitCode === 0,
89
+ durationMs: Date.now() - this._startedAt,
90
+ error: result.exitCode === 0
91
+ ? undefined
92
+ : {
93
+ code: 'PROCESS_EXIT',
94
+ message: result.stderr.trim() || `Process exited with code ${result.exitCode}`,
95
+ },
96
+ results: subprocess,
97
+ };
98
+ }
99
+ // -----------------------------------------------------------------------
100
+ // Lifecycle
101
+ // -----------------------------------------------------------------------
102
+ /**
103
+ * Start the mock process. Call this after setting up event listeners.
104
+ * Returns the handle for chaining.
105
+ */
106
+ start() {
107
+ const process = this.scenario.process ?? { exitCode: 0 };
108
+ const startDelay = process.startupDelayMs ?? 0;
109
+ this._schedule(startDelay, () => {
110
+ this.emit('spawn');
111
+ this._validateExpectations();
112
+ this._applyFileOperations();
113
+ this._emitSimulatedTelemetry();
114
+ this._emitOutputChunks();
115
+ });
116
+ if (process.hang) {
117
+ // Don't schedule exit — process hangs
118
+ return this;
119
+ }
120
+ if (process.crashAfterMs !== undefined) {
121
+ this._schedule(process.crashAfterMs, () => {
122
+ if (!this._exited) {
123
+ const signal = process.crashSignal ?? 'SIGTERM';
124
+ this._exit(signal === 'SIGKILL' ? 137 : 143);
125
+ }
126
+ });
127
+ }
128
+ return this;
129
+ }
130
+ // -----------------------------------------------------------------------
131
+ // Private
132
+ // -----------------------------------------------------------------------
133
+ _emitOutputChunks(index = 0) {
134
+ if (!this.scenario.output || index >= this.scenario.output.length) {
135
+ this._scheduleExit();
136
+ return;
137
+ }
138
+ const chunk = this.scenario.output[index];
139
+ this._schedule(chunk.delayMs ?? 0, () => {
140
+ if (this._exited)
141
+ return;
142
+ const hookStep = this.scenario.runtimeHooks?.steps.find((step) => step.chunkIndex === index);
143
+ const proceed = () => {
144
+ if (chunk.stream === 'stdout') {
145
+ this._stdout += chunk.data;
146
+ this.emit('stdout', chunk.data);
147
+ }
148
+ else {
149
+ this._stderr += chunk.data;
150
+ this.emit('stderr', chunk.data);
151
+ }
152
+ if (this._beginInteraction(chunk, index + 1)) {
153
+ return;
154
+ }
155
+ this._emitOutputChunks(index + 1);
156
+ };
157
+ if (!hookStep) {
158
+ proceed();
159
+ return;
160
+ }
161
+ this.emit('runtime-hook', hookStep);
162
+ if (hookStep.decision === 'timeout') {
163
+ return;
164
+ }
165
+ this._schedule(hookStep.delayMs ?? 0, () => {
166
+ if (this._exited)
167
+ return;
168
+ this.emit('runtime-hook-result', hookStep);
169
+ if (hookStep.decision === 'deny') {
170
+ const line = `${hookStep.errorMessage ?? `Runtime hook denied ${hookStep.kind}`}\n`;
171
+ this._stderr += line;
172
+ this.emit('stderr', line);
173
+ this._exit(2);
174
+ return;
175
+ }
176
+ proceed();
177
+ });
178
+ });
179
+ }
180
+ _applyFileOperations() {
181
+ if (!this.scenario.fileOperations)
182
+ return;
183
+ let cumulativeDelay = 0;
184
+ for (const op of this.scenario.fileOperations) {
185
+ this._schedule(cumulativeDelay, () => {
186
+ if (this._exited)
187
+ return;
188
+ this._fileChanges.push(op);
189
+ this.emit('file-operation', op);
190
+ });
191
+ cumulativeDelay += 1;
192
+ }
193
+ }
194
+ _beginInteraction(chunk, nextIndex) {
195
+ if (!this.scenario.interactions || this._pendingInteraction)
196
+ return false;
197
+ for (const interaction of this.scenario.interactions) {
198
+ const pattern = typeof interaction.triggerPattern === 'string'
199
+ ? new RegExp(interaction.triggerPattern.replace(/[.*+?^${}()|[\]\\]/g, '\\$&'))
200
+ : interaction.triggerPattern;
201
+ if (!pattern.test(chunk.data)) {
202
+ continue;
203
+ }
204
+ this._pendingInteraction = {
205
+ interaction,
206
+ nextIndex,
207
+ resolved: false,
208
+ };
209
+ if (interaction.timeoutMs !== undefined) {
210
+ const timer = setTimeout(() => {
211
+ if (!this._pendingInteraction?.resolved) {
212
+ this._resolveInteraction('timeout');
213
+ }
214
+ }, interaction.timeoutMs);
215
+ this._timers.push(timer);
216
+ this._pendingInteraction.timeoutTimer = timer;
217
+ }
218
+ if (interaction.response) {
219
+ this._schedule(interaction.delayMs ?? 0, () => {
220
+ if (this._exited || !this._pendingInteraction || this._pendingInteraction.resolved)
221
+ return;
222
+ this.emit('auto-response', interaction.response);
223
+ this._acceptInput(interaction.response);
224
+ });
225
+ }
226
+ if (this._stdinBuffer.length > 0) {
227
+ this._tryResolveInteractionFromInput(this._stdinBuffer);
228
+ }
229
+ return true;
230
+ }
231
+ return false;
232
+ }
233
+ _acceptInput(data) {
234
+ this._stdinBuffer += data;
235
+ this.emit('stdin', data);
236
+ this._tryResolveInteractionFromInput(data);
237
+ }
238
+ _tryResolveInteractionFromInput(input) {
239
+ if (!this._pendingInteraction || this._pendingInteraction.resolved) {
240
+ return;
241
+ }
242
+ const normalizedInput = input.trim();
243
+ if (normalizedInput.length === 0) {
244
+ return;
245
+ }
246
+ const interaction = this._pendingInteraction.interaction;
247
+ const allowPattern = this._toInputPattern(interaction.allowPattern, /^y(?:es)?\s*$/i);
248
+ const denyPattern = this._toInputPattern(interaction.denyPattern, /^n(?:o)?\s*$/i);
249
+ if (allowPattern.test(normalizedInput)) {
250
+ this._resolveInteraction('allow');
251
+ return;
252
+ }
253
+ if (denyPattern.test(normalizedInput)) {
254
+ this._resolveInteraction('deny');
255
+ }
256
+ }
257
+ _resolveInteraction(decision) {
258
+ if (!this._pendingInteraction || this._pendingInteraction.resolved)
259
+ return;
260
+ const pending = this._pendingInteraction;
261
+ pending.resolved = true;
262
+ if (pending.timeoutTimer) {
263
+ clearTimeout(pending.timeoutTimer);
264
+ }
265
+ const resolution = decision === 'allow'
266
+ ? pending.interaction.onAllow
267
+ : decision === 'deny'
268
+ ? pending.interaction.onDeny
269
+ : pending.interaction.onTimeout;
270
+ this._pendingInteraction = null;
271
+ this._emitResolution(resolution, pending.nextIndex);
272
+ }
273
+ _emitResolution(resolution, nextIndex) {
274
+ const output = resolution?.output ?? [];
275
+ const emitAt = (index) => {
276
+ if (this._exited)
277
+ return;
278
+ if (index >= output.length) {
279
+ if (resolution?.exitCode !== undefined) {
280
+ this._exit(resolution.exitCode);
281
+ return;
282
+ }
283
+ this._emitOutputChunks(nextIndex);
284
+ return;
285
+ }
286
+ const chunk = output[index];
287
+ this._schedule(chunk.delayMs ?? 0, () => {
288
+ if (this._exited)
289
+ return;
290
+ if (chunk.stream === 'stdout') {
291
+ this._stdout += chunk.data;
292
+ this.emit('stdout', chunk.data);
293
+ }
294
+ else {
295
+ this._stderr += chunk.data;
296
+ this.emit('stderr', chunk.data);
297
+ }
298
+ emitAt(index + 1);
299
+ });
300
+ };
301
+ emitAt(0);
302
+ }
303
+ _toInputPattern(pattern, fallback) {
304
+ if (!pattern)
305
+ return fallback;
306
+ if (pattern instanceof RegExp)
307
+ return pattern;
308
+ return new RegExp(pattern, 'i');
309
+ }
310
+ _emitSimulatedTelemetry() {
311
+ if (!this.scenario.telemetry)
312
+ return;
313
+ if (this.scenario.telemetry.spans) {
314
+ let cumulativeDelay = 0;
315
+ for (const span of this.scenario.telemetry.spans) {
316
+ cumulativeDelay += (span.delayMs ?? 0);
317
+ this._schedule(cumulativeDelay, () => {
318
+ if (this._exited)
319
+ return;
320
+ this.emit('telemetry-span', span);
321
+ });
322
+ }
323
+ }
324
+ if (this.scenario.telemetry.metrics) {
325
+ let cumulativeDelay = 0;
326
+ for (const metric of this.scenario.telemetry.metrics) {
327
+ cumulativeDelay += (metric.delayMs ?? 0);
328
+ this._schedule(cumulativeDelay, () => {
329
+ if (this._exited)
330
+ return;
331
+ this.emit('telemetry-metric', metric);
332
+ });
333
+ }
334
+ }
335
+ }
336
+ _scheduleExit() {
337
+ const process = this.scenario.process ?? { exitCode: 0 };
338
+ if (process.hang)
339
+ return;
340
+ if (process.crashAfterMs !== undefined)
341
+ return;
342
+ const shutdownDelay = process.shutdownDelayMs ?? 0;
343
+ this._schedule(shutdownDelay, () => {
344
+ if (!this._exited) {
345
+ this._exit(process.exitCode);
346
+ }
347
+ });
348
+ }
349
+ _validateExpectations() {
350
+ // These are checked synchronously at start for test assertions
351
+ if (this.scenario.expectedEnv) {
352
+ this.emit('validate-env', this.scenario.expectedEnv);
353
+ }
354
+ if (this.scenario.expectedArgs) {
355
+ this.emit('validate-args', this.scenario.expectedArgs);
356
+ }
357
+ if (this.scenario.expectedCwd) {
358
+ this.emit('validate-cwd', this.scenario.expectedCwd);
359
+ }
360
+ }
361
+ _exit(code) {
362
+ if (this._exited)
363
+ return;
364
+ this._exited = true;
365
+ this._exitCode = code;
366
+ this._cleanup();
367
+ this.emit('exit', code);
368
+ }
369
+ _schedule(delayMs, fn) {
370
+ if (delayMs <= 0) {
371
+ // Use setImmediate for zero-delay to maintain async semantics
372
+ const timer = setTimeout(fn, 0);
373
+ this._timers.push(timer);
374
+ }
375
+ else {
376
+ const timer = setTimeout(fn, delayMs);
377
+ this._timers.push(timer);
378
+ }
379
+ }
380
+ _cleanup() {
381
+ this._pendingInteraction = null;
382
+ for (const timer of this._timers) {
383
+ clearTimeout(timer);
384
+ }
385
+ this._timers = [];
386
+ }
387
+ }
388
+ //# sourceMappingURL=mock-process.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mock-process.js","sourceRoot":"","sources":["../src/mock-process.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,53 @@
1
+ export type { ProgrammaticMockConfig, RemoteMockConfig, MockStreamEvent, ProgrammaticMockResponse, MockServerInfo, MockConnection, ProgrammaticMockBuilder, RemoteMockBuilder, ScriptableTransportBuilder, ScriptableTransportResponse, ScriptableTransportStep, MockConfigFactory, MockScenarios, } from './mock-types.js';
2
+ export { ProgrammaticMockEngine, createProgrammaticMockBuilder, ClaudeAgentSdkMock, CodexSdkMock, PiSdkMock, programmaticMocks, } from './programmatic-mocks.js';
3
+ export { MockServer, createMockServer, createRemoteMockBuilder, OpenCodeHttpMock, CodexWebSocketMock, remoteMocks, } from './remote-mocks.js';
4
+ export { ScriptableTransportBuilderImpl, createScriptableTransportBuilder, } from './scriptable-transport.js';
5
+ import { ProgrammaticMockEngine, createProgrammaticMockBuilder, ClaudeAgentSdkMock, CodexSdkMock, PiSdkMock } from './programmatic-mocks.js';
6
+ import { MockServer, createMockServer, createRemoteMockBuilder, OpenCodeHttpMock, CodexWebSocketMock } from './remote-mocks.js';
7
+ import { createScriptableTransportBuilder } from './scriptable-transport.js';
8
+ import type { MockConfigFactory, MockScenarios } from './mock-types.js';
9
+ export declare class AdapterMockFactory implements MockConfigFactory {
10
+ claudeAgentSdk(): import("./mock-types.js").ProgrammaticMockBuilder;
11
+ codexSdk(): import("./mock-types.js").ProgrammaticMockBuilder;
12
+ piSdk(): import("./mock-types.js").ProgrammaticMockBuilder;
13
+ opencodeHttp(): import("./mock-types.js").RemoteMockBuilder;
14
+ codexWebSocket(): import("./mock-types.js").RemoteMockBuilder;
15
+ programmatic(): import("./mock-types.js").ProgrammaticMockBuilder;
16
+ remote(): import("./mock-types.js").RemoteMockBuilder;
17
+ scriptedTransport(): import("./mock-types.js").ScriptableTransportBuilder;
18
+ }
19
+ export declare const mockScenarios: MockScenarios;
20
+ export declare function createAdapterMock(adapterName: 'claude-agent-sdk' | 'codex-sdk' | 'pi-sdk' | 'opencode-http' | 'codex-websocket', scenario?: 'basic' | 'tools' | 'error' | 'performance'): import("./mock-types.js").ProgrammaticMockConfig | import("./mock-types.js").RemoteMockConfig;
21
+ export declare function testMockScenario(mockConfig: unknown, _expectedEventTypes: string[]): Promise<boolean>;
22
+ export declare const adapterMocks: {
23
+ factory: AdapterMockFactory;
24
+ claude: typeof ClaudeAgentSdkMock;
25
+ codex: {
26
+ sdk: typeof CodexSdkMock;
27
+ websocket: typeof CodexWebSocketMock;
28
+ };
29
+ pi: typeof PiSdkMock;
30
+ opencode: typeof OpenCodeHttpMock;
31
+ scenarios: MockScenarios;
32
+ createMock: typeof createAdapterMock;
33
+ testScenario: typeof testMockScenario;
34
+ programmatic: typeof createProgrammaticMockBuilder;
35
+ remote: typeof createRemoteMockBuilder;
36
+ scriptedTransport: typeof createScriptableTransportBuilder;
37
+ programmaticMocks: {
38
+ claude: typeof ClaudeAgentSdkMock;
39
+ codex: typeof CodexSdkMock;
40
+ pi: typeof PiSdkMock;
41
+ engine: ProgrammaticMockEngine;
42
+ builder: typeof createProgrammaticMockBuilder;
43
+ };
44
+ remoteMocks: {
45
+ opencode: typeof OpenCodeHttpMock;
46
+ codex: typeof CodexWebSocketMock;
47
+ builder: typeof createRemoteMockBuilder;
48
+ server: typeof createMockServer;
49
+ };
50
+ MockServer: typeof MockServer;
51
+ ProgrammaticMockEngine: typeof ProgrammaticMockEngine;
52
+ createMockServer: typeof createMockServer;
53
+ };
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/mocks/index.ts"],"names":[],"mappings":"AAAA,YAAY,EACV,sBAAsB,EACtB,gBAAgB,EAChB,eAAe,EACf,wBAAwB,EACxB,cAAc,EACd,cAAc,EACd,uBAAuB,EACvB,iBAAiB,EACjB,0BAA0B,EAC1B,2BAA2B,EAC3B,uBAAuB,EACvB,iBAAiB,EACjB,aAAa,GACd,MAAM,iBAAiB,CAAC;AAEzB,OAAO,EACL,sBAAsB,EACtB,6BAA6B,EAC7B,kBAAkB,EAClB,YAAY,EACZ,SAAS,EACT,iBAAiB,GAClB,MAAM,yBAAyB,CAAC;AAEjC,OAAO,EACL,UAAU,EACV,gBAAgB,EAChB,uBAAuB,EACvB,gBAAgB,EAChB,kBAAkB,EAClB,WAAW,GACZ,MAAM,mBAAmB,CAAC;AAE3B,OAAO,EACL,8BAA8B,EAC9B,gCAAgC,GACjC,MAAM,2BAA2B,CAAC;AAEnC,OAAO,EACL,sBAAsB,EACtB,6BAA6B,EAC7B,kBAAkB,EAClB,YAAY,EACZ,SAAS,EAEV,MAAM,yBAAyB,CAAC;AACjC,OAAO,EACL,UAAU,EACV,gBAAgB,EAChB,uBAAuB,EACvB,gBAAgB,EAChB,kBAAkB,EAEnB,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EACL,gCAAgC,EACjC,MAAM,2BAA2B,CAAC;AACnC,OAAO,KAAK,EAAE,iBAAiB,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAExE,qBAAa,kBAAmB,YAAW,iBAAiB;IAC1D,cAAc;IAId,QAAQ;IAIR,KAAK;IAIL,YAAY;IAIZ,cAAc;IAId,YAAY;IAIZ,MAAM;IAIN,iBAAiB;CAGlB;AAED,eAAO,MAAM,aAAa,EAAE,aA0C3B,CAAC;AAEF,wBAAgB,iBAAiB,CAC/B,WAAW,EAAE,kBAAkB,GAAG,WAAW,GAAG,QAAQ,GAAG,eAAe,GAAG,iBAAiB,EAC9F,QAAQ,GAAE,OAAO,GAAG,OAAO,GAAG,OAAO,GAAG,aAAuB,iGAoChE;AAED,wBAAsB,gBAAgB,CACpC,UAAU,EAAE,OAAO,EACnB,mBAAmB,EAAE,MAAM,EAAE,GAC5B,OAAO,CAAC,OAAO,CAAC,CAMlB;AAED,eAAO,MAAM,YAAY;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAoBxB,CAAC"}
@@ -0,0 +1,140 @@
1
+ export { ProgrammaticMockEngine, createProgrammaticMockBuilder, ClaudeAgentSdkMock, CodexSdkMock, PiSdkMock, programmaticMocks, } from './programmatic-mocks.js';
2
+ export { MockServer, createMockServer, createRemoteMockBuilder, OpenCodeHttpMock, CodexWebSocketMock, remoteMocks, } from './remote-mocks.js';
3
+ export { ScriptableTransportBuilderImpl, createScriptableTransportBuilder, } from './scriptable-transport.js';
4
+ import { ProgrammaticMockEngine, createProgrammaticMockBuilder, ClaudeAgentSdkMock, CodexSdkMock, PiSdkMock, programmaticMocks, } from './programmatic-mocks.js';
5
+ import { MockServer, createMockServer, createRemoteMockBuilder, OpenCodeHttpMock, CodexWebSocketMock, remoteMocks, } from './remote-mocks.js';
6
+ import { createScriptableTransportBuilder, } from './scriptable-transport.js';
7
+ export class AdapterMockFactory {
8
+ claudeAgentSdk() {
9
+ return createProgrammaticMockBuilder().name('claude-agent-sdk-default');
10
+ }
11
+ codexSdk() {
12
+ return createProgrammaticMockBuilder().name('codex-sdk-default');
13
+ }
14
+ piSdk() {
15
+ return createProgrammaticMockBuilder().name('pi-sdk-default');
16
+ }
17
+ opencodeHttp() {
18
+ return createRemoteMockBuilder().name('opencode-http-default');
19
+ }
20
+ codexWebSocket() {
21
+ return createRemoteMockBuilder().name('codex-websocket-default');
22
+ }
23
+ programmatic() {
24
+ return createProgrammaticMockBuilder();
25
+ }
26
+ remote() {
27
+ return createRemoteMockBuilder();
28
+ }
29
+ scriptedTransport() {
30
+ return createScriptableTransportBuilder();
31
+ }
32
+ }
33
+ export const mockScenarios = {
34
+ basicSuccess: {
35
+ programmatic: ClaudeAgentSdkMock.basicSuccess(),
36
+ remote: OpenCodeHttpMock.basicSuccess(),
37
+ },
38
+ toolCalling: {
39
+ programmatic: ClaudeAgentSdkMock.toolCalling(),
40
+ remote: OpenCodeHttpMock.basicSuccess(),
41
+ },
42
+ errors: {
43
+ authFailure: ClaudeAgentSdkMock.authFailure(),
44
+ networkTimeout: OpenCodeHttpMock.networkTimeout(),
45
+ connectionDrop: CodexWebSocketMock.connectionDrop(),
46
+ invalidResponse: createRemoteMockBuilder()
47
+ .name('invalid-response')
48
+ .addEvents([{ type: 'invalid_event_type', data: { malformed: true }, delayMs: 100 }])
49
+ .build(),
50
+ },
51
+ performance: {
52
+ highThroughput: CodexWebSocketMock.highThroughput(),
53
+ lowLatency: createProgrammaticMockBuilder()
54
+ .name('low-latency')
55
+ .addTextStream('Fast response', 50, 10)
56
+ .withCost(10, 15)
57
+ .build(),
58
+ largeBatch: createProgrammaticMockBuilder()
59
+ .name('large-batch')
60
+ .addTextStream('Lorem ipsum '.repeat(100), 20, 25)
61
+ .withCost(500, 200)
62
+ .build(),
63
+ },
64
+ edgeCases: {
65
+ emptyResponse: createProgrammaticMockBuilder()
66
+ .name('empty-response')
67
+ .withCost(5, 0)
68
+ .build(),
69
+ malformedEvents: createRemoteMockBuilder()
70
+ .name('malformed-events')
71
+ .addEvents([{ type: 'invalid_event_type', data: { malformed: true }, delayMs: 100 }])
72
+ .build(),
73
+ reconnection: CodexWebSocketMock.connectionDrop(),
74
+ },
75
+ };
76
+ export function createAdapterMock(adapterName, scenario = 'basic') {
77
+ switch (adapterName) {
78
+ case 'claude-agent-sdk':
79
+ switch (scenario) {
80
+ case 'basic': return ClaudeAgentSdkMock.basicSuccess();
81
+ case 'tools': return ClaudeAgentSdkMock.toolCalling();
82
+ case 'error': return ClaudeAgentSdkMock.authFailure();
83
+ default: return ClaudeAgentSdkMock.basicSuccess();
84
+ }
85
+ case 'codex-sdk':
86
+ switch (scenario) {
87
+ case 'basic': return CodexSdkMock.basicSuccess();
88
+ case 'tools': return CodexSdkMock.codeGeneration();
89
+ default: return CodexSdkMock.basicSuccess();
90
+ }
91
+ case 'pi-sdk':
92
+ switch (scenario) {
93
+ case 'basic': return PiSdkMock.basicSuccess();
94
+ case 'tools': return PiSdkMock.webSearch();
95
+ default: return PiSdkMock.basicSuccess();
96
+ }
97
+ case 'opencode-http':
98
+ switch (scenario) {
99
+ case 'basic': return OpenCodeHttpMock.basicSuccess();
100
+ case 'error': return OpenCodeHttpMock.networkTimeout();
101
+ default: return OpenCodeHttpMock.basicSuccess();
102
+ }
103
+ case 'codex-websocket':
104
+ switch (scenario) {
105
+ case 'basic': return CodexWebSocketMock.basicSuccess();
106
+ case 'performance': return CodexWebSocketMock.highThroughput();
107
+ case 'error': return CodexWebSocketMock.connectionDrop();
108
+ default: return CodexWebSocketMock.basicSuccess();
109
+ }
110
+ }
111
+ }
112
+ export async function testMockScenario(mockConfig, _expectedEventTypes) {
113
+ if (!mockConfig || typeof mockConfig !== 'object') {
114
+ return false;
115
+ }
116
+ const maybeEvents = mockConfig.events;
117
+ return Array.isArray(maybeEvents) && maybeEvents.length > 0;
118
+ }
119
+ export const adapterMocks = {
120
+ factory: new AdapterMockFactory(),
121
+ claude: ClaudeAgentSdkMock,
122
+ codex: {
123
+ sdk: CodexSdkMock,
124
+ websocket: CodexWebSocketMock,
125
+ },
126
+ pi: PiSdkMock,
127
+ opencode: OpenCodeHttpMock,
128
+ scenarios: mockScenarios,
129
+ createMock: createAdapterMock,
130
+ testScenario: testMockScenario,
131
+ programmatic: createProgrammaticMockBuilder,
132
+ remote: createRemoteMockBuilder,
133
+ scriptedTransport: createScriptableTransportBuilder,
134
+ programmaticMocks,
135
+ remoteMocks,
136
+ MockServer,
137
+ ProgrammaticMockEngine,
138
+ createMockServer,
139
+ };
140
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/mocks/index.ts"],"names":[],"mappings":"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"}