| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455 |
- package routes
-
- import (
- "context"
-
- "git.x2erp.com/qdy/go-base/authbase"
- "git.x2erp.com/qdy/go-base/ctx"
- "git.x2erp.com/qdy/go-base/model/response"
- "git.x2erp.com/qdy/go-base/webx/router"
- "git.x2erp.com/qdy/go-svc-code/internal/opencode"
- )
-
- // PromptSyncRequest 同步对话请求
- type PromptSyncRequest struct {
- SessionID string `json:"sessionID" binding:"required"`
- Parts []opencode.TextPart `json:"parts" binding:"required"`
- Agent string `json:"agent,omitempty"`
- Model *opencode.ModelInfo `json:"model,omitempty"`
- }
-
- // PromptSyncResponse 同步对话响应
- type PromptSyncResponse struct {
- Info opencode.AssistantMessage `json:"info"`
- Parts []interface{} `json:"parts"`
- }
-
- // RegisterPromptSyncRoutes 注册同步对话路由
- func RegisterPromptSyncRoutes(ws *router.RouterService, client opencode.OpenCodeClient) {
- // 同步对话(需要Token认证)
- ws.POST("/api/prompt/sync",
- func(req *PromptSyncRequest, ctx context.Context, reqCtx *ctx.RequestContext) (*response.QueryResult[PromptSyncResponse], error) {
- prompt := &opencode.PromptRequest{
- Parts: req.Parts,
- Agent: req.Agent,
- Model: req.Model,
- }
-
- resp, err := client.SendPrompt(ctx, req.SessionID, prompt)
- if err != nil {
- return &response.QueryResult[PromptSyncResponse]{
- Success: false,
- Message: err.Error(),
- }, nil
- }
-
- return &response.QueryResult[PromptSyncResponse]{
- Success: true,
- Data: PromptSyncResponse{
- Info: resp.Info,
- Parts: resp.Parts,
- },
- }, nil
- },
- ).Use(authbase.TokenAuth).Desc("同步对话(阻塞等待完整响应)").Register()
- }
|