MCPcopy Create free account
hub / github.com/IfcOpenShell/IfcOpenShell / splitSystemAndMessages

Function splitSystemAndMessages

src/ifcchat/api_anthropic.js:55–103  ·  view source on GitHub ↗
(messages = [])

Source from the content-addressed store, hash-verified

53}
54
55function splitSystemAndMessages(messages = []) {
56 const system = [];
57 const anthropicMessages = [];
58 let pendingToolResults = [];
59
60 const flushToolResults = () => {
61 if (pendingToolResults.length === 0) return;
62 anthropicMessages.push({ role: "user", content: pendingToolResults });
63 pendingToolResults = [];
64 };
65
66 for (const message of messages) {
67 if (message.role === "system") {
68 if (message.content) {
69 system.push(message.content);
70 }
71 continue;
72 }
73
74 if (message.role === "tool") {
75 pendingToolResults.push(toAnthropicToolResult(message));
76 continue;
77 }
78
79 flushToolResults();
80
81 if (message.role === "user") {
82 anthropicMessages.push({
83 role: "user",
84 content: toAnthropicUserContent(message),
85 });
86 continue;
87 }
88
89 if (message.role === "assistant") {
90 anthropicMessages.push({
91 role: "assistant",
92 content: toAnthropicAssistantContent(message),
93 });
94 }
95 }
96
97 flushToolResults();
98
99 return {
100 system: system.join("\n\n"),
101 messages: anthropicMessages,
102 };
103}
104
105function toChatCompletionResponse(response) {
106 const text = [];

Callers 1

chatFunction · 0.85

Calls 6

toAnthropicToolResultFunction · 0.85
flushToolResultsFunction · 0.85
toAnthropicUserContentFunction · 0.85
pushMethod · 0.45
joinMethod · 0.45

Tested by

no test coverage detected