mirror of
https://github.com/sst/opencode.git
synced 2025-07-07 16:14:59 +00:00
724 lines
21 KiB
Go
724 lines
21 KiB
Go
// File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.
|
|
|
|
package opencode
|
|
|
|
import (
|
|
"context"
|
|
"net/http"
|
|
"reflect"
|
|
|
|
"github.com/sst/opencode-sdk-go/internal/apijson"
|
|
"github.com/sst/opencode-sdk-go/internal/requestconfig"
|
|
"github.com/sst/opencode-sdk-go/option"
|
|
"github.com/tidwall/gjson"
|
|
)
|
|
|
|
// ConfigService 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 [NewConfigService] method instead.
|
|
type ConfigService struct {
|
|
Options []option.RequestOption
|
|
}
|
|
|
|
// NewConfigService 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 NewConfigService(opts ...option.RequestOption) (r *ConfigService) {
|
|
r = &ConfigService{}
|
|
r.Options = opts
|
|
return
|
|
}
|
|
|
|
// Get config info
|
|
func (r *ConfigService) Get(ctx context.Context, opts ...option.RequestOption) (res *Config, err error) {
|
|
opts = append(r.Options[:], opts...)
|
|
path := "config"
|
|
err = requestconfig.ExecuteNewRequest(ctx, http.MethodGet, path, nil, &res, opts...)
|
|
return
|
|
}
|
|
|
|
// List all providers
|
|
func (r *ConfigService) Providers(ctx context.Context, opts ...option.RequestOption) (res *ConfigProvidersResponse, err error) {
|
|
opts = append(r.Options[:], opts...)
|
|
path := "config/providers"
|
|
err = requestconfig.ExecuteNewRequest(ctx, http.MethodGet, path, nil, &res, opts...)
|
|
return
|
|
}
|
|
|
|
type Config struct {
|
|
// JSON schema reference for configuration validation
|
|
Schema string `json:"$schema"`
|
|
// Share newly created sessions automatically
|
|
Autoshare bool `json:"autoshare"`
|
|
// Automatically update to the latest version
|
|
Autoupdate bool `json:"autoupdate"`
|
|
// Disable providers that are loaded automatically
|
|
DisabledProviders []string `json:"disabled_providers"`
|
|
Experimental ConfigExperimental `json:"experimental"`
|
|
// Additional instruction files or patterns to include
|
|
Instructions []string `json:"instructions"`
|
|
// Custom keybind configurations
|
|
Keybinds Keybinds `json:"keybinds"`
|
|
// MCP (Model Context Protocol) server configurations
|
|
Mcp map[string]ConfigMcp `json:"mcp"`
|
|
// Model to use in the format of provider/model, eg anthropic/claude-2
|
|
Model string `json:"model"`
|
|
// Custom provider configurations and model overrides
|
|
Provider map[string]ConfigProvider `json:"provider"`
|
|
// Theme name to use for the interface
|
|
Theme string `json:"theme"`
|
|
JSON configJSON `json:"-"`
|
|
}
|
|
|
|
// configJSON contains the JSON metadata for the struct [Config]
|
|
type configJSON struct {
|
|
Schema apijson.Field
|
|
Autoshare apijson.Field
|
|
Autoupdate apijson.Field
|
|
DisabledProviders apijson.Field
|
|
Experimental apijson.Field
|
|
Instructions apijson.Field
|
|
Keybinds apijson.Field
|
|
Mcp apijson.Field
|
|
Model apijson.Field
|
|
Provider apijson.Field
|
|
Theme apijson.Field
|
|
raw string
|
|
ExtraFields map[string]apijson.Field
|
|
}
|
|
|
|
func (r *Config) UnmarshalJSON(data []byte) (err error) {
|
|
return apijson.UnmarshalRoot(data, r)
|
|
}
|
|
|
|
func (r configJSON) RawJSON() string {
|
|
return r.raw
|
|
}
|
|
|
|
type ConfigExperimental struct {
|
|
Hook ConfigExperimentalHook `json:"hook"`
|
|
JSON configExperimentalJSON `json:"-"`
|
|
}
|
|
|
|
// configExperimentalJSON contains the JSON metadata for the struct
|
|
// [ConfigExperimental]
|
|
type configExperimentalJSON struct {
|
|
Hook apijson.Field
|
|
raw string
|
|
ExtraFields map[string]apijson.Field
|
|
}
|
|
|
|
func (r *ConfigExperimental) UnmarshalJSON(data []byte) (err error) {
|
|
return apijson.UnmarshalRoot(data, r)
|
|
}
|
|
|
|
func (r configExperimentalJSON) RawJSON() string {
|
|
return r.raw
|
|
}
|
|
|
|
type ConfigExperimentalHook struct {
|
|
FileEdited map[string][]ConfigExperimentalHookFileEdited `json:"file_edited"`
|
|
SessionCompleted []ConfigExperimentalHookSessionCompleted `json:"session_completed"`
|
|
JSON configExperimentalHookJSON `json:"-"`
|
|
}
|
|
|
|
// configExperimentalHookJSON contains the JSON metadata for the struct
|
|
// [ConfigExperimentalHook]
|
|
type configExperimentalHookJSON struct {
|
|
FileEdited apijson.Field
|
|
SessionCompleted apijson.Field
|
|
raw string
|
|
ExtraFields map[string]apijson.Field
|
|
}
|
|
|
|
func (r *ConfigExperimentalHook) UnmarshalJSON(data []byte) (err error) {
|
|
return apijson.UnmarshalRoot(data, r)
|
|
}
|
|
|
|
func (r configExperimentalHookJSON) RawJSON() string {
|
|
return r.raw
|
|
}
|
|
|
|
type ConfigExperimentalHookFileEdited struct {
|
|
Command []string `json:"command,required"`
|
|
Environment map[string]string `json:"environment"`
|
|
JSON configExperimentalHookFileEditedJSON `json:"-"`
|
|
}
|
|
|
|
// configExperimentalHookFileEditedJSON contains the JSON metadata for the struct
|
|
// [ConfigExperimentalHookFileEdited]
|
|
type configExperimentalHookFileEditedJSON struct {
|
|
Command apijson.Field
|
|
Environment apijson.Field
|
|
raw string
|
|
ExtraFields map[string]apijson.Field
|
|
}
|
|
|
|
func (r *ConfigExperimentalHookFileEdited) UnmarshalJSON(data []byte) (err error) {
|
|
return apijson.UnmarshalRoot(data, r)
|
|
}
|
|
|
|
func (r configExperimentalHookFileEditedJSON) RawJSON() string {
|
|
return r.raw
|
|
}
|
|
|
|
type ConfigExperimentalHookSessionCompleted struct {
|
|
Command []string `json:"command,required"`
|
|
Environment map[string]string `json:"environment"`
|
|
JSON configExperimentalHookSessionCompletedJSON `json:"-"`
|
|
}
|
|
|
|
// configExperimentalHookSessionCompletedJSON contains the JSON metadata for the
|
|
// struct [ConfigExperimentalHookSessionCompleted]
|
|
type configExperimentalHookSessionCompletedJSON struct {
|
|
Command apijson.Field
|
|
Environment apijson.Field
|
|
raw string
|
|
ExtraFields map[string]apijson.Field
|
|
}
|
|
|
|
func (r *ConfigExperimentalHookSessionCompleted) UnmarshalJSON(data []byte) (err error) {
|
|
return apijson.UnmarshalRoot(data, r)
|
|
}
|
|
|
|
func (r configExperimentalHookSessionCompletedJSON) RawJSON() string {
|
|
return r.raw
|
|
}
|
|
|
|
type ConfigMcp struct {
|
|
// Type of MCP server connection
|
|
Type ConfigMcpType `json:"type,required"`
|
|
// This field can have the runtime type of [[]string].
|
|
Command interface{} `json:"command"`
|
|
// Enable or disable the MCP server on startup
|
|
Enabled bool `json:"enabled"`
|
|
// This field can have the runtime type of [map[string]string].
|
|
Environment interface{} `json:"environment"`
|
|
// URL of the remote MCP server
|
|
URL string `json:"url"`
|
|
JSON configMcpJSON `json:"-"`
|
|
union ConfigMcpUnion
|
|
}
|
|
|
|
// configMcpJSON contains the JSON metadata for the struct [ConfigMcp]
|
|
type configMcpJSON struct {
|
|
Type apijson.Field
|
|
Command apijson.Field
|
|
Enabled apijson.Field
|
|
Environment apijson.Field
|
|
URL apijson.Field
|
|
raw string
|
|
ExtraFields map[string]apijson.Field
|
|
}
|
|
|
|
func (r configMcpJSON) RawJSON() string {
|
|
return r.raw
|
|
}
|
|
|
|
func (r *ConfigMcp) UnmarshalJSON(data []byte) (err error) {
|
|
*r = ConfigMcp{}
|
|
err = apijson.UnmarshalRoot(data, &r.union)
|
|
if err != nil {
|
|
return err
|
|
}
|
|
return apijson.Port(r.union, &r)
|
|
}
|
|
|
|
// AsUnion returns a [ConfigMcpUnion] interface which you can cast to the specific
|
|
// types for more type safety.
|
|
//
|
|
// Possible runtime types of the union are [McpLocal], [McpRemote].
|
|
func (r ConfigMcp) AsUnion() ConfigMcpUnion {
|
|
return r.union
|
|
}
|
|
|
|
// Union satisfied by [McpLocal] or [McpRemote].
|
|
type ConfigMcpUnion interface {
|
|
implementsConfigMcp()
|
|
}
|
|
|
|
func init() {
|
|
apijson.RegisterUnion(
|
|
reflect.TypeOf((*ConfigMcpUnion)(nil)).Elem(),
|
|
"type",
|
|
apijson.UnionVariant{
|
|
TypeFilter: gjson.JSON,
|
|
Type: reflect.TypeOf(McpLocal{}),
|
|
DiscriminatorValue: "local",
|
|
},
|
|
apijson.UnionVariant{
|
|
TypeFilter: gjson.JSON,
|
|
Type: reflect.TypeOf(McpRemote{}),
|
|
DiscriminatorValue: "remote",
|
|
},
|
|
)
|
|
}
|
|
|
|
// Type of MCP server connection
|
|
type ConfigMcpType string
|
|
|
|
const (
|
|
ConfigMcpTypeLocal ConfigMcpType = "local"
|
|
ConfigMcpTypeRemote ConfigMcpType = "remote"
|
|
)
|
|
|
|
func (r ConfigMcpType) IsKnown() bool {
|
|
switch r {
|
|
case ConfigMcpTypeLocal, ConfigMcpTypeRemote:
|
|
return true
|
|
}
|
|
return false
|
|
}
|
|
|
|
type ConfigProvider struct {
|
|
Models map[string]ConfigProviderModel `json:"models,required"`
|
|
ID string `json:"id"`
|
|
API string `json:"api"`
|
|
Env []string `json:"env"`
|
|
Name string `json:"name"`
|
|
Npm string `json:"npm"`
|
|
Options map[string]interface{} `json:"options"`
|
|
JSON configProviderJSON `json:"-"`
|
|
}
|
|
|
|
// configProviderJSON contains the JSON metadata for the struct [ConfigProvider]
|
|
type configProviderJSON struct {
|
|
Models apijson.Field
|
|
ID apijson.Field
|
|
API apijson.Field
|
|
Env apijson.Field
|
|
Name apijson.Field
|
|
Npm apijson.Field
|
|
Options apijson.Field
|
|
raw string
|
|
ExtraFields map[string]apijson.Field
|
|
}
|
|
|
|
func (r *ConfigProvider) UnmarshalJSON(data []byte) (err error) {
|
|
return apijson.UnmarshalRoot(data, r)
|
|
}
|
|
|
|
func (r configProviderJSON) RawJSON() string {
|
|
return r.raw
|
|
}
|
|
|
|
type ConfigProviderModel struct {
|
|
ID string `json:"id"`
|
|
Attachment bool `json:"attachment"`
|
|
Cost ConfigProviderModelsCost `json:"cost"`
|
|
Limit ConfigProviderModelsLimit `json:"limit"`
|
|
Name string `json:"name"`
|
|
Options map[string]interface{} `json:"options"`
|
|
Reasoning bool `json:"reasoning"`
|
|
ReleaseDate string `json:"release_date"`
|
|
Temperature bool `json:"temperature"`
|
|
ToolCall bool `json:"tool_call"`
|
|
JSON configProviderModelJSON `json:"-"`
|
|
}
|
|
|
|
// configProviderModelJSON contains the JSON metadata for the struct
|
|
// [ConfigProviderModel]
|
|
type configProviderModelJSON struct {
|
|
ID apijson.Field
|
|
Attachment apijson.Field
|
|
Cost apijson.Field
|
|
Limit apijson.Field
|
|
Name apijson.Field
|
|
Options apijson.Field
|
|
Reasoning apijson.Field
|
|
ReleaseDate apijson.Field
|
|
Temperature apijson.Field
|
|
ToolCall apijson.Field
|
|
raw string
|
|
ExtraFields map[string]apijson.Field
|
|
}
|
|
|
|
func (r *ConfigProviderModel) UnmarshalJSON(data []byte) (err error) {
|
|
return apijson.UnmarshalRoot(data, r)
|
|
}
|
|
|
|
func (r configProviderModelJSON) RawJSON() string {
|
|
return r.raw
|
|
}
|
|
|
|
type ConfigProviderModelsCost struct {
|
|
Input float64 `json:"input,required"`
|
|
Output float64 `json:"output,required"`
|
|
CacheRead float64 `json:"cache_read"`
|
|
CacheWrite float64 `json:"cache_write"`
|
|
JSON configProviderModelsCostJSON `json:"-"`
|
|
}
|
|
|
|
// configProviderModelsCostJSON contains the JSON metadata for the struct
|
|
// [ConfigProviderModelsCost]
|
|
type configProviderModelsCostJSON struct {
|
|
Input apijson.Field
|
|
Output apijson.Field
|
|
CacheRead apijson.Field
|
|
CacheWrite apijson.Field
|
|
raw string
|
|
ExtraFields map[string]apijson.Field
|
|
}
|
|
|
|
func (r *ConfigProviderModelsCost) UnmarshalJSON(data []byte) (err error) {
|
|
return apijson.UnmarshalRoot(data, r)
|
|
}
|
|
|
|
func (r configProviderModelsCostJSON) RawJSON() string {
|
|
return r.raw
|
|
}
|
|
|
|
type ConfigProviderModelsLimit struct {
|
|
Context float64 `json:"context,required"`
|
|
Output float64 `json:"output,required"`
|
|
JSON configProviderModelsLimitJSON `json:"-"`
|
|
}
|
|
|
|
// configProviderModelsLimitJSON contains the JSON metadata for the struct
|
|
// [ConfigProviderModelsLimit]
|
|
type configProviderModelsLimitJSON struct {
|
|
Context apijson.Field
|
|
Output apijson.Field
|
|
raw string
|
|
ExtraFields map[string]apijson.Field
|
|
}
|
|
|
|
func (r *ConfigProviderModelsLimit) UnmarshalJSON(data []byte) (err error) {
|
|
return apijson.UnmarshalRoot(data, r)
|
|
}
|
|
|
|
func (r configProviderModelsLimitJSON) RawJSON() string {
|
|
return r.raw
|
|
}
|
|
|
|
type Keybinds struct {
|
|
// Exit the application
|
|
AppExit string `json:"app_exit"`
|
|
// Open external editor
|
|
EditorOpen string `json:"editor_open"`
|
|
// Show help dialog
|
|
Help string `json:"help"`
|
|
// Navigate to next history item
|
|
HistoryNext string `json:"history_next"`
|
|
// Navigate to previous history item
|
|
HistoryPrevious string `json:"history_previous"`
|
|
// Clear input field
|
|
InputClear string `json:"input_clear"`
|
|
// Insert newline in input
|
|
InputNewline string `json:"input_newline"`
|
|
// Paste from clipboard
|
|
InputPaste string `json:"input_paste"`
|
|
// Submit input
|
|
InputSubmit string `json:"input_submit"`
|
|
// Leader key for keybind combinations
|
|
Leader string `json:"leader"`
|
|
// Navigate to first message
|
|
MessagesFirst string `json:"messages_first"`
|
|
// Scroll messages down by half page
|
|
MessagesHalfPageDown string `json:"messages_half_page_down"`
|
|
// Scroll messages up by half page
|
|
MessagesHalfPageUp string `json:"messages_half_page_up"`
|
|
// Navigate to last message
|
|
MessagesLast string `json:"messages_last"`
|
|
// Navigate to next message
|
|
MessagesNext string `json:"messages_next"`
|
|
// Scroll messages down by one page
|
|
MessagesPageDown string `json:"messages_page_down"`
|
|
// Scroll messages up by one page
|
|
MessagesPageUp string `json:"messages_page_up"`
|
|
// Navigate to previous message
|
|
MessagesPrevious string `json:"messages_previous"`
|
|
// List available models
|
|
ModelList string `json:"model_list"`
|
|
// Initialize project configuration
|
|
ProjectInit string `json:"project_init"`
|
|
// Toggle compact mode for session
|
|
SessionCompact string `json:"session_compact"`
|
|
// Interrupt current session
|
|
SessionInterrupt string `json:"session_interrupt"`
|
|
// List all sessions
|
|
SessionList string `json:"session_list"`
|
|
// Create a new session
|
|
SessionNew string `json:"session_new"`
|
|
// Share current session
|
|
SessionShare string `json:"session_share"`
|
|
// List available themes
|
|
ThemeList string `json:"theme_list"`
|
|
// Show tool details
|
|
ToolDetails string `json:"tool_details"`
|
|
JSON keybindsJSON `json:"-"`
|
|
}
|
|
|
|
// keybindsJSON contains the JSON metadata for the struct [Keybinds]
|
|
type keybindsJSON struct {
|
|
AppExit apijson.Field
|
|
EditorOpen apijson.Field
|
|
Help apijson.Field
|
|
HistoryNext apijson.Field
|
|
HistoryPrevious apijson.Field
|
|
InputClear apijson.Field
|
|
InputNewline apijson.Field
|
|
InputPaste apijson.Field
|
|
InputSubmit apijson.Field
|
|
Leader apijson.Field
|
|
MessagesFirst apijson.Field
|
|
MessagesHalfPageDown apijson.Field
|
|
MessagesHalfPageUp apijson.Field
|
|
MessagesLast apijson.Field
|
|
MessagesNext apijson.Field
|
|
MessagesPageDown apijson.Field
|
|
MessagesPageUp apijson.Field
|
|
MessagesPrevious apijson.Field
|
|
ModelList apijson.Field
|
|
ProjectInit apijson.Field
|
|
SessionCompact apijson.Field
|
|
SessionInterrupt apijson.Field
|
|
SessionList apijson.Field
|
|
SessionNew apijson.Field
|
|
SessionShare apijson.Field
|
|
ThemeList apijson.Field
|
|
ToolDetails apijson.Field
|
|
raw string
|
|
ExtraFields map[string]apijson.Field
|
|
}
|
|
|
|
func (r *Keybinds) UnmarshalJSON(data []byte) (err error) {
|
|
return apijson.UnmarshalRoot(data, r)
|
|
}
|
|
|
|
func (r keybindsJSON) RawJSON() string {
|
|
return r.raw
|
|
}
|
|
|
|
type McpLocal struct {
|
|
// Command and arguments to run the MCP server
|
|
Command []string `json:"command,required"`
|
|
// Type of MCP server connection
|
|
Type McpLocalType `json:"type,required"`
|
|
// Enable or disable the MCP server on startup
|
|
Enabled bool `json:"enabled"`
|
|
// Environment variables to set when running the MCP server
|
|
Environment map[string]string `json:"environment"`
|
|
JSON mcpLocalJSON `json:"-"`
|
|
}
|
|
|
|
// mcpLocalJSON contains the JSON metadata for the struct [McpLocal]
|
|
type mcpLocalJSON struct {
|
|
Command apijson.Field
|
|
Type apijson.Field
|
|
Enabled apijson.Field
|
|
Environment apijson.Field
|
|
raw string
|
|
ExtraFields map[string]apijson.Field
|
|
}
|
|
|
|
func (r *McpLocal) UnmarshalJSON(data []byte) (err error) {
|
|
return apijson.UnmarshalRoot(data, r)
|
|
}
|
|
|
|
func (r mcpLocalJSON) RawJSON() string {
|
|
return r.raw
|
|
}
|
|
|
|
func (r McpLocal) implementsConfigMcp() {}
|
|
|
|
// Type of MCP server connection
|
|
type McpLocalType string
|
|
|
|
const (
|
|
McpLocalTypeLocal McpLocalType = "local"
|
|
)
|
|
|
|
func (r McpLocalType) IsKnown() bool {
|
|
switch r {
|
|
case McpLocalTypeLocal:
|
|
return true
|
|
}
|
|
return false
|
|
}
|
|
|
|
type McpRemote struct {
|
|
// Type of MCP server connection
|
|
Type McpRemoteType `json:"type,required"`
|
|
// URL of the remote MCP server
|
|
URL string `json:"url,required"`
|
|
// Enable or disable the MCP server on startup
|
|
Enabled bool `json:"enabled"`
|
|
JSON mcpRemoteJSON `json:"-"`
|
|
}
|
|
|
|
// mcpRemoteJSON contains the JSON metadata for the struct [McpRemote]
|
|
type mcpRemoteJSON struct {
|
|
Type apijson.Field
|
|
URL apijson.Field
|
|
Enabled apijson.Field
|
|
raw string
|
|
ExtraFields map[string]apijson.Field
|
|
}
|
|
|
|
func (r *McpRemote) UnmarshalJSON(data []byte) (err error) {
|
|
return apijson.UnmarshalRoot(data, r)
|
|
}
|
|
|
|
func (r mcpRemoteJSON) RawJSON() string {
|
|
return r.raw
|
|
}
|
|
|
|
func (r McpRemote) implementsConfigMcp() {}
|
|
|
|
// Type of MCP server connection
|
|
type McpRemoteType string
|
|
|
|
const (
|
|
McpRemoteTypeRemote McpRemoteType = "remote"
|
|
)
|
|
|
|
func (r McpRemoteType) IsKnown() bool {
|
|
switch r {
|
|
case McpRemoteTypeRemote:
|
|
return true
|
|
}
|
|
return false
|
|
}
|
|
|
|
type Model struct {
|
|
ID string `json:"id,required"`
|
|
Attachment bool `json:"attachment,required"`
|
|
Cost ModelCost `json:"cost,required"`
|
|
Limit ModelLimit `json:"limit,required"`
|
|
Name string `json:"name,required"`
|
|
Options map[string]interface{} `json:"options,required"`
|
|
Reasoning bool `json:"reasoning,required"`
|
|
ReleaseDate string `json:"release_date,required"`
|
|
Temperature bool `json:"temperature,required"`
|
|
ToolCall bool `json:"tool_call,required"`
|
|
JSON modelJSON `json:"-"`
|
|
}
|
|
|
|
// modelJSON contains the JSON metadata for the struct [Model]
|
|
type modelJSON struct {
|
|
ID apijson.Field
|
|
Attachment apijson.Field
|
|
Cost apijson.Field
|
|
Limit apijson.Field
|
|
Name apijson.Field
|
|
Options apijson.Field
|
|
Reasoning apijson.Field
|
|
ReleaseDate apijson.Field
|
|
Temperature apijson.Field
|
|
ToolCall apijson.Field
|
|
raw string
|
|
ExtraFields map[string]apijson.Field
|
|
}
|
|
|
|
func (r *Model) UnmarshalJSON(data []byte) (err error) {
|
|
return apijson.UnmarshalRoot(data, r)
|
|
}
|
|
|
|
func (r modelJSON) RawJSON() string {
|
|
return r.raw
|
|
}
|
|
|
|
type ModelCost struct {
|
|
Input float64 `json:"input,required"`
|
|
Output float64 `json:"output,required"`
|
|
CacheRead float64 `json:"cache_read"`
|
|
CacheWrite float64 `json:"cache_write"`
|
|
JSON modelCostJSON `json:"-"`
|
|
}
|
|
|
|
// modelCostJSON contains the JSON metadata for the struct [ModelCost]
|
|
type modelCostJSON struct {
|
|
Input apijson.Field
|
|
Output apijson.Field
|
|
CacheRead apijson.Field
|
|
CacheWrite apijson.Field
|
|
raw string
|
|
ExtraFields map[string]apijson.Field
|
|
}
|
|
|
|
func (r *ModelCost) UnmarshalJSON(data []byte) (err error) {
|
|
return apijson.UnmarshalRoot(data, r)
|
|
}
|
|
|
|
func (r modelCostJSON) RawJSON() string {
|
|
return r.raw
|
|
}
|
|
|
|
type ModelLimit struct {
|
|
Context float64 `json:"context,required"`
|
|
Output float64 `json:"output,required"`
|
|
JSON modelLimitJSON `json:"-"`
|
|
}
|
|
|
|
// modelLimitJSON contains the JSON metadata for the struct [ModelLimit]
|
|
type modelLimitJSON struct {
|
|
Context apijson.Field
|
|
Output apijson.Field
|
|
raw string
|
|
ExtraFields map[string]apijson.Field
|
|
}
|
|
|
|
func (r *ModelLimit) UnmarshalJSON(data []byte) (err error) {
|
|
return apijson.UnmarshalRoot(data, r)
|
|
}
|
|
|
|
func (r modelLimitJSON) RawJSON() string {
|
|
return r.raw
|
|
}
|
|
|
|
type Provider struct {
|
|
ID string `json:"id,required"`
|
|
Env []string `json:"env,required"`
|
|
Models map[string]Model `json:"models,required"`
|
|
Name string `json:"name,required"`
|
|
API string `json:"api"`
|
|
Npm string `json:"npm"`
|
|
JSON providerJSON `json:"-"`
|
|
}
|
|
|
|
// providerJSON contains the JSON metadata for the struct [Provider]
|
|
type providerJSON struct {
|
|
ID apijson.Field
|
|
Env apijson.Field
|
|
Models apijson.Field
|
|
Name apijson.Field
|
|
API apijson.Field
|
|
Npm apijson.Field
|
|
raw string
|
|
ExtraFields map[string]apijson.Field
|
|
}
|
|
|
|
func (r *Provider) UnmarshalJSON(data []byte) (err error) {
|
|
return apijson.UnmarshalRoot(data, r)
|
|
}
|
|
|
|
func (r providerJSON) RawJSON() string {
|
|
return r.raw
|
|
}
|
|
|
|
type ConfigProvidersResponse struct {
|
|
Default map[string]string `json:"default,required"`
|
|
Providers []Provider `json:"providers,required"`
|
|
JSON configProvidersResponseJSON `json:"-"`
|
|
}
|
|
|
|
// configProvidersResponseJSON contains the JSON metadata for the struct
|
|
// [ConfigProvidersResponse]
|
|
type configProvidersResponseJSON struct {
|
|
Default apijson.Field
|
|
Providers apijson.Field
|
|
raw string
|
|
ExtraFields map[string]apijson.Field
|
|
}
|
|
|
|
func (r *ConfigProvidersResponse) UnmarshalJSON(data []byte) (err error) {
|
|
return apijson.UnmarshalRoot(data, r)
|
|
}
|
|
|
|
func (r configProvidersResponseJSON) RawJSON() string {
|
|
return r.raw
|
|
}
|