feat(opencode): v1.18 — перейти с POST /session/:id/prompt на /session/:id/message
Промпт отправляется в /api/session/:id/message (v1.18) с новым форматом
тела parts:[{type:"text"}], вместо {prompt:{text}}. Причина перехода:
/prompt сам подставляет не ту модель, что в конфиге; /message использует
модель из конфига.
- client.go: Send → POST /message + тело parts; шапка-док v1.18
- тесты: fakeAPIServer + e2eFakeAPI отвечают на POST /message (GET уже был)
This commit is contained in:
@@ -13,9 +13,9 @@ import (
|
||||
|
||||
// Client — HTTP-взаимодействие с одним opencode serve (режим API).
|
||||
//
|
||||
// Ходит по HTTP API opencode serve (v1.17+, префикс /api):
|
||||
// Ходит по HTTP API opencode serve (v1.18+, префикс /api):
|
||||
// - POST /api/session создать сессию → {data:{id}}
|
||||
// - POST /api/session/:id/prompt отправить промпт {prompt:{text}}
|
||||
// - POST /api/session/:id/message отправить промпт {parts:[{type:"text"}]}
|
||||
// - POST /api/session/:id/wait дождаться завершения ответа (блок)
|
||||
// - GET /api/session/:id/message?order=desc → {data:[{...}]} история ответов
|
||||
// - POST /api/session/:id/interrupt прервать выполняющийся ответ
|
||||
@@ -127,10 +127,13 @@ func (c *Client) Prompt(ctx context.Context, sessionID, prompt string) error {
|
||||
|
||||
// Send отправляет промпт в сессию (не ждёт ответа — выполнение идёт в фоне).
|
||||
// Используется Runner'ом для асинхронного ожидания через поллинг сообщений.
|
||||
// Формат тела — v1.18: parts:[{type:"text"}], а не {prompt:{text}}.
|
||||
func (c *Client) Send(ctx context.Context, sessionID, prompt string) error {
|
||||
payload := map[string]any{"prompt": map[string]string{"text": prompt}}
|
||||
payload := map[string]any{
|
||||
"parts": []map[string]string{{"type": "text", "text": prompt}},
|
||||
}
|
||||
b, _ := json.Marshal(payload)
|
||||
_, err := c.do(ctx, http.MethodPost, "/api/session/"+sessionID+"/prompt", "prompt", b)
|
||||
_, err := c.do(ctx, http.MethodPost, "/api/session/"+sessionID+"/message", "prompt", b)
|
||||
return err
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user