Documentation
¶
Index ¶
- Constants
- Variables
- func LogLevelToString(level LogLevel) string
- type ATMSupport
- type Advice
- type AdviceConfig
- type Agent
- type AgentConfig
- type AgentName
- type AgentResource
- type AgentsConfig
- type AppConfig
- func (cfg *AppConfig) Clone() *AppConfig
- func (r *AppConfig) HasInput() bool
- func (r *AppConfig) IsClipin() bool
- func (cfg *AppConfig) IsInformative() bool
- func (cfg *AppConfig) IsQuiet() bool
- func (r *AppConfig) IsSpecial() bool
- func (r *AppConfig) IsStdin() bool
- func (cfg *AppConfig) IsTracing() bool
- func (cfg *AppConfig) IsVerbose() bool
- type AssetFS
- type AssetManager
- type AssetStore
- type Blob
- type BlobStore
- type Chat
- type ClipboardProvider
- type ConnectorConfig
- type DirEntry
- type DirEntryInfo
- type EditorProvider
- type Entrypoint
- type Feature
- type FileInfo
- func (r *FileInfo) IsDir() bool
- func (fi FileInfo) MarshalJSON() ([]byte, error)
- func (r *FileInfo) ModTime() time.Time
- func (r *FileInfo) Mode() fs.FileMode
- func (r *FileInfo) Name() string
- func (r *FileInfo) Size() int64
- func (r *FileInfo) Sys() any
- func (fi *FileInfo) UnmarshalJSON(data []byte) error
- type FuncBody
- type Handler
- type IOFilter
- type InputType
- type Instruction
- type KitName
- type Level
- type LogLevel
- type MemOption
- type MemStore
- type Message
- type Model
- type ModelAlias
- type ModelAliasConfig
- type ModelConfig
- type ModelsConfig
- type Output
- type OutputType
- type Record
- type Request
- type Resource
- type Response
- type Result
- type SecretStore
- type SecretToken
- type State
- type TemplateFuncMap
- type ToolCondition
- type ToolConfig
- type ToolFunc
- type ToolGuard
- type ToolKit
- type ToolRunner
- type ToolSystem
- type ToolsConfig
- type UnsupportedError
- type User
- type UserInput
- type Vars
Constants ¶
const ( RoleSystem = "system" RoleAssistant = "assistant" RoleUser = "user" RoleTool = "tool" )
const ( ContentTypeText = "text" ContentTypeB64JSON = string(openai.ImageGenerateParamsResponseFormatB64JSON) )
const ( ToolTypeFunc = "func" ToolTypeSystem = "system" ToolTypeWeb = "web" ToolTypeMcp = "mcp" ToolTypeFaas = "faas" ToolTypeAgent = "agent" )
const ( VarsEnvContainer = "container" VarsEnvHost = "host" )
Variables ¶
Functions ¶
func LogLevelToString ¶ added in v0.1.1
Types ¶
type ATMSupport ¶ added in v0.1.1
type ATMSupport interface {
AssetStore
RetrieveAgent(owner, pack string) (*Record, error)
ListAgents(owner string) ([]*Record, error)
SearchAgent(user, owner, pack string) (*Record, error)
RetrieveTool(owner, kit string) (*Record, error)
ListTools(owner string) ([]*Record, error)
RetrieveModel(owner, alias string) (*Record, error)
ListModels(owner string) ([]*Record, error)
}
agent/tool/model methods
type AdviceConfig ¶
type Agent ¶
type Agent struct {
Owner string
// The name of the agent.
Name string
Display string
Description string
Instruction *Instruction
RawInput *UserInput
// The model to be used by the agent
Model *Model
// Functions that the agent can call
Tools []*ToolFunc
Arguments map[string]any
Dependencies []string
Entrypoint Entrypoint
// advices
BeforeAdvice Advice
AfterAdvice Advice
AroundAdvice Advice
// LLM adapter
Adapter string
//
MaxTurns int
MaxTime int
//
Message string
Format string
New bool
// MaxHistory int
// MaxSpan int
LogLevel LogLevel
//
Config *AgentsConfig
}
type AgentConfig ¶
type AgentConfig struct {
Name string `yaml:"name"`
Display string `yaml:"display"`
Description string `yaml:"description"`
//
Instruction *Instruction `yaml:"instruction"`
// [alias/]level
Model string `yaml:"model"`
// tools defined in tools config
// kit:name
Functions []string `yaml:"functions"`
Dependencies []string `yaml:"dependencies"`
Entrypoint string `yaml:"entrypoint"`
Advices *AdviceConfig `yaml:"advices"`
// chat|image-get|docker/aider oh gptr
Adapter string `yaml:"adapter"`
//
//
MaxTurns int `yaml:"max_turns"`
MaxTime int `yaml:"max_time"`
// user message
Message string `yaml:"message"`
// output format: json | text
Format string `yaml:"format"`
// memory
// max history: 0 max span: 0
New *bool `yaml:"new,omitempty"`
// logging: quiet | info[rmative] | verbose | trace
LogLevel string `yaml:"log_level"`
// agent as tool
Parameters map[string]any `yaml:"parameters"`
// default values for parameters
Arguments map[string]any `yaml:"arguments"`
// security
Filters []*IOFilter `yaml:"filters"`
Guards []*ToolGuard `yaml:"guards"`
//
Store AssetStore `yaml:"-"`
// relative to root
BaseDir string `yaml:"-"`
}
type AgentName ¶ added in v0.5.0
type AgentName string
@[owner:]pack[/sub] // @<[owner:]agent> owner, agent := splitOwnerAgent(req.Agent) // agent: pack[/sub] pack, sub := split2(agent, "/", "")
type AgentResource ¶
type AgentResource struct {
Resources []*Resource `json:"resources"`
}
func LoadAgentResource ¶
func LoadAgentResource(p string) (*AgentResource, error)
type AgentsConfig ¶
type AgentsConfig struct {
// agent app name
Name string `yaml:"name"`
// [alias/]level
Model string `yaml:"model"`
Agents []*AgentConfig `yaml:"agents"`
Tools []*ToolConfig `yaml:"tools"`
Models []*ModelConfig `yaml:"models"`
//
MaxTurns int `yaml:"max_turns"`
MaxTime int `yaml:"max_time"`
// user message
Message string `yaml:"message"`
// output format: json | text
Format string `yaml:"format"`
// memory
// max history: 0 max span: 0
New *bool `yaml:"new,omitempty"`
// logging: quiet | informative | verbose
LogLevel string `yaml:"log_level"`
}
agent app config
type AppConfig ¶
type AppConfig struct {
Version string
ConfigFile string
// rename WebResource?
AgentResource *AgentResource
Agent string
// Command string
Args []string
// --message takes precedence, skip stdin
// command line arguments
Message string
// editor binary and args. e.g vim [options]
Editor string
Clipin bool
ClipWait bool
Clipout bool
ClipAppend bool
IsPiped bool
Stdin bool
// Output format: raw or markdown
Format string
// output file for saving response
Output string
// user
User *User
// conversation history
New *bool
MaxHistory int
MaxSpan int
// chat id to continue the conersation
// <config_base>/chat/<id>.json
ChatID string
//<config_base>/chat/<id>/*.json
// History []*Message
History MemStore
Models string
//
LogLevel string
Unsafe bool
//
Base string
Workspace string
Interactive bool
Editing bool
Shell string
Watch bool
ClipWatch bool
MaxTime int
MaxTurns int
//
Stdout string
Stderr string
// dry run
DryRun bool
DryRunContent string
}
func (*AppConfig) IsInformative ¶ added in v0.1.1
type AssetManager ¶ added in v0.1.1
type AssetManager interface {
// GetStore(key string) (AssetStore, error)
AddStore(store AssetStore)
// @<[partial owner:]agent>
// owner, agentName := splitOwnerAgent(req.Agent)
// agent: [pack/]sub
// pack, sub := split2(agentName, "/", "")
SearchAgent(owner, pack string) (*Record, error)
ListAgent(owner string) (map[string]*AgentsConfig, error)
FindAgent(owner, pack string) (*AgentsConfig, error)
ListToolkit(owner string) (map[string]*ToolsConfig, error)
FindToolkit(owner string, kit string) (*ToolsConfig, error)
ListModels(owner string) (map[string]*ModelsConfig, error)
FindModels(owner string, alias string) (*ModelsConfig, error)
}
type AssetStore ¶
type AssetStore any
type Blob ¶ added in v0.1.1
type Blob struct {
ID string `json:"id"`
MimeType string `json:"mime_type"`
Content []byte `json:"content"`
Meta map[string]any `json:"meta"`
}
https://en.wikipedia.org/wiki/Media_type https://developer.mozilla.org/en-US/docs/Web/HTTP/Guides/MIME_types https://mimesniff.spec.whatwg.org/
type ClipboardProvider ¶
type ConnectorConfig ¶ added in v0.0.2
type DirEntryInfo ¶
type DirEntryInfo struct {
// contains filtered or unexported fields
}
func FsDirEntryInfo ¶
func FsDirEntryInfo(de fs.DirEntry) *DirEntryInfo
func (*DirEntryInfo) IsDir ¶
func (r *DirEntryInfo) IsDir() bool
func (DirEntryInfo) MarshalJSON ¶
func (r DirEntryInfo) MarshalJSON() ([]byte, error)
func (*DirEntryInfo) Name ¶
func (r *DirEntryInfo) Name() string
func (*DirEntryInfo) Type ¶
func (r *DirEntryInfo) Type() fs.FileMode
func (*DirEntryInfo) UnmarshalJSON ¶
func (r *DirEntryInfo) UnmarshalJSON(data []byte) error
type EditorProvider ¶
type FileInfo ¶
type FileInfo struct {
// contains filtered or unexported fields
}
func FsFileInfo ¶
func NewFileInfo ¶
func (FileInfo) MarshalJSON ¶
func (*FileInfo) UnmarshalJSON ¶
type Instruction ¶ added in v0.0.6
type KitName ¶ added in v0.5.0
type KitName string
type Level ¶ added in v0.0.3
type Level = string
Level represents the "intelligence" level of the model. i.e. basic, regular, advanced for example, OpenAI: gpt-4.1-mini, gpt-4.1, o3
type Model ¶
type Model struct {
Model string
Provider string
BaseUrl string
// resolved LLM api key/token
ApiKey string
// output
Type OutputType
//
Config *ModelsConfig
}
type ModelAlias ¶ added in v0.1.0
type ModelAliasConfig ¶ added in v0.1.0
type ModelAliasConfig = map[string]*ModelConfig
type ModelConfig ¶
type ModelsConfig ¶ added in v0.0.3
type OutputType ¶ added in v0.0.3
type OutputType string
const ( // OutputTypeUnknown OutputType = "" OutputTypeText OutputType = "text" OutputTypeImage OutputType = "image" )
type Request ¶
type Request struct {
// The name/command of the active agent
Agent string
Messages []*Message
RawInput *UserInput
Arguments map[string]any
// contains filtered or unexported fields
}
func NewRequest ¶ added in v0.1.1
func (*Request) Context ¶
Context returns the request's context. To change the context, use Request.Clone or Request.WithContext.
The returned context is always non-nil; it defaults to the background context.
For outgoing client requests, the context controls cancellation.
For incoming server requests, the context is canceled when the client's connection closes, the request is canceled (with HTTP/2), or when the ServeHTTP method returns.
func (*Request) WithContext ¶
WithContext returns a shallow copy of r with its context changed to ctx. The provided ctx must be non-nil.
For outgoing client request, the context controls the entire lifetime of a request and its response: obtaining a connection, sending the request, and reading the response headers and body.
To create a new request with a context, use NewRequest. To make a deep copy of a request with a new context, use Request.Clone.
type Resource ¶
type Resource struct {
// web resource base url
// http://localhost:18080/resource
// https://ai.dhnt.io/resource
Base string `json:"base"`
// access token
Token string `json:"token"`
}
type Result ¶
type Result struct {
// The result value as a string
Value string
// media content
// https://developer.mozilla.org/en-US/docs/Web/HTTP/Guides/MIME_types
MimeType string
Content []byte
// transition
// The agent state
State State
// The agent name to transfer to for StateTransfer
NextAgent string
}
Result encapsulates the possible return values for agent/function.
type SecretStore ¶ added in v0.1.1
type SecretToken ¶ added in v0.3.1
type TemplateFuncMap ¶
type ToolCondition ¶
type ToolCondition struct {
// required env list
Env []string `yaml:"env"`
// found on PATH
Lookup *string `yaml:"lookup"`
// shell required
Shell map[string]any `yaml:"shell"`
}
TODO condidtion needs to be met for tools to be enabled
type ToolConfig ¶
type ToolConfig struct {
Type string `yaml:"type"`
Name string `yaml:"name"`
Description string `yaml:"description"`
Parameters map[string]any `yaml:"parameters"`
Body *FuncBody `yaml:"body"`
Condition *ToolCondition `yaml:"condition"`
// agent name for agent tool type
// description/parameters defined here take precedence
Agent string `yaml:"agent"`
//
Provider string `yaml:"provider"`
BaseUrl string `yaml:"base_url"`
// name of api key
ApiKey string `yaml:"api_key"`
Extra map[string]string `yaml:"extra"`
}
type ToolFunc ¶
type ToolFunc struct {
Type string
Kit string
Name string
Description string
Parameters map[string]any
Body *FuncBody
// agent name of agent tool
Agent string
//
State State
//
Config *ToolsConfig
//
Provider string
BaseUrl string
// name of api key - used to resolve api key/token before tool call
ApiKey string
Extra map[string]string
}
type ToolRunner ¶ added in v0.5.0
type ToolSystem ¶ added in v0.0.2
type ToolsConfig ¶
type ToolsConfig struct {
// kit name
// Namespace:
//
// func class
// Agent name
// MCP server name
// Virtual file system name
// Container name
// Virtual machine name
// Tool/function (Gemini)
Kit string `yaml:"kit"`
// func (server) | system (client) | remote
Type string `yaml:"type"`
Provider string `yaml:"provider"`
BaseUrl string `yaml:"base_url"`
// name of api key
ApiKey string `yaml:"api_key"`
Connector *ConnectorConfig `yaml:"connector"`
// system commands used by tools
Commands []string `yaml:"commands"`
Tools []*ToolConfig `yaml:"tools"`
}
Toolkit configuration
type UnsupportedError ¶ added in v0.1.1
type UnsupportedError string
func (UnsupportedError) Error ¶ added in v0.1.1
func (s UnsupportedError) Error() string
type UserInput ¶
type UserInput struct {
Agent string `json:"agent"`
// query - command line args
Message string `json:"message"`
// query - clipboard/stdin/editor
Content string `json:"content"`
// cached file contents
Messages []*Message `json:"-"`
}
func (*UserInput) Intent ¶
Intent returns a clipped version of the query. This is intended for "smart" agents to make decisions based on user inputs.