From f20ef61bc72ad830549c8a885f063b47e4a75557 Mon Sep 17 00:00:00 2001 From: Dax Raad Date: Mon, 21 Jul 2025 19:53:22 -0400 Subject: wip: api for tui --- packages/tui/internal/api/api.go | 41 ++++++++++++++++++++++++++++++++++++++++ 1 file changed, 41 insertions(+) create mode 100644 packages/tui/internal/api/api.go (limited to 'packages/tui/internal/api') 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 + } +} -- cgit v1.2.3