X-Git-Url: https://git.giacomolli.uk/onechat/blobdiff_plain/d73a88b9e0835b1d7f0711e02db56555101a7830..c781f79f3c8cb9a7577ee1574d196988da2719b3:/agent.go?ds=inline diff --git a/agent.go b/agent.go index d95a81c..8226a43 100644 --- a/agent.go +++ b/agent.go @@ -25,6 +25,28 @@ const ( agentIDBytes = 16 ) +// Agent is one agent and its directory. The directory holds config.json, the +// user's instructions in instructions.md, the chat, and the usage file. +type Agent struct { + dir string + config AgentConfig +} + +// AgentConfig holds the settings of the config.json of an agent. ID is random, +// made once when the file is made, and never changes. The cache key comes from +// the ID, so a rename keeps the prompt cache and two agents with one name do +// not share a key. Workdir is the directory where the commands of the agent +// run. Responsibility and Parent are set together for a child agent. +type AgentConfig struct { + Name string `json:"name"` + ID string `json:"id"` + Model string `json:"model"` + Effort string `json:"effort"` + Workdir string `json:"workdir"` + Responsibility string `json:"responsibility,omitempty"` + Parent string `json:"parent,omitempty"` +} + // openAgent reads the config.json of the agent in dir. When the file does not // exist, it makes the directory and writes the file with the defaults and a new // ID. A missing field of an existing file takes the default, but the ID must be @@ -73,13 +95,6 @@ func openAgent(dir string) (*Agent, error) { }, nil } -// Agent is one agent and its directory. The directory holds config.json, the -// user's instructions in instructions.md, the chat, and the usage file. -type Agent struct { - dir string - config AgentConfig -} - // Images returns the shared data-directory image store, also for a child. func (a *Agent) Images() *ImageStore { root := a.dir @@ -295,21 +310,6 @@ func (a *Agent) instructions() (string, error) { return string(data), nil } -// AgentConfig holds the settings of the config.json of an agent. ID is random, -// made once when the file is made, and never changes. The cache key comes from -// the ID, so a rename keeps the prompt cache and two agents with one name do -// not share a key. Workdir is the directory where the commands of the agent -// run. Responsibility and Parent are set together for a child agent. -type AgentConfig struct { - Name string `json:"name"` - ID string `json:"id"` - Model string `json:"model"` - Effort string `json:"effort"` - Workdir string `json:"workdir"` - Responsibility string `json:"responsibility,omitempty"` - Parent string `json:"parent,omitempty"` -} - // validate makes sure that each setting has a valid value. func (c AgentConfig) validate() error { if c.Name == "" || strings.ContainsAny(c.Name, "\r\n") {