@amalgm/chat 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 (183) hide show
  1. package/PURPOSE.md +107 -0
  2. package/README.md +41 -0
  3. package/dist/contract/chat-input.d.ts +144 -0
  4. package/dist/contract/chat-input.d.ts.map +1 -0
  5. package/dist/contract/chat-input.js +261 -0
  6. package/dist/contract/chat-input.js.map +1 -0
  7. package/dist/contract/create.d.ts +191 -0
  8. package/dist/contract/create.d.ts.map +1 -0
  9. package/dist/contract/create.js +249 -0
  10. package/dist/contract/create.js.map +1 -0
  11. package/dist/contract/freeze.d.ts +85 -0
  12. package/dist/contract/freeze.d.ts.map +1 -0
  13. package/dist/contract/freeze.js +151 -0
  14. package/dist/contract/freeze.js.map +1 -0
  15. package/dist/contract/harnesses.d.ts +21 -0
  16. package/dist/contract/harnesses.d.ts.map +1 -0
  17. package/dist/contract/harnesses.js +39 -0
  18. package/dist/contract/harnesses.js.map +1 -0
  19. package/dist/contract/index.d.ts +17 -0
  20. package/dist/contract/index.d.ts.map +1 -0
  21. package/dist/contract/index.js +17 -0
  22. package/dist/contract/index.js.map +1 -0
  23. package/dist/contract/input.d.ts +45 -0
  24. package/dist/contract/input.d.ts.map +1 -0
  25. package/dist/contract/input.js +78 -0
  26. package/dist/contract/input.js.map +1 -0
  27. package/dist/contract/models.d.ts +57 -0
  28. package/dist/contract/models.d.ts.map +1 -0
  29. package/dist/contract/models.js +380 -0
  30. package/dist/contract/models.js.map +1 -0
  31. package/dist/contract/payload-merge.d.ts +76 -0
  32. package/dist/contract/payload-merge.d.ts.map +1 -0
  33. package/dist/contract/payload-merge.js +215 -0
  34. package/dist/contract/payload-merge.js.map +1 -0
  35. package/dist/events/constructors.d.ts +53 -0
  36. package/dist/events/constructors.d.ts.map +1 -0
  37. package/dist/events/constructors.js +217 -0
  38. package/dist/events/constructors.js.map +1 -0
  39. package/dist/events/index.d.ts +12 -0
  40. package/dist/events/index.d.ts.map +1 -0
  41. package/dist/events/index.js +12 -0
  42. package/dist/events/index.js.map +1 -0
  43. package/dist/events/schema.d.ts +455 -0
  44. package/dist/events/schema.d.ts.map +1 -0
  45. package/dist/events/schema.js +228 -0
  46. package/dist/events/schema.js.map +1 -0
  47. package/dist/events/tool-display.d.ts +22 -0
  48. package/dist/events/tool-display.d.ts.map +1 -0
  49. package/dist/events/tool-display.js +60 -0
  50. package/dist/events/tool-display.js.map +1 -0
  51. package/dist/events/tool-shape.d.ts +48 -0
  52. package/dist/events/tool-shape.d.ts.map +1 -0
  53. package/dist/events/tool-shape.js +225 -0
  54. package/dist/events/tool-shape.js.map +1 -0
  55. package/dist/index.d.ts +27 -0
  56. package/dist/index.d.ts.map +1 -0
  57. package/dist/index.js +26 -0
  58. package/dist/index.js.map +1 -0
  59. package/dist/normalizers/claude.d.ts +628 -0
  60. package/dist/normalizers/claude.d.ts.map +1 -0
  61. package/dist/normalizers/claude.js +603 -0
  62. package/dist/normalizers/claude.js.map +1 -0
  63. package/dist/normalizers/codex.d.ts +352 -0
  64. package/dist/normalizers/codex.d.ts.map +1 -0
  65. package/dist/normalizers/codex.js +485 -0
  66. package/dist/normalizers/codex.js.map +1 -0
  67. package/dist/normalizers/cursor.d.ts +34 -0
  68. package/dist/normalizers/cursor.d.ts.map +1 -0
  69. package/dist/normalizers/cursor.js +197 -0
  70. package/dist/normalizers/cursor.js.map +1 -0
  71. package/dist/normalizers/index.d.ts +13 -0
  72. package/dist/normalizers/index.d.ts.map +1 -0
  73. package/dist/normalizers/index.js +13 -0
  74. package/dist/normalizers/index.js.map +1 -0
  75. package/dist/normalizers/opencode.d.ts +81 -0
  76. package/dist/normalizers/opencode.d.ts.map +1 -0
  77. package/dist/normalizers/opencode.js +640 -0
  78. package/dist/normalizers/opencode.js.map +1 -0
  79. package/dist/normalizers/pi.d.ts +28 -0
  80. package/dist/normalizers/pi.d.ts.map +1 -0
  81. package/dist/normalizers/pi.js +160 -0
  82. package/dist/normalizers/pi.js.map +1 -0
  83. package/dist/ports.d.ts +14 -0
  84. package/dist/ports.d.ts.map +1 -0
  85. package/dist/ports.js +7 -0
  86. package/dist/ports.js.map +1 -0
  87. package/dist/transcript/index.d.ts +14 -0
  88. package/dist/transcript/index.d.ts.map +1 -0
  89. package/dist/transcript/index.js +12 -0
  90. package/dist/transcript/index.js.map +1 -0
  91. package/dist/transcript/message-reducer.d.ts +167 -0
  92. package/dist/transcript/message-reducer.d.ts.map +1 -0
  93. package/dist/transcript/message-reducer.js +400 -0
  94. package/dist/transcript/message-reducer.js.map +1 -0
  95. package/dist/transcript/part-accumulator.d.ts +24 -0
  96. package/dist/transcript/part-accumulator.d.ts.map +1 -0
  97. package/dist/transcript/part-accumulator.js +30 -0
  98. package/dist/transcript/part-accumulator.js.map +1 -0
  99. package/dist/transcript/tool-display.d.ts +14 -0
  100. package/dist/transcript/tool-display.d.ts.map +1 -0
  101. package/dist/transcript/tool-display.js +125 -0
  102. package/dist/transcript/tool-display.js.map +1 -0
  103. package/dist/transcript/tool-shape.d.ts +34 -0
  104. package/dist/transcript/tool-shape.d.ts.map +1 -0
  105. package/dist/transcript/tool-shape.js +216 -0
  106. package/dist/transcript/tool-shape.js.map +1 -0
  107. package/dist/turns/index.d.ts +11 -0
  108. package/dist/turns/index.d.ts.map +1 -0
  109. package/dist/turns/index.js +11 -0
  110. package/dist/turns/index.js.map +1 -0
  111. package/dist/turns/queries.d.ts +36 -0
  112. package/dist/turns/queries.d.ts.map +1 -0
  113. package/dist/turns/queries.js +37 -0
  114. package/dist/turns/queries.js.map +1 -0
  115. package/dist/turns/replay.d.ts +105 -0
  116. package/dist/turns/replay.d.ts.map +1 -0
  117. package/dist/turns/replay.js +163 -0
  118. package/dist/turns/replay.js.map +1 -0
  119. package/dist/turns/status.d.ts +49 -0
  120. package/dist/turns/status.d.ts.map +1 -0
  121. package/dist/turns/status.js +56 -0
  122. package/dist/turns/status.js.map +1 -0
  123. package/dist/turns/turn-store.d.ts +109 -0
  124. package/dist/turns/turn-store.d.ts.map +1 -0
  125. package/dist/turns/turn-store.js +169 -0
  126. package/dist/turns/turn-store.js.map +1 -0
  127. package/dist/usage/finalize.d.ts +57 -0
  128. package/dist/usage/finalize.d.ts.map +1 -0
  129. package/dist/usage/finalize.js +139 -0
  130. package/dist/usage/finalize.js.map +1 -0
  131. package/dist/usage/index.d.ts +11 -0
  132. package/dist/usage/index.d.ts.map +1 -0
  133. package/dist/usage/index.js +11 -0
  134. package/dist/usage/index.js.map +1 -0
  135. package/dist/usage/model-catalog.d.ts +50 -0
  136. package/dist/usage/model-catalog.d.ts.map +1 -0
  137. package/dist/usage/model-catalog.js +344 -0
  138. package/dist/usage/model-catalog.js.map +1 -0
  139. package/dist/usage/normalize.d.ts +103 -0
  140. package/dist/usage/normalize.d.ts.map +1 -0
  141. package/dist/usage/normalize.js +71 -0
  142. package/dist/usage/normalize.js.map +1 -0
  143. package/dist/usage/ports.d.ts +141 -0
  144. package/dist/usage/ports.d.ts.map +1 -0
  145. package/dist/usage/ports.js +113 -0
  146. package/dist/usage/ports.js.map +1 -0
  147. package/dist/usage/tokens.d.ts +79 -0
  148. package/dist/usage/tokens.d.ts.map +1 -0
  149. package/dist/usage/tokens.js +98 -0
  150. package/dist/usage/tokens.js.map +1 -0
  151. package/dist/warm/client-cache.d.ts +47 -0
  152. package/dist/warm/client-cache.d.ts.map +1 -0
  153. package/dist/warm/client-cache.js +48 -0
  154. package/dist/warm/client-cache.js.map +1 -0
  155. package/dist/warm/envelope-cache.d.ts +79 -0
  156. package/dist/warm/envelope-cache.d.ts.map +1 -0
  157. package/dist/warm/envelope-cache.js +85 -0
  158. package/dist/warm/envelope-cache.js.map +1 -0
  159. package/dist/warm/index.d.ts +16 -0
  160. package/dist/warm/index.d.ts.map +1 -0
  161. package/dist/warm/index.js +11 -0
  162. package/dist/warm/index.js.map +1 -0
  163. package/dist/warm/payload.d.ts +137 -0
  164. package/dist/warm/payload.d.ts.map +1 -0
  165. package/dist/warm/payload.js +112 -0
  166. package/dist/warm/payload.js.map +1 -0
  167. package/dist/warm/revision.d.ts +70 -0
  168. package/dist/warm/revision.d.ts.map +1 -0
  169. package/dist/warm/revision.js +63 -0
  170. package/dist/warm/revision.js.map +1 -0
  171. package/dist/warm/store-policy.d.ts +57 -0
  172. package/dist/warm/store-policy.d.ts.map +1 -0
  173. package/dist/warm/store-policy.js +89 -0
  174. package/dist/warm/store-policy.js.map +1 -0
  175. package/dist/wire/frames.d.ts +208 -0
  176. package/dist/wire/frames.d.ts.map +1 -0
  177. package/dist/wire/frames.js +245 -0
  178. package/dist/wire/frames.js.map +1 -0
  179. package/dist/wire/index.d.ts +7 -0
  180. package/dist/wire/index.d.ts.map +1 -0
  181. package/dist/wire/index.js +7 -0
  182. package/dist/wire/index.js.map +1 -0
  183. package/package.json +72 -0
@@ -0,0 +1,628 @@
1
+ /**
2
+ * Claude Code (Agent SDK) normalizer — engine
3
+ * `chat-core/normalizers/claude.js` (540 lines) ported byte-exact.
4
+ *
5
+ * The engine module calls the event constructors from `../events` directly;
6
+ * here the host builds an {@link EventConstructors} instance (axiom 7) and
7
+ * `createClaudeNormalizer(events)` closes the stateful entry points over it.
8
+ * The usage helpers (`usageFromClaude`, `usageFromClaudeModelUsage`,
9
+ * `usageRecordsFromClaudeResult`) and the pure string helpers
10
+ * (`stableStringify`, `stringifyClaudeContent`) construct no events, so they
11
+ * are also exported at module level.
12
+ *
13
+ * Note: `result` message handling (usage records emission, cost, error, done)
14
+ * lives in the engine ADAPTER (`chat-core/adapters/claude.js`), not here —
15
+ * this module only provides `usageRecordsFromClaudeResult` for it.
16
+ */
17
+ import type { EventConstructors } from '../events/index.js';
18
+ import { type NormalizedUsage } from '../usage/index.js';
19
+ type AnyRecord = Record<string, any>;
20
+ /**
21
+ * The mutable per-session state threaded through `normalizeClaudeMessage`.
22
+ * The engine lazily initializes every field (`ensureClaudeToolState` /
23
+ * `ensureClaudeTextState`), so all fields are optional and the object may
24
+ * start empty.
25
+ */
26
+ export interface ClaudeNormalizerState {
27
+ providerSessionId?: string | null;
28
+ contextLimit?: number;
29
+ claudeTools?: Map<string, AnyRecord>;
30
+ claudeToolsByIndex?: Map<number, AnyRecord>;
31
+ claudeStartedTools?: Set<string>;
32
+ claudeCompletedTools?: Set<string>;
33
+ claudeTextByIndex?: Map<string, string>;
34
+ claudeReasoningByIndex?: Map<string, string>;
35
+ claudeBlockIndexByType?: Map<string, number>;
36
+ claudeCurrentMessageKey?: string | null;
37
+ claudeUsageSnapshotFingerprints?: Set<string>;
38
+ [key: string]: any;
39
+ }
40
+ /** Engine claude.js:10-24. Non-cached-input semantics ride `normalizeUsage`. */
41
+ export declare function usageFromClaude(usage?: AnyRecord, contextLimit?: unknown, options?: AnyRecord): NormalizedUsage;
42
+ /** Engine claude.js:26-40. SDK `modelUsage` buckets (camelCase, incl. contextWindow). */
43
+ export declare function usageFromClaudeModelUsage(modelUsage?: AnyRecord, contextLimit?: unknown, options?: AnyRecord): NormalizedUsage;
44
+ /**
45
+ * Engine claude.js:93-121. Billing records from the SDK `result` message
46
+ * (or a bare usage record). Precedence: `modelUsage` (exact aggregate) over
47
+ * `result.usage`; latest iteration total feeds `inputContextSize` (the
48
+ * context circle) either way.
49
+ */
50
+ export declare function usageRecordsFromClaudeResult(resultOrUsage?: AnyRecord, contextLimit?: unknown): NormalizedUsage[];
51
+ /** Engine claude.js:202-206. Deterministic JSON with sorted object keys — dedup fingerprints. */
52
+ export declare function stableStringify(value: unknown): string;
53
+ /** Engine claude.js:221-248. Flattens SDK content (string | blocks | record) to display text. */
54
+ export declare function stringifyClaudeContent(content: unknown): string;
55
+ /**
56
+ * Build the engine's Claude normalizer export set over an injected
57
+ * {@link EventConstructors} instance. Function-for-function parity with
58
+ * engine `chat-core/normalizers/claude.js` `module.exports`.
59
+ */
60
+ export declare function createClaudeNormalizer(events: EventConstructors): {
61
+ normalizeClaudeContentBlock: (block: AnyRecord | null | undefined, providerSessionId?: unknown, state?: ClaudeNormalizerState | null, raw?: AnyRecord | undefined) => ({
62
+ ts: number;
63
+ type: "text.delta";
64
+ text: string;
65
+ providerSessionId?: string | null | undefined;
66
+ raw?: {
67
+ source: string;
68
+ method?: string | undefined;
69
+ payload?: unknown;
70
+ } | undefined;
71
+ streamKind?: "text" | undefined;
72
+ } | {
73
+ ts: number;
74
+ type: "text.boundary";
75
+ providerSessionId?: string | null | undefined;
76
+ raw?: {
77
+ source: string;
78
+ method?: string | undefined;
79
+ payload?: unknown;
80
+ } | undefined;
81
+ streamKind?: "text" | undefined;
82
+ itemId?: string | undefined;
83
+ reason?: string | undefined;
84
+ } | {
85
+ ts: number;
86
+ type: "reasoning.delta";
87
+ text: string;
88
+ providerSessionId?: string | null | undefined;
89
+ raw?: {
90
+ source: string;
91
+ method?: string | undefined;
92
+ payload?: unknown;
93
+ } | undefined;
94
+ streamKind?: "reasoning" | "plan" | undefined;
95
+ } | {
96
+ ts: number;
97
+ type: "tool.started";
98
+ toolCallId: string;
99
+ toolName: string;
100
+ input: Record<string, unknown>;
101
+ providerSessionId?: string | null | undefined;
102
+ raw?: {
103
+ source: string;
104
+ method?: string | undefined;
105
+ payload?: unknown;
106
+ } | undefined;
107
+ name?: string | undefined;
108
+ kind?: "unknown" | "web_search" | "browser" | "file_read" | "file_write" | "file_edit" | "bash" | "subagent" | "mcp" | "question" | "todo" | "read" | "edit" | "delete" | "move" | "search" | "execute" | "think" | "fetch" | "switch_mode" | "other" | undefined;
109
+ title?: string | undefined;
110
+ detail?: string | undefined;
111
+ metadata?: Record<string, unknown> | undefined;
112
+ timing?: {
113
+ [x: string]: unknown;
114
+ startedAt?: string | number | undefined;
115
+ completedAt?: string | number | undefined;
116
+ elapsedMs?: number | undefined;
117
+ } | undefined;
118
+ data?: unknown;
119
+ itemType?: "tool" | undefined;
120
+ } | {
121
+ ts: number;
122
+ type: "tool.updated";
123
+ toolCallId: string;
124
+ providerSessionId?: string | null | undefined;
125
+ raw?: {
126
+ source: string;
127
+ method?: string | undefined;
128
+ payload?: unknown;
129
+ } | undefined;
130
+ toolName?: string | undefined;
131
+ name?: string | undefined;
132
+ kind?: "unknown" | "web_search" | "browser" | "file_read" | "file_write" | "file_edit" | "bash" | "subagent" | "mcp" | "question" | "todo" | "read" | "edit" | "delete" | "move" | "search" | "execute" | "think" | "fetch" | "switch_mode" | "other" | undefined;
133
+ title?: string | undefined;
134
+ detail?: string | undefined;
135
+ inputDelta?: Record<string, unknown> | undefined;
136
+ outputDelta?: unknown;
137
+ output?: unknown;
138
+ error?: {
139
+ [x: string]: unknown;
140
+ message: string;
141
+ code?: string | undefined;
142
+ details?: unknown;
143
+ } | undefined;
144
+ metadata?: Record<string, unknown> | undefined;
145
+ timing?: {
146
+ [x: string]: unknown;
147
+ startedAt?: string | number | undefined;
148
+ completedAt?: string | number | undefined;
149
+ elapsedMs?: number | undefined;
150
+ } | undefined;
151
+ data?: unknown;
152
+ status?: "error" | "in_progress" | "completed" | "failed" | undefined;
153
+ itemType?: "tool" | undefined;
154
+ } | {
155
+ ts: number;
156
+ type: "tool.completed";
157
+ toolCallId: string;
158
+ isError: boolean;
159
+ providerSessionId?: string | null | undefined;
160
+ raw?: {
161
+ source: string;
162
+ method?: string | undefined;
163
+ payload?: unknown;
164
+ } | undefined;
165
+ toolName?: string | undefined;
166
+ name?: string | undefined;
167
+ kind?: "unknown" | "web_search" | "browser" | "file_read" | "file_write" | "file_edit" | "bash" | "subagent" | "mcp" | "question" | "todo" | "read" | "edit" | "delete" | "move" | "search" | "execute" | "think" | "fetch" | "switch_mode" | "other" | undefined;
168
+ title?: string | undefined;
169
+ detail?: string | undefined;
170
+ input?: Record<string, unknown> | undefined;
171
+ output?: unknown;
172
+ result?: unknown;
173
+ error?: {
174
+ [x: string]: unknown;
175
+ message: string;
176
+ code?: string | undefined;
177
+ details?: unknown;
178
+ } | undefined;
179
+ metadata?: Record<string, unknown> | undefined;
180
+ timing?: {
181
+ [x: string]: unknown;
182
+ startedAt?: string | number | undefined;
183
+ completedAt?: string | number | undefined;
184
+ elapsedMs?: number | undefined;
185
+ } | undefined;
186
+ data?: unknown;
187
+ itemType?: "tool" | undefined;
188
+ } | {
189
+ ts: number;
190
+ type: "usage.final";
191
+ usage: {
192
+ tokenList: {
193
+ input: number;
194
+ output: number;
195
+ cacheRead: number;
196
+ cacheWrite: number;
197
+ thought: number;
198
+ total: number;
199
+ };
200
+ cumulativeTokenList: {
201
+ input: number;
202
+ output: number;
203
+ cacheRead: number;
204
+ cacheWrite: number;
205
+ thought: number;
206
+ total: number;
207
+ } | null;
208
+ previousCumulativeTokenList: {
209
+ input: number;
210
+ output: number;
211
+ cacheRead: number;
212
+ cacheWrite: number;
213
+ thought: number;
214
+ total: number;
215
+ } | null;
216
+ inputTokens: number;
217
+ outputTokens: number;
218
+ cacheReadTokens: number;
219
+ cacheWriteTokens: number;
220
+ thoughtTokens: number;
221
+ inputContextSize: number;
222
+ contextUsedTokens: number | null;
223
+ contextLimit: number | null;
224
+ usedTokens: number | null;
225
+ lastUsedTokens: number | null;
226
+ maxTokens: number | null;
227
+ totalProcessedTokens: number | null;
228
+ costUsd: number | null;
229
+ marketCostUsd: number | null;
230
+ operation: string;
231
+ billable: boolean;
232
+ source: string;
233
+ exact: boolean;
234
+ };
235
+ providerSessionId?: string | null | undefined;
236
+ raw?: {
237
+ source: string;
238
+ method?: string | undefined;
239
+ payload?: unknown;
240
+ } | undefined;
241
+ } | {
242
+ ts: number;
243
+ type: "compaction.started";
244
+ trigger: "auto" | "manual" | "model_triggered";
245
+ providerSessionId?: string | null | undefined;
246
+ raw?: {
247
+ source: string;
248
+ method?: string | undefined;
249
+ payload?: unknown;
250
+ } | undefined;
251
+ } | {
252
+ ts: number;
253
+ type: "compaction.finished";
254
+ trigger: "auto" | "manual" | "model_triggered";
255
+ providerSessionId?: string | null | undefined;
256
+ raw?: {
257
+ source: string;
258
+ method?: string | undefined;
259
+ payload?: unknown;
260
+ } | undefined;
261
+ preTokens?: number | null | undefined;
262
+ postTokens?: number | null | undefined;
263
+ durationMs?: number | null | undefined;
264
+ } | {
265
+ ts: number;
266
+ type: "warning";
267
+ message: string;
268
+ providerSessionId?: string | null | undefined;
269
+ raw?: {
270
+ source: string;
271
+ method?: string | undefined;
272
+ payload?: unknown;
273
+ } | undefined;
274
+ requestedModel?: string | undefined;
275
+ } | {
276
+ ts: number;
277
+ type: "error";
278
+ message: string;
279
+ providerSessionId?: string | null | undefined;
280
+ raw?: {
281
+ source: string;
282
+ method?: string | undefined;
283
+ payload?: unknown;
284
+ } | undefined;
285
+ } | {
286
+ ts: number;
287
+ type: "done";
288
+ stopReason: string;
289
+ providerSessionId?: string | null | undefined;
290
+ raw?: {
291
+ source: string;
292
+ method?: string | undefined;
293
+ payload?: unknown;
294
+ } | undefined;
295
+ usage?: {
296
+ tokenList: {
297
+ input: number;
298
+ output: number;
299
+ cacheRead: number;
300
+ cacheWrite: number;
301
+ thought: number;
302
+ total: number;
303
+ };
304
+ cumulativeTokenList: {
305
+ input: number;
306
+ output: number;
307
+ cacheRead: number;
308
+ cacheWrite: number;
309
+ thought: number;
310
+ total: number;
311
+ } | null;
312
+ previousCumulativeTokenList: {
313
+ input: number;
314
+ output: number;
315
+ cacheRead: number;
316
+ cacheWrite: number;
317
+ thought: number;
318
+ total: number;
319
+ } | null;
320
+ inputTokens: number;
321
+ outputTokens: number;
322
+ cacheReadTokens: number;
323
+ cacheWriteTokens: number;
324
+ thoughtTokens: number;
325
+ inputContextSize: number;
326
+ contextUsedTokens: number | null;
327
+ contextLimit: number | null;
328
+ usedTokens: number | null;
329
+ lastUsedTokens: number | null;
330
+ maxTokens: number | null;
331
+ totalProcessedTokens: number | null;
332
+ costUsd: number | null;
333
+ marketCostUsd: number | null;
334
+ operation: string;
335
+ billable: boolean;
336
+ source: string;
337
+ exact: boolean;
338
+ } | undefined;
339
+ })[];
340
+ normalizeClaudeMessage: (message: AnyRecord | null | undefined, state?: ClaudeNormalizerState | null) => ({
341
+ ts: number;
342
+ type: "text.delta";
343
+ text: string;
344
+ providerSessionId?: string | null | undefined;
345
+ raw?: {
346
+ source: string;
347
+ method?: string | undefined;
348
+ payload?: unknown;
349
+ } | undefined;
350
+ streamKind?: "text" | undefined;
351
+ } | {
352
+ ts: number;
353
+ type: "text.boundary";
354
+ providerSessionId?: string | null | undefined;
355
+ raw?: {
356
+ source: string;
357
+ method?: string | undefined;
358
+ payload?: unknown;
359
+ } | undefined;
360
+ streamKind?: "text" | undefined;
361
+ itemId?: string | undefined;
362
+ reason?: string | undefined;
363
+ } | {
364
+ ts: number;
365
+ type: "reasoning.delta";
366
+ text: string;
367
+ providerSessionId?: string | null | undefined;
368
+ raw?: {
369
+ source: string;
370
+ method?: string | undefined;
371
+ payload?: unknown;
372
+ } | undefined;
373
+ streamKind?: "reasoning" | "plan" | undefined;
374
+ } | {
375
+ ts: number;
376
+ type: "tool.started";
377
+ toolCallId: string;
378
+ toolName: string;
379
+ input: Record<string, unknown>;
380
+ providerSessionId?: string | null | undefined;
381
+ raw?: {
382
+ source: string;
383
+ method?: string | undefined;
384
+ payload?: unknown;
385
+ } | undefined;
386
+ name?: string | undefined;
387
+ kind?: "unknown" | "web_search" | "browser" | "file_read" | "file_write" | "file_edit" | "bash" | "subagent" | "mcp" | "question" | "todo" | "read" | "edit" | "delete" | "move" | "search" | "execute" | "think" | "fetch" | "switch_mode" | "other" | undefined;
388
+ title?: string | undefined;
389
+ detail?: string | undefined;
390
+ metadata?: Record<string, unknown> | undefined;
391
+ timing?: {
392
+ [x: string]: unknown;
393
+ startedAt?: string | number | undefined;
394
+ completedAt?: string | number | undefined;
395
+ elapsedMs?: number | undefined;
396
+ } | undefined;
397
+ data?: unknown;
398
+ itemType?: "tool" | undefined;
399
+ } | {
400
+ ts: number;
401
+ type: "tool.updated";
402
+ toolCallId: string;
403
+ providerSessionId?: string | null | undefined;
404
+ raw?: {
405
+ source: string;
406
+ method?: string | undefined;
407
+ payload?: unknown;
408
+ } | undefined;
409
+ toolName?: string | undefined;
410
+ name?: string | undefined;
411
+ kind?: "unknown" | "web_search" | "browser" | "file_read" | "file_write" | "file_edit" | "bash" | "subagent" | "mcp" | "question" | "todo" | "read" | "edit" | "delete" | "move" | "search" | "execute" | "think" | "fetch" | "switch_mode" | "other" | undefined;
412
+ title?: string | undefined;
413
+ detail?: string | undefined;
414
+ inputDelta?: Record<string, unknown> | undefined;
415
+ outputDelta?: unknown;
416
+ output?: unknown;
417
+ error?: {
418
+ [x: string]: unknown;
419
+ message: string;
420
+ code?: string | undefined;
421
+ details?: unknown;
422
+ } | undefined;
423
+ metadata?: Record<string, unknown> | undefined;
424
+ timing?: {
425
+ [x: string]: unknown;
426
+ startedAt?: string | number | undefined;
427
+ completedAt?: string | number | undefined;
428
+ elapsedMs?: number | undefined;
429
+ } | undefined;
430
+ data?: unknown;
431
+ status?: "error" | "in_progress" | "completed" | "failed" | undefined;
432
+ itemType?: "tool" | undefined;
433
+ } | {
434
+ ts: number;
435
+ type: "tool.completed";
436
+ toolCallId: string;
437
+ isError: boolean;
438
+ providerSessionId?: string | null | undefined;
439
+ raw?: {
440
+ source: string;
441
+ method?: string | undefined;
442
+ payload?: unknown;
443
+ } | undefined;
444
+ toolName?: string | undefined;
445
+ name?: string | undefined;
446
+ kind?: "unknown" | "web_search" | "browser" | "file_read" | "file_write" | "file_edit" | "bash" | "subagent" | "mcp" | "question" | "todo" | "read" | "edit" | "delete" | "move" | "search" | "execute" | "think" | "fetch" | "switch_mode" | "other" | undefined;
447
+ title?: string | undefined;
448
+ detail?: string | undefined;
449
+ input?: Record<string, unknown> | undefined;
450
+ output?: unknown;
451
+ result?: unknown;
452
+ error?: {
453
+ [x: string]: unknown;
454
+ message: string;
455
+ code?: string | undefined;
456
+ details?: unknown;
457
+ } | undefined;
458
+ metadata?: Record<string, unknown> | undefined;
459
+ timing?: {
460
+ [x: string]: unknown;
461
+ startedAt?: string | number | undefined;
462
+ completedAt?: string | number | undefined;
463
+ elapsedMs?: number | undefined;
464
+ } | undefined;
465
+ data?: unknown;
466
+ itemType?: "tool" | undefined;
467
+ } | {
468
+ ts: number;
469
+ type: "usage.final";
470
+ usage: {
471
+ tokenList: {
472
+ input: number;
473
+ output: number;
474
+ cacheRead: number;
475
+ cacheWrite: number;
476
+ thought: number;
477
+ total: number;
478
+ };
479
+ cumulativeTokenList: {
480
+ input: number;
481
+ output: number;
482
+ cacheRead: number;
483
+ cacheWrite: number;
484
+ thought: number;
485
+ total: number;
486
+ } | null;
487
+ previousCumulativeTokenList: {
488
+ input: number;
489
+ output: number;
490
+ cacheRead: number;
491
+ cacheWrite: number;
492
+ thought: number;
493
+ total: number;
494
+ } | null;
495
+ inputTokens: number;
496
+ outputTokens: number;
497
+ cacheReadTokens: number;
498
+ cacheWriteTokens: number;
499
+ thoughtTokens: number;
500
+ inputContextSize: number;
501
+ contextUsedTokens: number | null;
502
+ contextLimit: number | null;
503
+ usedTokens: number | null;
504
+ lastUsedTokens: number | null;
505
+ maxTokens: number | null;
506
+ totalProcessedTokens: number | null;
507
+ costUsd: number | null;
508
+ marketCostUsd: number | null;
509
+ operation: string;
510
+ billable: boolean;
511
+ source: string;
512
+ exact: boolean;
513
+ };
514
+ providerSessionId?: string | null | undefined;
515
+ raw?: {
516
+ source: string;
517
+ method?: string | undefined;
518
+ payload?: unknown;
519
+ } | undefined;
520
+ } | {
521
+ ts: number;
522
+ type: "compaction.started";
523
+ trigger: "auto" | "manual" | "model_triggered";
524
+ providerSessionId?: string | null | undefined;
525
+ raw?: {
526
+ source: string;
527
+ method?: string | undefined;
528
+ payload?: unknown;
529
+ } | undefined;
530
+ } | {
531
+ ts: number;
532
+ type: "compaction.finished";
533
+ trigger: "auto" | "manual" | "model_triggered";
534
+ providerSessionId?: string | null | undefined;
535
+ raw?: {
536
+ source: string;
537
+ method?: string | undefined;
538
+ payload?: unknown;
539
+ } | undefined;
540
+ preTokens?: number | null | undefined;
541
+ postTokens?: number | null | undefined;
542
+ durationMs?: number | null | undefined;
543
+ } | {
544
+ ts: number;
545
+ type: "warning";
546
+ message: string;
547
+ providerSessionId?: string | null | undefined;
548
+ raw?: {
549
+ source: string;
550
+ method?: string | undefined;
551
+ payload?: unknown;
552
+ } | undefined;
553
+ requestedModel?: string | undefined;
554
+ } | {
555
+ ts: number;
556
+ type: "error";
557
+ message: string;
558
+ providerSessionId?: string | null | undefined;
559
+ raw?: {
560
+ source: string;
561
+ method?: string | undefined;
562
+ payload?: unknown;
563
+ } | undefined;
564
+ } | {
565
+ ts: number;
566
+ type: "done";
567
+ stopReason: string;
568
+ providerSessionId?: string | null | undefined;
569
+ raw?: {
570
+ source: string;
571
+ method?: string | undefined;
572
+ payload?: unknown;
573
+ } | undefined;
574
+ usage?: {
575
+ tokenList: {
576
+ input: number;
577
+ output: number;
578
+ cacheRead: number;
579
+ cacheWrite: number;
580
+ thought: number;
581
+ total: number;
582
+ };
583
+ cumulativeTokenList: {
584
+ input: number;
585
+ output: number;
586
+ cacheRead: number;
587
+ cacheWrite: number;
588
+ thought: number;
589
+ total: number;
590
+ } | null;
591
+ previousCumulativeTokenList: {
592
+ input: number;
593
+ output: number;
594
+ cacheRead: number;
595
+ cacheWrite: number;
596
+ thought: number;
597
+ total: number;
598
+ } | null;
599
+ inputTokens: number;
600
+ outputTokens: number;
601
+ cacheReadTokens: number;
602
+ cacheWriteTokens: number;
603
+ thoughtTokens: number;
604
+ inputContextSize: number;
605
+ contextUsedTokens: number | null;
606
+ contextLimit: number | null;
607
+ usedTokens: number | null;
608
+ lastUsedTokens: number | null;
609
+ maxTokens: number | null;
610
+ totalProcessedTokens: number | null;
611
+ costUsd: number | null;
612
+ marketCostUsd: number | null;
613
+ operation: string;
614
+ billable: boolean;
615
+ source: string;
616
+ exact: boolean;
617
+ } | undefined;
618
+ })[];
619
+ stableStringify: typeof stableStringify;
620
+ stringifyClaudeContent: typeof stringifyClaudeContent;
621
+ usageRecordsFromClaudeResult: typeof usageRecordsFromClaudeResult;
622
+ usageFromClaude: typeof usageFromClaude;
623
+ usageFromClaudeModelUsage: typeof usageFromClaudeModelUsage;
624
+ };
625
+ /** The engine `chat-core/normalizers/claude.js` export set, closed over injected constructors. */
626
+ export type ClaudeNormalizer = ReturnType<typeof createClaudeNormalizer>;
627
+ export {};
628
+ //# sourceMappingURL=claude.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"claude.d.ts","sourceRoot":"","sources":["../../src/normalizers/claude.ts"],"names":[],"mappings":"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"}