( messages: readonly DeepImmutable<SDKMessage>[], )
| 24 | import { getPlan } from '../plans.js' |
| 25 | |
| 26 | export function toInternalMessages( |
| 27 | messages: readonly DeepImmutable<SDKMessage>[], |
| 28 | ): Message[] { |
| 29 | return messages.flatMap(message => { |
| 30 | switch (message.type) { |
| 31 | case 'assistant': |
| 32 | return [ |
| 33 | { |
| 34 | type: 'assistant', |
| 35 | message: message.message, |
| 36 | uuid: message.uuid, |
| 37 | requestId: undefined, |
| 38 | timestamp: new Date().toISOString(), |
| 39 | } as Message, |
| 40 | ] |
| 41 | case 'user': |
| 42 | return [ |
| 43 | { |
| 44 | type: 'user', |
| 45 | message: message.message, |
| 46 | uuid: message.uuid ?? randomUUID(), |
| 47 | timestamp: message.timestamp ?? new Date().toISOString(), |
| 48 | isMeta: message.isSynthetic, |
| 49 | } as Message, |
| 50 | ] |
| 51 | case 'system': |
| 52 | // Handle compact boundary messages |
| 53 | if (message.subtype === 'compact_boundary') { |
| 54 | const compactMsg = message |
| 55 | return [ |
| 56 | { |
| 57 | type: 'system', |
| 58 | content: 'Conversation compacted', |
| 59 | level: 'info', |
| 60 | subtype: 'compact_boundary', |
| 61 | compactMetadata: fromSDKCompactMetadata( |
| 62 | compactMsg.compact_metadata, |
| 63 | ), |
| 64 | uuid: message.uuid, |
| 65 | timestamp: new Date().toISOString(), |
| 66 | }, |
| 67 | ] |
| 68 | } |
| 69 | return [] |
| 70 | default: |
| 71 | return [] |
| 72 | } |
| 73 | }) |
| 74 | } |
| 75 | |
| 76 | type SDKCompactMetadata = SDKCompactBoundaryMessage['compact_metadata'] |
| 77 |
no test coverage detected