Skip to content

Commit bde122a

Browse files
committed
chore: update tanchat
1 parent 566cfec commit bde122a

File tree

4 files changed

+92
-79
lines changed

4 files changed

+92
-79
lines changed
Lines changed: 32 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
import { createServerFileRoute } from '@tanstack/react-start/server'
1+
import { createFileRoute } from '@tanstack/react-router'
22
import { anthropic } from '@ai-sdk/anthropic'
33
import { convertToModelMessages, stepCountIs, streamText } from 'ai'
44

@@ -12,32 +12,36 @@ You can use the following tools to help the user:
1212
- recommendGuitar: Recommend a guitar to the user
1313
`
1414

15-
export const ServerRoute = createServerFileRoute('/api/demo-chat').methods({
16-
POST: async ({ request }) => {
17-
try {
18-
const { messages } = await request.json()
19-
20-
const tools = await getTools()
21-
22-
const result = await streamText({
23-
model: anthropic('claude-3-5-sonnet-latest'),
24-
messages: convertToModelMessages(messages),
25-
temperature: 0.7,
26-
stopWhen: stepCountIs(5),
27-
system: SYSTEM_PROMPT,
28-
tools,
29-
})
30-
31-
return result.toUIMessageStreamResponse()
32-
} catch (error) {
33-
console.error('Chat API error:', error)
34-
return new Response(
35-
JSON.stringify({ error: 'Failed to process chat request' }),
36-
{
37-
status: 500,
38-
headers: { 'Content-Type': 'application/json' },
39-
},
40-
)
41-
}
15+
export const Route = createFileRoute('/api/demo-chat')({
16+
server: {
17+
handlers: {
18+
POST: async ({ request }) => {
19+
try {
20+
const { messages } = await request.json()
21+
22+
const tools = await getTools()
23+
24+
const result = await streamText({
25+
model: anthropic('claude-3-5-sonnet-latest'),
26+
messages: convertToModelMessages(messages),
27+
temperature: 0.7,
28+
stopWhen: stepCountIs(5),
29+
system: SYSTEM_PROMPT,
30+
tools,
31+
})
32+
33+
return result.toUIMessageStreamResponse()
34+
} catch (error) {
35+
console.error('Chat API error:', error)
36+
return new Response(
37+
JSON.stringify({ error: 'Failed to process chat request' }),
38+
{
39+
status: 500,
40+
headers: { 'Content-Type': 'application/json' },
41+
},
42+
)
43+
}
44+
},
45+
},
4246
},
4347
})
Lines changed: 22 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -1,21 +1,26 @@
11
import { transports } from '@/utils/demo.sse'
2+
import { createFileRoute } from '@tanstack/react-router'
23

3-
export const ServerRoute = createServerFileRoute('/api/messages').methods({
4-
// @ts-ignore
5-
POST: async ({ request }) => {
6-
const body = await request.json()
7-
const url = new URL(request.url)
8-
const sessionId = url.searchParams.get('sessionId') as string
9-
const transport = transports[sessionId]
10-
if (transport) {
11-
try {
12-
await transport.handleMessage(body)
13-
return new Response(null, { status: 200 })
14-
} catch (error) {
15-
return new Response(null, { status: 500 })
16-
}
17-
} else {
18-
return new Response(null, { status: 404 })
19-
}
4+
export const Route = createFileRoute('/api/messages')({
5+
server: {
6+
handlers: {
7+
// @ts-ignore
8+
POST: async ({ request }) => {
9+
const body = await request.json()
10+
const url = new URL(request.url)
11+
const sessionId = url.searchParams.get('sessionId') as string
12+
const transport = transports[sessionId]
13+
if (transport) {
14+
try {
15+
await transport.handleMessage(body)
16+
return new Response(null, { status: 200 })
17+
} catch (error) {
18+
return new Response(null, { status: 500 })
19+
}
20+
} else {
21+
return new Response(null, { status: 404 })
22+
}
23+
},
24+
},
2025
},
2126
})
Lines changed: 37 additions & 33 deletions
Original file line numberDiff line numberDiff line change
@@ -1,40 +1,44 @@
11
import { SSEServerTransport } from '@modelcontextprotocol/sdk/server/sse.js'
2-
2+
import { createFileRoute } from '@tanstack/react-router'
33
import { transports, server } from '@/utils/demo.sse'
44

5-
export const ServerRoute = createServerFileRoute('/api/sse').methods({
6-
// @ts-ignore
7-
GET: async ({}) => {
8-
let body = ''
9-
let headers: Record<string, string> = {}
10-
let statusCode = 200
11-
const resp = {
12-
on: (event: string, callback: () => void) => {
13-
if (event === 'close') {
14-
callback()
5+
export const Route = createFileRoute('/api/sse')({
6+
server: {
7+
handlers: {
8+
// @ts-ignore
9+
GET: async ({}) => {
10+
let body = ''
11+
let headers: Record<string, string> = {}
12+
let statusCode = 200
13+
const resp = {
14+
on: (event: string, callback: () => void) => {
15+
if (event === 'close') {
16+
callback()
17+
}
18+
},
19+
writeHead: (statusCode: number, headers: Record<string, string>) => {
20+
headers = headers
21+
statusCode = statusCode
22+
},
23+
write: (data: string) => {
24+
body += data + '\n'
25+
},
1526
}
27+
const transport = new SSEServerTransport('/api/messages', resp as any)
28+
transports[transport.sessionId] = transport
29+
transport.onerror = (error) => {
30+
console.error(error)
31+
}
32+
resp.on('close', () => {
33+
delete transports[transport.sessionId]
34+
})
35+
await server.connect(transport)
36+
const response = new Response(body, {
37+
status: statusCode,
38+
headers: headers,
39+
})
40+
return response
1641
},
17-
writeHead: (statusCode: number, headers: Record<string, string>) => {
18-
headers = headers
19-
statusCode = statusCode
20-
},
21-
write: (data: string) => {
22-
body += data + '\n'
23-
},
24-
}
25-
const transport = new SSEServerTransport('/api/messages', resp as any)
26-
transports[transport.sessionId] = transport
27-
transport.onerror = (error) => {
28-
console.error(error)
29-
}
30-
resp.on('close', () => {
31-
delete transports[transport.sessionId]
32-
})
33-
await server.connect(transport)
34-
const response = new Response(body, {
35-
status: statusCode,
36-
headers: headers,
37-
})
38-
return response
42+
},
3943
},
4044
})

packages/cta-engine/src/create-app.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -234,7 +234,7 @@ Use the following commands to start your app:
234234
getPackageManagerScriptCommand(options.packageManager, ['dev']),
235235
)}
236236
237-
Please read the README.md for information on testing, styling, adding routes, etc.${errorStatement}`,
237+
Please check the README.md for information on testing, styling, adding routes, etc.${errorStatement}`,
238238
)
239239
}
240240

0 commit comments

Comments
 (0)