mirror of
https://github.com/sst/opencode.git
synced 2025-08-04 13:30:52 +00:00
rework llm
This commit is contained in:
parent
904061c243
commit
afd9ad0560
61 changed files with 5882 additions and 2074 deletions
|
@ -7,34 +7,56 @@ package db
|
|||
|
||||
import (
|
||||
"context"
|
||||
"database/sql"
|
||||
)
|
||||
|
||||
const createMessage = `-- name: CreateMessage :one
|
||||
INSERT INTO messages (
|
||||
id,
|
||||
session_id,
|
||||
message_data,
|
||||
role,
|
||||
finished,
|
||||
content,
|
||||
tool_calls,
|
||||
tool_results,
|
||||
created_at,
|
||||
updated_at
|
||||
) VALUES (
|
||||
?, ?, ?, strftime('%s', 'now'), strftime('%s', 'now')
|
||||
?, ?, ?, ?, ?, ?, ?, strftime('%s', 'now'), strftime('%s', 'now')
|
||||
)
|
||||
RETURNING id, session_id, message_data, created_at, updated_at
|
||||
RETURNING id, session_id, role, content, thinking, finished, tool_calls, tool_results, created_at, updated_at
|
||||
`
|
||||
|
||||
type CreateMessageParams struct {
|
||||
ID string `json:"id"`
|
||||
SessionID string `json:"session_id"`
|
||||
MessageData string `json:"message_data"`
|
||||
ID string `json:"id"`
|
||||
SessionID string `json:"session_id"`
|
||||
Role string `json:"role"`
|
||||
Finished bool `json:"finished"`
|
||||
Content string `json:"content"`
|
||||
ToolCalls sql.NullString `json:"tool_calls"`
|
||||
ToolResults sql.NullString `json:"tool_results"`
|
||||
}
|
||||
|
||||
func (q *Queries) CreateMessage(ctx context.Context, arg CreateMessageParams) (Message, error) {
|
||||
row := q.queryRow(ctx, q.createMessageStmt, createMessage, arg.ID, arg.SessionID, arg.MessageData)
|
||||
row := q.queryRow(ctx, q.createMessageStmt, createMessage,
|
||||
arg.ID,
|
||||
arg.SessionID,
|
||||
arg.Role,
|
||||
arg.Finished,
|
||||
arg.Content,
|
||||
arg.ToolCalls,
|
||||
arg.ToolResults,
|
||||
)
|
||||
var i Message
|
||||
err := row.Scan(
|
||||
&i.ID,
|
||||
&i.SessionID,
|
||||
&i.MessageData,
|
||||
&i.Role,
|
||||
&i.Content,
|
||||
&i.Thinking,
|
||||
&i.Finished,
|
||||
&i.ToolCalls,
|
||||
&i.ToolResults,
|
||||
&i.CreatedAt,
|
||||
&i.UpdatedAt,
|
||||
)
|
||||
|
@ -62,7 +84,7 @@ func (q *Queries) DeleteSessionMessages(ctx context.Context, sessionID string) e
|
|||
}
|
||||
|
||||
const getMessage = `-- name: GetMessage :one
|
||||
SELECT id, session_id, message_data, created_at, updated_at
|
||||
SELECT id, session_id, role, content, thinking, finished, tool_calls, tool_results, created_at, updated_at
|
||||
FROM messages
|
||||
WHERE id = ? LIMIT 1
|
||||
`
|
||||
|
@ -73,7 +95,12 @@ func (q *Queries) GetMessage(ctx context.Context, id string) (Message, error) {
|
|||
err := row.Scan(
|
||||
&i.ID,
|
||||
&i.SessionID,
|
||||
&i.MessageData,
|
||||
&i.Role,
|
||||
&i.Content,
|
||||
&i.Thinking,
|
||||
&i.Finished,
|
||||
&i.ToolCalls,
|
||||
&i.ToolResults,
|
||||
&i.CreatedAt,
|
||||
&i.UpdatedAt,
|
||||
)
|
||||
|
@ -81,7 +108,7 @@ func (q *Queries) GetMessage(ctx context.Context, id string) (Message, error) {
|
|||
}
|
||||
|
||||
const listMessagesBySession = `-- name: ListMessagesBySession :many
|
||||
SELECT id, session_id, message_data, created_at, updated_at
|
||||
SELECT id, session_id, role, content, thinking, finished, tool_calls, tool_results, created_at, updated_at
|
||||
FROM messages
|
||||
WHERE session_id = ?
|
||||
ORDER BY created_at ASC
|
||||
|
@ -99,7 +126,12 @@ func (q *Queries) ListMessagesBySession(ctx context.Context, sessionID string) (
|
|||
if err := rows.Scan(
|
||||
&i.ID,
|
||||
&i.SessionID,
|
||||
&i.MessageData,
|
||||
&i.Role,
|
||||
&i.Content,
|
||||
&i.Thinking,
|
||||
&i.Finished,
|
||||
&i.ToolCalls,
|
||||
&i.ToolResults,
|
||||
&i.CreatedAt,
|
||||
&i.UpdatedAt,
|
||||
); err != nil {
|
||||
|
@ -115,3 +147,36 @@ func (q *Queries) ListMessagesBySession(ctx context.Context, sessionID string) (
|
|||
}
|
||||
return items, nil
|
||||
}
|
||||
|
||||
const updateMessage = `-- name: UpdateMessage :exec
|
||||
UPDATE messages
|
||||
SET
|
||||
content = ?,
|
||||
thinking = ?,
|
||||
tool_calls = ?,
|
||||
tool_results = ?,
|
||||
finished = ?,
|
||||
updated_at = strftime('%s', 'now')
|
||||
WHERE id = ?
|
||||
`
|
||||
|
||||
type UpdateMessageParams struct {
|
||||
Content string `json:"content"`
|
||||
Thinking string `json:"thinking"`
|
||||
ToolCalls sql.NullString `json:"tool_calls"`
|
||||
ToolResults sql.NullString `json:"tool_results"`
|
||||
Finished bool `json:"finished"`
|
||||
ID string `json:"id"`
|
||||
}
|
||||
|
||||
func (q *Queries) UpdateMessage(ctx context.Context, arg UpdateMessageParams) error {
|
||||
_, err := q.exec(ctx, q.updateMessageStmt, updateMessage,
|
||||
arg.Content,
|
||||
arg.Thinking,
|
||||
arg.ToolCalls,
|
||||
arg.ToolResults,
|
||||
arg.Finished,
|
||||
arg.ID,
|
||||
)
|
||||
return err
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue