@a5c-ai/agent-mux-harness-mock 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.
Files changed (50) hide show
  1. package/README.md +26 -4
  2. package/dist/bin/mock-harness.d.ts.map +1 -1
  3. package/dist/bin/mock-harness.js +11 -10
  4. package/dist/bin/mock-harness.js.map +1 -1
  5. package/dist/index.d.ts +1 -0
  6. package/dist/index.d.ts.map +1 -1
  7. package/dist/index.js +1 -0
  8. package/dist/index.js.map +1 -1
  9. package/dist/mock-process.d.ts +8 -4
  10. package/dist/mock-process.d.ts.map +1 -1
  11. package/dist/mock-process.js +79 -28
  12. package/dist/mock-process.js.map +1 -1
  13. package/dist/mocks/index.d.ts +50 -0
  14. package/dist/mocks/index.d.ts.map +1 -0
  15. package/dist/mocks/index.js +134 -0
  16. package/dist/mocks/index.js.map +1 -0
  17. package/dist/mocks/mock-types.d.ts +145 -0
  18. package/dist/mocks/mock-types.d.ts.map +1 -0
  19. package/dist/mocks/mock-types.js +2 -0
  20. package/dist/mocks/mock-types.js.map +1 -0
  21. package/dist/mocks/programmatic-mocks.d.ts +41 -0
  22. package/dist/mocks/programmatic-mocks.d.ts.map +1 -0
  23. package/dist/mocks/programmatic-mocks.js +229 -0
  24. package/dist/mocks/programmatic-mocks.js.map +1 -0
  25. package/dist/mocks/remote-mocks.d.ts +44 -0
  26. package/dist/mocks/remote-mocks.d.ts.map +1 -0
  27. package/dist/mocks/remote-mocks.js +332 -0
  28. package/dist/mocks/remote-mocks.js.map +1 -0
  29. package/dist/scenarios/hooks.d.ts +5 -0
  30. package/dist/scenarios/hooks.d.ts.map +1 -1
  31. package/dist/scenarios/hooks.js +68 -0
  32. package/dist/scenarios/hooks.js.map +1 -1
  33. package/dist/scenarios/index.d.ts.map +1 -1
  34. package/dist/scenarios/index.js +4 -0
  35. package/dist/scenarios/index.js.map +1 -1
  36. package/dist/scenarios/per-agent.d.ts +9 -44
  37. package/dist/scenarios/per-agent.d.ts.map +1 -1
  38. package/dist/scenarios/per-agent.js +272 -143
  39. package/dist/scenarios/per-agent.js.map +1 -1
  40. package/dist/scenarios/wire-format.d.ts +21 -0
  41. package/dist/scenarios/wire-format.d.ts.map +1 -1
  42. package/dist/scenarios/wire-format.js +165 -0
  43. package/dist/scenarios/wire-format.js.map +1 -1
  44. package/dist/types.d.ts +19 -1
  45. package/dist/types.d.ts.map +1 -1
  46. package/dist/websocket-mock.d.ts +45 -1
  47. package/dist/websocket-mock.d.ts.map +1 -1
  48. package/dist/websocket-mock.js +211 -1
  49. package/dist/websocket-mock.js.map +1 -1
  50. package/package.json +2 -2
package/README.md CHANGED
@@ -1,6 +1,10 @@
1
1
  # @a5c-ai/agent-mux-harness-mock
2
2
 
3
- Mock harness simulator for [agent-mux](https://github.com/a5c-ai/agent-mux) adapter testing. Replays recorded/synthesized `claude-code`, `codex`, and other harness output streams so you can develop and test adapters without hitting real APIs.
3
+ Mock harness simulator for [agent-mux](https://github.com/a5c-ai/agent-mux) adapter testing. It is the canonical home for:
4
+
5
+ - adapter-faithful subprocess scenarios for the currently supported CLI harnesses: `claude`, `codex`, `gemini`, `copilot`, `cursor`, `opencode`, `pi`, `omp`, `openclaw`, `hermes`, `amp`, `droid`, and `qwen`
6
+ - programmatic SDK mock builders for `claude-agent-sdk`, `codex-sdk`, and `pi-sdk`
7
+ - remote transport mock builders for `opencode-http` and `codex-websocket`
4
8
 
5
9
  ## Install
6
10
 
@@ -14,15 +18,33 @@ Requires Node.js >= 20.9.0.
14
18
 
15
19
  ```bash
16
20
  mock-harness --list
17
- mock-harness --scenario claude-code-simple
21
+ mock-harness --scenario claude:stream-json
22
+ mock-harness --scenario codex:code-generation
18
23
  ```
19
24
 
20
25
  ## Programmatic
21
26
 
22
27
  ```ts
23
- import { createMockProcess, scenarios } from '@a5c-ai/agent-mux-harness-mock';
28
+ import { MockProcess, AGENT_SCENARIOS, SUBPROCESS_HARNESS_PROFILES } from '@a5c-ai/agent-mux-harness-mock';
29
+
30
+ const proc = new MockProcess(AGENT_SCENARIOS['claude:stream-json']);
31
+ const supported = Object.keys(SUBPROCESS_HARNESS_PROFILES);
32
+ ```
24
33
 
25
- const proc = createMockProcess(scenarios['claude-code-simple']);
34
+ ## SDK / Remote Mocks
35
+
36
+ ```ts
37
+ import {
38
+ createProgrammaticMockBuilder,
39
+ createRemoteMockBuilder,
40
+ ClaudeAgentSdkMock,
41
+ OpenCodeHttpMock,
42
+ } from '@a5c-ai/agent-mux-harness-mock';
43
+
44
+ const sdkMock = ClaudeAgentSdkMock.basicSuccess();
45
+ const remoteMock = OpenCodeHttpMock.basicSuccess();
46
+ const customProgrammatic = createProgrammaticMockBuilder().name('custom').addTextStream('hello').build();
47
+ const customRemote = createRemoteMockBuilder().name('custom-remote').addEvents([{ type: 'text_delta', data: { delta: 'hi' } }]).build();
26
48
  ```
27
49
 
28
50
  See the [repository README](https://github.com/a5c-ai/agent-mux#readme) for details.
@@ -1 +1 @@
1
- {"version":3,"file":"mock-harness.d.ts","sourceRoot":"","sources":["../../src/bin/mock-harness.ts"],"names":[],"mappings":";AAEA;;;;;;;;;;;GAWG;AAGH,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAEnD,UAAU,IAAI;IACZ,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,OAAO,CAAC;IACnB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,IAAI,EAAE,OAAO,CAAC;IACd,IAAI,EAAE,OAAO,CAAC;CACf;AAED,wBAAgB,SAAS,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,IAAI,CAwB9C;AAED,wBAAgB,cAAc,CAAC,QAAQ,EAAE,eAAe,EAAE,IAAI,EAAE,IAAI,GAAG,eAAe,CAcrF;AAED,wBAAsB,cAAc,CAClC,IAAI,EAAE,IAAI,EACV,OAAO,GAAE;IAAE,MAAM,EAAE,MAAM,CAAC,cAAc,CAAC;IAAC,MAAM,EAAE,MAAM,CAAC,cAAc,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAC,cAAc,CAAA;CAC5B,GACzE,OAAO,CAAC,MAAM,CAAC,CA+BjB"}
1
+ {"version":3,"file":"mock-harness.d.ts","sourceRoot":"","sources":["../../src/bin/mock-harness.ts"],"names":[],"mappings":";AACA;;;;;;;;;;;GAWG;AAGH,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAEnD,UAAU,IAAI;IACZ,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,OAAO,CAAC;IACnB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,IAAI,EAAE,OAAO,CAAC;IACd,IAAI,EAAE,OAAO,CAAC;CACf;AAED,wBAAgB,SAAS,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,IAAI,CAwB9C;AAED,wBAAgB,cAAc,CAAC,QAAQ,EAAE,eAAe,EAAE,IAAI,EAAE,IAAI,GAAG,eAAe,CAerF;AAED,wBAAsB,cAAc,CAClC,IAAI,EAAE,IAAI,EACV,OAAO,GAAE;IAAE,MAAM,EAAE,MAAM,CAAC,cAAc,CAAC;IAAC,MAAM,EAAE,MAAM,CAAC,cAAc,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAC,cAAc,CAAA;CAC5B,GACzE,OAAO,CAAC,MAAM,CAAC,CA+BjB"}
@@ -1,5 +1,4 @@
1
1
  #!/usr/bin/env node
2
- // @ts-nocheck -- TODO(harness-mock): narrow scenario.output/process optionality
3
2
  /**
4
3
  * mock-harness — CLI binary that replays a mock scenario to stdout/stderr.
5
4
  *
@@ -57,17 +56,18 @@ export function parseArgs(argv) {
57
56
  return out;
58
57
  }
59
58
  export function applyOverrides(scenario, args) {
59
+ const baseProcess = scenario.process ?? { exitCode: 0 };
60
60
  const out = {
61
61
  ...scenario,
62
- output: scenario.output.map((c) => ({ ...c, delayMs: args.delay ?? c.delayMs })),
63
- process: { ...scenario.process },
62
+ output: (scenario.output ?? []).map((c) => ({ ...c, delayMs: args.delay ?? c.delayMs })),
63
+ process: { ...baseProcess, exitCode: baseProcess.exitCode ?? 0 },
64
64
  };
65
65
  if (args.exitCode !== undefined && Number.isFinite(args.exitCode)) {
66
66
  out.process = { ...out.process, exitCode: args.exitCode };
67
67
  }
68
68
  if (args.failAfter !== undefined && Number.isFinite(args.failAfter)) {
69
- out.output = out.output.slice(0, args.failAfter);
70
- out.process = { ...out.process, exitCode: out.process.exitCode || 1 };
69
+ out.output = (out.output ?? []).slice(0, args.failAfter);
70
+ out.process = { ...out.process, exitCode: out.process?.exitCode || 1 };
71
71
  }
72
72
  return out;
73
73
  }
@@ -100,13 +100,14 @@ export async function runMockHarness(args, streams = { stdout: process.stdout, s
100
100
  });
101
101
  }
102
102
  await replayScenario(scenario, streams);
103
- return scenario.process.exitCode;
103
+ return scenario.process?.exitCode ?? 0;
104
104
  }
105
105
  async function replayScenario(scenario, streams) {
106
- const startup = scenario.process.startupDelayMs ?? 0;
106
+ const proc = scenario.process;
107
+ const startup = proc?.startupDelayMs ?? 0;
107
108
  if (startup > 0)
108
109
  await wait(startup);
109
- for (const chunk of scenario.output) {
110
+ for (const chunk of scenario.output ?? []) {
110
111
  if (chunk.delayMs && chunk.delayMs > 0)
111
112
  await wait(chunk.delayMs);
112
113
  if (chunk.stream === 'stdout')
@@ -114,10 +115,10 @@ async function replayScenario(scenario, streams) {
114
115
  else
115
116
  streams.stderr.write(chunk.data);
116
117
  }
117
- if (scenario.process.hang) {
118
+ if (proc?.hang) {
118
119
  await new Promise(() => { });
119
120
  }
120
- const shutdown = scenario.process.shutdownDelayMs ?? 0;
121
+ const shutdown = proc?.shutdownDelayMs ?? 0;
121
122
  if (shutdown > 0)
122
123
  await wait(shutdown);
123
124
  }
@@ -1 +1 @@
1
- {"version":3,"file":"mock-harness.js","sourceRoot":"","sources":["../../src/bin/mock-harness.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"mock-harness.js","sourceRoot":"","sources":["../../src/bin/mock-harness.ts"],"names":[],"mappings":"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"}
package/dist/index.d.ts CHANGED
@@ -6,4 +6,5 @@ export * from './workspace.js';
6
6
  export * from './multi-execution.js';
7
7
  export * from './http-mock.js';
8
8
  export * from './websocket-mock.js';
9
+ export * from './mocks/index.js';
9
10
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,mBAAmB,CAAC;AAClC,cAAc,sBAAsB,CAAC;AACrC,cAAc,YAAY,CAAC;AAC3B,cAAc,YAAY,CAAC;AAC3B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,sBAAsB,CAAC;AACrC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,qBAAqB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,mBAAmB,CAAC;AAClC,cAAc,sBAAsB,CAAC;AACrC,cAAc,YAAY,CAAC;AAC3B,cAAc,YAAY,CAAC;AAC3B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,sBAAsB,CAAC;AACrC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,qBAAqB,CAAC;AACpC,cAAc,kBAAkB,CAAC"}
package/dist/index.js CHANGED
@@ -6,4 +6,5 @@ export * from './workspace.js';
6
6
  export * from './multi-execution.js';
7
7
  export * from './http-mock.js';
8
8
  export * from './websocket-mock.js';
9
+ export * from './mocks/index.js';
9
10
  //# sourceMappingURL=index.js.map
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,mBAAmB,CAAC;AAClC,cAAc,sBAAsB,CAAC;AACrC,cAAc,YAAY,CAAC;AAC3B,cAAc,YAAY,CAAC;AAC3B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,sBAAsB,CAAC;AACrC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,qBAAqB,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,mBAAmB,CAAC;AAClC,cAAc,sBAAsB,CAAC;AACrC,cAAc,YAAY,CAAC;AAC3B,cAAc,YAAY,CAAC;AAC3B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,sBAAsB,CAAC;AACrC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,qBAAqB,CAAC;AACpC,cAAc,kBAAkB,CAAC"}
@@ -5,24 +5,27 @@
5
5
  * simulates file operations, and exits with the configured code/timing.
6
6
  */
7
7
  import { EventEmitter } from 'node:events';
8
- import type { HarnessScenario, MockHarnessHandle, FileOperation } from './types.js';
9
- export declare class MockProcess extends EventEmitter implements MockHarnessHandle {
8
+ import type { HarnessScenario, MockExecutionResult, FileOperation, SubprocessMockHandle } from './types.js';
9
+ export declare class MockProcess extends EventEmitter implements SubprocessMockHandle {
10
10
  readonly scenario: HarnessScenario;
11
11
  readonly pid: number;
12
+ readonly id: number;
12
13
  private _exited;
13
14
  private _exitCode;
14
15
  private _stdout;
15
16
  private _stderr;
16
17
  private _fileChanges;
17
- private _killed;
18
18
  private _timers;
19
19
  private _stdinBuffer;
20
+ private readonly _startedAt;
20
21
  constructor(scenario: HarnessScenario);
21
22
  get exited(): boolean;
22
23
  get exitCode(): number | undefined;
23
24
  get stdout(): string;
24
25
  get stderr(): string;
25
26
  get fileChanges(): FileOperation[];
27
+ stop(): Promise<void>;
28
+ forceStop(): void;
26
29
  write(data: string): void;
27
30
  kill(signal?: string): void;
28
31
  waitForExit(): Promise<{
@@ -30,11 +33,12 @@ export declare class MockProcess extends EventEmitter implements MockHarnessHand
30
33
  stdout: string;
31
34
  stderr: string;
32
35
  }>;
36
+ waitForCompletion(): Promise<MockExecutionResult>;
33
37
  /**
34
38
  * Start the mock process. Call this after setting up event listeners.
35
39
  * Returns the handle for chaining.
36
40
  */
37
- start(): MockHarnessHandle;
41
+ start(): SubprocessMockHandle;
38
42
  private _emitOutputChunks;
39
43
  private _applyFileOperations;
40
44
  private _checkInteractions;
@@ -1 +1 @@
1
- {"version":3,"file":"mock-process.d.ts","sourceRoot":"","sources":["../src/mock-process.ts"],"names":[],"mappings":"AACA;;;;;GAKG;AAEH,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAC3C,OAAO,KAAK,EACV,eAAe,EACf,iBAAiB,EAEjB,aAAa,EAEd,MAAM,YAAY,CAAC;AAYpB,qBAAa,WAAY,SAAQ,YAAa,YAAW,iBAAiB;IACxE,QAAQ,CAAC,QAAQ,EAAE,eAAe,CAAC;IACnC,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IAErB,OAAO,CAAC,OAAO,CAAS;IACxB,OAAO,CAAC,SAAS,CAAqB;IACtC,OAAO,CAAC,OAAO,CAAM;IACrB,OAAO,CAAC,OAAO,CAAM;IACrB,OAAO,CAAC,YAAY,CAAuB;IAC3C,OAAO,CAAC,OAAO,CAAS;IACxB,OAAO,CAAC,OAAO,CAAuC;IACtD,OAAO,CAAC,YAAY,CAAM;gBAEd,QAAQ,EAAE,eAAe;IAUrC,IAAI,MAAM,IAAI,OAAO,CAAyB;IAC9C,IAAI,QAAQ,IAAI,MAAM,GAAG,SAAS,CAA2B;IAC7D,IAAI,MAAM,IAAI,MAAM,CAAyB;IAC7C,IAAI,MAAM,IAAI,MAAM,CAAyB;IAC7C,IAAI,WAAW,IAAI,aAAa,EAAE,CAAmC;IAErE,KAAK,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI;IAMzB,IAAI,CAAC,MAAM,SAAY,GAAG,IAAI;IAO9B,WAAW,IAAI,OAAO,CAAC;QAAE,QAAQ,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,CAAC;IAuB5E;;;OAGG;IACH,KAAK,IAAI,iBAAiB;IAiC1B,OAAO,CAAC,iBAAiB;IAkBzB,OAAO,CAAC,oBAAoB;IAY5B,OAAO,CAAC,kBAAkB;IAkB1B,OAAO,CAAC,uBAAuB;IA0B/B,OAAO,CAAC,aAAa;IAiBrB,OAAO,CAAC,qBAAqB;IAa7B,OAAO,CAAC,KAAK;IAQb,OAAO,CAAC,SAAS;IAWjB,OAAO,CAAC,QAAQ;CAMjB"}
1
+ {"version":3,"file":"mock-process.d.ts","sourceRoot":"","sources":["../src/mock-process.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAC3C,OAAO,KAAK,EACV,eAAe,EACf,mBAAmB,EAEnB,aAAa,EACb,oBAAoB,EAErB,MAAM,YAAY,CAAC;AAapB,qBAAa,WAAY,SAAQ,YAAa,YAAW,oBAAoB;IAC3E,QAAQ,CAAC,QAAQ,EAAE,eAAe,CAAC;IACnC,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IAEpB,OAAO,CAAC,OAAO,CAAS;IACxB,OAAO,CAAC,SAAS,CAAqB;IACtC,OAAO,CAAC,OAAO,CAAM;IACrB,OAAO,CAAC,OAAO,CAAM;IACrB,OAAO,CAAC,YAAY,CAAuB;IAC3C,OAAO,CAAC,OAAO,CAAuC;IACtD,OAAO,CAAC,YAAY,CAAM;IAC1B,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAc;gBAE7B,QAAQ,EAAE,eAAe;IAWrC,IAAI,MAAM,IAAI,OAAO,CAAyB;IAC9C,IAAI,QAAQ,IAAI,MAAM,GAAG,SAAS,CAA2B;IAC7D,IAAI,MAAM,IAAI,MAAM,CAAyB;IAC7C,IAAI,MAAM,IAAI,MAAM,CAAyB;IAC7C,IAAI,WAAW,IAAI,aAAa,EAAE,CAAmC;IAE/D,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;IAK3B,SAAS,IAAI,IAAI;IAIjB,KAAK,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI;IAMzB,IAAI,CAAC,MAAM,SAAY,GAAG,IAAI;IAM9B,WAAW,IAAI,OAAO,CAAC;QAAE,QAAQ,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,CAAC;IAmBtE,iBAAiB,IAAI,OAAO,CAAC,mBAAmB,CAAC;IAyBvD;;;OAGG;IACH,KAAK,IAAI,oBAAoB;IAiC7B,OAAO,CAAC,iBAAiB;IAiDzB,OAAO,CAAC,oBAAoB;IAa5B,OAAO,CAAC,kBAAkB;IAkB1B,OAAO,CAAC,uBAAuB;IA0B/B,OAAO,CAAC,aAAa;IAYrB,OAAO,CAAC,qBAAqB;IAa7B,OAAO,CAAC,KAAK;IAQb,OAAO,CAAC,SAAS;IAWjB,OAAO,CAAC,QAAQ;CAMjB"}
@@ -1,4 +1,3 @@
1
- // @ts-nocheck -- TODO(harness-mock): implement full MockHarnessHandle interface
2
1
  /**
3
2
  * MockProcess — simulates a harness subprocess with configurable behavior.
4
3
  *
@@ -10,24 +9,27 @@ import { EventEmitter } from 'node:events';
10
9
  // Internal state
11
10
  // ---------------------------------------------------------------------------
12
11
  let nextPid = 10000;
12
+ let nextHandleId = 1;
13
13
  // ---------------------------------------------------------------------------
14
14
  // MockProcess
15
15
  // ---------------------------------------------------------------------------
16
16
  export class MockProcess extends EventEmitter {
17
17
  scenario;
18
18
  pid;
19
+ id;
19
20
  _exited = false;
20
21
  _exitCode;
21
22
  _stdout = '';
22
23
  _stderr = '';
23
24
  _fileChanges = [];
24
- _killed = false;
25
25
  _timers = [];
26
26
  _stdinBuffer = '';
27
+ _startedAt = Date.now();
27
28
  constructor(scenario) {
28
29
  super();
29
30
  this.scenario = scenario;
30
31
  this.pid = nextPid++;
32
+ this.id = nextHandleId++;
31
33
  }
32
34
  // -----------------------------------------------------------------------
33
35
  // MockHarnessHandle
@@ -37,6 +39,13 @@ export class MockProcess extends EventEmitter {
37
39
  get stdout() { return this._stdout; }
38
40
  get stderr() { return this._stderr; }
39
41
  get fileChanges() { return [...this._fileChanges]; }
42
+ async stop() {
43
+ this.kill('SIGTERM');
44
+ await this.waitForExit();
45
+ }
46
+ forceStop() {
47
+ this.kill('SIGKILL');
48
+ }
40
49
  write(data) {
41
50
  if (this._exited)
42
51
  throw new Error('Cannot write to exited process');
@@ -46,7 +55,6 @@ export class MockProcess extends EventEmitter {
46
55
  kill(signal = 'SIGTERM') {
47
56
  if (this._exited)
48
57
  return;
49
- this._killed = true;
50
58
  this._cleanup();
51
59
  this._exit(signal === 'SIGKILL' ? 137 : 143);
52
60
  }
@@ -68,6 +76,26 @@ export class MockProcess extends EventEmitter {
68
76
  });
69
77
  });
70
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
+ }
71
99
  // -----------------------------------------------------------------------
72
100
  // Lifecycle
73
101
  // -----------------------------------------------------------------------
@@ -76,23 +104,23 @@ export class MockProcess extends EventEmitter {
76
104
  * Returns the handle for chaining.
77
105
  */
78
106
  start() {
79
- const startDelay = this.scenario.process.startupDelayMs ?? 0;
107
+ const process = this.scenario.process ?? { exitCode: 0 };
108
+ const startDelay = process.startupDelayMs ?? 0;
80
109
  this._schedule(startDelay, () => {
81
110
  this.emit('spawn');
82
111
  this._validateExpectations();
83
- this._emitOutputChunks();
84
112
  this._applyFileOperations();
85
113
  this._emitSimulatedTelemetry();
86
- this._scheduleExit();
114
+ this._emitOutputChunks();
87
115
  });
88
- if (this.scenario.process.hang) {
116
+ if (process.hang) {
89
117
  // Don't schedule exit — process hangs
90
118
  return this;
91
119
  }
92
- if (this.scenario.process.crashAfterMs !== undefined) {
93
- this._schedule(this.scenario.process.crashAfterMs, () => {
120
+ if (process.crashAfterMs !== undefined) {
121
+ this._schedule(process.crashAfterMs, () => {
94
122
  if (!this._exited) {
95
- const signal = this.scenario.process.crashSignal ?? 'SIGTERM';
123
+ const signal = process.crashSignal ?? 'SIGTERM';
96
124
  this._exit(signal === 'SIGKILL' ? 137 : 143);
97
125
  }
98
126
  });
@@ -102,13 +130,17 @@ export class MockProcess extends EventEmitter {
102
130
  // -----------------------------------------------------------------------
103
131
  // Private
104
132
  // -----------------------------------------------------------------------
105
- _emitOutputChunks() {
106
- let cumulativeDelay = 0;
107
- for (const chunk of this.scenario.output) {
108
- cumulativeDelay += (chunk.delayMs ?? 0);
109
- this._schedule(cumulativeDelay, () => {
110
- if (this._exited)
111
- return;
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 = () => {
112
144
  if (chunk.stream === 'stdout') {
113
145
  this._stdout += chunk.data;
114
146
  this.emit('stdout', chunk.data);
@@ -118,8 +150,30 @@ export class MockProcess extends EventEmitter {
118
150
  this.emit('stderr', chunk.data);
119
151
  }
120
152
  this._checkInteractions(chunk);
153
+ this._emitOutputChunks(index + 1);
154
+ };
155
+ if (!hookStep) {
156
+ proceed();
157
+ return;
158
+ }
159
+ this.emit('runtime-hook', hookStep);
160
+ if (hookStep.decision === 'timeout') {
161
+ return;
162
+ }
163
+ this._schedule(hookStep.delayMs ?? 0, () => {
164
+ if (this._exited)
165
+ return;
166
+ this.emit('runtime-hook-result', hookStep);
167
+ if (hookStep.decision === 'deny') {
168
+ const line = `${hookStep.errorMessage ?? `Runtime hook denied ${hookStep.kind}`}\n`;
169
+ this._stderr += line;
170
+ this.emit('stderr', line);
171
+ this._exit(2);
172
+ return;
173
+ }
174
+ proceed();
121
175
  });
122
- }
176
+ });
123
177
  }
124
178
  _applyFileOperations() {
125
179
  if (!this.scenario.fileOperations)
@@ -132,6 +186,7 @@ export class MockProcess extends EventEmitter {
132
186
  this._fileChanges.push(op);
133
187
  this.emit('file-operation', op);
134
188
  });
189
+ cumulativeDelay += 1;
135
190
  }
136
191
  }
137
192
  _checkInteractions(chunk) {
@@ -178,19 +233,15 @@ export class MockProcess extends EventEmitter {
178
233
  }
179
234
  }
180
235
  _scheduleExit() {
181
- if (this.scenario.process.hang)
236
+ const process = this.scenario.process ?? { exitCode: 0 };
237
+ if (process.hang)
182
238
  return;
183
- if (this.scenario.process.crashAfterMs !== undefined)
239
+ if (process.crashAfterMs !== undefined)
184
240
  return;
185
- // Calculate total output time
186
- let totalOutputTime = 0;
187
- for (const chunk of this.scenario.output) {
188
- totalOutputTime += (chunk.delayMs ?? 0);
189
- }
190
- const shutdownDelay = this.scenario.process.shutdownDelayMs ?? 0;
191
- this._schedule(totalOutputTime + shutdownDelay, () => {
241
+ const shutdownDelay = process.shutdownDelayMs ?? 0;
242
+ this._schedule(shutdownDelay, () => {
192
243
  if (!this._exited) {
193
- this._exit(this.scenario.process.exitCode);
244
+ this._exit(process.exitCode);
194
245
  }
195
246
  });
196
247
  }
@@ -1 +1 @@
1
- {"version":3,"file":"mock-process.js","sourceRoot":"","sources":["../src/mock-process.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"mock-process.js","sourceRoot":"","sources":["../src/mock-process.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,50 @@
1
+ export type { ProgrammaticMockConfig, RemoteMockConfig, MockStreamEvent, ProgrammaticMockResponse, MockServerInfo, MockConnection, ProgrammaticMockBuilder, RemoteMockBuilder, 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
+ import { ProgrammaticMockEngine, createProgrammaticMockBuilder, ClaudeAgentSdkMock, CodexSdkMock, PiSdkMock } from './programmatic-mocks.js';
5
+ import { MockServer, createMockServer, createRemoteMockBuilder, OpenCodeHttpMock, CodexWebSocketMock } from './remote-mocks.js';
6
+ import type { MockConfigFactory, MockScenarios } from './mock-types.js';
7
+ export declare class AdapterMockFactory implements MockConfigFactory {
8
+ claudeAgentSdk(): import("./mock-types.js").ProgrammaticMockBuilder;
9
+ codexSdk(): import("./mock-types.js").ProgrammaticMockBuilder;
10
+ piSdk(): import("./mock-types.js").ProgrammaticMockBuilder;
11
+ opencodeHttp(): import("./mock-types.js").RemoteMockBuilder;
12
+ codexWebSocket(): import("./mock-types.js").RemoteMockBuilder;
13
+ programmatic(): import("./mock-types.js").ProgrammaticMockBuilder;
14
+ remote(): import("./mock-types.js").RemoteMockBuilder;
15
+ }
16
+ export declare const mockScenarios: MockScenarios;
17
+ 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;
18
+ export declare function testMockScenario(mockConfig: unknown, _expectedEventTypes: string[]): Promise<boolean>;
19
+ export declare const adapterMocks: {
20
+ factory: AdapterMockFactory;
21
+ claude: typeof ClaudeAgentSdkMock;
22
+ codex: {
23
+ sdk: typeof CodexSdkMock;
24
+ websocket: typeof CodexWebSocketMock;
25
+ };
26
+ pi: typeof PiSdkMock;
27
+ opencode: typeof OpenCodeHttpMock;
28
+ scenarios: MockScenarios;
29
+ createMock: typeof createAdapterMock;
30
+ testScenario: typeof testMockScenario;
31
+ programmatic: typeof createProgrammaticMockBuilder;
32
+ remote: typeof createRemoteMockBuilder;
33
+ programmaticMocks: {
34
+ claude: typeof ClaudeAgentSdkMock;
35
+ codex: typeof CodexSdkMock;
36
+ pi: typeof PiSdkMock;
37
+ engine: ProgrammaticMockEngine;
38
+ builder: typeof createProgrammaticMockBuilder;
39
+ };
40
+ remoteMocks: {
41
+ opencode: typeof OpenCodeHttpMock;
42
+ codex: typeof CodexWebSocketMock;
43
+ builder: typeof createRemoteMockBuilder;
44
+ server: typeof createMockServer;
45
+ };
46
+ MockServer: typeof MockServer;
47
+ ProgrammaticMockEngine: typeof ProgrammaticMockEngine;
48
+ createMockServer: typeof createMockServer;
49
+ };
50
+ //# sourceMappingURL=index.d.ts.map
@@ -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,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,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,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;CAGP;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;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAmBxB,CAAC"}