diff options
| author | Dax Raad <[email protected]> | 2025-07-21 19:53:22 -0400 |
|---|---|---|
| committer | Dax Raad <[email protected]> | 2025-07-21 19:53:58 -0400 |
| commit | f20ef61bc72ad830549c8a885f063b47e4a75557 (patch) | |
| tree | 3232940032f5c8e2a25b036c0290b22dc407cb63 /packages/tui/internal/api | |
| parent | 5611ef8b28216aa9dd2ceb6ed17d5779a29154f6 (diff) | |
| download | opencode-f20ef61bc72ad830549c8a885f063b47e4a75557.tar.gz opencode-f20ef61bc72ad830549c8a885f063b47e4a75557.zip | |
wip: api for tui
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 + } +} |
