fix(opencode): отправка сообщения — путь без /api (POST /session/:id/message)
Убран префикс /api из POST-запроса на отправку сообщения, чтобы
совпадать с фактическим роутом serve v1.18. GET чтения сообщений
остаётся на /api/session/:id/message.
- client.go: Send → POST /session/:id/message
- тесты: fakeAPIServer отвечает на POST /session/{id}/message (GET — /api)
This commit is contained in:
@@ -15,7 +15,7 @@ import (
|
|||||||
//
|
//
|
||||||
// Ходит по HTTP API opencode serve (v1.18+, префикс /api):
|
// Ходит по HTTP API opencode serve (v1.18+, префикс /api):
|
||||||
// - POST /api/session создать сессию → {data:{id}}
|
// - POST /api/session создать сессию → {data:{id}}
|
||||||
// - POST /api/session/:id/message отправить промпт {parts:[{type:"text"}]}
|
// - POST /session/:id/message отправить промпт {parts:[{type:"text"}]}
|
||||||
// - POST /api/session/:id/wait дождаться завершения ответа (блок)
|
// - POST /api/session/:id/wait дождаться завершения ответа (блок)
|
||||||
// - GET /api/session/:id/message?order=desc → {data:[{...}]} история ответов
|
// - GET /api/session/:id/message?order=desc → {data:[{...}]} история ответов
|
||||||
// - POST /api/session/:id/interrupt прервать выполняющийся ответ
|
// - POST /api/session/:id/interrupt прервать выполняющийся ответ
|
||||||
@@ -133,7 +133,7 @@ func (c *Client) Send(ctx context.Context, sessionID, prompt string) error {
|
|||||||
"parts": []map[string]string{{"type": "text", "text": prompt}},
|
"parts": []map[string]string{{"type": "text", "text": prompt}},
|
||||||
}
|
}
|
||||||
b, _ := json.Marshal(payload)
|
b, _ := json.Marshal(payload)
|
||||||
_, err := c.do(ctx, http.MethodPost, "/api/session/"+sessionID+"/message", "prompt", b)
|
_, err := c.do(ctx, http.MethodPost, "/session/"+sessionID+"/message", "prompt", b)
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -31,17 +31,17 @@ func (f *fakeAPIServer) handler() http.Handler {
|
|||||||
mux.HandleFunc("/api/session/{id}/interrupt", func(w http.ResponseWriter, _ *http.Request) {
|
mux.HandleFunc("/api/session/{id}/interrupt", func(w http.ResponseWriter, _ *http.Request) {
|
||||||
writeJSON(w, map[string]any{})
|
writeJSON(w, map[string]any{})
|
||||||
})
|
})
|
||||||
|
// POST отправка промпта (v1.18) — путь БЕЗ /api.
|
||||||
|
mux.HandleFunc("/session/{id}/message", func(w http.ResponseWriter, r *http.Request) {
|
||||||
|
writeJSON(w, map[string]any{"data": map[string]any{}})
|
||||||
|
})
|
||||||
|
// GET чтение сообщений — путь с /api.
|
||||||
mux.HandleFunc("/api/session/{id}/message", func(w http.ResponseWriter, r *http.Request) {
|
mux.HandleFunc("/api/session/{id}/message", func(w http.ResponseWriter, r *http.Request) {
|
||||||
// GET — чтение сообщений; POST — отправка промпта (v1.18).
|
if len(f.messages) == 0 {
|
||||||
if r.Method == http.MethodGet {
|
writeJSON(w, map[string]any{"data": []sessionMessage{}})
|
||||||
if len(f.messages) == 0 {
|
|
||||||
writeJSON(w, map[string]any{"data": []sessionMessage{}})
|
|
||||||
return
|
|
||||||
}
|
|
||||||
writeJSON(w, map[string]any{"data": f.messages})
|
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
writeJSON(w, map[string]any{"data": map[string]any{}})
|
writeJSON(w, map[string]any{"data": f.messages})
|
||||||
})
|
})
|
||||||
return mux
|
return mux
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user