| 12345678910111213141516171819202122232425262728293031323334353637383940 |
- import type {
- AssistantMessage,
- AttachmentMessage,
- SystemMessage,
- UserMessage,
- } from 'src/types/message.js'
- /**
- * Tags user messages with a sourceToolUseID so they stay transient until the tool resolves.
- * This prevents the "is running" message from being duplicated in the UI.
- */
- export function tagMessagesWithToolUseID(
- messages: (UserMessage | AttachmentMessage | SystemMessage)[],
- toolUseID: string | undefined,
- ): (UserMessage | AttachmentMessage | SystemMessage)[] {
- if (!toolUseID) {
- return messages
- }
- return messages.map(m => {
- if (m.type === 'user') {
- return { ...m, sourceToolUseID: toolUseID }
- }
- return m
- })
- }
- /**
- * Extracts the tool use ID from a parent message for a given tool name.
- */
- export function getToolUseIDFromParentMessage(
- parentMessage: AssistantMessage,
- toolName: string,
- ): string | undefined {
- const toolUseBlock = parentMessage.message.content.find(
- block => block.type === 'tool_use' && block.name === toolName,
- )
- return toolUseBlock && toolUseBlock.type === 'tool_use'
- ? toolUseBlock.id
- : undefined
- }
|