( params: BetaMessageStreamParams, querySource?: QuerySource, )
| 329 | * Captures the last API request for inclusion in bug reports. |
| 330 | */ |
| 331 | export function captureAPIRequest( |
| 332 | params: BetaMessageStreamParams, |
| 333 | querySource?: QuerySource, |
| 334 | ): void { |
| 335 | // startsWith, not exact match — users with non-default output styles get |
| 336 | // variants like 'repl_main_thread:outputStyle:Explanatory' (querySource.ts). |
| 337 | if (!querySource || !querySource.startsWith('repl_main_thread')) { |
| 338 | return |
| 339 | } |
| 340 | |
| 341 | // Store params WITHOUT messages to avoid retaining the entire conversation |
| 342 | // for all users. Messages are already persisted to the transcript file and |
| 343 | // available via React state. |
| 344 | const { messages, ...paramsWithoutMessages } = params |
| 345 | setLastAPIRequest(paramsWithoutMessages) |
| 346 | // For ant users only: also keep a reference to the final messages array so |
| 347 | // /share's serialized_conversation.json captures the exact post-compaction, |
| 348 | // CLAUDE.md-injected payload the API received. Overwritten each turn; |
| 349 | // dumpPrompts.ts already holds 5 full request bodies for ants, so this is |
| 350 | // not a new retention class. |
| 351 | setLastAPIRequestMessages(process.env.USER_TYPE === 'ant' ? messages : null) |
| 352 | } |
| 353 | |
| 354 | /** |
| 355 | * Reset error log state for testing purposes only. |
no test coverage detected