π File detail
utils/contentArray.ts
π― Use case
This file lives under βutils/β, which covers cross-cutting helpers (shell, tempfiles, settings, messages, process input, β¦). On the API surface it exposes insertBlockAfterToolResults β mainly functions, hooks, or classes. What the file header says: Utility for inserting a block into a content array relative to tool_result blocks. Used by the API layer to position supplementary content (e.g., cache editing directives) correctly within user messages. Placement rules: - If tool_result blocks exist: insert after the last one -.
Generated from folder role, exports, dependency roots, and inline comments β not hand-reviewed for every path.
π§ Inline summary
Utility for inserting a block into a content array relative to tool_result blocks. Used by the API layer to position supplementary content (e.g., cache editing directives) correctly within user messages. Placement rules: - If tool_result blocks exist: insert after the last one - Otherwise: insert before the last block - If the inserted block would be the final element, a text continuation block is appended (some APIs require the prompt not to end with non-text content)
π€ Exports (heuristic)
insertBlockAfterToolResults
π₯οΈ Source preview
/**
* Utility for inserting a block into a content array relative to tool_result
* blocks. Used by the API layer to position supplementary content (e.g.,
* cache editing directives) correctly within user messages.
*
* Placement rules:
* - If tool_result blocks exist: insert after the last one
* - Otherwise: insert before the last block
* - If the inserted block would be the final element, a text continuation
* block is appended (some APIs require the prompt not to end with
* non-text content)
*/
/**
* Inserts a block into the content array after the last tool_result block.
* Mutates the array in place.
*
* @param content - The content array to modify
* @param block - The block to insert
*/
export function insertBlockAfterToolResults(
content: unknown[],
block: unknown,
): void {
// Find position after the last tool_result block
let lastToolResultIndex = -1
for (let i = 0; i < content.length; i++) {
const item = content[i]
if (
item &&
typeof item === 'object' &&
'type' in item &&
(item as { type: string }).type === 'tool_result'
) {
lastToolResultIndex = i
}
}
if (lastToolResultIndex >= 0) {
const insertPos = lastToolResultIndex + 1
content.splice(insertPos, 0, block)
// Append a text continuation if the inserted block is now last
if (insertPos === content.length - 1) {
content.push({ type: 'text', text: '.' })
}
} else {
// No tool_result blocks β insert before the last block
const insertIndex = Math.max(0, content.length - 1)
content.splice(insertIndex, 0, block)
}
}