@a5c-ai/adapters-harness-mock 5.1.1-staging.00ceebd28cf2

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,597 @@
1
+ import { agentCost, agentMessageStop, agentTextDelta, agentToolCallReady, agentToolCallStart, agentToolResult, claudeError, claudeMessageStop, claudeResult, claudeStreamEventText, claudeStreamEventThinking, claudeStreamEventToolInput, claudeStreamEventToolStop, claudeStreamEventToolUse, claudeSystemInit, claudeUserToolResult, codexItemCompleted, codexItemStarted, codexThreadStarted, codexTurnCompleted, codexTurnFailed, codexTurnStarted, geminiError, geminiText, geminiToolCall, geminiToolResult, genericError, genericSessionEnd, genericSessionStart, genericText, genericToolCall, stdoutChunk, } from './wire-format.js';
2
+ function scenario(harness, name, output, process = { exitCode: 0 }) {
3
+ return {
4
+ harness,
5
+ executionType: 'subprocess',
6
+ name,
7
+ process,
8
+ output,
9
+ };
10
+ }
11
+ const claudeScenarios = [
12
+ scenario('claude-code', 'claude:stream-json', [
13
+ stdoutChunk(claudeSystemInit('sess_claude_stream', ['Read', 'Write']), 5),
14
+ stdoutChunk(claudeStreamEventThinking('I should inspect the workspace first.'), 10),
15
+ stdoutChunk(claudeStreamEventText('Hello '), 10),
16
+ stdoutChunk(claudeStreamEventText('from Claude Code.'), 10),
17
+ stdoutChunk(claudeMessageStop(), 10),
18
+ stdoutChunk(claudeResult('sess_claude_stream', 'Completed.', {
19
+ total_usd: 0.0012,
20
+ input_tokens: 120,
21
+ output_tokens: 45,
22
+ cache_creation_tokens: 10,
23
+ cache_read_tokens: 20,
24
+ }), 10),
25
+ ]),
26
+ scenario('claude-code', 'claude:tool-call', [
27
+ stdoutChunk(claudeSystemInit('sess_claude_tool', ['Read']), 5),
28
+ stdoutChunk(claudeStreamEventText('Reading the requested file.'), 10),
29
+ stdoutChunk(claudeStreamEventToolUse({ id: 'claude-tool-1', name: 'Read', input: {} }, 1), 10),
30
+ stdoutChunk(claudeStreamEventToolInput('{"file_path":"/tmp/x.txt"}', 1), 10),
31
+ stdoutChunk(claudeStreamEventToolStop(1), 10),
32
+ stdoutChunk(claudeUserToolResult('claude-tool-1', 'file contents'), 10),
33
+ stdoutChunk(claudeResult('sess_claude_tool', 'Done.'), 10),
34
+ ]),
35
+ scenario('claude-code', 'claude:error', [
36
+ stdoutChunk(claudeSystemInit('sess_claude_error', ['Read']), 5),
37
+ stdoutChunk(claudeError('Claude Code approval denied the requested write.'), 10),
38
+ ], { exitCode: 1 }),
39
+ ];
40
+ const codexScenarios = [
41
+ scenario('codex', 'codex:exec-turn', [
42
+ stdoutChunk(codexThreadStarted('thread_codex_exec'), 5),
43
+ stdoutChunk(codexTurnStarted('turn_codex_exec'), 10),
44
+ stdoutChunk(codexItemStarted({ id: 'msg_1', type: 'message', content: 'Planning the answer.' }), 10),
45
+ stdoutChunk(codexItemCompleted({ id: 'msg_1', type: 'agent_message', text: 'Here is the answer.' }), 10),
46
+ stdoutChunk(codexTurnCompleted('Completed', {
47
+ total_usd: 0.0008,
48
+ input_tokens: 90,
49
+ output_tokens: 30,
50
+ }), 10),
51
+ ]),
52
+ scenario('codex', 'codex:code-generation', [
53
+ stdoutChunk(codexThreadStarted('thread_codex_codegen'), 5),
54
+ stdoutChunk(codexTurnStarted('turn_codex_codegen'), 10),
55
+ stdoutChunk(codexItemStarted({ id: 'call_1', type: 'function_call', name: 'apply_patch', arguments: { patch: '+const x = 1;' } }), 10),
56
+ stdoutChunk(codexItemCompleted({ id: 'call_1', type: 'function_call', call_id: 'call_1', name: 'apply_patch', arguments: { patch: '+const x = 1;' } }), 10),
57
+ stdoutChunk(codexItemCompleted({ id: 'out_1', type: 'function_call_output', call_id: 'call_1', name: 'apply_patch', output: 'patch applied' }), 10),
58
+ stdoutChunk(codexTurnCompleted('Patch applied'), 10),
59
+ ]),
60
+ scenario('codex', 'codex:error', [
61
+ stdoutChunk(codexTurnFailed('Codex failed to execute the turn.'), 10),
62
+ ], { exitCode: 1 }),
63
+ ];
64
+ const geminiScenarios = [
65
+ scenario('gemini', 'gemini:thinking-stream', [
66
+ stdoutChunk(JSON.stringify({ type: 'thinking', content: 'Evaluating options.' }) + '\n', 5),
67
+ stdoutChunk(geminiText('Gemini says hi.'), 10),
68
+ stdoutChunk(geminiText('Streaming piece by piece.'), 10),
69
+ ]),
70
+ scenario('gemini', 'gemini:tool-call', [
71
+ stdoutChunk(geminiText('Calling a tool.'), 5),
72
+ stdoutChunk(geminiToolCall({ id: 'g1', name: 'search', input: { q: 'agent adapter' } }), 10),
73
+ stdoutChunk(geminiToolResult('g1', 'search results'), 10),
74
+ ]),
75
+ scenario('gemini', 'gemini:error', [
76
+ stdoutChunk(geminiError('Gemini request exceeded the configured budget.'), 10),
77
+ ], { exitCode: 1 }),
78
+ ];
79
+ const copilotScenarios = [
80
+ scenario('copilot', 'copilot:plain-text', [
81
+ stdoutChunk('Suggested command: npm test\n', 5),
82
+ ]),
83
+ scenario('copilot', 'copilot:error', [
84
+ stdoutChunk(genericError('Authentication required.'), 5),
85
+ ], { exitCode: 1 }),
86
+ ];
87
+ const cursorScenarios = [
88
+ scenario('cursor', 'cursor:session-text', [
89
+ stdoutChunk(genericSessionStart('cursor-session'), 5),
90
+ stdoutChunk(genericText('Cursor opened the workspace and drafted a reply.'), 10),
91
+ stdoutChunk(genericSessionEnd('Cursor finished the turn.'), 10),
92
+ ]),
93
+ scenario('cursor', 'cursor:tool-call', [
94
+ stdoutChunk(genericSessionStart('cursor-tool-session'), 5),
95
+ stdoutChunk(genericText('Cursor is invoking a workspace tool.'), 10),
96
+ stdoutChunk(genericToolCall({ id: 'cursor-t1', name: 'edit_file', input: { path: 'src/app.ts', changes: 2 } }), 10),
97
+ stdoutChunk(genericSessionEnd('Tool call emitted.'), 10),
98
+ ]),
99
+ scenario('cursor', 'cursor:error', [
100
+ stdoutChunk(genericSessionStart('cursor-error-session'), 5),
101
+ stdoutChunk(genericError('Cursor refused the command because approval was denied.'), 10),
102
+ ], { exitCode: 1 }),
103
+ ];
104
+ const opencodeScenarios = [
105
+ scenario('opencode', 'opencode:session', [
106
+ stdoutChunk(genericSessionStart('opencode-session'), 5),
107
+ stdoutChunk(genericText('OpenCode started.'), 10),
108
+ stdoutChunk(genericSessionEnd('OpenCode finished.', {
109
+ total_usd: 0.0015,
110
+ input_tokens: 100,
111
+ output_tokens: 35,
112
+ }), 10),
113
+ ]),
114
+ scenario('opencode', 'opencode:tool-call', [
115
+ stdoutChunk(genericSessionStart('opencode-tool'), 5),
116
+ stdoutChunk(genericToolCall({ id: 'opencode-t1', name: 'write_file', input: { path: '/tmp/out.ts' } }), 10),
117
+ stdoutChunk(JSON.stringify({ type: 'tool_result', id: 'opencode-t1', name: 'write_file', result: 'written', duration: 12 }) + '\n', 10),
118
+ stdoutChunk(genericSessionEnd(), 10),
119
+ ]),
120
+ scenario('opencode', 'opencode:error', [
121
+ stdoutChunk(genericSessionStart('opencode-error'), 5),
122
+ stdoutChunk(genericError('OpenCode lost its upstream provider session.'), 10),
123
+ ], { exitCode: 1 }),
124
+ ];
125
+ const piScenarios = [
126
+ scenario('pi', 'pi:session-text', [
127
+ stdoutChunk(genericSessionStart('pi-session'), 5),
128
+ stdoutChunk(JSON.stringify({ type: 'message', text: 'Pi planned the next edit.' }) + '\n', 10),
129
+ stdoutChunk(genericSessionEnd('Pi completed the turn.'), 10),
130
+ ]),
131
+ scenario('pi', 'pi:tool-call', [
132
+ stdoutChunk(genericSessionStart('pi-tool-session'), 5),
133
+ stdoutChunk(JSON.stringify({ type: 'message', text: 'Pi is calling a tool.' }) + '\n', 10),
134
+ stdoutChunk(genericToolCall({ id: 'pi-t1', name: 'read_file', input: { path: 'README.md' } }), 10),
135
+ stdoutChunk(genericSessionEnd('Tool request emitted.'), 10),
136
+ ]),
137
+ scenario('pi', 'pi:error', [
138
+ stdoutChunk(genericSessionStart('pi-error-session'), 5),
139
+ stdoutChunk(genericError('Pi provider returned an authentication failure.'), 10),
140
+ ], { exitCode: 1 }),
141
+ ];
142
+ const ompScenarios = [
143
+ scenario('omp', 'omp:session-text', [
144
+ stdoutChunk(genericSessionStart('omp-session'), 5),
145
+ stdoutChunk(JSON.stringify({ type: 'message', content: 'OMP prepared a follow-up patch.' }) + '\n', 10),
146
+ stdoutChunk(genericSessionEnd('OMP completed the turn.'), 10),
147
+ ]),
148
+ scenario('omp', 'omp:tool-call', [
149
+ stdoutChunk(genericSessionStart('omp-tool-session'), 5),
150
+ stdoutChunk(genericText('OMP is invoking an MCP-style tool.'), 10),
151
+ stdoutChunk(genericToolCall({ id: 'omp-t1', name: 'search_repo', input: { pattern: 'MockProcess' } }), 10),
152
+ stdoutChunk(genericSessionEnd('Tool request emitted.'), 10),
153
+ ]),
154
+ scenario('omp', 'omp:error', [
155
+ stdoutChunk(genericSessionStart('omp-error-session'), 5),
156
+ stdoutChunk(genericError('OMP hit a provider-side rate limit.'), 10),
157
+ ], { exitCode: 1 }),
158
+ ];
159
+ const openclawScenarios = [
160
+ scenario('openclaw', 'openclaw:session-text', [
161
+ stdoutChunk(genericSessionStart('openclaw-session'), 5),
162
+ stdoutChunk(genericText('OpenClaw prepared a plugin response.'), 10),
163
+ stdoutChunk(genericSessionEnd('OpenClaw finished the turn.'), 10),
164
+ ]),
165
+ scenario('openclaw', 'openclaw:tool-call', [
166
+ stdoutChunk(genericSessionStart('openclaw-tool-session'), 5),
167
+ stdoutChunk(genericText('OpenClaw is dispatching a tool call.'), 10),
168
+ stdoutChunk(genericToolCall({ id: 'openclaw-t1', name: 'open_plugin_channel', input: { channel: 'filesystem' } }), 10),
169
+ stdoutChunk(genericSessionEnd('Tool request emitted.'), 10),
170
+ ]),
171
+ scenario('openclaw', 'openclaw:error', [
172
+ stdoutChunk(genericSessionStart('openclaw-error-session'), 5),
173
+ stdoutChunk(genericError('OpenClaw plugin negotiation failed.'), 10),
174
+ ], { exitCode: 1 }),
175
+ ];
176
+ const hermesScenarios = [
177
+ scenario('hermes', 'hermes:session-text', [
178
+ stdoutChunk(genericSessionStart('hermes-session'), 5),
179
+ stdoutChunk(genericText('Hermes drafted the final response.'), 10),
180
+ stdoutChunk(genericSessionEnd('Hermes finished the session.'), 10),
181
+ ]),
182
+ scenario('hermes', 'hermes:tool-call', [
183
+ stdoutChunk(genericSessionStart('hermes-tool-session'), 5),
184
+ stdoutChunk(genericText('Hermes is invoking a coding tool.'), 10),
185
+ stdoutChunk(genericToolCall({ id: 'hermes-t1', name: 'apply_patch', input: { file: 'src/main.ts', hunks: 1 } }), 10),
186
+ stdoutChunk(genericSessionEnd('Tool request emitted.'), 10),
187
+ ]),
188
+ scenario('hermes', 'hermes:error', [
189
+ stdoutChunk(genericSessionStart('hermes-error-session'), 5),
190
+ stdoutChunk(genericError('Hermes provider session expired.'), 10),
191
+ ], { exitCode: 1 }),
192
+ ];
193
+ const ampScenarios = [
194
+ scenario('amp', 'amp:session', [
195
+ stdoutChunk(JSON.stringify({ type: 'session_start', sessionId: 'amp-session' }) + '\n', 5),
196
+ stdoutChunk(agentTextDelta('Amp started.', 'Amp started.'), 10),
197
+ stdoutChunk(agentCost(0.0011, 140, 55), 10),
198
+ stdoutChunk(JSON.stringify({ type: 'session_end', sessionId: 'amp-session', reason: 'completed', turnCount: 1 }) + '\n', 10),
199
+ ]),
200
+ scenario('amp', 'amp:tool-call', [
201
+ stdoutChunk(JSON.stringify({ type: 'session_start', sessionId: 'amp-tool-session' }) + '\n', 5),
202
+ stdoutChunk(agentToolCallStart('amp-t1', 'grep_codebase', { pattern: 'MockProcess' }), 10),
203
+ stdoutChunk(agentToolResult('amp-t1', 'grep_codebase', 'packages/adapters/harness-mock/src/mock-process.ts', 8), 10),
204
+ ]),
205
+ scenario('amp', 'amp:error', [
206
+ stdoutChunk(JSON.stringify({ type: 'session_start', sessionId: 'amp-error-session' }) + '\n', 5),
207
+ stdoutChunk(JSON.stringify({ type: 'error', code: 'RATE_LIMIT', message: 'Amp exceeded the provider rate limit.', recoverable: false }) + '\n', 10),
208
+ ], { exitCode: 1 }),
209
+ ];
210
+ const droidScenarios = [
211
+ scenario('droid', 'droid:session', [
212
+ stdoutChunk(JSON.stringify({ type: 'session_start', sessionId: 'droid-session' }) + '\n', 5),
213
+ stdoutChunk(agentTextDelta('Droid started.', 'Droid started.'), 10),
214
+ stdoutChunk(agentMessageStop('Finished.'), 10),
215
+ stdoutChunk(agentCost(0.0021, 210, 88), 10),
216
+ ]),
217
+ scenario('droid', 'droid:tool-call', [
218
+ stdoutChunk(JSON.stringify({ type: 'session_start', sessionId: 'droid-tool' }) + '\n', 5),
219
+ stdoutChunk(agentToolCallStart('droid-t1', 'bash', { command: 'npm test' }), 10),
220
+ stdoutChunk(agentToolCallReady('droid-t1', 'bash', { command: 'npm test' }), 10),
221
+ stdoutChunk(agentToolResult('droid-t1', 'bash', 'tests passed', 42), 10),
222
+ ]),
223
+ scenario('droid', 'droid:error', [
224
+ stdoutChunk(JSON.stringify({ type: 'session_start', sessionId: 'droid-error' }) + '\n', 5),
225
+ stdoutChunk(JSON.stringify({ type: 'error', code: 'PERMISSION_DENIED', message: 'Droid denied the requested shell tool.', recoverable: false }) + '\n', 10),
226
+ ], { exitCode: 1 }),
227
+ ];
228
+ const qwenScenarios = [
229
+ scenario('qwen', 'qwen:basic-text', [
230
+ stdoutChunk(geminiText('Hello from qwen.'), 5),
231
+ ]),
232
+ scenario('qwen', 'qwen:tool-call', [
233
+ stdoutChunk(geminiText('Using a tool.'), 5),
234
+ stdoutChunk(geminiToolCall({ id: 'q1', name: 'read_file', input: { path: '/tmp/qwen.txt' } }), 10),
235
+ stdoutChunk(geminiToolResult('q1', 'file contents'), 10),
236
+ ]),
237
+ scenario('qwen', 'qwen:error', [
238
+ stdoutChunk(geminiError('Qwen rejected the upstream request.'), 10),
239
+ ], { exitCode: 1 }),
240
+ ];
241
+ const ALL_SCENARIOS = [
242
+ ...claudeScenarios,
243
+ ...codexScenarios,
244
+ ...geminiScenarios,
245
+ ...copilotScenarios,
246
+ ...cursorScenarios,
247
+ ...opencodeScenarios,
248
+ ...piScenarios,
249
+ ...ompScenarios,
250
+ ...openclawScenarios,
251
+ ...hermesScenarios,
252
+ ...ampScenarios,
253
+ ...droidScenarios,
254
+ ...qwenScenarios,
255
+ ];
256
+ export const SUBPROCESS_HARNESS_PROFILES = {
257
+ claude: {
258
+ harnessKey: 'claude',
259
+ harness: 'claude-code',
260
+ executionType: 'subprocess',
261
+ scenarios: claudeScenarios.map((entry) => entry.name),
262
+ notes: 'Claude Code stream-json output with session, thinking, tool, and result envelopes.',
263
+ },
264
+ codex: {
265
+ harnessKey: 'codex',
266
+ harness: 'codex',
267
+ executionType: 'subprocess',
268
+ scenarios: codexScenarios.map((entry) => entry.name),
269
+ notes: 'Codex exec JSON events including thread/turn/item envelopes.',
270
+ },
271
+ gemini: {
272
+ harnessKey: 'gemini',
273
+ harness: 'gemini',
274
+ executionType: 'subprocess',
275
+ scenarios: geminiScenarios.map((entry) => entry.name),
276
+ notes: 'Gemini CLI JSON event stream with thinking and tool events.',
277
+ },
278
+ copilot: {
279
+ harnessKey: 'copilot',
280
+ harness: 'copilot',
281
+ executionType: 'subprocess',
282
+ scenarios: copilotScenarios.map((entry) => entry.name),
283
+ notes: 'Copilot primarily emits plain text, with JSON error fallback coverage.',
284
+ },
285
+ cursor: {
286
+ harnessKey: 'cursor',
287
+ harness: 'cursor',
288
+ executionType: 'subprocess',
289
+ scenarios: cursorScenarios.map((entry) => entry.name),
290
+ notes: 'Cursor session-lifecycle, tool-call, and nonzero-exit error fixtures using the adapter’s generic JSONL parse path.',
291
+ },
292
+ opencode: {
293
+ harnessKey: 'opencode',
294
+ harness: 'opencode',
295
+ executionType: 'subprocess',
296
+ scenarios: opencodeScenarios.map((entry) => entry.name),
297
+ notes: 'OpenCode event/session envelopes with tool execution, final message/cost, and explicit error coverage.',
298
+ },
299
+ pi: {
300
+ harnessKey: 'pi',
301
+ harness: 'pi',
302
+ executionType: 'subprocess',
303
+ scenarios: piScenarios.map((entry) => entry.name),
304
+ notes: 'Pi session lifecycle, message/text, tool, and error fixtures through the current JSONL parser.',
305
+ },
306
+ omp: {
307
+ harnessKey: 'omp',
308
+ harness: 'omp',
309
+ executionType: 'subprocess',
310
+ scenarios: ompScenarios.map((entry) => entry.name),
311
+ notes: 'OMP session lifecycle, tool, and nonzero-exit error fixtures through the current JSONL parser.',
312
+ },
313
+ openclaw: {
314
+ harnessKey: 'openclaw',
315
+ harness: 'openclaw',
316
+ executionType: 'subprocess',
317
+ scenarios: openclawScenarios.map((entry) => entry.name),
318
+ notes: 'OpenClaw session lifecycle, tool, and explicit plugin/error fixtures through the current JSONL parser.',
319
+ },
320
+ hermes: {
321
+ harnessKey: 'hermes',
322
+ harness: 'hermes',
323
+ executionType: 'subprocess',
324
+ scenarios: hermesScenarios.map((entry) => entry.name),
325
+ notes: 'Hermes session lifecycle, tool, and nonzero-exit error fixtures through the current JSONL parser.',
326
+ },
327
+ amp: {
328
+ harnessKey: 'amp',
329
+ harness: 'amp',
330
+ executionType: 'subprocess',
331
+ scenarios: ampScenarios.map((entry) => entry.name),
332
+ notes: 'Amp-specific session, cost, and tool-call events.',
333
+ },
334
+ droid: {
335
+ harnessKey: 'droid',
336
+ harness: 'droid',
337
+ executionType: 'subprocess',
338
+ scenarios: droidScenarios.map((entry) => entry.name),
339
+ notes: 'Droid-specific session/tool ready/message stop events.',
340
+ },
341
+ qwen: {
342
+ harnessKey: 'qwen',
343
+ harness: 'qwen',
344
+ executionType: 'subprocess',
345
+ scenarios: qwenScenarios.map((entry) => entry.name),
346
+ notes: 'Qwen-compatible JSON text/tool/error fixtures matching adapter parse paths.',
347
+ },
348
+ };
349
+ const LEGACY_ALIASES = {
350
+ 'claude:basic-text': 'claude:stream-json',
351
+ 'claude:multi-turn': 'claude:stream-json',
352
+ 'codex:basic-text': 'codex:exec-turn',
353
+ 'gemini:basic-text': 'gemini:thinking-stream',
354
+ 'gemini:streaming': 'gemini:thinking-stream',
355
+ 'cursor:basic-text': 'cursor:session-text',
356
+ 'opencode:basic-text': 'opencode:session',
357
+ 'pi:basic-text': 'pi:session-text',
358
+ 'omp:basic-text': 'omp:session-text',
359
+ 'openclaw:basic-text': 'openclaw:session-text',
360
+ 'hermes:basic-text': 'hermes:session-text',
361
+ };
362
+ const scenarioByName = Object.fromEntries(ALL_SCENARIOS.map((entry) => [entry.name, entry]));
363
+ export const AGENT_SCENARIOS = {
364
+ ...scenarioByName,
365
+ ...Object.fromEntries(Object.entries(LEGACY_ALIASES).map(([alias, target]) => [alias, scenarioByName[target]])),
366
+ };
367
+ export const SUBPROCESS_SCENARIO_EXPECTATIONS = {
368
+ 'claude:stream-json': {
369
+ agent: 'claude',
370
+ exitCode: 0,
371
+ parsedEventTypes: ['session_start', 'thinking_delta', 'text_delta', 'message_stop', 'cost'],
372
+ notes: 'Claude stream-json session lifecycle with thinking/text/result envelopes.',
373
+ },
374
+ 'claude:tool-call': {
375
+ agent: 'claude',
376
+ exitCode: 0,
377
+ parsedEventTypes: ['session_start', 'text_delta', 'tool_call_start', 'tool_result', 'message_stop'],
378
+ notes: 'Claude tool_use and user tool_result round-trip.',
379
+ },
380
+ 'claude:error': {
381
+ agent: 'claude',
382
+ exitCode: 1,
383
+ parsedEventTypes: ['session_start', 'error'],
384
+ notes: 'Claude error envelope with nonzero exit.',
385
+ },
386
+ 'codex:exec-turn': {
387
+ agent: 'codex',
388
+ exitCode: 0,
389
+ parsedEventTypes: ['session_start', 'thinking_delta', 'text_delta', 'message_stop', 'cost'],
390
+ notes: 'Codex thread/turn/item lifecycle.',
391
+ },
392
+ 'codex:code-generation': {
393
+ agent: 'codex',
394
+ exitCode: 0,
395
+ parsedEventTypes: ['session_start', 'thinking_delta', 'tool_call_start', 'tool_result', 'message_stop'],
396
+ notes: 'Codex function call and function_call_output mapping.',
397
+ },
398
+ 'codex:error': {
399
+ agent: 'codex',
400
+ exitCode: 1,
401
+ parsedEventTypes: ['error'],
402
+ notes: 'Codex turn.failed envelope.',
403
+ },
404
+ 'gemini:thinking-stream': {
405
+ agent: 'gemini',
406
+ exitCode: 0,
407
+ parsedEventTypes: ['thinking_delta', 'text_delta'],
408
+ notes: 'Gemini thinking and text streaming.',
409
+ },
410
+ 'gemini:tool-call': {
411
+ agent: 'gemini',
412
+ exitCode: 0,
413
+ parsedEventTypes: ['text_delta', 'tool_call_start', 'tool_result'],
414
+ notes: 'Gemini tool call/result lifecycle.',
415
+ },
416
+ 'gemini:error': {
417
+ agent: 'gemini',
418
+ exitCode: 1,
419
+ parsedEventTypes: ['error'],
420
+ notes: 'Gemini error envelope.',
421
+ },
422
+ 'copilot:plain-text': {
423
+ agent: 'copilot',
424
+ exitCode: 0,
425
+ parsedEventTypes: ['text_delta'],
426
+ notes: 'Copilot plain-text fallback.',
427
+ },
428
+ 'copilot:error': {
429
+ agent: 'copilot',
430
+ exitCode: 1,
431
+ parsedEventTypes: ['error'],
432
+ notes: 'Copilot JSON error fallback.',
433
+ },
434
+ 'cursor:session-text': {
435
+ agent: 'cursor',
436
+ exitCode: 0,
437
+ parsedEventTypes: ['text_delta'],
438
+ notes: 'Cursor text output with ignored session lifecycle envelopes.',
439
+ },
440
+ 'cursor:tool-call': {
441
+ agent: 'cursor',
442
+ exitCode: 0,
443
+ parsedEventTypes: ['text_delta', 'tool_call_start'],
444
+ notes: 'Cursor text plus tool_call envelope.',
445
+ },
446
+ 'cursor:error': {
447
+ agent: 'cursor',
448
+ exitCode: 1,
449
+ parsedEventTypes: ['error'],
450
+ notes: 'Cursor nonzero-exit error envelope.',
451
+ },
452
+ 'opencode:session': {
453
+ agent: 'opencode',
454
+ exitCode: 0,
455
+ parsedEventTypes: ['session_start', 'text_delta', 'message_stop', 'cost'],
456
+ notes: 'OpenCode session start/end and usage mapping.',
457
+ },
458
+ 'opencode:tool-call': {
459
+ agent: 'opencode',
460
+ exitCode: 0,
461
+ parsedEventTypes: ['session_start', 'tool_call_start', 'tool_result'],
462
+ notes: 'OpenCode tool start/result mapping.',
463
+ },
464
+ 'opencode:error': {
465
+ agent: 'opencode',
466
+ exitCode: 1,
467
+ parsedEventTypes: ['session_start', 'error'],
468
+ notes: 'OpenCode error envelope with bound session.',
469
+ },
470
+ 'pi:session-text': {
471
+ agent: 'pi',
472
+ exitCode: 0,
473
+ parsedEventTypes: ['text_delta'],
474
+ notes: 'Pi message/text output with ignored session lifecycle envelopes.',
475
+ },
476
+ 'pi:tool-call': {
477
+ agent: 'pi',
478
+ exitCode: 0,
479
+ parsedEventTypes: ['text_delta', 'tool_call_start'],
480
+ notes: 'Pi message plus tool_call envelope.',
481
+ },
482
+ 'pi:error': {
483
+ agent: 'pi',
484
+ exitCode: 1,
485
+ parsedEventTypes: ['error'],
486
+ notes: 'Pi nonzero-exit error envelope.',
487
+ },
488
+ 'omp:session-text': {
489
+ agent: 'omp',
490
+ exitCode: 0,
491
+ parsedEventTypes: ['text_delta'],
492
+ notes: 'OMP message/text output with ignored session lifecycle envelopes.',
493
+ },
494
+ 'omp:tool-call': {
495
+ agent: 'omp',
496
+ exitCode: 0,
497
+ parsedEventTypes: ['text_delta', 'tool_call_start'],
498
+ notes: 'OMP text plus tool_call envelope.',
499
+ },
500
+ 'omp:error': {
501
+ agent: 'omp',
502
+ exitCode: 1,
503
+ parsedEventTypes: ['error'],
504
+ notes: 'OMP nonzero-exit error envelope.',
505
+ },
506
+ 'openclaw:session-text': {
507
+ agent: 'openclaw',
508
+ exitCode: 0,
509
+ parsedEventTypes: ['text_delta'],
510
+ notes: 'OpenClaw text output with ignored session lifecycle envelopes.',
511
+ },
512
+ 'openclaw:tool-call': {
513
+ agent: 'openclaw',
514
+ exitCode: 0,
515
+ parsedEventTypes: ['text_delta', 'tool_call_start'],
516
+ notes: 'OpenClaw text plus tool_call envelope.',
517
+ },
518
+ 'openclaw:error': {
519
+ agent: 'openclaw',
520
+ exitCode: 1,
521
+ parsedEventTypes: ['error'],
522
+ notes: 'OpenClaw nonzero-exit error envelope.',
523
+ },
524
+ 'hermes:session-text': {
525
+ agent: 'hermes',
526
+ exitCode: 0,
527
+ parsedEventTypes: ['text_delta'],
528
+ notes: 'Hermes text output with ignored session lifecycle envelopes.',
529
+ },
530
+ 'hermes:tool-call': {
531
+ agent: 'hermes',
532
+ exitCode: 0,
533
+ parsedEventTypes: ['text_delta', 'tool_call_start'],
534
+ notes: 'Hermes text plus tool_call envelope.',
535
+ },
536
+ 'hermes:error': {
537
+ agent: 'hermes',
538
+ exitCode: 1,
539
+ parsedEventTypes: ['error'],
540
+ notes: 'Hermes nonzero-exit error envelope.',
541
+ },
542
+ 'amp:session': {
543
+ agent: 'amp',
544
+ exitCode: 0,
545
+ parsedEventTypes: ['session_start', 'text_delta', 'cost', 'session_end'],
546
+ notes: 'Amp session start/text/cost/session_end lifecycle.',
547
+ },
548
+ 'amp:tool-call': {
549
+ agent: 'amp',
550
+ exitCode: 0,
551
+ parsedEventTypes: ['session_start', 'tool_call_start', 'tool_result'],
552
+ notes: 'Amp tool_call_start and tool_result mapping.',
553
+ },
554
+ 'amp:error': {
555
+ agent: 'amp',
556
+ exitCode: 1,
557
+ parsedEventTypes: ['session_start', 'error'],
558
+ notes: 'Amp error envelope with bound session.',
559
+ },
560
+ 'droid:session': {
561
+ agent: 'droid',
562
+ exitCode: 0,
563
+ parsedEventTypes: ['session_start', 'text_delta', 'message_stop', 'cost'],
564
+ notes: 'Droid session/message/cost lifecycle.',
565
+ },
566
+ 'droid:tool-call': {
567
+ agent: 'droid',
568
+ exitCode: 0,
569
+ parsedEventTypes: ['session_start', 'tool_call_start', 'tool_call_ready', 'tool_result'],
570
+ notes: 'Droid tool start/ready/result mapping.',
571
+ },
572
+ 'droid:error': {
573
+ agent: 'droid',
574
+ exitCode: 1,
575
+ parsedEventTypes: ['session_start', 'error'],
576
+ notes: 'Droid error envelope with nonzero exit.',
577
+ },
578
+ 'qwen:basic-text': {
579
+ agent: 'qwen',
580
+ exitCode: 0,
581
+ parsedEventTypes: ['text_delta'],
582
+ notes: 'Qwen text output.',
583
+ },
584
+ 'qwen:tool-call': {
585
+ agent: 'qwen',
586
+ exitCode: 0,
587
+ parsedEventTypes: ['text_delta', 'tool_call_start', 'tool_result'],
588
+ notes: 'Qwen tool call/result mapping.',
589
+ },
590
+ 'qwen:error': {
591
+ agent: 'qwen',
592
+ exitCode: 1,
593
+ parsedEventTypes: ['error'],
594
+ notes: 'Qwen error envelope.',
595
+ },
596
+ };
597
+ //# sourceMappingURL=per-agent.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"per-agent.js","sourceRoot":"","sources":["../../src/scenarios/per-agent.ts"],"names":[],"mappings":"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"}