diff --git a/.stats.yml b/.stats.yml
index 5f66550..7f4a9c1 100644
--- a/.stats.yml
+++ b/.stats.yml
@@ -1,4 +1,4 @@
configured_endpoints: 43
-openapi_spec_url: https://storage.googleapis.com/stainless-sdk-openapi-specs/opencode%2Fopencode-0a51d4de32ff494edb3423c9dfd6907b101baab3a967cf47a2fe4a11e53e6bd9.yml
-openapi_spec_hash: f408670a086f9a79e331863b5d04b7b6
+openapi_spec_url: https://storage.googleapis.com/stainless-sdk-openapi-specs/opencode%2Fopencode-2e754dafcad0636137256cef499b2bcd72cf17de08f44ec03c3589b2a05341a2.yml
+openapi_spec_hash: 2d3cf84d3033068ce6c07386411527ef
config_hash: 026ef000d34bf2f930e7b41e77d2d3ff
diff --git a/README.md b/README.md
index 3ba8ad7..2c48f53 100644
--- a/README.md
+++ b/README.md
@@ -49,7 +49,7 @@ import (
func main() {
client := opencode.NewClient()
- sessions, err := client.Session.List(context.TODO())
+ sessions, err := client.Session.List(context.TODO(), opencode.SessionListParams{})
if err != nil {
panic(err.Error())
}
@@ -171,7 +171,7 @@ When the API returns a non-success status code, we return an error with type
To handle errors, we recommend that you use the `errors.As` pattern:
```go
-_, err := client.Session.List(context.TODO())
+_, err := client.Session.List(context.TODO(), opencode.SessionListParams{})
if err != nil {
var apierr *opencode.Error
if errors.As(err, &apierr) {
@@ -198,6 +198,7 @@ ctx, cancel := context.WithTimeout(context.Background(), 5*time.Minute)
defer cancel()
client.Session.List(
ctx,
+ opencode.SessionListParams{},
// This sets the per-retry timeout
option.WithRequestTimeout(20*time.Second),
)
@@ -231,7 +232,11 @@ client := opencode.NewClient(
)
// Override per-request:
-client.Session.List(context.TODO(), option.WithMaxRetries(5))
+client.Session.List(
+ context.TODO(),
+ opencode.SessionListParams{},
+ option.WithMaxRetries(5),
+)
```
### Accessing raw response data (e.g. response headers)
@@ -242,7 +247,11 @@ you need to examine response headers, status codes, or other details.
```go
// Create a variable to store the HTTP response
var response *http.Response
-sessions, err := client.Session.List(context.TODO(), option.WithResponseInto(&response))
+sessions, err := client.Session.List(
+ context.TODO(),
+ opencode.SessionListParams{},
+ option.WithResponseInto(&response),
+)
if err != nil {
// handle error
}
diff --git a/agent.go b/agent.go
index fe8b318..5e8f495 100644
--- a/agent.go
+++ b/agent.go
@@ -5,8 +5,11 @@ package opencode
import (
"context"
"net/http"
+ "net/url"
"github.com/sst/opencode-sdk-go/internal/apijson"
+ "github.com/sst/opencode-sdk-go/internal/apiquery"
+ "github.com/sst/opencode-sdk-go/internal/param"
"github.com/sst/opencode-sdk-go/internal/requestconfig"
"github.com/sst/opencode-sdk-go/option"
)
@@ -31,10 +34,10 @@ func NewAgentService(opts ...option.RequestOption) (r *AgentService) {
}
// List all agents
-func (r *AgentService) List(ctx context.Context, opts ...option.RequestOption) (res *[]Agent, err error) {
+func (r *AgentService) List(ctx context.Context, query AgentListParams, opts ...option.RequestOption) (res *[]Agent, err error) {
opts = append(r.Options[:], opts...)
path := "agent"
- err = requestconfig.ExecuteNewRequest(ctx, http.MethodGet, path, nil, &res, opts...)
+ err = requestconfig.ExecuteNewRequest(ctx, http.MethodGet, path, query, &res, opts...)
return
}
@@ -187,3 +190,15 @@ func (r *AgentModel) UnmarshalJSON(data []byte) (err error) {
func (r agentModelJSON) RawJSON() string {
return r.raw
}
+
+type AgentListParams struct {
+ Directory param.Field[string] `query:"directory"`
+}
+
+// URLQuery serializes [AgentListParams]'s query parameters as `url.Values`.
+func (r AgentListParams) URLQuery() (v url.Values) {
+ return apiquery.MarshalWithSettings(r, apiquery.QuerySettings{
+ ArrayFormat: apiquery.ArrayQueryFormatComma,
+ NestedFormat: apiquery.NestedQueryFormatBrackets,
+ })
+}
diff --git a/agent_test.go b/agent_test.go
index c3984b5..0827df5 100644
--- a/agent_test.go
+++ b/agent_test.go
@@ -13,7 +13,7 @@ import (
"github.com/sst/opencode-sdk-go/option"
)
-func TestAgentList(t *testing.T) {
+func TestAgentListWithOptionalParams(t *testing.T) {
t.Skip("Prism tests are disabled")
baseURL := "http://localhost:4010"
if envURL, ok := os.LookupEnv("TEST_API_BASE_URL"); ok {
@@ -25,7 +25,9 @@ func TestAgentList(t *testing.T) {
client := opencode.NewClient(
option.WithBaseURL(baseURL),
)
- _, err := client.Agent.List(context.TODO())
+ _, err := client.Agent.List(context.TODO(), opencode.AgentListParams{
+ Directory: opencode.F("directory"),
+ })
if err != nil {
var apierr *opencode.Error
if errors.As(err, &apierr) {
diff --git a/api.md b/api.md
index 6ac0031..02ac42b 100644
--- a/api.md
+++ b/api.md
@@ -12,7 +12,7 @@ Response Types:
Methods:
-- client.Event.List(ctx context.Context) (opencode.EventListResponse, error)
+- client.Event.List(ctx context.Context, query opencode.EventListParams) (opencode.EventListResponse, error)
# Path
@@ -22,7 +22,7 @@ Response Types:
Methods:
-- client.Path.Get(ctx context.Context) (opencode.Path, error)
+- client.Path.Get(ctx context.Context, query opencode.PathGetParams) (opencode.Path, error)
# App
@@ -34,8 +34,8 @@ Response Types:
Methods:
-- client.App.Log(ctx context.Context, body opencode.AppLogParams) (bool, error)
-- client.App.Providers(ctx context.Context) (opencode.AppProvidersResponse, error)
+- client.App.Log(ctx context.Context, params opencode.AppLogParams) (bool, error)
+- client.App.Providers(ctx context.Context, query opencode.AppProvidersParams) (opencode.AppProvidersResponse, error)
# Agent
@@ -45,7 +45,7 @@ Response Types:
Methods:
-- client.Agent.List(ctx context.Context) ([]opencode.Agent, error)
+- client.Agent.List(ctx context.Context, query opencode.AgentListParams) ([]opencode.Agent, error)
# Find
@@ -72,7 +72,7 @@ Methods:
- client.File.List(ctx context.Context, query opencode.FileListParams) ([]opencode.FileNode, error)
- client.File.Read(ctx context.Context, query opencode.FileReadParams) (opencode.FileReadResponse, error)
-- client.File.Status(ctx context.Context) ([]opencode.File, error)
+- client.File.Status(ctx context.Context, query opencode.FileStatusParams) ([]opencode.File, error)
# Config
@@ -85,7 +85,7 @@ Response Types:
Methods:
-- client.Config.Get(ctx context.Context) (opencode.Config, error)
+- client.Config.Get(ctx context.Context, query opencode.ConfigGetParams) (opencode.Config, error)
# Command
@@ -95,7 +95,7 @@ Response Types:
Methods:
-- client.Command.List(ctx context.Context) ([]opencode.Command, error)
+- client.Command.List(ctx context.Context, query opencode.CommandListParams) ([]opencode.Command, error)
# Project
@@ -105,8 +105,8 @@ Response Types:
Methods:
-- client.Project.List(ctx context.Context) ([]opencode.Project, error)
-- client.Project.Current(ctx context.Context) (opencode.Project, error)
+- client.Project.List(ctx context.Context, query opencode.ProjectListParams) ([]opencode.Project, error)
+- client.Project.Current(ctx context.Context, query opencode.ProjectCurrentParams) (opencode.Project, error)
# Session
@@ -151,23 +151,23 @@ Response Types:
Methods:
- client.Session.New(ctx context.Context, params opencode.SessionNewParams) (opencode.Session, error)
-- client.Session.Update(ctx context.Context, id string, body opencode.SessionUpdateParams) (opencode.Session, error)
-- client.Session.List(ctx context.Context) ([]opencode.Session, error)
-- client.Session.Delete(ctx context.Context, id string) (bool, error)
-- client.Session.Abort(ctx context.Context, id string) (bool, error)
-- client.Session.Children(ctx context.Context, id string) ([]opencode.Session, error)
-- client.Session.Command(ctx context.Context, id string, body opencode.SessionCommandParams) (opencode.SessionCommandResponse, error)
-- client.Session.Get(ctx context.Context, id string) (opencode.Session, error)
-- client.Session.Init(ctx context.Context, id string, body opencode.SessionInitParams) (bool, error)
-- client.Session.Message(ctx context.Context, id string, messageID string) (opencode.SessionMessageResponse, error)
-- client.Session.Messages(ctx context.Context, id string) ([]opencode.SessionMessagesResponse, error)
-- client.Session.Prompt(ctx context.Context, id string, body opencode.SessionPromptParams) (opencode.SessionPromptResponse, error)
-- client.Session.Revert(ctx context.Context, id string, body opencode.SessionRevertParams) (opencode.Session, error)
-- client.Session.Share(ctx context.Context, id string) (opencode.Session, error)
-- client.Session.Shell(ctx context.Context, id string, body opencode.SessionShellParams) (opencode.AssistantMessage, error)
-- client.Session.Summarize(ctx context.Context, id string, body opencode.SessionSummarizeParams) (bool, error)
-- client.Session.Unrevert(ctx context.Context, id string) (opencode.Session, error)
-- client.Session.Unshare(ctx context.Context, id string) (opencode.Session, error)
+- client.Session.Update(ctx context.Context, id string, params opencode.SessionUpdateParams) (opencode.Session, error)
+- client.Session.List(ctx context.Context, query opencode.SessionListParams) ([]opencode.Session, error)
+- client.Session.Delete(ctx context.Context, id string, body opencode.SessionDeleteParams) (bool, error)
+- client.Session.Abort(ctx context.Context, id string, body opencode.SessionAbortParams) (bool, error)
+- client.Session.Children(ctx context.Context, id string, query opencode.SessionChildrenParams) ([]opencode.Session, error)
+- client.Session.Command(ctx context.Context, id string, params opencode.SessionCommandParams) (opencode.SessionCommandResponse, error)
+- client.Session.Get(ctx context.Context, id string, query opencode.SessionGetParams) (opencode.Session, error)
+- client.Session.Init(ctx context.Context, id string, params opencode.SessionInitParams) (bool, error)
+- client.Session.Message(ctx context.Context, id string, messageID string, query opencode.SessionMessageParams) (opencode.SessionMessageResponse, error)
+- client.Session.Messages(ctx context.Context, id string, query opencode.SessionMessagesParams) ([]opencode.SessionMessagesResponse, error)
+- client.Session.Prompt(ctx context.Context, id string, params opencode.SessionPromptParams) (opencode.SessionPromptResponse, error)
+- client.Session.Revert(ctx context.Context, id string, params opencode.SessionRevertParams) (opencode.Session, error)
+- client.Session.Share(ctx context.Context, id string, body opencode.SessionShareParams) (opencode.Session, error)
+- client.Session.Shell(ctx context.Context, id string, params opencode.SessionShellParams) (opencode.AssistantMessage, error)
+- client.Session.Summarize(ctx context.Context, id string, params opencode.SessionSummarizeParams) (bool, error)
+- client.Session.Unrevert(ctx context.Context, id string, body opencode.SessionUnrevertParams) (opencode.Session, error)
+- client.Session.Unshare(ctx context.Context, id string, body opencode.SessionUnshareParams) (opencode.Session, error)
## Permissions
@@ -177,18 +177,18 @@ Response Types:
Methods:
-- client.Session.Permissions.Respond(ctx context.Context, id string, permissionID string, body opencode.SessionPermissionRespondParams) (bool, error)
+- client.Session.Permissions.Respond(ctx context.Context, id string, permissionID string, params opencode.SessionPermissionRespondParams) (bool, error)
# Tui
Methods:
-- client.Tui.AppendPrompt(ctx context.Context, body opencode.TuiAppendPromptParams) (bool, error)
-- client.Tui.ClearPrompt(ctx context.Context) (bool, error)
-- client.Tui.ExecuteCommand(ctx context.Context, body opencode.TuiExecuteCommandParams) (bool, error)
-- client.Tui.OpenHelp(ctx context.Context) (bool, error)
-- client.Tui.OpenModels(ctx context.Context) (bool, error)
-- client.Tui.OpenSessions(ctx context.Context) (bool, error)
-- client.Tui.OpenThemes(ctx context.Context) (bool, error)
-- client.Tui.ShowToast(ctx context.Context, body opencode.TuiShowToastParams) (bool, error)
-- client.Tui.SubmitPrompt(ctx context.Context) (bool, error)
+- client.Tui.AppendPrompt(ctx context.Context, params opencode.TuiAppendPromptParams) (bool, error)
+- client.Tui.ClearPrompt(ctx context.Context, body opencode.TuiClearPromptParams) (bool, error)
+- client.Tui.ExecuteCommand(ctx context.Context, params opencode.TuiExecuteCommandParams) (bool, error)
+- client.Tui.OpenHelp(ctx context.Context, body opencode.TuiOpenHelpParams) (bool, error)
+- client.Tui.OpenModels(ctx context.Context, body opencode.TuiOpenModelsParams) (bool, error)
+- client.Tui.OpenSessions(ctx context.Context, body opencode.TuiOpenSessionsParams) (bool, error)
+- client.Tui.OpenThemes(ctx context.Context, body opencode.TuiOpenThemesParams) (bool, error)
+- client.Tui.ShowToast(ctx context.Context, params opencode.TuiShowToastParams) (bool, error)
+- client.Tui.SubmitPrompt(ctx context.Context, body opencode.TuiSubmitPromptParams) (bool, error)
diff --git a/app.go b/app.go
index a133014..62d86f9 100644
--- a/app.go
+++ b/app.go
@@ -5,8 +5,10 @@ package opencode
import (
"context"
"net/http"
+ "net/url"
"github.com/sst/opencode-sdk-go/internal/apijson"
+ "github.com/sst/opencode-sdk-go/internal/apiquery"
"github.com/sst/opencode-sdk-go/internal/param"
"github.com/sst/opencode-sdk-go/internal/requestconfig"
"github.com/sst/opencode-sdk-go/option"
@@ -32,18 +34,18 @@ func NewAppService(opts ...option.RequestOption) (r *AppService) {
}
// Write a log entry to the server logs
-func (r *AppService) Log(ctx context.Context, body AppLogParams, opts ...option.RequestOption) (res *bool, err error) {
+func (r *AppService) Log(ctx context.Context, params AppLogParams, opts ...option.RequestOption) (res *bool, err error) {
opts = append(r.Options[:], opts...)
path := "log"
- err = requestconfig.ExecuteNewRequest(ctx, http.MethodPost, path, body, &res, opts...)
+ err = requestconfig.ExecuteNewRequest(ctx, http.MethodPost, path, params, &res, opts...)
return
}
// List all providers
-func (r *AppService) Providers(ctx context.Context, opts ...option.RequestOption) (res *AppProvidersResponse, err error) {
+func (r *AppService) Providers(ctx context.Context, query AppProvidersParams, opts ...option.RequestOption) (res *AppProvidersResponse, err error) {
opts = append(r.Options[:], opts...)
path := "config/providers"
- err = requestconfig.ExecuteNewRequest(ctx, http.MethodGet, path, nil, &res, opts...)
+ err = requestconfig.ExecuteNewRequest(ctx, http.MethodGet, path, query, &res, opts...)
return
}
@@ -216,7 +218,8 @@ type AppLogParams struct {
// Log message
Message param.Field[string] `json:"message,required"`
// Service name for the log entry
- Service param.Field[string] `json:"service,required"`
+ Service param.Field[string] `json:"service,required"`
+ Directory param.Field[string] `query:"directory"`
// Additional metadata for the log entry
Extra param.Field[map[string]interface{}] `json:"extra"`
}
@@ -225,6 +228,14 @@ func (r AppLogParams) MarshalJSON() (data []byte, err error) {
return apijson.MarshalRoot(r)
}
+// URLQuery serializes [AppLogParams]'s query parameters as `url.Values`.
+func (r AppLogParams) URLQuery() (v url.Values) {
+ return apiquery.MarshalWithSettings(r, apiquery.QuerySettings{
+ ArrayFormat: apiquery.ArrayQueryFormatComma,
+ NestedFormat: apiquery.NestedQueryFormatBrackets,
+ })
+}
+
// Log level
type AppLogParamsLevel string
@@ -242,3 +253,15 @@ func (r AppLogParamsLevel) IsKnown() bool {
}
return false
}
+
+type AppProvidersParams struct {
+ Directory param.Field[string] `query:"directory"`
+}
+
+// URLQuery serializes [AppProvidersParams]'s query parameters as `url.Values`.
+func (r AppProvidersParams) URLQuery() (v url.Values) {
+ return apiquery.MarshalWithSettings(r, apiquery.QuerySettings{
+ ArrayFormat: apiquery.ArrayQueryFormatComma,
+ NestedFormat: apiquery.NestedQueryFormatBrackets,
+ })
+}
diff --git a/app_test.go b/app_test.go
index 847ec5c..eb2fc92 100644
--- a/app_test.go
+++ b/app_test.go
@@ -26,9 +26,10 @@ func TestAppLogWithOptionalParams(t *testing.T) {
option.WithBaseURL(baseURL),
)
_, err := client.App.Log(context.TODO(), opencode.AppLogParams{
- Level: opencode.F(opencode.AppLogParamsLevelDebug),
- Message: opencode.F("message"),
- Service: opencode.F("service"),
+ Level: opencode.F(opencode.AppLogParamsLevelDebug),
+ Message: opencode.F("message"),
+ Service: opencode.F("service"),
+ Directory: opencode.F("directory"),
Extra: opencode.F(map[string]interface{}{
"foo": "bar",
}),
@@ -42,7 +43,7 @@ func TestAppLogWithOptionalParams(t *testing.T) {
}
}
-func TestAppProviders(t *testing.T) {
+func TestAppProvidersWithOptionalParams(t *testing.T) {
t.Skip("Prism tests are disabled")
baseURL := "http://localhost:4010"
if envURL, ok := os.LookupEnv("TEST_API_BASE_URL"); ok {
@@ -54,7 +55,9 @@ func TestAppProviders(t *testing.T) {
client := opencode.NewClient(
option.WithBaseURL(baseURL),
)
- _, err := client.App.Providers(context.TODO())
+ _, err := client.App.Providers(context.TODO(), opencode.AppProvidersParams{
+ Directory: opencode.F("directory"),
+ })
if err != nil {
var apierr *opencode.Error
if errors.As(err, &apierr) {
diff --git a/client_test.go b/client_test.go
index 0f5b820..d620da8 100644
--- a/client_test.go
+++ b/client_test.go
@@ -38,7 +38,7 @@ func TestUserAgentHeader(t *testing.T) {
},
}),
)
- client.Session.List(context.Background())
+ client.Session.List(context.Background(), opencode.SessionListParams{})
if userAgent != fmt.Sprintf("Opencode/Go %s", internal.PackageVersion) {
t.Errorf("Expected User-Agent to be correct, but got: %#v", userAgent)
}
@@ -61,7 +61,7 @@ func TestRetryAfter(t *testing.T) {
},
}),
)
- _, err := client.Session.List(context.Background())
+ _, err := client.Session.List(context.Background(), opencode.SessionListParams{})
if err == nil {
t.Error("Expected there to be a cancel error")
}
@@ -95,7 +95,7 @@ func TestDeleteRetryCountHeader(t *testing.T) {
}),
option.WithHeaderDel("X-Stainless-Retry-Count"),
)
- _, err := client.Session.List(context.Background())
+ _, err := client.Session.List(context.Background(), opencode.SessionListParams{})
if err == nil {
t.Error("Expected there to be a cancel error")
}
@@ -124,7 +124,7 @@ func TestOverwriteRetryCountHeader(t *testing.T) {
}),
option.WithHeader("X-Stainless-Retry-Count", "42"),
)
- _, err := client.Session.List(context.Background())
+ _, err := client.Session.List(context.Background(), opencode.SessionListParams{})
if err == nil {
t.Error("Expected there to be a cancel error")
}
@@ -152,7 +152,7 @@ func TestRetryAfterMs(t *testing.T) {
},
}),
)
- _, err := client.Session.List(context.Background())
+ _, err := client.Session.List(context.Background(), opencode.SessionListParams{})
if err == nil {
t.Error("Expected there to be a cancel error")
}
@@ -174,7 +174,7 @@ func TestContextCancel(t *testing.T) {
)
cancelCtx, cancel := context.WithCancel(context.Background())
cancel()
- _, err := client.Session.List(cancelCtx)
+ _, err := client.Session.List(cancelCtx, opencode.SessionListParams{})
if err == nil {
t.Error("Expected there to be a cancel error")
}
@@ -193,7 +193,7 @@ func TestContextCancelDelay(t *testing.T) {
)
cancelCtx, cancel := context.WithTimeout(context.Background(), 2*time.Millisecond)
defer cancel()
- _, err := client.Session.List(cancelCtx)
+ _, err := client.Session.List(cancelCtx, opencode.SessionListParams{})
if err == nil {
t.Error("expected there to be a cancel error")
}
@@ -218,7 +218,7 @@ func TestContextDeadline(t *testing.T) {
},
}),
)
- _, err := client.Session.List(deadlineCtx)
+ _, err := client.Session.List(deadlineCtx, opencode.SessionListParams{})
if err == nil {
t.Error("expected there to be a deadline error")
}
@@ -262,7 +262,7 @@ func TestContextDeadlineStreaming(t *testing.T) {
},
}),
)
- stream := client.Event.ListStreaming(deadlineCtx)
+ stream := client.Event.ListStreaming(deadlineCtx, opencode.EventListParams{})
for stream.Next() {
_ = stream.Current()
}
@@ -306,7 +306,11 @@ func TestContextDeadlineStreamingWithRequestTimeout(t *testing.T) {
},
}),
)
- stream := client.Event.ListStreaming(context.Background(), option.WithRequestTimeout((100 * time.Millisecond)))
+ stream := client.Event.ListStreaming(
+ context.Background(),
+ opencode.EventListParams{},
+ option.WithRequestTimeout((100 * time.Millisecond)),
+ )
for stream.Next() {
_ = stream.Current()
}
diff --git a/command.go b/command.go
index 31ca16d..44e3beb 100644
--- a/command.go
+++ b/command.go
@@ -5,8 +5,11 @@ package opencode
import (
"context"
"net/http"
+ "net/url"
"github.com/sst/opencode-sdk-go/internal/apijson"
+ "github.com/sst/opencode-sdk-go/internal/apiquery"
+ "github.com/sst/opencode-sdk-go/internal/param"
"github.com/sst/opencode-sdk-go/internal/requestconfig"
"github.com/sst/opencode-sdk-go/option"
)
@@ -31,10 +34,10 @@ func NewCommandService(opts ...option.RequestOption) (r *CommandService) {
}
// List all commands
-func (r *CommandService) List(ctx context.Context, opts ...option.RequestOption) (res *[]Command, err error) {
+func (r *CommandService) List(ctx context.Context, query CommandListParams, opts ...option.RequestOption) (res *[]Command, err error) {
opts = append(r.Options[:], opts...)
path := "command"
- err = requestconfig.ExecuteNewRequest(ctx, http.MethodGet, path, nil, &res, opts...)
+ err = requestconfig.ExecuteNewRequest(ctx, http.MethodGet, path, query, &res, opts...)
return
}
@@ -67,3 +70,15 @@ func (r *Command) UnmarshalJSON(data []byte) (err error) {
func (r commandJSON) RawJSON() string {
return r.raw
}
+
+type CommandListParams struct {
+ Directory param.Field[string] `query:"directory"`
+}
+
+// URLQuery serializes [CommandListParams]'s query parameters as `url.Values`.
+func (r CommandListParams) URLQuery() (v url.Values) {
+ return apiquery.MarshalWithSettings(r, apiquery.QuerySettings{
+ ArrayFormat: apiquery.ArrayQueryFormatComma,
+ NestedFormat: apiquery.NestedQueryFormatBrackets,
+ })
+}
diff --git a/command_test.go b/command_test.go
index 5e62ffb..781498b 100644
--- a/command_test.go
+++ b/command_test.go
@@ -13,7 +13,7 @@ import (
"github.com/sst/opencode-sdk-go/option"
)
-func TestCommandList(t *testing.T) {
+func TestCommandListWithOptionalParams(t *testing.T) {
t.Skip("Prism tests are disabled")
baseURL := "http://localhost:4010"
if envURL, ok := os.LookupEnv("TEST_API_BASE_URL"); ok {
@@ -25,7 +25,9 @@ func TestCommandList(t *testing.T) {
client := opencode.NewClient(
option.WithBaseURL(baseURL),
)
- _, err := client.Command.List(context.TODO())
+ _, err := client.Command.List(context.TODO(), opencode.CommandListParams{
+ Directory: opencode.F("directory"),
+ })
if err != nil {
var apierr *opencode.Error
if errors.As(err, &apierr) {
diff --git a/config.go b/config.go
index 494da98..d469bdf 100644
--- a/config.go
+++ b/config.go
@@ -5,9 +5,12 @@ package opencode
import (
"context"
"net/http"
+ "net/url"
"reflect"
"github.com/sst/opencode-sdk-go/internal/apijson"
+ "github.com/sst/opencode-sdk-go/internal/apiquery"
+ "github.com/sst/opencode-sdk-go/internal/param"
"github.com/sst/opencode-sdk-go/internal/requestconfig"
"github.com/sst/opencode-sdk-go/option"
"github.com/sst/opencode-sdk-go/shared"
@@ -34,10 +37,10 @@ func NewConfigService(opts ...option.RequestOption) (r *ConfigService) {
}
// Get config info
-func (r *ConfigService) Get(ctx context.Context, opts ...option.RequestOption) (res *Config, err error) {
+func (r *ConfigService) Get(ctx context.Context, query ConfigGetParams, opts ...option.RequestOption) (res *Config, err error) {
opts = append(r.Options[:], opts...)
path := "config"
- err = requestconfig.ExecuteNewRequest(ctx, http.MethodGet, path, nil, &res, opts...)
+ err = requestconfig.ExecuteNewRequest(ctx, http.MethodGet, path, query, &res, opts...)
return
}
@@ -2028,3 +2031,15 @@ func (r McpRemoteConfigType) IsKnown() bool {
}
return false
}
+
+type ConfigGetParams struct {
+ Directory param.Field[string] `query:"directory"`
+}
+
+// URLQuery serializes [ConfigGetParams]'s query parameters as `url.Values`.
+func (r ConfigGetParams) URLQuery() (v url.Values) {
+ return apiquery.MarshalWithSettings(r, apiquery.QuerySettings{
+ ArrayFormat: apiquery.ArrayQueryFormatComma,
+ NestedFormat: apiquery.NestedQueryFormatBrackets,
+ })
+}
diff --git a/config_test.go b/config_test.go
index 9a2676b..f188d7e 100644
--- a/config_test.go
+++ b/config_test.go
@@ -13,7 +13,7 @@ import (
"github.com/sst/opencode-sdk-go/option"
)
-func TestConfigGet(t *testing.T) {
+func TestConfigGetWithOptionalParams(t *testing.T) {
t.Skip("Prism tests are disabled")
baseURL := "http://localhost:4010"
if envURL, ok := os.LookupEnv("TEST_API_BASE_URL"); ok {
@@ -25,7 +25,9 @@ func TestConfigGet(t *testing.T) {
client := opencode.NewClient(
option.WithBaseURL(baseURL),
)
- _, err := client.Config.Get(context.TODO())
+ _, err := client.Config.Get(context.TODO(), opencode.ConfigGetParams{
+ Directory: opencode.F("directory"),
+ })
if err != nil {
var apierr *opencode.Error
if errors.As(err, &apierr) {
diff --git a/event.go b/event.go
index 3cb67af..5d3bffc 100644
--- a/event.go
+++ b/event.go
@@ -5,9 +5,12 @@ package opencode
import (
"context"
"net/http"
+ "net/url"
"reflect"
"github.com/sst/opencode-sdk-go/internal/apijson"
+ "github.com/sst/opencode-sdk-go/internal/apiquery"
+ "github.com/sst/opencode-sdk-go/internal/param"
"github.com/sst/opencode-sdk-go/internal/requestconfig"
"github.com/sst/opencode-sdk-go/option"
"github.com/sst/opencode-sdk-go/packages/ssestream"
@@ -35,7 +38,7 @@ func NewEventService(opts ...option.RequestOption) (r *EventService) {
}
// Get events
-func (r *EventService) ListStreaming(ctx context.Context, opts ...option.RequestOption) (stream *ssestream.Stream[EventListResponse]) {
+func (r *EventService) ListStreaming(ctx context.Context, query EventListParams, opts ...option.RequestOption) (stream *ssestream.Stream[EventListResponse]) {
var (
raw *http.Response
err error
@@ -43,7 +46,7 @@ func (r *EventService) ListStreaming(ctx context.Context, opts ...option.Request
opts = append(r.Options[:], opts...)
opts = append([]option.RequestOption{option.WithHeader("Accept", "text/event-stream")}, opts...)
path := "event"
- err = requestconfig.ExecuteNewRequest(ctx, http.MethodGet, path, nil, &raw, opts...)
+ err = requestconfig.ExecuteNewRequest(ctx, http.MethodGet, path, query, &raw, opts...)
return ssestream.NewStream[EventListResponse](ssestream.NewDecoder(raw), err)
}
@@ -1220,3 +1223,15 @@ func (r EventListResponseType) IsKnown() bool {
}
return false
}
+
+type EventListParams struct {
+ Directory param.Field[string] `query:"directory"`
+}
+
+// URLQuery serializes [EventListParams]'s query parameters as `url.Values`.
+func (r EventListParams) URLQuery() (v url.Values) {
+ return apiquery.MarshalWithSettings(r, apiquery.QuerySettings{
+ ArrayFormat: apiquery.ArrayQueryFormatComma,
+ NestedFormat: apiquery.NestedQueryFormatBrackets,
+ })
+}
diff --git a/file.go b/file.go
index ef2d975..bc36075 100644
--- a/file.go
+++ b/file.go
@@ -50,10 +50,10 @@ func (r *FileService) Read(ctx context.Context, query FileReadParams, opts ...op
}
// Get file status
-func (r *FileService) Status(ctx context.Context, opts ...option.RequestOption) (res *[]File, err error) {
+func (r *FileService) Status(ctx context.Context, query FileStatusParams, opts ...option.RequestOption) (res *[]File, err error) {
opts = append(r.Options[:], opts...)
path := "file/status"
- err = requestconfig.ExecuteNewRequest(ctx, http.MethodGet, path, nil, &res, opts...)
+ err = requestconfig.ExecuteNewRequest(ctx, http.MethodGet, path, query, &res, opts...)
return
}
@@ -228,7 +228,8 @@ func (r fileReadResponsePatchHunkJSON) RawJSON() string {
}
type FileListParams struct {
- Path param.Field[string] `query:"path,required"`
+ Path param.Field[string] `query:"path,required"`
+ Directory param.Field[string] `query:"directory"`
}
// URLQuery serializes [FileListParams]'s query parameters as `url.Values`.
@@ -240,7 +241,8 @@ func (r FileListParams) URLQuery() (v url.Values) {
}
type FileReadParams struct {
- Path param.Field[string] `query:"path,required"`
+ Path param.Field[string] `query:"path,required"`
+ Directory param.Field[string] `query:"directory"`
}
// URLQuery serializes [FileReadParams]'s query parameters as `url.Values`.
@@ -250,3 +252,15 @@ func (r FileReadParams) URLQuery() (v url.Values) {
NestedFormat: apiquery.NestedQueryFormatBrackets,
})
}
+
+type FileStatusParams struct {
+ Directory param.Field[string] `query:"directory"`
+}
+
+// URLQuery serializes [FileStatusParams]'s query parameters as `url.Values`.
+func (r FileStatusParams) URLQuery() (v url.Values) {
+ return apiquery.MarshalWithSettings(r, apiquery.QuerySettings{
+ ArrayFormat: apiquery.ArrayQueryFormatComma,
+ NestedFormat: apiquery.NestedQueryFormatBrackets,
+ })
+}
diff --git a/file_test.go b/file_test.go
index 273f6e8..2790fff 100644
--- a/file_test.go
+++ b/file_test.go
@@ -13,7 +13,7 @@ import (
"github.com/sst/opencode-sdk-go/option"
)
-func TestFileList(t *testing.T) {
+func TestFileListWithOptionalParams(t *testing.T) {
t.Skip("Prism tests are disabled")
baseURL := "http://localhost:4010"
if envURL, ok := os.LookupEnv("TEST_API_BASE_URL"); ok {
@@ -26,7 +26,8 @@ func TestFileList(t *testing.T) {
option.WithBaseURL(baseURL),
)
_, err := client.File.List(context.TODO(), opencode.FileListParams{
- Path: opencode.F("path"),
+ Path: opencode.F("path"),
+ Directory: opencode.F("directory"),
})
if err != nil {
var apierr *opencode.Error
@@ -37,7 +38,7 @@ func TestFileList(t *testing.T) {
}
}
-func TestFileRead(t *testing.T) {
+func TestFileReadWithOptionalParams(t *testing.T) {
t.Skip("Prism tests are disabled")
baseURL := "http://localhost:4010"
if envURL, ok := os.LookupEnv("TEST_API_BASE_URL"); ok {
@@ -50,7 +51,8 @@ func TestFileRead(t *testing.T) {
option.WithBaseURL(baseURL),
)
_, err := client.File.Read(context.TODO(), opencode.FileReadParams{
- Path: opencode.F("path"),
+ Path: opencode.F("path"),
+ Directory: opencode.F("directory"),
})
if err != nil {
var apierr *opencode.Error
@@ -61,7 +63,7 @@ func TestFileRead(t *testing.T) {
}
}
-func TestFileStatus(t *testing.T) {
+func TestFileStatusWithOptionalParams(t *testing.T) {
t.Skip("Prism tests are disabled")
baseURL := "http://localhost:4010"
if envURL, ok := os.LookupEnv("TEST_API_BASE_URL"); ok {
@@ -73,7 +75,9 @@ func TestFileStatus(t *testing.T) {
client := opencode.NewClient(
option.WithBaseURL(baseURL),
)
- _, err := client.File.Status(context.TODO())
+ _, err := client.File.Status(context.TODO(), opencode.FileStatusParams{
+ Directory: opencode.F("directory"),
+ })
if err != nil {
var apierr *opencode.Error
if errors.As(err, &apierr) {
diff --git a/find.go b/find.go
index a993a35..e869116 100644
--- a/find.go
+++ b/find.go
@@ -290,7 +290,8 @@ func (r findTextResponseSubmatchesMatchJSON) RawJSON() string {
}
type FindFilesParams struct {
- Query param.Field[string] `query:"query,required"`
+ Query param.Field[string] `query:"query,required"`
+ Directory param.Field[string] `query:"directory"`
}
// URLQuery serializes [FindFilesParams]'s query parameters as `url.Values`.
@@ -302,7 +303,8 @@ func (r FindFilesParams) URLQuery() (v url.Values) {
}
type FindSymbolsParams struct {
- Query param.Field[string] `query:"query,required"`
+ Query param.Field[string] `query:"query,required"`
+ Directory param.Field[string] `query:"directory"`
}
// URLQuery serializes [FindSymbolsParams]'s query parameters as `url.Values`.
@@ -314,7 +316,8 @@ func (r FindSymbolsParams) URLQuery() (v url.Values) {
}
type FindTextParams struct {
- Pattern param.Field[string] `query:"pattern,required"`
+ Pattern param.Field[string] `query:"pattern,required"`
+ Directory param.Field[string] `query:"directory"`
}
// URLQuery serializes [FindTextParams]'s query parameters as `url.Values`.
diff --git a/find_test.go b/find_test.go
index 22b5b95..901a895 100644
--- a/find_test.go
+++ b/find_test.go
@@ -13,7 +13,7 @@ import (
"github.com/sst/opencode-sdk-go/option"
)
-func TestFindFiles(t *testing.T) {
+func TestFindFilesWithOptionalParams(t *testing.T) {
t.Skip("Prism tests are disabled")
baseURL := "http://localhost:4010"
if envURL, ok := os.LookupEnv("TEST_API_BASE_URL"); ok {
@@ -26,7 +26,8 @@ func TestFindFiles(t *testing.T) {
option.WithBaseURL(baseURL),
)
_, err := client.Find.Files(context.TODO(), opencode.FindFilesParams{
- Query: opencode.F("query"),
+ Query: opencode.F("query"),
+ Directory: opencode.F("directory"),
})
if err != nil {
var apierr *opencode.Error
@@ -37,7 +38,7 @@ func TestFindFiles(t *testing.T) {
}
}
-func TestFindSymbols(t *testing.T) {
+func TestFindSymbolsWithOptionalParams(t *testing.T) {
t.Skip("Prism tests are disabled")
baseURL := "http://localhost:4010"
if envURL, ok := os.LookupEnv("TEST_API_BASE_URL"); ok {
@@ -50,7 +51,8 @@ func TestFindSymbols(t *testing.T) {
option.WithBaseURL(baseURL),
)
_, err := client.Find.Symbols(context.TODO(), opencode.FindSymbolsParams{
- Query: opencode.F("query"),
+ Query: opencode.F("query"),
+ Directory: opencode.F("directory"),
})
if err != nil {
var apierr *opencode.Error
@@ -61,7 +63,7 @@ func TestFindSymbols(t *testing.T) {
}
}
-func TestFindText(t *testing.T) {
+func TestFindTextWithOptionalParams(t *testing.T) {
t.Skip("Prism tests are disabled")
baseURL := "http://localhost:4010"
if envURL, ok := os.LookupEnv("TEST_API_BASE_URL"); ok {
@@ -74,7 +76,8 @@ func TestFindText(t *testing.T) {
option.WithBaseURL(baseURL),
)
_, err := client.Find.Text(context.TODO(), opencode.FindTextParams{
- Pattern: opencode.F("pattern"),
+ Pattern: opencode.F("pattern"),
+ Directory: opencode.F("directory"),
})
if err != nil {
var apierr *opencode.Error
diff --git a/path.go b/path.go
index 91a0fda..63e5026 100644
--- a/path.go
+++ b/path.go
@@ -5,8 +5,11 @@ package opencode
import (
"context"
"net/http"
+ "net/url"
"github.com/sst/opencode-sdk-go/internal/apijson"
+ "github.com/sst/opencode-sdk-go/internal/apiquery"
+ "github.com/sst/opencode-sdk-go/internal/param"
"github.com/sst/opencode-sdk-go/internal/requestconfig"
"github.com/sst/opencode-sdk-go/option"
)
@@ -31,10 +34,10 @@ func NewPathService(opts ...option.RequestOption) (r *PathService) {
}
// Get the current path
-func (r *PathService) Get(ctx context.Context, opts ...option.RequestOption) (res *Path, err error) {
+func (r *PathService) Get(ctx context.Context, query PathGetParams, opts ...option.RequestOption) (res *Path, err error) {
opts = append(r.Options[:], opts...)
path := "path"
- err = requestconfig.ExecuteNewRequest(ctx, http.MethodGet, path, nil, &res, opts...)
+ err = requestconfig.ExecuteNewRequest(ctx, http.MethodGet, path, query, &res, opts...)
return
}
@@ -63,3 +66,15 @@ func (r *Path) UnmarshalJSON(data []byte) (err error) {
func (r pathJSON) RawJSON() string {
return r.raw
}
+
+type PathGetParams struct {
+ Directory param.Field[string] `query:"directory"`
+}
+
+// URLQuery serializes [PathGetParams]'s query parameters as `url.Values`.
+func (r PathGetParams) URLQuery() (v url.Values) {
+ return apiquery.MarshalWithSettings(r, apiquery.QuerySettings{
+ ArrayFormat: apiquery.ArrayQueryFormatComma,
+ NestedFormat: apiquery.NestedQueryFormatBrackets,
+ })
+}
diff --git a/path_test.go b/path_test.go
index e8b274a..08273ce 100644
--- a/path_test.go
+++ b/path_test.go
@@ -13,7 +13,7 @@ import (
"github.com/sst/opencode-sdk-go/option"
)
-func TestPathGet(t *testing.T) {
+func TestPathGetWithOptionalParams(t *testing.T) {
t.Skip("Prism tests are disabled")
baseURL := "http://localhost:4010"
if envURL, ok := os.LookupEnv("TEST_API_BASE_URL"); ok {
@@ -25,7 +25,9 @@ func TestPathGet(t *testing.T) {
client := opencode.NewClient(
option.WithBaseURL(baseURL),
)
- _, err := client.Path.Get(context.TODO())
+ _, err := client.Path.Get(context.TODO(), opencode.PathGetParams{
+ Directory: opencode.F("directory"),
+ })
if err != nil {
var apierr *opencode.Error
if errors.As(err, &apierr) {
diff --git a/project.go b/project.go
index 73a0ba8..3b349da 100644
--- a/project.go
+++ b/project.go
@@ -5,8 +5,11 @@ package opencode
import (
"context"
"net/http"
+ "net/url"
"github.com/sst/opencode-sdk-go/internal/apijson"
+ "github.com/sst/opencode-sdk-go/internal/apiquery"
+ "github.com/sst/opencode-sdk-go/internal/param"
"github.com/sst/opencode-sdk-go/internal/requestconfig"
"github.com/sst/opencode-sdk-go/option"
)
@@ -31,18 +34,18 @@ func NewProjectService(opts ...option.RequestOption) (r *ProjectService) {
}
// List all projects
-func (r *ProjectService) List(ctx context.Context, opts ...option.RequestOption) (res *[]Project, err error) {
+func (r *ProjectService) List(ctx context.Context, query ProjectListParams, opts ...option.RequestOption) (res *[]Project, err error) {
opts = append(r.Options[:], opts...)
path := "project"
- err = requestconfig.ExecuteNewRequest(ctx, http.MethodGet, path, nil, &res, opts...)
+ err = requestconfig.ExecuteNewRequest(ctx, http.MethodGet, path, query, &res, opts...)
return
}
// Get the current project
-func (r *ProjectService) Current(ctx context.Context, opts ...option.RequestOption) (res *Project, err error) {
+func (r *ProjectService) Current(ctx context.Context, query ProjectCurrentParams, opts ...option.RequestOption) (res *Project, err error) {
opts = append(r.Options[:], opts...)
path := "project/current"
- err = requestconfig.ExecuteNewRequest(ctx, http.MethodGet, path, nil, &res, opts...)
+ err = requestconfig.ExecuteNewRequest(ctx, http.MethodGet, path, query, &res, opts...)
return
}
@@ -107,3 +110,27 @@ func (r ProjectVcs) IsKnown() bool {
}
return false
}
+
+type ProjectListParams struct {
+ Directory param.Field[string] `query:"directory"`
+}
+
+// URLQuery serializes [ProjectListParams]'s query parameters as `url.Values`.
+func (r ProjectListParams) URLQuery() (v url.Values) {
+ return apiquery.MarshalWithSettings(r, apiquery.QuerySettings{
+ ArrayFormat: apiquery.ArrayQueryFormatComma,
+ NestedFormat: apiquery.NestedQueryFormatBrackets,
+ })
+}
+
+type ProjectCurrentParams struct {
+ Directory param.Field[string] `query:"directory"`
+}
+
+// URLQuery serializes [ProjectCurrentParams]'s query parameters as `url.Values`.
+func (r ProjectCurrentParams) URLQuery() (v url.Values) {
+ return apiquery.MarshalWithSettings(r, apiquery.QuerySettings{
+ ArrayFormat: apiquery.ArrayQueryFormatComma,
+ NestedFormat: apiquery.NestedQueryFormatBrackets,
+ })
+}
diff --git a/project_test.go b/project_test.go
index 20c8ca2..adf3dbf 100644
--- a/project_test.go
+++ b/project_test.go
@@ -13,7 +13,7 @@ import (
"github.com/sst/opencode-sdk-go/option"
)
-func TestProjectList(t *testing.T) {
+func TestProjectListWithOptionalParams(t *testing.T) {
t.Skip("Prism tests are disabled")
baseURL := "http://localhost:4010"
if envURL, ok := os.LookupEnv("TEST_API_BASE_URL"); ok {
@@ -25,7 +25,9 @@ func TestProjectList(t *testing.T) {
client := opencode.NewClient(
option.WithBaseURL(baseURL),
)
- _, err := client.Project.List(context.TODO())
+ _, err := client.Project.List(context.TODO(), opencode.ProjectListParams{
+ Directory: opencode.F("directory"),
+ })
if err != nil {
var apierr *opencode.Error
if errors.As(err, &apierr) {
@@ -35,7 +37,7 @@ func TestProjectList(t *testing.T) {
}
}
-func TestProjectCurrent(t *testing.T) {
+func TestProjectCurrentWithOptionalParams(t *testing.T) {
t.Skip("Prism tests are disabled")
baseURL := "http://localhost:4010"
if envURL, ok := os.LookupEnv("TEST_API_BASE_URL"); ok {
@@ -47,7 +49,9 @@ func TestProjectCurrent(t *testing.T) {
client := opencode.NewClient(
option.WithBaseURL(baseURL),
)
- _, err := client.Project.Current(context.TODO())
+ _, err := client.Project.Current(context.TODO(), opencode.ProjectCurrentParams{
+ Directory: opencode.F("directory"),
+ })
if err != nil {
var apierr *opencode.Error
if errors.As(err, &apierr) {
diff --git a/session.go b/session.go
index 5de9e2a..260724e 100644
--- a/session.go
+++ b/session.go
@@ -49,99 +49,99 @@ func (r *SessionService) New(ctx context.Context, params SessionNewParams, opts
}
// Update session properties
-func (r *SessionService) Update(ctx context.Context, id string, body SessionUpdateParams, opts ...option.RequestOption) (res *Session, err error) {
+func (r *SessionService) Update(ctx context.Context, id string, params SessionUpdateParams, opts ...option.RequestOption) (res *Session, err error) {
opts = append(r.Options[:], opts...)
if id == "" {
err = errors.New("missing required id parameter")
return
}
path := fmt.Sprintf("session/%s", id)
- err = requestconfig.ExecuteNewRequest(ctx, http.MethodPatch, path, body, &res, opts...)
+ err = requestconfig.ExecuteNewRequest(ctx, http.MethodPatch, path, params, &res, opts...)
return
}
// List all sessions
-func (r *SessionService) List(ctx context.Context, opts ...option.RequestOption) (res *[]Session, err error) {
+func (r *SessionService) List(ctx context.Context, query SessionListParams, opts ...option.RequestOption) (res *[]Session, err error) {
opts = append(r.Options[:], opts...)
path := "session"
- err = requestconfig.ExecuteNewRequest(ctx, http.MethodGet, path, nil, &res, opts...)
+ err = requestconfig.ExecuteNewRequest(ctx, http.MethodGet, path, query, &res, opts...)
return
}
// Delete a session and all its data
-func (r *SessionService) Delete(ctx context.Context, id string, opts ...option.RequestOption) (res *bool, err error) {
+func (r *SessionService) Delete(ctx context.Context, id string, body SessionDeleteParams, opts ...option.RequestOption) (res *bool, err error) {
opts = append(r.Options[:], opts...)
if id == "" {
err = errors.New("missing required id parameter")
return
}
path := fmt.Sprintf("session/%s", id)
- err = requestconfig.ExecuteNewRequest(ctx, http.MethodDelete, path, nil, &res, opts...)
+ err = requestconfig.ExecuteNewRequest(ctx, http.MethodDelete, path, body, &res, opts...)
return
}
// Abort a session
-func (r *SessionService) Abort(ctx context.Context, id string, opts ...option.RequestOption) (res *bool, err error) {
+func (r *SessionService) Abort(ctx context.Context, id string, body SessionAbortParams, opts ...option.RequestOption) (res *bool, err error) {
opts = append(r.Options[:], opts...)
if id == "" {
err = errors.New("missing required id parameter")
return
}
path := fmt.Sprintf("session/%s/abort", id)
- err = requestconfig.ExecuteNewRequest(ctx, http.MethodPost, path, nil, &res, opts...)
+ err = requestconfig.ExecuteNewRequest(ctx, http.MethodPost, path, body, &res, opts...)
return
}
// Get a session's children
-func (r *SessionService) Children(ctx context.Context, id string, opts ...option.RequestOption) (res *[]Session, err error) {
+func (r *SessionService) Children(ctx context.Context, id string, query SessionChildrenParams, opts ...option.RequestOption) (res *[]Session, err error) {
opts = append(r.Options[:], opts...)
if id == "" {
err = errors.New("missing required id parameter")
return
}
path := fmt.Sprintf("session/%s/children", id)
- err = requestconfig.ExecuteNewRequest(ctx, http.MethodGet, path, nil, &res, opts...)
+ err = requestconfig.ExecuteNewRequest(ctx, http.MethodGet, path, query, &res, opts...)
return
}
// Send a new command to a session
-func (r *SessionService) Command(ctx context.Context, id string, body SessionCommandParams, opts ...option.RequestOption) (res *SessionCommandResponse, err error) {
+func (r *SessionService) Command(ctx context.Context, id string, params SessionCommandParams, opts ...option.RequestOption) (res *SessionCommandResponse, err error) {
opts = append(r.Options[:], opts...)
if id == "" {
err = errors.New("missing required id parameter")
return
}
path := fmt.Sprintf("session/%s/command", id)
- err = requestconfig.ExecuteNewRequest(ctx, http.MethodPost, path, body, &res, opts...)
+ err = requestconfig.ExecuteNewRequest(ctx, http.MethodPost, path, params, &res, opts...)
return
}
// Get session
-func (r *SessionService) Get(ctx context.Context, id string, opts ...option.RequestOption) (res *Session, err error) {
+func (r *SessionService) Get(ctx context.Context, id string, query SessionGetParams, opts ...option.RequestOption) (res *Session, err error) {
opts = append(r.Options[:], opts...)
if id == "" {
err = errors.New("missing required id parameter")
return
}
path := fmt.Sprintf("session/%s", id)
- err = requestconfig.ExecuteNewRequest(ctx, http.MethodGet, path, nil, &res, opts...)
+ err = requestconfig.ExecuteNewRequest(ctx, http.MethodGet, path, query, &res, opts...)
return
}
// Analyze the app and create an AGENTS.md file
-func (r *SessionService) Init(ctx context.Context, id string, body SessionInitParams, opts ...option.RequestOption) (res *bool, err error) {
+func (r *SessionService) Init(ctx context.Context, id string, params SessionInitParams, opts ...option.RequestOption) (res *bool, err error) {
opts = append(r.Options[:], opts...)
if id == "" {
err = errors.New("missing required id parameter")
return
}
path := fmt.Sprintf("session/%s/init", id)
- err = requestconfig.ExecuteNewRequest(ctx, http.MethodPost, path, body, &res, opts...)
+ err = requestconfig.ExecuteNewRequest(ctx, http.MethodPost, path, params, &res, opts...)
return
}
// Get a message from a session
-func (r *SessionService) Message(ctx context.Context, id string, messageID string, opts ...option.RequestOption) (res *SessionMessageResponse, err error) {
+func (r *SessionService) Message(ctx context.Context, id string, messageID string, query SessionMessageParams, opts ...option.RequestOption) (res *SessionMessageResponse, err error) {
opts = append(r.Options[:], opts...)
if id == "" {
err = errors.New("missing required id parameter")
@@ -152,103 +152,103 @@ func (r *SessionService) Message(ctx context.Context, id string, messageID strin
return
}
path := fmt.Sprintf("session/%s/message/%s", id, messageID)
- err = requestconfig.ExecuteNewRequest(ctx, http.MethodGet, path, nil, &res, opts...)
+ err = requestconfig.ExecuteNewRequest(ctx, http.MethodGet, path, query, &res, opts...)
return
}
// List messages for a session
-func (r *SessionService) Messages(ctx context.Context, id string, opts ...option.RequestOption) (res *[]SessionMessagesResponse, err error) {
+func (r *SessionService) Messages(ctx context.Context, id string, query SessionMessagesParams, opts ...option.RequestOption) (res *[]SessionMessagesResponse, err error) {
opts = append(r.Options[:], opts...)
if id == "" {
err = errors.New("missing required id parameter")
return
}
path := fmt.Sprintf("session/%s/message", id)
- err = requestconfig.ExecuteNewRequest(ctx, http.MethodGet, path, nil, &res, opts...)
+ err = requestconfig.ExecuteNewRequest(ctx, http.MethodGet, path, query, &res, opts...)
return
}
// Create and send a new message to a session
-func (r *SessionService) Prompt(ctx context.Context, id string, body SessionPromptParams, opts ...option.RequestOption) (res *SessionPromptResponse, err error) {
+func (r *SessionService) Prompt(ctx context.Context, id string, params SessionPromptParams, opts ...option.RequestOption) (res *SessionPromptResponse, err error) {
opts = append(r.Options[:], opts...)
if id == "" {
err = errors.New("missing required id parameter")
return
}
path := fmt.Sprintf("session/%s/message", id)
- err = requestconfig.ExecuteNewRequest(ctx, http.MethodPost, path, body, &res, opts...)
+ err = requestconfig.ExecuteNewRequest(ctx, http.MethodPost, path, params, &res, opts...)
return
}
// Revert a message
-func (r *SessionService) Revert(ctx context.Context, id string, body SessionRevertParams, opts ...option.RequestOption) (res *Session, err error) {
+func (r *SessionService) Revert(ctx context.Context, id string, params SessionRevertParams, opts ...option.RequestOption) (res *Session, err error) {
opts = append(r.Options[:], opts...)
if id == "" {
err = errors.New("missing required id parameter")
return
}
path := fmt.Sprintf("session/%s/revert", id)
- err = requestconfig.ExecuteNewRequest(ctx, http.MethodPost, path, body, &res, opts...)
+ err = requestconfig.ExecuteNewRequest(ctx, http.MethodPost, path, params, &res, opts...)
return
}
// Share a session
-func (r *SessionService) Share(ctx context.Context, id string, opts ...option.RequestOption) (res *Session, err error) {
+func (r *SessionService) Share(ctx context.Context, id string, body SessionShareParams, opts ...option.RequestOption) (res *Session, err error) {
opts = append(r.Options[:], opts...)
if id == "" {
err = errors.New("missing required id parameter")
return
}
path := fmt.Sprintf("session/%s/share", id)
- err = requestconfig.ExecuteNewRequest(ctx, http.MethodPost, path, nil, &res, opts...)
+ err = requestconfig.ExecuteNewRequest(ctx, http.MethodPost, path, body, &res, opts...)
return
}
// Run a shell command
-func (r *SessionService) Shell(ctx context.Context, id string, body SessionShellParams, opts ...option.RequestOption) (res *AssistantMessage, err error) {
+func (r *SessionService) Shell(ctx context.Context, id string, params SessionShellParams, opts ...option.RequestOption) (res *AssistantMessage, err error) {
opts = append(r.Options[:], opts...)
if id == "" {
err = errors.New("missing required id parameter")
return
}
path := fmt.Sprintf("session/%s/shell", id)
- err = requestconfig.ExecuteNewRequest(ctx, http.MethodPost, path, body, &res, opts...)
+ err = requestconfig.ExecuteNewRequest(ctx, http.MethodPost, path, params, &res, opts...)
return
}
// Summarize the session
-func (r *SessionService) Summarize(ctx context.Context, id string, body SessionSummarizeParams, opts ...option.RequestOption) (res *bool, err error) {
+func (r *SessionService) Summarize(ctx context.Context, id string, params SessionSummarizeParams, opts ...option.RequestOption) (res *bool, err error) {
opts = append(r.Options[:], opts...)
if id == "" {
err = errors.New("missing required id parameter")
return
}
path := fmt.Sprintf("session/%s/summarize", id)
- err = requestconfig.ExecuteNewRequest(ctx, http.MethodPost, path, body, &res, opts...)
+ err = requestconfig.ExecuteNewRequest(ctx, http.MethodPost, path, params, &res, opts...)
return
}
// Restore all reverted messages
-func (r *SessionService) Unrevert(ctx context.Context, id string, opts ...option.RequestOption) (res *Session, err error) {
+func (r *SessionService) Unrevert(ctx context.Context, id string, body SessionUnrevertParams, opts ...option.RequestOption) (res *Session, err error) {
opts = append(r.Options[:], opts...)
if id == "" {
err = errors.New("missing required id parameter")
return
}
path := fmt.Sprintf("session/%s/unrevert", id)
- err = requestconfig.ExecuteNewRequest(ctx, http.MethodPost, path, nil, &res, opts...)
+ err = requestconfig.ExecuteNewRequest(ctx, http.MethodPost, path, body, &res, opts...)
return
}
// Unshare the session
-func (r *SessionService) Unshare(ctx context.Context, id string, opts ...option.RequestOption) (res *Session, err error) {
+func (r *SessionService) Unshare(ctx context.Context, id string, body SessionUnshareParams, opts ...option.RequestOption) (res *Session, err error) {
opts = append(r.Options[:], opts...)
if id == "" {
err = errors.New("missing required id parameter")
return
}
path := fmt.Sprintf("session/%s/share", id)
- err = requestconfig.ExecuteNewRequest(ctx, http.MethodDelete, path, nil, &res, opts...)
+ err = requestconfig.ExecuteNewRequest(ctx, http.MethodDelete, path, body, &res, opts...)
return
}
@@ -2390,16 +2390,74 @@ func (r SessionNewParams) URLQuery() (v url.Values) {
}
type SessionUpdateParams struct {
- Title param.Field[string] `json:"title"`
+ Directory param.Field[string] `query:"directory"`
+ Title param.Field[string] `json:"title"`
}
func (r SessionUpdateParams) MarshalJSON() (data []byte, err error) {
return apijson.MarshalRoot(r)
}
+// URLQuery serializes [SessionUpdateParams]'s query parameters as `url.Values`.
+func (r SessionUpdateParams) URLQuery() (v url.Values) {
+ return apiquery.MarshalWithSettings(r, apiquery.QuerySettings{
+ ArrayFormat: apiquery.ArrayQueryFormatComma,
+ NestedFormat: apiquery.NestedQueryFormatBrackets,
+ })
+}
+
+type SessionListParams struct {
+ Directory param.Field[string] `query:"directory"`
+}
+
+// URLQuery serializes [SessionListParams]'s query parameters as `url.Values`.
+func (r SessionListParams) URLQuery() (v url.Values) {
+ return apiquery.MarshalWithSettings(r, apiquery.QuerySettings{
+ ArrayFormat: apiquery.ArrayQueryFormatComma,
+ NestedFormat: apiquery.NestedQueryFormatBrackets,
+ })
+}
+
+type SessionDeleteParams struct {
+ Directory param.Field[string] `query:"directory"`
+}
+
+// URLQuery serializes [SessionDeleteParams]'s query parameters as `url.Values`.
+func (r SessionDeleteParams) URLQuery() (v url.Values) {
+ return apiquery.MarshalWithSettings(r, apiquery.QuerySettings{
+ ArrayFormat: apiquery.ArrayQueryFormatComma,
+ NestedFormat: apiquery.NestedQueryFormatBrackets,
+ })
+}
+
+type SessionAbortParams struct {
+ Directory param.Field[string] `query:"directory"`
+}
+
+// URLQuery serializes [SessionAbortParams]'s query parameters as `url.Values`.
+func (r SessionAbortParams) URLQuery() (v url.Values) {
+ return apiquery.MarshalWithSettings(r, apiquery.QuerySettings{
+ ArrayFormat: apiquery.ArrayQueryFormatComma,
+ NestedFormat: apiquery.NestedQueryFormatBrackets,
+ })
+}
+
+type SessionChildrenParams struct {
+ Directory param.Field[string] `query:"directory"`
+}
+
+// URLQuery serializes [SessionChildrenParams]'s query parameters as `url.Values`.
+func (r SessionChildrenParams) URLQuery() (v url.Values) {
+ return apiquery.MarshalWithSettings(r, apiquery.QuerySettings{
+ ArrayFormat: apiquery.ArrayQueryFormatComma,
+ NestedFormat: apiquery.NestedQueryFormatBrackets,
+ })
+}
+
type SessionCommandParams struct {
Arguments param.Field[string] `json:"arguments,required"`
Command param.Field[string] `json:"command,required"`
+ Directory param.Field[string] `query:"directory"`
Agent param.Field[string] `json:"agent"`
MessageID param.Field[string] `json:"messageID"`
Model param.Field[string] `json:"model"`
@@ -2409,18 +2467,72 @@ func (r SessionCommandParams) MarshalJSON() (data []byte, err error) {
return apijson.MarshalRoot(r)
}
+// URLQuery serializes [SessionCommandParams]'s query parameters as `url.Values`.
+func (r SessionCommandParams) URLQuery() (v url.Values) {
+ return apiquery.MarshalWithSettings(r, apiquery.QuerySettings{
+ ArrayFormat: apiquery.ArrayQueryFormatComma,
+ NestedFormat: apiquery.NestedQueryFormatBrackets,
+ })
+}
+
+type SessionGetParams struct {
+ Directory param.Field[string] `query:"directory"`
+}
+
+// URLQuery serializes [SessionGetParams]'s query parameters as `url.Values`.
+func (r SessionGetParams) URLQuery() (v url.Values) {
+ return apiquery.MarshalWithSettings(r, apiquery.QuerySettings{
+ ArrayFormat: apiquery.ArrayQueryFormatComma,
+ NestedFormat: apiquery.NestedQueryFormatBrackets,
+ })
+}
+
type SessionInitParams struct {
MessageID param.Field[string] `json:"messageID,required"`
ModelID param.Field[string] `json:"modelID,required"`
ProviderID param.Field[string] `json:"providerID,required"`
+ Directory param.Field[string] `query:"directory"`
}
func (r SessionInitParams) MarshalJSON() (data []byte, err error) {
return apijson.MarshalRoot(r)
}
+// URLQuery serializes [SessionInitParams]'s query parameters as `url.Values`.
+func (r SessionInitParams) URLQuery() (v url.Values) {
+ return apiquery.MarshalWithSettings(r, apiquery.QuerySettings{
+ ArrayFormat: apiquery.ArrayQueryFormatComma,
+ NestedFormat: apiquery.NestedQueryFormatBrackets,
+ })
+}
+
+type SessionMessageParams struct {
+ Directory param.Field[string] `query:"directory"`
+}
+
+// URLQuery serializes [SessionMessageParams]'s query parameters as `url.Values`.
+func (r SessionMessageParams) URLQuery() (v url.Values) {
+ return apiquery.MarshalWithSettings(r, apiquery.QuerySettings{
+ ArrayFormat: apiquery.ArrayQueryFormatComma,
+ NestedFormat: apiquery.NestedQueryFormatBrackets,
+ })
+}
+
+type SessionMessagesParams struct {
+ Directory param.Field[string] `query:"directory"`
+}
+
+// URLQuery serializes [SessionMessagesParams]'s query parameters as `url.Values`.
+func (r SessionMessagesParams) URLQuery() (v url.Values) {
+ return apiquery.MarshalWithSettings(r, apiquery.QuerySettings{
+ ArrayFormat: apiquery.ArrayQueryFormatComma,
+ NestedFormat: apiquery.NestedQueryFormatBrackets,
+ })
+}
+
type SessionPromptParams struct {
Parts param.Field[[]SessionPromptParamsPartUnion] `json:"parts,required"`
+ Directory param.Field[string] `query:"directory"`
Agent param.Field[string] `json:"agent"`
MessageID param.Field[string] `json:"messageID"`
Model param.Field[SessionPromptParamsModel] `json:"model"`
@@ -2432,6 +2544,14 @@ func (r SessionPromptParams) MarshalJSON() (data []byte, err error) {
return apijson.MarshalRoot(r)
}
+// URLQuery serializes [SessionPromptParams]'s query parameters as `url.Values`.
+func (r SessionPromptParams) URLQuery() (v url.Values) {
+ return apiquery.MarshalWithSettings(r, apiquery.QuerySettings{
+ ArrayFormat: apiquery.ArrayQueryFormatComma,
+ NestedFormat: apiquery.NestedQueryFormatBrackets,
+ })
+}
+
type SessionPromptParamsPart struct {
Type param.Field[SessionPromptParamsPartsType] `json:"type,required"`
ID param.Field[string] `json:"id"`
@@ -2484,6 +2604,7 @@ func (r SessionPromptParamsModel) MarshalJSON() (data []byte, err error) {
type SessionRevertParams struct {
MessageID param.Field[string] `json:"messageID,required"`
+ Directory param.Field[string] `query:"directory"`
PartID param.Field[string] `json:"partID"`
}
@@ -2491,20 +2612,82 @@ func (r SessionRevertParams) MarshalJSON() (data []byte, err error) {
return apijson.MarshalRoot(r)
}
+// URLQuery serializes [SessionRevertParams]'s query parameters as `url.Values`.
+func (r SessionRevertParams) URLQuery() (v url.Values) {
+ return apiquery.MarshalWithSettings(r, apiquery.QuerySettings{
+ ArrayFormat: apiquery.ArrayQueryFormatComma,
+ NestedFormat: apiquery.NestedQueryFormatBrackets,
+ })
+}
+
+type SessionShareParams struct {
+ Directory param.Field[string] `query:"directory"`
+}
+
+// URLQuery serializes [SessionShareParams]'s query parameters as `url.Values`.
+func (r SessionShareParams) URLQuery() (v url.Values) {
+ return apiquery.MarshalWithSettings(r, apiquery.QuerySettings{
+ ArrayFormat: apiquery.ArrayQueryFormatComma,
+ NestedFormat: apiquery.NestedQueryFormatBrackets,
+ })
+}
+
type SessionShellParams struct {
- Agent param.Field[string] `json:"agent,required"`
- Command param.Field[string] `json:"command,required"`
+ Agent param.Field[string] `json:"agent,required"`
+ Command param.Field[string] `json:"command,required"`
+ Directory param.Field[string] `query:"directory"`
}
func (r SessionShellParams) MarshalJSON() (data []byte, err error) {
return apijson.MarshalRoot(r)
}
+// URLQuery serializes [SessionShellParams]'s query parameters as `url.Values`.
+func (r SessionShellParams) URLQuery() (v url.Values) {
+ return apiquery.MarshalWithSettings(r, apiquery.QuerySettings{
+ ArrayFormat: apiquery.ArrayQueryFormatComma,
+ NestedFormat: apiquery.NestedQueryFormatBrackets,
+ })
+}
+
type SessionSummarizeParams struct {
ModelID param.Field[string] `json:"modelID,required"`
ProviderID param.Field[string] `json:"providerID,required"`
+ Directory param.Field[string] `query:"directory"`
}
func (r SessionSummarizeParams) MarshalJSON() (data []byte, err error) {
return apijson.MarshalRoot(r)
}
+
+// URLQuery serializes [SessionSummarizeParams]'s query parameters as `url.Values`.
+func (r SessionSummarizeParams) URLQuery() (v url.Values) {
+ return apiquery.MarshalWithSettings(r, apiquery.QuerySettings{
+ ArrayFormat: apiquery.ArrayQueryFormatComma,
+ NestedFormat: apiquery.NestedQueryFormatBrackets,
+ })
+}
+
+type SessionUnrevertParams struct {
+ Directory param.Field[string] `query:"directory"`
+}
+
+// URLQuery serializes [SessionUnrevertParams]'s query parameters as `url.Values`.
+func (r SessionUnrevertParams) URLQuery() (v url.Values) {
+ return apiquery.MarshalWithSettings(r, apiquery.QuerySettings{
+ ArrayFormat: apiquery.ArrayQueryFormatComma,
+ NestedFormat: apiquery.NestedQueryFormatBrackets,
+ })
+}
+
+type SessionUnshareParams struct {
+ Directory param.Field[string] `query:"directory"`
+}
+
+// URLQuery serializes [SessionUnshareParams]'s query parameters as `url.Values`.
+func (r SessionUnshareParams) URLQuery() (v url.Values) {
+ return apiquery.MarshalWithSettings(r, apiquery.QuerySettings{
+ ArrayFormat: apiquery.ArrayQueryFormatComma,
+ NestedFormat: apiquery.NestedQueryFormatBrackets,
+ })
+}
diff --git a/session_test.go b/session_test.go
index 8ef76bb..61404d8 100644
--- a/session_test.go
+++ b/session_test.go
@@ -55,7 +55,8 @@ func TestSessionUpdateWithOptionalParams(t *testing.T) {
context.TODO(),
"id",
opencode.SessionUpdateParams{
- Title: opencode.F("title"),
+ Directory: opencode.F("directory"),
+ Title: opencode.F("title"),
},
)
if err != nil {
@@ -67,7 +68,7 @@ func TestSessionUpdateWithOptionalParams(t *testing.T) {
}
}
-func TestSessionList(t *testing.T) {
+func TestSessionListWithOptionalParams(t *testing.T) {
t.Skip("Prism tests are disabled")
baseURL := "http://localhost:4010"
if envURL, ok := os.LookupEnv("TEST_API_BASE_URL"); ok {
@@ -79,7 +80,9 @@ func TestSessionList(t *testing.T) {
client := opencode.NewClient(
option.WithBaseURL(baseURL),
)
- _, err := client.Session.List(context.TODO())
+ _, err := client.Session.List(context.TODO(), opencode.SessionListParams{
+ Directory: opencode.F("directory"),
+ })
if err != nil {
var apierr *opencode.Error
if errors.As(err, &apierr) {
@@ -89,7 +92,7 @@ func TestSessionList(t *testing.T) {
}
}
-func TestSessionDelete(t *testing.T) {
+func TestSessionDeleteWithOptionalParams(t *testing.T) {
t.Skip("Prism tests are disabled")
baseURL := "http://localhost:4010"
if envURL, ok := os.LookupEnv("TEST_API_BASE_URL"); ok {
@@ -101,7 +104,13 @@ func TestSessionDelete(t *testing.T) {
client := opencode.NewClient(
option.WithBaseURL(baseURL),
)
- _, err := client.Session.Delete(context.TODO(), "id")
+ _, err := client.Session.Delete(
+ context.TODO(),
+ "id",
+ opencode.SessionDeleteParams{
+ Directory: opencode.F("directory"),
+ },
+ )
if err != nil {
var apierr *opencode.Error
if errors.As(err, &apierr) {
@@ -111,7 +120,7 @@ func TestSessionDelete(t *testing.T) {
}
}
-func TestSessionAbort(t *testing.T) {
+func TestSessionAbortWithOptionalParams(t *testing.T) {
t.Skip("Prism tests are disabled")
baseURL := "http://localhost:4010"
if envURL, ok := os.LookupEnv("TEST_API_BASE_URL"); ok {
@@ -123,7 +132,13 @@ func TestSessionAbort(t *testing.T) {
client := opencode.NewClient(
option.WithBaseURL(baseURL),
)
- _, err := client.Session.Abort(context.TODO(), "id")
+ _, err := client.Session.Abort(
+ context.TODO(),
+ "id",
+ opencode.SessionAbortParams{
+ Directory: opencode.F("directory"),
+ },
+ )
if err != nil {
var apierr *opencode.Error
if errors.As(err, &apierr) {
@@ -133,7 +148,7 @@ func TestSessionAbort(t *testing.T) {
}
}
-func TestSessionChildren(t *testing.T) {
+func TestSessionChildrenWithOptionalParams(t *testing.T) {
t.Skip("Prism tests are disabled")
baseURL := "http://localhost:4010"
if envURL, ok := os.LookupEnv("TEST_API_BASE_URL"); ok {
@@ -145,7 +160,13 @@ func TestSessionChildren(t *testing.T) {
client := opencode.NewClient(
option.WithBaseURL(baseURL),
)
- _, err := client.Session.Children(context.TODO(), "id")
+ _, err := client.Session.Children(
+ context.TODO(),
+ "id",
+ opencode.SessionChildrenParams{
+ Directory: opencode.F("directory"),
+ },
+ )
if err != nil {
var apierr *opencode.Error
if errors.As(err, &apierr) {
@@ -173,6 +194,7 @@ func TestSessionCommandWithOptionalParams(t *testing.T) {
opencode.SessionCommandParams{
Arguments: opencode.F("arguments"),
Command: opencode.F("command"),
+ Directory: opencode.F("directory"),
Agent: opencode.F("agent"),
MessageID: opencode.F("msgJ!"),
Model: opencode.F("model"),
@@ -187,7 +209,7 @@ func TestSessionCommandWithOptionalParams(t *testing.T) {
}
}
-func TestSessionGet(t *testing.T) {
+func TestSessionGetWithOptionalParams(t *testing.T) {
t.Skip("Prism tests are disabled")
baseURL := "http://localhost:4010"
if envURL, ok := os.LookupEnv("TEST_API_BASE_URL"); ok {
@@ -199,7 +221,13 @@ func TestSessionGet(t *testing.T) {
client := opencode.NewClient(
option.WithBaseURL(baseURL),
)
- _, err := client.Session.Get(context.TODO(), "id")
+ _, err := client.Session.Get(
+ context.TODO(),
+ "id",
+ opencode.SessionGetParams{
+ Directory: opencode.F("directory"),
+ },
+ )
if err != nil {
var apierr *opencode.Error
if errors.As(err, &apierr) {
@@ -209,7 +237,7 @@ func TestSessionGet(t *testing.T) {
}
}
-func TestSessionInit(t *testing.T) {
+func TestSessionInitWithOptionalParams(t *testing.T) {
t.Skip("Prism tests are disabled")
baseURL := "http://localhost:4010"
if envURL, ok := os.LookupEnv("TEST_API_BASE_URL"); ok {
@@ -228,6 +256,7 @@ func TestSessionInit(t *testing.T) {
MessageID: opencode.F("messageID"),
ModelID: opencode.F("modelID"),
ProviderID: opencode.F("providerID"),
+ Directory: opencode.F("directory"),
},
)
if err != nil {
@@ -239,7 +268,7 @@ func TestSessionInit(t *testing.T) {
}
}
-func TestSessionMessage(t *testing.T) {
+func TestSessionMessageWithOptionalParams(t *testing.T) {
t.Skip("Prism tests are disabled")
baseURL := "http://localhost:4010"
if envURL, ok := os.LookupEnv("TEST_API_BASE_URL"); ok {
@@ -255,6 +284,9 @@ func TestSessionMessage(t *testing.T) {
context.TODO(),
"id",
"messageID",
+ opencode.SessionMessageParams{
+ Directory: opencode.F("directory"),
+ },
)
if err != nil {
var apierr *opencode.Error
@@ -265,7 +297,7 @@ func TestSessionMessage(t *testing.T) {
}
}
-func TestSessionMessages(t *testing.T) {
+func TestSessionMessagesWithOptionalParams(t *testing.T) {
t.Skip("Prism tests are disabled")
baseURL := "http://localhost:4010"
if envURL, ok := os.LookupEnv("TEST_API_BASE_URL"); ok {
@@ -277,7 +309,13 @@ func TestSessionMessages(t *testing.T) {
client := opencode.NewClient(
option.WithBaseURL(baseURL),
)
- _, err := client.Session.Messages(context.TODO(), "id")
+ _, err := client.Session.Messages(
+ context.TODO(),
+ "id",
+ opencode.SessionMessagesParams{
+ Directory: opencode.F("directory"),
+ },
+ )
if err != nil {
var apierr *opencode.Error
if errors.As(err, &apierr) {
@@ -313,6 +351,7 @@ func TestSessionPromptWithOptionalParams(t *testing.T) {
End: opencode.F(0.000000),
}),
}}),
+ Directory: opencode.F("directory"),
Agent: opencode.F("agent"),
MessageID: opencode.F("msgJ!"),
Model: opencode.F(opencode.SessionPromptParamsModel{
@@ -351,6 +390,7 @@ func TestSessionRevertWithOptionalParams(t *testing.T) {
"id",
opencode.SessionRevertParams{
MessageID: opencode.F("msgJ!"),
+ Directory: opencode.F("directory"),
PartID: opencode.F("prtJ!"),
},
)
@@ -363,7 +403,7 @@ func TestSessionRevertWithOptionalParams(t *testing.T) {
}
}
-func TestSessionShare(t *testing.T) {
+func TestSessionShareWithOptionalParams(t *testing.T) {
t.Skip("Prism tests are disabled")
baseURL := "http://localhost:4010"
if envURL, ok := os.LookupEnv("TEST_API_BASE_URL"); ok {
@@ -375,7 +415,13 @@ func TestSessionShare(t *testing.T) {
client := opencode.NewClient(
option.WithBaseURL(baseURL),
)
- _, err := client.Session.Share(context.TODO(), "id")
+ _, err := client.Session.Share(
+ context.TODO(),
+ "id",
+ opencode.SessionShareParams{
+ Directory: opencode.F("directory"),
+ },
+ )
if err != nil {
var apierr *opencode.Error
if errors.As(err, &apierr) {
@@ -385,7 +431,7 @@ func TestSessionShare(t *testing.T) {
}
}
-func TestSessionShell(t *testing.T) {
+func TestSessionShellWithOptionalParams(t *testing.T) {
t.Skip("Prism tests are disabled")
baseURL := "http://localhost:4010"
if envURL, ok := os.LookupEnv("TEST_API_BASE_URL"); ok {
@@ -401,8 +447,9 @@ func TestSessionShell(t *testing.T) {
context.TODO(),
"id",
opencode.SessionShellParams{
- Agent: opencode.F("agent"),
- Command: opencode.F("command"),
+ Agent: opencode.F("agent"),
+ Command: opencode.F("command"),
+ Directory: opencode.F("directory"),
},
)
if err != nil {
@@ -414,7 +461,7 @@ func TestSessionShell(t *testing.T) {
}
}
-func TestSessionSummarize(t *testing.T) {
+func TestSessionSummarizeWithOptionalParams(t *testing.T) {
t.Skip("Prism tests are disabled")
baseURL := "http://localhost:4010"
if envURL, ok := os.LookupEnv("TEST_API_BASE_URL"); ok {
@@ -432,6 +479,7 @@ func TestSessionSummarize(t *testing.T) {
opencode.SessionSummarizeParams{
ModelID: opencode.F("modelID"),
ProviderID: opencode.F("providerID"),
+ Directory: opencode.F("directory"),
},
)
if err != nil {
@@ -443,7 +491,7 @@ func TestSessionSummarize(t *testing.T) {
}
}
-func TestSessionUnrevert(t *testing.T) {
+func TestSessionUnrevertWithOptionalParams(t *testing.T) {
t.Skip("Prism tests are disabled")
baseURL := "http://localhost:4010"
if envURL, ok := os.LookupEnv("TEST_API_BASE_URL"); ok {
@@ -455,7 +503,13 @@ func TestSessionUnrevert(t *testing.T) {
client := opencode.NewClient(
option.WithBaseURL(baseURL),
)
- _, err := client.Session.Unrevert(context.TODO(), "id")
+ _, err := client.Session.Unrevert(
+ context.TODO(),
+ "id",
+ opencode.SessionUnrevertParams{
+ Directory: opencode.F("directory"),
+ },
+ )
if err != nil {
var apierr *opencode.Error
if errors.As(err, &apierr) {
@@ -465,7 +519,7 @@ func TestSessionUnrevert(t *testing.T) {
}
}
-func TestSessionUnshare(t *testing.T) {
+func TestSessionUnshareWithOptionalParams(t *testing.T) {
t.Skip("Prism tests are disabled")
baseURL := "http://localhost:4010"
if envURL, ok := os.LookupEnv("TEST_API_BASE_URL"); ok {
@@ -477,7 +531,13 @@ func TestSessionUnshare(t *testing.T) {
client := opencode.NewClient(
option.WithBaseURL(baseURL),
)
- _, err := client.Session.Unshare(context.TODO(), "id")
+ _, err := client.Session.Unshare(
+ context.TODO(),
+ "id",
+ opencode.SessionUnshareParams{
+ Directory: opencode.F("directory"),
+ },
+ )
if err != nil {
var apierr *opencode.Error
if errors.As(err, &apierr) {
diff --git a/sessionpermission.go b/sessionpermission.go
index 85e55bd..4d49bd8 100644
--- a/sessionpermission.go
+++ b/sessionpermission.go
@@ -7,8 +7,10 @@ import (
"errors"
"fmt"
"net/http"
+ "net/url"
"github.com/sst/opencode-sdk-go/internal/apijson"
+ "github.com/sst/opencode-sdk-go/internal/apiquery"
"github.com/sst/opencode-sdk-go/internal/param"
"github.com/sst/opencode-sdk-go/internal/requestconfig"
"github.com/sst/opencode-sdk-go/option"
@@ -34,7 +36,7 @@ func NewSessionPermissionService(opts ...option.RequestOption) (r *SessionPermis
}
// Respond to a permission request
-func (r *SessionPermissionService) Respond(ctx context.Context, id string, permissionID string, body SessionPermissionRespondParams, opts ...option.RequestOption) (res *bool, err error) {
+func (r *SessionPermissionService) Respond(ctx context.Context, id string, permissionID string, params SessionPermissionRespondParams, opts ...option.RequestOption) (res *bool, err error) {
opts = append(r.Options[:], opts...)
if id == "" {
err = errors.New("missing required id parameter")
@@ -45,7 +47,7 @@ func (r *SessionPermissionService) Respond(ctx context.Context, id string, permi
return
}
path := fmt.Sprintf("session/%s/permissions/%s", id, permissionID)
- err = requestconfig.ExecuteNewRequest(ctx, http.MethodPost, path, body, &res, opts...)
+ err = requestconfig.ExecuteNewRequest(ctx, http.MethodPost, path, params, &res, opts...)
return
}
@@ -106,13 +108,23 @@ func (r permissionTimeJSON) RawJSON() string {
}
type SessionPermissionRespondParams struct {
- Response param.Field[SessionPermissionRespondParamsResponse] `json:"response,required"`
+ Response param.Field[SessionPermissionRespondParamsResponse] `json:"response,required"`
+ Directory param.Field[string] `query:"directory"`
}
func (r SessionPermissionRespondParams) MarshalJSON() (data []byte, err error) {
return apijson.MarshalRoot(r)
}
+// URLQuery serializes [SessionPermissionRespondParams]'s query parameters as
+// `url.Values`.
+func (r SessionPermissionRespondParams) URLQuery() (v url.Values) {
+ return apiquery.MarshalWithSettings(r, apiquery.QuerySettings{
+ ArrayFormat: apiquery.ArrayQueryFormatComma,
+ NestedFormat: apiquery.NestedQueryFormatBrackets,
+ })
+}
+
type SessionPermissionRespondParamsResponse string
const (
diff --git a/sessionpermission_test.go b/sessionpermission_test.go
index 6a60f2f..ed396b5 100644
--- a/sessionpermission_test.go
+++ b/sessionpermission_test.go
@@ -13,7 +13,7 @@ import (
"github.com/sst/opencode-sdk-go/option"
)
-func TestSessionPermissionRespond(t *testing.T) {
+func TestSessionPermissionRespondWithOptionalParams(t *testing.T) {
t.Skip("Prism tests are disabled")
baseURL := "http://localhost:4010"
if envURL, ok := os.LookupEnv("TEST_API_BASE_URL"); ok {
@@ -30,7 +30,8 @@ func TestSessionPermissionRespond(t *testing.T) {
"id",
"permissionID",
opencode.SessionPermissionRespondParams{
- Response: opencode.F(opencode.SessionPermissionRespondParamsResponseOnce),
+ Response: opencode.F(opencode.SessionPermissionRespondParamsResponseOnce),
+ Directory: opencode.F("directory"),
},
)
if err != nil {
diff --git a/tui.go b/tui.go
index ab5ed64..b7a8483 100644
--- a/tui.go
+++ b/tui.go
@@ -5,8 +5,10 @@ package opencode
import (
"context"
"net/http"
+ "net/url"
"github.com/sst/opencode-sdk-go/internal/apijson"
+ "github.com/sst/opencode-sdk-go/internal/apiquery"
"github.com/sst/opencode-sdk-go/internal/param"
"github.com/sst/opencode-sdk-go/internal/requestconfig"
"github.com/sst/opencode-sdk-go/option"
@@ -32,103 +34,191 @@ func NewTuiService(opts ...option.RequestOption) (r *TuiService) {
}
// Append prompt to the TUI
-func (r *TuiService) AppendPrompt(ctx context.Context, body TuiAppendPromptParams, opts ...option.RequestOption) (res *bool, err error) {
+func (r *TuiService) AppendPrompt(ctx context.Context, params TuiAppendPromptParams, opts ...option.RequestOption) (res *bool, err error) {
opts = append(r.Options[:], opts...)
path := "tui/append-prompt"
- err = requestconfig.ExecuteNewRequest(ctx, http.MethodPost, path, body, &res, opts...)
+ err = requestconfig.ExecuteNewRequest(ctx, http.MethodPost, path, params, &res, opts...)
return
}
// Clear the prompt
-func (r *TuiService) ClearPrompt(ctx context.Context, opts ...option.RequestOption) (res *bool, err error) {
+func (r *TuiService) ClearPrompt(ctx context.Context, body TuiClearPromptParams, opts ...option.RequestOption) (res *bool, err error) {
opts = append(r.Options[:], opts...)
path := "tui/clear-prompt"
- err = requestconfig.ExecuteNewRequest(ctx, http.MethodPost, path, nil, &res, opts...)
+ err = requestconfig.ExecuteNewRequest(ctx, http.MethodPost, path, body, &res, opts...)
return
}
// Execute a TUI command (e.g. agent_cycle)
-func (r *TuiService) ExecuteCommand(ctx context.Context, body TuiExecuteCommandParams, opts ...option.RequestOption) (res *bool, err error) {
+func (r *TuiService) ExecuteCommand(ctx context.Context, params TuiExecuteCommandParams, opts ...option.RequestOption) (res *bool, err error) {
opts = append(r.Options[:], opts...)
path := "tui/execute-command"
- err = requestconfig.ExecuteNewRequest(ctx, http.MethodPost, path, body, &res, opts...)
+ err = requestconfig.ExecuteNewRequest(ctx, http.MethodPost, path, params, &res, opts...)
return
}
// Open the help dialog
-func (r *TuiService) OpenHelp(ctx context.Context, opts ...option.RequestOption) (res *bool, err error) {
+func (r *TuiService) OpenHelp(ctx context.Context, body TuiOpenHelpParams, opts ...option.RequestOption) (res *bool, err error) {
opts = append(r.Options[:], opts...)
path := "tui/open-help"
- err = requestconfig.ExecuteNewRequest(ctx, http.MethodPost, path, nil, &res, opts...)
- return
-}
-
-// Open the model dialog
-func (r *TuiService) OpenModels(ctx context.Context, opts ...option.RequestOption) (res *bool, err error) {
- opts = append(r.Options[:], opts...)
- path := "tui/open-models"
- err = requestconfig.ExecuteNewRequest(ctx, http.MethodPost, path, nil, &res, opts...)
- return
-}
-
-// Open the session dialog
-func (r *TuiService) OpenSessions(ctx context.Context, opts ...option.RequestOption) (res *bool, err error) {
- opts = append(r.Options[:], opts...)
- path := "tui/open-sessions"
- err = requestconfig.ExecuteNewRequest(ctx, http.MethodPost, path, nil, &res, opts...)
- return
-}
-
-// Open the theme dialog
-func (r *TuiService) OpenThemes(ctx context.Context, opts ...option.RequestOption) (res *bool, err error) {
- opts = append(r.Options[:], opts...)
- path := "tui/open-themes"
- err = requestconfig.ExecuteNewRequest(ctx, http.MethodPost, path, nil, &res, opts...)
- return
-}
-
-// Show a toast notification in the TUI
-func (r *TuiService) ShowToast(ctx context.Context, body TuiShowToastParams, opts ...option.RequestOption) (res *bool, err error) {
- opts = append(r.Options[:], opts...)
- path := "tui/show-toast"
err = requestconfig.ExecuteNewRequest(ctx, http.MethodPost, path, body, &res, opts...)
return
}
+// Open the model dialog
+func (r *TuiService) OpenModels(ctx context.Context, body TuiOpenModelsParams, opts ...option.RequestOption) (res *bool, err error) {
+ opts = append(r.Options[:], opts...)
+ path := "tui/open-models"
+ err = requestconfig.ExecuteNewRequest(ctx, http.MethodPost, path, body, &res, opts...)
+ return
+}
+
+// Open the session dialog
+func (r *TuiService) OpenSessions(ctx context.Context, body TuiOpenSessionsParams, opts ...option.RequestOption) (res *bool, err error) {
+ opts = append(r.Options[:], opts...)
+ path := "tui/open-sessions"
+ err = requestconfig.ExecuteNewRequest(ctx, http.MethodPost, path, body, &res, opts...)
+ return
+}
+
+// Open the theme dialog
+func (r *TuiService) OpenThemes(ctx context.Context, body TuiOpenThemesParams, opts ...option.RequestOption) (res *bool, err error) {
+ opts = append(r.Options[:], opts...)
+ path := "tui/open-themes"
+ err = requestconfig.ExecuteNewRequest(ctx, http.MethodPost, path, body, &res, opts...)
+ return
+}
+
+// Show a toast notification in the TUI
+func (r *TuiService) ShowToast(ctx context.Context, params TuiShowToastParams, opts ...option.RequestOption) (res *bool, err error) {
+ opts = append(r.Options[:], opts...)
+ path := "tui/show-toast"
+ err = requestconfig.ExecuteNewRequest(ctx, http.MethodPost, path, params, &res, opts...)
+ return
+}
+
// Submit the prompt
-func (r *TuiService) SubmitPrompt(ctx context.Context, opts ...option.RequestOption) (res *bool, err error) {
+func (r *TuiService) SubmitPrompt(ctx context.Context, body TuiSubmitPromptParams, opts ...option.RequestOption) (res *bool, err error) {
opts = append(r.Options[:], opts...)
path := "tui/submit-prompt"
- err = requestconfig.ExecuteNewRequest(ctx, http.MethodPost, path, nil, &res, opts...)
+ err = requestconfig.ExecuteNewRequest(ctx, http.MethodPost, path, body, &res, opts...)
return
}
type TuiAppendPromptParams struct {
- Text param.Field[string] `json:"text,required"`
+ Text param.Field[string] `json:"text,required"`
+ Directory param.Field[string] `query:"directory"`
}
func (r TuiAppendPromptParams) MarshalJSON() (data []byte, err error) {
return apijson.MarshalRoot(r)
}
+// URLQuery serializes [TuiAppendPromptParams]'s query parameters as `url.Values`.
+func (r TuiAppendPromptParams) URLQuery() (v url.Values) {
+ return apiquery.MarshalWithSettings(r, apiquery.QuerySettings{
+ ArrayFormat: apiquery.ArrayQueryFormatComma,
+ NestedFormat: apiquery.NestedQueryFormatBrackets,
+ })
+}
+
+type TuiClearPromptParams struct {
+ Directory param.Field[string] `query:"directory"`
+}
+
+// URLQuery serializes [TuiClearPromptParams]'s query parameters as `url.Values`.
+func (r TuiClearPromptParams) URLQuery() (v url.Values) {
+ return apiquery.MarshalWithSettings(r, apiquery.QuerySettings{
+ ArrayFormat: apiquery.ArrayQueryFormatComma,
+ NestedFormat: apiquery.NestedQueryFormatBrackets,
+ })
+}
+
type TuiExecuteCommandParams struct {
- Command param.Field[string] `json:"command,required"`
+ Command param.Field[string] `json:"command,required"`
+ Directory param.Field[string] `query:"directory"`
}
func (r TuiExecuteCommandParams) MarshalJSON() (data []byte, err error) {
return apijson.MarshalRoot(r)
}
+// URLQuery serializes [TuiExecuteCommandParams]'s query parameters as
+// `url.Values`.
+func (r TuiExecuteCommandParams) URLQuery() (v url.Values) {
+ return apiquery.MarshalWithSettings(r, apiquery.QuerySettings{
+ ArrayFormat: apiquery.ArrayQueryFormatComma,
+ NestedFormat: apiquery.NestedQueryFormatBrackets,
+ })
+}
+
+type TuiOpenHelpParams struct {
+ Directory param.Field[string] `query:"directory"`
+}
+
+// URLQuery serializes [TuiOpenHelpParams]'s query parameters as `url.Values`.
+func (r TuiOpenHelpParams) URLQuery() (v url.Values) {
+ return apiquery.MarshalWithSettings(r, apiquery.QuerySettings{
+ ArrayFormat: apiquery.ArrayQueryFormatComma,
+ NestedFormat: apiquery.NestedQueryFormatBrackets,
+ })
+}
+
+type TuiOpenModelsParams struct {
+ Directory param.Field[string] `query:"directory"`
+}
+
+// URLQuery serializes [TuiOpenModelsParams]'s query parameters as `url.Values`.
+func (r TuiOpenModelsParams) URLQuery() (v url.Values) {
+ return apiquery.MarshalWithSettings(r, apiquery.QuerySettings{
+ ArrayFormat: apiquery.ArrayQueryFormatComma,
+ NestedFormat: apiquery.NestedQueryFormatBrackets,
+ })
+}
+
+type TuiOpenSessionsParams struct {
+ Directory param.Field[string] `query:"directory"`
+}
+
+// URLQuery serializes [TuiOpenSessionsParams]'s query parameters as `url.Values`.
+func (r TuiOpenSessionsParams) URLQuery() (v url.Values) {
+ return apiquery.MarshalWithSettings(r, apiquery.QuerySettings{
+ ArrayFormat: apiquery.ArrayQueryFormatComma,
+ NestedFormat: apiquery.NestedQueryFormatBrackets,
+ })
+}
+
+type TuiOpenThemesParams struct {
+ Directory param.Field[string] `query:"directory"`
+}
+
+// URLQuery serializes [TuiOpenThemesParams]'s query parameters as `url.Values`.
+func (r TuiOpenThemesParams) URLQuery() (v url.Values) {
+ return apiquery.MarshalWithSettings(r, apiquery.QuerySettings{
+ ArrayFormat: apiquery.ArrayQueryFormatComma,
+ NestedFormat: apiquery.NestedQueryFormatBrackets,
+ })
+}
+
type TuiShowToastParams struct {
- Message param.Field[string] `json:"message,required"`
- Variant param.Field[TuiShowToastParamsVariant] `json:"variant,required"`
- Title param.Field[string] `json:"title"`
+ Message param.Field[string] `json:"message,required"`
+ Variant param.Field[TuiShowToastParamsVariant] `json:"variant,required"`
+ Directory param.Field[string] `query:"directory"`
+ Title param.Field[string] `json:"title"`
}
func (r TuiShowToastParams) MarshalJSON() (data []byte, err error) {
return apijson.MarshalRoot(r)
}
+// URLQuery serializes [TuiShowToastParams]'s query parameters as `url.Values`.
+func (r TuiShowToastParams) URLQuery() (v url.Values) {
+ return apiquery.MarshalWithSettings(r, apiquery.QuerySettings{
+ ArrayFormat: apiquery.ArrayQueryFormatComma,
+ NestedFormat: apiquery.NestedQueryFormatBrackets,
+ })
+}
+
type TuiShowToastParamsVariant string
const (
@@ -145,3 +235,15 @@ func (r TuiShowToastParamsVariant) IsKnown() bool {
}
return false
}
+
+type TuiSubmitPromptParams struct {
+ Directory param.Field[string] `query:"directory"`
+}
+
+// URLQuery serializes [TuiSubmitPromptParams]'s query parameters as `url.Values`.
+func (r TuiSubmitPromptParams) URLQuery() (v url.Values) {
+ return apiquery.MarshalWithSettings(r, apiquery.QuerySettings{
+ ArrayFormat: apiquery.ArrayQueryFormatComma,
+ NestedFormat: apiquery.NestedQueryFormatBrackets,
+ })
+}
diff --git a/tui_test.go b/tui_test.go
index 55faee8..635473b 100644
--- a/tui_test.go
+++ b/tui_test.go
@@ -13,7 +13,7 @@ import (
"github.com/sst/opencode-sdk-go/option"
)
-func TestTuiAppendPrompt(t *testing.T) {
+func TestTuiAppendPromptWithOptionalParams(t *testing.T) {
t.Skip("Prism tests are disabled")
baseURL := "http://localhost:4010"
if envURL, ok := os.LookupEnv("TEST_API_BASE_URL"); ok {
@@ -26,7 +26,8 @@ func TestTuiAppendPrompt(t *testing.T) {
option.WithBaseURL(baseURL),
)
_, err := client.Tui.AppendPrompt(context.TODO(), opencode.TuiAppendPromptParams{
- Text: opencode.F("text"),
+ Text: opencode.F("text"),
+ Directory: opencode.F("directory"),
})
if err != nil {
var apierr *opencode.Error
@@ -37,7 +38,7 @@ func TestTuiAppendPrompt(t *testing.T) {
}
}
-func TestTuiClearPrompt(t *testing.T) {
+func TestTuiClearPromptWithOptionalParams(t *testing.T) {
t.Skip("Prism tests are disabled")
baseURL := "http://localhost:4010"
if envURL, ok := os.LookupEnv("TEST_API_BASE_URL"); ok {
@@ -49,7 +50,9 @@ func TestTuiClearPrompt(t *testing.T) {
client := opencode.NewClient(
option.WithBaseURL(baseURL),
)
- _, err := client.Tui.ClearPrompt(context.TODO())
+ _, err := client.Tui.ClearPrompt(context.TODO(), opencode.TuiClearPromptParams{
+ Directory: opencode.F("directory"),
+ })
if err != nil {
var apierr *opencode.Error
if errors.As(err, &apierr) {
@@ -59,7 +62,7 @@ func TestTuiClearPrompt(t *testing.T) {
}
}
-func TestTuiExecuteCommand(t *testing.T) {
+func TestTuiExecuteCommandWithOptionalParams(t *testing.T) {
t.Skip("Prism tests are disabled")
baseURL := "http://localhost:4010"
if envURL, ok := os.LookupEnv("TEST_API_BASE_URL"); ok {
@@ -72,7 +75,8 @@ func TestTuiExecuteCommand(t *testing.T) {
option.WithBaseURL(baseURL),
)
_, err := client.Tui.ExecuteCommand(context.TODO(), opencode.TuiExecuteCommandParams{
- Command: opencode.F("command"),
+ Command: opencode.F("command"),
+ Directory: opencode.F("directory"),
})
if err != nil {
var apierr *opencode.Error
@@ -83,7 +87,7 @@ func TestTuiExecuteCommand(t *testing.T) {
}
}
-func TestTuiOpenHelp(t *testing.T) {
+func TestTuiOpenHelpWithOptionalParams(t *testing.T) {
t.Skip("Prism tests are disabled")
baseURL := "http://localhost:4010"
if envURL, ok := os.LookupEnv("TEST_API_BASE_URL"); ok {
@@ -95,7 +99,9 @@ func TestTuiOpenHelp(t *testing.T) {
client := opencode.NewClient(
option.WithBaseURL(baseURL),
)
- _, err := client.Tui.OpenHelp(context.TODO())
+ _, err := client.Tui.OpenHelp(context.TODO(), opencode.TuiOpenHelpParams{
+ Directory: opencode.F("directory"),
+ })
if err != nil {
var apierr *opencode.Error
if errors.As(err, &apierr) {
@@ -105,7 +111,7 @@ func TestTuiOpenHelp(t *testing.T) {
}
}
-func TestTuiOpenModels(t *testing.T) {
+func TestTuiOpenModelsWithOptionalParams(t *testing.T) {
t.Skip("Prism tests are disabled")
baseURL := "http://localhost:4010"
if envURL, ok := os.LookupEnv("TEST_API_BASE_URL"); ok {
@@ -117,7 +123,9 @@ func TestTuiOpenModels(t *testing.T) {
client := opencode.NewClient(
option.WithBaseURL(baseURL),
)
- _, err := client.Tui.OpenModels(context.TODO())
+ _, err := client.Tui.OpenModels(context.TODO(), opencode.TuiOpenModelsParams{
+ Directory: opencode.F("directory"),
+ })
if err != nil {
var apierr *opencode.Error
if errors.As(err, &apierr) {
@@ -127,7 +135,7 @@ func TestTuiOpenModels(t *testing.T) {
}
}
-func TestTuiOpenSessions(t *testing.T) {
+func TestTuiOpenSessionsWithOptionalParams(t *testing.T) {
t.Skip("Prism tests are disabled")
baseURL := "http://localhost:4010"
if envURL, ok := os.LookupEnv("TEST_API_BASE_URL"); ok {
@@ -139,7 +147,9 @@ func TestTuiOpenSessions(t *testing.T) {
client := opencode.NewClient(
option.WithBaseURL(baseURL),
)
- _, err := client.Tui.OpenSessions(context.TODO())
+ _, err := client.Tui.OpenSessions(context.TODO(), opencode.TuiOpenSessionsParams{
+ Directory: opencode.F("directory"),
+ })
if err != nil {
var apierr *opencode.Error
if errors.As(err, &apierr) {
@@ -149,7 +159,7 @@ func TestTuiOpenSessions(t *testing.T) {
}
}
-func TestTuiOpenThemes(t *testing.T) {
+func TestTuiOpenThemesWithOptionalParams(t *testing.T) {
t.Skip("Prism tests are disabled")
baseURL := "http://localhost:4010"
if envURL, ok := os.LookupEnv("TEST_API_BASE_URL"); ok {
@@ -161,7 +171,9 @@ func TestTuiOpenThemes(t *testing.T) {
client := opencode.NewClient(
option.WithBaseURL(baseURL),
)
- _, err := client.Tui.OpenThemes(context.TODO())
+ _, err := client.Tui.OpenThemes(context.TODO(), opencode.TuiOpenThemesParams{
+ Directory: opencode.F("directory"),
+ })
if err != nil {
var apierr *opencode.Error
if errors.As(err, &apierr) {
@@ -184,9 +196,10 @@ func TestTuiShowToastWithOptionalParams(t *testing.T) {
option.WithBaseURL(baseURL),
)
_, err := client.Tui.ShowToast(context.TODO(), opencode.TuiShowToastParams{
- Message: opencode.F("message"),
- Variant: opencode.F(opencode.TuiShowToastParamsVariantInfo),
- Title: opencode.F("title"),
+ Message: opencode.F("message"),
+ Variant: opencode.F(opencode.TuiShowToastParamsVariantInfo),
+ Directory: opencode.F("directory"),
+ Title: opencode.F("title"),
})
if err != nil {
var apierr *opencode.Error
@@ -197,7 +210,7 @@ func TestTuiShowToastWithOptionalParams(t *testing.T) {
}
}
-func TestTuiSubmitPrompt(t *testing.T) {
+func TestTuiSubmitPromptWithOptionalParams(t *testing.T) {
t.Skip("Prism tests are disabled")
baseURL := "http://localhost:4010"
if envURL, ok := os.LookupEnv("TEST_API_BASE_URL"); ok {
@@ -209,7 +222,9 @@ func TestTuiSubmitPrompt(t *testing.T) {
client := opencode.NewClient(
option.WithBaseURL(baseURL),
)
- _, err := client.Tui.SubmitPrompt(context.TODO())
+ _, err := client.Tui.SubmitPrompt(context.TODO(), opencode.TuiSubmitPromptParams{
+ Directory: opencode.F("directory"),
+ })
if err != nil {
var apierr *opencode.Error
if errors.As(err, &apierr) {
diff --git a/usage_test.go b/usage_test.go
index ef7ce8b..2652b58 100644
--- a/usage_test.go
+++ b/usage_test.go
@@ -23,7 +23,7 @@ func TestUsage(t *testing.T) {
client := opencode.NewClient(
option.WithBaseURL(baseURL),
)
- sessions, err := client.Session.List(context.TODO())
+ sessions, err := client.Session.List(context.TODO(), opencode.SessionListParams{})
if err != nil {
t.Error(err)
return