Skip to content

Commit da1ad2e

Browse files
committed
chore: Updated dependencies hono and knip
1 parent 4bf35ec commit da1ad2e

File tree

4 files changed

+62
-60
lines changed

4 files changed

+62
-60
lines changed

bun.lock

Lines changed: 4 additions & 4 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

package.json

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -42,7 +42,7 @@
4242
"consola": "^3.4.2",
4343
"fetch-event-stream": "^0.1.5",
4444
"gpt-tokenizer": "^3.0.1",
45-
"hono": "^4.7.11",
45+
"hono": "^4.8.1",
4646
"srvx": "^0.8.0"
4747
},
4848
"devDependencies": {
@@ -51,7 +51,7 @@
5151
"bumpp": "^10.2.0",
5252
"eslint": "^9.29.0",
5353
"jiti": "^2.4.2",
54-
"knip": "^5.61.1",
54+
"knip": "^5.61.2",
5555
"lint-staged": "^16.1.2",
5656
"prettier-plugin-packagejson": "^2.5.15",
5757
"simple-git-hooks": "^2.13.0",

src/routes/messages/anthropic-types.ts

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -91,7 +91,10 @@ export interface AnthropicToolUseBlock {
9191
// Anthropic Stream Event Types
9292
export interface AnthropicMessageStartEvent {
9393
type: "message_start"
94-
message: Omit<AnthropicResponse, "content" | "stop_reason" | "stop_sequence"> & {
94+
message: Omit<
95+
AnthropicResponse,
96+
"content" | "stop_reason" | "stop_sequence"
97+
> & {
9598
content: []
9699
stop_reason: null
97100
stop_sequence: null

src/routes/messages/non-stream-translation.ts

Lines changed: 52 additions & 53 deletions
Original file line numberDiff line numberDiff line change
@@ -42,26 +42,38 @@ export function translateToOpenAI(
4242
}
4343
}
4444

45+
function translateAnthropicMessagesToOpenAI(
46+
anthropicMessages: Array<AnthropicMessage>,
47+
system: string | Array<AnthropicTextBlock> | undefined,
48+
): Array<Message> {
49+
const systemMessages = handleSystemPrompt(system)
50+
51+
const otherMessages = anthropicMessages.flatMap((message) =>
52+
message.role === "user" ?
53+
handleUserMessage(message)
54+
: handleAssistantMessage(message),
55+
)
56+
57+
return [...systemMessages, ...otherMessages]
58+
}
59+
4560
function handleSystemPrompt(
4661
system: string | Array<AnthropicTextBlock> | undefined,
47-
messages: Array<Message>,
48-
) {
62+
): Array<Message> {
4963
if (!system) {
50-
return
64+
return []
5165
}
5266

5367
if (typeof system === "string") {
54-
messages.push({ role: "system", content: system })
68+
return [{ role: "system", content: system }]
5569
} else {
5670
const systemText = system.map((block) => block.text).join("\n\n")
57-
messages.push({ role: "system", content: systemText })
71+
return [{ role: "system", content: systemText }]
5872
}
5973
}
6074

61-
function handleUserMessage(
62-
message: AnthropicMessage,
63-
messages: Array<Message>,
64-
) {
75+
function handleUserMessage(message: AnthropicMessage): Array<Message> {
76+
const newMessages: Array<Message> = []
6577
if (Array.isArray(message.content)) {
6678
const toolResultBlocks = message.content.filter(
6779
(block): block is AnthropicToolResultBlock =>
@@ -72,31 +84,29 @@ function handleUserMessage(
7284
)
7385

7486
if (otherBlocks.length > 0) {
75-
messages.push({
87+
newMessages.push({
7688
role: "user",
7789
content: mapContent(otherBlocks),
7890
})
7991
}
8092

8193
for (const block of toolResultBlocks) {
82-
messages.push({
94+
newMessages.push({
8395
role: "tool",
8496
tool_call_id: block.tool_use_id,
8597
content: block.content,
8698
})
8799
}
88100
} else {
89-
messages.push({
101+
newMessages.push({
90102
role: "user",
91103
content: mapContent(message.content),
92104
})
93105
}
106+
return newMessages
94107
}
95108

96-
function handleAssistantMessage(
97-
message: AnthropicMessage,
98-
messages: Array<Message>,
99-
) {
109+
function handleAssistantMessage(message: AnthropicMessage): Array<Message> {
100110
if (Array.isArray(message.content)) {
101111
const toolUseBlocks = message.content.filter(
102112
(block): block is AnthropicToolUseBlock =>
@@ -108,48 +118,37 @@ function handleAssistantMessage(
108118
)
109119

110120
if (toolUseBlocks.length > 0) {
111-
messages.push({
112-
role: "assistant",
113-
content: textBlocks.map((b) => b.text).join("\n\n") || null,
114-
tool_calls: toolUseBlocks.map((toolUse) => ({
115-
id: toolUse.id,
116-
type: "function",
117-
function: {
118-
name: toolUse.name,
119-
arguments: JSON.stringify(toolUse.input),
120-
},
121-
})),
122-
})
121+
return [
122+
{
123+
role: "assistant",
124+
content: textBlocks.map((b) => b.text).join("\n\n") || null,
125+
tool_calls: toolUseBlocks.map((toolUse) => ({
126+
id: toolUse.id,
127+
type: "function",
128+
function: {
129+
name: toolUse.name,
130+
arguments: JSON.stringify(toolUse.input),
131+
},
132+
})),
133+
},
134+
]
123135
} else {
124136
// No tool use, just regular content
125-
messages.push({
126-
role: "assistant",
127-
content: mapContent(message.content),
128-
})
137+
return [
138+
{
139+
role: "assistant",
140+
content: mapContent(message.content),
141+
},
142+
]
129143
}
130144
} else {
131-
messages.push({
132-
role: "assistant",
133-
content: mapContent(message.content),
134-
})
135-
}
136-
}
137-
138-
function translateAnthropicMessagesToOpenAI(
139-
anthropicMessages: Array<AnthropicMessage>,
140-
system: string | Array<AnthropicTextBlock> | undefined,
141-
): Array<Message> {
142-
const messages: Array<Message> = []
143-
handleSystemPrompt(system, messages)
144-
145-
for (const message of anthropicMessages) {
146-
if (message.role === "user") {
147-
handleUserMessage(message, messages)
148-
} else {
149-
handleAssistantMessage(message, messages)
150-
}
145+
return [
146+
{
147+
role: "assistant",
148+
content: mapContent(message.content),
149+
},
150+
]
151151
}
152-
return messages
153152
}
154153

155154
function mapContent(

0 commit comments

Comments
 (0)