From 774ebf135a60aba6b37ebaa10cc764f526102616 Mon Sep 17 00:00:00 2001 From: Hermes Date: Tue, 18 Aug 2026 19:28:45 +0500 Subject: [PATCH] =?UTF-8?q?fix(opencode):=20=D0=BE=D1=82=D0=BF=D1=80=D0=B0?= =?UTF-8?q?=D0=B2=D0=BA=D0=B0=20=D1=81=D0=BE=D0=BE=D0=B1=D1=89=D0=B5=D0=BD?= =?UTF-8?q?=D0=B8=D1=8F=20=E2=80=94=20=D0=BF=D1=83=D1=82=D1=8C=20=D0=B1?= =?UTF-8?q?=D0=B5=D0=B7=20/api=20(POST=20/session/:id/message)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Убран префикс /api из POST-запроса на отправку сообщения, чтобы совпадать с фактическим роутом serve v1.18. GET чтения сообщений остаётся на /api/session/:id/message. - client.go: Send → POST /session/:id/message - тесты: fakeAPIServer отвечает на POST /session/{id}/message (GET — /api) --- internal/opencode/client.go | 4 ++-- internal/opencode/client_test.go | 16 ++++++++-------- 2 files changed, 10 insertions(+), 10 deletions(-) diff --git a/internal/opencode/client.go b/internal/opencode/client.go index bc4fc24..a35cf1b 100644 --- a/internal/opencode/client.go +++ b/internal/opencode/client.go @@ -15,7 +15,7 @@ import ( // // Ходит по HTTP API opencode serve (v1.18+, префикс /api): // - 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 дождаться завершения ответа (блок) // - GET /api/session/:id/message?order=desc → {data:[{...}]} история ответов // - 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}}, } 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 } diff --git a/internal/opencode/client_test.go b/internal/opencode/client_test.go index 710ed7b..05f0b1a 100644 --- a/internal/opencode/client_test.go +++ b/internal/opencode/client_test.go @@ -31,17 +31,17 @@ func (f *fakeAPIServer) handler() http.Handler { mux.HandleFunc("/api/session/{id}/interrupt", func(w http.ResponseWriter, _ *http.Request) { 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) { - // GET — чтение сообщений; POST — отправка промпта (v1.18). - if r.Method == http.MethodGet { - if len(f.messages) == 0 { - writeJSON(w, map[string]any{"data": []sessionMessage{}}) - return - } - writeJSON(w, map[string]any{"data": f.messages}) + if len(f.messages) == 0 { + writeJSON(w, map[string]any{"data": []sessionMessage{}}) return } - writeJSON(w, map[string]any{"data": map[string]any{}}) + writeJSON(w, map[string]any{"data": f.messages}) }) return mux }