mirror of
https://github.com/aljazceru/opencode.git
synced 2025-12-19 00:34:23 +01:00
This release has a bunch of minor breaking changes if you are using opencode plugins or sdk 1. storage events have been removed (we might bring this back but had some issues) 2. concept of `app` is gone - there is a new concept called `project` and endpoints to list projects and get the current project 3. plugin receives `directory` which is cwd and `worktree` which is where the root of the project is if it's a git repo 4. the session.chat function has been renamed to session.prompt in sdk. it no longer requires model to be passed in (model is now an object) 5. every endpoint takes an optional `directory` parameter to operate as though opencode is running in that directory
83 lines
2.5 KiB
Go
83 lines
2.5 KiB
Go
// File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.
|
|
|
|
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"
|
|
)
|
|
|
|
// CommandService contains methods and other services that help with interacting
|
|
// with the opencode API.
|
|
//
|
|
// Note, unlike clients, this service does not read variables from the environment
|
|
// automatically. You should not instantiate this service directly, and instead use
|
|
// the [NewCommandService] method instead.
|
|
type CommandService struct {
|
|
Options []option.RequestOption
|
|
}
|
|
|
|
// NewCommandService generates a new service that applies the given options to each
|
|
// request. These options are applied after the parent client's options (if there
|
|
// is one), and before any request-specific options.
|
|
func NewCommandService(opts ...option.RequestOption) (r *CommandService) {
|
|
r = &CommandService{}
|
|
r.Options = opts
|
|
return
|
|
}
|
|
|
|
// List all commands
|
|
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, query, &res, opts...)
|
|
return
|
|
}
|
|
|
|
type Command struct {
|
|
Name string `json:"name,required"`
|
|
Template string `json:"template,required"`
|
|
Agent string `json:"agent"`
|
|
Description string `json:"description"`
|
|
Model string `json:"model"`
|
|
JSON commandJSON `json:"-"`
|
|
}
|
|
|
|
// commandJSON contains the JSON metadata for the struct [Command]
|
|
type commandJSON struct {
|
|
Name apijson.Field
|
|
Template apijson.Field
|
|
Agent apijson.Field
|
|
Description apijson.Field
|
|
Model apijson.Field
|
|
raw string
|
|
ExtraFields map[string]apijson.Field
|
|
}
|
|
|
|
func (r *Command) UnmarshalJSON(data []byte) (err error) {
|
|
return apijson.UnmarshalRoot(data, r)
|
|
}
|
|
|
|
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,
|
|
})
|
|
}
|