// Agentic tool call tag markers export const AGENTIC_TAGS = { TOOL_CALL_START: '<<>>', TOOL_CALL_END: '<<>>', TOOL_NAME_PREFIX: '<<>>', TOOL_ARGS_END: '<<>>', TAG_SUFFIX: '>>>' } as const; export const REASONING_TAGS = { START: '<<>>', END: '<<>>' } as const; // Regex patterns for parsing agentic content export const AGENTIC_REGEX = { // Matches completed tool calls (with END marker) COMPLETED_TOOL_CALL: /<<>>\n<<>>\n<<>>([\s\S]*?)<<>>([\s\S]*?)<<>>/g, // Matches pending tool call (has NAME and ARGS but no END) PENDING_TOOL_CALL: /<<>>\n<<>>\n<<>>([\s\S]*?)<<>>([\s\S]*)$/, // Matches partial tool call (has START and NAME, ARGS still streaming) PARTIAL_WITH_NAME: /<<>>\n<<>>\n<<>>([\s\S]*)$/, // Matches early tool call (just START marker) EARLY_MATCH: /<<>>([\s\S]*)$/, // Matches partial marker at end of content PARTIAL_MARKER: /<<<[A-Za-z_]*$/, // Matches reasoning content blocks (including tags) REASONING_BLOCK: /<<>>[\s\S]*?<<>>/g, // Matches an opening reasoning tag and any remaining content (unterminated) REASONING_OPEN: /<<>>[\s\S]*$/, // Matches tool name inside content TOOL_NAME_EXTRACT: /<<]+)>>>/ } as const;