| 1234567891011121314151617181920212223242526272829303132333435363738394041 |
- package api
- import (
- "context"
- "encoding/json"
- "log"
- tea "github.com/charmbracelet/bubbletea/v2"
- "github.com/sst/opencode-sdk-go"
- )
- type Request struct {
- Path string `json:"path"`
- Body json.RawMessage `json:"body"`
- }
- func Start(ctx context.Context, program *tea.Program, client *opencode.Client) {
- for {
- select {
- case <-ctx.Done():
- return
- default:
- var req Request
- if err := client.Get(ctx, "/tui/control/next", nil, &req); err != nil {
- log.Printf("Error getting next request: %v", err)
- continue
- }
- program.Send(req)
- }
- }
- }
- func Reply(ctx context.Context, client *opencode.Client, response interface{}) tea.Cmd {
- return func() tea.Msg {
- err := client.Post(ctx, "/tui/control/response", response, nil)
- if err != nil {
- return err
- }
- return nil
- }
- }
|