@codehz/ai 0.1.6 → 0.1.7

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.mjs CHANGED
@@ -1539,78 +1539,86 @@ var MessagesAdapter = class extends AdapterBase {
1539
1539
  buildRequest(request) {
1540
1540
  const messages = [];
1541
1541
  let systemPrompt;
1542
+ let pendingToolResultMessage;
1542
1543
  if (request.instructions) systemPrompt = instructionsToMessagesText(request.instructions);
1543
- for (const item of request.input) switch (item.type) {
1544
- case "message": {
1545
- const role = item.role === "user" ? "user" : "assistant";
1546
- const supportedContent = ensureMessagesTextBlocks(item.content, `input message (${item.role}) content`);
1547
- if (supportedContent.length === 1 && supportedContent[0]?.type === "text") messages.push({
1548
- role,
1549
- content: supportedContent[0].text
1550
- });
1551
- else messages.push({
1552
- role,
1553
- content: supportedContent.map(canonicalToMessagesBlock)
1554
- });
1555
- break;
1556
- }
1557
- case "tool_call": {
1558
- const lastMsg = messages[messages.length - 1];
1559
- const toolBlock = {
1560
- type: "tool_use",
1561
- id: item.id,
1562
- name: item.name,
1563
- input: item.argumentsJson ?? parseToolUseInput(item.argumentsText)
1564
- };
1565
- if (lastMsg && lastMsg.role === "assistant" && typeof lastMsg.content !== "string") lastMsg.content.push(toolBlock);
1566
- else messages.push({
1567
- role: "assistant",
1568
- content: [toolBlock]
1569
- });
1570
- break;
1571
- }
1572
- case "tool_result": {
1573
- assertMessagesToolResultOutcome(item.outcome);
1574
- const content = ensureMessagesTextBlocks(item.content, `tool_result ${item.callId} content`).map(blockToText).join("\n");
1575
- const block = {
1576
- type: "tool_result",
1577
- tool_use_id: item.callId,
1578
- content,
1579
- is_error: item.outcome === "error"
1580
- };
1581
- messages.push({
1582
- role: "user",
1583
- content: [block]
1584
- });
1585
- break;
1586
- }
1587
- case "reasoning": {
1588
- const block = {
1589
- type: "thinking",
1590
- thinking: contentBlocksToText(ensureMessagesReasoningBlocks(item.content, "reasoning content"))
1591
- };
1592
- const lastMsg = messages[messages.length - 1];
1593
- if (lastMsg && lastMsg.role === "assistant" && typeof lastMsg.content !== "string") lastMsg.content.push(block);
1594
- else messages.push({
1595
- role: "assistant",
1596
- content: [block]
1597
- });
1598
- break;
1599
- }
1600
- case "opaque":
1601
- if (item.purpose === "replay" && typeof item.payload === "object" && item.payload !== null) {
1602
- const payload = item.payload;
1603
- if (payload.role === "assistant" && Array.isArray(payload.content)) {
1604
- if (payload.content.every((b) => typeof b === "object" && b !== null && "type" in b && (b.type === "text" || b.type === "thinking" || b.type === "redacted_thinking" || b.type === "tool_use" || b.type === "tool_result"))) {
1605
- rollbackTrailingAssistantMessages$2(messages);
1606
- messages.push({
1607
- role: "assistant",
1608
- content: payload.content
1609
- });
1610
- }
1544
+ for (const item of request.input) {
1545
+ if (item.type !== "tool_result") pendingToolResultMessage = void 0;
1546
+ switch (item.type) {
1547
+ case "message": {
1548
+ const role = item.role === "user" ? "user" : "assistant";
1549
+ const supportedContent = ensureMessagesTextBlocks(item.content, `input message (${item.role}) content`);
1550
+ if (supportedContent.length === 1 && supportedContent[0]?.type === "text") messages.push({
1551
+ role,
1552
+ content: supportedContent[0].text
1553
+ });
1554
+ else messages.push({
1555
+ role,
1556
+ content: supportedContent.map(canonicalToMessagesBlock)
1557
+ });
1558
+ break;
1559
+ }
1560
+ case "tool_call": {
1561
+ const lastMsg = messages[messages.length - 1];
1562
+ const toolBlock = {
1563
+ type: "tool_use",
1564
+ id: item.id,
1565
+ name: item.name,
1566
+ input: item.argumentsJson ?? parseToolUseInput(item.argumentsText)
1567
+ };
1568
+ if (lastMsg && lastMsg.role === "assistant" && typeof lastMsg.content !== "string") lastMsg.content.push(toolBlock);
1569
+ else messages.push({
1570
+ role: "assistant",
1571
+ content: [toolBlock]
1572
+ });
1573
+ break;
1574
+ }
1575
+ case "tool_result": {
1576
+ assertMessagesToolResultOutcome(item.outcome);
1577
+ const content = ensureMessagesTextBlocks(item.content, `tool_result ${item.callId} content`).map(blockToText).join("\n");
1578
+ const block = {
1579
+ type: "tool_result",
1580
+ tool_use_id: item.callId,
1581
+ content,
1582
+ is_error: item.outcome === "error"
1583
+ };
1584
+ if (pendingToolResultMessage && typeof pendingToolResultMessage.content !== "string") pendingToolResultMessage.content.push(block);
1585
+ else {
1586
+ pendingToolResultMessage = {
1587
+ role: "user",
1588
+ content: [block]
1589
+ };
1590
+ messages.push(pendingToolResultMessage);
1611
1591
  }
1592
+ break;
1612
1593
  }
1613
- break;
1594
+ case "reasoning": {
1595
+ const block = {
1596
+ type: "thinking",
1597
+ thinking: contentBlocksToText(ensureMessagesReasoningBlocks(item.content, "reasoning content"))
1598
+ };
1599
+ const lastMsg = messages[messages.length - 1];
1600
+ if (lastMsg && lastMsg.role === "assistant" && typeof lastMsg.content !== "string") lastMsg.content.push(block);
1601
+ else messages.push({
1602
+ role: "assistant",
1603
+ content: [block]
1604
+ });
1605
+ break;
1606
+ }
1607
+ case "opaque":
1608
+ if (item.purpose === "replay" && typeof item.payload === "object" && item.payload !== null) {
1609
+ const payload = item.payload;
1610
+ if (payload.role === "assistant" && Array.isArray(payload.content)) {
1611
+ if (payload.content.every((b) => typeof b === "object" && b !== null && "type" in b && (b.type === "text" || b.type === "thinking" || b.type === "redacted_thinking" || b.type === "tool_use" || b.type === "tool_result"))) {
1612
+ rollbackTrailingAssistantMessages$2(messages);
1613
+ messages.push({
1614
+ role: "assistant",
1615
+ content: payload.content
1616
+ });
1617
+ }
1618
+ }
1619
+ }
1620
+ break;
1621
+ }
1614
1622
  }
1615
1623
  const body = {
1616
1624
  model: request.model,