@harnesskit/collector 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (44) hide show
  1. package/README.md +123 -0
  2. package/dist/cli-lib.d.ts +6 -0
  3. package/dist/cli-lib.js +232 -0
  4. package/dist/cli-lib.js.map +1 -0
  5. package/dist/cli.d.ts +1 -0
  6. package/dist/cli.js +6 -0
  7. package/dist/cli.js.map +1 -0
  8. package/dist/hooks/claude-code-transform.d.ts +1 -0
  9. package/dist/hooks/claude-code-transform.js +361 -0
  10. package/dist/hooks/claude-code-transform.js.map +1 -0
  11. package/dist/hooks/claude-code.d.ts +1 -0
  12. package/dist/hooks/claude-code.js +7 -0
  13. package/dist/hooks/claude-code.js.map +1 -0
  14. package/dist/hooks/codex-transform.d.ts +1 -0
  15. package/dist/hooks/codex-transform.js +239 -0
  16. package/dist/hooks/codex-transform.js.map +1 -0
  17. package/dist/hooks/codex.d.ts +1 -0
  18. package/dist/hooks/codex.js +7 -0
  19. package/dist/hooks/codex.js.map +1 -0
  20. package/dist/hooks/opencode-transform.d.ts +1 -0
  21. package/dist/hooks/opencode-transform.js +198 -0
  22. package/dist/hooks/opencode-transform.js.map +1 -0
  23. package/dist/hooks/opencode.d.ts +1 -0
  24. package/dist/hooks/opencode.js +7 -0
  25. package/dist/hooks/opencode.js.map +1 -0
  26. package/dist/index.d.ts +1 -0
  27. package/dist/index.js +2 -0
  28. package/dist/index.js.map +1 -0
  29. package/dist/lib/buffer.d.ts +10 -0
  30. package/dist/lib/buffer.js +55 -0
  31. package/dist/lib/buffer.js.map +1 -0
  32. package/dist/lib/collector.d.ts +31 -0
  33. package/dist/lib/collector.js +266 -0
  34. package/dist/lib/collector.js.map +1 -0
  35. package/dist/lib/config.d.ts +24 -0
  36. package/dist/lib/config.js +63 -0
  37. package/dist/lib/config.js.map +1 -0
  38. package/dist/lib/io.d.ts +2 -0
  39. package/dist/lib/io.js +34 -0
  40. package/dist/lib/io.js.map +1 -0
  41. package/dist/lib/redaction.d.ts +13 -0
  42. package/dist/lib/redaction.js +131 -0
  43. package/dist/lib/redaction.js.map +1 -0
  44. package/package.json +40 -0
@@ -0,0 +1,361 @@
1
+ import { randomUUID } from 'node:crypto';
2
+ const getRecord = (value) => value && typeof value === 'object' ? value : null;
3
+ const getString = (obj, keys) => {
4
+ if (!obj) {
5
+ return undefined;
6
+ }
7
+ for (const key of keys) {
8
+ const value = obj[key];
9
+ if (typeof value === 'string' && value.trim().length > 0) {
10
+ return value;
11
+ }
12
+ }
13
+ return undefined;
14
+ };
15
+ const getNumber = (obj, keys) => {
16
+ if (!obj) {
17
+ return undefined;
18
+ }
19
+ for (const key of keys) {
20
+ const value = obj[key];
21
+ if (typeof value === 'number' && Number.isFinite(value)) {
22
+ return value;
23
+ }
24
+ }
25
+ return undefined;
26
+ };
27
+ const normalizeEventType = (value) => {
28
+ if (!value) {
29
+ return undefined;
30
+ }
31
+ const normalized = value.toLowerCase();
32
+ if (['session_start', 'session_end', 'action', 'error'].includes(normalized)) {
33
+ return normalized;
34
+ }
35
+ return undefined;
36
+ };
37
+ const normalizeHookEventName = (value) => {
38
+ if (!value) {
39
+ return undefined;
40
+ }
41
+ return value.toLowerCase();
42
+ };
43
+ const extractSessionId = (event) => {
44
+ const session = getRecord(event.session);
45
+ return (getString(event, ['session_id', 'sessionId']) ??
46
+ getString(session, ['id', 'session_id', 'sessionId']));
47
+ };
48
+ const extractTimestamp = (event, payload) => getString(event, ['timestamp', 'time', 'ts', 'created_at', 'createdAt']) ??
49
+ getString(payload ?? null, ['timestamp', 'time', 'ts', 'created_at', 'createdAt']);
50
+ const extractPayload = (event) => {
51
+ const payload = getRecord(event.payload) ?? getRecord(event.data);
52
+ if (payload) {
53
+ return payload;
54
+ }
55
+ return event;
56
+ };
57
+ const normalizeSessionStart = (event, payload) => ({
58
+ started_at: getString(payload, ['started_at', 'startedAt', 'start_at', 'startAt']) ??
59
+ getString(event, ['timestamp', 'time', 'ts']) ??
60
+ new Date().toISOString(),
61
+ sample_rate: getNumber(payload, ['sample_rate', 'sampleRate']),
62
+ capture_config_id: getString(payload, ['capture_config_id', 'captureConfigId']),
63
+ user_ref: getString(payload, ['user_ref', 'userRef']),
64
+ machine_ref: getString(payload, ['machine_ref', 'machineRef']),
65
+ });
66
+ const normalizeSessionEnd = (event, payload) => ({
67
+ ended_at: getString(payload, ['ended_at', 'endedAt', 'end_at', 'endAt']) ??
68
+ getString(event, ['timestamp', 'time', 'ts']) ??
69
+ new Date().toISOString(),
70
+ status: getString(payload, ['status', 'state']) ?? getString(event, ['status', 'state']) ?? 'unknown',
71
+ outcome_reason: getString(payload, ['outcome_reason', 'outcomeReason']),
72
+ input_tokens: getNumber(payload, ['input_tokens', 'inputTokens']),
73
+ output_tokens: getNumber(payload, ['output_tokens', 'outputTokens']),
74
+ cost_usd: getNumber(payload, ['cost_usd', 'costUsd']),
75
+ cost_estimated: payload.cost_estimated === true,
76
+ });
77
+ const normalizeAction = (event, payload, seq, nameOverride) => ({
78
+ id: getString(payload, ['id', 'action_id', 'actionId']) ??
79
+ getString(event, ['id', 'action_id', 'actionId']) ??
80
+ randomUUID(),
81
+ seq,
82
+ type: getString(payload, ['type', 'action_type', 'actionType']) ??
83
+ getString(event, ['type', 'action_type', 'actionType']) ??
84
+ 'tool_call',
85
+ name: nameOverride ??
86
+ getString(payload, ['name', 'tool', 'model', 'operation']) ??
87
+ getString(event, ['name', 'tool', 'model', 'operation']) ??
88
+ 'unknown',
89
+ status: getString(payload, ['status', 'state']) ?? getString(event, ['status', 'state']) ?? 'success',
90
+ started_at: getString(payload, ['started_at', 'startedAt']) ??
91
+ getString(event, ['timestamp', 'time', 'ts']) ??
92
+ new Date().toISOString(),
93
+ ended_at: getString(payload, ['ended_at', 'endedAt']),
94
+ input_tokens: getNumber(payload, ['input_tokens', 'inputTokens']),
95
+ output_tokens: getNumber(payload, ['output_tokens', 'outputTokens']),
96
+ cost_usd: getNumber(payload, ['cost_usd', 'costUsd']),
97
+ cost_estimated: payload.cost_estimated === true,
98
+ request_payload: payload.request_payload ?? payload.request ?? undefined,
99
+ response_payload: payload.response_payload ?? payload.response ?? undefined,
100
+ payload_truncated: payload.payload_truncated === true,
101
+ error_code: getString(payload, ['error_code', 'errorCode']),
102
+ error_message: getString(payload, ['error_message', 'errorMessage']),
103
+ file_path: getString(payload, ['file_path', 'filePath']),
104
+ file_op: getString(payload, ['file_op', 'fileOp']),
105
+ });
106
+ const normalizeError = (event, payload) => ({
107
+ error_code: getString(payload, ['error_code', 'errorCode']) ??
108
+ getString(event, ['error_code', 'errorCode']) ??
109
+ 'error',
110
+ error_message: getString(payload, ['error_message', 'errorMessage', 'message']) ??
111
+ getString(event, ['error_message', 'errorMessage', 'message']) ??
112
+ 'Unknown error.',
113
+ action_id: getString(payload, ['action_id', 'actionId']) ?? getString(event, ['action_id']),
114
+ severity: getString(payload, ['severity']),
115
+ });
116
+ export const transformClaudeCodeEvents = (input) => {
117
+ const output = [];
118
+ const sessionState = new Map();
119
+ const getSessionState = (sessionId) => {
120
+ const existing = sessionState.get(sessionId);
121
+ if (existing) {
122
+ return existing;
123
+ }
124
+ const created = {
125
+ seq: 0,
126
+ toolUses: new Map(),
127
+ };
128
+ sessionState.set(sessionId, created);
129
+ return created;
130
+ };
131
+ const nextSeq = (sessionId) => {
132
+ const state = getSessionState(sessionId);
133
+ state.seq += 1;
134
+ return state.seq;
135
+ };
136
+ const mapFileOpFromTool = (toolName) => {
137
+ if (!toolName) {
138
+ return undefined;
139
+ }
140
+ switch (toolName.toLowerCase()) {
141
+ case 'read':
142
+ return 'read';
143
+ case 'write':
144
+ return 'write';
145
+ case 'edit':
146
+ case 'multiedit':
147
+ return 'edit';
148
+ case 'delete':
149
+ return 'delete';
150
+ default:
151
+ return undefined;
152
+ }
153
+ };
154
+ const mapActionTypeFromTool = (toolName) => {
155
+ if (!toolName) {
156
+ return 'tool_call';
157
+ }
158
+ switch (toolName.toLowerCase()) {
159
+ case 'write':
160
+ case 'edit':
161
+ case 'multiedit':
162
+ return 'file_edit';
163
+ default:
164
+ return 'tool_call';
165
+ }
166
+ };
167
+ input.forEach((item) => {
168
+ const event = getRecord(item);
169
+ if (!event) {
170
+ return;
171
+ }
172
+ const payload = extractPayload(event);
173
+ const eventType = normalizeEventType(getString(event, ['event_type', 'event', 'type', 'kind'])) ??
174
+ normalizeEventType(getString(payload, ['event_type', 'event', 'type', 'kind']));
175
+ const hookEventName = normalizeHookEventName(getString(event, ['hook_event_name', 'hookEventName']));
176
+ if (!eventType && !hookEventName) {
177
+ return;
178
+ }
179
+ const sessionId = extractSessionId(event) ?? getString(payload, ['session_id', 'sessionId']);
180
+ if (!sessionId) {
181
+ return;
182
+ }
183
+ const base = {
184
+ version: getString(event, ['version']) ?? 'v1',
185
+ project_id: getString(event, ['project_id', 'projectId']),
186
+ session_id: sessionId,
187
+ tool_source: getString(event, ['tool_source', 'toolSource']) ?? 'claude_code',
188
+ timestamp: extractTimestamp(event, payload) ?? new Date().toISOString(),
189
+ };
190
+ const resolvedType = eventType ??
191
+ (hookEventName === 'sessionstart'
192
+ ? 'session_start'
193
+ : hookEventName === 'sessionend'
194
+ ? 'session_end'
195
+ : hookEventName === 'userpromptsubmit' ||
196
+ hookEventName === 'stop' ||
197
+ hookEventName === 'subagentstop' ||
198
+ hookEventName === 'pretooluse' ||
199
+ hookEventName === 'posttooluse' ||
200
+ hookEventName === 'posttoolusefailure' ||
201
+ hookEventName === 'notification'
202
+ ? 'action'
203
+ : undefined);
204
+ if (!resolvedType) {
205
+ return;
206
+ }
207
+ if (resolvedType === 'session_start') {
208
+ output.push({
209
+ ...base,
210
+ event_type: 'session_start',
211
+ payload: normalizeSessionStart(event, payload),
212
+ });
213
+ return;
214
+ }
215
+ if (resolvedType === 'session_end') {
216
+ const reason = getString(event, ['reason']) ?? getString(payload, ['reason']);
217
+ const normalized = normalizeSessionEnd(event, payload);
218
+ const status = reason === 'prompt_input_exit' ? 'cancelled' : normalized.status;
219
+ output.push({
220
+ ...base,
221
+ event_type: 'session_end',
222
+ payload: {
223
+ ...normalized,
224
+ status,
225
+ outcome_reason: reason ?? normalized.outcome_reason,
226
+ },
227
+ });
228
+ return;
229
+ }
230
+ if (resolvedType === 'action') {
231
+ if (hookEventName === 'userpromptsubmit') {
232
+ const prompt = getString(event, ['prompt']) ?? getString(payload, ['prompt']);
233
+ output.push({
234
+ ...base,
235
+ event_type: 'action',
236
+ payload: {
237
+ ...normalizeAction(event, payload, nextSeq(sessionId), 'user_prompt'),
238
+ type: 'system',
239
+ status: 'success',
240
+ request_payload: prompt ? { prompt } : undefined,
241
+ },
242
+ });
243
+ return;
244
+ }
245
+ if (hookEventName === 'notification') {
246
+ const message = getString(event, ['message']) ?? getString(payload, ['message']);
247
+ const notificationType = getString(event, ['notification_type', 'notificationType']) ??
248
+ getString(payload, ['notification_type', 'notificationType']);
249
+ output.push({
250
+ ...base,
251
+ event_type: 'action',
252
+ payload: {
253
+ ...normalizeAction(event, payload, nextSeq(sessionId), 'notification'),
254
+ type: 'system',
255
+ status: 'success',
256
+ request_payload: {
257
+ message,
258
+ notification_type: notificationType,
259
+ },
260
+ },
261
+ });
262
+ return;
263
+ }
264
+ if (hookEventName === 'pretooluse') {
265
+ const toolUseId = getString(event, ['tool_use_id', 'toolUseId']);
266
+ const toolName = getString(event, ['tool_name', 'toolName']);
267
+ const toolInput = getRecord(event.tool_input);
268
+ const startedAt = base.timestamp;
269
+ const filePath = getString(toolInput, ['file_path', 'filePath']);
270
+ const fileOp = mapFileOpFromTool(toolName);
271
+ if (toolUseId) {
272
+ const state = getSessionState(sessionId);
273
+ state.toolUses.set(toolUseId, {
274
+ seq: nextSeq(sessionId),
275
+ startedAt,
276
+ toolName,
277
+ requestPayload: toolInput ?? undefined,
278
+ filePath,
279
+ fileOp,
280
+ });
281
+ return;
282
+ }
283
+ output.push({
284
+ ...base,
285
+ event_type: 'action',
286
+ payload: {
287
+ ...normalizeAction(event, payload, nextSeq(sessionId), toolName),
288
+ type: mapActionTypeFromTool(toolName),
289
+ status: 'success',
290
+ request_payload: toolInput ?? undefined,
291
+ file_path: filePath,
292
+ file_op: fileOp,
293
+ },
294
+ });
295
+ return;
296
+ }
297
+ if (hookEventName === 'posttooluse' || hookEventName === 'posttoolusefailure') {
298
+ const toolUseId = getString(event, ['tool_use_id', 'toolUseId']);
299
+ const toolName = getString(event, ['tool_name', 'toolName']);
300
+ const toolInput = getRecord(event.tool_input);
301
+ const toolResponse = getRecord(event.tool_response);
302
+ const errorMessage = getString(event, ['error']);
303
+ const state = getSessionState(sessionId);
304
+ const existing = toolUseId ? state.toolUses.get(toolUseId) : undefined;
305
+ if (toolUseId) {
306
+ state.toolUses.delete(toolUseId);
307
+ }
308
+ const startedAt = existing?.startedAt ?? base.timestamp;
309
+ const seq = existing?.seq ?? nextSeq(sessionId);
310
+ const filePath = existing?.filePath ?? getString(toolInput, ['file_path', 'filePath']);
311
+ const fileOp = existing?.fileOp ?? mapFileOpFromTool(toolName);
312
+ const status = hookEventName === 'posttoolusefailure' ? 'error' : 'success';
313
+ output.push({
314
+ ...base,
315
+ event_type: 'action',
316
+ payload: {
317
+ ...normalizeAction(event, payload, seq, toolName ?? existing?.toolName),
318
+ type: mapActionTypeFromTool(toolName ?? existing?.toolName),
319
+ status,
320
+ started_at: startedAt,
321
+ ended_at: base.timestamp,
322
+ request_payload: existing?.requestPayload ?? toolInput ?? undefined,
323
+ response_payload: toolResponse ?? undefined,
324
+ error_code: status === 'error' ? 'tool_failure' : undefined,
325
+ error_message: status === 'error' ? (errorMessage ?? 'Tool failed.') : undefined,
326
+ file_path: filePath,
327
+ file_op: fileOp,
328
+ },
329
+ });
330
+ return;
331
+ }
332
+ if (hookEventName === 'stop' || hookEventName === 'subagentstop') {
333
+ output.push({
334
+ ...base,
335
+ event_type: 'action',
336
+ payload: {
337
+ ...normalizeAction(event, payload, nextSeq(sessionId), hookEventName),
338
+ type: 'system',
339
+ status: 'cancelled',
340
+ },
341
+ });
342
+ return;
343
+ }
344
+ output.push({
345
+ ...base,
346
+ event_type: 'action',
347
+ payload: normalizeAction(event, payload, nextSeq(sessionId)),
348
+ });
349
+ return;
350
+ }
351
+ if (resolvedType === 'error') {
352
+ output.push({
353
+ ...base,
354
+ event_type: 'error',
355
+ payload: normalizeError(event, payload),
356
+ });
357
+ }
358
+ });
359
+ return output;
360
+ };
361
+ //# sourceMappingURL=claude-code-transform.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"claude-code-transform.js","sourceRoot":"","sources":["../../src/hooks/claude-code-transform.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,7 @@
1
+ import { runCollectorCli } from '../cli-lib.js';
2
+ import { transformClaudeCodeEvents } from './claude-code-transform.js';
3
+ runCollectorCli({ toolSource: 'claude_code', transform: transformClaudeCodeEvents }).catch((error) => {
4
+ console.error(error instanceof Error ? error.message : error);
5
+ process.exit(1);
6
+ });
7
+ //# sourceMappingURL=claude-code.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"claude-code.js","sourceRoot":"","sources":["../../src/hooks/claude-code.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AAChD,OAAO,EAAE,yBAAyB,EAAE,MAAM,4BAA4B,CAAC;AAEvE,eAAe,CAAC,EAAE,UAAU,EAAE,aAAa,EAAE,SAAS,EAAE,yBAAyB,EAAE,CAAC,CAAC,KAAK,CACxF,CAAC,KAAK,EAAE,EAAE;IACR,OAAO,CAAC,KAAK,CAAC,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;IAC9D,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAClB,CAAC,CACF,CAAC"}
@@ -0,0 +1 @@
1
+ export declare const transformCodexEvents: (input: unknown[]) => unknown[];
@@ -0,0 +1,239 @@
1
+ import { createHash, randomUUID } from 'node:crypto';
2
+ const uuidRegex = /^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/i;
3
+ const toUuid = (hex) => `${hex.slice(0, 8)}-${hex.slice(8, 12)}-${hex.slice(12, 16)}-${hex.slice(16, 20)}-${hex.slice(20, 32)}`;
4
+ const normalizeSessionId = (value) => {
5
+ if (uuidRegex.test(value)) {
6
+ return value;
7
+ }
8
+ const hash = createHash('sha256').update(value, 'utf8').digest('hex');
9
+ return toUuid(hash);
10
+ };
11
+ const getRecord = (value) => value && typeof value === 'object' ? value : null;
12
+ const getString = (obj, keys) => {
13
+ if (!obj) {
14
+ return undefined;
15
+ }
16
+ for (const key of keys) {
17
+ const value = obj[key];
18
+ if (typeof value === 'string' && value.trim().length > 0) {
19
+ return value;
20
+ }
21
+ }
22
+ return undefined;
23
+ };
24
+ const extractPayload = (event) => {
25
+ const payload = getRecord(event.payload) ?? getRecord(event.data);
26
+ if (payload) {
27
+ return payload;
28
+ }
29
+ return event;
30
+ };
31
+ const extractTimestamp = (event, payload) => getString(event, ['timestamp', 'time', 'ts', 'created_at', 'createdAt']) ??
32
+ getString(payload ?? null, ['timestamp', 'time', 'ts', 'created_at', 'createdAt']);
33
+ const normalizeSessionStart = (timestamp) => ({
34
+ started_at: timestamp ?? new Date().toISOString(),
35
+ });
36
+ const normalizeSessionEnd = (timestamp, status, reason) => ({
37
+ ended_at: timestamp ?? new Date().toISOString(),
38
+ status: status ?? 'unknown',
39
+ outcome_reason: reason,
40
+ });
41
+ const normalizeAction = (seq, name, status, startedAt, endedAt) => ({
42
+ id: randomUUID(),
43
+ seq,
44
+ type: 'tool_call',
45
+ name,
46
+ status,
47
+ started_at: startedAt,
48
+ ended_at: endedAt,
49
+ });
50
+ const parseJsonMaybe = (value) => {
51
+ if (!value) {
52
+ return undefined;
53
+ }
54
+ try {
55
+ return JSON.parse(value);
56
+ }
57
+ catch {
58
+ return value;
59
+ }
60
+ };
61
+ export const transformCodexEvents = (input) => {
62
+ const output = [];
63
+ const sessions = new Map();
64
+ let currentSessionId = null;
65
+ const getSession = (sessionId) => {
66
+ const existing = sessions.get(sessionId);
67
+ if (existing) {
68
+ return existing;
69
+ }
70
+ const created = {
71
+ seq: 0,
72
+ calls: new Map(),
73
+ };
74
+ sessions.set(sessionId, created);
75
+ return created;
76
+ };
77
+ const nextSeq = (sessionId) => {
78
+ const state = getSession(sessionId);
79
+ state.seq += 1;
80
+ return state.seq;
81
+ };
82
+ input.forEach((item) => {
83
+ const event = getRecord(item);
84
+ if (!event) {
85
+ return;
86
+ }
87
+ const streamType = getString(event, ['type']);
88
+ const payload = extractPayload(event);
89
+ if (!streamType) {
90
+ return;
91
+ }
92
+ if (streamType === 'session_meta') {
93
+ const sessionIdRaw = getString(payload, ['id']);
94
+ if (!sessionIdRaw) {
95
+ return;
96
+ }
97
+ const sessionId = normalizeSessionId(sessionIdRaw);
98
+ currentSessionId = sessionId;
99
+ output.push({
100
+ version: 'v1',
101
+ session_id: sessionId,
102
+ tool_source: 'codex',
103
+ timestamp: extractTimestamp(event, payload) ?? new Date().toISOString(),
104
+ event_type: 'session_start',
105
+ payload: normalizeSessionStart(extractTimestamp(event, payload) ?? getString(payload, ['timestamp'])),
106
+ });
107
+ return;
108
+ }
109
+ const sessionId = currentSessionId;
110
+ if (!sessionId) {
111
+ return;
112
+ }
113
+ const base = {
114
+ version: 'v1',
115
+ session_id: sessionId,
116
+ tool_source: 'codex',
117
+ timestamp: extractTimestamp(event, payload) ?? new Date().toISOString(),
118
+ };
119
+ if (streamType === 'event_msg') {
120
+ const messageType = getString(payload, ['type']);
121
+ const messageText = getString(payload, ['message', 'text']) ?? getString(payload, ['summary']);
122
+ if (messageType === 'user_message') {
123
+ output.push({
124
+ ...base,
125
+ event_type: 'action',
126
+ payload: {
127
+ ...normalizeAction(nextSeq(sessionId), 'user_prompt', 'success', base.timestamp),
128
+ type: 'system',
129
+ request_payload: messageText ? { prompt: messageText } : undefined,
130
+ },
131
+ });
132
+ return;
133
+ }
134
+ if (messageType === 'agent_message') {
135
+ output.push({
136
+ ...base,
137
+ event_type: 'action',
138
+ payload: {
139
+ ...normalizeAction(nextSeq(sessionId), 'agent_message', 'success', base.timestamp),
140
+ type: 'system',
141
+ response_payload: messageText ? { message: messageText } : undefined,
142
+ },
143
+ });
144
+ return;
145
+ }
146
+ if (messageType === 'agent_reasoning') {
147
+ output.push({
148
+ ...base,
149
+ event_type: 'action',
150
+ payload: {
151
+ ...normalizeAction(nextSeq(sessionId), 'agent_reasoning', 'success', base.timestamp),
152
+ type: 'system',
153
+ response_payload: messageText ? { text: messageText } : undefined,
154
+ },
155
+ });
156
+ return;
157
+ }
158
+ if (messageType === 'token_count') {
159
+ output.push({
160
+ ...base,
161
+ event_type: 'action',
162
+ payload: {
163
+ ...normalizeAction(nextSeq(sessionId), 'token_count', 'success', base.timestamp),
164
+ type: 'system',
165
+ response_payload: payload.info ?? undefined,
166
+ },
167
+ });
168
+ return;
169
+ }
170
+ if (messageType === 'task_complete') {
171
+ output.push({
172
+ ...base,
173
+ event_type: 'session_end',
174
+ payload: normalizeSessionEnd(base.timestamp, 'success', 'task_complete'),
175
+ });
176
+ return;
177
+ }
178
+ return;
179
+ }
180
+ if (streamType === 'response_item') {
181
+ const responseType = getString(payload, ['type']);
182
+ if (responseType === 'function_call') {
183
+ const callId = getString(payload, ['call_id', 'id']);
184
+ const name = getString(payload, ['name']);
185
+ const args = getString(payload, ['arguments']);
186
+ if (!callId) {
187
+ return;
188
+ }
189
+ const state = getSession(sessionId);
190
+ state.calls.set(callId, {
191
+ seq: nextSeq(sessionId),
192
+ startedAt: base.timestamp,
193
+ name,
194
+ args,
195
+ });
196
+ return;
197
+ }
198
+ if (responseType === 'function_call_output') {
199
+ const callId = getString(payload, ['call_id', 'id']);
200
+ if (!callId) {
201
+ return;
202
+ }
203
+ const state = getSession(sessionId);
204
+ const call = state.calls.get(callId);
205
+ state.calls.delete(callId);
206
+ const outputText = getString(payload, ['output']);
207
+ const exitMatch = outputText?.match(/Process exited with code (\d+)/);
208
+ const exitCode = exitMatch ? Number(exitMatch[1]) : 0;
209
+ const status = exitCode === 0 ? 'success' : 'error';
210
+ const requestPayload = parseJsonMaybe(call?.args);
211
+ output.push({
212
+ ...base,
213
+ event_type: 'action',
214
+ payload: {
215
+ ...normalizeAction(call?.seq ?? nextSeq(sessionId), call?.name ?? 'tool_call', status, call?.startedAt ?? base.timestamp, base.timestamp),
216
+ request_payload: requestPayload ?? call?.args ?? undefined,
217
+ response_payload: outputText ?? undefined,
218
+ error_code: status === 'error' ? 'tool_failure' : undefined,
219
+ error_message: status === 'error' ? (outputText ?? 'Tool failed.') : undefined,
220
+ },
221
+ });
222
+ return;
223
+ }
224
+ if (responseType === 'message') {
225
+ output.push({
226
+ ...base,
227
+ event_type: 'action',
228
+ payload: {
229
+ ...normalizeAction(nextSeq(sessionId), 'assistant_message', 'success', base.timestamp),
230
+ type: 'system',
231
+ response_payload: payload.content ?? payload,
232
+ },
233
+ });
234
+ }
235
+ }
236
+ });
237
+ return output;
238
+ };
239
+ //# sourceMappingURL=codex-transform.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"codex-transform.js","sourceRoot":"","sources":["../../src/hooks/codex-transform.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1 @@
1
+ export {};