diff options
Diffstat (limited to 'packages/tui/internal/api')
| -rw-r--r-- | packages/tui/internal/api/api.go | 41 |
1 files changed, 41 insertions, 0 deletions
diff --git a/packages/tui/internal/api/api.go b/packages/tui/internal/api/api.go new file mode 100644 index 000000000..b4d3adee2 --- /dev/null +++ b/packages/tui/internal/api/api.go @@ -0,0 +1,41 @@ +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 + } +} |
