Documentation
¶
Index ¶
- Constants
- func IsCredentialsNotFoundError(err error) bool
- func ParseCredentialOverrides(overrides []string) (map[string]map[string]string, error)
- type Credential
- type CredentialContextPin
- type CredentialStore
- type CredentialType
- type NoopStore
- func (s NoopStore) Add(context.Context, Credential) error
- func (s NoopStore) Get(context.Context, string) (*Credential, bool, error)
- func (s NoopStore) List(context.Context) ([]Credential, error)
- func (s NoopStore) RecreateAll(context.Context) error
- func (s NoopStore) Refresh(context.Context, Credential) error
- func (s NoopStore) Remove(context.Context, string) error
- type ProgramLoaderRunner
- type Store
- func (s *Store) Add(_ context.Context, cred Credential) error
- func (s *Store) Get(_ context.Context, toolName string) (*Credential, bool, error)
- func (s *Store) List(_ context.Context) ([]Credential, error)
- func (s *Store) RecreateAll(_ context.Context) error
- func (s *Store) Refresh(_ context.Context, cred Credential) error
- func (s *Store) Remove(_ context.Context, toolName string) error
- type StoreFactory
Constants ¶
const ( CredentialTypeTool CredentialType = "tool" CredentialTypeModelProvider CredentialType = "modelProvider" ExistingCredential = "GPTSCRIPT_EXISTING_CREDENTIAL" CredentialExpiration = "GPTSCRIPT_CREDENTIAL_EXPIRATION" )
const ( DefaultCredentialContext = "default" AllCredentialContexts = "*" )
Variables ¶
This section is empty.
Functions ¶
func ParseCredentialOverrides ¶
ParseCredentialOverrides parses a string of credential overrides that the user provided as a command line arg. The format of credential overrides can be one of two things: cred1:ENV1,ENV2 (direct mapping of environment variables) cred1:ENV1=VALUE1,ENV2=VALUE2 (key-value pairs)
This function turns it into a map[string]map[string]string like this:
{
"cred1": {
"ENV1": "VALUE1",
"ENV2": "VALUE2",
}
}
Types ¶
type Credential ¶
type Credential struct {
Context string `json:"context"`
ToolName string `json:"toolName"`
Type CredentialType `json:"type"`
Env map[string]string `json:"env"`
// If the CheckParam that is stored is different from the param on the tool,
// then the credential will be re-authed as if it does not exist.
CheckParam string `json:"checkParam"`
Ephemeral bool `json:"ephemeral,omitempty"`
ExpiresAt *time.Time `json:"expiresAt"`
RefreshToken string `json:"refreshToken"`
}
func (Credential) IsExpired ¶
func (c Credential) IsExpired() bool
type CredentialContextPin ¶
type CredentialContextPin struct {
// Contexts are searched first, in order, for this credential.
Contexts []string `json:"contexts"`
// Exclusive makes Contexts the credential's only home: it is resolved from
// them alone, with no fallback, and a newly created one is stored in
// Contexts[0]. Use it only for a context that belongs to whoever is
// running, since that is where their answer to a prompt ends up.
//
// Without it the pin is lookup-only: Contexts take precedence, the run's
// own contexts are searched after them, and a newly created credential is
// stored where an unpinned one would be — never in the pin. That is the
// right kind for a context shared between users, which a run must not be
// able to write a user's secret into.
Exclusive bool `json:"exclusive,omitempty"`
}
CredentialContextPin sends one credential name to its own contexts instead of the run's context list.
A single ordered list cannot express "this credential belongs to that context": Store writes every new credential to the FIRST context of its list, so a context put first to win lookups for one credential also receives every other credential the run creates. A pin scopes the context to the credential it is meant for.
type CredentialStore ¶
type CredentialStore interface {
Get(ctx context.Context, toolName string) (*Credential, bool, error)
Add(ctx context.Context, cred Credential) error
Refresh(ctx context.Context, cred Credential) error
Remove(ctx context.Context, toolName string) error
List(ctx context.Context) ([]Credential, error)
RecreateAll(ctx context.Context) error
}
type CredentialType ¶
type CredentialType string
type ProgramLoaderRunner ¶
type Store ¶
type Store struct {
// contains filtered or unexported fields
}
func (*Store) Add ¶
func (s *Store) Add(_ context.Context, cred Credential) error
Add adds a new credential to the credential store. Any context set on the credential object will be overwritten with the first context of the credential store.
type StoreFactory ¶
type StoreFactory struct {
// contains filtered or unexported fields
}
func NewFactory ¶
func NewFactory(ctx context.Context, cfg *config.CLIConfig, overrides []string, plr ProgramLoaderRunner) (StoreFactory, error)
func (*StoreFactory) NewPinnedStore ¶
func (s *StoreFactory) NewPinnedStore(credCtxs []string, pins map[string]CredentialContextPin) (CredentialStore, error)
NewPinnedStore returns a store that resolves credentials against credCtxs, as NewStore does, except for the names in pins, which resolve as their CredentialContextPin describes.
func (*StoreFactory) NewStore ¶
func (s *StoreFactory) NewStore(credCtxs []string) (CredentialStore, error)