From a1203c8f1433b3f774be77177353a3ee572e3147 Mon Sep 17 00:00:00 2001 From: mudler Date: Sat, 20 Jan 2024 19:40:57 +0100 Subject: [PATCH 001/399] Initial commit From d22154e9bea0298e5dd6aceabdae02f8311f329b Mon Sep 17 00:00:00 2001 From: mudler Date: Sat, 20 Jan 2024 19:41:09 +0100 Subject: [PATCH 002/399] Initial import --- Makefile | 4 ++ agent/agent_suite_test.go | 13 +++++ agent/constructor.go | 101 ++++++++++++++++++++++++++++++++++++++ agent/state.go | 48 ++++++++++++++++++ agent/state_test.go | 34 +++++++++++++ go.mod | 21 ++++++++ go.sum | 44 +++++++++++++++++ llm/client.go | 14 ++++++ llm/json.go | 47 ++++++++++++++++++ 9 files changed, 326 insertions(+) create mode 100644 Makefile create mode 100644 agent/agent_suite_test.go create mode 100644 agent/constructor.go create mode 100644 agent/state.go create mode 100644 agent/state_test.go create mode 100644 go.mod create mode 100644 go.sum create mode 100644 llm/client.go create mode 100644 llm/json.go diff --git a/Makefile b/Makefile new file mode 100644 index 0000000..920cace --- /dev/null +++ b/Makefile @@ -0,0 +1,4 @@ +GOCMD=go + +tests: + $(GOCMD) run github.com/onsi/ginkgo/v2/ginkgo --flake-attempts 5 --fail-fast -v -r ./... \ No newline at end of file diff --git a/agent/agent_suite_test.go b/agent/agent_suite_test.go new file mode 100644 index 0000000..ff10f4c --- /dev/null +++ b/agent/agent_suite_test.go @@ -0,0 +1,13 @@ +package agent_test + +import ( + "testing" + + . "github.com/onsi/ginkgo/v2" + . "github.com/onsi/gomega" +) + +func TestAgent(t *testing.T) { + RegisterFailHandler(Fail) + RunSpecs(t, "Agent test suite") +} diff --git a/agent/constructor.go b/agent/constructor.go new file mode 100644 index 0000000..7eed122 --- /dev/null +++ b/agent/constructor.go @@ -0,0 +1,101 @@ +package agent + +import ( + "github.com/mudler/local-agent-framework/llm" + "github.com/sashabaranov/go-openai" +) + +type llmOptions struct { + APIURL string + Model string +} + +type options struct { + LLMAPI llmOptions + Character Character +} + +type Agent struct { + options *options + Character Character + client *openai.Client +} + +type Option func(*options) error + +func defaultOptions() *options { + return &options{ + LLMAPI: llmOptions{ + APIURL: "http://localhost:8080", + Model: "echidna", + }, + Character: Character{ + Name: "John Doe", + Age: 0, + Occupation: "Unemployed", + NowDoing: "Nothing", + DoingNext: "Nothing", + DoneHistory: []string{}, + Memories: []string{}, + Hobbies: []string{}, + MusicTaste: []string{}, + }, + } +} + +func newOptions(opts ...Option) (*options, error) { + options := defaultOptions() + for _, o := range opts { + if err := o(options); err != nil { + return nil, err + } + } + return options, nil +} + +func New(opts ...Option) (*Agent, error) { + options, err := newOptions(opts...) + if err != nil { + return nil, err + } + + client := llm.NewClient("", options.LLMAPI.APIURL) + a := &Agent{ + options: options, + client: client, + Character: options.Character, + } + return a, nil +} + +func WithLLMAPIURL(url string) Option { + return func(o *options) error { + o.LLMAPI.APIURL = url + return nil + } +} + +func WithModel(model string) Option { + return func(o *options) error { + o.LLMAPI.Model = model + return nil + } +} + +func WithCharacter(c Character) Option { + return func(o *options) error { + o.Character = c + return nil + } +} + +func FromFile(path string) Option { + return func(o *options) error { + c, err := Load(path) + if err != nil { + return err + } + o.Character = *c + return nil + } +} diff --git a/agent/state.go b/agent/state.go new file mode 100644 index 0000000..9a45669 --- /dev/null +++ b/agent/state.go @@ -0,0 +1,48 @@ +package agent + +import ( + "encoding/json" + "os" + + "github.com/mudler/local-agent-framework/llm" +) + +type Character struct { + Name string `json:"name"` + Age int `json:"age"` + Occupation string `json:"job_occupation"` + NowDoing string `json:"doing_now"` + DoingNext string `json:"doing_next"` + DoneHistory []string `json:"done_history"` + Memories []string `json:"memories"` + Hobbies []string `json:"hobbies"` + MusicTaste []string `json:"music_taste"` +} + +func Load(path string) (*Character, error) { + data, err := os.ReadFile(path) + if err != nil { + return nil, err + } + var c Character + err = json.Unmarshal(data, &c) + if err != nil { + return nil, err + } + return &c, nil +} + +func (a *Agent) Save(path string) error { + data, err := json.Marshal(a.options.Character) + if err != nil { + return err + } + return os.WriteFile(path, data, 0644) +} + +func (a *Agent) GenerateIdentity(guidance string) error { + err := llm.GenerateJSONFromStruct(a.client, guidance, a.options.LLMAPI.Model, &a.options.Character) + + a.Character = a.options.Character + return err +} diff --git a/agent/state_test.go b/agent/state_test.go new file mode 100644 index 0000000..9700ee0 --- /dev/null +++ b/agent/state_test.go @@ -0,0 +1,34 @@ +package agent_test + +import ( + "fmt" + + . "github.com/mudler/local-agent-framework/agent" + . "github.com/onsi/ginkgo/v2" + . "github.com/onsi/gomega" +) + +var _ = Describe("Agent test", func() { + + Context("identity", func() { + + It("generates all the fields", func() { + agent, err := New( + WithLLMAPIURL("http://192.168.68.113:8080"), + WithModel("echidna")) + Expect(err).ToNot(HaveOccurred()) + err = agent.GenerateIdentity("An old man with a long beard, a wizard, who lives in a tower.") + Expect(err).ToNot(HaveOccurred()) + Expect(agent.Character.Name).ToNot(BeEmpty()) + Expect(agent.Character.Age).ToNot(BeZero()) + Expect(agent.Character.Occupation).ToNot(BeEmpty()) + Expect(agent.Character.NowDoing).ToNot(BeEmpty()) + Expect(agent.Character.DoingNext).ToNot(BeEmpty()) + Expect(agent.Character.DoneHistory).ToNot(BeEmpty()) + Expect(agent.Character.Memories).ToNot(BeEmpty()) + Expect(agent.Character.Hobbies).ToNot(BeEmpty()) + Expect(agent.Character.MusicTaste).ToNot(BeEmpty()) + fmt.Printf("%+v\n", agent.Character) + }) + }) +}) diff --git a/go.mod b/go.mod new file mode 100644 index 0000000..6e7b9ef --- /dev/null +++ b/go.mod @@ -0,0 +1,21 @@ +module github.com/mudler/local-agent-framework + +go 1.21.1 + +require ( + github.com/onsi/ginkgo/v2 v2.15.0 + github.com/onsi/gomega v1.31.1 + github.com/sashabaranov/go-openai v1.18.3 +) + +require ( + github.com/go-logr/logr v1.3.0 // indirect + github.com/go-task/slim-sprig v0.0.0-20230315185526-52ccab3ef572 // indirect + github.com/google/go-cmp v0.6.0 // indirect + github.com/google/pprof v0.0.0-20210407192527-94a9f03dee38 // indirect + golang.org/x/net v0.19.0 // indirect + golang.org/x/sys v0.15.0 // indirect + golang.org/x/text v0.14.0 // indirect + golang.org/x/tools v0.16.1 // indirect + gopkg.in/yaml.v3 v3.0.1 // indirect +) diff --git a/go.sum b/go.sum new file mode 100644 index 0000000..500deec --- /dev/null +++ b/go.sum @@ -0,0 +1,44 @@ +github.com/chzyer/logex v1.1.10/go.mod h1:+Ywpsq7O8HXn0nuIou7OrIPyXbp3wmkHB+jjWRnGsAI= +github.com/chzyer/readline v0.0.0-20180603132655-2972be24d48e/go.mod h1:nSuG5e5PlCu98SY8svDHJxuZscDgtXS6KTTbou5AhLI= +github.com/chzyer/test v0.0.0-20180213035817-a1ea475d72b1/go.mod h1:Q3SI9o4m/ZMnBNeIyt5eFwwo7qiLfzFZmjNmxjkiQlU= +github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= +github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c= +github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= +github.com/go-logr/logr v1.3.0 h1:2y3SDp0ZXuc6/cjLSZ+Q3ir+QB9T/iG5yYRXqsagWSY= +github.com/go-logr/logr v1.3.0/go.mod h1:9T104GzyrTigFIr8wt5mBrctHMim0Nb2HLGrmQ40KvY= +github.com/go-task/slim-sprig v0.0.0-20230315185526-52ccab3ef572 h1:tfuBGBXKqDEevZMzYi5KSi8KkcZtzBcTgAUUtapy0OI= +github.com/go-task/slim-sprig v0.0.0-20230315185526-52ccab3ef572/go.mod h1:9Pwr4B2jHnOSGXyyzV8ROjYa2ojvAY6HCGYYfMoC3Ls= +github.com/golang/protobuf v1.5.3 h1:KhyjKVUg7Usr/dYsdSqoFveMYd5ko72D+zANwlG1mmg= +github.com/golang/protobuf v1.5.3/go.mod h1:XVQd3VNwM+JqD3oG2Ue2ip4fOMUkwXdXDdiuN0vRsmY= +github.com/google/go-cmp v0.6.0 h1:ofyhxvXcZhMsU5ulbFiLKl/XBFqE1GSq7atu8tAmTRI= +github.com/google/go-cmp v0.6.0/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY= +github.com/google/pprof v0.0.0-20210407192527-94a9f03dee38 h1:yAJXTCF9TqKcTiHJAE8dj7HMvPfh66eeA2JYW7eFpSE= +github.com/google/pprof v0.0.0-20210407192527-94a9f03dee38/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE= +github.com/ianlancetaylor/demangle v0.0.0-20200824232613-28f6c0f3b639/go.mod h1:aSSvb/t6k1mPoxDqO4vJh6VOCGPwU4O0C2/Eqndh1Sc= +github.com/onsi/ginkgo/v2 v2.15.0 h1:79HwNRBAZHOEwrczrgSOPy+eFTTlIGELKy5as+ClttY= +github.com/onsi/ginkgo/v2 v2.15.0/go.mod h1:HlxMHtYF57y6Dpf+mc5529KKmSq9h2FpCF+/ZkwUxKM= +github.com/onsi/gomega v1.31.1 h1:KYppCUK+bUgAZwHOu7EXVBKyQA6ILvOESHkn/tgoqvo= +github.com/onsi/gomega v1.31.1/go.mod h1:y40C95dwAD1Nz36SsEnxvfFe8FFfNxzI5eJ0EYGyAy0= +github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM= +github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= +github.com/sashabaranov/go-openai v1.18.3 h1:dspFGkmZbhjg1059KhqLYSV2GaCiRIn+bOu50TlXUq8= +github.com/sashabaranov/go-openai v1.18.3/go.mod h1:lj5b/K+zjTSFxVLijLSTDZuP7adOgerWeFyZLUhAKRg= +github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= +github.com/stretchr/testify v1.6.1 h1:hDPOHmpOpP40lSULcqw7IrRb/u7w6RpDC9399XyoNd0= +github.com/stretchr/testify v1.6.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= +golang.org/x/net v0.19.0 h1:zTwKpTd2XuCqf8huc7Fo2iSy+4RHPd10s4KzeTnVr1c= +golang.org/x/net v0.19.0/go.mod h1:CfAk/cbD4CthTvqiEl8NpboMuiuOYsAr/7NOjZJtv1U= +golang.org/x/sys v0.0.0-20191204072324-ce4227a45e2e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.15.0 h1:h48lPFYpsTvQJZF4EKyI4aLHaev3CxivZmv7yZig9pc= +golang.org/x/sys v0.15.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= +golang.org/x/text v0.14.0 h1:ScX5w1eTa3QqT8oi6+ziP7dTV1S2+ALU0bI+0zXKWiQ= +golang.org/x/text v0.14.0/go.mod h1:18ZOQIKpY8NJVqYksKHtTdi31H5itFRjB5/qKTNYzSU= +golang.org/x/tools v0.16.1 h1:TLyB3WofjdOEepBHAU20JdNC1Zbg87elYofWYAY5oZA= +golang.org/x/tools v0.16.1/go.mod h1:kYVVN6I1mBNoB1OX+noeBjbRk4IUEPa7JJ+TJMEooJ0= +google.golang.org/protobuf v1.28.0 h1:w43yiav+6bVFTBQFZX0r7ipe9JQ1QsbMgHwbBziscLw= +google.golang.org/protobuf v1.28.0/go.mod h1:HV8QOd/L58Z+nl8r43ehVNZIU/HEI6OcFqwMG9pJV4I= +gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405 h1:yhCVgyC4o1eVCa2tZl7eS0r+SDo693bJlVdllGtEeKM= +gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= +gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= +gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA= +gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= diff --git a/llm/client.go b/llm/client.go new file mode 100644 index 0000000..10cba75 --- /dev/null +++ b/llm/client.go @@ -0,0 +1,14 @@ +package llm + +import "github.com/sashabaranov/go-openai" + +func NewClient(APIKey, URL string) *openai.Client { + // Set up OpenAI client + if APIKey == "" { + //log.Fatal("OPENAI_API_KEY environment variable not set") + APIKey = "sk-xxx" + } + config := openai.DefaultConfig(APIKey) + config.BaseURL = URL + return openai.NewClientWithConfig(config) +} diff --git a/llm/json.go b/llm/json.go new file mode 100644 index 0000000..7d41915 --- /dev/null +++ b/llm/json.go @@ -0,0 +1,47 @@ +package llm + +import ( + "context" + "encoding/json" + "fmt" + + "github.com/sashabaranov/go-openai" +) + +// generateAnswer generates an answer for the given text using the OpenAI API +func GenerateJSON(client *openai.Client, model, text string, i interface{}) error { + req := openai.ChatCompletionRequest{ + ResponseFormat: &openai.ChatCompletionResponseFormat{Type: openai.ChatCompletionResponseFormatTypeJSONObject}, + Model: model, + Messages: []openai.ChatCompletionMessage{ + { + + Role: "user", + Content: text, + }, + }, + } + + resp, err := client.CreateChatCompletion(context.Background(), req) + if err != nil { + return fmt.Errorf("failed to generate answer: %v", err) + } + if len(resp.Choices) == 0 { + return fmt.Errorf("no response from OpenAI API") + } + + err = json.Unmarshal([]byte(resp.Choices[0].Message.Content), i) + if err != nil { + return err + } + return nil +} + +func GenerateJSONFromStruct(client *openai.Client, guidance, model string, i interface{}) error { + // TODO: use functions? + exampleJSON, err := json.Marshal(i) + if err != nil { + return err + } + return GenerateJSON(client, model, "Generate a character as JSON data. "+guidance+". This is the JSON fields that should contain: "+string(exampleJSON), i) +} From 3790a872ea61b270e40a35a1f665ad335f852fa3 Mon Sep 17 00:00:00 2001 From: mudler Date: Sun, 21 Jan 2024 11:09:47 +0100 Subject: [PATCH 003/399] refactoring --- Makefile | 2 +- agent/actions.go | 1 + agent/ask.go | 1 + agent/constructor.go | 41 +++++++++++++++++++++++++++++++++-------- agent/state.go | 33 ++++++++++++++++++++++++++++----- agent/state_test.go | 29 +++++++++++++++++++++++++---- 6 files changed, 89 insertions(+), 18 deletions(-) create mode 100644 agent/actions.go create mode 100644 agent/ask.go diff --git a/Makefile b/Makefile index 920cace..48c139c 100644 --- a/Makefile +++ b/Makefile @@ -1,4 +1,4 @@ GOCMD=go tests: - $(GOCMD) run github.com/onsi/ginkgo/v2/ginkgo --flake-attempts 5 --fail-fast -v -r ./... \ No newline at end of file + $(GOCMD) run github.com/onsi/ginkgo/v2/ginkgo --fail-fast -v -r ./... \ No newline at end of file diff --git a/agent/actions.go b/agent/actions.go new file mode 100644 index 0000000..4883155 --- /dev/null +++ b/agent/actions.go @@ -0,0 +1 @@ +package agent diff --git a/agent/ask.go b/agent/ask.go new file mode 100644 index 0000000..4883155 --- /dev/null +++ b/agent/ask.go @@ -0,0 +1 @@ +package agent diff --git a/agent/constructor.go b/agent/constructor.go index 7eed122..4cd4061 100644 --- a/agent/constructor.go +++ b/agent/constructor.go @@ -1,18 +1,23 @@ package agent import ( + "fmt" + "github.com/mudler/local-agent-framework/llm" "github.com/sashabaranov/go-openai" ) type llmOptions struct { APIURL string + APIKey string Model string } type options struct { - LLMAPI llmOptions - Character Character + LLMAPI llmOptions + character Character + randomIdentityGuidance string + randomIdentity bool } type Agent struct { @@ -29,7 +34,7 @@ func defaultOptions() *options { APIURL: "http://localhost:8080", Model: "echidna", }, - Character: Character{ + character: Character{ Name: "John Doe", Age: 0, Occupation: "Unemployed", @@ -59,13 +64,18 @@ func New(opts ...Option) (*Agent, error) { return nil, err } - client := llm.NewClient("", options.LLMAPI.APIURL) + client := llm.NewClient(options.LLMAPI.APIKey, options.LLMAPI.APIURL) a := &Agent{ options: options, client: client, - Character: options.Character, + Character: options.character, } - return a, nil + + if a.options.randomIdentity { + err = a.generateIdentity("") + } + + return a, err } func WithLLMAPIURL(url string) Option { @@ -75,6 +85,13 @@ func WithLLMAPIURL(url string) Option { } } +func WithLLMAPIKey(key string) Option { + return func(o *options) error { + o.LLMAPI.APIKey = key + return nil + } +} + func WithModel(model string) Option { return func(o *options) error { o.LLMAPI.Model = model @@ -84,7 +101,7 @@ func WithModel(model string) Option { func WithCharacter(c Character) Option { return func(o *options) error { - o.Character = c + o.character = c return nil } } @@ -95,7 +112,15 @@ func FromFile(path string) Option { if err != nil { return err } - o.Character = *c + o.character = *c + return nil + } +} + +func WithRandomIdentity(guidance ...string) Option { + return func(o *options) error { + o.randomIdentityGuidance = fmt.Sprint(guidance) + o.randomIdentity = true return nil } } diff --git a/agent/state.go b/agent/state.go index 9a45669..27d8c15 100644 --- a/agent/state.go +++ b/agent/state.go @@ -2,6 +2,7 @@ package agent import ( "encoding/json" + "fmt" "os" "github.com/mudler/local-agent-framework/llm" @@ -17,6 +18,7 @@ type Character struct { Memories []string `json:"memories"` Hobbies []string `json:"hobbies"` MusicTaste []string `json:"music_taste"` + Sex string `json:"sex"` } func Load(path string) (*Character, error) { @@ -33,16 +35,37 @@ func Load(path string) (*Character, error) { } func (a *Agent) Save(path string) error { - data, err := json.Marshal(a.options.Character) + data, err := json.Marshal(a.options.character) if err != nil { return err } return os.WriteFile(path, data, 0644) } -func (a *Agent) GenerateIdentity(guidance string) error { - err := llm.GenerateJSONFromStruct(a.client, guidance, a.options.LLMAPI.Model, &a.options.Character) +func (a *Agent) generateIdentity(guidance string) error { + if guidance == "" { + guidance = "Generate a random character for roleplaying." + } + err := llm.GenerateJSONFromStruct(a.client, guidance, a.options.LLMAPI.Model, &a.options.character) + a.Character = a.options.character + if err != nil { + return err + } - a.Character = a.options.Character - return err + if !a.validCharacter() { + return fmt.Errorf("invalid character") + } + return nil +} + +func (a *Agent) validCharacter() bool { + return a.Character.Name != "" && + a.Character.Age != 0 && + a.Character.Occupation != "" && + a.Character.NowDoing != "" && + a.Character.DoingNext != "" && + len(a.Character.DoneHistory) != 0 && + len(a.Character.Memories) != 0 && + len(a.Character.Hobbies) != 0 && + len(a.Character.MusicTaste) != 0 } diff --git a/agent/state_test.go b/agent/state_test.go index 9700ee0..1df175c 100644 --- a/agent/state_test.go +++ b/agent/state_test.go @@ -11,13 +11,34 @@ import ( var _ = Describe("Agent test", func() { Context("identity", func() { - + It("generates all the fields with random data", func() { + agent, err := New( + WithLLMAPIURL("http://192.168.68.113:8080"), + WithModel("echidna"), + WithRandomIdentity(), + ) + Expect(err).ToNot(HaveOccurred()) + Expect(agent.Character.Name).ToNot(BeEmpty()) + Expect(agent.Character.Age).ToNot(BeZero()) + Expect(agent.Character.Occupation).ToNot(BeEmpty()) + Expect(agent.Character.NowDoing).ToNot(BeEmpty()) + Expect(agent.Character.DoingNext).ToNot(BeEmpty()) + Expect(agent.Character.DoneHistory).ToNot(BeEmpty()) + Expect(agent.Character.Memories).ToNot(BeEmpty()) + Expect(agent.Character.Hobbies).ToNot(BeEmpty()) + Expect(agent.Character.MusicTaste).ToNot(BeEmpty()) + fmt.Printf("%+v\n", agent.Character) + }) + It("detect an invalid character", func() { + _, err := New(WithRandomIdentity()) + Expect(err).To(HaveOccurred()) + }) It("generates all the fields", func() { agent, err := New( WithLLMAPIURL("http://192.168.68.113:8080"), - WithModel("echidna")) - Expect(err).ToNot(HaveOccurred()) - err = agent.GenerateIdentity("An old man with a long beard, a wizard, who lives in a tower.") + WithModel("echidna"), + WithRandomIdentity("An old man with a long beard, a wizard, who lives in a tower."), + ) Expect(err).ToNot(HaveOccurred()) Expect(agent.Character.Name).ToNot(BeEmpty()) Expect(agent.Character.Age).ToNot(BeZero()) From 2cc907cbd728f6f4b3996f86434e379c162851b2 Mon Sep 17 00:00:00 2001 From: mudler Date: Sun, 21 Jan 2024 11:17:10 +0100 Subject: [PATCH 004/399] better debugging --- agent/state.go | 27 +++++++++++++++++++++++++++ agent/state_test.go | 4 ++-- 2 files changed, 29 insertions(+), 2 deletions(-) diff --git a/agent/state.go b/agent/state.go index 27d8c15..ce9e9c4 100644 --- a/agent/state.go +++ b/agent/state.go @@ -69,3 +69,30 @@ func (a *Agent) validCharacter() bool { len(a.Character.Hobbies) != 0 && len(a.Character.MusicTaste) != 0 } + +const fmtT = `===================== +Name: %s +Age: %d +Occupation: %s +Now doing: %s +Doing next: %s +Done history: %v +Memories: %v +Hobbies: %v +Music taste: %v +=====================` + +func (a *Agent) String() string { + return fmt.Sprintf( + fmtT, + a.Character.Name, + a.Character.Age, + a.Character.Occupation, + a.Character.NowDoing, + a.Character.DoingNext, + a.Character.DoneHistory, + a.Character.Memories, + a.Character.Hobbies, + a.Character.MusicTaste, + ) +} diff --git a/agent/state_test.go b/agent/state_test.go index 1df175c..f8fa0e7 100644 --- a/agent/state_test.go +++ b/agent/state_test.go @@ -27,7 +27,7 @@ var _ = Describe("Agent test", func() { Expect(agent.Character.Memories).ToNot(BeEmpty()) Expect(agent.Character.Hobbies).ToNot(BeEmpty()) Expect(agent.Character.MusicTaste).ToNot(BeEmpty()) - fmt.Printf("%+v\n", agent.Character) + fmt.Println(agent.String()) }) It("detect an invalid character", func() { _, err := New(WithRandomIdentity()) @@ -49,7 +49,7 @@ var _ = Describe("Agent test", func() { Expect(agent.Character.Memories).ToNot(BeEmpty()) Expect(agent.Character.Hobbies).ToNot(BeEmpty()) Expect(agent.Character.MusicTaste).ToNot(BeEmpty()) - fmt.Printf("%+v\n", agent.Character) + fmt.Println(agent.String()) }) }) }) From d52e3b8309745095a717d3fe6dc64f6e71f1b4a2 Mon Sep 17 00:00:00 2001 From: mudler Date: Sun, 21 Jan 2024 11:18:40 +0100 Subject: [PATCH 005/399] fixup --- agent/constructor.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/agent/constructor.go b/agent/constructor.go index 4cd4061..b4ce6c1 100644 --- a/agent/constructor.go +++ b/agent/constructor.go @@ -72,7 +72,7 @@ func New(opts ...Option) (*Agent, error) { } if a.options.randomIdentity { - err = a.generateIdentity("") + err = a.generateIdentity(a.options.randomIdentityGuidance) } return a, err From 61e4be0d0cfa56eccad44e91312bb8c960d61a84 Mon Sep 17 00:00:00 2001 From: mudler Date: Sun, 21 Jan 2024 16:12:34 +0100 Subject: [PATCH 006/399] add job/queue logics --- agent/actions.go | 96 ++++++++++++++++++++++++++++ agent/agent.go | 64 +++++++++++++++++++ agent/ask.go | 1 - agent/jobs.go | 57 +++++++++++++++++ agent/{constructor.go => options.go} | 45 ++++--------- agent/state.go | 6 +- llm/json.go | 8 +-- 7 files changed, 236 insertions(+), 41 deletions(-) create mode 100644 agent/agent.go delete mode 100644 agent/ask.go create mode 100644 agent/jobs.go rename agent/{constructor.go => options.go} (72%) diff --git a/agent/actions.go b/agent/actions.go index 4883155..79d94b6 100644 --- a/agent/actions.go +++ b/agent/actions.go @@ -1 +1,97 @@ package agent + +import ( + "context" + "fmt" + + "github.com/mudler/local-agent-framework/llm" +) + +type ActionContext struct { + context.Context + cancelFunc context.CancelFunc +} + +// Actions is something the agent can do +type Action interface { + Description() string + ID() string + Run(map[string]string) error +} + +var ErrContextCanceled = fmt.Errorf("context canceled") + +func (a *Agent) Stop() { + a.context.cancelFunc() +} + +func (a *Agent) Run() error { + // The agent run does two things: + // picks up requests from a queue + // and generates a response/perform actions + + // It is also preemptive. + // That is, it can interrupt the current action + // if another one comes in. + + // If there is no action, periodically evaluate if it has to do something on its own. + + // Expose a REST API to interact with the agent to ask it things + + for { + select { + case job := <-a.jobQueue: + // Consume the job and generate a response + a.consumeJob(job) + case <-a.context.Done(): + // Agent has been canceled, return error + return ErrContextCanceled + } + } +} + +// StopAction stops the current action +// if any. Can be called before adding a new job. +func (a *Agent) StopAction() { + if a.actionContext != nil { + a.actionContext.cancelFunc() + } +} + +func (a *Agent) consumeJob(job *Job) { + // Consume the job and generate a response + // Implement your logic here + + // Set the action context + ctx, cancel := context.WithCancel(context.Background()) + a.actionContext = &ActionContext{ + Context: ctx, + cancelFunc: cancel, + } + + if job.Image != "" { + // TODO: Use llava to explain the image content + } + + if job.Text == "" { + fmt.Println("no text!") + return + } + + decision := struct { + Action string `json:"action"` + }{ + Action: "generate_identity", + } + + llm.GenerateJSON(ctx, a.client, a.options.LLMAPI.Model, + "decide which action to take give the", + &decision) + + // perform the action (if any) + // or reply with a result + + // if there is an action... + job.Result.SetResult("I don't know how to do that yet.") + +} diff --git a/agent/agent.go b/agent/agent.go new file mode 100644 index 0000000..d19b521 --- /dev/null +++ b/agent/agent.go @@ -0,0 +1,64 @@ +package agent + +import ( + "context" + "fmt" + + "github.com/mudler/local-agent-framework/llm" + "github.com/sashabaranov/go-openai" +) + +type Agent struct { + options *options + Character Character + client *openai.Client + jobQueue chan *Job + actionContext *ActionContext + context *ActionContext + availableActions []Action +} + +func New(opts ...Option) (*Agent, error) { + options, err := newOptions(opts...) + if err != nil { + if err != nil { + err = fmt.Errorf("failed to set options: %v", err) + } + return nil, err + } + + client := llm.NewClient(options.LLMAPI.APIKey, options.LLMAPI.APIURL) + + c := context.Background() + if options.context != nil { + c = options.context + } + + ctx, cancel := context.WithCancel(c) + a := &Agent{ + options: options, + client: client, + Character: options.character, + context: &ActionContext{ + Context: ctx, + cancelFunc: cancel, + }, + } + + if a.options.randomIdentity { + if err = a.generateIdentity(a.options.randomIdentityGuidance); err != nil { + return a, fmt.Errorf("failed to generate identity: %v", err) + } + } + + return a, nil +} + +// Ask is a pre-emptive, blocking call that returns the response as soon as it's ready. +// It discards any other computation. +func (a *Agent) Ask(text, image string) string { + a.StopAction() + j := NewJob(text, image) + a.jobQueue <- j + return j.Result.WaitResult() +} diff --git a/agent/ask.go b/agent/ask.go deleted file mode 100644 index 4883155..0000000 --- a/agent/ask.go +++ /dev/null @@ -1 +0,0 @@ -package agent diff --git a/agent/jobs.go b/agent/jobs.go new file mode 100644 index 0000000..4cc3b06 --- /dev/null +++ b/agent/jobs.go @@ -0,0 +1,57 @@ +package agent + +import "sync" + +// Job is a request to the agent to do something +type Job struct { + // The job is a request to the agent to do something + // It can be a question, a command, or a request to do something + // The agent will try to do it, and return a response + Text string + Image string // base64 encoded image + Result *JobResult +} + +// JobResult is the result of a job +type JobResult struct { + sync.Mutex + // The result of a job + Text string + ready chan bool +} + +// NewJobResult creates a new job result +func NewJobResult() *JobResult { + return &JobResult{ + ready: make(chan bool), + } +} + +// NewJob creates a new job +// It is a request to the agent to do something +// It has a JobResult to get the result asynchronously +// To wait for a Job result, use JobResult.WaitResult() +func NewJob(text, image string) *Job { + return &Job{ + Text: text, + Image: image, + Result: NewJobResult(), + } +} + +// SetResult sets the result of a job +func (j *JobResult) SetResult(text string) { + j.Lock() + defer j.Unlock() + + j.Text = text + close(j.ready) +} + +// WaitResult waits for the result of a job +func (j *JobResult) WaitResult() string { + <-j.ready + j.Lock() + defer j.Unlock() + return j.Text +} diff --git a/agent/constructor.go b/agent/options.go similarity index 72% rename from agent/constructor.go rename to agent/options.go index b4ce6c1..37bac26 100644 --- a/agent/constructor.go +++ b/agent/options.go @@ -1,12 +1,11 @@ package agent import ( - "fmt" - - "github.com/mudler/local-agent-framework/llm" - "github.com/sashabaranov/go-openai" + "context" + "strings" ) +type Option func(*options) error type llmOptions struct { APIURL string APIKey string @@ -18,16 +17,9 @@ type options struct { character Character randomIdentityGuidance string randomIdentity bool + context context.Context } -type Agent struct { - options *options - Character Character - client *openai.Client -} - -type Option func(*options) error - func defaultOptions() *options { return &options{ LLMAPI: llmOptions{ @@ -58,26 +50,6 @@ func newOptions(opts ...Option) (*options, error) { return options, nil } -func New(opts ...Option) (*Agent, error) { - options, err := newOptions(opts...) - if err != nil { - return nil, err - } - - client := llm.NewClient(options.LLMAPI.APIKey, options.LLMAPI.APIURL) - a := &Agent{ - options: options, - client: client, - Character: options.character, - } - - if a.options.randomIdentity { - err = a.generateIdentity(a.options.randomIdentityGuidance) - } - - return a, err -} - func WithLLMAPIURL(url string) Option { return func(o *options) error { o.LLMAPI.APIURL = url @@ -92,6 +64,13 @@ func WithLLMAPIKey(key string) Option { } } +func WithContext(ctx context.Context) Option { + return func(o *options) error { + o.context = ctx + return nil + } +} + func WithModel(model string) Option { return func(o *options) error { o.LLMAPI.Model = model @@ -119,7 +98,7 @@ func FromFile(path string) Option { func WithRandomIdentity(guidance ...string) Option { return func(o *options) error { - o.randomIdentityGuidance = fmt.Sprint(guidance) + o.randomIdentityGuidance = strings.Join(guidance, "") o.randomIdentity = true return nil } diff --git a/agent/state.go b/agent/state.go index ce9e9c4..8f73935 100644 --- a/agent/state.go +++ b/agent/state.go @@ -46,14 +46,14 @@ func (a *Agent) generateIdentity(guidance string) error { if guidance == "" { guidance = "Generate a random character for roleplaying." } - err := llm.GenerateJSONFromStruct(a.client, guidance, a.options.LLMAPI.Model, &a.options.character) + err := llm.GenerateJSONFromStruct(a.context.Context, a.client, guidance, a.options.LLMAPI.Model, &a.options.character) a.Character = a.options.character if err != nil { - return err + return fmt.Errorf("failed to generate JSON from structure: %v", err) } if !a.validCharacter() { - return fmt.Errorf("invalid character") + return fmt.Errorf("generated character is not valid ( guidance: %s ): %v", guidance, a.String()) } return nil } diff --git a/llm/json.go b/llm/json.go index 7d41915..80a87f2 100644 --- a/llm/json.go +++ b/llm/json.go @@ -9,7 +9,7 @@ import ( ) // generateAnswer generates an answer for the given text using the OpenAI API -func GenerateJSON(client *openai.Client, model, text string, i interface{}) error { +func GenerateJSON(ctx context.Context, client *openai.Client, model, text string, i interface{}) error { req := openai.ChatCompletionRequest{ ResponseFormat: &openai.ChatCompletionResponseFormat{Type: openai.ChatCompletionResponseFormatTypeJSONObject}, Model: model, @@ -22,7 +22,7 @@ func GenerateJSON(client *openai.Client, model, text string, i interface{}) erro }, } - resp, err := client.CreateChatCompletion(context.Background(), req) + resp, err := client.CreateChatCompletion(ctx, req) if err != nil { return fmt.Errorf("failed to generate answer: %v", err) } @@ -37,11 +37,11 @@ func GenerateJSON(client *openai.Client, model, text string, i interface{}) erro return nil } -func GenerateJSONFromStruct(client *openai.Client, guidance, model string, i interface{}) error { +func GenerateJSONFromStruct(ctx context.Context, client *openai.Client, guidance, model string, i interface{}) error { // TODO: use functions? exampleJSON, err := json.Marshal(i) if err != nil { return err } - return GenerateJSON(client, model, "Generate a character as JSON data. "+guidance+". This is the JSON fields that should contain: "+string(exampleJSON), i) + return GenerateJSON(ctx, client, model, "Generate a character as JSON data. "+guidance+". This is the JSON fields that should contain: "+string(exampleJSON), i) } From 9926674c38178c55a85fc9dbfd38a41dbcd8ca39 Mon Sep 17 00:00:00 2001 From: mudler Date: Sat, 30 Mar 2024 22:35:24 +0100 Subject: [PATCH 007/399] fixups --- agent/actions.go | 161 ++++++++++++++++++++++++++++++++++---- agent/agent.go | 13 ++- agent/agent_suite_test.go | 13 +++ agent/jobs.go | 15 +++- agent/options.go | 8 ++ agent/state_test.go | 8 +- 6 files changed, 194 insertions(+), 24 deletions(-) diff --git a/agent/actions.go b/agent/actions.go index 79d94b6..b035ba8 100644 --- a/agent/actions.go +++ b/agent/actions.go @@ -2,9 +2,12 @@ package agent import ( "context" + "encoding/json" "fmt" + "time" "github.com/mudler/local-agent-framework/llm" + "github.com/sashabaranov/go-openai" ) type ActionContext struct { @@ -12,16 +15,31 @@ type ActionContext struct { cancelFunc context.CancelFunc } +type ActionParams map[string]string + +func (ap ActionParams) Read(s string) error { + err := json.Unmarshal([]byte(s), &ap) + return err +} + +type ActionDefinition openai.FunctionDefinition + +func (a ActionDefinition) FD() openai.FunctionDefinition { + return openai.FunctionDefinition(a) +} + // Actions is something the agent can do type Action interface { - Description() string ID() string - Run(map[string]string) error + Run(ActionParams) (string, error) + Definition() ActionDefinition } var ErrContextCanceled = fmt.Errorf("context canceled") func (a *Agent) Stop() { + a.Lock() + defer a.Unlock() a.context.cancelFunc() } @@ -38,14 +56,31 @@ func (a *Agent) Run() error { // Expose a REST API to interact with the agent to ask it things + fmt.Println("Agent is running") + clearConvTimer := time.NewTicker(1 * time.Minute) for { + fmt.Println("Agent loop") + select { case job := <-a.jobQueue: + fmt.Println("job from the queue") + // Consume the job and generate a response + // TODO: Give a short-term memory to the agent a.consumeJob(job) case <-a.context.Done(): + fmt.Println("Context canceled, agent is stopping...") + // Agent has been canceled, return error return ErrContextCanceled + case <-clearConvTimer.C: + fmt.Println("Removing chat history...") + + // TODO: decide to do something on its own with the conversation result + // before clearing it out + + // Clear the conversation + a.currentConversation = []openai.ChatCompletionMessage{} } } } @@ -53,21 +88,24 @@ func (a *Agent) Run() error { // StopAction stops the current action // if any. Can be called before adding a new job. func (a *Agent) StopAction() { + a.Lock() + defer a.Unlock() if a.actionContext != nil { a.actionContext.cancelFunc() } } func (a *Agent) consumeJob(job *Job) { - // Consume the job and generate a response - // Implement your logic here + // Consume the job and generate a response + a.Lock() // Set the action context ctx, cancel := context.WithCancel(context.Background()) a.actionContext = &ActionContext{ Context: ctx, cancelFunc: cancel, } + a.Unlock() if job.Image != "" { // TODO: Use llava to explain the image content @@ -78,20 +116,115 @@ func (a *Agent) consumeJob(job *Job) { return } - decision := struct { - Action string `json:"action"` - }{ - Action: "generate_identity", + actionChoice := struct { + Choice string `json:"choice"` + }{} + + llm.GenerateJSON(ctx, a.client, a.options.LLMAPI.Model, , &actionChoice) + + // https://github.com/sashabaranov/go-openai/blob/0925563e86c2fdc5011310aa616ba493989cfe0a/examples/completion-with-tool/main.go#L16 + actions := a.options.actions + tools := []openai.Tool{} + + messages := a.currentConversation + if job.Text != "" { + messages = append(messages, openai.ChatCompletionMessage{ + Role: "user", + Content: job.Text, + }) } - llm.GenerateJSON(ctx, a.client, a.options.LLMAPI.Model, - "decide which action to take give the", - &decision) + for _, action := range actions { + tools = append(tools, openai.Tool{ + Type: openai.ToolTypeFunction, + Function: action.Definition().FD(), + }) + } + + decision := openai.ChatCompletionRequest{ + Model: a.options.LLMAPI.Model, + Messages: messages, + Tools: tools, + } + resp, err := a.client.CreateChatCompletion(ctx, decision) + if err != nil || len(resp.Choices) != 1 { + fmt.Printf("Completion error: err:%v len(choices):%v\n", err, + len(resp.Choices)) + return + } + + msg := resp.Choices[0].Message + if len(msg.ToolCalls) != 1 { + fmt.Printf("Completion error: len(toolcalls): %v\n", len(msg.ToolCalls)) + return + } + + // simulate calling the function & responding to OpenAI + messages = append(messages, msg) + fmt.Printf("OpenAI called us back wanting to invoke our function '%v' with params '%v'\n", + msg.ToolCalls[0].Function.Name, msg.ToolCalls[0].Function.Arguments) + + params := ActionParams{} + if err := params.Read(msg.ToolCalls[0].Function.Arguments); err != nil { + fmt.Printf("error unmarshalling arguments: %v\n", err) + return + } + + var result string + for _, action := range actions { + fmt.Println("Checking action: ", action.ID()) + fmt.Println("Checking action: ", msg.ToolCalls[0].Function.Name) + if action.ID() == msg.ToolCalls[0].Function.Name { + fmt.Printf("Running action: %v\n", action.ID()) + if result, err = action.Run(params); err != nil { + fmt.Printf("error running action: %v\n", err) + return + } + } + } + fmt.Printf("Action run result: %v\n", result) + + // simulate calling the function + messages = append(messages, openai.ChatCompletionMessage{ + Role: openai.ChatMessageRoleTool, + Content: result, + Name: msg.ToolCalls[0].Function.Name, + ToolCallID: msg.ToolCalls[0].ID, + }) + + resp, err = a.client.CreateChatCompletion(ctx, + openai.ChatCompletionRequest{ + Model: a.options.LLMAPI.Model, + Messages: messages, + Tools: tools, + }, + ) + if err != nil || len(resp.Choices) != 1 { + fmt.Printf("2nd completion error: err:%v len(choices):%v\n", err, + len(resp.Choices)) + return + } + + // display OpenAI's response to the original question utilizing our function + msg = resp.Choices[0].Message + fmt.Printf("OpenAI answered the original request with: %v\n", + msg.Content) + + messages = append(messages, msg) + a.currentConversation = append(a.currentConversation, messages...) + + if len(msg.ToolCalls) != 0 { + fmt.Printf("OpenAI wants to call again functions: %v\n", msg) + // wants to call again an action (?) + job.Text = "" // Call the job with the current conversation + job.Result.SetResult(result) + a.jobQueue <- job + return + } // perform the action (if any) // or reply with a result - // if there is an action... - job.Result.SetResult("I don't know how to do that yet.") - + job.Result.SetResult(result) + job.Result.Finish() } diff --git a/agent/agent.go b/agent/agent.go index d19b521..bf032d2 100644 --- a/agent/agent.go +++ b/agent/agent.go @@ -3,12 +3,14 @@ package agent import ( "context" "fmt" + "sync" "github.com/mudler/local-agent-framework/llm" "github.com/sashabaranov/go-openai" ) type Agent struct { + sync.Mutex options *options Character Character client *openai.Client @@ -16,6 +18,8 @@ type Agent struct { actionContext *ActionContext context *ActionContext availableActions []Action + + currentConversation []openai.ChatCompletionMessage } func New(opts ...Option) (*Agent, error) { @@ -36,6 +40,7 @@ func New(opts ...Option) (*Agent, error) { ctx, cancel := context.WithCancel(c) a := &Agent{ + jobQueue: make(chan *Job), options: options, client: client, Character: options.character, @@ -43,6 +48,7 @@ func New(opts ...Option) (*Agent, error) { Context: ctx, cancelFunc: cancel, }, + availableActions: options.actions, } if a.options.randomIdentity { @@ -56,9 +62,12 @@ func New(opts ...Option) (*Agent, error) { // Ask is a pre-emptive, blocking call that returns the response as soon as it's ready. // It discards any other computation. -func (a *Agent) Ask(text, image string) string { - a.StopAction() +func (a *Agent) Ask(text, image string) []string { + //a.StopAction() j := NewJob(text, image) + fmt.Println("Job created", text) a.jobQueue <- j + fmt.Println("Waiting for result") + return j.Result.WaitResult() } diff --git a/agent/agent_suite_test.go b/agent/agent_suite_test.go index ff10f4c..7db5e21 100644 --- a/agent/agent_suite_test.go +++ b/agent/agent_suite_test.go @@ -1,6 +1,7 @@ package agent_test import ( + "os" "testing" . "github.com/onsi/ginkgo/v2" @@ -11,3 +12,15 @@ func TestAgent(t *testing.T) { RegisterFailHandler(Fail) RunSpecs(t, "Agent test suite") } + +var testModel = os.Getenv("TEST_MODEL") +var apiModel = os.Getenv("API_MODEL") + +func init() { + if testModel == "" { + testModel = "hermes-2-pro-mistral" + } + if apiModel == "" { + apiModel = "http://192.168.68.113:8080" + } +} diff --git a/agent/jobs.go b/agent/jobs.go index 4cc3b06..f7ccdeb 100644 --- a/agent/jobs.go +++ b/agent/jobs.go @@ -16,7 +16,7 @@ type Job struct { type JobResult struct { sync.Mutex // The result of a job - Text string + Data []string ready chan bool } @@ -44,14 +44,21 @@ func (j *JobResult) SetResult(text string) { j.Lock() defer j.Unlock() - j.Text = text + j.Data = append(j.Data, text) +} + +// SetResult sets the result of a job +func (j *JobResult) Finish() { + j.Lock() + defer j.Unlock() + close(j.ready) } // WaitResult waits for the result of a job -func (j *JobResult) WaitResult() string { +func (j *JobResult) WaitResult() []string { <-j.ready j.Lock() defer j.Unlock() - return j.Text + return j.Data } diff --git a/agent/options.go b/agent/options.go index 37bac26..851537c 100644 --- a/agent/options.go +++ b/agent/options.go @@ -17,6 +17,7 @@ type options struct { character Character randomIdentityGuidance string randomIdentity bool + actions []Action context context.Context } @@ -103,3 +104,10 @@ func WithRandomIdentity(guidance ...string) Option { return nil } } + +func WithActions(actions ...Action) Option { + return func(o *options) error { + o.actions = actions + return nil + } +} diff --git a/agent/state_test.go b/agent/state_test.go index f8fa0e7..d5d40e9 100644 --- a/agent/state_test.go +++ b/agent/state_test.go @@ -13,8 +13,8 @@ var _ = Describe("Agent test", func() { Context("identity", func() { It("generates all the fields with random data", func() { agent, err := New( - WithLLMAPIURL("http://192.168.68.113:8080"), - WithModel("echidna"), + WithLLMAPIURL(apiModel), + WithModel(testModel), WithRandomIdentity(), ) Expect(err).ToNot(HaveOccurred()) @@ -35,8 +35,8 @@ var _ = Describe("Agent test", func() { }) It("generates all the fields", func() { agent, err := New( - WithLLMAPIURL("http://192.168.68.113:8080"), - WithModel("echidna"), + WithLLMAPIURL(apiModel), + WithModel(testModel), WithRandomIdentity("An old man with a long beard, a wizard, who lives in a tower."), ) Expect(err).ToNot(HaveOccurred()) From 658681f344ae7f84b95b62841bcbba3a4028b96d Mon Sep 17 00:00:00 2001 From: Ettore Di Giacinto Date: Sun, 31 Mar 2024 00:26:48 +0100 Subject: [PATCH 008/399] let it choose --- agent/actions.go | 50 ++++++++++++++++++++++++++++++++++++++++++++---- llm/json.go | 1 + 2 files changed, 47 insertions(+), 4 deletions(-) diff --git a/agent/actions.go b/agent/actions.go index b035ba8..cf187e9 100644 --- a/agent/actions.go +++ b/agent/actions.go @@ -6,6 +6,7 @@ import ( "fmt" "time" + //"github.com/mudler/local-agent-framework/llm" "github.com/mudler/local-agent-framework/llm" "github.com/sashabaranov/go-openai" ) @@ -31,6 +32,7 @@ func (a ActionDefinition) FD() openai.FunctionDefinition { // Actions is something the agent can do type Action interface { ID() string + Description() string Run(ActionParams) (string, error) Definition() ActionDefinition } @@ -117,10 +119,46 @@ func (a *Agent) consumeJob(job *Job) { } actionChoice := struct { - Choice string `json:"choice"` + Intent string `json:"intent"` + Reasoning string `json:"reasoning"` }{} - llm.GenerateJSON(ctx, a.client, a.options.LLMAPI.Model, , &actionChoice) + action_pick := "You can take any action between: " + for _, action := range a.options.actions { + action_pick += action.ID() + ": " + action.Description() + ", " + } + + action_pick += "or none." + action_pick += "Given the text below, decide which action to take and explain the reasoning behind it. For answering without picking a choice, reply with 'none'." + action_pick += "return the result as a JSON object with the 'intent' and 'reasoning' fields." + + err := llm.GenerateJSON(ctx, a.client, a.options.LLMAPI.Model, action_pick, &actionChoice) + if err != nil { + fmt.Println("Error generating JSON: ", err) + return + } + + fmt.Println("Action choice: ", actionChoice) + if actionChoice.Intent == "" || actionChoice.Intent == "none" { + fmt.Println("No intent detected") + return + } + + // Find the action + var action Action + for _, a := range a.options.actions { + if a.ID() == actionChoice.Intent { + action = a + break + } + } + + if action == nil { + fmt.Println("No action found for intent: ", actionChoice.Intent) + return + } + + // Fill the action parameters // https://github.com/sashabaranov/go-openai/blob/0925563e86c2fdc5011310aa616ba493989cfe0a/examples/completion-with-tool/main.go#L16 actions := a.options.actions @@ -145,6 +183,10 @@ func (a *Agent) consumeJob(job *Job) { Model: a.options.LLMAPI.Model, Messages: messages, Tools: tools, + ToolChoice: &openai.ToolChoice{ + Type: openai.ToolTypeFunction, + Function: openai.ToolFunction{Name: action.ID()}, + }, } resp, err := a.client.CreateChatCompletion(ctx, decision) if err != nil || len(resp.Choices) != 1 { @@ -184,7 +226,7 @@ func (a *Agent) consumeJob(job *Job) { } fmt.Printf("Action run result: %v\n", result) - // simulate calling the function + // result of calling the function messages = append(messages, openai.ChatCompletionMessage{ Role: openai.ChatMessageRoleTool, Content: result, @@ -196,7 +238,7 @@ func (a *Agent) consumeJob(job *Job) { openai.ChatCompletionRequest{ Model: a.options.LLMAPI.Model, Messages: messages, - Tools: tools, + // Tools: tools, }, ) if err != nil || len(resp.Choices) != 1 { diff --git a/llm/json.go b/llm/json.go index 80a87f2..ded3a51 100644 --- a/llm/json.go +++ b/llm/json.go @@ -30,6 +30,7 @@ func GenerateJSON(ctx context.Context, client *openai.Client, model, text string return fmt.Errorf("no response from OpenAI API") } + fmt.Println(resp.Choices[0].Message.Content) err = json.Unmarshal([]byte(resp.Choices[0].Message.Content), i) if err != nil { return err From 11486d4720b9e771c21536c037934b492acd3d2e Mon Sep 17 00:00:00 2001 From: mudler Date: Sun, 31 Mar 2024 16:51:38 +0200 Subject: [PATCH 009/399] make it work --- agent/actions.go | 251 ++++++++++++++++++++++++++++++----------------- agent/options.go | 2 +- 2 files changed, 162 insertions(+), 91 deletions(-) diff --git a/agent/actions.go b/agent/actions.go index cf187e9..98f9c5d 100644 --- a/agent/actions.go +++ b/agent/actions.go @@ -1,13 +1,15 @@ package agent import ( + "bytes" "context" "encoding/json" "fmt" + "html/template" "time" //"github.com/mudler/local-agent-framework/llm" - "github.com/mudler/local-agent-framework/llm" + "github.com/sashabaranov/go-openai" ) @@ -23,6 +25,11 @@ func (ap ActionParams) Read(s string) error { return err } +func (ap ActionParams) String() string { + b, _ := json.Marshal(ap) + return string(b) +} + type ActionDefinition openai.FunctionDefinition func (a ActionDefinition) FD() openai.FunctionDefinition { @@ -97,6 +104,137 @@ func (a *Agent) StopAction() { } } +func (a *Agent) decision(ctx context.Context, conversation []openai.ChatCompletionMessage, tools []openai.Tool, toolchoice any) (ActionParams, error) { + decision := openai.ChatCompletionRequest{ + Model: a.options.LLMAPI.Model, + Messages: conversation, + Tools: tools, + ToolChoice: toolchoice, + } + resp, err := a.client.CreateChatCompletion(ctx, decision) + if err != nil || len(resp.Choices) != 1 { + fmt.Println("no choices", err) + + return nil, err + } + + msg := resp.Choices[0].Message + if len(msg.ToolCalls) != 1 { + return nil, fmt.Errorf("len(toolcalls): %v", len(msg.ToolCalls)) + } + + params := ActionParams{} + if err := params.Read(msg.ToolCalls[0].Function.Arguments); err != nil { + fmt.Println("can't read params", err) + + return nil, err + } + + return params, nil +} + +type Actions []Action + +func (a Actions) ToTools() []openai.Tool { + tools := []openai.Tool{} + for _, action := range a { + tools = append(tools, openai.Tool{ + Type: openai.ToolTypeFunction, + Function: action.Definition().FD(), + }) + } + return tools +} + +func (a *Agent) generateParameters(ctx context.Context, action Action, conversation []openai.ChatCompletionMessage) (ActionParams, error) { + return a.decision(ctx, conversation, a.options.actions.ToTools(), action.ID()) +} + +const pickActionTemplate = `You can take any of the following tools: + +{{range .Actions}}{{.ID}}: {{.Description}}{{end}} + +or none. Given the text below, decide which action to take and explain the reasoning behind it. For answering without picking a choice, reply with 'none'. + +{{range .Messages}}{{.Content}}{{end}} +` + +func (a *Agent) pickAction(ctx context.Context, messages []openai.ChatCompletionMessage) (Action, error) { + actionChoice := struct { + Intent string `json:"tool"` + Reasoning string `json:"reasoning"` + }{} + + prompt := bytes.NewBuffer([]byte{}) + tmpl, err := template.New("pickAction").Parse(pickActionTemplate) + if err != nil { + return nil, err + } + + err = tmpl.Execute(prompt, struct { + Actions []Action + Messages []openai.ChatCompletionMessage + }{ + Actions: a.options.actions, + Messages: messages, + }) + if err != nil { + return nil, err + } + + fmt.Println(prompt.String()) + + actionsID := []string{} + for _, m := range a.options.actions { + actionsID = append(actionsID, m.ID()) + } + intentionsTools := NewIntention(actionsID...) + + conversation := []openai.ChatCompletionMessage{ + { + Role: "user", + Content: prompt.String(), + }, + } + + params, err := a.decision(ctx, conversation, Actions{intentionsTools}.ToTools(), intentionsTools.ID()) + if err != nil { + fmt.Println("failed decision", err) + return nil, err + } + + dat, err := json.Marshal(params) + if err != nil { + return nil, err + } + + err = json.Unmarshal(dat, &actionChoice) + if err != nil { + return nil, err + } + + fmt.Printf("Action choice: %v\n", actionChoice) + if actionChoice.Intent == "" || actionChoice.Intent == "none" { + return nil, fmt.Errorf("no intent detected") + } + + // Find the action + var action Action + for _, a := range a.options.actions { + if a.ID() == actionChoice.Intent { + action = a + break + } + } + + if action == nil { + fmt.Println("No action found for intent: ", actionChoice.Intent) + return nil, fmt.Errorf("No action found for intent:" + actionChoice.Intent) + } + + return action, nil +} + func (a *Agent) consumeJob(job *Job) { // Consume the job and generate a response @@ -118,52 +256,6 @@ func (a *Agent) consumeJob(job *Job) { return } - actionChoice := struct { - Intent string `json:"intent"` - Reasoning string `json:"reasoning"` - }{} - - action_pick := "You can take any action between: " - for _, action := range a.options.actions { - action_pick += action.ID() + ": " + action.Description() + ", " - } - - action_pick += "or none." - action_pick += "Given the text below, decide which action to take and explain the reasoning behind it. For answering without picking a choice, reply with 'none'." - action_pick += "return the result as a JSON object with the 'intent' and 'reasoning' fields." - - err := llm.GenerateJSON(ctx, a.client, a.options.LLMAPI.Model, action_pick, &actionChoice) - if err != nil { - fmt.Println("Error generating JSON: ", err) - return - } - - fmt.Println("Action choice: ", actionChoice) - if actionChoice.Intent == "" || actionChoice.Intent == "none" { - fmt.Println("No intent detected") - return - } - - // Find the action - var action Action - for _, a := range a.options.actions { - if a.ID() == actionChoice.Intent { - action = a - break - } - } - - if action == nil { - fmt.Println("No action found for intent: ", actionChoice.Intent) - return - } - - // Fill the action parameters - - // https://github.com/sashabaranov/go-openai/blob/0925563e86c2fdc5011310aa616ba493989cfe0a/examples/completion-with-tool/main.go#L16 - actions := a.options.actions - tools := []openai.Tool{} - messages := a.currentConversation if job.Text != "" { messages = append(messages, openai.ChatCompletionMessage{ @@ -172,51 +264,21 @@ func (a *Agent) consumeJob(job *Job) { }) } - for _, action := range actions { - tools = append(tools, openai.Tool{ - Type: openai.ToolTypeFunction, - Function: action.Definition().FD(), - }) - } - - decision := openai.ChatCompletionRequest{ - Model: a.options.LLMAPI.Model, - Messages: messages, - Tools: tools, - ToolChoice: &openai.ToolChoice{ - Type: openai.ToolTypeFunction, - Function: openai.ToolFunction{Name: action.ID()}, - }, - } - resp, err := a.client.CreateChatCompletion(ctx, decision) - if err != nil || len(resp.Choices) != 1 { - fmt.Printf("Completion error: err:%v len(choices):%v\n", err, - len(resp.Choices)) + chosenAction, err := a.pickAction(ctx, messages) + if err != nil { + fmt.Printf("error picking action: %v\n", err) return } - - msg := resp.Choices[0].Message - if len(msg.ToolCalls) != 1 { - fmt.Printf("Completion error: len(toolcalls): %v\n", len(msg.ToolCalls)) - return - } - - // simulate calling the function & responding to OpenAI - messages = append(messages, msg) - fmt.Printf("OpenAI called us back wanting to invoke our function '%v' with params '%v'\n", - msg.ToolCalls[0].Function.Name, msg.ToolCalls[0].Function.Arguments) - - params := ActionParams{} - if err := params.Read(msg.ToolCalls[0].Function.Arguments); err != nil { - fmt.Printf("error unmarshalling arguments: %v\n", err) + params, err := a.generateParameters(ctx, chosenAction, messages) + if err != nil { + fmt.Printf("error generating parameters: %v\n", err) return } var result string - for _, action := range actions { - fmt.Println("Checking action: ", action.ID()) - fmt.Println("Checking action: ", msg.ToolCalls[0].Function.Name) - if action.ID() == msg.ToolCalls[0].Function.Name { + for _, action := range a.options.actions { + fmt.Println("Checking action: ", action.ID(), chosenAction.ID()) + if action.ID() == chosenAction.ID() { fmt.Printf("Running action: %v\n", action.ID()) if result, err = action.Run(params); err != nil { fmt.Printf("error running action: %v\n", err) @@ -226,15 +288,24 @@ func (a *Agent) consumeJob(job *Job) { } fmt.Printf("Action run result: %v\n", result) + // calling the function + messages = append(messages, openai.ChatCompletionMessage{ + Role: "assistant", + FunctionCall: &openai.FunctionCall{ + Name: chosenAction.ID(), + Arguments: params.String(), + }, + }) + // result of calling the function messages = append(messages, openai.ChatCompletionMessage{ Role: openai.ChatMessageRoleTool, Content: result, - Name: msg.ToolCalls[0].Function.Name, - ToolCallID: msg.ToolCalls[0].ID, + Name: chosenAction.ID(), + ToolCallID: chosenAction.ID(), }) - resp, err = a.client.CreateChatCompletion(ctx, + resp, err := a.client.CreateChatCompletion(ctx, openai.ChatCompletionRequest{ Model: a.options.LLMAPI.Model, Messages: messages, @@ -248,7 +319,7 @@ func (a *Agent) consumeJob(job *Job) { } // display OpenAI's response to the original question utilizing our function - msg = resp.Choices[0].Message + msg := resp.Choices[0].Message fmt.Printf("OpenAI answered the original request with: %v\n", msg.Content) diff --git a/agent/options.go b/agent/options.go index 851537c..84699e1 100644 --- a/agent/options.go +++ b/agent/options.go @@ -17,7 +17,7 @@ type options struct { character Character randomIdentityGuidance string randomIdentity bool - actions []Action + actions Actions context context.Context } From 8601956e53ac330fbf01f89879b3bfa355fc7969 Mon Sep 17 00:00:00 2001 From: mudler Date: Sun, 31 Mar 2024 17:08:34 +0200 Subject: [PATCH 010/399] simplify declarations --- agent/actions.go | 64 +++++++++++++++++++++++++++++++----------------- 1 file changed, 42 insertions(+), 22 deletions(-) diff --git a/agent/actions.go b/agent/actions.go index 98f9c5d..713f01a 100644 --- a/agent/actions.go +++ b/agent/actions.go @@ -11,6 +11,7 @@ import ( //"github.com/mudler/local-agent-framework/llm" "github.com/sashabaranov/go-openai" + "github.com/sashabaranov/go-openai/jsonschema" ) type ActionContext struct { @@ -30,20 +31,33 @@ func (ap ActionParams) String() string { return string(b) } -type ActionDefinition openai.FunctionDefinition - -func (a ActionDefinition) FD() openai.FunctionDefinition { - return openai.FunctionDefinition(a) -} +//type ActionDefinition openai.FunctionDefinition // Actions is something the agent can do type Action interface { - ID() string - Description() string Run(ActionParams) (string, error) Definition() ActionDefinition } +type ActionDefinition struct { + Properties map[string]jsonschema.Definition + Required []string + Name string + Description string +} + +func (a ActionDefinition) ToFunctionDefinition() openai.FunctionDefinition { + return openai.FunctionDefinition{ + Name: a.Name, + Description: a.Description, + Parameters: jsonschema.Definition{ + Type: jsonschema.Object, + Properties: a.Properties, + Required: a.Required, + }, + } +} + var ErrContextCanceled = fmt.Errorf("context canceled") func (a *Agent) Stop() { @@ -140,19 +154,19 @@ func (a Actions) ToTools() []openai.Tool { for _, action := range a { tools = append(tools, openai.Tool{ Type: openai.ToolTypeFunction, - Function: action.Definition().FD(), + Function: action.Definition().ToFunctionDefinition(), }) } return tools } func (a *Agent) generateParameters(ctx context.Context, action Action, conversation []openai.ChatCompletionMessage) (ActionParams, error) { - return a.decision(ctx, conversation, a.options.actions.ToTools(), action.ID()) + return a.decision(ctx, conversation, a.options.actions.ToTools(), action.Definition().Name) } const pickActionTemplate = `You can take any of the following tools: -{{range .Actions}}{{.ID}}: {{.Description}}{{end}} +{{range .Actions}}{{.Name}}: {{.Description}}{{end}} or none. Given the text below, decide which action to take and explain the reasoning behind it. For answering without picking a choice, reply with 'none'. @@ -170,12 +184,15 @@ func (a *Agent) pickAction(ctx context.Context, messages []openai.ChatCompletion if err != nil { return nil, err } - + definitions := []ActionDefinition{} + for _, m := range a.options.actions { + definitions = append(definitions, m.Definition()) + } err = tmpl.Execute(prompt, struct { - Actions []Action + Actions []ActionDefinition Messages []openai.ChatCompletionMessage }{ - Actions: a.options.actions, + Actions: definitions, Messages: messages, }) if err != nil { @@ -186,7 +203,7 @@ func (a *Agent) pickAction(ctx context.Context, messages []openai.ChatCompletion actionsID := []string{} for _, m := range a.options.actions { - actionsID = append(actionsID, m.ID()) + actionsID = append(actionsID, m.Definition().Name) } intentionsTools := NewIntention(actionsID...) @@ -197,7 +214,10 @@ func (a *Agent) pickAction(ctx context.Context, messages []openai.ChatCompletion }, } - params, err := a.decision(ctx, conversation, Actions{intentionsTools}.ToTools(), intentionsTools.ID()) + params, err := a.decision(ctx, + conversation, + Actions{intentionsTools}.ToTools(), + intentionsTools.Definition().Name) if err != nil { fmt.Println("failed decision", err) return nil, err @@ -221,7 +241,7 @@ func (a *Agent) pickAction(ctx context.Context, messages []openai.ChatCompletion // Find the action var action Action for _, a := range a.options.actions { - if a.ID() == actionChoice.Intent { + if a.Definition().Name == actionChoice.Intent { action = a break } @@ -277,9 +297,9 @@ func (a *Agent) consumeJob(job *Job) { var result string for _, action := range a.options.actions { - fmt.Println("Checking action: ", action.ID(), chosenAction.ID()) - if action.ID() == chosenAction.ID() { - fmt.Printf("Running action: %v\n", action.ID()) + fmt.Println("Checking action: ", action.Definition().Name, chosenAction.Definition().Name) + if action.Definition().Name == chosenAction.Definition().Name { + fmt.Printf("Running action: %v\n", action.Definition().Name) if result, err = action.Run(params); err != nil { fmt.Printf("error running action: %v\n", err) return @@ -292,7 +312,7 @@ func (a *Agent) consumeJob(job *Job) { messages = append(messages, openai.ChatCompletionMessage{ Role: "assistant", FunctionCall: &openai.FunctionCall{ - Name: chosenAction.ID(), + Name: chosenAction.Definition().Name, Arguments: params.String(), }, }) @@ -301,8 +321,8 @@ func (a *Agent) consumeJob(job *Job) { messages = append(messages, openai.ChatCompletionMessage{ Role: openai.ChatMessageRoleTool, Content: result, - Name: chosenAction.ID(), - ToolCallID: chosenAction.ID(), + Name: chosenAction.Definition().Name, + ToolCallID: chosenAction.Definition().Name, }) resp, err := a.client.CreateChatCompletion(ctx, From aa62d9ef9ef6f97123f13b770e02109fd388a186 Mon Sep 17 00:00:00 2001 From: mudler Date: Sun, 31 Mar 2024 17:20:06 +0200 Subject: [PATCH 011/399] refactor --- action/definition.go | 58 +++++++++++ action/intention.go | 35 +++++++ agent/actions.go | 243 ++++--------------------------------------- agent/agent.go | 79 ++++++++++++-- agent/agent_test.go | 58 +++++++++++ agent/jobs.go | 113 +++++++++++++++++++- 6 files changed, 350 insertions(+), 236 deletions(-) create mode 100644 action/definition.go create mode 100644 action/intention.go create mode 100644 agent/agent_test.go diff --git a/action/definition.go b/action/definition.go new file mode 100644 index 0000000..5ed3aae --- /dev/null +++ b/action/definition.go @@ -0,0 +1,58 @@ +package action + +import ( + "context" + "encoding/json" + + "github.com/sashabaranov/go-openai" + "github.com/sashabaranov/go-openai/jsonschema" +) + +type ActionContext struct { + context.Context + cancelFunc context.CancelFunc +} + +func (ac *ActionContext) Cancel() { + ac.cancelFunc() +} + +func NewContext(ctx context.Context, cancel context.CancelFunc) *ActionContext { + return &ActionContext{ + Context: ctx, + cancelFunc: cancel, + } +} + +type ActionParams map[string]string + +func (ap ActionParams) Read(s string) error { + err := json.Unmarshal([]byte(s), &ap) + return err +} + +func (ap ActionParams) String() string { + b, _ := json.Marshal(ap) + return string(b) +} + +//type ActionDefinition openai.FunctionDefinition + +type ActionDefinition struct { + Properties map[string]jsonschema.Definition + Required []string + Name string + Description string +} + +func (a ActionDefinition) ToFunctionDefinition() openai.FunctionDefinition { + return openai.FunctionDefinition{ + Name: a.Name, + Description: a.Description, + Parameters: jsonschema.Definition{ + Type: jsonschema.Object, + Properties: a.Properties, + Required: a.Required, + }, + } +} diff --git a/action/intention.go b/action/intention.go new file mode 100644 index 0000000..4d2cce1 --- /dev/null +++ b/action/intention.go @@ -0,0 +1,35 @@ +package action + +import ( + "github.com/sashabaranov/go-openai/jsonschema" +) + +func NewIntention(s ...string) *IntentAction { + return &IntentAction{tools: s} +} + +type IntentAction struct { + tools []string +} + +func (a *IntentAction) Run(ActionParams) (string, error) { + return "no-op", nil +} + +func (a *IntentAction) Definition() ActionDefinition { + return ActionDefinition{ + Name: "intent", + Description: "detect user intent", + Properties: map[string]jsonschema.Definition{ + "reasoning": { + Type: jsonschema.String, + Description: "The city and state, e.g. San Francisco, CA", + }, + "tool": { + Type: jsonschema.String, + Enum: a.tools, + }, + }, + Required: []string{"tool", "reasoning"}, + } +} diff --git a/agent/actions.go b/agent/actions.go index 713f01a..f276e62 100644 --- a/agent/actions.go +++ b/agent/actions.go @@ -6,119 +6,32 @@ import ( "encoding/json" "fmt" "html/template" - "time" - //"github.com/mudler/local-agent-framework/llm" + "github.com/mudler/local-agent-framework/action" "github.com/sashabaranov/go-openai" - "github.com/sashabaranov/go-openai/jsonschema" ) -type ActionContext struct { - context.Context - cancelFunc context.CancelFunc -} - -type ActionParams map[string]string - -func (ap ActionParams) Read(s string) error { - err := json.Unmarshal([]byte(s), &ap) - return err -} - -func (ap ActionParams) String() string { - b, _ := json.Marshal(ap) - return string(b) -} - -//type ActionDefinition openai.FunctionDefinition - // Actions is something the agent can do type Action interface { - Run(ActionParams) (string, error) - Definition() ActionDefinition + Run(action.ActionParams) (string, error) + Definition() action.ActionDefinition } -type ActionDefinition struct { - Properties map[string]jsonschema.Definition - Required []string - Name string - Description string -} +type Actions []Action -func (a ActionDefinition) ToFunctionDefinition() openai.FunctionDefinition { - return openai.FunctionDefinition{ - Name: a.Name, - Description: a.Description, - Parameters: jsonschema.Definition{ - Type: jsonschema.Object, - Properties: a.Properties, - Required: a.Required, - }, +func (a Actions) ToTools() []openai.Tool { + tools := []openai.Tool{} + for _, action := range a { + tools = append(tools, openai.Tool{ + Type: openai.ToolTypeFunction, + Function: action.Definition().ToFunctionDefinition(), + }) } + return tools } -var ErrContextCanceled = fmt.Errorf("context canceled") - -func (a *Agent) Stop() { - a.Lock() - defer a.Unlock() - a.context.cancelFunc() -} - -func (a *Agent) Run() error { - // The agent run does two things: - // picks up requests from a queue - // and generates a response/perform actions - - // It is also preemptive. - // That is, it can interrupt the current action - // if another one comes in. - - // If there is no action, periodically evaluate if it has to do something on its own. - - // Expose a REST API to interact with the agent to ask it things - - fmt.Println("Agent is running") - clearConvTimer := time.NewTicker(1 * time.Minute) - for { - fmt.Println("Agent loop") - - select { - case job := <-a.jobQueue: - fmt.Println("job from the queue") - - // Consume the job and generate a response - // TODO: Give a short-term memory to the agent - a.consumeJob(job) - case <-a.context.Done(): - fmt.Println("Context canceled, agent is stopping...") - - // Agent has been canceled, return error - return ErrContextCanceled - case <-clearConvTimer.C: - fmt.Println("Removing chat history...") - - // TODO: decide to do something on its own with the conversation result - // before clearing it out - - // Clear the conversation - a.currentConversation = []openai.ChatCompletionMessage{} - } - } -} - -// StopAction stops the current action -// if any. Can be called before adding a new job. -func (a *Agent) StopAction() { - a.Lock() - defer a.Unlock() - if a.actionContext != nil { - a.actionContext.cancelFunc() - } -} - -func (a *Agent) decision(ctx context.Context, conversation []openai.ChatCompletionMessage, tools []openai.Tool, toolchoice any) (ActionParams, error) { +func (a *Agent) decision(ctx context.Context, conversation []openai.ChatCompletionMessage, tools []openai.Tool, toolchoice any) (action.ActionParams, error) { decision := openai.ChatCompletionRequest{ Model: a.options.LLMAPI.Model, Messages: conversation, @@ -137,7 +50,7 @@ func (a *Agent) decision(ctx context.Context, conversation []openai.ChatCompleti return nil, fmt.Errorf("len(toolcalls): %v", len(msg.ToolCalls)) } - params := ActionParams{} + params := action.ActionParams{} if err := params.Read(msg.ToolCalls[0].Function.Arguments); err != nil { fmt.Println("can't read params", err) @@ -147,20 +60,7 @@ func (a *Agent) decision(ctx context.Context, conversation []openai.ChatCompleti return params, nil } -type Actions []Action - -func (a Actions) ToTools() []openai.Tool { - tools := []openai.Tool{} - for _, action := range a { - tools = append(tools, openai.Tool{ - Type: openai.ToolTypeFunction, - Function: action.Definition().ToFunctionDefinition(), - }) - } - return tools -} - -func (a *Agent) generateParameters(ctx context.Context, action Action, conversation []openai.ChatCompletionMessage) (ActionParams, error) { +func (a *Agent) generateParameters(ctx context.Context, action Action, conversation []openai.ChatCompletionMessage) (action.ActionParams, error) { return a.decision(ctx, conversation, a.options.actions.ToTools(), action.Definition().Name) } @@ -184,12 +84,12 @@ func (a *Agent) pickAction(ctx context.Context, messages []openai.ChatCompletion if err != nil { return nil, err } - definitions := []ActionDefinition{} + definitions := []action.ActionDefinition{} for _, m := range a.options.actions { definitions = append(definitions, m.Definition()) } err = tmpl.Execute(prompt, struct { - Actions []ActionDefinition + Actions []action.ActionDefinition Messages []openai.ChatCompletionMessage }{ Actions: definitions, @@ -205,7 +105,7 @@ func (a *Agent) pickAction(ctx context.Context, messages []openai.ChatCompletion for _, m := range a.options.actions { actionsID = append(actionsID, m.Definition().Name) } - intentionsTools := NewIntention(actionsID...) + intentionsTools := action.NewIntention(actionsID...) conversation := []openai.ChatCompletionMessage{ { @@ -254,110 +154,3 @@ func (a *Agent) pickAction(ctx context.Context, messages []openai.ChatCompletion return action, nil } - -func (a *Agent) consumeJob(job *Job) { - - // Consume the job and generate a response - a.Lock() - // Set the action context - ctx, cancel := context.WithCancel(context.Background()) - a.actionContext = &ActionContext{ - Context: ctx, - cancelFunc: cancel, - } - a.Unlock() - - if job.Image != "" { - // TODO: Use llava to explain the image content - } - - if job.Text == "" { - fmt.Println("no text!") - return - } - - messages := a.currentConversation - if job.Text != "" { - messages = append(messages, openai.ChatCompletionMessage{ - Role: "user", - Content: job.Text, - }) - } - - chosenAction, err := a.pickAction(ctx, messages) - if err != nil { - fmt.Printf("error picking action: %v\n", err) - return - } - params, err := a.generateParameters(ctx, chosenAction, messages) - if err != nil { - fmt.Printf("error generating parameters: %v\n", err) - return - } - - var result string - for _, action := range a.options.actions { - fmt.Println("Checking action: ", action.Definition().Name, chosenAction.Definition().Name) - if action.Definition().Name == chosenAction.Definition().Name { - fmt.Printf("Running action: %v\n", action.Definition().Name) - if result, err = action.Run(params); err != nil { - fmt.Printf("error running action: %v\n", err) - return - } - } - } - fmt.Printf("Action run result: %v\n", result) - - // calling the function - messages = append(messages, openai.ChatCompletionMessage{ - Role: "assistant", - FunctionCall: &openai.FunctionCall{ - Name: chosenAction.Definition().Name, - Arguments: params.String(), - }, - }) - - // result of calling the function - messages = append(messages, openai.ChatCompletionMessage{ - Role: openai.ChatMessageRoleTool, - Content: result, - Name: chosenAction.Definition().Name, - ToolCallID: chosenAction.Definition().Name, - }) - - resp, err := a.client.CreateChatCompletion(ctx, - openai.ChatCompletionRequest{ - Model: a.options.LLMAPI.Model, - Messages: messages, - // Tools: tools, - }, - ) - if err != nil || len(resp.Choices) != 1 { - fmt.Printf("2nd completion error: err:%v len(choices):%v\n", err, - len(resp.Choices)) - return - } - - // display OpenAI's response to the original question utilizing our function - msg := resp.Choices[0].Message - fmt.Printf("OpenAI answered the original request with: %v\n", - msg.Content) - - messages = append(messages, msg) - a.currentConversation = append(a.currentConversation, messages...) - - if len(msg.ToolCalls) != 0 { - fmt.Printf("OpenAI wants to call again functions: %v\n", msg) - // wants to call again an action (?) - job.Text = "" // Call the job with the current conversation - job.Result.SetResult(result) - a.jobQueue <- job - return - } - - // perform the action (if any) - // or reply with a result - // if there is an action... - job.Result.SetResult(result) - job.Result.Finish() -} diff --git a/agent/agent.go b/agent/agent.go index bf032d2..06f59ec 100644 --- a/agent/agent.go +++ b/agent/agent.go @@ -4,7 +4,9 @@ import ( "context" "fmt" "sync" + "time" + "github.com/mudler/local-agent-framework/action" "github.com/mudler/local-agent-framework/llm" "github.com/sashabaranov/go-openai" ) @@ -15,8 +17,8 @@ type Agent struct { Character Character client *openai.Client jobQueue chan *Job - actionContext *ActionContext - context *ActionContext + actionContext *action.ActionContext + context *action.ActionContext availableActions []Action currentConversation []openai.ChatCompletionMessage @@ -40,14 +42,11 @@ func New(opts ...Option) (*Agent, error) { ctx, cancel := context.WithCancel(c) a := &Agent{ - jobQueue: make(chan *Job), - options: options, - client: client, - Character: options.character, - context: &ActionContext{ - Context: ctx, - cancelFunc: cancel, - }, + jobQueue: make(chan *Job), + options: options, + client: client, + Character: options.character, + context: action.NewContext(ctx, cancel), availableActions: options.actions, } @@ -71,3 +70,63 @@ func (a *Agent) Ask(text, image string) []string { return j.Result.WaitResult() } + +var ErrContextCanceled = fmt.Errorf("context canceled") + +func (a *Agent) Stop() { + a.Lock() + defer a.Unlock() + a.context.Cancel() +} + +func (a *Agent) Run() error { + // The agent run does two things: + // picks up requests from a queue + // and generates a response/perform actions + + // It is also preemptive. + // That is, it can interrupt the current action + // if another one comes in. + + // If there is no action, periodically evaluate if it has to do something on its own. + + // Expose a REST API to interact with the agent to ask it things + + fmt.Println("Agent is running") + clearConvTimer := time.NewTicker(1 * time.Minute) + for { + fmt.Println("Agent loop") + + select { + case job := <-a.jobQueue: + fmt.Println("job from the queue") + + // Consume the job and generate a response + // TODO: Give a short-term memory to the agent + a.consumeJob(job) + case <-a.context.Done(): + fmt.Println("Context canceled, agent is stopping...") + + // Agent has been canceled, return error + return ErrContextCanceled + case <-clearConvTimer.C: + fmt.Println("Removing chat history...") + + // TODO: decide to do something on its own with the conversation result + // before clearing it out + + // Clear the conversation + a.currentConversation = []openai.ChatCompletionMessage{} + } + } +} + +// StopAction stops the current action +// if any. Can be called before adding a new job. +func (a *Agent) StopAction() { + a.Lock() + defer a.Unlock() + if a.actionContext != nil { + a.actionContext.Cancel() + } +} diff --git a/agent/agent_test.go b/agent/agent_test.go new file mode 100644 index 0000000..d088f57 --- /dev/null +++ b/agent/agent_test.go @@ -0,0 +1,58 @@ +package agent_test + +import ( + "fmt" + + "github.com/mudler/local-agent-framework/action" + . "github.com/mudler/local-agent-framework/agent" + . "github.com/onsi/ginkgo/v2" + . "github.com/onsi/gomega" + "github.com/sashabaranov/go-openai/jsonschema" +) + +const testActionResult = "It's going to be windy" + +var _ Action = &TestAction{} + +type TestAction struct{} + +func (a *TestAction) Run(action.ActionParams) (string, error) { + return testActionResult, nil +} + +func (a *TestAction) Definition() action.ActionDefinition { + return action.ActionDefinition{ + Name: "get_weather", + Description: "get current weather", + Properties: map[string]jsonschema.Definition{ + "location": { + Type: jsonschema.String, + Description: "The city and state, e.g. San Francisco, CA", + }, + "unit": { + Type: jsonschema.String, + Enum: []string{"celsius", "fahrenheit"}, + }, + }, + + Required: []string{"location"}, + } +} + +var _ = Describe("Agent test", func() { + Context("jobs", func() { + FIt("pick the correct action", func() { + agent, err := New( + WithLLMAPIURL(apiModel), + WithModel(testModel), + // WithRandomIdentity(), + WithActions(&TestAction{}), + ) + Expect(err).ToNot(HaveOccurred()) + go agent.Run() + defer agent.Stop() + res := agent.Ask("can you get the weather in boston?", "") + Expect(res).To(ContainElement(testActionResult), fmt.Sprint(res)) + }) + }) +}) diff --git a/agent/jobs.go b/agent/jobs.go index f7ccdeb..8cc83f3 100644 --- a/agent/jobs.go +++ b/agent/jobs.go @@ -1,6 +1,13 @@ package agent -import "sync" +import ( + "context" + "fmt" + "sync" + + "github.com/mudler/local-agent-framework/action" + "github.com/sashabaranov/go-openai" +) // Job is a request to the agent to do something type Job struct { @@ -62,3 +69,107 @@ func (j *JobResult) WaitResult() []string { defer j.Unlock() return j.Data } + +func (a *Agent) consumeJob(job *Job) { + + // Consume the job and generate a response + a.Lock() + // Set the action context + ctx, cancel := context.WithCancel(context.Background()) + a.actionContext = action.NewContext(ctx, cancel) + a.Unlock() + + if job.Image != "" { + // TODO: Use llava to explain the image content + } + + if job.Text == "" { + fmt.Println("no text!") + return + } + + messages := a.currentConversation + if job.Text != "" { + messages = append(messages, openai.ChatCompletionMessage{ + Role: "user", + Content: job.Text, + }) + } + + chosenAction, err := a.pickAction(ctx, messages) + if err != nil { + fmt.Printf("error picking action: %v\n", err) + return + } + params, err := a.generateParameters(ctx, chosenAction, messages) + if err != nil { + fmt.Printf("error generating parameters: %v\n", err) + return + } + + var result string + for _, action := range a.options.actions { + fmt.Println("Checking action: ", action.Definition().Name, chosenAction.Definition().Name) + if action.Definition().Name == chosenAction.Definition().Name { + fmt.Printf("Running action: %v\n", action.Definition().Name) + if result, err = action.Run(params); err != nil { + fmt.Printf("error running action: %v\n", err) + return + } + } + } + fmt.Printf("Action run result: %v\n", result) + + // calling the function + messages = append(messages, openai.ChatCompletionMessage{ + Role: "assistant", + FunctionCall: &openai.FunctionCall{ + Name: chosenAction.Definition().Name, + Arguments: params.String(), + }, + }) + + // result of calling the function + messages = append(messages, openai.ChatCompletionMessage{ + Role: openai.ChatMessageRoleTool, + Content: result, + Name: chosenAction.Definition().Name, + ToolCallID: chosenAction.Definition().Name, + }) + + resp, err := a.client.CreateChatCompletion(ctx, + openai.ChatCompletionRequest{ + Model: a.options.LLMAPI.Model, + Messages: messages, + // Tools: tools, + }, + ) + if err != nil || len(resp.Choices) != 1 { + fmt.Printf("2nd completion error: err:%v len(choices):%v\n", err, + len(resp.Choices)) + return + } + + // display OpenAI's response to the original question utilizing our function + msg := resp.Choices[0].Message + fmt.Printf("OpenAI answered the original request with: %v\n", + msg.Content) + + messages = append(messages, msg) + a.currentConversation = append(a.currentConversation, messages...) + + if len(msg.ToolCalls) != 0 { + fmt.Printf("OpenAI wants to call again functions: %v\n", msg) + // wants to call again an action (?) + job.Text = "" // Call the job with the current conversation + job.Result.SetResult(result) + a.jobQueue <- job + return + } + + // perform the action (if any) + // or reply with a result + // if there is an action... + job.Result.SetResult(result) + job.Result.Finish() +} From 3b1a54083d5f9663482084491afc3a1bbbcea9df Mon Sep 17 00:00:00 2001 From: mudler Date: Sun, 31 Mar 2024 23:06:28 +0200 Subject: [PATCH 012/399] wip --- action/definition.go | 25 +++++++++- action/intention.go | 2 +- action/reply.go | 34 ++++++++++++++ agent/actions.go | 108 +++++++++++++++++++++++++++++-------------- agent/agent_test.go | 2 +- agent/jobs.go | 32 +++++++++++-- 6 files changed, 161 insertions(+), 42 deletions(-) create mode 100644 action/reply.go diff --git a/action/definition.go b/action/definition.go index 5ed3aae..c4b1414 100644 --- a/action/definition.go +++ b/action/definition.go @@ -36,18 +36,39 @@ func (ap ActionParams) String() string { return string(b) } +func (ap ActionParams) Unmarshal(v interface{}) error { + b, err := json.Marshal(ap) + if err != nil { + return err + } + if err := json.Unmarshal(b, v); err != nil { + return err + } + return nil +} + //type ActionDefinition openai.FunctionDefinition type ActionDefinition struct { Properties map[string]jsonschema.Definition Required []string - Name string + Name ActionDefinitionName Description string } +type ActionDefinitionName string + +func (a ActionDefinitionName) Is(name string) bool { + return string(a) == name +} + +func (a ActionDefinitionName) String() string { + return string(a) +} + func (a ActionDefinition) ToFunctionDefinition() openai.FunctionDefinition { return openai.FunctionDefinition{ - Name: a.Name, + Name: a.Name.String(), Description: a.Description, Parameters: jsonschema.Definition{ Type: jsonschema.Object, diff --git a/action/intention.go b/action/intention.go index 4d2cce1..6c04b91 100644 --- a/action/intention.go +++ b/action/intention.go @@ -23,7 +23,7 @@ func (a *IntentAction) Definition() ActionDefinition { Properties: map[string]jsonschema.Definition{ "reasoning": { Type: jsonschema.String, - Description: "The city and state, e.g. San Francisco, CA", + Description: "A detailed reasoning on why you want to call this tool.", }, "tool": { Type: jsonschema.String, diff --git a/action/reply.go b/action/reply.go new file mode 100644 index 0000000..be9b8e9 --- /dev/null +++ b/action/reply.go @@ -0,0 +1,34 @@ +package action + +import ( + "github.com/sashabaranov/go-openai/jsonschema" +) + +// ReplyActionName is the name of the reply action +// used by the LLM to reply to the user without +// any additional processing +const ReplyActionName = "reply" + +func NewReply() *ReplyAction { + return &ReplyAction{} +} + +type ReplyAction struct{} + +func (a *ReplyAction) Run(ActionParams) (string, error) { + return "no-op", nil +} + +func (a *ReplyAction) Definition() ActionDefinition { + return ActionDefinition{ + Name: ReplyActionName, + Description: "Use this tool to reply to the user once we have all the informations we need.", + Properties: map[string]jsonschema.Definition{ + "message": { + Type: jsonschema.String, + Description: "The message to reply with", + }, + }, + Required: []string{"message"}, + } +} diff --git a/agent/actions.go b/agent/actions.go index f276e62..84672cf 100644 --- a/agent/actions.go +++ b/agent/actions.go @@ -3,7 +3,6 @@ package agent import ( "bytes" "context" - "encoding/json" "fmt" "html/template" @@ -31,7 +30,21 @@ func (a Actions) ToTools() []openai.Tool { return tools } -func (a *Agent) decision(ctx context.Context, conversation []openai.ChatCompletionMessage, tools []openai.Tool, toolchoice any) (action.ActionParams, error) { +func (a Actions) Find(name string) Action { + for _, action := range a { + if action.Definition().Name.Is(name) { + return action + } + } + return nil +} + +// decision forces the agent to take on of the available actions +func (a *Agent) decision( + ctx context.Context, + conversation []openai.ChatCompletionMessage, + tools []openai.Tool, toolchoice any) (action.ActionParams, error) { + decision := openai.ChatCompletionRequest{ Model: a.options.LLMAPI.Model, Messages: conversation, @@ -47,13 +60,13 @@ func (a *Agent) decision(ctx context.Context, conversation []openai.ChatCompleti msg := resp.Choices[0].Message if len(msg.ToolCalls) != 1 { + fmt.Println(msg) return nil, fmt.Errorf("len(toolcalls): %v", len(msg.ToolCalls)) } params := action.ActionParams{} if err := params.Read(msg.ToolCalls[0].Function.Arguments); err != nil { fmt.Println("can't read params", err) - return nil, err } @@ -61,33 +74,71 @@ func (a *Agent) decision(ctx context.Context, conversation []openai.ChatCompleti } func (a *Agent) generateParameters(ctx context.Context, action Action, conversation []openai.ChatCompletionMessage) (action.ActionParams, error) { - return a.decision(ctx, conversation, a.options.actions.ToTools(), action.Definition().Name) + return a.decision(ctx, + conversation, + a.options.actions.ToTools(), + action.Definition().Name) } const pickActionTemplate = `You can take any of the following tools: -{{range .Actions}}{{.Name}}: {{.Description}}{{end}} +{{range .Actions -}} +{{.Name}}: {{.Description }} +{{ end }} -or none. Given the text below, decide which action to take and explain the reasoning behind it. For answering without picking a choice, reply with 'none'. +To answer back to the user, use the "answer" tool. +Given the text below, decide which action to take and explain the detailed reasoning behind it. For answering without picking a choice, reply with 'none'. -{{range .Messages}}{{.Content}}{{end}} +{{range .Messages }} +{{if eq .Role "tool"}}Tool result{{else}}{{.Role}}{{ end }}: {{.Content}} +{{if .FunctionCall}} +Tool called with: {{.FunctionCall}} +{{end}} +{{range .ToolCalls}} +{{.Name}}: {{.Arguments}} +{{end}} +{{end}} ` -func (a *Agent) pickAction(ctx context.Context, messages []openai.ChatCompletionMessage) (Action, error) { +const reEvalTemplate = `You can take any of the following tools: + +{{range .Actions}}{{.Name}}: {{.Description}}{{end}} + +To answer back to the user, use the "answer" tool. +For answering without picking a choice, reply with 'none'. + +Given the text below, decide which action to take and explain the reasoning behind it. + +{{range .Messages -}} +{{if eq .Role "tool" }}Tool result{{else}}{{.Role}}: {{ end }}{{.Content }} +{{if .FunctionCall}}Tool called with: {{.FunctionCall}}{{end}} +{{range .ToolCalls}} +{{.Name}}: {{.Arguments}} +{{end}} +{{end}} + +We already have called tools. Evaluate the current situation and decide if we need to execute other tools or answer back with a result.` + +// pickAction picks an action based on the conversation +func (a *Agent) pickAction(ctx context.Context, templ string, messages []openai.ChatCompletionMessage) (Action, string, error) { actionChoice := struct { Intent string `json:"tool"` Reasoning string `json:"reasoning"` }{} prompt := bytes.NewBuffer([]byte{}) - tmpl, err := template.New("pickAction").Parse(pickActionTemplate) + + tmpl, err := template.New("pickAction").Parse(templ) if err != nil { - return nil, err + return nil, "", err } - definitions := []action.ActionDefinition{} + + // It can pick the reply action too + definitions := []action.ActionDefinition{action.NewReply().Definition()} for _, m := range a.options.actions { definitions = append(definitions, m.Definition()) } + err = tmpl.Execute(prompt, struct { Actions []action.ActionDefinition Messages []openai.ChatCompletionMessage @@ -96,14 +147,14 @@ func (a *Agent) pickAction(ctx context.Context, messages []openai.ChatCompletion Messages: messages, }) if err != nil { - return nil, err + return nil, "", err } - fmt.Println(prompt.String()) + fmt.Println("=== PROMPT START ===", prompt.String(), "=== PROMPT END ===") actionsID := []string{} for _, m := range a.options.actions { - actionsID = append(actionsID, m.Definition().Name) + actionsID = append(actionsID, m.Definition().Name.String()) } intentionsTools := action.NewIntention(actionsID...) @@ -120,37 +171,26 @@ func (a *Agent) pickAction(ctx context.Context, messages []openai.ChatCompletion intentionsTools.Definition().Name) if err != nil { fmt.Println("failed decision", err) - return nil, err + return nil, "", err } - dat, err := json.Marshal(params) + err = params.Unmarshal(&actionChoice) if err != nil { - return nil, err - } - - err = json.Unmarshal(dat, &actionChoice) - if err != nil { - return nil, err + return nil, "", err } fmt.Printf("Action choice: %v\n", actionChoice) + if actionChoice.Intent == "" || actionChoice.Intent == "none" { - return nil, fmt.Errorf("no intent detected") + return nil, "", fmt.Errorf("no intent detected") } // Find the action - var action Action - for _, a := range a.options.actions { - if a.Definition().Name == actionChoice.Intent { - action = a - break - } - } - - if action == nil { + chosenAction := append(a.options.actions, action.NewReply()).Find(actionChoice.Intent) + if chosenAction == nil { fmt.Println("No action found for intent: ", actionChoice.Intent) - return nil, fmt.Errorf("No action found for intent:" + actionChoice.Intent) + return nil, "", fmt.Errorf("No action found for intent:" + actionChoice.Intent) } - return action, nil + return chosenAction, actionChoice.Reasoning, nil } diff --git a/agent/agent_test.go b/agent/agent_test.go index d088f57..9c54fcf 100644 --- a/agent/agent_test.go +++ b/agent/agent_test.go @@ -10,7 +10,7 @@ import ( "github.com/sashabaranov/go-openai/jsonschema" ) -const testActionResult = "It's going to be windy" +const testActionResult = "In Boston it's 30C today, it's sunny, and humidity is at 98%" var _ Action = &TestAction{} diff --git a/agent/jobs.go b/agent/jobs.go index 8cc83f3..fc26b59 100644 --- a/agent/jobs.go +++ b/agent/jobs.go @@ -96,11 +96,20 @@ func (a *Agent) consumeJob(job *Job) { }) } - chosenAction, err := a.pickAction(ctx, messages) + // choose an action first + chosenAction, reasoning, err := a.pickAction(ctx, pickActionTemplate, messages) if err != nil { fmt.Printf("error picking action: %v\n", err) return } + + if chosenAction.Definition().Name.Is(action.ReplyActionName) { + fmt.Println("No action to do, just reply") + job.Result.SetResult(reasoning) + job.Result.Finish() + return + } + params, err := a.generateParameters(ctx, chosenAction, messages) if err != nil { fmt.Printf("error generating parameters: %v\n", err) @@ -124,7 +133,7 @@ func (a *Agent) consumeJob(job *Job) { messages = append(messages, openai.ChatCompletionMessage{ Role: "assistant", FunctionCall: &openai.FunctionCall{ - Name: chosenAction.Definition().Name, + Name: chosenAction.Definition().Name.String(), Arguments: params.String(), }, }) @@ -133,10 +142,25 @@ func (a *Agent) consumeJob(job *Job) { messages = append(messages, openai.ChatCompletionMessage{ Role: openai.ChatMessageRoleTool, Content: result, - Name: chosenAction.Definition().Name, - ToolCallID: chosenAction.Definition().Name, + Name: chosenAction.Definition().Name.String(), + ToolCallID: chosenAction.Definition().Name.String(), }) + // given the result, we can now ask OpenAI to complete the conversation or + // to continue using another tool given the result + followingAction, reasoning, err := a.pickAction(ctx, reEvalTemplate, messages) + if err != nil { + fmt.Printf("error picking action: %v\n", err) + return + } + if !chosenAction.Definition().Name.Is(action.ReplyActionName) { + // We need to do another action (?) + // The agent decided to do another action + fmt.Println("Another action to do: ", followingAction.Definition().Name) + fmt.Println("Reasoning: ", reasoning) + return + } + resp, err := a.client.CreateChatCompletion(ctx, openai.ChatCompletionRequest{ Model: a.options.LLMAPI.Model, From eb4294bdbb5775e744b8a4fccb33dfb07bb044bc Mon Sep 17 00:00:00 2001 From: Ettore Di Giacinto Date: Mon, 1 Apr 2024 00:17:16 +0200 Subject: [PATCH 013/399] re-eval --- action/intention.go | 4 +++ agent/actions.go | 69 ++++++++++++++++++++++++++++++++++----------- agent/jobs.go | 18 ++++++++---- 3 files changed, 69 insertions(+), 22 deletions(-) diff --git a/action/intention.go b/action/intention.go index 6c04b91..394a8cd 100644 --- a/action/intention.go +++ b/action/intention.go @@ -11,6 +11,10 @@ func NewIntention(s ...string) *IntentAction { type IntentAction struct { tools []string } +type IntentResponse struct { + Tool string `json:"tool"` + Reasoning string `json:"reasoning"` +} func (a *IntentAction) Run(ActionParams) (string, error) { return "no-op", nil diff --git a/agent/actions.go b/agent/actions.go index 84672cf..c9bbd50 100644 --- a/agent/actions.go +++ b/agent/actions.go @@ -39,11 +39,16 @@ func (a Actions) Find(name string) Action { return nil } +type decisionResult struct { + actionParams action.ActionParams + message string +} + // decision forces the agent to take on of the available actions func (a *Agent) decision( ctx context.Context, conversation []openai.ChatCompletionMessage, - tools []openai.Tool, toolchoice any) (action.ActionParams, error) { + tools []openai.Tool, toolchoice any) (*decisionResult, error) { decision := openai.ChatCompletionRequest{ Model: a.options.LLMAPI.Model, @@ -61,7 +66,7 @@ func (a *Agent) decision( msg := resp.Choices[0].Message if len(msg.ToolCalls) != 1 { fmt.Println(msg) - return nil, fmt.Errorf("len(toolcalls): %v", len(msg.ToolCalls)) + return &decisionResult{message: msg.Content}, nil } params := action.ActionParams{} @@ -70,10 +75,10 @@ func (a *Agent) decision( return nil, err } - return params, nil + return &decisionResult{actionParams: params}, nil } -func (a *Agent) generateParameters(ctx context.Context, action Action, conversation []openai.ChatCompletionMessage) (action.ActionParams, error) { +func (a *Agent) generateParameters(ctx context.Context, action Action, conversation []openai.ChatCompletionMessage) (*decisionResult, error) { return a.decision(ctx, conversation, a.options.actions.ToTools(), @@ -121,11 +126,7 @@ We already have called tools. Evaluate the current situation and decide if we ne // pickAction picks an action based on the conversation func (a *Agent) pickAction(ctx context.Context, templ string, messages []openai.ChatCompletionMessage) (Action, string, error) { - actionChoice := struct { - Intent string `json:"tool"` - Reasoning string `json:"reasoning"` - }{} - + // prepare the prompt prompt := bytes.NewBuffer([]byte{}) tmpl, err := template.New("pickAction").Parse(templ) @@ -133,7 +134,7 @@ func (a *Agent) pickAction(ctx context.Context, templ string, messages []openai. return nil, "", err } - // It can pick the reply action too + // Get all the actions definitions definitions := []action.ActionDefinition{action.NewReply().Definition()} for _, m := range a.options.actions { definitions = append(definitions, m.Definition()) @@ -152,11 +153,11 @@ func (a *Agent) pickAction(ctx context.Context, templ string, messages []openai. fmt.Println("=== PROMPT START ===", prompt.String(), "=== PROMPT END ===") + // Get all the available actions IDs actionsID := []string{} for _, m := range a.options.actions { actionsID = append(actionsID, m.Definition().Name.String()) } - intentionsTools := action.NewIntention(actionsID...) conversation := []openai.ChatCompletionMessage{ { @@ -165,8 +166,36 @@ func (a *Agent) pickAction(ctx context.Context, templ string, messages []openai. }, } - params, err := a.decision(ctx, + // Get the LLM to think on what to do + thought, err := a.decision(ctx, conversation, + Actions{action.NewReasoning()}.ToTools(), + action.NewReasoning().Definition().Name) + if err != nil { + fmt.Println("failed thinking", err) + return nil, "", err + } + reason := "" + response := &action.ReasoningResponse{} + if thought.actionParams != nil { + if err := thought.actionParams.Unmarshal(response); err != nil { + return nil, "", err + } + reason = response.Reasoning + } + if thought.message != "" { + reason = thought.message + } + + fmt.Println(reason) + + // Decode tool call + intentionsTools := action.NewIntention(actionsID...) + params, err := a.decision(ctx, + append(conversation, openai.ChatCompletionMessage{ + Role: "assistent", + Content: reason, + }), Actions{intentionsTools}.ToTools(), intentionsTools.Definition().Name) if err != nil { @@ -174,22 +203,28 @@ func (a *Agent) pickAction(ctx context.Context, templ string, messages []openai. return nil, "", err } - err = params.Unmarshal(&actionChoice) + actionChoice := action.IntentResponse{} + + if params.actionParams == nil { + return nil, params.message, nil + } + + err = params.actionParams.Unmarshal(&actionChoice) if err != nil { return nil, "", err } fmt.Printf("Action choice: %v\n", actionChoice) - if actionChoice.Intent == "" || actionChoice.Intent == "none" { + if actionChoice.Tool == "" || actionChoice.Tool == "none" { return nil, "", fmt.Errorf("no intent detected") } // Find the action - chosenAction := append(a.options.actions, action.NewReply()).Find(actionChoice.Intent) + chosenAction := append(a.options.actions, action.NewReply()).Find(actionChoice.Tool) if chosenAction == nil { - fmt.Println("No action found for intent: ", actionChoice.Intent) - return nil, "", fmt.Errorf("No action found for intent:" + actionChoice.Intent) + fmt.Println("No action found for intent: ", actionChoice.Tool) + return nil, "", fmt.Errorf("No action found for intent:" + actionChoice.Tool) } return chosenAction, actionChoice.Reasoning, nil diff --git a/agent/jobs.go b/agent/jobs.go index fc26b59..4b1cafc 100644 --- a/agent/jobs.go +++ b/agent/jobs.go @@ -103,7 +103,7 @@ func (a *Agent) consumeJob(job *Job) { return } - if chosenAction.Definition().Name.Is(action.ReplyActionName) { + if chosenAction == nil || chosenAction.Definition().Name.Is(action.ReplyActionName) { fmt.Println("No action to do, just reply") job.Result.SetResult(reasoning) job.Result.Finish() @@ -116,12 +116,17 @@ func (a *Agent) consumeJob(job *Job) { return } + if params.actionParams == nil { + fmt.Println("no parameters") + return + } + var result string for _, action := range a.options.actions { fmt.Println("Checking action: ", action.Definition().Name, chosenAction.Definition().Name) if action.Definition().Name == chosenAction.Definition().Name { fmt.Printf("Running action: %v\n", action.Definition().Name) - if result, err = action.Run(params); err != nil { + if result, err = action.Run(params.actionParams); err != nil { fmt.Printf("error running action: %v\n", err) return } @@ -134,7 +139,7 @@ func (a *Agent) consumeJob(job *Job) { Role: "assistant", FunctionCall: &openai.FunctionCall{ Name: chosenAction.Definition().Name.String(), - Arguments: params.String(), + Arguments: params.actionParams.String(), }, }) @@ -153,7 +158,10 @@ func (a *Agent) consumeJob(job *Job) { fmt.Printf("error picking action: %v\n", err) return } - if !chosenAction.Definition().Name.Is(action.ReplyActionName) { + + if followingAction == nil || followingAction.Definition().Name.Is(action.ReplyActionName) { + fmt.Println("No action to do, just reply") + } else if !chosenAction.Definition().Name.Is(action.ReplyActionName) { // We need to do another action (?) // The agent decided to do another action fmt.Println("Another action to do: ", followingAction.Definition().Name) @@ -161,11 +169,11 @@ func (a *Agent) consumeJob(job *Job) { return } + // Generate a human-readable response resp, err := a.client.CreateChatCompletion(ctx, openai.ChatCompletionRequest{ Model: a.options.LLMAPI.Model, Messages: messages, - // Tools: tools, }, ) if err != nil || len(resp.Choices) != 1 { From f2e09dfe81faee4ec922f7e606e012135604e77e Mon Sep 17 00:00:00 2001 From: Ettore Di Giacinto Date: Mon, 1 Apr 2024 00:45:32 +0200 Subject: [PATCH 014/399] sub-sequent action support --- agent/actions.go | 2 +- agent/agent.go | 2 ++ agent/agent_test.go | 30 ++++++++++++++++++++++--- agent/jobs.go | 54 ++++++++++++++++++++++----------------------- 4 files changed, 57 insertions(+), 31 deletions(-) diff --git a/agent/actions.go b/agent/actions.go index c9bbd50..6364c6d 100644 --- a/agent/actions.go +++ b/agent/actions.go @@ -187,7 +187,7 @@ func (a *Agent) pickAction(ctx context.Context, templ string, messages []openai. reason = thought.message } - fmt.Println(reason) + fmt.Println("---- Thought: " + reason) // Decode tool call intentionsTools := action.NewIntention(actionsID...) diff --git a/agent/agent.go b/agent/agent.go index 06f59ec..84a89e0 100644 --- a/agent/agent.go +++ b/agent/agent.go @@ -21,6 +21,8 @@ type Agent struct { context *action.ActionContext availableActions []Action + currentReasoning string + nextAction Action currentConversation []openai.ChatCompletionMessage } diff --git a/agent/agent_test.go b/agent/agent_test.go index 9c54fcf..3252cac 100644 --- a/agent/agent_test.go +++ b/agent/agent_test.go @@ -11,13 +11,23 @@ import ( ) const testActionResult = "In Boston it's 30C today, it's sunny, and humidity is at 98%" +const testActionResult2 = "In milan it's very hot today" var _ Action = &TestAction{} -type TestAction struct{} +type TestAction struct { + response []string + responseN int +} func (a *TestAction) Run(action.ActionParams) (string, error) { - return testActionResult, nil + res := a.response[a.responseN] + if len(a.response) == a.responseN { + a.responseN = 0 + } else { + a.responseN++ + } + return res, nil } func (a *TestAction) Definition() action.ActionDefinition { @@ -46,7 +56,21 @@ var _ = Describe("Agent test", func() { WithLLMAPIURL(apiModel), WithModel(testModel), // WithRandomIdentity(), - WithActions(&TestAction{}), + WithActions(&TestAction{response: []string{testActionResult, testActionResult2}}), + ) + Expect(err).ToNot(HaveOccurred()) + go agent.Run() + defer agent.Stop() + res := agent.Ask("can you get the weather in boston, and afterward of Milano, Italy?", "") + Expect(res).To(ContainElement(testActionResult), fmt.Sprint(res)) + Expect(res).To(ContainElement(testActionResult2), fmt.Sprint(res)) + }) + It("pick the correct action", func() { + agent, err := New( + WithLLMAPIURL(apiModel), + WithModel(testModel), + // WithRandomIdentity(), + WithActions(&TestAction{response: []string{testActionResult}}), ) Expect(err).ToNot(HaveOccurred()) go agent.Run() diff --git a/agent/jobs.go b/agent/jobs.go index 4b1cafc..7b576fe 100644 --- a/agent/jobs.go +++ b/agent/jobs.go @@ -71,7 +71,6 @@ func (j *JobResult) WaitResult() []string { } func (a *Agent) consumeJob(job *Job) { - // Consume the job and generate a response a.Lock() // Set the action context @@ -83,11 +82,6 @@ func (a *Agent) consumeJob(job *Job) { // TODO: Use llava to explain the image content } - if job.Text == "" { - fmt.Println("no text!") - return - } - messages := a.currentConversation if job.Text != "" { messages = append(messages, openai.ChatCompletionMessage{ @@ -97,16 +91,28 @@ func (a *Agent) consumeJob(job *Job) { } // choose an action first - chosenAction, reasoning, err := a.pickAction(ctx, pickActionTemplate, messages) - if err != nil { - fmt.Printf("error picking action: %v\n", err) - return + var chosenAction Action + var reasoning string + + if a.currentReasoning != "" && a.nextAction != nil { + // if we are being re-evaluated, we already have the action + // and the reasoning. Consume it here and reset it + chosenAction = a.nextAction + reasoning = a.currentReasoning + a.currentReasoning = "" + a.nextAction = nil + } else { + var err error + chosenAction, reasoning, err = a.pickAction(ctx, pickActionTemplate, messages) + if err != nil { + fmt.Printf("error picking action: %v\n", err) + return + } } if chosenAction == nil || chosenAction.Definition().Name.Is(action.ReplyActionName) { fmt.Println("No action to do, just reply") job.Result.SetResult(reasoning) - job.Result.Finish() return } @@ -126,6 +132,7 @@ func (a *Agent) consumeJob(job *Job) { fmt.Println("Checking action: ", action.Definition().Name, chosenAction.Definition().Name) if action.Definition().Name == chosenAction.Definition().Name { fmt.Printf("Running action: %v\n", action.Definition().Name) + fmt.Printf("With parameters: %v\n", params.actionParams) if result, err = action.Run(params.actionParams); err != nil { fmt.Printf("error running action: %v\n", err) return @@ -133,6 +140,7 @@ func (a *Agent) consumeJob(job *Job) { } } fmt.Printf("Action run result: %v\n", result) + job.Result.SetResult(result) // calling the function messages = append(messages, openai.ChatCompletionMessage{ @@ -151,6 +159,8 @@ func (a *Agent) consumeJob(job *Job) { ToolCallID: chosenAction.Definition().Name.String(), }) + a.currentConversation = append(a.currentConversation, messages...) + // given the result, we can now ask OpenAI to complete the conversation or // to continue using another tool given the result followingAction, reasoning, err := a.pickAction(ctx, reEvalTemplate, messages) @@ -166,6 +176,11 @@ func (a *Agent) consumeJob(job *Job) { // The agent decided to do another action fmt.Println("Another action to do: ", followingAction.Definition().Name) fmt.Println("Reasoning: ", reasoning) + // call ourselves again + a.currentReasoning = reasoning + a.nextAction = followingAction + job.Text = "" + a.consumeJob(job) return } @@ -187,21 +202,6 @@ func (a *Agent) consumeJob(job *Job) { fmt.Printf("OpenAI answered the original request with: %v\n", msg.Content) - messages = append(messages, msg) - a.currentConversation = append(a.currentConversation, messages...) - - if len(msg.ToolCalls) != 0 { - fmt.Printf("OpenAI wants to call again functions: %v\n", msg) - // wants to call again an action (?) - job.Text = "" // Call the job with the current conversation - job.Result.SetResult(result) - a.jobQueue <- job - return - } - - // perform the action (if any) - // or reply with a result - // if there is an action... - job.Result.SetResult(result) + a.currentConversation = append(a.currentConversation, msg) job.Result.Finish() } From 56ceedb4fb25703c02cbb6fb5ab3d8c124484091 Mon Sep 17 00:00:00 2001 From: Ettore Di Giacinto Date: Mon, 1 Apr 2024 11:33:12 +0200 Subject: [PATCH 015/399] add reasoning action --- action/reasoning.go | 33 +++++++++++++++++++++++++++++++++ 1 file changed, 33 insertions(+) create mode 100644 action/reasoning.go diff --git a/action/reasoning.go b/action/reasoning.go new file mode 100644 index 0000000..1ee48dd --- /dev/null +++ b/action/reasoning.go @@ -0,0 +1,33 @@ +package action + +import ( + "github.com/sashabaranov/go-openai/jsonschema" +) + +func NewReasoning() *ReasoningAction { + return &ReasoningAction{} +} + +type ReasoningAction struct{} + +type ReasoningResponse struct { + Reasoning string `json:"reasoning"` +} + +func (a *ReasoningAction) Run(ActionParams) (string, error) { + return "no-op", nil +} + +func (a *ReasoningAction) Definition() ActionDefinition { + return ActionDefinition{ + Name: "think", + Description: "try to understand what's the best thing to do", + Properties: map[string]jsonschema.Definition{ + "reasoning": { + Type: jsonschema.String, + Description: "A detailed reasoning on what would you do in this situation.", + }, + }, + Required: []string{"reasoning"}, + } +} From fdb0585dcb972d7e06a71a9b787a06245c56475a Mon Sep 17 00:00:00 2001 From: mudler Date: Mon, 1 Apr 2024 18:08:29 +0200 Subject: [PATCH 016/399] improve templating --- agent/actions.go | 32 ++++++++++---------------------- agent/agent_test.go | 2 +- 2 files changed, 11 insertions(+), 23 deletions(-) diff --git a/agent/actions.go b/agent/actions.go index 6364c6d..8106c69 100644 --- a/agent/actions.go +++ b/agent/actions.go @@ -88,38 +88,26 @@ func (a *Agent) generateParameters(ctx context.Context, action Action, conversat const pickActionTemplate = `You can take any of the following tools: {{range .Actions -}} -{{.Name}}: {{.Description }} +- {{.Name}}: {{.Description }} {{ end }} - -To answer back to the user, use the "answer" tool. +To answer back to the user, use the "reply" tool. Given the text below, decide which action to take and explain the detailed reasoning behind it. For answering without picking a choice, reply with 'none'. -{{range .Messages }} -{{if eq .Role "tool"}}Tool result{{else}}{{.Role}}{{ end }}: {{.Content}} -{{if .FunctionCall}} -Tool called with: {{.FunctionCall}} -{{end}} -{{range .ToolCalls}} -{{.Name}}: {{.Arguments}} -{{end}} +{{range .Messages -}} +{{.Role}}{{if .FunctionCall}}(tool_call){{.FunctionCall}}{{end}}: {{if .FunctionCall}}{{.FunctionCall}}{{else if .ToolCalls -}}{{range .ToolCalls -}}{{.Name}} called with {{.Arguments}}{{end}}{{ else }}{{.Content -}}{{end}} {{end}} ` const reEvalTemplate = `You can take any of the following tools: -{{range .Actions}}{{.Name}}: {{.Description}}{{end}} - -To answer back to the user, use the "answer" tool. -For answering without picking a choice, reply with 'none'. - -Given the text below, decide which action to take and explain the reasoning behind it. +{{range .Actions -}} +- {{.Name}}: {{.Description }} +{{ end }} +To answer back to the user, use the "reply" tool. +Given the text below, decide which action to take and explain the detailed reasoning behind it. For answering without picking a choice, reply with 'none'. {{range .Messages -}} -{{if eq .Role "tool" }}Tool result{{else}}{{.Role}}: {{ end }}{{.Content }} -{{if .FunctionCall}}Tool called with: {{.FunctionCall}}{{end}} -{{range .ToolCalls}} -{{.Name}}: {{.Arguments}} -{{end}} +{{.Role}}{{if .FunctionCall}}(tool_call){{.FunctionCall}}{{end}}: {{if .FunctionCall}}{{.FunctionCall}}{{else if .ToolCalls -}}{{range .ToolCalls -}}{{.Name}} called with {{.Arguments}}{{end}}{{ else }}{{.Content -}}{{end}} {{end}} We already have called tools. Evaluate the current situation and decide if we need to execute other tools or answer back with a result.` diff --git a/agent/agent_test.go b/agent/agent_test.go index 3252cac..910a086 100644 --- a/agent/agent_test.go +++ b/agent/agent_test.go @@ -11,7 +11,7 @@ import ( ) const testActionResult = "In Boston it's 30C today, it's sunny, and humidity is at 98%" -const testActionResult2 = "In milan it's very hot today" +const testActionResult2 = "In milan it's very hot today, it is 45C and the humidity is at 200%" var _ Action = &TestAction{} From 2ebbf1007fbc5b0655348d2f8ce5db5c85f18b1b Mon Sep 17 00:00:00 2001 From: mudler Date: Mon, 1 Apr 2024 18:27:09 +0200 Subject: [PATCH 017/399] Allow to display HUD/character informations to the LLM --- agent/actions.go | 71 +++++++++++++++++++++++++++--------------------- agent/jobs.go | 27 ++++++++++++++++++ agent/options.go | 6 ++++ agent/state.go | 7 +++++ 4 files changed, 80 insertions(+), 31 deletions(-) diff --git a/agent/actions.go b/agent/actions.go index 8106c69..e08c706 100644 --- a/agent/actions.go +++ b/agent/actions.go @@ -85,50 +85,46 @@ func (a *Agent) generateParameters(ctx context.Context, action Action, conversat action.Definition().Name) } -const pickActionTemplate = `You can take any of the following tools: +func (a *Agent) prepareHUD() PromptHUD { + return PromptHUD{ + Character: a.Character, + } +} -{{range .Actions -}} -- {{.Name}}: {{.Description }} -{{ end }} -To answer back to the user, use the "reply" tool. -Given the text below, decide which action to take and explain the detailed reasoning behind it. For answering without picking a choice, reply with 'none'. - -{{range .Messages -}} -{{.Role}}{{if .FunctionCall}}(tool_call){{.FunctionCall}}{{end}}: {{if .FunctionCall}}{{.FunctionCall}}{{else if .ToolCalls -}}{{range .ToolCalls -}}{{.Name}} called with {{.Arguments}}{{end}}{{ else }}{{.Content -}}{{end}} +const hudTemplate = `You have a character and your replies and actions might be influenced by it. +{{if .Character.Name}}Name: {{.Character.Name}} +{{end}}{{if .Character.Age}}Age: {{.Character.Age}} +{{end}}{{if .Character.Occupation}}Occupation: {{.Character.Occupation}} +{{end}}{{if .Character.NowDoing}}Now doing: {{.Character.NowDoing}} +{{end}}{{if .Character.DoingNext}}Doing next: {{.Character.DoingNext}} +{{end}}{{if .Character.DoneHistory}}Done history: {{.Character.DoneHistory}} +{{end}}{{if .Character.Memories}}Memories: {{.Character.Memories}} +{{end}}{{if .Character.Hobbies}}Hobbies: {{.Character.Hobbies}} +{{end}}{{if .Character.MusicTaste}}Music taste: {{.Character.MusicTaste}} {{end}} ` -const reEvalTemplate = `You can take any of the following tools: - -{{range .Actions -}} -- {{.Name}}: {{.Description }} -{{ end }} -To answer back to the user, use the "reply" tool. -Given the text below, decide which action to take and explain the detailed reasoning behind it. For answering without picking a choice, reply with 'none'. - -{{range .Messages -}} -{{.Role}}{{if .FunctionCall}}(tool_call){{.FunctionCall}}{{end}}: {{if .FunctionCall}}{{.FunctionCall}}{{else if .ToolCalls -}}{{range .ToolCalls -}}{{.Name}} called with {{.Arguments}}{{end}}{{ else }}{{.Content -}}{{end}} -{{end}} - -We already have called tools. Evaluate the current situation and decide if we need to execute other tools or answer back with a result.` - // pickAction picks an action based on the conversation func (a *Agent) pickAction(ctx context.Context, templ string, messages []openai.ChatCompletionMessage) (Action, string, error) { // prepare the prompt prompt := bytes.NewBuffer([]byte{}) + hud := bytes.NewBuffer([]byte{}) - tmpl, err := template.New("pickAction").Parse(templ) + promptTemplate, err := template.New("pickAction").Parse(templ) + if err != nil { + return nil, "", err + } + hudTmpl, err := template.New("HUD").Parse(hudTemplate) if err != nil { return nil, "", err } - // Get all the actions definitions definitions := []action.ActionDefinition{action.NewReply().Definition()} for _, m := range a.options.actions { definitions = append(definitions, m.Definition()) } - err = tmpl.Execute(prompt, struct { + err = promptTemplate.Execute(prompt, struct { Actions []action.ActionDefinition Messages []openai.ChatCompletionMessage }{ @@ -139,6 +135,12 @@ func (a *Agent) pickAction(ctx context.Context, templ string, messages []openai. return nil, "", err } + err = hudTmpl.Execute(prompt, a.prepareHUD()) + if err != nil { + return nil, "", err + } + fmt.Println("=== HUD START ===", hud.String(), "=== HUD END ===") + fmt.Println("=== PROMPT START ===", prompt.String(), "=== PROMPT END ===") // Get all the available actions IDs @@ -147,13 +149,20 @@ func (a *Agent) pickAction(ctx context.Context, templ string, messages []openai. actionsID = append(actionsID, m.Definition().Name.String()) } - conversation := []openai.ChatCompletionMessage{ - { - Role: "user", - Content: prompt.String(), - }, + conversation := []openai.ChatCompletionMessage{} + + if a.options.enableHUD { + conversation = append(conversation, openai.ChatCompletionMessage{ + Role: "system", + Content: hud.String(), + }) } + conversation = append(conversation, openai.ChatCompletionMessage{ + Role: "user", + Content: prompt.String(), + }) + // Get the LLM to think on what to do thought, err := a.decision(ctx, conversation, diff --git a/agent/jobs.go b/agent/jobs.go index 7b576fe..5c3c0ce 100644 --- a/agent/jobs.go +++ b/agent/jobs.go @@ -70,6 +70,33 @@ func (j *JobResult) WaitResult() []string { return j.Data } +const pickActionTemplate = `You can take any of the following tools: + +{{range .Actions -}} +- {{.Name}}: {{.Description }} +{{ end }} +To answer back to the user, use the "reply" tool. +Given the text below, decide which action to take and explain the detailed reasoning behind it. For answering without picking a choice, reply with 'none'. + +{{range .Messages -}} +{{.Role}}{{if .FunctionCall}}(tool_call){{.FunctionCall}}{{end}}: {{if .FunctionCall}}{{.FunctionCall}}{{else if .ToolCalls -}}{{range .ToolCalls -}}{{.Name}} called with {{.Arguments}}{{end}}{{ else }}{{.Content -}}{{end}} +{{end}} +` + +const reEvalTemplate = `You can take any of the following tools: + +{{range .Actions -}} +- {{.Name}}: {{.Description }} +{{ end }} +To answer back to the user, use the "reply" tool. +Given the text below, decide which action to take and explain the detailed reasoning behind it. For answering without picking a choice, reply with 'none'. + +{{range .Messages -}} +{{.Role}}{{if .FunctionCall}}(tool_call){{.FunctionCall}}{{end}}: {{if .FunctionCall}}{{.FunctionCall}}{{else if .ToolCalls -}}{{range .ToolCalls -}}{{.Name}} called with {{.Arguments}}{{end}}{{ else }}{{.Content -}}{{end}} +{{end}} + +We already have called tools. Evaluate the current situation and decide if we need to execute other tools or answer back with a result.` + func (a *Agent) consumeJob(job *Job) { // Consume the job and generate a response a.Lock() diff --git a/agent/options.go b/agent/options.go index 84699e1..bb25539 100644 --- a/agent/options.go +++ b/agent/options.go @@ -18,6 +18,7 @@ type options struct { randomIdentityGuidance string randomIdentity bool actions Actions + enableHUD bool context context.Context } @@ -51,6 +52,11 @@ func newOptions(opts ...Option) (*options, error) { return options, nil } +var EnableHUD = func(o *options) error { + o.enableHUD = true + return nil +} + func WithLLMAPIURL(url string) Option { return func(o *options) error { o.LLMAPI.APIURL = url diff --git a/agent/state.go b/agent/state.go index 8f73935..2a2d279 100644 --- a/agent/state.go +++ b/agent/state.go @@ -8,6 +8,13 @@ import ( "github.com/mudler/local-agent-framework/llm" ) +// PromptHUD contains +// all information that should be displayed to the LLM +// in the prompts +type PromptHUD struct { + Character Character `json:"character"` +} + type Character struct { Name string `json:"name"` Age int `json:"age"` From b45490e84d50d7564e1a3582c493dcb2d74ed5c7 Mon Sep 17 00:00:00 2001 From: mudler Date: Mon, 1 Apr 2024 18:36:30 +0200 Subject: [PATCH 018/399] wip introspection --- agent/jobs.go | 23 +++++++++++++++++++++-- 1 file changed, 21 insertions(+), 2 deletions(-) diff --git a/agent/jobs.go b/agent/jobs.go index 5c3c0ce..e97d019 100644 --- a/agent/jobs.go +++ b/agent/jobs.go @@ -23,8 +23,10 @@ type Job struct { type JobResult struct { sync.Mutex // The result of a job - Data []string - ready chan bool + Data []string + reasoningCallback func(Action, action.ActionParams, string) + resultCallback func(Action, action.ActionParams, string, string) + ready chan bool } // NewJobResult creates a new job result @@ -34,6 +36,20 @@ func NewJobResult() *JobResult { } } +func (j *JobResult) Callback(a Action, p action.ActionParams, s string) { + if j.reasoningCallback == nil { + return + } + j.reasoningCallback(a, p, s) +} + +func (j *JobResult) CallbackWithResult(a Action, p action.ActionParams, s, r string) { + if j.resultCallback == nil { + return + } + j.resultCallback(a, p, s, r) +} + // NewJob creates a new job // It is a request to the agent to do something // It has a JobResult to get the result asynchronously @@ -149,6 +165,8 @@ func (a *Agent) consumeJob(job *Job) { return } + job.Result.Callback(chosenAction, params.actionParams, reasoning) + if params.actionParams == nil { fmt.Println("no parameters") return @@ -168,6 +186,7 @@ func (a *Agent) consumeJob(job *Job) { } fmt.Printf("Action run result: %v\n", result) job.Result.SetResult(result) + job.Result.CallbackWithResult(chosenAction, params.actionParams, reasoning, result) // calling the function messages = append(messages, openai.ChatCompletionMessage{ From 7c679ead94981547ca7676b86de04a0e21219a33 Mon Sep 17 00:00:00 2001 From: mudler Date: Mon, 1 Apr 2024 20:02:25 +0200 Subject: [PATCH 019/399] use options --- agent/agent.go | 15 ++-------- agent/agent_test.go | 11 ++++++-- agent/jobs.go | 69 ++++++++++++++++++++++++++++++++------------- 3 files changed, 61 insertions(+), 34 deletions(-) diff --git a/agent/agent.go b/agent/agent.go index 84a89e0..ff01696 100644 --- a/agent/agent.go +++ b/agent/agent.go @@ -63,12 +63,11 @@ func New(opts ...Option) (*Agent, error) { // Ask is a pre-emptive, blocking call that returns the response as soon as it's ready. // It discards any other computation. -func (a *Agent) Ask(text, image string) []string { +func (a *Agent) Ask(opts ...JobOption) []string { //a.StopAction() - j := NewJob(text, image) - fmt.Println("Job created", text) + j := NewJob(opts...) + // fmt.Println("Job created", text) a.jobQueue <- j - fmt.Println("Waiting for result") return j.Result.WaitResult() } @@ -94,26 +93,18 @@ func (a *Agent) Run() error { // Expose a REST API to interact with the agent to ask it things - fmt.Println("Agent is running") clearConvTimer := time.NewTicker(1 * time.Minute) for { - fmt.Println("Agent loop") - select { case job := <-a.jobQueue: - fmt.Println("job from the queue") // Consume the job and generate a response // TODO: Give a short-term memory to the agent a.consumeJob(job) case <-a.context.Done(): - fmt.Println("Context canceled, agent is stopping...") - // Agent has been canceled, return error return ErrContextCanceled case <-clearConvTimer.C: - fmt.Println("Removing chat history...") - // TODO: decide to do something on its own with the conversation result // before clearing it out diff --git a/agent/agent_test.go b/agent/agent_test.go index 910a086..aa5af1e 100644 --- a/agent/agent_test.go +++ b/agent/agent_test.go @@ -61,7 +61,12 @@ var _ = Describe("Agent test", func() { Expect(err).ToNot(HaveOccurred()) go agent.Run() defer agent.Stop() - res := agent.Ask("can you get the weather in boston, and afterward of Milano, Italy?", "") + res := agent.Ask( + WithReasoningCallback(func(a Action, ap action.ActionParams, s string) { + fmt.Println("Reasoning", s) + }), + WithText("can you get the weather in boston, and afterward of Milano, Italy?"), + ) Expect(res).To(ContainElement(testActionResult), fmt.Sprint(res)) Expect(res).To(ContainElement(testActionResult2), fmt.Sprint(res)) }) @@ -75,7 +80,9 @@ var _ = Describe("Agent test", func() { Expect(err).ToNot(HaveOccurred()) go agent.Run() defer agent.Stop() - res := agent.Ask("can you get the weather in boston?", "") + res := agent.Ask( + WithText("can you get the weather in boston?"), + ) Expect(res).To(ContainElement(testActionResult), fmt.Sprint(res)) }) }) diff --git a/agent/jobs.go b/agent/jobs.go index e97d019..5f463de 100644 --- a/agent/jobs.go +++ b/agent/jobs.go @@ -14,52 +14,82 @@ type Job struct { // The job is a request to the agent to do something // It can be a question, a command, or a request to do something // The agent will try to do it, and return a response - Text string - Image string // base64 encoded image - Result *JobResult + Text string + Image string // base64 encoded image + Result *JobResult + reasoningCallback func(Action, action.ActionParams, string) + resultCallback func(Action, action.ActionParams, string, string) } // JobResult is the result of a job type JobResult struct { sync.Mutex // The result of a job - Data []string - reasoningCallback func(Action, action.ActionParams, string) - resultCallback func(Action, action.ActionParams, string, string) - ready chan bool + Data []string + Error error + ready chan bool +} + +type JobOption func(*Job) + +func WithReasoningCallback(f func(Action, action.ActionParams, string)) JobOption { + return func(r *Job) { + r.reasoningCallback = f + } +} + +func WithResultCallback(f func(Action, action.ActionParams, string, string)) JobOption { + return func(r *Job) { + r.resultCallback = f + } } // NewJobResult creates a new job result func NewJobResult() *JobResult { - return &JobResult{ + r := &JobResult{ ready: make(chan bool), } + return r } -func (j *JobResult) Callback(a Action, p action.ActionParams, s string) { +func (j *Job) Callback(a Action, p action.ActionParams, s string) { if j.reasoningCallback == nil { return } j.reasoningCallback(a, p, s) } -func (j *JobResult) CallbackWithResult(a Action, p action.ActionParams, s, r string) { +func (j *Job) CallbackWithResult(a Action, p action.ActionParams, s, r string) { if j.resultCallback == nil { return } j.resultCallback(a, p, s, r) } +func WithImage(image string) JobOption { + return func(j *Job) { + j.Image = image + } +} + +func WithText(text string) JobOption { + return func(j *Job) { + j.Text = text + } +} + // NewJob creates a new job // It is a request to the agent to do something // It has a JobResult to get the result asynchronously // To wait for a Job result, use JobResult.WaitResult() -func NewJob(text, image string) *Job { - return &Job{ - Text: text, - Image: image, +func NewJob(opts ...JobOption) *Job { + j := &Job{ Result: NewJobResult(), } + for _, o := range opts { + o(j) + } + return j } // SetResult sets the result of a job @@ -71,10 +101,11 @@ func (j *JobResult) SetResult(text string) { } // SetResult sets the result of a job -func (j *JobResult) Finish() { +func (j *JobResult) Finish(e error) { j.Lock() defer j.Unlock() + j.Error = e close(j.ready) } @@ -165,7 +196,7 @@ func (a *Agent) consumeJob(job *Job) { return } - job.Result.Callback(chosenAction, params.actionParams, reasoning) + job.Callback(chosenAction, params.actionParams, reasoning) if params.actionParams == nil { fmt.Println("no parameters") @@ -186,7 +217,7 @@ func (a *Agent) consumeJob(job *Job) { } fmt.Printf("Action run result: %v\n", result) job.Result.SetResult(result) - job.Result.CallbackWithResult(chosenAction, params.actionParams, reasoning, result) + job.CallbackWithResult(chosenAction, params.actionParams, reasoning, result) // calling the function messages = append(messages, openai.ChatCompletionMessage{ @@ -220,8 +251,6 @@ func (a *Agent) consumeJob(job *Job) { } else if !chosenAction.Definition().Name.Is(action.ReplyActionName) { // We need to do another action (?) // The agent decided to do another action - fmt.Println("Another action to do: ", followingAction.Definition().Name) - fmt.Println("Reasoning: ", reasoning) // call ourselves again a.currentReasoning = reasoning a.nextAction = followingAction @@ -249,5 +278,5 @@ func (a *Agent) consumeJob(job *Job) { msg.Content) a.currentConversation = append(a.currentConversation, msg) - job.Result.Finish() + job.Result.Finish(nil) } From 8e3a1fcbe57eff6a3a61b741112ba0dcd00c8116 Mon Sep 17 00:00:00 2001 From: mudler Date: Mon, 1 Apr 2024 22:50:11 +0200 Subject: [PATCH 020/399] return statesg --- agent/actions.go | 13 ++++++++++++- agent/agent.go | 2 +- agent/agent_test.go | 19 ++++++++++++++----- agent/jobs.go | 42 +++++++++++++++++++++++------------------- 4 files changed, 50 insertions(+), 26 deletions(-) diff --git a/agent/actions.go b/agent/actions.go index e08c706..6770505 100644 --- a/agent/actions.go +++ b/agent/actions.go @@ -11,6 +11,17 @@ import ( "github.com/sashabaranov/go-openai" ) +type ActionState struct { + ActionCurrentState + Result string +} + +type ActionCurrentState struct { + Action Action + Params action.ActionParams + Reasoning string +} + // Actions is something the agent can do type Action interface { Run(action.ActionParams) (string, error) @@ -135,7 +146,7 @@ func (a *Agent) pickAction(ctx context.Context, templ string, messages []openai. return nil, "", err } - err = hudTmpl.Execute(prompt, a.prepareHUD()) + err = hudTmpl.Execute(hud, a.prepareHUD()) if err != nil { return nil, "", err } diff --git a/agent/agent.go b/agent/agent.go index ff01696..df2fd10 100644 --- a/agent/agent.go +++ b/agent/agent.go @@ -63,7 +63,7 @@ func New(opts ...Option) (*Agent, error) { // Ask is a pre-emptive, blocking call that returns the response as soon as it's ready. // It discards any other computation. -func (a *Agent) Ask(opts ...JobOption) []string { +func (a *Agent) Ask(opts ...JobOption) []ActionState { //a.StopAction() j := NewJob(opts...) // fmt.Println("Job created", text) diff --git a/agent/agent_test.go b/agent/agent_test.go index aa5af1e..312f305 100644 --- a/agent/agent_test.go +++ b/agent/agent_test.go @@ -62,13 +62,18 @@ var _ = Describe("Agent test", func() { go agent.Run() defer agent.Stop() res := agent.Ask( - WithReasoningCallback(func(a Action, ap action.ActionParams, s string) { - fmt.Println("Reasoning", s) + WithReasoningCallback(func(state ActionCurrentState) bool { + fmt.Println("Reasoning", state) + return true }), WithText("can you get the weather in boston, and afterward of Milano, Italy?"), ) - Expect(res).To(ContainElement(testActionResult), fmt.Sprint(res)) - Expect(res).To(ContainElement(testActionResult2), fmt.Sprint(res)) + reasons := []string{} + for _, r := range res { + reasons = append(reasons, r.Result) + } + Expect(reasons).To(ContainElement(testActionResult), fmt.Sprint(res)) + Expect(reasons).To(ContainElement(testActionResult2), fmt.Sprint(res)) }) It("pick the correct action", func() { agent, err := New( @@ -83,7 +88,11 @@ var _ = Describe("Agent test", func() { res := agent.Ask( WithText("can you get the weather in boston?"), ) - Expect(res).To(ContainElement(testActionResult), fmt.Sprint(res)) + reasons := []string{} + for _, r := range res { + reasons = append(reasons, r.Result) + } + Expect(reasons).To(ContainElement(testActionResult), fmt.Sprint(res)) }) }) }) diff --git a/agent/jobs.go b/agent/jobs.go index 5f463de..53b1a96 100644 --- a/agent/jobs.go +++ b/agent/jobs.go @@ -17,28 +17,28 @@ type Job struct { Text string Image string // base64 encoded image Result *JobResult - reasoningCallback func(Action, action.ActionParams, string) - resultCallback func(Action, action.ActionParams, string, string) + reasoningCallback func(ActionCurrentState) bool + resultCallback func(ActionState) } // JobResult is the result of a job type JobResult struct { sync.Mutex // The result of a job - Data []string + State []ActionState Error error ready chan bool } type JobOption func(*Job) -func WithReasoningCallback(f func(Action, action.ActionParams, string)) JobOption { +func WithReasoningCallback(f func(ActionCurrentState) bool) JobOption { return func(r *Job) { r.reasoningCallback = f } } -func WithResultCallback(f func(Action, action.ActionParams, string, string)) JobOption { +func WithResultCallback(f func(ActionState)) JobOption { return func(r *Job) { r.resultCallback = f } @@ -52,18 +52,18 @@ func NewJobResult() *JobResult { return r } -func (j *Job) Callback(a Action, p action.ActionParams, s string) { +func (j *Job) Callback(stateResult ActionCurrentState) bool { if j.reasoningCallback == nil { - return + return true } - j.reasoningCallback(a, p, s) + return j.reasoningCallback(stateResult) } -func (j *Job) CallbackWithResult(a Action, p action.ActionParams, s, r string) { +func (j *Job) CallbackWithResult(stateResult ActionState) { if j.resultCallback == nil { return } - j.resultCallback(a, p, s, r) + j.resultCallback(stateResult) } func WithImage(image string) JobOption { @@ -93,11 +93,11 @@ func NewJob(opts ...JobOption) *Job { } // SetResult sets the result of a job -func (j *JobResult) SetResult(text string) { +func (j *JobResult) SetResult(text ActionState) { j.Lock() defer j.Unlock() - j.Data = append(j.Data, text) + j.State = append(j.State, text) } // SetResult sets the result of a job @@ -110,11 +110,11 @@ func (j *JobResult) Finish(e error) { } // WaitResult waits for the result of a job -func (j *JobResult) WaitResult() []string { +func (j *JobResult) WaitResult() []ActionState { <-j.ready j.Lock() defer j.Unlock() - return j.Data + return j.State } const pickActionTemplate = `You can take any of the following tools: @@ -185,8 +185,7 @@ func (a *Agent) consumeJob(job *Job) { } if chosenAction == nil || chosenAction.Definition().Name.Is(action.ReplyActionName) { - fmt.Println("No action to do, just reply") - job.Result.SetResult(reasoning) + job.Result.SetResult(ActionState{ActionCurrentState{nil, nil, "No action to do, just reply"}, ""}) return } @@ -196,7 +195,11 @@ func (a *Agent) consumeJob(job *Job) { return } - job.Callback(chosenAction, params.actionParams, reasoning) + if !job.Callback(ActionCurrentState{chosenAction, params.actionParams, reasoning}) { + fmt.Println("Stop from callback") + job.Result.SetResult(ActionState{ActionCurrentState{chosenAction, params.actionParams, reasoning}, "stopped by callback"}) + return + } if params.actionParams == nil { fmt.Println("no parameters") @@ -216,8 +219,9 @@ func (a *Agent) consumeJob(job *Job) { } } fmt.Printf("Action run result: %v\n", result) - job.Result.SetResult(result) - job.CallbackWithResult(chosenAction, params.actionParams, reasoning, result) + stateResult := ActionState{ActionCurrentState{chosenAction, params.actionParams, reasoning}, result} + job.Result.SetResult(stateResult) + job.CallbackWithResult(stateResult) // calling the function messages = append(messages, openai.ChatCompletionMessage{ From 9417c5ca8f21414350677ac9eaaaae153bbf7e93 Mon Sep 17 00:00:00 2001 From: mudler Date: Tue, 2 Apr 2024 17:32:27 +0200 Subject: [PATCH 021/399] correctly store conversation --- agent/agent.go | 14 +++++++++++++- agent/agent_test.go | 8 +++++--- agent/jobs.go | 18 +++++++++--------- 3 files changed, 27 insertions(+), 13 deletions(-) diff --git a/agent/agent.go b/agent/agent.go index df2fd10..b1d8097 100644 --- a/agent/agent.go +++ b/agent/agent.go @@ -72,6 +72,18 @@ func (a *Agent) Ask(opts ...JobOption) []ActionState { return j.Result.WaitResult() } +func (a *Agent) CurrentConversation() []openai.ChatCompletionMessage { + a.Lock() + defer a.Unlock() + return a.currentConversation +} + +func (a *Agent) ResetConversation() { + a.Lock() + defer a.Unlock() + a.currentConversation = []openai.ChatCompletionMessage{} +} + var ErrContextCanceled = fmt.Errorf("context canceled") func (a *Agent) Stop() { @@ -109,7 +121,7 @@ func (a *Agent) Run() error { // before clearing it out // Clear the conversation - a.currentConversation = []openai.ChatCompletionMessage{} + // a.currentConversation = []openai.ChatCompletionMessage{} } } } diff --git a/agent/agent_test.go b/agent/agent_test.go index 312f305..1f19c18 100644 --- a/agent/agent_test.go +++ b/agent/agent_test.go @@ -12,6 +12,7 @@ import ( const testActionResult = "In Boston it's 30C today, it's sunny, and humidity is at 98%" const testActionResult2 = "In milan it's very hot today, it is 45C and the humidity is at 200%" +const testActionResult3 = "In paris it's very cold today, it is 2C and the humidity is at 10%" var _ Action = &TestAction{} @@ -22,11 +23,12 @@ type TestAction struct { func (a *TestAction) Run(action.ActionParams) (string, error) { res := a.response[a.responseN] + a.responseN++ + if len(a.response) == a.responseN { a.responseN = 0 - } else { - a.responseN++ } + return res, nil } @@ -56,7 +58,7 @@ var _ = Describe("Agent test", func() { WithLLMAPIURL(apiModel), WithModel(testModel), // WithRandomIdentity(), - WithActions(&TestAction{response: []string{testActionResult, testActionResult2}}), + WithActions(&TestAction{response: []string{testActionResult, testActionResult2, testActionResult3}}), ) Expect(err).ToNot(HaveOccurred()) go agent.Run() diff --git a/agent/jobs.go b/agent/jobs.go index 53b1a96..1d1640a 100644 --- a/agent/jobs.go +++ b/agent/jobs.go @@ -156,9 +156,8 @@ func (a *Agent) consumeJob(job *Job) { // TODO: Use llava to explain the image content } - messages := a.currentConversation if job.Text != "" { - messages = append(messages, openai.ChatCompletionMessage{ + a.currentConversation = append(a.currentConversation, openai.ChatCompletionMessage{ Role: "user", Content: job.Text, }) @@ -177,7 +176,7 @@ func (a *Agent) consumeJob(job *Job) { a.nextAction = nil } else { var err error - chosenAction, reasoning, err = a.pickAction(ctx, pickActionTemplate, messages) + chosenAction, reasoning, err = a.pickAction(ctx, pickActionTemplate, a.currentConversation) if err != nil { fmt.Printf("error picking action: %v\n", err) return @@ -189,7 +188,7 @@ func (a *Agent) consumeJob(job *Job) { return } - params, err := a.generateParameters(ctx, chosenAction, messages) + params, err := a.generateParameters(ctx, chosenAction, a.currentConversation) if err != nil { fmt.Printf("error generating parameters: %v\n", err) return @@ -224,7 +223,7 @@ func (a *Agent) consumeJob(job *Job) { job.CallbackWithResult(stateResult) // calling the function - messages = append(messages, openai.ChatCompletionMessage{ + a.currentConversation = append(a.currentConversation, openai.ChatCompletionMessage{ Role: "assistant", FunctionCall: &openai.FunctionCall{ Name: chosenAction.Definition().Name.String(), @@ -233,18 +232,19 @@ func (a *Agent) consumeJob(job *Job) { }) // result of calling the function - messages = append(messages, openai.ChatCompletionMessage{ + a.currentConversation = append(a.currentConversation, openai.ChatCompletionMessage{ Role: openai.ChatMessageRoleTool, Content: result, Name: chosenAction.Definition().Name.String(), ToolCallID: chosenAction.Definition().Name.String(), }) - a.currentConversation = append(a.currentConversation, messages...) + //a.currentConversation = append(a.currentConversation, messages...) + //a.currentConversation = messages // given the result, we can now ask OpenAI to complete the conversation or // to continue using another tool given the result - followingAction, reasoning, err := a.pickAction(ctx, reEvalTemplate, messages) + followingAction, reasoning, err := a.pickAction(ctx, reEvalTemplate, a.currentConversation) if err != nil { fmt.Printf("error picking action: %v\n", err) return @@ -267,7 +267,7 @@ func (a *Agent) consumeJob(job *Job) { resp, err := a.client.CreateChatCompletion(ctx, openai.ChatCompletionRequest{ Model: a.options.LLMAPI.Model, - Messages: messages, + Messages: a.currentConversation, }, ) if err != nil || len(resp.Choices) != 1 { From 58ba4db1ddceaef1ca862e4c5808400e98d32f4d Mon Sep 17 00:00:00 2001 From: mudler Date: Tue, 2 Apr 2024 20:29:23 +0200 Subject: [PATCH 022/399] fix tests --- agent/agent_test.go | 14 +++++++++++++- agent/jobs.go | 1 + 2 files changed, 14 insertions(+), 1 deletion(-) diff --git a/agent/agent_test.go b/agent/agent_test.go index 1f19c18..b52d4a2 100644 --- a/agent/agent_test.go +++ b/agent/agent_test.go @@ -53,7 +53,7 @@ func (a *TestAction) Definition() action.ActionDefinition { var _ = Describe("Agent test", func() { Context("jobs", func() { - FIt("pick the correct action", func() { + It("pick the correct action", func() { agent, err := New( WithLLMAPIURL(apiModel), WithModel(testModel), @@ -76,6 +76,18 @@ var _ = Describe("Agent test", func() { } Expect(reasons).To(ContainElement(testActionResult), fmt.Sprint(res)) Expect(reasons).To(ContainElement(testActionResult2), fmt.Sprint(res)) + reasons = []string{} + + res = agent.Ask(WithText("Now I want to know the weather in Paris")) + conversation := agent.CurrentConversation() + Expect(len(conversation)).To(Equal(10), fmt.Sprint(conversation)) + for _, r := range res { + reasons = append(reasons, r.Result) + } + Expect(reasons).ToNot(ContainElement(testActionResult), fmt.Sprint(res)) + Expect(reasons).ToNot(ContainElement(testActionResult2), fmt.Sprint(res)) + Expect(reasons).To(ContainElement(testActionResult3), fmt.Sprint(res)) + }) It("pick the correct action", func() { agent, err := New( diff --git a/agent/jobs.go b/agent/jobs.go index 1d1640a..08a9b3b 100644 --- a/agent/jobs.go +++ b/agent/jobs.go @@ -154,6 +154,7 @@ func (a *Agent) consumeJob(job *Job) { if job.Image != "" { // TODO: Use llava to explain the image content + } if job.Text != "" { From a404b75fbea6e8105cdd4ef1f91e5564021688ae Mon Sep 17 00:00:00 2001 From: mudler Date: Wed, 3 Apr 2024 18:04:33 +0200 Subject: [PATCH 023/399] remove debug prints --- agent/actions.go | 17 +++-------------- 1 file changed, 3 insertions(+), 14 deletions(-) diff --git a/agent/actions.go b/agent/actions.go index 6770505..f005f2f 100644 --- a/agent/actions.go +++ b/agent/actions.go @@ -69,20 +69,16 @@ func (a *Agent) decision( } resp, err := a.client.CreateChatCompletion(ctx, decision) if err != nil || len(resp.Choices) != 1 { - fmt.Println("no choices", err) - return nil, err } msg := resp.Choices[0].Message if len(msg.ToolCalls) != 1 { - fmt.Println(msg) return &decisionResult{message: msg.Content}, nil } params := action.ActionParams{} if err := params.Read(msg.ToolCalls[0].Function.Arguments); err != nil { - fmt.Println("can't read params", err) return nil, err } @@ -150,9 +146,9 @@ func (a *Agent) pickAction(ctx context.Context, templ string, messages []openai. if err != nil { return nil, "", err } - fmt.Println("=== HUD START ===", hud.String(), "=== HUD END ===") + //fmt.Println("=== HUD START ===", hud.String(), "=== HUD END ===") - fmt.Println("=== PROMPT START ===", prompt.String(), "=== PROMPT END ===") + //fmt.Println("=== PROMPT START ===", prompt.String(), "=== PROMPT END ===") // Get all the available actions IDs actionsID := []string{} @@ -180,7 +176,6 @@ func (a *Agent) pickAction(ctx context.Context, templ string, messages []openai. Actions{action.NewReasoning()}.ToTools(), action.NewReasoning().Definition().Name) if err != nil { - fmt.Println("failed thinking", err) return nil, "", err } reason := "" @@ -195,8 +190,6 @@ func (a *Agent) pickAction(ctx context.Context, templ string, messages []openai. reason = thought.message } - fmt.Println("---- Thought: " + reason) - // Decode tool call intentionsTools := action.NewIntention(actionsID...) params, err := a.decision(ctx, @@ -207,7 +200,6 @@ func (a *Agent) pickAction(ctx context.Context, templ string, messages []openai. Actions{intentionsTools}.ToTools(), intentionsTools.Definition().Name) if err != nil { - fmt.Println("failed decision", err) return nil, "", err } @@ -222,8 +214,6 @@ func (a *Agent) pickAction(ctx context.Context, templ string, messages []openai. return nil, "", err } - fmt.Printf("Action choice: %v\n", actionChoice) - if actionChoice.Tool == "" || actionChoice.Tool == "none" { return nil, "", fmt.Errorf("no intent detected") } @@ -231,8 +221,7 @@ func (a *Agent) pickAction(ctx context.Context, templ string, messages []openai. // Find the action chosenAction := append(a.options.actions, action.NewReply()).Find(actionChoice.Tool) if chosenAction == nil { - fmt.Println("No action found for intent: ", actionChoice.Tool) - return nil, "", fmt.Errorf("No action found for intent:" + actionChoice.Tool) + return nil, "", fmt.Errorf("no action found for intent:" + actionChoice.Tool) } return chosenAction, actionChoice.Reasoning, nil From e6090c62cfd282ad36dab2cc626782c001eb991d Mon Sep 17 00:00:00 2001 From: mudler Date: Wed, 3 Apr 2024 18:04:50 +0200 Subject: [PATCH 024/399] Split character from state --- agent/agent.go | 238 +++++++++++++++++++++++++++++++++++++++----- agent/agent_test.go | 29 ++++-- agent/jobs.go | 174 -------------------------------- agent/options.go | 14 +-- agent/state.go | 42 ++++---- agent/state_test.go | 12 --- llm/json.go | 1 - 7 files changed, 261 insertions(+), 249 deletions(-) diff --git a/agent/agent.go b/agent/agent.go index b1d8097..f99e006 100644 --- a/agent/agent.go +++ b/agent/agent.go @@ -11,15 +11,48 @@ import ( "github.com/sashabaranov/go-openai" ) +const pickActionTemplate = `You can take any of the following tools: + +{{range .Actions -}} +- {{.Name}}: {{.Description }} +{{ end }} +To answer back to the user, use the "reply" tool. +Given the text below, decide which action to take and explain the detailed reasoning behind it. For answering without picking a choice, reply with 'none'. + +{{range .Messages -}} +{{.Role}}{{if .FunctionCall}}(tool_call){{.FunctionCall}}{{end}}: {{if .FunctionCall}}{{.FunctionCall}}{{else if .ToolCalls -}}{{range .ToolCalls -}}{{.Name}} called with {{.Arguments}}{{end}}{{ else }}{{.Content -}}{{end}} +{{end}} +` + +const reEvalTemplate = `You can take any of the following tools: + +{{range .Actions -}} +- {{.Name}}: {{.Description }} +{{ end }} +To answer back to the user, use the "reply" tool. +Given the text below, decide which action to take and explain the detailed reasoning behind it. For answering without picking a choice, reply with 'none'. + +{{range .Messages -}} +{{.Role}}{{if .FunctionCall}}(tool_call){{.FunctionCall}}{{end}}: {{if .FunctionCall}}{{.FunctionCall}}{{else if .ToolCalls -}}{{range .ToolCalls -}}{{.Name}} called with {{.Arguments}}{{end}}{{ else }}{{.Content -}}{{end}} +{{end}} + +We already have called tools. Evaluate the current situation and decide if we need to execute other tools or answer back with a result.` + +const ( + UserRole = "user" + AssistantRole = "assistant" + SystemRole = "system" +) + type Agent struct { sync.Mutex - options *options - Character Character - client *openai.Client - jobQueue chan *Job - actionContext *action.ActionContext - context *action.ActionContext - availableActions []Action + options *options + Character Character + client *openai.Client + jobQueue, selfJobQueue chan *Job + actionContext *action.ActionContext + context *action.ActionContext + availableActions []Action currentReasoning string nextAction Action @@ -45,6 +78,7 @@ func New(opts ...Option) (*Agent, error) { ctx, cancel := context.WithCancel(c) a := &Agent{ jobQueue: make(chan *Job), + selfJobQueue: make(chan *Job), options: options, client: client, Character: options.character, @@ -61,10 +95,20 @@ func New(opts ...Option) (*Agent, error) { return a, nil } +// StopAction stops the current action +// if any. Can be called before adding a new job. +func (a *Agent) StopAction() { + a.Lock() + defer a.Unlock() + if a.actionContext != nil { + a.actionContext.Cancel() + } +} + // Ask is a pre-emptive, blocking call that returns the response as soon as it's ready. // It discards any other computation. func (a *Agent) Ask(opts ...JobOption) []ActionState { - //a.StopAction() + a.StopAction() j := NewJob(opts...) // fmt.Println("Job created", text) a.jobQueue <- j @@ -92,6 +136,158 @@ func (a *Agent) Stop() { a.context.Cancel() } +func (a *Agent) consumeJob(job *Job, role string) { + // Consume the job and generate a response + a.Lock() + // Set the action context + ctx, cancel := context.WithCancel(context.Background()) + a.actionContext = action.NewContext(ctx, cancel) + a.Unlock() + + if job.Image != "" { + // TODO: Use llava to explain the image content + + } + + if job.Text != "" { + a.currentConversation = append(a.currentConversation, openai.ChatCompletionMessage{ + Role: role, + Content: job.Text, + }) + } + + // choose an action first + var chosenAction Action + var reasoning string + + if a.currentReasoning != "" && a.nextAction != nil { + // if we are being re-evaluated, we already have the action + // and the reasoning. Consume it here and reset it + chosenAction = a.nextAction + reasoning = a.currentReasoning + a.currentReasoning = "" + a.nextAction = nil + } else { + var err error + chosenAction, reasoning, err = a.pickAction(ctx, pickActionTemplate, a.currentConversation) + if err != nil { + job.Result.Finish(err) + return + } + } + + if chosenAction == nil || chosenAction.Definition().Name.Is(action.ReplyActionName) { + job.Result.SetResult(ActionState{ActionCurrentState{nil, nil, "No action to do, just reply"}, ""}) + job.Result.Finish(nil) + return + } + + params, err := a.generateParameters(ctx, chosenAction, a.currentConversation) + if err != nil { + job.Result.Finish(err) + return + } + + if !job.Callback(ActionCurrentState{chosenAction, params.actionParams, reasoning}) { + job.Result.SetResult(ActionState{ActionCurrentState{chosenAction, params.actionParams, reasoning}, "stopped by callback"}) + job.Result.Finish(nil) + return + } + + if params.actionParams == nil { + job.Result.Finish(fmt.Errorf("no parameters")) + return + } + + var result string + for _, action := range a.options.actions { + if action.Definition().Name == chosenAction.Definition().Name { + if result, err = action.Run(params.actionParams); err != nil { + job.Result.Finish(fmt.Errorf("error running action: %w", err)) + return + } + } + } + + stateResult := ActionState{ActionCurrentState{chosenAction, params.actionParams, reasoning}, result} + job.Result.SetResult(stateResult) + job.CallbackWithResult(stateResult) + + // calling the function + a.currentConversation = append(a.currentConversation, openai.ChatCompletionMessage{ + Role: "assistant", + FunctionCall: &openai.FunctionCall{ + Name: chosenAction.Definition().Name.String(), + Arguments: params.actionParams.String(), + }, + }) + + // result of calling the function + a.currentConversation = append(a.currentConversation, openai.ChatCompletionMessage{ + Role: openai.ChatMessageRoleTool, + Content: result, + Name: chosenAction.Definition().Name.String(), + ToolCallID: chosenAction.Definition().Name.String(), + }) + + //a.currentConversation = append(a.currentConversation, messages...) + //a.currentConversation = messages + + // given the result, we can now ask OpenAI to complete the conversation or + // to continue using another tool given the result + followingAction, reasoning, err := a.pickAction(ctx, reEvalTemplate, a.currentConversation) + if err != nil { + job.Result.Finish(fmt.Errorf("error picking action: %w", err)) + return + } + + if followingAction != nil && + !followingAction.Definition().Name.Is(action.ReplyActionName) && + !chosenAction.Definition().Name.Is(action.ReplyActionName) { + // We need to do another action (?) + // The agent decided to do another action + // call ourselves again + a.currentReasoning = reasoning + a.nextAction = followingAction + job.Text = "" + a.consumeJob(job, role) + return + } + + // Generate a human-readable response + resp, err := a.client.CreateChatCompletion(ctx, + openai.ChatCompletionRequest{ + Model: a.options.LLMAPI.Model, + Messages: a.currentConversation, + }, + ) + + if err != nil { + job.Result.Finish(err) + return + } + + if len(resp.Choices) != 1 { + job.Result.Finish(fmt.Errorf("no enough choices: %w", err)) + return + } + + // display OpenAI's response to the original question utilizing our function + msg := resp.Choices[0].Message + + a.currentConversation = append(a.currentConversation, msg) + job.Result.Finish(nil) +} + +func (a *Agent) periodicallyRun() { + a.consumeJob(NewJob(WithText("What should I do next?")), SystemRole) + // TODO: decide to do something on its own with the conversation result + // before clearing it out + + // Clear the conversation + // a.currentConversation = []openai.ChatCompletionMessage{} +} + func (a *Agent) Run() error { // The agent run does two things: // picks up requests from a queue @@ -105,33 +301,23 @@ func (a *Agent) Run() error { // Expose a REST API to interact with the agent to ask it things - clearConvTimer := time.NewTicker(1 * time.Minute) + todoTimer := time.NewTicker(1 * time.Minute) for { select { + case job := <-a.selfJobQueue: + + // XXX: is it needed? + a.consumeJob(job, SystemRole) case job := <-a.jobQueue: // Consume the job and generate a response // TODO: Give a short-term memory to the agent - a.consumeJob(job) + a.consumeJob(job, UserRole) case <-a.context.Done(): // Agent has been canceled, return error return ErrContextCanceled - case <-clearConvTimer.C: - // TODO: decide to do something on its own with the conversation result - // before clearing it out - - // Clear the conversation - // a.currentConversation = []openai.ChatCompletionMessage{} + case <-todoTimer.C: + a.periodicallyRun() } } } - -// StopAction stops the current action -// if any. Can be called before adding a new job. -func (a *Agent) StopAction() { - a.Lock() - defer a.Unlock() - if a.actionContext != nil { - a.actionContext.Cancel() - } -} diff --git a/agent/agent_test.go b/agent/agent_test.go index b52d4a2..10c83da 100644 --- a/agent/agent_test.go +++ b/agent/agent_test.go @@ -16,6 +16,18 @@ const testActionResult3 = "In paris it's very cold today, it is 2C and the humid var _ Action = &TestAction{} +var debugOptions = []JobOption{ + WithReasoningCallback(func(state ActionCurrentState) bool { + fmt.Println("Reasoning", state) + return true + }), + WithResultCallback(func(state ActionState) { + fmt.Println("Reasoning", state.Reasoning) + fmt.Println("Action", state.Action) + fmt.Println("Result", state.Result) + }), +} + type TestAction struct { response []string responseN int @@ -64,11 +76,9 @@ var _ = Describe("Agent test", func() { go agent.Run() defer agent.Stop() res := agent.Ask( - WithReasoningCallback(func(state ActionCurrentState) bool { - fmt.Println("Reasoning", state) - return true - }), - WithText("can you get the weather in boston, and afterward of Milano, Italy?"), + append(debugOptions, + WithText("can you get the weather in boston, and afterward of Milano, Italy?"), + )..., ) reasons := []string{} for _, r := range res { @@ -78,7 +88,10 @@ var _ = Describe("Agent test", func() { Expect(reasons).To(ContainElement(testActionResult2), fmt.Sprint(res)) reasons = []string{} - res = agent.Ask(WithText("Now I want to know the weather in Paris")) + res = agent.Ask( + append(debugOptions, + WithText("Now I want to know the weather in Paris"), + )...) conversation := agent.CurrentConversation() Expect(len(conversation)).To(Equal(10), fmt.Sprint(conversation)) for _, r := range res { @@ -93,6 +106,7 @@ var _ = Describe("Agent test", func() { agent, err := New( WithLLMAPIURL(apiModel), WithModel(testModel), + // WithRandomIdentity(), WithActions(&TestAction{response: []string{testActionResult}}), ) @@ -100,7 +114,8 @@ var _ = Describe("Agent test", func() { go agent.Run() defer agent.Stop() res := agent.Ask( - WithText("can you get the weather in boston?"), + append(debugOptions, + WithText("can you get the weather in boston?"))..., ) reasons := []string{} for _, r := range res { diff --git a/agent/jobs.go b/agent/jobs.go index 08a9b3b..8de6772 100644 --- a/agent/jobs.go +++ b/agent/jobs.go @@ -1,12 +1,7 @@ package agent import ( - "context" - "fmt" "sync" - - "github.com/mudler/local-agent-framework/action" - "github.com/sashabaranov/go-openai" ) // Job is a request to the agent to do something @@ -116,172 +111,3 @@ func (j *JobResult) WaitResult() []ActionState { defer j.Unlock() return j.State } - -const pickActionTemplate = `You can take any of the following tools: - -{{range .Actions -}} -- {{.Name}}: {{.Description }} -{{ end }} -To answer back to the user, use the "reply" tool. -Given the text below, decide which action to take and explain the detailed reasoning behind it. For answering without picking a choice, reply with 'none'. - -{{range .Messages -}} -{{.Role}}{{if .FunctionCall}}(tool_call){{.FunctionCall}}{{end}}: {{if .FunctionCall}}{{.FunctionCall}}{{else if .ToolCalls -}}{{range .ToolCalls -}}{{.Name}} called with {{.Arguments}}{{end}}{{ else }}{{.Content -}}{{end}} -{{end}} -` - -const reEvalTemplate = `You can take any of the following tools: - -{{range .Actions -}} -- {{.Name}}: {{.Description }} -{{ end }} -To answer back to the user, use the "reply" tool. -Given the text below, decide which action to take and explain the detailed reasoning behind it. For answering without picking a choice, reply with 'none'. - -{{range .Messages -}} -{{.Role}}{{if .FunctionCall}}(tool_call){{.FunctionCall}}{{end}}: {{if .FunctionCall}}{{.FunctionCall}}{{else if .ToolCalls -}}{{range .ToolCalls -}}{{.Name}} called with {{.Arguments}}{{end}}{{ else }}{{.Content -}}{{end}} -{{end}} - -We already have called tools. Evaluate the current situation and decide if we need to execute other tools or answer back with a result.` - -func (a *Agent) consumeJob(job *Job) { - // Consume the job and generate a response - a.Lock() - // Set the action context - ctx, cancel := context.WithCancel(context.Background()) - a.actionContext = action.NewContext(ctx, cancel) - a.Unlock() - - if job.Image != "" { - // TODO: Use llava to explain the image content - - } - - if job.Text != "" { - a.currentConversation = append(a.currentConversation, openai.ChatCompletionMessage{ - Role: "user", - Content: job.Text, - }) - } - - // choose an action first - var chosenAction Action - var reasoning string - - if a.currentReasoning != "" && a.nextAction != nil { - // if we are being re-evaluated, we already have the action - // and the reasoning. Consume it here and reset it - chosenAction = a.nextAction - reasoning = a.currentReasoning - a.currentReasoning = "" - a.nextAction = nil - } else { - var err error - chosenAction, reasoning, err = a.pickAction(ctx, pickActionTemplate, a.currentConversation) - if err != nil { - fmt.Printf("error picking action: %v\n", err) - return - } - } - - if chosenAction == nil || chosenAction.Definition().Name.Is(action.ReplyActionName) { - job.Result.SetResult(ActionState{ActionCurrentState{nil, nil, "No action to do, just reply"}, ""}) - return - } - - params, err := a.generateParameters(ctx, chosenAction, a.currentConversation) - if err != nil { - fmt.Printf("error generating parameters: %v\n", err) - return - } - - if !job.Callback(ActionCurrentState{chosenAction, params.actionParams, reasoning}) { - fmt.Println("Stop from callback") - job.Result.SetResult(ActionState{ActionCurrentState{chosenAction, params.actionParams, reasoning}, "stopped by callback"}) - return - } - - if params.actionParams == nil { - fmt.Println("no parameters") - return - } - - var result string - for _, action := range a.options.actions { - fmt.Println("Checking action: ", action.Definition().Name, chosenAction.Definition().Name) - if action.Definition().Name == chosenAction.Definition().Name { - fmt.Printf("Running action: %v\n", action.Definition().Name) - fmt.Printf("With parameters: %v\n", params.actionParams) - if result, err = action.Run(params.actionParams); err != nil { - fmt.Printf("error running action: %v\n", err) - return - } - } - } - fmt.Printf("Action run result: %v\n", result) - stateResult := ActionState{ActionCurrentState{chosenAction, params.actionParams, reasoning}, result} - job.Result.SetResult(stateResult) - job.CallbackWithResult(stateResult) - - // calling the function - a.currentConversation = append(a.currentConversation, openai.ChatCompletionMessage{ - Role: "assistant", - FunctionCall: &openai.FunctionCall{ - Name: chosenAction.Definition().Name.String(), - Arguments: params.actionParams.String(), - }, - }) - - // result of calling the function - a.currentConversation = append(a.currentConversation, openai.ChatCompletionMessage{ - Role: openai.ChatMessageRoleTool, - Content: result, - Name: chosenAction.Definition().Name.String(), - ToolCallID: chosenAction.Definition().Name.String(), - }) - - //a.currentConversation = append(a.currentConversation, messages...) - //a.currentConversation = messages - - // given the result, we can now ask OpenAI to complete the conversation or - // to continue using another tool given the result - followingAction, reasoning, err := a.pickAction(ctx, reEvalTemplate, a.currentConversation) - if err != nil { - fmt.Printf("error picking action: %v\n", err) - return - } - - if followingAction == nil || followingAction.Definition().Name.Is(action.ReplyActionName) { - fmt.Println("No action to do, just reply") - } else if !chosenAction.Definition().Name.Is(action.ReplyActionName) { - // We need to do another action (?) - // The agent decided to do another action - // call ourselves again - a.currentReasoning = reasoning - a.nextAction = followingAction - job.Text = "" - a.consumeJob(job) - return - } - - // Generate a human-readable response - resp, err := a.client.CreateChatCompletion(ctx, - openai.ChatCompletionRequest{ - Model: a.options.LLMAPI.Model, - Messages: a.currentConversation, - }, - ) - if err != nil || len(resp.Choices) != 1 { - fmt.Printf("2nd completion error: err:%v len(choices):%v\n", err, - len(resp.Choices)) - return - } - - // display OpenAI's response to the original question utilizing our function - msg := resp.Choices[0].Message - fmt.Printf("OpenAI answered the original request with: %v\n", - msg.Content) - - a.currentConversation = append(a.currentConversation, msg) - job.Result.Finish(nil) -} diff --git a/agent/options.go b/agent/options.go index bb25539..4cc3584 100644 --- a/agent/options.go +++ b/agent/options.go @@ -29,15 +29,11 @@ func defaultOptions() *options { Model: "echidna", }, character: Character{ - Name: "John Doe", - Age: 0, - Occupation: "Unemployed", - NowDoing: "Nothing", - DoingNext: "Nothing", - DoneHistory: []string{}, - Memories: []string{}, - Hobbies: []string{}, - MusicTaste: []string{}, + Name: "John Doe", + Age: 0, + Occupation: "Unemployed", + Hobbies: []string{}, + MusicTaste: []string{}, }, } } diff --git a/agent/state.go b/agent/state.go index 2a2d279..2456e6f 100644 --- a/agent/state.go +++ b/agent/state.go @@ -12,20 +12,34 @@ import ( // all information that should be displayed to the LLM // in the prompts type PromptHUD struct { - Character Character `json:"character"` + Character Character `json:"character"` + CurrentState State `json:"current_state"` } -type Character struct { - Name string `json:"name"` - Age int `json:"age"` - Occupation string `json:"job_occupation"` +// State is the structure +// that is used to keep track of the current state +// and the Agent's short memory that it can update +// Besides a long term memory that is accessible by the agent (With vector database), +// And a context memory (that is always powered by a vector database), +// this memory is the shorter one that the LLM keeps across conversation and across its +// reasoning process's and life time. +// A special action is then used to let the LLM itself update its memory +// periodically during self-processing, and the same action is ALSO exposed +// during the conversation to let the user put for example, a new goal to the agent. +type State struct { NowDoing string `json:"doing_now"` DoingNext string `json:"doing_next"` DoneHistory []string `json:"done_history"` Memories []string `json:"memories"` - Hobbies []string `json:"hobbies"` - MusicTaste []string `json:"music_taste"` - Sex string `json:"sex"` +} + +type Character struct { + Name string `json:"name"` + Age int `json:"age"` + Occupation string `json:"job_occupation"` + Hobbies []string `json:"hobbies"` + MusicTaste []string `json:"music_taste"` + Sex string `json:"sex"` } func Load(path string) (*Character, error) { @@ -69,10 +83,6 @@ func (a *Agent) validCharacter() bool { return a.Character.Name != "" && a.Character.Age != 0 && a.Character.Occupation != "" && - a.Character.NowDoing != "" && - a.Character.DoingNext != "" && - len(a.Character.DoneHistory) != 0 && - len(a.Character.Memories) != 0 && len(a.Character.Hobbies) != 0 && len(a.Character.MusicTaste) != 0 } @@ -81,10 +91,6 @@ const fmtT = `===================== Name: %s Age: %d Occupation: %s -Now doing: %s -Doing next: %s -Done history: %v -Memories: %v Hobbies: %v Music taste: %v =====================` @@ -95,10 +101,6 @@ func (a *Agent) String() string { a.Character.Name, a.Character.Age, a.Character.Occupation, - a.Character.NowDoing, - a.Character.DoingNext, - a.Character.DoneHistory, - a.Character.Memories, a.Character.Hobbies, a.Character.MusicTaste, ) diff --git a/agent/state_test.go b/agent/state_test.go index d5d40e9..85ec864 100644 --- a/agent/state_test.go +++ b/agent/state_test.go @@ -1,8 +1,6 @@ package agent_test import ( - "fmt" - . "github.com/mudler/local-agent-framework/agent" . "github.com/onsi/ginkgo/v2" . "github.com/onsi/gomega" @@ -21,13 +19,8 @@ var _ = Describe("Agent test", func() { Expect(agent.Character.Name).ToNot(BeEmpty()) Expect(agent.Character.Age).ToNot(BeZero()) Expect(agent.Character.Occupation).ToNot(BeEmpty()) - Expect(agent.Character.NowDoing).ToNot(BeEmpty()) - Expect(agent.Character.DoingNext).ToNot(BeEmpty()) - Expect(agent.Character.DoneHistory).ToNot(BeEmpty()) - Expect(agent.Character.Memories).ToNot(BeEmpty()) Expect(agent.Character.Hobbies).ToNot(BeEmpty()) Expect(agent.Character.MusicTaste).ToNot(BeEmpty()) - fmt.Println(agent.String()) }) It("detect an invalid character", func() { _, err := New(WithRandomIdentity()) @@ -43,13 +36,8 @@ var _ = Describe("Agent test", func() { Expect(agent.Character.Name).ToNot(BeEmpty()) Expect(agent.Character.Age).ToNot(BeZero()) Expect(agent.Character.Occupation).ToNot(BeEmpty()) - Expect(agent.Character.NowDoing).ToNot(BeEmpty()) - Expect(agent.Character.DoingNext).ToNot(BeEmpty()) - Expect(agent.Character.DoneHistory).ToNot(BeEmpty()) - Expect(agent.Character.Memories).ToNot(BeEmpty()) Expect(agent.Character.Hobbies).ToNot(BeEmpty()) Expect(agent.Character.MusicTaste).ToNot(BeEmpty()) - fmt.Println(agent.String()) }) }) }) diff --git a/llm/json.go b/llm/json.go index ded3a51..80a87f2 100644 --- a/llm/json.go +++ b/llm/json.go @@ -30,7 +30,6 @@ func GenerateJSON(ctx context.Context, client *openai.Client, model, text string return fmt.Errorf("no response from OpenAI API") } - fmt.Println(resp.Choices[0].Message.Content) err = json.Unmarshal([]byte(resp.Choices[0].Message.Content), i) if err != nil { return err From 41692d700c7fe067045233c15f251217e994fbc5 Mon Sep 17 00:00:00 2001 From: mudler Date: Wed, 3 Apr 2024 20:02:39 +0200 Subject: [PATCH 025/399] automatic background actions --- agent/agent.go | 41 ++++++++++++++++++++++++++++++++++++++++- 1 file changed, 40 insertions(+), 1 deletion(-) diff --git a/agent/agent.go b/agent/agent.go index f99e006..bbc6353 100644 --- a/agent/agent.go +++ b/agent/agent.go @@ -3,6 +3,7 @@ package agent import ( "context" "fmt" + "strings" "sync" "time" @@ -280,7 +281,45 @@ func (a *Agent) consumeJob(job *Job, role string) { } func (a *Agent) periodicallyRun() { - a.consumeJob(NewJob(WithText("What should I do next?")), SystemRole) + + // Here the LLM could decide to store some part of the conversation too in the memory + evaluateMemory := NewJob( + WithText( + `Evaluate the current conversation and decide if we need to store some relevant informations from it`, + )) + a.consumeJob(evaluateMemory, SystemRole) + + a.ResetConversation() + + // Here we go in a loop of + // - asking the agent to do something + // - evaluating the result + // - asking the agent to do something else based on the result + + whatNext := NewJob(WithText("What should I do next?")) + a.consumeJob(whatNext, SystemRole) + + doWork := NewJob(WithText("Try to fullfill our goals automatically")) + a.consumeJob(doWork, SystemRole) + + results := []string{} + for _, v := range doWork.Result.State { + results = append(results, v.Result) + } + + a.ResetConversation() + + // Here the LLM could decide to do something based on the result of our automatic action + evaluateAction := NewJob( + WithText( + `Evaluate the current situation and decide if we need to execute other tools (for instance to store results into permanent, or short memory). + We have done the following actions: + ` + strings.Join(results, "\n"), + )) + a.consumeJob(evaluateAction, SystemRole) + + a.ResetConversation() + // TODO: decide to do something on its own with the conversation result // before clearing it out From 7db9aea57b8c80bdfeff9f80d534da2f9f5b4476 Mon Sep 17 00:00:00 2001 From: mudler Date: Wed, 3 Apr 2024 20:03:51 +0200 Subject: [PATCH 026/399] comments --- agent/agent.go | 7 ------- agent/state.go | 2 +- 2 files changed, 1 insertion(+), 8 deletions(-) diff --git a/agent/agent.go b/agent/agent.go index bbc6353..3130279 100644 --- a/agent/agent.go +++ b/agent/agent.go @@ -281,7 +281,6 @@ func (a *Agent) consumeJob(job *Job, role string) { } func (a *Agent) periodicallyRun() { - // Here the LLM could decide to store some part of the conversation too in the memory evaluateMemory := NewJob( WithText( @@ -319,12 +318,6 @@ func (a *Agent) periodicallyRun() { a.consumeJob(evaluateAction, SystemRole) a.ResetConversation() - - // TODO: decide to do something on its own with the conversation result - // before clearing it out - - // Clear the conversation - // a.currentConversation = []openai.ChatCompletionMessage{} } func (a *Agent) Run() error { diff --git a/agent/state.go b/agent/state.go index 2456e6f..ad0b7e9 100644 --- a/agent/state.go +++ b/agent/state.go @@ -23,7 +23,7 @@ type PromptHUD struct { // And a context memory (that is always powered by a vector database), // this memory is the shorter one that the LLM keeps across conversation and across its // reasoning process's and life time. -// A special action is then used to let the LLM itself update its memory +// TODO: A special action is then used to let the LLM itself update its memory // periodically during self-processing, and the same action is ALSO exposed // during the conversation to let the user put for example, a new goal to the agent. type State struct { From 9df690999c8c88c3404aec68934d0056d3a8a2de Mon Sep 17 00:00:00 2001 From: Ettore Di Giacinto Date: Wed, 3 Apr 2024 23:17:20 +0200 Subject: [PATCH 027/399] fix template --- agent/actions.go | 4 ---- 1 file changed, 4 deletions(-) diff --git a/agent/actions.go b/agent/actions.go index f005f2f..917b492 100644 --- a/agent/actions.go +++ b/agent/actions.go @@ -102,10 +102,6 @@ const hudTemplate = `You have a character and your replies and actions might be {{if .Character.Name}}Name: {{.Character.Name}} {{end}}{{if .Character.Age}}Age: {{.Character.Age}} {{end}}{{if .Character.Occupation}}Occupation: {{.Character.Occupation}} -{{end}}{{if .Character.NowDoing}}Now doing: {{.Character.NowDoing}} -{{end}}{{if .Character.DoingNext}}Doing next: {{.Character.DoingNext}} -{{end}}{{if .Character.DoneHistory}}Done history: {{.Character.DoneHistory}} -{{end}}{{if .Character.Memories}}Memories: {{.Character.Memories}} {{end}}{{if .Character.Hobbies}}Hobbies: {{.Character.Hobbies}} {{end}}{{if .Character.MusicTaste}}Music taste: {{.Character.MusicTaste}} {{end}} From 936b2af4ca9edaeee3de75b07caa85b3d0f9619d Mon Sep 17 00:00:00 2001 From: Ettore Di Giacinto Date: Wed, 3 Apr 2024 23:17:46 +0200 Subject: [PATCH 028/399] Return JobResult --- agent/agent.go | 25 +++++++++++-------------- agent/agent_test.go | 8 +++++--- agent/jobs.go | 4 ++-- agent/options.go | 21 ++++++++++++++------- 4 files changed, 32 insertions(+), 26 deletions(-) diff --git a/agent/agent.go b/agent/agent.go index 3130279..0293eb8 100644 --- a/agent/agent.go +++ b/agent/agent.go @@ -47,13 +47,13 @@ const ( type Agent struct { sync.Mutex - options *options - Character Character - client *openai.Client - jobQueue, selfJobQueue chan *Job - actionContext *action.ActionContext - context *action.ActionContext - availableActions []Action + options *options + Character Character + client *openai.Client + jobQueue chan *Job + actionContext *action.ActionContext + context *action.ActionContext + availableActions []Action currentReasoning string nextAction Action @@ -79,7 +79,6 @@ func New(opts ...Option) (*Agent, error) { ctx, cancel := context.WithCancel(c) a := &Agent{ jobQueue: make(chan *Job), - selfJobQueue: make(chan *Job), options: options, client: client, Character: options.character, @@ -108,12 +107,11 @@ func (a *Agent) StopAction() { // Ask is a pre-emptive, blocking call that returns the response as soon as it's ready. // It discards any other computation. -func (a *Agent) Ask(opts ...JobOption) []ActionState { +func (a *Agent) Ask(opts ...JobOption) *JobResult { a.StopAction() j := NewJob(opts...) // fmt.Println("Job created", text) a.jobQueue <- j - return j.Result.WaitResult() } @@ -336,10 +334,6 @@ func (a *Agent) Run() error { todoTimer := time.NewTicker(1 * time.Minute) for { select { - case job := <-a.selfJobQueue: - - // XXX: is it needed? - a.consumeJob(job, SystemRole) case job := <-a.jobQueue: // Consume the job and generate a response @@ -349,6 +343,9 @@ func (a *Agent) Run() error { // Agent has been canceled, return error return ErrContextCanceled case <-todoTimer.C: + if !a.options.standaloneJob { + continue + } a.periodicallyRun() } } diff --git a/agent/agent_test.go b/agent/agent_test.go index 10c83da..3861ce3 100644 --- a/agent/agent_test.go +++ b/agent/agent_test.go @@ -80,8 +80,10 @@ var _ = Describe("Agent test", func() { WithText("can you get the weather in boston, and afterward of Milano, Italy?"), )..., ) + Expect(res.Error).ToNot(HaveOccurred()) reasons := []string{} - for _, r := range res { + for _, r := range res.State { + reasons = append(reasons, r.Result) } Expect(reasons).To(ContainElement(testActionResult), fmt.Sprint(res)) @@ -94,7 +96,7 @@ var _ = Describe("Agent test", func() { )...) conversation := agent.CurrentConversation() Expect(len(conversation)).To(Equal(10), fmt.Sprint(conversation)) - for _, r := range res { + for _, r := range res.State { reasons = append(reasons, r.Result) } Expect(reasons).ToNot(ContainElement(testActionResult), fmt.Sprint(res)) @@ -118,7 +120,7 @@ var _ = Describe("Agent test", func() { WithText("can you get the weather in boston?"))..., ) reasons := []string{} - for _, r := range res { + for _, r := range res.State { reasons = append(reasons, r.Result) } Expect(reasons).To(ContainElement(testActionResult), fmt.Sprint(res)) diff --git a/agent/jobs.go b/agent/jobs.go index 8de6772..9a168c3 100644 --- a/agent/jobs.go +++ b/agent/jobs.go @@ -105,9 +105,9 @@ func (j *JobResult) Finish(e error) { } // WaitResult waits for the result of a job -func (j *JobResult) WaitResult() []ActionState { +func (j *JobResult) WaitResult() *JobResult { <-j.ready j.Lock() defer j.Unlock() - return j.State + return j } diff --git a/agent/options.go b/agent/options.go index 4cc3584..10272e5 100644 --- a/agent/options.go +++ b/agent/options.go @@ -13,13 +13,13 @@ type llmOptions struct { } type options struct { - LLMAPI llmOptions - character Character - randomIdentityGuidance string - randomIdentity bool - actions Actions - enableHUD bool - context context.Context + LLMAPI llmOptions + character Character + randomIdentityGuidance string + randomIdentity bool + actions Actions + enableHUD, standaloneJob bool + context context.Context } func defaultOptions() *options { @@ -53,6 +53,13 @@ var EnableHUD = func(o *options) error { return nil } +// EnableStandaloneJob is an option to enable the agent +// to run jobs in the background automatically +var EnableStandaloneJob = func(o *options) error { + o.standaloneJob = true + return nil +} + func WithLLMAPIURL(url string) Option { return func(o *options) error { o.LLMAPI.APIURL = url From 9173156e4075d80bc25e75ac6df47cc58249796b Mon Sep 17 00:00:00 2001 From: Ettore Di Giacinto Date: Thu, 4 Apr 2024 00:19:56 +0200 Subject: [PATCH 029/399] Update state action --- action/state.go | 70 +++++++++++++++++++++ agent/actions.go | 30 +++++++-- agent/agent.go | 157 +++++++++++++++++++++++++++-------------------- agent/options.go | 12 +++- agent/state.go | 23 ++----- 5 files changed, 197 insertions(+), 95 deletions(-) create mode 100644 action/state.go diff --git a/action/state.go b/action/state.go new file mode 100644 index 0000000..649928f --- /dev/null +++ b/action/state.go @@ -0,0 +1,70 @@ +package action + +import ( + "github.com/sashabaranov/go-openai/jsonschema" +) + +const StateActionName = "update_state" + +func NewState() *StateAction { + return &StateAction{} +} + +type StateAction struct{} + +// State is the structure +// that is used to keep track of the current state +// and the Agent's short memory that it can update +// Besides a long term memory that is accessible by the agent (With vector database), +// And a context memory (that is always powered by a vector database), +// this memory is the shorter one that the LLM keeps across conversation and across its +// reasoning process's and life time. +// TODO: A special action is then used to let the LLM itself update its memory +// periodically during self-processing, and the same action is ALSO exposed +// during the conversation to let the user put for example, a new goal to the agent. +type StateResult struct { + NowDoing string `json:"doing_now"` + DoingNext string `json:"doing_next"` + DoneHistory []string `json:"done_history"` + Memories []string `json:"memories"` + Goal string `json:"goal"` +} + +func (a *StateAction) Run(ActionParams) (string, error) { + return "no-op", nil +} + +func (a *StateAction) Definition() ActionDefinition { + return ActionDefinition{ + Name: StateActionName, + Description: "update the agent state (short memory) with the current state of the conversation.", + Properties: map[string]jsonschema.Definition{ + "goal": { + Type: jsonschema.String, + Description: "The current goal of the agent.", + }, + "doing_next": { + Type: jsonschema.String, + Description: "The next action the agent will do.", + }, + "done_history": { + Type: jsonschema.Array, + Items: &jsonschema.Definition{ + Type: jsonschema.String, + }, + Description: "A list of actions that the agent has done.", + }, + "now_doing": { + Type: jsonschema.String, + Description: "The current action the agent is doing.", + }, + "memories": { + Type: jsonschema.Array, + Items: &jsonschema.Definition{ + Type: jsonschema.String, + }, + Description: "A list of memories to keep between conversations.", + }, + }, + } +} diff --git a/agent/actions.go b/agent/actions.go index 917b492..a6bda21 100644 --- a/agent/actions.go +++ b/agent/actions.go @@ -88,13 +88,23 @@ func (a *Agent) decision( func (a *Agent) generateParameters(ctx context.Context, action Action, conversation []openai.ChatCompletionMessage) (*decisionResult, error) { return a.decision(ctx, conversation, - a.options.actions.ToTools(), + a.systemActions().ToTools(), action.Definition().Name) } +func (a *Agent) systemActions() Actions { + if a.options.enableHUD { + return append(a.options.userActions, action.NewReply(), action.NewState()) + } + + return append(a.options.userActions, action.NewReply()) +} + func (a *Agent) prepareHUD() PromptHUD { return PromptHUD{ - Character: a.Character, + Character: a.Character, + CurrentState: *a.currentState, + PermanentGoal: a.options.permanentGoal, } } @@ -105,6 +115,14 @@ const hudTemplate = `You have a character and your replies and actions might be {{end}}{{if .Character.Hobbies}}Hobbies: {{.Character.Hobbies}} {{end}}{{if .Character.MusicTaste}}Music taste: {{.Character.MusicTaste}} {{end}} + +This is your current state: +{{if .CurrentState.NowDoing}}NowDoing: {{.CurrentState.NowDoing}} {{end}} +{{if .CurrentState.DoingNext}}DoingNext: {{.CurrentState.DoingNext}} {{end}} +{{if .PermanentGoal}}Your permanent goal is: {{.PermanentGoal}} {{end}} +{{if .CurrentState.Goal}}Your current goal is: {{.CurrentState.Goal}} {{end}} +You have done: {{range .CurrentState.DoneHistory}}{{.}} {{end}} +You have a short memory with: {{range .CurrentState.Memories}}{{.}} {{end}} ` // pickAction picks an action based on the conversation @@ -122,8 +140,8 @@ func (a *Agent) pickAction(ctx context.Context, templ string, messages []openai. return nil, "", err } // Get all the actions definitions - definitions := []action.ActionDefinition{action.NewReply().Definition()} - for _, m := range a.options.actions { + definitions := []action.ActionDefinition{} + for _, m := range a.systemActions() { definitions = append(definitions, m.Definition()) } @@ -148,7 +166,7 @@ func (a *Agent) pickAction(ctx context.Context, templ string, messages []openai. // Get all the available actions IDs actionsID := []string{} - for _, m := range a.options.actions { + for _, m := range a.systemActions() { actionsID = append(actionsID, m.Definition().Name.String()) } @@ -215,7 +233,7 @@ func (a *Agent) pickAction(ctx context.Context, templ string, messages []openai. } // Find the action - chosenAction := append(a.options.actions, action.NewReply()).Find(actionChoice.Tool) + chosenAction := a.systemActions().Find(actionChoice.Tool) if chosenAction == nil { return nil, "", fmt.Errorf("no action found for intent:" + actionChoice.Tool) } diff --git a/agent/agent.go b/agent/agent.go index 0293eb8..e6b8d70 100644 --- a/agent/agent.go +++ b/agent/agent.go @@ -47,15 +47,15 @@ const ( type Agent struct { sync.Mutex - options *options - Character Character - client *openai.Client - jobQueue chan *Job - actionContext *action.ActionContext - context *action.ActionContext - availableActions []Action + options *options + Character Character + client *openai.Client + jobQueue chan *Job + actionContext *action.ActionContext + context *action.ActionContext currentReasoning string + currentState *action.StateResult nextAction Action currentConversation []openai.ChatCompletionMessage } @@ -78,12 +78,12 @@ func New(opts ...Option) (*Agent, error) { ctx, cancel := context.WithCancel(c) a := &Agent{ - jobQueue: make(chan *Job), - options: options, - client: client, - Character: options.character, - context: action.NewContext(ctx, cancel), - availableActions: options.actions, + jobQueue: make(chan *Job), + options: options, + client: client, + Character: options.character, + currentState: &action.StateResult{}, + context: action.NewContext(ctx, cancel), } if a.options.randomIdentity { @@ -135,6 +135,30 @@ func (a *Agent) Stop() { a.context.Cancel() } +func (a *Agent) runAction(chosenAction Action, decisionResult *decisionResult) (result string, err error) { + for _, action := range a.systemActions() { + if action.Definition().Name == chosenAction.Definition().Name { + if result, err = action.Run(decisionResult.actionParams); err != nil { + return "", fmt.Errorf("error running action: %w", err) + } + } + } + + if chosenAction.Definition().Name.Is(action.StateActionName) { + // We need to store the result in the state + state := action.StateResult{} + + err = decisionResult.actionParams.Unmarshal(&result) + if err != nil { + return "", err + } + // update the current state with the one we just got from the action + a.currentState = &state + } + + return result, nil +} + func (a *Agent) consumeJob(job *Job, role string) { // Consume the job and generate a response a.Lock() @@ -175,9 +199,9 @@ func (a *Agent) consumeJob(job *Job, role string) { } } - if chosenAction == nil || chosenAction.Definition().Name.Is(action.ReplyActionName) { - job.Result.SetResult(ActionState{ActionCurrentState{nil, nil, "No action to do, just reply"}, ""}) - job.Result.Finish(nil) + if chosenAction == nil { + //job.Result.SetResult(ActionState{ActionCurrentState{nil, nil, "No action to do, just reply"}, ""}) + job.Result.Finish(fmt.Errorf("no action to do")) return } @@ -187,70 +211,68 @@ func (a *Agent) consumeJob(job *Job, role string) { return } + if params.actionParams == nil { + job.Result.Finish(fmt.Errorf("no parameters")) + return + } + if !job.Callback(ActionCurrentState{chosenAction, params.actionParams, reasoning}) { job.Result.SetResult(ActionState{ActionCurrentState{chosenAction, params.actionParams, reasoning}, "stopped by callback"}) job.Result.Finish(nil) return } - if params.actionParams == nil { - job.Result.Finish(fmt.Errorf("no parameters")) - return - } - - var result string - for _, action := range a.options.actions { - if action.Definition().Name == chosenAction.Definition().Name { - if result, err = action.Run(params.actionParams); err != nil { - job.Result.Finish(fmt.Errorf("error running action: %w", err)) - return - } + if !chosenAction.Definition().Name.Is(action.ReplyActionName) { + result, err := a.runAction(chosenAction, params) + if err != nil { + job.Result.Finish(fmt.Errorf("error running action: %w", err)) + return } - } - stateResult := ActionState{ActionCurrentState{chosenAction, params.actionParams, reasoning}, result} - job.Result.SetResult(stateResult) - job.CallbackWithResult(stateResult) + stateResult := ActionState{ActionCurrentState{chosenAction, params.actionParams, reasoning}, result} + job.Result.SetResult(stateResult) + job.CallbackWithResult(stateResult) - // calling the function - a.currentConversation = append(a.currentConversation, openai.ChatCompletionMessage{ - Role: "assistant", - FunctionCall: &openai.FunctionCall{ - Name: chosenAction.Definition().Name.String(), - Arguments: params.actionParams.String(), - }, - }) + // calling the function + a.currentConversation = append(a.currentConversation, openai.ChatCompletionMessage{ + Role: "assistant", + FunctionCall: &openai.FunctionCall{ + Name: chosenAction.Definition().Name.String(), + Arguments: params.actionParams.String(), + }, + }) - // result of calling the function - a.currentConversation = append(a.currentConversation, openai.ChatCompletionMessage{ - Role: openai.ChatMessageRoleTool, - Content: result, - Name: chosenAction.Definition().Name.String(), - ToolCallID: chosenAction.Definition().Name.String(), - }) + // result of calling the function + a.currentConversation = append(a.currentConversation, openai.ChatCompletionMessage{ + Role: openai.ChatMessageRoleTool, + Content: result, + Name: chosenAction.Definition().Name.String(), + ToolCallID: chosenAction.Definition().Name.String(), + }) - //a.currentConversation = append(a.currentConversation, messages...) - //a.currentConversation = messages + //a.currentConversation = append(a.currentConversation, messages...) + //a.currentConversation = messages - // given the result, we can now ask OpenAI to complete the conversation or - // to continue using another tool given the result - followingAction, reasoning, err := a.pickAction(ctx, reEvalTemplate, a.currentConversation) - if err != nil { - job.Result.Finish(fmt.Errorf("error picking action: %w", err)) - return - } + // given the result, we can now ask OpenAI to complete the conversation or + // to continue using another tool given the result + followingAction, reasoning, err := a.pickAction(ctx, reEvalTemplate, a.currentConversation) + if err != nil { + job.Result.Finish(fmt.Errorf("error picking action: %w", err)) + return + } - if followingAction != nil && - !followingAction.Definition().Name.Is(action.ReplyActionName) && - !chosenAction.Definition().Name.Is(action.ReplyActionName) { - // We need to do another action (?) - // The agent decided to do another action - // call ourselves again - a.currentReasoning = reasoning - a.nextAction = followingAction - job.Text = "" - a.consumeJob(job, role) - return + if followingAction != nil && + !followingAction.Definition().Name.Is(action.ReplyActionName) && + !chosenAction.Definition().Name.Is(action.ReplyActionName) { + // We need to do another action (?) + // The agent decided to do another action + // call ourselves again + a.currentReasoning = reasoning + a.nextAction = followingAction + job.Text = "" + a.consumeJob(job, role) + return + } } // Generate a human-readable response @@ -335,7 +357,6 @@ func (a *Agent) Run() error { for { select { case job := <-a.jobQueue: - // Consume the job and generate a response // TODO: Give a short-term memory to the agent a.consumeJob(job, UserRole) diff --git a/agent/options.go b/agent/options.go index 10272e5..baef145 100644 --- a/agent/options.go +++ b/agent/options.go @@ -17,9 +17,10 @@ type options struct { character Character randomIdentityGuidance string randomIdentity bool - actions Actions + userActions Actions enableHUD, standaloneJob bool context context.Context + permanentGoal string } func defaultOptions() *options { @@ -74,6 +75,13 @@ func WithLLMAPIKey(key string) Option { } } +func WithPermanentGoal(goal string) Option { + return func(o *options) error { + o.permanentGoal = goal + return nil + } +} + func WithContext(ctx context.Context) Option { return func(o *options) error { o.context = ctx @@ -116,7 +124,7 @@ func WithRandomIdentity(guidance ...string) Option { func WithActions(actions ...Action) Option { return func(o *options) error { - o.actions = actions + o.userActions = actions return nil } } diff --git a/agent/state.go b/agent/state.go index ad0b7e9..e3f740d 100644 --- a/agent/state.go +++ b/agent/state.go @@ -5,6 +5,7 @@ import ( "fmt" "os" + "github.com/mudler/local-agent-framework/action" "github.com/mudler/local-agent-framework/llm" ) @@ -12,25 +13,9 @@ import ( // all information that should be displayed to the LLM // in the prompts type PromptHUD struct { - Character Character `json:"character"` - CurrentState State `json:"current_state"` -} - -// State is the structure -// that is used to keep track of the current state -// and the Agent's short memory that it can update -// Besides a long term memory that is accessible by the agent (With vector database), -// And a context memory (that is always powered by a vector database), -// this memory is the shorter one that the LLM keeps across conversation and across its -// reasoning process's and life time. -// TODO: A special action is then used to let the LLM itself update its memory -// periodically during self-processing, and the same action is ALSO exposed -// during the conversation to let the user put for example, a new goal to the agent. -type State struct { - NowDoing string `json:"doing_now"` - DoingNext string `json:"doing_next"` - DoneHistory []string `json:"done_history"` - Memories []string `json:"memories"` + Character Character `json:"character"` + CurrentState action.StateResult `json:"current_state"` + PermanentGoal string `json:"permanent_goal"` } type Character struct { From b4fd482f66e4ae8d3c1adbd7fb67b71234795631 Mon Sep 17 00:00:00 2001 From: mudler Date: Thu, 4 Apr 2024 16:58:25 +0200 Subject: [PATCH 030/399] fix state update, save/load --- action/definition.go | 2 +- action/state.go | 24 ++++++++++++++++++++- agent/actions.go | 19 +++++++++-------- agent/agent.go | 49 ++++++++++++++++++++++++++++++++++++++++--- agent/agent_test.go | 22 +++++++++++++++++++ agent/options.go | 8 +++++++ agent/state.go | 50 ++++++++++++++++++++++++++++++++++++-------- 7 files changed, 151 insertions(+), 23 deletions(-) diff --git a/action/definition.go b/action/definition.go index c4b1414..d4cb742 100644 --- a/action/definition.go +++ b/action/definition.go @@ -24,7 +24,7 @@ func NewContext(ctx context.Context, cancel context.CancelFunc) *ActionContext { } } -type ActionParams map[string]string +type ActionParams map[string]interface{} func (ap ActionParams) Read(s string) error { err := json.Unmarshal([]byte(s), &ap) diff --git a/action/state.go b/action/state.go index 649928f..9deb194 100644 --- a/action/state.go +++ b/action/state.go @@ -1,6 +1,8 @@ package action import ( + "fmt" + "github.com/sashabaranov/go-openai/jsonschema" ) @@ -31,7 +33,7 @@ type StateResult struct { } func (a *StateAction) Run(ActionParams) (string, error) { - return "no-op", nil + return "internal state has been updated", nil } func (a *StateAction) Definition() ActionDefinition { @@ -68,3 +70,23 @@ func (a *StateAction) Definition() ActionDefinition { }, } } + +const fmtT = `===================== +NowDoing: %s +DoingNext: %s +Your current goal is: %s +You have done: %+v +You have a short memory with: %+v +===================== +` + +func (c StateResult) String() string { + return fmt.Sprintf( + fmtT, + c.NowDoing, + c.DoingNext, + c.Goal, + c.DoneHistory, + c.Memories, + ) +} diff --git a/agent/actions.go b/agent/actions.go index a6bda21..65aa40e 100644 --- a/agent/actions.go +++ b/agent/actions.go @@ -117,13 +117,12 @@ const hudTemplate = `You have a character and your replies and actions might be {{end}} This is your current state: -{{if .CurrentState.NowDoing}}NowDoing: {{.CurrentState.NowDoing}} {{end}} -{{if .CurrentState.DoingNext}}DoingNext: {{.CurrentState.DoingNext}} {{end}} -{{if .PermanentGoal}}Your permanent goal is: {{.PermanentGoal}} {{end}} -{{if .CurrentState.Goal}}Your current goal is: {{.CurrentState.Goal}} {{end}} +NowDoing: {{if .CurrentState.NowDoing}}{{.CurrentState.NowDoing}}{{else}}Nothing{{end}} +DoingNext: {{if .CurrentState.DoingNext}}{{.CurrentState.DoingNext}}{{else}}Nothing{{end}} +Your permanent goal is: {{if .PermanentGoal}}{{.PermanentGoal}}{{else}}Nothing{{end}} +Your current goal is: {{if .CurrentState.Goal}}{{.CurrentState.Goal}}{{else}}Nothing{{end}} You have done: {{range .CurrentState.DoneHistory}}{{.}} {{end}} -You have a short memory with: {{range .CurrentState.Memories}}{{.}} {{end}} -` +You have a short memory with: {{range .CurrentState.Memories}}{{.}} {{end}}` // pickAction picks an action based on the conversation func (a *Agent) pickAction(ctx context.Context, templ string, messages []openai.ChatCompletionMessage) (Action, string, error) { @@ -160,9 +159,11 @@ func (a *Agent) pickAction(ctx context.Context, templ string, messages []openai. if err != nil { return nil, "", err } - //fmt.Println("=== HUD START ===", hud.String(), "=== HUD END ===") - //fmt.Println("=== PROMPT START ===", prompt.String(), "=== PROMPT END ===") + if a.options.debugMode { + fmt.Println("=== HUD START ===", hud.String(), "=== HUD END ===") + fmt.Println("=== PROMPT START ===", prompt.String(), "=== PROMPT END ===") + } // Get all the available actions IDs actionsID := []string{} @@ -214,7 +215,7 @@ func (a *Agent) pickAction(ctx context.Context, templ string, messages []openai. Actions{intentionsTools}.ToTools(), intentionsTools.Definition().Name) if err != nil { - return nil, "", err + return nil, "", fmt.Errorf("failed to get the action tool parameters: %v", err) } actionChoice := action.IntentResponse{} diff --git a/agent/agent.go b/agent/agent.go index e6b8d70..c551163 100644 --- a/agent/agent.go +++ b/agent/agent.go @@ -3,6 +3,7 @@ package agent import ( "context" "fmt" + "os" "strings" "sync" "time" @@ -92,6 +93,35 @@ func New(opts ...Option) (*Agent, error) { } } + if a.options.statefile != "" { + if _, err := os.Stat(a.options.statefile); err == nil { + if err = a.LoadState(a.options.statefile); err != nil { + return a, fmt.Errorf("failed to load state: %v", err) + } + } + } + + if a.options.characterfile != "" { + if _, err := os.Stat(a.options.characterfile); err == nil { + // if there is a file, load the character back + if err = a.LoadCharacter(a.options.characterfile); err != nil { + return a, fmt.Errorf("failed to load character: %v", err) + } + } else { + // otherwise save it for next time + if err = a.SaveCharacter(a.options.characterfile); err != nil { + return a, fmt.Errorf("failed to save character: %v", err) + } + } + } + + if a.options.debugMode { + fmt.Println("=== Agent in Debug mode ===") + fmt.Println(a.Character.String()) + fmt.Println(a.State().String()) + fmt.Println("Permanent goal: ", a.options.permanentGoal) + } + return a, nil } @@ -144,16 +174,28 @@ func (a *Agent) runAction(chosenAction Action, decisionResult *decisionResult) ( } } + if a.options.debugMode { + fmt.Println("Action", chosenAction.Definition().Name) + fmt.Println("Result", result) + } + if chosenAction.Definition().Name.Is(action.StateActionName) { // We need to store the result in the state state := action.StateResult{} - err = decisionResult.actionParams.Unmarshal(&result) + err = decisionResult.actionParams.Unmarshal(&state) if err != nil { - return "", err + return "", fmt.Errorf("error unmarshalling state of the agent: %w", err) } // update the current state with the one we just got from the action a.currentState = &state + + // update the state file + if a.options.statefile != "" { + if err := a.SaveState(a.options.statefile); err != nil { + return "", err + } + } } return result, nil @@ -207,7 +249,7 @@ func (a *Agent) consumeJob(job *Job, role string) { params, err := a.generateParameters(ctx, chosenAction, a.currentConversation) if err != nil { - job.Result.Finish(err) + job.Result.Finish(fmt.Errorf("error generating action's parameters: %w", err)) return } @@ -222,6 +264,7 @@ func (a *Agent) consumeJob(job *Job, role string) { return } + // If we don't have to reply , run the action! if !chosenAction.Definition().Name.Is(action.ReplyActionName) { result, err := a.runAction(chosenAction, params) if err != nil { diff --git a/agent/agent_test.go b/agent/agent_test.go index 3861ce3..b532109 100644 --- a/agent/agent_test.go +++ b/agent/agent_test.go @@ -125,5 +125,27 @@ var _ = Describe("Agent test", func() { } Expect(reasons).To(ContainElement(testActionResult), fmt.Sprint(res)) }) + + It("updates the state with internal actions", func() { + agent, err := New( + WithLLMAPIURL(apiModel), + WithModel(testModel), + EnableHUD, + DebugMode, + // EnableStandaloneJob, + WithRandomIdentity(), + WithPermanentGoal("I want to learn to play music"), + ) + Expect(err).ToNot(HaveOccurred()) + go agent.Run() + defer agent.Stop() + + result := agent.Ask( + WithText("Update your goals such as you want to learn to play the guitar"), + ) + fmt.Printf("%+v\n", result) + Expect(result.Error).ToNot(HaveOccurred()) + Expect(agent.State().Goal).To(ContainSubstring("guitar"), fmt.Sprint(agent.State())) + }) }) }) diff --git a/agent/options.go b/agent/options.go index baef145..c9c6e42 100644 --- a/agent/options.go +++ b/agent/options.go @@ -19,6 +19,9 @@ type options struct { randomIdentity bool userActions Actions enableHUD, standaloneJob bool + debugMode bool + characterfile string + statefile string context context.Context permanentGoal string } @@ -54,6 +57,11 @@ var EnableHUD = func(o *options) error { return nil } +var DebugMode = func(o *options) error { + o.debugMode = true + return nil +} + // EnableStandaloneJob is an option to enable the agent // to run jobs in the background automatically var EnableStandaloneJob = func(o *options) error { diff --git a/agent/state.go b/agent/state.go index e3f740d..c165f92 100644 --- a/agent/state.go +++ b/agent/state.go @@ -4,6 +4,7 @@ import ( "encoding/json" "fmt" "os" + "path/filepath" "github.com/mudler/local-agent-framework/action" "github.com/mudler/local-agent-framework/llm" @@ -40,8 +41,39 @@ func Load(path string) (*Character, error) { return &c, nil } -func (a *Agent) Save(path string) error { - data, err := json.Marshal(a.options.character) +func (a *Agent) State() action.StateResult { + return *a.currentState +} + +func (a *Agent) LoadState(path string) error { + data, err := os.ReadFile(path) + if err != nil { + return err + } + return json.Unmarshal(data, a.currentState) +} + +func (a *Agent) LoadCharacter(path string) error { + data, err := os.ReadFile(path) + if err != nil { + return err + } + return json.Unmarshal(data, &a.Character) +} + +func (a *Agent) SaveState(path string) error { + os.MkdirAll(filepath.Dir(path), 0755) + data, err := json.Marshal(a.currentState) + if err != nil { + return err + } + os.WriteFile(path, data, 0644) + return nil +} + +func (a *Agent) SaveCharacter(path string) error { + os.MkdirAll(filepath.Dir(path), 0755) + data, err := json.Marshal(a.Character) if err != nil { return err } @@ -59,7 +91,7 @@ func (a *Agent) generateIdentity(guidance string) error { } if !a.validCharacter() { - return fmt.Errorf("generated character is not valid ( guidance: %s ): %v", guidance, a.String()) + return fmt.Errorf("generated character is not valid ( guidance: %s ): %v", guidance, a.Character.String()) } return nil } @@ -80,13 +112,13 @@ Hobbies: %v Music taste: %v =====================` -func (a *Agent) String() string { +func (c *Character) String() string { return fmt.Sprintf( fmtT, - a.Character.Name, - a.Character.Age, - a.Character.Occupation, - a.Character.Hobbies, - a.Character.MusicTaste, + c.Name, + c.Age, + c.Occupation, + c.Hobbies, + c.MusicTaste, ) } From 79e5dffe093ee94d52b03284eb4594decf226392 Mon Sep 17 00:00:00 2001 From: mudler Date: Thu, 4 Apr 2024 20:00:58 +0200 Subject: [PATCH 031/399] wip --- agent/actions.go | 103 ++++++++++++++++++++++---------------------- agent/agent.go | 99 +++++++++++++++++++----------------------- agent/agent_test.go | 27 ++++++++++++ agent/templates.go | 65 ++++++++++++++++++++++++++++ 4 files changed, 187 insertions(+), 107 deletions(-) create mode 100644 agent/templates.go diff --git a/agent/actions.go b/agent/actions.go index 65aa40e..3d170ef 100644 --- a/agent/actions.go +++ b/agent/actions.go @@ -85,19 +85,28 @@ func (a *Agent) decision( return &decisionResult{actionParams: params}, nil } -func (a *Agent) generateParameters(ctx context.Context, action Action, conversation []openai.ChatCompletionMessage) (*decisionResult, error) { +func (a *Agent) generateParameters(ctx context.Context, pickTemplate string, act Action, c []openai.ChatCompletionMessage, reasoning string) (*decisionResult, error) { + conversation, _, _, err := a.prepareConversationParse(pickTemplate, c, false, reasoning) + if err != nil { + return nil, err + } + return a.decision(ctx, conversation, a.systemActions().ToTools(), - action.Definition().Name) + act.Definition().Name) +} + +func (a *Agent) systemInternalActions() Actions { + if a.options.enableHUD { + return append(a.options.userActions, action.NewState()) + } + + return append(a.options.userActions) } func (a *Agent) systemActions() Actions { - if a.options.enableHUD { - return append(a.options.userActions, action.NewReply(), action.NewState()) - } - - return append(a.options.userActions, action.NewReply()) + return append(a.systemInternalActions(), action.NewReply()) } func (a *Agent) prepareHUD() PromptHUD { @@ -108,83 +117,73 @@ func (a *Agent) prepareHUD() PromptHUD { } } -const hudTemplate = `You have a character and your replies and actions might be influenced by it. -{{if .Character.Name}}Name: {{.Character.Name}} -{{end}}{{if .Character.Age}}Age: {{.Character.Age}} -{{end}}{{if .Character.Occupation}}Occupation: {{.Character.Occupation}} -{{end}}{{if .Character.Hobbies}}Hobbies: {{.Character.Hobbies}} -{{end}}{{if .Character.MusicTaste}}Music taste: {{.Character.MusicTaste}} -{{end}} - -This is your current state: -NowDoing: {{if .CurrentState.NowDoing}}{{.CurrentState.NowDoing}}{{else}}Nothing{{end}} -DoingNext: {{if .CurrentState.DoingNext}}{{.CurrentState.DoingNext}}{{else}}Nothing{{end}} -Your permanent goal is: {{if .PermanentGoal}}{{.PermanentGoal}}{{else}}Nothing{{end}} -Your current goal is: {{if .CurrentState.Goal}}{{.CurrentState.Goal}}{{else}}Nothing{{end}} -You have done: {{range .CurrentState.DoneHistory}}{{.}} {{end}} -You have a short memory with: {{range .CurrentState.Memories}}{{.}} {{end}}` - -// pickAction picks an action based on the conversation -func (a *Agent) pickAction(ctx context.Context, templ string, messages []openai.ChatCompletionMessage) (Action, string, error) { +func (a *Agent) prepareConversationParse(templ string, messages []openai.ChatCompletionMessage, canReply bool, reasoning string) ([]openai.ChatCompletionMessage, Actions, []string, error) { // prepare the prompt prompt := bytes.NewBuffer([]byte{}) - hud := bytes.NewBuffer([]byte{}) promptTemplate, err := template.New("pickAction").Parse(templ) if err != nil { - return nil, "", err + return nil, []Action{}, nil, err } - hudTmpl, err := template.New("HUD").Parse(hudTemplate) - if err != nil { - return nil, "", err + + actions := a.systemActions() + if !canReply { + actions = a.systemInternalActions() } + // Get all the actions definitions definitions := []action.ActionDefinition{} - for _, m := range a.systemActions() { + for _, m := range actions { definitions = append(definitions, m.Definition()) } - err = promptTemplate.Execute(prompt, struct { - Actions []action.ActionDefinition - Messages []openai.ChatCompletionMessage - }{ - Actions: definitions, - Messages: messages, - }) - if err != nil { - return nil, "", err + var promptHUD *PromptHUD + if a.options.enableHUD { + h := a.prepareHUD() + promptHUD = &h } - err = hudTmpl.Execute(hud, a.prepareHUD()) + err = promptTemplate.Execute(prompt, struct { + HUD *PromptHUD + Actions []action.ActionDefinition + Reasoning string + Messages []openai.ChatCompletionMessage + }{ + Actions: definitions, + Reasoning: reasoning, + Messages: messages, + HUD: promptHUD, + }) if err != nil { - return nil, "", err + return nil, []Action{}, nil, err } if a.options.debugMode { - fmt.Println("=== HUD START ===", hud.String(), "=== HUD END ===") fmt.Println("=== PROMPT START ===", prompt.String(), "=== PROMPT END ===") } // Get all the available actions IDs actionsID := []string{} - for _, m := range a.systemActions() { + for _, m := range actions { actionsID = append(actionsID, m.Definition().Name.String()) } conversation := []openai.ChatCompletionMessage{} - if a.options.enableHUD { - conversation = append(conversation, openai.ChatCompletionMessage{ - Role: "system", - Content: hud.String(), - }) - } - conversation = append(conversation, openai.ChatCompletionMessage{ Role: "user", Content: prompt.String(), }) + return conversation, actions, actionsID, nil +} + +// pickAction picks an action based on the conversation +func (a *Agent) pickAction(ctx context.Context, templ string, messages []openai.ChatCompletionMessage, canReply bool) (Action, string, error) { + conversation, actions, actionsID, err := a.prepareConversationParse(templ, messages, canReply, "") + if err != nil { + return nil, "", err + } // Get the LLM to think on what to do thought, err := a.decision(ctx, conversation, @@ -234,7 +233,7 @@ func (a *Agent) pickAction(ctx context.Context, templ string, messages []openai. } // Find the action - chosenAction := a.systemActions().Find(actionChoice.Tool) + chosenAction := actions.Find(actionChoice.Tool) if chosenAction == nil { return nil, "", fmt.Errorf("no action found for intent:" + actionChoice.Tool) } diff --git a/agent/agent.go b/agent/agent.go index c551163..5a72715 100644 --- a/agent/agent.go +++ b/agent/agent.go @@ -4,7 +4,6 @@ import ( "context" "fmt" "os" - "strings" "sync" "time" @@ -13,33 +12,6 @@ import ( "github.com/sashabaranov/go-openai" ) -const pickActionTemplate = `You can take any of the following tools: - -{{range .Actions -}} -- {{.Name}}: {{.Description }} -{{ end }} -To answer back to the user, use the "reply" tool. -Given the text below, decide which action to take and explain the detailed reasoning behind it. For answering without picking a choice, reply with 'none'. - -{{range .Messages -}} -{{.Role}}{{if .FunctionCall}}(tool_call){{.FunctionCall}}{{end}}: {{if .FunctionCall}}{{.FunctionCall}}{{else if .ToolCalls -}}{{range .ToolCalls -}}{{.Name}} called with {{.Arguments}}{{end}}{{ else }}{{.Content -}}{{end}} -{{end}} -` - -const reEvalTemplate = `You can take any of the following tools: - -{{range .Actions -}} -- {{.Name}}: {{.Description }} -{{ end }} -To answer back to the user, use the "reply" tool. -Given the text below, decide which action to take and explain the detailed reasoning behind it. For answering without picking a choice, reply with 'none'. - -{{range .Messages -}} -{{.Role}}{{if .FunctionCall}}(tool_call){{.FunctionCall}}{{end}}: {{if .FunctionCall}}{{.FunctionCall}}{{else if .ToolCalls -}}{{range .ToolCalls -}}{{.Name}} called with {{.Arguments}}{{end}}{{ else }}{{.Content -}}{{end}} -{{end}} - -We already have called tools. Evaluate the current situation and decide if we need to execute other tools or answer back with a result.` - const ( UserRole = "user" AssistantRole = "assistant" @@ -202,6 +174,7 @@ func (a *Agent) runAction(chosenAction Action, decisionResult *decisionResult) ( } func (a *Agent) consumeJob(job *Job, role string) { + selfEvaluation := role == SystemRole // Consume the job and generate a response a.Lock() // Set the action context @@ -221,6 +194,17 @@ func (a *Agent) consumeJob(job *Job, role string) { }) } + var pickTemplate string + var reEvaluationTemplate string + + if selfEvaluation { + pickTemplate = pickSelfTemplate + reEvaluationTemplate = reSelfEvalTemplate + } else { + pickTemplate = pickActionTemplate + reEvaluationTemplate = reEvalTemplate + } + // choose an action first var chosenAction Action var reasoning string @@ -234,7 +218,7 @@ func (a *Agent) consumeJob(job *Job, role string) { a.nextAction = nil } else { var err error - chosenAction, reasoning, err = a.pickAction(ctx, pickActionTemplate, a.currentConversation) + chosenAction, reasoning, err = a.pickAction(ctx, pickTemplate, a.currentConversation, true) if err != nil { job.Result.Finish(err) return @@ -247,7 +231,7 @@ func (a *Agent) consumeJob(job *Job, role string) { return } - params, err := a.generateParameters(ctx, chosenAction, a.currentConversation) + params, err := a.generateParameters(ctx, pickTemplate, chosenAction, a.currentConversation, reasoning) if err != nil { job.Result.Finish(fmt.Errorf("error generating action's parameters: %w", err)) return @@ -298,7 +282,7 @@ func (a *Agent) consumeJob(job *Job, role string) { // given the result, we can now ask OpenAI to complete the conversation or // to continue using another tool given the result - followingAction, reasoning, err := a.pickAction(ctx, reEvalTemplate, a.currentConversation) + followingAction, reasoning, err := a.pickAction(ctx, reEvaluationTemplate, a.currentConversation, !selfEvaluation) if err != nil { job.Result.Finish(fmt.Errorf("error picking action: %w", err)) return @@ -344,43 +328,48 @@ func (a *Agent) consumeJob(job *Job, role string) { } func (a *Agent) periodicallyRun() { - // Here the LLM could decide to store some part of the conversation too in the memory - evaluateMemory := NewJob( - WithText( - `Evaluate the current conversation and decide if we need to store some relevant informations from it`, - )) - a.consumeJob(evaluateMemory, SystemRole) + if len(a.CurrentConversation()) != 0 { + // Here the LLM could decide to store some part of the conversation too in the memory + evaluateMemory := NewJob( + WithText( + `Evaluate the current conversation and decide if we need to store some relevant informations from it`, + )) + a.consumeJob(evaluateMemory, SystemRole) - a.ResetConversation() + a.ResetConversation() + } // Here we go in a loop of // - asking the agent to do something // - evaluating the result // - asking the agent to do something else based on the result - whatNext := NewJob(WithText("What should I do next?")) + // whatNext := NewJob(WithText("Decide what to do based on the state")) + whatNext := NewJob(WithText("Decide what to based on the goal and the persistent goal.")) a.consumeJob(whatNext, SystemRole) - doWork := NewJob(WithText("Try to fullfill our goals automatically")) - a.consumeJob(doWork, SystemRole) + // a.ResetConversation() - results := []string{} - for _, v := range doWork.Result.State { - results = append(results, v.Result) - } + // doWork := NewJob(WithText("Select the tool to use based on your goal and the current state.")) + // a.consumeJob(doWork, SystemRole) - a.ResetConversation() + // results := []string{} + // for _, v := range doWork.Result.State { + // results = append(results, v.Result) + // } - // Here the LLM could decide to do something based on the result of our automatic action - evaluateAction := NewJob( - WithText( - `Evaluate the current situation and decide if we need to execute other tools (for instance to store results into permanent, or short memory). - We have done the following actions: - ` + strings.Join(results, "\n"), - )) - a.consumeJob(evaluateAction, SystemRole) + // a.ResetConversation() - a.ResetConversation() + // // Here the LLM could decide to do something based on the result of our automatic action + // evaluateAction := NewJob( + // WithText( + // `Evaluate the current situation and decide if we need to execute other tools (for instance to store results into permanent, or short memory). + // We have done the following actions: + // ` + strings.Join(results, "\n"), + // )) + // a.consumeJob(evaluateAction, SystemRole) + + // a.ResetConversation() } func (a *Agent) Run() error { diff --git a/agent/agent_test.go b/agent/agent_test.go index b532109..bc41ff3 100644 --- a/agent/agent_test.go +++ b/agent/agent_test.go @@ -147,5 +147,32 @@ var _ = Describe("Agent test", func() { Expect(result.Error).ToNot(HaveOccurred()) Expect(agent.State().Goal).To(ContainSubstring("guitar"), fmt.Sprint(agent.State())) }) + + FIt("it automatically performs things in the background", func() { + agent, err := New( + WithLLMAPIURL(apiModel), + WithModel(testModel), + EnableHUD, + DebugMode, + EnableStandaloneJob, + WithRandomIdentity(), + WithPermanentGoal("get the weather of all the cities in italy"), + ) + Expect(err).ToNot(HaveOccurred()) + go agent.Run() + defer agent.Stop() + + Eventually(func() string { + fmt.Println(agent.State()) + return agent.State().NowDoing + }, "4m", "10s").Should(ContainSubstring("weather"), fmt.Sprint(agent.State())) + + // result := agent.Ask( + // WithText("Update your goals such as you want to learn to play the guitar"), + // ) + // fmt.Printf("%+v\n", result) + // Expect(result.Error).ToNot(HaveOccurred()) + // Expect(agent.State().Goal).To(ContainSubstring("guitar"), fmt.Sprint(agent.State())) + }) }) }) diff --git a/agent/templates.go b/agent/templates.go new file mode 100644 index 0000000..977fc34 --- /dev/null +++ b/agent/templates.go @@ -0,0 +1,65 @@ +package agent + +const hud = `{{with .HUD }}You have a character and your replies and actions might be influenced by it. +{{if .Character.Name}}Name: {{.Character.Name}} +{{end}}{{if .Character.Age}}Age: {{.Character.Age}} +{{end}}{{if .Character.Occupation}}Occupation: {{.Character.Occupation}} +{{end}}{{if .Character.Hobbies}}Hobbies: {{.Character.Hobbies}} +{{end}}{{if .Character.MusicTaste}}Music taste: {{.Character.MusicTaste}} +{{end}} + +This is your current state: +NowDoing: {{if .CurrentState.NowDoing}}{{.CurrentState.NowDoing}}{{else}}Nothing{{end}} +DoingNext: {{if .CurrentState.DoingNext}}{{.CurrentState.DoingNext}}{{else}}Nothing{{end}} +Your permanent goal is: {{if .PermanentGoal}}{{.PermanentGoal}}{{else}}Nothing{{end}} +Your current goal is: {{if .CurrentState.Goal}}{{.CurrentState.Goal}}{{else}}Nothing{{end}} +You have done: {{range .CurrentState.DoneHistory}}{{.}} {{end}} +You have a short memory with: {{range .CurrentState.Memories}}{{.}} {{end}}{{end}}` + +const pickSelfTemplate = ` +You can take any of the following tools: + +{{range .Actions -}} +- {{.Name}}: {{.Description }} +{{ end }} + +{{if .Messages}} +Consider the text below, decide which action to take and explain the detailed reasoning behind it. + +{{range .Messages -}} +{{.Role}}{{if .FunctionCall}}(tool_call){{.FunctionCall}}{{end}}: {{if .FunctionCall}}{{.FunctionCall}}{{else if .ToolCalls -}}{{range .ToolCalls -}}{{.Name}} called with {{.Arguments}}{{end}}{{ else }}{{.Content -}}{{end}} +{{end}} +{{end}} + +Act like a smart AI agent having a character, the character and your state is defined in the message above. +You are now self-evaluating what to do next based on the state in the previous message. +For example, if the permanent goal is to "make a sandwich", you might want to "get the bread" first, and update the state afterwards by calling two tools in sequence. +You can update the short-term goal, the current action, the next action, the history of actions, and the memories. +You can't ask things to the user as you are thinking by yourself. + +{{if .Reasoning}}Reasoning: {{.Reasoning}}{{end}} +` + hud + +const reSelfEvalTemplate = pickSelfTemplate + ` + +We already have called other tools. Evaluate the current situation and decide if we need to execute other tools.` + +const pickActionTemplate = hud + ` +You can take any of the following tools: + +{{range .Actions -}} +- {{.Name}}: {{.Description }} +{{ end }} +To answer back to the user, use the "reply" tool. +Given the text below, decide which action to take and explain the detailed reasoning behind it. For answering without picking a choice, reply with 'none'. + +{{range .Messages -}} +{{.Role}}{{if .FunctionCall}}(tool_call){{.FunctionCall}}{{end}}: {{if .FunctionCall}}{{.FunctionCall}}{{else if .ToolCalls -}}{{range .ToolCalls -}}{{.Name}} called with {{.Arguments}}{{end}}{{ else }}{{.Content -}}{{end}} +{{end}} + +{{if .Reasoning}}Reasoning: {{.Reasoning}}{{end}} +` + +const reEvalTemplate = pickActionTemplate + ` + +We already have called other tools. Evaluate the current situation and decide if we need to execute other tools or answer back with a result.` From 98c53e042d718f558cabe6ec2bda3eca85193279 Mon Sep 17 00:00:00 2001 From: mudler Date: Thu, 4 Apr 2024 20:14:04 +0200 Subject: [PATCH 032/399] minor --- agent/actions.go | 2 ++ agent/agent_test.go | 20 ++++++++++++++++++++ agent/templates.go | 4 ++-- 3 files changed, 24 insertions(+), 2 deletions(-) diff --git a/agent/actions.go b/agent/actions.go index 3d170ef..3dbd0d5 100644 --- a/agent/actions.go +++ b/agent/actions.go @@ -86,6 +86,8 @@ func (a *Agent) decision( } func (a *Agent) generateParameters(ctx context.Context, pickTemplate string, act Action, c []openai.ChatCompletionMessage, reasoning string) (*decisionResult, error) { + + // XXX: compressing conversation for generating parameters.. sucks! conversation, _, _, err := a.prepareConversationParse(pickTemplate, c, false, reasoning) if err != nil { return nil, err diff --git a/agent/agent_test.go b/agent/agent_test.go index bc41ff3..f86d3d6 100644 --- a/agent/agent_test.go +++ b/agent/agent_test.go @@ -63,6 +63,25 @@ func (a *TestAction) Definition() action.ActionDefinition { } } +type FakeInternetAction struct { + TestAction +} + +func (a *FakeInternetAction) Definition() action.ActionDefinition { + return action.ActionDefinition{ + Name: "search_internet", + Description: "search on internet", + Properties: map[string]jsonschema.Definition{ + "term": { + Type: jsonschema.String, + Description: "What to search for", + }, + }, + + Required: []string{"term"}, + } +} + var _ = Describe("Agent test", func() { Context("jobs", func() { It("pick the correct action", func() { @@ -155,6 +174,7 @@ var _ = Describe("Agent test", func() { EnableHUD, DebugMode, EnableStandaloneJob, + WithActions(&FakeInternetAction{TestAction{response: []string{"Roma, Venice, Milan"}}}), WithRandomIdentity(), WithPermanentGoal("get the weather of all the cities in italy"), ) diff --git a/agent/templates.go b/agent/templates.go index 977fc34..31d1f10 100644 --- a/agent/templates.go +++ b/agent/templates.go @@ -31,11 +31,11 @@ Consider the text below, decide which action to take and explain the detailed re {{end}} {{end}} -Act like a smart AI agent having a character, the character and your state is defined in the message above. +Act like as a fully autonomous smart AI agent having a character, the character and your state is defined in the message above. You are now self-evaluating what to do next based on the state in the previous message. For example, if the permanent goal is to "make a sandwich", you might want to "get the bread" first, and update the state afterwards by calling two tools in sequence. You can update the short-term goal, the current action, the next action, the history of actions, and the memories. -You can't ask things to the user as you are thinking by yourself. +You can't ask things to the user as you are thinking by yourself. You are autonomous. {{if .Reasoning}}Reasoning: {{.Reasoning}}{{end}} ` + hud From 5c58072ad77a3c5818b4e10415b6a3c9535bc2d5 Mon Sep 17 00:00:00 2001 From: mudler Date: Thu, 4 Apr 2024 20:25:02 +0200 Subject: [PATCH 033/399] Avoid compression --- agent/actions.go | 54 ++++++++++++++++++++++++++++++++++++++++++++-- agent/templates.go | 6 +++--- 2 files changed, 55 insertions(+), 5 deletions(-) diff --git a/agent/actions.go b/agent/actions.go index 3dbd0d5..d433423 100644 --- a/agent/actions.go +++ b/agent/actions.go @@ -87,12 +87,62 @@ func (a *Agent) decision( func (a *Agent) generateParameters(ctx context.Context, pickTemplate string, act Action, c []openai.ChatCompletionMessage, reasoning string) (*decisionResult, error) { - // XXX: compressing conversation for generating parameters.. sucks! - conversation, _, _, err := a.prepareConversationParse(pickTemplate, c, false, reasoning) + // prepare the prompt + stateHUD := bytes.NewBuffer([]byte{}) + + promptTemplate, err := template.New("pickAction").Parse(hudTemplate) if err != nil { return nil, err } + actions := a.systemInternalActions() + + // Get all the actions definitions + definitions := []action.ActionDefinition{} + for _, m := range actions { + definitions = append(definitions, m.Definition()) + } + + var promptHUD *PromptHUD + if a.options.enableHUD { + h := a.prepareHUD() + promptHUD = &h + } + + err = promptTemplate.Execute(stateHUD, struct { + HUD *PromptHUD + Actions []action.ActionDefinition + Reasoning string + Messages []openai.ChatCompletionMessage + }{ + Actions: definitions, + Reasoning: reasoning, + HUD: promptHUD, + }) + if err != nil { + return nil, err + } + + // check if there is already a message with the hud in the conversation already, otherwise + // add a message at the top with it + + conversation := c + found := false + for _, cc := range c { + if cc.Content == stateHUD.String() { + found = true + break + } + } + if !found && a.options.enableHUD { + conversation = append([]openai.ChatCompletionMessage{ + { + Role: "system", + Content: stateHUD.String(), + }, + }, conversation...) + } + return a.decision(ctx, conversation, a.systemActions().ToTools(), diff --git a/agent/templates.go b/agent/templates.go index 31d1f10..5cb6c47 100644 --- a/agent/templates.go +++ b/agent/templates.go @@ -1,6 +1,6 @@ package agent -const hud = `{{with .HUD }}You have a character and your replies and actions might be influenced by it. +const hudTemplate = `{{with .HUD }}You have a character and your replies and actions might be influenced by it. {{if .Character.Name}}Name: {{.Character.Name}} {{end}}{{if .Character.Age}}Age: {{.Character.Age}} {{end}}{{if .Character.Occupation}}Occupation: {{.Character.Occupation}} @@ -38,13 +38,13 @@ You can update the short-term goal, the current action, the next action, the his You can't ask things to the user as you are thinking by yourself. You are autonomous. {{if .Reasoning}}Reasoning: {{.Reasoning}}{{end}} -` + hud +` + hudTemplate const reSelfEvalTemplate = pickSelfTemplate + ` We already have called other tools. Evaluate the current situation and decide if we need to execute other tools.` -const pickActionTemplate = hud + ` +const pickActionTemplate = hudTemplate + ` You can take any of the following tools: {{range .Actions -}} From 744af1902583b688f8a6b3c39c6c001599e43d4b Mon Sep 17 00:00:00 2001 From: mudler Date: Thu, 4 Apr 2024 22:44:59 +0200 Subject: [PATCH 034/399] WIP? --- agent/actions.go | 84 +++++++++++++++++++++++++++++++++++++-------- agent/agent_test.go | 2 +- agent/templates.go | 2 ++ 3 files changed, 73 insertions(+), 15 deletions(-) diff --git a/agent/actions.go b/agent/actions.go index d433423..5fbff1c 100644 --- a/agent/actions.go +++ b/agent/actions.go @@ -169,13 +169,13 @@ func (a *Agent) prepareHUD() PromptHUD { } } -func (a *Agent) prepareConversationParse(templ string, messages []openai.ChatCompletionMessage, canReply bool, reasoning string) ([]openai.ChatCompletionMessage, Actions, []string, error) { +func (a *Agent) prepareConversationParse(templ string, messages []openai.ChatCompletionMessage, canReply bool, reasoning string) ([]openai.ChatCompletionMessage, Actions, error) { // prepare the prompt prompt := bytes.NewBuffer([]byte{}) promptTemplate, err := template.New("pickAction").Parse(templ) if err != nil { - return nil, []Action{}, nil, err + return nil, []Action{}, err } actions := a.systemActions() @@ -207,19 +207,13 @@ func (a *Agent) prepareConversationParse(templ string, messages []openai.ChatCom HUD: promptHUD, }) if err != nil { - return nil, []Action{}, nil, err + return nil, []Action{}, err } if a.options.debugMode { fmt.Println("=== PROMPT START ===", prompt.String(), "=== PROMPT END ===") } - // Get all the available actions IDs - actionsID := []string{} - for _, m := range actions { - actionsID = append(actionsID, m.Definition().Name.String()) - } - conversation := []openai.ChatCompletionMessage{} conversation = append(conversation, openai.ChatCompletionMessage{ @@ -227,18 +221,75 @@ func (a *Agent) prepareConversationParse(templ string, messages []openai.ChatCom Content: prompt.String(), }) - return conversation, actions, actionsID, nil + return conversation, actions, nil } // pickAction picks an action based on the conversation func (a *Agent) pickAction(ctx context.Context, templ string, messages []openai.ChatCompletionMessage, canReply bool) (Action, string, error) { - conversation, actions, actionsID, err := a.prepareConversationParse(templ, messages, canReply, "") + c := messages + + // prepare the prompt + prompt := bytes.NewBuffer([]byte{}) + + promptTemplate, err := template.New("pickAction").Parse(templ) if err != nil { return nil, "", err } + + actions := a.systemActions() + if !canReply { + actions = a.systemInternalActions() + } + + // Get all the actions definitions + definitions := []action.ActionDefinition{} + for _, m := range actions { + definitions = append(definitions, m.Definition()) + } + + var promptHUD *PromptHUD + if a.options.enableHUD { + h := a.prepareHUD() + promptHUD = &h + } + + err = promptTemplate.Execute(prompt, struct { + HUD *PromptHUD + Actions []action.ActionDefinition + Reasoning string + Messages []openai.ChatCompletionMessage + }{ + Actions: definitions, + Messages: messages, + HUD: promptHUD, + }) + if err != nil { + return nil, "", err + } + // Get the LLM to think on what to do + // and have a thought + + found := false + for _, cc := range c { + if cc.Content == prompt.String() { + found = true + break + } + } + if !found { + c = append([]openai.ChatCompletionMessage{ + { + Role: "system", + Content: prompt.String(), + }, + }, c...) + } + + // We also could avoid to use functions here and get just a reply from the LLM + // and then use the reply to get the action thought, err := a.decision(ctx, - conversation, + c, Actions{action.NewReasoning()}.ToTools(), action.NewReasoning().Definition().Name) if err != nil { @@ -256,10 +307,15 @@ func (a *Agent) pickAction(ctx context.Context, templ string, messages []openai. reason = thought.message } - // Decode tool call + // From the thought, get the action call + // Get all the available actions IDs + actionsID := []string{} + for _, m := range actions { + actionsID = append(actionsID, m.Definition().Name.String()) + } intentionsTools := action.NewIntention(actionsID...) params, err := a.decision(ctx, - append(conversation, openai.ChatCompletionMessage{ + append(c, openai.ChatCompletionMessage{ Role: "assistent", Content: reason, }), diff --git a/agent/agent_test.go b/agent/agent_test.go index f86d3d6..c4398fb 100644 --- a/agent/agent_test.go +++ b/agent/agent_test.go @@ -167,7 +167,7 @@ var _ = Describe("Agent test", func() { Expect(agent.State().Goal).To(ContainSubstring("guitar"), fmt.Sprint(agent.State())) }) - FIt("it automatically performs things in the background", func() { + It("it automatically performs things in the background", func() { agent, err := New( WithLLMAPIURL(apiModel), WithModel(testModel), diff --git a/agent/templates.go b/agent/templates.go index 5cb6c47..301a241 100644 --- a/agent/templates.go +++ b/agent/templates.go @@ -53,9 +53,11 @@ You can take any of the following tools: To answer back to the user, use the "reply" tool. Given the text below, decide which action to take and explain the detailed reasoning behind it. For answering without picking a choice, reply with 'none'. +{{if .Messages}} {{range .Messages -}} {{.Role}}{{if .FunctionCall}}(tool_call){{.FunctionCall}}{{end}}: {{if .FunctionCall}}{{.FunctionCall}}{{else if .ToolCalls -}}{{range .ToolCalls -}}{{.Name}} called with {{.Arguments}}{{end}}{{ else }}{{.Content -}}{{end}} {{end}} +{{end}} {{if .Reasoning}}Reasoning: {{.Reasoning}}{{end}} ` From 652cef288d5abcfa3931092ceb3ec2cdd1bb513e Mon Sep 17 00:00:00 2001 From: Ettore Di Giacinto Date: Fri, 5 Apr 2024 01:20:20 +0200 Subject: [PATCH 035/399] control show of character,global callbacks, re-add replies during internal runs to self-stop --- action/intention.go | 3 +++ action/reasoning.go | 3 +++ agent/actions.go | 33 ++++++++++------------- agent/agent.go | 40 +++++++++++++++++++++++----- agent/agent_test.go | 65 +++++++++++++++++++++++++++++++++++++++++---- agent/jobs.go | 15 ++++++++--- agent/options.go | 45 +++++++++++++++++++++++-------- agent/state.go | 1 + agent/templates.go | 20 +++----------- 9 files changed, 165 insertions(+), 60 deletions(-) diff --git a/action/intention.go b/action/intention.go index 394a8cd..8f778dd 100644 --- a/action/intention.go +++ b/action/intention.go @@ -4,6 +4,9 @@ import ( "github.com/sashabaranov/go-openai/jsonschema" ) +// NewIntention creates a new intention action +// The inention action is special as it tries to identify +// a tool to use and a reasoning over to use it func NewIntention(s ...string) *IntentAction { return &IntentAction{tools: s} } diff --git a/action/reasoning.go b/action/reasoning.go index 1ee48dd..22f53ee 100644 --- a/action/reasoning.go +++ b/action/reasoning.go @@ -4,6 +4,9 @@ import ( "github.com/sashabaranov/go-openai/jsonschema" ) +// NewReasoning creates a new reasoning action +// The reasoning action is special as it tries to force the LLM +// to think about what to do next func NewReasoning() *ReasoningAction { return &ReasoningAction{} } diff --git a/agent/actions.go b/agent/actions.go index 5fbff1c..3ff27be 100644 --- a/agent/actions.go +++ b/agent/actions.go @@ -55,7 +55,7 @@ type decisionResult struct { message string } -// decision forces the agent to take on of the available actions +// decision forces the agent to take one of the available actions func (a *Agent) decision( ctx context.Context, conversation []openai.ChatCompletionMessage, @@ -145,20 +145,20 @@ func (a *Agent) generateParameters(ctx context.Context, pickTemplate string, act return a.decision(ctx, conversation, - a.systemActions().ToTools(), - act.Definition().Name) + a.systemInternalActions().ToTools(), + openai.ToolChoice{ + Type: openai.ToolTypeFunction, + Function: openai.ToolFunction{Name: act.Definition().Name.String()}, + }, + ) } func (a *Agent) systemInternalActions() Actions { if a.options.enableHUD { - return append(a.options.userActions, action.NewState()) + return append(a.options.userActions, action.NewState(), action.NewReply()) } - return append(a.options.userActions) -} - -func (a *Agent) systemActions() Actions { - return append(a.systemInternalActions(), action.NewReply()) + return append(a.options.userActions, action.NewReply()) } func (a *Agent) prepareHUD() PromptHUD { @@ -166,10 +166,11 @@ func (a *Agent) prepareHUD() PromptHUD { Character: a.Character, CurrentState: *a.currentState, PermanentGoal: a.options.permanentGoal, + ShowCharacter: a.options.showCharacter, } } -func (a *Agent) prepareConversationParse(templ string, messages []openai.ChatCompletionMessage, canReply bool, reasoning string) ([]openai.ChatCompletionMessage, Actions, error) { +func (a *Agent) prepareConversationParse(templ string, messages []openai.ChatCompletionMessage, reasoning string) ([]openai.ChatCompletionMessage, Actions, error) { // prepare the prompt prompt := bytes.NewBuffer([]byte{}) @@ -178,10 +179,7 @@ func (a *Agent) prepareConversationParse(templ string, messages []openai.ChatCom return nil, []Action{}, err } - actions := a.systemActions() - if !canReply { - actions = a.systemInternalActions() - } + actions := a.systemInternalActions() // Get all the actions definitions definitions := []action.ActionDefinition{} @@ -225,7 +223,7 @@ func (a *Agent) prepareConversationParse(templ string, messages []openai.ChatCom } // pickAction picks an action based on the conversation -func (a *Agent) pickAction(ctx context.Context, templ string, messages []openai.ChatCompletionMessage, canReply bool) (Action, string, error) { +func (a *Agent) pickAction(ctx context.Context, templ string, messages []openai.ChatCompletionMessage) (Action, string, error) { c := messages // prepare the prompt @@ -236,10 +234,7 @@ func (a *Agent) pickAction(ctx context.Context, templ string, messages []openai. return nil, "", err } - actions := a.systemActions() - if !canReply { - actions = a.systemInternalActions() - } + actions := a.systemInternalActions() // Get all the actions definitions definitions := []action.ActionDefinition{} diff --git a/agent/agent.go b/agent/agent.go index 5a72715..94ba6a5 100644 --- a/agent/agent.go +++ b/agent/agent.go @@ -111,7 +111,7 @@ func (a *Agent) StopAction() { // It discards any other computation. func (a *Agent) Ask(opts ...JobOption) *JobResult { a.StopAction() - j := NewJob(opts...) + j := NewJob(append(opts, WithReasoningCallback(a.options.reasoningCallback), WithResultCallback(a.options.resultCallback))...) // fmt.Println("Job created", text) a.jobQueue <- j return j.Result.WaitResult() @@ -138,7 +138,7 @@ func (a *Agent) Stop() { } func (a *Agent) runAction(chosenAction Action, decisionResult *decisionResult) (result string, err error) { - for _, action := range a.systemActions() { + for _, action := range a.systemInternalActions() { if action.Definition().Name == chosenAction.Definition().Name { if result, err = action.Run(decisionResult.actionParams); err != nil { return "", fmt.Errorf("error running action: %w", err) @@ -218,7 +218,7 @@ func (a *Agent) consumeJob(job *Job, role string) { a.nextAction = nil } else { var err error - chosenAction, reasoning, err = a.pickAction(ctx, pickTemplate, a.currentConversation, true) + chosenAction, reasoning, err = a.pickAction(ctx, pickTemplate, a.currentConversation) if err != nil { job.Result.Finish(err) return @@ -231,12 +231,21 @@ func (a *Agent) consumeJob(job *Job, role string) { return } + if a.options.debugMode { + fmt.Println("===> Generating parameters for", chosenAction.Definition().Name) + } + params, err := a.generateParameters(ctx, pickTemplate, chosenAction, a.currentConversation, reasoning) if err != nil { job.Result.Finish(fmt.Errorf("error generating action's parameters: %w", err)) return } + if a.options.debugMode { + fmt.Println("===> Generated parameters for", chosenAction.Definition().Name) + fmt.Println(params.actionParams.String()) + } + if params.actionParams == nil { job.Result.Finish(fmt.Errorf("no parameters")) return @@ -282,7 +291,7 @@ func (a *Agent) consumeJob(job *Job, role string) { // given the result, we can now ask OpenAI to complete the conversation or // to continue using another tool given the result - followingAction, reasoning, err := a.pickAction(ctx, reEvaluationTemplate, a.currentConversation, !selfEvaluation) + followingAction, reasoning, err := a.pickAction(ctx, reEvaluationTemplate, a.currentConversation) if err != nil { job.Result.Finish(fmt.Errorf("error picking action: %w", err)) return @@ -324,16 +333,25 @@ func (a *Agent) consumeJob(job *Job, role string) { msg := resp.Choices[0].Message a.currentConversation = append(a.currentConversation, msg) + job.Result.SetResponse(msg.Content) job.Result.Finish(nil) } func (a *Agent) periodicallyRun() { + + if a.options.debugMode { + fmt.Println("START -- Periodically run is starting") + } + if len(a.CurrentConversation()) != 0 { // Here the LLM could decide to store some part of the conversation too in the memory evaluateMemory := NewJob( WithText( `Evaluate the current conversation and decide if we need to store some relevant informations from it`, - )) + ), + WithReasoningCallback(a.options.reasoningCallback), + WithResultCallback(a.options.resultCallback), + ) a.consumeJob(evaluateMemory, SystemRole) a.ResetConversation() @@ -345,8 +363,18 @@ func (a *Agent) periodicallyRun() { // - asking the agent to do something else based on the result // whatNext := NewJob(WithText("Decide what to do based on the state")) - whatNext := NewJob(WithText("Decide what to based on the goal and the persistent goal.")) + whatNext := NewJob( + WithText("Decide what to based on the goal and the persistent goal."), + WithReasoningCallback(a.options.reasoningCallback), + WithResultCallback(a.options.resultCallback), + ) a.consumeJob(whatNext, SystemRole) + a.ResetConversation() + + if a.options.debugMode { + fmt.Println("STOP -- Periodically run is done") + } + // Save results from state // a.ResetConversation() diff --git a/agent/agent_test.go b/agent/agent_test.go index c4398fb..84c56f0 100644 --- a/agent/agent_test.go +++ b/agent/agent_test.go @@ -63,6 +63,25 @@ func (a *TestAction) Definition() action.ActionDefinition { } } +type FakeStoreResultAction struct { + TestAction +} + +func (a *FakeStoreResultAction) Definition() action.ActionDefinition { + return action.ActionDefinition{ + Name: "store_results", + Description: "store results permanently. Use this tool after you have a result you want to keep.", + Properties: map[string]jsonschema.Definition{ + "term": { + Type: jsonschema.String, + Description: "What to store permanently", + }, + }, + + Required: []string{"term"}, + } +} + type FakeInternetAction struct { TestAction } @@ -167,16 +186,43 @@ var _ = Describe("Agent test", func() { Expect(agent.State().Goal).To(ContainSubstring("guitar"), fmt.Sprint(agent.State())) }) - It("it automatically performs things in the background", func() { + FIt("it automatically performs things in the background", func() { agent, err := New( WithLLMAPIURL(apiModel), WithModel(testModel), EnableHUD, DebugMode, EnableStandaloneJob, - WithActions(&FakeInternetAction{TestAction{response: []string{"Roma, Venice, Milan"}}}), + WithAgentReasoningCallback(func(state ActionCurrentState) bool { + fmt.Println("Reasoning", state) + return true + }), + WithAgentResultCallback(func(state ActionState) { + fmt.Println("Reasoning", state.Reasoning) + fmt.Println("Action", state.Action) + fmt.Println("Result", state.Result) + }), + WithActions( + &FakeInternetAction{ + TestAction{ + response: []string{ + "Major cities in italy: Roma, Venice, Milan", + "In rome it's 30C today, it's sunny, and humidity is at 98%", + "In venice it's very hot today, it is 45C and the humidity is at 200%", + "In milan it's very cold today, it is 2C and the humidity is at 10%", + }, + }, + }, + &FakeStoreResultAction{ + TestAction{ + response: []string{ + "Result permanently stored", + }, + }, + }, + ), WithRandomIdentity(), - WithPermanentGoal("get the weather of all the cities in italy"), + WithPermanentGoal("get the weather of all the cities in italy and store the results"), ) Expect(err).ToNot(HaveOccurred()) go agent.Run() @@ -184,8 +230,17 @@ var _ = Describe("Agent test", func() { Eventually(func() string { fmt.Println(agent.State()) - return agent.State().NowDoing - }, "4m", "10s").Should(ContainSubstring("weather"), fmt.Sprint(agent.State())) + return agent.State().Goal + }, "10m", "10s").Should(ContainSubstring("weather"), fmt.Sprint(agent.State())) + + Eventually(func() string { + fmt.Println(agent.State()) + return agent.State().String() + }, "10m", "10s").Should(ContainSubstring("store"), fmt.Sprint(agent.State())) + Eventually(func() string { + fmt.Println(agent.State()) + return agent.State().String() + }, "10m", "10s").Should(ContainSubstring("inform"), fmt.Sprint(agent.State())) // result := agent.Ask( // WithText("Update your goals such as you want to learn to play the guitar"), diff --git a/agent/jobs.go b/agent/jobs.go index 9a168c3..48d01ac 100644 --- a/agent/jobs.go +++ b/agent/jobs.go @@ -20,9 +20,10 @@ type Job struct { type JobResult struct { sync.Mutex // The result of a job - State []ActionState - Error error - ready chan bool + State []ActionState + Response string + Error error + ready chan bool } type JobOption func(*Job) @@ -104,6 +105,14 @@ func (j *JobResult) Finish(e error) { close(j.ready) } +// SetResult sets the result of a job +func (j *JobResult) SetResponse(response string) { + j.Lock() + defer j.Unlock() + + j.Response = response +} + // WaitResult waits for the result of a job func (j *JobResult) WaitResult() *JobResult { <-j.ready diff --git a/agent/options.go b/agent/options.go index c9c6e42..58d628c 100644 --- a/agent/options.go +++ b/agent/options.go @@ -13,17 +13,21 @@ type llmOptions struct { } type options struct { - LLMAPI llmOptions - character Character - randomIdentityGuidance string - randomIdentity bool - userActions Actions - enableHUD, standaloneJob bool - debugMode bool - characterfile string - statefile string - context context.Context - permanentGoal string + LLMAPI llmOptions + character Character + randomIdentityGuidance string + randomIdentity bool + userActions Actions + enableHUD, standaloneJob, showCharacter bool + debugMode bool + characterfile string + statefile string + context context.Context + permanentGoal string + + // callbacks + reasoningCallback func(ActionCurrentState) bool + resultCallback func(ActionState) } func defaultOptions() *options { @@ -69,6 +73,11 @@ var EnableStandaloneJob = func(o *options) error { return nil } +var EnableCharacter = func(o *options) error { + o.showCharacter = true + return nil +} + func WithLLMAPIURL(url string) Option { return func(o *options) error { o.LLMAPI.APIURL = url @@ -97,6 +106,20 @@ func WithContext(ctx context.Context) Option { } } +func WithAgentReasoningCallback(cb func(ActionCurrentState) bool) Option { + return func(o *options) error { + o.reasoningCallback = cb + return nil + } +} + +func WithAgentResultCallback(cb func(ActionState)) Option { + return func(o *options) error { + o.resultCallback = cb + return nil + } +} + func WithModel(model string) Option { return func(o *options) error { o.LLMAPI.Model = model diff --git a/agent/state.go b/agent/state.go index c165f92..7d72af2 100644 --- a/agent/state.go +++ b/agent/state.go @@ -17,6 +17,7 @@ type PromptHUD struct { Character Character `json:"character"` CurrentState action.StateResult `json:"current_state"` PermanentGoal string `json:"permanent_goal"` + ShowCharacter bool `json:"show_character"` } type Character struct { diff --git a/agent/templates.go b/agent/templates.go index 301a241..b13b720 100644 --- a/agent/templates.go +++ b/agent/templates.go @@ -1,12 +1,13 @@ package agent -const hudTemplate = `{{with .HUD }}You have a character and your replies and actions might be influenced by it. +const hudTemplate = `{{with .HUD }}{{if .ShowCharacter}}You have a character and your replies and actions might be influenced by it. {{if .Character.Name}}Name: {{.Character.Name}} {{end}}{{if .Character.Age}}Age: {{.Character.Age}} {{end}}{{if .Character.Occupation}}Occupation: {{.Character.Occupation}} {{end}}{{if .Character.Hobbies}}Hobbies: {{.Character.Hobbies}} {{end}}{{if .Character.MusicTaste}}Music taste: {{.Character.MusicTaste}} {{end}} +{{end}} This is your current state: NowDoing: {{if .CurrentState.NowDoing}}{{.CurrentState.NowDoing}}{{else}}Nothing{{end}} @@ -16,20 +17,13 @@ Your current goal is: {{if .CurrentState.Goal}}{{.CurrentState.Goal}}{{else}}Not You have done: {{range .CurrentState.DoneHistory}}{{.}} {{end}} You have a short memory with: {{range .CurrentState.Memories}}{{.}} {{end}}{{end}}` -const pickSelfTemplate = ` -You can take any of the following tools: +const pickSelfTemplate = `You can take any of the following tools: {{range .Actions -}} - {{.Name}}: {{.Description }} {{ end }} -{{if .Messages}} -Consider the text below, decide which action to take and explain the detailed reasoning behind it. - -{{range .Messages -}} -{{.Role}}{{if .FunctionCall}}(tool_call){{.FunctionCall}}{{end}}: {{if .FunctionCall}}{{.FunctionCall}}{{else if .ToolCalls -}}{{range .ToolCalls -}}{{.Name}} called with {{.Arguments}}{{end}}{{ else }}{{.Content -}}{{end}} -{{end}} -{{end}} +To finish your session, use the "reply" tool with your answer. Act like as a fully autonomous smart AI agent having a character, the character and your state is defined in the message above. You are now self-evaluating what to do next based on the state in the previous message. @@ -53,12 +47,6 @@ You can take any of the following tools: To answer back to the user, use the "reply" tool. Given the text below, decide which action to take and explain the detailed reasoning behind it. For answering without picking a choice, reply with 'none'. -{{if .Messages}} -{{range .Messages -}} -{{.Role}}{{if .FunctionCall}}(tool_call){{.FunctionCall}}{{end}}: {{if .FunctionCall}}{{.FunctionCall}}{{else if .ToolCalls -}}{{range .ToolCalls -}}{{.Name}} called with {{.Arguments}}{{end}}{{ else }}{{.Content -}}{{end}} -{{end}} -{{end}} - {{if .Reasoning}}Reasoning: {{.Reasoning}}{{end}} ` From 9e8b1dab84fa05f8bc96ce117cf601430f596b45 Mon Sep 17 00:00:00 2001 From: Ettore Di Giacinto Date: Fri, 5 Apr 2024 01:24:28 +0200 Subject: [PATCH 036/399] adapt test --- agent/agent_test.go | 4 ---- 1 file changed, 4 deletions(-) diff --git a/agent/agent_test.go b/agent/agent_test.go index 84c56f0..5423ebb 100644 --- a/agent/agent_test.go +++ b/agent/agent_test.go @@ -237,10 +237,6 @@ var _ = Describe("Agent test", func() { fmt.Println(agent.State()) return agent.State().String() }, "10m", "10s").Should(ContainSubstring("store"), fmt.Sprint(agent.State())) - Eventually(func() string { - fmt.Println(agent.State()) - return agent.State().String() - }, "10m", "10s").Should(ContainSubstring("inform"), fmt.Sprint(agent.State())) // result := agent.Ask( // WithText("Update your goals such as you want to learn to play the guitar"), From 3f6b68a60a7ddbb9b0375721ef885eef658d5a9e Mon Sep 17 00:00:00 2001 From: Ettore Di Giacinto Date: Fri, 5 Apr 2024 01:27:52 +0200 Subject: [PATCH 037/399] Minor fixes --- agent/options.go | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/agent/options.go b/agent/options.go index 58d628c..f53d8a3 100644 --- a/agent/options.go +++ b/agent/options.go @@ -73,7 +73,7 @@ var EnableStandaloneJob = func(o *options) error { return nil } -var EnableCharacter = func(o *options) error { +var EnablePersonality = func(o *options) error { o.showCharacter = true return nil } @@ -149,6 +149,7 @@ func WithRandomIdentity(guidance ...string) Option { return func(o *options) error { o.randomIdentityGuidance = strings.Join(guidance, "") o.randomIdentity = true + o.showCharacter = true return nil } } From 32f4e532428eb8143b83c5d3de2f50e193edf95d Mon Sep 17 00:00:00 2001 From: Ettore Di Giacinto Date: Fri, 5 Apr 2024 01:28:31 +0200 Subject: [PATCH 038/399] Remove focus --- agent/agent_test.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/agent/agent_test.go b/agent/agent_test.go index 5423ebb..21d91ee 100644 --- a/agent/agent_test.go +++ b/agent/agent_test.go @@ -186,7 +186,7 @@ var _ = Describe("Agent test", func() { Expect(agent.State().Goal).To(ContainSubstring("guitar"), fmt.Sprint(agent.State())) }) - FIt("it automatically performs things in the background", func() { + It("it automatically performs things in the background", func() { agent, err := New( WithLLMAPIURL(apiModel), WithModel(testModel), From 5f29125bbb871f7f65ee41c23ca378eafe90e528 Mon Sep 17 00:00:00 2001 From: mudler Date: Fri, 5 Apr 2024 17:14:53 +0200 Subject: [PATCH 039/399] webui, fixes --- action/plan.go | 51 +++++++++ action/reply.go | 4 + agent/actions.go | 152 ++++--------------------- agent/agent.go | 40 ++++++- agent/agent_test.go | 15 ++- agent/options.go | 13 +++ agent/templates.go | 52 ++++++++- example/webui/actions/search.go | 39 +++++++ example/webui/elements.go | 7 ++ example/webui/index.html | 76 +++++++++++++ example/webui/main.go | 196 ++++++++++++++++++++++++++++++++ go.mod | 5 +- go.sum | 2 + 13 files changed, 510 insertions(+), 142 deletions(-) create mode 100644 action/plan.go create mode 100644 example/webui/actions/search.go create mode 100644 example/webui/elements.go create mode 100644 example/webui/index.html create mode 100644 example/webui/main.go diff --git a/action/plan.go b/action/plan.go new file mode 100644 index 0000000..11d74da --- /dev/null +++ b/action/plan.go @@ -0,0 +1,51 @@ +package action + +import ( + "github.com/sashabaranov/go-openai/jsonschema" +) + +// PlanActionName is the name of the plan action +// used by the LLM to schedule more actions +const PlanActionName = "plan" + +func NewPlan() *PlanAction { + return &PlanAction{} +} + +type PlanAction struct{} + +type PlanResult struct { + Subtasks []PlanSubtask `json:"subtasks"` +} +type PlanSubtask struct { + Action string `json:"action"` + Reasoning string `json:"reasoning"` +} + +func (a *PlanAction) Run(ActionParams) (string, error) { + return "no-op", nil +} + +func (a *PlanAction) Definition() ActionDefinition { + return ActionDefinition{ + Name: PlanActionName, + Description: "The assistant for solving complex tasks that involves calling more functions in sequence, replies with the action.", + Properties: map[string]jsonschema.Definition{ + "subtasks": { + Type: jsonschema.Array, + Description: "The message to reply with", + Properties: map[string]jsonschema.Definition{ + "action": { + Type: jsonschema.String, + Description: "The action to call", + }, + "reasoning": { + Type: jsonschema.String, + Description: "The reasoning for calling this action", + }, + }, + }, + }, + Required: []string{"subtasks"}, + } +} diff --git a/action/reply.go b/action/reply.go index be9b8e9..a23b8e0 100644 --- a/action/reply.go +++ b/action/reply.go @@ -15,6 +15,10 @@ func NewReply() *ReplyAction { type ReplyAction struct{} +type ReplyResponse struct { + Message string `json:"message"` +} + func (a *ReplyAction) Run(ActionParams) (string, error) { return "no-op", nil } diff --git a/agent/actions.go b/agent/actions.go index 3ff27be..de69691 100644 --- a/agent/actions.go +++ b/agent/actions.go @@ -1,10 +1,8 @@ package agent import ( - "bytes" "context" "fmt" - "html/template" "github.com/mudler/local-agent-framework/action" @@ -85,40 +83,30 @@ func (a *Agent) decision( return &decisionResult{actionParams: params}, nil } +type Messages []openai.ChatCompletionMessage + +func (m Messages) ToOpenAI() []openai.ChatCompletionMessage { + return []openai.ChatCompletionMessage(m) +} + +func (m Messages) Exist(content string) bool { + for _, cc := range m { + if cc.Content == content { + return true + } + } + return false +} + func (a *Agent) generateParameters(ctx context.Context, pickTemplate string, act Action, c []openai.ChatCompletionMessage, reasoning string) (*decisionResult, error) { - // prepare the prompt - stateHUD := bytes.NewBuffer([]byte{}) - - promptTemplate, err := template.New("pickAction").Parse(hudTemplate) - if err != nil { - return nil, err - } - - actions := a.systemInternalActions() - - // Get all the actions definitions - definitions := []action.ActionDefinition{} - for _, m := range actions { - definitions = append(definitions, m.Definition()) - } - var promptHUD *PromptHUD if a.options.enableHUD { h := a.prepareHUD() promptHUD = &h } - err = promptTemplate.Execute(stateHUD, struct { - HUD *PromptHUD - Actions []action.ActionDefinition - Reasoning string - Messages []openai.ChatCompletionMessage - }{ - Actions: definitions, - Reasoning: reasoning, - HUD: promptHUD, - }) + stateHUD, err := renderTemplate(pickTemplate, promptHUD, a.systemInternalActions(), reasoning) if err != nil { return nil, err } @@ -127,18 +115,12 @@ func (a *Agent) generateParameters(ctx context.Context, pickTemplate string, act // add a message at the top with it conversation := c - found := false - for _, cc := range c { - if cc.Content == stateHUD.String() { - found = true - break - } - } - if !found && a.options.enableHUD { + + if !Messages(c).Exist(stateHUD) && a.options.enableHUD { conversation = append([]openai.ChatCompletionMessage{ { Role: "system", - Content: stateHUD.String(), + Content: stateHUD, }, }, conversation...) } @@ -170,113 +152,27 @@ func (a *Agent) prepareHUD() PromptHUD { } } -func (a *Agent) prepareConversationParse(templ string, messages []openai.ChatCompletionMessage, reasoning string) ([]openai.ChatCompletionMessage, Actions, error) { - // prepare the prompt - prompt := bytes.NewBuffer([]byte{}) - - promptTemplate, err := template.New("pickAction").Parse(templ) - if err != nil { - return nil, []Action{}, err - } - - actions := a.systemInternalActions() - - // Get all the actions definitions - definitions := []action.ActionDefinition{} - for _, m := range actions { - definitions = append(definitions, m.Definition()) - } - - var promptHUD *PromptHUD - if a.options.enableHUD { - h := a.prepareHUD() - promptHUD = &h - } - - err = promptTemplate.Execute(prompt, struct { - HUD *PromptHUD - Actions []action.ActionDefinition - Reasoning string - Messages []openai.ChatCompletionMessage - }{ - Actions: definitions, - Reasoning: reasoning, - Messages: messages, - HUD: promptHUD, - }) - if err != nil { - return nil, []Action{}, err - } - - if a.options.debugMode { - fmt.Println("=== PROMPT START ===", prompt.String(), "=== PROMPT END ===") - } - - conversation := []openai.ChatCompletionMessage{} - - conversation = append(conversation, openai.ChatCompletionMessage{ - Role: "user", - Content: prompt.String(), - }) - - return conversation, actions, nil -} - // pickAction picks an action based on the conversation func (a *Agent) pickAction(ctx context.Context, templ string, messages []openai.ChatCompletionMessage) (Action, string, error) { c := messages - // prepare the prompt - prompt := bytes.NewBuffer([]byte{}) - - promptTemplate, err := template.New("pickAction").Parse(templ) - if err != nil { - return nil, "", err - } - - actions := a.systemInternalActions() - - // Get all the actions definitions - definitions := []action.ActionDefinition{} - for _, m := range actions { - definitions = append(definitions, m.Definition()) - } - var promptHUD *PromptHUD if a.options.enableHUD { h := a.prepareHUD() promptHUD = &h } - err = promptTemplate.Execute(prompt, struct { - HUD *PromptHUD - Actions []action.ActionDefinition - Reasoning string - Messages []openai.ChatCompletionMessage - }{ - Actions: definitions, - Messages: messages, - HUD: promptHUD, - }) + prompt, err := renderTemplate(templ, promptHUD, a.systemInternalActions(), "") if err != nil { return nil, "", err } - // Get the LLM to think on what to do // and have a thought - - found := false - for _, cc := range c { - if cc.Content == prompt.String() { - found = true - break - } - } - if !found { + if !Messages(c).Exist(prompt) { c = append([]openai.ChatCompletionMessage{ { Role: "system", - Content: prompt.String(), + Content: prompt, }, }, c...) } @@ -305,7 +201,7 @@ func (a *Agent) pickAction(ctx context.Context, templ string, messages []openai. // From the thought, get the action call // Get all the available actions IDs actionsID := []string{} - for _, m := range actions { + for _, m := range a.systemInternalActions() { actionsID = append(actionsID, m.Definition().Name.String()) } intentionsTools := action.NewIntention(actionsID...) @@ -336,7 +232,7 @@ func (a *Agent) pickAction(ctx context.Context, templ string, messages []openai. } // Find the action - chosenAction := actions.Find(actionChoice.Tool) + chosenAction := a.systemInternalActions().Find(actionChoice.Tool) if chosenAction == nil { return nil, "", fmt.Errorf("no action found for intent:" + actionChoice.Tool) } diff --git a/agent/agent.go b/agent/agent.go index 94ba6a5..dfdf665 100644 --- a/agent/agent.go +++ b/agent/agent.go @@ -311,6 +311,44 @@ func (a *Agent) consumeJob(job *Job, role string) { } } + // If we have already a reply from the action, just return it. + // Otherwise generate a full conversation to get a proper message response + // if chosenAction.Definition().Name.Is(action.ReplyActionName) { + // replyResponse := action.ReplyResponse{} + // if err := params.actionParams.Unmarshal(&replyResponse); err != nil { + // job.Result.Finish(fmt.Errorf("error unmarshalling reply response: %w", err)) + // return + // } + // if replyResponse.Message != "" { + // job.Result.SetResponse(replyResponse.Message) + // job.Result.Finish(nil) + // return + // } + // } + + // If we have a hud, display it + if a.options.enableHUD { + var promptHUD *PromptHUD + if a.options.enableHUD { + h := a.prepareHUD() + promptHUD = &h + } + + prompt, err := renderTemplate(hudTemplate, promptHUD, a.systemInternalActions(), reasoning) + if err != nil { + job.Result.Finish(fmt.Errorf("error renderTemplate: %w", err)) + return + } + if !Messages(a.currentConversation).Exist(prompt) { + a.currentConversation = append([]openai.ChatCompletionMessage{ + { + Role: "system", + Content: prompt, + }, + }, a.currentConversation...) + } + } + // Generate a human-readable response resp, err := a.client.CreateChatCompletion(ctx, openai.ChatCompletionRequest{ @@ -413,7 +451,7 @@ func (a *Agent) Run() error { // Expose a REST API to interact with the agent to ask it things - todoTimer := time.NewTicker(1 * time.Minute) + todoTimer := time.NewTicker(a.options.periodicRuns) for { select { case job := <-a.jobQueue: diff --git a/agent/agent_test.go b/agent/agent_test.go index 21d91ee..0f4aa89 100644 --- a/agent/agent_test.go +++ b/agent/agent_test.go @@ -103,7 +103,7 @@ func (a *FakeInternetAction) Definition() action.ActionDefinition { var _ = Describe("Agent test", func() { Context("jobs", func() { - It("pick the correct action", func() { + FIt("pick the correct action", func() { agent, err := New( WithLLMAPIURL(apiModel), WithModel(testModel), @@ -132,15 +132,18 @@ var _ = Describe("Agent test", func() { append(debugOptions, WithText("Now I want to know the weather in Paris"), )...) - conversation := agent.CurrentConversation() - Expect(len(conversation)).To(Equal(10), fmt.Sprint(conversation)) for _, r := range res.State { + reasons = append(reasons, r.Result) } Expect(reasons).ToNot(ContainElement(testActionResult), fmt.Sprint(res)) Expect(reasons).ToNot(ContainElement(testActionResult2), fmt.Sprint(res)) Expect(reasons).To(ContainElement(testActionResult3), fmt.Sprint(res)) - + // conversation := agent.CurrentConversation() + // for _, r := range res.State { + // reasons = append(reasons, r.Result) + // } + // Expect(len(conversation)).To(Equal(10), fmt.Sprint(conversation)) }) It("pick the correct action", func() { agent, err := New( @@ -171,7 +174,7 @@ var _ = Describe("Agent test", func() { EnableHUD, DebugMode, // EnableStandaloneJob, - WithRandomIdentity(), + // WithRandomIdentity(), WithPermanentGoal("I want to learn to play music"), ) Expect(err).ToNot(HaveOccurred()) @@ -221,7 +224,7 @@ var _ = Describe("Agent test", func() { }, }, ), - WithRandomIdentity(), + //WithRandomIdentity(), WithPermanentGoal("get the weather of all the cities in italy and store the results"), ) Expect(err).ToNot(HaveOccurred()) diff --git a/agent/options.go b/agent/options.go index f53d8a3..4ab5beb 100644 --- a/agent/options.go +++ b/agent/options.go @@ -3,6 +3,7 @@ package agent import ( "context" "strings" + "time" ) type Option func(*options) error @@ -24,6 +25,7 @@ type options struct { statefile string context context.Context permanentGoal string + periodicRuns time.Duration // callbacks reasoningCallback func(ActionCurrentState) bool @@ -99,6 +101,17 @@ func WithPermanentGoal(goal string) Option { } } +func WithPeriodicRuns(duration string) Option { + return func(o *options) error { + t, err := time.ParseDuration(duration) + if err != nil { + o.periodicRuns, _ = time.ParseDuration("1m") + } + o.periodicRuns = t + return nil + } +} + func WithContext(ctx context.Context) Option { return func(o *options) error { o.context = ctx diff --git a/agent/templates.go b/agent/templates.go index b13b720..4e37c87 100644 --- a/agent/templates.go +++ b/agent/templates.go @@ -1,11 +1,51 @@ package agent -const hudTemplate = `{{with .HUD }}{{if .ShowCharacter}}You have a character and your replies and actions might be influenced by it. -{{if .Character.Name}}Name: {{.Character.Name}} -{{end}}{{if .Character.Age}}Age: {{.Character.Age}} -{{end}}{{if .Character.Occupation}}Occupation: {{.Character.Occupation}} -{{end}}{{if .Character.Hobbies}}Hobbies: {{.Character.Hobbies}} -{{end}}{{if .Character.MusicTaste}}Music taste: {{.Character.MusicTaste}} +import ( + "bytes" + "html/template" + + "github.com/mudler/local-agent-framework/action" + "github.com/sashabaranov/go-openai" +) + +func renderTemplate(templ string, hud *PromptHUD, actions Actions, reasoning string) (string, error) { + // prepare the prompt + prompt := bytes.NewBuffer([]byte{}) + + promptTemplate, err := template.New("pickAction").Parse(templ) + if err != nil { + return "", err + } + + // Get all the actions definitions + definitions := []action.ActionDefinition{} + for _, m := range actions { + definitions = append(definitions, m.Definition()) + } + + err = promptTemplate.Execute(prompt, struct { + HUD *PromptHUD + Actions []action.ActionDefinition + Reasoning string + Messages []openai.ChatCompletionMessage + }{ + Actions: definitions, + HUD: hud, + Reasoning: reasoning, + }) + if err != nil { + return "", err + } + + return prompt.String(), nil +} + +const hudTemplate = `{{with .HUD }}{{if .ShowCharacter}}The assistant acts like an human, has a character and the replies and actions might be influenced by it. +{{if .Character.Name}}This is the assistant name: {{.Character.Name}} +{{end}}{{if .Character.Age}}This is the assistant age: {{.Character.Age}} +{{end}}{{if .Character.Occupation}}This is the assistant jop: {{.Character.Occupation}} +{{end}}{{if .Character.Hobbies}}This is the assistant's hobbies: {{.Character.Hobbies}} +{{end}}{{if .Character.MusicTaste}}This is the assistant's music taste: {{.Character.MusicTaste}} {{end}} {{end}} diff --git a/example/webui/actions/search.go b/example/webui/actions/search.go new file mode 100644 index 0000000..cbf502f --- /dev/null +++ b/example/webui/actions/search.go @@ -0,0 +1,39 @@ +package action2 + +import ( + "github.com/mudler/local-agent-framework/action" + "github.com/sashabaranov/go-openai/jsonschema" +) + +// NewIntention creates a new intention action +// The inention action is special as it tries to identify +// a tool to use and a reasoning over to use it +func NewSearch(s ...string) *SearchAction { + return &SearchAction{tools: s} +} + +type SearchAction struct { + tools []string +} + +func (a *SearchAction) Run(action.ActionParams) (string, error) { + return "no-op", nil +} + +func (a *SearchAction) Definition() action.ActionDefinition { + return action.ActionDefinition{ + Name: "intent", + Description: "detect user intent", + Properties: map[string]jsonschema.Definition{ + "reasoning": { + Type: jsonschema.String, + Description: "A detailed reasoning on why you want to call this tool.", + }, + "tool": { + Type: jsonschema.String, + Enum: a.tools, + }, + }, + Required: []string{"tool", "reasoning"}, + } +} diff --git a/example/webui/elements.go b/example/webui/elements.go new file mode 100644 index 0000000..df2b2a0 --- /dev/null +++ b/example/webui/elements.go @@ -0,0 +1,7 @@ +package main + +import "fmt" + +func chatDiv(content string, color string) string { + return fmt.Sprintf(`
%s
`, color, htmlIfy(content)) +} diff --git a/example/webui/index.html b/example/webui/index.html new file mode 100644 index 0000000..30d1179 --- /dev/null +++ b/example/webui/index.html @@ -0,0 +1,76 @@ + + + + + + + Smart Agent Interface + + + + + + + + + +
+ +
+

Talk to Smart Agent

+
+ + +
+ +
+

Clients:

+
+ +
+
+
+
+

Status:

+
+ +
+
+
+ +
+
+ + + +
+

Agent is currently:

+
+ +
+
+
+ + +
+ +
Loading...
+
+
+
+ + + + diff --git a/example/webui/main.go b/example/webui/main.go new file mode 100644 index 0000000..c11860b --- /dev/null +++ b/example/webui/main.go @@ -0,0 +1,196 @@ +package main + +import ( + "fmt" + "html/template" + "log" + "math/rand" + "net/http" + "os" + "strings" + "time" + + "github.com/donseba/go-htmx" + "github.com/donseba/go-htmx/sse" + . "github.com/mudler/local-agent-framework/agent" +) + +type ( + App struct { + htmx *htmx.HTMX + } +) + +var ( + sseManager sse.Manager +) +var testModel = os.Getenv("TEST_MODEL") +var apiModel = os.Getenv("API_MODEL") + +func init() { + if testModel == "" { + testModel = "hermes-2-pro-mistral" + } + if apiModel == "" { + apiModel = "http://192.168.68.113:8080" + } +} + +func htmlIfy(s string) string { + s = strings.TrimSpace(s) + s = strings.ReplaceAll(s, "\n", "
") + return s +} + +var agentInstance *Agent + +func main() { + app := &App{ + htmx: htmx.New(), + } + + agent, err := New( + WithLLMAPIURL(apiModel), + WithModel(testModel), + EnableHUD, + DebugMode, + EnableStandaloneJob, + WithAgentReasoningCallback(func(state ActionCurrentState) bool { + sseManager.Send( + sse.NewMessage( + fmt.Sprintf(`Thinking: %s`, htmlIfy(state.Reasoning)), + ).WithEvent("status"), + ) + return true + }), + WithAgentResultCallback(func(state ActionState) { + text := fmt.Sprintf(`Reasoning: %s + Action taken: %+v + Result: %s`, state.Reasoning, state.ActionCurrentState.Action.Definition().Name, state.Result) + sseManager.Send( + sse.NewMessage( + htmlIfy( + text, + ), + ).WithEvent("status"), + ) + }), + WithRandomIdentity(), + WithPeriodicRuns("10m"), + //WithPermanentGoal("get the weather of all the cities in italy and store the results"), + ) + if err != nil { + panic(err) + } + go agent.Run() + defer agent.Stop() + + agentInstance = agent + sseManager = sse.NewManager(5) + + go func() { + for { + clientsStr := "" + clients := sseManager.Clients() + for _, c := range clients { + clientsStr += c + ", " + } + + time.Sleep(1 * time.Second) // Send a message every seconds + sseManager.Send(sse.NewMessage(fmt.Sprintf("connected clients: %v", clientsStr)).WithEvent("clients")) + } + }() + + go func() { + for { + time.Sleep(1 * time.Second) // Send a message every seconds + sseManager.Send(sse.NewMessage( + htmlIfy(agent.State().String()), + ).WithEvent("hud")) + } + }() + + mux := http.NewServeMux() + + mux.Handle("GET /", http.HandlerFunc(app.Home)) + + // External notifications (e.g. webhook) + mux.Handle("POST /notify", http.HandlerFunc(app.Notify)) + + // User chat + mux.Handle("POST /chat", http.HandlerFunc(app.Chat(sseManager))) + + // Server Sent Events + mux.Handle("GET /sse", http.HandlerFunc(app.SSE)) + + fmt.Print("Server started at :3210") + err = http.ListenAndServe(":3210", mux) + log.Fatal(err) +} + +func (a *App) Home(w http.ResponseWriter, r *http.Request) { + tmpl, err := template.ParseFiles("index.html") + if err != nil { + http.Error(w, err.Error(), http.StatusInternalServerError) + return + } + + tmpl.Execute(w, nil) +} + +func (a *App) SSE(w http.ResponseWriter, r *http.Request) { + cl := sse.NewClient(randStringRunes(10)) + + sseManager.Handle(w, r, cl) +} + +func (a *App) Notify(w http.ResponseWriter, r *http.Request) { + query := strings.ToLower(r.PostFormValue("message")) + if query == "" { + _, _ = w.Write([]byte("Please enter a message.")) + return + } + + agentInstance.Ask( + WithText(query), + ) + _, _ = w.Write([]byte("Message sent")) +} + +func (a *App) Chat(m sse.Manager) func(w http.ResponseWriter, r *http.Request) { + return func(w http.ResponseWriter, r *http.Request) { + query := strings.ToLower(r.PostFormValue("message")) + if query == "" { + _, _ = w.Write([]byte("Please enter a message.")) + return + } + m.Send( + sse.NewMessage( + chatDiv(query, "blue"), + ).WithEvent("messages")) + + go func() { + res := agentInstance.Ask( + WithText(query), + ) + m.Send( + sse.NewMessage( + chatDiv(res.Response, "red"), + ).WithEvent("messages")) + + }() + + result := `message received` + _, _ = w.Write([]byte(result)) + } +} + +var letterRunes = []rune("abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ") + +func randStringRunes(n int) string { + b := make([]rune, n) + for i := range b { + b[i] = letterRunes[rand.Intn(len(letterRunes))] + } + return string(b) +} diff --git a/go.mod b/go.mod index 6e7b9ef..8fe7362 100644 --- a/go.mod +++ b/go.mod @@ -1,6 +1,8 @@ module github.com/mudler/local-agent-framework -go 1.21.1 +go 1.22 + +toolchain go1.22.2 require ( github.com/onsi/ginkgo/v2 v2.15.0 @@ -9,6 +11,7 @@ require ( ) require ( + github.com/donseba/go-htmx v1.8.0 // indirect github.com/go-logr/logr v1.3.0 // indirect github.com/go-task/slim-sprig v0.0.0-20230315185526-52ccab3ef572 // indirect github.com/google/go-cmp v0.6.0 // indirect diff --git a/go.sum b/go.sum index 500deec..137f9da 100644 --- a/go.sum +++ b/go.sum @@ -4,6 +4,8 @@ github.com/chzyer/test v0.0.0-20180213035817-a1ea475d72b1/go.mod h1:Q3SI9o4m/ZMn github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c= github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= +github.com/donseba/go-htmx v1.8.0 h1:oTx1uUsjXZZVvcZfulZvBSPtdD1jzsvZyuK91+Q8zPE= +github.com/donseba/go-htmx v1.8.0/go.mod h1:8PTAYvNKf8+QYis+DpAsggKz+sa2qljtMgvdAeNBh5s= github.com/go-logr/logr v1.3.0 h1:2y3SDp0ZXuc6/cjLSZ+Q3ir+QB9T/iG5yYRXqsagWSY= github.com/go-logr/logr v1.3.0/go.mod h1:9T104GzyrTigFIr8wt5mBrctHMim0Nb2HLGrmQ40KvY= github.com/go-task/slim-sprig v0.0.0-20230315185526-52ccab3ef572 h1:tfuBGBXKqDEevZMzYi5KSi8KkcZtzBcTgAUUtapy0OI= From f2c74e29e88e19c0b0861937af85095b871e4eef Mon Sep 17 00:00:00 2001 From: Ettore Di Giacinto Date: Fri, 5 Apr 2024 23:56:03 +0200 Subject: [PATCH 040/399] Add search internet --- Makefile | 5 ++- agent/options.go | 1 + example/webui/actions/search.go | 56 +++++++++++++++++++++------------ example/webui/main.go | 5 ++- go.mod | 3 ++ go.sum | 11 +++++++ 6 files changed, 59 insertions(+), 22 deletions(-) diff --git a/Makefile b/Makefile index 48c139c..a30ebba 100644 --- a/Makefile +++ b/Makefile @@ -1,4 +1,7 @@ GOCMD=go tests: - $(GOCMD) run github.com/onsi/ginkgo/v2/ginkgo --fail-fast -v -r ./... \ No newline at end of file + $(GOCMD) run github.com/onsi/ginkgo/v2/ginkgo --fail-fast -v -r ./... + +webui: + cd example/webui && $(GOCMD) run ./ \ No newline at end of file diff --git a/agent/options.go b/agent/options.go index 4ab5beb..0f8f75a 100644 --- a/agent/options.go +++ b/agent/options.go @@ -34,6 +34,7 @@ type options struct { func defaultOptions() *options { return &options{ + periodicRuns: 15 * time.Minute, LLMAPI: llmOptions{ APIURL: "http://localhost:8080", Model: "echidna", diff --git a/example/webui/actions/search.go b/example/webui/actions/search.go index cbf502f..7230e28 100644 --- a/example/webui/actions/search.go +++ b/example/webui/actions/search.go @@ -1,39 +1,55 @@ -package action2 +package action import ( + "fmt" + "github.com/mudler/local-agent-framework/action" + "github.com/sap-nocops/duckduckgogo/client" "github.com/sashabaranov/go-openai/jsonschema" ) -// NewIntention creates a new intention action -// The inention action is special as it tries to identify -// a tool to use and a reasoning over to use it -func NewSearch(s ...string) *SearchAction { - return &SearchAction{tools: s} +func NewSearch() *SearchAction { + return &SearchAction{} } -type SearchAction struct { - tools []string -} +type SearchAction struct{} -func (a *SearchAction) Run(action.ActionParams) (string, error) { - return "no-op", nil +func (a *SearchAction) Run(params action.ActionParams) (string, error) { + result := struct { + Query string `json:"query"` + }{} + err := params.Unmarshal(&result) + if err != nil { + fmt.Printf("error: %v", err) + + return "", err + } + ddg := client.NewDuckDuckGoSearchClient() + res, err := ddg.SearchLimited(result.Query, 10) + if err != nil { + msg := fmt.Sprintf("error: %v", err) + fmt.Printf(msg) + return msg, err + } + + results := "" + for i, r := range res { + results += fmt.Sprintf("*********** RESULT %d\nurl: %s\ntitle: %s\nsnippet: %s\n", i, r.FormattedUrl, r.Title, r.Snippet) + } + + return results, nil } func (a *SearchAction) Definition() action.ActionDefinition { return action.ActionDefinition{ - Name: "intent", - Description: "detect user intent", + Name: "search_internet", + Description: "Search the internet for something.", Properties: map[string]jsonschema.Definition{ - "reasoning": { + "query": { Type: jsonschema.String, - Description: "A detailed reasoning on why you want to call this tool.", - }, - "tool": { - Type: jsonschema.String, - Enum: a.tools, + Description: "The query to search for.", }, }, - Required: []string{"tool", "reasoning"}, + Required: []string{"query"}, } } diff --git a/example/webui/main.go b/example/webui/main.go index c11860b..b36a90e 100644 --- a/example/webui/main.go +++ b/example/webui/main.go @@ -12,6 +12,8 @@ import ( "github.com/donseba/go-htmx" "github.com/donseba/go-htmx/sse" + actions "github.com/mudler/local-agent-framework/example/webui/actions" + . "github.com/mudler/local-agent-framework/agent" ) @@ -63,6 +65,7 @@ func main() { ) return true }), + WithActions(actions.NewSearch()), WithAgentResultCallback(func(state ActionState) { text := fmt.Sprintf(`Reasoning: %s Action taken: %+v @@ -123,7 +126,7 @@ func main() { // Server Sent Events mux.Handle("GET /sse", http.HandlerFunc(app.SSE)) - fmt.Print("Server started at :3210") + fmt.Print("Server started at http://localhost:3210") err = http.ListenAndServe(":3210", mux) log.Fatal(err) } diff --git a/go.mod b/go.mod index 8fe7362..8040f41 100644 --- a/go.mod +++ b/go.mod @@ -11,11 +11,14 @@ require ( ) require ( + github.com/PuerkitoBio/goquery v1.6.0 // indirect + github.com/andybalholm/cascadia v1.1.0 // indirect github.com/donseba/go-htmx v1.8.0 // indirect github.com/go-logr/logr v1.3.0 // indirect github.com/go-task/slim-sprig v0.0.0-20230315185526-52ccab3ef572 // indirect github.com/google/go-cmp v0.6.0 // indirect github.com/google/pprof v0.0.0-20210407192527-94a9f03dee38 // indirect + github.com/sap-nocops/duckduckgogo v0.0.0-20201102135645-176990152850 // indirect golang.org/x/net v0.19.0 // indirect golang.org/x/sys v0.15.0 // indirect golang.org/x/text v0.14.0 // indirect diff --git a/go.sum b/go.sum index 137f9da..1cdbed1 100644 --- a/go.sum +++ b/go.sum @@ -1,3 +1,7 @@ +github.com/PuerkitoBio/goquery v1.6.0 h1:j7taAbelrdcsOlGeMenZxc2AWXD5fieT1/znArdnx94= +github.com/PuerkitoBio/goquery v1.6.0/go.mod h1:GsLWisAFVj4WgDibEWF4pvYnkVQBpKBKeU+7zCJoLcc= +github.com/andybalholm/cascadia v1.1.0 h1:BuuO6sSfQNFRu1LppgbD25Hr2vLYW25JvxHs5zzsLTo= +github.com/andybalholm/cascadia v1.1.0/go.mod h1:GsXiBklL0woXo1j/WYWtSYYC4ouU9PqHO0sqidkEA4Y= github.com/chzyer/logex v1.1.10/go.mod h1:+Ywpsq7O8HXn0nuIou7OrIPyXbp3wmkHB+jjWRnGsAI= github.com/chzyer/readline v0.0.0-20180603132655-2972be24d48e/go.mod h1:nSuG5e5PlCu98SY8svDHJxuZscDgtXS6KTTbou5AhLI= github.com/chzyer/test v0.0.0-20180213035817-a1ea475d72b1/go.mod h1:Q3SI9o4m/ZMnBNeIyt5eFwwo7qiLfzFZmjNmxjkiQlU= @@ -23,16 +27,23 @@ github.com/onsi/gomega v1.31.1 h1:KYppCUK+bUgAZwHOu7EXVBKyQA6ILvOESHkn/tgoqvo= github.com/onsi/gomega v1.31.1/go.mod h1:y40C95dwAD1Nz36SsEnxvfFe8FFfNxzI5eJ0EYGyAy0= github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM= github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= +github.com/sap-nocops/duckduckgogo v0.0.0-20201102135645-176990152850 h1:DsVS3HK/t9X7ereJYMTiOeFSJWLOmrSG74CQhk2SlEs= +github.com/sap-nocops/duckduckgogo v0.0.0-20201102135645-176990152850/go.mod h1:ur7dCshjxoPKHtsZgtb6n5gpOmzQNRQ5AT+yOLwaJxM= github.com/sashabaranov/go-openai v1.18.3 h1:dspFGkmZbhjg1059KhqLYSV2GaCiRIn+bOu50TlXUq8= github.com/sashabaranov/go-openai v1.18.3/go.mod h1:lj5b/K+zjTSFxVLijLSTDZuP7adOgerWeFyZLUhAKRg= github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= github.com/stretchr/testify v1.6.1 h1:hDPOHmpOpP40lSULcqw7IrRb/u7w6RpDC9399XyoNd0= github.com/stretchr/testify v1.6.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= +golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= +golang.org/x/net v0.0.0-20180218175443-cbe0f9307d01/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= +golang.org/x/net v0.0.0-20200202094626-16171245cfb2/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.19.0 h1:zTwKpTd2XuCqf8huc7Fo2iSy+4RHPd10s4KzeTnVr1c= golang.org/x/net v0.19.0/go.mod h1:CfAk/cbD4CthTvqiEl8NpboMuiuOYsAr/7NOjZJtv1U= +golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20191204072324-ce4227a45e2e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.15.0 h1:h48lPFYpsTvQJZF4EKyI4aLHaev3CxivZmv7yZig9pc= golang.org/x/sys v0.15.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= +golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.14.0 h1:ScX5w1eTa3QqT8oi6+ziP7dTV1S2+ALU0bI+0zXKWiQ= golang.org/x/text v0.14.0/go.mod h1:18ZOQIKpY8NJVqYksKHtTdi31H5itFRjB5/qKTNYzSU= golang.org/x/tools v0.16.1 h1:TLyB3WofjdOEepBHAU20JdNC1Zbg87elYofWYAY5oZA= From 899e3c0771716f7fe9252fb674fe7568fc2d1186 Mon Sep 17 00:00:00 2001 From: Ettore Di Giacinto Date: Fri, 5 Apr 2024 23:59:48 +0200 Subject: [PATCH 041/399] Search might be useful for other agents --- example/webui/main.go | 4 ++-- {example/webui/actions => external}/search.go | 13 ++++++++----- 2 files changed, 10 insertions(+), 7 deletions(-) rename {example/webui/actions => external}/search.go (82%) diff --git a/example/webui/main.go b/example/webui/main.go index b36a90e..33c25dd 100644 --- a/example/webui/main.go +++ b/example/webui/main.go @@ -12,7 +12,7 @@ import ( "github.com/donseba/go-htmx" "github.com/donseba/go-htmx/sse" - actions "github.com/mudler/local-agent-framework/example/webui/actions" + external "github.com/mudler/local-agent-framework/external" . "github.com/mudler/local-agent-framework/agent" ) @@ -65,7 +65,7 @@ func main() { ) return true }), - WithActions(actions.NewSearch()), + WithActions(external.NewSearch(3)), WithAgentResultCallback(func(state ActionState) { text := fmt.Sprintf(`Reasoning: %s Action taken: %+v diff --git a/example/webui/actions/search.go b/external/search.go similarity index 82% rename from example/webui/actions/search.go rename to external/search.go index 7230e28..865c470 100644 --- a/example/webui/actions/search.go +++ b/external/search.go @@ -1,4 +1,4 @@ -package action +package external import ( "fmt" @@ -8,11 +8,14 @@ import ( "github.com/sashabaranov/go-openai/jsonschema" ) -func NewSearch() *SearchAction { - return &SearchAction{} +func NewSearch(results int) *SearchAction { + if results == 0 { + results = 3 + } + return &SearchAction{results: results} } -type SearchAction struct{} +type SearchAction struct{ results int } func (a *SearchAction) Run(params action.ActionParams) (string, error) { result := struct { @@ -25,7 +28,7 @@ func (a *SearchAction) Run(params action.ActionParams) (string, error) { return "", err } ddg := client.NewDuckDuckGoSearchClient() - res, err := ddg.SearchLimited(result.Query, 10) + res, err := ddg.SearchLimited(result.Query, a.results) if err != nil { msg := fmt.Sprintf("error: %v", err) fmt.Printf(msg) From e3987e9bd1cfdb4093e8bbc97958b6bb33265854 Mon Sep 17 00:00:00 2001 From: Ettore Di Giacinto Date: Sat, 6 Apr 2024 00:22:05 +0200 Subject: [PATCH 042/399] small fixups --- example/webui/index.html | 7 ++++--- example/webui/main.go | 23 +++++++++++++++-------- 2 files changed, 19 insertions(+), 11 deletions(-) diff --git a/example/webui/index.html b/example/webui/index.html index 30d1179..c1be3ca 100644 --- a/example/webui/index.html +++ b/example/webui/index.html @@ -28,12 +28,12 @@
-

Talk to Smart Agent

+

Talk to '{{.Character.Name}}'

- +

Clients:

@@ -41,6 +41,7 @@
+

Status:

@@ -55,7 +56,7 @@
-

Agent is currently:

+

Agent:

diff --git a/example/webui/main.go b/example/webui/main.go index 33c25dd..f8d905f 100644 --- a/example/webui/main.go +++ b/example/webui/main.go @@ -115,7 +115,7 @@ func main() { mux := http.NewServeMux() - mux.Handle("GET /", http.HandlerFunc(app.Home)) + mux.Handle("GET /", http.HandlerFunc(app.Home(agent))) // External notifications (e.g. webhook) mux.Handle("POST /notify", http.HandlerFunc(app.Notify)) @@ -131,14 +131,21 @@ func main() { log.Fatal(err) } -func (a *App) Home(w http.ResponseWriter, r *http.Request) { - tmpl, err := template.ParseFiles("index.html") - if err != nil { - http.Error(w, err.Error(), http.StatusInternalServerError) - return - } +func (a *App) Home(agent *Agent) func(w http.ResponseWriter, r *http.Request) { + return func(w http.ResponseWriter, r *http.Request) { + tmpl, err := template.ParseFiles("index.html") + if err != nil { + http.Error(w, err.Error(), http.StatusInternalServerError) + return + } - tmpl.Execute(w, nil) + tmpl.Execute(w, + struct { + Character Character + }{ + Character: agent.Character, + }) + } } func (a *App) SSE(w http.ResponseWriter, r *http.Request) { From 4f9ec2896b1f42ec4a52cccf67c701a4282785b4 Mon Sep 17 00:00:00 2001 From: mudler Date: Sat, 6 Apr 2024 15:07:48 +0200 Subject: [PATCH 043/399] reason should be said from system' ' --- agent/actions.go | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/agent/actions.go b/agent/actions.go index de69691..0c50127 100644 --- a/agent/actions.go +++ b/agent/actions.go @@ -205,10 +205,12 @@ func (a *Agent) pickAction(ctx context.Context, templ string, messages []openai. actionsID = append(actionsID, m.Definition().Name.String()) } intentionsTools := action.NewIntention(actionsID...) + + //XXX: Why we add the reason here? params, err := a.decision(ctx, append(c, openai.ChatCompletionMessage{ - Role: "assistent", - Content: reason, + Role: "system", + Content: "The assistant thought: " + reason, }), Actions{intentionsTools}.ToTools(), intentionsTools.Definition().Name) From 13b08c8cb3d89de5f229545504a93cd698919277 Mon Sep 17 00:00:00 2001 From: mudler Date: Sat, 6 Apr 2024 15:08:21 +0200 Subject: [PATCH 044/399] Consume answer if we didn't picked up any tool' --- agent/agent.go | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/agent/agent.go b/agent/agent.go index dfdf665..fa8e4dc 100644 --- a/agent/agent.go +++ b/agent/agent.go @@ -227,7 +227,13 @@ func (a *Agent) consumeJob(job *Job, role string) { if chosenAction == nil { //job.Result.SetResult(ActionState{ActionCurrentState{nil, nil, "No action to do, just reply"}, ""}) - job.Result.Finish(fmt.Errorf("no action to do")) + //job.Result.Finish(fmt.Errorf("no action to do"))\ + a.currentConversation = append(a.currentConversation, openai.ChatCompletionMessage{ + Role: "assistant", + Content: reasoning, + }) + job.Result.SetResponse(reasoning) + job.Result.Finish(nil) return } From 9f5a32a1bf511eb3e0a006cbb54399e86dd66afe Mon Sep 17 00:00:00 2001 From: mudler Date: Sat, 6 Apr 2024 15:08:39 +0200 Subject: [PATCH 045/399] If we didn't had any response, just use the reasoning --- agent/agent.go | 29 ++++++++++++++++++++++++++++- 1 file changed, 28 insertions(+), 1 deletion(-) diff --git a/agent/agent.go b/agent/agent.go index fa8e4dc..e6f896c 100644 --- a/agent/agent.go +++ b/agent/agent.go @@ -317,6 +317,14 @@ func (a *Agent) consumeJob(job *Job, role string) { } } + // decode the response + replyResponse := action.ReplyResponse{} + + if err := params.actionParams.Unmarshal(&replyResponse); err != nil { + job.Result.Finish(fmt.Errorf("error unmarshalling reply response: %w", err)) + return + } + // If we have already a reply from the action, just return it. // Otherwise generate a full conversation to get a proper message response // if chosenAction.Definition().Name.Is(action.ReplyActionName) { @@ -356,13 +364,23 @@ func (a *Agent) consumeJob(job *Job, role string) { } // Generate a human-readable response + // resp, err := a.client.CreateChatCompletion(ctx, + // openai.ChatCompletionRequest{ + // Model: a.options.LLMAPI.Model, + // Messages: append(a.currentConversation, + // openai.ChatCompletionMessage{ + // Role: "system", + // Content: "Assistant thought: " + replyResponse.Message, + // }, + // ), + // }, + // ) resp, err := a.client.CreateChatCompletion(ctx, openai.ChatCompletionRequest{ Model: a.options.LLMAPI.Model, Messages: a.currentConversation, }, ) - if err != nil { job.Result.Finish(err) return @@ -376,6 +394,15 @@ func (a *Agent) consumeJob(job *Job, role string) { // display OpenAI's response to the original question utilizing our function msg := resp.Choices[0].Message + // If we didn't got any message, we can use the response from the action + if chosenAction.Definition().Name.Is(action.ReplyActionName) && msg.Content == "" { + if a.options.debugMode { + fmt.Println("No output returned from conversation, using the action response as a reply.") + } + + msg.Content = replyResponse.Message + } + a.currentConversation = append(a.currentConversation, msg) job.Result.SetResponse(msg.Content) job.Result.Finish(nil) From 90fd130e31e9ef9caebb545599d85e3b2d77616c Mon Sep 17 00:00:00 2001 From: mudler Date: Sat, 6 Apr 2024 15:20:45 +0200 Subject: [PATCH 046/399] comments --- agent/agent.go | 2 ++ example/webui/main.go | 13 ++++++++++--- 2 files changed, 12 insertions(+), 3 deletions(-) diff --git a/agent/agent.go b/agent/agent.go index e6f896c..3aa3aa6 100644 --- a/agent/agent.go +++ b/agent/agent.go @@ -226,6 +226,8 @@ func (a *Agent) consumeJob(job *Job, role string) { } if chosenAction == nil { + // If no action was picked up, the reasoning is the message returned by the assistant + // so we can consume it as if it was a reply. //job.Result.SetResult(ActionState{ActionCurrentState{nil, nil, "No action to do, just reply"}, ""}) //job.Result.Finish(fmt.Errorf("no action to do"))\ a.currentConversation = append(a.currentConversation, openai.ChatCompletionMessage{ diff --git a/example/webui/main.go b/example/webui/main.go index f8d905f..fa601b1 100644 --- a/example/webui/main.go +++ b/example/webui/main.go @@ -69,7 +69,12 @@ func main() { WithAgentResultCallback(func(state ActionState) { text := fmt.Sprintf(`Reasoning: %s Action taken: %+v - Result: %s`, state.Reasoning, state.ActionCurrentState.Action.Definition().Name, state.Result) + Parameters: %+v + Result: %s`, + state.Reasoning, + state.ActionCurrentState.Action.Definition().Name, + state.ActionCurrentState.Params, + state.Result) sseManager.Send( sse.NewMessage( htmlIfy( @@ -183,14 +188,16 @@ func (a *App) Chat(m sse.Manager) func(w http.ResponseWriter, r *http.Request) { res := agentInstance.Ask( WithText(query), ) + fmt.Println("response is", res.Response) m.Send( sse.NewMessage( chatDiv(res.Response, "red"), ).WithEvent("messages")) - + result := `done` + _, _ = w.Write([]byte(result)) }() - result := `message received` + result := `loading` _, _ = w.Write([]byte(result)) } } From 84c56f6c3ea4b1c953c8064982417e9c71104fde Mon Sep 17 00:00:00 2001 From: mudler Date: Sat, 6 Apr 2024 16:08:04 +0200 Subject: [PATCH 047/399] Allow to initiate new conversations --- action/newconversation.go | 35 +++++++++++++++++++++++ agent/actions.go | 11 ++++++-- agent/agent.go | 58 ++++++++++++++++++++++++++++++++++----- agent/options.go | 6 ++++ 4 files changed, 101 insertions(+), 9 deletions(-) create mode 100644 action/newconversation.go diff --git a/action/newconversation.go b/action/newconversation.go new file mode 100644 index 0000000..b8439bc --- /dev/null +++ b/action/newconversation.go @@ -0,0 +1,35 @@ +package action + +import ( + "github.com/sashabaranov/go-openai/jsonschema" +) + +const ConversationActionName = "new_conversation" + +func NewConversation() *ConversationAction { + return &ConversationAction{} +} + +type ConversationAction struct{} + +type ConversationActionResponse struct { + Message string `json:"message"` +} + +func (a *ConversationAction) Run(ActionParams) (string, error) { + return "no-op", nil +} + +func (a *ConversationAction) Definition() ActionDefinition { + return ActionDefinition{ + Name: ConversationActionName, + Description: "Use this tool to initiate a new conversation or to notify something.", + Properties: map[string]jsonschema.Definition{ + "message": { + Type: jsonschema.String, + Description: "The message to start the conversation", + }, + }, + Required: []string{"message"}, + } +} diff --git a/agent/actions.go b/agent/actions.go index 0c50127..2d20a3c 100644 --- a/agent/actions.go +++ b/agent/actions.go @@ -137,10 +137,17 @@ func (a *Agent) generateParameters(ctx context.Context, pickTemplate string, act func (a *Agent) systemInternalActions() Actions { if a.options.enableHUD { - return append(a.options.userActions, action.NewState(), action.NewReply()) + return append(a.options.userActions, + action.NewState(), action.NewReply()) } - return append(a.options.userActions, action.NewReply()) + if a.options.initiateConversations && a.selfEvaluationInProgress { // && self-evaluation.. + return append(a.options.userActions, + action.NewState(), action.NewReply(), action.NewConversation()) + } + + return append(a.options.userActions, + action.NewReply()) } func (a *Agent) prepareHUD() PromptHUD { diff --git a/agent/agent.go b/agent/agent.go index 3aa3aa6..d86d279 100644 --- a/agent/agent.go +++ b/agent/agent.go @@ -27,10 +27,13 @@ type Agent struct { actionContext *action.ActionContext context *action.ActionContext - currentReasoning string - currentState *action.StateResult - nextAction Action - currentConversation []openai.ChatCompletionMessage + currentReasoning string + currentState *action.StateResult + nextAction Action + currentConversation []openai.ChatCompletionMessage + selfEvaluationInProgress bool + + newConversations chan openai.ChatCompletionMessage } func New(opts ...Option) (*Agent, error) { @@ -180,13 +183,21 @@ func (a *Agent) consumeJob(job *Job, role string) { // Set the action context ctx, cancel := context.WithCancel(context.Background()) a.actionContext = action.NewContext(ctx, cancel) + a.selfEvaluationInProgress = selfEvaluation a.Unlock() - if job.Image != "" { - // TODO: Use llava to explain the image content - + if selfEvaluation { + defer func() { + a.Lock() + a.selfEvaluationInProgress = false + a.Unlock() + }() } + //if job.Image != "" { + // TODO: Use llava to explain the image content + //} + if job.Text != "" { a.currentConversation = append(a.currentConversation, openai.ChatCompletionMessage{ Role: role, @@ -265,6 +276,32 @@ func (a *Agent) consumeJob(job *Job, role string) { return } + if selfEvaluation && a.options.initiateConversations && + chosenAction.Definition().Name.Is(action.ConversationActionName) { + + message := action.ConversationActionResponse{} + if err := params.actionParams.Unmarshal(&message); err != nil { + job.Result.Finish(fmt.Errorf("error unmarshalling conversation response: %w", err)) + return + } + + a.currentConversation = []openai.ChatCompletionMessage{ + { + Role: "assistant", + Content: message.Message, + }, + } + go func() { + a.newConversations <- openai.ChatCompletionMessage{ + Role: "assistant", + Content: message.Message, + } + }() + job.Result.SetResponse("decided to initiate a new conversation") + job.Result.Finish(nil) + return + } + // If we don't have to reply , run the action! if !chosenAction.Definition().Name.Is(action.ReplyActionName) { result, err := a.runAction(chosenAction, params) @@ -411,6 +448,13 @@ func (a *Agent) consumeJob(job *Job, role string) { } func (a *Agent) periodicallyRun() { + // This is running in the background. + + // TODO: Would be nice if we have a special action to + // contact the user. This would actually make sure that + // if the agent wants to initiate a conversation, it can do so. + // This would be a special action that would be picked up by the agent + // and would be used to contact the user. if a.options.debugMode { fmt.Println("START -- Periodically run is starting") diff --git a/agent/options.go b/agent/options.go index 0f8f75a..ca7f528 100644 --- a/agent/options.go +++ b/agent/options.go @@ -21,6 +21,7 @@ type options struct { userActions Actions enableHUD, standaloneJob, showCharacter bool debugMode bool + initiateConversations bool characterfile string statefile string context context.Context @@ -64,6 +65,11 @@ var EnableHUD = func(o *options) error { return nil } +var EnableInitiateConversations = func(o *options) error { + o.initiateConversations = true + return nil +} + var DebugMode = func(o *options) error { o.debugMode = true return nil From 215c3ddbf731b6d1aec05996f1cc453cc89a11b0 Mon Sep 17 00:00:00 2001 From: mudler Date: Sat, 6 Apr 2024 16:16:09 +0200 Subject: [PATCH 048/399] UI: block messages while agent is replying, visualize status --- example/webui/index.html | 3 ++- example/webui/main.go | 15 +++++++++++---- 2 files changed, 13 insertions(+), 5 deletions(-) diff --git a/example/webui/index.html b/example/webui/index.html index c1be3ca..9077098 100644 --- a/example/webui/index.html +++ b/example/webui/index.html @@ -51,6 +51,7 @@
+
@@ -65,7 +66,7 @@
-
Loading...
diff --git a/example/webui/main.go b/example/webui/main.go index fa601b1..6131a35 100644 --- a/example/webui/main.go +++ b/example/webui/main.go @@ -193,12 +193,19 @@ func (a *App) Chat(m sse.Manager) func(w http.ResponseWriter, r *http.Request) { sse.NewMessage( chatDiv(res.Response, "red"), ).WithEvent("messages")) - result := `done` - _, _ = w.Write([]byte(result)) + m.Send( + sse.NewMessage( + "", + ).WithEvent("message_status")) + + //result := `done` + // _, _ = w.Write([]byte(result)) }() - result := `loading` - _, _ = w.Write([]byte(result)) + m.Send( + sse.NewMessage( + chatDiv("...", "red") + "", + ).WithEvent("message_status")) } } From 015b26096ff99f87d109f4afe4102c9aadb8b4fe Mon Sep 17 00:00:00 2001 From: mudler Date: Sat, 6 Apr 2024 20:37:09 +0200 Subject: [PATCH 049/399] wip animation --- example/webui/index.html | 38 ++++++++++++++++++++++++++++++++++++++ example/webui/main.go | 2 +- 2 files changed, 39 insertions(+), 1 deletion(-) diff --git a/example/webui/index.html b/example/webui/index.html index 9077098..74445aa 100644 --- a/example/webui/index.html +++ b/example/webui/index.html @@ -22,6 +22,44 @@ .htmx-request .htmx-indicator{ opacity:1 } + /* https://cssloaders.github.io/ */ + .loader { + width: 4px; + height: 20px; + border-radius: 4px; + display: block; + margin: 20px auto; + position: relative; + background: currentColor; + color: #FFF; + box-sizing: border-box; + animation: animloader 0.3s 0.3s linear infinite alternate; +} + +.loader::after, .loader::before { + content: ''; + width: 4px; + height: 20px; + border-radius: 4px; + background: currentColor; + position: absolute; + top: 50%; + transform: translateY(-50%); + left: 20px; + box-sizing: border-box; + animation: animloader 0.3s 0.45s linear infinite alternate; +} +.loader::before { + left: -20px; + animation-delay: 0s; +} + +@keyframes animloader { + 0% { height: 24px} + 100% { height: 2px} +} + + diff --git a/example/webui/main.go b/example/webui/main.go index 6131a35..7e18435 100644 --- a/example/webui/main.go +++ b/example/webui/main.go @@ -204,7 +204,7 @@ func (a *App) Chat(m sse.Manager) func(w http.ResponseWriter, r *http.Request) { m.Send( sse.NewMessage( - chatDiv("...", "red") + "", + `
`, ).WithEvent("message_status")) } } From 8ceaab2ac10d764aa9844ff448c02e36b618e618 Mon Sep 17 00:00:00 2001 From: Ettore Di Giacinto Date: Sun, 7 Apr 2024 00:15:48 +0200 Subject: [PATCH 050/399] enhance webui graphics --- agent/agent.go | 4 +- example/webui/elements.go | 14 ++++++- example/webui/index.html | 88 +++++++++++++++------------------------ example/webui/main.go | 8 ++-- 4 files changed, 52 insertions(+), 62 deletions(-) diff --git a/agent/agent.go b/agent/agent.go index d86d279..117b41d 100644 --- a/agent/agent.go +++ b/agent/agent.go @@ -30,7 +30,7 @@ type Agent struct { currentReasoning string currentState *action.StateResult nextAction Action - currentConversation []openai.ChatCompletionMessage + currentConversation Messages selfEvaluationInProgress bool newConversations chan openai.ChatCompletionMessage @@ -392,7 +392,7 @@ func (a *Agent) consumeJob(job *Job, role string) { job.Result.Finish(fmt.Errorf("error renderTemplate: %w", err)) return } - if !Messages(a.currentConversation).Exist(prompt) { + if !a.currentConversation.Exist(prompt) { a.currentConversation = append([]openai.ChatCompletionMessage{ { Role: "system", diff --git a/example/webui/elements.go b/example/webui/elements.go index df2b2a0..a3a1bd2 100644 --- a/example/webui/elements.go +++ b/example/webui/elements.go @@ -3,5 +3,17 @@ package main import "fmt" func chatDiv(content string, color string) string { - return fmt.Sprintf(`
%s
`, color, htmlIfy(content)) + return fmt.Sprintf(`
%s
`, color, htmlIfy(content)) +} + +func loader() string { + return `
` +} + +func inputMessageDisabled(disabled bool) string { + if disabled { + return `` + } + + return `` } diff --git a/example/webui/index.html b/example/webui/index.html index 74445aa..9e542ea 100644 --- a/example/webui/index.html +++ b/example/webui/index.html @@ -1,5 +1,3 @@ - - @@ -22,93 +20,73 @@ .htmx-request .htmx-indicator{ opacity:1 } - /* https://cssloaders.github.io/ */ .loader { - width: 4px; - height: 20px; - border-radius: 4px; - display: block; - margin: 20px auto; - position: relative; - background: currentColor; - color: #FFF; - box-sizing: border-box; - animation: animloader 0.3s 0.3s linear infinite alternate; -} + width: 12px; + height: 12px; + border-radius: 50%; + display: block; + margin:15px auto; + position: relative; + color: #FFF; + box-sizing: border-box; + animation: animloader 2s linear infinite; + } -.loader::after, .loader::before { - content: ''; - width: 4px; - height: 20px; - border-radius: 4px; - background: currentColor; - position: absolute; - top: 50%; - transform: translateY(-50%); - left: 20px; - box-sizing: border-box; - animation: animloader 0.3s 0.45s linear infinite alternate; -} -.loader::before { - left: -20px; - animation-delay: 0s; -} - -@keyframes animloader { - 0% { height: 24px} - 100% { height: 2px} -} - - + @keyframes animloader { + 0% { box-shadow: 14px 0 0 -2px, 38px 0 0 -2px, -14px 0 0 -2px, -38px 0 0 -2px; } + 25% { box-shadow: 14px 0 0 -2px, 38px 0 0 -2px, -14px 0 0 -2px, -38px 0 0 2px; } + 50% { box-shadow: 14px 0 0 -2px, 38px 0 0 -2px, -14px 0 0 2px, -38px 0 0 -2px; } + 75% { box-shadow: 14px 0 0 2px, 38px 0 0 -2px, -14px 0 0 -2px, -38px 0 0 -2px; } + 100% { box-shadow: 14px 0 0 -2px, 38px 0 0 2px, -14px 0 0 -2px, -38px 0 0 -2px; } + } - -
+ +
-
+

Talk to '{{.Character.Name}}'

-
+

Clients:

-
+
-
+
-
+

Status:

-
+
-
+
- -
-
+
+
- -
+

Agent:

-
+
-
+
+ class="p-2 border rounded w-full bg-gray-600 text-white placeholder-gray-300" placeholder="Type a message..." _="on htmx:afterRequest set my value to ''">
Loading...
+
diff --git a/example/webui/main.go b/example/webui/main.go index 7e18435..102f566 100644 --- a/example/webui/main.go +++ b/example/webui/main.go @@ -181,7 +181,7 @@ func (a *App) Chat(m sse.Manager) func(w http.ResponseWriter, r *http.Request) { } m.Send( sse.NewMessage( - chatDiv(query, "blue"), + chatDiv(query, "gray"), ).WithEvent("messages")) go func() { @@ -191,11 +191,11 @@ func (a *App) Chat(m sse.Manager) func(w http.ResponseWriter, r *http.Request) { fmt.Println("response is", res.Response) m.Send( sse.NewMessage( - chatDiv(res.Response, "red"), + chatDiv(res.Response, "blue"), ).WithEvent("messages")) m.Send( sse.NewMessage( - "", + inputMessageDisabled(false), // show again the input ).WithEvent("message_status")) //result := `done` @@ -204,7 +204,7 @@ func (a *App) Chat(m sse.Manager) func(w http.ResponseWriter, r *http.Request) { m.Send( sse.NewMessage( - `
`, + loader() + inputMessageDisabled(true), ).WithEvent("message_status")) } } From dc72904cee070c8bb221f2ec6595c91796924c85 Mon Sep 17 00:00:00 2001 From: Ettore Di Giacinto Date: Sun, 7 Apr 2024 00:16:02 +0200 Subject: [PATCH 051/399] add agentpool --- example/webui/agentpool.go | 148 +++++++++++++++++++++++++++++++++++++ 1 file changed, 148 insertions(+) create mode 100644 example/webui/agentpool.go diff --git a/example/webui/agentpool.go b/example/webui/agentpool.go new file mode 100644 index 0000000..b0ecb73 --- /dev/null +++ b/example/webui/agentpool.go @@ -0,0 +1,148 @@ +package main + +import ( + "encoding/json" + "fmt" + "os" + + . "github.com/mudler/local-agent-framework/agent" +) + +type AgentConfig struct { +} + +type AgentPool struct { + file string + pool AgentPoolData + agents map[string]*Agent +} + +type AgentPoolData map[string]AgentConfig + +func NewAgentPool(file string) (*AgentPool, error) { + // if file exists, try to load an existing pool. + // if file does not exist, create a new pool. + + if _, err := os.Stat(file); err != nil { + // file does not exist, create a new pool + return &AgentPool{ + file: file, + agents: make(map[string]*Agent), + pool: make(map[string]AgentConfig), + }, nil + } + + poolData, err := loadPoolFromFile(file) + if err != nil { + return nil, err + } + return &AgentPool{ + file: file, + agents: make(map[string]*Agent), + pool: *poolData, + }, nil +} + +// CreateAgent adds a new agent to the pool +// and starts it. +// It also saves the state to the file. +func (a *AgentPool) CreateAgent(name string, agentConfig *AgentConfig) error { + if _, ok := a.pool[name]; ok { + return fmt.Errorf("agent %s already exists", name) + } + a.pool[name] = *agentConfig + if err := a.Save(); err != nil { + return err + } + + return a.startAgentWithConfig(name, agentConfig) +} + +func (a *AgentPool) startAgentWithConfig(name string, config *AgentConfig) error { + + agent, err := New( + WithModel("hermes-2-pro-mistral"), + ) + if err != nil { + return err + } + + a.agents[name] = agent + + go func() { + if err := agent.Run(); err != nil { + panic(err) + } + }() + + return nil +} + +// Starts all the agents in the pool +func (a *AgentPool) StartAll() error { + for name, config := range a.pool { + if a.agents[name] != nil { // Agent already started + continue + } + if err := a.startAgentWithConfig(name, &config); err != nil { + return err + } + } + return nil +} + +func (a *AgentPool) StopAll() { + for _, agent := range a.agents { + agent.Stop() + } +} + +func (a *AgentPool) Stop(name string) { + if agent, ok := a.agents[name]; ok { + agent.Stop() + } +} + +func (a *AgentPool) Start(name string) error { + if agent, ok := a.agents[name]; ok { + return agent.Run() + } + if config, ok := a.pool[name]; ok { + return a.startAgentWithConfig(name, &config) + } + + return fmt.Errorf("agent %s not found", name) +} + +func (a *AgentPool) Remove(name string) error { + a.Stop(name) + delete(a.agents, name) + delete(a.pool, name) + if err := a.Save(); err != nil { + return err + } + return nil +} + +func (a *AgentPool) Save() error { + data, err := json.Marshal(a.pool) + if err != nil { + return err + } + return os.WriteFile(a.file, data, 0644) +} + +func (a *AgentPool) GetAgent(name string) *Agent { + return a.agents[name] +} + +func loadPoolFromFile(path string) (*AgentPoolData, error) { + data, err := os.ReadFile(path) + if err != nil { + return nil, err + } + + poolData := &AgentPoolData{} + err = json.Unmarshal(data, poolData) + return poolData, err +} From 27202c3622c151313916cc76fa590b83190f7d0d Mon Sep 17 00:00:00 2001 From: Ettore Di Giacinto Date: Sun, 7 Apr 2024 00:17:37 +0200 Subject: [PATCH 052/399] comments --- example/webui/index.html | 1 + 1 file changed, 1 insertion(+) diff --git a/example/webui/index.html b/example/webui/index.html index 9e542ea..d67d566 100644 --- a/example/webui/index.html +++ b/example/webui/index.html @@ -20,6 +20,7 @@ .htmx-request .htmx-indicator{ opacity:1 } + /* Loader (https://cssloaders.github.io/) */ .loader { width: 12px; height: 12px; From 23867bf0e6f4446e6ccd8ef9103b6dae6fea053c Mon Sep 17 00:00:00 2001 From: Ettore Di Giacinto Date: Sun, 7 Apr 2024 00:22:17 +0200 Subject: [PATCH 053/399] fixups --- example/webui/agentpool.go | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/example/webui/agentpool.go b/example/webui/agentpool.go index b0ecb73..17aec71 100644 --- a/example/webui/agentpool.go +++ b/example/webui/agentpool.go @@ -8,7 +8,16 @@ import ( . "github.com/mudler/local-agent-framework/agent" ) +type ConnectorConfig struct { + Type string `json:"type"` // e.g. Slack + Config map[string]interface{} `json:"config"` +} + +type ActionsConfig string + type AgentConfig struct { + Connector []ConnectorConfig `json:"connector"` + Actions []ActionsConfig `json:"actions"` } type AgentPool struct { From 59b91d1403637ea16d6c8e775cd94caed766ceab Mon Sep 17 00:00:00 2001 From: mudler Date: Sun, 7 Apr 2024 20:13:28 +0200 Subject: [PATCH 054/399] Initiate agents from pool --- agent/agent.go | 11 ++++-- agent/options.go | 14 +++++++ example/webui/agentpool.go | 78 +++++++++++++++++++++++++++++++++++--- 3 files changed, 93 insertions(+), 10 deletions(-) diff --git a/agent/agent.go b/agent/agent.go index 117b41d..29b00a1 100644 --- a/agent/agent.go +++ b/agent/agent.go @@ -39,10 +39,7 @@ type Agent struct { func New(opts ...Option) (*Agent, error) { options, err := newOptions(opts...) if err != nil { - if err != nil { - err = fmt.Errorf("failed to set options: %v", err) - } - return nil, err + return nil, fmt.Errorf("failed to set options: %v", err) } client := llm.NewClient(options.LLMAPI.APIKey, options.LLMAPI.APIURL) @@ -126,6 +123,12 @@ func (a *Agent) CurrentConversation() []openai.ChatCompletionMessage { return a.currentConversation } +func (a *Agent) SetConversation(conv []openai.ChatCompletionMessage) { + a.Lock() + defer a.Unlock() + a.currentConversation = conv +} + func (a *Agent) ResetConversation() { a.Lock() defer a.Unlock() diff --git a/agent/options.go b/agent/options.go index ca7f528..beb2575 100644 --- a/agent/options.go +++ b/agent/options.go @@ -94,6 +94,20 @@ func WithLLMAPIURL(url string) Option { } } +func WithStateFile(path string) Option { + return func(o *options) error { + o.statefile = path + return nil + } +} + +func WithCharacterFile(path string) Option { + return func(o *options) error { + o.characterfile = path + return nil + } +} + func WithLLMAPIKey(key string) Option { return func(o *options) error { o.LLMAPI.APIKey = key diff --git a/example/webui/agentpool.go b/example/webui/agentpool.go index 17aec71..b1b5e66 100644 --- a/example/webui/agentpool.go +++ b/example/webui/agentpool.go @@ -16,8 +16,54 @@ type ConnectorConfig struct { type ActionsConfig string type AgentConfig struct { - Connector []ConnectorConfig `json:"connector"` - Actions []ActionsConfig `json:"actions"` + Connector []ConnectorConfig `json:"connector"` + Actions []ActionsConfig `json:"actions"` + StateFile string `json:"state_file"` + CharacterFile string `json:"character_file"` + // This is what needs to be part of ActionsConfig + + // WithLLMAPIURL(apiModel), + // WithModel(testModel), + // EnableHUD, + // DebugMode, + // EnableStandaloneJob, + // WithAgentReasoningCallback(func(state ActionCurrentState) bool { + // sseManager.Send( + // sse.NewMessage( + // fmt.Sprintf(`Thinking: %s`, htmlIfy(state.Reasoning)), + // ).WithEvent("status"), + // ) + // return true + // }), + // WithActions(external.NewSearch(3)), + // WithAgentResultCallback(func(state ActionState) { + // text := fmt.Sprintf(`Reasoning: %s + // Action taken: %+v + // Parameters: %+v + // Result: %s`, + // state.Reasoning, + // state.ActionCurrentState.Action.Definition().Name, + // state.ActionCurrentState.Params, + // state.Result) + // sseManager.Send( + // sse.NewMessage( + // htmlIfy( + // text, + // ), + // ).WithEvent("status"), + // ) + // }), + // WithRandomIdentity(), + // WithPeriodicRuns("10m"), + + APIURL string `json:"api_url"` + Model string `json:"model"` + HUD bool `json:"hud"` + Debug bool `json:"debug"` + StandaloneJob bool `json:"standalone_job"` + RandomIdentity bool `json:"random_identity"` + IdentityGuidance string `json:"identity_guidance"` + PeriodicRuns string `json:"periodic_runs"` } type AgentPool struct { @@ -68,10 +114,30 @@ func (a *AgentPool) CreateAgent(name string, agentConfig *AgentConfig) error { } func (a *AgentPool) startAgentWithConfig(name string, config *AgentConfig) error { - - agent, err := New( - WithModel("hermes-2-pro-mistral"), - ) + opts := []Option{ + WithModel(config.Model), + WithLLMAPIURL(config.APIURL), + WithPeriodicRuns(config.PeriodicRuns), + WithStateFile(config.StateFile), + WithCharacterFile(config.StateFile), + } + if config.HUD { + opts = append(opts, EnableHUD) + } + if config.Debug { + opts = append(opts, DebugMode) + } + if config.StandaloneJob { + opts = append(opts, EnableStandaloneJob) + } + if config.RandomIdentity { + if config.IdentityGuidance != "" { + opts = append(opts, WithRandomIdentity(config.IdentityGuidance)) + } else { + opts = append(opts, WithRandomIdentity()) + } + } + agent, err := New(opts...) if err != nil { return err } From 8db36b461989317062d99a26e56273da6998baa4 Mon Sep 17 00:00:00 2001 From: mudler Date: Sun, 7 Apr 2024 20:13:40 +0200 Subject: [PATCH 055/399] use go-fiber --- example/webui/{index.html => chat.html} | 8 +- example/webui/main.go | 67 ++++--- example/webui/sse.go | 224 ++++++++++++++++++++++++ go.mod | 18 +- go.sum | 34 +++- 5 files changed, 315 insertions(+), 36 deletions(-) rename example/webui/{index.html => chat.html} (94%) create mode 100644 example/webui/sse.go diff --git a/example/webui/index.html b/example/webui/chat.html similarity index 94% rename from example/webui/index.html rename to example/webui/chat.html index d67d566..360b14a 100644 --- a/example/webui/index.html +++ b/example/webui/chat.html @@ -42,8 +42,8 @@ } - -
+ +

Talk to '{{.Character.Name}}'

@@ -68,7 +68,6 @@
-
@@ -82,9 +81,10 @@
+
-
Loading...
+
diff --git a/example/webui/main.go b/example/webui/main.go index 102f566..5ff68af 100644 --- a/example/webui/main.go +++ b/example/webui/main.go @@ -12,7 +12,9 @@ import ( "github.com/donseba/go-htmx" "github.com/donseba/go-htmx/sse" + fiber "github.com/gofiber/fiber/v3" external "github.com/mudler/local-agent-framework/external" + "github.com/valyala/fasthttp/fasthttpadaptor" . "github.com/mudler/local-agent-framework/agent" ) @@ -24,7 +26,7 @@ type ( ) var ( - sseManager sse.Manager + sseManager Manager ) var testModel = os.Getenv("TEST_MODEL") var apiModel = os.Getenv("API_MODEL") @@ -94,7 +96,7 @@ func main() { defer agent.Stop() agentInstance = agent - sseManager = sse.NewManager(5) + sseManager = NewManager(5) go func() { for { @@ -105,40 +107,53 @@ func main() { } time.Sleep(1 * time.Second) // Send a message every seconds - sseManager.Send(sse.NewMessage(fmt.Sprintf("connected clients: %v", clientsStr)).WithEvent("clients")) + sseManager.Send(NewMessage(fmt.Sprintf("connected clients: %v", clientsStr)).WithEvent("clients")) } }() go func() { for { time.Sleep(1 * time.Second) // Send a message every seconds - sseManager.Send(sse.NewMessage( + sseManager.Send(NewMessage( htmlIfy(agent.State().String()), ).WithEvent("hud")) } }() - mux := http.NewServeMux() + // Initialize a new Fiber app + webapp := fiber.New() - mux.Handle("GET /", http.HandlerFunc(app.Home(agent))) + // Define a route for the GET method on the root path '/' + webapp.Get("/sse", func(c fiber.Ctx) error { + sseManager.Handle(c, NewClient(randStringRunes(10))) + return nil + }) + webapp.Get("/notify", wrapHandler(http.HandlerFunc(app.Notify))) + webapp.Post("/chat", wrapHandler(http.HandlerFunc(app.Chat(sseManager)))) + webapp.Get("/talk", wrapHandler(http.HandlerFunc(app.Home(agent)))) + log.Fatal(webapp.Listen(":3000")) - // External notifications (e.g. webhook) - mux.Handle("POST /notify", http.HandlerFunc(app.Notify)) + // mux := http.NewServeMux() - // User chat - mux.Handle("POST /chat", http.HandlerFunc(app.Chat(sseManager))) + // mux.Handle("GET /", http.HandlerFunc(app.Home(agent))) - // Server Sent Events - mux.Handle("GET /sse", http.HandlerFunc(app.SSE)) + // // External notifications (e.g. webhook) + // mux.Handle("POST /notify", http.HandlerFunc(app.Notify)) - fmt.Print("Server started at http://localhost:3210") - err = http.ListenAndServe(":3210", mux) - log.Fatal(err) + // // User chat + // mux.Handle("POST /chat", http.HandlerFunc(app.Chat(sseManager))) + + // // Server Sent Events + // //mux.Handle("GET /sse", http.HandlerFunc(app.SSE)) + + // fmt.Print("Server started at http://localhost:3210") + // err = http.ListenAndServe(":3210", mux) + // log.Fatal(err) } func (a *App) Home(agent *Agent) func(w http.ResponseWriter, r *http.Request) { return func(w http.ResponseWriter, r *http.Request) { - tmpl, err := template.ParseFiles("index.html") + tmpl, err := template.ParseFiles("chat.html") if err != nil { http.Error(w, err.Error(), http.StatusInternalServerError) return @@ -153,11 +168,10 @@ func (a *App) Home(agent *Agent) func(w http.ResponseWriter, r *http.Request) { } } -func (a *App) SSE(w http.ResponseWriter, r *http.Request) { - cl := sse.NewClient(randStringRunes(10)) - - sseManager.Handle(w, r, cl) -} +// func (a *App) SSE(w http.ResponseWriter, r *http.Request) { +// cl := sse.NewClient(randStringRunes(10)) +// sseManager.Handle(w, r, cl) +// } func (a *App) Notify(w http.ResponseWriter, r *http.Request) { query := strings.ToLower(r.PostFormValue("message")) @@ -172,7 +186,14 @@ func (a *App) Notify(w http.ResponseWriter, r *http.Request) { _, _ = w.Write([]byte("Message sent")) } -func (a *App) Chat(m sse.Manager) func(w http.ResponseWriter, r *http.Request) { +func wrapHandler(f func(http.ResponseWriter, *http.Request)) func(ctx fiber.Ctx) error { + return func(ctx fiber.Ctx) error { + fasthttpadaptor.NewFastHTTPHandler(http.HandlerFunc(f))(ctx.Context()) + return nil + } +} + +func (a *App) Chat(m Manager) func(w http.ResponseWriter, r *http.Request) { return func(w http.ResponseWriter, r *http.Request) { query := strings.ToLower(r.PostFormValue("message")) if query == "" { @@ -180,7 +201,7 @@ func (a *App) Chat(m sse.Manager) func(w http.ResponseWriter, r *http.Request) { return } m.Send( - sse.NewMessage( + NewMessage( chatDiv(query, "gray"), ).WithEvent("messages")) diff --git a/example/webui/sse.go b/example/webui/sse.go new file mode 100644 index 0000000..391d65b --- /dev/null +++ b/example/webui/sse.go @@ -0,0 +1,224 @@ +package main + +import ( + "bufio" + "fmt" + "strings" + "sync" + "time" + + "github.com/gofiber/fiber/v3" + "github.com/valyala/fasthttp" +) + +type ( + // Listener defines the interface for the receiving end. + Listener interface { + ID() string + Chan() chan Envelope + } + + // Envelope defines the interface for content that can be broadcast to clients. + Envelope interface { + String() string // Represent the envelope contents as a string for transmission. + } + + // Manager defines the interface for managing clients and broadcasting messages. + Manager interface { + Send(message Envelope) + Handle(ctx fiber.Ctx, cl Listener) + Clients() []string + } + + History interface { + Add(message Envelope) // Add adds a message to the history. + Send(c Listener) // Send sends the history to a client. + } +) + +type Client struct { + id string + ch chan Envelope +} + +func NewClient(id string) Listener { + return &Client{ + id: id, + ch: make(chan Envelope, 50), + } +} + +func (c *Client) ID() string { return c.id } +func (c *Client) Chan() chan Envelope { return c.ch } + +// Message represents a simple message implementation. +type Message struct { + Event string + Time time.Time + Data string +} + +// NewMessage returns a new message instance. +func NewMessage(data string) *Message { + return &Message{ + Data: data, + Time: time.Now(), + } +} + +// String returns the message as a string. +func (m *Message) String() string { + sb := strings.Builder{} + + if m.Event != "" { + sb.WriteString(fmt.Sprintf("event: %s\n", m.Event)) + } + sb.WriteString(fmt.Sprintf("data: %v\n\n", m.Data)) + + return sb.String() +} + +// WithEvent sets the event name for the message. +func (m *Message) WithEvent(event string) Envelope { + m.Event = event + return m +} + +// broadcastManager manages the clients and broadcasts messages to them. +type broadcastManager struct { + clients sync.Map + broadcast chan Envelope + workerPoolSize int + messageHistory *history +} + +// NewManager initializes and returns a new Manager instance. +func NewManager(workerPoolSize int) Manager { + manager := &broadcastManager{ + broadcast: make(chan Envelope), + workerPoolSize: workerPoolSize, + messageHistory: newHistory(10), + } + + manager.startWorkers() + + return manager +} + +// Send broadcasts a message to all connected clients. +func (manager *broadcastManager) Send(message Envelope) { + manager.broadcast <- message +} + +// Handle sets up a new client and handles the connection. +func (manager *broadcastManager) Handle(c fiber.Ctx, cl Listener) { + + manager.register(cl) + ctx := c.Context() + + ctx.SetContentType("text/event-stream") + ctx.Response.Header.Set("Cache-Control", "no-cache") + ctx.Response.Header.Set("Connection", "keep-alive") + ctx.Response.Header.Set("Access-Control-Allow-Origin", "*") + ctx.Response.Header.Set("Access-Control-Allow-Headers", "Cache-Control") + ctx.Response.Header.Set("Access-Control-Allow-Credentials", "true") + + // Send history to the newly connected client + manager.messageHistory.Send(cl) + ctx.SetBodyStreamWriter(fasthttp.StreamWriter(func(w *bufio.Writer) { + for { + select { + case msg, ok := <-cl.Chan(): + if !ok { + // If the channel is closed, return from the function + return + } + _, err := fmt.Fprint(w, msg.String()) + if err != nil { + // If an error occurs (e.g., client has disconnected), return from the function + return + } + + w.Flush() + + case <-ctx.Done(): + manager.unregister(cl.ID()) + close(cl.Chan()) + return + } + } + })) +} + +// Clients method to list connected client IDs +func (manager *broadcastManager) Clients() []string { + var clients []string + manager.clients.Range(func(key, value any) bool { + id, ok := key.(string) + if ok { + clients = append(clients, id) + } + return true + }) + return clients +} + +// startWorkers starts worker goroutines for message broadcasting. +func (manager *broadcastManager) startWorkers() { + for i := 0; i < manager.workerPoolSize; i++ { + go func() { + for message := range manager.broadcast { + manager.clients.Range(func(key, value any) bool { + client, ok := value.(Listener) + if !ok { + return true // Continue iteration + } + select { + case client.Chan() <- message: + manager.messageHistory.Add(message) + default: + // If the client's channel is full, drop the message + } + return true // Continue iteration + }) + } + }() + } +} + +// register adds a client to the manager. +func (manager *broadcastManager) register(client Listener) { + manager.clients.Store(client.ID(), client) +} + +// unregister removes a client from the manager. +func (manager *broadcastManager) unregister(clientID string) { + manager.clients.Delete(clientID) +} + +type history struct { + messages []Envelope + maxSize int // Maximum number of messages to retain +} + +func newHistory(maxSize int) *history { + return &history{ + messages: []Envelope{}, + maxSize: maxSize, + } +} + +func (h *history) Add(message Envelope) { + h.messages = append(h.messages, message) + // Ensure history does not exceed maxSize + if len(h.messages) > h.maxSize { + // Remove the oldest messages to fit the maxSize + h.messages = h.messages[len(h.messages)-h.maxSize:] + } +} + +func (h *history) Send(c Listener) { + for _, msg := range h.messages { + c.Chan() <- msg + } +} diff --git a/go.mod b/go.mod index 8040f41..1b6b46f 100644 --- a/go.mod +++ b/go.mod @@ -5,22 +5,32 @@ go 1.22 toolchain go1.22.2 require ( + github.com/donseba/go-htmx v1.8.0 + github.com/gofiber/fiber/v3 v3.0.0-20240405062939-c8c51ee78331 github.com/onsi/ginkgo/v2 v2.15.0 github.com/onsi/gomega v1.31.1 + github.com/sap-nocops/duckduckgogo v0.0.0-20201102135645-176990152850 github.com/sashabaranov/go-openai v1.18.3 + github.com/valyala/fasthttp v1.52.0 ) require ( github.com/PuerkitoBio/goquery v1.6.0 // indirect + github.com/andybalholm/brotli v1.1.0 // indirect github.com/andybalholm/cascadia v1.1.0 // indirect - github.com/donseba/go-htmx v1.8.0 // indirect github.com/go-logr/logr v1.3.0 // indirect github.com/go-task/slim-sprig v0.0.0-20230315185526-52ccab3ef572 // indirect + github.com/gofiber/utils/v2 v2.0.0-beta.4 // indirect github.com/google/go-cmp v0.6.0 // indirect github.com/google/pprof v0.0.0-20210407192527-94a9f03dee38 // indirect - github.com/sap-nocops/duckduckgogo v0.0.0-20201102135645-176990152850 // indirect - golang.org/x/net v0.19.0 // indirect - golang.org/x/sys v0.15.0 // indirect + github.com/google/uuid v1.6.0 // indirect + github.com/klauspost/compress v1.17.7 // indirect + github.com/mattn/go-colorable v0.1.13 // indirect + github.com/mattn/go-isatty v0.0.20 // indirect + github.com/valyala/bytebufferpool v1.0.0 // indirect + github.com/valyala/tcplisten v1.0.0 // indirect + golang.org/x/net v0.21.0 // indirect + golang.org/x/sys v0.19.0 // indirect golang.org/x/text v0.14.0 // indirect golang.org/x/tools v0.16.1 // indirect gopkg.in/yaml.v3 v3.0.1 // indirect diff --git a/go.sum b/go.sum index 1cdbed1..08547df 100644 --- a/go.sum +++ b/go.sum @@ -1,5 +1,7 @@ github.com/PuerkitoBio/goquery v1.6.0 h1:j7taAbelrdcsOlGeMenZxc2AWXD5fieT1/znArdnx94= github.com/PuerkitoBio/goquery v1.6.0/go.mod h1:GsLWisAFVj4WgDibEWF4pvYnkVQBpKBKeU+7zCJoLcc= +github.com/andybalholm/brotli v1.1.0 h1:eLKJA0d02Lf0mVpIDgYnqXcUn0GqVmEFny3VuID1U3M= +github.com/andybalholm/brotli v1.1.0/go.mod h1:sms7XGricyQI9K10gOSf56VKKWS4oLer58Q+mhRPtnY= github.com/andybalholm/cascadia v1.1.0 h1:BuuO6sSfQNFRu1LppgbD25Hr2vLYW25JvxHs5zzsLTo= github.com/andybalholm/cascadia v1.1.0/go.mod h1:GsXiBklL0woXo1j/WYWtSYYC4ouU9PqHO0sqidkEA4Y= github.com/chzyer/logex v1.1.10/go.mod h1:+Ywpsq7O8HXn0nuIou7OrIPyXbp3wmkHB+jjWRnGsAI= @@ -14,13 +16,26 @@ github.com/go-logr/logr v1.3.0 h1:2y3SDp0ZXuc6/cjLSZ+Q3ir+QB9T/iG5yYRXqsagWSY= github.com/go-logr/logr v1.3.0/go.mod h1:9T104GzyrTigFIr8wt5mBrctHMim0Nb2HLGrmQ40KvY= github.com/go-task/slim-sprig v0.0.0-20230315185526-52ccab3ef572 h1:tfuBGBXKqDEevZMzYi5KSi8KkcZtzBcTgAUUtapy0OI= github.com/go-task/slim-sprig v0.0.0-20230315185526-52ccab3ef572/go.mod h1:9Pwr4B2jHnOSGXyyzV8ROjYa2ojvAY6HCGYYfMoC3Ls= +github.com/gofiber/fiber/v3 v3.0.0-20240405062939-c8c51ee78331 h1:kDxTNPKMIRz8q28+tJHL2p87Cjtmkfn/OsLfastmpaY= +github.com/gofiber/fiber/v3 v3.0.0-20240405062939-c8c51ee78331/go.mod h1:w7sdfTY0okjZ1oVH6rSOGvuACUIt0By1iK0HKUb3uqM= +github.com/gofiber/utils/v2 v2.0.0-beta.4 h1:1gjbVFFwVwUb9arPcqiB6iEjHBwo7cHsyS41NeIW3co= +github.com/gofiber/utils/v2 v2.0.0-beta.4/go.mod h1:sdRsPU1FXX6YiDGGxd+q2aPJRMzpsxdzCXo9dz+xtOY= github.com/golang/protobuf v1.5.3 h1:KhyjKVUg7Usr/dYsdSqoFveMYd5ko72D+zANwlG1mmg= github.com/golang/protobuf v1.5.3/go.mod h1:XVQd3VNwM+JqD3oG2Ue2ip4fOMUkwXdXDdiuN0vRsmY= github.com/google/go-cmp v0.6.0 h1:ofyhxvXcZhMsU5ulbFiLKl/XBFqE1GSq7atu8tAmTRI= github.com/google/go-cmp v0.6.0/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY= github.com/google/pprof v0.0.0-20210407192527-94a9f03dee38 h1:yAJXTCF9TqKcTiHJAE8dj7HMvPfh66eeA2JYW7eFpSE= github.com/google/pprof v0.0.0-20210407192527-94a9f03dee38/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE= +github.com/google/uuid v1.6.0 h1:NIvaJDMOsjHA8n1jAhLSgzrAzy1Hgr+hNrb57e+94F0= +github.com/google/uuid v1.6.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= github.com/ianlancetaylor/demangle v0.0.0-20200824232613-28f6c0f3b639/go.mod h1:aSSvb/t6k1mPoxDqO4vJh6VOCGPwU4O0C2/Eqndh1Sc= +github.com/klauspost/compress v1.17.7 h1:ehO88t2UGzQK66LMdE8tibEd1ErmzZjNEqWkjLAKQQg= +github.com/klauspost/compress v1.17.7/go.mod h1:Di0epgTjJY877eYKx5yC51cX2A2Vl2ibi7bDH9ttBbw= +github.com/mattn/go-colorable v0.1.13 h1:fFA4WZxdEF4tXPZVKMLwD8oUnCTTo08duU7wxecdEvA= +github.com/mattn/go-colorable v0.1.13/go.mod h1:7S9/ev0klgBDR4GtXTXX8a3vIGJpMovkB8vQcUbaXHg= +github.com/mattn/go-isatty v0.0.16/go.mod h1:kYGgaQfpe5nmfYZH+SKPsOc2e4SrIfOl2e/yFXSvRLM= +github.com/mattn/go-isatty v0.0.20 h1:xfD0iDuEKnDkl03q4limB+vH+GxLEtL/jb4xVJSWWEY= +github.com/mattn/go-isatty v0.0.20/go.mod h1:W+V8PltTTMOvKvAeJH7IuucS94S2C6jfK/D7dTCTo3Y= github.com/onsi/ginkgo/v2 v2.15.0 h1:79HwNRBAZHOEwrczrgSOPy+eFTTlIGELKy5as+ClttY= github.com/onsi/ginkgo/v2 v2.15.0/go.mod h1:HlxMHtYF57y6Dpf+mc5529KKmSq9h2FpCF+/ZkwUxKM= github.com/onsi/gomega v1.31.1 h1:KYppCUK+bUgAZwHOu7EXVBKyQA6ILvOESHkn/tgoqvo= @@ -32,17 +47,26 @@ github.com/sap-nocops/duckduckgogo v0.0.0-20201102135645-176990152850/go.mod h1: github.com/sashabaranov/go-openai v1.18.3 h1:dspFGkmZbhjg1059KhqLYSV2GaCiRIn+bOu50TlXUq8= github.com/sashabaranov/go-openai v1.18.3/go.mod h1:lj5b/K+zjTSFxVLijLSTDZuP7adOgerWeFyZLUhAKRg= github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= -github.com/stretchr/testify v1.6.1 h1:hDPOHmpOpP40lSULcqw7IrRb/u7w6RpDC9399XyoNd0= github.com/stretchr/testify v1.6.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= +github.com/stretchr/testify v1.9.0 h1:HtqpIVDClZ4nwg75+f6Lvsy/wHu+3BoSGCbBAcpTsTg= +github.com/stretchr/testify v1.9.0/go.mod h1:r2ic/lqez/lEtzL7wO/rwa5dbSLXVDPFyf8C91i36aY= +github.com/valyala/bytebufferpool v1.0.0 h1:GqA5TC/0021Y/b9FG4Oi9Mr3q7XYx6KllzawFIhcdPw= +github.com/valyala/bytebufferpool v1.0.0/go.mod h1:6bBcMArwyJ5K/AmCkWv1jt77kVWyCJ6HpOuEn7z0Csc= +github.com/valyala/fasthttp v1.52.0 h1:wqBQpxH71XW0e2g+Og4dzQM8pk34aFYlA1Ga8db7gU0= +github.com/valyala/fasthttp v1.52.0/go.mod h1:hf5C4QnVMkNXMspnsUlfM3WitlgYflyhHYoKol/szxQ= +github.com/valyala/tcplisten v1.0.0 h1:rBHj/Xf+E1tRGZyWIWwJDiRY0zc1Js+CV5DqwacVSA8= +github.com/valyala/tcplisten v1.0.0/go.mod h1:T0xQ8SeCZGxckz9qRXTfG43PvQ/mcWh7FwZEA7Ioqkc= golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= golang.org/x/net v0.0.0-20180218175443-cbe0f9307d01/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20200202094626-16171245cfb2/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= -golang.org/x/net v0.19.0 h1:zTwKpTd2XuCqf8huc7Fo2iSy+4RHPd10s4KzeTnVr1c= -golang.org/x/net v0.19.0/go.mod h1:CfAk/cbD4CthTvqiEl8NpboMuiuOYsAr/7NOjZJtv1U= +golang.org/x/net v0.21.0 h1:AQyQV4dYCvJ7vGmJyKki9+PBdyvhkSd8EIx/qb0AYv4= +golang.org/x/net v0.21.0/go.mod h1:bIjVDfnllIU7BJ2DNgfnXvpSvtn8VRwhlsaeUTyUS44= golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20191204072324-ce4227a45e2e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.15.0 h1:h48lPFYpsTvQJZF4EKyI4aLHaev3CxivZmv7yZig9pc= -golang.org/x/sys v0.15.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= +golang.org/x/sys v0.0.0-20220811171246-fbc7d0a398ab/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.19.0 h1:q5f1RH2jigJ1MoAWp2KTp3gm5zAGFUTarQZ5U386+4o= +golang.org/x/sys v0.19.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.14.0 h1:ScX5w1eTa3QqT8oi6+ziP7dTV1S2+ALU0bI+0zXKWiQ= golang.org/x/text v0.14.0/go.mod h1:18ZOQIKpY8NJVqYksKHtTdi31H5itFRjB5/qKTNYzSU= From a4a2a172f5a2fc7a83e4cc3161bbdd896675bceb Mon Sep 17 00:00:00 2001 From: mudler Date: Sun, 7 Apr 2024 20:22:07 +0200 Subject: [PATCH 056/399] A manager for each agent --- example/webui/agentpool.go | 46 +++++++++++++++++++++++++++++++++++--- 1 file changed, 43 insertions(+), 3 deletions(-) diff --git a/example/webui/agentpool.go b/example/webui/agentpool.go index b1b5e66..daaf7cf 100644 --- a/example/webui/agentpool.go +++ b/example/webui/agentpool.go @@ -67,9 +67,10 @@ type AgentConfig struct { } type AgentPool struct { - file string - pool AgentPoolData - agents map[string]*Agent + file string + pool AgentPoolData + agents map[string]*Agent + managers map[string]Manager } type AgentPoolData map[string]AgentConfig @@ -113,13 +114,51 @@ func (a *AgentPool) CreateAgent(name string, agentConfig *AgentConfig) error { return a.startAgentWithConfig(name, agentConfig) } +func (a *AgentPool) GetManager(name string) Manager { + return a.managers[name] +} + +func (a *AgentPool) List() []string { + var agents []string + for agent := range a.pool { + agents = append(agents, agent) + } + return agents +} + func (a *AgentPool) startAgentWithConfig(name string, config *AgentConfig) error { + manager := NewManager(5) opts := []Option{ WithModel(config.Model), WithLLMAPIURL(config.APIURL), WithPeriodicRuns(config.PeriodicRuns), WithStateFile(config.StateFile), WithCharacterFile(config.StateFile), + WithAgentReasoningCallback(func(state ActionCurrentState) bool { + sseManager.Send( + NewMessage( + fmt.Sprintf(`Thinking: %s`, htmlIfy(state.Reasoning)), + ).WithEvent("status"), + ) + return true + }), + WithAgentResultCallback(func(state ActionState) { + text := fmt.Sprintf(`Reasoning: %s + Action taken: %+v + Parameters: %+v + Result: %s`, + state.Reasoning, + state.ActionCurrentState.Action.Definition().Name, + state.ActionCurrentState.Params, + state.Result) + sseManager.Send( + NewMessage( + htmlIfy( + text, + ), + ).WithEvent("status"), + ) + }), } if config.HUD { opts = append(opts, EnableHUD) @@ -143,6 +182,7 @@ func (a *AgentPool) startAgentWithConfig(name string, config *AgentConfig) error } a.agents[name] = agent + a.managers[name] = manager go func() { if err := agent.Run(); err != nil { From 00078b5da88a17019e1c41dc47c9ed5ce9749efd Mon Sep 17 00:00:00 2001 From: mudler Date: Sun, 7 Apr 2024 20:23:22 +0200 Subject: [PATCH 057/399] Cleanups --- agent/options.go | 2 +- example/webui/agentpool.go | 35 ----------------------------------- 2 files changed, 1 insertion(+), 36 deletions(-) diff --git a/agent/options.go b/agent/options.go index beb2575..441117a 100644 --- a/agent/options.go +++ b/agent/options.go @@ -126,7 +126,7 @@ func WithPeriodicRuns(duration string) Option { return func(o *options) error { t, err := time.ParseDuration(duration) if err != nil { - o.periodicRuns, _ = time.ParseDuration("1m") + o.periodicRuns, _ = time.ParseDuration("10m") } o.periodicRuns = t return nil diff --git a/example/webui/agentpool.go b/example/webui/agentpool.go index daaf7cf..ff0d638 100644 --- a/example/webui/agentpool.go +++ b/example/webui/agentpool.go @@ -21,41 +21,6 @@ type AgentConfig struct { StateFile string `json:"state_file"` CharacterFile string `json:"character_file"` // This is what needs to be part of ActionsConfig - - // WithLLMAPIURL(apiModel), - // WithModel(testModel), - // EnableHUD, - // DebugMode, - // EnableStandaloneJob, - // WithAgentReasoningCallback(func(state ActionCurrentState) bool { - // sseManager.Send( - // sse.NewMessage( - // fmt.Sprintf(`Thinking: %s`, htmlIfy(state.Reasoning)), - // ).WithEvent("status"), - // ) - // return true - // }), - // WithActions(external.NewSearch(3)), - // WithAgentResultCallback(func(state ActionState) { - // text := fmt.Sprintf(`Reasoning: %s - // Action taken: %+v - // Parameters: %+v - // Result: %s`, - // state.Reasoning, - // state.ActionCurrentState.Action.Definition().Name, - // state.ActionCurrentState.Params, - // state.Result) - // sseManager.Send( - // sse.NewMessage( - // htmlIfy( - // text, - // ), - // ).WithEvent("status"), - // ) - // }), - // WithRandomIdentity(), - // WithPeriodicRuns("10m"), - APIURL string `json:"api_url"` Model string `json:"model"` HUD bool `json:"hud"` From dda993e43bbe187ce0ba8be3682076eb73d61e53 Mon Sep 17 00:00:00 2001 From: mudler Date: Sun, 7 Apr 2024 20:29:33 +0200 Subject: [PATCH 058/399] Add skeleton for pages --- example/webui/create.html | 32 +++++++++++++++++++++++ example/webui/index.html | 54 +++++++++++++++++++++++++++++++++++++++ example/webui/main.go | 15 +++++++++++ 3 files changed, 101 insertions(+) create mode 100644 example/webui/create.html create mode 100644 example/webui/index.html diff --git a/example/webui/create.html b/example/webui/create.html new file mode 100644 index 0000000..bbb3798 --- /dev/null +++ b/example/webui/create.html @@ -0,0 +1,32 @@ + + + + + Create New Agent + + + +
+

Create New Agent

+
+
+ + +
+
+ + +
+
+ +
+
+
+ + diff --git a/example/webui/index.html b/example/webui/index.html new file mode 100644 index 0000000..53f83ba --- /dev/null +++ b/example/webui/index.html @@ -0,0 +1,54 @@ + + + + + Agent List + + + +
+
+

Smart Agent List

+
+
+
+
+
+ + + + + + + + + + + + + + + + + +
+ Name + + Status + + Edit +
Agent 1Online + Edit +
+
+
+
+
+ +
+ + diff --git a/example/webui/main.go b/example/webui/main.go index 5ff68af..5d65d86 100644 --- a/example/webui/main.go +++ b/example/webui/main.go @@ -123,6 +123,21 @@ func main() { // Initialize a new Fiber app webapp := fiber.New() + // Serve static files + webapp.Static("/", "./public") + + webapp.Get("/", func(c fiber.Ctx) error { + return c.Render("index.html", fiber.Map{ + "Title": "Hello, World!", + }) + }) + + webapp.Get("/create", func(c fiber.Ctx) error { + return c.Render("create.html", fiber.Map{ + "Title": "Hello, World!", + }) + }) + // Define a route for the GET method on the root path '/' webapp.Get("/sse", func(c fiber.Ctx) error { sseManager.Handle(c, NewClient(randStringRunes(10))) From dbfc59633310275c8e99182b3e007ffb59e74023 Mon Sep 17 00:00:00 2001 From: mudler Date: Sun, 7 Apr 2024 20:30:20 +0200 Subject: [PATCH 059/399] comment --- example/webui/elements.go | 2 ++ 1 file changed, 2 insertions(+) diff --git a/example/webui/elements.go b/example/webui/elements.go index a3a1bd2..0a82bba 100644 --- a/example/webui/elements.go +++ b/example/webui/elements.go @@ -2,6 +2,8 @@ package main import "fmt" +// TODO: switch to https://github.com/chasefleming/elem-go + func chatDiv(content string, color string) string { return fmt.Sprintf(`
%s
`, color, htmlIfy(content)) } From 7adcce78bef12e3edaa9c3167ffb12c358011186 Mon Sep 17 00:00:00 2001 From: Ettore Di Giacinto Date: Mon, 8 Apr 2024 00:35:14 +0200 Subject: [PATCH 060/399] wip: UI --- example/webui/agentpool.go | 107 ++++++++++++---- example/webui/chat.html | 6 +- example/webui/create.html | 44 +++++-- example/webui/index.html | 8 +- example/webui/main.go | 254 ++++++++++++++++++------------------- example/webui/sse.go | 6 +- go.mod | 3 + go.sum | 6 + 8 files changed, 262 insertions(+), 172 deletions(-) diff --git a/example/webui/agentpool.go b/example/webui/agentpool.go index ff0d638..8bb0a6f 100644 --- a/example/webui/agentpool.go +++ b/example/webui/agentpool.go @@ -4,8 +4,11 @@ import ( "encoding/json" "fmt" "os" + "path/filepath" + "time" . "github.com/mudler/local-agent-framework/agent" + "github.com/mudler/local-agent-framework/external" ) type ConnectorConfig struct { @@ -16,13 +19,11 @@ type ConnectorConfig struct { type ActionsConfig string type AgentConfig struct { - Connector []ConnectorConfig `json:"connector"` - Actions []ActionsConfig `json:"actions"` - StateFile string `json:"state_file"` - CharacterFile string `json:"character_file"` + Connector []ConnectorConfig `json:"connector"` + Actions []ActionsConfig `json:"actions"` // This is what needs to be part of ActionsConfig - APIURL string `json:"api_url"` Model string `json:"model"` + Name string `json:"name"` HUD bool `json:"hud"` Debug bool `json:"debug"` StandaloneJob bool `json:"standalone_job"` @@ -32,35 +33,47 @@ type AgentConfig struct { } type AgentPool struct { - file string - pool AgentPoolData - agents map[string]*Agent - managers map[string]Manager + file string + pooldir string + pool AgentPoolData + agents map[string]*Agent + managers map[string]Manager + apiURL, model string } type AgentPoolData map[string]AgentConfig -func NewAgentPool(file string) (*AgentPool, error) { +func NewAgentPool(model, apiURL, directory string) (*AgentPool, error) { // if file exists, try to load an existing pool. // if file does not exist, create a new pool. - if _, err := os.Stat(file); err != nil { + poolfile := filepath.Join(directory, "pool.json") + + if _, err := os.Stat(poolfile); err != nil { // file does not exist, create a new pool return &AgentPool{ - file: file, - agents: make(map[string]*Agent), - pool: make(map[string]AgentConfig), + file: poolfile, + pooldir: directory, + apiURL: apiURL, + model: model, + agents: make(map[string]*Agent), + pool: make(map[string]AgentConfig), + managers: make(map[string]Manager), }, nil } - poolData, err := loadPoolFromFile(file) + poolData, err := loadPoolFromFile(poolfile) if err != nil { return nil, err } return &AgentPool{ - file: file, - agents: make(map[string]*Agent), - pool: *poolData, + file: poolfile, + apiURL: apiURL, + pooldir: directory, + model: model, + agents: make(map[string]*Agent), + managers: make(map[string]Manager), + pool: *poolData, }, nil } @@ -91,16 +104,48 @@ func (a *AgentPool) List() []string { return agents } +func (a *AgentConfig) availableActions() []Action { + actions := []Action{} + if len(a.Actions) == 0 { + // Return search as default + return []Action{external.NewSearch(3)} + } + for _, action := range a.Actions { + switch action { + case "search": + actions = append(actions, external.NewSearch(3)) + } + } + + return actions +} + func (a *AgentPool) startAgentWithConfig(name string, config *AgentConfig) error { manager := NewManager(5) + model := a.model + if config.Model != "" { + model = config.Model + } + if config.PeriodicRuns == "" { + config.PeriodicRuns = "10m" + } + fmt.Println("Creating agent", name) + fmt.Println("Model", model) + fmt.Println("API URL", a.apiURL) + + actions := config.availableActions() opts := []Option{ - WithModel(config.Model), - WithLLMAPIURL(config.APIURL), + WithModel(model), + WithLLMAPIURL(a.apiURL), WithPeriodicRuns(config.PeriodicRuns), - WithStateFile(config.StateFile), - WithCharacterFile(config.StateFile), + WithActions( + actions..., + ), + WithStateFile(filepath.Join(a.pooldir, fmt.Sprintf("%s.state.json", name))), + WithCharacterFile(filepath.Join(a.pooldir, fmt.Sprintf("%s.character.json", name))), WithAgentReasoningCallback(func(state ActionCurrentState) bool { - sseManager.Send( + fmt.Println("Reasoning", state.Reasoning) + manager.Send( NewMessage( fmt.Sprintf(`Thinking: %s`, htmlIfy(state.Reasoning)), ).WithEvent("status"), @@ -108,6 +153,8 @@ func (a *AgentPool) startAgentWithConfig(name string, config *AgentConfig) error return true }), WithAgentResultCallback(func(state ActionState) { + fmt.Println("Reasoning", state.Reasoning) + text := fmt.Sprintf(`Reasoning: %s Action taken: %+v Parameters: %+v @@ -116,7 +163,7 @@ func (a *AgentPool) startAgentWithConfig(name string, config *AgentConfig) error state.ActionCurrentState.Action.Definition().Name, state.ActionCurrentState.Params, state.Result) - sseManager.Send( + manager.Send( NewMessage( htmlIfy( text, @@ -141,6 +188,9 @@ func (a *AgentPool) startAgentWithConfig(name string, config *AgentConfig) error opts = append(opts, WithRandomIdentity()) } } + + fmt.Println("Starting agent", name) + fmt.Printf("Config %+v\n", config) agent, err := New(opts...) if err != nil { return err @@ -155,6 +205,15 @@ func (a *AgentPool) startAgentWithConfig(name string, config *AgentConfig) error } }() + go func() { + for { + time.Sleep(1 * time.Second) // Send a message every seconds + manager.Send(NewMessage( + htmlIfy(agent.State().String()), + ).WithEvent("hud")) + } + }() + return nil } diff --git a/example/webui/chat.html b/example/webui/chat.html index 360b14a..b2fa760 100644 --- a/example/webui/chat.html +++ b/example/webui/chat.html @@ -42,11 +42,11 @@ } - +
-

Talk to '{{.Character.Name}}'

+

Talk to '{{.Name}}'

@@ -82,7 +82,7 @@
-
diff --git a/example/webui/create.html b/example/webui/create.html index bbb3798..1e1fef8 100644 --- a/example/webui/create.html +++ b/example/webui/create.html @@ -8,18 +8,44 @@

Create New Agent

-
+
- - + +
- - + + +
+ + +
+ + +
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+
+ +
diff --git a/example/webui/main.go b/example/webui/main.go index 5d65d86..f41fef5 100644 --- a/example/webui/main.go +++ b/example/webui/main.go @@ -2,19 +2,14 @@ package main import ( "fmt" - "html/template" "log" "math/rand" "net/http" "os" "strings" - "time" "github.com/donseba/go-htmx" - "github.com/donseba/go-htmx/sse" - fiber "github.com/gofiber/fiber/v3" - external "github.com/mudler/local-agent-framework/external" - "github.com/valyala/fasthttp/fasthttpadaptor" + fiber "github.com/gofiber/fiber/v2" . "github.com/mudler/local-agent-framework/agent" ) @@ -22,21 +17,19 @@ import ( type ( App struct { htmx *htmx.HTMX + pool *AgentPool } ) -var ( - sseManager Manager -) var testModel = os.Getenv("TEST_MODEL") -var apiModel = os.Getenv("API_MODEL") +var apiURL = os.Getenv("API_URL") func init() { if testModel == "" { testModel = "hermes-2-pro-mistral" } - if apiModel == "" { - apiModel = "http://192.168.68.113:8080" + if apiURL == "" { + apiURL = "http://192.168.68.113:8080" } } @@ -46,79 +39,40 @@ func htmlIfy(s string) string { return s } -var agentInstance *Agent - func main() { - app := &App{ - htmx: htmx.New(), - } - - agent, err := New( - WithLLMAPIURL(apiModel), - WithModel(testModel), - EnableHUD, - DebugMode, - EnableStandaloneJob, - WithAgentReasoningCallback(func(state ActionCurrentState) bool { - sseManager.Send( - sse.NewMessage( - fmt.Sprintf(`Thinking: %s`, htmlIfy(state.Reasoning)), - ).WithEvent("status"), - ) - return true - }), - WithActions(external.NewSearch(3)), - WithAgentResultCallback(func(state ActionState) { - text := fmt.Sprintf(`Reasoning: %s - Action taken: %+v - Parameters: %+v - Result: %s`, - state.Reasoning, - state.ActionCurrentState.Action.Definition().Name, - state.ActionCurrentState.Params, - state.Result) - sseManager.Send( - sse.NewMessage( - htmlIfy( - text, - ), - ).WithEvent("status"), - ) - }), - WithRandomIdentity(), - WithPeriodicRuns("10m"), - //WithPermanentGoal("get the weather of all the cities in italy and store the results"), - ) + // current dir + cwd, err := os.Getwd() if err != nil { panic(err) } - go agent.Run() - defer agent.Stop() + os.MkdirAll(cwd+"/pool", 0755) - agentInstance = agent - sseManager = NewManager(5) + pool, err := NewAgentPool(testModel, apiURL, cwd+"/pool") + if err != nil { + panic(err) - go func() { - for { - clientsStr := "" - clients := sseManager.Clients() - for _, c := range clients { - clientsStr += c + ", " - } + } + app := &App{ + htmx: htmx.New(), + pool: pool, + } - time.Sleep(1 * time.Second) // Send a message every seconds - sseManager.Send(NewMessage(fmt.Sprintf("connected clients: %v", clientsStr)).WithEvent("clients")) - } - }() + if err := pool.StartAll(); err != nil { + panic(err) + } - go func() { - for { - time.Sleep(1 * time.Second) // Send a message every seconds - sseManager.Send(NewMessage( - htmlIfy(agent.State().String()), - ).WithEvent("hud")) - } - }() + // go func() { + // for { + // clientsStr := "" + // clients := sseManager.Clients() + // for _, c := range clients { + // clientsStr += c + ", " + // } + + // time.Sleep(1 * time.Second) // Send a message every seconds + // sseManager.Send(NewMessage(fmt.Sprintf("connected clients: %v", clientsStr)).WithEvent("clients")) + // } + // }() // Initialize a new Fiber app webapp := fiber.New() @@ -126,26 +80,41 @@ func main() { // Serve static files webapp.Static("/", "./public") - webapp.Get("/", func(c fiber.Ctx) error { + webapp.Get("/", func(c *fiber.Ctx) error { return c.Render("index.html", fiber.Map{ - "Title": "Hello, World!", + "Agents": pool.List(), }) }) - webapp.Get("/create", func(c fiber.Ctx) error { + webapp.Get("/create", func(c *fiber.Ctx) error { return c.Render("create.html", fiber.Map{ "Title": "Hello, World!", }) }) // Define a route for the GET method on the root path '/' - webapp.Get("/sse", func(c fiber.Ctx) error { - sseManager.Handle(c, NewClient(randStringRunes(10))) + webapp.Get("/sse/:name", func(c *fiber.Ctx) error { + + m := pool.GetManager(c.Params("name")) + if m == nil { + return c.SendStatus(404) + } + + m.Handle(c, NewClient(randStringRunes(10))) return nil }) - webapp.Get("/notify", wrapHandler(http.HandlerFunc(app.Notify))) - webapp.Post("/chat", wrapHandler(http.HandlerFunc(app.Chat(sseManager)))) - webapp.Get("/talk", wrapHandler(http.HandlerFunc(app.Home(agent)))) + + webapp.Get("/notify/:name", app.Notify(pool)) + webapp.Post("/chat/:name", app.Chat(pool)) + webapp.Post("/create", app.Create(pool)) + + webapp.Get("/talk/:name", func(c *fiber.Ctx) error { + return c.Render("chat.html", fiber.Map{ + // "Character": agent.Character, + "Name": c.Params("name"), + }) + }) + log.Fatal(webapp.Listen(":3000")) // mux := http.NewServeMux() @@ -166,71 +135,94 @@ func main() { // log.Fatal(err) } -func (a *App) Home(agent *Agent) func(w http.ResponseWriter, r *http.Request) { - return func(w http.ResponseWriter, r *http.Request) { - tmpl, err := template.ParseFiles("chat.html") - if err != nil { - http.Error(w, err.Error(), http.StatusInternalServerError) - return - } - - tmpl.Execute(w, - struct { - Character Character - }{ - Character: agent.Character, - }) - } -} - // func (a *App) SSE(w http.ResponseWriter, r *http.Request) { // cl := sse.NewClient(randStringRunes(10)) // sseManager.Handle(w, r, cl) // } -func (a *App) Notify(w http.ResponseWriter, r *http.Request) { - query := strings.ToLower(r.PostFormValue("message")) - if query == "" { - _, _ = w.Write([]byte("Please enter a message.")) - return - } +func (a *App) Notify(pool *AgentPool) func(c *fiber.Ctx) error { + return func(c *fiber.Ctx) error { + payload := struct { + Message string `json:"message"` + }{} - agentInstance.Ask( - WithText(query), - ) - _, _ = w.Write([]byte("Message sent")) -} + if err := c.BodyParser(&payload); err != nil { + return err + } + + query := payload.Message + if query == "" { + _, _ = c.Write([]byte("Please enter a message.")) + return nil + } + + agent := pool.GetAgent(c.Params("name")) + agent.Ask( + WithText(query), + ) + _, _ = c.Write([]byte("Message sent")) -func wrapHandler(f func(http.ResponseWriter, *http.Request)) func(ctx fiber.Ctx) error { - return func(ctx fiber.Ctx) error { - fasthttpadaptor.NewFastHTTPHandler(http.HandlerFunc(f))(ctx.Context()) return nil } } -func (a *App) Chat(m Manager) func(w http.ResponseWriter, r *http.Request) { - return func(w http.ResponseWriter, r *http.Request) { - query := strings.ToLower(r.PostFormValue("message")) - if query == "" { - _, _ = w.Write([]byte("Please enter a message.")) - return +func (a *App) Create(pool *AgentPool) func(c *fiber.Ctx) error { + return func(c *fiber.Ctx) error { + config := AgentConfig{} + if err := c.BodyParser(&config); err != nil { + return err } - m.Send( + + if config.Name == "" { + c.Status(http.StatusBadRequest).SendString("Name is required") + return nil + } + if err := pool.CreateAgent(config.Name, &config); err != nil { + c.Status(http.StatusInternalServerError).SendString(err.Error()) + return nil + } + return c.Redirect("/") + } +} + +func (a *App) Chat(pool *AgentPool) func(c *fiber.Ctx) error { + return func(c *fiber.Ctx) error { + payload := struct { + Message string `json:"message"` + }{} + + if err := c.BodyParser(&payload); err != nil { + return err + } + agentName := c.Params("name") + manager := pool.GetManager(agentName) + + query := payload.Message + if query == "" { + _, _ = c.Write([]byte("Please enter a message.")) + return nil + } + manager.Send( NewMessage( chatDiv(query, "gray"), ).WithEvent("messages")) go func() { - res := agentInstance.Ask( + agent := pool.GetAgent(agentName) + if agent == nil { + fmt.Println("Agent not found in pool", c.Params("name")) + return + } + res := agent.Ask( WithText(query), ) fmt.Println("response is", res.Response) - m.Send( - sse.NewMessage( + manager.Send( + NewMessage( chatDiv(res.Response, "blue"), ).WithEvent("messages")) - m.Send( - sse.NewMessage( + manager.Send( + NewMessage( inputMessageDisabled(false), // show again the input ).WithEvent("message_status")) @@ -238,10 +230,12 @@ func (a *App) Chat(m Manager) func(w http.ResponseWriter, r *http.Request) { // _, _ = w.Write([]byte(result)) }() - m.Send( - sse.NewMessage( + manager.Send( + NewMessage( loader() + inputMessageDisabled(true), ).WithEvent("message_status")) + + return nil } } diff --git a/example/webui/sse.go b/example/webui/sse.go index 391d65b..eab37be 100644 --- a/example/webui/sse.go +++ b/example/webui/sse.go @@ -7,7 +7,7 @@ import ( "sync" "time" - "github.com/gofiber/fiber/v3" + "github.com/gofiber/fiber/v2" "github.com/valyala/fasthttp" ) @@ -26,7 +26,7 @@ type ( // Manager defines the interface for managing clients and broadcasting messages. Manager interface { Send(message Envelope) - Handle(ctx fiber.Ctx, cl Listener) + Handle(ctx *fiber.Ctx, cl Listener) Clients() []string } @@ -111,7 +111,7 @@ func (manager *broadcastManager) Send(message Envelope) { } // Handle sets up a new client and handles the connection. -func (manager *broadcastManager) Handle(c fiber.Ctx, cl Listener) { +func (manager *broadcastManager) Handle(c *fiber.Ctx, cl Listener) { manager.register(cl) ctx := c.Context() diff --git a/go.mod b/go.mod index 1b6b46f..bd1e9b0 100644 --- a/go.mod +++ b/go.mod @@ -20,6 +20,7 @@ require ( github.com/andybalholm/cascadia v1.1.0 // indirect github.com/go-logr/logr v1.3.0 // indirect github.com/go-task/slim-sprig v0.0.0-20230315185526-52ccab3ef572 // indirect + github.com/gofiber/fiber/v2 v2.52.4 // indirect github.com/gofiber/utils/v2 v2.0.0-beta.4 // indirect github.com/google/go-cmp v0.6.0 // indirect github.com/google/pprof v0.0.0-20210407192527-94a9f03dee38 // indirect @@ -27,6 +28,8 @@ require ( github.com/klauspost/compress v1.17.7 // indirect github.com/mattn/go-colorable v0.1.13 // indirect github.com/mattn/go-isatty v0.0.20 // indirect + github.com/mattn/go-runewidth v0.0.15 // indirect + github.com/rivo/uniseg v0.2.0 // indirect github.com/valyala/bytebufferpool v1.0.0 // indirect github.com/valyala/tcplisten v1.0.0 // indirect golang.org/x/net v0.21.0 // indirect diff --git a/go.sum b/go.sum index 08547df..2891efb 100644 --- a/go.sum +++ b/go.sum @@ -16,6 +16,8 @@ github.com/go-logr/logr v1.3.0 h1:2y3SDp0ZXuc6/cjLSZ+Q3ir+QB9T/iG5yYRXqsagWSY= github.com/go-logr/logr v1.3.0/go.mod h1:9T104GzyrTigFIr8wt5mBrctHMim0Nb2HLGrmQ40KvY= github.com/go-task/slim-sprig v0.0.0-20230315185526-52ccab3ef572 h1:tfuBGBXKqDEevZMzYi5KSi8KkcZtzBcTgAUUtapy0OI= github.com/go-task/slim-sprig v0.0.0-20230315185526-52ccab3ef572/go.mod h1:9Pwr4B2jHnOSGXyyzV8ROjYa2ojvAY6HCGYYfMoC3Ls= +github.com/gofiber/fiber/v2 v2.52.4 h1:P+T+4iK7VaqUsq2PALYEfBBo6bJZ4q3FP8cZ84EggTM= +github.com/gofiber/fiber/v2 v2.52.4/go.mod h1:KEOE+cXMhXG0zHc9d8+E38hoX+ZN7bhOtgeF2oT6jrQ= github.com/gofiber/fiber/v3 v3.0.0-20240405062939-c8c51ee78331 h1:kDxTNPKMIRz8q28+tJHL2p87Cjtmkfn/OsLfastmpaY= github.com/gofiber/fiber/v3 v3.0.0-20240405062939-c8c51ee78331/go.mod h1:w7sdfTY0okjZ1oVH6rSOGvuACUIt0By1iK0HKUb3uqM= github.com/gofiber/utils/v2 v2.0.0-beta.4 h1:1gjbVFFwVwUb9arPcqiB6iEjHBwo7cHsyS41NeIW3co= @@ -36,12 +38,16 @@ github.com/mattn/go-colorable v0.1.13/go.mod h1:7S9/ev0klgBDR4GtXTXX8a3vIGJpMovk github.com/mattn/go-isatty v0.0.16/go.mod h1:kYGgaQfpe5nmfYZH+SKPsOc2e4SrIfOl2e/yFXSvRLM= github.com/mattn/go-isatty v0.0.20 h1:xfD0iDuEKnDkl03q4limB+vH+GxLEtL/jb4xVJSWWEY= github.com/mattn/go-isatty v0.0.20/go.mod h1:W+V8PltTTMOvKvAeJH7IuucS94S2C6jfK/D7dTCTo3Y= +github.com/mattn/go-runewidth v0.0.15 h1:UNAjwbU9l54TA3KzvqLGxwWjHmMgBUVhBiTjelZgg3U= +github.com/mattn/go-runewidth v0.0.15/go.mod h1:Jdepj2loyihRzMpdS35Xk/zdY8IAYHsh153qUoGf23w= github.com/onsi/ginkgo/v2 v2.15.0 h1:79HwNRBAZHOEwrczrgSOPy+eFTTlIGELKy5as+ClttY= github.com/onsi/ginkgo/v2 v2.15.0/go.mod h1:HlxMHtYF57y6Dpf+mc5529KKmSq9h2FpCF+/ZkwUxKM= github.com/onsi/gomega v1.31.1 h1:KYppCUK+bUgAZwHOu7EXVBKyQA6ILvOESHkn/tgoqvo= github.com/onsi/gomega v1.31.1/go.mod h1:y40C95dwAD1Nz36SsEnxvfFe8FFfNxzI5eJ0EYGyAy0= github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM= github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= +github.com/rivo/uniseg v0.2.0 h1:S1pD9weZBuJdFmowNwbpi7BJ8TNftyUImj/0WQi72jY= +github.com/rivo/uniseg v0.2.0/go.mod h1:J6wj4VEh+S6ZtnVlnTBMWIodfgj8LQOQFoIToxlJtxc= github.com/sap-nocops/duckduckgogo v0.0.0-20201102135645-176990152850 h1:DsVS3HK/t9X7ereJYMTiOeFSJWLOmrSG74CQhk2SlEs= github.com/sap-nocops/duckduckgogo v0.0.0-20201102135645-176990152850/go.mod h1:ur7dCshjxoPKHtsZgtb6n5gpOmzQNRQ5AT+yOLwaJxM= github.com/sashabaranov/go-openai v1.18.3 h1:dspFGkmZbhjg1059KhqLYSV2GaCiRIn+bOu50TlXUq8= From 185fb89d39572ea3a136b91f8387a29476627522 Mon Sep 17 00:00:00 2001 From: mudler Date: Mon, 8 Apr 2024 11:15:36 +0200 Subject: [PATCH 061/399] wips --- agent/agent.go | 53 ++++++++++++++++++++++++-------------- example/webui/agentpool.go | 48 ++++++++++++++++++++++++---------- example/webui/create.html | 33 +++++++++++++++++------- example/webui/elements.go | 6 ++--- example/webui/index.html | 9 ++++++- example/webui/main.go | 20 +++++++++++--- external/search.go | 2 +- 7 files changed, 120 insertions(+), 51 deletions(-) diff --git a/agent/agent.go b/agent/agent.go index 29b00a1..8bd42a6 100644 --- a/agent/agent.go +++ b/agent/agent.go @@ -59,12 +59,6 @@ func New(opts ...Option) (*Agent, error) { context: action.NewContext(ctx, cancel), } - if a.options.randomIdentity { - if err = a.generateIdentity(a.options.randomIdentityGuidance); err != nil { - return a, fmt.Errorf("failed to generate identity: %v", err) - } - } - if a.options.statefile != "" { if _, err := os.Stat(a.options.statefile); err == nil { if err = a.LoadState(a.options.statefile); err != nil { @@ -73,20 +67,6 @@ func New(opts ...Option) (*Agent, error) { } } - if a.options.characterfile != "" { - if _, err := os.Stat(a.options.characterfile); err == nil { - // if there is a file, load the character back - if err = a.LoadCharacter(a.options.characterfile); err != nil { - return a, fmt.Errorf("failed to load character: %v", err) - } - } else { - // otherwise save it for next time - if err = a.SaveCharacter(a.options.characterfile); err != nil { - return a, fmt.Errorf("failed to save character: %v", err) - } - } - } - if a.options.debugMode { fmt.Println("=== Agent in Debug mode ===") fmt.Println(a.Character.String()) @@ -520,11 +500,44 @@ func (a *Agent) periodicallyRun() { // a.ResetConversation() } +func (a *Agent) prepareIdentity() error { + + if a.options.characterfile != "" { + if _, err := os.Stat(a.options.characterfile); err == nil { + // if there is a file, load the character back + if err = a.LoadCharacter(a.options.characterfile); err != nil { + return fmt.Errorf("failed to load character: %v", err) + } + } else { + if a.options.randomIdentity { + if err = a.generateIdentity(a.options.randomIdentityGuidance); err != nil { + return fmt.Errorf("failed to generate identity: %v", err) + } + } + + // otherwise save it for next time + if err = a.SaveCharacter(a.options.characterfile); err != nil { + return fmt.Errorf("failed to save character: %v", err) + } + } + } else { + if err := a.generateIdentity(a.options.randomIdentityGuidance); err != nil { + return fmt.Errorf("failed to generate identity: %v", err) + } + } + + return nil +} + func (a *Agent) Run() error { // The agent run does two things: // picks up requests from a queue // and generates a response/perform actions + if err := a.prepareIdentity(); err != nil { + return fmt.Errorf("failed to prepare identity: %v", err) + } + // It is also preemptive. // That is, it can interrupt the current action // if another one comes in. diff --git a/example/webui/agentpool.go b/example/webui/agentpool.go index 8bb0a6f..90bc788 100644 --- a/example/webui/agentpool.go +++ b/example/webui/agentpool.go @@ -19,17 +19,17 @@ type ConnectorConfig struct { type ActionsConfig string type AgentConfig struct { - Connector []ConnectorConfig `json:"connector"` - Actions []ActionsConfig `json:"actions"` + Connector []ConnectorConfig `json:"connector" form:"connector" ` + Actions []ActionsConfig `json:"actions" form:"actions"` // This is what needs to be part of ActionsConfig - Model string `json:"model"` - Name string `json:"name"` - HUD bool `json:"hud"` - Debug bool `json:"debug"` - StandaloneJob bool `json:"standalone_job"` - RandomIdentity bool `json:"random_identity"` - IdentityGuidance string `json:"identity_guidance"` - PeriodicRuns string `json:"periodic_runs"` + Model string `json:"model" form:"model"` + Name string `json:"name" form:"name"` + HUD bool `json:"hud" form:"hud"` + Debug bool `json:"debug" form:"debug"` + StandaloneJob bool `json:"standalone_job" form:"standalone_job"` + RandomIdentity bool `json:"random_identity" form:"random_identity"` + IdentityGuidance string `json:"identity_guidance" form:"identity_guidance"` + PeriodicRuns string `json:"periodic_runs" form:"periodic_runs"` } type AgentPool struct { @@ -104,13 +104,17 @@ func (a *AgentPool) List() []string { return agents } +var AvailableActions = []string{"search"} + func (a *AgentConfig) availableActions() []Action { actions := []Action{} + if len(a.Actions) == 0 { // Return search as default return []Action{external.NewSearch(3)} } for _, action := range a.Actions { + fmt.Println("Set Action", action) switch action { case "search": actions = append(actions, external.NewSearch(3)) @@ -134,6 +138,10 @@ func (a *AgentPool) startAgentWithConfig(name string, config *AgentConfig) error fmt.Println("API URL", a.apiURL) actions := config.availableActions() + + stateFile, characterFile := a.stateFiles(name) + + fmt.Println("Actions", actions) opts := []Option{ WithModel(model), WithLLMAPIURL(a.apiURL), @@ -141,8 +149,8 @@ func (a *AgentPool) startAgentWithConfig(name string, config *AgentConfig) error WithActions( actions..., ), - WithStateFile(filepath.Join(a.pooldir, fmt.Sprintf("%s.state.json", name))), - WithCharacterFile(filepath.Join(a.pooldir, fmt.Sprintf("%s.character.json", name))), + WithStateFile(stateFile), + WithCharacterFile(characterFile), WithAgentReasoningCallback(func(state ActionCurrentState) bool { fmt.Println("Reasoning", state.Reasoning) manager.Send( @@ -201,7 +209,7 @@ func (a *AgentPool) startAgentWithConfig(name string, config *AgentConfig) error go func() { if err := agent.Run(); err != nil { - panic(err) + fmt.Println("Agent stop: ", err.Error()) } }() @@ -253,7 +261,21 @@ func (a *AgentPool) Start(name string) error { return fmt.Errorf("agent %s not found", name) } +func (a *AgentPool) stateFiles(name string) (string, string) { + stateFile := filepath.Join(a.pooldir, fmt.Sprintf("%s.state.json", name)) + characterFile := filepath.Join(a.pooldir, fmt.Sprintf("%s.character.json", name)) + + return stateFile, characterFile +} + func (a *AgentPool) Remove(name string) error { + + // Cleanup character and state + stateFile, characterFile := a.stateFiles(name) + + os.Remove(stateFile) + os.Remove(characterFile) + a.Stop(name) delete(a.agents, name) delete(a.pool, name) diff --git a/example/webui/create.html b/example/webui/create.html index 1e1fef8..fed8dba 100644 --- a/example/webui/create.html +++ b/example/webui/create.html @@ -4,25 +4,38 @@ Create New Agent + + +

Create New Agent

-
- - -
-
- - -
- - +
+ + +
+ + +
+ + + +
diff --git a/example/webui/elements.go b/example/webui/elements.go index 0a82bba..a0cfbd6 100644 --- a/example/webui/elements.go +++ b/example/webui/elements.go @@ -12,10 +12,10 @@ func loader() string { return `
` } -func inputMessageDisabled(disabled bool) string { +func disabledElement(id string, disabled bool) string { if disabled { - return `` + return `` } - return `` + return `` } diff --git a/example/webui/index.html b/example/webui/index.html index 936ef3b..a1ee34d 100644 --- a/example/webui/index.html +++ b/example/webui/index.html @@ -4,6 +4,7 @@ Agent List +
@@ -24,7 +25,10 @@ Status - Edit + Talk + + + Delete @@ -37,6 +41,9 @@ Talk + + Delete + {{ end }} diff --git a/example/webui/main.go b/example/webui/main.go index f41fef5..5465623 100644 --- a/example/webui/main.go +++ b/example/webui/main.go @@ -88,7 +88,8 @@ func main() { webapp.Get("/create", func(c *fiber.Ctx) error { return c.Render("create.html", fiber.Map{ - "Title": "Hello, World!", + "Title": "Hello, World!", + "Actions": AvailableActions, }) }) @@ -107,6 +108,7 @@ func main() { webapp.Get("/notify/:name", app.Notify(pool)) webapp.Post("/chat/:name", app.Chat(pool)) webapp.Post("/create", app.Create(pool)) + webapp.Get("/delete/:name", app.Delete(pool)) webapp.Get("/talk/:name", func(c *fiber.Ctx) error { return c.Render("chat.html", fiber.Map{ @@ -166,6 +168,16 @@ func (a *App) Notify(pool *AgentPool) func(c *fiber.Ctx) error { } } +func (a *App) Delete(pool *AgentPool) func(c *fiber.Ctx) error { + return func(c *fiber.Ctx) error { + if err := pool.Remove(c.Params("name")); err != nil { + fmt.Println("Error removing agent", err) + return c.Status(http.StatusInternalServerError).SendString(err.Error()) + } + return c.Redirect("/") + } +} + func (a *App) Create(pool *AgentPool) func(c *fiber.Ctx) error { return func(c *fiber.Ctx) error { config := AgentConfig{} @@ -173,6 +185,8 @@ func (a *App) Create(pool *AgentPool) func(c *fiber.Ctx) error { return err } + fmt.Printf("Agent configuration: %+v\n", config) + if config.Name == "" { c.Status(http.StatusBadRequest).SendString("Name is required") return nil @@ -223,7 +237,7 @@ func (a *App) Chat(pool *AgentPool) func(c *fiber.Ctx) error { ).WithEvent("messages")) manager.Send( NewMessage( - inputMessageDisabled(false), // show again the input + disabledElement("inputMessage", false), // show again the input ).WithEvent("message_status")) //result := `done` @@ -232,7 +246,7 @@ func (a *App) Chat(pool *AgentPool) func(c *fiber.Ctx) error { manager.Send( NewMessage( - loader() + inputMessageDisabled(true), + loader() + disabledElement("inputMessage", true), ).WithEvent("message_status")) return nil diff --git a/external/search.go b/external/search.go index 865c470..6335e0d 100644 --- a/external/search.go +++ b/external/search.go @@ -30,7 +30,7 @@ func (a *SearchAction) Run(params action.ActionParams) (string, error) { ddg := client.NewDuckDuckGoSearchClient() res, err := ddg.SearchLimited(result.Query, a.results) if err != nil { - msg := fmt.Sprintf("error: %v", err) + msg := fmt.Sprintf("error duckduckgo: %v", err) fmt.Printf(msg) return msg, err } From 533caeee96c0a48ee925b8c260f9c646c89a7e7b Mon Sep 17 00:00:00 2001 From: mudler Date: Mon, 8 Apr 2024 16:10:26 +0200 Subject: [PATCH 062/399] Add conversation history for jobs --- agent/agent.go | 3 +++ agent/jobs.go | 19 ++++++++++++++----- example/webui/agentpool.go | 26 +++++++++++++------------- 3 files changed, 30 insertions(+), 18 deletions(-) diff --git a/agent/agent.go b/agent/agent.go index 8bd42a6..e44e37c 100644 --- a/agent/agent.go +++ b/agent/agent.go @@ -167,6 +167,9 @@ func (a *Agent) consumeJob(job *Job, role string) { ctx, cancel := context.WithCancel(context.Background()) a.actionContext = action.NewContext(ctx, cancel) a.selfEvaluationInProgress = selfEvaluation + if len(job.conversationHistory) != 0 { + a.currentConversation = job.conversationHistory + } a.Unlock() if selfEvaluation { diff --git a/agent/jobs.go b/agent/jobs.go index 48d01ac..89e3871 100644 --- a/agent/jobs.go +++ b/agent/jobs.go @@ -2,6 +2,8 @@ package agent import ( "sync" + + "github.com/sashabaranov/go-openai" ) // Job is a request to the agent to do something @@ -9,11 +11,12 @@ type Job struct { // The job is a request to the agent to do something // It can be a question, a command, or a request to do something // The agent will try to do it, and return a response - Text string - Image string // base64 encoded image - Result *JobResult - reasoningCallback func(ActionCurrentState) bool - resultCallback func(ActionState) + Text string + Image string // base64 encoded image + Result *JobResult + reasoningCallback func(ActionCurrentState) bool + resultCallback func(ActionState) + conversationHistory []openai.ChatCompletionMessage } // JobResult is the result of a job @@ -28,6 +31,12 @@ type JobResult struct { type JobOption func(*Job) +func WithConversationHistory(history []openai.ChatCompletionMessage) JobOption { + return func(j *Job) { + j.conversationHistory = history + } +} + func WithReasoningCallback(f func(ActionCurrentState) bool) JobOption { return func(r *Job) { r.reasoningCallback = f diff --git a/example/webui/agentpool.go b/example/webui/agentpool.go index 90bc788..1b4230b 100644 --- a/example/webui/agentpool.go +++ b/example/webui/agentpool.go @@ -43,6 +43,17 @@ type AgentPool struct { type AgentPoolData map[string]AgentConfig +func loadPoolFromFile(path string) (*AgentPoolData, error) { + data, err := os.ReadFile(path) + if err != nil { + return nil, err + } + + poolData := &AgentPoolData{} + err = json.Unmarshal(data, poolData) + return poolData, err +} + func NewAgentPool(model, apiURL, directory string) (*AgentPool, error) { // if file exists, try to load an existing pool. // if file does not exist, create a new pool. @@ -92,10 +103,6 @@ func (a *AgentPool) CreateAgent(name string, agentConfig *AgentConfig) error { return a.startAgentWithConfig(name, agentConfig) } -func (a *AgentPool) GetManager(name string) Manager { - return a.managers[name] -} - func (a *AgentPool) List() []string { var agents []string for agent := range a.pool { @@ -297,13 +304,6 @@ func (a *AgentPool) GetAgent(name string) *Agent { return a.agents[name] } -func loadPoolFromFile(path string) (*AgentPoolData, error) { - data, err := os.ReadFile(path) - if err != nil { - return nil, err - } - - poolData := &AgentPoolData{} - err = json.Unmarshal(data, poolData) - return poolData, err +func (a *AgentPool) GetManager(name string) Manager { + return a.managers[name] } From 66b184764463a8956127772c2a4d51b9394483be Mon Sep 17 00:00:00 2001 From: mudler Date: Mon, 8 Apr 2024 20:15:32 +0200 Subject: [PATCH 063/399] Allow to configure connectors --- agent/agent.go | 4 +++ example/webui/agentpool.go | 67 +++++++++++++++++++++++++++++++++++--- example/webui/create.html | 38 ++++++++++++++++++--- example/webui/main.go | 5 +-- go.mod | 1 + go.sum | 2 ++ 6 files changed, 105 insertions(+), 12 deletions(-) diff --git a/agent/agent.go b/agent/agent.go index e44e37c..5e3a59c 100644 --- a/agent/agent.go +++ b/agent/agent.go @@ -87,6 +87,10 @@ func (a *Agent) StopAction() { } } +func (a *Agent) Context() context.Context { + return a.context.Context +} + // Ask is a pre-emptive, blocking call that returns the response as soon as it's ready. // It discards any other computation. func (a *Agent) Ask(opts ...JobOption) *JobResult { diff --git a/example/webui/agentpool.go b/example/webui/agentpool.go index 1b4230b..d075d42 100644 --- a/example/webui/agentpool.go +++ b/example/webui/agentpool.go @@ -7,19 +7,21 @@ import ( "path/filepath" "time" + "github.com/mudler/local-agent-framework/example/webui/connector" + . "github.com/mudler/local-agent-framework/agent" "github.com/mudler/local-agent-framework/external" ) type ConnectorConfig struct { - Type string `json:"type"` // e.g. Slack - Config map[string]interface{} `json:"config"` + Type string `json:"type"` // e.g. Slack + Config string `json:"config"` } type ActionsConfig string type AgentConfig struct { - Connector []ConnectorConfig `json:"connector" form:"connector" ` + Connector []ConnectorConfig `json:"connectors" form:"connectors" ` Actions []ActionsConfig `json:"actions" form:"actions"` // This is what needs to be part of ActionsConfig Model string `json:"model" form:"model"` @@ -111,7 +113,12 @@ func (a *AgentPool) List() []string { return agents } -var AvailableActions = []string{"search"} +const ( + ConnectorTelegram = "telegram" + ActionSearch = "search" +) + +var AvailableActions = []string{ActionSearch} func (a *AgentConfig) availableActions() []Action { actions := []Action{} @@ -123,7 +130,7 @@ func (a *AgentConfig) availableActions() []Action { for _, action := range a.Actions { fmt.Println("Set Action", action) switch action { - case "search": + case ActionSearch: actions = append(actions, external.NewSearch(3)) } } @@ -131,6 +138,39 @@ func (a *AgentConfig) availableActions() []Action { return actions } +type Connector interface { + AgentResultCallback() func(state ActionState) + AgentReasoningCallback() func(state ActionCurrentState) bool + Start(a *Agent) +} + +var AvailableConnectors = []string{ConnectorTelegram} + +func (a *AgentConfig) availableConnectors() []Connector { + connectors := []Connector{} + + for _, c := range a.Connector { + fmt.Println("Set Connector", c) + switch c.Type { + case ConnectorTelegram: + var config map[string]string + if err := json.Unmarshal([]byte(c.Config), &config); err != nil { + fmt.Println("Error unmarshalling connector config", err) + continue + } + fmt.Println("Config", config) + cc, err := connector.NewTelegramConnector(config) + if err != nil { + fmt.Println("Error creating telegram connector", err) + continue + } + + connectors = append(connectors, cc) + } + } + return connectors +} + func (a *AgentPool) startAgentWithConfig(name string, config *AgentConfig) error { manager := NewManager(5) model := a.model @@ -140,6 +180,9 @@ func (a *AgentPool) startAgentWithConfig(name string, config *AgentConfig) error if config.PeriodicRuns == "" { config.PeriodicRuns = "10m" } + + connectors := config.availableConnectors() + fmt.Println("Creating agent", name) fmt.Println("Model", model) fmt.Println("API URL", a.apiURL) @@ -165,6 +208,12 @@ func (a *AgentPool) startAgentWithConfig(name string, config *AgentConfig) error fmt.Sprintf(`Thinking: %s`, htmlIfy(state.Reasoning)), ).WithEvent("status"), ) + + for _, c := range connectors { + if !c.AgentReasoningCallback()(state) { + return false + } + } return true }), WithAgentResultCallback(func(state ActionState) { @@ -185,6 +234,10 @@ func (a *AgentPool) startAgentWithConfig(name string, config *AgentConfig) error ), ).WithEvent("status"), ) + + for _, c := range connectors { + c.AgentResultCallback()(state) + } }), } if config.HUD { @@ -220,6 +273,10 @@ func (a *AgentPool) startAgentWithConfig(name string, config *AgentConfig) error } }() + for _, c := range connectors { + go c.Start(agent) + } + go func() { for { time.Sleep(1 * time.Second) // Send a message every seconds diff --git a/example/webui/create.html b/example/webui/create.html index fed8dba..1737f03 100644 --- a/example/webui/create.html +++ b/example/webui/create.html @@ -18,12 +18,40 @@
- + + +
- {{ range .Actions }} - - {{ end }} - +
+
- - + +
diff --git a/external/search.go b/external/search.go index 6335e0d..22c527d 100644 --- a/external/search.go +++ b/external/search.go @@ -8,11 +8,20 @@ import ( "github.com/sashabaranov/go-openai/jsonschema" ) -func NewSearch(results int) *SearchAction { - if results == 0 { - results = 3 +func NewSearch(config map[string]string) *SearchAction { + results := config["results"] + intResult := 1 + + // decode int from string + if results != "" { + _, err := fmt.Sscanf(results, "%d", &intResult) + if err != nil { + fmt.Printf("error: %v", err) + } } - return &SearchAction{results: results} + + fmt.Println("Search action with results: ", intResult) + return &SearchAction{results: intResult} } type SearchAction struct{ results int } From c56e277a2b6d8ac6f64b7f25c111c8c3131e0a32 Mon Sep 17 00:00:00 2001 From: Ettore Di Giacinto Date: Mon, 8 Apr 2024 23:03:24 +0200 Subject: [PATCH 065/399] Add telegram connector --- example/webui/connector/telegram.go | 68 +++++++++++++++++++++++++++++ 1 file changed, 68 insertions(+) create mode 100644 example/webui/connector/telegram.go diff --git a/example/webui/connector/telegram.go b/example/webui/connector/telegram.go new file mode 100644 index 0000000..13188a9 --- /dev/null +++ b/example/webui/connector/telegram.go @@ -0,0 +1,68 @@ +package connector + +import ( + "context" + "errors" + "os" + "os/signal" + + "github.com/go-telegram/bot" + "github.com/go-telegram/bot/models" + "github.com/mudler/local-agent-framework/agent" +) + +type Telegram struct { + Token string + Conttext context.Context +} + +// Send any text message to the bot after the bot has been started + +func (t *Telegram) AgentResultCallback() func(state agent.ActionState) { + return func(state agent.ActionState) { + // Send the result to the bot + } +} +func (t *Telegram) AgentReasoningCallback() func(state agent.ActionCurrentState) bool { + return func(state agent.ActionCurrentState) bool { + // Send the reasoning to the bot + return true + } + +} +func (t *Telegram) Start(a *agent.Agent) { + ctx, cancel := signal.NotifyContext(a.Context(), os.Interrupt) + defer cancel() + + opts := []bot.Option{ + bot.WithDefaultHandler(func(ctx context.Context, b *bot.Bot, update *models.Update) { + res := a.Ask( + agent.WithText( + update.Message.Text, + ), + ) + b.SendMessage(ctx, &bot.SendMessageParams{ + ChatID: update.Message.Chat.ID, + Text: res.Response, + }) + }), + } + + b, err := bot.New(t.Token, opts...) + if err != nil { + panic(err) + } + + b.Start(ctx) +} + +func NewTelegramConnector(config map[string]string) (*Telegram, error) { + token, ok := config["token"] + if !ok { + return nil, errors.New("token is required") + } + + return &Telegram{ + Token: token, + }, nil +} From f11c8f3f57023d9e1910ee3d22a9dc43bcb3ca2c Mon Sep 17 00:00:00 2001 From: Ettore Di Giacinto Date: Mon, 8 Apr 2024 23:18:03 +0200 Subject: [PATCH 066/399] Enhance create form, wire up permanent goal --- example/webui/agentpool.go | 2 ++ example/webui/create.html | 53 +++++++++++++++++++++----------------- 2 files changed, 31 insertions(+), 24 deletions(-) diff --git a/example/webui/agentpool.go b/example/webui/agentpool.go index 687bf1d..a4da8ff 100644 --- a/example/webui/agentpool.go +++ b/example/webui/agentpool.go @@ -35,6 +35,7 @@ type AgentConfig struct { RandomIdentity bool `json:"random_identity" form:"random_identity"` IdentityGuidance string `json:"identity_guidance" form:"identity_guidance"` PeriodicRuns string `json:"periodic_runs" form:"periodic_runs"` + PermanentGoal string `json:"permanent_goal" form:"permanent_goal"` } type AgentPool struct { @@ -205,6 +206,7 @@ func (a *AgentPool) startAgentWithConfig(name string, config *AgentConfig) error WithModel(model), WithLLMAPIURL(a.apiURL), WithPeriodicRuns(config.PeriodicRuns), + WithPermanentGoal(config.PermanentGoal), WithActions( actions..., ), diff --git a/example/webui/create.html b/example/webui/create.html index 7caad7b..557a207 100644 --- a/example/webui/create.html +++ b/example/webui/create.html @@ -9,13 +9,14 @@ -
-

Create New Agent

- +
+

Create New Agent

+ + -
- - +
+ +
@@ -34,7 +35,7 @@ const newConnectorHTML = `
- +
- - + +
`; @@ -64,15 +65,15 @@ const newConnectorHTML = `
- +
- - + +
`; @@ -83,29 +84,33 @@
- - + +
- -
- - + + + + + + + +
- - -
-
- +
- +
+
+ + +
From 414a973282d35ff674e4ddb1f772a1807e038b66 Mon Sep 17 00:00:00 2001 From: Ettore Di Giacinto Date: Mon, 8 Apr 2024 23:50:59 +0200 Subject: [PATCH 068/399] Add slack connector --- example/webui/agentpool.go | 5 +- example/webui/connector/slack.go | 132 +++++++++++++++++++++++++++++++ go.mod | 9 ++- go.sum | 13 ++- 4 files changed, 150 insertions(+), 9 deletions(-) create mode 100644 example/webui/connector/slack.go diff --git a/example/webui/agentpool.go b/example/webui/agentpool.go index 847f04e..083c82e 100644 --- a/example/webui/agentpool.go +++ b/example/webui/agentpool.go @@ -120,6 +120,7 @@ func (a *AgentPool) List() []string { const ( ConnectorTelegram = "telegram" + ConnectorSlack = "slack" ActionSearch = "search" ) @@ -153,7 +154,7 @@ type Connector interface { Start(a *Agent) } -var AvailableConnectors = []string{ConnectorTelegram} +var AvailableConnectors = []string{ConnectorTelegram, ConnectorSlack} func (a *AgentConfig) availableConnectors() []Connector { connectors := []Connector{} @@ -177,6 +178,8 @@ func (a *AgentConfig) availableConnectors() []Connector { } connectors = append(connectors, cc) + case ConnectorSlack: + connectors = append(connectors, connector.NewSlack(config)) } } return connectors diff --git a/example/webui/connector/slack.go b/example/webui/connector/slack.go new file mode 100644 index 0000000..2f08b35 --- /dev/null +++ b/example/webui/connector/slack.go @@ -0,0 +1,132 @@ +package connector + +import ( + "fmt" + "log" + "os" + + "github.com/mudler/local-agent-framework/agent" + + "github.com/slack-go/slack/socketmode" + + "github.com/slack-go/slack" + "github.com/slack-go/slack/slackevents" +) + +type Slack struct { + appToken string + botToken string +} + +func NewSlack(config map[string]string) *Slack { + return &Slack{ + appToken: config["appToken"], + botToken: config["botToken"], + } +} + +func (t *Slack) AgentResultCallback() func(state agent.ActionState) { + return func(state agent.ActionState) { + // Send the result to the bot + } +} + +func (t *Slack) AgentReasoningCallback() func(state agent.ActionCurrentState) bool { + return func(state agent.ActionCurrentState) bool { + // Send the reasoning to the bot + return true + } +} + +func (t *Slack) Start(a *agent.Agent) { + api := slack.New( + t.botToken, + slack.OptionDebug(true), + slack.OptionLog(log.New(os.Stdout, "api: ", log.Lshortfile|log.LstdFlags)), + slack.OptionAppLevelToken(t.appToken), + ) + + client := socketmode.New( + api, + socketmode.OptionDebug(true), + socketmode.OptionLog(log.New(os.Stdout, "socketmode: ", log.Lshortfile|log.LstdFlags)), + ) + go func() { + for evt := range client.Events { + switch evt.Type { + case socketmode.EventTypeConnecting: + fmt.Println("Connecting to Slack with Socket Mode...") + case socketmode.EventTypeConnectionError: + fmt.Println("Connection failed. Retrying later...") + case socketmode.EventTypeConnected: + fmt.Println("Connected to Slack with Socket Mode.") + case socketmode.EventTypeEventsAPI: + eventsAPIEvent, ok := evt.Data.(slackevents.EventsAPIEvent) + if !ok { + fmt.Printf("Ignored %+v\n", evt) + + continue + } + + fmt.Printf("Event received: %+v\n", eventsAPIEvent) + + client.Ack(*evt.Request) + + switch eventsAPIEvent.Type { + case slackevents.CallbackEvent: + innerEvent := eventsAPIEvent.InnerEvent + + b, err := api.AuthTest() + if err != nil { + fmt.Printf("Error getting auth test: %v", err) + } + + switch ev := innerEvent.Data.(type) { + case *slackevents.MessageEvent: + + if b.UserID == ev.User { + // Skip messages from ourselves + return + } + message := ev.Text + res := a.Ask( + agent.WithText(message), + ) + _, _, err = api.PostMessage(ev.Channel, + slack.MsgOptionText(res.Response, false), + slack.MsgOptionPostMessageParameters(slack.PostMessageParameters{LinkNames: 1})) + if err != nil { + fmt.Printf("Error posting message: %v", err) + } + case *slackevents.AppMentionEvent: + + if b.UserID == ev.User { + // Skip messages from ourselves + return + } + message := ev.Text + + res := a.Ask( + agent.WithText(message), + ) + + _, _, err = api.PostMessage(ev.Channel, + slack.MsgOptionText(res.Response, false), + slack.MsgOptionPostMessageParameters(slack.PostMessageParameters{LinkNames: 1})) + if err != nil { + fmt.Printf("Error posting message: %v", err) + } + case *slackevents.MemberJoinedChannelEvent: + fmt.Printf("user %q joined to channel %q", ev.User, ev.Channel) + } + default: + client.Debugf("unsupported Events API event received") + } + default: + fmt.Fprintf(os.Stderr, "Unexpected event type received: %s\n", evt.Type) + } + } + }() + + client.RunContext(a.Context()) +} diff --git a/go.mod b/go.mod index 66fe086..0432954 100644 --- a/go.mod +++ b/go.mod @@ -6,11 +6,13 @@ toolchain go1.22.2 require ( github.com/donseba/go-htmx v1.8.0 - github.com/gofiber/fiber/v3 v3.0.0-20240405062939-c8c51ee78331 + github.com/go-telegram/bot v1.2.1 + github.com/gofiber/fiber/v2 v2.52.4 github.com/onsi/ginkgo/v2 v2.15.0 github.com/onsi/gomega v1.31.1 github.com/sap-nocops/duckduckgogo v0.0.0-20201102135645-176990152850 github.com/sashabaranov/go-openai v1.18.3 + github.com/slack-go/slack v0.12.5 github.com/valyala/fasthttp v1.52.0 ) @@ -20,17 +22,16 @@ require ( github.com/andybalholm/cascadia v1.1.0 // indirect github.com/go-logr/logr v1.3.0 // indirect github.com/go-task/slim-sprig v0.0.0-20230315185526-52ccab3ef572 // indirect - github.com/go-telegram/bot v1.2.1 // indirect - github.com/gofiber/fiber/v2 v2.52.4 // indirect - github.com/gofiber/utils/v2 v2.0.0-beta.4 // indirect github.com/google/go-cmp v0.6.0 // indirect github.com/google/pprof v0.0.0-20210407192527-94a9f03dee38 // indirect github.com/google/uuid v1.6.0 // indirect + github.com/gorilla/websocket v1.4.2 // indirect github.com/klauspost/compress v1.17.7 // indirect github.com/mattn/go-colorable v0.1.13 // indirect github.com/mattn/go-isatty v0.0.20 // indirect github.com/mattn/go-runewidth v0.0.15 // indirect github.com/rivo/uniseg v0.2.0 // indirect + github.com/stretchr/testify v1.9.0 // indirect github.com/valyala/bytebufferpool v1.0.0 // indirect github.com/valyala/tcplisten v1.0.0 // indirect golang.org/x/net v0.21.0 // indirect diff --git a/go.sum b/go.sum index c52b9f1..419c853 100644 --- a/go.sum +++ b/go.sum @@ -18,20 +18,21 @@ github.com/go-task/slim-sprig v0.0.0-20230315185526-52ccab3ef572 h1:tfuBGBXKqDEe github.com/go-task/slim-sprig v0.0.0-20230315185526-52ccab3ef572/go.mod h1:9Pwr4B2jHnOSGXyyzV8ROjYa2ojvAY6HCGYYfMoC3Ls= github.com/go-telegram/bot v1.2.1 h1:FkrixLCtMtPUQAN4plXdNElbhkdXkx2p68YPXKBruDg= github.com/go-telegram/bot v1.2.1/go.mod h1:i2TRs7fXWIeaceF3z7KzsMt/he0TwkVC680mvdTFYeM= +github.com/go-test/deep v1.0.4 h1:u2CU3YKy9I2pmu9pX0eq50wCgjfGIt539SqR7FbHiho= +github.com/go-test/deep v1.0.4/go.mod h1:wGDj63lr65AM2AQyKZd/NYHGb0R+1RLqB8NKt3aSFNA= github.com/gofiber/fiber/v2 v2.52.4 h1:P+T+4iK7VaqUsq2PALYEfBBo6bJZ4q3FP8cZ84EggTM= github.com/gofiber/fiber/v2 v2.52.4/go.mod h1:KEOE+cXMhXG0zHc9d8+E38hoX+ZN7bhOtgeF2oT6jrQ= -github.com/gofiber/fiber/v3 v3.0.0-20240405062939-c8c51ee78331 h1:kDxTNPKMIRz8q28+tJHL2p87Cjtmkfn/OsLfastmpaY= -github.com/gofiber/fiber/v3 v3.0.0-20240405062939-c8c51ee78331/go.mod h1:w7sdfTY0okjZ1oVH6rSOGvuACUIt0By1iK0HKUb3uqM= -github.com/gofiber/utils/v2 v2.0.0-beta.4 h1:1gjbVFFwVwUb9arPcqiB6iEjHBwo7cHsyS41NeIW3co= -github.com/gofiber/utils/v2 v2.0.0-beta.4/go.mod h1:sdRsPU1FXX6YiDGGxd+q2aPJRMzpsxdzCXo9dz+xtOY= github.com/golang/protobuf v1.5.3 h1:KhyjKVUg7Usr/dYsdSqoFveMYd5ko72D+zANwlG1mmg= github.com/golang/protobuf v1.5.3/go.mod h1:XVQd3VNwM+JqD3oG2Ue2ip4fOMUkwXdXDdiuN0vRsmY= +github.com/google/go-cmp v0.5.7/go.mod h1:n+brtR0CgQNWTVd5ZUFpTBC8YFBDLK/h/bpaJ8/DtOE= github.com/google/go-cmp v0.6.0 h1:ofyhxvXcZhMsU5ulbFiLKl/XBFqE1GSq7atu8tAmTRI= github.com/google/go-cmp v0.6.0/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY= github.com/google/pprof v0.0.0-20210407192527-94a9f03dee38 h1:yAJXTCF9TqKcTiHJAE8dj7HMvPfh66eeA2JYW7eFpSE= github.com/google/pprof v0.0.0-20210407192527-94a9f03dee38/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE= github.com/google/uuid v1.6.0 h1:NIvaJDMOsjHA8n1jAhLSgzrAzy1Hgr+hNrb57e+94F0= github.com/google/uuid v1.6.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= +github.com/gorilla/websocket v1.4.2 h1:+/TMaTYc4QFitKJxsQ7Yye35DkWvkdLcvGKqM+x0Ufc= +github.com/gorilla/websocket v1.4.2/go.mod h1:YR8l580nyteQvAITg2hZ9XVh4b55+EU/adAjf1fMHhE= github.com/ianlancetaylor/demangle v0.0.0-20200824232613-28f6c0f3b639/go.mod h1:aSSvb/t6k1mPoxDqO4vJh6VOCGPwU4O0C2/Eqndh1Sc= github.com/klauspost/compress v1.17.7 h1:ehO88t2UGzQK66LMdE8tibEd1ErmzZjNEqWkjLAKQQg= github.com/klauspost/compress v1.17.7/go.mod h1:Di0epgTjJY877eYKx5yC51cX2A2Vl2ibi7bDH9ttBbw= @@ -54,7 +55,10 @@ github.com/sap-nocops/duckduckgogo v0.0.0-20201102135645-176990152850 h1:DsVS3HK github.com/sap-nocops/duckduckgogo v0.0.0-20201102135645-176990152850/go.mod h1:ur7dCshjxoPKHtsZgtb6n5gpOmzQNRQ5AT+yOLwaJxM= github.com/sashabaranov/go-openai v1.18.3 h1:dspFGkmZbhjg1059KhqLYSV2GaCiRIn+bOu50TlXUq8= github.com/sashabaranov/go-openai v1.18.3/go.mod h1:lj5b/K+zjTSFxVLijLSTDZuP7adOgerWeFyZLUhAKRg= +github.com/slack-go/slack v0.12.5 h1:ddZ6uz6XVaB+3MTDhoW04gG+Vc/M/X1ctC+wssy2cqs= +github.com/slack-go/slack v0.12.5/go.mod h1:hlGi5oXA+Gt+yWTPP0plCdRKmjsDxecdHxYQdlMQKOw= github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= +github.com/stretchr/testify v1.2.2/go.mod h1:a8OnRcib4nhh0OaRAV+Yts87kKdq0PP7pXfy6kDkUVs= github.com/stretchr/testify v1.6.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= github.com/stretchr/testify v1.9.0 h1:HtqpIVDClZ4nwg75+f6Lvsy/wHu+3BoSGCbBAcpTsTg= github.com/stretchr/testify v1.9.0/go.mod h1:r2ic/lqez/lEtzL7wO/rwa5dbSLXVDPFyf8C91i36aY= @@ -80,6 +84,7 @@ golang.org/x/text v0.14.0 h1:ScX5w1eTa3QqT8oi6+ziP7dTV1S2+ALU0bI+0zXKWiQ= golang.org/x/text v0.14.0/go.mod h1:18ZOQIKpY8NJVqYksKHtTdi31H5itFRjB5/qKTNYzSU= golang.org/x/tools v0.16.1 h1:TLyB3WofjdOEepBHAU20JdNC1Zbg87elYofWYAY5oZA= golang.org/x/tools v0.16.1/go.mod h1:kYVVN6I1mBNoB1OX+noeBjbRk4IUEPa7JJ+TJMEooJ0= +golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= google.golang.org/protobuf v1.28.0 h1:w43yiav+6bVFTBQFZX0r7ipe9JQ1QsbMgHwbBziscLw= google.golang.org/protobuf v1.28.0/go.mod h1:HV8QOd/L58Z+nl8r43ehVNZIU/HEI6OcFqwMG9pJV4I= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405 h1:yhCVgyC4o1eVCa2tZl7eS0r+SDo693bJlVdllGtEeKM= From 4453f43beca540bc9ea55b07c100e38311e7d956 Mon Sep 17 00:00:00 2001 From: mudler Date: Tue, 9 Apr 2024 18:24:47 +0200 Subject: [PATCH 069/399] Add slack and github connectors --- README.md | 54 +++++++++ agent/agent.go | 11 +- example/webui/agentpool.go | 19 ++- example/webui/connector/discord.go | 105 +++++++++++++++++ example/webui/connector/githubissue.go | 153 +++++++++++++++++++++++++ example/webui/connector/slack.go | 6 +- example/webui/connector/telegram.go | 16 ++- example/webui/create.html | 36 +++--- go.mod | 4 + go.sum | 15 +++ slack.yaml | 38 ++++++ 11 files changed, 423 insertions(+), 34 deletions(-) create mode 100644 README.md create mode 100644 example/webui/connector/discord.go create mode 100644 example/webui/connector/githubissue.go create mode 100644 slack.yaml diff --git a/README.md b/README.md new file mode 100644 index 0000000..4cc192b --- /dev/null +++ b/README.md @@ -0,0 +1,54 @@ +## Connectors + +### Github (issues) + +Create an user and a PAT token: + +```json +{ + "token": "PAT_TOKEN", + "repository": "testrepo", + "owner": "ci-forks", + "botUserName": "localai-bot" +} +``` + +### Discord + +Follow the steps in: https://discordpy.readthedocs.io/en/stable/discord.html to create a discord bot. + +The token of the bot is in the "Bot" tab. Also enable " Message Content Intent " in the Bot tab! + +```json +{ +"token": "Bot DISCORDTOKENHERE", +"defaultChannel": "OPTIONALCHANNELINT" +} +``` + +### Slack + +See slack.yaml + +- Create a new App from a manifest (copy-paste from `slack.yaml`) +- Create Oauth token bot token from "OAuth & Permissions" -> "OAuth Tokens for Your Workspace" +- Create App level token (from "Basic Information" -> "App-Level Tokens" ( `scope connections:writeRoute authorizations:read` )) + +In the UI, when configuring the connector: + +```json +{ +"botToken": "xoxb-...", +"appToken": "xapp-1-..." +} +``` + +### Telegram + +Ask a token to @botfather + +In the UI, when configuring the connector: + +```json +{ "token": "botfathertoken" } +``` \ No newline at end of file diff --git a/agent/agent.go b/agent/agent.go index c6d980c..59e996c 100644 --- a/agent/agent.go +++ b/agent/agent.go @@ -557,21 +557,26 @@ func (a *Agent) Run() error { // Expose a REST API to interact with the agent to ask it things - todoTimer := time.NewTicker(a.options.periodicRuns) + //todoTimer := time.NewTicker(a.options.periodicRuns) + timer := time.NewTimer(a.options.periodicRuns) for { select { case job := <-a.jobQueue: // Consume the job and generate a response // TODO: Give a short-term memory to the agent a.consumeJob(job, UserRole) + timer.Reset(a.options.periodicRuns) case <-a.context.Done(): - // Agent has been canceled, return error + // Agent has been canceled, return error return ErrContextCanceled - case <-todoTimer.C: + case <-timer.C: if !a.options.standaloneJob { continue } + // TODO: We should also do not immediately fire this timer but + // instead have a cool-off timer starting after we received the last job a.periodicallyRun() + timer.Reset(a.options.periodicRuns) } } } diff --git a/example/webui/agentpool.go b/example/webui/agentpool.go index 083c82e..f307a82 100644 --- a/example/webui/agentpool.go +++ b/example/webui/agentpool.go @@ -119,9 +119,11 @@ func (a *AgentPool) List() []string { } const ( - ConnectorTelegram = "telegram" - ConnectorSlack = "slack" - ActionSearch = "search" + ConnectorTelegram = "telegram" + ConnectorSlack = "slack" + ConnectorDiscord = "discord" + ConnectorGithubIssues = "github-issues" + ActionSearch = "search" ) var AvailableActions = []string{ActionSearch} @@ -154,7 +156,12 @@ type Connector interface { Start(a *Agent) } -var AvailableConnectors = []string{ConnectorTelegram, ConnectorSlack} +var AvailableConnectors = []string{ + ConnectorTelegram, + ConnectorSlack, + ConnectorDiscord, + ConnectorGithubIssues, +} func (a *AgentConfig) availableConnectors() []Connector { connectors := []Connector{} @@ -180,6 +187,10 @@ func (a *AgentConfig) availableConnectors() []Connector { connectors = append(connectors, cc) case ConnectorSlack: connectors = append(connectors, connector.NewSlack(config)) + case ConnectorDiscord: + connectors = append(connectors, connector.NewDiscord(config)) + case ConnectorGithubIssues: + connectors = append(connectors, connector.NewGithub(config)) } } return connectors diff --git a/example/webui/connector/discord.go b/example/webui/connector/discord.go new file mode 100644 index 0000000..64b699a --- /dev/null +++ b/example/webui/connector/discord.go @@ -0,0 +1,105 @@ +package connector + +import ( + "fmt" + "strings" + + "github.com/bwmarrin/discordgo" + "github.com/mudler/local-agent-framework/agent" +) + +type Discord struct { + token string + defaultChannel string +} + +func NewDiscord(config map[string]string) *Discord { + return &Discord{ + token: config["token"], + defaultChannel: config["defaultChannel"], + } +} + +func (d *Discord) AgentResultCallback() func(state agent.ActionState) { + return func(state agent.ActionState) { + // Send the result to the bot + } +} + +func (d *Discord) AgentReasoningCallback() func(state agent.ActionCurrentState) bool { + return func(state agent.ActionCurrentState) bool { + // Send the reasoning to the bot + return true + } +} + +func (d *Discord) Start(a *agent.Agent) { + + Token := d.token + // Create a new Discord session using the provided bot token. + dg, err := discordgo.New(Token) + if err != nil { + fmt.Println("error creating Discord session,", err) + return + } + + // Register the messageCreate func as a callback for MessageCreate events. + dg.AddHandler(d.messageCreate(a)) + + // In this example, we only care about receiving message events. + dg.Identify.Intents = discordgo.IntentsGuildMessages | discordgo.IntentsDirectMessages | discordgo.IntentMessageContent + + // Open a websocket connection to Discord and begin listening. + err = dg.Open() + if err != nil { + fmt.Println("error opening connection,", err) + return + } + + go func() { + <-a.Context().Done() + dg.Close() + }() +} + +// This function will be called (due to AddHandler above) every time a new +// message is created on any channel that the authenticated bot has access to. +func (d *Discord) messageCreate(a *agent.Agent) func(s *discordgo.Session, m *discordgo.MessageCreate) { + return func(s *discordgo.Session, m *discordgo.MessageCreate) { + // Ignore all messages created by the bot itself + // This isn't required in this specific example but it's a good practice. + if m.Author.ID == s.State.User.ID { + return + } + interact := func() { + //m := m.ContentWithMentionsReplaced() + content := m.Content + + content = strings.ReplaceAll(content, "<@"+s.State.User.ID+"> ", "") + + job := a.Ask( + agent.WithText( + content, + ), + ) + _, err := s.ChannelMessageSend(m.ChannelID, job.Response) + if err != nil { + fmt.Println("error sending message,", err) + } + } + + // Interact if we are mentioned + for _, mention := range m.Mentions { + if mention.ID == s.State.User.ID { + interact() + return + } + } + + // Or we are in the default channel (if one is set!) + if d.defaultChannel != "" && m.ChannelID == d.defaultChannel { + interact() + return + } + } +} diff --git a/example/webui/connector/githubissue.go b/example/webui/connector/githubissue.go new file mode 100644 index 0000000..6706f15 --- /dev/null +++ b/example/webui/connector/githubissue.go @@ -0,0 +1,153 @@ +package connector + +import ( + "fmt" + "strings" + "time" + + "github.com/google/go-github/v61/github" + "github.com/mudler/local-agent-framework/agent" + "github.com/sashabaranov/go-openai" +) + +type GithubIssues struct { + token string + repository string + owner string + agent *agent.Agent + pollInterval time.Duration + client *github.Client +} + +func NewGithub(config map[string]string) *GithubIssues { + client := github.NewClient(nil).WithAuthToken(config["token"]) + interval, err := time.ParseDuration(config["pollInterval"]) + if err != nil { + interval = 1 * time.Minute + } + + return &GithubIssues{ + client: client, + token: config["token"], + repository: config["repository"], + owner: config["owner"], + pollInterval: interval, + } +} + +func (g *GithubIssues) AgentResultCallback() func(state agent.ActionState) { + return func(state agent.ActionState) { + // Send the result to the bot + } +} + +func (g *GithubIssues) AgentReasoningCallback() func(state agent.ActionCurrentState) bool { + return func(state agent.ActionCurrentState) bool { + // Send the reasoning to the bot + return true + } +} + +func (g *GithubIssues) Start(a *agent.Agent) { + // Start the connector + g.agent = a + + go func() { + ticker := time.NewTicker(g.pollInterval) + for { + select { + case <-ticker.C: + fmt.Println("Fire in da hole!") + g.issuesService() + case <-a.Context().Done(): + return + } + } + }() +} + +func (g *GithubIssues) issuesService() { + user, _, err := g.client.Users.Get(g.agent.Context(), "") + if err != nil { + fmt.Printf("\nerror: %v\n", err) + return + } + + issues, _, err := g.client.Issues.ListByRepo( + g.agent.Context(), + g.owner, + g.repository, + &github.IssueListByRepoOptions{}) + if err != nil { + fmt.Println("Error listing issues", err) + } + for _, issue := range issues { + // Do something with the issue + if issue.IsPullRequest() { + continue + } + + messages := []openai.ChatCompletionMessage{ + { + Role: "system", + Content: fmt.Sprintf("This is a conversation with an user that opened a Github issue with title '%s'.", issue.GetTitle()), + }, + { + Role: "user", + Content: issue.GetBody(), + }, + } + + comments, _, _ := g.client.Issues.ListComments(g.agent.Context(), g.owner, g.repository, issue.GetNumber(), + &github.IssueListCommentsOptions{}) + + mustAnswer := false + botAnsweredAlready := false + for i, comment := range comments { + role := "user" + if comment.GetUser().GetLogin() == user.GetLogin() { + botAnsweredAlready = true + role = "assistant" + } + messages = append(messages, openai.ChatCompletionMessage{ + Role: role, + Content: comment.GetBody(), + }) + + // if last comment is from the user and mentions the bot username, we must answer + if comment.User.GetName() != user.GetLogin() && len(comments)-1 == i { + if strings.Contains(comment.GetBody(), fmt.Sprintf("@%s", user.GetLogin())) { + fmt.Println("Bot was mentioned in the last comment") + mustAnswer = true + } + } + } + + if len(comments) == 0 || !botAnsweredAlready { + // if no comments, or bot didn't answer yet, we must answer + fmt.Println("No comments, or bot didn't answer yet") + fmt.Println("Comments:", len(comments)) + fmt.Println("Bot answered already", botAnsweredAlready) + mustAnswer = true + } + + if !mustAnswer { + continue + } + + res := g.agent.Ask( + agent.WithConversationHistory(messages), + ) + + _, _, err := g.client.Issues.CreateComment( + g.agent.Context(), + g.owner, g.repository, + issue.GetNumber(), &github.IssueComment{ + Body: github.String(res.Response), + }, + ) + if err != nil { + fmt.Println("Error creating comment", err) + } + } +} diff --git a/example/webui/connector/slack.go b/example/webui/connector/slack.go index 2f08b35..a42b511 100644 --- a/example/webui/connector/slack.go +++ b/example/webui/connector/slack.go @@ -41,15 +41,15 @@ func (t *Slack) AgentReasoningCallback() func(state agent.ActionCurrentState) bo func (t *Slack) Start(a *agent.Agent) { api := slack.New( t.botToken, - slack.OptionDebug(true), + // slack.OptionDebug(true), slack.OptionLog(log.New(os.Stdout, "api: ", log.Lshortfile|log.LstdFlags)), slack.OptionAppLevelToken(t.appToken), ) client := socketmode.New( api, - socketmode.OptionDebug(true), - socketmode.OptionLog(log.New(os.Stdout, "socketmode: ", log.Lshortfile|log.LstdFlags)), + // socketmode.OptionDebug(true), + //socketmode.OptionLog(log.New(os.Stdout, "socketmode: ", log.Lshortfile|log.LstdFlags)), ) go func() { for evt := range client.Events { diff --git a/example/webui/connector/telegram.go b/example/webui/connector/telegram.go index 434f500..df7c349 100644 --- a/example/webui/connector/telegram.go +++ b/example/webui/connector/telegram.go @@ -14,22 +14,29 @@ import ( type Telegram struct { Token string lastChatID int64 + bot *bot.Bot + agent *agent.Agent } // Send any text message to the bot after the bot has been started func (t *Telegram) AgentResultCallback() func(state agent.ActionState) { return func(state agent.ActionState) { - // Send the result to the bot + t.bot.SetMyDescription(t.agent.Context(), &bot.SetMyDescriptionParams{ + Description: state.Reasoning, + }) } } + func (t *Telegram) AgentReasoningCallback() func(state agent.ActionCurrentState) bool { return func(state agent.ActionCurrentState) bool { - // Send the reasoning to the bot + t.bot.SetMyDescription(t.agent.Context(), &bot.SetMyDescriptionParams{ + Description: state.Reasoning, + }) return true } - } + func (t *Telegram) Start(a *agent.Agent) { ctx, cancel := signal.NotifyContext(a.Context(), os.Interrupt) defer cancel() @@ -54,6 +61,9 @@ func (t *Telegram) Start(a *agent.Agent) { panic(err) } + t.bot = b + t.agent = a + go func() { for m := range a.ConversationChannel() { if t.lastChatID == 0 { diff --git a/example/webui/create.html b/example/webui/create.html index ab12da5..95246a3 100644 --- a/example/webui/create.html +++ b/example/webui/create.html @@ -19,28 +19,25 @@
-
-
-
+
-
-
+ diff --git a/go.mod b/go.mod index 0432954..4ea46cc 100644 --- a/go.mod +++ b/go.mod @@ -5,9 +5,11 @@ go 1.22 toolchain go1.22.2 require ( + github.com/bwmarrin/discordgo v0.28.1 github.com/donseba/go-htmx v1.8.0 github.com/go-telegram/bot v1.2.1 github.com/gofiber/fiber/v2 v2.52.4 + github.com/google/go-github/v61 v61.0.0 github.com/onsi/ginkgo/v2 v2.15.0 github.com/onsi/gomega v1.31.1 github.com/sap-nocops/duckduckgogo v0.0.0-20201102135645-176990152850 @@ -23,6 +25,7 @@ require ( github.com/go-logr/logr v1.3.0 // indirect github.com/go-task/slim-sprig v0.0.0-20230315185526-52ccab3ef572 // indirect github.com/google/go-cmp v0.6.0 // indirect + github.com/google/go-querystring v1.1.0 // indirect github.com/google/pprof v0.0.0-20210407192527-94a9f03dee38 // indirect github.com/google/uuid v1.6.0 // indirect github.com/gorilla/websocket v1.4.2 // indirect @@ -34,6 +37,7 @@ require ( github.com/stretchr/testify v1.9.0 // indirect github.com/valyala/bytebufferpool v1.0.0 // indirect github.com/valyala/tcplisten v1.0.0 // indirect + golang.org/x/crypto v0.19.0 // indirect golang.org/x/net v0.21.0 // indirect golang.org/x/sys v0.19.0 // indirect golang.org/x/text v0.14.0 // indirect diff --git a/go.sum b/go.sum index 419c853..2c4e43c 100644 --- a/go.sum +++ b/go.sum @@ -4,6 +4,8 @@ github.com/andybalholm/brotli v1.1.0 h1:eLKJA0d02Lf0mVpIDgYnqXcUn0GqVmEFny3VuID1 github.com/andybalholm/brotli v1.1.0/go.mod h1:sms7XGricyQI9K10gOSf56VKKWS4oLer58Q+mhRPtnY= github.com/andybalholm/cascadia v1.1.0 h1:BuuO6sSfQNFRu1LppgbD25Hr2vLYW25JvxHs5zzsLTo= github.com/andybalholm/cascadia v1.1.0/go.mod h1:GsXiBklL0woXo1j/WYWtSYYC4ouU9PqHO0sqidkEA4Y= +github.com/bwmarrin/discordgo v0.28.1 h1:gXsuo2GBO7NbR6uqmrrBDplPUx2T3nzu775q/Rd1aG4= +github.com/bwmarrin/discordgo v0.28.1/go.mod h1:NJZpH+1AfhIcyQsPeuBKsUtYrRnjkyu0kIVMCHkZtRY= github.com/chzyer/logex v1.1.10/go.mod h1:+Ywpsq7O8HXn0nuIou7OrIPyXbp3wmkHB+jjWRnGsAI= github.com/chzyer/readline v0.0.0-20180603132655-2972be24d48e/go.mod h1:nSuG5e5PlCu98SY8svDHJxuZscDgtXS6KTTbou5AhLI= github.com/chzyer/test v0.0.0-20180213035817-a1ea475d72b1/go.mod h1:Q3SI9o4m/ZMnBNeIyt5eFwwo7qiLfzFZmjNmxjkiQlU= @@ -24,9 +26,14 @@ github.com/gofiber/fiber/v2 v2.52.4 h1:P+T+4iK7VaqUsq2PALYEfBBo6bJZ4q3FP8cZ84Egg github.com/gofiber/fiber/v2 v2.52.4/go.mod h1:KEOE+cXMhXG0zHc9d8+E38hoX+ZN7bhOtgeF2oT6jrQ= github.com/golang/protobuf v1.5.3 h1:KhyjKVUg7Usr/dYsdSqoFveMYd5ko72D+zANwlG1mmg= github.com/golang/protobuf v1.5.3/go.mod h1:XVQd3VNwM+JqD3oG2Ue2ip4fOMUkwXdXDdiuN0vRsmY= +github.com/google/go-cmp v0.5.2/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= github.com/google/go-cmp v0.5.7/go.mod h1:n+brtR0CgQNWTVd5ZUFpTBC8YFBDLK/h/bpaJ8/DtOE= github.com/google/go-cmp v0.6.0 h1:ofyhxvXcZhMsU5ulbFiLKl/XBFqE1GSq7atu8tAmTRI= github.com/google/go-cmp v0.6.0/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY= +github.com/google/go-github/v61 v61.0.0 h1:VwQCBwhyE9JclCI+22/7mLB1PuU9eowCXKY5pNlu1go= +github.com/google/go-github/v61 v61.0.0/go.mod h1:0WR+KmsWX75G2EbpyGsGmradjo3IiciuI4BmdVCobQY= +github.com/google/go-querystring v1.1.0 h1:AnCroh3fv4ZBgVIf1Iwtovgjaw/GiKJo8M8yD/fhyJ8= +github.com/google/go-querystring v1.1.0/go.mod h1:Kcdr2DB4koayq7X8pmAG4sNG59So17icRSOU623lUBU= github.com/google/pprof v0.0.0-20210407192527-94a9f03dee38 h1:yAJXTCF9TqKcTiHJAE8dj7HMvPfh66eeA2JYW7eFpSE= github.com/google/pprof v0.0.0-20210407192527-94a9f03dee38/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE= github.com/google/uuid v1.6.0 h1:NIvaJDMOsjHA8n1jAhLSgzrAzy1Hgr+hNrb57e+94F0= @@ -69,19 +76,27 @@ github.com/valyala/fasthttp v1.52.0/go.mod h1:hf5C4QnVMkNXMspnsUlfM3WitlgYflyhHY github.com/valyala/tcplisten v1.0.0 h1:rBHj/Xf+E1tRGZyWIWwJDiRY0zc1Js+CV5DqwacVSA8= github.com/valyala/tcplisten v1.0.0/go.mod h1:T0xQ8SeCZGxckz9qRXTfG43PvQ/mcWh7FwZEA7Ioqkc= golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= +golang.org/x/crypto v0.0.0-20210421170649-83a5a9bb288b/go.mod h1:T9bdIzuCu7OtxOm1hfPfRQxPLYneinmdGuTeoZ9dtd4= +golang.org/x/crypto v0.19.0 h1:ENy+Az/9Y1vSrlrvBSyna3PITt4tiZLf7sgCjZBX7Wo= +golang.org/x/crypto v0.19.0/go.mod h1:Iy9bg/ha4yyC70EfRS8jz+B6ybOBKMaSxLj6P6oBDfU= golang.org/x/net v0.0.0-20180218175443-cbe0f9307d01/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20200202094626-16171245cfb2/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= +golang.org/x/net v0.0.0-20210226172049-e18ecbb05110/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg= golang.org/x/net v0.21.0 h1:AQyQV4dYCvJ7vGmJyKki9+PBdyvhkSd8EIx/qb0AYv4= golang.org/x/net v0.21.0/go.mod h1:bIjVDfnllIU7BJ2DNgfnXvpSvtn8VRwhlsaeUTyUS44= golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20191204072324-ce4227a45e2e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20201119102817-f84b799fce68/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20220811171246-fbc7d0a398ab/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.19.0 h1:q5f1RH2jigJ1MoAWp2KTp3gm5zAGFUTarQZ5U386+4o= golang.org/x/sys v0.19.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= +golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= +golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= golang.org/x/text v0.14.0 h1:ScX5w1eTa3QqT8oi6+ziP7dTV1S2+ALU0bI+0zXKWiQ= golang.org/x/text v0.14.0/go.mod h1:18ZOQIKpY8NJVqYksKHtTdi31H5itFRjB5/qKTNYzSU= +golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.16.1 h1:TLyB3WofjdOEepBHAU20JdNC1Zbg87elYofWYAY5oZA= golang.org/x/tools v0.16.1/go.mod h1:kYVVN6I1mBNoB1OX+noeBjbRk4IUEPa7JJ+TJMEooJ0= golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= diff --git a/slack.yaml b/slack.yaml new file mode 100644 index 0000000..e0833bf --- /dev/null +++ b/slack.yaml @@ -0,0 +1,38 @@ +## To install: +## Create an app from this manifest. +## Generate tokens: +## appLevel token from "Basic Information" -> "App-Level Tokens" ( scope connections:writeRoute authorizations:read ) +## bot token from "OAuth & Permissions" -> "OAuth Tokens for Your Workspace" +## When configuring the connector, supply the tokens with: +## { "botToken": "OAuth Tokens for Your Workspace", "appToken": "App-Level Tokens" } +display_information: + name: LocalAgent + description: LocalAgent bot + background_color: "#0040ff" +features: + bot_user: + display_name: LocalAgent + always_online: true +oauth_config: + scopes: + bot: + - app_mentions:read + - channels:history + - channels:read + - chat:write + - commands + - im:history + - im:read + - im:write + - users:read + - users:read.email +settings: + event_subscriptions: + bot_events: + - app_mention + - message.im + interactivity: + is_enabled: true + org_deploy_enabled: false + socket_mode_enabled: true + token_rotation_enabled: false From 36abf837a9f831b55b189aa8a6eb53ddf9966592 Mon Sep 17 00:00:00 2001 From: mudler Date: Tue, 9 Apr 2024 20:05:08 +0200 Subject: [PATCH 070/399] Add rag commands --- llm/rag.go | 71 ++++++++++++++++++++++++ llm/store.go | 152 +++++++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 223 insertions(+) create mode 100644 llm/rag.go create mode 100644 llm/store.go diff --git a/llm/rag.go b/llm/rag.go new file mode 100644 index 0000000..10ca98e --- /dev/null +++ b/llm/rag.go @@ -0,0 +1,71 @@ +package llm + +import ( + "context" + "fmt" + + "github.com/sashabaranov/go-openai" +) + +func StoreStringEmbeddingInVectorDB(apiHost string, openaiClient *openai.Client, s string) error { + // Example usage + client := NewStoreClient(apiHost) + + resp, err := openaiClient.CreateEmbeddings(context.TODO(), + openai.EmbeddingRequestStrings{ + Input: []string{s}, + Model: openai.AdaEmbeddingV2, + }, + ) + if err != nil { + return fmt.Errorf("error getting keys: %v", err) + } + + if len(resp.Data) == 0 { + return fmt.Errorf("no response from OpenAI API") + } + + embedding := resp.Data[0].Embedding + + setReq := SetRequest{ + Keys: [][]float32{embedding}, + Values: []string{s}, + } + err = client.Set(setReq) + if err != nil { + return fmt.Errorf("error setting keys: %v", err) + } + + return nil +} + +func FindSimilarStrings(apiHost string, openaiClient *openai.Client, s string, similarEntries int) ([]string, error) { + client := NewStoreClient(apiHost) + + resp, err := openaiClient.CreateEmbeddings(context.TODO(), + openai.EmbeddingRequestStrings{ + Input: []string{s}, + Model: openai.AdaEmbeddingV2, + }, + ) + if err != nil { + return []string{}, fmt.Errorf("error getting keys: %v", err) + } + + if len(resp.Data) == 0 { + return []string{}, fmt.Errorf("no response from OpenAI API") + } + embedding := resp.Data[0].Embedding + + // Find example + findReq := FindRequest{ + TopK: similarEntries, // Number of similar entries you want to find + Key: embedding, // The key you're looking for similarities to + } + findResp, err := client.Find(findReq) + if err != nil { + return []string{}, fmt.Errorf("error finding keys: %v", err) + } + + return findResp.Values, nil +} diff --git a/llm/store.go b/llm/store.go new file mode 100644 index 0000000..ba3bebe --- /dev/null +++ b/llm/store.go @@ -0,0 +1,152 @@ +package llm + +import ( + "bytes" + "encoding/json" + "fmt" + "io/ioutil" + "net/http" +) + +// Define a struct to hold your store API client +type StoreClient struct { + BaseURL string + Client *http.Client +} + +// Define request and response struct formats based on the API documentation +type SetRequest struct { + Keys [][]float32 `json:"keys"` + Values []string `json:"values"` +} + +type GetRequest struct { + Keys [][]float32 `json:"keys"` +} + +type GetResponse struct { + Keys [][]float32 `json:"keys"` + Values []string `json:"values"` +} + +type DeleteRequest struct { + Keys [][]float32 `json:"keys"` +} + +type FindRequest struct { + TopK int `json:"topk"` + Key []float32 `json:"key"` +} + +type FindResponse struct { + Keys [][]float32 `json:"keys"` + Values []string `json:"values"` + Similarities []float32 `json:"similarities"` +} + +// Constructor for StoreClient +func NewStoreClient(baseUrl string) *StoreClient { + return &StoreClient{ + BaseURL: baseUrl, + Client: &http.Client{}, + } +} + +// Implement Set method +func (c *StoreClient) Set(req SetRequest) error { + return c.doRequest("stores/set", req) +} + +// Implement Get method +func (c *StoreClient) Get(req GetRequest) (*GetResponse, error) { + body, err := c.doRequestWithResponse("stores/get", req) + if err != nil { + return nil, err + } + + var resp GetResponse + err = json.Unmarshal(body, &resp) + if err != nil { + return nil, err + } + + return &resp, nil +} + +// Implement Delete method +func (c *StoreClient) Delete(req DeleteRequest) error { + return c.doRequest("stores/delete", req) +} + +// Implement Find method +func (c *StoreClient) Find(req FindRequest) (*FindResponse, error) { + body, err := c.doRequestWithResponse("stores/find", req) + if err != nil { + return nil, err + } + + var resp FindResponse + err = json.Unmarshal(body, &resp) + if err != nil { + return nil, err + } + + return &resp, nil +} + +// Helper function to perform a request without expecting a response body +func (c *StoreClient) doRequest(path string, data interface{}) error { + jsonData, err := json.Marshal(data) + if err != nil { + return err + } + + req, err := http.NewRequest("POST", c.BaseURL+"/"+path, bytes.NewBuffer(jsonData)) + if err != nil { + return err + } + req.Header.Set("Content-Type", "application/json") + + resp, err := c.Client.Do(req) + if err != nil { + return err + } + defer resp.Body.Close() + + if resp.StatusCode != http.StatusOK { + return fmt.Errorf("API request to %s failed with status code %d", path, resp.StatusCode) + } + + return nil +} + +// Helper function to perform a request and parse the response body +func (c *StoreClient) doRequestWithResponse(path string, data interface{}) ([]byte, error) { + jsonData, err := json.Marshal(data) + if err != nil { + return nil, err + } + + req, err := http.NewRequest("POST", c.BaseURL+"/"+path, bytes.NewBuffer(jsonData)) + if err != nil { + return nil, err + } + req.Header.Set("Content-Type", "application/json") + + resp, err := c.Client.Do(req) + if err != nil { + return nil, err + } + defer resp.Body.Close() + + if resp.StatusCode != http.StatusOK { + return nil, fmt.Errorf("API request to %s failed with status code %d", path, resp.StatusCode) + } + + body, err := ioutil.ReadAll(resp.Body) + if err != nil { + return nil, err + } + + return body, nil +} From 78ba7871e9367dce288025a559b8921bb2f5b9d8 Mon Sep 17 00:00:00 2001 From: Ettore Di Giacinto Date: Tue, 9 Apr 2024 22:34:22 +0200 Subject: [PATCH 071/399] rag: add KB to conversation --- agent/agent.go | 44 ++++++++++++++++++++++++++++++++++++++++++-- agent/options.go | 41 ++++++++++++++++++++++++++++------------- llm/rag.go | 8 ++------ llm/store.go | 21 +++++++++++++++------ 4 files changed, 87 insertions(+), 27 deletions(-) diff --git a/agent/agent.go b/agent/agent.go index 59e996c..662391a 100644 --- a/agent/agent.go +++ b/agent/agent.go @@ -23,6 +23,7 @@ type Agent struct { options *options Character Character client *openai.Client + storeClient *llm.StoreClient jobQueue chan *Job actionContext *action.ActionContext context *action.ActionContext @@ -43,6 +44,7 @@ func New(opts ...Option) (*Agent, error) { } client := llm.NewClient(options.LLMAPI.APIKey, options.LLMAPI.APIURL) + storeClient := llm.NewStoreClient(options.LLMAPI.APIURL, options.LLMAPI.APIKey) c := context.Background() if options.context != nil { @@ -56,6 +58,7 @@ func New(opts ...Option) (*Agent, error) { client: client, Character: options.character, currentState: &action.StateResult{}, + storeClient: storeClient, context: action.NewContext(ctx, cancel), } @@ -168,8 +171,9 @@ func (a *Agent) runAction(chosenAction Action, decisionResult *decisionResult) ( } func (a *Agent) consumeJob(job *Job, role string) { + // We are self evaluating if we consume the job as a system role selfEvaluation := role == SystemRole - // Consume the job and generate a response + a.Lock() // Set the action context ctx, cancel := context.WithCancel(context.Background()) @@ -199,6 +203,42 @@ func (a *Agent) consumeJob(job *Job, role string) { }) } + // RAG + if a.options.enableKB { + // Walk conversation from bottom to top, and find the first message of the user + // to use it as a query to the KB + var userMessage string + for i := len(a.currentConversation) - 1; i >= 0; i-- { + if a.currentConversation[i].Role == "user" { + userMessage = a.currentConversation[i].Content + break + } + } + + if userMessage != "" { + results, err := llm.FindSimilarStrings(a.storeClient, a.client, userMessage, a.options.kbResults) + if err != nil { + job.Result.Finish(fmt.Errorf("error finding similar strings inside KB: %w", err)) + return + } + + formatResults := "" + for _, r := range results { + formatResults += fmt.Sprintf("- %s \n", r) + } + if a.options.debugMode { + fmt.Println("Found similar strings in KB:") + fmt.Println(formatResults) + } + a.currentConversation = append(a.currentConversation, + openai.ChatCompletionMessage{ + Role: "system", + Content: fmt.Sprintf("Given the user input you have the following in memory:\n%s", formatResults), + }, + ) + } + } + var pickTemplate string var reEvaluationTemplate string @@ -567,7 +607,7 @@ func (a *Agent) Run() error { a.consumeJob(job, UserRole) timer.Reset(a.options.periodicRuns) case <-a.context.Done(): - // Agent has been canceled, return error + // Agent has been canceled, return error return ErrContextCanceled case <-timer.C: if !a.options.standaloneJob { diff --git a/agent/options.go b/agent/options.go index 441117a..1d7cde8 100644 --- a/agent/options.go +++ b/agent/options.go @@ -14,19 +14,20 @@ type llmOptions struct { } type options struct { - LLMAPI llmOptions - character Character - randomIdentityGuidance string - randomIdentity bool - userActions Actions - enableHUD, standaloneJob, showCharacter bool - debugMode bool - initiateConversations bool - characterfile string - statefile string - context context.Context - permanentGoal string - periodicRuns time.Duration + LLMAPI llmOptions + character Character + randomIdentityGuidance string + randomIdentity bool + userActions Actions + enableHUD, standaloneJob, showCharacter, enableKB bool + debugMode bool + initiateConversations bool + characterfile string + statefile string + context context.Context + permanentGoal string + periodicRuns time.Duration + kbResults int // callbacks reasoningCallback func(ActionCurrentState) bool @@ -65,6 +66,20 @@ var EnableHUD = func(o *options) error { return nil } +var EnableKnowledgeBase = func(o *options) error { + o.enableKB = true + o.kbResults = 5 + return nil +} + +func EnableKnowledgeBaseWithResults(results int) Option { + return func(o *options) error { + o.enableKB = true + o.kbResults = results + return nil + } +} + var EnableInitiateConversations = func(o *options) error { o.initiateConversations = true return nil diff --git a/llm/rag.go b/llm/rag.go index 10ca98e..af0371b 100644 --- a/llm/rag.go +++ b/llm/rag.go @@ -7,10 +7,7 @@ import ( "github.com/sashabaranov/go-openai" ) -func StoreStringEmbeddingInVectorDB(apiHost string, openaiClient *openai.Client, s string) error { - // Example usage - client := NewStoreClient(apiHost) - +func StoreStringEmbeddingInVectorDB(client *StoreClient, openaiClient *openai.Client, s string) error { resp, err := openaiClient.CreateEmbeddings(context.TODO(), openai.EmbeddingRequestStrings{ Input: []string{s}, @@ -39,8 +36,7 @@ func StoreStringEmbeddingInVectorDB(apiHost string, openaiClient *openai.Client, return nil } -func FindSimilarStrings(apiHost string, openaiClient *openai.Client, s string, similarEntries int) ([]string, error) { - client := NewStoreClient(apiHost) +func FindSimilarStrings(client *StoreClient, openaiClient *openai.Client, s string, similarEntries int) ([]string, error) { resp, err := openaiClient.CreateEmbeddings(context.TODO(), openai.EmbeddingRequestStrings{ diff --git a/llm/store.go b/llm/store.go index ba3bebe..3b85568 100644 --- a/llm/store.go +++ b/llm/store.go @@ -10,8 +10,9 @@ import ( // Define a struct to hold your store API client type StoreClient struct { - BaseURL string - Client *http.Client + BaseURL string + APIToken string + Client *http.Client } // Define request and response struct formats based on the API documentation @@ -45,10 +46,11 @@ type FindResponse struct { } // Constructor for StoreClient -func NewStoreClient(baseUrl string) *StoreClient { +func NewStoreClient(baseUrl, apiToken string) *StoreClient { return &StoreClient{ - BaseURL: baseUrl, - Client: &http.Client{}, + BaseURL: baseUrl, + APIToken: apiToken, + Client: &http.Client{}, } } @@ -105,6 +107,10 @@ func (c *StoreClient) doRequest(path string, data interface{}) error { if err != nil { return err } + // Set Bearer token + if c.APIToken != "" { + req.Header.Set("Authorization", "Bearer "+c.APIToken) + } req.Header.Set("Content-Type", "application/json") resp, err := c.Client.Do(req) @@ -132,7 +138,10 @@ func (c *StoreClient) doRequestWithResponse(path string, data interface{}) ([]by return nil, err } req.Header.Set("Content-Type", "application/json") - + // Set Bearer token + if c.APIToken != "" { + req.Header.Set("Authorization", "Bearer "+c.APIToken) + } resp, err := c.Client.Do(req) if err != nil { return nil, err From a1edf005a9a32da97a37ca16d59a06d0fd32eef8 Mon Sep 17 00:00:00 2001 From: Ettore Di Giacinto Date: Tue, 9 Apr 2024 23:52:39 +0200 Subject: [PATCH 072/399] KB: add webui sections --- example/webui/agentpool.go | 10 ++ example/webui/create.html | 8 +- example/webui/knowledgebase.html | 31 ++++++ example/webui/main.go | 101 ++++++++++++-------- example/webui/rag.go | 156 +++++++++++++++++++++++++++++++ go.mod | 4 + go.sum | 9 ++ 7 files changed, 281 insertions(+), 38 deletions(-) create mode 100644 example/webui/knowledgebase.html create mode 100644 example/webui/rag.go diff --git a/example/webui/agentpool.go b/example/webui/agentpool.go index f307a82..3005e8d 100644 --- a/example/webui/agentpool.go +++ b/example/webui/agentpool.go @@ -37,6 +37,8 @@ type AgentConfig struct { IdentityGuidance string `json:"identity_guidance" form:"identity_guidance"` PeriodicRuns string `json:"periodic_runs" form:"periodic_runs"` PermanentGoal string `json:"permanent_goal" form:"permanent_goal"` + EnableKnowledgeBase bool `json:"enable_kb" form:"enable_kb"` + KnowledgeBaseResults int `json:"kb_results" form:"kb_results"` } type AgentPool struct { @@ -286,6 +288,14 @@ func (a *AgentPool) startAgentWithConfig(name string, config *AgentConfig) error } } + if config.EnableKnowledgeBase { + opts = append(opts, EnableKnowledgeBase) + } + + if config.KnowledgeBaseResults > 0 { + opts = append(opts, EnableKnowledgeBaseWithResults(config.KnowledgeBaseResults)) + } + fmt.Println("Starting agent", name) fmt.Printf("Config %+v\n", config) agent, err := New(opts...) diff --git a/example/webui/create.html b/example/webui/create.html index 95246a3..511725e 100644 --- a/example/webui/create.html +++ b/example/webui/create.html @@ -84,7 +84,13 @@
- + + +
+ + +
+ diff --git a/example/webui/knowledgebase.html b/example/webui/knowledgebase.html new file mode 100644 index 0000000..33fd82c --- /dev/null +++ b/example/webui/knowledgebase.html @@ -0,0 +1,31 @@ + + + + + KnowledgeBase + + + + + + +
+

Knowledgebase (items: {{.KnowledgebaseItemsCount}})

+ + + Add sites to KB +
+ + +
+ + +
+ +
+ +
+ + diff --git a/example/webui/main.go b/example/webui/main.go index af7d9b4..42a7fd2 100644 --- a/example/webui/main.go +++ b/example/webui/main.go @@ -23,6 +23,7 @@ type ( var testModel = os.Getenv("TEST_MODEL") var apiURL = os.Getenv("API_URL") +var apiKey = os.Getenv("API_KEY") func init() { if testModel == "" { @@ -45,13 +46,25 @@ func main() { if err != nil { panic(err) } - os.MkdirAll(cwd+"/pool", 0755) - pool, err := NewAgentPool(testModel, apiURL, cwd+"/pool") + stateDir := cwd + "/pool" + os.MkdirAll(stateDir, 0755) + + pool, err := NewAgentPool(testModel, apiURL, stateDir) if err != nil { panic(err) - } + + db, err := NewInMemoryDB(stateDir) + if err != nil { + panic(err) + } + + // Reload store + // if err := db.SaveToStore(apiKey, apiURL); err != nil { + // fmt.Println("Error storing in the KB", err) + // } + app := &App{ htmx: htmx.New(), pool: pool, @@ -61,19 +74,6 @@ func main() { panic(err) } - // go func() { - // for { - // clientsStr := "" - // clients := sseManager.Clients() - // for _, c := range clients { - // clientsStr += c + ", " - // } - - // time.Sleep(1 * time.Second) // Send a message every seconds - // sseManager.Send(NewMessage(fmt.Sprintf("connected clients: %v", clientsStr)).WithEvent("clients")) - // } - // }() - // Initialize a new Fiber app webapp := fiber.New() @@ -94,6 +94,13 @@ func main() { }) }) + webapp.Get("/knowledgebase", func(c *fiber.Ctx) error { + return c.Render("knowledgebase.html", fiber.Map{ + "Title": "Hello, World!", + "KnowledgebaseItemsCount": len(db.Database), + }) + }) + // Define a route for the GET method on the root path '/' webapp.Get("/sse/:name", func(c *fiber.Ctx) error { @@ -110,6 +117,7 @@ func main() { webapp.Post("/chat/:name", app.Chat(pool)) webapp.Post("/create", app.Create(pool)) webapp.Get("/delete/:name", app.Delete(pool)) + webapp.Post("/knowledgebase", app.KnowledgeBase(db)) webapp.Get("/talk/:name", func(c *fiber.Ctx) error { return c.Render("chat.html", fiber.Map{ @@ -119,29 +127,48 @@ func main() { }) log.Fatal(webapp.Listen(":3000")) - - // mux := http.NewServeMux() - - // mux.Handle("GET /", http.HandlerFunc(app.Home(agent))) - - // // External notifications (e.g. webhook) - // mux.Handle("POST /notify", http.HandlerFunc(app.Notify)) - - // // User chat - // mux.Handle("POST /chat", http.HandlerFunc(app.Chat(sseManager))) - - // // Server Sent Events - // //mux.Handle("GET /sse", http.HandlerFunc(app.SSE)) - - // fmt.Print("Server started at http://localhost:3210") - // err = http.ListenAndServe(":3210", mux) - // log.Fatal(err) } -// func (a *App) SSE(w http.ResponseWriter, r *http.Request) { -// cl := sse.NewClient(randStringRunes(10)) -// sseManager.Handle(w, r, cl) -// } +func (a *App) KnowledgeBase(db *InMemoryDatabase) func(c *fiber.Ctx) error { + return func(c *fiber.Ctx) error { + payload := struct { + URL string `json:"url"` + }{} + + if err := c.BodyParser(&payload); err != nil { + return err + } + + website := payload.URL + if website == "" { + return fmt.Errorf("please enter a URL") + } + + go func() { + content, err := Sitemap(website) + if err != nil { + fmt.Println("Error walking sitemap for website", err) + } + fmt.Println("Found pages: ", len(content)) + + for _, c := range content { + chunks := splitParagraphIntoChunks(c, 256) + fmt.Println("chunks: ", len(chunks)) + for _, chunk := range chunks { + db.AddEntry(chunk) + } + + db.SaveDB() + } + + if err := db.SaveToStore(apiKey, apiURL); err != nil { + fmt.Println("Error storing in the KB", err) + } + }() + + return c.Redirect("/knowledgebase") + } +} func (a *App) Notify(pool *AgentPool) func(c *fiber.Ctx) error { return func(c *fiber.Ctx) error { diff --git a/example/webui/rag.go b/example/webui/rag.go new file mode 100644 index 0000000..ace8345 --- /dev/null +++ b/example/webui/rag.go @@ -0,0 +1,156 @@ +package main + +import ( + "encoding/json" + "fmt" + "io" + "net/http" + "os" + "path/filepath" + "strings" + "sync" + + "jaytaylor.com/html2text" + + "github.com/mudler/local-agent-framework/llm" + sitemap "github.com/oxffaa/gopher-parse-sitemap" +) + +type InMemoryDatabase struct { + sync.Mutex + Database []string + path string +} + +func loadDB(path string) ([]string, error) { + data, err := os.ReadFile(path) + if err != nil { + return nil, err + } + + poolData := []string{} + err = json.Unmarshal(data, &poolData) + return poolData, err +} + +func NewInMemoryDB(knowledgebase string) (*InMemoryDatabase, error) { + // if file exists, try to load an existing pool. + // if file does not exist, create a new pool. + + poolfile := filepath.Join(knowledgebase, "knowledgebase.json") + + if _, err := os.Stat(poolfile); err != nil { + // file does not exist, return a new pool + return &InMemoryDatabase{ + Database: []string{}, + path: poolfile, + }, nil + } + + poolData, err := loadDB(poolfile) + if err != nil { + return nil, err + } + return &InMemoryDatabase{ + Database: poolData, + path: poolfile, + }, nil +} + +func (db *InMemoryDatabase) SaveToStore(apiKey string, apiURL string) error { + for _, d := range db.Database { + lai := llm.NewClient(apiKey, apiURL+"/v1") + laiStore := llm.NewStoreClient(apiURL, apiKey) + + err := llm.StoreStringEmbeddingInVectorDB(laiStore, lai, d) + if err != nil { + return fmt.Errorf("Error storing in the KB: %w", err) + } + } + + return nil +} +func (db *InMemoryDatabase) AddEntry(entry string) error { + db.Lock() + defer db.Unlock() + db.Database = append(db.Database, entry) + return nil +} + +func (db *InMemoryDatabase) SaveDB() error { + db.Lock() + defer db.Unlock() + data, err := json.Marshal(db.Database) + if err != nil { + return err + } + + err = os.WriteFile(db.path, data, 0644) + return err +} + +func getWebPage(url string) (string, error) { + resp, err := http.Get(url) + if err != nil { + return "", err + } + defer resp.Body.Close() + + body, err := io.ReadAll(resp.Body) + if err != nil { + return "", err + } + return html2text.FromString(string(body), html2text.Options{PrettyTables: true}) +} + +func Sitemap(url string) (res []string, err error) { + err = sitemap.ParseFromSite(url, func(e sitemap.Entry) error { + fmt.Println("Sitemap page: " + e.GetLocation()) + content, err := getWebPage(e.GetLocation()) + if err == nil { + res = append(res, content) + } + return nil + }) + return +} + +// splitParagraphIntoChunks takes a paragraph and a maxChunkSize as input, +// and returns a slice of strings where each string is a chunk of the paragraph +// that is at most maxChunkSize long, ensuring that words are not split. +func splitParagraphIntoChunks(paragraph string, maxChunkSize int) []string { + // Check if the paragraph length is less than or equal to maxChunkSize. + // If so, return the paragraph as the only chunk. + if len(paragraph) <= maxChunkSize { + return []string{paragraph} + } + + var chunks []string + var currentChunk strings.Builder + + words := strings.Fields(paragraph) // Splits the paragraph into words. + + for _, word := range words { + // Check if adding the next word would exceed the maxChunkSize. + // If so, add the currentChunk to the chunks slice and start a new chunk. + if currentChunk.Len()+len(word) > maxChunkSize { + chunks = append(chunks, currentChunk.String()) + currentChunk.Reset() + } + + // Add a space before the word if it's not the beginning of a new chunk. + if currentChunk.Len() > 0 { + currentChunk.WriteString(" ") + } + + // Add the word to the current chunk. + currentChunk.WriteString(word) + } + + // Add the last chunk if it's not empty. + if currentChunk.Len() > 0 { + chunks = append(chunks, currentChunk.String()) + } + + return chunks +} diff --git a/go.mod b/go.mod index 4ea46cc..a729aa0 100644 --- a/go.mod +++ b/go.mod @@ -33,7 +33,10 @@ require ( github.com/mattn/go-colorable v0.1.13 // indirect github.com/mattn/go-isatty v0.0.20 // indirect github.com/mattn/go-runewidth v0.0.15 // indirect + github.com/olekukonko/tablewriter v0.0.5 // indirect + github.com/oxffaa/gopher-parse-sitemap v0.0.0-20191021113419-005d2eb1def4 // indirect github.com/rivo/uniseg v0.2.0 // indirect + github.com/ssor/bom v0.0.0-20170718123548-6386211fdfcf // indirect github.com/stretchr/testify v1.9.0 // indirect github.com/valyala/bytebufferpool v1.0.0 // indirect github.com/valyala/tcplisten v1.0.0 // indirect @@ -43,4 +46,5 @@ require ( golang.org/x/text v0.14.0 // indirect golang.org/x/tools v0.16.1 // indirect gopkg.in/yaml.v3 v3.0.1 // indirect + jaytaylor.com/html2text v0.0.0-20230321000545-74c2419ad056 // indirect ) diff --git a/go.sum b/go.sum index 2c4e43c..c39285b 100644 --- a/go.sum +++ b/go.sum @@ -48,12 +48,17 @@ github.com/mattn/go-colorable v0.1.13/go.mod h1:7S9/ev0klgBDR4GtXTXX8a3vIGJpMovk github.com/mattn/go-isatty v0.0.16/go.mod h1:kYGgaQfpe5nmfYZH+SKPsOc2e4SrIfOl2e/yFXSvRLM= github.com/mattn/go-isatty v0.0.20 h1:xfD0iDuEKnDkl03q4limB+vH+GxLEtL/jb4xVJSWWEY= github.com/mattn/go-isatty v0.0.20/go.mod h1:W+V8PltTTMOvKvAeJH7IuucS94S2C6jfK/D7dTCTo3Y= +github.com/mattn/go-runewidth v0.0.9/go.mod h1:H031xJmbD/WCDINGzjvQ9THkh0rPKHF+m2gUSrubnMI= github.com/mattn/go-runewidth v0.0.15 h1:UNAjwbU9l54TA3KzvqLGxwWjHmMgBUVhBiTjelZgg3U= github.com/mattn/go-runewidth v0.0.15/go.mod h1:Jdepj2loyihRzMpdS35Xk/zdY8IAYHsh153qUoGf23w= +github.com/olekukonko/tablewriter v0.0.5 h1:P2Ga83D34wi1o9J6Wh1mRuqd4mF/x/lgBS7N7AbDhec= +github.com/olekukonko/tablewriter v0.0.5/go.mod h1:hPp6KlRPjbx+hW8ykQs1w3UBbZlj6HuIJcUGPhkA7kY= github.com/onsi/ginkgo/v2 v2.15.0 h1:79HwNRBAZHOEwrczrgSOPy+eFTTlIGELKy5as+ClttY= github.com/onsi/ginkgo/v2 v2.15.0/go.mod h1:HlxMHtYF57y6Dpf+mc5529KKmSq9h2FpCF+/ZkwUxKM= github.com/onsi/gomega v1.31.1 h1:KYppCUK+bUgAZwHOu7EXVBKyQA6ILvOESHkn/tgoqvo= github.com/onsi/gomega v1.31.1/go.mod h1:y40C95dwAD1Nz36SsEnxvfFe8FFfNxzI5eJ0EYGyAy0= +github.com/oxffaa/gopher-parse-sitemap v0.0.0-20191021113419-005d2eb1def4 h1:2vmb32OdDhjZf2ETGDlr9n8RYXx7c+jXPxMiPbwnA+8= +github.com/oxffaa/gopher-parse-sitemap v0.0.0-20191021113419-005d2eb1def4/go.mod h1:2JQx4jDHmWrbABvpOayg/+OTU6ehN0IyK2EHzceXpJo= github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM= github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= github.com/rivo/uniseg v0.2.0 h1:S1pD9weZBuJdFmowNwbpi7BJ8TNftyUImj/0WQi72jY= @@ -64,6 +69,8 @@ github.com/sashabaranov/go-openai v1.18.3 h1:dspFGkmZbhjg1059KhqLYSV2GaCiRIn+bOu github.com/sashabaranov/go-openai v1.18.3/go.mod h1:lj5b/K+zjTSFxVLijLSTDZuP7adOgerWeFyZLUhAKRg= github.com/slack-go/slack v0.12.5 h1:ddZ6uz6XVaB+3MTDhoW04gG+Vc/M/X1ctC+wssy2cqs= github.com/slack-go/slack v0.12.5/go.mod h1:hlGi5oXA+Gt+yWTPP0plCdRKmjsDxecdHxYQdlMQKOw= +github.com/ssor/bom v0.0.0-20170718123548-6386211fdfcf h1:pvbZ0lM0XWPBqUKqFU8cmavspvIl9nulOYwdy6IFRRo= +github.com/ssor/bom v0.0.0-20170718123548-6386211fdfcf/go.mod h1:RJID2RhlZKId02nZ62WenDCkgHFerpIOmW0iT7GKmXM= github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= github.com/stretchr/testify v1.2.2/go.mod h1:a8OnRcib4nhh0OaRAV+Yts87kKdq0PP7pXfy6kDkUVs= github.com/stretchr/testify v1.6.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= @@ -107,3 +114,5 @@ gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8 gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA= gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= +jaytaylor.com/html2text v0.0.0-20230321000545-74c2419ad056 h1:6YFJoB+0fUH6X3xU/G2tQqCYg+PkGtnZ5nMR5rpw72g= +jaytaylor.com/html2text v0.0.0-20230321000545-74c2419ad056/go.mod h1:OxvTsCwKosqQ1q7B+8FwXqg4rKZ/UG9dUW+g/VL2xH4= From db490fb3ca10a2a20a2c6698f51fd2aeab32d7aa Mon Sep 17 00:00:00 2001 From: Ettore Di Giacinto Date: Tue, 9 Apr 2024 23:54:58 +0200 Subject: [PATCH 073/399] KB: Specify chunk size --- example/webui/knowledgebase.html | 4 ++++ example/webui/main.go | 5 +++-- 2 files changed, 7 insertions(+), 2 deletions(-) diff --git a/example/webui/knowledgebase.html b/example/webui/knowledgebase.html index 33fd82c..ec8f5a8 100644 --- a/example/webui/knowledgebase.html +++ b/example/webui/knowledgebase.html @@ -18,6 +18,10 @@
+
+ + +
diff --git a/example/webui/main.go b/example/webui/main.go index 42a7fd2..4fc6d95 100644 --- a/example/webui/main.go +++ b/example/webui/main.go @@ -132,7 +132,8 @@ func main() { func (a *App) KnowledgeBase(db *InMemoryDatabase) func(c *fiber.Ctx) error { return func(c *fiber.Ctx) error { payload := struct { - URL string `json:"url"` + URL string `json:"url"` + ChunkSize int `json:"chunk_size"` }{} if err := c.BodyParser(&payload); err != nil { @@ -152,7 +153,7 @@ func (a *App) KnowledgeBase(db *InMemoryDatabase) func(c *fiber.Ctx) error { fmt.Println("Found pages: ", len(content)) for _, c := range content { - chunks := splitParagraphIntoChunks(c, 256) + chunks := splitParagraphIntoChunks(c, payload.ChunkSize) fmt.Println("chunks: ", len(chunks)) for _, chunk := range chunks { db.AddEntry(chunk) From 48d17b6952c3f9280ce8ee3d786349abeb4bfa24 Mon Sep 17 00:00:00 2001 From: Ettore Di Giacinto Date: Wed, 10 Apr 2024 00:04:07 +0200 Subject: [PATCH 074/399] Do not fail if KB retrieve fails --- agent/agent.go | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/agent/agent.go b/agent/agent.go index 662391a..eaa2a41 100644 --- a/agent/agent.go +++ b/agent/agent.go @@ -218,8 +218,11 @@ func (a *Agent) consumeJob(job *Job, role string) { if userMessage != "" { results, err := llm.FindSimilarStrings(a.storeClient, a.client, userMessage, a.options.kbResults) if err != nil { - job.Result.Finish(fmt.Errorf("error finding similar strings inside KB: %w", err)) - return + if a.options.debugMode { + fmt.Println("Error finding similar strings inside KB:", err) + } + // job.Result.Finish(fmt.Errorf("error finding similar strings inside KB: %w", err)) + // return } formatResults := "" From 73524adfcea591c05bdbb5d1f91ba23e2289a157 Mon Sep 17 00:00:00 2001 From: mudler Date: Wed, 10 Apr 2024 17:38:16 +0200 Subject: [PATCH 075/399] Make Knowledgebase RAG functional (almost) --- agent/agent.go | 12 ++-- agent/options.go | 8 +++ example/webui/agentpool.go | 6 +- example/webui/main.go | 33 +++++++++-- example/webui/rag.go | 31 ++++++----- go.mod | 1 + go.sum | 2 + llm/rag/rag_chromem.go | 88 ++++++++++++++++++++++++++++++ llm/{rag.go => rag/rag_localai.go} | 27 ++++++--- llm/{ => rag}/store.go | 2 +- 10 files changed, 178 insertions(+), 32 deletions(-) create mode 100644 llm/rag/rag_chromem.go rename llm/{rag.go => rag/rag_localai.go} (65%) rename llm/{ => rag}/store.go (99%) diff --git a/agent/agent.go b/agent/agent.go index eaa2a41..7560f61 100644 --- a/agent/agent.go +++ b/agent/agent.go @@ -23,7 +23,6 @@ type Agent struct { options *options Character Character client *openai.Client - storeClient *llm.StoreClient jobQueue chan *Job actionContext *action.ActionContext context *action.ActionContext @@ -37,6 +36,11 @@ type Agent struct { newConversations chan openai.ChatCompletionMessage } +type RAGDB interface { + Store(s string) error + Search(s string, similarEntries int) ([]string, error) +} + func New(opts ...Option) (*Agent, error) { options, err := newOptions(opts...) if err != nil { @@ -44,7 +48,6 @@ func New(opts ...Option) (*Agent, error) { } client := llm.NewClient(options.LLMAPI.APIKey, options.LLMAPI.APIURL) - storeClient := llm.NewStoreClient(options.LLMAPI.APIURL, options.LLMAPI.APIKey) c := context.Background() if options.context != nil { @@ -58,7 +61,6 @@ func New(opts ...Option) (*Agent, error) { client: client, Character: options.character, currentState: &action.StateResult{}, - storeClient: storeClient, context: action.NewContext(ctx, cancel), } @@ -204,7 +206,7 @@ func (a *Agent) consumeJob(job *Job, role string) { } // RAG - if a.options.enableKB { + if a.options.enableKB && a.options.ragdb != nil { // Walk conversation from bottom to top, and find the first message of the user // to use it as a query to the KB var userMessage string @@ -216,7 +218,7 @@ func (a *Agent) consumeJob(job *Job, role string) { } if userMessage != "" { - results, err := llm.FindSimilarStrings(a.storeClient, a.client, userMessage, a.options.kbResults) + results, err := a.options.ragdb.Search(userMessage, a.options.kbResults) if err != nil { if a.options.debugMode { fmt.Println("Error finding similar strings inside KB:", err) diff --git a/agent/options.go b/agent/options.go index 1d7cde8..82b4ef3 100644 --- a/agent/options.go +++ b/agent/options.go @@ -28,6 +28,7 @@ type options struct { permanentGoal string periodicRuns time.Duration kbResults int + ragdb RAGDB // callbacks reasoningCallback func(ActionCurrentState) bool @@ -102,6 +103,13 @@ var EnablePersonality = func(o *options) error { return nil } +func WithRAGDB(db RAGDB) Option { + return func(o *options) error { + o.ragdb = db + return nil + } +} + func WithLLMAPIURL(url string) Option { return func(o *options) error { o.LLMAPI.APIURL = url diff --git a/example/webui/agentpool.go b/example/webui/agentpool.go index 3005e8d..b8e6336 100644 --- a/example/webui/agentpool.go +++ b/example/webui/agentpool.go @@ -48,6 +48,7 @@ type AgentPool struct { agents map[string]*Agent managers map[string]Manager apiURL, model string + ragDB RAGDB } type AgentPoolData map[string]AgentConfig @@ -63,7 +64,7 @@ func loadPoolFromFile(path string) (*AgentPoolData, error) { return poolData, err } -func NewAgentPool(model, apiURL, directory string) (*AgentPool, error) { +func NewAgentPool(model, apiURL, directory string, RagDB RAGDB) (*AgentPool, error) { // if file exists, try to load an existing pool. // if file does not exist, create a new pool. @@ -76,6 +77,7 @@ func NewAgentPool(model, apiURL, directory string) (*AgentPool, error) { pooldir: directory, apiURL: apiURL, model: model, + ragDB: RagDB, agents: make(map[string]*Agent), pool: make(map[string]AgentConfig), managers: make(map[string]Manager), @@ -90,6 +92,7 @@ func NewAgentPool(model, apiURL, directory string) (*AgentPool, error) { file: poolfile, apiURL: apiURL, pooldir: directory, + ragDB: RagDB, model: model, agents: make(map[string]*Agent), managers: make(map[string]Manager), @@ -229,6 +232,7 @@ func (a *AgentPool) startAgentWithConfig(name string, config *AgentConfig) error ), WithStateFile(stateFile), WithCharacterFile(characterFile), + WithRAGDB(a.ragDB), WithAgentReasoningCallback(func(state ActionCurrentState) bool { fmt.Println("Reasoning", state.Reasoning) manager.Send( diff --git a/example/webui/main.go b/example/webui/main.go index 4fc6d95..15fb1a0 100644 --- a/example/webui/main.go +++ b/example/webui/main.go @@ -12,6 +12,8 @@ import ( fiber "github.com/gofiber/fiber/v2" . "github.com/mudler/local-agent-framework/agent" + "github.com/mudler/local-agent-framework/llm" + "github.com/mudler/local-agent-framework/llm/rag" ) type ( @@ -24,6 +26,9 @@ type ( var testModel = os.Getenv("TEST_MODEL") var apiURL = os.Getenv("API_URL") var apiKey = os.Getenv("API_KEY") +var vectorStore = os.Getenv("VECTOR_STORE") + +const defaultChunkSize = 4098 func init() { if testModel == "" { @@ -50,12 +55,27 @@ func main() { stateDir := cwd + "/pool" os.MkdirAll(stateDir, 0755) - pool, err := NewAgentPool(testModel, apiURL, stateDir) + var dbStore RAGDB + lai := llm.NewClient(apiKey, apiURL+"/v1") + + switch vectorStore { + case "localai": + laiStore := rag.NewStoreClient(apiURL, apiKey) + dbStore = rag.NewLocalAIRAGDB(laiStore, lai) + default: + var err error + dbStore, err = rag.NewChromemDB("local-agent-framework", stateDir, lai) + if err != nil { + panic(err) + } + } + + pool, err := NewAgentPool(testModel, apiURL, stateDir, dbStore) if err != nil { panic(err) } - db, err := NewInMemoryDB(stateDir) + db, err := NewInMemoryDB(stateDir, dbStore) if err != nil { panic(err) } @@ -144,6 +164,10 @@ func (a *App) KnowledgeBase(db *InMemoryDatabase) func(c *fiber.Ctx) error { if website == "" { return fmt.Errorf("please enter a URL") } + chunkSize := defaultChunkSize + if payload.ChunkSize > 0 { + chunkSize = payload.ChunkSize + } go func() { content, err := Sitemap(website) @@ -151,9 +175,10 @@ func (a *App) KnowledgeBase(db *InMemoryDatabase) func(c *fiber.Ctx) error { fmt.Println("Error walking sitemap for website", err) } fmt.Println("Found pages: ", len(content)) + fmt.Println("ChunkSize: ", chunkSize) for _, c := range content { - chunks := splitParagraphIntoChunks(c, payload.ChunkSize) + chunks := splitParagraphIntoChunks(c, chunkSize) fmt.Println("chunks: ", len(chunks)) for _, chunk := range chunks { db.AddEntry(chunk) @@ -162,7 +187,7 @@ func (a *App) KnowledgeBase(db *InMemoryDatabase) func(c *fiber.Ctx) error { db.SaveDB() } - if err := db.SaveToStore(apiKey, apiURL); err != nil { + if err := db.SaveToStore(); err != nil { fmt.Println("Error storing in the KB", err) } }() diff --git a/example/webui/rag.go b/example/webui/rag.go index ace8345..375a92a 100644 --- a/example/webui/rag.go +++ b/example/webui/rag.go @@ -10,9 +10,9 @@ import ( "strings" "sync" + . "github.com/mudler/local-agent-framework/agent" "jaytaylor.com/html2text" - "github.com/mudler/local-agent-framework/llm" sitemap "github.com/oxffaa/gopher-parse-sitemap" ) @@ -20,6 +20,7 @@ type InMemoryDatabase struct { sync.Mutex Database []string path string + rag RAGDB } func loadDB(path string) ([]string, error) { @@ -33,7 +34,7 @@ func loadDB(path string) ([]string, error) { return poolData, err } -func NewInMemoryDB(knowledgebase string) (*InMemoryDatabase, error) { +func NewInMemoryDB(knowledgebase string, store RAGDB) (*InMemoryDatabase, error) { // if file exists, try to load an existing pool. // if file does not exist, create a new pool. @@ -44,6 +45,7 @@ func NewInMemoryDB(knowledgebase string) (*InMemoryDatabase, error) { return &InMemoryDatabase{ Database: []string{}, path: poolfile, + rag: store, }, nil } @@ -54,15 +56,17 @@ func NewInMemoryDB(knowledgebase string) (*InMemoryDatabase, error) { return &InMemoryDatabase{ Database: poolData, path: poolfile, + rag: store, }, nil } -func (db *InMemoryDatabase) SaveToStore(apiKey string, apiURL string) error { +func (db *InMemoryDatabase) SaveToStore() error { for _, d := range db.Database { - lai := llm.NewClient(apiKey, apiURL+"/v1") - laiStore := llm.NewStoreClient(apiURL, apiKey) - - err := llm.StoreStringEmbeddingInVectorDB(laiStore, lai, d) + if d == "" { + // skip empty chunks + continue + } + err := db.rag.Store(d) if err != nil { return fmt.Errorf("Error storing in the KB: %w", err) } @@ -119,8 +123,6 @@ func Sitemap(url string) (res []string, err error) { // and returns a slice of strings where each string is a chunk of the paragraph // that is at most maxChunkSize long, ensuring that words are not split. func splitParagraphIntoChunks(paragraph string, maxChunkSize int) []string { - // Check if the paragraph length is less than or equal to maxChunkSize. - // If so, return the paragraph as the only chunk. if len(paragraph) <= maxChunkSize { return []string{paragraph} } @@ -131,11 +133,14 @@ func splitParagraphIntoChunks(paragraph string, maxChunkSize int) []string { words := strings.Fields(paragraph) // Splits the paragraph into words. for _, word := range words { - // Check if adding the next word would exceed the maxChunkSize. - // If so, add the currentChunk to the chunks slice and start a new chunk. - if currentChunk.Len()+len(word) > maxChunkSize { + // If adding the next word would exceed maxChunkSize (considering a space if not the first word in a chunk), + // add the currentChunk to chunks, and reset currentChunk. + if currentChunk.Len() > 0 && currentChunk.Len()+len(word)+1 > maxChunkSize { // +1 for the space if not the first word chunks = append(chunks, currentChunk.String()) currentChunk.Reset() + } else if currentChunk.Len() == 0 && len(word) > maxChunkSize { // Word itself exceeds maxChunkSize, split the word + chunks = append(chunks, word) + continue } // Add a space before the word if it's not the beginning of a new chunk. @@ -147,7 +152,7 @@ func splitParagraphIntoChunks(paragraph string, maxChunkSize int) []string { currentChunk.WriteString(word) } - // Add the last chunk if it's not empty. + // After the loop, add any remaining content in currentChunk to chunks. if currentChunk.Len() > 0 { chunks = append(chunks, currentChunk.String()) } diff --git a/go.mod b/go.mod index a729aa0..9aeb6ab 100644 --- a/go.mod +++ b/go.mod @@ -35,6 +35,7 @@ require ( github.com/mattn/go-runewidth v0.0.15 // indirect github.com/olekukonko/tablewriter v0.0.5 // indirect github.com/oxffaa/gopher-parse-sitemap v0.0.0-20191021113419-005d2eb1def4 // indirect + github.com/philippgille/chromem-go v0.5.0 // indirect github.com/rivo/uniseg v0.2.0 // indirect github.com/ssor/bom v0.0.0-20170718123548-6386211fdfcf // indirect github.com/stretchr/testify v1.9.0 // indirect diff --git a/go.sum b/go.sum index c39285b..b1deafb 100644 --- a/go.sum +++ b/go.sum @@ -59,6 +59,8 @@ github.com/onsi/gomega v1.31.1 h1:KYppCUK+bUgAZwHOu7EXVBKyQA6ILvOESHkn/tgoqvo= github.com/onsi/gomega v1.31.1/go.mod h1:y40C95dwAD1Nz36SsEnxvfFe8FFfNxzI5eJ0EYGyAy0= github.com/oxffaa/gopher-parse-sitemap v0.0.0-20191021113419-005d2eb1def4 h1:2vmb32OdDhjZf2ETGDlr9n8RYXx7c+jXPxMiPbwnA+8= github.com/oxffaa/gopher-parse-sitemap v0.0.0-20191021113419-005d2eb1def4/go.mod h1:2JQx4jDHmWrbABvpOayg/+OTU6ehN0IyK2EHzceXpJo= +github.com/philippgille/chromem-go v0.5.0 h1:bryX0F3N6jnN/21iBd8i2/k9EzPTZn3nyiqAti19si8= +github.com/philippgille/chromem-go v0.5.0/go.mod h1:hTd+wGEm/fFPQl7ilfCwQXkgEUxceYh86iIdoKMolPo= github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM= github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= github.com/rivo/uniseg v0.2.0 h1:S1pD9weZBuJdFmowNwbpi7BJ8TNftyUImj/0WQi72jY= diff --git a/llm/rag/rag_chromem.go b/llm/rag/rag_chromem.go new file mode 100644 index 0000000..a14486e --- /dev/null +++ b/llm/rag/rag_chromem.go @@ -0,0 +1,88 @@ +package rag + +import ( + "context" + "fmt" + "runtime" + + "github.com/philippgille/chromem-go" + "github.com/sashabaranov/go-openai" +) + +type ChromemDB struct { + collectionName string + collection *chromem.Collection + index int +} + +func NewChromemDB(collection, path string, openaiClient *openai.Client) (*ChromemDB, error) { + // db, err := chromem.NewPersistentDB(path, true) + // if err != nil { + // return nil, err + // } + db := chromem.NewDB() + + embeddingFunc := chromem.EmbeddingFunc( + func(ctx context.Context, text string) ([]float32, error) { + fmt.Println("Creating embeddings") + resp, err := openaiClient.CreateEmbeddings(ctx, + openai.EmbeddingRequestStrings{ + Input: []string{text}, + Model: openai.AdaEmbeddingV2, + }, + ) + if err != nil { + return []float32{}, fmt.Errorf("error getting keys: %v", err) + } + + if len(resp.Data) == 0 { + return []float32{}, fmt.Errorf("no response from OpenAI API") + } + + embedding := resp.Data[0].Embedding + + return embedding, nil + }, + ) + + c, err := db.GetOrCreateCollection(collection, nil, embeddingFunc) + if err != nil { + return nil, err + } + + return &ChromemDB{ + collectionName: collection, + collection: c, + index: 1, + }, nil +} + +func (c *ChromemDB) Store(s string) error { + defer func() { + c.index++ + }() + if s == "" { + return fmt.Errorf("empty string") + } + fmt.Println("Trying to store", s) + return c.collection.AddDocuments(context.Background(), []chromem.Document{ + { + Content: s, + ID: fmt.Sprint(c.index), + }, + }, runtime.NumCPU()) +} + +func (c *ChromemDB) Search(s string, similarEntries int) ([]string, error) { + res, err := c.collection.Query(context.Background(), s, similarEntries, nil, nil) + if err != nil { + return nil, err + } + + var results []string + for _, r := range res { + results = append(results, r.Content) + } + + return results, nil +} diff --git a/llm/rag.go b/llm/rag/rag_localai.go similarity index 65% rename from llm/rag.go rename to llm/rag/rag_localai.go index af0371b..7e8bf3a 100644 --- a/llm/rag.go +++ b/llm/rag/rag_localai.go @@ -1,4 +1,4 @@ -package llm +package rag import ( "context" @@ -7,8 +7,20 @@ import ( "github.com/sashabaranov/go-openai" ) -func StoreStringEmbeddingInVectorDB(client *StoreClient, openaiClient *openai.Client, s string) error { - resp, err := openaiClient.CreateEmbeddings(context.TODO(), +type LocalAIRAGDB struct { + client *StoreClient + openaiClient *openai.Client +} + +func NewLocalAIRAGDB(storeClient *StoreClient, openaiClient *openai.Client) *LocalAIRAGDB { + return &LocalAIRAGDB{ + client: storeClient, + openaiClient: openaiClient, + } +} + +func (db *LocalAIRAGDB) Store(s string) error { + resp, err := db.openaiClient.CreateEmbeddings(context.TODO(), openai.EmbeddingRequestStrings{ Input: []string{s}, Model: openai.AdaEmbeddingV2, @@ -28,7 +40,7 @@ func StoreStringEmbeddingInVectorDB(client *StoreClient, openaiClient *openai.Cl Keys: [][]float32{embedding}, Values: []string{s}, } - err = client.Set(setReq) + err = db.client.Set(setReq) if err != nil { return fmt.Errorf("error setting keys: %v", err) } @@ -36,9 +48,8 @@ func StoreStringEmbeddingInVectorDB(client *StoreClient, openaiClient *openai.Cl return nil } -func FindSimilarStrings(client *StoreClient, openaiClient *openai.Client, s string, similarEntries int) ([]string, error) { - - resp, err := openaiClient.CreateEmbeddings(context.TODO(), +func (db *LocalAIRAGDB) Search(s string, similarEntries int) ([]string, error) { + resp, err := db.openaiClient.CreateEmbeddings(context.TODO(), openai.EmbeddingRequestStrings{ Input: []string{s}, Model: openai.AdaEmbeddingV2, @@ -58,7 +69,7 @@ func FindSimilarStrings(client *StoreClient, openaiClient *openai.Client, s stri TopK: similarEntries, // Number of similar entries you want to find Key: embedding, // The key you're looking for similarities to } - findResp, err := client.Find(findReq) + findResp, err := db.client.Find(findReq) if err != nil { return []string{}, fmt.Errorf("error finding keys: %v", err) } diff --git a/llm/store.go b/llm/rag/store.go similarity index 99% rename from llm/store.go rename to llm/rag/store.go index 3b85568..1980cf9 100644 --- a/llm/store.go +++ b/llm/rag/store.go @@ -1,4 +1,4 @@ -package llm +package rag import ( "bytes" From 7c70f098340ab463769c68895d023d3b4a7adec8 Mon Sep 17 00:00:00 2001 From: mudler Date: Wed, 10 Apr 2024 17:40:15 +0200 Subject: [PATCH 076/399] Reload store at start for now --- example/webui/main.go | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/example/webui/main.go b/example/webui/main.go index 15fb1a0..edad841 100644 --- a/example/webui/main.go +++ b/example/webui/main.go @@ -81,9 +81,9 @@ func main() { } // Reload store - // if err := db.SaveToStore(apiKey, apiURL); err != nil { - // fmt.Println("Error storing in the KB", err) - // } + if err := db.SaveToStore(); err != nil { + fmt.Println("Error storing in the KB", err) + } app := &App{ htmx: htmx.New(), From 82ac74ac5d4ffc048202e34c4cb4c1c0e2147252 Mon Sep 17 00:00:00 2001 From: mudler Date: Wed, 10 Apr 2024 19:40:39 +0200 Subject: [PATCH 077/399] Add an index --- agent/agent.go | 4 +- example/webui/agents.html | 63 ++++++++++++++++++++++++++ example/webui/index.html | 60 +++++------------------- example/webui/main.go | 35 ++++---------- example/webui/rag.go | 24 ++++++++++ llm/rag/{rag_chromem.go => chromem.go} | 2 - llm/rag/{rag_localai.go => localai.go} | 0 7 files changed, 111 insertions(+), 77 deletions(-) create mode 100644 example/webui/agents.html rename llm/rag/{rag_chromem.go => chromem.go} (96%) rename llm/rag/{rag_localai.go => localai.go} (100%) diff --git a/agent/agent.go b/agent/agent.go index 7560f61..5ee4343 100644 --- a/agent/agent.go +++ b/agent/agent.go @@ -176,6 +176,8 @@ func (a *Agent) consumeJob(job *Job, role string) { // We are self evaluating if we consume the job as a system role selfEvaluation := role == SystemRole + memory := a.options.enableKB && a.options.ragdb != nil + a.Lock() // Set the action context ctx, cancel := context.WithCancel(context.Background()) @@ -206,7 +208,7 @@ func (a *Agent) consumeJob(job *Job, role string) { } // RAG - if a.options.enableKB && a.options.ragdb != nil { + if memory { // Walk conversation from bottom to top, and find the first message of the user // to use it as a query to the KB var userMessage string diff --git a/example/webui/agents.html b/example/webui/agents.html new file mode 100644 index 0000000..a1ee34d --- /dev/null +++ b/example/webui/agents.html @@ -0,0 +1,63 @@ + + + + + Agent List + + + + +
+
+

Smart Agent List

+
+
+
+
+
+ + + + + + + + + + + + {{ range .Agents }} + + + + + + + {{ end }} + + +
+ Name + + Status + + Talk + + Delete +
{{.}}Online + Talk + + Delete +
+
+
+
+
+ +
+ + diff --git a/example/webui/index.html b/example/webui/index.html index a1ee34d..c0eabd1 100644 --- a/example/webui/index.html +++ b/example/webui/index.html @@ -2,60 +2,22 @@ - Agent List + Smart Assistant Dashboard - -
+
-

Smart Agent List

+

Smart Assistant Dashboard

-
-
-
-
- - - - - - - - - - - - {{ range .Agents }} - - - - - - - {{ end }} - - -
- Name - - Status - - Talk - - Delete -
{{.}}Online - Talk - - Delete -
-
-
-
-
- diff --git a/example/webui/main.go b/example/webui/main.go index edad841..800812e 100644 --- a/example/webui/main.go +++ b/example/webui/main.go @@ -106,6 +106,12 @@ func main() { }) }) + webapp.Get("/agents", func(c *fiber.Ctx) error { + return c.Render("agents.html", fiber.Map{ + "Agents": pool.List(), + }) + }) + webapp.Get("/create", func(c *fiber.Ctx) error { return c.Render("create.html", fiber.Map{ "Title": "Hello, World!", @@ -152,8 +158,8 @@ func main() { func (a *App) KnowledgeBase(db *InMemoryDatabase) func(c *fiber.Ctx) error { return func(c *fiber.Ctx) error { payload := struct { - URL string `json:"url"` - ChunkSize int `json:"chunk_size"` + URL string `form:"url"` + ChunkSize int `form:"chunk_size"` }{} if err := c.BodyParser(&payload); err != nil { @@ -169,28 +175,7 @@ func (a *App) KnowledgeBase(db *InMemoryDatabase) func(c *fiber.Ctx) error { chunkSize = payload.ChunkSize } - go func() { - content, err := Sitemap(website) - if err != nil { - fmt.Println("Error walking sitemap for website", err) - } - fmt.Println("Found pages: ", len(content)) - fmt.Println("ChunkSize: ", chunkSize) - - for _, c := range content { - chunks := splitParagraphIntoChunks(c, chunkSize) - fmt.Println("chunks: ", len(chunks)) - for _, chunk := range chunks { - db.AddEntry(chunk) - } - - db.SaveDB() - } - - if err := db.SaveToStore(); err != nil { - fmt.Println("Error storing in the KB", err) - } - }() + go WebsiteToKB(website, chunkSize, db) return c.Redirect("/knowledgebase") } @@ -199,7 +184,7 @@ func (a *App) KnowledgeBase(db *InMemoryDatabase) func(c *fiber.Ctx) error { func (a *App) Notify(pool *AgentPool) func(c *fiber.Ctx) error { return func(c *fiber.Ctx) error { payload := struct { - Message string `json:"message"` + Message string `form:"message"` }{} if err := c.BodyParser(&payload); err != nil { diff --git a/example/webui/rag.go b/example/webui/rag.go index 375a92a..d048a9f 100644 --- a/example/webui/rag.go +++ b/example/webui/rag.go @@ -119,6 +119,30 @@ func Sitemap(url string) (res []string, err error) { return } +func WebsiteToKB(website string, chunkSize int, db *InMemoryDatabase) { + content, err := Sitemap(website) + if err != nil { + fmt.Println("Error walking sitemap for website", err) + } + fmt.Println("Found pages: ", len(content)) + fmt.Println("ChunkSize: ", chunkSize) + + for _, c := range content { + chunks := splitParagraphIntoChunks(c, chunkSize) + fmt.Println("chunks: ", len(chunks)) + for _, chunk := range chunks { + fmt.Println("Chunk size: ", len(chunk)) + db.AddEntry(chunk) + } + + db.SaveDB() + } + + if err := db.SaveToStore(); err != nil { + fmt.Println("Error storing in the KB", err) + } +} + // splitParagraphIntoChunks takes a paragraph and a maxChunkSize as input, // and returns a slice of strings where each string is a chunk of the paragraph // that is at most maxChunkSize long, ensuring that words are not split. diff --git a/llm/rag/rag_chromem.go b/llm/rag/chromem.go similarity index 96% rename from llm/rag/rag_chromem.go rename to llm/rag/chromem.go index a14486e..5f33d2d 100644 --- a/llm/rag/rag_chromem.go +++ b/llm/rag/chromem.go @@ -24,7 +24,6 @@ func NewChromemDB(collection, path string, openaiClient *openai.Client) (*Chrome embeddingFunc := chromem.EmbeddingFunc( func(ctx context.Context, text string) ([]float32, error) { - fmt.Println("Creating embeddings") resp, err := openaiClient.CreateEmbeddings(ctx, openai.EmbeddingRequestStrings{ Input: []string{text}, @@ -64,7 +63,6 @@ func (c *ChromemDB) Store(s string) error { if s == "" { return fmt.Errorf("empty string") } - fmt.Println("Trying to store", s) return c.collection.AddDocuments(context.Background(), []chromem.Document{ { Content: s, diff --git a/llm/rag/rag_localai.go b/llm/rag/localai.go similarity index 100% rename from llm/rag/rag_localai.go rename to llm/rag/localai.go From 437da4459052c9d38e11f3be5213644c75668955 Mon Sep 17 00:00:00 2001 From: mudler Date: Wed, 10 Apr 2024 19:42:54 +0200 Subject: [PATCH 078/399] Allow to skip indexing --- example/webui/main.go | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/example/webui/main.go b/example/webui/main.go index 800812e..e28350b 100644 --- a/example/webui/main.go +++ b/example/webui/main.go @@ -27,6 +27,7 @@ var testModel = os.Getenv("TEST_MODEL") var apiURL = os.Getenv("API_URL") var apiKey = os.Getenv("API_KEY") var vectorStore = os.Getenv("VECTOR_STORE") +var kbdisableIndexing = os.Getenv("KBDISABLEINDEX") const defaultChunkSize = 4098 @@ -80,9 +81,11 @@ func main() { panic(err) } - // Reload store - if err := db.SaveToStore(); err != nil { - fmt.Println("Error storing in the KB", err) + if len(db.Database) > 0 && kbdisableIndexing != "true" { + fmt.Println("Loading knowledgebase from disk, to skip run with KBDISABLEINDEX=true") + if err := db.SaveToStore(); err != nil { + fmt.Println("Error storing in the KB", err) + } } app := &App{ From 69cbcc5c88bdad94078ed32ec4612e69850e6639 Mon Sep 17 00:00:00 2001 From: mudler Date: Wed, 10 Apr 2024 20:28:15 +0200 Subject: [PATCH 079/399] Allow slack connector to answer to channel messages --- example/webui/connector/slack.go | 31 ++++++++++++++++++++++++------- example/webui/main.go | 4 ++-- slack.yaml | 5 +++++ 3 files changed, 31 insertions(+), 9 deletions(-) diff --git a/example/webui/connector/slack.go b/example/webui/connector/slack.go index a42b511..dda683a 100644 --- a/example/webui/connector/slack.go +++ b/example/webui/connector/slack.go @@ -4,6 +4,7 @@ import ( "fmt" "log" "os" + "strings" "github.com/mudler/local-agent-framework/agent" @@ -14,14 +15,18 @@ import ( ) type Slack struct { - appToken string - botToken string + appToken string + botToken string + channelID string + alwaysReply bool } func NewSlack(config map[string]string) *Slack { return &Slack{ - appToken: config["appToken"], - botToken: config["botToken"], + appToken: config["appToken"], + botToken: config["botToken"], + channelID: config["channelID"], + alwaysReply: config["alwaysReply"] == "true", } } @@ -48,7 +53,7 @@ func (t *Slack) Start(a *agent.Agent) { client := socketmode.New( api, - // socketmode.OptionDebug(true), + //socketmode.OptionDebug(true), //socketmode.OptionLog(log.New(os.Stdout, "socketmode: ", log.Lshortfile|log.LstdFlags)), ) go func() { @@ -83,15 +88,23 @@ func (t *Slack) Start(a *agent.Agent) { switch ev := innerEvent.Data.(type) { case *slackevents.MessageEvent: + if t.channelID == "" && !t.alwaysReply || // If we have set alwaysReply and no channelID + t.channelID != ev.Channel { // If we have a channelID and it's not the same as the event channel + // Skip messages from other channels + fmt.Println("Skipping reply to channel", ev.Channel, t.channelID) + continue + } if b.UserID == ev.User { // Skip messages from ourselves - return + continue } + message := ev.Text res := a.Ask( agent.WithText(message), ) + _, _, err = api.PostMessage(ev.Channel, slack.MsgOptionText(res.Response, false), slack.MsgOptionPostMessageParameters(slack.PostMessageParameters{LinkNames: 1})) @@ -102,10 +115,14 @@ func (t *Slack) Start(a *agent.Agent) { if b.UserID == ev.User { // Skip messages from ourselves - return + continue } message := ev.Text + // strip our id from the message + message = strings.ReplaceAll(message, "<@"+b.UserID+"> ", "") + fmt.Println("Message", message) + res := a.Ask( agent.WithText(message), ) diff --git a/example/webui/main.go b/example/webui/main.go index e28350b..540bbb3 100644 --- a/example/webui/main.go +++ b/example/webui/main.go @@ -216,7 +216,7 @@ func (a *App) Delete(pool *AgentPool) func(c *fiber.Ctx) error { fmt.Println("Error removing agent", err) return c.Status(http.StatusInternalServerError).SendString(err.Error()) } - return c.Redirect("/") + return c.Redirect("/agents") } } @@ -237,7 +237,7 @@ func (a *App) Create(pool *AgentPool) func(c *fiber.Ctx) error { c.Status(http.StatusInternalServerError).SendString(err.Error()) return nil } - return c.Redirect("/") + return c.Redirect("/agents") } } diff --git a/slack.yaml b/slack.yaml index e0833bf..65c6d13 100644 --- a/slack.yaml +++ b/slack.yaml @@ -21,15 +21,20 @@ oauth_config: - channels:read - chat:write - commands + - groups:history - im:history - im:read - im:write + - mpim:history - users:read - users:read.email + - groups:read settings: event_subscriptions: bot_events: - app_mention + - message.channels + - message.groups - message.im interactivity: is_enabled: true From 0dda7050174144d8cfc195bac2db95ce59e9dae3 Mon Sep 17 00:00:00 2001 From: mudler Date: Wed, 10 Apr 2024 20:29:30 +0200 Subject: [PATCH 080/399] Slack: no need of serial messages. in this way can be interrupted --- example/webui/connector/slack.go | 40 ++++++++++++++++++-------------- 1 file changed, 22 insertions(+), 18 deletions(-) diff --git a/example/webui/connector/slack.go b/example/webui/connector/slack.go index dda683a..8d48a10 100644 --- a/example/webui/connector/slack.go +++ b/example/webui/connector/slack.go @@ -101,16 +101,18 @@ func (t *Slack) Start(a *agent.Agent) { } message := ev.Text - res := a.Ask( - agent.WithText(message), - ) + go func() { + res := a.Ask( + agent.WithText(message), + ) - _, _, err = api.PostMessage(ev.Channel, - slack.MsgOptionText(res.Response, false), - slack.MsgOptionPostMessageParameters(slack.PostMessageParameters{LinkNames: 1})) - if err != nil { - fmt.Printf("Error posting message: %v", err) - } + _, _, err = api.PostMessage(ev.Channel, + slack.MsgOptionText(res.Response, false), + slack.MsgOptionPostMessageParameters(slack.PostMessageParameters{LinkNames: 1})) + if err != nil { + fmt.Printf("Error posting message: %v", err) + } + }() case *slackevents.AppMentionEvent: if b.UserID == ev.User { @@ -123,16 +125,18 @@ func (t *Slack) Start(a *agent.Agent) { message = strings.ReplaceAll(message, "<@"+b.UserID+"> ", "") fmt.Println("Message", message) - res := a.Ask( - agent.WithText(message), - ) + go func() { + res := a.Ask( + agent.WithText(message), + ) - _, _, err = api.PostMessage(ev.Channel, - slack.MsgOptionText(res.Response, false), - slack.MsgOptionPostMessageParameters(slack.PostMessageParameters{LinkNames: 1})) - if err != nil { - fmt.Printf("Error posting message: %v", err) - } + _, _, err = api.PostMessage(ev.Channel, + slack.MsgOptionText(res.Response, false), + slack.MsgOptionPostMessageParameters(slack.PostMessageParameters{LinkNames: 1})) + if err != nil { + fmt.Printf("Error posting message: %v", err) + } + }() case *slackevents.MemberJoinedChannelEvent: fmt.Printf("user %q joined to channel %q", ev.User, ev.Channel) } From 230d01291519114e991d68a948ba9988c74e9a17 Mon Sep 17 00:00:00 2001 From: mudler Date: Wed, 10 Apr 2024 20:35:04 +0200 Subject: [PATCH 081/399] Add customizable system prompt --- agent/agent.go | 10 ++++++++++ agent/options.go | 9 +++++++++ example/webui/agentpool.go | 2 ++ example/webui/create.html | 5 +++++ 4 files changed, 26 insertions(+) diff --git a/agent/agent.go b/agent/agent.go index 5ee4343..33ff7a4 100644 --- a/agent/agent.go +++ b/agent/agent.go @@ -207,6 +207,16 @@ func (a *Agent) consumeJob(job *Job, role string) { }) } + if a.options.systemPrompt != "" { + if !Messages(a.currentConversation).Exist(a.options.systemPrompt) { + a.currentConversation = append([]openai.ChatCompletionMessage{ + { + Role: "system", + Content: a.options.systemPrompt, + }}, a.currentConversation...) + } + } + // RAG if memory { // Walk conversation from bottom to top, and find the first message of the user diff --git a/agent/options.go b/agent/options.go index 82b4ef3..e5f7cfe 100644 --- a/agent/options.go +++ b/agent/options.go @@ -30,6 +30,8 @@ type options struct { kbResults int ragdb RAGDB + systemPrompt string + // callbacks reasoningCallback func(ActionCurrentState) bool resultCallback func(ActionState) @@ -110,6 +112,13 @@ func WithRAGDB(db RAGDB) Option { } } +func WithSystemPrompt(prompt string) Option { + return func(o *options) error { + o.systemPrompt = prompt + return nil + } +} + func WithLLMAPIURL(url string) Option { return func(o *options) error { o.LLMAPI.APIURL = url diff --git a/example/webui/agentpool.go b/example/webui/agentpool.go index b8e6336..c5e12fb 100644 --- a/example/webui/agentpool.go +++ b/example/webui/agentpool.go @@ -39,6 +39,7 @@ type AgentConfig struct { PermanentGoal string `json:"permanent_goal" form:"permanent_goal"` EnableKnowledgeBase bool `json:"enable_kb" form:"enable_kb"` KnowledgeBaseResults int `json:"kb_results" form:"kb_results"` + SystemPrompt string `json:"system_prompt" form:"system_prompt"` } type AgentPool struct { @@ -248,6 +249,7 @@ func (a *AgentPool) startAgentWithConfig(name string, config *AgentConfig) error } return true }), + WithSystemPrompt(config.SystemPrompt), WithAgentResultCallback(func(state ActionState) { fmt.Println("Reasoning", state.Reasoning) diff --git a/example/webui/create.html b/example/webui/create.html index 511725e..29434ce 100644 --- a/example/webui/create.html +++ b/example/webui/create.html @@ -114,6 +114,11 @@
+
+ + +
+
- +
`; @@ -67,7 +67,7 @@ `+actions+`
- +
`; From f85962769a83dee79969fd4f75965fc08de80ebe Mon Sep 17 00:00:00 2001 From: Ettore Di Giacinto Date: Thu, 11 Apr 2024 00:16:03 +0200 Subject: [PATCH 084/399] Move views --- example/webui/main.go | 20 ++++++++++++++------ example/webui/{ => views}/agents.html | 20 ++++++++++---------- example/webui/{ => views}/chat.html | 4 +--- example/webui/{ => views}/create.html | 3 +-- example/webui/{ => views}/index.html | 3 +-- example/webui/{ => views}/knowledgebase.html | 3 +-- example/webui/views/partials/header.html | 9 +++++++++ go.mod | 3 +++ go.sum | 6 ++++++ 9 files changed, 46 insertions(+), 25 deletions(-) rename example/webui/{ => views}/agents.html (82%) rename example/webui/{ => views}/chat.html (95%) rename example/webui/{ => views}/create.html (98%) rename example/webui/{ => views}/index.html (85%) rename example/webui/{ => views}/knowledgebase.html (92%) create mode 100644 example/webui/views/partials/header.html diff --git a/example/webui/main.go b/example/webui/main.go index 540bbb3..efdf2aa 100644 --- a/example/webui/main.go +++ b/example/webui/main.go @@ -1,6 +1,7 @@ package main import ( + "embed" "fmt" "log" "math/rand" @@ -10,6 +11,7 @@ import ( "github.com/donseba/go-htmx" fiber "github.com/gofiber/fiber/v2" + "github.com/gofiber/template/html/v2" . "github.com/mudler/local-agent-framework/agent" "github.com/mudler/local-agent-framework/llm" @@ -46,6 +48,9 @@ func htmlIfy(s string) string { return s } +//go:embed views/* +var viewsfs embed.FS + func main() { // current dir cwd, err := os.Getwd() @@ -96,27 +101,30 @@ func main() { if err := pool.StartAll(); err != nil { panic(err) } - + engine := html.NewFileSystem(http.FS(viewsfs), ".html") // Initialize a new Fiber app - webapp := fiber.New() + // Pass the engine to the Views + webapp := fiber.New(fiber.Config{ + Views: engine, + }) // Serve static files webapp.Static("/", "./public") webapp.Get("/", func(c *fiber.Ctx) error { - return c.Render("index.html", fiber.Map{ + return c.Render("views/index", fiber.Map{ "Agents": pool.List(), }) }) webapp.Get("/agents", func(c *fiber.Ctx) error { - return c.Render("agents.html", fiber.Map{ + return c.Render("views/agents", fiber.Map{ "Agents": pool.List(), }) }) webapp.Get("/create", func(c *fiber.Ctx) error { - return c.Render("create.html", fiber.Map{ + return c.Render("views/create", fiber.Map{ "Title": "Hello, World!", "Actions": AvailableActions, "Connectors": AvailableConnectors, @@ -124,7 +132,7 @@ func main() { }) webapp.Get("/knowledgebase", func(c *fiber.Ctx) error { - return c.Render("knowledgebase.html", fiber.Map{ + return c.Render("views/knowledgebase", fiber.Map{ "Title": "Hello, World!", "KnowledgebaseItemsCount": len(db.Database), }) diff --git a/example/webui/agents.html b/example/webui/views/agents.html similarity index 82% rename from example/webui/agents.html rename to example/webui/views/agents.html index a1ee34d..c825a5c 100644 --- a/example/webui/agents.html +++ b/example/webui/views/agents.html @@ -2,19 +2,19 @@ + Agent List - - + {{template "views/partials/header"}}
-

Smart Agent List

+

Smart Agent List

-
-
-
+
+
+
@@ -39,10 +39,10 @@ {{ end }} @@ -53,8 +53,8 @@ -
- + diff --git a/example/webui/chat.html b/example/webui/views/chat.html similarity index 95% rename from example/webui/chat.html rename to example/webui/views/chat.html index b2fa760..c8ab894 100644 --- a/example/webui/chat.html +++ b/example/webui/views/chat.html @@ -1,10 +1,8 @@ - Smart Agent Interface - - + {{template "views/partials/header"}} diff --git a/example/webui/create.html b/example/webui/views/create.html similarity index 98% rename from example/webui/create.html rename to example/webui/views/create.html index a748aeb..67df528 100644 --- a/example/webui/create.html +++ b/example/webui/views/create.html @@ -1,9 +1,8 @@ - Create New Agent - + {{template "views/partials/header"}} diff --git a/example/webui/index.html b/example/webui/views/index.html similarity index 85% rename from example/webui/index.html rename to example/webui/views/index.html index c0eabd1..0a75e81 100644 --- a/example/webui/index.html +++ b/example/webui/views/index.html @@ -1,9 +1,8 @@ - Smart Assistant Dashboard - + {{template "views/partials/header"}}
diff --git a/example/webui/knowledgebase.html b/example/webui/views/knowledgebase.html similarity index 92% rename from example/webui/knowledgebase.html rename to example/webui/views/knowledgebase.html index ec8f5a8..2c4b949 100644 --- a/example/webui/knowledgebase.html +++ b/example/webui/views/knowledgebase.html @@ -1,9 +1,8 @@ - KnowledgeBase - + {{template "views/partials/header"}} diff --git a/example/webui/views/partials/header.html b/example/webui/views/partials/header.html new file mode 100644 index 0000000..31fde73 --- /dev/null +++ b/example/webui/views/partials/header.html @@ -0,0 +1,9 @@ + + + + + \ No newline at end of file diff --git a/go.mod b/go.mod index 9aeb6ab..29725f6 100644 --- a/go.mod +++ b/go.mod @@ -24,6 +24,9 @@ require ( github.com/andybalholm/cascadia v1.1.0 // indirect github.com/go-logr/logr v1.3.0 // indirect github.com/go-task/slim-sprig v0.0.0-20230315185526-52ccab3ef572 // indirect + github.com/gofiber/template v1.8.3 // indirect + github.com/gofiber/template/html/v2 v2.1.1 // indirect + github.com/gofiber/utils v1.1.0 // indirect github.com/google/go-cmp v0.6.0 // indirect github.com/google/go-querystring v1.1.0 // indirect github.com/google/pprof v0.0.0-20210407192527-94a9f03dee38 // indirect diff --git a/go.sum b/go.sum index b1deafb..e4a0570 100644 --- a/go.sum +++ b/go.sum @@ -24,6 +24,12 @@ github.com/go-test/deep v1.0.4 h1:u2CU3YKy9I2pmu9pX0eq50wCgjfGIt539SqR7FbHiho= github.com/go-test/deep v1.0.4/go.mod h1:wGDj63lr65AM2AQyKZd/NYHGb0R+1RLqB8NKt3aSFNA= github.com/gofiber/fiber/v2 v2.52.4 h1:P+T+4iK7VaqUsq2PALYEfBBo6bJZ4q3FP8cZ84EggTM= github.com/gofiber/fiber/v2 v2.52.4/go.mod h1:KEOE+cXMhXG0zHc9d8+E38hoX+ZN7bhOtgeF2oT6jrQ= +github.com/gofiber/template v1.8.3 h1:hzHdvMwMo/T2kouz2pPCA0zGiLCeMnoGsQZBTSYgZxc= +github.com/gofiber/template v1.8.3/go.mod h1:bs/2n0pSNPOkRa5VJ8zTIvedcI/lEYxzV3+YPXdBvq8= +github.com/gofiber/template/html/v2 v2.1.1 h1:QEy3O3EBkvwDthy5bXVGUseOyO6ldJoiDxlF4+MJiV8= +github.com/gofiber/template/html/v2 v2.1.1/go.mod h1:2G0GHHOUx70C1LDncoBpe4T6maQbNa4x1CVNFW0wju0= +github.com/gofiber/utils v1.1.0 h1:vdEBpn7AzIUJRhe+CiTOJdUcTg4Q9RK+pEa0KPbLdrM= +github.com/gofiber/utils v1.1.0/go.mod h1:poZpsnhBykfnY1Mc0KeEa6mSHrS3dV0+oBWyeQmb2e0= github.com/golang/protobuf v1.5.3 h1:KhyjKVUg7Usr/dYsdSqoFveMYd5ko72D+zANwlG1mmg= github.com/golang/protobuf v1.5.3/go.mod h1:XVQd3VNwM+JqD3oG2Ue2ip4fOMUkwXdXDdiuN0vRsmY= github.com/google/go-cmp v0.5.2/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= From cb35f871db295ee8f2b80aed8fa7ce281b64cc36 Mon Sep 17 00:00:00 2001 From: Ettore Di Giacinto Date: Thu, 11 Apr 2024 00:20:49 +0200 Subject: [PATCH 085/399] Split main --- example/webui/app.go | 155 +++++++++++++++++++++++++++ example/webui/elements.go | 11 +- example/webui/main.go | 217 +------------------------------------- example/webui/routes.go | 76 +++++++++++++ 4 files changed, 242 insertions(+), 217 deletions(-) create mode 100644 example/webui/app.go create mode 100644 example/webui/routes.go diff --git a/example/webui/app.go b/example/webui/app.go new file mode 100644 index 0000000..7ee03ec --- /dev/null +++ b/example/webui/app.go @@ -0,0 +1,155 @@ +package main + +import ( + "fmt" + "net/http" + + . "github.com/mudler/local-agent-framework/agent" + + "github.com/donseba/go-htmx" + fiber "github.com/gofiber/fiber/v2" +) + +type ( + App struct { + htmx *htmx.HTMX + pool *AgentPool + } +) + +func (a *App) KnowledgeBase(db *InMemoryDatabase) func(c *fiber.Ctx) error { + return func(c *fiber.Ctx) error { + payload := struct { + URL string `form:"url"` + ChunkSize int `form:"chunk_size"` + }{} + + if err := c.BodyParser(&payload); err != nil { + return err + } + + website := payload.URL + if website == "" { + return fmt.Errorf("please enter a URL") + } + chunkSize := defaultChunkSize + if payload.ChunkSize > 0 { + chunkSize = payload.ChunkSize + } + + go WebsiteToKB(website, chunkSize, db) + + return c.Redirect("/knowledgebase") + } +} + +func (a *App) Notify(pool *AgentPool) func(c *fiber.Ctx) error { + return func(c *fiber.Ctx) error { + payload := struct { + Message string `form:"message"` + }{} + + if err := c.BodyParser(&payload); err != nil { + return err + } + + query := payload.Message + if query == "" { + _, _ = c.Write([]byte("Please enter a message.")) + return nil + } + + agent := pool.GetAgent(c.Params("name")) + agent.Ask( + WithText(query), + ) + _, _ = c.Write([]byte("Message sent")) + + return nil + } +} + +func (a *App) Delete(pool *AgentPool) func(c *fiber.Ctx) error { + return func(c *fiber.Ctx) error { + if err := pool.Remove(c.Params("name")); err != nil { + fmt.Println("Error removing agent", err) + return c.Status(http.StatusInternalServerError).SendString(err.Error()) + } + return c.Redirect("/agents") + } +} + +func (a *App) Create(pool *AgentPool) func(c *fiber.Ctx) error { + return func(c *fiber.Ctx) error { + config := AgentConfig{} + if err := c.BodyParser(&config); err != nil { + return err + } + + fmt.Printf("Agent configuration: %+v\n", config) + + if config.Name == "" { + c.Status(http.StatusBadRequest).SendString("Name is required") + return nil + } + if err := pool.CreateAgent(config.Name, &config); err != nil { + c.Status(http.StatusInternalServerError).SendString(err.Error()) + return nil + } + return c.Redirect("/agents") + } +} + +func (a *App) Chat(pool *AgentPool) func(c *fiber.Ctx) error { + return func(c *fiber.Ctx) error { + payload := struct { + Message string `json:"message"` + }{} + + if err := c.BodyParser(&payload); err != nil { + return err + } + agentName := c.Params("name") + manager := pool.GetManager(agentName) + + query := payload.Message + if query == "" { + _, _ = c.Write([]byte("Please enter a message.")) + return nil + } + manager.Send( + NewMessage( + chatDiv(query, "gray"), + ).WithEvent("messages")) + + go func() { + agent := pool.GetAgent(agentName) + if agent == nil { + fmt.Println("Agent not found in pool", c.Params("name")) + return + } + res := agent.Ask( + WithText(query), + ) + fmt.Println("response is", res.Response) + manager.Send( + NewMessage( + chatDiv(res.Response, "blue"), + ).WithEvent("messages")) + manager.Send( + NewMessage( + disabledElement("inputMessage", false), // show again the input + ).WithEvent("message_status")) + + //result := `done` + // _, _ = w.Write([]byte(result)) + }() + + manager.Send( + NewMessage( + loader() + disabledElement("inputMessage", true), + ).WithEvent("message_status")) + + return nil + } +} diff --git a/example/webui/elements.go b/example/webui/elements.go index a0cfbd6..7bc363f 100644 --- a/example/webui/elements.go +++ b/example/webui/elements.go @@ -1,6 +1,9 @@ package main -import "fmt" +import ( + "fmt" + "strings" +) // TODO: switch to https://github.com/chasefleming/elem-go @@ -19,3 +22,9 @@ func disabledElement(id string, disabled bool) string { return `` } + +func htmlIfy(s string) string { + s = strings.TrimSpace(s) + s = strings.ReplaceAll(s, "\n", "
") + return s +} diff --git a/example/webui/main.go b/example/webui/main.go index efdf2aa..3848735 100644 --- a/example/webui/main.go +++ b/example/webui/main.go @@ -4,10 +4,8 @@ import ( "embed" "fmt" "log" - "math/rand" "net/http" "os" - "strings" "github.com/donseba/go-htmx" fiber "github.com/gofiber/fiber/v2" @@ -18,13 +16,6 @@ import ( "github.com/mudler/local-agent-framework/llm/rag" ) -type ( - App struct { - htmx *htmx.HTMX - pool *AgentPool - } -) - var testModel = os.Getenv("TEST_MODEL") var apiURL = os.Getenv("API_URL") var apiKey = os.Getenv("API_KEY") @@ -42,12 +33,6 @@ func init() { } } -func htmlIfy(s string) string { - s = strings.TrimSpace(s) - s = strings.ReplaceAll(s, "\n", "
") - return s -} - //go:embed views/* var viewsfs embed.FS @@ -108,207 +93,7 @@ func main() { Views: engine, }) - // Serve static files - webapp.Static("/", "./public") - - webapp.Get("/", func(c *fiber.Ctx) error { - return c.Render("views/index", fiber.Map{ - "Agents": pool.List(), - }) - }) - - webapp.Get("/agents", func(c *fiber.Ctx) error { - return c.Render("views/agents", fiber.Map{ - "Agents": pool.List(), - }) - }) - - webapp.Get("/create", func(c *fiber.Ctx) error { - return c.Render("views/create", fiber.Map{ - "Title": "Hello, World!", - "Actions": AvailableActions, - "Connectors": AvailableConnectors, - }) - }) - - webapp.Get("/knowledgebase", func(c *fiber.Ctx) error { - return c.Render("views/knowledgebase", fiber.Map{ - "Title": "Hello, World!", - "KnowledgebaseItemsCount": len(db.Database), - }) - }) - - // Define a route for the GET method on the root path '/' - webapp.Get("/sse/:name", func(c *fiber.Ctx) error { - - m := pool.GetManager(c.Params("name")) - if m == nil { - return c.SendStatus(404) - } - - m.Handle(c, NewClient(randStringRunes(10))) - return nil - }) - - webapp.Get("/notify/:name", app.Notify(pool)) - webapp.Post("/chat/:name", app.Chat(pool)) - webapp.Post("/create", app.Create(pool)) - webapp.Get("/delete/:name", app.Delete(pool)) - webapp.Post("/knowledgebase", app.KnowledgeBase(db)) - - webapp.Get("/talk/:name", func(c *fiber.Ctx) error { - return c.Render("chat.html", fiber.Map{ - // "Character": agent.Character, - "Name": c.Params("name"), - }) - }) + RegisterRoutes(webapp, pool, db, app) log.Fatal(webapp.Listen(":3000")) } - -func (a *App) KnowledgeBase(db *InMemoryDatabase) func(c *fiber.Ctx) error { - return func(c *fiber.Ctx) error { - payload := struct { - URL string `form:"url"` - ChunkSize int `form:"chunk_size"` - }{} - - if err := c.BodyParser(&payload); err != nil { - return err - } - - website := payload.URL - if website == "" { - return fmt.Errorf("please enter a URL") - } - chunkSize := defaultChunkSize - if payload.ChunkSize > 0 { - chunkSize = payload.ChunkSize - } - - go WebsiteToKB(website, chunkSize, db) - - return c.Redirect("/knowledgebase") - } -} - -func (a *App) Notify(pool *AgentPool) func(c *fiber.Ctx) error { - return func(c *fiber.Ctx) error { - payload := struct { - Message string `form:"message"` - }{} - - if err := c.BodyParser(&payload); err != nil { - return err - } - - query := payload.Message - if query == "" { - _, _ = c.Write([]byte("Please enter a message.")) - return nil - } - - agent := pool.GetAgent(c.Params("name")) - agent.Ask( - WithText(query), - ) - _, _ = c.Write([]byte("Message sent")) - - return nil - } -} - -func (a *App) Delete(pool *AgentPool) func(c *fiber.Ctx) error { - return func(c *fiber.Ctx) error { - if err := pool.Remove(c.Params("name")); err != nil { - fmt.Println("Error removing agent", err) - return c.Status(http.StatusInternalServerError).SendString(err.Error()) - } - return c.Redirect("/agents") - } -} - -func (a *App) Create(pool *AgentPool) func(c *fiber.Ctx) error { - return func(c *fiber.Ctx) error { - config := AgentConfig{} - if err := c.BodyParser(&config); err != nil { - return err - } - - fmt.Printf("Agent configuration: %+v\n", config) - - if config.Name == "" { - c.Status(http.StatusBadRequest).SendString("Name is required") - return nil - } - if err := pool.CreateAgent(config.Name, &config); err != nil { - c.Status(http.StatusInternalServerError).SendString(err.Error()) - return nil - } - return c.Redirect("/agents") - } -} - -func (a *App) Chat(pool *AgentPool) func(c *fiber.Ctx) error { - return func(c *fiber.Ctx) error { - payload := struct { - Message string `json:"message"` - }{} - - if err := c.BodyParser(&payload); err != nil { - return err - } - agentName := c.Params("name") - manager := pool.GetManager(agentName) - - query := payload.Message - if query == "" { - _, _ = c.Write([]byte("Please enter a message.")) - return nil - } - manager.Send( - NewMessage( - chatDiv(query, "gray"), - ).WithEvent("messages")) - - go func() { - agent := pool.GetAgent(agentName) - if agent == nil { - fmt.Println("Agent not found in pool", c.Params("name")) - return - } - res := agent.Ask( - WithText(query), - ) - fmt.Println("response is", res.Response) - manager.Send( - NewMessage( - chatDiv(res.Response, "blue"), - ).WithEvent("messages")) - manager.Send( - NewMessage( - disabledElement("inputMessage", false), // show again the input - ).WithEvent("message_status")) - - //result := `done` - // _, _ = w.Write([]byte(result)) - }() - - manager.Send( - NewMessage( - loader() + disabledElement("inputMessage", true), - ).WithEvent("message_status")) - - return nil - } -} - -var letterRunes = []rune("abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ") - -func randStringRunes(n int) string { - b := make([]rune, n) - for i := range b { - b[i] = letterRunes[rand.Intn(len(letterRunes))] - } - return string(b) -} diff --git a/example/webui/routes.go b/example/webui/routes.go new file mode 100644 index 0000000..0dda837 --- /dev/null +++ b/example/webui/routes.go @@ -0,0 +1,76 @@ +package main + +import ( + "math/rand" + + fiber "github.com/gofiber/fiber/v2" +) + +func RegisterRoutes(webapp *fiber.App, pool *AgentPool, db *InMemoryDatabase, app *App) { + + // Serve static files + webapp.Static("/", "./public") + + webapp.Get("/", func(c *fiber.Ctx) error { + return c.Render("views/index", fiber.Map{ + "Agents": pool.List(), + }) + }) + + webapp.Get("/agents", func(c *fiber.Ctx) error { + return c.Render("views/agents", fiber.Map{ + "Agents": pool.List(), + }) + }) + + webapp.Get("/create", func(c *fiber.Ctx) error { + return c.Render("views/create", fiber.Map{ + "Title": "Hello, World!", + "Actions": AvailableActions, + "Connectors": AvailableConnectors, + }) + }) + + webapp.Get("/knowledgebase", func(c *fiber.Ctx) error { + return c.Render("views/knowledgebase", fiber.Map{ + "Title": "Hello, World!", + "KnowledgebaseItemsCount": len(db.Database), + }) + }) + + // Define a route for the GET method on the root path '/' + webapp.Get("/sse/:name", func(c *fiber.Ctx) error { + + m := pool.GetManager(c.Params("name")) + if m == nil { + return c.SendStatus(404) + } + + m.Handle(c, NewClient(randStringRunes(10))) + return nil + }) + + webapp.Get("/notify/:name", app.Notify(pool)) + webapp.Post("/chat/:name", app.Chat(pool)) + webapp.Post("/create", app.Create(pool)) + webapp.Get("/delete/:name", app.Delete(pool)) + webapp.Post("/knowledgebase", app.KnowledgeBase(db)) + + webapp.Get("/talk/:name", func(c *fiber.Ctx) error { + return c.Render("chat.html", fiber.Map{ + // "Character": agent.Character, + "Name": c.Params("name"), + }) + }) + +} + +var letterRunes = []rune("abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ") + +func randStringRunes(n int) string { + b := make([]rune, n) + for i := range b { + b[i] = letterRunes[rand.Intn(len(letterRunes))] + } + return string(b) +} From d237e17719c55b0d334fcee60b4d390cb5a23b5c Mon Sep 17 00:00:00 2001 From: Ettore Di Giacinto Date: Thu, 11 Apr 2024 00:40:46 +0200 Subject: [PATCH 086/399] Support pdf ingestion --- example/webui/app.go | 65 ++++++++++++++++++++++++++ example/webui/rag.go | 4 ++ example/webui/routes.go | 1 + example/webui/views/knowledgebase.html | 24 ++++++++++ go.mod | 1 + go.sum | 2 + 6 files changed, 97 insertions(+) diff --git a/example/webui/app.go b/example/webui/app.go index 7ee03ec..cb6ba56 100644 --- a/example/webui/app.go +++ b/example/webui/app.go @@ -1,12 +1,15 @@ package main import ( + "bytes" "fmt" "net/http" + "os" . "github.com/mudler/local-agent-framework/agent" "github.com/donseba/go-htmx" + "github.com/dslipak/pdf" fiber "github.com/gofiber/fiber/v2" ) @@ -17,6 +20,54 @@ type ( } ) +func (a *App) KnowledgeBaseFile(db *InMemoryDatabase) func(c *fiber.Ctx) error { + return func(c *fiber.Ctx) error { + // https://golang.withcodeexample.com/blog/file-upload-handling-golang-fiber-guide/ + // Handle file upload logic + file, err := c.FormFile("file") + if err != nil { + // Handle error + return err + } + + payload := struct { + ChunkSize int `form:"chunk_size"` + }{} + + if err := c.BodyParser(&payload); err != nil { + return err + } + + os.MkdirAll("./uploads", os.ModePerm) + + destination := fmt.Sprintf("./uploads/%s", file.Filename) + if err := c.SaveFile(file, destination); err != nil { + // Handle error + return err + } + + fmt.Println("File uploaded to: " + destination) + fmt.Printf("Payload: %+v\n", payload) + + content, err := readPdf(destination) // Read local pdf file + if err != nil { + panic(err) + } + + fmt.Println("Content is", content) + chunkSize := defaultChunkSize + if payload.ChunkSize > 0 { + chunkSize = payload.ChunkSize + } + + go StringsToKB(db, chunkSize, content) + + _, err = c.WriteString(chatDiv("File uploaded", "gray")) + + return err + } +} + func (a *App) KnowledgeBase(db *InMemoryDatabase) func(c *fiber.Ctx) error { return func(c *fiber.Ctx) error { payload := struct { @@ -153,3 +204,17 @@ func (a *App) Chat(pool *AgentPool) func(c *fiber.Ctx) error { return nil } } + +func readPdf(path string) (string, error) { + r, err := pdf.Open(path) + if err != nil { + return "", err + } + var buf bytes.Buffer + b, err := r.GetPlainText() + if err != nil { + return "", err + } + buf.ReadFrom(b) + return buf.String(), nil +} diff --git a/example/webui/rag.go b/example/webui/rag.go index d048a9f..1d90e8f 100644 --- a/example/webui/rag.go +++ b/example/webui/rag.go @@ -127,6 +127,10 @@ func WebsiteToKB(website string, chunkSize int, db *InMemoryDatabase) { fmt.Println("Found pages: ", len(content)) fmt.Println("ChunkSize: ", chunkSize) + StringsToKB(db, chunkSize, content...) +} + +func StringsToKB(db *InMemoryDatabase, chunkSize int, content ...string) { for _, c := range content { chunks := splitParagraphIntoChunks(c, chunkSize) fmt.Println("chunks: ", len(chunks)) diff --git a/example/webui/routes.go b/example/webui/routes.go index 0dda837..f3765a1 100644 --- a/example/webui/routes.go +++ b/example/webui/routes.go @@ -55,6 +55,7 @@ func RegisterRoutes(webapp *fiber.App, pool *AgentPool, db *InMemoryDatabase, ap webapp.Post("/create", app.Create(pool)) webapp.Get("/delete/:name", app.Delete(pool)) webapp.Post("/knowledgebase", app.KnowledgeBase(db)) + webapp.Post("/knowledgebase/upload", app.KnowledgeBaseFile(db)) webapp.Get("/talk/:name", func(c *fiber.Ctx) error { return c.Render("chat.html", fiber.Map{ diff --git a/example/webui/views/knowledgebase.html b/example/webui/views/knowledgebase.html index 2c4b949..67a6109 100644 --- a/example/webui/views/knowledgebase.html +++ b/example/webui/views/knowledgebase.html @@ -29,6 +29,30 @@
+ +
+
+ + +
+
+ + +
+
+ +
+
+ +
+ +
diff --git a/go.mod b/go.mod index 29725f6..6aa1e11 100644 --- a/go.mod +++ b/go.mod @@ -22,6 +22,7 @@ require ( github.com/PuerkitoBio/goquery v1.6.0 // indirect github.com/andybalholm/brotli v1.1.0 // indirect github.com/andybalholm/cascadia v1.1.0 // indirect + github.com/dslipak/pdf v0.0.2 // indirect github.com/go-logr/logr v1.3.0 // indirect github.com/go-task/slim-sprig v0.0.0-20230315185526-52ccab3ef572 // indirect github.com/gofiber/template v1.8.3 // indirect diff --git a/go.sum b/go.sum index e4a0570..ccd2ce3 100644 --- a/go.sum +++ b/go.sum @@ -14,6 +14,8 @@ github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= github.com/donseba/go-htmx v1.8.0 h1:oTx1uUsjXZZVvcZfulZvBSPtdD1jzsvZyuK91+Q8zPE= github.com/donseba/go-htmx v1.8.0/go.mod h1:8PTAYvNKf8+QYis+DpAsggKz+sa2qljtMgvdAeNBh5s= +github.com/dslipak/pdf v0.0.2 h1:djAvcM5neg9Ush+zR6QXB+VMJzR6TdnX766HPIg1JmI= +github.com/dslipak/pdf v0.0.2/go.mod h1:2L3SnkI9cQwnAS9gfPz2iUoLC0rUZwbucpbKi5R1mUo= github.com/go-logr/logr v1.3.0 h1:2y3SDp0ZXuc6/cjLSZ+Q3ir+QB9T/iG5yYRXqsagWSY= github.com/go-logr/logr v1.3.0/go.mod h1:9T104GzyrTigFIr8wt5mBrctHMim0Nb2HLGrmQ40KvY= github.com/go-task/slim-sprig v0.0.0-20230315185526-52ccab3ef572 h1:tfuBGBXKqDEevZMzYi5KSi8KkcZtzBcTgAUUtapy0OI= From fa39ae93f13b770b87a21535b9d279450036ed21 Mon Sep 17 00:00:00 2001 From: mudler Date: Thu, 11 Apr 2024 13:05:35 +0200 Subject: [PATCH 087/399] Add github actions: --- example/webui/agentpool.go | 20 ++++-- example/webui/connector/githubissue.go | 7 +- external/githubissuelabeler.go | 91 ++++++++++++++++++++++++++ external/githubissueopener.go | 82 +++++++++++++++++++++++ 4 files changed, 193 insertions(+), 7 deletions(-) create mode 100644 external/githubissuelabeler.go create mode 100644 external/githubissueopener.go diff --git a/example/webui/agentpool.go b/example/webui/agentpool.go index c5e12fb..0d4ac3f 100644 --- a/example/webui/agentpool.go +++ b/example/webui/agentpool.go @@ -1,6 +1,7 @@ package main import ( + "context" "encoding/json" "fmt" "os" @@ -125,16 +126,21 @@ func (a *AgentPool) List() []string { } const ( + // Connectors ConnectorTelegram = "telegram" ConnectorSlack = "slack" ConnectorDiscord = "discord" ConnectorGithubIssues = "github-issues" - ActionSearch = "search" + + // Actions + ActionSearch = "search" + ActionGithubIssueLabeler = "github-issue-labeler" + ActionGithubIssueOpener = "github-issue-opener" ) -var AvailableActions = []string{ActionSearch} +var AvailableActions = []string{ActionSearch, ActionGithubIssueLabeler, ActionGithubIssueOpener} -func (a *AgentConfig) availableActions() []Action { +func (a *AgentConfig) availableActions(ctx context.Context) []Action { actions := []Action{} for _, action := range a.Actions { @@ -150,6 +156,10 @@ func (a *AgentConfig) availableActions() []Action { switch action.Name { case ActionSearch: actions = append(actions, external.NewSearch(config)) + case ActionGithubIssueLabeler: + actions = append(actions, external.NewGithubIssueLabeler(ctx, config)) + case ActionGithubIssueOpener: + actions = append(actions, external.NewGithubIssueOpener(ctx, config)) } } @@ -204,6 +214,7 @@ func (a *AgentConfig) availableConnectors() []Connector { func (a *AgentPool) startAgentWithConfig(name string, config *AgentConfig) error { manager := NewManager(5) + ctx := context.Background() model := a.model if config.Model != "" { model = config.Model @@ -218,7 +229,7 @@ func (a *AgentPool) startAgentWithConfig(name string, config *AgentConfig) error fmt.Println("Model", model) fmt.Println("API URL", a.apiURL) - actions := config.availableActions() + actions := config.availableActions(ctx) stateFile, characterFile := a.stateFiles(name) @@ -226,6 +237,7 @@ func (a *AgentPool) startAgentWithConfig(name string, config *AgentConfig) error opts := []Option{ WithModel(model), WithLLMAPIURL(a.apiURL), + WithContext(ctx), WithPeriodicRuns(config.PeriodicRuns), WithPermanentGoal(config.PermanentGoal), WithActions( diff --git a/example/webui/connector/githubissue.go b/example/webui/connector/githubissue.go index 6706f15..d38bf79 100644 --- a/example/webui/connector/githubissue.go +++ b/example/webui/connector/githubissue.go @@ -86,11 +86,12 @@ func (g *GithubIssues) issuesService() { if issue.IsPullRequest() { continue } - + userName := *issue.User.Name messages := []openai.ChatCompletionMessage{ { - Role: "system", - Content: fmt.Sprintf("This is a conversation with an user that opened a Github issue with title '%s'.", issue.GetTitle()), + Role: "system", + Content: fmt.Sprintf( + `This is a conversation with an user ("%s") that opened a Github issue with title "%s" in the repository "%s" owned by "%s" .`, userName, issue.GetTitle(), g.repository, g.owner), }, { Role: "user", diff --git a/external/githubissuelabeler.go b/external/githubissuelabeler.go new file mode 100644 index 0000000..0c8ef52 --- /dev/null +++ b/external/githubissuelabeler.go @@ -0,0 +1,91 @@ +package external + +import ( + "context" + "fmt" + "strings" + + "github.com/google/go-github/v61/github" + "github.com/mudler/local-agent-framework/action" + "github.com/sashabaranov/go-openai/jsonschema" +) + +type GithubIssuesLabeler struct { + token string + availableLabels []string + context context.Context + client *github.Client +} + +func NewGithubIssueLabeler(ctx context.Context, config map[string]string) *GithubIssuesLabeler { + client := github.NewClient(nil).WithAuthToken(config["token"]) + + // Get available labels + availableLabels := []string{"bug", "enhancement"} + + if config["availableLabels"] != "" { + availableLabels = strings.Split(config["availableLabels"], ",") + } + + return &GithubIssuesLabeler{ + client: client, + token: config["token"], + context: ctx, + availableLabels: availableLabels, + } +} + +func (g *GithubIssuesLabeler) Run(params action.ActionParams) (string, error) { + result := struct { + Repository string `json:"repository"` + Owner string `json:"owner"` + Label string `json:"label"` + IssueNumber int `json:"issue_number"` + }{} + err := params.Unmarshal(&result) + if err != nil { + fmt.Printf("error: %v", err) + + return "", err + } + + labels, _, err := g.client.Issues.AddLabelsToIssue(g.context, result.Owner, result.Repository, result.IssueNumber, []string{result.Label}) + //labelsNames := []string{} + for _, l := range labels { + fmt.Println("Label added:", l.Name) + //labelsNames = append(labelsNames, l.GetName()) + } + + resultString := fmt.Sprintf("Added label '%s' to issue %d in repository %s/%s", result.Label, result.IssueNumber, result.Owner, result.Repository) + if err != nil { + resultString = fmt.Sprintf("Error adding label '%s' to issue %d in repository %s/%s: %v", result.Label, result.IssueNumber, result.Owner, result.Repository, err) + } + return resultString, err +} + +func (g *GithubIssuesLabeler) Definition() action.ActionDefinition { + return action.ActionDefinition{ + Name: "add_label_to_github_issue", + Description: "Add a label to a Github issue.", + Properties: map[string]jsonschema.Definition{ + "issue_number": { + Type: jsonschema.Number, + Description: "The number of the issue to add the label to.", + }, + "repository": { + Type: jsonschema.String, + Description: "The repository to add the label to.", + }, + "owner": { + Type: jsonschema.String, + Description: "The owner of the repository.", + }, + "label": { + Type: jsonschema.String, + Description: "The label to add to the issue.", + Enum: g.availableLabels, + }, + }, + Required: []string{"issue_number", "repository", "owner", "label"}, + } +} diff --git a/external/githubissueopener.go b/external/githubissueopener.go new file mode 100644 index 0000000..4e72600 --- /dev/null +++ b/external/githubissueopener.go @@ -0,0 +1,82 @@ +package external + +import ( + "context" + "fmt" + + "github.com/google/go-github/v61/github" + "github.com/mudler/local-agent-framework/action" + "github.com/sashabaranov/go-openai/jsonschema" +) + +type GithubIssuesOpener struct { + token string + context context.Context + client *github.Client +} + +func NewGithubIssueOpener(ctx context.Context, config map[string]string) *GithubIssuesOpener { + client := github.NewClient(nil).WithAuthToken(config["token"]) + + return &GithubIssuesOpener{ + client: client, + token: config["token"], + context: ctx, + } +} + +func (g *GithubIssuesOpener) Run(params action.ActionParams) (string, error) { + result := struct { + Title string `json:"title"` + Body string `json:"body"` + Repository string `json:"repository"` + Owner string `json:"owner"` + }{} + err := params.Unmarshal(&result) + if err != nil { + fmt.Printf("error: %v", err) + + return "", err + } + + issue := &github.IssueRequest{ + Title: &result.Title, + Body: &result.Body, + } + + resultString := "" + createdIssue, _, err := g.client.Issues.Create(g.context, result.Owner, result.Repository, issue) + if err != nil { + resultString = fmt.Sprintf("Error creating issue: %v", err) + } else { + resultString = fmt.Sprintf("Created issue %d in repository %s/%s", createdIssue.GetNumber(), result.Owner, result.Repository) + } + + return resultString, err +} + +func (g *GithubIssuesOpener) Definition() action.ActionDefinition { + return action.ActionDefinition{ + Name: "create_github_issue", + Description: "Create a new issue on a GitHub repository.", + Properties: map[string]jsonschema.Definition{ + "body": { + Type: jsonschema.String, + Description: "The number of the issue to add the label to.", + }, + "title": { + Type: jsonschema.String, + Description: "The title of the issue.", + }, + "owner": { + Type: jsonschema.String, + Description: "The owner of the repository.", + }, + "repository": { + Type: jsonschema.String, + Description: "The repository to create the issue in.", + }, + }, + Required: []string{"title", "body", "owner", "repository"}, + } +} From 3295942e596b84f88bbc6063fa6d491b937426d1 Mon Sep 17 00:00:00 2001 From: mudler Date: Thu, 11 Apr 2024 17:05:41 +0200 Subject: [PATCH 088/399] Add issue closer --- agent/agent.go | 34 ++++++---- example/webui/agentpool.go | 11 ++-- example/webui/connector/githubissue.go | 23 +++++-- external/githubissuecloser.go | 90 ++++++++++++++++++++++++++ external/githubissuelabeler.go | 2 +- external/githubissueopener.go | 10 +-- 6 files changed, 143 insertions(+), 27 deletions(-) create mode 100644 external/githubissuecloser.go diff --git a/agent/agent.go b/agent/agent.go index cd46c90..072ee60 100644 --- a/agent/agent.go +++ b/agent/agent.go @@ -245,20 +245,28 @@ func (a *Agent) consumeJob(job *Job, role string) { // return } - formatResults := "" - for _, r := range results { - formatResults += fmt.Sprintf("- %s \n", r) + if len(results) != 0 { + + formatResults := "" + for _, r := range results { + formatResults += fmt.Sprintf("- %s \n", r) + } + if a.options.debugMode { + fmt.Println("Found similar strings in KB:") + fmt.Println(formatResults) + } + // a.currentConversation = append(a.currentConversation, + // openai.ChatCompletionMessage{ + // Role: "system", + // Content: fmt.Sprintf("Given the user input you have the following in memory:\n%s", formatResults), + // }, + // ) + a.currentConversation = append([]openai.ChatCompletionMessage{ + { + Role: "system", + Content: fmt.Sprintf("Given the user input you have the following in memory:\n%s", formatResults), + }}, a.currentConversation...) } - if a.options.debugMode { - fmt.Println("Found similar strings in KB:") - fmt.Println(formatResults) - } - a.currentConversation = append(a.currentConversation, - openai.ChatCompletionMessage{ - Role: "system", - Content: fmt.Sprintf("Given the user input you have the following in memory:\n%s", formatResults), - }, - ) } } diff --git a/example/webui/agentpool.go b/example/webui/agentpool.go index 0d4ac3f..287d4d0 100644 --- a/example/webui/agentpool.go +++ b/example/webui/agentpool.go @@ -136,9 +136,10 @@ const ( ActionSearch = "search" ActionGithubIssueLabeler = "github-issue-labeler" ActionGithubIssueOpener = "github-issue-opener" + ActionGithubIssueCloser = "github-issue-closer" ) -var AvailableActions = []string{ActionSearch, ActionGithubIssueLabeler, ActionGithubIssueOpener} +var AvailableActions = []string{ActionSearch, ActionGithubIssueLabeler, ActionGithubIssueOpener, ActionGithubIssueCloser} func (a *AgentConfig) availableActions(ctx context.Context) []Action { actions := []Action{} @@ -148,7 +149,7 @@ func (a *AgentConfig) availableActions(ctx context.Context) []Action { var config map[string]string if err := json.Unmarshal([]byte(action.Config), &config); err != nil { - fmt.Println("Error unmarshalling connector config", err) + fmt.Println("Error unmarshalling action config", err) continue } fmt.Println("Config", config) @@ -160,6 +161,8 @@ func (a *AgentConfig) availableActions(ctx context.Context) []Action { actions = append(actions, external.NewGithubIssueLabeler(ctx, config)) case ActionGithubIssueOpener: actions = append(actions, external.NewGithubIssueOpener(ctx, config)) + case ActionGithubIssueCloser: + actions = append(actions, external.NewGithubIssueCloser(ctx, config)) } } @@ -206,7 +209,7 @@ func (a *AgentConfig) availableConnectors() []Connector { case ConnectorDiscord: connectors = append(connectors, connector.NewDiscord(config)) case ConnectorGithubIssues: - connectors = append(connectors, connector.NewGithub(config)) + connectors = append(connectors, connector.NewGithubIssueWatcher(config)) } } return connectors @@ -407,7 +410,7 @@ func (a *AgentPool) Remove(name string) error { } func (a *AgentPool) Save() error { - data, err := json.Marshal(a.pool) + data, err := json.MarshalIndent(a.pool, "", " ") if err != nil { return err } diff --git a/example/webui/connector/githubissue.go b/example/webui/connector/githubissue.go index d38bf79..fdbda46 100644 --- a/example/webui/connector/githubissue.go +++ b/example/webui/connector/githubissue.go @@ -19,7 +19,7 @@ type GithubIssues struct { client *github.Client } -func NewGithub(config map[string]string) *GithubIssues { +func NewGithubIssueWatcher(config map[string]string) *GithubIssues { client := github.NewClient(nil).WithAuthToken(config["token"]) interval, err := time.ParseDuration(config["pollInterval"]) if err != nil { @@ -57,7 +57,7 @@ func (g *GithubIssues) Start(a *agent.Agent) { for { select { case <-ticker.C: - fmt.Println("Fire in da hole!") + fmt.Println("Looking into github issues...") g.issuesService() case <-a.Context().Done(): return @@ -86,12 +86,27 @@ func (g *GithubIssues) issuesService() { if issue.IsPullRequest() { continue } - userName := *issue.User.Name + labels := []string{} + for _, l := range issue.Labels { + labels = append(labels, l.GetName()) + } + + // Get user that opened the issue + userNameLogin := issue.GetUser().Login + userName := "" + if userNameLogin != nil { + userName = *userNameLogin + } + + if userName == user.GetLogin() { + fmt.Println("Ignoring issue opened by the bot") + continue + } messages := []openai.ChatCompletionMessage{ { Role: "system", Content: fmt.Sprintf( - `This is a conversation with an user ("%s") that opened a Github issue with title "%s" in the repository "%s" owned by "%s" .`, userName, issue.GetTitle(), g.repository, g.owner), + `This is a conversation with an user ("%s") that opened a Github issue with title "%s" in the repository "%s" owned by "%s". The issue is the issue number %d. Current labels: %+v`, userName, issue.GetTitle(), g.repository, g.owner, issue.GetNumber(), labels), }, { Role: "user", diff --git a/external/githubissuecloser.go b/external/githubissuecloser.go new file mode 100644 index 0000000..65b7597 --- /dev/null +++ b/external/githubissuecloser.go @@ -0,0 +1,90 @@ +package external + +import ( + "context" + "fmt" + + "github.com/google/go-github/v61/github" + "github.com/mudler/local-agent-framework/action" + "github.com/sashabaranov/go-openai/jsonschema" +) + +type GithubIssuesCloser struct { + token string + context context.Context + client *github.Client +} + +func NewGithubIssueCloser(ctx context.Context, config map[string]string) *GithubIssuesCloser { + client := github.NewClient(nil).WithAuthToken(config["token"]) + return &GithubIssuesCloser{ + client: client, + token: config["token"], + context: ctx, + } +} + +func (g *GithubIssuesCloser) Run(params action.ActionParams) (string, error) { + result := struct { + Repository string `json:"repository"` + Owner string `json:"owner"` + IssueNumber int `json:"issue_number"` + }{} + err := params.Unmarshal(&result) + if err != nil { + fmt.Printf("error: %v", err) + + return "", err + } + + // _, _, err = g.client.Issues.CreateComment( + // g.context, + // result.Owner, result.Repository, + // result.IssueNumber, &github.IssueComment{ + // Body: &result.Text, + // }, + // ) + // if err != nil { + // fmt.Printf("error: %v", err) + + // return "", err + // } + + _, _, err = g.client.Issues.Edit(g.context, result.Owner, result.Repository, result.IssueNumber, &github.IssueRequest{ + State: github.String("closed"), + }) + + if err != nil { + fmt.Printf("error: %v", err) + + return "", err + } + + resultString := fmt.Sprintf("Closed issue %d in repository %s/%s", result.IssueNumber, result.Owner, result.Repository) + if err != nil { + resultString = fmt.Sprintf("Error closing issue %d in repository %s/%s: %v", result.IssueNumber, result.Owner, result.Repository, err) + } + return resultString, err +} + +func (g *GithubIssuesCloser) Definition() action.ActionDefinition { + return action.ActionDefinition{ + Name: "close_github_issue", + Description: "Closes a Github issue.", + Properties: map[string]jsonschema.Definition{ + "repository": { + Type: jsonschema.String, + Description: "The repository to add the label to.", + }, + "owner": { + Type: jsonschema.String, + Description: "The owner of the repository.", + }, + "issue_number": { + Type: jsonschema.Number, + Description: "The issue number to close", + }, + }, + Required: []string{"issue_number", "repository", "owner"}, + } +} diff --git a/external/githubissuelabeler.go b/external/githubissuelabeler.go index 0c8ef52..f1ae846 100644 --- a/external/githubissuelabeler.go +++ b/external/githubissuelabeler.go @@ -66,7 +66,7 @@ func (g *GithubIssuesLabeler) Run(params action.ActionParams) (string, error) { func (g *GithubIssuesLabeler) Definition() action.ActionDefinition { return action.ActionDefinition{ Name: "add_label_to_github_issue", - Description: "Add a label to a Github issue.", + Description: "Add a label to a Github issue. You might want to assign labels to issues to categorize them.", Properties: map[string]jsonschema.Definition{ "issue_number": { Type: jsonschema.Number, diff --git a/external/githubissueopener.go b/external/githubissueopener.go index 4e72600..ea9d369 100644 --- a/external/githubissueopener.go +++ b/external/githubissueopener.go @@ -28,7 +28,7 @@ func NewGithubIssueOpener(ctx context.Context, config map[string]string) *Github func (g *GithubIssuesOpener) Run(params action.ActionParams) (string, error) { result := struct { Title string `json:"title"` - Body string `json:"body"` + Body string `json:"text"` Repository string `json:"repository"` Owner string `json:"owner"` }{} @@ -60,9 +60,9 @@ func (g *GithubIssuesOpener) Definition() action.ActionDefinition { Name: "create_github_issue", Description: "Create a new issue on a GitHub repository.", Properties: map[string]jsonschema.Definition{ - "body": { + "text": { Type: jsonschema.String, - Description: "The number of the issue to add the label to.", + Description: "The text of the new issue", }, "title": { Type: jsonschema.String, @@ -74,9 +74,9 @@ func (g *GithubIssuesOpener) Definition() action.ActionDefinition { }, "repository": { Type: jsonschema.String, - Description: "The repository to create the issue in.", + Description: "The repository where to create the issue.", }, }, - Required: []string{"title", "body", "owner", "repository"}, + Required: []string{"title", "text", "owner", "repository"}, } } From 3170ee0ba21d48f3c7e453f2c849f42ad815a990 Mon Sep 17 00:00:00 2001 From: mudler Date: Thu, 11 Apr 2024 19:32:36 +0200 Subject: [PATCH 089/399] Add search action --- example/webui/agentpool.go | 19 +++++--- external/githubissuecloser.go | 4 +- external/githubissuesearch.go | 81 +++++++++++++++++++++++++++++++++++ 3 files changed, 97 insertions(+), 7 deletions(-) create mode 100644 external/githubissuesearch.go diff --git a/example/webui/agentpool.go b/example/webui/agentpool.go index 287d4d0..f5d42f0 100644 --- a/example/webui/agentpool.go +++ b/example/webui/agentpool.go @@ -133,13 +133,20 @@ const ( ConnectorGithubIssues = "github-issues" // Actions - ActionSearch = "search" - ActionGithubIssueLabeler = "github-issue-labeler" - ActionGithubIssueOpener = "github-issue-opener" - ActionGithubIssueCloser = "github-issue-closer" + ActionSearch = "search" + ActionGithubIssueLabeler = "github-issue-labeler" + ActionGithubIssueOpener = "github-issue-opener" + ActionGithubIssueCloser = "github-issue-closer" + ActionGithubIssueSearcher = "github-issue-searcher" ) -var AvailableActions = []string{ActionSearch, ActionGithubIssueLabeler, ActionGithubIssueOpener, ActionGithubIssueCloser} +var AvailableActions = []string{ + ActionSearch, + ActionGithubIssueLabeler, + ActionGithubIssueOpener, + ActionGithubIssueCloser, + ActionGithubIssueSearcher, +} func (a *AgentConfig) availableActions(ctx context.Context) []Action { actions := []Action{} @@ -163,6 +170,8 @@ func (a *AgentConfig) availableActions(ctx context.Context) []Action { actions = append(actions, external.NewGithubIssueOpener(ctx, config)) case ActionGithubIssueCloser: actions = append(actions, external.NewGithubIssueCloser(ctx, config)) + case ActionGithubIssueSearcher: + actions = append(actions, external.NewGithubIssueSearch(ctx, config)) } } diff --git a/external/githubissuecloser.go b/external/githubissuecloser.go index 65b7597..77d89da 100644 --- a/external/githubissuecloser.go +++ b/external/githubissuecloser.go @@ -41,7 +41,7 @@ func (g *GithubIssuesCloser) Run(params action.ActionParams) (string, error) { // g.context, // result.Owner, result.Repository, // result.IssueNumber, &github.IssueComment{ - // Body: &result.Text, + // //Body: &result.Text, // }, // ) // if err != nil { @@ -74,7 +74,7 @@ func (g *GithubIssuesCloser) Definition() action.ActionDefinition { Properties: map[string]jsonschema.Definition{ "repository": { Type: jsonschema.String, - Description: "The repository to add the label to.", + Description: "The repository to close the issue in.", }, "owner": { Type: jsonschema.String, diff --git a/external/githubissuesearch.go b/external/githubissuesearch.go new file mode 100644 index 0000000..7cbab4f --- /dev/null +++ b/external/githubissuesearch.go @@ -0,0 +1,81 @@ +package external + +import ( + "context" + "fmt" + + "github.com/google/go-github/v61/github" + "github.com/mudler/local-agent-framework/action" + "github.com/sashabaranov/go-openai/jsonschema" +) + +type GithubIssueSearch struct { + token string + context context.Context + client *github.Client +} + +func NewGithubIssueSearch(ctx context.Context, config map[string]string) *GithubIssueSearch { + client := github.NewClient(nil).WithAuthToken(config["token"]) + + return &GithubIssueSearch{ + client: client, + token: config["token"], + context: ctx, + } +} + +func (g *GithubIssueSearch) Run(params action.ActionParams) (string, error) { + result := struct { + Query string `json:"query"` + Repository string `json:"repository"` + Owner string `json:"owner"` + }{} + err := params.Unmarshal(&result) + if err != nil { + fmt.Printf("error: %v", err) + + return "", err + } + + query := fmt.Sprintf("%s in:%s user:%s", result.Query, result.Repository, result.Owner) + resultString := "" + issues, _, err := g.client.Search.Issues(g.context, query, &github.SearchOptions{ + ListOptions: github.ListOptions{PerPage: 5}, + Order: "desc", + //Sort: "created", + }) + if err != nil { + resultString = fmt.Sprintf("Error listing issues: %v", err) + } + for _, i := range issues.Issues { + fmt.Println("Issue found:", i.GetTitle()) + resultString += fmt.Sprintf("Issue found: %s\n", i.GetTitle()) + resultString += fmt.Sprintf("URL: %s\n", i.GetHTMLURL()) + // resultString += fmt.Sprintf("Body: %s\n", i.GetBody()) + } + + return resultString, err +} + +func (g *GithubIssueSearch) Definition() action.ActionDefinition { + return action.ActionDefinition{ + Name: "search_github_issue", + Description: "Search between github issues", + Properties: map[string]jsonschema.Definition{ + "query": { + Type: jsonschema.String, + Description: "The text to search for", + }, + "repository": { + Type: jsonschema.String, + Description: "The repository to search in", + }, + "owner": { + Type: jsonschema.String, + Description: "The owner of the repository", + }, + }, + Required: []string{"text", "repository", "owner"}, + } +} From 6528da804fa4b6e408bd33719448fbc9200da38c Mon Sep 17 00:00:00 2001 From: mudler Date: Thu, 11 Apr 2024 20:00:38 +0200 Subject: [PATCH 090/399] Add dockerfile --- Dockerfile.webui | 28 ++++++++++++++++++++++++++++ Makefile | 6 +++++- 2 files changed, 33 insertions(+), 1 deletion(-) create mode 100644 Dockerfile.webui diff --git a/Dockerfile.webui b/Dockerfile.webui new file mode 100644 index 0000000..03a034b --- /dev/null +++ b/Dockerfile.webui @@ -0,0 +1,28 @@ +# Define argument for linker flags +ARG LDFLAGS=-s -w + +# Use a temporary build image based on Golang 1.20-alpine +FROM golang:1.22-alpine as builder + +# Set environment variables: linker flags and disable CGO +ENV LDFLAGS=$LDFLAGS CGO_ENABLED=0 + +# Install git and build the edgevpn binary with the provided linker flags +# --no-cache flag ensures the package cache isn't stored in the layer, reducing image size +RUN apk add --no-cache git + +# Add the current directory contents to the work directory in the container +COPY . /work + +# Set the current work directory inside the container +WORKDIR /work + +RUN go build -ldflags="$LDFLAGS" -o webui ./example/webui + +FROM scratch + +# Copy the webui binary from the builder stage to the final image +COPY --from=builder /work/webui /webui + +# Define the command that will be run when the container is started +ENTRYPOINT ["/webui"] \ No newline at end of file diff --git a/Makefile b/Makefile index a30ebba..f0f509f 100644 --- a/Makefile +++ b/Makefile @@ -1,7 +1,11 @@ GOCMD=go +IMAGE_NAME=webui tests: $(GOCMD) run github.com/onsi/ginkgo/v2/ginkgo --fail-fast -v -r ./... webui: - cd example/webui && $(GOCMD) run ./ \ No newline at end of file + cd example/webui && $(GOCMD) run ./ + +webui-image: + docker build -t $(IMAGE_NAME) -f Dockerfile.webui . \ No newline at end of file From 84a808fb7e447a5d88143db719e451d6634ad7d4 Mon Sep 17 00:00:00 2001 From: mudler Date: Thu, 11 Apr 2024 23:01:40 +0200 Subject: [PATCH 091/399] fixups --- Dockerfile.webui | 1 + Makefile | 4 ++-- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/Dockerfile.webui b/Dockerfile.webui index 03a034b..e17bb6e 100644 --- a/Dockerfile.webui +++ b/Dockerfile.webui @@ -23,6 +23,7 @@ FROM scratch # Copy the webui binary from the builder stage to the final image COPY --from=builder /work/webui /webui +COPY --from=builder /etc/ssl/ /etc/ssl/ # Define the command that will be run when the container is started ENTRYPOINT ["/webui"] \ No newline at end of file diff --git a/Makefile b/Makefile index f0f509f..aa4dac1 100644 --- a/Makefile +++ b/Makefile @@ -1,5 +1,5 @@ -GOCMD=go -IMAGE_NAME=webui +GOCMD?=go +IMAGE_NAME?=webui tests: $(GOCMD) run github.com/onsi/ginkgo/v2/ginkgo --fail-fast -v -r ./... From fac211d8ee3e6b145f094e20ddb0281256247dfe Mon Sep 17 00:00:00 2001 From: mudler Date: Thu, 11 Apr 2024 23:04:29 +0200 Subject: [PATCH 092/399] parallel calls for telegram --- example/webui/connector/telegram.go | 22 ++++++++++++---------- 1 file changed, 12 insertions(+), 10 deletions(-) diff --git a/example/webui/connector/telegram.go b/example/webui/connector/telegram.go index df7c349..151b9ca 100644 --- a/example/webui/connector/telegram.go +++ b/example/webui/connector/telegram.go @@ -43,16 +43,18 @@ func (t *Telegram) Start(a *agent.Agent) { opts := []bot.Option{ bot.WithDefaultHandler(func(ctx context.Context, b *bot.Bot, update *models.Update) { - res := a.Ask( - agent.WithText( - update.Message.Text, - ), - ) - b.SendMessage(ctx, &bot.SendMessageParams{ - ChatID: update.Message.Chat.ID, - Text: res.Response, - }) - t.lastChatID = update.Message.Chat.ID + go func() { + res := a.Ask( + agent.WithText( + update.Message.Text, + ), + ) + b.SendMessage(ctx, &bot.SendMessageParams{ + ChatID: update.Message.Chat.ID, + Text: res.Response, + }) + t.lastChatID = update.Message.Chat.ID + }() }), } From 26baaecbcdf79adb348b67b064e801378b31034a Mon Sep 17 00:00:00 2001 From: Ettore Di Giacinto Date: Thu, 11 Apr 2024 23:21:47 +0200 Subject: [PATCH 093/399] Correctly handle chat render' --- example/webui/routes.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/example/webui/routes.go b/example/webui/routes.go index f3765a1..a84f8c9 100644 --- a/example/webui/routes.go +++ b/example/webui/routes.go @@ -58,7 +58,7 @@ func RegisterRoutes(webapp *fiber.App, pool *AgentPool, db *InMemoryDatabase, ap webapp.Post("/knowledgebase/upload", app.KnowledgeBaseFile(db)) webapp.Get("/talk/:name", func(c *fiber.Ctx) error { - return c.Render("chat.html", fiber.Map{ + return c.Render("views/chat", fiber.Map{ // "Character": agent.Character, "Name": c.Params("name"), }) From adf649be999cdeb9634a78d1678bfee4b9e0efc0 Mon Sep 17 00:00:00 2001 From: Ettore Di Giacinto Date: Thu, 11 Apr 2024 23:45:57 +0200 Subject: [PATCH 094/399] Uniform webui --- example/webui/views/agents.html | 108 ++++++++++++----------- example/webui/views/chat.html | 4 +- example/webui/views/create.html | 3 +- example/webui/views/index.html | 9 +- example/webui/views/knowledgebase.html | 8 +- example/webui/views/partials/header.html | 1 + example/webui/views/partials/menu.html | 20 +++++ 7 files changed, 92 insertions(+), 61 deletions(-) create mode 100644 example/webui/views/partials/menu.html diff --git a/example/webui/views/agents.html b/example/webui/views/agents.html index c825a5c..aa4014d 100644 --- a/example/webui/views/agents.html +++ b/example/webui/views/agents.html @@ -6,58 +6,62 @@ Agent List {{template "views/partials/header"}} - -
-
-

Smart Agent List

-
-
-
-
-
-
{{.}} Online - Talk + Talk - Delete + Delete
- - - - - - - - - - - {{ range .Agents }} - - - - - - - {{ end }} - - -
- Name - - Status - - Talk - - Delete -
{{.}}Online - Talk - - Delete -
+ + {{template "views/partials/menu"}} +
+
+

Smart Agent List

+
+
+
+
+
+ + + + + + + + + + + + {{ range .Agents }} + + + + + + + {{ end }} + + +
+ Name + + Status + + Talk + + Delete +
{{.}}{{.}} + + Talk + + + + Delete + +
+
-
+
+
-
- -
- + diff --git a/example/webui/views/chat.html b/example/webui/views/chat.html index c8ab894..aa391c5 100644 --- a/example/webui/views/chat.html +++ b/example/webui/views/chat.html @@ -40,8 +40,10 @@ } - + + {{template "views/partials/menu"}}
+

Talk to '{{.Name}}'

diff --git a/example/webui/views/create.html b/example/webui/views/create.html index 67df528..1377cda 100644 --- a/example/webui/views/create.html +++ b/example/webui/views/create.html @@ -7,7 +7,8 @@ - + + {{template "views/partials/menu"}}

Create New Agent

diff --git a/example/webui/views/index.html b/example/webui/views/index.html index 0a75e81..d3feffe 100644 --- a/example/webui/views/index.html +++ b/example/webui/views/index.html @@ -4,11 +4,12 @@ Smart Assistant Dashboard {{template "views/partials/header"}} - + + {{template "views/partials/menu"}}
-
-

Smart Assistant Dashboard

-
+
+

Smart Agent Dashboard

+
diff --git a/example/webui/views/knowledgebase.html b/example/webui/views/knowledgebase.html index 67a6109..7019825 100644 --- a/example/webui/views/knowledgebase.html +++ b/example/webui/views/knowledgebase.html @@ -7,10 +7,12 @@ - + + {{template "views/partials/menu"}} +
+

Knowledgebase (items: {{.KnowledgebaseItemsCount}})

+
-

Knowledgebase (items: {{.KnowledgebaseItemsCount}})

-
Add sites to KB
diff --git a/example/webui/views/partials/header.html b/example/webui/views/partials/header.html index 31fde73..1e7f6d5 100644 --- a/example/webui/views/partials/header.html +++ b/example/webui/views/partials/header.html @@ -2,6 +2,7 @@ + {{template "views/partials/menu"}} @@ -12,6 +19,11 @@

Smart Agent List

+
@@ -36,9 +48,9 @@ {{ range .Agents }} - + {{.}} - {{.}} +
Talk @@ -58,9 +70,7 @@
diff --git a/example/webui/views/chat.html b/example/webui/views/chat.html index aa391c5..92a86f0 100644 --- a/example/webui/views/chat.html +++ b/example/webui/views/chat.html @@ -3,13 +3,9 @@ Smart Agent Interface {{template "views/partials/header"}} - - - - {{template "views/partials/menu"}} -
-
-

Smart Agent Dashboard

-
- diff --git a/example/webui/views/knowledgebase.html b/example/webui/views/knowledgebase.html index 7019825..1e896c5 100644 --- a/example/webui/views/knowledgebase.html +++ b/example/webui/views/knowledgebase.html @@ -6,55 +6,86 @@ + - + {{template "views/partials/menu"}}

Knowledgebase (items: {{.KnowledgebaseItemsCount}})

-
- - Add sites to KB -
- - -
-
- - +
+ +
+ +

Add sites to KB

+ + + + + +
- -
- + +
+
+

Upload File

+ + + + + + +
- -
-
- - + +
+
-
- - -
-
- -
-
- -
- +
-
diff --git a/example/webui/views/partials/menu.html b/example/webui/views/partials/menu.html index 7019768..5a964f1 100644 --- a/example/webui/views/partials/menu.html +++ b/example/webui/views/partials/menu.html @@ -2,9 +2,14 @@
+
+ + + Logo + - Home + LocalAgent Agent list diff --git a/llm/rag/chromem.go b/llm/rag/chromem.go index 5f33d2d..617e769 100644 --- a/llm/rag/chromem.go +++ b/llm/rag/chromem.go @@ -13,6 +13,8 @@ type ChromemDB struct { collectionName string collection *chromem.Collection index int + client *openai.Client + db *chromem.DB } func NewChromemDB(collection, path string, openaiClient *openai.Client) (*ChromemDB, error) { @@ -22,9 +24,39 @@ func NewChromemDB(collection, path string, openaiClient *openai.Client) (*Chrome // } db := chromem.NewDB() - embeddingFunc := chromem.EmbeddingFunc( + chromem := &ChromemDB{ + collectionName: collection, + index: 1, + db: db, + client: openaiClient, + } + + c, err := db.GetOrCreateCollection(collection, nil, chromem.embedding()) + if err != nil { + return nil, err + } + chromem.collection = c + + return chromem, nil +} + +func (c *ChromemDB) Reset() error { + if err := c.db.DeleteCollection(c.collectionName); err != nil { + return err + } + collection, err := c.db.GetOrCreateCollection(c.collectionName, nil, c.embedding()) + if err != nil { + return err + } + c.collection = collection + + return nil +} + +func (c *ChromemDB) embedding() chromem.EmbeddingFunc { + return chromem.EmbeddingFunc( func(ctx context.Context, text string) ([]float32, error) { - resp, err := openaiClient.CreateEmbeddings(ctx, + resp, err := c.client.CreateEmbeddings(ctx, openai.EmbeddingRequestStrings{ Input: []string{text}, Model: openai.AdaEmbeddingV2, @@ -43,17 +75,6 @@ func NewChromemDB(collection, path string, openaiClient *openai.Client) (*Chrome return embedding, nil }, ) - - c, err := db.GetOrCreateCollection(collection, nil, embeddingFunc) - if err != nil { - return nil, err - } - - return &ChromemDB{ - collectionName: collection, - collection: c, - index: 1, - }, nil } func (c *ChromemDB) Store(s string) error { diff --git a/llm/rag/localai.go b/llm/rag/localai.go index 7e8bf3a..1e1ecb6 100644 --- a/llm/rag/localai.go +++ b/llm/rag/localai.go @@ -19,6 +19,10 @@ func NewLocalAIRAGDB(storeClient *StoreClient, openaiClient *openai.Client) *Loc } } +func (db *LocalAIRAGDB) Reset() error { + return fmt.Errorf("not implemented") +} + func (db *LocalAIRAGDB) Store(s string) error { resp, err := db.openaiClient.CreateEmbeddings(context.TODO(), openai.EmbeddingRequestStrings{ From 74b158e9f1e1e10688c40d185078c9dd83940692 Mon Sep 17 00:00:00 2001 From: Ettore Di Giacinto Date: Sat, 13 Apr 2024 00:16:28 +0200 Subject: [PATCH 101/399] Add status to show the reasoning log --- example/webui/agentpool.go | 67 +++++++++++++++++++++++++-------- example/webui/routes.go | 26 +++++++++++++ example/webui/views/agents.html | 8 +++- example/webui/views/status.html | 61 ++++++++++++++++++++++++++++++ 4 files changed, 144 insertions(+), 18 deletions(-) create mode 100644 example/webui/views/status.html diff --git a/example/webui/agentpool.go b/example/webui/agentpool.go index f5d42f0..a3cf60d 100644 --- a/example/webui/agentpool.go +++ b/example/webui/agentpool.go @@ -6,6 +6,7 @@ import ( "fmt" "os" "path/filepath" + "sync" "time" "github.com/mudler/local-agent-framework/example/webui/connector" @@ -44,15 +45,34 @@ type AgentConfig struct { } type AgentPool struct { + sync.Mutex file string pooldir string pool AgentPoolData agents map[string]*Agent managers map[string]Manager + agentStatus map[string]*Status apiURL, model string ragDB RAGDB } +type Status struct { + results []ActionState +} + +func (s *Status) addResult(result ActionState) { + // If we have more than 10 results, remove the oldest one + if len(s.results) > 10 { + s.results = s.results[1:] + } + + s.results = append(s.results, result) +} + +func (s *Status) Results() []ActionState { + return s.results +} + type AgentPoolData map[string]AgentConfig func loadPoolFromFile(path string) (*AgentPoolData, error) { @@ -75,14 +95,15 @@ func NewAgentPool(model, apiURL, directory string, RagDB RAGDB) (*AgentPool, err if _, err := os.Stat(poolfile); err != nil { // file does not exist, create a new pool return &AgentPool{ - file: poolfile, - pooldir: directory, - apiURL: apiURL, - model: model, - ragDB: RagDB, - agents: make(map[string]*Agent), - pool: make(map[string]AgentConfig), - managers: make(map[string]Manager), + file: poolfile, + pooldir: directory, + apiURL: apiURL, + model: model, + ragDB: RagDB, + agents: make(map[string]*Agent), + pool: make(map[string]AgentConfig), + agentStatus: make(map[string]*Status), + managers: make(map[string]Manager), }, nil } @@ -91,14 +112,15 @@ func NewAgentPool(model, apiURL, directory string, RagDB RAGDB) (*AgentPool, err return nil, err } return &AgentPool{ - file: poolfile, - apiURL: apiURL, - pooldir: directory, - ragDB: RagDB, - model: model, - agents: make(map[string]*Agent), - managers: make(map[string]Manager), - pool: *poolData, + file: poolfile, + apiURL: apiURL, + pooldir: directory, + ragDB: RagDB, + model: model, + agents: make(map[string]*Agent), + managers: make(map[string]Manager), + agentStatus: map[string]*Status{}, + pool: *poolData, }, nil } @@ -224,6 +246,12 @@ func (a *AgentConfig) availableConnectors() []Connector { return connectors } +func (a *AgentPool) GetStatusHistory(name string) *Status { + a.Lock() + defer a.Unlock() + return a.agentStatus[name] +} + func (a *AgentPool) startAgentWithConfig(name string, config *AgentConfig) error { manager := NewManager(5) ctx := context.Background() @@ -275,6 +303,13 @@ func (a *AgentPool) startAgentWithConfig(name string, config *AgentConfig) error }), WithSystemPrompt(config.SystemPrompt), WithAgentResultCallback(func(state ActionState) { + a.Lock() + if _, ok := a.agentStatus[name]; !ok { + a.agentStatus[name] = &Status{} + } + + a.agentStatus[name].addResult(state) + a.Unlock() fmt.Println("Reasoning", state.Reasoning) text := fmt.Sprintf(`Reasoning: %s diff --git a/example/webui/routes.go b/example/webui/routes.go index c57684b..22cb22e 100644 --- a/example/webui/routes.go +++ b/example/webui/routes.go @@ -6,6 +6,7 @@ import ( fiber "github.com/gofiber/fiber/v2" "github.com/gofiber/fiber/v2/middleware/filesystem" + "github.com/mudler/local-agent-framework/agent" ) func RegisterRoutes(webapp *fiber.App, pool *AgentPool, db *InMemoryDatabase, app *App) { @@ -54,6 +55,19 @@ func RegisterRoutes(webapp *fiber.App, pool *AgentPool, db *InMemoryDatabase, ap return nil }) + webapp.Get("/status/:name", func(c *fiber.Ctx) error { + history := pool.GetStatusHistory(c.Params("name")) + if history == nil { + history = &Status{results: []agent.ActionState{}} + } + // reverse history + + return c.Render("views/status", fiber.Map{ + "Name": c.Params("name"), + "History": Reverse(history.Results()), + }) + }) + webapp.Get("/notify/:name", app.Notify(pool)) webapp.Post("/chat/:name", app.Chat(pool)) webapp.Post("/create", app.Create(pool)) @@ -81,3 +95,15 @@ func randStringRunes(n int) string { } return string(b) } + +func Reverse[T any](original []T) (reversed []T) { + reversed = make([]T, len(original)) + copy(reversed, original) + + for i := len(reversed)/2 - 1; i >= 0; i-- { + tmp := len(reversed) - 1 - i + reversed[i], reversed[tmp] = reversed[tmp], reversed[i] + } + + return +} diff --git a/example/webui/views/agents.html b/example/webui/views/agents.html index 067aeef..f2cdcb2 100644 --- a/example/webui/views/agents.html +++ b/example/webui/views/agents.html @@ -48,9 +48,13 @@ {{ range .Agents }} - + {{.}} -
+ +
+ Status + + Talk diff --git a/example/webui/views/status.html b/example/webui/views/status.html new file mode 100644 index 0000000..8339c3f --- /dev/null +++ b/example/webui/views/status.html @@ -0,0 +1,61 @@ + + + + Smart Agent status + {{template "views/partials/header"}} + + + + {{template "views/partials/menu"}} +
+ +
+

{{.Name}}

+
+ +
+
+ {{ range .History }} + +
+

Agent:

+
+ Result: {{.Result}} Action: {{.Action}} Params: {{.Params}} Reasoning: {{.Reasoning}} +
+
+ {{end}} +
+
+ + From 54de6221d1249eab2488178f0293eeda0ba47d20 Mon Sep 17 00:00:00 2001 From: Ettore Di Giacinto Date: Sat, 13 Apr 2024 00:38:58 +0200 Subject: [PATCH 102/399] add start/pause (to improve further) --- agent/agent.go | 31 +++++++++++++++++++++++++++++++ example/webui/app.go | 21 +++++++++++++++++++++ example/webui/routes.go | 7 +++++++ example/webui/views/agents.html | 18 ++++++++++++++++++ 4 files changed, 77 insertions(+) diff --git a/agent/agent.go b/agent/agent.go index a2d4321..106f5e3 100644 --- a/agent/agent.go +++ b/agent/agent.go @@ -32,6 +32,7 @@ type Agent struct { nextAction Action currentConversation Messages selfEvaluationInProgress bool + pause bool newConversations chan openai.ChatCompletionMessage } @@ -137,6 +138,24 @@ func (a *Agent) Stop() { a.context.Cancel() } +func (a *Agent) Pause() { + a.Lock() + defer a.Unlock() + a.pause = true +} + +func (a *Agent) Resume() { + a.Lock() + defer a.Unlock() + a.pause = false +} + +func (a *Agent) Paused() bool { + a.Lock() + defer a.Unlock() + return a.pause +} + func (a *Agent) runAction(chosenAction Action, decisionResult *decisionResult) (result string, err error) { for _, action := range a.systemInternalActions() { if action.Definition().Name == chosenAction.Definition().Name { @@ -174,6 +193,18 @@ func (a *Agent) runAction(chosenAction Action, decisionResult *decisionResult) ( } func (a *Agent) consumeJob(job *Job, role string) { + a.Lock() + paused := a.pause + a.Unlock() + + if paused { + if a.options.debugMode { + fmt.Println("Agent is paused, skipping job") + } + job.Result.Finish(fmt.Errorf("agent is paused")) + return + } + // We are self evaluating if we consume the job as a system role selfEvaluation := role == SystemRole diff --git a/example/webui/app.go b/example/webui/app.go index 23e036b..63ece10 100644 --- a/example/webui/app.go +++ b/example/webui/app.go @@ -137,6 +137,27 @@ func (a *App) Delete(pool *AgentPool) func(c *fiber.Ctx) error { } } +func (a *App) Pause(pool *AgentPool) func(c *fiber.Ctx) error { + return func(c *fiber.Ctx) error { + fmt.Println("Pausing agent", c.Params("name")) + agent := pool.GetAgent(c.Params("name")) + if agent != nil { + agent.Pause() + } + return c.Redirect("/agents") + } +} + +func (a *App) Start(pool *AgentPool) func(c *fiber.Ctx) error { + return func(c *fiber.Ctx) error { + agent := pool.GetAgent(c.Params("name")) + if agent != nil { + agent.Resume() + } + return c.Redirect("/agents") + } +} + func (a *App) Create(pool *AgentPool) func(c *fiber.Ctx) error { return func(c *fiber.Ctx) error { config := AgentConfig{} diff --git a/example/webui/routes.go b/example/webui/routes.go index 22cb22e..a580d81 100644 --- a/example/webui/routes.go +++ b/example/webui/routes.go @@ -24,8 +24,13 @@ func RegisterRoutes(webapp *fiber.App, pool *AgentPool, db *InMemoryDatabase, ap }) webapp.Get("/agents", func(c *fiber.Ctx) error { + statuses := map[string]bool{} + for _, a := range pool.List() { + statuses[a] = !pool.GetAgent(a).Paused() + } return c.Render("views/agents", fiber.Map{ "Agents": pool.List(), + "Status": statuses, }) }) @@ -72,6 +77,8 @@ func RegisterRoutes(webapp *fiber.App, pool *AgentPool, db *InMemoryDatabase, ap webapp.Post("/chat/:name", app.Chat(pool)) webapp.Post("/create", app.Create(pool)) webapp.Get("/delete/:name", app.Delete(pool)) + webapp.Put("/pause/:name", app.Pause(pool)) + webapp.Put("/start/:name", app.Start(pool)) webapp.Post("/knowledgebase", app.KnowledgeBase(db)) webapp.Post("/knowledgebase/upload", app.KnowledgeBaseFile(db)) diff --git a/example/webui/views/agents.html b/example/webui/views/agents.html index f2cdcb2..35d2b1f 100644 --- a/example/webui/views/agents.html +++ b/example/webui/views/agents.html @@ -40,6 +40,12 @@ Talk + + Start + + + Stop + Delete @@ -47,10 +53,12 @@ + {{ $status := .Status }} {{ range .Agents }} {{.}} + Online: {{ index $status . }}
Status @@ -60,6 +68,16 @@ Talk + + + + + + Delete From 7c0f615952fa1561b3d4be344c53662011abe5a7 Mon Sep 17 00:00:00 2001 From: Ettore Di Giacinto Date: Sun, 14 Apr 2024 00:05:19 +0200 Subject: [PATCH 103/399] Add import/export --- example/webui/agentpool.go | 8 ++++ example/webui/app.go | 55 ++++++++++++++++++++++- example/webui/routes.go | 8 ++++ example/webui/views/agents.html | 20 +++++++-- example/webui/views/settings.html | 72 +++++++++++++++++++++++++++++++ 5 files changed, 158 insertions(+), 5 deletions(-) create mode 100644 example/webui/views/settings.html diff --git a/example/webui/agentpool.go b/example/webui/agentpool.go index a3cf60d..36d3e79 100644 --- a/example/webui/agentpool.go +++ b/example/webui/agentpool.go @@ -465,6 +465,14 @@ func (a *AgentPool) GetAgent(name string) *Agent { return a.agents[name] } +func (a *AgentPool) GetConfig(name string) *AgentConfig { + agent, exists := a.pool[name] + if !exists { + return nil + } + return &agent +} + func (a *AgentPool) GetManager(name string) Manager { return a.managers[name] } diff --git a/example/webui/app.go b/example/webui/app.go index 63ece10..f192a44 100644 --- a/example/webui/app.go +++ b/example/webui/app.go @@ -2,6 +2,7 @@ package main import ( "bytes" + "encoding/json" "fmt" "net/http" "os" @@ -30,7 +31,6 @@ func (a *App) KnowledgeBaseReset(db *InMemoryDatabase) func(c *fiber.Ctx) error func (a *App) KnowledgeBaseFile(db *InMemoryDatabase) func(c *fiber.Ctx) error { return func(c *fiber.Ctx) error { // https://golang.withcodeexample.com/blog/file-upload-handling-golang-fiber-guide/ - // Handle file upload logic file, err := c.FormFile("file") if err != nil { // Handle error @@ -179,6 +179,59 @@ func (a *App) Create(pool *AgentPool) func(c *fiber.Ctx) error { } } +func (a *App) ExportAgent(pool *AgentPool) func(c *fiber.Ctx) error { + return func(c *fiber.Ctx) error { + agent := pool.GetConfig(c.Params("name")) + if agent == nil { + return c.Status(http.StatusNotFound).SendString("Agent not found") + } + + c.Set("Content-Disposition", fmt.Sprintf("attachment; filename=%s.json", agent.Name)) + return c.JSON(agent) + } +} + +func (a *App) ImportAgent(pool *AgentPool) func(c *fiber.Ctx) error { + return func(c *fiber.Ctx) error { + file, err := c.FormFile("file") + if err != nil { + // Handle error + return err + } + + os.MkdirAll("./uploads", os.ModePerm) + + destination := fmt.Sprintf("./uploads/%s", file.Filename) + if err := c.SaveFile(file, destination); err != nil { + // Handle error + return err + } + + data, err := os.ReadFile(destination) + if err != nil { + return err + } + + config := AgentConfig{} + if err := json.Unmarshal(data, &config); err != nil { + return err + } + + fmt.Println("Importing agent", config.Name) + + if config.Name == "" { + c.Status(http.StatusBadRequest).SendString("Name is required") + return nil + } + + if err := pool.CreateAgent(config.Name, &config); err != nil { + c.Status(http.StatusInternalServerError).SendString(err.Error()) + return nil + } + return c.Redirect("/agents") + } +} + func (a *App) Chat(pool *AgentPool) func(c *fiber.Ctx) error { return func(c *fiber.Ctx) error { payload := struct { diff --git a/example/webui/routes.go b/example/webui/routes.go index a580d81..2109642 100644 --- a/example/webui/routes.go +++ b/example/webui/routes.go @@ -91,6 +91,14 @@ func RegisterRoutes(webapp *fiber.App, pool *AgentPool, db *InMemoryDatabase, ap }) }) + webapp.Get("/settings/:name", func(c *fiber.Ctx) error { + return c.Render("views/settings", fiber.Map{ + // "Character": agent.Character, + "Name": c.Params("name"), + }) + }) + webapp.Post("/settings/import", app.ImportAgent(pool)) + webapp.Get("/settings/export/:name", app.ExportAgent(pool)) } var letterRunes = []rune("abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ") diff --git a/example/webui/views/agents.html b/example/webui/views/agents.html index 35d2b1f..6ff957b 100644 --- a/example/webui/views/agents.html +++ b/example/webui/views/agents.html @@ -47,7 +47,7 @@ Stop - Delete + Settings @@ -79,8 +79,8 @@ - - Delete + + Settings @@ -92,7 +92,19 @@
- + + + +
+
+

Import

+ + + + +
+
+
diff --git a/example/webui/views/settings.html b/example/webui/views/settings.html new file mode 100644 index 0000000..4d70ffe --- /dev/null +++ b/example/webui/views/settings.html @@ -0,0 +1,72 @@ + + + + Agent settings {{.Name}} + {{template "views/partials/header"}} + + + + {{template "views/partials/menu"}} +
+

Agent settings - {{.Name}}

+
+
+ +
+

Export

+ Export +
+ +
+

Danger section

+ + Delete + +
+ +
+ + + From 80508001c7a91560f4ee72698a3f95f9aff20cd2 Mon Sep 17 00:00:00 2001 From: Ettore Di Giacinto Date: Sun, 14 Apr 2024 00:31:24 +0200 Subject: [PATCH 104/399] generate elem with go --- example/webui/elements.go | 27 ++++++++++----- example/webui/views/agents.html | 4 +-- example/webui/views/knowledgebase.html | 44 +----------------------- example/webui/views/partials/header.html | 37 ++++++++++++++++++++ example/webui/views/settings.html | 9 +++++ go.mod | 11 +++--- go.sum | 2 ++ 7 files changed, 75 insertions(+), 59 deletions(-) diff --git a/example/webui/elements.go b/example/webui/elements.go index 7bc363f..7d6bf23 100644 --- a/example/webui/elements.go +++ b/example/webui/elements.go @@ -3,24 +3,33 @@ package main import ( "fmt" "strings" + + elem "github.com/chasefleming/elem-go" + "github.com/chasefleming/elem-go/attrs" ) -// TODO: switch to https://github.com/chasefleming/elem-go - func chatDiv(content string, color string) string { - return fmt.Sprintf(`
%s
`, color, htmlIfy(content)) + div := elem.Div(attrs.Props{ + // attrs.ID: "container", + attrs.Class: fmt.Sprintf("p-2 my-2 rounded bg-%s-600", color), + }, + elem.Raw(htmlIfy(content)), + ) + return div.Render() } func loader() string { - return `
` + return elem.Div(attrs.Props{ + attrs.Class: "loader", + }).Render() } func disabledElement(id string, disabled bool) string { - if disabled { - return `` - } - - return `` + return elem.Script(nil, + elem.If(disabled, + elem.Raw(`document.getElementById('`+id+`').disabled = true`), + elem.Raw(`document.getElementById('`+id+`').disabled = false`), + )).Render() } func htmlIfy(s string) string { diff --git a/example/webui/views/agents.html b/example/webui/views/agents.html index 6ff957b..f0ba95b 100644 --- a/example/webui/views/agents.html +++ b/example/webui/views/agents.html @@ -69,12 +69,12 @@ - - diff --git a/example/webui/views/knowledgebase.html b/example/webui/views/knowledgebase.html index 1e896c5..7f68770 100644 --- a/example/webui/views/knowledgebase.html +++ b/example/webui/views/knowledgebase.html @@ -3,50 +3,8 @@ KnowledgeBase {{template "views/partials/header"}} - - - - - + {{template "views/partials/menu"}}

Knowledgebase (items: {{.KnowledgebaseItemsCount}})

diff --git a/example/webui/views/partials/header.html b/example/webui/views/partials/header.html index cbba1da..b957e80 100644 --- a/example/webui/views/partials/header.html +++ b/example/webui/views/partials/header.html @@ -10,4 +10,41 @@ body { font-family: 'Roboto', sans-serif; } + .section-box { + background-color: #2a2a2a; /* Darker background for the form */ + padding: 20px; + margin-bottom: 20px; + border-radius: 10px; + box-shadow: 0 4px 6px rgba(0, 0, 0, 0.1); + } + + body { + background-color: #1a1a1a; /* Lighter overall background */ + color: #ffffff; + font-family: sans-serif; + padding: 20px; + } + + input, button { + width: 100%; + padding: 10px; + margin-top: 5px; + border-radius: 5px; + border: none; + } + + input[type="text"], input[type="file"] { + background-color: #333333; + color: white; + } + + button { + background-color: #4a76a8; /* Blue color for buttons */ + color: white; + cursor: pointer; + } + + button:hover { + background-color: #5a86b8; + } \ No newline at end of file diff --git a/example/webui/views/settings.html b/example/webui/views/settings.html index 4d70ffe..dea2e65 100644 --- a/example/webui/views/settings.html +++ b/example/webui/views/settings.html @@ -50,6 +50,15 @@
+
+ + +
+

Export

Export diff --git a/go.mod b/go.mod index 6aa1e11..426f325 100644 --- a/go.mod +++ b/go.mod @@ -6,27 +6,31 @@ toolchain go1.22.2 require ( github.com/bwmarrin/discordgo v0.28.1 + github.com/chasefleming/elem-go v0.25.0 github.com/donseba/go-htmx v1.8.0 + github.com/dslipak/pdf v0.0.2 github.com/go-telegram/bot v1.2.1 github.com/gofiber/fiber/v2 v2.52.4 + github.com/gofiber/template/html/v2 v2.1.1 github.com/google/go-github/v61 v61.0.0 github.com/onsi/ginkgo/v2 v2.15.0 github.com/onsi/gomega v1.31.1 + github.com/oxffaa/gopher-parse-sitemap v0.0.0-20191021113419-005d2eb1def4 + github.com/philippgille/chromem-go v0.5.0 github.com/sap-nocops/duckduckgogo v0.0.0-20201102135645-176990152850 github.com/sashabaranov/go-openai v1.18.3 github.com/slack-go/slack v0.12.5 github.com/valyala/fasthttp v1.52.0 + jaytaylor.com/html2text v0.0.0-20230321000545-74c2419ad056 ) require ( github.com/PuerkitoBio/goquery v1.6.0 // indirect github.com/andybalholm/brotli v1.1.0 // indirect github.com/andybalholm/cascadia v1.1.0 // indirect - github.com/dslipak/pdf v0.0.2 // indirect github.com/go-logr/logr v1.3.0 // indirect github.com/go-task/slim-sprig v0.0.0-20230315185526-52ccab3ef572 // indirect github.com/gofiber/template v1.8.3 // indirect - github.com/gofiber/template/html/v2 v2.1.1 // indirect github.com/gofiber/utils v1.1.0 // indirect github.com/google/go-cmp v0.6.0 // indirect github.com/google/go-querystring v1.1.0 // indirect @@ -38,8 +42,6 @@ require ( github.com/mattn/go-isatty v0.0.20 // indirect github.com/mattn/go-runewidth v0.0.15 // indirect github.com/olekukonko/tablewriter v0.0.5 // indirect - github.com/oxffaa/gopher-parse-sitemap v0.0.0-20191021113419-005d2eb1def4 // indirect - github.com/philippgille/chromem-go v0.5.0 // indirect github.com/rivo/uniseg v0.2.0 // indirect github.com/ssor/bom v0.0.0-20170718123548-6386211fdfcf // indirect github.com/stretchr/testify v1.9.0 // indirect @@ -51,5 +53,4 @@ require ( golang.org/x/text v0.14.0 // indirect golang.org/x/tools v0.16.1 // indirect gopkg.in/yaml.v3 v3.0.1 // indirect - jaytaylor.com/html2text v0.0.0-20230321000545-74c2419ad056 // indirect ) diff --git a/go.sum b/go.sum index ccd2ce3..2442764 100644 --- a/go.sum +++ b/go.sum @@ -6,6 +6,8 @@ github.com/andybalholm/cascadia v1.1.0 h1:BuuO6sSfQNFRu1LppgbD25Hr2vLYW25JvxHs5z github.com/andybalholm/cascadia v1.1.0/go.mod h1:GsXiBklL0woXo1j/WYWtSYYC4ouU9PqHO0sqidkEA4Y= github.com/bwmarrin/discordgo v0.28.1 h1:gXsuo2GBO7NbR6uqmrrBDplPUx2T3nzu775q/Rd1aG4= github.com/bwmarrin/discordgo v0.28.1/go.mod h1:NJZpH+1AfhIcyQsPeuBKsUtYrRnjkyu0kIVMCHkZtRY= +github.com/chasefleming/elem-go v0.25.0 h1:LYzr1auk39Bh3bdKloArOFV7sOBnOfSOKxsg58eWL0Q= +github.com/chasefleming/elem-go v0.25.0/go.mod h1:hz73qILBIKnTgOujnSMtEj20/epI+f6vg71RUilJAA4= github.com/chzyer/logex v1.1.10/go.mod h1:+Ywpsq7O8HXn0nuIou7OrIPyXbp3wmkHB+jjWRnGsAI= github.com/chzyer/readline v0.0.0-20180603132655-2972be24d48e/go.mod h1:nSuG5e5PlCu98SY8svDHJxuZscDgtXS6KTTbou5AhLI= github.com/chzyer/test v0.0.0-20180213035817-a1ea475d72b1/go.mod h1:Q3SI9o4m/ZMnBNeIyt5eFwwo7qiLfzFZmjNmxjkiQlU= From 0bc95cfd162fcfd154f786cb5e9c327280763a3b Mon Sep 17 00:00:00 2001 From: mudler Date: Sun, 14 Apr 2024 11:16:34 +0200 Subject: [PATCH 105/399] Increase textarea --- example/webui/views/partials/header.html | 3 +++ 1 file changed, 3 insertions(+) diff --git a/example/webui/views/partials/header.html b/example/webui/views/partials/header.html index b957e80..71e1530 100644 --- a/example/webui/views/partials/header.html +++ b/example/webui/views/partials/header.html @@ -47,4 +47,7 @@ button:hover { background-color: #5a86b8; } + textarea { + height: 200px; /* Increased height for better JSON visibility */ + } \ No newline at end of file From eda99d05f49ee0d745406cd7b4860ed9b2eb5258 Mon Sep 17 00:00:00 2001 From: mudler Date: Sun, 14 Apr 2024 11:24:55 +0200 Subject: [PATCH 106/399] Small UI enhancements --- example/webui/views/partials/header.html | 125 +++++++++++++++++++++++ 1 file changed, 125 insertions(+) diff --git a/example/webui/views/partials/header.html b/example/webui/views/partials/header.html index 71e1530..3ca1a78 100644 --- a/example/webui/views/partials/header.html +++ b/example/webui/views/partials/header.html @@ -50,4 +50,129 @@ textarea { height: 200px; /* Increased height for better JSON visibility */ } +/* Enhancing select box styles */ +select { + appearance: none; /* Remove default system appearance */ + background-color: #333; /* Darker background for the dark theme */ + border: 2px solid #555; /* Slightly lighter border for contrast */ + color: white; /* Text color */ + padding: 10px; /* Padding inside the select box */ + border-radius: 5px; /* Rounded corners */ + background-image: url('data:image/svg+xml;utf8,'); /* Custom dropdown arrow using SVG */ + background-repeat: no-repeat; + background-position: right 10px center; /* Positioning the arrow nicely */ + background-size: 12px; /* Size of the arrow */ + cursor: pointer; /* Cursor indicates it's clickable */ +} + +select:hover { + border-color: #777; /* Lighter border on hover for visibility */ +} + +select:focus { + outline: none; /* Remove default focus outline */ + border-color: #1e90ff; /* Focus color similar to the hover background of buttons */ + box-shadow: 0 0 3px #1e90ff; /* Adding a slight glow effect */ +} + +select { + /* Previous styles */ + overflow-y: auto; /* Ensures that a scrollbar is available when needed */ +} + +option { + background-color: #333; /* Dark background for each option */ + color: white; /* Light color for the text */ + padding: 8px 10px; /* Padding for each option */ +} + +/* Adding a hover effect for options is not consistently supported across all browsers */ +select:hover option { + background-color: #444; /* Slightly lighter background on hover */ +} + +/* Custom Scrollbars for the dropdown */ +select { + scrollbar-width: thin; /* Firefox */ + scrollbar-color: #666 #333; /* Firefox: thumb and track color */ +} + +select::-webkit-scrollbar { + width: 8px; /* For WebKit browsers */ +} + +select::-webkit-scrollbar-track { + background: #333; +} + +select::-webkit-scrollbar-thumb { + background-color: #666; + border-radius: 10px; + border: 2px solid #333; +} +/* Basic setup for the checkbox */ +.checkbox-custom { + position: relative; + display: inline-block; + width: 20px; /* Width of the checkbox */ + height: 20px; /* Height of the checkbox */ + margin: 5px; + cursor: pointer; + vertical-align: middle; +} + +/* Hide the default checkbox input */ +.checkbox-custom input { + opacity: 0; + width: 0; + height: 0; +} + +/* Create a custom box */ +.checkbox-custom .checkmark { + position: absolute; + top: 0; + left: 0; + height: 20px; + width: 20px; + background-color: #444; /* Dark grey box */ + border-radius: 4px; /* Rounded corners for the box */ + border: 1px solid #777; /* Slightly lighter border */ +} + +/* On mouse-over, add a different border color */ +.checkbox-custom:hover .checkmark { + border-color: #aaa; +} + +/* When the checkbox is checked, change the background and insert a checkmark */ +.checkbox-custom input:checked ~ .checkmark { + background-color: #1e90ff; /* Blue background for checked state */ + border-color: #1e90ff; +} + +/* Create the checkmark using a pseudo element */ +.checkbox-custom .checkmark:after { + content: ""; + position: absolute; + display: none; +} + +/* Show the checkmark when checked */ +.checkbox-custom input:checked ~ .checkmark:after { + display: block; +} + +/* Style the checkmark */ +.checkbox-custom .checkmark:after { + left: 7px; + top: 3px; + width: 5px; + height: 10px; + border: solid white; + border-width: 0 3px 3px 0; + transform: rotate(45deg); +} + + \ No newline at end of file From 27f72997490c5509e4aee530b98ac71ce5b6f156 Mon Sep 17 00:00:00 2001 From: mudler Date: Sun, 14 Apr 2024 16:38:14 +0200 Subject: [PATCH 107/399] Fixup timers (?) --- agent/agent.go | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/agent/agent.go b/agent/agent.go index 106f5e3..8d977c1 100644 --- a/agent/agent.go +++ b/agent/agent.go @@ -674,6 +674,10 @@ func (a *Agent) Run() error { case job := <-a.jobQueue: // Consume the job and generate a response // TODO: Give a short-term memory to the agent + // stop and drain the timer + if !timer.Stop() { + <-timer.C + } a.consumeJob(job, UserRole) timer.Reset(a.options.periodicRuns) case <-a.context.Done(): @@ -683,8 +687,6 @@ func (a *Agent) Run() error { if !a.options.standaloneJob { continue } - // TODO: We should also do not immediately fire this timer but - // instead have a cool-off timer starting after we received the last job a.periodicallyRun() timer.Reset(a.options.periodicRuns) } From ac8f6e94ff07d01c404fec8fe15a7a7d22079cbb Mon Sep 17 00:00:00 2001 From: mudler Date: Sun, 14 Apr 2024 16:38:45 +0200 Subject: [PATCH 108/399] wip: noaction for deciding to stop --- action/noreply.go | 22 +++++++++++++++++ agent/actions.go | 31 ++++++++++++++++++------ agent/agent.go | 16 +++++++++--- agent/options.go | 8 +++++- agent/state.go | 6 ++--- agent/templates.go | 4 +++ example/webui/agentpool.go | 4 +++ example/webui/views/create.html | 3 +++ example/webui/views/partials/header.html | 3 +++ 9 files changed, 82 insertions(+), 15 deletions(-) create mode 100644 action/noreply.go diff --git a/action/noreply.go b/action/noreply.go new file mode 100644 index 0000000..a8ebb50 --- /dev/null +++ b/action/noreply.go @@ -0,0 +1,22 @@ +package action + +// StopActionName is the name of the action +// used by the LLM to stop any further action +const StopActionName = "stop" + +func NewStop() *StopAction { + return &StopAction{} +} + +type StopAction struct{} + +func (a *StopAction) Run(ActionParams) (string, error) { + return "no-op", nil +} + +func (a *StopAction) Definition() ActionDefinition { + return ActionDefinition{ + Name: StopActionName, + Description: "Use this tool to stop any further action and stop the conversation.", + } +} diff --git a/agent/actions.go b/agent/actions.go index 2d20a3c..7d90af0 100644 --- a/agent/actions.go +++ b/agent/actions.go @@ -136,18 +136,33 @@ func (a *Agent) generateParameters(ctx context.Context, pickTemplate string, act } func (a *Agent) systemInternalActions() Actions { - if a.options.enableHUD { - return append(a.options.userActions, - action.NewState(), action.NewReply()) - } + defaultActions := append(a.options.userActions, action.NewReply()) if a.options.initiateConversations && a.selfEvaluationInProgress { // && self-evaluation.. - return append(a.options.userActions, - action.NewState(), action.NewReply(), action.NewConversation()) + acts := append(defaultActions, action.NewConversation()) + if a.options.enableHUD { + acts = append(acts, action.NewState()) + } + if a.options.canStopItself { + acts = append(acts, action.NewStop()) + } + + return acts } - return append(a.options.userActions, - action.NewReply()) + if a.options.canStopItself { + acts := append(defaultActions, action.NewStop()) + if a.options.enableHUD { + acts = append(acts, action.NewState()) + } + return acts + } + + if a.options.enableHUD { + return append(defaultActions, action.NewState()) + } + + return defaultActions } func (a *Agent) prepareHUD() PromptHUD { diff --git a/agent/agent.go b/agent/agent.go index 8d977c1..3b54c06 100644 --- a/agent/agent.go +++ b/agent/agent.go @@ -340,6 +340,14 @@ func (a *Agent) consumeJob(job *Job, role string) { } } + if chosenAction.Definition().Name.Is(action.StopActionName) { + if a.options.debugMode { + fmt.Println("LLM decided to stop") + } + job.Result.Finish(nil) + return + } + if chosenAction == nil { // If no action was picked up, the reasoning is the message returned by the assistant // so we can consume it as if it was a reply. @@ -410,8 +418,10 @@ func (a *Agent) consumeJob(job *Job, role string) { if !chosenAction.Definition().Name.Is(action.ReplyActionName) { result, err := a.runAction(chosenAction, params) if err != nil { - job.Result.Finish(fmt.Errorf("error running action: %w", err)) - return + //job.Result.Finish(fmt.Errorf("error running action: %w", err)) + //return + // make the LLM aware of the error of running the action instead of stopping the job here + result = fmt.Sprintf("Error running tool: %v", err) } stateResult := ActionState{ActionCurrentState{chosenAction, params.actionParams, reasoning}, result} @@ -585,7 +595,7 @@ func (a *Agent) periodicallyRun() { // whatNext := NewJob(WithText("Decide what to do based on the state")) whatNext := NewJob( - WithText("Decide what to based on the goal and the persistent goal."), + WithText(innerMonologueTemplate), WithReasoningCallback(a.options.reasoningCallback), WithResultCallback(a.options.resultCallback), ) diff --git a/agent/options.go b/agent/options.go index d606bd9..59cc80c 100644 --- a/agent/options.go +++ b/agent/options.go @@ -21,6 +21,7 @@ type options struct { userActions Actions enableHUD, standaloneJob, showCharacter, enableKB bool debugMode bool + canStopItself bool initiateConversations bool characterfile string statefile string @@ -53,7 +54,7 @@ func defaultOptions() *options { }, character: Character{ Name: "John Doe", - Age: 0, + Age: "", Occupation: "Unemployed", Hobbies: []string{}, MusicTaste: []string{}, @@ -82,6 +83,11 @@ var EnableKnowledgeBase = func(o *options) error { return nil } +var CanStopItself = func(o *options) error { + o.canStopItself = true + return nil +} + func EnableKnowledgeBaseWithResults(results int) Option { return func(o *options) error { o.enableKB = true diff --git a/agent/state.go b/agent/state.go index 7d72af2..6cb976a 100644 --- a/agent/state.go +++ b/agent/state.go @@ -22,7 +22,7 @@ type PromptHUD struct { type Character struct { Name string `json:"name"` - Age int `json:"age"` + Age string `json:"age"` Occupation string `json:"job_occupation"` Hobbies []string `json:"hobbies"` MusicTaste []string `json:"music_taste"` @@ -99,7 +99,7 @@ func (a *Agent) generateIdentity(guidance string) error { func (a *Agent) validCharacter() bool { return a.Character.Name != "" && - a.Character.Age != 0 && + a.Character.Age != "" && a.Character.Occupation != "" && len(a.Character.Hobbies) != 0 && len(a.Character.MusicTaste) != 0 @@ -107,7 +107,7 @@ func (a *Agent) validCharacter() bool { const fmtT = `===================== Name: %s -Age: %d +Age: %s Occupation: %s Hobbies: %v Music taste: %v diff --git a/agent/templates.go b/agent/templates.go index 4e37c87..224abae 100644 --- a/agent/templates.go +++ b/agent/templates.go @@ -40,6 +40,10 @@ func renderTemplate(templ string, hud *PromptHUD, actions Actions, reasoning str return prompt.String(), nil } +const innerMonologueTemplate = `"This is not a typical conversation between an assistant and an user. +You are thinking out loud by yourself now, and you are evaluating the current situation. +Considering the goal and the persistent goal, if you have one, and do something, or decide to plan something for later on. If you have the action available, you might also decide to engage a conversation with the user by notifying him."` + const hudTemplate = `{{with .HUD }}{{if .ShowCharacter}}The assistant acts like an human, has a character and the replies and actions might be influenced by it. {{if .Character.Name}}This is the assistant name: {{.Character.Name}} {{end}}{{if .Character.Age}}This is the assistant age: {{.Character.Age}} diff --git a/example/webui/agentpool.go b/example/webui/agentpool.go index 36d3e79..b37f36f 100644 --- a/example/webui/agentpool.go +++ b/example/webui/agentpool.go @@ -41,6 +41,7 @@ type AgentConfig struct { PermanentGoal string `json:"permanent_goal" form:"permanent_goal"` EnableKnowledgeBase bool `json:"enable_kb" form:"enable_kb"` KnowledgeBaseResults int `json:"kb_results" form:"kb_results"` + CanStopItself bool `json:"can_stop_itself" form:"can_stop_itself"` SystemPrompt string `json:"system_prompt" form:"system_prompt"` } @@ -342,6 +343,9 @@ func (a *AgentPool) startAgentWithConfig(name string, config *AgentConfig) error if config.StandaloneJob { opts = append(opts, EnableStandaloneJob) } + if config.CanStopItself { + opts = append(opts, CanStopItself) + } if config.InitiateConversations { opts = append(opts, EnableInitiateConversations) } diff --git a/example/webui/views/create.html b/example/webui/views/create.html index 1377cda..b989da0 100644 --- a/example/webui/views/create.html +++ b/example/webui/views/create.html @@ -99,6 +99,9 @@ + + +
diff --git a/example/webui/views/partials/header.html b/example/webui/views/partials/header.html index 3ca1a78..f4b1b55 100644 --- a/example/webui/views/partials/header.html +++ b/example/webui/views/partials/header.html @@ -6,6 +6,9 @@ + + + @@ -60,11 +20,10 @@

View and manage your list of agents, including detailed profiles and statistics.

- - +
-

Manage Knowledgebase

-

Access and update your knowledgebase to improve agent responses and efficiency.

+

Create

+

Create a new agent.

diff --git a/example/webui/views/knowledgebase.html b/example/webui/views/knowledgebase.html index 7f68770..c2cea87 100644 --- a/example/webui/views/knowledgebase.html +++ b/example/webui/views/knowledgebase.html @@ -1,7 +1,7 @@ - KnowledgeBase + Knowledgebase for {{.Name}} {{template "views/partials/header"}} @@ -12,7 +12,7 @@
-
+

Add sites to KB

@@ -24,7 +24,7 @@
- +

Upload File

@@ -37,7 +37,22 @@
- + +
+ +
+

Export

+ Export +
+ +
+ +

Import

+ + + + +
- - From fbcc618355298bc59aa7ea8f997d0ac5dc54fb5e Mon Sep 17 00:00:00 2001 From: mudler Date: Fri, 28 Feb 2025 19:30:12 +0100 Subject: [PATCH 171/399] Reply to mentions in threads --- services/connectors/slack.go | 20 ++++++++++++++++---- 1 file changed, 16 insertions(+), 4 deletions(-) diff --git a/services/connectors/slack.go b/services/connectors/slack.go index 2582282..d046aa2 100644 --- a/services/connectors/slack.go +++ b/services/connectors/slack.go @@ -107,10 +107,12 @@ func (t *Slack) Start(a *agent.Agent) { res := a.Ask( agent.WithText(message), ) + ts := ev.ThreadTimeStamp _, _, err = api.PostMessage(ev.Channel, slack.MsgOptionText(res.Response, false), - slack.MsgOptionPostMessageParameters(slack.PostMessageParameters{LinkNames: 1})) + slack.MsgOptionPostMessageParameters(slack.PostMessageParameters{LinkNames: 1}), + slack.MsgOptionTS(ts)) if err != nil { fmt.Printf("Error posting message: %v", err) } @@ -132,9 +134,19 @@ func (t *Slack) Start(a *agent.Agent) { agent.WithText(message), ) - _, _, err = api.PostMessage(ev.Channel, - slack.MsgOptionText(res.Response, false), - slack.MsgOptionPostMessageParameters(slack.PostMessageParameters{LinkNames: 1})) + ts := ev.ThreadTimeStamp + + if ts != "" { + _, _, err = api.PostMessage(ev.Channel, + slack.MsgOptionText(res.Response, false), + slack.MsgOptionPostMessageParameters(slack.PostMessageParameters{LinkNames: 1}), + slack.MsgOptionTS(ts)) + } else { + _, _, err = api.PostMessage(ev.Channel, + slack.MsgOptionText(res.Response, false), + slack.MsgOptionPostMessageParameters(slack.PostMessageParameters{LinkNames: 1}), + slack.MsgOptionTS(ev.TimeStamp)) + } if err != nil { fmt.Printf("Error posting message: %v", err) } From f28725199ce701773f8ff29b90910f5e51a5fccd Mon Sep 17 00:00:00 2001 From: mudler Date: Fri, 28 Feb 2025 19:55:10 +0100 Subject: [PATCH 172/399] Reply with threads history --- services/connectors/slack.go | 49 ++++++++++++++++++++++++++++++++---- 1 file changed, 44 insertions(+), 5 deletions(-) diff --git a/services/connectors/slack.go b/services/connectors/slack.go index d046aa2..1242d84 100644 --- a/services/connectors/slack.go +++ b/services/connectors/slack.go @@ -7,6 +7,7 @@ import ( "strings" "github.com/mudler/LocalAgent/pkg/xlog" + "github.com/sashabaranov/go-openai" "github.com/mudler/LocalAgent/core/agent" @@ -104,10 +105,12 @@ func (t *Slack) Start(a *agent.Agent) { message := ev.Text go func() { + + ts := ev.ThreadTimeStamp + res := a.Ask( agent.WithText(message), ) - ts := ev.ThreadTimeStamp _, _, err = api.PostMessage(ev.Channel, slack.MsgOptionText(res.Response, false), @@ -130,12 +133,48 @@ func (t *Slack) Start(a *agent.Agent) { xlog.Info("Message", message) go func() { - res := a.Ask( - agent.WithText(message), - ) - ts := ev.ThreadTimeStamp + var threadMessages []openai.ChatCompletionMessage + + if ts != "" { + // Fetch the thread messages + messages, _, _, err := api.GetConversationReplies(&slack.GetConversationRepliesParameters{ + ChannelID: ev.Channel, + Timestamp: ts, + }) + if err != nil { + fmt.Printf("Error fetching thread messages: %v", err) + } else { + fmt.Println("Found messages", len(messages)) + for _, msg := range messages { + role := "assistant" + if msg.User != b.UserID { + role = "user" + } + threadMessages = append(threadMessages, + openai.ChatCompletionMessage{ + Role: role, + Content: msg.Text, + }, + ) + + } + } + } else { + threadMessages = append(threadMessages, openai.ChatCompletionMessage{ + Role: "user", + Content: message, + }) + } + + fmt.Println("THREADS", threadMessages) + + res := a.Ask( + // agent.WithText(message), + agent.WithConversationHistory(threadMessages), + ) + if ts != "" { _, _, err = api.PostMessage(ev.Channel, slack.MsgOptionText(res.Response, false), From cf112d57a69ac57053d50dbd64eaeb7e716927f0 Mon Sep 17 00:00:00 2001 From: Ettore Di Giacinto Date: Fri, 28 Feb 2025 22:06:05 +0100 Subject: [PATCH 173/399] Strip bot user from messages received --- core/agent/actions.go | 26 +++++++++----------------- core/agent/agent.go | 11 +++-------- services/connectors/slack.go | 28 ++++++++++++++-------------- 3 files changed, 26 insertions(+), 39 deletions(-) diff --git a/core/agent/actions.go b/core/agent/actions.go index f6c1f9f..7576c89 100644 --- a/core/agent/actions.go +++ b/core/agent/actions.go @@ -115,13 +115,7 @@ func (m Messages) Exist(content string) bool { func (a *Agent) generateParameters(ctx context.Context, pickTemplate string, act Action, c []openai.ChatCompletionMessage, reasoning string) (*decisionResult, error) { - var promptHUD *PromptHUD - if a.options.enableHUD { - h := a.prepareHUD() - promptHUD = &h - } - - stateHUD, err := renderTemplate(pickTemplate, promptHUD, a.systemInternalActions(), reasoning) + stateHUD, err := renderTemplate(pickTemplate, a.prepareHUD(), a.systemInternalActions(), reasoning) if err != nil { return nil, err } @@ -189,8 +183,12 @@ func (a *Agent) systemInternalActions() Actions { return defaultActions } -func (a *Agent) prepareHUD() PromptHUD { - return PromptHUD{ +func (a *Agent) prepareHUD() (promptHUD *PromptHUD) { + if !a.options.enableHUD { + return nil + } + + return &PromptHUD{ Character: a.Character, CurrentState: *a.currentState, PermanentGoal: a.options.permanentGoal, @@ -219,7 +217,7 @@ func (a *Agent) pickAction(ctx context.Context, templ string, messages []openai. // Find the action chosenAction := a.systemInternalActions().Find(thought.actioName) if chosenAction == nil || thought.actioName == "" { - xlog.Debug(fmt.Sprintf("no answer")) + xlog.Debug("no answer") // LLM replied with an answer? //fmt.Errorf("no action found for intent:" + thought.actioName) @@ -229,13 +227,7 @@ func (a *Agent) pickAction(ctx context.Context, templ string, messages []openai. return chosenAction, thought.actionParams, thought.message, nil } - var promptHUD *PromptHUD - if a.options.enableHUD { - h := a.prepareHUD() - promptHUD = &h - } - - prompt, err := renderTemplate(templ, promptHUD, a.systemInternalActions(), "") + prompt, err := renderTemplate(templ, a.prepareHUD(), a.systemInternalActions(), "") if err != nil { return nil, nil, "", err } diff --git a/core/agent/agent.go b/core/agent/agent.go index 60f742e..0654de1 100644 --- a/core/agent/agent.go +++ b/core/agent/agent.go @@ -222,6 +222,7 @@ func (a *Agent) Pause() { a.Lock() defer a.Unlock() a.pause = true + } func (a *Agent) Resume() { @@ -609,15 +610,9 @@ func (a *Agent) consumeJob(job *Job, role string) { // } // } - // If we have a hud, display it + // If we have a hud, display it when answering normally if a.options.enableHUD { - var promptHUD *PromptHUD - if a.options.enableHUD { - h := a.prepareHUD() - promptHUD = &h - } - - prompt, err := renderTemplate(hudTemplate, promptHUD, a.systemInternalActions(), reasoning) + prompt, err := renderTemplate(hudTemplate, a.prepareHUD(), a.systemInternalActions(), reasoning) if err != nil { job.Result.Finish(fmt.Errorf("error renderTemplate: %w", err)) return diff --git a/services/connectors/slack.go b/services/connectors/slack.go index 1242d84..f5f4141 100644 --- a/services/connectors/slack.go +++ b/services/connectors/slack.go @@ -46,6 +46,10 @@ func (t *Slack) AgentReasoningCallback() func(state agent.ActionCurrentState) bo } } +func cleanUpUsernameFromMessage(message string, b *slack.AuthTestResponse) string { + return strings.ReplaceAll(message, "<@"+b.BotID+">", "") +} + func (t *Slack) Start(a *agent.Agent) { api := slack.New( t.botToken, @@ -71,13 +75,11 @@ func (t *Slack) Start(a *agent.Agent) { case socketmode.EventTypeEventsAPI: eventsAPIEvent, ok := evt.Data.(slackevents.EventsAPIEvent) if !ok { - fmt.Printf("Ignored %+v\n", evt) + xlog.Debug(fmt.Sprintf("Ignored %+v\n", evt)) continue } - fmt.Printf("Event received: %+v\n", eventsAPIEvent) - client.Ack(*evt.Request) switch eventsAPIEvent.Type { @@ -104,6 +106,7 @@ func (t *Slack) Start(a *agent.Agent) { } message := ev.Text + message = cleanUpUsernameFromMessage(message, b) go func() { ts := ev.ThreadTimeStamp @@ -117,7 +120,7 @@ func (t *Slack) Start(a *agent.Agent) { slack.MsgOptionPostMessageParameters(slack.PostMessageParameters{LinkNames: 1}), slack.MsgOptionTS(ts)) if err != nil { - fmt.Printf("Error posting message: %v", err) + xlog.Error(fmt.Sprintf("Error posting message: %v", err)) } }() case *slackevents.AppMentionEvent: @@ -129,7 +132,7 @@ func (t *Slack) Start(a *agent.Agent) { message := ev.Text // strip our id from the message - message = strings.ReplaceAll(message, "<@"+b.UserID+"> ", "") + message = cleanUpUsernameFromMessage(message, b) xlog.Info("Message", message) go func() { @@ -144,9 +147,8 @@ func (t *Slack) Start(a *agent.Agent) { Timestamp: ts, }) if err != nil { - fmt.Printf("Error fetching thread messages: %v", err) + xlog.Error(fmt.Sprintf("Error fetching thread messages: %v", err)) } else { - fmt.Println("Found messages", len(messages)) for _, msg := range messages { role := "assistant" if msg.User != b.UserID { @@ -155,7 +157,7 @@ func (t *Slack) Start(a *agent.Agent) { threadMessages = append(threadMessages, openai.ChatCompletionMessage{ Role: role, - Content: msg.Text, + Content: cleanUpUsernameFromMessage(msg.Text, b), }, ) @@ -164,12 +166,10 @@ func (t *Slack) Start(a *agent.Agent) { } else { threadMessages = append(threadMessages, openai.ChatCompletionMessage{ Role: "user", - Content: message, + Content: cleanUpUsernameFromMessage(message, b), }) } - fmt.Println("THREADS", threadMessages) - res := a.Ask( // agent.WithText(message), agent.WithConversationHistory(threadMessages), @@ -187,17 +187,17 @@ func (t *Slack) Start(a *agent.Agent) { slack.MsgOptionTS(ev.TimeStamp)) } if err != nil { - fmt.Printf("Error posting message: %v", err) + xlog.Error(fmt.Sprintf("Error posting message: %v", err)) } }() case *slackevents.MemberJoinedChannelEvent: - fmt.Printf("user %q joined to channel %q", ev.User, ev.Channel) + xlog.Error(fmt.Sprintf("user %q joined to channel %q", ev.User, ev.Channel)) } default: client.Debugf("unsupported Events API event received") } default: - fmt.Fprintf(os.Stderr, "Unexpected event type received: %s\n", evt.Type) + xlog.Error(fmt.Sprintf("Unexpected event type received: %s", evt.Type)) } } }() From d3f2126614db9d4b1fe6ca1b77360e5a99ac7d79 Mon Sep 17 00:00:00 2001 From: Ettore Di Giacinto Date: Fri, 28 Feb 2025 22:10:28 +0100 Subject: [PATCH 174/399] Debug --- core/agent/agent.go | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/core/agent/agent.go b/core/agent/agent.go index 0654de1..1141c58 100644 --- a/core/agent/agent.go +++ b/core/agent/agent.go @@ -121,7 +121,7 @@ func (a *Agent) ConversationChannel() chan openai.ChatCompletionMessage { // Ask is a pre-emptive, blocking call that returns the response as soon as it's ready. // It discards any other computation. func (a *Agent) Ask(opts ...JobOption) *JobResult { - xlog.Debug("Agent is being asked", "agent", a.Character.Name) + xlog.Debug("Agent Ask()", "agent", a.Character.Name) defer func() { xlog.Debug("Agent has finished being asked", "agent", a.Character.Name) }() @@ -134,9 +134,7 @@ func (a *Agent) Ask(opts ...JobOption) *JobResult { WithResultCallback(a.options.resultCallback), )..., ) - xlog.Debug("Job created", "agent", a.Character.Name, "job", j) a.jobQueue <- j - xlog.Debug("Waiting result", "agent", a.Character.Name, "job", j) return j.Result.WaitResult() } From 43352376e3b9a3c3591c8081a066d9b5daa3137a Mon Sep 17 00:00:00 2001 From: Ettore Di Giacinto Date: Fri, 28 Feb 2025 22:37:55 +0100 Subject: [PATCH 175/399] Use toolcall to construct current conversation --- core/agent/agent.go | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/core/agent/agent.go b/core/agent/agent.go index 1141c58..b3b4d8f 100644 --- a/core/agent/agent.go +++ b/core/agent/agent.go @@ -527,13 +527,19 @@ func (a *Agent) consumeJob(job *Job, role string) { stateResult := ActionState{ActionCurrentState{chosenAction, actionParams, reasoning}, result} job.Result.SetResult(stateResult) job.CallbackWithResult(stateResult) + xlog.Debug("Action executed", "agent", a.Character.Name, "action", chosenAction.Definition().Name, "result", result) // calling the function a.currentConversation = append(a.currentConversation, openai.ChatCompletionMessage{ Role: "assistant", - FunctionCall: &openai.FunctionCall{ - Name: chosenAction.Definition().Name.String(), - Arguments: actionParams.String(), + ToolCalls: []openai.ToolCall{ + { + Type: openai.ToolTypeFunction, + Function: openai.FunctionCall{ + Name: chosenAction.Definition().Name.String(), + Arguments: actionParams.String(), + }, + }, }, }) From 0b78956cc4cd71cd51123d27084b07c1f0c981e4 Mon Sep 17 00:00:00 2001 From: Ettore Di Giacinto Date: Fri, 28 Feb 2025 22:38:05 +0100 Subject: [PATCH 176/399] Enhance logging --- core/agent/agent.go | 13 +++++++++++++ core/state/pool.go | 9 ++------- 2 files changed, 15 insertions(+), 7 deletions(-) diff --git a/core/agent/agent.go b/core/agent/agent.go index b3b4d8f..8a0844c 100644 --- a/core/agent/agent.go +++ b/core/agent/agent.go @@ -565,6 +565,8 @@ func (a *Agent) consumeJob(job *Job, role string) { if followingAction != nil && !followingAction.Definition().Name.Is(action.ReplyActionName) && !chosenAction.Definition().Name.Is(action.ReplyActionName) { + xlog.Info("Following action", "action", followingAction.Definition().Name, "agent", a.Character.Name) + // We need to do another action (?) // The agent decided to do another action // call ourselves again @@ -575,7 +577,11 @@ func (a *Agent) consumeJob(job *Job, role string) { a.consumeJob(job, role) return } else if followingAction == nil { + xlog.Info("Not following another action", "agent", a.Character.Name) + if !a.options.forceReasoning { + xlog.Info("Finish conversation with reasoning", "reasoning", reasoning, "agent", a.Character.Name) + msg := openai.ChatCompletionMessage{ Role: "assistant", Content: reasoning, @@ -590,6 +596,7 @@ func (a *Agent) consumeJob(job *Job, role string) { } // At this point can only be a reply action + xlog.Info("Computing reply", "agent", a.Character.Name) // decode the response replyResponse := action.ReplyResponse{} @@ -645,6 +652,8 @@ func (a *Agent) consumeJob(job *Job, role string) { // ) if !a.options.forceReasoning { + xlog.Info("No reasoning, return reply message", "reply", replyResponse.Message, "agent", a.Character.Name) + msg := openai.ChatCompletionMessage{ Role: "assistant", Content: replyResponse.Message, @@ -656,6 +665,8 @@ func (a *Agent) consumeJob(job *Job, role string) { return } + xlog.Info("Reasoning, ask LLM for a reply", "agent", a.Character.Name) + xlog.Debug("Conversation", "conversation", fmt.Sprintf("%+v", a.currentConversation)) msg, err := a.askLLM(ctx, append(a.currentConversation, openai.ChatCompletionMessage{ Role: "system", Content: "The assistant needs to reply without using any tool.", @@ -678,6 +689,8 @@ func (a *Agent) consumeJob(job *Job, role string) { a.currentConversation = append(a.currentConversation, msg) job.Result.SetResponse(msg.Content) + xlog.Info("Response from LLM", "response", msg.Content, "agent", a.Character.Name) + job.Result.Finish(nil) } diff --git a/core/state/pool.go b/core/state/pool.go index ac15ae8..bebb941 100644 --- a/core/state/pool.go +++ b/core/state/pool.go @@ -231,13 +231,8 @@ func (a *AgentPool) startAgentWithConfig(name string, config *AgentConfig) error a.agentStatus[name].addResult(state) a.Unlock() - xlog.Info( - "Agent executed an action", - "agent", name, - "reasoning", state.Reasoning, - "action", state.ActionCurrentState.Action.Definition().Name, - "params", state.ActionCurrentState.Params, - "result", state.Result, + xlog.Debug( + "Calling agent result callback", ) text := fmt.Sprintf(`Reasoning: %s From 0dce524c7aab35dc5f078de7eb2042fc5405ca04 Mon Sep 17 00:00:00 2001 From: Ettore Di Giacinto Date: Fri, 28 Feb 2025 22:48:26 +0100 Subject: [PATCH 177/399] Fixups --- services/connectors/slack.go | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/services/connectors/slack.go b/services/connectors/slack.go index f5f4141..1c58af7 100644 --- a/services/connectors/slack.go +++ b/services/connectors/slack.go @@ -47,7 +47,10 @@ func (t *Slack) AgentReasoningCallback() func(state agent.ActionCurrentState) bo } func cleanUpUsernameFromMessage(message string, b *slack.AuthTestResponse) string { - return strings.ReplaceAll(message, "<@"+b.BotID+">", "") + cleaned := strings.ReplaceAll(message, "<@"+b.UserID+">", "") + cleaned = strings.ReplaceAll(message, "<@"+b.BotID+">", "") + cleaned = strings.TrimSpace(cleaned) + return cleaned } func (t *Slack) Start(a *agent.Agent) { @@ -105,8 +108,7 @@ func (t *Slack) Start(a *agent.Agent) { continue } - message := ev.Text - message = cleanUpUsernameFromMessage(message, b) + message := cleanUpUsernameFromMessage(ev.Text, b) go func() { ts := ev.ThreadTimeStamp @@ -129,10 +131,9 @@ func (t *Slack) Start(a *agent.Agent) { // Skip messages from ourselves continue } - message := ev.Text + message := cleanUpUsernameFromMessage(ev.Text, b) // strip our id from the message - message = cleanUpUsernameFromMessage(message, b) xlog.Info("Message", message) go func() { From 4520d165221d3b44ed204ace09a82e4f778031d1 Mon Sep 17 00:00:00 2001 From: Ettore Di Giacinto Date: Fri, 28 Feb 2025 22:48:50 +0100 Subject: [PATCH 178/399] Fixups --- services/connectors/slack.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/services/connectors/slack.go b/services/connectors/slack.go index 1c58af7..b9ce2c3 100644 --- a/services/connectors/slack.go +++ b/services/connectors/slack.go @@ -48,7 +48,7 @@ func (t *Slack) AgentReasoningCallback() func(state agent.ActionCurrentState) bo func cleanUpUsernameFromMessage(message string, b *slack.AuthTestResponse) string { cleaned := strings.ReplaceAll(message, "<@"+b.UserID+">", "") - cleaned = strings.ReplaceAll(message, "<@"+b.BotID+">", "") + cleaned = strings.ReplaceAll(cleaned, "<@"+b.BotID+">", "") cleaned = strings.TrimSpace(cleaned) return cleaned } From 76a01994f9964e99a5e1dd03dd58aa58909cd6cf Mon Sep 17 00:00:00 2001 From: Ettore Di Giacinto Date: Fri, 28 Feb 2025 22:50:44 +0100 Subject: [PATCH 179/399] Enable markdown responses in slack --- services/connectors/slack.go | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/services/connectors/slack.go b/services/connectors/slack.go index b9ce2c3..908577b 100644 --- a/services/connectors/slack.go +++ b/services/connectors/slack.go @@ -119,7 +119,7 @@ func (t *Slack) Start(a *agent.Agent) { _, _, err = api.PostMessage(ev.Channel, slack.MsgOptionText(res.Response, false), - slack.MsgOptionPostMessageParameters(slack.PostMessageParameters{LinkNames: 1}), + slack.MsgOptionPostMessageParameters(slack.PostMessageParameters{LinkNames: 1, Markdown: true}), slack.MsgOptionTS(ts)) if err != nil { xlog.Error(fmt.Sprintf("Error posting message: %v", err)) @@ -179,12 +179,12 @@ func (t *Slack) Start(a *agent.Agent) { if ts != "" { _, _, err = api.PostMessage(ev.Channel, slack.MsgOptionText(res.Response, false), - slack.MsgOptionPostMessageParameters(slack.PostMessageParameters{LinkNames: 1}), + slack.MsgOptionPostMessageParameters(slack.PostMessageParameters{LinkNames: 1, Markdown: true}), slack.MsgOptionTS(ts)) } else { _, _, err = api.PostMessage(ev.Channel, slack.MsgOptionText(res.Response, false), - slack.MsgOptionPostMessageParameters(slack.PostMessageParameters{LinkNames: 1}), + slack.MsgOptionPostMessageParameters(slack.PostMessageParameters{LinkNames: 1, Markdown: true}), slack.MsgOptionTS(ev.TimeStamp)) } if err != nil { From a57f9905767a2f876211a314c99816d5b6d3f7d3 Mon Sep 17 00:00:00 2001 From: mudler Date: Sat, 1 Mar 2025 12:18:10 +0100 Subject: [PATCH 180/399] Add genimage action --- services/actions/genimage.go | 83 ++++++++++++++++++++++++++++++++++++ webui/actions.go | 4 ++ 2 files changed, 87 insertions(+) create mode 100644 services/actions/genimage.go diff --git a/services/actions/genimage.go b/services/actions/genimage.go new file mode 100644 index 0000000..0417632 --- /dev/null +++ b/services/actions/genimage.go @@ -0,0 +1,83 @@ +package actions + +import ( + "context" + "fmt" + + "github.com/mudler/LocalAgent/core/action" + "github.com/sashabaranov/go-openai" + "github.com/sashabaranov/go-openai/jsonschema" +) + +func NewGenImage(config map[string]string) *GenImageAction { + defaultConfig := openai.DefaultConfig(config["apiKey"]) + defaultConfig.BaseURL = config["apiURL"] + + return &GenImageAction{ + client: openai.NewClientWithConfig(defaultConfig), + imageModel: config["model"], + } +} + +type GenImageAction struct { + client *openai.Client + imageModel string +} + +func (a *GenImageAction) Run(ctx context.Context, params action.ActionParams) (string, error) { + result := struct { + Prompt string `json:"prompt"` + Size string `json:"size"` + }{} + err := params.Unmarshal(&result) + if err != nil { + fmt.Printf("error: %v", err) + + return "", err + } + + req := openai.ImageRequest{ + Prompt: result.Prompt, + } + + switch result.Size { + case "256x256": + req.Size = openai.CreateImageSize256x256 + case "512x512": + req.Size = openai.CreateImageSize512x512 + case "1024x1024": + req.Size = openai.CreateImageSize1024x1024 + default: + req.Size = openai.CreateImageSize256x256 + } + + resp, err := a.client.CreateImage(ctx, req) + if err != nil { + return "Failed to generate image " + err.Error(), err + } + + if len(resp.Data) == 0 { + return "Failed to generate image", nil + } + + return resp.Data[0].URL, nil +} + +func (a *GenImageAction) Definition() action.ActionDefinition { + return action.ActionDefinition{ + Name: "generate_image", + Description: "Generate image with.", + Properties: map[string]jsonschema.Definition{ + "prompt": { + Type: jsonschema.String, + Description: "The image prompt to generate the image.", + }, + "size": { + Type: jsonschema.String, + Description: "The image prompt to generate the image.", + Enum: []string{"256x256", "512x512", "1024x1024"}, + }, + }, + Required: []string{"prompt"}, + } +} diff --git a/webui/actions.go b/webui/actions.go index dc7677b..c96b23d 100644 --- a/webui/actions.go +++ b/webui/actions.go @@ -24,6 +24,7 @@ const ( ActionWikipedia = "wikipedia" ActionBrowse = "browse" ActionSendMail = "send_mail" + ActionGenerateImage = "generate_image" ) var AvailableActions = []string{ @@ -37,6 +38,7 @@ var AvailableActions = []string{ ActionBrowse, ActionWikipedia, ActionSendMail, + ActionGenerateImage, } func Actions(a *state.AgentConfig) func(ctx context.Context) []agent.Action { @@ -58,6 +60,8 @@ func Actions(a *state.AgentConfig) func(ctx context.Context) []agent.Action { continue } allActions = append(allActions, customAction) + case ActionGenerateImage: + allActions = append(allActions, actions.NewGenImage(config)) case ActionSearch: allActions = append(allActions, actions.NewSearch(config)) case ActionGithubIssueLabeler: From 3790ad366618fe2c55fbf3eaeed917b91400fa5b Mon Sep 17 00:00:00 2001 From: mudler Date: Sat, 1 Mar 2025 16:02:01 +0100 Subject: [PATCH 181/399] Fix genimage action --- services/actions/actions_suite_test.go | 13 +++++ services/actions/genimage.go | 7 ++- services/actions/genimage_test.go | 70 ++++++++++++++++++++++++++ services/actions/githubissuelabeler.go | 4 +- services/actions/githubissuesearch.go | 4 +- 5 files changed, 92 insertions(+), 6 deletions(-) create mode 100644 services/actions/actions_suite_test.go create mode 100644 services/actions/genimage_test.go diff --git a/services/actions/actions_suite_test.go b/services/actions/actions_suite_test.go new file mode 100644 index 0000000..878894a --- /dev/null +++ b/services/actions/actions_suite_test.go @@ -0,0 +1,13 @@ +package actions_test + +import ( + "testing" + + . "github.com/onsi/ginkgo/v2" + . "github.com/onsi/gomega" +) + +func TestActions(t *testing.T) { + RegisterFailHandler(Fail) + RunSpecs(t, "Agent actions test suite") +} diff --git a/services/actions/genimage.go b/services/actions/genimage.go index 0417632..d4f5703 100644 --- a/services/actions/genimage.go +++ b/services/actions/genimage.go @@ -31,13 +31,16 @@ func (a *GenImageAction) Run(ctx context.Context, params action.ActionParams) (s }{} err := params.Unmarshal(&result) if err != nil { - fmt.Printf("error: %v", err) - return "", err } + if result.Prompt == "" { + return "", fmt.Errorf("prompt is required") + } + req := openai.ImageRequest{ Prompt: result.Prompt, + Model: a.imageModel, } switch result.Size { diff --git a/services/actions/genimage_test.go b/services/actions/genimage_test.go new file mode 100644 index 0000000..f0af8bf --- /dev/null +++ b/services/actions/genimage_test.go @@ -0,0 +1,70 @@ +package actions_test + +import ( + "context" + "os" + + . "github.com/mudler/LocalAgent/core/action" + + . "github.com/mudler/LocalAgent/services/actions" + . "github.com/onsi/ginkgo/v2" + . "github.com/onsi/gomega" +) + +var _ = Describe("GenImageAction", func() { + var ( + ctx context.Context + action *GenImageAction + params ActionParams + config map[string]string + ) + + BeforeEach(func() { + ctx = context.Background() + apiKey := os.Getenv("OPENAI_API_KEY") + apiURL := os.Getenv("OPENAI_API_URL") + testModel := os.Getenv("OPENAI_MODEL") + if apiURL == "" { + Skip("OPENAI_API_URL must be set") + } + config = map[string]string{ + "apiKey": apiKey, + "apiURL": apiURL, + "model": testModel, + } + action = NewGenImage(config) + }) + + Describe("Run", func() { + It("should generate an image with valid prompt and size", func() { + params = ActionParams{ + "prompt": "test prompt", + "size": "256x256", + } + + url, err := action.Run(ctx, params) + Expect(err).ToNot(HaveOccurred()) + Expect(url).ToNot(BeEmpty()) + }) + + It("should return an error if the prompt is not provided", func() { + params = ActionParams{ + "size": "256x256", + } + + _, err := action.Run(ctx, params) + Expect(err).To(HaveOccurred()) + }) + }) + + Describe("Definition", func() { + It("should return the correct action definition", func() { + definition := action.Definition() + Expect(definition.Name.String()).To(Equal("generate_image")) + Expect(definition.Description).To(Equal("Generate image with.")) + Expect(definition.Properties).To(HaveKey("prompt")) + Expect(definition.Properties).To(HaveKey("size")) + Expect(definition.Required).To(ContainElement("prompt")) + }) + }) +}) diff --git a/services/actions/githubissuelabeler.go b/services/actions/githubissuelabeler.go index 9ac159b..f67dd35 100644 --- a/services/actions/githubissuelabeler.go +++ b/services/actions/githubissuelabeler.go @@ -3,11 +3,11 @@ package actions import ( "context" "fmt" - "log/slog" "strings" "github.com/google/go-github/v61/github" "github.com/mudler/LocalAgent/core/action" + "github.com/mudler/LocalAgent/pkg/xlog" "github.com/sashabaranov/go-openai/jsonschema" ) @@ -53,7 +53,7 @@ func (g *GithubIssuesLabeler) Run(ctx context.Context, params action.ActionParam labels, _, err := g.client.Issues.AddLabelsToIssue(g.context, result.Owner, result.Repository, result.IssueNumber, []string{result.Label}) //labelsNames := []string{} for _, l := range labels { - slog.Info("Label added:", l.Name) + xlog.Info("Label added", "label", l.Name) //labelsNames = append(labelsNames, l.GetName()) } diff --git a/services/actions/githubissuesearch.go b/services/actions/githubissuesearch.go index 73e33de..0e3beea 100644 --- a/services/actions/githubissuesearch.go +++ b/services/actions/githubissuesearch.go @@ -3,10 +3,10 @@ package actions import ( "context" "fmt" - "log/slog" "github.com/google/go-github/v61/github" "github.com/mudler/LocalAgent/core/action" + "github.com/mudler/LocalAgent/pkg/xlog" "github.com/sashabaranov/go-openai/jsonschema" ) @@ -51,7 +51,7 @@ func (g *GithubIssueSearch) Run(ctx context.Context, params action.ActionParams) return resultString, err } for _, i := range issues.Issues { - slog.Info("Issue found:", i.GetTitle()) + xlog.Info("Issue found", "title", i.GetTitle()) resultString += fmt.Sprintf("Issue found: %s\n", i.GetTitle()) resultString += fmt.Sprintf("URL: %s\n", i.GetHTMLURL()) // resultString += fmt.Sprintf("Body: %s\n", i.GetBody()) From a75feaab4ec44ef5ed5d2c78b4c0f948687d15ba Mon Sep 17 00:00:00 2001 From: mudler Date: Sat, 1 Mar 2025 16:17:27 +0100 Subject: [PATCH 182/399] Simplify, no need to add system prompt when asking for reply --- core/agent/agent.go | 5 +---- services/actions/genimage.go | 2 +- 2 files changed, 2 insertions(+), 5 deletions(-) diff --git a/core/agent/agent.go b/core/agent/agent.go index 8a0844c..8c46c51 100644 --- a/core/agent/agent.go +++ b/core/agent/agent.go @@ -667,10 +667,7 @@ func (a *Agent) consumeJob(job *Job, role string) { xlog.Info("Reasoning, ask LLM for a reply", "agent", a.Character.Name) xlog.Debug("Conversation", "conversation", fmt.Sprintf("%+v", a.currentConversation)) - msg, err := a.askLLM(ctx, append(a.currentConversation, openai.ChatCompletionMessage{ - Role: "system", - Content: "The assistant needs to reply without using any tool.", - })) + msg, err := a.askLLM(ctx, a.currentConversation) if err != nil { job.Result.Finish(err) return diff --git a/services/actions/genimage.go b/services/actions/genimage.go index d4f5703..76bdce4 100644 --- a/services/actions/genimage.go +++ b/services/actions/genimage.go @@ -63,7 +63,7 @@ func (a *GenImageAction) Run(ctx context.Context, params action.ActionParams) (s return "Failed to generate image", nil } - return resp.Data[0].URL, nil + return fmt.Sprintf("The image was generated and available at: %s", resp.Data[0].URL), nil } func (a *GenImageAction) Definition() action.ActionDefinition { From 8492c95cb6e10924d5ce8f1e81e70533cdd6a949 Mon Sep 17 00:00:00 2001 From: mudler Date: Sat, 1 Mar 2025 16:33:50 +0100 Subject: [PATCH 183/399] Convert markdown to slack markdown --- go.mod | 1 + go.sum | 2 ++ services/connectors/slack.go | 6 ++++++ 3 files changed, 9 insertions(+) diff --git a/go.mod b/go.mod index 9c4742a..c2851b5 100644 --- a/go.mod +++ b/go.mod @@ -33,6 +33,7 @@ require ( github.com/antchfx/xmlquery v1.3.17 // indirect github.com/antchfx/xpath v1.2.4 // indirect github.com/dlclark/regexp2 v1.10.0 // indirect + github.com/eritikass/githubmarkdownconvertergo v0.1.10 // indirect github.com/go-logr/logr v1.3.0 // indirect github.com/go-task/slim-sprig v0.0.0-20230315185526-52ccab3ef572 // indirect github.com/gobwas/glob v0.2.3 // indirect diff --git a/go.sum b/go.sum index 4b0cffc..d4f488f 100644 --- a/go.sum +++ b/go.sum @@ -34,6 +34,8 @@ github.com/dslipak/pdf v0.0.2 h1:djAvcM5neg9Ush+zR6QXB+VMJzR6TdnX766HPIg1JmI= github.com/dslipak/pdf v0.0.2/go.mod h1:2L3SnkI9cQwnAS9gfPz2iUoLC0rUZwbucpbKi5R1mUo= github.com/envoyproxy/go-control-plane v0.9.1-0.20191026205805-5f8ba28d4473/go.mod h1:YTl/9mNaCwkRvm6d1a2C3ymFceY/DCBVvsKhRF0iEA4= github.com/envoyproxy/protoc-gen-validate v0.1.0/go.mod h1:iSmxcyjqTsJpI2R4NaDN7+kN2VEUnK/pcBlmesArF7c= +github.com/eritikass/githubmarkdownconvertergo v0.1.10 h1:mL93ADvYMOeT15DcGtK9AaFFc+RcWcy6kQBC6yS/5f4= +github.com/eritikass/githubmarkdownconvertergo v0.1.10/go.mod h1:BdpHs6imOtzE5KorbUtKa6bZ0ZBh1yFcrTTAL8FwDKY= github.com/go-logr/logr v1.3.0 h1:2y3SDp0ZXuc6/cjLSZ+Q3ir+QB9T/iG5yYRXqsagWSY= github.com/go-logr/logr v1.3.0/go.mod h1:9T104GzyrTigFIr8wt5mBrctHMim0Nb2HLGrmQ40KvY= github.com/go-task/slim-sprig v0.0.0-20230315185526-52ccab3ef572 h1:tfuBGBXKqDEevZMzYi5KSi8KkcZtzBcTgAUUtapy0OI= diff --git a/services/connectors/slack.go b/services/connectors/slack.go index 908577b..8ed44df 100644 --- a/services/connectors/slack.go +++ b/services/connectors/slack.go @@ -14,6 +14,8 @@ import ( "github.com/slack-go/slack/socketmode" "github.com/slack-go/slack" + + "github.com/eritikass/githubmarkdownconvertergo" "github.com/slack-go/slack/slackevents" ) @@ -117,6 +119,8 @@ func (t *Slack) Start(a *agent.Agent) { agent.WithText(message), ) + res.Response = githubmarkdownconvertergo.Slack(res.Response) + _, _, err = api.PostMessage(ev.Channel, slack.MsgOptionText(res.Response, false), slack.MsgOptionPostMessageParameters(slack.PostMessageParameters{LinkNames: 1, Markdown: true}), @@ -176,6 +180,8 @@ func (t *Slack) Start(a *agent.Agent) { agent.WithConversationHistory(threadMessages), ) + res.Response = githubmarkdownconvertergo.Slack(res.Response) + if ts != "" { _, _, err = api.PostMessage(ev.Channel, slack.MsgOptionText(res.Response, false), From 5b4f618ca3173ee61154befaee46e8b14cf70b92 Mon Sep 17 00:00:00 2001 From: mudler Date: Sat, 1 Mar 2025 17:27:07 +0100 Subject: [PATCH 184/399] Standardize action results --- core/action/action_suite_test.go | 13 +++++++++++++ core/action/custom.go | 9 +++++---- core/action/custom_test.go | 10 +++++----- core/action/definition.go | 5 +++++ core/action/intention.go | 4 ++-- core/action/newconversation.go | 4 ++-- core/action/noreply.go | 4 ++-- core/action/reasoning.go | 4 ++-- core/action/state.go | 4 ++-- core/agent/actions.go | 2 +- core/agent/agent.go | 5 ++++- core/agent/agent_test.go | 4 ++-- services/actions/browse.go | 14 +++++++------- services/actions/genimage.go | 15 +++++++++------ services/actions/githubissuecloser.go | 8 ++++---- services/actions/githubissuelabeler.go | 8 +++----- services/actions/githubissueopener.go | 6 +++--- services/actions/githubissuesearch.go | 8 ++++---- services/actions/scrape.go | 14 ++++++++++---- services/actions/search.go | 14 ++++++++++---- services/actions/sendmail.go | 8 ++++---- services/actions/wikipedia.go | 12 +++++++++--- 22 files changed, 108 insertions(+), 67 deletions(-) create mode 100644 core/action/action_suite_test.go diff --git a/core/action/action_suite_test.go b/core/action/action_suite_test.go new file mode 100644 index 0000000..ea3ec2a --- /dev/null +++ b/core/action/action_suite_test.go @@ -0,0 +1,13 @@ +package action_test + +import ( + "testing" + + . "github.com/onsi/ginkgo/v2" + . "github.com/onsi/gomega" +) + +func TestAction(t *testing.T) { + RegisterFailHandler(Fail) + RunSpecs(t, "Agent Action test suite") +} diff --git a/core/action/custom.go b/core/action/custom.go index 3bd34b6..7ca84c4 100644 --- a/core/action/custom.go +++ b/core/action/custom.go @@ -75,15 +75,16 @@ func (a *CustomAction) initializeInterpreter() error { return nil } -func (a *CustomAction) Run(ctx context.Context, params ActionParams) (string, error) { +func (a *CustomAction) Run(ctx context.Context, params ActionParams) (ActionResult, error) { v, err := a.i.Eval(fmt.Sprintf("%s.Run", a.config["name"])) if err != nil { - return "", err + return ActionResult{}, err } - run := v.Interface().(func(map[string]interface{}) (string, error)) + run := v.Interface().(func(map[string]interface{}) (string, map[string]interface{}, error)) - return run(params) + res, meta, err := run(params) + return ActionResult{Result: res, Metadata: meta}, err } func (a *CustomAction) Definition() ActionDefinition { diff --git a/core/action/custom_test.go b/core/action/custom_test.go index 743e965..4d780a0 100644 --- a/core/action/custom_test.go +++ b/core/action/custom_test.go @@ -23,18 +23,18 @@ type Params struct { Foo string } -func Run(config map[string]interface{}) (string, error) { +func Run(config map[string]interface{}) (string, map[string]interface{}, error) { p := Params{} b, err := json.Marshal(config) if err != nil { - return "", err + return "",map[string]interface{}{}, err } if err := json.Unmarshal(b, &p); err != nil { - return "", err + return "",map[string]interface{}{}, err } -return p.Foo, nil +return p.Foo,map[string]interface{}{}, nil } func Definition() map[string][]string { @@ -79,7 +79,7 @@ return []string{"foo"} "Foo": "bar", }) Expect(err).ToNot(HaveOccurred()) - Expect(runResult).To(Equal("bar")) + Expect(runResult.Result).To(Equal("bar")) }) }) diff --git a/core/action/definition.go b/core/action/definition.go index 5179f41..58ac980 100644 --- a/core/action/definition.go +++ b/core/action/definition.go @@ -28,6 +28,11 @@ func NewContext(ctx context.Context, cancel context.CancelFunc) *ActionContext { type ActionParams map[string]interface{} +type ActionResult struct { + Result string + Metadata map[string]interface{} +} + func (ap ActionParams) Read(s string) error { err := json.Unmarshal([]byte(s), &ap) return err diff --git a/core/action/intention.go b/core/action/intention.go index 968e8f0..95c540a 100644 --- a/core/action/intention.go +++ b/core/action/intention.go @@ -21,8 +21,8 @@ type IntentResponse struct { Reasoning string `json:"reasoning"` } -func (a *IntentAction) Run(context.Context, ActionParams) (string, error) { - return "no-op", nil +func (a *IntentAction) Run(context.Context, ActionParams) (ActionResult, error) { + return ActionResult{}, nil } func (a *IntentAction) Definition() ActionDefinition { diff --git a/core/action/newconversation.go b/core/action/newconversation.go index 5d0f94b..067f54f 100644 --- a/core/action/newconversation.go +++ b/core/action/newconversation.go @@ -18,8 +18,8 @@ type ConversationActionResponse struct { Message string `json:"message"` } -func (a *ConversationAction) Run(context.Context, ActionParams) (string, error) { - return "no-op", nil +func (a *ConversationAction) Run(context.Context, ActionParams) (ActionResult, error) { + return ActionResult{}, nil } func (a *ConversationAction) Definition() ActionDefinition { diff --git a/core/action/noreply.go b/core/action/noreply.go index e6cc755..af00465 100644 --- a/core/action/noreply.go +++ b/core/action/noreply.go @@ -12,8 +12,8 @@ func NewStop() *StopAction { type StopAction struct{} -func (a *StopAction) Run(context.Context, ActionParams) (string, error) { - return "no-op", nil +func (a *StopAction) Run(context.Context, ActionParams) (ActionResult, error) { + return ActionResult{}, nil } func (a *StopAction) Definition() ActionDefinition { diff --git a/core/action/reasoning.go b/core/action/reasoning.go index 122e222..acd3262 100644 --- a/core/action/reasoning.go +++ b/core/action/reasoning.go @@ -19,8 +19,8 @@ type ReasoningResponse struct { Reasoning string `json:"reasoning"` } -func (a *ReasoningAction) Run(context.Context, ActionParams) (string, error) { - return "no-op", nil +func (a *ReasoningAction) Run(context.Context, ActionParams) (ActionResult, error) { + return ActionResult{}, nil } func (a *ReasoningAction) Definition() ActionDefinition { diff --git a/core/action/state.go b/core/action/state.go index f4d8901..3e79a3b 100644 --- a/core/action/state.go +++ b/core/action/state.go @@ -33,8 +33,8 @@ type StateResult struct { Goal string `json:"goal"` } -func (a *StateAction) Run(context.Context, ActionParams) (string, error) { - return "internal state has been updated", nil +func (a *StateAction) Run(context.Context, ActionParams) (ActionResult, error) { + return ActionResult{Result: "internal state has been updated"}, nil } func (a *StateAction) Definition() ActionDefinition { diff --git a/core/agent/actions.go b/core/agent/actions.go index 7576c89..aec695f 100644 --- a/core/agent/actions.go +++ b/core/agent/actions.go @@ -23,7 +23,7 @@ type ActionCurrentState struct { // Actions is something the agent can do type Action interface { - Run(ctx context.Context, action action.ActionParams) (string, error) + Run(ctx context.Context, action action.ActionParams) (action.ActionResult, error) Definition() action.ActionDefinition } diff --git a/core/agent/agent.go b/core/agent/agent.go index 8c46c51..d27f48f 100644 --- a/core/agent/agent.go +++ b/core/agent/agent.go @@ -242,9 +242,12 @@ func (a *Agent) Memory() RAGDB { func (a *Agent) runAction(chosenAction Action, params action.ActionParams) (result string, err error) { for _, action := range a.systemInternalActions() { if action.Definition().Name == chosenAction.Definition().Name { - if result, err = action.Run(a.actionContext, params); err != nil { + res, err := action.Run(a.actionContext, params) + if err != nil { return "", fmt.Errorf("error running action: %w", err) } + + result = res.Result } } diff --git a/core/agent/agent_test.go b/core/agent/agent_test.go index 3b468bd..d90f1c4 100644 --- a/core/agent/agent_test.go +++ b/core/agent/agent_test.go @@ -36,7 +36,7 @@ type TestAction struct { responseN int } -func (a *TestAction) Run(context.Context, action.ActionParams) (string, error) { +func (a *TestAction) Run(context.Context, action.ActionParams) (action.ActionResult, error) { res := a.response[a.responseN] a.responseN++ @@ -44,7 +44,7 @@ func (a *TestAction) Run(context.Context, action.ActionParams) (string, error) { a.responseN = 0 } - return res, nil + return action.ActionResult{Result: res}, nil } func (a *TestAction) Definition() action.ActionDefinition { diff --git a/services/actions/browse.go b/services/actions/browse.go index 1057982..c99d738 100644 --- a/services/actions/browse.go +++ b/services/actions/browse.go @@ -18,7 +18,7 @@ func NewBrowse(config map[string]string) *BrowseAction { type BrowseAction struct{} -func (a *BrowseAction) Run(ctx context.Context, params action.ActionParams) (string, error) { +func (a *BrowseAction) Run(ctx context.Context, params action.ActionParams) (action.ActionResult, error) { result := struct { URL string `json:"url"` }{} @@ -26,31 +26,31 @@ func (a *BrowseAction) Run(ctx context.Context, params action.ActionParams) (str if err != nil { fmt.Printf("error: %v", err) - return "", err + return action.ActionResult{}, err } // download page with http.Client client := &http.Client{} req, err := http.NewRequest("GET", result.URL, nil) if err != nil { - return "", err + return action.ActionResult{}, err } resp, err := client.Do(req) if err != nil { - return "", err + return action.ActionResult{}, err } defer resp.Body.Close() pagebyte, err := io.ReadAll(resp.Body) if err != nil { - return "", err + return action.ActionResult{}, err } rendered, err := html2text.FromString(string(pagebyte), html2text.Options{PrettyTables: true}) if err != nil { - return "", err + return action.ActionResult{}, err } - return fmt.Sprintf("The webpage '%s' content is:\n%s", result.URL, rendered), nil + return action.ActionResult{Result: fmt.Sprintf("The webpage '%s' content is:\n%s", result.URL, rendered)}, nil } func (a *BrowseAction) Definition() action.ActionDefinition { diff --git a/services/actions/genimage.go b/services/actions/genimage.go index 76bdce4..f17ea87 100644 --- a/services/actions/genimage.go +++ b/services/actions/genimage.go @@ -24,18 +24,18 @@ type GenImageAction struct { imageModel string } -func (a *GenImageAction) Run(ctx context.Context, params action.ActionParams) (string, error) { +func (a *GenImageAction) Run(ctx context.Context, params action.ActionParams) (action.ActionResult, error) { result := struct { Prompt string `json:"prompt"` Size string `json:"size"` }{} err := params.Unmarshal(&result) if err != nil { - return "", err + return action.ActionResult{}, err } if result.Prompt == "" { - return "", fmt.Errorf("prompt is required") + return action.ActionResult{}, fmt.Errorf("prompt is required") } req := openai.ImageRequest{ @@ -56,14 +56,17 @@ func (a *GenImageAction) Run(ctx context.Context, params action.ActionParams) (s resp, err := a.client.CreateImage(ctx, req) if err != nil { - return "Failed to generate image " + err.Error(), err + return action.ActionResult{Result: "Failed to generate image " + err.Error()}, err } if len(resp.Data) == 0 { - return "Failed to generate image", nil + return action.ActionResult{Result: "Failed to generate image"}, nil } - return fmt.Sprintf("The image was generated and available at: %s", resp.Data[0].URL), nil + return action.ActionResult{ + Result: fmt.Sprintf("The image was generated and available at: %s", resp.Data[0].URL), Metadata: map[string]interface{}{ + "url": resp.Data[0].URL, + }}, nil } func (a *GenImageAction) Definition() action.ActionDefinition { diff --git a/services/actions/githubissuecloser.go b/services/actions/githubissuecloser.go index 6468617..206c107 100644 --- a/services/actions/githubissuecloser.go +++ b/services/actions/githubissuecloser.go @@ -24,7 +24,7 @@ func NewGithubIssueCloser(ctx context.Context, config map[string]string) *Github } } -func (g *GithubIssuesCloser) Run(ctx context.Context, params action.ActionParams) (string, error) { +func (g *GithubIssuesCloser) Run(ctx context.Context, params action.ActionParams) (action.ActionResult, error) { result := struct { Repository string `json:"repository"` Owner string `json:"owner"` @@ -34,7 +34,7 @@ func (g *GithubIssuesCloser) Run(ctx context.Context, params action.ActionParams if err != nil { fmt.Printf("error: %v", err) - return "", err + return action.ActionResult{}, err } // _, _, err = g.client.Issues.CreateComment( @@ -57,14 +57,14 @@ func (g *GithubIssuesCloser) Run(ctx context.Context, params action.ActionParams if err != nil { fmt.Printf("error: %v", err) - return "", err + return action.ActionResult{}, err } resultString := fmt.Sprintf("Closed issue %d in repository %s/%s", result.IssueNumber, result.Owner, result.Repository) if err != nil { resultString = fmt.Sprintf("Error closing issue %d in repository %s/%s: %v", result.IssueNumber, result.Owner, result.Repository, err) } - return resultString, err + return action.ActionResult{Result: resultString}, err } func (g *GithubIssuesCloser) Definition() action.ActionDefinition { diff --git a/services/actions/githubissuelabeler.go b/services/actions/githubissuelabeler.go index f67dd35..db93ebd 100644 --- a/services/actions/githubissuelabeler.go +++ b/services/actions/githubissuelabeler.go @@ -36,7 +36,7 @@ func NewGithubIssueLabeler(ctx context.Context, config map[string]string) *Githu } } -func (g *GithubIssuesLabeler) Run(ctx context.Context, params action.ActionParams) (string, error) { +func (g *GithubIssuesLabeler) Run(ctx context.Context, params action.ActionParams) (action.ActionResult, error) { result := struct { Repository string `json:"repository"` Owner string `json:"owner"` @@ -45,9 +45,7 @@ func (g *GithubIssuesLabeler) Run(ctx context.Context, params action.ActionParam }{} err := params.Unmarshal(&result) if err != nil { - fmt.Printf("error: %v", err) - - return "", err + return action.ActionResult{}, err } labels, _, err := g.client.Issues.AddLabelsToIssue(g.context, result.Owner, result.Repository, result.IssueNumber, []string{result.Label}) @@ -61,7 +59,7 @@ func (g *GithubIssuesLabeler) Run(ctx context.Context, params action.ActionParam if err != nil { resultString = fmt.Sprintf("Error adding label '%s' to issue %d in repository %s/%s: %v", result.Label, result.IssueNumber, result.Owner, result.Repository, err) } - return resultString, err + return action.ActionResult{Result: resultString}, err } func (g *GithubIssuesLabeler) Definition() action.ActionDefinition { diff --git a/services/actions/githubissueopener.go b/services/actions/githubissueopener.go index 4e4548c..7a70273 100644 --- a/services/actions/githubissueopener.go +++ b/services/actions/githubissueopener.go @@ -25,7 +25,7 @@ func NewGithubIssueOpener(ctx context.Context, config map[string]string) *Github } } -func (g *GithubIssuesOpener) Run(ctx context.Context, params action.ActionParams) (string, error) { +func (g *GithubIssuesOpener) Run(ctx context.Context, params action.ActionParams) (action.ActionResult, error) { result := struct { Title string `json:"title"` Body string `json:"text"` @@ -36,7 +36,7 @@ func (g *GithubIssuesOpener) Run(ctx context.Context, params action.ActionParams if err != nil { fmt.Printf("error: %v", err) - return "", err + return action.ActionResult{}, err } issue := &github.IssueRequest{ @@ -52,7 +52,7 @@ func (g *GithubIssuesOpener) Run(ctx context.Context, params action.ActionParams resultString = fmt.Sprintf("Created issue %d in repository %s/%s", createdIssue.GetNumber(), result.Owner, result.Repository) } - return resultString, err + return action.ActionResult{Result: resultString}, err } func (g *GithubIssuesOpener) Definition() action.ActionDefinition { diff --git a/services/actions/githubissuesearch.go b/services/actions/githubissuesearch.go index 0e3beea..dbef041 100644 --- a/services/actions/githubissuesearch.go +++ b/services/actions/githubissuesearch.go @@ -26,7 +26,7 @@ func NewGithubIssueSearch(ctx context.Context, config map[string]string) *Github } } -func (g *GithubIssueSearch) Run(ctx context.Context, params action.ActionParams) (string, error) { +func (g *GithubIssueSearch) Run(ctx context.Context, params action.ActionParams) (action.ActionResult, error) { result := struct { Query string `json:"query"` Repository string `json:"repository"` @@ -36,7 +36,7 @@ func (g *GithubIssueSearch) Run(ctx context.Context, params action.ActionParams) if err != nil { fmt.Printf("error: %v", err) - return "", err + return action.ActionResult{}, err } query := fmt.Sprintf("%s in:%s user:%s", result.Query, result.Repository, result.Owner) @@ -48,7 +48,7 @@ func (g *GithubIssueSearch) Run(ctx context.Context, params action.ActionParams) }) if err != nil { resultString = fmt.Sprintf("Error listing issues: %v", err) - return resultString, err + return action.ActionResult{Result: resultString}, err } for _, i := range issues.Issues { xlog.Info("Issue found", "title", i.GetTitle()) @@ -57,7 +57,7 @@ func (g *GithubIssueSearch) Run(ctx context.Context, params action.ActionParams) // resultString += fmt.Sprintf("Body: %s\n", i.GetBody()) } - return resultString, err + return action.ActionResult{Result: resultString}, err } func (g *GithubIssueSearch) Definition() action.ActionDefinition { diff --git a/services/actions/scrape.go b/services/actions/scrape.go index a2003f7..8f69020 100644 --- a/services/actions/scrape.go +++ b/services/actions/scrape.go @@ -16,7 +16,7 @@ func NewScraper(config map[string]string) *ScraperAction { type ScraperAction struct{} -func (a *ScraperAction) Run(ctx context.Context, params action.ActionParams) (string, error) { +func (a *ScraperAction) Run(ctx context.Context, params action.ActionParams) (action.ActionResult, error) { result := struct { URL string `json:"url"` }{} @@ -24,15 +24,21 @@ func (a *ScraperAction) Run(ctx context.Context, params action.ActionParams) (st if err != nil { fmt.Printf("error: %v", err) - return "", err + return action.ActionResult{}, err } scraper, err := scraper.New() if err != nil { fmt.Printf("error: %v", err) - return "", err + return action.ActionResult{}, err } - return scraper.Call(ctx, result.URL) + res, err := scraper.Call(ctx, result.URL) + if err != nil { + fmt.Printf("error: %v", err) + + return action.ActionResult{}, err + } + return action.ActionResult{Result: res}, nil } func (a *ScraperAction) Definition() action.ActionDefinition { diff --git a/services/actions/search.go b/services/actions/search.go index db54177..15d136b 100644 --- a/services/actions/search.go +++ b/services/actions/search.go @@ -28,7 +28,7 @@ func NewSearch(config map[string]string) *SearchAction { type SearchAction struct{ results int } -func (a *SearchAction) Run(ctx context.Context, params action.ActionParams) (string, error) { +func (a *SearchAction) Run(ctx context.Context, params action.ActionParams) (action.ActionResult, error) { result := struct { Query string `json:"query"` }{} @@ -36,15 +36,21 @@ func (a *SearchAction) Run(ctx context.Context, params action.ActionParams) (str if err != nil { fmt.Printf("error: %v", err) - return "", err + return action.ActionResult{}, err } ddg, err := duckduckgo.New(a.results, "LocalAgent") if err != nil { fmt.Printf("error: %v", err) - return "", err + return action.ActionResult{}, err } - return ddg.Call(ctx, result.Query) + res, err := ddg.Call(ctx, result.Query) + if err != nil { + fmt.Printf("error: %v", err) + + return action.ActionResult{}, err + } + return action.ActionResult{Result: res}, nil } func (a *SearchAction) Definition() action.ActionDefinition { diff --git a/services/actions/sendmail.go b/services/actions/sendmail.go index b67818d..1b23742 100644 --- a/services/actions/sendmail.go +++ b/services/actions/sendmail.go @@ -27,7 +27,7 @@ type SendMailAction struct { smtpPort string } -func (a *SendMailAction) Run(ctx context.Context, params action.ActionParams) (string, error) { +func (a *SendMailAction) Run(ctx context.Context, params action.ActionParams) (action.ActionResult, error) { result := struct { Message string `json:"message"` To string `json:"to"` @@ -37,7 +37,7 @@ func (a *SendMailAction) Run(ctx context.Context, params action.ActionParams) (s if err != nil { fmt.Printf("error: %v", err) - return "", err + return action.ActionResult{}, err } // Authentication. @@ -50,9 +50,9 @@ func (a *SendMailAction) Run(ctx context.Context, params action.ActionParams) (s result.To, }, []byte(result.Message)) if err != nil { - return "", err + return action.ActionResult{}, err } - return fmt.Sprintf("Email sent to %s", result.To), nil + return action.ActionResult{Result: fmt.Sprintf("Email sent to %s", result.To)}, nil } func (a *SendMailAction) Definition() action.ActionDefinition { diff --git a/services/actions/wikipedia.go b/services/actions/wikipedia.go index d6051b2..936b5cd 100644 --- a/services/actions/wikipedia.go +++ b/services/actions/wikipedia.go @@ -15,7 +15,7 @@ func NewWikipedia(config map[string]string) *WikipediaAction { type WikipediaAction struct{} -func (a *WikipediaAction) Run(ctx context.Context, params action.ActionParams) (string, error) { +func (a *WikipediaAction) Run(ctx context.Context, params action.ActionParams) (action.ActionResult, error) { result := struct { Query string `json:"query"` }{} @@ -23,10 +23,16 @@ func (a *WikipediaAction) Run(ctx context.Context, params action.ActionParams) ( if err != nil { fmt.Printf("error: %v", err) - return "", err + return action.ActionResult{}, err } wiki := wikipedia.New("LocalAgent") - return wiki.Call(ctx, result.Query) + res, err := wiki.Call(ctx, result.Query) + if err != nil { + fmt.Printf("error: %v", err) + + return action.ActionResult{}, err + } + return action.ActionResult{Result: res}, nil } func (a *WikipediaAction) Definition() action.ActionDefinition { From 70c389ce0b047e5d6c3543babce741485a03853f Mon Sep 17 00:00:00 2001 From: Ettore Di Giacinto Date: Fri, 28 Feb 2025 23:02:04 +0100 Subject: [PATCH 185/399] refactors --- services/connectors/slack.go | 20 +++++++++++++++----- 1 file changed, 15 insertions(+), 5 deletions(-) diff --git a/services/connectors/slack.go b/services/connectors/slack.go index 8ed44df..0046238 100644 --- a/services/connectors/slack.go +++ b/services/connectors/slack.go @@ -63,6 +63,11 @@ func (t *Slack) Start(a *agent.Agent) { slack.OptionAppLevelToken(t.appToken), ) + postMessageParams := slack.PostMessageParameters{ + LinkNames: 1, + Markdown: true, + } + client := socketmode.New( api, //socketmode.OptionDebug(true), @@ -113,7 +118,7 @@ func (t *Slack) Start(a *agent.Agent) { message := cleanUpUsernameFromMessage(ev.Text, b) go func() { - ts := ev.ThreadTimeStamp + //ts := ev.ThreadTimeStamp res := a.Ask( agent.WithText(message), @@ -123,8 +128,9 @@ func (t *Slack) Start(a *agent.Agent) { _, _, err = api.PostMessage(ev.Channel, slack.MsgOptionText(res.Response, false), - slack.MsgOptionPostMessageParameters(slack.PostMessageParameters{LinkNames: 1, Markdown: true}), - slack.MsgOptionTS(ts)) + slack.MsgOptionPostMessageParameters(postMessageParams), + // slack.MsgOptionTS(ts), + ) if err != nil { xlog.Error(fmt.Sprintf("Error posting message: %v", err)) } @@ -185,12 +191,16 @@ func (t *Slack) Start(a *agent.Agent) { if ts != "" { _, _, err = api.PostMessage(ev.Channel, slack.MsgOptionText(res.Response, false), - slack.MsgOptionPostMessageParameters(slack.PostMessageParameters{LinkNames: 1, Markdown: true}), + slack.MsgOptionPostMessageParameters( + postMessageParams, + ), slack.MsgOptionTS(ts)) } else { _, _, err = api.PostMessage(ev.Channel, slack.MsgOptionText(res.Response, false), - slack.MsgOptionPostMessageParameters(slack.PostMessageParameters{LinkNames: 1, Markdown: true}), + slack.MsgOptionPostMessageParameters( + postMessageParams, + ), slack.MsgOptionTS(ev.TimeStamp)) } if err != nil { From 4d6b04c6edd26ec204f94ff3d6e916c2684c5f02 Mon Sep 17 00:00:00 2001 From: Ettore Di Giacinto Date: Fri, 28 Feb 2025 23:03:55 +0100 Subject: [PATCH 186/399] Enable optional scaping of messages --- services/connectors/slack.go | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/services/connectors/slack.go b/services/connectors/slack.go index 0046238..a524cb2 100644 --- a/services/connectors/slack.go +++ b/services/connectors/slack.go @@ -127,7 +127,7 @@ func (t *Slack) Start(a *agent.Agent) { res.Response = githubmarkdownconvertergo.Slack(res.Response) _, _, err = api.PostMessage(ev.Channel, - slack.MsgOptionText(res.Response, false), + slack.MsgOptionText(res.Response, true), slack.MsgOptionPostMessageParameters(postMessageParams), // slack.MsgOptionTS(ts), ) @@ -190,14 +190,14 @@ func (t *Slack) Start(a *agent.Agent) { if ts != "" { _, _, err = api.PostMessage(ev.Channel, - slack.MsgOptionText(res.Response, false), + slack.MsgOptionText(res.Response, true), slack.MsgOptionPostMessageParameters( postMessageParams, ), slack.MsgOptionTS(ts)) } else { _, _, err = api.PostMessage(ev.Channel, - slack.MsgOptionText(res.Response, false), + slack.MsgOptionText(res.Response, true), slack.MsgOptionPostMessageParameters( postMessageParams, ), From 3a7b5e14617bb7c71612fed989de7ef0f55ed99f Mon Sep 17 00:00:00 2001 From: Ettore Di Giacinto Date: Sat, 1 Mar 2025 22:10:21 +0100 Subject: [PATCH 187/399] return metadatas and conversations in job results. Consume them in Slack connector to use attachments in responses --- core/action/state.go | 4 ++-- core/agent/actions.go | 2 +- core/agent/agent.go | 41 +++++++++++++++++++++++------------- core/agent/jobs.go | 9 ++++---- core/agent/state.go | 10 ++++----- go.mod | 14 ++++++------ go.sum | 24 ++++++++++----------- services/actions/genimage.go | 6 +++++- services/actions/search.go | 11 +++++++++- services/connectors/slack.go | 33 +++++++++++++++++++++++++++++ 10 files changed, 106 insertions(+), 48 deletions(-) diff --git a/core/action/state.go b/core/action/state.go index 3e79a3b..5c9d990 100644 --- a/core/action/state.go +++ b/core/action/state.go @@ -25,7 +25,7 @@ type StateAction struct{} // TODO: A special action is then used to let the LLM itself update its memory // periodically during self-processing, and the same action is ALSO exposed // during the conversation to let the user put for example, a new goal to the agent. -type StateResult struct { +type AgentInternalState struct { NowDoing string `json:"doing_now"` DoingNext string `json:"doing_next"` DoneHistory []string `json:"done_history"` @@ -81,7 +81,7 @@ You have a short memory with: %+v ===================== ` -func (c StateResult) String() string { +func (c AgentInternalState) String() string { return fmt.Sprintf( fmtT, c.NowDoing, diff --git a/core/agent/actions.go b/core/agent/actions.go index aec695f..8d58794 100644 --- a/core/agent/actions.go +++ b/core/agent/actions.go @@ -12,7 +12,7 @@ import ( type ActionState struct { ActionCurrentState - Result string + action.ActionResult } type ActionCurrentState struct { diff --git a/core/agent/agent.go b/core/agent/agent.go index d27f48f..be99535 100644 --- a/core/agent/agent.go +++ b/core/agent/agent.go @@ -31,7 +31,7 @@ type Agent struct { context *action.ActionContext currentReasoning string - currentState *action.StateResult + currentState *action.AgentInternalState nextAction Action nextActionParams *action.ActionParams currentConversation Messages @@ -67,7 +67,7 @@ func New(opts ...Option) (*Agent, error) { options: options, client: client, Character: options.character, - currentState: &action.StateResult{}, + currentState: &action.AgentInternalState{}, context: action.NewContext(ctx, cancel), } @@ -239,15 +239,15 @@ func (a *Agent) Memory() RAGDB { return a.options.ragdb } -func (a *Agent) runAction(chosenAction Action, params action.ActionParams) (result string, err error) { - for _, action := range a.systemInternalActions() { - if action.Definition().Name == chosenAction.Definition().Name { - res, err := action.Run(a.actionContext, params) +func (a *Agent) runAction(chosenAction Action, params action.ActionParams) (result action.ActionResult, err error) { + for _, act := range a.systemInternalActions() { + if act.Definition().Name == chosenAction.Definition().Name { + res, err := act.Run(a.actionContext, params) if err != nil { - return "", fmt.Errorf("error running action: %w", err) + return action.ActionResult{}, fmt.Errorf("error running action: %w", err) } - result = res.Result + result = res } } @@ -255,11 +255,11 @@ func (a *Agent) runAction(chosenAction Action, params action.ActionParams) (resu if chosenAction.Definition().Name.Is(action.StateActionName) { // We need to store the result in the state - state := action.StateResult{} + state := action.AgentInternalState{} err = params.Unmarshal(&state) if err != nil { - return "", fmt.Errorf("error unmarshalling state of the agent: %w", err) + return action.ActionResult{}, fmt.Errorf("error unmarshalling state of the agent: %w", err) } // update the current state with the one we just got from the action a.currentState = &state @@ -267,7 +267,7 @@ func (a *Agent) runAction(chosenAction Action, params action.ActionParams) (resu // update the state file if a.options.statefile != "" { if err := a.SaveState(a.options.statefile); err != nil { - return "", err + return action.ActionResult{}, err } } } @@ -445,6 +445,7 @@ func (a *Agent) consumeJob(job *Job, role string) { Role: "assistant", Content: reasoning, }) + job.Result.Conversation = a.currentConversation job.Result.SetResponse(reasoning) job.Result.Finish(nil) return @@ -486,7 +487,8 @@ func (a *Agent) consumeJob(job *Job, role string) { } if !job.Callback(ActionCurrentState{chosenAction, actionParams, reasoning}) { - job.Result.SetResult(ActionState{ActionCurrentState{chosenAction, actionParams, reasoning}, "stopped by callback"}) + job.Result.SetResult(ActionState{ActionCurrentState{chosenAction, actionParams, reasoning}, action.ActionResult{Result: "stopped by callback"}}) + job.Result.Conversation = a.currentConversation job.Result.Finish(nil) return } @@ -512,6 +514,7 @@ func (a *Agent) consumeJob(job *Job, role string) { Content: message.Message, } }() + job.Result.Conversation = a.currentConversation job.Result.SetResponse("decided to initiate a new conversation") job.Result.Finish(nil) return @@ -524,7 +527,7 @@ func (a *Agent) consumeJob(job *Job, role string) { //job.Result.Finish(fmt.Errorf("error running action: %w", err)) //return // make the LLM aware of the error of running the action instead of stopping the job here - result = fmt.Sprintf("Error running tool: %v", err) + result.Result = fmt.Sprintf("Error running tool: %v", err) } stateResult := ActionState{ActionCurrentState{chosenAction, actionParams, reasoning}, result} @@ -549,7 +552,7 @@ func (a *Agent) consumeJob(job *Job, role string) { // result of calling the function a.currentConversation = append(a.currentConversation, openai.ChatCompletionMessage{ Role: openai.ChatMessageRoleTool, - Content: result, + Content: result.Result, Name: chosenAction.Definition().Name.String(), ToolCallID: chosenAction.Definition().Name.String(), }) @@ -561,6 +564,7 @@ func (a *Agent) consumeJob(job *Job, role string) { // to continue using another tool given the result followingAction, followingParams, reasoning, err := a.pickAction(ctx, reEvaluationTemplate, a.currentConversation) if err != nil { + job.Result.Conversation = a.currentConversation job.Result.Finish(fmt.Errorf("error picking action: %w", err)) return } @@ -592,12 +596,15 @@ func (a *Agent) consumeJob(job *Job, role string) { a.currentConversation = append(a.currentConversation, msg) job.Result.SetResponse(msg.Content) + job.Result.Conversation = a.currentConversation job.Result.Finish(nil) return } } } + job.Result.Conversation = a.currentConversation + // At this point can only be a reply action xlog.Info("Computing reply", "agent", a.Character.Name) @@ -605,6 +612,7 @@ func (a *Agent) consumeJob(job *Job, role string) { replyResponse := action.ReplyResponse{} if err := actionParams.Unmarshal(&replyResponse); err != nil { + job.Result.Conversation = a.currentConversation job.Result.Finish(fmt.Errorf("error unmarshalling reply response: %w", err)) return } @@ -628,6 +636,7 @@ func (a *Agent) consumeJob(job *Job, role string) { if a.options.enableHUD { prompt, err := renderTemplate(hudTemplate, a.prepareHUD(), a.systemInternalActions(), reasoning) if err != nil { + job.Result.Conversation = a.currentConversation job.Result.Finish(fmt.Errorf("error renderTemplate: %w", err)) return } @@ -663,6 +672,7 @@ func (a *Agent) consumeJob(job *Job, role string) { } a.currentConversation = append(a.currentConversation, msg) + job.Result.Conversation = a.currentConversation job.Result.SetResponse(msg.Content) job.Result.Finish(nil) return @@ -672,6 +682,7 @@ func (a *Agent) consumeJob(job *Job, role string) { xlog.Debug("Conversation", "conversation", fmt.Sprintf("%+v", a.currentConversation)) msg, err := a.askLLM(ctx, a.currentConversation) if err != nil { + job.Result.Conversation = a.currentConversation job.Result.Finish(err) return } @@ -690,7 +701,7 @@ func (a *Agent) consumeJob(job *Job, role string) { a.currentConversation = append(a.currentConversation, msg) job.Result.SetResponse(msg.Content) xlog.Info("Response from LLM", "response", msg.Content, "agent", a.Character.Name) - + job.Result.Conversation = a.currentConversation job.Result.Finish(nil) } diff --git a/core/agent/jobs.go b/core/agent/jobs.go index 89e3871..5d5c4df 100644 --- a/core/agent/jobs.go +++ b/core/agent/jobs.go @@ -23,10 +23,11 @@ type Job struct { type JobResult struct { sync.Mutex // The result of a job - State []ActionState - Response string - Error error - ready chan bool + State []ActionState + Conversation []openai.ChatCompletionMessage + Response string + Error error + ready chan bool } type JobOption func(*Job) diff --git a/core/agent/state.go b/core/agent/state.go index e0c6389..51e011b 100644 --- a/core/agent/state.go +++ b/core/agent/state.go @@ -14,10 +14,10 @@ import ( // all information that should be displayed to the LLM // in the prompts type PromptHUD struct { - Character Character `json:"character"` - CurrentState action.StateResult `json:"current_state"` - PermanentGoal string `json:"permanent_goal"` - ShowCharacter bool `json:"show_character"` + Character Character `json:"character"` + CurrentState action.AgentInternalState `json:"current_state"` + PermanentGoal string `json:"permanent_goal"` + ShowCharacter bool `json:"show_character"` } type Character struct { @@ -42,7 +42,7 @@ func Load(path string) (*Character, error) { return &c, nil } -func (a *Agent) State() action.StateResult { +func (a *Agent) State() action.AgentInternalState { return *a.currentState } diff --git a/go.mod b/go.mod index c2851b5..b4d128a 100644 --- a/go.mod +++ b/go.mod @@ -9,13 +9,13 @@ require ( github.com/chasefleming/elem-go v0.25.0 github.com/donseba/go-htmx v1.8.0 github.com/dslipak/pdf v0.0.2 + github.com/eritikass/githubmarkdownconvertergo v0.1.10 github.com/go-telegram/bot v1.2.1 github.com/gofiber/fiber/v2 v2.52.4 github.com/gofiber/template/html/v2 v2.1.1 github.com/google/go-github/v61 v61.0.0 github.com/onsi/ginkgo/v2 v2.15.0 github.com/onsi/gomega v1.31.1 - github.com/oxffaa/gopher-parse-sitemap v0.0.0-20191021113419-005d2eb1def4 github.com/philippgille/chromem-go v0.5.0 github.com/sashabaranov/go-openai v1.18.3 github.com/slack-go/slack v0.12.5 @@ -23,6 +23,7 @@ require ( github.com/traefik/yaegi v0.16.1 github.com/valyala/fasthttp v1.52.0 jaytaylor.com/html2text v0.0.0-20230321000545-74c2419ad056 + mvdan.cc/xurls/v2 v2.6.0 ) require ( @@ -33,7 +34,6 @@ require ( github.com/antchfx/xmlquery v1.3.17 // indirect github.com/antchfx/xpath v1.2.4 // indirect github.com/dlclark/regexp2 v1.10.0 // indirect - github.com/eritikass/githubmarkdownconvertergo v0.1.10 // indirect github.com/go-logr/logr v1.3.0 // indirect github.com/go-task/slim-sprig v0.0.0-20230315185526-52ccab3ef572 // indirect github.com/gobwas/glob v0.2.3 // indirect @@ -61,11 +61,11 @@ require ( github.com/valyala/bytebufferpool v1.0.0 // indirect github.com/valyala/tcplisten v1.0.0 // indirect go.starlark.net v0.0.0-20230302034142-4b1e35fe2254 // indirect - golang.org/x/crypto v0.19.0 // indirect - golang.org/x/net v0.21.0 // indirect - golang.org/x/sys v0.19.0 // indirect - golang.org/x/text v0.14.0 // indirect - golang.org/x/tools v0.16.1 // indirect + golang.org/x/crypto v0.30.0 // indirect + golang.org/x/net v0.32.0 // indirect + golang.org/x/sys v0.28.0 // indirect + golang.org/x/text v0.21.0 // indirect + golang.org/x/tools v0.28.0 // indirect google.golang.org/appengine v1.6.8 // indirect google.golang.org/protobuf v1.32.0 // indirect gopkg.in/yaml.v3 v3.0.1 // indirect diff --git a/go.sum b/go.sum index d4f488f..44384cd 100644 --- a/go.sum +++ b/go.sum @@ -112,8 +112,6 @@ github.com/onsi/ginkgo/v2 v2.15.0 h1:79HwNRBAZHOEwrczrgSOPy+eFTTlIGELKy5as+ClttY github.com/onsi/ginkgo/v2 v2.15.0/go.mod h1:HlxMHtYF57y6Dpf+mc5529KKmSq9h2FpCF+/ZkwUxKM= github.com/onsi/gomega v1.31.1 h1:KYppCUK+bUgAZwHOu7EXVBKyQA6ILvOESHkn/tgoqvo= github.com/onsi/gomega v1.31.1/go.mod h1:y40C95dwAD1Nz36SsEnxvfFe8FFfNxzI5eJ0EYGyAy0= -github.com/oxffaa/gopher-parse-sitemap v0.0.0-20191021113419-005d2eb1def4 h1:2vmb32OdDhjZf2ETGDlr9n8RYXx7c+jXPxMiPbwnA+8= -github.com/oxffaa/gopher-parse-sitemap v0.0.0-20191021113419-005d2eb1def4/go.mod h1:2JQx4jDHmWrbABvpOayg/+OTU6ehN0IyK2EHzceXpJo= github.com/philippgille/chromem-go v0.5.0 h1:bryX0F3N6jnN/21iBd8i2/k9EzPTZn3nyiqAti19si8= github.com/philippgille/chromem-go v0.5.0/go.mod h1:hTd+wGEm/fFPQl7ilfCwQXkgEUxceYh86iIdoKMolPo= github.com/pkoukk/tiktoken-go v0.1.6 h1:JF0TlJzhTbrI30wCvFuiw6FzP2+/bR+FIxUdgEAcUsw= @@ -155,8 +153,8 @@ go.starlark.net v0.0.0-20230302034142-4b1e35fe2254/go.mod h1:jxU+3+j+71eXOW14274 golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= golang.org/x/crypto v0.0.0-20210421170649-83a5a9bb288b/go.mod h1:T9bdIzuCu7OtxOm1hfPfRQxPLYneinmdGuTeoZ9dtd4= golang.org/x/crypto v0.0.0-20210921155107-089bfa567519/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc= -golang.org/x/crypto v0.19.0 h1:ENy+Az/9Y1vSrlrvBSyna3PITt4tiZLf7sgCjZBX7Wo= -golang.org/x/crypto v0.19.0/go.mod h1:Iy9bg/ha4yyC70EfRS8jz+B6ybOBKMaSxLj6P6oBDfU= +golang.org/x/crypto v0.30.0 h1:RwoQn3GkWiMkzlX562cLB7OxWvjH1L8xutO2WoJcRoY= +golang.org/x/crypto v0.30.0/go.mod h1:kDsLvtWBEx7MV9tJOj9bnXsPbxwJQ6csT/x4KIN4Ssk= golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= golang.org/x/lint v0.0.0-20181026193005-c67002cb31c3/go.mod h1:UVdnD1Gm6xHRNCYTkRU2/jEulfH38KcIWyp/GAMgvoE= golang.org/x/lint v0.0.0-20190227174305-5b3e6a55c961/go.mod h1:wehouNa3lNwaWXcvxsM5YxQ5yQlVC4a0KAMCusXpPoU= @@ -175,8 +173,8 @@ golang.org/x/net v0.5.0/go.mod h1:DivGGAXEgPSlEBzxGzZI+ZLohi+xUj054jfeKui00ws= golang.org/x/net v0.6.0/go.mod h1:2Tu9+aMcznHK/AK1HMvgo6xiTLG5rD5rZLDS+rp2Bjs= golang.org/x/net v0.7.0/go.mod h1:2Tu9+aMcznHK/AK1HMvgo6xiTLG5rD5rZLDS+rp2Bjs= golang.org/x/net v0.9.0/go.mod h1:d48xBJpPfHeWQsugry2m+kC02ZBRGRgulfHnEXEuWns= -golang.org/x/net v0.21.0 h1:AQyQV4dYCvJ7vGmJyKki9+PBdyvhkSd8EIx/qb0AYv4= -golang.org/x/net v0.21.0/go.mod h1:bIjVDfnllIU7BJ2DNgfnXvpSvtn8VRwhlsaeUTyUS44= +golang.org/x/net v0.32.0 h1:ZqPmj8Kzc+Y6e0+skZsuACbx+wzMgo5MQsJh9Qd6aYI= +golang.org/x/net v0.32.0/go.mod h1:CwU0IoeOlnQQWJ6ioyFrfRuomB8GKF6KbYXZVyeXNfs= golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U= golang.org/x/sync v0.0.0-20180314180146-1d60e4601c6f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20181108010431-42b317875d0f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= @@ -197,8 +195,8 @@ golang.org/x/sys v0.4.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.5.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.7.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.19.0 h1:q5f1RH2jigJ1MoAWp2KTp3gm5zAGFUTarQZ5U386+4o= -golang.org/x/sys v0.19.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= +golang.org/x/sys v0.28.0 h1:Fksou7UEQUWlKvIdsqzJmUmCX3cZuD2+P3XyyzwMhlA= +golang.org/x/sys v0.28.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo= golang.org/x/term v0.0.0-20210927222741-03fcf44c2211/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8= golang.org/x/term v0.0.0-20220526004731-065cf7ba2467/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8= @@ -213,8 +211,8 @@ golang.org/x/text v0.3.8/go.mod h1:E6s5w1FMmriuDzIBO73fBruAKo1PCIq6d2Q6DHfQ8WQ= golang.org/x/text v0.6.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8= golang.org/x/text v0.7.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8= golang.org/x/text v0.9.0/go.mod h1:e1OnstbJyHTd6l/uOt8jFFHp6TRDWZR/bV3emEE/zU8= -golang.org/x/text v0.14.0 h1:ScX5w1eTa3QqT8oi6+ziP7dTV1S2+ALU0bI+0zXKWiQ= -golang.org/x/text v0.14.0/go.mod h1:18ZOQIKpY8NJVqYksKHtTdi31H5itFRjB5/qKTNYzSU= +golang.org/x/text v0.21.0 h1:zyQAAkrwaneQ066sspRyJaG9VNi/YJ1NfzcGB3hZ/qo= +golang.org/x/text v0.21.0/go.mod h1:4IBbMaMmOPCJ8SecivzSH54+73PCFmPWxNTLm+vZkEQ= golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20190114222345-bf090417da8b/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20190226205152-f727befe758c/go.mod h1:9Yl7xja0Znq3iFh3HoIrodX9oNMXvdceNzlUR8zjMvY= @@ -223,8 +221,8 @@ golang.org/x/tools v0.0.0-20190524140312-2c0ae7006135/go.mod h1:RgjU9mgBXZiqYHBn golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= golang.org/x/tools v0.1.12/go.mod h1:hNGJHUnrk76NpqgfD5Aqm5Crs+Hm0VOH/i9J2+nxYbc= golang.org/x/tools v0.6.0/go.mod h1:Xwgl3UAJ/d3gWutnCtw505GrjyAbvKui8lOU390QaIU= -golang.org/x/tools v0.16.1 h1:TLyB3WofjdOEepBHAU20JdNC1Zbg87elYofWYAY5oZA= -golang.org/x/tools v0.16.1/go.mod h1:kYVVN6I1mBNoB1OX+noeBjbRk4IUEPa7JJ+TJMEooJ0= +golang.org/x/tools v0.28.0 h1:WuB6qZ4RPCQo5aP3WdKZS7i595EdWqWR8vqJTlwTVK8= +golang.org/x/tools v0.28.0/go.mod h1:dcIOrVd3mfQKTgrDVQHqCPMWy6lnhfhtX3hLXYVLfRw= golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= @@ -259,3 +257,5 @@ honnef.co/go/tools v0.0.0-20190102054323-c2f93a96b099/go.mod h1:rf3lG4BRIbNafJWh honnef.co/go/tools v0.0.0-20190523083050-ea95bdfd59fc/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= jaytaylor.com/html2text v0.0.0-20230321000545-74c2419ad056 h1:6YFJoB+0fUH6X3xU/G2tQqCYg+PkGtnZ5nMR5rpw72g= jaytaylor.com/html2text v0.0.0-20230321000545-74c2419ad056/go.mod h1:OxvTsCwKosqQ1q7B+8FwXqg4rKZ/UG9dUW+g/VL2xH4= +mvdan.cc/xurls/v2 v2.6.0 h1:3NTZpeTxYVWNSokW3MKeyVkz/j7uYXYiMtXRUfmjbgI= +mvdan.cc/xurls/v2 v2.6.0/go.mod h1:bCvEZ1XvdA6wDnxY7jPPjEmigDtvtvPXAD/Exa9IMSk= diff --git a/services/actions/genimage.go b/services/actions/genimage.go index f17ea87..13fe360 100644 --- a/services/actions/genimage.go +++ b/services/actions/genimage.go @@ -9,6 +9,10 @@ import ( "github.com/sashabaranov/go-openai/jsonschema" ) +const ( + MetadataImages = "images_url" +) + func NewGenImage(config map[string]string) *GenImageAction { defaultConfig := openai.DefaultConfig(config["apiKey"]) defaultConfig.BaseURL = config["apiURL"] @@ -65,7 +69,7 @@ func (a *GenImageAction) Run(ctx context.Context, params action.ActionParams) (a return action.ActionResult{ Result: fmt.Sprintf("The image was generated and available at: %s", resp.Data[0].URL), Metadata: map[string]interface{}{ - "url": resp.Data[0].URL, + MetadataImages: []string{resp.Data[0].URL}, }}, nil } diff --git a/services/actions/search.go b/services/actions/search.go index 15d136b..3fe963e 100644 --- a/services/actions/search.go +++ b/services/actions/search.go @@ -8,6 +8,11 @@ import ( "github.com/mudler/LocalAgent/core/action" "github.com/sashabaranov/go-openai/jsonschema" "github.com/tmc/langchaingo/tools/duckduckgo" + "mvdan.cc/xurls/v2" +) + +const ( + MetadataUrls = "urls" ) func NewSearch(config map[string]string) *SearchAction { @@ -50,7 +55,11 @@ func (a *SearchAction) Run(ctx context.Context, params action.ActionParams) (act return action.ActionResult{}, err } - return action.ActionResult{Result: res}, nil + + rxStrict := xurls.Strict() + urls := rxStrict.FindAllString(res, -1) + + return action.ActionResult{Result: res, Metadata: map[string]interface{}{MetadataUrls: urls}}, nil } func (a *SearchAction) Definition() action.ActionDefinition { diff --git a/services/connectors/slack.go b/services/connectors/slack.go index a524cb2..73cf741 100644 --- a/services/connectors/slack.go +++ b/services/connectors/slack.go @@ -7,6 +7,7 @@ import ( "strings" "github.com/mudler/LocalAgent/pkg/xlog" + "github.com/mudler/LocalAgent/services/actions" "github.com/sashabaranov/go-openai" "github.com/mudler/LocalAgent/core/agent" @@ -55,6 +56,35 @@ func cleanUpUsernameFromMessage(message string, b *slack.AuthTestResponse) strin return cleaned } +func generateAttachmentsFromJobResponse(j *agent.JobResult) (attachments []slack.Attachment) { + for _, state := range j.State { + // coming from the search action + if urls, exists := state.Metadata[actions.MetadataUrls]; exists { + for _, url := range urls.([]string) { + attachment := slack.Attachment{ + Title: "URL", + TitleLink: url, + Text: url, + } + attachments = append(attachments, attachment) + } + } + + // coming from the gen image actions + if imagesUrls, exists := state.Metadata[actions.MetadataImages]; exists { + for _, url := range imagesUrls.([]string) { + attachment := slack.Attachment{ + Title: "Image", + TitleLink: url, + ImageURL: url, + } + attachments = append(attachments, attachment) + } + } + } + return +} + func (t *Slack) Start(a *agent.Agent) { api := slack.New( t.botToken, @@ -129,6 +159,7 @@ func (t *Slack) Start(a *agent.Agent) { _, _, err = api.PostMessage(ev.Channel, slack.MsgOptionText(res.Response, true), slack.MsgOptionPostMessageParameters(postMessageParams), + slack.MsgOptionAttachments(generateAttachmentsFromJobResponse(res)...), // slack.MsgOptionTS(ts), ) if err != nil { @@ -194,10 +225,12 @@ func (t *Slack) Start(a *agent.Agent) { slack.MsgOptionPostMessageParameters( postMessageParams, ), + slack.MsgOptionAttachments(generateAttachmentsFromJobResponse(res)...), slack.MsgOptionTS(ts)) } else { _, _, err = api.PostMessage(ev.Channel, slack.MsgOptionText(res.Response, true), + slack.MsgOptionAttachments(generateAttachmentsFromJobResponse(res)...), slack.MsgOptionPostMessageParameters( postMessageParams, ), From 042c1ee65c2f4739fdb4d6c9292435b890787580 Mon Sep 17 00:00:00 2001 From: Ettore Di Giacinto Date: Sat, 1 Mar 2025 22:20:49 +0100 Subject: [PATCH 188/399] Uniq results --- services/connectors/slack.go | 16 ++++++++++++++-- 1 file changed, 14 insertions(+), 2 deletions(-) diff --git a/services/connectors/slack.go b/services/connectors/slack.go index 73cf741..2e87ac5 100644 --- a/services/connectors/slack.go +++ b/services/connectors/slack.go @@ -56,11 +56,23 @@ func cleanUpUsernameFromMessage(message string, b *slack.AuthTestResponse) strin return cleaned } +func uniqueStringSlice(s []string) []string { + keys := make(map[string]bool) + list := []string{} + for _, entry := range s { + if _, value := keys[entry]; !value { + keys[entry] = true + list = append(list, entry) + } + } + return list +} + func generateAttachmentsFromJobResponse(j *agent.JobResult) (attachments []slack.Attachment) { for _, state := range j.State { // coming from the search action if urls, exists := state.Metadata[actions.MetadataUrls]; exists { - for _, url := range urls.([]string) { + for _, url := range uniqueStringSlice(urls.([]string)) { attachment := slack.Attachment{ Title: "URL", TitleLink: url, @@ -72,7 +84,7 @@ func generateAttachmentsFromJobResponse(j *agent.JobResult) (attachments []slack // coming from the gen image actions if imagesUrls, exists := state.Metadata[actions.MetadataImages]; exists { - for _, url := range imagesUrls.([]string) { + for _, url := range uniqueStringSlice(imagesUrls.([]string)) { attachment := slack.Attachment{ Title: "Image", TitleLink: url, From e696c5ae31cfccbd1b4dedac5ee807df8a6c65c7 Mon Sep 17 00:00:00 2001 From: Ettore Di Giacinto Date: Sat, 1 Mar 2025 22:31:49 +0100 Subject: [PATCH 189/399] Save conversations also at the end --- core/agent/agent.go | 59 ++++++++++++++++++++++++--------------------- 1 file changed, 32 insertions(+), 27 deletions(-) diff --git a/core/agent/agent.go b/core/agent/agent.go index be99535..02c93e5 100644 --- a/core/agent/agent.go +++ b/core/agent/agent.go @@ -168,6 +168,36 @@ func (a *Agent) askLLM(ctx context.Context, conversation []openai.ChatCompletion return resp.Choices[0].Message, nil } +func (a *Agent) saveCurrentConversationInMemory() { + if !a.options.enableLongTermMemory { + return + } + + xlog.Info("Saving conversation", "agent", a.Character.Name, "conversation size", len(a.currentConversation)) + + if a.options.enableSummaryMemory && len(a.currentConversation) > 0 { + msg, err := a.askLLM(a.context.Context, []openai.ChatCompletionMessage{{ + Role: "user", + Content: "Summarize the conversation below, keep the highlights as a bullet list:\n" + Messages(a.currentConversation).String(), + }}) + if err != nil { + xlog.Error("Error summarizing conversation", "error", err) + } + + if err := a.options.ragdb.Store(msg.Content); err != nil { + xlog.Error("Error storing into memory", "error", err) + } + } else { + for _, message := range a.currentConversation { + if message.Role == "user" { + if err := a.options.ragdb.Store(message.Content); err != nil { + xlog.Error("Error storing into memory", "error", err) + } + } + } + } +} + func (a *Agent) ResetConversation() { a.Lock() defer a.Unlock() @@ -177,33 +207,7 @@ func (a *Agent) ResetConversation() { // store into memory the conversation before pruning it // TODO: Shall we summarize the conversation into a bullet list of highlights // using the LLM instead? - if a.options.enableLongTermMemory { - xlog.Info("Saving conversation", "agent", a.Character.Name, "conversation size", len(a.currentConversation)) - - if a.options.enableSummaryMemory && len(a.currentConversation) > 0 { - - msg, err := a.askLLM(a.context.Context, []openai.ChatCompletionMessage{{ - Role: "user", - Content: "Summarize the conversation below, keep the highlights as a bullet list:\n" + Messages(a.currentConversation).String(), - }}) - if err != nil { - xlog.Error("Error summarizing conversation", "error", err) - } - - if err := a.options.ragdb.Store(msg.Content); err != nil { - xlog.Error("Error storing into memory", "error", err) - } - } else { - for _, message := range a.currentConversation { - if message.Role == "user" { - if err := a.options.ragdb.Store(message.Content); err != nil { - xlog.Error("Error storing into memory", "error", err) - } - } - } - } - - } + a.saveCurrentConversationInMemory() a.currentConversation = []openai.ChatCompletionMessage{} } @@ -702,6 +706,7 @@ func (a *Agent) consumeJob(job *Job, role string) { job.Result.SetResponse(msg.Content) xlog.Info("Response from LLM", "response", msg.Content, "agent", a.Character.Name) job.Result.Conversation = a.currentConversation + a.saveCurrentConversationInMemory() job.Result.Finish(nil) } From 7a98408336c966c168d58f733dcc5802b940a4fc Mon Sep 17 00:00:00 2001 From: Ettore Di Giacinto Date: Sat, 1 Mar 2025 22:40:42 +0100 Subject: [PATCH 190/399] Fixups, enhance logging --- core/agent/agent.go | 3 +++ 1 file changed, 3 insertions(+) diff --git a/core/agent/agent.go b/core/agent/agent.go index 02c93e5..02094b7 100644 --- a/core/agent/agent.go +++ b/core/agent/agent.go @@ -170,6 +170,7 @@ func (a *Agent) askLLM(ctx context.Context, conversation []openai.ChatCompletion func (a *Agent) saveCurrentConversationInMemory() { if !a.options.enableLongTermMemory { + xlog.Debug("Long term memory is disabled", "agent", a.Character.Name) return } @@ -678,6 +679,7 @@ func (a *Agent) consumeJob(job *Job, role string) { a.currentConversation = append(a.currentConversation, msg) job.Result.Conversation = a.currentConversation job.Result.SetResponse(msg.Content) + a.saveCurrentConversationInMemory() job.Result.Finish(nil) return } @@ -688,6 +690,7 @@ func (a *Agent) consumeJob(job *Job, role string) { if err != nil { job.Result.Conversation = a.currentConversation job.Result.Finish(err) + xlog.Error("Error asking LLM for a reply", "error", err) return } From 89d7da3817520996c8e24d183bf54b0daebd73a4 Mon Sep 17 00:00:00 2001 From: Ettore Di Giacinto Date: Sat, 1 Mar 2025 22:44:45 +0100 Subject: [PATCH 191/399] Logging --- pkg/localrag/client.go | 3 +++ 1 file changed, 3 insertions(+) diff --git a/pkg/localrag/client.go b/pkg/localrag/client.go index 63c82c5..9268d7a 100644 --- a/pkg/localrag/client.go +++ b/pkg/localrag/client.go @@ -15,6 +15,7 @@ import ( "path/filepath" "github.com/mudler/LocalAgent/core/agent" + "github.com/mudler/LocalAgent/pkg/xlog" ) var _ agent.RAGDB = &WrappedClient{} @@ -62,6 +63,8 @@ func (c *WrappedClient) Store(s string) error { hash := md5.Sum([]byte(s)) fileName := hex.EncodeToString(hash[:]) + ".txt" + xlog.Debug("Storing string in LocalRAG", "collection", c.collection, "fileName", fileName) + tempdir, err := os.MkdirTemp("", "localrag") if err != nil { return err From 3a7e56cdf1d22210dc0155bcf14846c31bbf4906 Mon Sep 17 00:00:00 2001 From: mudler Date: Sun, 2 Mar 2025 17:43:11 +0100 Subject: [PATCH 192/399] Cleanup --- core/agent/agent.go | 103 ++++++++++++++++++++++------------------- pkg/localrag/client.go | 6 ++- 2 files changed, 60 insertions(+), 49 deletions(-) diff --git a/core/agent/agent.go b/core/agent/agent.go index 02094b7..053c2a0 100644 --- a/core/agent/agent.go +++ b/core/agent/agent.go @@ -169,7 +169,7 @@ func (a *Agent) askLLM(ctx context.Context, conversation []openai.ChatCompletion } func (a *Agent) saveCurrentConversationInMemory() { - if !a.options.enableLongTermMemory { + if !a.options.enableLongTermMemory && !a.options.enableSummaryMemory { xlog.Debug("Long term memory is disabled", "agent", a.Character.Name) return } @@ -280,6 +280,57 @@ func (a *Agent) runAction(chosenAction Action, params action.ActionParams) (resu return result, nil } +func (a *Agent) knowledgeBaseLookup() { + if (!a.options.enableKB && !a.options.enableLongTermMemory && !a.options.enableSummaryMemory) || + len(a.currentConversation) <= 0 { + xlog.Debug("[Knowledge Base Lookup] Disabled, skipping", "agent", a.Character.Name) + return + } + + // Walk conversation from bottom to top, and find the first message of the user + // to use it as a query to the KB + var userMessage string + for i := len(a.currentConversation) - 1; i >= 0; i-- { + xlog.Info("[Knowledge Base Lookup] Conversation", "role", a.currentConversation[i].Role, "Content", a.currentConversation[i].Content) + if a.currentConversation[i].Role == "user" { + userMessage = a.currentConversation[i].Content + break + } + } + xlog.Info("[Knowledge Base Lookup] Last user message", "agent", a.Character.Name, "message", userMessage) + + if userMessage != "" { + results, err := a.options.ragdb.Search(userMessage, a.options.kbResults) + if err != nil { + xlog.Info("Error finding similar strings inside KB:", "error", err) + + // job.Result.Finish(fmt.Errorf("error finding similar strings inside KB: %w", err)) + // return + } + + if len(results) != 0 { + + formatResults := "" + for _, r := range results { + formatResults += fmt.Sprintf("- %s \n", r) + } + xlog.Info("[Knowledge Base Lookup] Found similar strings in KB", "agent", a.Character.Name, "results", formatResults) + + // a.currentConversation = append(a.currentConversation, + // openai.ChatCompletionMessage{ + // Role: "system", + // Content: fmt.Sprintf("Given the user input you have the following in memory:\n%s", formatResults), + // }, + // ) + a.currentConversation = append([]openai.ChatCompletionMessage{ + { + Role: "system", + Content: fmt.Sprintf("Given the user input you have the following in memory:\n%s", formatResults), + }}, a.currentConversation...) + } + } +} + func (a *Agent) consumeJob(job *Job, role string) { a.Lock() paused := a.pause @@ -354,54 +405,8 @@ func (a *Agent) consumeJob(job *Job, role string) { }) } - // TODO: move to a promptblock? // RAG - if a.options.enableLongTermMemory && len(a.currentConversation) > 0 { - // Walk conversation from bottom to top, and find the first message of the user - // to use it as a query to the KB - var userMessage string - for i := len(a.currentConversation) - 1; i >= 0; i-- { - xlog.Info("[Long term memory] Conversation", "role", a.currentConversation[i].Role, "Content", a.currentConversation[i].Content) - if a.currentConversation[i].Role == "user" { - userMessage = a.currentConversation[i].Content - break - } - } - xlog.Info("[Long term memory] User message", "agent", a.Character.Name, "message", userMessage) - - if userMessage != "" { - results, err := a.options.ragdb.Search(userMessage, a.options.kbResults) - if err != nil { - xlog.Info("Error finding similar strings inside KB:", "error", err) - - // job.Result.Finish(fmt.Errorf("error finding similar strings inside KB: %w", err)) - // return - } - - if len(results) != 0 { - - formatResults := "" - for _, r := range results { - formatResults += fmt.Sprintf("- %s \n", r) - } - xlog.Info("Found similar strings in KB", "agent", a.Character.Name, "results", formatResults) - - // a.currentConversation = append(a.currentConversation, - // openai.ChatCompletionMessage{ - // Role: "system", - // Content: fmt.Sprintf("Given the user input you have the following in memory:\n%s", formatResults), - // }, - // ) - a.currentConversation = append([]openai.ChatCompletionMessage{ - { - Role: "system", - Content: fmt.Sprintf("Given the user input you have the following in memory:\n%s", formatResults), - }}, a.currentConversation...) - } - } - } else { - xlog.Info("[Long term memory] No conversation available", "agent", a.Character.Name) - } + a.knowledgeBaseLookup() var pickTemplate string var reEvaluationTemplate string @@ -451,6 +456,7 @@ func (a *Agent) consumeJob(job *Job, role string) { Content: reasoning, }) job.Result.Conversation = a.currentConversation + a.saveCurrentConversationInMemory() job.Result.SetResponse(reasoning) job.Result.Finish(nil) return @@ -600,6 +606,7 @@ func (a *Agent) consumeJob(job *Job, role string) { } a.currentConversation = append(a.currentConversation, msg) + a.saveCurrentConversationInMemory() job.Result.SetResponse(msg.Content) job.Result.Conversation = a.currentConversation job.Result.Finish(nil) diff --git a/pkg/localrag/client.go b/pkg/localrag/client.go index 9268d7a..f54b18d 100644 --- a/pkg/localrag/client.go +++ b/pkg/localrag/client.go @@ -26,10 +26,14 @@ type WrappedClient struct { } func NewWrappedClient(baseURL, collection string) *WrappedClient { - return &WrappedClient{ + wc := &WrappedClient{ Client: NewClient(baseURL), collection: collection, } + + wc.CreateCollection(collection) + + return wc } func (c *WrappedClient) Count() int { From 6c83f3d0896b0fdd2fa0a82e0d67f3e671494aac Mon Sep 17 00:00:00 2001 From: mudler Date: Sun, 2 Mar 2025 17:45:06 +0100 Subject: [PATCH 193/399] refactorings --- core/agent/agent.go | 60 +++++++++++++++++++++++---------------------- 1 file changed, 31 insertions(+), 29 deletions(-) diff --git a/core/agent/agent.go b/core/agent/agent.go index 053c2a0..6a11a4d 100644 --- a/core/agent/agent.go +++ b/core/agent/agent.go @@ -299,36 +299,38 @@ func (a *Agent) knowledgeBaseLookup() { } xlog.Info("[Knowledge Base Lookup] Last user message", "agent", a.Character.Name, "message", userMessage) - if userMessage != "" { - results, err := a.options.ragdb.Search(userMessage, a.options.kbResults) - if err != nil { - xlog.Info("Error finding similar strings inside KB:", "error", err) - - // job.Result.Finish(fmt.Errorf("error finding similar strings inside KB: %w", err)) - // return - } - - if len(results) != 0 { - - formatResults := "" - for _, r := range results { - formatResults += fmt.Sprintf("- %s \n", r) - } - xlog.Info("[Knowledge Base Lookup] Found similar strings in KB", "agent", a.Character.Name, "results", formatResults) - - // a.currentConversation = append(a.currentConversation, - // openai.ChatCompletionMessage{ - // Role: "system", - // Content: fmt.Sprintf("Given the user input you have the following in memory:\n%s", formatResults), - // }, - // ) - a.currentConversation = append([]openai.ChatCompletionMessage{ - { - Role: "system", - Content: fmt.Sprintf("Given the user input you have the following in memory:\n%s", formatResults), - }}, a.currentConversation...) - } + if userMessage == "" { + xlog.Info("[Knowledge Base Lookup] No user message found in conversation", "agent", a.Character.Name) + return } + + results, err := a.options.ragdb.Search(userMessage, a.options.kbResults) + if err != nil { + xlog.Info("Error finding similar strings inside KB:", "error", err) + } + + if len(results) == 0 { + xlog.Info("[Knowledge Base Lookup] No similar strings found in KB", "agent", a.Character.Name) + return + } + + formatResults := "" + for _, r := range results { + formatResults += fmt.Sprintf("- %s \n", r) + } + xlog.Info("[Knowledge Base Lookup] Found similar strings in KB", "agent", a.Character.Name, "results", formatResults) + + // a.currentConversation = append(a.currentConversation, + // openai.ChatCompletionMessage{ + // Role: "system", + // Content: fmt.Sprintf("Given the user input you have the following in memory:\n%s", formatResults), + // }, + // ) + a.currentConversation = append([]openai.ChatCompletionMessage{ + { + Role: "system", + Content: fmt.Sprintf("Given the user input you have the following in memory:\n%s", formatResults), + }}, a.currentConversation...) } func (a *Agent) consumeJob(job *Job, role string) { From 5721c52c0d17e1df14dac808a9c852815e31963c Mon Sep 17 00:00:00 2001 From: Ettore Di Giacinto Date: Sun, 2 Mar 2025 21:27:11 +0100 Subject: [PATCH 194/399] use date for file name prefix --- pkg/localrag/client.go | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/pkg/localrag/client.go b/pkg/localrag/client.go index f54b18d..0dfd1c9 100644 --- a/pkg/localrag/client.go +++ b/pkg/localrag/client.go @@ -13,6 +13,7 @@ import ( "net/http" "os" "path/filepath" + "time" "github.com/mudler/LocalAgent/core/agent" "github.com/mudler/LocalAgent/pkg/xlog" @@ -64,8 +65,11 @@ func (c *WrappedClient) Store(s string) error { // the Client API of LocalRAG takes only files at the moment. // So we take the string that we want to store, write it to a file, and then store the file. + // get current date and time for file name + t := time.Now() + dateTime := t.Format("2006-01-02-15-04-05") hash := md5.Sum([]byte(s)) - fileName := hex.EncodeToString(hash[:]) + ".txt" + fileName := fmt.Sprintf("%s-%s.%s", dateTime, hex.EncodeToString(hash[:]), "txt") xlog.Debug("Storing string in LocalRAG", "collection", c.collection, "fileName", fileName) From f6e16be170373f9c641e615cf9e0ce5df6c52974 Mon Sep 17 00:00:00 2001 From: Ettore Di Giacinto Date: Sun, 2 Mar 2025 22:40:37 +0100 Subject: [PATCH 195/399] Allow to specify dynamic prompts --- core/agent/agent.go | 10 +++- core/agent/jobs.go | 1 + core/agent/options.go | 21 +++++++-- core/agent/prompt.go | 101 ++++++++++++++++++++++++++++++++++++++++ core/state/config.go | 19 +++++++- core/state/pool.go | 11 +++++ main.go | 12 ++++- webui/prompts.go | 41 ++++++++++++++++ webui/routes.go | 5 +- webui/views/create.html | 29 +++++++++++- 10 files changed, 237 insertions(+), 13 deletions(-) create mode 100644 core/agent/prompt.go create mode 100644 webui/prompts.go diff --git a/core/agent/agent.go b/core/agent/agent.go index 6a11a4d..af6b2e4 100644 --- a/core/agent/agent.go +++ b/core/agent/agent.go @@ -379,7 +379,15 @@ func (a *Agent) consumeJob(job *Job, role string) { //} // Add custom prompts for _, prompt := range a.options.prompts { - message := prompt.Render(a) + message, err := prompt.Render(a) + if err != nil { + xlog.Error("Error rendering prompt", "error", err) + continue + } + if message == "" { + xlog.Debug("Prompt is empty, skipping", "agent", a.Character.Name) + continue + } if !Messages(a.currentConversation).Exist(a.options.systemPrompt) { a.currentConversation = append([]openai.ChatCompletionMessage{ { diff --git a/core/agent/jobs.go b/core/agent/jobs.go index 5d5c4df..a3b5086 100644 --- a/core/agent/jobs.go +++ b/core/agent/jobs.go @@ -25,6 +25,7 @@ type JobResult struct { // The result of a job State []ActionState Conversation []openai.ChatCompletionMessage + Response string Error error ready chan bool diff --git a/core/agent/options.go b/core/agent/options.go index ed90240..2971a97 100644 --- a/core/agent/options.go +++ b/core/agent/options.go @@ -42,11 +42,6 @@ type options struct { resultCallback func(ActionState) } -type PromptBlock interface { - Render(a *Agent) string - Role() string -} - func defaultOptions() *options { return &options{ periodicRuns: 15 * time.Minute, @@ -182,6 +177,22 @@ func WithPrompts(prompts ...PromptBlock) Option { } } +// WithDynamicPrompts is a helper function to create dynamic prompts +// Dynamic prompts contains golang code which is executed dynamically +// // to render a prompt to the LLM +// func WithDynamicPrompts(prompts ...map[string]string) Option { +// return func(o *options) error { +// for _, p := range prompts { +// prompt, err := NewDynamicPrompt(p, "") +// if err != nil { +// return err +// } +// o.prompts = append(o.prompts, prompt) +// } +// return nil +// } +// } + func WithLLMAPIKey(key string) Option { return func(o *options) error { o.LLMAPI.APIKey = key diff --git a/core/agent/prompt.go b/core/agent/prompt.go new file mode 100644 index 0000000..f1a68ed --- /dev/null +++ b/core/agent/prompt.go @@ -0,0 +1,101 @@ +package agent + +import ( + "fmt" + "strings" + + "github.com/mudler/LocalAgent/pkg/xlog" + "github.com/traefik/yaegi/interp" + "github.com/traefik/yaegi/stdlib" +) + +type PromptBlock interface { + Render(a *Agent) (string, error) + Role() string +} + +type DynamicPrompt struct { + config map[string]string + goPkgPath string + i *interp.Interpreter +} + +func NewDynamicPrompt(config map[string]string, goPkgPath string) (*DynamicPrompt, error) { + a := &DynamicPrompt{ + config: config, + goPkgPath: goPkgPath, + } + + if err := a.initializeInterpreter(); err != nil { + return nil, err + } + + if err := a.callInit(); err != nil { + xlog.Error("Error calling custom action init", "error", err) + } + + return a, nil +} + +func (a *DynamicPrompt) callInit() error { + if a.i == nil { + return nil + } + + v, err := a.i.Eval(fmt.Sprintf("%s.Init", a.config["name"])) + if err != nil { + return err + } + + run := v.Interface().(func() error) + + return run() +} + +func (a *DynamicPrompt) initializeInterpreter() error { + if _, exists := a.config["code"]; exists && a.i == nil { + unsafe := strings.ToLower(a.config["unsafe"]) == "true" + i := interp.New(interp.Options{ + GoPath: a.goPkgPath, + Unrestricted: unsafe, + }) + if err := i.Use(stdlib.Symbols); err != nil { + return err + } + + if _, exists := a.config["name"]; !exists { + a.config["name"] = "custom" + } + + _, err := i.Eval(fmt.Sprintf("package %s\n%s", a.config["name"], a.config["code"])) + if err != nil { + return err + } + + a.i = i + } + + return nil +} + +func (a *DynamicPrompt) Render(c *Agent) (string, error) { + v, err := a.i.Eval(fmt.Sprintf("%s.Render", a.config["name"])) + if err != nil { + return "", err + } + + run := v.Interface().(func() (string, error)) + + return run() +} + +func (a *DynamicPrompt) Role() string { + v, err := a.i.Eval(fmt.Sprintf("%s.Role", a.config["name"])) + if err != nil { + return "system" + } + + run := v.Interface().(func() string) + + return run() +} diff --git a/core/state/config.go b/core/state/config.go index bcb2df1..6db904b 100644 --- a/core/state/config.go +++ b/core/state/config.go @@ -1,6 +1,8 @@ package state import ( + "encoding/json" + "github.com/mudler/LocalAgent/core/agent" ) @@ -14,9 +16,22 @@ type ActionsConfig struct { Config string `json:"config"` } +type PromptBlocksConfig struct { + Type string `json:"type"` + Config string `json:"config"` +} + +func (d PromptBlocksConfig) ToMap() map[string]string { + config := map[string]string{} + json.Unmarshal([]byte(d.Config), &config) + return config +} + type AgentConfig struct { - Connector []ConnectorConfig `json:"connectors" form:"connectors" ` - Actions []ActionsConfig `json:"actions" form:"actions"` + Connector []ConnectorConfig `json:"connectors" form:"connectors" ` + Actions []ActionsConfig `json:"actions" form:"actions"` + PromptBlocks []PromptBlocksConfig `json:"promptblocks" form:"promptblocks"` + // This is what needs to be part of ActionsConfig Model string `json:"model" form:"model"` Name string `json:"name" form:"name"` diff --git a/core/state/pool.go b/core/state/pool.go index bebb941..b5ffbf9 100644 --- a/core/state/pool.go +++ b/core/state/pool.go @@ -30,6 +30,7 @@ type AgentPool struct { apiURL, model, localRAGAPI, apiKey string availableActions func(*AgentConfig) func(ctx context.Context) []Action connectors func(*AgentConfig) []Connector + promptBlocks func(*AgentConfig) []PromptBlock timeout string } @@ -68,6 +69,7 @@ func NewAgentPool( LocalRAGAPI string, availableActions func(*AgentConfig) func(ctx context.Context) []agent.Action, connectors func(*AgentConfig) []Connector, + promptBlocks func(*AgentConfig) []PromptBlock, timeout string, ) (*AgentPool, error) { // if file exists, try to load an existing pool. @@ -160,6 +162,7 @@ func (a *AgentPool) startAgentWithConfig(name string, config *AgentConfig) error } connectors := a.connectors(config) + promptBlocks := a.promptBlocks(config) actions := a.availableActions(config)(ctx) @@ -183,12 +186,19 @@ func (a *AgentPool) startAgentWithConfig(name string, config *AgentConfig) error "connectors", connectorLog, ) + // dynamicPrompts := []map[string]string{} + // for _, p := range config.DynamicPrompts { + // dynamicPrompts = append(dynamicPrompts, p.ToMap()) + // } + opts := []Option{ WithModel(model), WithLLMAPIURL(a.apiURL), WithContext(ctx), WithPeriodicRuns(config.PeriodicRuns), WithPermanentGoal(config.PermanentGoal), + WithPrompts(promptBlocks...), + // WithDynamicPrompts(dynamicPrompts...), WithCharacter(Character{ Name: name, }), @@ -313,6 +323,7 @@ func (a *AgentPool) startAgentWithConfig(name string, config *AgentConfig) error } }() + xlog.Info("Starting connectors", "name", name, "config", config) for _, c := range connectors { go c.Start(agent) } diff --git a/main.go b/main.go index 1bbd82e..daac218 100644 --- a/main.go +++ b/main.go @@ -41,7 +41,17 @@ func main() { os.MkdirAll(stateDir, 0755) // Create the agent pool - pool, err := state.NewAgentPool(testModel, apiURL, apiKey, stateDir, localRAG, webui.Actions, webui.Connectors, timeout) + pool, err := state.NewAgentPool( + testModel, + apiURL, + apiKey, + stateDir, + localRAG, + webui.Actions, + webui.Connectors, + webui.PromptBlocks, + timeout, + ) if err != nil { panic(err) } diff --git a/webui/prompts.go b/webui/prompts.go new file mode 100644 index 0000000..cbb9e42 --- /dev/null +++ b/webui/prompts.go @@ -0,0 +1,41 @@ +package webui + +import ( + "encoding/json" + + "github.com/mudler/LocalAgent/pkg/xlog" + + "github.com/mudler/LocalAgent/core/agent" + "github.com/mudler/LocalAgent/core/state" +) + +const ( + // Connectors + DynamicPromptCustom = "custom" +) + +var AvailableBlockPrompts = []string{ + DynamicPromptCustom, +} + +func PromptBlocks(a *state.AgentConfig) []agent.PromptBlock { + promptblocks := []agent.PromptBlock{} + + for _, c := range a.PromptBlocks { + var config map[string]string + if err := json.Unmarshal([]byte(c.Config), &config); err != nil { + xlog.Info("Error unmarshalling connector config", err) + continue + } + switch c.Type { + case DynamicPromptCustom: + prompt, err := agent.NewDynamicPrompt(config, "") + if err != nil { + xlog.Error("Error creating custom prompt", "error", err) + continue + } + promptblocks = append(promptblocks, prompt) + } + } + return promptblocks +} diff --git a/webui/routes.go b/webui/routes.go index 803d071..48075d5 100644 --- a/webui/routes.go +++ b/webui/routes.go @@ -45,8 +45,9 @@ func (app *App) registerRoutes(pool *state.AgentPool, webapp *fiber.App) { webapp.Get("/create", func(c *fiber.Ctx) error { return c.Render("views/create", fiber.Map{ - "Actions": AvailableActions, - "Connectors": AvailableConnectors, + "Actions": AvailableActions, + "Connectors": AvailableConnectors, + "PromptBlocks": AvailableBlockPrompts, }) }) diff --git a/webui/views/create.html b/webui/views/create.html index 87abf4d..a3ec522 100644 --- a/webui/views/create.html +++ b/webui/views/create.html @@ -55,7 +55,6 @@ + +
+
+ + +
From 5e52383a99813a130f8111afb12e676cce4089e6 Mon Sep 17 00:00:00 2001 From: Ettore Di Giacinto Date: Sun, 2 Mar 2025 22:44:54 +0100 Subject: [PATCH 196/399] Refactorings --- core/agent/prompt.go | 95 ------------------------------ main.go | 7 ++- {webui => services}/actions.go | 2 +- {webui => services}/connectors.go | 2 +- {webui => services}/prompts.go | 5 +- services/prompts/custom.go | 97 +++++++++++++++++++++++++++++++ webui/routes.go | 9 ++- 7 files changed, 110 insertions(+), 107 deletions(-) rename {webui => services}/actions.go (99%) rename {webui => services}/connectors.go (98%) rename {webui => services}/prompts.go (87%) create mode 100644 services/prompts/custom.go diff --git a/core/agent/prompt.go b/core/agent/prompt.go index f1a68ed..b012760 100644 --- a/core/agent/prompt.go +++ b/core/agent/prompt.go @@ -1,101 +1,6 @@ package agent -import ( - "fmt" - "strings" - - "github.com/mudler/LocalAgent/pkg/xlog" - "github.com/traefik/yaegi/interp" - "github.com/traefik/yaegi/stdlib" -) - type PromptBlock interface { Render(a *Agent) (string, error) Role() string } - -type DynamicPrompt struct { - config map[string]string - goPkgPath string - i *interp.Interpreter -} - -func NewDynamicPrompt(config map[string]string, goPkgPath string) (*DynamicPrompt, error) { - a := &DynamicPrompt{ - config: config, - goPkgPath: goPkgPath, - } - - if err := a.initializeInterpreter(); err != nil { - return nil, err - } - - if err := a.callInit(); err != nil { - xlog.Error("Error calling custom action init", "error", err) - } - - return a, nil -} - -func (a *DynamicPrompt) callInit() error { - if a.i == nil { - return nil - } - - v, err := a.i.Eval(fmt.Sprintf("%s.Init", a.config["name"])) - if err != nil { - return err - } - - run := v.Interface().(func() error) - - return run() -} - -func (a *DynamicPrompt) initializeInterpreter() error { - if _, exists := a.config["code"]; exists && a.i == nil { - unsafe := strings.ToLower(a.config["unsafe"]) == "true" - i := interp.New(interp.Options{ - GoPath: a.goPkgPath, - Unrestricted: unsafe, - }) - if err := i.Use(stdlib.Symbols); err != nil { - return err - } - - if _, exists := a.config["name"]; !exists { - a.config["name"] = "custom" - } - - _, err := i.Eval(fmt.Sprintf("package %s\n%s", a.config["name"], a.config["code"])) - if err != nil { - return err - } - - a.i = i - } - - return nil -} - -func (a *DynamicPrompt) Render(c *Agent) (string, error) { - v, err := a.i.Eval(fmt.Sprintf("%s.Render", a.config["name"])) - if err != nil { - return "", err - } - - run := v.Interface().(func() (string, error)) - - return run() -} - -func (a *DynamicPrompt) Role() string { - v, err := a.i.Eval(fmt.Sprintf("%s.Role", a.config["name"])) - if err != nil { - return "system" - } - - run := v.Interface().(func() string) - - return run() -} diff --git a/main.go b/main.go index daac218..455f6c0 100644 --- a/main.go +++ b/main.go @@ -6,6 +6,7 @@ import ( "path/filepath" "github.com/mudler/LocalAgent/core/state" + "github.com/mudler/LocalAgent/services" "github.com/mudler/LocalAgent/webui" ) @@ -47,9 +48,9 @@ func main() { apiKey, stateDir, localRAG, - webui.Actions, - webui.Connectors, - webui.PromptBlocks, + services.Actions, + services.Connectors, + services.PromptBlocks, timeout, ) if err != nil { diff --git a/webui/actions.go b/services/actions.go similarity index 99% rename from webui/actions.go rename to services/actions.go index c96b23d..ad2f0a9 100644 --- a/webui/actions.go +++ b/services/actions.go @@ -1,4 +1,4 @@ -package webui +package services import ( "context" diff --git a/webui/connectors.go b/services/connectors.go similarity index 98% rename from webui/connectors.go rename to services/connectors.go index b092962..0d74454 100644 --- a/webui/connectors.go +++ b/services/connectors.go @@ -1,4 +1,4 @@ -package webui +package services import ( "encoding/json" diff --git a/webui/prompts.go b/services/prompts.go similarity index 87% rename from webui/prompts.go rename to services/prompts.go index cbb9e42..b8335ec 100644 --- a/webui/prompts.go +++ b/services/prompts.go @@ -1,9 +1,10 @@ -package webui +package services import ( "encoding/json" "github.com/mudler/LocalAgent/pkg/xlog" + "github.com/mudler/LocalAgent/services/prompts" "github.com/mudler/LocalAgent/core/agent" "github.com/mudler/LocalAgent/core/state" @@ -29,7 +30,7 @@ func PromptBlocks(a *state.AgentConfig) []agent.PromptBlock { } switch c.Type { case DynamicPromptCustom: - prompt, err := agent.NewDynamicPrompt(config, "") + prompt, err := prompts.NewDynamicPrompt(config, "") if err != nil { xlog.Error("Error creating custom prompt", "error", err) continue diff --git a/services/prompts/custom.go b/services/prompts/custom.go new file mode 100644 index 0000000..d1fcbea --- /dev/null +++ b/services/prompts/custom.go @@ -0,0 +1,97 @@ +package prompts + +import ( + "fmt" + "strings" + + "github.com/mudler/LocalAgent/core/agent" + "github.com/mudler/LocalAgent/pkg/xlog" + "github.com/traefik/yaegi/interp" + "github.com/traefik/yaegi/stdlib" +) + +type DynamicPrompt struct { + config map[string]string + goPkgPath string + i *interp.Interpreter +} + +func NewDynamicPrompt(config map[string]string, goPkgPath string) (*DynamicPrompt, error) { + a := &DynamicPrompt{ + config: config, + goPkgPath: goPkgPath, + } + + if err := a.initializeInterpreter(); err != nil { + return nil, err + } + + if err := a.callInit(); err != nil { + xlog.Error("Error calling custom action init", "error", err) + } + + return a, nil +} + +func (a *DynamicPrompt) callInit() error { + if a.i == nil { + return nil + } + + v, err := a.i.Eval(fmt.Sprintf("%s.Init", a.config["name"])) + if err != nil { + return err + } + + run := v.Interface().(func() error) + + return run() +} + +func (a *DynamicPrompt) initializeInterpreter() error { + if _, exists := a.config["code"]; exists && a.i == nil { + unsafe := strings.ToLower(a.config["unsafe"]) == "true" + i := interp.New(interp.Options{ + GoPath: a.goPkgPath, + Unrestricted: unsafe, + }) + if err := i.Use(stdlib.Symbols); err != nil { + return err + } + + if _, exists := a.config["name"]; !exists { + a.config["name"] = "custom" + } + + _, err := i.Eval(fmt.Sprintf("package %s\n%s", a.config["name"], a.config["code"])) + if err != nil { + return err + } + + a.i = i + } + + return nil +} + +func (a *DynamicPrompt) Render(c *agent.Agent) (string, error) { + v, err := a.i.Eval(fmt.Sprintf("%s.Render", a.config["name"])) + if err != nil { + return "", err + } + + run := v.Interface().(func() (string, error)) + + return run() +} + +func (a *DynamicPrompt) Role() string { + v, err := a.i.Eval(fmt.Sprintf("%s.Role", a.config["name"])) + if err != nil { + return "system" + } + + run := v.Interface().(func() string) + + return run() +} diff --git a/webui/routes.go b/webui/routes.go index 48075d5..d996438 100644 --- a/webui/routes.go +++ b/webui/routes.go @@ -10,6 +10,7 @@ import ( "github.com/mudler/LocalAgent/core/agent" "github.com/mudler/LocalAgent/core/sse" "github.com/mudler/LocalAgent/core/state" + "github.com/mudler/LocalAgent/services" ) //go:embed views/* @@ -45,9 +46,9 @@ func (app *App) registerRoutes(pool *state.AgentPool, webapp *fiber.App) { webapp.Get("/create", func(c *fiber.Ctx) error { return c.Render("views/create", fiber.Map{ - "Actions": AvailableActions, - "Connectors": AvailableConnectors, - "PromptBlocks": AvailableBlockPrompts, + "Actions": services.AvailableActions, + "Connectors": services.AvailableConnectors, + "PromptBlocks": services.AvailableBlockPrompts, }) }) @@ -97,8 +98,6 @@ func (app *App) registerRoutes(pool *state.AgentPool, webapp *fiber.App) { }) webapp.Post("/settings/import", app.ImportAgent(pool)) webapp.Get("/settings/export/:name", app.ExportAgent(pool)) - - return } var letterRunes = []rune("abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ") From 365f89cd5e75637cc4d10abdaf04e34e09e95bba Mon Sep 17 00:00:00 2001 From: Ettore Di Giacinto Date: Mon, 3 Mar 2025 21:41:03 +0100 Subject: [PATCH 197/399] initialize prompt blocks --- core/state/pool.go | 2 ++ 1 file changed, 2 insertions(+) diff --git a/core/state/pool.go b/core/state/pool.go index b5ffbf9..7be60fb 100644 --- a/core/state/pool.go +++ b/core/state/pool.go @@ -92,6 +92,7 @@ func NewAgentPool( managers: make(map[string]sse.Manager), connectors: connectors, availableActions: availableActions, + promptBlocks: promptBlocks, timeout: timeout, }, nil } @@ -112,6 +113,7 @@ func NewAgentPool( pool: *poolData, connectors: connectors, localRAGAPI: LocalRAGAPI, + promptBlocks: promptBlocks, availableActions: availableActions, timeout: timeout, }, nil From 173eda4fb3bd035ed18c1a299d0447d1d1244fcd Mon Sep 17 00:00:00 2001 From: Ettore Di Giacinto Date: Mon, 3 Mar 2025 22:34:46 +0100 Subject: [PATCH 198/399] Rework UI by returning error/statuses, some refactorings --- core/agent/agent.go | 84 ----------- core/agent/knowledgebase.go | 92 ++++++++++++ pkg/localrag/client.go | 2 - webui/app.go | 56 ++++---- webui/routes.go | 2 +- webui/views/agents.html | 231 ++++++++++++++++++++++++++++--- webui/views/create.html | 106 +++++++++++++- webui/views/partials/header.html | 27 +++- webui/views/settings.html | 175 ++++++++++++++++++++--- 9 files changed, 614 insertions(+), 161 deletions(-) create mode 100644 core/agent/knowledgebase.go diff --git a/core/agent/agent.go b/core/agent/agent.go index af6b2e4..88d4ffd 100644 --- a/core/agent/agent.go +++ b/core/agent/agent.go @@ -168,37 +168,6 @@ func (a *Agent) askLLM(ctx context.Context, conversation []openai.ChatCompletion return resp.Choices[0].Message, nil } -func (a *Agent) saveCurrentConversationInMemory() { - if !a.options.enableLongTermMemory && !a.options.enableSummaryMemory { - xlog.Debug("Long term memory is disabled", "agent", a.Character.Name) - return - } - - xlog.Info("Saving conversation", "agent", a.Character.Name, "conversation size", len(a.currentConversation)) - - if a.options.enableSummaryMemory && len(a.currentConversation) > 0 { - msg, err := a.askLLM(a.context.Context, []openai.ChatCompletionMessage{{ - Role: "user", - Content: "Summarize the conversation below, keep the highlights as a bullet list:\n" + Messages(a.currentConversation).String(), - }}) - if err != nil { - xlog.Error("Error summarizing conversation", "error", err) - } - - if err := a.options.ragdb.Store(msg.Content); err != nil { - xlog.Error("Error storing into memory", "error", err) - } - } else { - for _, message := range a.currentConversation { - if message.Role == "user" { - if err := a.options.ragdb.Store(message.Content); err != nil { - xlog.Error("Error storing into memory", "error", err) - } - } - } - } -} - func (a *Agent) ResetConversation() { a.Lock() defer a.Unlock() @@ -280,59 +249,6 @@ func (a *Agent) runAction(chosenAction Action, params action.ActionParams) (resu return result, nil } -func (a *Agent) knowledgeBaseLookup() { - if (!a.options.enableKB && !a.options.enableLongTermMemory && !a.options.enableSummaryMemory) || - len(a.currentConversation) <= 0 { - xlog.Debug("[Knowledge Base Lookup] Disabled, skipping", "agent", a.Character.Name) - return - } - - // Walk conversation from bottom to top, and find the first message of the user - // to use it as a query to the KB - var userMessage string - for i := len(a.currentConversation) - 1; i >= 0; i-- { - xlog.Info("[Knowledge Base Lookup] Conversation", "role", a.currentConversation[i].Role, "Content", a.currentConversation[i].Content) - if a.currentConversation[i].Role == "user" { - userMessage = a.currentConversation[i].Content - break - } - } - xlog.Info("[Knowledge Base Lookup] Last user message", "agent", a.Character.Name, "message", userMessage) - - if userMessage == "" { - xlog.Info("[Knowledge Base Lookup] No user message found in conversation", "agent", a.Character.Name) - return - } - - results, err := a.options.ragdb.Search(userMessage, a.options.kbResults) - if err != nil { - xlog.Info("Error finding similar strings inside KB:", "error", err) - } - - if len(results) == 0 { - xlog.Info("[Knowledge Base Lookup] No similar strings found in KB", "agent", a.Character.Name) - return - } - - formatResults := "" - for _, r := range results { - formatResults += fmt.Sprintf("- %s \n", r) - } - xlog.Info("[Knowledge Base Lookup] Found similar strings in KB", "agent", a.Character.Name, "results", formatResults) - - // a.currentConversation = append(a.currentConversation, - // openai.ChatCompletionMessage{ - // Role: "system", - // Content: fmt.Sprintf("Given the user input you have the following in memory:\n%s", formatResults), - // }, - // ) - a.currentConversation = append([]openai.ChatCompletionMessage{ - { - Role: "system", - Content: fmt.Sprintf("Given the user input you have the following in memory:\n%s", formatResults), - }}, a.currentConversation...) -} - func (a *Agent) consumeJob(job *Job, role string) { a.Lock() paused := a.pause diff --git a/core/agent/knowledgebase.go b/core/agent/knowledgebase.go new file mode 100644 index 0000000..3c9fd94 --- /dev/null +++ b/core/agent/knowledgebase.go @@ -0,0 +1,92 @@ +package agent + +import ( + "fmt" + + "github.com/mudler/LocalAgent/pkg/xlog" + "github.com/sashabaranov/go-openai" +) + +func (a *Agent) knowledgeBaseLookup() { + if (!a.options.enableKB && !a.options.enableLongTermMemory && !a.options.enableSummaryMemory) || + len(a.currentConversation) <= 0 { + xlog.Debug("[Knowledge Base Lookup] Disabled, skipping", "agent", a.Character.Name) + return + } + + // Walk conversation from bottom to top, and find the first message of the user + // to use it as a query to the KB + var userMessage string + for i := len(a.currentConversation) - 1; i >= 0; i-- { + xlog.Info("[Knowledge Base Lookup] Conversation", "role", a.currentConversation[i].Role, "Content", a.currentConversation[i].Content) + if a.currentConversation[i].Role == "user" { + userMessage = a.currentConversation[i].Content + break + } + } + xlog.Info("[Knowledge Base Lookup] Last user message", "agent", a.Character.Name, "message", userMessage) + + if userMessage == "" { + xlog.Info("[Knowledge Base Lookup] No user message found in conversation", "agent", a.Character.Name) + return + } + + results, err := a.options.ragdb.Search(userMessage, a.options.kbResults) + if err != nil { + xlog.Info("Error finding similar strings inside KB:", "error", err) + } + + if len(results) == 0 { + xlog.Info("[Knowledge Base Lookup] No similar strings found in KB", "agent", a.Character.Name) + return + } + + formatResults := "" + for _, r := range results { + formatResults += fmt.Sprintf("- %s \n", r) + } + xlog.Info("[Knowledge Base Lookup] Found similar strings in KB", "agent", a.Character.Name, "results", formatResults) + + // a.currentConversation = append(a.currentConversation, + // openai.ChatCompletionMessage{ + // Role: "system", + // Content: fmt.Sprintf("Given the user input you have the following in memory:\n%s", formatResults), + // }, + // ) + a.currentConversation = append([]openai.ChatCompletionMessage{ + { + Role: "system", + Content: fmt.Sprintf("Given the user input you have the following in memory:\n%s", formatResults), + }}, a.currentConversation...) +} + +func (a *Agent) saveCurrentConversationInMemory() { + if !a.options.enableLongTermMemory && !a.options.enableSummaryMemory { + xlog.Debug("Long term memory is disabled", "agent", a.Character.Name) + return + } + + xlog.Info("Saving conversation", "agent", a.Character.Name, "conversation size", len(a.currentConversation)) + + if a.options.enableSummaryMemory && len(a.currentConversation) > 0 { + msg, err := a.askLLM(a.context.Context, []openai.ChatCompletionMessage{{ + Role: "user", + Content: "Summarize the conversation below, keep the highlights as a bullet list:\n" + Messages(a.currentConversation).String(), + }}) + if err != nil { + xlog.Error("Error summarizing conversation", "error", err) + } + + if err := a.options.ragdb.Store(msg.Content); err != nil { + xlog.Error("Error storing into memory", "error", err) + } + } else { + for _, message := range a.currentConversation { + if message.Role == "user" { + if err := a.options.ragdb.Store(message.Content); err != nil { + xlog.Error("Error storing into memory", "error", err) + } + } + } + } +} diff --git a/pkg/localrag/client.go b/pkg/localrag/client.go index 0dfd1c9..4034a8f 100644 --- a/pkg/localrag/client.go +++ b/pkg/localrag/client.go @@ -64,8 +64,6 @@ func (c *WrappedClient) Search(s string, similarity int) ([]string, error) { func (c *WrappedClient) Store(s string) error { // the Client API of LocalRAG takes only files at the moment. // So we take the string that we want to store, write it to a file, and then store the file. - - // get current date and time for file name t := time.Now() dateTime := t.Format("2006-01-02-15-04-05") hash := md5.Sum([]byte(s)) diff --git a/webui/app.go b/webui/app.go index 04f86f4..1b5b80e 100644 --- a/webui/app.go +++ b/webui/app.go @@ -1,7 +1,6 @@ package webui import ( - "bytes" "encoding/json" "fmt" "net/http" @@ -15,7 +14,6 @@ import ( "github.com/mudler/LocalAgent/core/state" "github.com/donseba/go-htmx" - "github.com/dslipak/pdf" fiber "github.com/gofiber/fiber/v2" "github.com/gofiber/template/html/v2" ) @@ -79,12 +77,24 @@ func (a *App) Delete(pool *state.AgentPool) func(c *fiber.Ctx) error { return func(c *fiber.Ctx) error { if err := pool.Remove(c.Params("name")); err != nil { xlog.Info("Error removing agent", err) - return c.Status(http.StatusInternalServerError).SendString(err.Error()) + return errorJSONMessage(c, err.Error()) } - return c.Redirect("/agents") + return statusJSONMessage(c, "ok") } } +func errorJSONMessage(c *fiber.Ctx, message string) error { + return c.Status(http.StatusInternalServerError).JSON(struct { + Error string `json:"error"` + }{Error: message}) +} + +func statusJSONMessage(c *fiber.Ctx, message string) error { + return c.JSON(struct { + Status string `json:"status"` + }{Status: message}) +} + func (a *App) Pause(pool *state.AgentPool) func(c *fiber.Ctx) error { return func(c *fiber.Ctx) error { xlog.Info("Pausing agent", c.Params("name")) @@ -92,7 +102,7 @@ func (a *App) Pause(pool *state.AgentPool) func(c *fiber.Ctx) error { if agent != nil { agent.Pause() } - return c.Redirect("/agents") + return statusJSONMessage(c, "ok") } } @@ -102,7 +112,7 @@ func (a *App) Start(pool *state.AgentPool) func(c *fiber.Ctx) error { if agent != nil { agent.Resume() } - return c.Redirect("/agents") + return statusJSONMessage(c, "ok") } } @@ -110,20 +120,18 @@ func (a *App) Create(pool *state.AgentPool) func(c *fiber.Ctx) error { return func(c *fiber.Ctx) error { config := state.AgentConfig{} if err := c.BodyParser(&config); err != nil { - return err + return errorJSONMessage(c, err.Error()) } fmt.Printf("Agent configuration: %+v\n", config) if config.Name == "" { - c.Status(http.StatusBadRequest).SendString("Name is required") - return nil + return errorJSONMessage(c, "Name is required") } if err := pool.CreateAgent(config.Name, &config); err != nil { - c.Status(http.StatusInternalServerError).SendString(err.Error()) - return nil + return errorJSONMessage(c, err.Error()) } - return c.Redirect("/agents") + return statusJSONMessage(c, "ok") } } @@ -131,7 +139,7 @@ func (a *App) ExportAgent(pool *state.AgentPool) func(c *fiber.Ctx) error { return func(c *fiber.Ctx) error { agent := pool.GetConfig(c.Params("name")) if agent == nil { - return c.Status(http.StatusNotFound).SendString("Agent not found") + return errorJSONMessage(c, "Agent not found") } c.Set("Content-Disposition", fmt.Sprintf("attachment; filename=%s.json", agent.Name)) @@ -168,15 +176,13 @@ func (a *App) ImportAgent(pool *state.AgentPool) func(c *fiber.Ctx) error { xlog.Info("Importing agent", config.Name) if config.Name == "" { - c.Status(http.StatusBadRequest).SendString("Name is required") - return nil + return errorJSONMessage(c, "Name is required") } if err := pool.CreateAgent(config.Name, &config); err != nil { - c.Status(http.StatusInternalServerError).SendString(err.Error()) - return nil + return errorJSONMessage(c, err.Error()) } - return c.Redirect("/agents") + return statusJSONMessage(c, "ok") } } @@ -237,17 +243,3 @@ func (a *App) Chat(pool *state.AgentPool) func(c *fiber.Ctx) error { return nil } } - -func readPdf(path string) (string, error) { - r, err := pdf.Open(path) - if err != nil { - return "", err - } - var buf bytes.Buffer - b, err := r.GetPlainText() - if err != nil { - return "", err - } - buf.ReadFrom(b) - return buf.String(), nil -} diff --git a/webui/routes.go b/webui/routes.go index d996438..d92a42c 100644 --- a/webui/routes.go +++ b/webui/routes.go @@ -79,7 +79,7 @@ func (app *App) registerRoutes(pool *state.AgentPool, webapp *fiber.App) { webapp.Get("/notify/:name", app.Notify(pool)) webapp.Post("/chat/:name", app.Chat(pool)) webapp.Post("/create", app.Create(pool)) - webapp.Get("/delete/:name", app.Delete(pool)) + webapp.Delete("/delete/:name", app.Delete(pool)) webapp.Put("/pause/:name", app.Pause(pool)) webapp.Put("/start/:name", app.Start(pool)) diff --git a/webui/views/agents.html b/webui/views/agents.html index f0ba95b..f2dec40 100644 --- a/webui/views/agents.html +++ b/webui/views/agents.html @@ -9,12 +9,83 @@ .button-container { display: flex; justify-content: flex-end; - margin-bottom: 8px; /* Adjusts the spacing to your liking */ + margin-bottom: 8px; + } + .section-box { + background-color: rgba(30, 41, 59, 0.8); + border-radius: 8px; + padding: 20px; + margin-top: 20px; + } + .alert { + padding: 10px 15px; + border-radius: 4px; + margin: 10px 0; + display: none; + } + .alert-success { + background-color: rgba(16, 185, 129, 0.2); + border: 1px solid #10b981; + color: #10b981; + } + .alert-error { + background-color: rgba(239, 68, 68, 0.2); + border: 1px solid #ef4444; + color: #ef4444; + } + .toast { + position: fixed; + top: 20px; + right: 20px; + max-width: 350px; + padding: 15px; + border-radius: 5px; + box-shadow: 0 4px 6px rgba(0, 0, 0, 0.3); + z-index: 1000; + opacity: 0; + transition: opacity 0.3s ease; + } + .toast-success { + background-color: #10b981; + color: white; + } + .toast-error { + background-color: #ef4444; + color: white; + } + .toast-visible { + opacity: 1; + } + .action-btn { + background-color: #374151; + color: white; + border: none; + padding: 6px 12px; + border-radius: 4px; + cursor: pointer; + transition: background-color 0.3s; + } + .start-btn { + background-color: #10b981; + } + .start-btn:hover { + background-color: #059669; + } + .pause-btn { + background-color: #f59e0b; + } + .pause-btn:hover { + background-color: #d97706; } {{template "views/partials/menu"}} + +
+ +
+ + + - + \ No newline at end of file diff --git a/webui/views/create.html b/webui/views/create.html index a3ec522..c4a55d1 100644 --- a/webui/views/create.html +++ b/webui/views/create.html @@ -6,13 +6,33 @@ + {{template "views/partials/menu"}}
-

Create New Agent

+

Create New Agent

+ + -
+
@@ -153,11 +173,89 @@
- +
-
+
+ +
+ +
+ Agent created successfully! Redirecting to agent list... +
+ + +
+ Error creating agent. +
+
+ +
+ diff --git a/webui/views/partials/header.html b/webui/views/partials/header.html index 67ca028..95f6d4d 100644 --- a/webui/views/partials/header.html +++ b/webui/views/partials/header.html @@ -220,4 +220,29 @@ select::-webkit-scrollbar-thumb { } - \ No newline at end of file + + + diff --git a/webui/views/settings.html b/webui/views/settings.html index efd41e1..c8b8f9a 100644 --- a/webui/views/settings.html +++ b/webui/views/settings.html @@ -41,46 +41,185 @@ button:hover { background-color: #5a86b8; } + + /* Toast notification styles */ + .toast { + position: fixed; + top: 20px; + right: 20px; + max-width: 350px; + padding: 15px; + border-radius: 5px; + box-shadow: 0 4px 6px rgba(0, 0, 0, 0.3); + z-index: 1000; + opacity: 0; + transition: opacity 0.3s ease; + } + .toast-success { + background-color: #10b981; + color: white; + } + .toast-error { + background-color: #ef4444; + color: white; + } + .toast-visible { + opacity: 1; + } + + /* Action button styles */ + .action-button { + margin-bottom: 10px; + display: inline-block; + width: auto; + margin-right: 10px; + } + + .start-button { + background-color: #10b981; /* Green */ + } + .start-button:hover { + background-color: #059669; + } + + .pause-button { + background-color: #f59e0b; /* Orange */ + } + .pause-button:hover { + background-color: #d97706; + } + + .delete-button { + background-color: #ef4444; /* Red */ + color: white; + padding: 10px 15px; + border-radius: 5px; + text-decoration: none; + display: inline-block; + cursor: pointer; + } + .delete-button:hover { + background-color: #dc2626; + } {{template "views/partials/menu"}} + + +
+ +
+

Agent settings - {{.Name}}

- -
-

Manage Knowledgebase

-

Access and update your knowledgebase to improve agent responses and efficiency.

-
-
- -
-

Export

- Export +

Export

+ Export

Danger section

- - Delete - +
+ - + \ No newline at end of file From d714c4f80b54f52e21cf1ad24c05abe5419a562d Mon Sep 17 00:00:00 2001 From: Ettore Di Giacinto Date: Mon, 3 Mar 2025 23:08:58 +0100 Subject: [PATCH 199/399] Page restyling --- core/agent/knowledgebase.go | 2 + webui/views/agents.html | 396 +++++-------- webui/views/partials/header.html | 981 ++++++++++++++++++++++++------- webui/views/partials/menu.html | 87 ++- webui/views/settings.html | 211 ++----- 5 files changed, 1029 insertions(+), 648 deletions(-) diff --git a/core/agent/knowledgebase.go b/core/agent/knowledgebase.go index 3c9fd94..cc6a3bd 100644 --- a/core/agent/knowledgebase.go +++ b/core/agent/knowledgebase.go @@ -61,6 +61,8 @@ func (a *Agent) knowledgeBaseLookup() { } func (a *Agent) saveCurrentConversationInMemory() { + + if !a.options.enableLongTermMemory && !a.options.enableSummaryMemory { xlog.Debug("Long term memory is disabled", "agent", a.Character.Name) return diff --git a/webui/views/agents.html b/webui/views/agents.html index f2dec40..19a234f 100644 --- a/webui/views/agents.html +++ b/webui/views/agents.html @@ -5,79 +5,6 @@ Agent List {{template "views/partials/header"}} - {{template "views/partials/menu"}} @@ -88,217 +15,172 @@
-

Smart Agent List

+

Smart Agent List

-
+
Add New Agent +
-
-
-
-
- - - - - - - - - - - - - - {{ $status := .Status }} - {{ range .Agents }} - - - - - - - - - {{ end }} - - -
- Name - - Status - - Talk - - Start - - Stop - - Settings -
{{.}} - Online: {{ index $status . }} - - Status - - - - Talk - - - - - - - - Settings - -
+ -
- - -
-

Import Agent

- - -
- -
- Agent imported successfully! The page will refresh in a moment. -
- - -
- Error importing agent. -
+
+
+ +
- - -
- - -
-
- - -
-
+
+ + +
+ +
+
+
+ {{ $status := .Status }} + {{ range .Agents }} +
+ {{.}} +

{{.}}

+

Online: {{ index $status . }}

+
+ + Status + + + Talk + + + + + Settings +
- - -
+
+ {{ end }} + +
+

© 2025 Smart Agent List. All rights reserved.

+
+
- - + // Function to update agent status in the UI + function updateAgentStatus(agentName, isOnline) { + // Find the card for this agent + const cards = document.querySelectorAll('.card'); + cards.forEach(card => { + const agentTitle = card.querySelector('h2').textContent; + if (agentTitle === agentName) { + // Update the "Online:" text + const statusText = card.querySelector('p'); + statusText.textContent = `Online: ${isOnline}`; + } + }); + } + + \ No newline at end of file diff --git a/webui/views/partials/header.html b/webui/views/partials/header.html index 95f6d4d..ec3ce23 100644 --- a/webui/views/partials/header.html +++ b/webui/views/partials/header.html @@ -1,8 +1,8 @@ - + @@ -10,239 +10,764 @@ - - diff --git a/webui/views/partials/menu.html b/webui/views/partials/menu.html index 23adb21..cfbf5d6 100644 --- a/webui/views/partials/menu.html +++ b/webui/views/partials/menu.html @@ -1,22 +1,81 @@ - From c1ac7b675a370ef5ee509f5701f71804a1a32e2a Mon Sep 17 00:00:00 2001 From: Ettore Di Giacinto Date: Sat, 22 Mar 2025 18:44:22 +0100 Subject: [PATCH 274/399] feat(api): add endpoint to create group of dedicated agents (#79) Signed-off-by: mudler --- core/agent/identity.go | 2 +- core/state/pool.go | 35 +++++++++++++-------- main.go | 10 +++++- pkg/llm/json.go | 53 +++++++------------------------- webui/app.go | 70 ++++++++++++++++++++++++++++++++++++++++++ webui/options.go | 21 +++++++++++++ webui/routes.go | 2 ++ 7 files changed, 136 insertions(+), 57 deletions(-) diff --git a/core/agent/identity.go b/core/agent/identity.go index 96fa8c5..7789b13 100644 --- a/core/agent/identity.go +++ b/core/agent/identity.go @@ -12,7 +12,7 @@ func (a *Agent) generateIdentity(guidance string) error { guidance = "Generate a random character for roleplaying." } - err := llm.GenerateTypedJSON(a.context.Context, a.client, guidance, a.options.LLMAPI.Model, a.options.character.ToJSONSchema(), &a.options.character) + err := llm.GenerateTypedJSON(a.context.Context, a.client, "Generate a character as JSON data. "+guidance, a.options.LLMAPI.Model, a.options.character.ToJSONSchema(), &a.options.character) //err := llm.GenerateJSONFromStruct(a.context.Context, a.client, guidance, a.options.LLMAPI.Model, &a.options.character) a.Character = a.options.character if err != nil { diff --git a/core/state/pool.go b/core/state/pool.go index 120c64a..49de824 100644 --- a/core/state/pool.go +++ b/core/state/pool.go @@ -7,6 +7,7 @@ import ( "os" "path/filepath" "sort" + "strings" "sync" "time" @@ -21,18 +22,18 @@ import ( type AgentPool struct { sync.Mutex - file string - pooldir string - pool AgentPoolData - agents map[string]*Agent - managers map[string]sse.Manager - agentStatus map[string]*Status - apiURL, defaultModel, defaultMultimodalModel, localRAGAPI, localRAGKey, apiKey string - availableActions func(*AgentConfig) func(ctx context.Context, pool *AgentPool) []Action - connectors func(*AgentConfig) []Connector - promptBlocks func(*AgentConfig) []PromptBlock - timeout string - conversationLogs string + file string + pooldir string + pool AgentPoolData + agents map[string]*Agent + managers map[string]sse.Manager + agentStatus map[string]*Status + apiURL, defaultModel, defaultMultimodalModel, imageModel, localRAGAPI, localRAGKey, apiKey string + availableActions func(*AgentConfig) func(ctx context.Context, pool *AgentPool) []Action + connectors func(*AgentConfig) []Connector + promptBlocks func(*AgentConfig) []PromptBlock + timeout string + conversationLogs string } type Status struct { @@ -66,7 +67,7 @@ func loadPoolFromFile(path string) (*AgentPoolData, error) { } func NewAgentPool( - defaultModel, defaultMultimodalModel, apiURL, apiKey, directory string, + defaultModel, defaultMultimodalModel, imageModel, apiURL, apiKey, directory string, LocalRAGAPI string, availableActions func(*AgentConfig) func(ctx context.Context, pool *AgentPool) []agent.Action, connectors func(*AgentConfig) []Connector, @@ -92,6 +93,7 @@ func NewAgentPool( apiURL: apiURL, defaultModel: defaultModel, defaultMultimodalModel: defaultMultimodalModel, + imageModel: imageModel, localRAGAPI: LocalRAGAPI, apiKey: apiKey, agents: make(map[string]*Agent), @@ -116,6 +118,7 @@ func NewAgentPool( pooldir: directory, defaultModel: defaultModel, defaultMultimodalModel: defaultMultimodalModel, + imageModel: imageModel, apiKey: apiKey, agents: make(map[string]*Agent), managers: make(map[string]sse.Manager), @@ -130,12 +133,18 @@ func NewAgentPool( }, nil } +func replaceInvalidChars(s string) string { + s = strings.ReplaceAll(s, "/", "_") + return strings.ReplaceAll(s, " ", "_") +} + // CreateAgent adds a new agent to the pool // and starts it. // It also saves the state to the file. func (a *AgentPool) CreateAgent(name string, agentConfig *AgentConfig) error { a.Lock() defer a.Unlock() + name = replaceInvalidChars(name) if _, ok := a.pool[name]; ok { return fmt.Errorf("agent %s already exists", name) } diff --git a/main.go b/main.go index a233089..6aef92d 100644 --- a/main.go +++ b/main.go @@ -20,6 +20,7 @@ var stateDir = os.Getenv("LOCALAGENT_STATE_DIR") var localRAG = os.Getenv("LOCALAGENT_LOCALRAG_URL") var withLogs = os.Getenv("LOCALAGENT_ENABLE_CONVERSATIONS_LOGGING") == "true" var apiKeysEnv = os.Getenv("LOCALAGENT_API_KEYS") +var imageModel = os.Getenv("LOCALAGENT_IMAGE_MODEL") func init() { if testModel == "" { @@ -54,6 +55,7 @@ func main() { pool, err := state.NewAgentPool( testModel, multimodalModel, + imageModel, apiURL, apiKey, stateDir, @@ -69,7 +71,13 @@ func main() { } // Create the application - app := webui.NewApp(webui.WithPool(pool), webui.WithApiKeys(apiKeys...)) + app := webui.NewApp( + webui.WithPool(pool), + webui.WithApiKeys(apiKeys...), + webui.WithLLMAPIUrl(apiURL), + webui.WithLLMAPIKey(apiKey), + webui.WithLLMModel(testModel), + ) // Start the agents if err := pool.StartAll(); err != nil { diff --git a/pkg/llm/json.go b/pkg/llm/json.go index 246dbac..34f111a 100644 --- a/pkg/llm/json.go +++ b/pkg/llm/json.go @@ -5,55 +5,19 @@ import ( "encoding/json" "fmt" + "github.com/mudler/LocalAgent/pkg/xlog" "github.com/sashabaranov/go-openai" "github.com/sashabaranov/go-openai/jsonschema" ) -// generateAnswer generates an answer for the given text using the OpenAI API -func GenerateJSON(ctx context.Context, client *openai.Client, model, text string, i interface{}) error { - req := openai.ChatCompletionRequest{ - ResponseFormat: &openai.ChatCompletionResponseFormat{Type: openai.ChatCompletionResponseFormatTypeJSONObject}, - Model: model, - Messages: []openai.ChatCompletionMessage{ - { - - Role: "user", - Content: text, - }, - }, - } - - resp, err := client.CreateChatCompletion(ctx, req) - if err != nil { - return fmt.Errorf("failed to generate answer: %v", err) - } - if len(resp.Choices) == 0 { - return fmt.Errorf("no response from OpenAI API") - } - - err = json.Unmarshal([]byte(resp.Choices[0].Message.Content), i) - if err != nil { - return err - } - return nil -} - -func GenerateJSONFromStruct(ctx context.Context, client *openai.Client, guidance, model string, i interface{}) error { - // TODO: use functions? - exampleJSON, err := json.Marshal(i) - if err != nil { - return err - } - return GenerateJSON(ctx, client, model, "Generate a character as JSON data. "+guidance+". This is the JSON fields that should contain: "+string(exampleJSON), i) -} - -func GenerateTypedJSON(ctx context.Context, client *openai.Client, guidance, model string, i jsonschema.Definition, dst interface{}) error { +func GenerateTypedJSON(ctx context.Context, client *openai.Client, guidance, model string, i jsonschema.Definition, dst any) error { + toolName := "json" decision := openai.ChatCompletionRequest{ Model: model, Messages: []openai.ChatCompletionMessage{ { Role: "user", - Content: "Generate a character as JSON data. " + guidance, + Content: guidance, }, }, Tools: []openai.Tool{ @@ -61,12 +25,15 @@ func GenerateTypedJSON(ctx context.Context, client *openai.Client, guidance, mod Type: openai.ToolTypeFunction, Function: openai.FunctionDefinition{ - Name: "identity", + Name: toolName, Parameters: i, }, }, }, - ToolChoice: "identity", + ToolChoice: openai.ToolChoice{ + Type: openai.ToolTypeFunction, + Function: openai.ToolFunction{Name: toolName}, + }, } resp, err := client.CreateChatCompletion(ctx, decision) @@ -84,5 +51,7 @@ func GenerateTypedJSON(ctx context.Context, client *openai.Client, guidance, mod return fmt.Errorf("no tool calls: %d", len(msg.ToolCalls)) } + xlog.Debug("JSON generated", "Arguments", msg.ToolCalls[0].Function.Arguments) + return json.Unmarshal([]byte(msg.ToolCalls[0].Function.Arguments), dst) } diff --git a/webui/app.go b/webui/app.go index 8f31641..c62a7fa 100644 --- a/webui/app.go +++ b/webui/app.go @@ -9,9 +9,11 @@ import ( "strings" "time" + "github.com/mudler/LocalAgent/pkg/llm" "github.com/mudler/LocalAgent/pkg/xlog" "github.com/mudler/LocalAgent/services" "github.com/mudler/LocalAgent/webui/types" + "github.com/sashabaranov/go-openai/jsonschema" "github.com/mudler/LocalAgent/core/action" "github.com/mudler/LocalAgent/core/agent" @@ -396,3 +398,71 @@ func (a *App) Responses(pool *state.AgentPool) func(c *fiber.Ctx) error { return c.JSON(response) } } + +type AgentRole struct { + Name string `json:"name"` + Description string `json:"description"` + SystemPrompt string `json:"system_prompt"` +} + +func (a *App) CreateGroup(pool *state.AgentPool) func(c *fiber.Ctx) error { + return func(c *fiber.Ctx) error { + var request struct { + Descript string `json:"description"` + } + + if err := c.BodyParser(&request); err != nil { + return errorJSONMessage(c, err.Error()) + } + + var results struct { + Agents []AgentRole `json:"agents"` + } + + xlog.Debug("Generating group", "description", request.Descript) + client := llm.NewClient(a.config.LLMAPIKey, a.config.LLMAPIURL, "10m") + err := llm.GenerateTypedJSON(c.Context(), client, request.Descript, a.config.LLMModel, jsonschema.Definition{ + Type: jsonschema.Object, + Properties: map[string]jsonschema.Definition{ + "agents": { + Type: jsonschema.Array, + Items: &jsonschema.Definition{ + Type: jsonschema.Object, + Required: []string{"name", "description", "system_prompt"}, + Properties: map[string]jsonschema.Definition{ + "name": { + Type: jsonschema.String, + Description: "The name of the agent", + }, + "description": { + Type: jsonschema.String, + Description: "The description of the agent", + }, + "system_prompt": { + Type: jsonschema.String, + Description: "The system prompt for the agent", + }, + }, + }, + }, + }, + }, &results) + if err != nil { + return errorJSONMessage(c, err.Error()) + } + + for _, agent := range results.Agents { + xlog.Info("Creating agent", "name", agent.Name, "description", agent.Description) + config := state.AgentConfig{ + Name: agent.Name, + Description: agent.Description, + SystemPrompt: agent.SystemPrompt, + } + if err := pool.CreateAgent(agent.Name, &config); err != nil { + return errorJSONMessage(c, err.Error()) + } + } + + return c.JSON(results) + } +} diff --git a/webui/options.go b/webui/options.go index f163879..5266e21 100644 --- a/webui/options.go +++ b/webui/options.go @@ -6,6 +6,9 @@ type Config struct { DefaultChunkSize int Pool *state.AgentPool ApiKeys []string + LLMAPIURL string + LLMAPIKey string + LLMModel string } type Option func(*Config) @@ -16,6 +19,24 @@ func WithDefaultChunkSize(size int) Option { } } +func WithLLMModel(model string) Option { + return func(c *Config) { + c.LLMModel = model + } +} + +func WithLLMAPIUrl(url string) Option { + return func(c *Config) { + c.LLMAPIURL = url + } +} + +func WithLLMAPIKey(key string) Option { + return func(c *Config) { + c.LLMAPIKey = key + } +} + func WithPool(pool *state.AgentPool) Option { return func(c *Config) { c.Pool = pool diff --git a/webui/routes.go b/webui/routes.go index 067fe63..620a8b6 100644 --- a/webui/routes.go +++ b/webui/routes.go @@ -141,6 +141,8 @@ func (app *App) registerRoutes(pool *state.AgentPool, webapp *fiber.App) { webapp.Post("/action/:name/run", app.ExecuteAction(pool)) webapp.Get("/actions", app.ListActions()) + webapp.Post("/api/agent/group/create", app.CreateGroup(pool)) + webapp.Post("/settings/import", app.ImportAgent(pool)) webapp.Get("/settings/export/:name", app.ExportAgent(pool)) } From 3a921f6241eb4ec36ed00c977adbc10ae30e72f2 Mon Sep 17 00:00:00 2001 From: Ettore Di Giacinto Date: Sat, 22 Mar 2025 20:50:31 +0100 Subject: [PATCH 275/399] feat(ui): generate avatars (#80) * feat(ui): generate avatars Signed-off-by: mudler * Show a placeholder if the image is not ready Signed-off-by: mudler * feat(avatar): generate prompt first Signed-off-by: Ettore Di Giacinto --------- Signed-off-by: mudler Signed-off-by: Ettore Di Giacinto --- core/state/pool.go | 87 +++++++++++++++++++++++++++++++++++++++++ main.go | 1 + webui/options.go | 7 ++++ webui/routes.go | 9 +++++ webui/views/agents.html | 66 ++++++++++++++++++++++++++++++- 5 files changed, 168 insertions(+), 2 deletions(-) diff --git a/core/state/pool.go b/core/state/pool.go index 49de824..12654f3 100644 --- a/core/state/pool.go +++ b/core/state/pool.go @@ -2,6 +2,7 @@ package state import ( "context" + "encoding/base64" "encoding/json" "fmt" "os" @@ -14,8 +15,11 @@ import ( "github.com/mudler/LocalAgent/core/agent" . "github.com/mudler/LocalAgent/core/agent" "github.com/mudler/LocalAgent/core/sse" + "github.com/mudler/LocalAgent/pkg/llm" "github.com/mudler/LocalAgent/pkg/localrag" "github.com/mudler/LocalAgent/pkg/utils" + "github.com/sashabaranov/go-openai" + "github.com/sashabaranov/go-openai/jsonschema" "github.com/mudler/LocalAgent/pkg/xlog" ) @@ -153,9 +157,88 @@ func (a *AgentPool) CreateAgent(name string, agentConfig *AgentConfig) error { return err } + go func() { + // Create the agent avatar + if err := a.createAgentAvatar(agentConfig); err != nil { + xlog.Error("Failed to create agent avatar", "error", err) + } + }() + return a.startAgentWithConfig(name, agentConfig) } +func (a *AgentPool) createAgentAvatar(agent *AgentConfig) error { + client := llm.NewClient(a.apiKey, a.apiURL+"/v1", "10m") + + if a.imageModel == "" { + return fmt.Errorf("image model not set") + } + + if a.defaultModel == "" { + return fmt.Errorf("default model not set") + } + + var results struct { + ImagePrompt string `json:"image_prompt"` + } + + err := llm.GenerateTypedJSON( + context.Background(), + llm.NewClient(a.apiKey, a.apiURL, "10m"), + "Generate a prompt that I can use to create a random avatar for the bot '"+agent.Name+"', the description of the bot is: "+agent.Description, + a.defaultModel, + jsonschema.Definition{ + Type: jsonschema.Object, + Properties: map[string]jsonschema.Definition{ + "image_prompt": { + Type: jsonschema.String, + Description: "The prompt to generate the image", + }, + }, + Required: []string{"image_prompt"}, + }, &results) + if err != nil { + return fmt.Errorf("failed to generate image prompt: %w", err) + } + + if results.ImagePrompt == "" { + xlog.Error("Failed to generate image prompt") + return fmt.Errorf("failed to generate image prompt") + } + + req := openai.ImageRequest{ + Prompt: results.ImagePrompt, + Model: a.imageModel, + Size: openai.CreateImageSize256x256, + ResponseFormat: openai.CreateImageResponseFormatB64JSON, + } + + ctx, cancel := context.WithTimeout(context.Background(), 120*time.Second) + defer cancel() + + resp, err := client.CreateImage(ctx, req) + if err != nil { + return fmt.Errorf("failed to generate image: %w", err) + } + + if len(resp.Data) == 0 { + return fmt.Errorf("failed to generate image") + } + + imageJson := resp.Data[0].B64JSON + + os.MkdirAll(filepath.Join(a.pooldir, "avatars"), 0755) + + // Save the image to the agent directory + imagePath := filepath.Join(a.pooldir, "avatars", fmt.Sprintf("%s.png", agent.Name)) + imageData, err := base64.StdEncoding.DecodeString(imageJson) + if err != nil { + return err + } + + return os.WriteFile(imagePath, imageData, 0644) +} + func (a *AgentPool) List() []string { a.Lock() defer a.Unlock() @@ -474,6 +557,10 @@ func (a *AgentPool) Remove(name string) error { a.stop(name) delete(a.agents, name) delete(a.pool, name) + + // remove avatar + os.Remove(filepath.Join(a.pooldir, "avatars", fmt.Sprintf("%s.png", name))) + if err := a.save(); err != nil { return err } diff --git a/main.go b/main.go index 6aef92d..922d6ce 100644 --- a/main.go +++ b/main.go @@ -77,6 +77,7 @@ func main() { webui.WithLLMAPIUrl(apiURL), webui.WithLLMAPIKey(apiKey), webui.WithLLMModel(testModel), + webui.WithStateDir(stateDir), ) // Start the agents diff --git a/webui/options.go b/webui/options.go index 5266e21..608a0db 100644 --- a/webui/options.go +++ b/webui/options.go @@ -9,6 +9,7 @@ type Config struct { LLMAPIURL string LLMAPIKey string LLMModel string + StateDir string } type Option func(*Config) @@ -19,6 +20,12 @@ func WithDefaultChunkSize(size int) Option { } } +func WithStateDir(dir string) Option { + return func(c *Config) { + c.StateDir = dir + } +} + func WithLLMModel(model string) Option { return func(c *Config) { c.LLMModel = model diff --git a/webui/routes.go b/webui/routes.go index 620a8b6..09f9119 100644 --- a/webui/routes.go +++ b/webui/routes.go @@ -6,6 +6,7 @@ import ( "errors" "math/rand" "net/http" + "path/filepath" "github.com/dave-gray101/v2keyauth" fiber "github.com/gofiber/fiber/v2" @@ -26,6 +27,13 @@ var embeddedFiles embed.FS func (app *App) registerRoutes(pool *state.AgentPool, webapp *fiber.App) { + // Static avatars in a.pooldir/avatars + webapp.Use("/avatars", filesystem.New(filesystem.Config{ + Root: http.Dir(filepath.Join(app.config.StateDir, "avatars")), + // PathPrefix: "avatars", + Browse: true, + })) + webapp.Use("/public", filesystem.New(filesystem.Config{ Root: http.FS(embeddedFiles), PathPrefix: "public", @@ -145,6 +153,7 @@ func (app *App) registerRoutes(pool *state.AgentPool, webapp *fiber.App) { webapp.Post("/settings/import", app.ImportAgent(pool)) webapp.Get("/settings/export/:name", app.ExportAgent(pool)) + } var letterRunes = []rune("abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ") diff --git a/webui/views/agents.html b/webui/views/agents.html index a274ece..1781f4a 100644 --- a/webui/views/agents.html +++ b/webui/views/agents.html @@ -5,6 +5,45 @@ Agent List {{template "views/partials/header"}} + {{template "views/partials/menu"}} @@ -65,8 +104,15 @@ {{ range .Agents }}
- +
+ +
+ +
+

{{.}}

@@ -117,6 +163,22 @@ + + + + + + {{template "views/partials/menu"}} +
+
+

Create Agent Group

+ + +
+
+
1
+
Generate Profiles
+
+
+
2
+
Review & Select
+
+
+
3
+
Configure Settings
+
+
+ + +
+

Generate Agent Profiles

+

Describe the group of agents you want to create. Be specific about their roles, relationships, and purpose.

+ +
+ +
+ +
+ +
+
+ + +
+ +

Generating agent profiles...

+
+ + +
+

Review & Select Agent Profiles

+

Select the agents you want to create. You can customize their details before creation.

+ +
+ +
+ +
+ +
+ +
+ + +
+
+ + +
+

Configure Common Settings

+

Configure common settings for all selected agents. These settings will be applied to each agent.

+ +
+ +
+ +
+

Basic Information from Profiles

+

The name, description, and system prompt for each agent will be taken from the profiles you selected in the previous step.

+
+
+ + +
+ {{template "views/partials/agent-form" . }} +
+
+ +
+ + +
+
+
+ + +
+ + + + +
+
+ + +
+ +
+ + + + \ No newline at end of file diff --git a/webui/views/partials/menu.html b/webui/views/partials/menu.html index 92c8c7f..84eaaed 100644 --- a/webui/views/partials/menu.html +++ b/webui/views/partials/menu.html @@ -39,6 +39,12 @@ + + Create Agent Group + + +
@@ -80,6 +86,12 @@ + + Create Agent Group + + +
From fa25e7c0771410980d77f918e2c10f53dc53b1bc Mon Sep 17 00:00:00 2001 From: mudler Date: Sun, 23 Mar 2025 11:53:36 +0100 Subject: [PATCH 277/399] fixup: pass pointer to pool Signed-off-by: mudler --- core/state/pool.go | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-) diff --git a/core/state/pool.go b/core/state/pool.go index c5deb75..4797d7e 100644 --- a/core/state/pool.go +++ b/core/state/pool.go @@ -158,12 +158,14 @@ func (a *AgentPool) CreateAgent(name string, agentConfig *AgentConfig) error { return err } - go func(ac AgentConfig) { - // Create the agent avatar - if err := a.createAgentAvatar(ac); err != nil { - xlog.Error("Failed to create agent avatar", "error", err) - } - }(*agentConfig) + defer func(ac AgentConfig, pool *AgentPool) { + go func(ac AgentConfig, pool *AgentPool) { + // Create the agent avatar + if err := a.createAgentAvatar(ac); err != nil { + xlog.Error("Failed to create agent avatar", "error", err) + } + }(ac, pool) + }(*agentConfig, a) return a.startAgentWithConfig(name, agentConfig) } From f0b8bfb4f4119e36145496012af607e49d937093 Mon Sep 17 00:00:00 2001 From: mudler Date: Sun, 23 Mar 2025 11:57:01 +0100 Subject: [PATCH 278/399] no need to defer here Signed-off-by: mudler --- core/state/pool.go | 14 ++++++-------- 1 file changed, 6 insertions(+), 8 deletions(-) diff --git a/core/state/pool.go b/core/state/pool.go index 4797d7e..5312983 100644 --- a/core/state/pool.go +++ b/core/state/pool.go @@ -158,14 +158,12 @@ func (a *AgentPool) CreateAgent(name string, agentConfig *AgentConfig) error { return err } - defer func(ac AgentConfig, pool *AgentPool) { - go func(ac AgentConfig, pool *AgentPool) { - // Create the agent avatar - if err := a.createAgentAvatar(ac); err != nil { - xlog.Error("Failed to create agent avatar", "error", err) - } - }(ac, pool) - }(*agentConfig, a) + go func(ac AgentConfig, pool *AgentPool) { + // Create the agent avatar + if err := a.createAgentAvatar(ac); err != nil { + xlog.Error("Failed to create agent avatar", "error", err) + } + }(a.pool[name], a) return a.startAgentWithConfig(name, agentConfig) } From 75a8d63e839af51f4a75ce2508bce7d5d0517b5d Mon Sep 17 00:00:00 2001 From: mudler Date: Sun, 23 Mar 2025 21:17:59 +0100 Subject: [PATCH 279/399] Finish moving types --- core/action/custom.go | 17 +-- core/action/custom_test.go | 5 +- core/action/intention.go | 9 +- core/action/newconversation.go | 9 +- core/action/noreply.go | 14 ++- core/action/plan.go | 9 +- core/action/reasoning.go | 9 +- core/action/reply.go | 7 +- core/action/state.go | 9 +- core/agent/actions.go | 103 ++++++++---------- core/agent/agent.go | 84 ++++++++------ core/agent/agent_test.go | 38 +++---- core/agent/mcp.go | 18 +-- core/agent/options.go | 14 ++- core/agent/templates.go | 8 +- core/state/config.go | 5 +- core/state/pool.go | 63 +++++------ .../definition.go => types/actions.go} | 46 +++++++- core/{agent/jobs.go => types/job.go} | 67 +++++------- core/types/result.go | 34 ++++++ services/actions.go | 12 +- services/actions/browse.go | 20 ++-- services/actions/callagents.go | 19 ++-- services/actions/counter.go | 14 +-- services/actions/genimage.go | 18 +-- services/actions/genimage_test.go | 8 +- services/actions/githubissuecloser.go | 20 ++-- services/actions/githubissuecomment.go | 18 +-- services/actions/githubissuelabeler.go | 18 +-- services/actions/githubissueopener.go | 18 +-- services/actions/githubissuereader.go | 22 ++-- services/actions/githubissuesearch.go | 20 ++-- .../githubrepositorycreateupdatecontent.go | 20 ++-- .../actions/githubrepositorygetcontent.go | 24 ++-- services/actions/githubrepositoryreadme.go | 18 +-- services/actions/scrape.go | 16 +-- services/actions/search.go | 16 +-- services/actions/sendmail.go | 14 +-- services/actions/shell.go | 20 ++-- services/actions/twitter_post.go | 16 +-- services/actions/wikipedia.go | 14 +-- services/connectors/discord.go | 11 +- services/connectors/githubissue.go | 11 +- services/connectors/githubpr.go | 11 +- services/connectors/irc.go | 11 +- services/connectors/slack.go | 19 ++-- services/connectors/telegram.go | 11 +- services/connectors/twitter.go | 11 +- webui/app.go | 13 +-- webui/routes.go | 4 +- 50 files changed, 568 insertions(+), 467 deletions(-) rename core/{action/definition.go => types/actions.go} (63%) rename core/{agent/jobs.go => types/job.go} (72%) create mode 100644 core/types/result.go diff --git a/core/action/custom.go b/core/action/custom.go index bd886e2..3397bff 100644 --- a/core/action/custom.go +++ b/core/action/custom.go @@ -5,6 +5,7 @@ import ( "fmt" "strings" + "github.com/mudler/LocalAgent/core/types" "github.com/mudler/LocalAgent/pkg/xlog" "github.com/sashabaranov/go-openai/jsonschema" "github.com/traefik/yaegi/interp" @@ -79,24 +80,24 @@ func (a *CustomAction) Plannable() bool { return true } -func (a *CustomAction) Run(ctx context.Context, params ActionParams) (ActionResult, error) { +func (a *CustomAction) Run(ctx context.Context, params types.ActionParams) (types.ActionResult, error) { v, err := a.i.Eval(fmt.Sprintf("%s.Run", a.config["name"])) if err != nil { - return ActionResult{}, err + return types.ActionResult{}, err } run := v.Interface().(func(map[string]interface{}) (string, map[string]interface{}, error)) res, meta, err := run(params) - return ActionResult{Result: res, Metadata: meta}, err + return types.ActionResult{Result: res, Metadata: meta}, err } -func (a *CustomAction) Definition() ActionDefinition { +func (a *CustomAction) Definition() types.ActionDefinition { v, err := a.i.Eval(fmt.Sprintf("%s.Definition", a.config["name"])) if err != nil { xlog.Error("Error getting custom action definition", "error", err) - return ActionDefinition{} + return types.ActionDefinition{} } properties := v.Interface().(func() map[string][]string) @@ -104,7 +105,7 @@ func (a *CustomAction) Definition() ActionDefinition { v, err = a.i.Eval(fmt.Sprintf("%s.RequiredFields", a.config["name"])) if err != nil { xlog.Error("Error getting custom action definition", "error", err) - return ActionDefinition{} + return types.ActionDefinition{} } requiredFields := v.Interface().(func() []string) @@ -121,8 +122,8 @@ func (a *CustomAction) Definition() ActionDefinition { Description: v[1], } } - return ActionDefinition{ - Name: ActionDefinitionName(a.config["name"]), + return types.ActionDefinition{ + Name: types.ActionDefinitionName(a.config["name"]), Description: a.config["description"], Properties: prop, Required: requiredFields(), diff --git a/core/action/custom_test.go b/core/action/custom_test.go index 4d780a0..1d0afc5 100644 --- a/core/action/custom_test.go +++ b/core/action/custom_test.go @@ -4,6 +4,7 @@ import ( "context" . "github.com/mudler/LocalAgent/core/action" + "github.com/mudler/LocalAgent/core/types" . "github.com/onsi/ginkgo/v2" . "github.com/onsi/gomega" @@ -63,7 +64,7 @@ return []string{"foo"} Expect(err).ToNot(HaveOccurred()) definition := customAction.Definition() - Expect(definition).To(Equal(ActionDefinition{ + Expect(definition).To(Equal(types.ActionDefinition{ Properties: map[string]jsonschema.Definition{ "foo": { Type: jsonschema.String, @@ -75,7 +76,7 @@ return []string{"foo"} Description: "A test action", })) - runResult, err := customAction.Run(context.Background(), ActionParams{ + runResult, err := customAction.Run(context.Background(), types.ActionParams{ "Foo": "bar", }) Expect(err).ToNot(HaveOccurred()) diff --git a/core/action/intention.go b/core/action/intention.go index 082efb1..77ef0fa 100644 --- a/core/action/intention.go +++ b/core/action/intention.go @@ -3,6 +3,7 @@ package action import ( "context" + "github.com/mudler/LocalAgent/core/types" "github.com/sashabaranov/go-openai/jsonschema" ) @@ -21,16 +22,16 @@ type IntentResponse struct { Reasoning string `json:"reasoning"` } -func (a *IntentAction) Run(context.Context, ActionParams) (ActionResult, error) { - return ActionResult{}, nil +func (a *IntentAction) Run(context.Context, types.ActionParams) (types.ActionResult, error) { + return types.ActionResult{}, nil } func (a *IntentAction) Plannable() bool { return false } -func (a *IntentAction) Definition() ActionDefinition { - return ActionDefinition{ +func (a *IntentAction) Definition() types.ActionDefinition { + return types.ActionDefinition{ Name: "pick_tool", Description: "Pick a tool", Properties: map[string]jsonschema.Definition{ diff --git a/core/action/newconversation.go b/core/action/newconversation.go index d8c7dc1..50e831a 100644 --- a/core/action/newconversation.go +++ b/core/action/newconversation.go @@ -3,6 +3,7 @@ package action import ( "context" + "github.com/mudler/LocalAgent/core/types" "github.com/sashabaranov/go-openai/jsonschema" ) @@ -18,16 +19,16 @@ type ConversationActionResponse struct { Message string `json:"message"` } -func (a *ConversationAction) Run(context.Context, ActionParams) (ActionResult, error) { - return ActionResult{}, nil +func (a *ConversationAction) Run(context.Context, types.ActionParams) (types.ActionResult, error) { + return types.ActionResult{}, nil } func (a *ConversationAction) Plannable() bool { return false } -func (a *ConversationAction) Definition() ActionDefinition { - return ActionDefinition{ +func (a *ConversationAction) Definition() types.ActionDefinition { + return types.ActionDefinition{ Name: ConversationActionName, Description: "Use this tool to initiate a new conversation or to notify something.", Properties: map[string]jsonschema.Definition{ diff --git a/core/action/noreply.go b/core/action/noreply.go index 4215176..7575b79 100644 --- a/core/action/noreply.go +++ b/core/action/noreply.go @@ -1,6 +1,10 @@ package action -import "context" +import ( + "context" + + "github.com/mudler/LocalAgent/core/types" +) // StopActionName is the name of the action // used by the LLM to stop any further action @@ -12,16 +16,16 @@ func NewStop() *StopAction { type StopAction struct{} -func (a *StopAction) Run(context.Context, ActionParams) (ActionResult, error) { - return ActionResult{}, nil +func (a *StopAction) Run(context.Context, types.ActionParams) (types.ActionResult, error) { + return types.ActionResult{}, nil } func (a *StopAction) Plannable() bool { return false } -func (a *StopAction) Definition() ActionDefinition { - return ActionDefinition{ +func (a *StopAction) Definition() types.ActionDefinition { + return types.ActionDefinition{ Name: StopActionName, Description: "Use this tool to stop any further action and stop the conversation. You must use this when it looks like there is a conclusion to the conversation or the topic diverged too much from the original conversation. For instance if the user offer his help and you already replied with a message, you can use this tool to stop the conversation.", } diff --git a/core/action/plan.go b/core/action/plan.go index 740ea2f..0c3eb96 100644 --- a/core/action/plan.go +++ b/core/action/plan.go @@ -3,6 +3,7 @@ package action import ( "context" + "github.com/mudler/LocalAgent/core/types" "github.com/sashabaranov/go-openai/jsonschema" ) @@ -29,16 +30,16 @@ type PlanSubtask struct { Reasoning string `json:"reasoning"` } -func (a *PlanAction) Run(context.Context, ActionParams) (ActionResult, error) { - return ActionResult{}, nil +func (a *PlanAction) Run(context.Context, types.ActionParams) (types.ActionResult, error) { + return types.ActionResult{}, nil } func (a *PlanAction) Plannable() bool { return false } -func (a *PlanAction) Definition() ActionDefinition { - return ActionDefinition{ +func (a *PlanAction) Definition() types.ActionDefinition { + return types.ActionDefinition{ Name: PlanActionName, Description: "The assistant for solving complex tasks that involves calling more functions in sequence, replies with the action.", Properties: map[string]jsonschema.Definition{ diff --git a/core/action/reasoning.go b/core/action/reasoning.go index f8dc78d..19daaae 100644 --- a/core/action/reasoning.go +++ b/core/action/reasoning.go @@ -3,6 +3,7 @@ package action import ( "context" + "github.com/mudler/LocalAgent/core/types" "github.com/sashabaranov/go-openai/jsonschema" ) @@ -19,16 +20,16 @@ type ReasoningResponse struct { Reasoning string `json:"reasoning"` } -func (a *ReasoningAction) Run(context.Context, ActionParams) (ActionResult, error) { - return ActionResult{}, nil +func (a *ReasoningAction) Run(context.Context, types.ActionParams) (types.ActionResult, error) { + return types.ActionResult{}, nil } func (a *ReasoningAction) Plannable() bool { return false } -func (a *ReasoningAction) Definition() ActionDefinition { - return ActionDefinition{ +func (a *ReasoningAction) Definition() types.ActionDefinition { + return types.ActionDefinition{ Name: "pick_action", Description: "try to understand what's the best thing to do and pick an action with a reasoning", Properties: map[string]jsonschema.Definition{ diff --git a/core/action/reply.go b/core/action/reply.go index 33b6627..62ce86c 100644 --- a/core/action/reply.go +++ b/core/action/reply.go @@ -3,6 +3,7 @@ package action import ( "context" + "github.com/mudler/LocalAgent/core/types" "github.com/sashabaranov/go-openai/jsonschema" ) @@ -21,7 +22,7 @@ type ReplyResponse struct { Message string `json:"message"` } -func (a *ReplyAction) Run(context.Context, ActionParams) (string, error) { +func (a *ReplyAction) Run(context.Context, types.ActionParams) (string, error) { return "no-op", nil } @@ -29,8 +30,8 @@ func (a *ReplyAction) Plannable() bool { return false } -func (a *ReplyAction) Definition() ActionDefinition { - return ActionDefinition{ +func (a *ReplyAction) Definition() types.ActionDefinition { + return types.ActionDefinition{ Name: ReplyActionName, Description: "Use this tool to reply to the user once we have all the informations we need.", Properties: map[string]jsonschema.Definition{ diff --git a/core/action/state.go b/core/action/state.go index d0fe4d0..6121f82 100644 --- a/core/action/state.go +++ b/core/action/state.go @@ -4,6 +4,7 @@ import ( "context" "fmt" + "github.com/mudler/LocalAgent/core/types" "github.com/sashabaranov/go-openai/jsonschema" ) @@ -33,16 +34,16 @@ type AgentInternalState struct { Goal string `json:"goal"` } -func (a *StateAction) Run(context.Context, ActionParams) (ActionResult, error) { - return ActionResult{Result: "internal state has been updated"}, nil +func (a *StateAction) Run(context.Context, types.ActionParams) (types.ActionResult, error) { + return types.ActionResult{Result: "internal state has been updated"}, nil } func (a *StateAction) Plannable() bool { return false } -func (a *StateAction) Definition() ActionDefinition { - return ActionDefinition{ +func (a *StateAction) Definition() types.ActionDefinition { + return types.ActionDefinition{ Name: StateActionName, Description: "update the agent state (short memory) with the current state of the conversation.", Properties: map[string]jsonschema.Definition{ diff --git a/core/agent/actions.go b/core/agent/actions.go index c3e467d..7b1c191 100644 --- a/core/agent/actions.go +++ b/core/agent/actions.go @@ -7,53 +7,15 @@ import ( "os" "github.com/mudler/LocalAgent/core/action" + "github.com/mudler/LocalAgent/core/types" + "github.com/mudler/LocalAgent/pkg/xlog" "github.com/sashabaranov/go-openai" ) -type ActionState struct { - ActionCurrentState - action.ActionResult -} - -type ActionCurrentState struct { - Action Action - Params action.ActionParams - Reasoning string -} - -// Actions is something the agent can do -type Action interface { - Run(ctx context.Context, action action.ActionParams) (action.ActionResult, error) - Definition() action.ActionDefinition - Plannable() bool -} - -type Actions []Action - -func (a Actions) ToTools() []openai.Tool { - tools := []openai.Tool{} - for _, action := range a { - tools = append(tools, openai.Tool{ - Type: openai.ToolTypeFunction, - Function: action.Definition().ToFunctionDefinition(), - }) - } - return tools -} - -func (a Actions) Find(name string) Action { - for _, action := range a { - if action.Definition().Name.Is(name) { - return action - } - } - return nil -} - type decisionResult struct { - actionParams action.ActionParams + actionParams types.ActionParams message string actioName string } @@ -85,7 +47,7 @@ func (a *Agent) decision( return &decisionResult{message: msg.Content}, nil } - params := action.ActionParams{} + params := types.ActionParams{} if err := params.Read(msg.ToolCalls[0].Function.Arguments); err != nil { return nil, err } @@ -173,7 +135,7 @@ func (m Messages) IsLastMessageFromRole(role string) bool { return m[len(m)-1].Role == role } -func (a *Agent) generateParameters(ctx context.Context, pickTemplate string, act Action, c []openai.ChatCompletionMessage, reasoning string) (*decisionResult, error) { +func (a *Agent) generateParameters(ctx context.Context, pickTemplate string, act types.Action, c []openai.ChatCompletionMessage, reasoning string) (*decisionResult, error) { stateHUD, err := renderTemplate(pickTemplate, a.prepareHUD(), a.availableActions(), reasoning) if err != nil { @@ -212,7 +174,7 @@ func (a *Agent) generateParameters(ctx context.Context, pickTemplate string, act ) } -func (a *Agent) handlePlanning(ctx context.Context, job *Job, chosenAction Action, actionParams action.ActionParams, reasoning string, pickTemplate string) error { +func (a *Agent) handlePlanning(ctx context.Context, job *types.Job, chosenAction types.Action, actionParams types.ActionParams, reasoning string, pickTemplate string) error { // Planning: run all the actions in sequence if !chosenAction.Definition().Name.Is(action.PlanActionName) { xlog.Debug("no plan action") @@ -225,9 +187,17 @@ func (a *Agent) handlePlanning(ctx context.Context, job *Job, chosenAction Actio return fmt.Errorf("error unmarshalling plan result: %w", err) } - stateResult := ActionState{ActionCurrentState{chosenAction, actionParams, reasoning}, action.ActionResult{ - Result: fmt.Sprintf("planning %s, subtasks: %+v", planResult.Goal, planResult.Subtasks), - }} + stateResult := types.ActionState{ + ActionCurrentState: types.ActionCurrentState{ + Job: job, + Action: chosenAction, + Params: actionParams, + Reasoning: reasoning, + }, + ActionResult: types.ActionResult{ + Result: fmt.Sprintf("planning %s, subtasks: %+v", planResult.Goal, planResult.Subtasks), + }, + } job.Result.SetResult(stateResult) job.CallbackWithResult(stateResult) @@ -258,8 +228,23 @@ func (a *Agent) handlePlanning(ctx context.Context, job *Job, chosenAction Actio } actionParams = params.actionParams - if !job.Callback(ActionCurrentState{subTaskAction, actionParams, subTaskReasoning}) { - job.Result.SetResult(ActionState{ActionCurrentState{chosenAction, actionParams, subTaskReasoning}, action.ActionResult{Result: "stopped by callback"}}) + if !job.Callback(types.ActionCurrentState{ + Job: job, + Action: subTaskAction, + Params: actionParams, + Reasoning: subTaskReasoning, + }) { + job.Result.SetResult(types.ActionState{ + ActionCurrentState: types.ActionCurrentState{ + Job: job, + Action: chosenAction, + Params: actionParams, + Reasoning: subTaskReasoning, + }, + ActionResult: types.ActionResult{ + Result: "stopped by callback", + }, + }) job.Result.Conversation = a.currentConversation job.Result.Finish(nil) break @@ -270,7 +255,15 @@ func (a *Agent) handlePlanning(ctx context.Context, job *Job, chosenAction Actio return fmt.Errorf("error running action: %w", err) } - stateResult := ActionState{ActionCurrentState{subTaskAction, actionParams, subTaskReasoning}, result} + stateResult := types.ActionState{ + ActionCurrentState: types.ActionCurrentState{ + Job: job, + Action: subTaskAction, + Params: actionParams, + Reasoning: subTaskReasoning, + }, + ActionResult: result, + } job.Result.SetResult(stateResult) job.CallbackWithResult(stateResult) xlog.Debug("[subtask] Action executed", "agent", a.Character.Name, "action", subTaskAction.Definition().Name, "result", result) @@ -280,10 +273,10 @@ func (a *Agent) handlePlanning(ctx context.Context, job *Job, chosenAction Actio return nil } -func (a *Agent) availableActions() Actions { +func (a *Agent) availableActions() types.Actions { // defaultActions := append(a.options.userActions, action.NewReply()) - addPlanAction := func(actions Actions) Actions { + addPlanAction := func(actions types.Actions) types.Actions { if !a.options.canPlan { return actions } @@ -341,7 +334,7 @@ func (a *Agent) prepareHUD() (promptHUD *PromptHUD) { } // pickAction picks an action based on the conversation -func (a *Agent) pickAction(ctx context.Context, templ string, messages []openai.ChatCompletionMessage) (Action, action.ActionParams, string, error) { +func (a *Agent) pickAction(ctx context.Context, templ string, messages []openai.ChatCompletionMessage) (types.Action, types.ActionParams, string, error) { c := messages if !a.options.forceReasoning { @@ -390,7 +383,7 @@ func (a *Agent) pickAction(ctx context.Context, templ string, messages []openai. // and then use the reply to get the action thought, err := a.decision(ctx, c, - Actions{action.NewReasoning()}.ToTools(), + types.Actions{action.NewReasoning()}.ToTools(), action.NewReasoning().Definition().Name) if err != nil { return nil, nil, "", err @@ -421,7 +414,7 @@ func (a *Agent) pickAction(ctx context.Context, templ string, messages []openai. Role: "system", Content: "Given the assistant thought, pick the relevant action: " + reason, }), - Actions{intentionsTools}.ToTools(), + types.Actions{intentionsTools}.ToTools(), intentionsTools.Definition().Name) if err != nil { return nil, nil, "", fmt.Errorf("failed to get the action tool parameters: %v", err) diff --git a/core/agent/agent.go b/core/agent/agent.go index 08864b6..14c7a1c 100644 --- a/core/agent/agent.go +++ b/core/agent/agent.go @@ -10,6 +10,7 @@ import ( "github.com/mudler/LocalAgent/pkg/xlog" "github.com/mudler/LocalAgent/core/action" + "github.com/mudler/LocalAgent/core/types" "github.com/mudler/LocalAgent/pkg/llm" "github.com/sashabaranov/go-openai" ) @@ -25,21 +26,21 @@ type Agent struct { options *options Character Character client *openai.Client - jobQueue chan *Job - actionContext *action.ActionContext - context *action.ActionContext + jobQueue chan *types.Job + actionContext *types.ActionContext + context *types.ActionContext currentReasoning string currentState *action.AgentInternalState - nextAction Action - nextActionParams *action.ActionParams + nextAction types.Action + nextActionParams *types.ActionParams currentConversation Messages selfEvaluationInProgress bool pause bool newConversations chan openai.ChatCompletionMessage - mcpActions Actions + mcpActions types.Actions } type RAGDB interface { @@ -64,12 +65,12 @@ func New(opts ...Option) (*Agent, error) { ctx, cancel := context.WithCancel(c) a := &Agent{ - jobQueue: make(chan *Job), + jobQueue: make(chan *types.Job), options: options, client: client, Character: options.character, currentState: &action.AgentInternalState{}, - context: action.NewContext(ctx, cancel), + context: types.NewActionContext(ctx, cancel), } if a.options.statefile != "" { @@ -130,18 +131,18 @@ func (a *Agent) ConversationChannel() chan openai.ChatCompletionMessage { // Ask is a pre-emptive, blocking call that returns the response as soon as it's ready. // It discards any other computation. -func (a *Agent) Ask(opts ...JobOption) *JobResult { +func (a *Agent) Ask(opts ...types.JobOption) *types.JobResult { xlog.Debug("Agent Ask()", "agent", a.Character.Name, "model", a.options.LLMAPI.Model) defer func() { xlog.Debug("Agent has finished being asked", "agent", a.Character.Name) }() //a.StopAction() - j := NewJob( + j := types.NewJob( append( opts, - WithReasoningCallback(a.options.reasoningCallback), - WithResultCallback(a.options.resultCallback), + types.WithReasoningCallback(a.options.reasoningCallback), + types.WithResultCallback(a.options.resultCallback), )..., ) a.jobQueue <- j @@ -224,12 +225,12 @@ func (a *Agent) Memory() RAGDB { return a.options.ragdb } -func (a *Agent) runAction(chosenAction Action, params action.ActionParams) (result action.ActionResult, err error) { +func (a *Agent) runAction(chosenAction types.Action, params types.ActionParams) (result types.ActionResult, err error) { for _, act := range a.availableActions() { if act.Definition().Name == chosenAction.Definition().Name { res, err := act.Run(a.actionContext, params) if err != nil { - return action.ActionResult{}, fmt.Errorf("error running action: %w", err) + return types.ActionResult{}, fmt.Errorf("error running action: %w", err) } result = res @@ -244,7 +245,7 @@ func (a *Agent) runAction(chosenAction Action, params action.ActionParams) (resu err = params.Unmarshal(&state) if err != nil { - return action.ActionResult{}, fmt.Errorf("error unmarshalling state of the agent: %w", err) + return types.ActionResult{}, fmt.Errorf("error unmarshalling state of the agent: %w", err) } // update the current state with the one we just got from the action a.currentState = &state @@ -252,7 +253,7 @@ func (a *Agent) runAction(chosenAction Action, params action.ActionParams) (resu // update the state file if a.options.statefile != "" { if err := a.SaveState(a.options.statefile); err != nil { - return action.ActionResult{}, err + return types.ActionResult{}, err } } } @@ -348,7 +349,7 @@ func extractImageContent(message openai.ChatCompletionMessage) (imageURL, text s return } -func (a *Agent) processUserInputs(job *Job, role string) { +func (a *Agent) processUserInputs(job *types.Job, role string) { noNewMessage := job.Text == "" && job.Image == "" onlyText := job.Text != "" && job.Image == "" @@ -434,7 +435,7 @@ func (a *Agent) processUserInputs(job *Job, role string) { } } -func (a *Agent) consumeJob(job *Job, role string) { +func (a *Agent) consumeJob(job *types.Job, role string) { a.Lock() paused := a.pause a.Unlock() @@ -451,10 +452,10 @@ func (a *Agent) consumeJob(job *Job, role string) { a.Lock() // Set the action context ctx, cancel := context.WithCancel(context.Background()) - a.actionContext = action.NewContext(ctx, cancel) + a.actionContext = types.NewActionContext(ctx, cancel) a.selfEvaluationInProgress = selfEvaluation - if len(job.conversationHistory) != 0 { - a.currentConversation = job.conversationHistory + if len(job.ConversationHistory) != 0 { + a.currentConversation = job.ConversationHistory } a.Unlock() @@ -493,9 +494,9 @@ func (a *Agent) consumeJob(job *Job, role string) { } // choose an action first - var chosenAction Action + var chosenAction types.Action var reasoning string - var actionParams action.ActionParams + var actionParams types.ActionParams if a.nextAction != nil { // if we are being re-evaluated, we already have the action @@ -576,8 +577,19 @@ func (a *Agent) consumeJob(job *Job, role string) { return } - if !job.Callback(ActionCurrentState{chosenAction, actionParams, reasoning}) { - job.Result.SetResult(ActionState{ActionCurrentState{chosenAction, actionParams, reasoning}, action.ActionResult{Result: "stopped by callback"}}) + if !job.Callback(types.ActionCurrentState{ + Job: job, + Action: chosenAction, + Params: actionParams, + Reasoning: reasoning}) { + job.Result.SetResult(types.ActionState{ + ActionCurrentState: types.ActionCurrentState{ + Job: job, + Action: chosenAction, + Params: actionParams, + Reasoning: reasoning, + }, + ActionResult: types.ActionResult{Result: "stopped by callback"}}) job.Result.Conversation = a.currentConversation job.Result.Finish(nil) return @@ -622,7 +634,15 @@ func (a *Agent) consumeJob(job *Job, role string) { result.Result = fmt.Sprintf("Error running tool: %v", err) } - stateResult := ActionState{ActionCurrentState{chosenAction, actionParams, reasoning}, result} + stateResult := types.ActionState{ + ActionCurrentState: types.ActionCurrentState{ + Job: job, + Action: chosenAction, + Params: actionParams, + Reasoning: reasoning, + }, + ActionResult: result, + } job.Result.SetResult(stateResult) job.CallbackWithResult(stateResult) xlog.Debug("Action executed", "agent", a.Character.Name, "action", chosenAction.Definition().Name, "result", result) @@ -781,7 +801,7 @@ func (a *Agent) consumeJob(job *Job, role string) { job.Result.Finish(nil) } -func (a *Agent) addFunctionResultToConversation(chosenAction Action, actionParams action.ActionParams, result action.ActionResult) { +func (a *Agent) addFunctionResultToConversation(chosenAction types.Action, actionParams types.ActionParams, result types.ActionResult) { // calling the function a.currentConversation = append(a.currentConversation, openai.ChatCompletionMessage{ Role: "assistant", @@ -847,10 +867,10 @@ func (a *Agent) periodicallyRun(timer *time.Timer) { // - asking the agent to do something else based on the result // whatNext := NewJob(WithText("Decide what to do based on the state")) - whatNext := NewJob( - WithText(innerMonologueTemplate), - WithReasoningCallback(a.options.reasoningCallback), - WithResultCallback(a.options.resultCallback), + whatNext := types.NewJob( + types.WithText(innerMonologueTemplate), + types.WithReasoningCallback(a.options.reasoningCallback), + types.WithResultCallback(a.options.resultCallback), ) a.consumeJob(whatNext, SystemRole) a.ResetConversation() @@ -913,7 +933,7 @@ func (a *Agent) Run() error { } } -func (a *Agent) loop(timer *time.Timer, job *Job) { +func (a *Agent) loop(timer *time.Timer, job *types.Job) { // Remember always to reset the timer - if we don't the agent will stop.. defer timer.Reset(a.options.periodicRuns) // Consume the job and generate a response diff --git a/core/agent/agent_test.go b/core/agent/agent_test.go index 988b893..ebac839 100644 --- a/core/agent/agent_test.go +++ b/core/agent/agent_test.go @@ -8,8 +8,8 @@ import ( "github.com/mudler/LocalAgent/pkg/xlog" "github.com/mudler/LocalAgent/services/actions" - "github.com/mudler/LocalAgent/core/action" . "github.com/mudler/LocalAgent/core/agent" + "github.com/mudler/LocalAgent/core/types" . "github.com/onsi/ginkgo/v2" . "github.com/onsi/gomega" "github.com/sashabaranov/go-openai/jsonschema" @@ -19,14 +19,14 @@ const testActionResult = "In Boston it's 30C today, it's sunny, and humidity is const testActionResult2 = "In milan it's very hot today, it is 45C and the humidity is at 200%" const testActionResult3 = "In paris it's very cold today, it is 2C and the humidity is at 10%" -var _ Action = &TestAction{} +var _ types.Action = &TestAction{} -var debugOptions = []JobOption{ - WithReasoningCallback(func(state ActionCurrentState) bool { +var debugOptions = []types.JobOption{ + types.WithReasoningCallback(func(state types.ActionCurrentState) bool { xlog.Info("Reasoning", state) return true }), - WithResultCallback(func(state ActionState) { + types.WithResultCallback(func(state types.ActionState) { xlog.Info("Reasoning", state.Reasoning) xlog.Info("Action", state.Action) xlog.Info("Result", state.Result) @@ -41,18 +41,18 @@ func (a *TestAction) Plannable() bool { return true } -func (a *TestAction) Run(c context.Context, p action.ActionParams) (action.ActionResult, error) { +func (a *TestAction) Run(c context.Context, p types.ActionParams) (types.ActionResult, error) { for k, r := range a.response { if strings.Contains(strings.ToLower(p.String()), strings.ToLower(k)) { - return action.ActionResult{Result: r}, nil + return types.ActionResult{Result: r}, nil } } - return action.ActionResult{Result: "No match"}, nil + return types.ActionResult{Result: "No match"}, nil } -func (a *TestAction) Definition() action.ActionDefinition { - return action.ActionDefinition{ +func (a *TestAction) Definition() types.ActionDefinition { + return types.ActionDefinition{ Name: "get_weather", Description: "get current weather", Properties: map[string]jsonschema.Definition{ @@ -74,8 +74,8 @@ type FakeStoreResultAction struct { TestAction } -func (a *FakeStoreResultAction) Definition() action.ActionDefinition { - return action.ActionDefinition{ +func (a *FakeStoreResultAction) Definition() types.ActionDefinition { + return types.ActionDefinition{ Name: "store_results", Description: "store results permanently. Use this tool after you have a result you want to keep.", Properties: map[string]jsonschema.Definition{ @@ -93,8 +93,8 @@ type FakeInternetAction struct { TestAction } -func (a *FakeInternetAction) Definition() action.ActionDefinition { - return action.ActionDefinition{ +func (a *FakeInternetAction) Definition() types.ActionDefinition { + return types.ActionDefinition{ Name: "search_internet", Description: "search on internet", Properties: map[string]jsonschema.Definition{ @@ -127,7 +127,7 @@ var _ = Describe("Agent test", func() { res := agent.Ask( append(debugOptions, - WithText("what's the weather in Boston and Milano? Use celsius units"), + types.WithText("what's the weather in Boston and Milano? Use celsius units"), )..., ) Expect(res.Error).ToNot(HaveOccurred()) @@ -142,7 +142,7 @@ var _ = Describe("Agent test", func() { res = agent.Ask( append(debugOptions, - WithText("Now I want to know the weather in Paris, always use celsius units"), + types.WithText("Now I want to know the weather in Paris, always use celsius units"), )...) for _, r := range res.State { @@ -173,7 +173,7 @@ var _ = Describe("Agent test", func() { defer agent.Stop() res := agent.Ask( append(debugOptions, - WithText("can you get the weather in boston? Use celsius units"))..., + types.WithText("can you get the weather in boston? Use celsius units"))..., ) reasons := []string{} for _, r := range res.State { @@ -196,7 +196,7 @@ var _ = Describe("Agent test", func() { defer agent.Stop() result := agent.Ask( - WithText("Update your goals such as you want to learn to play the guitar"), + types.WithText("Update your goals such as you want to learn to play the guitar"), ) fmt.Printf("%+v\n", result) Expect(result.Error).ToNot(HaveOccurred()) @@ -221,7 +221,7 @@ var _ = Describe("Agent test", func() { defer agent.Stop() result := agent.Ask( - WithText("plan a trip to San Francisco from Venice, Italy"), + types.WithText("plan a trip to San Francisco from Venice, Italy"), ) Expect(len(result.State)).To(BeNumerically(">", 1)) diff --git a/core/agent/mcp.go b/core/agent/mcp.go index 82a4350..bb1e178 100644 --- a/core/agent/mcp.go +++ b/core/agent/mcp.go @@ -7,12 +7,12 @@ import ( mcp "github.com/metoro-io/mcp-golang" "github.com/metoro-io/mcp-golang/transport/http" - "github.com/mudler/LocalAgent/core/action" + "github.com/mudler/LocalAgent/core/types" "github.com/mudler/LocalAgent/pkg/xlog" "github.com/sashabaranov/go-openai/jsonschema" ) -var _ Action = &mcpAction{} +var _ types.Action = &mcpAction{} type MCPServer struct { URL string `json:"url"` @@ -30,11 +30,11 @@ func (a *mcpAction) Plannable() bool { return true } -func (m *mcpAction) Run(ctx context.Context, params action.ActionParams) (action.ActionResult, error) { +func (m *mcpAction) Run(ctx context.Context, params types.ActionParams) (types.ActionResult, error) { resp, err := m.mcpClient.CallTool(ctx, m.toolName, params) if err != nil { xlog.Error("Failed to call tool", "error", err.Error()) - return action.ActionResult{}, err + return types.ActionResult{}, err } xlog.Debug("MCP response", "response", resp) @@ -51,12 +51,12 @@ func (m *mcpAction) Run(ctx context.Context, params action.ActionParams) (action } } - return action.ActionResult{ + return types.ActionResult{ Result: textResult, }, nil } -func (m *mcpAction) Definition() action.ActionDefinition { +func (m *mcpAction) Definition() types.ActionDefinition { props := map[string]jsonschema.Definition{} dat, err := json.Marshal(m.inputSchema.Properties) if err != nil { @@ -64,8 +64,8 @@ func (m *mcpAction) Definition() action.ActionDefinition { } json.Unmarshal(dat, &props) - return action.ActionDefinition{ - Name: action.ActionDefinitionName(m.toolName), + return types.ActionDefinition{ + Name: types.ActionDefinitionName(m.toolName), Description: m.toolDescription, Required: m.inputSchema.Required, //Properties: , @@ -84,7 +84,7 @@ func (a *Agent) initMCPActions() error { a.mcpActions = nil var err error - generatedActions := Actions{} + generatedActions := types.Actions{} for _, mcpServer := range a.options.mcpServers { transport := http.NewHTTPClientTransport("/mcp") diff --git a/core/agent/options.go b/core/agent/options.go index da27302..f01f7dd 100644 --- a/core/agent/options.go +++ b/core/agent/options.go @@ -4,6 +4,8 @@ import ( "context" "strings" "time" + + "github.com/mudler/LocalAgent/core/types" ) type Option func(*options) error @@ -20,7 +22,7 @@ type options struct { character Character randomIdentityGuidance string randomIdentity bool - userActions Actions + userActions types.Actions enableHUD, standaloneJob, showCharacter, enableKB, enableSummaryMemory, enableLongTermMemory bool canStopItself bool @@ -41,8 +43,8 @@ type options struct { systemPrompt string // callbacks - reasoningCallback func(ActionCurrentState) bool - resultCallback func(ActionState) + reasoningCallback func(types.ActionCurrentState) bool + resultCallback func(types.ActionState) conversationsPath string @@ -262,14 +264,14 @@ func WithContext(ctx context.Context) Option { } } -func WithAgentReasoningCallback(cb func(ActionCurrentState) bool) Option { +func WithAgentReasoningCallback(cb func(types.ActionCurrentState) bool) Option { return func(o *options) error { o.reasoningCallback = cb return nil } } -func WithAgentResultCallback(cb func(ActionState)) Option { +func WithAgentResultCallback(cb func(types.ActionState)) Option { return func(o *options) error { o.resultCallback = cb return nil @@ -310,7 +312,7 @@ func WithRandomIdentity(guidance ...string) Option { } } -func WithActions(actions ...Action) Option { +func WithActions(actions ...types.Action) Option { return func(o *options) error { o.userActions = actions return nil diff --git a/core/agent/templates.go b/core/agent/templates.go index 00f942d..5c9bf5a 100644 --- a/core/agent/templates.go +++ b/core/agent/templates.go @@ -5,11 +5,11 @@ import ( "html/template" "time" - "github.com/mudler/LocalAgent/core/action" + "github.com/mudler/LocalAgent/core/types" "github.com/sashabaranov/go-openai" ) -func renderTemplate(templ string, hud *PromptHUD, actions Actions, reasoning string) (string, error) { +func renderTemplate(templ string, hud *PromptHUD, actions types.Actions, reasoning string) (string, error) { // prepare the prompt prompt := bytes.NewBuffer([]byte{}) @@ -19,14 +19,14 @@ func renderTemplate(templ string, hud *PromptHUD, actions Actions, reasoning str } // Get all the actions definitions - definitions := []action.ActionDefinition{} + definitions := []types.ActionDefinition{} for _, m := range actions { definitions = append(definitions, m.Definition()) } err = promptTemplate.Execute(prompt, struct { HUD *PromptHUD - Actions []action.ActionDefinition + Actions []types.ActionDefinition Reasoning string Messages []openai.ChatCompletionMessage Time string diff --git a/core/state/config.go b/core/state/config.go index e52588d..2a9084d 100644 --- a/core/state/config.go +++ b/core/state/config.go @@ -4,6 +4,7 @@ import ( "encoding/json" "github.com/mudler/LocalAgent/core/agent" + "github.com/mudler/LocalAgent/core/types" ) type ConnectorConfig struct { @@ -61,7 +62,7 @@ type AgentConfig struct { } type Connector interface { - AgentResultCallback() func(state agent.ActionState) - AgentReasoningCallback() func(state agent.ActionCurrentState) bool + AgentResultCallback() func(state types.ActionState) + AgentReasoningCallback() func(state types.ActionCurrentState) bool Start(a *agent.Agent) } diff --git a/core/state/pool.go b/core/state/pool.go index 5312983..4aac9cc 100644 --- a/core/state/pool.go +++ b/core/state/pool.go @@ -12,9 +12,9 @@ import ( "sync" "time" - "github.com/mudler/LocalAgent/core/agent" . "github.com/mudler/LocalAgent/core/agent" "github.com/mudler/LocalAgent/core/sse" + "github.com/mudler/LocalAgent/core/types" "github.com/mudler/LocalAgent/pkg/llm" "github.com/mudler/LocalAgent/pkg/localrag" "github.com/mudler/LocalAgent/pkg/utils" @@ -26,25 +26,26 @@ import ( type AgentPool struct { sync.Mutex - file string - pooldir string - pool AgentPoolData - agents map[string]*Agent - managers map[string]sse.Manager - agentStatus map[string]*Status - apiURL, defaultModel, defaultMultimodalModel, imageModel, localRAGAPI, localRAGKey, apiKey string - availableActions func(*AgentConfig) func(ctx context.Context, pool *AgentPool) []Action - connectors func(*AgentConfig) []Connector - promptBlocks func(*AgentConfig) []PromptBlock - timeout string - conversationLogs string + file string + pooldir string + pool AgentPoolData + agents map[string]*Agent + managers map[string]sse.Manager + agentStatus map[string]*Status + apiURL, defaultModel, defaultMultimodalModel string + imageModel, localRAGAPI, localRAGKey, apiKey string + availableActions func(*AgentConfig) func(ctx context.Context, pool *AgentPool) []types.Action + connectors func(*AgentConfig) []Connector + promptBlocks func(*AgentConfig) []PromptBlock + timeout string + conversationLogs string } type Status struct { - ActionResults []ActionState + ActionResults []types.ActionState } -func (s *Status) addResult(result ActionState) { +func (s *Status) addResult(result types.ActionState) { // If we have more than 10 results, remove the oldest one if len(s.ActionResults) > 10 { s.ActionResults = s.ActionResults[1:] @@ -53,7 +54,7 @@ func (s *Status) addResult(result ActionState) { s.ActionResults = append(s.ActionResults, result) } -func (s *Status) Results() []ActionState { +func (s *Status) Results() []types.ActionState { return s.ActionResults } @@ -73,7 +74,7 @@ func loadPoolFromFile(path string) (*AgentPoolData, error) { func NewAgentPool( defaultModel, defaultMultimodalModel, imageModel, apiURL, apiKey, directory string, LocalRAGAPI string, - availableActions func(*AgentConfig) func(ctx context.Context, pool *AgentPool) []agent.Action, + availableActions func(*AgentConfig) func(ctx context.Context, pool *AgentPool) []types.Action, connectors func(*AgentConfig) []Connector, promptBlocks func(*AgentConfig) []PromptBlock, timeout string, @@ -158,24 +159,24 @@ func (a *AgentPool) CreateAgent(name string, agentConfig *AgentConfig) error { return err } - go func(ac AgentConfig, pool *AgentPool) { + go func(ac AgentConfig) { // Create the agent avatar - if err := a.createAgentAvatar(ac); err != nil { + if err := createAgentAvatar(a.apiURL, a.apiKey, a.defaultModel, a.imageModel, a.pooldir, ac); err != nil { xlog.Error("Failed to create agent avatar", "error", err) } - }(a.pool[name], a) + }(a.pool[name]) return a.startAgentWithConfig(name, agentConfig) } -func (a *AgentPool) createAgentAvatar(agent AgentConfig) error { - client := llm.NewClient(a.apiKey, a.apiURL+"/v1", "10m") +func createAgentAvatar(APIURL, APIKey, model, imageModel, avatarDir string, agent AgentConfig) error { + client := llm.NewClient(APIKey, APIURL+"/v1", "10m") - if a.imageModel == "" { + if imageModel == "" { return fmt.Errorf("image model not set") } - if a.defaultModel == "" { + if model == "" { return fmt.Errorf("default model not set") } @@ -185,9 +186,9 @@ func (a *AgentPool) createAgentAvatar(agent AgentConfig) error { err := llm.GenerateTypedJSON( context.Background(), - llm.NewClient(a.apiKey, a.apiURL, "10m"), + llm.NewClient(APIKey, APIURL, "10m"), "Generate a prompt that I can use to create a random avatar for the bot '"+agent.Name+"', the description of the bot is: "+agent.Description, - a.defaultModel, + model, jsonschema.Definition{ Type: jsonschema.Object, Properties: map[string]jsonschema.Definition{ @@ -209,7 +210,7 @@ func (a *AgentPool) createAgentAvatar(agent AgentConfig) error { req := openai.ImageRequest{ Prompt: results.ImagePrompt, - Model: a.imageModel, + Model: imageModel, Size: openai.CreateImageSize256x256, ResponseFormat: openai.CreateImageResponseFormatB64JSON, } @@ -228,10 +229,10 @@ func (a *AgentPool) createAgentAvatar(agent AgentConfig) error { imageJson := resp.Data[0].B64JSON - os.MkdirAll(filepath.Join(a.pooldir, "avatars"), 0755) + os.MkdirAll(filepath.Join(avatarDir, "avatars"), 0755) // Save the image to the agent directory - imagePath := filepath.Join(a.pooldir, "avatars", fmt.Sprintf("%s.png", agent.Name)) + imagePath := filepath.Join(avatarDir, "avatars", fmt.Sprintf("%s.png", agent.Name)) imageData, err := base64.StdEncoding.DecodeString(imageJson) if err != nil { return err @@ -343,7 +344,7 @@ func (a *AgentPool) startAgentWithConfig(name string, config *AgentConfig) error WithLLMAPIKey(a.apiKey), WithTimeout(a.timeout), WithRAGDB(localrag.NewWrappedClient(a.localRAGAPI, a.localRAGKey, name)), - WithAgentReasoningCallback(func(state ActionCurrentState) bool { + WithAgentReasoningCallback(func(state types.ActionCurrentState) bool { xlog.Info( "Agent is thinking", "agent", name, @@ -367,7 +368,7 @@ func (a *AgentPool) startAgentWithConfig(name string, config *AgentConfig) error }), WithSystemPrompt(config.SystemPrompt), WithMultimodalModel(multimodalModel), - WithAgentResultCallback(func(state ActionState) { + WithAgentResultCallback(func(state types.ActionState) { a.Lock() if _, ok := a.agentStatus[name]; !ok { a.agentStatus[name] = &Status{} diff --git a/core/action/definition.go b/core/types/actions.go similarity index 63% rename from core/action/definition.go rename to core/types/actions.go index 1473d72..c0452dc 100644 --- a/core/action/definition.go +++ b/core/types/actions.go @@ -1,4 +1,4 @@ -package action +package types import ( "context" @@ -19,7 +19,7 @@ func (ac *ActionContext) Cancel() { } } -func NewContext(ctx context.Context, cancel context.CancelFunc) *ActionContext { +func NewActionContext(ctx context.Context, cancel context.CancelFunc) *ActionContext { return &ActionContext{ Context: ctx, cancelFunc: cancel, @@ -29,6 +29,7 @@ func NewContext(ctx context.Context, cancel context.CancelFunc) *ActionContext { type ActionParams map[string]interface{} type ActionResult struct { + Job *Job Result string Metadata map[string]interface{} } @@ -84,3 +85,44 @@ func (a ActionDefinition) ToFunctionDefinition() openai.FunctionDefinition { }, } } + +// Actions is something the agent can do +type Action interface { + Run(ctx context.Context, action ActionParams) (ActionResult, error) + Definition() ActionDefinition + Plannable() bool +} + +type Actions []Action + +func (a Actions) ToTools() []openai.Tool { + tools := []openai.Tool{} + for _, action := range a { + tools = append(tools, openai.Tool{ + Type: openai.ToolTypeFunction, + Function: action.Definition().ToFunctionDefinition(), + }) + } + return tools +} + +func (a Actions) Find(name string) Action { + for _, action := range a { + if action.Definition().Name.Is(name) { + return action + } + } + return nil +} + +type ActionState struct { + ActionCurrentState + ActionResult +} + +type ActionCurrentState struct { + Job *Job + Action Action + Params ActionParams + Reasoning string +} diff --git a/core/agent/jobs.go b/core/types/job.go similarity index 72% rename from core/agent/jobs.go rename to core/types/job.go index a3b5086..167e2e6 100644 --- a/core/agent/jobs.go +++ b/core/types/job.go @@ -1,8 +1,10 @@ -package agent +package types import ( + "log" "sync" + "github.com/google/uuid" "github.com/sashabaranov/go-openai" ) @@ -16,7 +18,8 @@ type Job struct { Result *JobResult reasoningCallback func(ActionCurrentState) bool resultCallback func(ActionState) - conversationHistory []openai.ChatCompletionMessage + ConversationHistory []openai.ChatCompletionMessage + UUID string } // JobResult is the result of a job @@ -25,17 +28,17 @@ type JobResult struct { // The result of a job State []ActionState Conversation []openai.ChatCompletionMessage - - Response string - Error error - ready chan bool + + Response string + Error error + ready chan bool } type JobOption func(*Job) func WithConversationHistory(history []openai.ChatCompletionMessage) JobOption { return func(j *Job) { - j.conversationHistory = history + j.ConversationHistory = history } } @@ -85,6 +88,19 @@ func WithText(text string) JobOption { } } +func newUUID() string { + // Generate UUID with google/uuid + // https://pkg.go.dev/github.com/google/uuid + + // Generate a Version 4 UUID + u, err := uuid.NewRandom() + if err != nil { + log.Fatalf("failed to generate UUID: %v", err) + } + + return u.String() +} + // NewJob creates a new job // It is a request to the agent to do something // It has a JobResult to get the result asynchronously @@ -92,42 +108,17 @@ func WithText(text string) JobOption { func NewJob(opts ...JobOption) *Job { j := &Job{ Result: NewJobResult(), + UUID: newUUID(), } for _, o := range opts { o(j) } + return j } -// SetResult sets the result of a job -func (j *JobResult) SetResult(text ActionState) { - j.Lock() - defer j.Unlock() - - j.State = append(j.State, text) -} - -// SetResult sets the result of a job -func (j *JobResult) Finish(e error) { - j.Lock() - defer j.Unlock() - - j.Error = e - close(j.ready) -} - -// SetResult sets the result of a job -func (j *JobResult) SetResponse(response string) { - j.Lock() - defer j.Unlock() - - j.Response = response -} - -// WaitResult waits for the result of a job -func (j *JobResult) WaitResult() *JobResult { - <-j.ready - j.Lock() - defer j.Unlock() - return j +func WithUUID(uuid string) JobOption { + return func(j *Job) { + j.UUID = uuid + } } diff --git a/core/types/result.go b/core/types/result.go new file mode 100644 index 0000000..a78c266 --- /dev/null +++ b/core/types/result.go @@ -0,0 +1,34 @@ +package types + +// SetResult sets the result of a job +func (j *JobResult) SetResult(text ActionState) { + j.Lock() + defer j.Unlock() + + j.State = append(j.State, text) +} + +// SetResult sets the result of a job +func (j *JobResult) Finish(e error) { + j.Lock() + defer j.Unlock() + + j.Error = e + close(j.ready) +} + +// SetResult sets the result of a job +func (j *JobResult) SetResponse(response string) { + j.Lock() + defer j.Unlock() + + j.Response = response +} + +// WaitResult waits for the result of a job +func (j *JobResult) WaitResult() *JobResult { + <-j.ready + j.Lock() + defer j.Unlock() + return j +} diff --git a/services/actions.go b/services/actions.go index 735ce2c..1ff5252 100644 --- a/services/actions.go +++ b/services/actions.go @@ -7,9 +7,9 @@ import ( "github.com/mudler/LocalAgent/core/action" "github.com/mudler/LocalAgent/core/state" + "github.com/mudler/LocalAgent/core/types" "github.com/mudler/LocalAgent/pkg/xlog" - "github.com/mudler/LocalAgent/core/agent" "github.com/mudler/LocalAgent/services/actions" ) @@ -60,9 +60,9 @@ var AvailableActions = []string{ ActionShellcommand, } -func Actions(a *state.AgentConfig) func(ctx context.Context, pool *state.AgentPool) []agent.Action { - return func(ctx context.Context, pool *state.AgentPool) []agent.Action { - allActions := []agent.Action{} +func Actions(a *state.AgentConfig) func(ctx context.Context, pool *state.AgentPool) []types.Action { + return func(ctx context.Context, pool *state.AgentPool) []types.Action { + allActions := []types.Action{} for _, a := range a.Actions { var config map[string]string @@ -82,8 +82,8 @@ func Actions(a *state.AgentConfig) func(ctx context.Context, pool *state.AgentPo } } -func Action(name string, config map[string]string, pool *state.AgentPool) (agent.Action, error) { - var a agent.Action +func Action(name string, config map[string]string, pool *state.AgentPool) (types.Action, error) { + var a types.Action var err error switch name { diff --git a/services/actions/browse.go b/services/actions/browse.go index 478ec6d..83ffcae 100644 --- a/services/actions/browse.go +++ b/services/actions/browse.go @@ -6,7 +6,7 @@ import ( "io" "net/http" - "github.com/mudler/LocalAgent/core/action" + "github.com/mudler/LocalAgent/core/types" "github.com/sashabaranov/go-openai/jsonschema" "jaytaylor.com/html2text" ) @@ -18,7 +18,7 @@ func NewBrowse(config map[string]string) *BrowseAction { type BrowseAction struct{} -func (a *BrowseAction) Run(ctx context.Context, params action.ActionParams) (action.ActionResult, error) { +func (a *BrowseAction) Run(ctx context.Context, params types.ActionParams) (types.ActionResult, error) { result := struct { URL string `json:"url"` }{} @@ -26,35 +26,35 @@ func (a *BrowseAction) Run(ctx context.Context, params action.ActionParams) (act if err != nil { fmt.Printf("error: %v", err) - return action.ActionResult{}, err + return types.ActionResult{}, err } // download page with http.Client client := &http.Client{} req, err := http.NewRequest("GET", result.URL, nil) if err != nil { - return action.ActionResult{}, err + return types.ActionResult{}, err } resp, err := client.Do(req) if err != nil { - return action.ActionResult{}, err + return types.ActionResult{}, err } defer resp.Body.Close() pagebyte, err := io.ReadAll(resp.Body) if err != nil { - return action.ActionResult{}, err + return types.ActionResult{}, err } rendered, err := html2text.FromString(string(pagebyte), html2text.Options{PrettyTables: true}) if err != nil { - return action.ActionResult{}, err + return types.ActionResult{}, err } - return action.ActionResult{Result: fmt.Sprintf("The webpage '%s' content is:\n%s", result.URL, rendered)}, nil + return types.ActionResult{Result: fmt.Sprintf("The webpage '%s' content is:\n%s", result.URL, rendered)}, nil } -func (a *BrowseAction) Definition() action.ActionDefinition { - return action.ActionDefinition{ +func (a *BrowseAction) Definition() types.ActionDefinition { + return types.ActionDefinition{ Name: "browse", Description: "Use this tool to visit an URL. It browse a website page and return the text content.", Properties: map[string]jsonschema.Definition{ diff --git a/services/actions/callagents.go b/services/actions/callagents.go index 37a5fc8..71fcc04 100644 --- a/services/actions/callagents.go +++ b/services/actions/callagents.go @@ -4,9 +4,8 @@ import ( "context" "fmt" - "github.com/mudler/LocalAgent/core/action" - "github.com/mudler/LocalAgent/core/agent" "github.com/mudler/LocalAgent/core/state" + "github.com/mudler/LocalAgent/core/types" "github.com/sashabaranov/go-openai" "github.com/sashabaranov/go-openai/jsonschema" ) @@ -21,7 +20,7 @@ type CallAgentAction struct { pool *state.AgentPool } -func (a *CallAgentAction) Run(ctx context.Context, params action.ActionParams) (action.ActionResult, error) { +func (a *CallAgentAction) Run(ctx context.Context, params types.ActionParams) (types.ActionResult, error) { result := struct { AgentName string `json:"agent_name"` Message string `json:"message"` @@ -30,16 +29,16 @@ func (a *CallAgentAction) Run(ctx context.Context, params action.ActionParams) ( if err != nil { fmt.Printf("error: %v", err) - return action.ActionResult{}, err + return types.ActionResult{}, err } ag := a.pool.GetAgent(result.AgentName) if ag == nil { - return action.ActionResult{}, fmt.Errorf("agent '%s' not found", result.AgentName) + return types.ActionResult{}, fmt.Errorf("agent '%s' not found", result.AgentName) } resp := ag.Ask( - agent.WithConversationHistory( + types.WithConversationHistory( []openai.ChatCompletionMessage{ { Role: "user", @@ -49,13 +48,13 @@ func (a *CallAgentAction) Run(ctx context.Context, params action.ActionParams) ( ), ) if resp.Error != nil { - return action.ActionResult{}, err + return types.ActionResult{}, err } - return action.ActionResult{Result: resp.Response}, nil + return types.ActionResult{Result: resp.Response}, nil } -func (a *CallAgentAction) Definition() action.ActionDefinition { +func (a *CallAgentAction) Definition() types.ActionDefinition { allAgents := a.pool.AllAgents() description := "Use this tool to call another agent. Available agents and their roles are:" @@ -68,7 +67,7 @@ func (a *CallAgentAction) Definition() action.ActionDefinition { description += fmt.Sprintf("\n- %s: %s", agent, agentConfig.Description) } - return action.ActionDefinition{ + return types.ActionDefinition{ Name: "call_agent", Description: description, Properties: map[string]jsonschema.Definition{ diff --git a/services/actions/counter.go b/services/actions/counter.go index 22b4397..86dee63 100644 --- a/services/actions/counter.go +++ b/services/actions/counter.go @@ -5,7 +5,7 @@ import ( "fmt" "sync" - "github.com/mudler/LocalAgent/core/action" + "github.com/mudler/LocalAgent/core/types" "github.com/sashabaranov/go-openai/jsonschema" ) @@ -24,7 +24,7 @@ func NewCounter(config map[string]string) *CounterAction { } // Run executes the counter action -func (a *CounterAction) Run(ctx context.Context, params action.ActionParams) (action.ActionResult, error) { +func (a *CounterAction) Run(ctx context.Context, params types.ActionParams) (types.ActionResult, error) { // Parse parameters request := struct { Name string `json:"name"` @@ -32,11 +32,11 @@ func (a *CounterAction) Run(ctx context.Context, params action.ActionParams) (ac }{} if err := params.Unmarshal(&request); err != nil { - return action.ActionResult{}, fmt.Errorf("invalid parameters: %w", err) + return types.ActionResult{}, fmt.Errorf("invalid parameters: %w", err) } if request.Name == "" { - return action.ActionResult{}, fmt.Errorf("counter name cannot be empty") + return types.ActionResult{}, fmt.Errorf("counter name cannot be empty") } a.mutex.Lock() @@ -63,7 +63,7 @@ func (a *CounterAction) Run(ctx context.Context, params action.ActionParams) (ac message = fmt.Sprintf("Current value of counter '%s' is %d", request.Name, newValue) } - return action.ActionResult{ + return types.ActionResult{ Result: message, Metadata: map[string]any{ "counter_name": request.Name, @@ -75,8 +75,8 @@ func (a *CounterAction) Run(ctx context.Context, params action.ActionParams) (ac } // Definition returns the action definition -func (a *CounterAction) Definition() action.ActionDefinition { - return action.ActionDefinition{ +func (a *CounterAction) Definition() types.ActionDefinition { + return types.ActionDefinition{ Name: "counter", Description: "Create, update, or query named counters. Specify a name and an adjustment value (positive to increase, negative to decrease, zero to query).", Properties: map[string]jsonschema.Definition{ diff --git a/services/actions/genimage.go b/services/actions/genimage.go index b395923..bd4c609 100644 --- a/services/actions/genimage.go +++ b/services/actions/genimage.go @@ -4,7 +4,7 @@ import ( "context" "fmt" - "github.com/mudler/LocalAgent/core/action" + "github.com/mudler/LocalAgent/core/types" "github.com/sashabaranov/go-openai" "github.com/sashabaranov/go-openai/jsonschema" ) @@ -28,18 +28,18 @@ type GenImageAction struct { imageModel string } -func (a *GenImageAction) Run(ctx context.Context, params action.ActionParams) (action.ActionResult, error) { +func (a *GenImageAction) Run(ctx context.Context, params types.ActionParams) (types.ActionResult, error) { result := struct { Prompt string `json:"prompt"` Size string `json:"size"` }{} err := params.Unmarshal(&result) if err != nil { - return action.ActionResult{}, err + return types.ActionResult{}, err } if result.Prompt == "" { - return action.ActionResult{}, fmt.Errorf("prompt is required") + return types.ActionResult{}, fmt.Errorf("prompt is required") } req := openai.ImageRequest{ @@ -60,22 +60,22 @@ func (a *GenImageAction) Run(ctx context.Context, params action.ActionParams) (a resp, err := a.client.CreateImage(ctx, req) if err != nil { - return action.ActionResult{Result: "Failed to generate image " + err.Error()}, err + return types.ActionResult{Result: "Failed to generate image " + err.Error()}, err } if len(resp.Data) == 0 { - return action.ActionResult{Result: "Failed to generate image"}, nil + return types.ActionResult{Result: "Failed to generate image"}, nil } - return action.ActionResult{ + return types.ActionResult{ Result: fmt.Sprintf("The image was generated and available at: %s", resp.Data[0].URL), Metadata: map[string]interface{}{ MetadataImages: []string{resp.Data[0].URL}, }}, nil } -func (a *GenImageAction) Definition() action.ActionDefinition { - return action.ActionDefinition{ +func (a *GenImageAction) Definition() types.ActionDefinition { + return types.ActionDefinition{ Name: "generate_image", Description: "Generate image with.", Properties: map[string]jsonschema.Definition{ diff --git a/services/actions/genimage_test.go b/services/actions/genimage_test.go index f0af8bf..7e3f2cd 100644 --- a/services/actions/genimage_test.go +++ b/services/actions/genimage_test.go @@ -4,7 +4,7 @@ import ( "context" "os" - . "github.com/mudler/LocalAgent/core/action" + "github.com/mudler/LocalAgent/core/types" . "github.com/mudler/LocalAgent/services/actions" . "github.com/onsi/ginkgo/v2" @@ -15,7 +15,7 @@ var _ = Describe("GenImageAction", func() { var ( ctx context.Context action *GenImageAction - params ActionParams + params types.ActionParams config map[string]string ) @@ -37,7 +37,7 @@ var _ = Describe("GenImageAction", func() { Describe("Run", func() { It("should generate an image with valid prompt and size", func() { - params = ActionParams{ + params = types.ActionParams{ "prompt": "test prompt", "size": "256x256", } @@ -48,7 +48,7 @@ var _ = Describe("GenImageAction", func() { }) It("should return an error if the prompt is not provided", func() { - params = ActionParams{ + params = types.ActionParams{ "size": "256x256", } diff --git a/services/actions/githubissuecloser.go b/services/actions/githubissuecloser.go index 0db15d8..fd74df1 100644 --- a/services/actions/githubissuecloser.go +++ b/services/actions/githubissuecloser.go @@ -5,7 +5,7 @@ import ( "fmt" "github.com/google/go-github/v69/github" - "github.com/mudler/LocalAgent/core/action" + "github.com/mudler/LocalAgent/core/types" "github.com/sashabaranov/go-openai/jsonschema" ) @@ -27,7 +27,7 @@ func NewGithubIssueCloser(ctx context.Context, config map[string]string) *Github } } -func (g *GithubIssuesCloser) Run(ctx context.Context, params action.ActionParams) (action.ActionResult, error) { +func (g *GithubIssuesCloser) Run(ctx context.Context, params types.ActionParams) (types.ActionResult, error) { result := struct { Repository string `json:"repository"` Owner string `json:"owner"` @@ -37,7 +37,7 @@ func (g *GithubIssuesCloser) Run(ctx context.Context, params action.ActionParams if err != nil { fmt.Printf("error: %v", err) - return action.ActionResult{}, err + return types.ActionResult{}, err } if g.repository != "" { @@ -67,24 +67,24 @@ func (g *GithubIssuesCloser) Run(ctx context.Context, params action.ActionParams if err != nil { fmt.Printf("error: %v", err) - return action.ActionResult{}, err + return types.ActionResult{}, err } resultString := fmt.Sprintf("Closed issue %d in repository %s/%s", result.IssueNumber, result.Owner, result.Repository) if err != nil { resultString = fmt.Sprintf("Error closing issue %d in repository %s/%s: %v", result.IssueNumber, result.Owner, result.Repository, err) } - return action.ActionResult{Result: resultString}, err + return types.ActionResult{Result: resultString}, err } -func (g *GithubIssuesCloser) Definition() action.ActionDefinition { +func (g *GithubIssuesCloser) Definition() types.ActionDefinition { actionName := "close_github_issue" if g.customActionName != "" { actionName = g.customActionName } if g.repository != "" && g.owner != "" { - return action.ActionDefinition{ - Name: action.ActionDefinitionName(actionName), + return types.ActionDefinition{ + Name: types.ActionDefinitionName(actionName), Description: "Closes a Github issue.", Properties: map[string]jsonschema.Definition{ "issue_number": { @@ -96,8 +96,8 @@ func (g *GithubIssuesCloser) Definition() action.ActionDefinition { } } - return action.ActionDefinition{ - Name: action.ActionDefinitionName(actionName), + return types.ActionDefinition{ + Name: types.ActionDefinitionName(actionName), Description: "Closes a Github issue.", Properties: map[string]jsonschema.Definition{ "repository": { diff --git a/services/actions/githubissuecomment.go b/services/actions/githubissuecomment.go index 0c41557..1350a99 100644 --- a/services/actions/githubissuecomment.go +++ b/services/actions/githubissuecomment.go @@ -5,7 +5,7 @@ import ( "fmt" "github.com/google/go-github/v69/github" - "github.com/mudler/LocalAgent/core/action" + "github.com/mudler/LocalAgent/core/types" "github.com/sashabaranov/go-openai/jsonschema" ) @@ -28,7 +28,7 @@ func NewGithubIssueCommenter(ctx context.Context, config map[string]string) *Git } } -func (g *GithubIssuesCommenter) Run(ctx context.Context, params action.ActionParams) (action.ActionResult, error) { +func (g *GithubIssuesCommenter) Run(ctx context.Context, params types.ActionParams) (types.ActionResult, error) { result := struct { Repository string `json:"repository"` Owner string `json:"owner"` @@ -37,7 +37,7 @@ func (g *GithubIssuesCommenter) Run(ctx context.Context, params action.ActionPar }{} err := params.Unmarshal(&result) if err != nil { - return action.ActionResult{}, err + return types.ActionResult{}, err } if g.repository != "" && g.owner != "" { @@ -53,18 +53,18 @@ func (g *GithubIssuesCommenter) Run(ctx context.Context, params action.ActionPar if err != nil { resultString = fmt.Sprintf("Error adding comment to issue %d in repository %s/%s: %v", result.IssueNumber, result.Owner, result.Repository, err) } - return action.ActionResult{Result: resultString}, err + return types.ActionResult{Result: resultString}, err } -func (g *GithubIssuesCommenter) Definition() action.ActionDefinition { +func (g *GithubIssuesCommenter) Definition() types.ActionDefinition { actionName := "add_comment_to_github_issue" if g.customActionName != "" { actionName = g.customActionName } description := "Add a comment to a Github issue to a repository." if g.repository != "" && g.owner != "" { - return action.ActionDefinition{ - Name: action.ActionDefinitionName(actionName), + return types.ActionDefinition{ + Name: types.ActionDefinitionName(actionName), Description: description, Properties: map[string]jsonschema.Definition{ "issue_number": { @@ -79,8 +79,8 @@ func (g *GithubIssuesCommenter) Definition() action.ActionDefinition { Required: []string{"issue_number", "comment"}, } } - return action.ActionDefinition{ - Name: action.ActionDefinitionName(actionName), + return types.ActionDefinition{ + Name: types.ActionDefinitionName(actionName), Description: description, Properties: map[string]jsonschema.Definition{ "issue_number": { diff --git a/services/actions/githubissuelabeler.go b/services/actions/githubissuelabeler.go index e3d7fbc..43e8422 100644 --- a/services/actions/githubissuelabeler.go +++ b/services/actions/githubissuelabeler.go @@ -6,7 +6,7 @@ import ( "strings" "github.com/google/go-github/v69/github" - "github.com/mudler/LocalAgent/core/action" + "github.com/mudler/LocalAgent/core/types" "github.com/mudler/LocalAgent/pkg/xlog" "github.com/sashabaranov/go-openai/jsonschema" ) @@ -39,7 +39,7 @@ func NewGithubIssueLabeler(ctx context.Context, config map[string]string) *Githu } } -func (g *GithubIssuesLabeler) Run(ctx context.Context, params action.ActionParams) (action.ActionResult, error) { +func (g *GithubIssuesLabeler) Run(ctx context.Context, params types.ActionParams) (types.ActionResult, error) { result := struct { Repository string `json:"repository"` Owner string `json:"owner"` @@ -48,7 +48,7 @@ func (g *GithubIssuesLabeler) Run(ctx context.Context, params action.ActionParam }{} err := params.Unmarshal(&result) if err != nil { - return action.ActionResult{}, err + return types.ActionResult{}, err } if g.repository != "" && g.owner != "" { @@ -67,17 +67,17 @@ func (g *GithubIssuesLabeler) Run(ctx context.Context, params action.ActionParam if err != nil { resultString = fmt.Sprintf("Error adding label '%s' to issue %d in repository %s/%s: %v", result.Label, result.IssueNumber, result.Owner, result.Repository, err) } - return action.ActionResult{Result: resultString}, err + return types.ActionResult{Result: resultString}, err } -func (g *GithubIssuesLabeler) Definition() action.ActionDefinition { +func (g *GithubIssuesLabeler) Definition() types.ActionDefinition { actionName := "add_label_to_github_issue" if g.customActionName != "" { actionName = g.customActionName } if g.repository != "" && g.owner != "" { - return action.ActionDefinition{ - Name: action.ActionDefinitionName(actionName), + return types.ActionDefinition{ + Name: types.ActionDefinitionName(actionName), Description: "Add a label to a Github issue. You might want to assign labels to issues to categorize them.", Properties: map[string]jsonschema.Definition{ "issue_number": { @@ -93,8 +93,8 @@ func (g *GithubIssuesLabeler) Definition() action.ActionDefinition { Required: []string{"issue_number", "label"}, } } - return action.ActionDefinition{ - Name: action.ActionDefinitionName(actionName), + return types.ActionDefinition{ + Name: types.ActionDefinitionName(actionName), Description: "Add a label to a Github issue. You might want to assign labels to issues to categorize them.", Properties: map[string]jsonschema.Definition{ "issue_number": { diff --git a/services/actions/githubissueopener.go b/services/actions/githubissueopener.go index 2622734..615290a 100644 --- a/services/actions/githubissueopener.go +++ b/services/actions/githubissueopener.go @@ -5,7 +5,7 @@ import ( "fmt" "github.com/google/go-github/v69/github" - "github.com/mudler/LocalAgent/core/action" + "github.com/mudler/LocalAgent/core/types" "github.com/sashabaranov/go-openai/jsonschema" ) @@ -28,7 +28,7 @@ func NewGithubIssueOpener(ctx context.Context, config map[string]string) *Github } } -func (g *GithubIssuesOpener) Run(ctx context.Context, params action.ActionParams) (action.ActionResult, error) { +func (g *GithubIssuesOpener) Run(ctx context.Context, params types.ActionParams) (types.ActionResult, error) { result := struct { Title string `json:"title"` Body string `json:"text"` @@ -39,7 +39,7 @@ func (g *GithubIssuesOpener) Run(ctx context.Context, params action.ActionParams if err != nil { fmt.Printf("error: %v", err) - return action.ActionResult{}, err + return types.ActionResult{}, err } if g.repository != "" && g.owner != "" { @@ -60,17 +60,17 @@ func (g *GithubIssuesOpener) Run(ctx context.Context, params action.ActionParams resultString = fmt.Sprintf("Created issue %d in repository %s/%s: %s", createdIssue.GetNumber(), result.Owner, result.Repository, createdIssue.GetURL()) } - return action.ActionResult{Result: resultString}, err + return types.ActionResult{Result: resultString}, err } -func (g *GithubIssuesOpener) Definition() action.ActionDefinition { +func (g *GithubIssuesOpener) Definition() types.ActionDefinition { actionName := "create_github_issue" if g.customActionName != "" { actionName = g.customActionName } if g.repository != "" && g.owner != "" { - return action.ActionDefinition{ - Name: action.ActionDefinitionName(actionName), + return types.ActionDefinition{ + Name: types.ActionDefinitionName(actionName), Description: "Create a new issue on a GitHub repository.", Properties: map[string]jsonschema.Definition{ "text": { @@ -85,8 +85,8 @@ func (g *GithubIssuesOpener) Definition() action.ActionDefinition { Required: []string{"title", "text"}, } } - return action.ActionDefinition{ - Name: action.ActionDefinitionName(actionName), + return types.ActionDefinition{ + Name: types.ActionDefinitionName(actionName), Description: "Create a new issue on a GitHub repository.", Properties: map[string]jsonschema.Definition{ "text": { diff --git a/services/actions/githubissuereader.go b/services/actions/githubissuereader.go index d1515d9..0f8d5ce 100644 --- a/services/actions/githubissuereader.go +++ b/services/actions/githubissuereader.go @@ -5,7 +5,7 @@ import ( "fmt" "github.com/google/go-github/v69/github" - "github.com/mudler/LocalAgent/core/action" + "github.com/mudler/LocalAgent/core/types" "github.com/sashabaranov/go-openai/jsonschema" ) @@ -28,7 +28,7 @@ func NewGithubIssueReader(ctx context.Context, config map[string]string) *Github } } -func (g *GithubIssuesReader) Run(ctx context.Context, params action.ActionParams) (action.ActionResult, error) { +func (g *GithubIssuesReader) Run(ctx context.Context, params types.ActionParams) (types.ActionResult, error) { result := struct { Repository string `json:"repository"` Owner string `json:"owner"` @@ -37,7 +37,7 @@ func (g *GithubIssuesReader) Run(ctx context.Context, params action.ActionParams }{} err := params.Unmarshal(&result) if err != nil { - return action.ActionResult{}, err + return types.ActionResult{}, err } if g.repository != "" && g.owner != "" { @@ -47,26 +47,26 @@ func (g *GithubIssuesReader) Run(ctx context.Context, params action.ActionParams issue, _, err := g.client.Issues.Get(g.context, result.Owner, result.Repository, result.IssueNumber) if err == nil && issue != nil { - return action.ActionResult{ + return types.ActionResult{ Result: fmt.Sprintf( "Issue %d Repository: %s\nTitle: %s\nBody: %s", *issue.Number, *issue.Repository.FullName, *issue.Title, *issue.Body)}, nil } if err != nil { - return action.ActionResult{Result: fmt.Sprintf("Error fetching issue: %s", err.Error())}, err + return types.ActionResult{Result: fmt.Sprintf("Error fetching issue: %s", err.Error())}, err } - return action.ActionResult{Result: fmt.Sprintf("No issue found")}, err + return types.ActionResult{Result: fmt.Sprintf("No issue found")}, err } -func (g *GithubIssuesReader) Definition() action.ActionDefinition { +func (g *GithubIssuesReader) Definition() types.ActionDefinition { actionName := "read_github_issue" if g.customActionName != "" { actionName = g.customActionName } description := "Read a Github issue." if g.repository != "" && g.owner != "" { - return action.ActionDefinition{ - Name: action.ActionDefinitionName(actionName), + return types.ActionDefinition{ + Name: types.ActionDefinitionName(actionName), Description: description, Properties: map[string]jsonschema.Definition{ "issue_number": { @@ -77,8 +77,8 @@ func (g *GithubIssuesReader) Definition() action.ActionDefinition { Required: []string{"issue_number"}, } } - return action.ActionDefinition{ - Name: action.ActionDefinitionName(actionName), + return types.ActionDefinition{ + Name: types.ActionDefinitionName(actionName), Description: description, Properties: map[string]jsonschema.Definition{ "issue_number": { diff --git a/services/actions/githubissuesearch.go b/services/actions/githubissuesearch.go index 5b95d81..aecdc9e 100644 --- a/services/actions/githubissuesearch.go +++ b/services/actions/githubissuesearch.go @@ -5,7 +5,7 @@ import ( "fmt" "github.com/google/go-github/v69/github" - "github.com/mudler/LocalAgent/core/action" + "github.com/mudler/LocalAgent/core/types" "github.com/mudler/LocalAgent/pkg/xlog" "github.com/sashabaranov/go-openai/jsonschema" ) @@ -29,7 +29,7 @@ func NewGithubIssueSearch(ctx context.Context, config map[string]string) *Github } } -func (g *GithubIssueSearch) Run(ctx context.Context, params action.ActionParams) (action.ActionResult, error) { +func (g *GithubIssueSearch) Run(ctx context.Context, params types.ActionParams) (types.ActionResult, error) { result := struct { Query string `json:"query"` Repository string `json:"repository"` @@ -39,7 +39,7 @@ func (g *GithubIssueSearch) Run(ctx context.Context, params action.ActionParams) if err != nil { fmt.Printf("error: %v", err) - return action.ActionResult{}, err + return types.ActionResult{}, err } if g.repository != "" && g.owner != "" { @@ -56,7 +56,7 @@ func (g *GithubIssueSearch) Run(ctx context.Context, params action.ActionParams) }) if err != nil { resultString = fmt.Sprintf("Error listing issues: %v", err) - return action.ActionResult{Result: resultString}, err + return types.ActionResult{Result: resultString}, err } for _, i := range issues.Issues { xlog.Info("Issue found", "title", i.GetTitle()) @@ -65,17 +65,17 @@ func (g *GithubIssueSearch) Run(ctx context.Context, params action.ActionParams) // resultString += fmt.Sprintf("Body: %s\n", i.GetBody()) } - return action.ActionResult{Result: resultString}, err + return types.ActionResult{Result: resultString}, err } -func (g *GithubIssueSearch) Definition() action.ActionDefinition { +func (g *GithubIssueSearch) Definition() types.ActionDefinition { actionName := "search_github_issue" if g.customActionName != "" { actionName = g.customActionName } if g.repository != "" && g.owner != "" { - return action.ActionDefinition{ - Name: action.ActionDefinitionName(actionName), + return types.ActionDefinition{ + Name: types.ActionDefinitionName(actionName), Description: "Search between github issues", Properties: map[string]jsonschema.Definition{ "query": { @@ -86,8 +86,8 @@ func (g *GithubIssueSearch) Definition() action.ActionDefinition { Required: []string{"query"}, } } - return action.ActionDefinition{ - Name: action.ActionDefinitionName(actionName), + return types.ActionDefinition{ + Name: types.ActionDefinitionName(actionName), Description: "Search between github issues", Properties: map[string]jsonschema.Definition{ "query": { diff --git a/services/actions/githubrepositorycreateupdatecontent.go b/services/actions/githubrepositorycreateupdatecontent.go index 672b700..82fd1a3 100644 --- a/services/actions/githubrepositorycreateupdatecontent.go +++ b/services/actions/githubrepositorycreateupdatecontent.go @@ -5,7 +5,7 @@ import ( "fmt" "github.com/google/go-github/v69/github" - "github.com/mudler/LocalAgent/core/action" + "github.com/mudler/LocalAgent/core/types" "github.com/sashabaranov/go-openai/jsonschema" ) @@ -31,7 +31,7 @@ func NewGithubRepositoryCreateOrUpdateContent(ctx context.Context, config map[st } } -func (g *GithubRepositoryCreateOrUpdateContent) Run(ctx context.Context, params action.ActionParams) (action.ActionResult, error) { +func (g *GithubRepositoryCreateOrUpdateContent) Run(ctx context.Context, params types.ActionParams) (types.ActionResult, error) { result := struct { Path string `json:"path"` Repository string `json:"repository"` @@ -44,7 +44,7 @@ func (g *GithubRepositoryCreateOrUpdateContent) Run(ctx context.Context, params if err != nil { fmt.Printf("error: %v", err) - return action.ActionResult{}, err + return types.ActionResult{}, err } if result.Branch == "" { @@ -82,13 +82,13 @@ func (g *GithubRepositoryCreateOrUpdateContent) Run(ctx context.Context, params }) if err != nil { resultString := fmt.Sprintf("Error creating content : %v", err) - return action.ActionResult{Result: resultString}, err + return types.ActionResult{Result: resultString}, err } - return action.ActionResult{Result: fmt.Sprintf("File created/updated: %s\n", fileContent.GetURL())}, err + return types.ActionResult{Result: fmt.Sprintf("File created/updated: %s\n", fileContent.GetURL())}, err } -func (g *GithubRepositoryCreateOrUpdateContent) Definition() action.ActionDefinition { +func (g *GithubRepositoryCreateOrUpdateContent) Definition() types.ActionDefinition { actionName := "github_repository_create_or_update_content" actionDescription := "Create or update a file in a GitHub repository" if g.customActionName != "" { @@ -117,8 +117,8 @@ func (g *GithubRepositoryCreateOrUpdateContent) Definition() action.ActionDefini } if g.repository != "" && g.owner != "" { - return action.ActionDefinition{ - Name: action.ActionDefinitionName(actionName), + return types.ActionDefinition{ + Name: types.ActionDefinitionName(actionName), Description: actionDescription, Properties: properties, Required: []string{"path", "content"}, @@ -135,8 +135,8 @@ func (g *GithubRepositoryCreateOrUpdateContent) Definition() action.ActionDefini Description: "The repository to search in", } - return action.ActionDefinition{ - Name: action.ActionDefinitionName(actionName), + return types.ActionDefinition{ + Name: types.ActionDefinitionName(actionName), Description: actionDescription, Properties: properties, Required: []string{"path", "repository", "owner", "content"}, diff --git a/services/actions/githubrepositorygetcontent.go b/services/actions/githubrepositorygetcontent.go index 4726983..733c145 100644 --- a/services/actions/githubrepositorygetcontent.go +++ b/services/actions/githubrepositorygetcontent.go @@ -5,7 +5,7 @@ import ( "fmt" "github.com/google/go-github/v69/github" - "github.com/mudler/LocalAgent/core/action" + "github.com/mudler/LocalAgent/core/types" "github.com/sashabaranov/go-openai/jsonschema" ) @@ -28,7 +28,7 @@ func NewGithubRepositoryGetContent(ctx context.Context, config map[string]string } } -func (g *GithubRepositoryGetContent) Run(ctx context.Context, params action.ActionParams) (action.ActionResult, error) { +func (g *GithubRepositoryGetContent) Run(ctx context.Context, params types.ActionParams) (types.ActionResult, error) { result := struct { Path string `json:"path"` Repository string `json:"repository"` @@ -38,7 +38,7 @@ func (g *GithubRepositoryGetContent) Run(ctx context.Context, params action.Acti if err != nil { fmt.Printf("error: %v", err) - return action.ActionResult{}, err + return types.ActionResult{}, err } if g.repository != "" && g.owner != "" { @@ -49,7 +49,7 @@ func (g *GithubRepositoryGetContent) Run(ctx context.Context, params action.Acti fileContent, directoryContent, _, err := g.client.Repositories.GetContents(g.context, result.Owner, result.Repository, result.Path, nil) if err != nil { resultString := fmt.Sprintf("Error getting content : %v", err) - return action.ActionResult{Result: resultString}, err + return types.ActionResult{Result: resultString}, err } if len(directoryContent) > 0 { @@ -57,26 +57,26 @@ func (g *GithubRepositoryGetContent) Run(ctx context.Context, params action.Acti for _, f := range directoryContent { resultString += fmt.Sprintf("File: %s\n", f.GetName()) } - return action.ActionResult{Result: resultString}, err + return types.ActionResult{Result: resultString}, err } content, err := fileContent.GetContent() if err != nil { - return action.ActionResult{}, err + return types.ActionResult{}, err } - return action.ActionResult{Result: fmt.Sprintf("File %s\nContent:%s\n", result.Path, content)}, err + return types.ActionResult{Result: fmt.Sprintf("File %s\nContent:%s\n", result.Path, content)}, err } -func (g *GithubRepositoryGetContent) Definition() action.ActionDefinition { +func (g *GithubRepositoryGetContent) Definition() types.ActionDefinition { actionName := "get_github_repository_content" actionDescription := "Get content of a file or directory in a github repository" if g.customActionName != "" { actionName = g.customActionName } if g.repository != "" && g.owner != "" { - return action.ActionDefinition{ - Name: action.ActionDefinitionName(actionName), + return types.ActionDefinition{ + Name: types.ActionDefinitionName(actionName), Description: actionDescription, Properties: map[string]jsonschema.Definition{ "path": { @@ -87,8 +87,8 @@ func (g *GithubRepositoryGetContent) Definition() action.ActionDefinition { Required: []string{"path"}, } } - return action.ActionDefinition{ - Name: action.ActionDefinitionName(actionName), + return types.ActionDefinition{ + Name: types.ActionDefinitionName(actionName), Description: actionDescription, Properties: map[string]jsonschema.Definition{ "path": { diff --git a/services/actions/githubrepositoryreadme.go b/services/actions/githubrepositoryreadme.go index f6b3d34..5bd194f 100644 --- a/services/actions/githubrepositoryreadme.go +++ b/services/actions/githubrepositoryreadme.go @@ -5,7 +5,7 @@ import ( "fmt" "github.com/google/go-github/v69/github" - "github.com/mudler/LocalAgent/core/action" + "github.com/mudler/LocalAgent/core/types" "github.com/sashabaranov/go-openai/jsonschema" ) @@ -26,7 +26,7 @@ func NewGithubRepositoryREADME(ctx context.Context, config map[string]string) *G } } -func (g *GithubRepositoryREADME) Run(ctx context.Context, params action.ActionParams) (action.ActionResult, error) { +func (g *GithubRepositoryREADME) Run(ctx context.Context, params types.ActionParams) (types.ActionResult, error) { result := struct { Repository string `json:"repository"` Owner string `json:"owner"` @@ -35,30 +35,30 @@ func (g *GithubRepositoryREADME) Run(ctx context.Context, params action.ActionPa if err != nil { fmt.Printf("error: %v", err) - return action.ActionResult{}, err + return types.ActionResult{}, err } fileContent, _, err := g.client.Repositories.GetReadme(g.context, result.Owner, result.Repository, &github.RepositoryContentGetOptions{}) if err != nil { resultString := fmt.Sprintf("Error getting content : %v", err) - return action.ActionResult{Result: resultString}, err + return types.ActionResult{Result: resultString}, err } content, err := fileContent.GetContent() if err != nil { - return action.ActionResult{}, err + return types.ActionResult{}, err } - return action.ActionResult{Result: content}, err + return types.ActionResult{Result: content}, err } -func (g *GithubRepositoryREADME) Definition() action.ActionDefinition { +func (g *GithubRepositoryREADME) Definition() types.ActionDefinition { actionName := "github_readme" actionDescription := "Get the README file of a GitHub repository to have a basic understanding of the project." if g.customActionName != "" { actionName = g.customActionName } - return action.ActionDefinition{ - Name: action.ActionDefinitionName(actionName), + return types.ActionDefinition{ + Name: types.ActionDefinitionName(actionName), Description: actionDescription, Properties: map[string]jsonschema.Definition{ "repository": { diff --git a/services/actions/scrape.go b/services/actions/scrape.go index 678f31a..3bd0e29 100644 --- a/services/actions/scrape.go +++ b/services/actions/scrape.go @@ -4,7 +4,7 @@ import ( "context" "fmt" - "github.com/mudler/LocalAgent/core/action" + "github.com/mudler/LocalAgent/core/types" "github.com/sashabaranov/go-openai/jsonschema" "github.com/tmc/langchaingo/tools/scraper" ) @@ -16,7 +16,7 @@ func NewScraper(config map[string]string) *ScraperAction { type ScraperAction struct{} -func (a *ScraperAction) Run(ctx context.Context, params action.ActionParams) (action.ActionResult, error) { +func (a *ScraperAction) Run(ctx context.Context, params types.ActionParams) (types.ActionResult, error) { result := struct { URL string `json:"url"` }{} @@ -24,25 +24,25 @@ func (a *ScraperAction) Run(ctx context.Context, params action.ActionParams) (ac if err != nil { fmt.Printf("error: %v", err) - return action.ActionResult{}, err + return types.ActionResult{}, err } scraper, err := scraper.New() if err != nil { fmt.Printf("error: %v", err) - return action.ActionResult{}, err + return types.ActionResult{}, err } res, err := scraper.Call(ctx, result.URL) if err != nil { fmt.Printf("error: %v", err) - return action.ActionResult{}, err + return types.ActionResult{}, err } - return action.ActionResult{Result: res}, nil + return types.ActionResult{Result: res}, nil } -func (a *ScraperAction) Definition() action.ActionDefinition { - return action.ActionDefinition{ +func (a *ScraperAction) Definition() types.ActionDefinition { + return types.ActionDefinition{ Name: "scrape", Description: "Scrapes a full website content and returns the entire site data.", Properties: map[string]jsonschema.Definition{ diff --git a/services/actions/search.go b/services/actions/search.go index 086512b..27130f6 100644 --- a/services/actions/search.go +++ b/services/actions/search.go @@ -6,7 +6,7 @@ import ( "log/slog" "strings" - "github.com/mudler/LocalAgent/core/action" + "github.com/mudler/LocalAgent/core/types" "github.com/sashabaranov/go-openai/jsonschema" "github.com/tmc/langchaingo/tools/duckduckgo" "mvdan.cc/xurls/v2" @@ -34,7 +34,7 @@ func NewSearch(config map[string]string) *SearchAction { type SearchAction struct{ results int } -func (a *SearchAction) Run(ctx context.Context, params action.ActionParams) (action.ActionResult, error) { +func (a *SearchAction) Run(ctx context.Context, params types.ActionParams) (types.ActionResult, error) { result := struct { Query string `json:"query"` }{} @@ -42,19 +42,19 @@ func (a *SearchAction) Run(ctx context.Context, params action.ActionParams) (act if err != nil { fmt.Printf("error: %v", err) - return action.ActionResult{}, err + return types.ActionResult{}, err } ddg, err := duckduckgo.New(a.results, "LocalAgent") if err != nil { fmt.Printf("error: %v", err) - return action.ActionResult{}, err + return types.ActionResult{}, err } res, err := ddg.Call(ctx, result.Query) if err != nil { fmt.Printf("error: %v", err) - return action.ActionResult{}, err + return types.ActionResult{}, err } rxStrict := xurls.Strict() @@ -69,11 +69,11 @@ func (a *SearchAction) Run(ctx context.Context, params action.ActionParams) (act results = append(results, u) } - return action.ActionResult{Result: res, Metadata: map[string]interface{}{MetadataUrls: results}}, nil + return types.ActionResult{Result: res, Metadata: map[string]interface{}{MetadataUrls: results}}, nil } -func (a *SearchAction) Definition() action.ActionDefinition { - return action.ActionDefinition{ +func (a *SearchAction) Definition() types.ActionDefinition { + return types.ActionDefinition{ Name: "search_internet", Description: "Search the internet for something.", Properties: map[string]jsonschema.Definition{ diff --git a/services/actions/sendmail.go b/services/actions/sendmail.go index 3e4b342..bc46a13 100644 --- a/services/actions/sendmail.go +++ b/services/actions/sendmail.go @@ -5,7 +5,7 @@ import ( "fmt" "net/smtp" - "github.com/mudler/LocalAgent/core/action" + "github.com/mudler/LocalAgent/core/types" "github.com/sashabaranov/go-openai/jsonschema" ) @@ -27,7 +27,7 @@ type SendMailAction struct { smtpPort string } -func (a *SendMailAction) Run(ctx context.Context, params action.ActionParams) (action.ActionResult, error) { +func (a *SendMailAction) Run(ctx context.Context, params types.ActionParams) (types.ActionResult, error) { result := struct { Message string `json:"message"` To string `json:"to"` @@ -37,7 +37,7 @@ func (a *SendMailAction) Run(ctx context.Context, params action.ActionParams) (a if err != nil { fmt.Printf("error: %v", err) - return action.ActionResult{}, err + return types.ActionResult{}, err } // Authentication. @@ -50,13 +50,13 @@ func (a *SendMailAction) Run(ctx context.Context, params action.ActionParams) (a result.To, }, []byte(result.Message)) if err != nil { - return action.ActionResult{}, err + return types.ActionResult{}, err } - return action.ActionResult{Result: fmt.Sprintf("Email sent to %s", result.To)}, nil + return types.ActionResult{Result: fmt.Sprintf("Email sent to %s", result.To)}, nil } -func (a *SendMailAction) Definition() action.ActionDefinition { - return action.ActionDefinition{ +func (a *SendMailAction) Definition() types.ActionDefinition { + return types.ActionDefinition{ Name: "send_email", Description: "Send an email.", Properties: map[string]jsonschema.Definition{ diff --git a/services/actions/shell.go b/services/actions/shell.go index fe7956b..9f95c27 100644 --- a/services/actions/shell.go +++ b/services/actions/shell.go @@ -5,7 +5,7 @@ import ( "fmt" "log" - "github.com/mudler/LocalAgent/core/action" + "github.com/mudler/LocalAgent/core/types" "github.com/sashabaranov/go-openai/jsonschema" "golang.org/x/crypto/ssh" ) @@ -27,7 +27,7 @@ type ShellAction struct { customDescription string } -func (a *ShellAction) Run(ctx context.Context, params action.ActionParams) (action.ActionResult, error) { +func (a *ShellAction) Run(ctx context.Context, params types.ActionParams) (types.ActionResult, error) { result := struct { Command string `json:"command"` Host string `json:"host"` @@ -37,7 +37,7 @@ func (a *ShellAction) Run(ctx context.Context, params action.ActionParams) (acti if err != nil { fmt.Printf("error: %v", err) - return action.ActionResult{}, err + return types.ActionResult{}, err } if a.host != "" && a.user != "" { @@ -47,13 +47,13 @@ func (a *ShellAction) Run(ctx context.Context, params action.ActionParams) (acti output, err := sshCommand(a.privateKey, result.Command, result.User, result.Host) if err != nil { - return action.ActionResult{}, err + return types.ActionResult{}, err } - return action.ActionResult{Result: output}, nil + return types.ActionResult{Result: output}, nil } -func (a *ShellAction) Definition() action.ActionDefinition { +func (a *ShellAction) Definition() types.ActionDefinition { name := "shell" description := "Run a shell command on a remote server." if a.customName != "" { @@ -63,8 +63,8 @@ func (a *ShellAction) Definition() action.ActionDefinition { description = a.customDescription } if a.host != "" && a.user != "" { - return action.ActionDefinition{ - Name: action.ActionDefinitionName(name), + return types.ActionDefinition{ + Name: types.ActionDefinitionName(name), Description: description, Properties: map[string]jsonschema.Definition{ "command": { @@ -75,8 +75,8 @@ func (a *ShellAction) Definition() action.ActionDefinition { Required: []string{"command"}, } } - return action.ActionDefinition{ - Name: action.ActionDefinitionName(name), + return types.ActionDefinition{ + Name: types.ActionDefinitionName(name), Description: description, Properties: map[string]jsonschema.Definition{ "command": { diff --git a/services/actions/twitter_post.go b/services/actions/twitter_post.go index d438c0f..d0bd417 100644 --- a/services/actions/twitter_post.go +++ b/services/actions/twitter_post.go @@ -4,7 +4,7 @@ import ( "context" "fmt" - "github.com/mudler/LocalAgent/core/action" + "github.com/mudler/LocalAgent/core/types" "github.com/mudler/LocalAgent/services/connectors/twitter" "github.com/sashabaranov/go-openai/jsonschema" ) @@ -21,7 +21,7 @@ type PostTweetAction struct { noCharacterLimit bool } -func (a *PostTweetAction) Run(ctx context.Context, params action.ActionParams) (action.ActionResult, error) { +func (a *PostTweetAction) Run(ctx context.Context, params types.ActionParams) (types.ActionResult, error) { result := struct { Text string `json:"text"` }{} @@ -29,24 +29,24 @@ func (a *PostTweetAction) Run(ctx context.Context, params action.ActionParams) ( if err != nil { fmt.Printf("error: %v", err) - return action.ActionResult{}, err + return types.ActionResult{}, err } if !a.noCharacterLimit && len(result.Text) > 280 { - return action.ActionResult{}, fmt.Errorf("tweet is too long, max 280 characters") + return types.ActionResult{}, fmt.Errorf("tweet is too long, max 280 characters") } client := twitter.NewTwitterClient(a.token) if err := client.Post(result.Text); err != nil { - return action.ActionResult{}, err + return types.ActionResult{}, err } - return action.ActionResult{Result: fmt.Sprintf("twitter post created")}, nil + return types.ActionResult{Result: fmt.Sprintf("twitter post created")}, nil } -func (a *PostTweetAction) Definition() action.ActionDefinition { - return action.ActionDefinition{ +func (a *PostTweetAction) Definition() types.ActionDefinition { + return types.ActionDefinition{ Name: "post_tweet", Description: "Post a tweet", Properties: map[string]jsonschema.Definition{ diff --git a/services/actions/wikipedia.go b/services/actions/wikipedia.go index c3af3d5..81b21a1 100644 --- a/services/actions/wikipedia.go +++ b/services/actions/wikipedia.go @@ -4,7 +4,7 @@ import ( "context" "fmt" - "github.com/mudler/LocalAgent/core/action" + "github.com/mudler/LocalAgent/core/types" "github.com/sashabaranov/go-openai/jsonschema" "github.com/tmc/langchaingo/tools/wikipedia" ) @@ -15,7 +15,7 @@ func NewWikipedia(config map[string]string) *WikipediaAction { type WikipediaAction struct{} -func (a *WikipediaAction) Run(ctx context.Context, params action.ActionParams) (action.ActionResult, error) { +func (a *WikipediaAction) Run(ctx context.Context, params types.ActionParams) (types.ActionResult, error) { result := struct { Query string `json:"query"` }{} @@ -23,20 +23,20 @@ func (a *WikipediaAction) Run(ctx context.Context, params action.ActionParams) ( if err != nil { fmt.Printf("error: %v", err) - return action.ActionResult{}, err + return types.ActionResult{}, err } wiki := wikipedia.New("LocalAgent") res, err := wiki.Call(ctx, result.Query) if err != nil { fmt.Printf("error: %v", err) - return action.ActionResult{}, err + return types.ActionResult{}, err } - return action.ActionResult{Result: res}, nil + return types.ActionResult{Result: res}, nil } -func (a *WikipediaAction) Definition() action.ActionDefinition { - return action.ActionDefinition{ +func (a *WikipediaAction) Definition() types.ActionDefinition { + return types.ActionDefinition{ Name: "wikipedia", Description: "Find wikipedia pages using the wikipedia api", Properties: map[string]jsonschema.Definition{ diff --git a/services/connectors/discord.go b/services/connectors/discord.go index 8365058..d264d08 100644 --- a/services/connectors/discord.go +++ b/services/connectors/discord.go @@ -5,6 +5,7 @@ import ( "github.com/bwmarrin/discordgo" "github.com/mudler/LocalAgent/core/agent" + "github.com/mudler/LocalAgent/core/types" "github.com/mudler/LocalAgent/pkg/xlog" ) @@ -24,14 +25,14 @@ func NewDiscord(config map[string]string) *Discord { } } -func (d *Discord) AgentResultCallback() func(state agent.ActionState) { - return func(state agent.ActionState) { +func (d *Discord) AgentResultCallback() func(state types.ActionState) { + return func(state types.ActionState) { // Send the result to the bot } } -func (d *Discord) AgentReasoningCallback() func(state agent.ActionCurrentState) bool { - return func(state agent.ActionCurrentState) bool { +func (d *Discord) AgentReasoningCallback() func(state types.ActionCurrentState) bool { + return func(state types.ActionCurrentState) bool { // Send the reasoning to the bot return true } @@ -84,7 +85,7 @@ func (d *Discord) messageCreate(a *agent.Agent) func(s *discordgo.Session, m *di content = strings.ReplaceAll(content, "<@"+s.State.User.ID+"> ", "") xlog.Info("Received message", "content", content) job := a.Ask( - agent.WithText( + types.WithText( content, ), ) diff --git a/services/connectors/githubissue.go b/services/connectors/githubissue.go index bd6506e..67c1b75 100644 --- a/services/connectors/githubissue.go +++ b/services/connectors/githubissue.go @@ -7,6 +7,7 @@ import ( "github.com/google/go-github/v69/github" "github.com/mudler/LocalAgent/core/agent" + "github.com/mudler/LocalAgent/core/types" "github.com/mudler/LocalAgent/pkg/xlog" "github.com/sashabaranov/go-openai" @@ -50,14 +51,14 @@ func NewGithubIssueWatcher(config map[string]string) *GithubIssues { } } -func (g *GithubIssues) AgentResultCallback() func(state agent.ActionState) { - return func(state agent.ActionState) { +func (g *GithubIssues) AgentResultCallback() func(state types.ActionState) { + return func(state types.ActionState) { // Send the result to the bot } } -func (g *GithubIssues) AgentReasoningCallback() func(state agent.ActionCurrentState) bool { - return func(state agent.ActionCurrentState) bool { +func (g *GithubIssues) AgentReasoningCallback() func(state types.ActionCurrentState) bool { + return func(state types.ActionCurrentState) bool { // Send the reasoning to the bot return true } @@ -175,7 +176,7 @@ func (g *GithubIssues) issuesService() { } res := g.agent.Ask( - agent.WithConversationHistory(messages), + types.WithConversationHistory(messages), ) if res.Error != nil { xlog.Error("Error asking", "error", res.Error, "agent", g.agent.Character.Name) diff --git a/services/connectors/githubpr.go b/services/connectors/githubpr.go index 3114e01..3041f73 100644 --- a/services/connectors/githubpr.go +++ b/services/connectors/githubpr.go @@ -7,6 +7,7 @@ import ( "github.com/google/go-github/v69/github" "github.com/mudler/LocalAgent/core/agent" + "github.com/mudler/LocalAgent/core/types" "github.com/mudler/LocalAgent/pkg/xlog" "github.com/sashabaranov/go-openai" @@ -50,14 +51,14 @@ func NewGithubPRWatcher(config map[string]string) *GithubPRs { } } -func (g *GithubPRs) AgentResultCallback() func(state agent.ActionState) { - return func(state agent.ActionState) { +func (g *GithubPRs) AgentResultCallback() func(state types.ActionState) { + return func(state types.ActionState) { // Send the result to the bot } } -func (g *GithubPRs) AgentReasoningCallback() func(state agent.ActionCurrentState) bool { - return func(state agent.ActionCurrentState) bool { +func (g *GithubPRs) AgentReasoningCallback() func(state types.ActionCurrentState) bool { + return func(state types.ActionCurrentState) bool { // Send the reasoning to the bot return true } @@ -175,7 +176,7 @@ func (g *GithubPRs) prService() { } res := g.agent.Ask( - agent.WithConversationHistory(messages), + types.WithConversationHistory(messages), ) if res.Error != nil { xlog.Error("Error asking", "error", res.Error, "agent", g.agent.Character.Name) diff --git a/services/connectors/irc.go b/services/connectors/irc.go index b3c1a06..53a2fd2 100644 --- a/services/connectors/irc.go +++ b/services/connectors/irc.go @@ -6,6 +6,7 @@ import ( "time" "github.com/mudler/LocalAgent/core/agent" + "github.com/mudler/LocalAgent/core/types" "github.com/mudler/LocalAgent/pkg/xlog" "github.com/mudler/LocalAgent/services/actions" irc "github.com/thoj/go-ircevent" @@ -30,14 +31,14 @@ func NewIRC(config map[string]string) *IRC { } } -func (i *IRC) AgentResultCallback() func(state agent.ActionState) { - return func(state agent.ActionState) { +func (i *IRC) AgentResultCallback() func(state types.ActionState) { + return func(state types.ActionState) { // Send the result to the bot } } -func (i *IRC) AgentReasoningCallback() func(state agent.ActionCurrentState) bool { - return func(state agent.ActionCurrentState) bool { +func (i *IRC) AgentReasoningCallback() func(state types.ActionCurrentState) bool { + return func(state types.ActionCurrentState) bool { // Send the reasoning to the bot return true } @@ -105,7 +106,7 @@ func (i *IRC) Start(a *agent.Agent) { go func() { res := a.Ask( - agent.WithText(cleanedMessage), + types.WithText(cleanedMessage), ) xlog.Info("Sending message", "message", res.Response, "channel", channel) diff --git a/services/connectors/slack.go b/services/connectors/slack.go index 30af50e..f84e56c 100644 --- a/services/connectors/slack.go +++ b/services/connectors/slack.go @@ -14,6 +14,7 @@ import ( "github.com/sashabaranov/go-openai" "github.com/mudler/LocalAgent/core/agent" + "github.com/mudler/LocalAgent/core/types" "github.com/slack-go/slack/socketmode" @@ -39,14 +40,14 @@ func NewSlack(config map[string]string) *Slack { } } -func (t *Slack) AgentResultCallback() func(state agent.ActionState) { - return func(state agent.ActionState) { +func (t *Slack) AgentResultCallback() func(state types.ActionState) { + return func(state types.ActionState) { // Send the result to the bot } } -func (t *Slack) AgentReasoningCallback() func(state agent.ActionCurrentState) bool { - return func(state agent.ActionCurrentState) bool { +func (t *Slack) AgentReasoningCallback() func(state types.ActionCurrentState) bool { + return func(state types.ActionCurrentState) bool { // Send the reasoning to the bot return true } @@ -71,7 +72,7 @@ func uniqueStringSlice(s []string) []string { return list } -func generateAttachmentsFromJobResponse(j *agent.JobResult) (attachments []slack.Attachment) { +func generateAttachmentsFromJobResponse(j *types.JobResult) (attachments []slack.Attachment) { for _, state := range j.State { // coming from the search action if urls, exists := state.Metadata[actions.MetadataUrls]; exists { @@ -148,7 +149,7 @@ func (t *Slack) handleChannelMessage( } } - agentOptions := []agent.JobOption{agent.WithText(message)} + agentOptions := []types.JobOption{types.WithText(message)} // If the last message has an image, we send it as a multi content message if len(imageBytes.Bytes()) > 0 { @@ -158,7 +159,7 @@ func (t *Slack) handleChannelMessage( if err != nil { xlog.Error(fmt.Sprintf("Error encoding image to base64: %v", err)) } else { - agentOptions = append(agentOptions, agent.WithImage(fmt.Sprintf("data:%s;base64,%s", mimeType, imgBase64))) + agentOptions = append(agentOptions, types.WithImage(fmt.Sprintf("data:%s;base64,%s", mimeType, imgBase64))) } } @@ -350,8 +351,8 @@ func (t *Slack) handleMention( } res := a.Ask( - // agent.WithText(message), - agent.WithConversationHistory(threadMessages), + // types.WithText(message), + types.WithConversationHistory(threadMessages), ) res.Response = githubmarkdownconvertergo.Slack(res.Response) diff --git a/services/connectors/telegram.go b/services/connectors/telegram.go index 37de7dd..ac50616 100644 --- a/services/connectors/telegram.go +++ b/services/connectors/telegram.go @@ -9,6 +9,7 @@ import ( "github.com/go-telegram/bot" "github.com/go-telegram/bot/models" "github.com/mudler/LocalAgent/core/agent" + "github.com/mudler/LocalAgent/core/types" ) type Telegram struct { @@ -20,16 +21,16 @@ type Telegram struct { // Send any text message to the bot after the bot has been started -func (t *Telegram) AgentResultCallback() func(state agent.ActionState) { - return func(state agent.ActionState) { +func (t *Telegram) AgentResultCallback() func(state types.ActionState) { + return func(state types.ActionState) { t.bot.SetMyDescription(t.agent.Context(), &bot.SetMyDescriptionParams{ Description: state.Reasoning, }) } } -func (t *Telegram) AgentReasoningCallback() func(state agent.ActionCurrentState) bool { - return func(state agent.ActionCurrentState) bool { +func (t *Telegram) AgentReasoningCallback() func(state types.ActionCurrentState) bool { + return func(state types.ActionCurrentState) bool { t.bot.SetMyDescription(t.agent.Context(), &bot.SetMyDescriptionParams{ Description: state.Reasoning, }) @@ -45,7 +46,7 @@ func (t *Telegram) Start(a *agent.Agent) { bot.WithDefaultHandler(func(ctx context.Context, b *bot.Bot, update *models.Update) { go func() { res := a.Ask( - agent.WithText( + types.WithText( update.Message.Text, ), ) diff --git a/services/connectors/twitter.go b/services/connectors/twitter.go index 32b9850..adab389 100644 --- a/services/connectors/twitter.go +++ b/services/connectors/twitter.go @@ -7,6 +7,7 @@ import ( "os/signal" "github.com/mudler/LocalAgent/core/agent" + "github.com/mudler/LocalAgent/core/types" "github.com/mudler/LocalAgent/pkg/xlog" "github.com/mudler/LocalAgent/services/connectors/twitter" "github.com/sashabaranov/go-openai" @@ -19,14 +20,14 @@ type Twitter struct { noCharacterLimit bool } -func (t *Twitter) AgentResultCallback() func(state agent.ActionState) { - return func(state agent.ActionState) { +func (t *Twitter) AgentResultCallback() func(state types.ActionState) { + return func(state types.ActionState) { } } -func (t *Twitter) AgentReasoningCallback() func(state agent.ActionCurrentState) bool { - return func(state agent.ActionCurrentState) bool { +func (t *Twitter) AgentReasoningCallback() func(state types.ActionCurrentState) bool { + return func(state types.ActionCurrentState) bool { return true } @@ -98,7 +99,7 @@ func (t *Twitter) run(a *agent.Agent) error { } res := a.Ask( - agent.WithConversationHistory( + types.WithConversationHistory( []openai.ChatCompletionMessage{ { Role: "system", diff --git a/webui/app.go b/webui/app.go index 141755b..c64d15f 100644 --- a/webui/app.go +++ b/webui/app.go @@ -9,14 +9,13 @@ import ( "strings" "time" + coreTypes "github.com/mudler/LocalAgent/core/types" "github.com/mudler/LocalAgent/pkg/llm" "github.com/mudler/LocalAgent/pkg/xlog" "github.com/mudler/LocalAgent/services" "github.com/mudler/LocalAgent/webui/types" "github.com/sashabaranov/go-openai/jsonschema" - "github.com/mudler/LocalAgent/core/action" - "github.com/mudler/LocalAgent/core/agent" "github.com/mudler/LocalAgent/core/sse" "github.com/mudler/LocalAgent/core/state" @@ -72,7 +71,7 @@ func (a *App) Notify(pool *state.AgentPool) func(c *fiber.Ctx) error { a := pool.GetAgent(c.Params("name")) a.Ask( - agent.WithText(query), + coreTypes.WithText(query), ) _, _ = c.Write([]byte("Message sent")) @@ -275,7 +274,7 @@ func (a *App) Chat(pool *state.AgentPool) func(c *fiber.Ctx) error { return } res := a.Ask( - agent.WithText(query), + coreTypes.WithText(query), ) if res.Error != nil { xlog.Error("Error asking agent", "agent", agentName, "error", res.Error) @@ -307,8 +306,8 @@ func (a *App) Chat(pool *state.AgentPool) func(c *fiber.Ctx) error { func (a *App) ExecuteAction(pool *state.AgentPool) func(c *fiber.Ctx) error { return func(c *fiber.Ctx) error { payload := struct { - Config map[string]string `json:"config"` - Params action.ActionParams `json:"params"` + Config map[string]string `json:"config"` + Params coreTypes.ActionParams `json:"params"` }{} if err := c.BodyParser(&payload); err != nil { @@ -365,7 +364,7 @@ func (a *App) Responses(pool *state.AgentPool) func(c *fiber.Ctx) error { } res := a.Ask( - agent.WithConversationHistory(messages), + coreTypes.WithConversationHistory(messages), ) if res.Error != nil { xlog.Error("Error asking agent", "agent", agentName, "error", res.Error) diff --git a/webui/routes.go b/webui/routes.go index 29836fa..81c732a 100644 --- a/webui/routes.go +++ b/webui/routes.go @@ -12,9 +12,9 @@ import ( fiber "github.com/gofiber/fiber/v2" "github.com/gofiber/fiber/v2/middleware/filesystem" "github.com/gofiber/fiber/v2/middleware/keyauth" - "github.com/mudler/LocalAgent/core/agent" "github.com/mudler/LocalAgent/core/sse" "github.com/mudler/LocalAgent/core/state" + "github.com/mudler/LocalAgent/core/types" "github.com/mudler/LocalAgent/pkg/xlog" "github.com/mudler/LocalAgent/services" ) @@ -95,7 +95,7 @@ func (app *App) registerRoutes(pool *state.AgentPool, webapp *fiber.App) { webapp.Get("/status/:name", func(c *fiber.Ctx) error { history := pool.GetStatusHistory(c.Params("name")) if history == nil { - history = &state.Status{ActionResults: []agent.ActionState{}} + history = &state.Status{ActionResults: []types.ActionState{}} } // reverse history From 5f2a2eaa244d07e758baec2abbe329b14e2d5152 Mon Sep 17 00:00:00 2001 From: Ettore Di Giacinto Date: Sun, 23 Mar 2025 22:43:13 +0100 Subject: [PATCH 280/399] feat(slack): show thought process (#83) Signed-off-by: Ettore Di Giacinto --- core/types/job.go | 7 ++ services/connectors/slack.go | 156 ++++++++++++++++++++++++++++------- 2 files changed, 135 insertions(+), 28 deletions(-) diff --git a/core/types/job.go b/core/types/job.go index 167e2e6..5c4fd52 100644 --- a/core/types/job.go +++ b/core/types/job.go @@ -20,6 +20,7 @@ type Job struct { resultCallback func(ActionState) ConversationHistory []openai.ChatCompletionMessage UUID string + Metadata map[string]interface{} } // JobResult is the result of a job @@ -54,6 +55,12 @@ func WithResultCallback(f func(ActionState)) JobOption { } } +func WithMetadata(metadata map[string]interface{}) JobOption { + return func(j *Job) { + j.Metadata = metadata + } +} + // NewJobResult creates a new job result func NewJobResult() *JobResult { r := &JobResult{ diff --git a/services/connectors/slack.go b/services/connectors/slack.go index f84e56c..5555ff1 100644 --- a/services/connectors/slack.go +++ b/services/connectors/slack.go @@ -8,6 +8,7 @@ import ( "log" "os" "strings" + "sync" "github.com/mudler/LocalAgent/pkg/xlog" "github.com/mudler/LocalAgent/services/actions" @@ -29,26 +30,63 @@ type Slack struct { botToken string channelID string alwaysReply bool + + // To track placeholder messages + placeholders map[string]string // map[jobUUID]messageTS + placeholderMutex sync.RWMutex + apiClient *slack.Client } +const thinkingMessage = "thinking..." + func NewSlack(config map[string]string) *Slack { return &Slack{ - appToken: config["appToken"], - botToken: config["botToken"], - channelID: config["channelID"], - alwaysReply: config["alwaysReply"] == "true", + appToken: config["appToken"], + botToken: config["botToken"], + channelID: config["channelID"], + alwaysReply: config["alwaysReply"] == "true", + placeholders: make(map[string]string), } } func (t *Slack) AgentResultCallback() func(state types.ActionState) { return func(state types.ActionState) { - // Send the result to the bot + // The final result callback is intentionally empty as we're handling + // the final update in the handleMention function directly } } func (t *Slack) AgentReasoningCallback() func(state types.ActionCurrentState) bool { return func(state types.ActionCurrentState) bool { - // Send the reasoning to the bot + // Check if we have a placeholder message for this job + t.placeholderMutex.RLock() + msgTs, exists := t.placeholders[state.Job.UUID] + channel := "" + if state.Job.Metadata != nil { + if ch, ok := state.Job.Metadata["channel"].(string); ok { + channel = ch + } + } + t.placeholderMutex.RUnlock() + + if !exists || msgTs == "" || channel == "" || t.apiClient == nil { + return true // Skip if we don't have a message to update + } + + thought := thinkingMessage + "\n\n" + if state.Reasoning != "" { + thought += "Current thought process:\n" + state.Reasoning + } + + // Update the placeholder message with the current reasoning + _, _, _, err := t.apiClient.UpdateMessage( + channel, + msgTs, + slack.MsgOptionText(githubmarkdownconvertergo.Slack(thought), false), + ) + if err != nil { + xlog.Error(fmt.Sprintf("Error updating reasoning message: %v", err)) + } return true } } @@ -149,7 +187,10 @@ func (t *Slack) handleChannelMessage( } } - agentOptions := []types.JobOption{types.WithText(message)} + agentOptions := []types.JobOption{ + types.WithText(message), + types.WithUUID(ev.ThreadTimeStamp), + } // If the last message has an image, we send it as a multi content message if len(imageBytes.Bytes()) > 0 { @@ -207,6 +248,49 @@ func (t *Slack) handleMention( go func() { ts := ev.ThreadTimeStamp + var msgTs string // Timestamp of our placeholder message + var err error + + // Store the API client for use in the callbacks + t.apiClient = api + + // Send initial placeholder message + if ts != "" { + // If we're in a thread, post the placeholder there + _, respTs, err := api.PostMessage(ev.Channel, + slack.MsgOptionText(thinkingMessage, false), + slack.MsgOptionPostMessageParameters(postMessageParams), + slack.MsgOptionTS(ts)) + if err != nil { + xlog.Error(fmt.Sprintf("Error posting initial message: %v", err)) + } else { + msgTs = respTs + } + } else { + // Starting a new thread + _, respTs, err := api.PostMessage(ev.Channel, + slack.MsgOptionText(thinkingMessage, false), + slack.MsgOptionPostMessageParameters(postMessageParams), + slack.MsgOptionTS(ev.TimeStamp)) + if err != nil { + xlog.Error(fmt.Sprintf("Error posting initial message: %v", err)) + } else { + msgTs = respTs + // We're creating a new thread, so use this as our thread timestamp + ts = ev.TimeStamp + } + } + + // Store the UUID->placeholder message mapping + // We'll use the thread timestamp as our UUID + jobUUID := ts + if jobUUID == "" { + jobUUID = ev.TimeStamp + } + + t.placeholderMutex.Lock() + t.placeholders[jobUUID] = msgTs + t.placeholderMutex.Unlock() var threadMessages []openai.ChatCompletionMessage @@ -222,6 +306,11 @@ func (t *Slack) handleMention( xlog.Error(fmt.Sprintf("Error fetching thread messages: %v", err)) } else { for i, msg := range messages { + // Skip our placeholder message + if msg.Timestamp == msgTs { + continue + } + role := "assistant" if msg.User != b.UserID { role = "user" @@ -350,32 +439,41 @@ func (t *Slack) handleMention( } } + // Add channel to job metadata for use in callbacks + metadata := map[string]interface{}{ + "channel": ev.Channel, + } + + // Call the agent with the conversation history res := a.Ask( - // types.WithText(message), types.WithConversationHistory(threadMessages), + types.WithUUID(jobUUID), + types.WithMetadata(metadata), ) - res.Response = githubmarkdownconvertergo.Slack(res.Response) - var err error - if ts != "" { - _, _, err = api.PostMessage(ev.Channel, - slack.MsgOptionText(res.Response, true), - slack.MsgOptionPostMessageParameters( - postMessageParams, - ), + // Format the final response + finalResponse := githubmarkdownconvertergo.Slack(res.Response) + + // Update the placeholder message with the final result + t.placeholderMutex.RLock() + msgTs, exists := t.placeholders[jobUUID] + t.placeholderMutex.RUnlock() + + if exists && msgTs != "" { + _, _, _, err = api.UpdateMessage( + ev.Channel, + msgTs, + slack.MsgOptionText(finalResponse, true), slack.MsgOptionAttachments(generateAttachmentsFromJobResponse(res)...), - slack.MsgOptionTS(ts)) - } else { - _, _, err = api.PostMessage(ev.Channel, - slack.MsgOptionText(res.Response, true), - slack.MsgOptionAttachments(generateAttachmentsFromJobResponse(res)...), - slack.MsgOptionPostMessageParameters( - postMessageParams, - ), - slack.MsgOptionTS(ev.TimeStamp)) - } - if err != nil { - xlog.Error(fmt.Sprintf("Error posting message: %v", err)) + ) + if err != nil { + xlog.Error(fmt.Sprintf("Error updating final message: %v", err)) + } + + // Clean up the placeholder map + t.placeholderMutex.Lock() + delete(t.placeholders, jobUUID) + t.placeholderMutex.Unlock() } }() } @@ -388,6 +486,8 @@ func (t *Slack) Start(a *agent.Agent) { slack.OptionAppLevelToken(t.appToken), ) + t.apiClient = api + postMessageParams := slack.PostMessageParameters{ LinkNames: 1, Markdown: true, From 84836b83453353eea07172436f6e5855482bd738 Mon Sep 17 00:00:00 2001 From: Richard Palethorpe Date: Fri, 21 Mar 2025 14:20:27 +0000 Subject: [PATCH 281/399] feat(ui): Add individual forms for each connector --- core/state/pool.go | 1 + webui/app.go | 8 +- webui/public/js/agent-form.js | 514 +++++++++++++++++-------- webui/public/js/connector-templates.js | 475 +++++++++++++++++++++++ webui/views/create.html | 3 +- webui/views/settings.html | 22 +- 6 files changed, 852 insertions(+), 171 deletions(-) create mode 100644 webui/public/js/connector-templates.js diff --git a/core/state/pool.go b/core/state/pool.go index 4aac9cc..40d3694 100644 --- a/core/state/pool.go +++ b/core/state/pool.go @@ -244,6 +244,7 @@ func createAgentAvatar(APIURL, APIKey, model, imageModel, avatarDir string, agen func (a *AgentPool) List() []string { a.Lock() defer a.Unlock() + var agents []string for agent := range a.pool { agents = append(agents, agent) diff --git a/webui/app.go b/webui/app.go index c64d15f..364f71f 100644 --- a/webui/app.go +++ b/webui/app.go @@ -130,7 +130,7 @@ func (a *App) Create(pool *state.AgentPool) func(c *fiber.Ctx) error { return errorJSONMessage(c, err.Error()) } - fmt.Printf("Agent configuration: %+v\n", config) + xlog.Info("Agent configuration: %+v\n", config) if config.Name == "" { return errorJSONMessage(c, "Name is required") @@ -138,6 +138,7 @@ func (a *App) Create(pool *state.AgentPool) func(c *fiber.Ctx) error { if err := pool.CreateAgent(config.Name, &config); err != nil { return errorJSONMessage(c, err.Error()) } + return statusJSONMessage(c, "ok") } } @@ -156,7 +157,7 @@ func (a *App) GetAgentConfig(pool *state.AgentPool) func(c *fiber.Ctx) error { // UpdateAgentConfig handles updating an agent's configuration func (a *App) UpdateAgentConfig(pool *state.AgentPool) func(c *fiber.Ctx) error { return func(c *fiber.Ctx) error { - agentName := c.Params("name") + agentName := strings.Clone(c.Params("name")) // First check if agent exists oldConfig := pool.GetConfig(agentName) @@ -171,9 +172,6 @@ func (a *App) UpdateAgentConfig(pool *state.AgentPool) func(c *fiber.Ctx) error return errorJSONMessage(c, err.Error()) } - // Ensure the name doesn't change - newConfig.Name = agentName - // Remove the agent first if err := pool.Remove(agentName); err != nil { return errorJSONMessage(c, "Error removing agent: "+err.Error()) diff --git a/webui/public/js/agent-form.js b/webui/public/js/agent-form.js index 8f1c9b8..5c73698 100644 --- a/webui/public/js/agent-form.js +++ b/webui/public/js/agent-form.js @@ -57,37 +57,68 @@ const AgentFormUtils = { // Process connectors from form processConnectors: function(button) { const connectors = []; - const connectorsElements = document.getElementsByClassName('connector'); + const connectorElements = document.querySelectorAll('.connector'); - for (let i = 0; i < connectorsElements.length; i++) { - const typeField = document.getElementById(`connectorType${i}`); - const configField = document.getElementById(`connectorConfig${i}`); - - if (typeField && configField) { - try { - // Validate JSON but send as string - const configValue = configField.value.trim() || '{}'; - // Parse to validate but don't use the parsed object - JSON.parse(configValue); - - connectors.push({ - type: typeField.value, - config: configValue // Send the raw string, not parsed JSON - }); - } catch (err) { - console.error(`Error parsing connector ${i} config:`, err); - showToast(`Error in connector ${i+1} configuration: Invalid JSON`, 'error'); - - // If button is provided, restore its state - if (button) { - const originalButtonText = button.getAttribute('data-original-text'); - button.innerHTML = originalButtonText; - button.disabled = false; - } - - return null; // Indicate validation error - } + for (let i = 0; i < connectorElements.length; i++) { + const typeSelect = document.getElementById(`connectorType${i}`); + if (!typeSelect) { + showToast(`Error: Could not find connector type select for index ${i}`, 'error'); + button.innerHTML = button.getAttribute('data-original-text'); + button.disabled = false; + return null; // Validation failed } + + const type = typeSelect.value; + if (!type) { + showToast(`Please select a connector type for connector ${i+1}`, 'error'); + button.innerHTML = button.getAttribute('data-original-text'); + button.disabled = false; + return null; // Validation failed + } + + // Get all config fields for this connector + const connector = { + type: type, + config: {} + }; + + // Find all config inputs for this connector + const configInputs = document.querySelectorAll(`[name^="connectors[${i}][config]"]`); + + // Check if we have a JSON textarea (fallback template) + const jsonTextarea = document.getElementById(`connectorConfig${i}`); + if (jsonTextarea && jsonTextarea.value) { + try { + // If it's a JSON textarea, parse it and use the result + const jsonConfig = JSON.parse(jsonTextarea.value); + // Convert the parsed JSON back to a string for the backend + connector.config = JSON.stringify(jsonConfig); + } catch (e) { + // If it's not valid JSON, use it as is + connector.config = jsonTextarea.value; + } + } else { + // Process individual form fields + configInputs.forEach(input => { + // Extract the key from the name attribute + // Format: connectors[0][config][key] + const keyMatch = input.name.match(/\[config\]\[([^\]]+)\]/); + if (keyMatch && keyMatch[1]) { + const key = keyMatch[1]; + // For checkboxes, set true/false based on checked state + if (input.type === 'checkbox') { + connector.config[key] = input.checked ? 'true' : 'false'; + } else { + connector.config[key] = input.value; + } + } + }); + + // Convert the config object to a JSON string for the backend + connector.config = JSON.stringify(connector.config); + } + + connectors.push(connector); } return connectors; @@ -96,17 +127,23 @@ const AgentFormUtils = { // Process MCP servers from form processMCPServers: function() { const mcpServers = []; - const mcpServerElements = document.getElementsByClassName('mcp_server'); + const mcpElements = document.querySelectorAll('.mcp_server'); - for (let i = 0; i < mcpServerElements.length; i++) { - const urlField = document.getElementById(`mcpURL${i}`); - const tokenField = document.getElementById(`mcpToken${i}`); + for (let i = 0; i < mcpElements.length; i++) { + const urlInput = document.getElementById(`mcpURL${i}`); + const tokenInput = document.getElementById(`mcpToken${i}`); - if (urlField && urlField.value.trim()) { - mcpServers.push({ - url: urlField.value.trim(), - token: tokenField ? tokenField.value.trim() : '' - }); + if (urlInput && urlInput.value) { + const server = { + url: urlInput.value + }; + + // Add token if present + if (tokenInput && tokenInput.value) { + server.token = tokenInput.value; + } + + mcpServers.push(server); } } @@ -116,37 +153,43 @@ const AgentFormUtils = { // Process actions from form processActions: function(button) { const actions = []; - const actionElements = document.getElementsByClassName('action'); + const actionElements = document.querySelectorAll('.action'); for (let i = 0; i < actionElements.length; i++) { - const nameField = document.getElementById(`actionsName${i}`); - const configField = document.getElementById(`actionsConfig${i}`); + const nameSelect = document.getElementById(`actionsName${i}`); + const configTextarea = document.getElementById(`actionsConfig${i}`); - if (nameField && configField) { + if (!nameSelect) { + showToast(`Error: Could not find action name select for index ${i}`, 'error'); + button.innerHTML = button.getAttribute('data-original-text'); + button.disabled = false; + return null; // Validation failed + } + + const name = nameSelect.value; + if (!name) { + showToast(`Please select an action type for action ${i+1}`, 'error'); + button.innerHTML = button.getAttribute('data-original-text'); + button.disabled = false; + return null; // Validation failed + } + + let config = {}; + if (configTextarea && configTextarea.value) { try { - // Validate JSON but send as string - const configValue = configField.value.trim() || '{}'; - // Parse to validate but don't use the parsed object - JSON.parse(configValue); - - actions.push({ - name: nameField.value, - config: configValue // Send the raw string, not parsed JSON - }); - } catch (err) { - console.error(`Error parsing action ${i} config:`, err); - showToast(`Error in action ${i+1} configuration: Invalid JSON`, 'error'); - - // If button is provided, restore its state - if (button) { - const originalButtonText = button.getAttribute('data-original-text'); - button.innerHTML = originalButtonText; - button.disabled = false; - } - - return null; // Indicate validation error + config = JSON.parse(configTextarea.value); + } catch (e) { + showToast(`Invalid JSON in action ${i+1} config: ${e.message}`, 'error'); + button.innerHTML = button.getAttribute('data-original-text'); + button.disabled = false; + return null; // Validation failed } } + + actions.push({ + name: name, + config: JSON.stringify(config) // Convert to JSON string for backend + }); } return actions; @@ -155,37 +198,43 @@ const AgentFormUtils = { // Process prompt blocks from form processPromptBlocks: function(button) { const promptBlocks = []; - const promptBlockElements = document.getElementsByClassName('promptBlock'); + const promptElements = document.querySelectorAll('.prompt_block'); - for (let i = 0; i < promptBlockElements.length; i++) { - const nameField = document.getElementById(`promptName${i}`); - const configField = document.getElementById(`promptConfig${i}`); + for (let i = 0; i < promptElements.length; i++) { + const nameSelect = document.getElementById(`promptName${i}`); + const configTextarea = document.getElementById(`promptConfig${i}`); - if (nameField && configField) { + if (!nameSelect) { + showToast(`Error: Could not find prompt block name select for index ${i}`, 'error'); + button.innerHTML = button.getAttribute('data-original-text'); + button.disabled = false; + return null; // Validation failed + } + + const name = nameSelect.value; + if (!name) { + showToast(`Please select a prompt block type for block ${i+1}`, 'error'); + button.innerHTML = button.getAttribute('data-original-text'); + button.disabled = false; + return null; // Validation failed + } + + let config = {}; + if (configTextarea && configTextarea.value) { try { - // Validate JSON but send as string - const configValue = configField.value.trim() || '{}'; - // Parse to validate but don't use the parsed object - JSON.parse(configValue); - - promptBlocks.push({ - name: nameField.value, - config: configValue // Send the raw string, not parsed JSON - }); - } catch (err) { - console.error(`Error parsing prompt block ${i} config:`, err); - showToast(`Error in prompt block ${i+1} configuration: Invalid JSON`, 'error'); - - // If button is provided, restore its state - if (button) { - const originalButtonText = button.getAttribute('data-original-text'); - button.innerHTML = originalButtonText; - button.disabled = false; - } - - return null; // Indicate validation error + config = JSON.parse(configTextarea.value); + } catch (e) { + showToast(`Invalid JSON in prompt block ${i+1} config: ${e.message}`, 'error'); + button.innerHTML = button.getAttribute('data-original-text'); + button.disabled = false; + return null; // Validation failed } } + + promptBlocks.push({ + name: name, + config: JSON.stringify(config) // Convert to JSON string for backend + }); } return promptBlocks; @@ -193,38 +242,126 @@ const AgentFormUtils = { // Helper function to format config values (for edit form) formatConfigValue: function(configElement, configValue) { - // If it's a string (already stringified JSON), try to parse it first - if (typeof configValue === 'string') { + if (!configElement) return; + + // If configValue is an object, stringify it + if (typeof configValue === 'object' && configValue !== null) { + try { + configElement.value = JSON.stringify(configValue, null, 2); + } catch (e) { + console.error('Error stringifying config value:', e); + configElement.value = '{}'; + } + } + // If it's a string that looks like JSON, try to parse and pretty print it + else if (typeof configValue === 'string' && (configValue.startsWith('{') || configValue.startsWith('['))) { try { const parsed = JSON.parse(configValue); configElement.value = JSON.stringify(parsed, null, 2); } catch (e) { - console.warn("Failed to parse config JSON string:", e); - configElement.value = configValue; // Keep as is if parsing fails + // If it's not valid JSON, just use the string as is + configElement.value = configValue; } - } else if (configValue !== undefined && configValue !== null) { - // Direct object, just stringify with formatting - configElement.value = JSON.stringify(configValue, null, 2); - } else { - // Default to empty object - configElement.value = '{}'; + } + // Otherwise, just use the value as is + else { + configElement.value = configValue || ''; } }, // Helper function to set select value (with fallback if option doesn't exist) setSelectValue: function(selectElement, value) { - // Check if the option exists - const optionExists = Array.from(selectElement.options).some(option => option.value === value); + if (!selectElement) return; + // Check if the option exists + let optionExists = false; + for (let i = 0; i < selectElement.options.length; i++) { + if (selectElement.options[i].value === value) { + optionExists = true; + break; + } + } + + // Set the value if the option exists if (optionExists) { selectElement.value = value; - } else if (value) { - // If value is provided but option doesn't exist, create a new option - const newOption = document.createElement('option'); - newOption.value = value; - newOption.text = value + ' (custom)'; - selectElement.add(newOption); - selectElement.value = value; + } else if (selectElement.options.length > 0) { + // Otherwise, select the first option + selectElement.selectedIndex = 0; + } + }, + + // Render connector form based on type + renderConnectorForm: function(index, type, config = {}) { + const formContainer = document.getElementById(`connectorFormContainer${index}`); + if (!formContainer) return; + + // Clear existing form + formContainer.innerHTML = ''; + + // Debug log to see what's happening + console.log(`Rendering connector form for type: ${type}`); + console.log(`Config for connector:`, config); + console.log(`Available templates:`, ConnectorTemplates ? Object.keys(ConnectorTemplates) : 'None'); + + // Ensure config is an object + let configObj = config; + if (typeof config === 'string') { + try { + configObj = JSON.parse(config); + } catch (e) { + console.error('Error parsing connector config string:', e); + configObj = {}; + } + } + + // If we have a template for this connector type in the global ConnectorTemplates object + if (ConnectorTemplates && type && ConnectorTemplates[type]) { + console.log(`Found template for ${type}`); + // Get the template result which contains HTML and setValues function + const templateResult = ConnectorTemplates[type](configObj, index); + + // Set the HTML content + formContainer.innerHTML = templateResult.html; + + // Call the setValues function to set input values safely + if (typeof templateResult.setValues === 'function') { + setTimeout(templateResult.setValues, 0); + } + } else { + console.log(`No template found for ${type}, using fallback`); + // Use the fallback template + if (ConnectorTemplates && ConnectorTemplates.fallback) { + const fallbackResult = ConnectorTemplates.fallback(configObj, index); + formContainer.innerHTML = fallbackResult.html; + + if (typeof fallbackResult.setValues === 'function') { + setTimeout(fallbackResult.setValues, 0); + } + } else { + // Fallback to generic JSON textarea if no fallback template + formContainer.innerHTML = ` +
+ + +
+ `; + + // Set the value safely after DOM is created + setTimeout(function() { + const configTextarea = document.getElementById(`connectorConfig${index}`); + if (configTextarea) { + if (typeof configObj === 'object' && configObj !== null) { + configTextarea.value = JSON.stringify(configObj, null, 2); + } else if (typeof config === 'string') { + configTextarea.value = config; + } + } + }, 0); + } } } }; @@ -238,14 +375,23 @@ const AgentFormTemplates = {

Connector ${index + 1}

- + ${data.options}
-
- - +
+ +
+
Select a connector type to configure
+
+
`; }, @@ -256,13 +402,16 @@ const AgentFormTemplates = {

MCP Server ${index + 1}

- - + +
- - + +
+
`; }, @@ -273,15 +422,18 @@ const AgentFormTemplates = {

Action ${index + 1}

- - ${data.options}
- +
+
`; }, @@ -289,18 +441,21 @@ const AgentFormTemplates = { // Prompt Block template promptBlockTemplate: function(index, data) { return ` -
+

Prompt Block ${index + 1}

- - ${data.options}
- - + +
+
`; } @@ -308,61 +463,102 @@ const AgentFormTemplates = { // Initialize form event listeners function initAgentFormCommon(options = {}) { - // Setup event listeners for dynamic component buttons - if (options.enableConnectors !== false) { - document.getElementById('addConnectorButton').addEventListener('click', function() { + // Add connector button + const addConnectorButton = document.getElementById('addConnectorButton'); + if (addConnectorButton) { + addConnectorButton.addEventListener('click', function() { + // Create options string + let optionsHtml = ''; + if (options.connectors) { + optionsHtml = options.connectors; + } + + // Add new connector form AgentFormUtils.addDynamicComponent('connectorsSection', AgentFormTemplates.connectorTemplate, { className: 'connector', - options: options.connectors || '' + options: optionsHtml }); }); } - if (options.enableMCP !== false) { - document.getElementById('addMCPButton').addEventListener('click', function() { + // Add MCP server button + const addMCPButton = document.getElementById('addMCPButton'); + if (addMCPButton) { + addMCPButton.addEventListener('click', function() { + // Add new MCP server form AgentFormUtils.addDynamicComponent('mcpSection', AgentFormTemplates.mcpServerTemplate, { className: 'mcp_server' }); }); } - if (options.enableActions !== false) { - document.getElementById('action_button').addEventListener('click', function() { + // Add action button + const actionButton = document.getElementById('action_button'); + if (actionButton) { + actionButton.addEventListener('click', function() { + // Create options string + let optionsHtml = ''; + if (options.actions) { + optionsHtml = options.actions; + } + + // Add new action form AgentFormUtils.addDynamicComponent('action_box', AgentFormTemplates.actionTemplate, { className: 'action', - options: options.actions || '' + options: optionsHtml }); }); } - if (options.enablePromptBlocks !== false) { - document.getElementById('dynamic_button').addEventListener('click', function() { + // Add prompt block button + const dynamicButton = document.getElementById('dynamic_button'); + if (dynamicButton) { + dynamicButton.addEventListener('click', function() { + // Create options string + let optionsHtml = ''; + if (options.promptBlocks) { + optionsHtml = options.promptBlocks; + } + + // Add new prompt block form AgentFormUtils.addDynamicComponent('dynamic_box', AgentFormTemplates.promptBlockTemplate, { - className: 'promptBlock', - options: options.promptBlocks || '' + className: 'prompt_block', + options: optionsHtml }); }); } +} + +// Simple toast notification function +function showToast(message, type) { + // Check if toast container exists, if not create it + let toast = document.getElementById('toast'); + if (!toast) { + toast = document.createElement('div'); + toast.id = 'toast'; + toast.className = 'toast'; + + const toastMessage = document.createElement('div'); + toastMessage.id = 'toast-message'; + toast.appendChild(toastMessage); + + document.body.appendChild(toast); + } - // Add additional CSS for checkbox labels - const style = document.createElement('style'); - style.textContent = ` - .checkbox-label { - display: flex; - align-items: center; - cursor: pointer; - margin-bottom: 10px; - } - - .checkbox-label .checkbox-custom { - margin-right: 10px; - } - - @keyframes pulse { - 0% { transform: scale(1); } - 50% { transform: scale(1.05); } - 100% { transform: scale(1); } - } - `; - document.head.appendChild(style); -} \ No newline at end of file + const toastMessage = document.getElementById('toast-message'); + + // Set message + toastMessage.textContent = message; + + // Set type class + toast.className = 'toast'; + toast.classList.add(`toast-${type}`); + + // Show toast + toast.classList.add('show'); + + // Hide after 3 seconds + setTimeout(() => { + toast.classList.remove('show'); + }, 3000); +} diff --git a/webui/public/js/connector-templates.js b/webui/public/js/connector-templates.js new file mode 100644 index 0000000..f093989 --- /dev/null +++ b/webui/public/js/connector-templates.js @@ -0,0 +1,475 @@ +/** + * Connector Templates + * + * This file contains templates for all connector types supported by LocalAgent. + * Each template is a function that returns an HTML string for the connector's form. + * + * Note: We don't need to escape HTML in the value attributes because browsers + * handle these values safely when setting them via DOM properties after rendering. + */ + +/** + * Connector Templates + * Each function takes a config object and returns an HTML string + */ +const ConnectorTemplates = { + /** + * Telegram Connector Template + * @param {Object} config - Existing configuration values + * @param {Number} index - Connector index + * @returns {Object} HTML template and setValues function + */ + telegram: function(config = {}, index) { + // Return HTML without values in the template string + const html = ` +
+ + + Get this from @BotFather on Telegram +
+ `; + + // Function to set values after HTML is added to DOM to avoid XSS + const setValues = function() { + const input = document.getElementById(`telegramToken${index}`); + if (input) input.value = config.token || ''; + }; + + return { html, setValues }; + }, + + /** + * Slack Connector Template + * @param {Object} config - Existing configuration values + * @param {Number} index - Connector index + * @returns {Object} HTML template and setValues function + */ + slack: function(config = {}, index) { + // Return HTML without values in the template string + const html = ` +
+ + + App-level token starting with xapp- +
+ +
+ + + Bot token starting with xoxb- +
+ +
+ + + Channel ID where the bot will operate +
+ +
+ + + If checked, the bot will reply to all messages in the channel +
+ `; + + // Function to set values after HTML is added to DOM to avoid XSS + const setValues = function() { + const appTokenInput = document.getElementById(`slackAppToken${index}`); + const botTokenInput = document.getElementById(`slackBotToken${index}`); + const channelIDInput = document.getElementById(`slackChannelID${index}`); + const alwaysReplyInput = document.getElementById(`slackAlwaysReply${index}`); + + if (appTokenInput) appTokenInput.value = config.appToken || ''; + if (botTokenInput) botTokenInput.value = config.botToken || ''; + if (channelIDInput) channelIDInput.value = config.channelID || ''; + if (alwaysReplyInput) alwaysReplyInput.checked = config.alwaysReply === 'true'; + }; + + return { html, setValues }; + }, + + /** + * Discord Connector Template + * @param {Object} config - Existing configuration values + * @param {Number} index - Connector index + * @returns {Object} HTML template and setValues function + */ + discord: function(config = {}, index) { + // Return HTML without values in the template string + const html = ` +
+ + +
+ +
+ + +
+ `; + + // Function to set values after HTML is added to DOM + const setValues = function() { + const tokenInput = document.getElementById(`discordToken${index}`); + const channelIDInput = document.getElementById(`discordChannelID${index}`); + + if (tokenInput) tokenInput.value = config.token || ''; + if (channelIDInput) channelIDInput.value = config.defaultChannel || ''; + }; + + return { html, setValues }; + }, + + /** + * GitHub Issues Connector Template + * @param {Object} config - Existing configuration values + * @param {Number} index - Connector index + * @returns {Object} HTML template and setValues function + */ + 'github-issues': function(config = {}, index) { + // Return HTML without values in the template string + const html = ` +
+ + + Needs repo and read:org permissions +
+ +
+ + +
+ +
+ + +
+ +
+ + + If checked, the bot will reply to issues that have no replies yet +
+ +
+ + + How often to check for new issues (in seconds) +
+ `; + + // Function to set values after HTML is added to DOM to avoid XSS + const setValues = function() { + const tokenInput = document.getElementById(`githubIssuesToken${index}`); + const ownerInput = document.getElementById(`githubIssuesOwner${index}`); + const repoInput = document.getElementById(`githubIssuesRepo${index}`); + const replyIfNoRepliesInput = document.getElementById(`githubIssuesReplyIfNoReplies${index}`); + const pollIntervalInput = document.getElementById(`githubIssuesPollInterval${index}`); + + if (tokenInput) tokenInput.value = config.token || ''; + if (ownerInput) ownerInput.value = config.owner || ''; + if (repoInput) repoInput.value = config.repository || ''; + if (replyIfNoRepliesInput) replyIfNoRepliesInput.checked = config.replyIfNoReplies === 'true'; + if (pollIntervalInput) pollIntervalInput.value = config.pollInterval || '60'; + }; + + return { html, setValues }; + }, + + /** + * GitHub PRs Connector Template + * @param {Object} config - Existing configuration values + * @param {Number} index - Connector index + * @returns {Object} HTML template and setValues function + */ + 'github-prs': function(config = {}, index) { + // Return HTML without values in the template string + const html = ` +
+ + + Personal Access Token with repo permissions +
+ +
+ + +
+ +
+ + +
+ +
+ + + If checked, the bot will reply to pull requests that have no replies yet +
+ +
+ + + How often to check for new pull requests (in seconds) +
+ `; + + // Function to set values after HTML is added to DOM to avoid XSS + const setValues = function() { + const tokenInput = document.getElementById(`githubPRsToken${index}`); + const ownerInput = document.getElementById(`githubPRsOwner${index}`); + const repoInput = document.getElementById(`githubPRsRepo${index}`); + const replyIfNoRepliesInput = document.getElementById(`githubPRsReplyIfNoReplies${index}`); + const pollIntervalInput = document.getElementById(`githubPRsPollInterval${index}`); + + if (tokenInput) tokenInput.value = config.token || ''; + if (ownerInput) ownerInput.value = config.owner || ''; + if (repoInput) repoInput.value = config.repository || ''; + if (replyIfNoRepliesInput) replyIfNoRepliesInput.checked = config.replyIfNoReplies === 'true'; + if (pollIntervalInput) pollIntervalInput.value = config.pollInterval || '60'; + }; + + return { html, setValues }; + }, + + /** + * IRC Connector Template + * @param {Object} config - Existing configuration values + * @param {Number} index - Connector index + * @returns {Object} HTML template and setValues function + */ + irc: function(config = {}, index) { + // Return HTML without values in the template string + const html = ` +
+ + +
+ +
+ + +
+ +
+ + +
+ +
+ + +
+ +
+ + + If checked, the bot will always reply to messages, even if they are not directed at it +
+ `; + + // Function to set values after HTML is added to DOM + const setValues = function() { + const serverInput = document.getElementById(`ircServer${index}`); + const portInput = document.getElementById(`ircPort${index}`); + const channelInput = document.getElementById(`ircChannel${index}`); + const nickInput = document.getElementById(`ircNick${index}`); + const alwaysReplyInput = document.getElementById(`ircAlwaysReply${index}`); + + if (serverInput) serverInput.value = config.server || ''; + if (portInput) portInput.value = config.port || '6667'; + if (channelInput) channelInput.value = config.channel || ''; + if (nickInput) nickInput.value = config.nickname || ''; + if (alwaysReplyInput) alwaysReplyInput.checked = config.alwaysReply === 'true'; + }; + + return { html, setValues }; + }, + + /** + * Twitter Connector Template + * @param {Object} config - Existing configuration values + * @param {Number} index - Connector index + * @returns {Object} HTML template and setValues function + */ + twitter: function(config = {}, index) { + // Return HTML without values in the template string + const html = ` +
+ + +
+ +
+ + + Username of your Twitter bot (with or without @) +
+ +
+ + + If checked, the bot will not enforce Twitter's character limit +
+ `; + + // Function to set values after HTML is added to DOM + const setValues = function() { + const tokenInput = document.getElementById(`twitterToken${index}`); + const botUsernameInput = document.getElementById(`twitterBotUsername${index}`); + const noCharLimitInput = document.getElementById(`twitterNoCharLimit${index}`); + + if (tokenInput) tokenInput.value = config.token || ''; + if (botUsernameInput) botUsernameInput.value = config.botUsername || ''; + if (noCharLimitInput) noCharLimitInput.checked = config.noCharacterLimit === 'true'; + }; + + return { html, setValues }; + }, + + /** + * Fallback template for any connector without a specific template + * @param {Object} config - Existing configuration values + * @param {Number} index - Connector index + * @returns {Object} HTML template and setValues function + */ + fallback: function(config = {}, index) { + // Convert config to a pretty-printed JSON string + let configStr = '{}'; + try { + if (typeof config === 'string') { + // If it's already a string, try to parse it first to pretty-print + configStr = JSON.stringify(JSON.parse(config), null, 2); + } else if (typeof config === 'object' && config !== null) { + configStr = JSON.stringify(config, null, 2); + } + } catch (e) { + console.error('Error formatting config:', e); + // If it's a string but not valid JSON, just use it as is + if (typeof config === 'string') { + configStr = config; + } + } + + // Return HTML without values in the template string + const html = ` +
+ + + Enter the connector configuration as a JSON object +
+ `; + + // Function to set values after HTML is added to DOM + const setValues = function() { + const configInput = document.getElementById(`connectorConfig${index}`); + + if (configInput) configInput.value = configStr; + }; + + return { html, setValues }; + } +}; diff --git a/webui/views/create.html b/webui/views/create.html index b2796ab..95413dc 100644 --- a/webui/views/create.html +++ b/webui/views/create.html @@ -5,6 +5,7 @@ {{template "views/partials/header"}} + @@ -150,4 +151,4 @@ }); - \ No newline at end of file + diff --git a/webui/views/settings.html b/webui/views/settings.html index c92077a..e3f2a11 100644 --- a/webui/views/settings.html +++ b/webui/views/settings.html @@ -5,6 +5,7 @@ {{template "views/partials/header"}} + @@ -361,16 +362,25 @@ // Find the added connector elements const connectorType = document.getElementById(`connectorType${index}`); - const connectorConfig = document.getElementById(`connectorConfig${index}`); // Set values if (connectorType) { + // First set the connector type AgentFormUtils.setSelectValue(connectorType, connector.type); - } - - if (connectorConfig) { - // Format the config value - AgentFormUtils.formatConfigValue(connectorConfig, connector.config); + + // Parse the config if it's a string (from backend) + let configObj = connector.config; + if (typeof connector.config === 'string') { + try { + configObj = JSON.parse(connector.config); + } catch (e) { + console.error('Error parsing connector config:', e); + configObj = {}; // Fallback to empty object if parsing fails + } + } + + // Now render the appropriate form for this connector type with the config values + AgentFormUtils.renderConnectorForm(index, connector.type, configObj); } }); } From fb4166333035f75f4da24db28ee1fc6f9675681f Mon Sep 17 00:00:00 2001 From: Richard Palethorpe Date: Mon, 24 Mar 2025 08:47:15 +0000 Subject: [PATCH 282/399] fix(ui): Add connector templates to group-create --- webui/views/group-create.html | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/webui/views/group-create.html b/webui/views/group-create.html index ad596ba..f378e54 100644 --- a/webui/views/group-create.html +++ b/webui/views/group-create.html @@ -5,6 +5,7 @@ {{template "views/partials/header"}} + +
+ ); +} + +export default GroupCreate; diff --git a/webui/react-ui/src/pages/Home.jsx b/webui/react-ui/src/pages/Home.jsx new file mode 100644 index 0000000..eb7f6e6 --- /dev/null +++ b/webui/react-ui/src/pages/Home.jsx @@ -0,0 +1,137 @@ +import { useState, useEffect } from 'react'; +import { Link } from 'react-router-dom'; +import { agentApi } from '../utils/api'; + +function Home() { + const [stats, setStats] = useState({ + agents: [], + agentCount: 0, + actions: 0, + connectors: 0, + status: {}, + }); + const [loading, setLoading] = useState(true); + const [error, setError] = useState(null); + + // Fetch dashboard data + useEffect(() => { + const fetchData = async () => { + setLoading(true); + try { + const agents = await agentApi.getAgents(); + setStats({ + agents: agents.Agents || [], + agentCount: agents.AgentCount || 0, + actions: agents.Actions || 0, + connectors: agents.Connectors || 0, + status: agents.Status || {}, + }); + } catch (err) { + console.error('Error fetching dashboard data:', err); + setError('Failed to load dashboard data'); + } finally { + setLoading(false); + } + }; + + fetchData(); + }, []); + + if (loading) { + return
Loading dashboard data...
; + } + + if (error) { + return
{error}
; + } + + return ( +
+
+ LocalAgent Logo +
+ +

LocalAgent

+ + {/* Dashboard Stats */} +
+
+
{stats.actions}
+
Available Actions
+
+
+
{stats.connectors}
+
Available Connectors
+
+
+
{stats.agentCount}
+
Agents
+
+
+ + {/* Cards Container */} +
+ {/* Card for Agent List Page */} + +
+

Agent List

+

View and manage your list of agents, including detailed profiles and statistics.

+
+ + + {/* Card for Create Agent */} + +
+

Create Agent

+

Create a new intelligent agent with custom behaviors, connectors, and actions.

+
+ + + {/* Card for Actions Playground */} + +
+

Actions Playground

+

Explore and test available actions for your agents.

+
+ + + {/* Card for Group Create */} + +
+

Create Group

+

Create agent groups for collaborative intelligence.

+
+ +
+ + {stats.agents.length > 0 && ( +
+

Your Agents

+
+ {stats.agents.map((agent) => ( +
+
+ {stats.status[agent] ? 'Active' : 'Paused'} +
+

{agent}

+
+ + Chat + + + Settings + + + Status + +
+
+ ))} +
+
+ )} +
+ ); +} + +export default Home; diff --git a/webui/react-ui/src/router.jsx b/webui/react-ui/src/router.jsx new file mode 100644 index 0000000..b30f270 --- /dev/null +++ b/webui/react-ui/src/router.jsx @@ -0,0 +1,52 @@ +import { createBrowserRouter } from 'react-router-dom'; +import App from './App'; +import Home from './pages/Home'; +import AgentSettings from './pages/AgentSettings'; +import AgentsList from './pages/AgentsList'; +import CreateAgent from './pages/CreateAgent'; +import Chat from './pages/Chat'; +import ActionsPlayground from './pages/ActionsPlayground'; +import GroupCreate from './pages/GroupCreate'; + +// Get the base URL from Vite's environment variables or default to '/app/' +const BASE_URL = import.meta.env.BASE_URL || '/app'; + +// Create a router with the base URL +export const router = createBrowserRouter([ + { + path: '/', + element: , + children: [ + { + index: true, + element: + }, + { + path: 'agents', + element: + }, + { + path: 'create', + element: + }, + { + path: 'settings/:name', + element: + }, + { + path: 'talk/:name', + element: + }, + { + path: 'actions-playground', + element: + }, + { + path: 'group-create', + element: + } + ] + } +], { + basename: BASE_URL // Set the base URL for all routes +}); diff --git a/webui/react-ui/src/utils/api.js b/webui/react-ui/src/utils/api.js new file mode 100644 index 0000000..161daba --- /dev/null +++ b/webui/react-ui/src/utils/api.js @@ -0,0 +1,198 @@ +/** + * API utility for communicating with the Go backend + */ +import { API_CONFIG } from './config'; + +// Helper function for handling API responses +const handleResponse = async (response) => { + if (!response.ok) { + const errorData = await response.json().catch(() => ({})); + throw new Error(errorData.error || `API error: ${response.status}`); + } + + // Check if response is JSON + const contentType = response.headers.get('content-type'); + if (contentType && contentType.includes('application/json')) { + return response.json(); + } + + return response.text(); +}; + +// Helper function to build a full URL +const buildUrl = (endpoint) => { + return `${API_CONFIG.baseUrl}${endpoint.startsWith('/') ? endpoint.substring(1) : endpoint}`; +}; + +// Agent-related API calls +export const agentApi = { + // Get list of all agents + getAgents: async () => { + const response = await fetch(buildUrl(API_CONFIG.endpoints.agents), { + headers: API_CONFIG.headers + }); + return handleResponse(response); + }, + + // Get a specific agent's configuration + getAgentConfig: async (name) => { + const response = await fetch(buildUrl(API_CONFIG.endpoints.agentConfig(name)), { + headers: API_CONFIG.headers + }); + return handleResponse(response); + }, + + // Create a new agent + createAgent: async (config) => { + const response = await fetch(buildUrl(API_CONFIG.endpoints.createAgent), { + method: 'POST', + headers: API_CONFIG.headers, + body: JSON.stringify(config), + }); + return handleResponse(response); + }, + + // Update an existing agent's configuration + updateAgentConfig: async (name, config) => { + const response = await fetch(buildUrl(API_CONFIG.endpoints.agentConfig(name)), { + method: 'PUT', + headers: API_CONFIG.headers, + body: JSON.stringify(config), + }); + return handleResponse(response); + }, + + // Delete an agent + deleteAgent: async (name) => { + const response = await fetch(buildUrl(API_CONFIG.endpoints.deleteAgent(name)), { + method: 'DELETE', + headers: API_CONFIG.headers, + }); + return handleResponse(response); + }, + + // Pause an agent + pauseAgent: async (name) => { + const response = await fetch(buildUrl(API_CONFIG.endpoints.pauseAgent(name)), { + method: 'PUT', + headers: API_CONFIG.headers, + body: JSON.stringify({}), + }); + return handleResponse(response); + }, + + // Start an agent + startAgent: async (name) => { + const response = await fetch(buildUrl(API_CONFIG.endpoints.startAgent(name)), { + method: 'PUT', + headers: API_CONFIG.headers, + body: JSON.stringify({}), + }); + return handleResponse(response); + }, + + // Export agent configuration + exportAgentConfig: async (name) => { + const response = await fetch(buildUrl(API_CONFIG.endpoints.exportAgent(name)), { + headers: API_CONFIG.headers + }); + return handleResponse(response); + }, + + // Import agent configuration + importAgentConfig: async (configData) => { + const response = await fetch(buildUrl(API_CONFIG.endpoints.importAgent), { + method: 'POST', + headers: API_CONFIG.headers, + body: JSON.stringify(configData), + }); + return handleResponse(response); + }, + + // Generate group profiles + generateGroupProfiles: async (data) => { + const response = await fetch(buildUrl(API_CONFIG.endpoints.generateGroupProfiles), { + method: 'POST', + headers: API_CONFIG.headers, + body: JSON.stringify(data), + }); + return handleResponse(response); + }, + + // Create a group of agents + createGroup: async (data) => { + const response = await fetch(buildUrl(API_CONFIG.endpoints.createGroup), { + method: 'POST', + headers: API_CONFIG.headers, + body: JSON.stringify(data), + }); + return handleResponse(response); + }, +}; + +// Chat-related API calls +export const chatApi = { + // Send a chat message to an agent + sendMessage: async (name, message) => { + const response = await fetch(buildUrl(API_CONFIG.endpoints.chat(name)), { + method: 'POST', + headers: API_CONFIG.headers, + body: JSON.stringify({ message }), + }); + return handleResponse(response); + }, + + // Send a notification to an agent + sendNotification: async (name, message) => { + const response = await fetch(buildUrl(API_CONFIG.endpoints.notify(name)), { + method: 'POST', + headers: { + 'Content-Type': 'application/x-www-form-urlencoded', + }, + body: new URLSearchParams({ message }), + }); + return handleResponse(response); + }, + + // Get responses from an agent + getResponses: async (data) => { + const response = await fetch(buildUrl(API_CONFIG.endpoints.responses), { + method: 'POST', + headers: API_CONFIG.headers, + body: JSON.stringify(data), + }); + return handleResponse(response); + }, +}; + +// Action-related API calls +export const actionApi = { + // List available actions + listActions: async () => { + const response = await fetch(buildUrl(API_CONFIG.endpoints.listActions), { + headers: API_CONFIG.headers + }); + return handleResponse(response); + }, + + // Execute an action for an agent + executeAction: async (name, actionData) => { + const response = await fetch(buildUrl(API_CONFIG.endpoints.executeAction(name)), { + method: 'POST', + headers: API_CONFIG.headers, + body: JSON.stringify(actionData), + }); + return handleResponse(response); + }, +}; + +// Status-related API calls +export const statusApi = { + // Get agent status history + getStatusHistory: async (name) => { + const response = await fetch(buildUrl(API_CONFIG.endpoints.status(name)), { + headers: API_CONFIG.headers + }); + return handleResponse(response); + }, +}; diff --git a/webui/react-ui/src/utils/config.js b/webui/react-ui/src/utils/config.js new file mode 100644 index 0000000..0c3318c --- /dev/null +++ b/webui/react-ui/src/utils/config.js @@ -0,0 +1,49 @@ +/** + * Application configuration + */ + +// Get the base URL from Vite's environment variables or default to '/app/' +export const BASE_URL = import.meta.env.BASE_URL || '/app/'; + +// API endpoints configuration +export const API_CONFIG = { + // Base URL for API requests + baseUrl: '/', // API endpoints are at the root, not under /app/ + + // Default headers for API requests + headers: { + 'Content-Type': 'application/json', + }, + + // Endpoints + endpoints: { + // Agent endpoints + agents: '/api/agents', + agentConfig: (name) => `/api/agent/${name}/config`, + createAgent: '/create', + deleteAgent: (name) => `/delete/${name}`, + pauseAgent: (name) => `/pause/${name}`, + startAgent: (name) => `/start/${name}`, + exportAgent: (name) => `/settings/export/${name}`, + importAgent: '/settings/import', + + // Group endpoints + generateGroupProfiles: '/api/agent/group/generateProfiles', + createGroup: '/api/agent/group/create', + + // Chat endpoints + chat: (name) => `/chat/${name}`, + notify: (name) => `/notify/${name}`, + responses: '/v1/responses', + + // SSE endpoint + sse: (name) => `/sse/${name}`, + + // Action endpoints + listActions: '/actions', + executeAction: (name) => `/action/${name}/run`, + + // Status endpoint + status: (name) => `/status/${name}`, + } +}; diff --git a/webui/react-ui/vite.config.js b/webui/react-ui/vite.config.js new file mode 100644 index 0000000..8b50d2e --- /dev/null +++ b/webui/react-ui/vite.config.js @@ -0,0 +1,32 @@ +import { defineConfig } from 'vite' +import react from '@vitejs/plugin-react' + +// Define backend URL with port from environment variable or default to 8080 +const backendUrl = `http://${process.env.BACKEND_HOST || 'localhost'}:${process.env.BACKEND_PORT || '3000'}` + +// https://vitejs.dev/config/ +export default defineConfig({ + plugins: [react()], + base: '/app', // Set the base path for production builds + server: { + proxy: { + // Proxy API requests to your Go backend + '/api': backendUrl, + // Proxy SSE endpoints + '/sse': backendUrl, + // Add other endpoints as needed + '/settings': backendUrl, + '/agents': backendUrl, + '/create': backendUrl, + '/delete': backendUrl, + '/pause': backendUrl, + '/start': backendUrl, + '/talk': backendUrl, + '/notify': backendUrl, + '/chat': backendUrl, + '/status': backendUrl, + '/action': backendUrl, + '/actions': backendUrl, + } + } +}); \ No newline at end of file diff --git a/webui/routes.go b/webui/routes.go index 81c732a..a9283f3 100644 --- a/webui/routes.go +++ b/webui/routes.go @@ -25,6 +25,9 @@ var viewsfs embed.FS //go:embed public/* var embeddedFiles embed.FS +//go:embed react-ui/dist/* +var reactUI embed.FS + func (app *App) registerRoutes(pool *state.AgentPool, webapp *fiber.App) { // Static avatars in a.pooldir/avatars @@ -57,6 +60,21 @@ func (app *App) registerRoutes(pool *state.AgentPool, webapp *fiber.App) { }) }) + webapp.Use("/app", filesystem.New(filesystem.Config{ + Root: http.FS(reactUI), + PathPrefix: "react-ui/dist", + })) + + // Fallback route for SPA + webapp.Get("/app/*", func(c *fiber.Ctx) error { + indexHTML, err := reactUI.ReadFile("react-ui/dist/index.html") + if err != nil { + return c.Status(fiber.StatusInternalServerError).SendString("Error reading index.html") + } + c.Set("Content-Type", "text/html") + return c.Send(indexHTML) + }) + webapp.Get("/agents", func(c *fiber.Ctx) error { statuses := map[string]bool{} for _, a := range pool.List() { @@ -160,6 +178,28 @@ func (app *App) registerRoutes(pool *state.AgentPool, webapp *fiber.App) { webapp.Post("/api/agent/group/generateProfiles", app.GenerateGroupProfiles(pool)) webapp.Post("/api/agent/group/create", app.CreateGroup(pool)) + // Dashboard API endpoint for React UI + webapp.Get("/api/agents", func(c *fiber.Ctx) error { + statuses := map[string]bool{} + agents := pool.List() + for _, a := range agents { + agent := pool.GetAgent(a) + if agent == nil { + xlog.Error("Agent not found", "name", a) + continue + } + statuses[a] = !agent.Paused() + } + + return c.JSON(fiber.Map{ + "Agents": agents, + "AgentCount": len(agents), + "Actions": len(services.AvailableActions), + "Connectors": len(services.AvailableConnectors), + "Status": statuses, + }) + }) + webapp.Post("/settings/import", app.ImportAgent(pool)) webapp.Get("/settings/export/:name", app.ExportAgent(pool)) From 959dd8c7f3db331a58e90292d57ce4db0c3fa729 Mon Sep 17 00:00:00 2001 From: Richard Palethorpe Date: Tue, 25 Mar 2025 13:54:25 +0000 Subject: [PATCH 304/399] Update README with hot reloading instructions --- README.md | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+) diff --git a/README.md b/README.md index 0f45b36..aff18b4 100644 --- a/README.md +++ b/README.md @@ -120,6 +120,28 @@ go build -o localagent ./localagent ``` +### Development + +The development workflow is similar to the source build, but with additional steps for hot reloading of the frontend: + +```bash +# Clone repo +git clone https://github.com/mudler/LocalAgent.git +cd LocalAgent + +# Install dependencies and start frontend development server +cd webui/react-ui && bun i && bun run dev +``` + +Then in seperate terminal: + +```bash +# Start development server +cd ../.. && go run main.go +``` + +> Note: see webui/react-ui/.vite.config.js for env vars that can be used to configure the backend URL + ## CONNECTORS Link your agents to the services you already use. Configuration examples below. From 73af9538eb2e9dc0accaf95bcba4789f7e0742e4 Mon Sep 17 00:00:00 2001 From: Richard Palethorpe Date: Tue, 25 Mar 2025 14:49:36 +0000 Subject: [PATCH 305/399] feat(ui): Add agent avatar placeholders to agent list --- webui/react-ui/src/App.css | 202 ++++++++++++++++++++++-- webui/react-ui/src/pages/AgentsList.jsx | 95 +++++++---- 2 files changed, 253 insertions(+), 44 deletions(-) diff --git a/webui/react-ui/src/App.css b/webui/react-ui/src/App.css index d1a2ba5..bb1670e 100644 --- a/webui/react-ui/src/App.css +++ b/webui/react-ui/src/App.css @@ -288,17 +288,27 @@ a:hover { /* Status badge */ .status-badge { - position: absolute; - top: 15px; - right: 15px; - padding: 5px 12px; + display: inline-block; + padding: 0.25rem 0.75rem; border-radius: 20px; - font-size: 0.8rem; - font-weight: 500; + font-size: 0.75rem; + font-weight: 600; text-transform: uppercase; letter-spacing: 1px; - box-shadow: 0 0 10px rgba(0, 0, 0, 0.2); - z-index: 1; + margin-left: 10px; +} + +.status-badge.active { + background-color: var(--primary); + color: #000; + box-shadow: 0 0 10px rgba(0, 255, 149, 0.5); + animation: pulse 1.5s infinite; +} + +.status-badge.inactive { + background-color: var(--light-bg); + color: #fff; + border: 1px solid rgba(255, 255, 255, 0.1); } .status-active, .active { @@ -1640,10 +1650,9 @@ select.form-control { /* Agent header styling */ .agent-header { display: flex; - justify-content: space-between; + justify-content: center; align-items: center; - margin-bottom: 15px; - position: relative; + margin-bottom: 1rem; } .agent-header h2 { @@ -1655,3 +1664,174 @@ select.form-control { position: static; margin-left: 10px; } + +/* Agents grid layout */ +.agents-grid { + display: grid; + grid-template-columns: repeat(1, 1fr); + gap: 1.5rem; +} + +/* Responsive grid adjustments */ +@media (min-width: 768px) { + .agents-grid { + grid-template-columns: repeat(2, 1fr); + } +} + +@media (min-width: 1024px) { + .agents-grid { + grid-template-columns: repeat(3, 1fr); + } +} + +/* Avatar placeholder */ +.avatar-placeholder { + width: 96px; + height: 96px; + border-radius: 50%; + display: flex; + align-items: center; + justify-content: center; + background: linear-gradient(135deg, #2a2a2a, #3a3a3a); + color: var(--primary); + font-size: 1.5rem; + margin-bottom: 1rem; + border: 2px solid var(--primary); + box-shadow: var(--neon-glow); + position: relative; + overflow: hidden; +} + +.avatar-placeholder::after { + content: ""; + position: absolute; + width: 100%; + height: 4px; + background: var(--primary); + bottom: 0; + left: 0; + animation: loading-progress 2s infinite linear; +} + +@keyframes loading-progress { + 0% { width: 0; } + 50% { width: 100%; } + 100% { width: 0; } +} + +.placeholder-text { + z-index: 1; +} + +/* Agent card layout improvements */ +.agent-card { + background: rgba(30, 30, 30, 0.7); + border-radius: 8px; + box-shadow: 0 0 15px rgba(0, 0, 0, 0.2); + padding: 1.5rem; + margin-bottom: 1.5rem; + transition: transform 0.3s, box-shadow 0.3s; + position: relative; + overflow: hidden; + border: 1px solid rgba(94, 0, 255, 0.2); + backdrop-filter: blur(5px); +} + +.agent-card::before { + content: ""; + position: absolute; + top: 0; + left: 0; + width: 100%; + height: 2px; + background: linear-gradient(90deg, var(--primary), var(--secondary)); + opacity: 0.7; +} + +.agent-card::after { + content: ""; + position: absolute; + bottom: 0; + left: 0; + width: 0; + height: 2px; + background: linear-gradient(90deg, var(--primary), var(--secondary), var(--tertiary), var(--primary)); + background-size: 200% 100%; + transition: width 0.5s ease; +} + +.agent-card:hover { + transform: translateY(-5px); + box-shadow: 0 0 25px rgba(94, 0, 255, 0.3); +} + +.agent-card:hover::after { + width: 100%; + animation: gradientMove 3s linear infinite; +} + +.agent-actions { + display: flex; + gap: 15px; + margin-top: 15px; + justify-content: center; +} + +.agent-action { + padding: 8px 15px; + background: rgba(30, 30, 30, 0.8); + border-radius: 6px; + color: var(--text); + transition: all 0.3s; + text-decoration: none; + border: 1px solid rgba(94, 0, 255, 0.2); + position: relative; + overflow: hidden; +} + +.agent-action::after { + content: ""; + position: absolute; + bottom: 0; + left: 0; + width: 0; + height: 2px; + background: linear-gradient(90deg, var(--primary), var(--secondary), var(--tertiary), var(--primary)); + background-size: 200% 100%; + transition: width 0.5s ease; +} + +.agent-action:hover { + background: rgba(40, 40, 40, 0.9); + transform: translateY(-2px); + box-shadow: 0 0 15px rgba(94, 0, 255, 0.3); +} + +.agent-action:hover::after { + width: 100%; + animation: gradientMove 3s linear infinite; +} + +@keyframes gradientMove { + 0% { background-position: 0% 0; } + 100% { background-position: 200% 0; } +} + +.agent-content { + display: flex; + flex-direction: column; + align-items: center; +} + +.avatar-container { + margin-bottom: 1rem; +} + +.mt-2 { + margin-top: 0.5rem; +} + +.text-center { + text-align: center; +} diff --git a/webui/react-ui/src/pages/AgentsList.jsx b/webui/react-ui/src/pages/AgentsList.jsx index a397a6c..92f5baa 100644 --- a/webui/react-ui/src/pages/AgentsList.jsx +++ b/webui/react-ui/src/pages/AgentsList.jsx @@ -126,41 +126,70 @@ function AgentsList() {
{agents.map(name => (
-
-

{name}

- - {statuses[name] ? 'Active' : 'Paused'} - -
+
+
+ {name} { + e.target.style.display = 'block'; + e.target.nextElementSibling.style.display = 'none'; + }} + onError={(e) => { + e.target.style.display = 'none'; + e.target.nextElementSibling.style.display = 'flex'; + }} + /> +
+ +
+
+ +
+

{name}

+ + {statuses[name] ? 'Active' : 'Paused'} + +
-
- - Chat - - - Settings - - - Status - +
+ + Chat + + + Status + + + Settings + +
- - - +
+ + + +
))} From 3e1081fc6ec62d744ae3465cdac4776b5386d159 Mon Sep 17 00:00:00 2001 From: Richard Palethorpe Date: Tue, 25 Mar 2025 15:03:32 +0000 Subject: [PATCH 306/399] fix(ui): Fix MCP form --- webui/react-ui/src/components/AgentForm.jsx | 9 ++++++--- .../components/agent-form-sections/MCPServersSection.jsx | 4 ++-- 2 files changed, 8 insertions(+), 5 deletions(-) diff --git a/webui/react-ui/src/components/AgentForm.jsx b/webui/react-ui/src/components/AgentForm.jsx index 6cd7b84..5d87146 100644 --- a/webui/react-ui/src/components/AgentForm.jsx +++ b/webui/react-ui/src/components/AgentForm.jsx @@ -135,7 +135,7 @@ const AgentForm = ({ ...formData, mcp_servers: [ ...(formData.mcp_servers || []), - { url: '' } + { url: '', token: '' } ] }); }; @@ -151,9 +151,12 @@ const AgentForm = ({ }; // Handle MCP server change - const handleMCPServerChange = (index, value) => { + const handleMCPServerChange = (index, field, value) => { const updatedMCPServers = [...formData.mcp_servers]; - updatedMCPServers[index] = { url: value }; + updatedMCPServers[index] = { + ...updatedMCPServers[index], + [field]: value + }; setFormData({ ...formData, mcp_servers: updatedMCPServers diff --git a/webui/react-ui/src/components/agent-form-sections/MCPServersSection.jsx b/webui/react-ui/src/components/agent-form-sections/MCPServersSection.jsx index 72c6929..e76582f 100644 --- a/webui/react-ui/src/components/agent-form-sections/MCPServersSection.jsx +++ b/webui/react-ui/src/components/agent-form-sections/MCPServersSection.jsx @@ -47,8 +47,8 @@ const MCPServersSection = ({ handleMCPServerChange(index, 'api_key', e.target.value)} + value={server.token || ''} + onChange={(e) => handleMCPServerChange(index, 'token', e.target.value)} className="form-control" />
From 074aefd0df5b9b9dc5d4ac3ced1c74c6617dce82 Mon Sep 17 00:00:00 2001 From: Richard Palethorpe Date: Tue, 25 Mar 2025 15:14:02 +0000 Subject: [PATCH 307/399] feat(ui): Add status page to react frontend --- webui/react-ui/src/App.css | 171 ++++++++++++++++++++--- webui/react-ui/src/pages/AgentStatus.jsx | 136 ++++++++++++++++++ webui/react-ui/src/router.jsx | 5 + webui/routes.go | 13 ++ 4 files changed, 305 insertions(+), 20 deletions(-) create mode 100644 webui/react-ui/src/pages/AgentStatus.jsx diff --git a/webui/react-ui/src/App.css b/webui/react-ui/src/App.css index bb1670e..008dfb2 100644 --- a/webui/react-ui/src/App.css +++ b/webui/react-ui/src/App.css @@ -288,27 +288,17 @@ a:hover { /* Status badge */ .status-badge { - display: inline-block; - padding: 0.25rem 0.75rem; + position: absolute; + top: 15px; + right: 15px; + padding: 5px 12px; border-radius: 20px; - font-size: 0.75rem; - font-weight: 600; + font-size: 0.8rem; + font-weight: 500; text-transform: uppercase; letter-spacing: 1px; - margin-left: 10px; -} - -.status-badge.active { - background-color: var(--primary); - color: #000; - box-shadow: 0 0 10px rgba(0, 255, 149, 0.5); - animation: pulse 1.5s infinite; -} - -.status-badge.inactive { - background-color: var(--light-bg); - color: #fff; - border: 1px solid rgba(255, 255, 255, 0.1); + box-shadow: 0 0 10px rgba(0, 0, 0, 0.2); + z-index: 1; } .status-active, .active { @@ -1650,9 +1640,10 @@ select.form-control { /* Agent header styling */ .agent-header { display: flex; - justify-content: center; + justify-content: space-between; align-items: center; - margin-bottom: 1rem; + margin-bottom: 15px; + position: relative; } .agent-header h2 { @@ -1835,3 +1826,143 @@ select.form-control { .text-center { text-align: center; } + +/* Agent Status Page */ +.agent-status-container { + width: 100%; + max-width: 1000px; + margin: 0 auto; +} + +.agent-status-container .page-header { + display: flex; + justify-content: space-between; + align-items: center; + margin-bottom: 1.5rem; +} + +.agent-status-container .header-content { + display: flex; + align-items: center; +} + +.agent-status-container .back-link { + margin-right: 1rem; + color: var(--primary); + font-size: 1.2rem; +} + +.agent-status-container .back-link:hover { + color: var(--secondary); +} + +.chat-container { + background-color: var(--darker-bg); + border-radius: 8px; + border: 1px solid var(--border); + box-shadow: 0 4px 12px rgba(0, 0, 0, 0.5); + overflow: hidden; + height: 70vh; + display: flex; + flex-direction: column; +} + +.chat-messages { + overflow-y: auto; + flex-grow: 1; + padding: 1.5rem; +} + +.status-item { + margin-bottom: 1rem; +} + +.status-details { + display: flex; + flex-direction: column; + gap: 0.5rem; +} + +.status-row { + display: flex; + flex-wrap: wrap; +} + +.status-label { + font-weight: 600; + color: var(--primary); + margin-right: 0.5rem; + min-width: 100px; +} + +.status-value { + color: var(--text); + word-break: break-word; +} + +.status-value.reasoning { + white-space: pre-wrap; +} + +.no-status-data { + display: flex; + justify-content: center; + align-items: center; + height: 200px; + color: rgba(255, 255, 255, 0.6); +} + +.loading-container { + display: flex; + flex-direction: column; + justify-content: center; + align-items: center; + height: 300px; +} + +.loader { + width: 12px; + height: 12px; + border-radius: 50%; + display: block; + margin: 15px auto; + position: relative; + color: var(--primary); + box-sizing: border-box; + animation: animloader 2s linear infinite; +} + +@keyframes animloader { + 0% { box-shadow: 14px 0 0 -2px, 38px 0 0 -2px, -14px 0 0 -2px, -38px 0 0 -2px; } + 25% { box-shadow: 14px 0 0 -2px, 38px 0 0 -2px, -14px 0 0 -2px, -38px 0 0 2px; } + 50% { box-shadow: 14px 0 0 -2px, 38px 0 0 -2px, -14px 0 0 2px, -38px 0 0 -2px; } + 75% { box-shadow: 14px 0 0 2px, 38px 0 0 -2px, -14px 0 0 -2px, -38px 0 0 -2px; } + 100% { box-shadow: 14px 0 0 -2px, 38px 0 0 2px, -14px 0 0 -2px, -38px 0 0 -2px; } +} + +.error-container { + text-align: center; + padding: 2rem; +} + +.error-container h2 { + color: var(--danger); + margin-bottom: 1rem; +} + +.back-btn { + display: inline-flex; + align-items: center; + justify-content: center; + margin-top: 1rem; + padding: 0.5rem 1rem; + background-color: var(--medium-bg); + color: var(--primary); + border-radius: 4px; + transition: all 0.3s ease; +} + +.back-btn:hover { + background-color: var(--light-bg); + color: var(--primary); +} diff --git a/webui/react-ui/src/pages/AgentStatus.jsx b/webui/react-ui/src/pages/AgentStatus.jsx new file mode 100644 index 0000000..74c91ca --- /dev/null +++ b/webui/react-ui/src/pages/AgentStatus.jsx @@ -0,0 +1,136 @@ +import { useState, useEffect } from 'react'; +import { useParams, Link } from 'react-router-dom'; + +function AgentStatus() { + const { name } = useParams(); + const [statusData, setStatusData] = useState(null); + const [loading, setLoading] = useState(true); + const [error, setError] = useState(null); + const [eventSource, setEventSource] = useState(null); + const [liveUpdates, setLiveUpdates] = useState([]); + + // Fetch initial status data + useEffect(() => { + const fetchStatusData = async () => { + try { + const response = await fetch(`/api/agent/${name}/status`); + if (!response.ok) { + throw new Error(`Server responded with status: ${response.status}`); + } + const data = await response.json(); + setStatusData(data); + } catch (err) { + console.error('Error fetching agent status:', err); + setError(`Failed to load status for agent "${name}": ${err.message}`); + } finally { + setLoading(false); + } + }; + + fetchStatusData(); + + // Setup SSE connection for live updates + const sse = new EventSource(`/sse/${name}`); + setEventSource(sse); + + sse.addEventListener('status', (event) => { + try { + const data = JSON.parse(event.data); + setLiveUpdates(prev => [data, ...prev.slice(0, 19)]); // Keep last 20 updates + } catch (err) { + console.error('Error parsing SSE data:', err); + } + }); + + sse.onerror = (err) => { + console.error('SSE connection error:', err); + }; + + // Cleanup on unmount + return () => { + if (sse) { + sse.close(); + } + }; + }, [name]); + + if (loading) { + return ( +
+
+

Loading agent status...

+
+ ); + } + + if (error) { + return ( +
+

Error

+

{error}

+ + Back to Agents + +
+ ); + } + + // Combine live updates with history + const allUpdates = [...liveUpdates, ...(statusData?.History || [])]; + + return ( +
+
+
+

+ + + + Agent Status: {name} +

+
+
+ +
+ {/* Chat Messages */} +
+ {allUpdates.length > 0 ? ( + allUpdates.map((item, index) => ( +
+
+

Agent Action:

+
+
+ Result: + {item.Result || 'N/A'} +
+
+ Action: + {item.Action || 'N/A'} +
+
+ Parameters: + {item.Params || 'N/A'} +
+ {item.Reasoning && ( +
+ Reasoning: + {item.Reasoning} +
+ )} +
+
+
+ )) + ) : ( +
+

No status data available for this agent.

+
+ )} +
+
+
+ ); +} + +export default AgentStatus; diff --git a/webui/react-ui/src/router.jsx b/webui/react-ui/src/router.jsx index b30f270..c0f5a74 100644 --- a/webui/react-ui/src/router.jsx +++ b/webui/react-ui/src/router.jsx @@ -7,6 +7,7 @@ import CreateAgent from './pages/CreateAgent'; import Chat from './pages/Chat'; import ActionsPlayground from './pages/ActionsPlayground'; import GroupCreate from './pages/GroupCreate'; +import AgentStatus from './pages/AgentStatus'; // Get the base URL from Vite's environment variables or default to '/app/' const BASE_URL = import.meta.env.BASE_URL || '/app'; @@ -44,6 +45,10 @@ export const router = createBrowserRouter([ { path: 'group-create', element: + }, + { + path: 'status/:name', + element: } ] } diff --git a/webui/routes.go b/webui/routes.go index a9283f3..db7e445 100644 --- a/webui/routes.go +++ b/webui/routes.go @@ -200,6 +200,19 @@ func (app *App) registerRoutes(pool *state.AgentPool, webapp *fiber.App) { }) }) + // API endpoint for agent status history + webapp.Get("/api/agent/:name/status", func(c *fiber.Ctx) error { + history := pool.GetStatusHistory(c.Params("name")) + if history == nil { + history = &state.Status{ActionResults: []types.ActionState{}} + } + + return c.JSON(fiber.Map{ + "Name": c.Params("name"), + "History": Reverse(history.Results()), + }) + }) + webapp.Post("/settings/import", app.ImportAgent(pool)) webapp.Get("/settings/export/:name", app.ExportAgent(pool)) From 3e36b09376b8acedad354929987241460dda2f6f Mon Sep 17 00:00:00 2001 From: Richard Palethorpe Date: Wed, 26 Mar 2025 06:31:45 +0000 Subject: [PATCH 308/399] fix(ui): Format status result as string --- webui/react-ui/src/pages/AgentStatus.jsx | 25 ++++++++++++++++++++---- 1 file changed, 21 insertions(+), 4 deletions(-) diff --git a/webui/react-ui/src/pages/AgentStatus.jsx b/webui/react-ui/src/pages/AgentStatus.jsx index 74c91ca..8cf635b 100644 --- a/webui/react-ui/src/pages/AgentStatus.jsx +++ b/webui/react-ui/src/pages/AgentStatus.jsx @@ -54,6 +54,23 @@ function AgentStatus() { }; }, [name]); + // Helper function to safely convert any value to a displayable string + const formatValue = (value) => { + if (value === null || value === undefined) { + return 'N/A'; + } + + if (typeof value === 'object') { + try { + return JSON.stringify(value, null, 2); + } catch (err) { + return '[Complex Object]'; + } + } + + return String(value); + }; + if (loading) { return (
@@ -102,20 +119,20 @@ function AgentStatus() {
Result: - {item.Result || 'N/A'} + {formatValue(item.Result)}
Action: - {item.Action || 'N/A'} + {formatValue(item.Action)}
Parameters: - {item.Params || 'N/A'} + {formatValue(item.Params)}
{item.Reasoning && (
Reasoning: - {item.Reasoning} + {formatValue(item.Reasoning)}
)}
From 8e9b87bcb1fd5a2b1976d2a7e314688b992361a6 Mon Sep 17 00:00:00 2001 From: mudler Date: Wed, 26 Mar 2025 16:57:46 +0100 Subject: [PATCH 309/399] chore(Makefile): build react dist if missing Signed-off-by: mudler --- Makefile | 8 +++- services/connectors/slack.go | 66 ++++++++++++++++++++++++++++++--- services/connectors/telegram.go | 19 ++++++++-- webui/app.go | 2 +- 4 files changed, 83 insertions(+), 12 deletions(-) diff --git a/Makefile b/Makefile index e69f7f3..191e5f7 100644 --- a/Makefile +++ b/Makefile @@ -1,5 +1,6 @@ GOCMD?=go IMAGE_NAME?=webui +ROOT_DIR:=$(shell dirname $(realpath $(lastword $(MAKEFILE_LIST)))) prepare-tests: docker compose up -d @@ -13,12 +14,15 @@ tests: prepare-tests run-nokb: $(MAKE) run KBDISABLEINDEX=true +webui/react-ui/dist: + docker run --entrypoint /bin/bash -v $(ROOT_DIR):/app oven/bun:1 -c "cd /app/webui/react-ui && bun install && bun run build" + .PHONY: build -build: +build: webui/react-ui/dist $(GOCMD) build -o localagent ./ .PHONY: run -run: +run: webui/react-ui/dist $(GOCMD) run ./ build-image: diff --git a/services/connectors/slack.go b/services/connectors/slack.go index 7bf19fc..5521369 100644 --- a/services/connectors/slack.go +++ b/services/connectors/slack.go @@ -4,7 +4,6 @@ import ( "bytes" "encoding/base64" "fmt" - "io/ioutil" "log" "os" "strings" @@ -38,6 +37,11 @@ type Slack struct { placeholderMutex sync.RWMutex apiClient *slack.Client + // Track active jobs for cancellation + activeJobs map[string]bool // map[channelID]bool to track if a channel has active processing + activeJobsMutex sync.RWMutex + agent *agent.Agent // Reference to the agent to call StopAction + conversationTracker *ConversationTracker[string] } @@ -57,13 +61,20 @@ func NewSlack(config map[string]string) *Slack { alwaysReply: config["alwaysReply"] == "true", conversationTracker: NewConversationTracker[string](duration), placeholders: make(map[string]string), + activeJobs: make(map[string]bool), } } func (t *Slack) AgentResultCallback() func(state types.ActionState) { return func(state types.ActionState) { - // The final result callback is intentionally empty as we're handling - // the final update in the handleMention function directly + // Mark the job as completed when we get the final result + if state.ActionCurrentState.Job != nil && state.ActionCurrentState.Job.Metadata != nil { + if channel, ok := state.ActionCurrentState.Job.Metadata["channel"].(string); ok && channel != "" { + t.activeJobsMutex.Lock() + delete(t.activeJobs, channel) + t.activeJobsMutex.Unlock() + } + } } } @@ -102,6 +113,23 @@ func (t *Slack) AgentReasoningCallback() func(state types.ActionCurrentState) bo } } +// cancelActiveJobForChannel cancels any active job for the given channel +func (t *Slack) cancelActiveJobForChannel(channelID string) { + t.activeJobsMutex.RLock() + isActive := t.activeJobs[channelID] + t.activeJobsMutex.RUnlock() + + if isActive && t.agent != nil { + xlog.Info(fmt.Sprintf("Cancelling active job for channel: %s", channelID)) + t.agent.StopAction() + + // Mark the job as inactive + t.activeJobsMutex.Lock() + delete(t.activeJobs, channelID) + t.activeJobsMutex.Unlock() + } +} + func cleanUpUsernameFromMessage(message string, b *slack.AuthTestResponse) string { cleaned := strings.ReplaceAll(message, "<@"+b.UserID+">", "") cleaned = strings.ReplaceAll(cleaned, "<@"+b.BotID+">", "") @@ -214,11 +242,26 @@ func (t *Slack) handleChannelMessage( return } + // Cancel any active job for this channel before starting a new one + t.cancelActiveJobForChannel(ev.Channel) + currentConv := t.conversationTracker.GetConversation(t.channelID) message := replaceUserIDsWithNamesInMessage(api, cleanUpUsernameFromMessage(ev.Text, b)) go func() { + // Mark this channel as having an active job + t.activeJobsMutex.Lock() + t.activeJobs[ev.Channel] = true + t.activeJobsMutex.Unlock() + + defer func() { + // Mark job as complete + t.activeJobsMutex.Lock() + delete(t.activeJobs, ev.Channel) + t.activeJobsMutex.Unlock() + }() + imageBytes, mimeType := scanImagesInMessages(api, ev) agentOptions := []types.JobOption{ @@ -259,6 +302,12 @@ func (t *Slack) handleChannelMessage( agentOptions = append(agentOptions, types.WithConversationHistory(currentConv)) + // Add channel to metadata for tracking + metadata := map[string]interface{}{ + "channel": ev.Channel, + } + agentOptions = append(agentOptions, types.WithMetadata(metadata)) + res := a.Ask( agentOptions..., ) @@ -292,9 +341,6 @@ func (t *Slack) handleChannelMessage( // Function to download the image from a URL and encode it to base64 func encodeImageFromURL(imageBytes bytes.Buffer) (string, error) { - // WRITE THIS SOMEWHERE - ioutil.WriteFile("image.jpg", imageBytes.Bytes(), 0644) - // Encode the image data to base64 base64Image := base64.StdEncoding.EncodeToString(imageBytes.Bytes()) return base64Image, nil @@ -639,10 +685,18 @@ func (t *Slack) handleMention( } func (t *Slack) Start(a *agent.Agent) { +<<<<<<< Updated upstream +<<<<<<< Updated upstream postMessageParams := slack.PostMessageParameters{ LinkNames: 1, Markdown: true, } +======= +>>>>>>> Stashed changes +======= +>>>>>>> Stashed changes + // Store the agent reference for use in cancellation + t.agent = a api := slack.New( t.botToken, diff --git a/services/connectors/telegram.go b/services/connectors/telegram.go index 66e0e20..bfa620b 100644 --- a/services/connectors/telegram.go +++ b/services/connectors/telegram.go @@ -3,6 +3,7 @@ package connectors import ( "context" "errors" + "net/http" "os" "os/signal" "slices" @@ -99,12 +100,24 @@ func (t *Telegram) handleUpdate(ctx context.Context, b *bot.Bot, a *agent.Agent, // coming from the gen image actions if imagesUrls, exists := res.Metadata[actions.MetadataImages]; exists { for _, url := range xstrings.UniqueSlice(imagesUrls.([]string)) { - b.SendPhoto(ctx, &bot.SendPhotoParams{ + xlog.Debug("Sending photo", "url", url) + + resp, err := http.Get(url) + if err != nil { + xlog.Error("Error downloading image", "error", err.Error()) + continue + } + defer resp.Body.Close() + _, err = b.SendPhoto(ctx, &bot.SendPhotoParams{ ChatID: update.Message.Chat.ID, - Photo: models.InputFileString{ - Data: url, + Photo: models.InputFileUpload{ + Filename: "image.jpg", + Data: resp.Body, }, }) + if err != nil { + xlog.Error("Error sending photo", "error", err.Error()) + } } } diff --git a/webui/app.go b/webui/app.go index 364f71f..9f8fd3f 100644 --- a/webui/app.go +++ b/webui/app.go @@ -138,7 +138,7 @@ func (a *App) Create(pool *state.AgentPool) func(c *fiber.Ctx) error { if err := pool.CreateAgent(config.Name, &config); err != nil { return errorJSONMessage(c, err.Error()) } - + return statusJSONMessage(c, "ok") } } From d5df14a714eea6fcc76486a8189f708eac58abd4 Mon Sep 17 00:00:00 2001 From: mudler Date: Wed, 26 Mar 2025 16:58:11 +0100 Subject: [PATCH 310/399] fix(planning): don't loose results Signed-off-by: mudler --- core/agent/actions.go | 14 +++++++------- core/agent/agent.go | 4 +++- 2 files changed, 10 insertions(+), 8 deletions(-) diff --git a/core/agent/actions.go b/core/agent/actions.go index 9b7279c..fe02fbe 100644 --- a/core/agent/actions.go +++ b/core/agent/actions.go @@ -174,17 +174,17 @@ func (a *Agent) generateParameters(ctx context.Context, pickTemplate string, act ) } -func (a *Agent) handlePlanning(ctx context.Context, job *types.Job, chosenAction types.Action, actionParams types.ActionParams, reasoning string, pickTemplate string, conv Messages) error { +func (a *Agent) handlePlanning(ctx context.Context, job *types.Job, chosenAction types.Action, actionParams types.ActionParams, reasoning string, pickTemplate string, conv Messages) (Messages, error) { // Planning: run all the actions in sequence if !chosenAction.Definition().Name.Is(action.PlanActionName) { xlog.Debug("no plan action") - return nil + return conv, nil } xlog.Debug("[planning]...") planResult := action.PlanResult{} if err := actionParams.Unmarshal(&planResult); err != nil { - return fmt.Errorf("error unmarshalling plan result: %w", err) + return conv, fmt.Errorf("error unmarshalling plan result: %w", err) } stateResult := types.ActionState{ @@ -207,7 +207,7 @@ func (a *Agent) handlePlanning(ctx context.Context, job *types.Job, chosenAction } if len(planResult.Subtasks) == 0 { - return fmt.Errorf("no subtasks") + return conv, fmt.Errorf("no subtasks") } // Execute all subtasks in sequence @@ -223,7 +223,7 @@ func (a *Agent) handlePlanning(ctx context.Context, job *types.Job, chosenAction params, err := a.generateParameters(ctx, pickTemplate, subTaskAction, conv, subTaskReasoning) if err != nil { - return fmt.Errorf("error generating action's parameters: %w", err) + return conv, fmt.Errorf("error generating action's parameters: %w", err) } actionParams = params.actionParams @@ -252,7 +252,7 @@ func (a *Agent) handlePlanning(ctx context.Context, job *types.Job, chosenAction result, err := a.runAction(subTaskAction, actionParams) if err != nil { - return fmt.Errorf("error running action: %w", err) + return conv, fmt.Errorf("error running action: %w", err) } stateResult := types.ActionState{ @@ -270,7 +270,7 @@ func (a *Agent) handlePlanning(ctx context.Context, job *types.Job, chosenAction conv = a.addFunctionResultToConversation(subTaskAction, actionParams, result, conv) } - return nil + return conv, nil } func (a *Agent) availableActions() types.Actions { diff --git a/core/agent/agent.go b/core/agent/agent.go index 5780bf9..57d9adb 100644 --- a/core/agent/agent.go +++ b/core/agent/agent.go @@ -528,7 +528,9 @@ func (a *Agent) consumeJob(job *types.Job, role string) { return } - if err := a.handlePlanning(ctx, job, chosenAction, actionParams, reasoning, pickTemplate, conv); err != nil { + var err error + conv, err = a.handlePlanning(ctx, job, chosenAction, actionParams, reasoning, pickTemplate, conv) + if err != nil { job.Result.Finish(fmt.Errorf("error running action: %w", err)) return } From 9d6b81d9c24be9f42b1e1c123945889b58aabf74 Mon Sep 17 00:00:00 2001 From: mudler Date: Wed, 26 Mar 2025 16:58:25 +0100 Subject: [PATCH 311/399] fix(slack): track user messages when writing on channel Signed-off-by: mudler --- services/connectors/slack.go | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/services/connectors/slack.go b/services/connectors/slack.go index 5521369..61631e0 100644 --- a/services/connectors/slack.go +++ b/services/connectors/slack.go @@ -300,6 +300,10 @@ func (t *Slack) handleChannelMessage( }) } + t.conversationTracker.AddMessage( + t.channelID, currentConv[len(currentConv)-1], + ) + agentOptions = append(agentOptions, types.WithConversationHistory(currentConv)) // Add channel to metadata for tracking @@ -685,16 +689,12 @@ func (t *Slack) handleMention( } func (t *Slack) Start(a *agent.Agent) { -<<<<<<< Updated upstream -<<<<<<< Updated upstream + postMessageParams := slack.PostMessageParameters{ LinkNames: 1, Markdown: true, } -======= ->>>>>>> Stashed changes -======= ->>>>>>> Stashed changes + // Store the agent reference for use in cancellation t.agent = a From 5cd0eaae3fdd27247ff18df6281310759a1e05a5 Mon Sep 17 00:00:00 2001 From: Ettore Di Giacinto Date: Wed, 26 Mar 2025 17:05:59 +0100 Subject: [PATCH 312/399] fix: mixed fixups and enhancements (#107) * chore(Makefile): build react dist if missing Signed-off-by: mudler * fix(planning): don't loose results Signed-off-by: mudler * fix(slack): track user messages when writing on channel Signed-off-by: mudler --------- Signed-off-by: mudler --- Makefile | 8 +++- core/agent/actions.go | 14 +++---- core/agent/agent.go | 4 +- services/connectors/slack.go | 66 ++++++++++++++++++++++++++++++--- services/connectors/telegram.go | 19 ++++++++-- webui/app.go | 2 +- 6 files changed, 93 insertions(+), 20 deletions(-) diff --git a/Makefile b/Makefile index e69f7f3..191e5f7 100644 --- a/Makefile +++ b/Makefile @@ -1,5 +1,6 @@ GOCMD?=go IMAGE_NAME?=webui +ROOT_DIR:=$(shell dirname $(realpath $(lastword $(MAKEFILE_LIST)))) prepare-tests: docker compose up -d @@ -13,12 +14,15 @@ tests: prepare-tests run-nokb: $(MAKE) run KBDISABLEINDEX=true +webui/react-ui/dist: + docker run --entrypoint /bin/bash -v $(ROOT_DIR):/app oven/bun:1 -c "cd /app/webui/react-ui && bun install && bun run build" + .PHONY: build -build: +build: webui/react-ui/dist $(GOCMD) build -o localagent ./ .PHONY: run -run: +run: webui/react-ui/dist $(GOCMD) run ./ build-image: diff --git a/core/agent/actions.go b/core/agent/actions.go index 9b7279c..fe02fbe 100644 --- a/core/agent/actions.go +++ b/core/agent/actions.go @@ -174,17 +174,17 @@ func (a *Agent) generateParameters(ctx context.Context, pickTemplate string, act ) } -func (a *Agent) handlePlanning(ctx context.Context, job *types.Job, chosenAction types.Action, actionParams types.ActionParams, reasoning string, pickTemplate string, conv Messages) error { +func (a *Agent) handlePlanning(ctx context.Context, job *types.Job, chosenAction types.Action, actionParams types.ActionParams, reasoning string, pickTemplate string, conv Messages) (Messages, error) { // Planning: run all the actions in sequence if !chosenAction.Definition().Name.Is(action.PlanActionName) { xlog.Debug("no plan action") - return nil + return conv, nil } xlog.Debug("[planning]...") planResult := action.PlanResult{} if err := actionParams.Unmarshal(&planResult); err != nil { - return fmt.Errorf("error unmarshalling plan result: %w", err) + return conv, fmt.Errorf("error unmarshalling plan result: %w", err) } stateResult := types.ActionState{ @@ -207,7 +207,7 @@ func (a *Agent) handlePlanning(ctx context.Context, job *types.Job, chosenAction } if len(planResult.Subtasks) == 0 { - return fmt.Errorf("no subtasks") + return conv, fmt.Errorf("no subtasks") } // Execute all subtasks in sequence @@ -223,7 +223,7 @@ func (a *Agent) handlePlanning(ctx context.Context, job *types.Job, chosenAction params, err := a.generateParameters(ctx, pickTemplate, subTaskAction, conv, subTaskReasoning) if err != nil { - return fmt.Errorf("error generating action's parameters: %w", err) + return conv, fmt.Errorf("error generating action's parameters: %w", err) } actionParams = params.actionParams @@ -252,7 +252,7 @@ func (a *Agent) handlePlanning(ctx context.Context, job *types.Job, chosenAction result, err := a.runAction(subTaskAction, actionParams) if err != nil { - return fmt.Errorf("error running action: %w", err) + return conv, fmt.Errorf("error running action: %w", err) } stateResult := types.ActionState{ @@ -270,7 +270,7 @@ func (a *Agent) handlePlanning(ctx context.Context, job *types.Job, chosenAction conv = a.addFunctionResultToConversation(subTaskAction, actionParams, result, conv) } - return nil + return conv, nil } func (a *Agent) availableActions() types.Actions { diff --git a/core/agent/agent.go b/core/agent/agent.go index 5780bf9..57d9adb 100644 --- a/core/agent/agent.go +++ b/core/agent/agent.go @@ -528,7 +528,9 @@ func (a *Agent) consumeJob(job *types.Job, role string) { return } - if err := a.handlePlanning(ctx, job, chosenAction, actionParams, reasoning, pickTemplate, conv); err != nil { + var err error + conv, err = a.handlePlanning(ctx, job, chosenAction, actionParams, reasoning, pickTemplate, conv) + if err != nil { job.Result.Finish(fmt.Errorf("error running action: %w", err)) return } diff --git a/services/connectors/slack.go b/services/connectors/slack.go index 7bf19fc..61631e0 100644 --- a/services/connectors/slack.go +++ b/services/connectors/slack.go @@ -4,7 +4,6 @@ import ( "bytes" "encoding/base64" "fmt" - "io/ioutil" "log" "os" "strings" @@ -38,6 +37,11 @@ type Slack struct { placeholderMutex sync.RWMutex apiClient *slack.Client + // Track active jobs for cancellation + activeJobs map[string]bool // map[channelID]bool to track if a channel has active processing + activeJobsMutex sync.RWMutex + agent *agent.Agent // Reference to the agent to call StopAction + conversationTracker *ConversationTracker[string] } @@ -57,13 +61,20 @@ func NewSlack(config map[string]string) *Slack { alwaysReply: config["alwaysReply"] == "true", conversationTracker: NewConversationTracker[string](duration), placeholders: make(map[string]string), + activeJobs: make(map[string]bool), } } func (t *Slack) AgentResultCallback() func(state types.ActionState) { return func(state types.ActionState) { - // The final result callback is intentionally empty as we're handling - // the final update in the handleMention function directly + // Mark the job as completed when we get the final result + if state.ActionCurrentState.Job != nil && state.ActionCurrentState.Job.Metadata != nil { + if channel, ok := state.ActionCurrentState.Job.Metadata["channel"].(string); ok && channel != "" { + t.activeJobsMutex.Lock() + delete(t.activeJobs, channel) + t.activeJobsMutex.Unlock() + } + } } } @@ -102,6 +113,23 @@ func (t *Slack) AgentReasoningCallback() func(state types.ActionCurrentState) bo } } +// cancelActiveJobForChannel cancels any active job for the given channel +func (t *Slack) cancelActiveJobForChannel(channelID string) { + t.activeJobsMutex.RLock() + isActive := t.activeJobs[channelID] + t.activeJobsMutex.RUnlock() + + if isActive && t.agent != nil { + xlog.Info(fmt.Sprintf("Cancelling active job for channel: %s", channelID)) + t.agent.StopAction() + + // Mark the job as inactive + t.activeJobsMutex.Lock() + delete(t.activeJobs, channelID) + t.activeJobsMutex.Unlock() + } +} + func cleanUpUsernameFromMessage(message string, b *slack.AuthTestResponse) string { cleaned := strings.ReplaceAll(message, "<@"+b.UserID+">", "") cleaned = strings.ReplaceAll(cleaned, "<@"+b.BotID+">", "") @@ -214,11 +242,26 @@ func (t *Slack) handleChannelMessage( return } + // Cancel any active job for this channel before starting a new one + t.cancelActiveJobForChannel(ev.Channel) + currentConv := t.conversationTracker.GetConversation(t.channelID) message := replaceUserIDsWithNamesInMessage(api, cleanUpUsernameFromMessage(ev.Text, b)) go func() { + // Mark this channel as having an active job + t.activeJobsMutex.Lock() + t.activeJobs[ev.Channel] = true + t.activeJobsMutex.Unlock() + + defer func() { + // Mark job as complete + t.activeJobsMutex.Lock() + delete(t.activeJobs, ev.Channel) + t.activeJobsMutex.Unlock() + }() + imageBytes, mimeType := scanImagesInMessages(api, ev) agentOptions := []types.JobOption{ @@ -257,8 +300,18 @@ func (t *Slack) handleChannelMessage( }) } + t.conversationTracker.AddMessage( + t.channelID, currentConv[len(currentConv)-1], + ) + agentOptions = append(agentOptions, types.WithConversationHistory(currentConv)) + // Add channel to metadata for tracking + metadata := map[string]interface{}{ + "channel": ev.Channel, + } + agentOptions = append(agentOptions, types.WithMetadata(metadata)) + res := a.Ask( agentOptions..., ) @@ -292,9 +345,6 @@ func (t *Slack) handleChannelMessage( // Function to download the image from a URL and encode it to base64 func encodeImageFromURL(imageBytes bytes.Buffer) (string, error) { - // WRITE THIS SOMEWHERE - ioutil.WriteFile("image.jpg", imageBytes.Bytes(), 0644) - // Encode the image data to base64 base64Image := base64.StdEncoding.EncodeToString(imageBytes.Bytes()) return base64Image, nil @@ -639,11 +689,15 @@ func (t *Slack) handleMention( } func (t *Slack) Start(a *agent.Agent) { + postMessageParams := slack.PostMessageParameters{ LinkNames: 1, Markdown: true, } + // Store the agent reference for use in cancellation + t.agent = a + api := slack.New( t.botToken, // slack.OptionDebug(true), diff --git a/services/connectors/telegram.go b/services/connectors/telegram.go index 66e0e20..bfa620b 100644 --- a/services/connectors/telegram.go +++ b/services/connectors/telegram.go @@ -3,6 +3,7 @@ package connectors import ( "context" "errors" + "net/http" "os" "os/signal" "slices" @@ -99,12 +100,24 @@ func (t *Telegram) handleUpdate(ctx context.Context, b *bot.Bot, a *agent.Agent, // coming from the gen image actions if imagesUrls, exists := res.Metadata[actions.MetadataImages]; exists { for _, url := range xstrings.UniqueSlice(imagesUrls.([]string)) { - b.SendPhoto(ctx, &bot.SendPhotoParams{ + xlog.Debug("Sending photo", "url", url) + + resp, err := http.Get(url) + if err != nil { + xlog.Error("Error downloading image", "error", err.Error()) + continue + } + defer resp.Body.Close() + _, err = b.SendPhoto(ctx, &bot.SendPhotoParams{ ChatID: update.Message.Chat.ID, - Photo: models.InputFileString{ - Data: url, + Photo: models.InputFileUpload{ + Filename: "image.jpg", + Data: resp.Body, }, }) + if err != nil { + xlog.Error("Error sending photo", "error", err.Error()) + } } } diff --git a/webui/app.go b/webui/app.go index 364f71f..9f8fd3f 100644 --- a/webui/app.go +++ b/webui/app.go @@ -138,7 +138,7 @@ func (a *App) Create(pool *state.AgentPool) func(c *fiber.Ctx) error { if err := pool.CreateAgent(config.Name, &config); err != nil { return errorJSONMessage(c, err.Error()) } - + return statusJSONMessage(c, "ok") } } From dd6739cbbf2ff0a19880c1a74a6a5574509a396c Mon Sep 17 00:00:00 2001 From: mudler Date: Wed, 26 Mar 2025 17:11:09 +0100 Subject: [PATCH 313/399] fix: consistently track user message in connector Signed-off-by: mudler --- services/connectors/discord.go | 16 ++++++++++------ services/connectors/irc.go | 6 ++++++ services/connectors/telegram.go | 8 ++++++++ 3 files changed, 24 insertions(+), 6 deletions(-) diff --git a/services/connectors/discord.go b/services/connectors/discord.go index 4ed17e5..15b5e08 100644 --- a/services/connectors/discord.go +++ b/services/connectors/discord.go @@ -122,6 +122,11 @@ func (d *Discord) handleChannelMessage(a *agent.Agent, s *discordgo.Session, m * conv := d.conversationTracker.GetConversation(m.ChannelID) + d.conversationTracker.AddMessage(m.ChannelID, openai.ChatCompletionMessage{ + Role: "user", + Content: m.Content, + }) + jobResult := a.Ask( types.WithConversationHistory(conv), ) @@ -131,16 +136,15 @@ func (d *Discord) handleChannelMessage(a *agent.Agent, s *discordgo.Session, m * return } + d.conversationTracker.AddMessage(m.ChannelID, openai.ChatCompletionMessage{ + Role: "assistant", + Content: jobResult.Response, + }) + _, err := s.ChannelMessageSend(m.ChannelID, jobResult.Response) if err != nil { xlog.Info("error sending message,", err) } - - d.conversationTracker.AddMessage(m.ChannelID, openai.ChatCompletionMessage{ - Role: "user", - Content: m.Content, - }) - } // This function will be called (due to AddHandler above) every time a new diff --git a/services/connectors/irc.go b/services/connectors/irc.go index 026aea0..58bc54e 100644 --- a/services/connectors/irc.go +++ b/services/connectors/irc.go @@ -122,6 +122,12 @@ func (i *IRC) Start(a *agent.Agent) { }, ) + // Update the conversation history + i.conversationTracker.AddMessage(channel, openai.ChatCompletionMessage{ + Content: cleanedMessage, + Role: "user", + }) + res := a.Ask( types.WithConversationHistory(conv), ) diff --git a/services/connectors/telegram.go b/services/connectors/telegram.go index bfa620b..65e378b 100644 --- a/services/connectors/telegram.go +++ b/services/connectors/telegram.go @@ -67,6 +67,14 @@ func (t *Telegram) handleUpdate(ctx context.Context, b *bot.Bot, a *agent.Agent, Role: "user", }) + t.conversationTracker.AddMessage( + update.Message.From.ID, + openai.ChatCompletionMessage{ + Content: update.Message.Text, + Role: "user", + }, + ) + xlog.Info("New message", "username", username, "conversation", currentConv) res := a.Ask( types.WithConversationHistory(currentConv), From 2713349c75d3a2bea036c34968af4fcf5e157bb0 Mon Sep 17 00:00:00 2001 From: mudler Date: Wed, 26 Mar 2025 18:26:31 +0100 Subject: [PATCH 314/399] debug --- services/connectors/slack.go | 2 ++ 1 file changed, 2 insertions(+) diff --git a/services/connectors/slack.go b/services/connectors/slack.go index 61631e0..a0077ff 100644 --- a/services/connectors/slack.go +++ b/services/connectors/slack.go @@ -706,8 +706,10 @@ func (t *Slack) Start(a *agent.Agent) { ) if t.channelID != "" { + xlog.Debug(fmt.Sprintf("Listening for messages in channel %s", t.channelID)) // handle new conversations a.AddSubscriber(func(ccm openai.ChatCompletionMessage) { + xlog.Debug("Subscriber(slack)", "message", ccm.Content) _, _, err := api.PostMessage(t.channelID, slack.MsgOptionLinkNames(true), slack.MsgOptionEnableLinkUnfurl(), From 6e888f600846c914fd25ab0f355c1d5d02fc4106 Mon Sep 17 00:00:00 2001 From: Ettore Di Giacinto Date: Wed, 26 Mar 2025 22:37:25 +0100 Subject: [PATCH 315/399] Move action context to the job Signed-off-by: Ettore Di Giacinto --- core/agent/actions.go | 2 +- core/agent/agent.go | 83 +++++++++++++++--------------------- core/types/job.go | 44 +++++++++++++++---- services/connectors/slack.go | 48 ++++++++++++--------- 4 files changed, 100 insertions(+), 77 deletions(-) diff --git a/core/agent/actions.go b/core/agent/actions.go index fe02fbe..a60039e 100644 --- a/core/agent/actions.go +++ b/core/agent/actions.go @@ -250,7 +250,7 @@ func (a *Agent) handlePlanning(ctx context.Context, job *types.Job, chosenAction break } - result, err := a.runAction(subTaskAction, actionParams) + result, err := a.runAction(ctx, subTaskAction, actionParams) if err != nil { return conv, fmt.Errorf("error running action: %w", err) } diff --git a/core/agent/agent.go b/core/agent/agent.go index 57d9adb..0e3558f 100644 --- a/core/agent/agent.go +++ b/core/agent/agent.go @@ -23,12 +23,11 @@ const ( type Agent struct { sync.Mutex - options *options - Character Character - client *openai.Client - jobQueue chan *types.Job - actionContext *types.ActionContext - context *types.ActionContext + options *options + Character Character + client *openai.Client + jobQueue chan *types.Job + context *types.ActionContext currentReasoning string currentState *action.AgentInternalState @@ -136,26 +135,11 @@ func (a *Agent) AddSubscriber(f func(openai.ChatCompletionMessage)) { a.newMessagesSubscribers = append(a.newMessagesSubscribers, f) } -// StopAction stops the current action -// if any. Can be called before adding a new job. -func (a *Agent) StopAction() { - a.Lock() - defer a.Unlock() - if a.actionContext != nil { - xlog.Debug("Stopping current action", "agent", a.Character.Name) - a.actionContext.Cancel() - } -} - func (a *Agent) Context() context.Context { return a.context.Context } -func (a *Agent) ActionContext() context.Context { - return a.actionContext.Context -} - -// Ask is a pre-emptive, blocking call that returns the response as soon as it's ready. +// Ask is a blocking call that returns the response as soon as it's ready. // It discards any other computation. func (a *Agent) Ask(opts ...types.JobOption) *types.JobResult { xlog.Debug("Agent Ask()", "agent", a.Character.Name, "model", a.options.LLMAPI.Model) @@ -163,18 +147,34 @@ func (a *Agent) Ask(opts ...types.JobOption) *types.JobResult { xlog.Debug("Agent has finished being asked", "agent", a.Character.Name) }() - //a.StopAction() - j := types.NewJob( + return a.Execute(types.NewJob( append( opts, types.WithReasoningCallback(a.options.reasoningCallback), types.WithResultCallback(a.options.resultCallback), )..., - ) - a.jobQueue <- j + )) +} + +// Ask is a pre-emptive, blocking call that returns the response as soon as it's ready. +// It discards any other computation. +func (a *Agent) Execute(j *types.Job) *types.JobResult { + xlog.Debug("Agent Execute()", "agent", a.Character.Name, "model", a.options.LLMAPI.Model) + defer func() { + xlog.Debug("Agent has finished", "agent", a.Character.Name) + }() + + a.Enqueue(j) return j.Result.WaitResult() } +func (a *Agent) Enqueue(j *types.Job) { + j.ReasoningCallback = a.options.reasoningCallback + j.ResultCallback = a.options.resultCallback + + a.jobQueue <- j +} + func (a *Agent) askLLM(ctx context.Context, conversation []openai.ChatCompletionMessage) (openai.ChatCompletionMessage, error) { resp, err := a.client.CreateChatCompletion(ctx, openai.ChatCompletionRequest{ @@ -225,10 +225,10 @@ func (a *Agent) Memory() RAGDB { return a.options.ragdb } -func (a *Agent) runAction(chosenAction types.Action, params types.ActionParams) (result types.ActionResult, err error) { +func (a *Agent) runAction(ctx context.Context, chosenAction types.Action, params types.ActionParams) (result types.ActionResult, err error) { for _, act := range a.availableActions() { if act.Definition().Name == chosenAction.Definition().Name { - res, err := act.Run(a.actionContext, params) + res, err := act.Run(ctx, params) if err != nil { return types.ActionResult{}, fmt.Errorf("error running action: %w", err) } @@ -407,20 +407,9 @@ func (a *Agent) consumeJob(job *types.Job, role string) { conv := job.ConversationHistory a.Lock() - // Set the action context - ctx, cancel := context.WithCancel(context.Background()) - a.actionContext = types.NewActionContext(ctx, cancel) a.selfEvaluationInProgress = selfEvaluation a.Unlock() - - defer func() { - a.Lock() - if a.actionContext != nil { - a.actionContext.Cancel() - a.actionContext = nil - } - a.Unlock() - }() + defer job.Cancel() if selfEvaluation { defer func() { @@ -463,7 +452,7 @@ func (a *Agent) consumeJob(job *types.Job, role string) { a.nextAction = nil } else { var err error - chosenAction, actionParams, reasoning, err = a.pickAction(ctx, pickTemplate, conv) + chosenAction, actionParams, reasoning, err = a.pickAction(job.GetContext(), pickTemplate, conv) if err != nil { xlog.Error("Error picking action", "error", err) job.Result.Finish(err) @@ -506,7 +495,7 @@ func (a *Agent) consumeJob(job *types.Job, role string) { "reasoning", reasoning, ) - params, err := a.generateParameters(ctx, pickTemplate, chosenAction, conv, reasoning) + params, err := a.generateParameters(job.GetContext(), pickTemplate, chosenAction, conv, reasoning) if err != nil { job.Result.Finish(fmt.Errorf("error generating action's parameters: %w", err)) return @@ -529,7 +518,7 @@ func (a *Agent) consumeJob(job *types.Job, role string) { } var err error - conv, err = a.handlePlanning(ctx, job, chosenAction, actionParams, reasoning, pickTemplate, conv) + conv, err = a.handlePlanning(job.GetContext(), job, chosenAction, actionParams, reasoning, pickTemplate, conv) if err != nil { job.Result.Finish(fmt.Errorf("error running action: %w", err)) return @@ -584,7 +573,7 @@ func (a *Agent) consumeJob(job *types.Job, role string) { if !chosenAction.Definition().Name.Is(action.ReplyActionName) { if !chosenAction.Definition().Name.Is(action.PlanActionName) { - result, err := a.runAction(chosenAction, actionParams) + result, err := a.runAction(job.GetContext(), chosenAction, actionParams) if err != nil { //job.Result.Finish(fmt.Errorf("error running action: %w", err)) //return @@ -613,7 +602,7 @@ func (a *Agent) consumeJob(job *types.Job, role string) { // given the result, we can now ask OpenAI to complete the conversation or // to continue using another tool given the result - followingAction, followingParams, reasoning, err := a.pickAction(ctx, reEvaluationTemplate, conv) + followingAction, followingParams, reasoning, err := a.pickAction(job.GetContext(), reEvaluationTemplate, conv) if err != nil { job.Result.Conversation = conv job.Result.Finish(fmt.Errorf("error picking action: %w", err)) @@ -736,7 +725,7 @@ func (a *Agent) consumeJob(job *types.Job, role string) { xlog.Info("Reasoning, ask LLM for a reply", "agent", a.Character.Name) xlog.Debug("Conversation", "conversation", fmt.Sprintf("%+v", conv)) - msg, err := a.askLLM(ctx, conv) + msg, err := a.askLLM(job.GetContext(), conv) if err != nil { job.Result.Conversation = conv job.Result.Finish(err) @@ -793,7 +782,6 @@ func (a *Agent) periodicallyRun(timer *time.Timer) { // Remember always to reset the timer - if we don't the agent will stop.. defer timer.Reset(a.options.periodicRuns) - a.StopAction() xlog.Debug("Agent is running periodically", "agent", a.Character.Name) // TODO: Would be nice if we have a special action to @@ -902,6 +890,5 @@ func (a *Agent) loop(timer *time.Timer, job *types.Job) { <-timer.C } xlog.Debug("Agent is consuming a job", "agent", a.Character.Name, "job", job) - a.StopAction() a.consumeJob(job, UserRole) } diff --git a/core/types/job.go b/core/types/job.go index 630e5ef..ecd0f05 100644 --- a/core/types/job.go +++ b/core/types/job.go @@ -1,6 +1,7 @@ package types import ( + "context" "log" "sync" @@ -14,11 +15,14 @@ type Job struct { // It can be a question, a command, or a request to do something // The agent will try to do it, and return a response Result *JobResult - reasoningCallback func(ActionCurrentState) bool - resultCallback func(ActionState) + ReasoningCallback func(ActionCurrentState) bool + ResultCallback func(ActionState) ConversationHistory []openai.ChatCompletionMessage UUID string Metadata map[string]interface{} + + context context.Context + cancel context.CancelFunc } // JobResult is the result of a job @@ -43,13 +47,13 @@ func WithConversationHistory(history []openai.ChatCompletionMessage) JobOption { func WithReasoningCallback(f func(ActionCurrentState) bool) JobOption { return func(r *Job) { - r.reasoningCallback = f + r.ReasoningCallback = f } } func WithResultCallback(f func(ActionState)) JobOption { return func(r *Job) { - r.resultCallback = f + r.ResultCallback = f } } @@ -68,17 +72,17 @@ func NewJobResult() *JobResult { } func (j *Job) Callback(stateResult ActionCurrentState) bool { - if j.reasoningCallback == nil { + if j.ReasoningCallback == nil { return true } - return j.reasoningCallback(stateResult) + return j.ReasoningCallback(stateResult) } func (j *Job) CallbackWithResult(stateResult ActionState) { - if j.resultCallback == nil { + if j.ResultCallback == nil { return } - j.resultCallback(stateResult) + j.ResultCallback(stateResult) } func WithTextImage(text, image string) JobOption { @@ -134,6 +138,16 @@ func NewJob(opts ...JobOption) *Job { o(j) } + var ctx context.Context + if j.context == nil { + ctx = context.Background() + } else { + ctx = j.context + } + + context, cancel := context.WithCancel(ctx) + j.context = context + j.cancel = cancel return j } @@ -142,3 +156,17 @@ func WithUUID(uuid string) JobOption { j.UUID = uuid } } + +func WithContext(ctx context.Context) JobOption { + return func(j *Job) { + j.context = ctx + } +} + +func (j *Job) Cancel() { + j.cancel() +} + +func (j *Job) GetContext() context.Context { + return j.context +} diff --git a/services/connectors/slack.go b/services/connectors/slack.go index a0077ff..557d0ee 100644 --- a/services/connectors/slack.go +++ b/services/connectors/slack.go @@ -38,9 +38,8 @@ type Slack struct { apiClient *slack.Client // Track active jobs for cancellation - activeJobs map[string]bool // map[channelID]bool to track if a channel has active processing + activeJobs map[string][]*types.Job // map[channelID]bool to track if a channel has active processing activeJobsMutex sync.RWMutex - agent *agent.Agent // Reference to the agent to call StopAction conversationTracker *ConversationTracker[string] } @@ -61,7 +60,7 @@ func NewSlack(config map[string]string) *Slack { alwaysReply: config["alwaysReply"] == "true", conversationTracker: NewConversationTracker[string](duration), placeholders: make(map[string]string), - activeJobs: make(map[string]bool), + activeJobs: make(map[string][]*types.Job), } } @@ -116,15 +115,17 @@ func (t *Slack) AgentReasoningCallback() func(state types.ActionCurrentState) bo // cancelActiveJobForChannel cancels any active job for the given channel func (t *Slack) cancelActiveJobForChannel(channelID string) { t.activeJobsMutex.RLock() - isActive := t.activeJobs[channelID] + ctxs, exists := t.activeJobs[channelID] t.activeJobsMutex.RUnlock() - if isActive && t.agent != nil { + if exists { xlog.Info(fmt.Sprintf("Cancelling active job for channel: %s", channelID)) - t.agent.StopAction() // Mark the job as inactive t.activeJobsMutex.Lock() + for _, c := range ctxs { + c.Cancel() + } delete(t.activeJobs, channelID) t.activeJobsMutex.Unlock() } @@ -250,17 +251,6 @@ func (t *Slack) handleChannelMessage( message := replaceUserIDsWithNamesInMessage(api, cleanUpUsernameFromMessage(ev.Text, b)) go func() { - // Mark this channel as having an active job - t.activeJobsMutex.Lock() - t.activeJobs[ev.Channel] = true - t.activeJobsMutex.Unlock() - - defer func() { - // Mark job as complete - t.activeJobsMutex.Lock() - delete(t.activeJobs, ev.Channel) - t.activeJobsMutex.Unlock() - }() imageBytes, mimeType := scanImagesInMessages(api, ev) @@ -312,6 +302,27 @@ func (t *Slack) handleChannelMessage( } agentOptions = append(agentOptions, types.WithMetadata(metadata)) + job := types.NewJob(agentOptions...) + + // Mark this channel as having an active job + t.activeJobsMutex.Lock() + t.activeJobs[ev.Channel] = append(t.activeJobs[ev.Channel], job) + t.activeJobsMutex.Unlock() + + defer func() { + // Mark job as complete + t.activeJobsMutex.Lock() + job.Cancel() + for i, j := range t.activeJobs[ev.Channel] { + if j.UUID == job.UUID { + t.activeJobs[ev.Channel] = append(t.activeJobs[ev.Channel][:i], t.activeJobs[ev.Channel][i+1:]...) + break + } + } + + t.activeJobsMutex.Unlock() + }() + res := a.Ask( agentOptions..., ) @@ -695,9 +706,6 @@ func (t *Slack) Start(a *agent.Agent) { Markdown: true, } - // Store the agent reference for use in cancellation - t.agent = a - api := slack.New( t.botToken, // slack.OptionDebug(true), From 0f2731f9e8ab6d13ca25773189d124b91a31b276 Mon Sep 17 00:00:00 2001 From: Ettore Di Giacinto Date: Wed, 26 Mar 2025 22:58:52 +0100 Subject: [PATCH 316/399] fix(actions): respect running context Signed-off-by: Ettore Di Giacinto --- services/actions.go | 18 +++++++++--------- services/actions/githubissuecloser.go | 6 ++---- services/actions/githubissuecomment.go | 6 ++---- services/actions/githubissuelabeler.go | 6 ++---- services/actions/githubissueopener.go | 6 ++---- services/actions/githubissuereader.go | 6 ++---- services/actions/githubissuesearch.go | 6 ++---- .../githubrepositorycreateupdatecontent.go | 8 +++----- services/actions/githubrepositorygetcontent.go | 6 ++---- services/actions/githubrepositoryreadme.go | 6 ++---- webui/app.go | 2 +- 11 files changed, 29 insertions(+), 47 deletions(-) diff --git a/services/actions.go b/services/actions.go index 1ff5252..173cff5 100644 --- a/services/actions.go +++ b/services/actions.go @@ -94,23 +94,23 @@ func Action(name string, config map[string]string, pool *state.AgentPool) (types case ActionSearch: a = actions.NewSearch(config) case ActionGithubIssueLabeler: - a = actions.NewGithubIssueLabeler(context.Background(), config) + a = actions.NewGithubIssueLabeler(config) case ActionGithubIssueOpener: - a = actions.NewGithubIssueOpener(context.Background(), config) + a = actions.NewGithubIssueOpener(config) case ActionGithubIssueCloser: - a = actions.NewGithubIssueCloser(context.Background(), config) + a = actions.NewGithubIssueCloser(config) case ActionGithubIssueSearcher: - a = actions.NewGithubIssueSearch(context.Background(), config) + a = actions.NewGithubIssueSearch(config) case ActionGithubIssueReader: - a = actions.NewGithubIssueReader(context.Background(), config) + a = actions.NewGithubIssueReader(config) case ActionGithubIssueCommenter: - a = actions.NewGithubIssueCommenter(context.Background(), config) + a = actions.NewGithubIssueCommenter(config) case ActionGithubRepositoryGet: - a = actions.NewGithubRepositoryGetContent(context.Background(), config) + a = actions.NewGithubRepositoryGetContent(config) case ActionGithubRepositoryCreateOrUpdate: - a = actions.NewGithubRepositoryCreateOrUpdateContent(context.Background(), config) + a = actions.NewGithubRepositoryCreateOrUpdateContent(config) case ActionGithubREADME: - a = actions.NewGithubRepositoryREADME(context.Background(), config) + a = actions.NewGithubRepositoryREADME(config) case ActionScraper: a = actions.NewScraper(config) case ActionWikipedia: diff --git a/services/actions/githubissuecloser.go b/services/actions/githubissuecloser.go index fd74df1..ba94a71 100644 --- a/services/actions/githubissuecloser.go +++ b/services/actions/githubissuecloser.go @@ -11,11 +11,10 @@ import ( type GithubIssuesCloser struct { token, repository, owner, customActionName string - context context.Context client *github.Client } -func NewGithubIssueCloser(ctx context.Context, config map[string]string) *GithubIssuesCloser { +func NewGithubIssueCloser(config map[string]string) *GithubIssuesCloser { client := github.NewClient(nil).WithAuthToken(config["token"]) return &GithubIssuesCloser{ client: client, @@ -23,7 +22,6 @@ func NewGithubIssueCloser(ctx context.Context, config map[string]string) *Github repository: config["repository"], owner: config["owner"], customActionName: config["customActionName"], - context: ctx, } } @@ -60,7 +58,7 @@ func (g *GithubIssuesCloser) Run(ctx context.Context, params types.ActionParams) // return "", err // } - _, _, err = g.client.Issues.Edit(g.context, result.Owner, result.Repository, result.IssueNumber, &github.IssueRequest{ + _, _, err = g.client.Issues.Edit(ctx, result.Owner, result.Repository, result.IssueNumber, &github.IssueRequest{ State: github.String("closed"), }) diff --git a/services/actions/githubissuecomment.go b/services/actions/githubissuecomment.go index 1350a99..42497e8 100644 --- a/services/actions/githubissuecomment.go +++ b/services/actions/githubissuecomment.go @@ -11,11 +11,10 @@ import ( type GithubIssuesCommenter struct { token, repository, owner, customActionName string - context context.Context client *github.Client } -func NewGithubIssueCommenter(ctx context.Context, config map[string]string) *GithubIssuesCommenter { +func NewGithubIssueCommenter(config map[string]string) *GithubIssuesCommenter { client := github.NewClient(nil).WithAuthToken(config["token"]) return &GithubIssuesCommenter{ @@ -24,7 +23,6 @@ func NewGithubIssueCommenter(ctx context.Context, config map[string]string) *Git customActionName: config["customActionName"], repository: config["repository"], owner: config["owner"], - context: ctx, } } @@ -45,7 +43,7 @@ func (g *GithubIssuesCommenter) Run(ctx context.Context, params types.ActionPara result.Owner = g.owner } - _, _, err = g.client.Issues.CreateComment(g.context, result.Owner, result.Repository, result.IssueNumber, + _, _, err = g.client.Issues.CreateComment(ctx, result.Owner, result.Repository, result.IssueNumber, &github.IssueComment{ Body: &result.Comment, }) diff --git a/services/actions/githubissuelabeler.go b/services/actions/githubissuelabeler.go index 43e8422..055ae51 100644 --- a/services/actions/githubissuelabeler.go +++ b/services/actions/githubissuelabeler.go @@ -14,11 +14,10 @@ import ( type GithubIssuesLabeler struct { token, repository, owner, customActionName string availableLabels []string - context context.Context client *github.Client } -func NewGithubIssueLabeler(ctx context.Context, config map[string]string) *GithubIssuesLabeler { +func NewGithubIssueLabeler(config map[string]string) *GithubIssuesLabeler { client := github.NewClient(nil).WithAuthToken(config["token"]) // Get available labels @@ -34,7 +33,6 @@ func NewGithubIssueLabeler(ctx context.Context, config map[string]string) *Githu customActionName: config["customActionName"], repository: config["repository"], owner: config["owner"], - context: ctx, availableLabels: availableLabels, } } @@ -56,7 +54,7 @@ func (g *GithubIssuesLabeler) Run(ctx context.Context, params types.ActionParams result.Owner = g.owner } - labels, _, err := g.client.Issues.AddLabelsToIssue(g.context, result.Owner, result.Repository, result.IssueNumber, []string{result.Label}) + labels, _, err := g.client.Issues.AddLabelsToIssue(ctx, result.Owner, result.Repository, result.IssueNumber, []string{result.Label}) //labelsNames := []string{} for _, l := range labels { xlog.Info("Label added", "label", l.Name) diff --git a/services/actions/githubissueopener.go b/services/actions/githubissueopener.go index 615290a..bbff91d 100644 --- a/services/actions/githubissueopener.go +++ b/services/actions/githubissueopener.go @@ -11,11 +11,10 @@ import ( type GithubIssuesOpener struct { token, repository, owner, customActionName string - context context.Context client *github.Client } -func NewGithubIssueOpener(ctx context.Context, config map[string]string) *GithubIssuesOpener { +func NewGithubIssueOpener(config map[string]string) *GithubIssuesOpener { client := github.NewClient(nil).WithAuthToken(config["token"]) return &GithubIssuesOpener{ @@ -24,7 +23,6 @@ func NewGithubIssueOpener(ctx context.Context, config map[string]string) *Github repository: config["repository"], owner: config["owner"], customActionName: config["customActionName"], - context: ctx, } } @@ -53,7 +51,7 @@ func (g *GithubIssuesOpener) Run(ctx context.Context, params types.ActionParams) } resultString := "" - createdIssue, _, err := g.client.Issues.Create(g.context, result.Owner, result.Repository, issue) + createdIssue, _, err := g.client.Issues.Create(ctx, result.Owner, result.Repository, issue) if err != nil { resultString = fmt.Sprintf("Error creating issue: %v", err) } else { diff --git a/services/actions/githubissuereader.go b/services/actions/githubissuereader.go index 0f8d5ce..2f6168c 100644 --- a/services/actions/githubissuereader.go +++ b/services/actions/githubissuereader.go @@ -11,11 +11,10 @@ import ( type GithubIssuesReader struct { token, repository, owner, customActionName string - context context.Context client *github.Client } -func NewGithubIssueReader(ctx context.Context, config map[string]string) *GithubIssuesReader { +func NewGithubIssueReader(config map[string]string) *GithubIssuesReader { client := github.NewClient(nil).WithAuthToken(config["token"]) return &GithubIssuesReader{ @@ -24,7 +23,6 @@ func NewGithubIssueReader(ctx context.Context, config map[string]string) *Github customActionName: config["customActionName"], repository: config["repository"], owner: config["owner"], - context: ctx, } } @@ -45,7 +43,7 @@ func (g *GithubIssuesReader) Run(ctx context.Context, params types.ActionParams) result.Owner = g.owner } - issue, _, err := g.client.Issues.Get(g.context, result.Owner, result.Repository, result.IssueNumber) + issue, _, err := g.client.Issues.Get(ctx, result.Owner, result.Repository, result.IssueNumber) if err == nil && issue != nil { return types.ActionResult{ Result: fmt.Sprintf( diff --git a/services/actions/githubissuesearch.go b/services/actions/githubissuesearch.go index aecdc9e..daa5358 100644 --- a/services/actions/githubissuesearch.go +++ b/services/actions/githubissuesearch.go @@ -12,11 +12,10 @@ import ( type GithubIssueSearch struct { token, repository, owner, customActionName string - context context.Context client *github.Client } -func NewGithubIssueSearch(ctx context.Context, config map[string]string) *GithubIssueSearch { +func NewGithubIssueSearch(config map[string]string) *GithubIssueSearch { client := github.NewClient(nil).WithAuthToken(config["token"]) return &GithubIssueSearch{ @@ -25,7 +24,6 @@ func NewGithubIssueSearch(ctx context.Context, config map[string]string) *Github repository: config["repository"], owner: config["owner"], customActionName: config["customActionName"], - context: ctx, } } @@ -49,7 +47,7 @@ func (g *GithubIssueSearch) Run(ctx context.Context, params types.ActionParams) query := fmt.Sprintf("%s in:%s user:%s", result.Query, result.Repository, result.Owner) resultString := "" - issues, _, err := g.client.Search.Issues(g.context, query, &github.SearchOptions{ + issues, _, err := g.client.Search.Issues(ctx, query, &github.SearchOptions{ ListOptions: github.ListOptions{PerPage: 5}, Order: "desc", //Sort: "created", diff --git a/services/actions/githubrepositorycreateupdatecontent.go b/services/actions/githubrepositorycreateupdatecontent.go index 82fd1a3..2a8398d 100644 --- a/services/actions/githubrepositorycreateupdatecontent.go +++ b/services/actions/githubrepositorycreateupdatecontent.go @@ -11,11 +11,10 @@ import ( type GithubRepositoryCreateOrUpdateContent struct { token, repository, owner, customActionName, defaultBranch, commitAuthor, commitMail string - context context.Context client *github.Client } -func NewGithubRepositoryCreateOrUpdateContent(ctx context.Context, config map[string]string) *GithubRepositoryCreateOrUpdateContent { +func NewGithubRepositoryCreateOrUpdateContent(config map[string]string) *GithubRepositoryCreateOrUpdateContent { client := github.NewClient(nil).WithAuthToken(config["token"]) return &GithubRepositoryCreateOrUpdateContent{ @@ -27,7 +26,6 @@ func NewGithubRepositoryCreateOrUpdateContent(ctx context.Context, config map[st commitAuthor: config["commitAuthor"], commitMail: config["commitMail"], defaultBranch: config["defaultBranch"], - context: ctx, } } @@ -65,12 +63,12 @@ func (g *GithubRepositoryCreateOrUpdateContent) Run(ctx context.Context, params } var sha *string - c, _, _, _ := g.client.Repositories.GetContents(g.context, result.Owner, result.Repository, result.Path, nil) + c, _, _, _ := g.client.Repositories.GetContents(ctx, result.Owner, result.Repository, result.Path, nil) if c != nil { sha = c.SHA } - fileContent, _, err := g.client.Repositories.CreateFile(g.context, result.Owner, result.Repository, result.Path, &github.RepositoryContentFileOptions{ + fileContent, _, err := g.client.Repositories.CreateFile(ctx, result.Owner, result.Repository, result.Path, &github.RepositoryContentFileOptions{ Message: &result.CommitMessage, SHA: sha, Committer: &github.CommitAuthor{ diff --git a/services/actions/githubrepositorygetcontent.go b/services/actions/githubrepositorygetcontent.go index 733c145..61c39d5 100644 --- a/services/actions/githubrepositorygetcontent.go +++ b/services/actions/githubrepositorygetcontent.go @@ -11,11 +11,10 @@ import ( type GithubRepositoryGetContent struct { token, repository, owner, customActionName string - context context.Context client *github.Client } -func NewGithubRepositoryGetContent(ctx context.Context, config map[string]string) *GithubRepositoryGetContent { +func NewGithubRepositoryGetContent(config map[string]string) *GithubRepositoryGetContent { client := github.NewClient(nil).WithAuthToken(config["token"]) return &GithubRepositoryGetContent{ @@ -24,7 +23,6 @@ func NewGithubRepositoryGetContent(ctx context.Context, config map[string]string repository: config["repository"], owner: config["owner"], customActionName: config["customActionName"], - context: ctx, } } @@ -46,7 +44,7 @@ func (g *GithubRepositoryGetContent) Run(ctx context.Context, params types.Actio result.Owner = g.owner } - fileContent, directoryContent, _, err := g.client.Repositories.GetContents(g.context, result.Owner, result.Repository, result.Path, nil) + fileContent, directoryContent, _, err := g.client.Repositories.GetContents(ctx, result.Owner, result.Repository, result.Path, nil) if err != nil { resultString := fmt.Sprintf("Error getting content : %v", err) return types.ActionResult{Result: resultString}, err diff --git a/services/actions/githubrepositoryreadme.go b/services/actions/githubrepositoryreadme.go index 5bd194f..03f0be8 100644 --- a/services/actions/githubrepositoryreadme.go +++ b/services/actions/githubrepositoryreadme.go @@ -11,18 +11,16 @@ import ( type GithubRepositoryREADME struct { token, customActionName string - context context.Context client *github.Client } -func NewGithubRepositoryREADME(ctx context.Context, config map[string]string) *GithubRepositoryREADME { +func NewGithubRepositoryREADME(config map[string]string) *GithubRepositoryREADME { client := github.NewClient(nil).WithAuthToken(config["token"]) return &GithubRepositoryREADME{ client: client, token: config["token"], customActionName: config["customActionName"], - context: ctx, } } @@ -37,7 +35,7 @@ func (g *GithubRepositoryREADME) Run(ctx context.Context, params types.ActionPar return types.ActionResult{}, err } - fileContent, _, err := g.client.Repositories.GetReadme(g.context, result.Owner, result.Repository, &github.RepositoryContentGetOptions{}) + fileContent, _, err := g.client.Repositories.GetReadme(ctx, result.Owner, result.Repository, &github.RepositoryContentGetOptions{}) if err != nil { resultString := fmt.Sprintf("Error getting content : %v", err) return types.ActionResult{Result: resultString}, err diff --git a/webui/app.go b/webui/app.go index 9f8fd3f..53a593d 100644 --- a/webui/app.go +++ b/webui/app.go @@ -322,7 +322,7 @@ func (a *App) ExecuteAction(pool *state.AgentPool) func(c *fiber.Ctx) error { return errorJSONMessage(c, err.Error()) } - ctx, cancel := context.WithTimeout(context.Background(), 200*time.Second) + ctx, cancel := context.WithTimeout(c.Context(), 200*time.Second) defer cancel() res, err := a.Run(ctx, payload.Params) From 4dcc77372db57d1e45df17699fba3da2fb932444 Mon Sep 17 00:00:00 2001 From: Richard Palethorpe Date: Wed, 26 Mar 2025 09:03:03 +0000 Subject: [PATCH 317/399] chore(ui): Refactor action and connector form fields into single component --- jsconfig.json | 15 +++ webui/react-ui/src/components/ActionForm.jsx | 42 +----- .../src/components/actions/BaseAction.jsx | 44 +++++++ .../actions/GenerateImageAction.jsx | 49 +++++++ .../actions/GithubIssueCloserAction.jsx | 98 +++++++------- .../actions/GithubIssueCommenterAction.jsx | 98 +++++++------- .../actions/GithubIssueLabelerAction.jsx | 120 ++++++++--------- .../actions/GithubIssueOpenerAction.jsx | 98 +++++++------- .../actions/GithubRepositoryAction.jsx | 98 +++++++------- .../src/components/actions/SendMailAction.jsx | 120 ++++++++--------- .../components/actions/TwitterPostAction.jsx | 58 ++++---- .../src/components/common/FormField.jsx | 107 +++++++++++++++ .../components/common/FormFieldDefinition.jsx | 42 ++++++ .../components/connectors/BaseConnector.jsx | 46 +++++++ .../connectors/DiscordConnector.jsx | 57 ++++---- .../connectors/GithubIssuesConnector.jsx | 124 +++++++++--------- .../connectors/GithubPRsConnector.jsx | 124 +++++++++--------- .../components/connectors/IRCConnector.jsx | 121 ++++++++--------- .../components/connectors/SlackConnector.jsx | 103 +++++++-------- .../connectors/TelegramConnector.jsx | 35 +++-- .../connectors/TwitterConnector.jsx | 118 ++++++++--------- 21 files changed, 964 insertions(+), 753 deletions(-) create mode 100644 jsconfig.json create mode 100644 webui/react-ui/src/components/actions/BaseAction.jsx create mode 100644 webui/react-ui/src/components/actions/GenerateImageAction.jsx create mode 100644 webui/react-ui/src/components/common/FormField.jsx create mode 100644 webui/react-ui/src/components/common/FormFieldDefinition.jsx create mode 100644 webui/react-ui/src/components/connectors/BaseConnector.jsx diff --git a/jsconfig.json b/jsconfig.json new file mode 100644 index 0000000..80636cc --- /dev/null +++ b/jsconfig.json @@ -0,0 +1,15 @@ +{ + "compilerOptions": { + "module": "ESNext", + "moduleResolution": "Bundler", + "target": "ES2022", + "jsx": "react", + "allowImportingTsExtensions": true, + "strictNullChecks": true, + "strictFunctionTypes": true + }, + "exclude": [ + "node_modules", + "**/node_modules/*" + ] +} \ No newline at end of file diff --git a/webui/react-ui/src/components/ActionForm.jsx b/webui/react-ui/src/components/ActionForm.jsx index 4a1b937..721d12f 100644 --- a/webui/react-ui/src/components/ActionForm.jsx +++ b/webui/react-ui/src/components/ActionForm.jsx @@ -7,6 +7,7 @@ import GithubIssueCommenterAction from './actions/GithubIssueCommenterAction'; import GithubRepositoryAction from './actions/GithubRepositoryAction'; import TwitterPostAction from './actions/TwitterPostAction'; import SendMailAction from './actions/SendMailAction'; +import GenerateImageAction from './actions/GenerateImageAction'; /** * ActionForm component for configuring an action @@ -103,46 +104,7 @@ const ActionForm = ({ actions = [], onChange, onRemove, onAdd }) => { case 'send-mail': return ; case 'generate_image': - return ( -
-
- - onActionConfigChange(index, 'apiKey', e.target.value)} - className="form-control" - placeholder="sk-..." - /> -
- -
- - onActionConfigChange(index, 'apiURL', e.target.value)} - className="form-control" - placeholder="https://api.openai.com/v1" - /> -
- -
- - onActionConfigChange(index, 'model', e.target.value)} - className="form-control" - placeholder="dall-e-3" - /> - Image generation model (e.g., dall-e-3) -
-
- ); + return ; default: return ; } diff --git a/webui/react-ui/src/components/actions/BaseAction.jsx b/webui/react-ui/src/components/actions/BaseAction.jsx new file mode 100644 index 0000000..10ba5f5 --- /dev/null +++ b/webui/react-ui/src/components/actions/BaseAction.jsx @@ -0,0 +1,44 @@ +import React from 'react'; +import FormFieldDefinition from '../common/FormFieldDefinition'; + +/** + * Base action component that renders form fields based on field definitions + * + * @param {Object} props Component props + * @param {number} props.index Action index + * @param {Function} props.onActionConfigChange Handler for config changes + * @param {Function} props.getConfigValue Helper to get config values + * @param {Array} props.fields Field definitions for this action + */ +const BaseAction = ({ + index, + onActionConfigChange, + getConfigValue, + fields = [] +}) => { + // Create an object with all the current values + const currentValues = {}; + + // Pre-populate with current values or defaults + fields.forEach(field => { + currentValues[field.name] = getConfigValue(field.name, field.defaultValue); + }); + + // Handle field value changes + const handleFieldChange = (name, value) => { + onActionConfigChange(name, value); + }; + + return ( +
+ +
+ ); +}; + +export default BaseAction; diff --git a/webui/react-ui/src/components/actions/GenerateImageAction.jsx b/webui/react-ui/src/components/actions/GenerateImageAction.jsx new file mode 100644 index 0000000..5f7a91f --- /dev/null +++ b/webui/react-ui/src/components/actions/GenerateImageAction.jsx @@ -0,0 +1,49 @@ +import React from 'react'; +import BaseAction from './BaseAction'; + +/** + * Generate Image action component + */ +const GenerateImageAction = ({ index, onActionConfigChange, getConfigValue }) => { + // Field definitions for Generate Image action + const fields = [ + { + name: 'apiKey', + label: 'OpenAI API Key', + type: 'text', + defaultValue: '', + placeholder: 'sk-...', + helpText: 'Your OpenAI API key for image generation', + required: false, + }, + { + name: 'apiURL', + label: 'API URL', + type: 'text', + defaultValue: '', + placeholder: 'http://localai:8081', + helpText: 'OpenAI compatible API endpoint URL', + required: false, + }, + { + name: 'model', + label: 'Model', + type: 'text', + defaultValue: '', + placeholder: 'dall-e-3', + helpText: 'Image generation model', + required: false, + } + ]; + + return ( + + ); +}; + +export default GenerateImageAction; diff --git a/webui/react-ui/src/components/actions/GithubIssueCloserAction.jsx b/webui/react-ui/src/components/actions/GithubIssueCloserAction.jsx index fab6ab0..7823ace 100644 --- a/webui/react-ui/src/components/actions/GithubIssueCloserAction.jsx +++ b/webui/react-ui/src/components/actions/GithubIssueCloserAction.jsx @@ -1,61 +1,57 @@ import React from 'react'; +import BaseAction from './BaseAction'; /** * GitHub Issue Closer action component */ const GithubIssueCloserAction = ({ index, onActionConfigChange, getConfigValue }) => { + // Field definitions for GitHub Issue Closer action + const fields = [ + { + name: 'token', + label: 'GitHub Token', + type: 'text', + defaultValue: '', + placeholder: 'ghp_...', + helpText: 'Personal access token with repo scope', + required: true, + }, + { + name: 'owner', + label: 'Repository Owner', + type: 'text', + defaultValue: '', + placeholder: 'username or organization', + helpText: '', + required: true, + }, + { + name: 'repository', + label: 'Repository Name', + type: 'text', + defaultValue: '', + placeholder: 'repository-name', + helpText: '', + required: true, + }, + { + name: 'customActionName', + label: 'Custom Action Name (Optional)', + type: 'text', + defaultValue: '', + placeholder: 'close_github_issue', + helpText: 'Custom name for this action (optional)', + required: false, + }, + ]; + return ( -
-
- - onActionConfigChange('token', e.target.value)} - className="form-control" - placeholder="ghp_..." - /> - Personal access token with repo scope -
- -
- - onActionConfigChange('owner', e.target.value)} - className="form-control" - placeholder="username or organization" - /> -
- -
- - onActionConfigChange('repository', e.target.value)} - className="form-control" - placeholder="repository-name" - /> -
- -
- - onActionConfigChange('customActionName', e.target.value)} - className="form-control" - placeholder="close_github_issue" - /> - Custom name for this action (optional) -
-
+ ); }; diff --git a/webui/react-ui/src/components/actions/GithubIssueCommenterAction.jsx b/webui/react-ui/src/components/actions/GithubIssueCommenterAction.jsx index e179bc2..4470fa7 100644 --- a/webui/react-ui/src/components/actions/GithubIssueCommenterAction.jsx +++ b/webui/react-ui/src/components/actions/GithubIssueCommenterAction.jsx @@ -1,61 +1,57 @@ import React from 'react'; +import BaseAction from './BaseAction'; /** * GitHub Issue Commenter action component */ const GithubIssueCommenterAction = ({ index, onActionConfigChange, getConfigValue }) => { + // Field definitions for GitHub Issue Commenter action + const fields = [ + { + name: 'token', + label: 'GitHub Token', + type: 'text', + defaultValue: '', + placeholder: 'ghp_...', + helpText: 'Personal access token with repo scope', + required: true, + }, + { + name: 'owner', + label: 'Repository Owner', + type: 'text', + defaultValue: '', + placeholder: 'username or organization', + helpText: 'Owner of the repository', + required: true, + }, + { + name: 'repository', + label: 'Repository Name', + type: 'text', + defaultValue: '', + placeholder: 'repository-name', + helpText: 'Name of the repository', + required: true, + }, + { + name: 'customActionName', + label: 'Custom Action Name (Optional)', + type: 'text', + defaultValue: '', + placeholder: 'comment_on_github_issue', + helpText: 'Custom name for this action (optional)', + required: false, + }, + ]; + return ( -
-
- - onActionConfigChange('token', e.target.value)} - className="form-control" - placeholder="ghp_..." - /> - Personal access token with repo scope -
- -
- - onActionConfigChange('owner', e.target.value)} - className="form-control" - placeholder="username or organization" - /> -
- -
- - onActionConfigChange('repository', e.target.value)} - className="form-control" - placeholder="repository-name" - /> -
- -
- - onActionConfigChange('customActionName', e.target.value)} - className="form-control" - placeholder="comment_on_github_issue" - /> - Custom name for this action (optional) -
-
+ ); }; diff --git a/webui/react-ui/src/components/actions/GithubIssueLabelerAction.jsx b/webui/react-ui/src/components/actions/GithubIssueLabelerAction.jsx index aea6dfd..aec3cbe 100644 --- a/webui/react-ui/src/components/actions/GithubIssueLabelerAction.jsx +++ b/webui/react-ui/src/components/actions/GithubIssueLabelerAction.jsx @@ -1,74 +1,66 @@ import React from 'react'; +import BaseAction from './BaseAction'; /** * GitHub Issue Labeler action component */ const GithubIssueLabelerAction = ({ index, onActionConfigChange, getConfigValue }) => { + // Field definitions for GitHub Issue Labeler action + const fields = [ + { + name: 'token', + label: 'GitHub Token', + type: 'text', + defaultValue: '', + placeholder: 'ghp_...', + helpText: 'Personal access token with repo scope', + required: true, + }, + { + name: 'owner', + label: 'Repository Owner', + type: 'text', + defaultValue: '', + placeholder: 'username or organization', + helpText: '', + required: true, + }, + { + name: 'repository', + label: 'Repository Name', + type: 'text', + defaultValue: '', + placeholder: 'repository-name', + helpText: '', + required: true, + }, + { + name: 'availableLabels', + label: 'Available Labels', + type: 'text', + defaultValue: 'bug,enhancement', + placeholder: 'bug,enhancement,documentation', + helpText: 'Comma-separated list of available labels', + required: true, + }, + { + name: 'customActionName', + label: 'Custom Action Name (Optional)', + type: 'text', + defaultValue: '', + placeholder: 'add_label_to_issue', + helpText: 'Custom name for this action (optional)', + required: false, + }, + ]; + return ( -
-
- - onActionConfigChange('token', e.target.value)} - className="form-control" - placeholder="ghp_..." - /> - Personal access token with repo scope -
- -
- - onActionConfigChange('owner', e.target.value)} - className="form-control" - placeholder="username or organization" - /> -
- -
- - onActionConfigChange('repository', e.target.value)} - className="form-control" - placeholder="repository-name" - /> -
- -
- - onActionConfigChange('availableLabels', e.target.value)} - className="form-control" - placeholder="bug,enhancement,documentation" - /> - Comma-separated list of available labels -
- -
- - onActionConfigChange('customActionName', e.target.value)} - className="form-control" - placeholder="add_label_to_issue" - /> - Custom name for this action (optional) -
-
+ ); }; diff --git a/webui/react-ui/src/components/actions/GithubIssueOpenerAction.jsx b/webui/react-ui/src/components/actions/GithubIssueOpenerAction.jsx index ccd73b5..57c93ab 100644 --- a/webui/react-ui/src/components/actions/GithubIssueOpenerAction.jsx +++ b/webui/react-ui/src/components/actions/GithubIssueOpenerAction.jsx @@ -1,61 +1,57 @@ import React from 'react'; +import BaseAction from './BaseAction'; /** * GitHub Issue Opener action component */ const GithubIssueOpenerAction = ({ index, onActionConfigChange, getConfigValue }) => { + // Field definitions for GitHub Issue Opener action + const fields = [ + { + name: 'token', + label: 'GitHub Token', + type: 'text', + defaultValue: '', + placeholder: 'ghp_...', + helpText: 'Personal access token with repo scope', + required: true, + }, + { + name: 'owner', + label: 'Repository Owner', + type: 'text', + defaultValue: '', + placeholder: 'username or organization', + helpText: '', + required: true, + }, + { + name: 'repository', + label: 'Repository Name', + type: 'text', + defaultValue: '', + placeholder: 'repository-name', + helpText: '', + required: true, + }, + { + name: 'customActionName', + label: 'Custom Action Name (Optional)', + type: 'text', + defaultValue: '', + placeholder: 'open_github_issue', + helpText: 'Custom name for this action (optional)', + required: false, + }, + ]; + return ( -
-
- - onActionConfigChange('token', e.target.value)} - className="form-control" - placeholder="ghp_..." - /> - Personal access token with repo scope -
- -
- - onActionConfigChange('owner', e.target.value)} - className="form-control" - placeholder="username or organization" - /> -
- -
- - onActionConfigChange('repository', e.target.value)} - className="form-control" - placeholder="repository-name" - /> -
- -
- - onActionConfigChange('customActionName', e.target.value)} - className="form-control" - placeholder="open_github_issue" - /> - Custom name for this action (optional) -
-
+ ); }; diff --git a/webui/react-ui/src/components/actions/GithubRepositoryAction.jsx b/webui/react-ui/src/components/actions/GithubRepositoryAction.jsx index f1f0a8a..bf94d76 100644 --- a/webui/react-ui/src/components/actions/GithubRepositoryAction.jsx +++ b/webui/react-ui/src/components/actions/GithubRepositoryAction.jsx @@ -1,4 +1,5 @@ import React from 'react'; +import BaseAction from './BaseAction'; /** * GitHub Repository action component for repository-related actions @@ -8,58 +9,53 @@ import React from 'react'; * - github-readme */ const GithubRepositoryAction = ({ index, onActionConfigChange, getConfigValue }) => { + // Field definitions for GitHub Repository action + const fields = [ + { + name: 'token', + label: 'GitHub Token', + type: 'text', + defaultValue: '', + placeholder: 'ghp_...', + helpText: 'Personal access token with repo scope', + required: true, + }, + { + name: 'owner', + label: 'Repository Owner', + type: 'text', + defaultValue: '', + placeholder: 'username or organization', + helpText: '', + required: true, + }, + { + name: 'repository', + label: 'Repository Name', + type: 'text', + defaultValue: '', + placeholder: 'repository-name', + helpText: '', + required: true, + }, + { + name: 'customActionName', + label: 'Custom Action Name (Optional)', + type: 'text', + defaultValue: '', + placeholder: 'github_repo_action', + helpText: 'Custom name for this action (optional)', + required: false, + }, + ]; + return ( -
-
- - onActionConfigChange('token', e.target.value)} - className="form-control" - placeholder="ghp_..." - /> - Personal access token with repo scope -
- -
- - onActionConfigChange('owner', e.target.value)} - className="form-control" - placeholder="username or organization" - /> -
- -
- - onActionConfigChange('repository', e.target.value)} - className="form-control" - placeholder="repository-name" - /> -
- -
- - onActionConfigChange('customActionName', e.target.value)} - className="form-control" - placeholder="github_repo_action" - /> - Custom name for this action (optional) -
-
+ ); }; diff --git a/webui/react-ui/src/components/actions/SendMailAction.jsx b/webui/react-ui/src/components/actions/SendMailAction.jsx index 2a9f461..0f6b192 100644 --- a/webui/react-ui/src/components/actions/SendMailAction.jsx +++ b/webui/react-ui/src/components/actions/SendMailAction.jsx @@ -1,74 +1,66 @@ import React from 'react'; +import BaseAction from './BaseAction'; /** * SendMail action component */ const SendMailAction = ({ index, onActionConfigChange, getConfigValue }) => { + // Field definitions for SendMail action + const fields = [ + { + name: 'email', + label: 'Email', + type: 'email', + defaultValue: '', + placeholder: 'your-email@example.com', + helpText: 'Email address to send from', + required: true, + }, + { + name: 'username', + label: 'Username', + type: 'text', + defaultValue: '', + placeholder: 'SMTP username (often same as email)', + helpText: '', + required: true, + }, + { + name: 'password', + label: 'Password', + type: 'password', + defaultValue: '', + placeholder: 'SMTP password or app password', + helpText: 'For Gmail, use an app password', + required: true, + }, + { + name: 'smtpHost', + label: 'SMTP Host', + type: 'text', + defaultValue: '', + placeholder: 'smtp.gmail.com', + helpText: '', + required: true, + }, + { + name: 'smtpPort', + label: 'SMTP Port', + type: 'text', + defaultValue: '587', + placeholder: '587', + helpText: 'Common ports: 587 (TLS), 465 (SSL)', + required: true, + }, + ]; + return ( -
-
- - onActionConfigChange('email', e.target.value)} - className="form-control" - placeholder="your-email@example.com" - /> - Email address to send from -
- -
- - onActionConfigChange('username', e.target.value)} - className="form-control" - placeholder="SMTP username (often same as email)" - /> -
- -
- - onActionConfigChange('password', e.target.value)} - className="form-control" - placeholder="SMTP password or app password" - /> - For Gmail, use an app password -
- -
- - onActionConfigChange('smtpHost', e.target.value)} - className="form-control" - placeholder="smtp.gmail.com" - /> -
- -
- - onActionConfigChange('smtpPort', e.target.value)} - className="form-control" - placeholder="587" - /> - Common ports: 587 (TLS), 465 (SSL) -
-
+ ); }; diff --git a/webui/react-ui/src/components/actions/TwitterPostAction.jsx b/webui/react-ui/src/components/actions/TwitterPostAction.jsx index 74bd733..9bfa061 100644 --- a/webui/react-ui/src/components/actions/TwitterPostAction.jsx +++ b/webui/react-ui/src/components/actions/TwitterPostAction.jsx @@ -1,40 +1,38 @@ import React from 'react'; +import BaseAction from './BaseAction'; /** * Twitter Post action component */ const TwitterPostAction = ({ index, onActionConfigChange, getConfigValue }) => { + // Field definitions for Twitter Post action + const fields = [ + { + name: 'token', + label: 'Twitter API Token', + type: 'text', + defaultValue: '', + placeholder: 'Twitter API token', + helpText: 'Twitter API token with posting permissions', + required: true, + }, + { + name: 'noCharacterLimits', + label: 'Disable character limit (280 characters)', + type: 'checkbox', + defaultValue: 'false', + helpText: 'Enable to bypass the 280 character limit check', + required: false, + }, + ]; + return ( -
-
- - onActionConfigChange('token', e.target.value)} - className="form-control" - placeholder="Twitter API token" - /> - Twitter API token with posting permissions -
- -
-
- onActionConfigChange('noCharacterLimits', e.target.checked ? 'true' : 'false')} - className="form-check-input" - /> - - Enable to bypass the 280 character limit check -
-
-
+ ); }; diff --git a/webui/react-ui/src/components/common/FormField.jsx b/webui/react-ui/src/components/common/FormField.jsx new file mode 100644 index 0000000..f5736d1 --- /dev/null +++ b/webui/react-ui/src/components/common/FormField.jsx @@ -0,0 +1,107 @@ +import React from 'react'; + +/** + * Reusable form field component that handles different input types + * + * @param {Object} props Component props + * @param {string} props.id Unique identifier for the input + * @param {string} props.label Label text for the field + * @param {string} props.type Input type (text, checkbox, select, textarea) + * @param {string|boolean} props.value Current value of the field + * @param {Function} props.onChange Handler for value changes + * @param {string} props.placeholder Placeholder text + * @param {string} props.helpText Help text to display below the field + * @param {Array} props.options Options for select inputs + * @param {boolean} props.required Whether the field is required + */ +const FormField = ({ + id, + label, + type = 'text', + value, + onChange, + placeholder = '', + helpText = '', + options = [], + required = false, +}) => { + // Render different input types + const renderInput = () => { + switch (type) { + case 'checkbox': + return ( +
+ + {helpText && {helpText}} +
+ ); + case 'select': + return ( + <> + + + {helpText && {helpText}} + + ); + case 'textarea': + return ( + <> + + -
- `; - - // Set the value safely after DOM is created - setTimeout(function() { - const configTextarea = document.getElementById(`connectorConfig${index}`); - if (configTextarea) { - if (typeof configObj === 'object' && configObj !== null) { - configTextarea.value = JSON.stringify(configObj, null, 2); - } else if (typeof config === 'string') { - configTextarea.value = config; - } - } - }, 0); - } - } - } -}; - -// HTML Templates for dynamic elements -const AgentFormTemplates = { - // Connector template - connectorTemplate: function(index, data) { - return ` -
-

Connector ${index + 1}

-
- - -
-
- -
-
Select a connector type to configure
-
-
- -
- `; - }, - - // MCP Server template - mcpServerTemplate: function(index, data) { - return ` -
-

MCP Server ${index + 1}

-
- - -
-
- - -
- -
- `; - }, - - // Action template - actionTemplate: function(index, data) { - return ` -
-

Action ${index + 1}

-
- - -
-
- - -
- -
- `; - }, - - // Prompt Block template - promptBlockTemplate: function(index, data) { - return ` -
-

Prompt Block ${index + 1}

-
- - -
-
- - -
- -
- `; - } -}; - -// Initialize form event listeners -function initAgentFormCommon(options = {}) { - // Add connector button - const addConnectorButton = document.getElementById('addConnectorButton'); - if (addConnectorButton) { - addConnectorButton.addEventListener('click', function() { - // Create options string - let optionsHtml = ''; - if (options.connectors) { - optionsHtml = options.connectors; - } - - // Add new connector form - AgentFormUtils.addDynamicComponent('connectorsSection', AgentFormTemplates.connectorTemplate, { - className: 'connector', - options: optionsHtml - }); - }); - } - - // Add MCP server button - const addMCPButton = document.getElementById('addMCPButton'); - if (addMCPButton) { - addMCPButton.addEventListener('click', function() { - // Add new MCP server form - AgentFormUtils.addDynamicComponent('mcpSection', AgentFormTemplates.mcpServerTemplate, { - className: 'mcp_server' - }); - }); - } - - // Add action button - const actionButton = document.getElementById('action_button'); - if (actionButton) { - actionButton.addEventListener('click', function() { - // Create options string - let optionsHtml = ''; - if (options.actions) { - optionsHtml = options.actions; - } - - // Add new action form - AgentFormUtils.addDynamicComponent('action_box', AgentFormTemplates.actionTemplate, { - className: 'action', - options: optionsHtml - }); - }); - } - - // Add prompt block button - const dynamicButton = document.getElementById('dynamic_button'); - if (dynamicButton) { - dynamicButton.addEventListener('click', function() { - // Create options string - let optionsHtml = ''; - if (options.promptBlocks) { - optionsHtml = options.promptBlocks; - } - - // Add new prompt block form - AgentFormUtils.addDynamicComponent('dynamic_box', AgentFormTemplates.promptBlockTemplate, { - className: 'prompt_block', - options: optionsHtml - }); - }); - } -} - -// Simple toast notification function -function showToast(message, type) { - // Check if toast container exists, if not create it - let toast = document.getElementById('toast'); - if (!toast) { - toast = document.createElement('div'); - toast.id = 'toast'; - toast.className = 'toast'; - - const toastMessage = document.createElement('div'); - toastMessage.id = 'toast-message'; - toast.appendChild(toastMessage); - - document.body.appendChild(toast); - } - - const toastMessage = document.getElementById('toast-message'); - - // Set message - toastMessage.textContent = message; - - // Set type class - toast.className = 'toast'; - toast.classList.add(`toast-${type}`); - - // Show toast - toast.classList.add('show'); - - // Hide after 3 seconds - setTimeout(() => { - toast.classList.remove('show'); - }, 3000); -} diff --git a/webui/public/js/common.js b/webui/public/js/common.js deleted file mode 100644 index d0cf5eb..0000000 --- a/webui/public/js/common.js +++ /dev/null @@ -1,44 +0,0 @@ - // Function to show toast notifications with enhanced animation - function showToast(message, type) { - const toast = document.getElementById('toast'); - const toastMessage = document.getElementById('toast-message'); - - // Set message - toastMessage.textContent = message; - - // Set toast type (success/error) - toast.className = 'toast'; - toast.classList.add(type === 'success' ? 'toast-success' : 'toast-error'); - - // Show toast with enhanced animation - setTimeout(() => { - toast.classList.add('toast-visible'); - }, 100); - - // Hide toast after 3 seconds with animation - setTimeout(() => { - toast.classList.remove('toast-visible'); - - // Clean up after animation completes - setTimeout(() => { - toast.className = 'toast'; - }, 400); - }, 3000); -} - -// Function to create the glitch effect on headings -document.addEventListener('DOMContentLoaded', function() { - const headings = document.querySelectorAll('h1'); - - headings.forEach(heading => { - heading.addEventListener('mouseover', function() { - this.style.animation = 'glitch 0.3s infinite'; - }); - - heading.addEventListener('mouseout', function() { - this.style.animation = 'neonPulse 2s infinite'; - }); - }); - - -}); \ No newline at end of file diff --git a/webui/public/js/connector-templates.js b/webui/public/js/connector-templates.js deleted file mode 100644 index f093989..0000000 --- a/webui/public/js/connector-templates.js +++ /dev/null @@ -1,475 +0,0 @@ -/** - * Connector Templates - * - * This file contains templates for all connector types supported by LocalAgent. - * Each template is a function that returns an HTML string for the connector's form. - * - * Note: We don't need to escape HTML in the value attributes because browsers - * handle these values safely when setting them via DOM properties after rendering. - */ - -/** - * Connector Templates - * Each function takes a config object and returns an HTML string - */ -const ConnectorTemplates = { - /** - * Telegram Connector Template - * @param {Object} config - Existing configuration values - * @param {Number} index - Connector index - * @returns {Object} HTML template and setValues function - */ - telegram: function(config = {}, index) { - // Return HTML without values in the template string - const html = ` -
- - - Get this from @BotFather on Telegram -
- `; - - // Function to set values after HTML is added to DOM to avoid XSS - const setValues = function() { - const input = document.getElementById(`telegramToken${index}`); - if (input) input.value = config.token || ''; - }; - - return { html, setValues }; - }, - - /** - * Slack Connector Template - * @param {Object} config - Existing configuration values - * @param {Number} index - Connector index - * @returns {Object} HTML template and setValues function - */ - slack: function(config = {}, index) { - // Return HTML without values in the template string - const html = ` -
- - - App-level token starting with xapp- -
- -
- - - Bot token starting with xoxb- -
- -
- - - Channel ID where the bot will operate -
- -
- - - If checked, the bot will reply to all messages in the channel -
- `; - - // Function to set values after HTML is added to DOM to avoid XSS - const setValues = function() { - const appTokenInput = document.getElementById(`slackAppToken${index}`); - const botTokenInput = document.getElementById(`slackBotToken${index}`); - const channelIDInput = document.getElementById(`slackChannelID${index}`); - const alwaysReplyInput = document.getElementById(`slackAlwaysReply${index}`); - - if (appTokenInput) appTokenInput.value = config.appToken || ''; - if (botTokenInput) botTokenInput.value = config.botToken || ''; - if (channelIDInput) channelIDInput.value = config.channelID || ''; - if (alwaysReplyInput) alwaysReplyInput.checked = config.alwaysReply === 'true'; - }; - - return { html, setValues }; - }, - - /** - * Discord Connector Template - * @param {Object} config - Existing configuration values - * @param {Number} index - Connector index - * @returns {Object} HTML template and setValues function - */ - discord: function(config = {}, index) { - // Return HTML without values in the template string - const html = ` -
- - -
- -
- - -
- `; - - // Function to set values after HTML is added to DOM - const setValues = function() { - const tokenInput = document.getElementById(`discordToken${index}`); - const channelIDInput = document.getElementById(`discordChannelID${index}`); - - if (tokenInput) tokenInput.value = config.token || ''; - if (channelIDInput) channelIDInput.value = config.defaultChannel || ''; - }; - - return { html, setValues }; - }, - - /** - * GitHub Issues Connector Template - * @param {Object} config - Existing configuration values - * @param {Number} index - Connector index - * @returns {Object} HTML template and setValues function - */ - 'github-issues': function(config = {}, index) { - // Return HTML without values in the template string - const html = ` -
- - - Needs repo and read:org permissions -
- -
- - -
- -
- - -
- -
- - - If checked, the bot will reply to issues that have no replies yet -
- -
- - - How often to check for new issues (in seconds) -
- `; - - // Function to set values after HTML is added to DOM to avoid XSS - const setValues = function() { - const tokenInput = document.getElementById(`githubIssuesToken${index}`); - const ownerInput = document.getElementById(`githubIssuesOwner${index}`); - const repoInput = document.getElementById(`githubIssuesRepo${index}`); - const replyIfNoRepliesInput = document.getElementById(`githubIssuesReplyIfNoReplies${index}`); - const pollIntervalInput = document.getElementById(`githubIssuesPollInterval${index}`); - - if (tokenInput) tokenInput.value = config.token || ''; - if (ownerInput) ownerInput.value = config.owner || ''; - if (repoInput) repoInput.value = config.repository || ''; - if (replyIfNoRepliesInput) replyIfNoRepliesInput.checked = config.replyIfNoReplies === 'true'; - if (pollIntervalInput) pollIntervalInput.value = config.pollInterval || '60'; - }; - - return { html, setValues }; - }, - - /** - * GitHub PRs Connector Template - * @param {Object} config - Existing configuration values - * @param {Number} index - Connector index - * @returns {Object} HTML template and setValues function - */ - 'github-prs': function(config = {}, index) { - // Return HTML without values in the template string - const html = ` -
- - - Personal Access Token with repo permissions -
- -
- - -
- -
- - -
- -
- - - If checked, the bot will reply to pull requests that have no replies yet -
- -
- - - How often to check for new pull requests (in seconds) -
- `; - - // Function to set values after HTML is added to DOM to avoid XSS - const setValues = function() { - const tokenInput = document.getElementById(`githubPRsToken${index}`); - const ownerInput = document.getElementById(`githubPRsOwner${index}`); - const repoInput = document.getElementById(`githubPRsRepo${index}`); - const replyIfNoRepliesInput = document.getElementById(`githubPRsReplyIfNoReplies${index}`); - const pollIntervalInput = document.getElementById(`githubPRsPollInterval${index}`); - - if (tokenInput) tokenInput.value = config.token || ''; - if (ownerInput) ownerInput.value = config.owner || ''; - if (repoInput) repoInput.value = config.repository || ''; - if (replyIfNoRepliesInput) replyIfNoRepliesInput.checked = config.replyIfNoReplies === 'true'; - if (pollIntervalInput) pollIntervalInput.value = config.pollInterval || '60'; - }; - - return { html, setValues }; - }, - - /** - * IRC Connector Template - * @param {Object} config - Existing configuration values - * @param {Number} index - Connector index - * @returns {Object} HTML template and setValues function - */ - irc: function(config = {}, index) { - // Return HTML without values in the template string - const html = ` -
- - -
- -
- - -
- -
- - -
- -
- - -
- -
- - - If checked, the bot will always reply to messages, even if they are not directed at it -
- `; - - // Function to set values after HTML is added to DOM - const setValues = function() { - const serverInput = document.getElementById(`ircServer${index}`); - const portInput = document.getElementById(`ircPort${index}`); - const channelInput = document.getElementById(`ircChannel${index}`); - const nickInput = document.getElementById(`ircNick${index}`); - const alwaysReplyInput = document.getElementById(`ircAlwaysReply${index}`); - - if (serverInput) serverInput.value = config.server || ''; - if (portInput) portInput.value = config.port || '6667'; - if (channelInput) channelInput.value = config.channel || ''; - if (nickInput) nickInput.value = config.nickname || ''; - if (alwaysReplyInput) alwaysReplyInput.checked = config.alwaysReply === 'true'; - }; - - return { html, setValues }; - }, - - /** - * Twitter Connector Template - * @param {Object} config - Existing configuration values - * @param {Number} index - Connector index - * @returns {Object} HTML template and setValues function - */ - twitter: function(config = {}, index) { - // Return HTML without values in the template string - const html = ` -
- - -
- -
- - - Username of your Twitter bot (with or without @) -
- -
- - - If checked, the bot will not enforce Twitter's character limit -
- `; - - // Function to set values after HTML is added to DOM - const setValues = function() { - const tokenInput = document.getElementById(`twitterToken${index}`); - const botUsernameInput = document.getElementById(`twitterBotUsername${index}`); - const noCharLimitInput = document.getElementById(`twitterNoCharLimit${index}`); - - if (tokenInput) tokenInput.value = config.token || ''; - if (botUsernameInput) botUsernameInput.value = config.botUsername || ''; - if (noCharLimitInput) noCharLimitInput.checked = config.noCharacterLimit === 'true'; - }; - - return { html, setValues }; - }, - - /** - * Fallback template for any connector without a specific template - * @param {Object} config - Existing configuration values - * @param {Number} index - Connector index - * @returns {Object} HTML template and setValues function - */ - fallback: function(config = {}, index) { - // Convert config to a pretty-printed JSON string - let configStr = '{}'; - try { - if (typeof config === 'string') { - // If it's already a string, try to parse it first to pretty-print - configStr = JSON.stringify(JSON.parse(config), null, 2); - } else if (typeof config === 'object' && config !== null) { - configStr = JSON.stringify(config, null, 2); - } - } catch (e) { - console.error('Error formatting config:', e); - // If it's a string but not valid JSON, just use it as is - if (typeof config === 'string') { - configStr = config; - } - } - - // Return HTML without values in the template string - const html = ` -
- - - Enter the connector configuration as a JSON object -
- `; - - // Function to set values after HTML is added to DOM - const setValues = function() { - const configInput = document.getElementById(`connectorConfig${index}`); - - if (configInput) configInput.value = configStr; - }; - - return { html, setValues }; - } -}; diff --git a/webui/public/js/wizard.js b/webui/public/js/wizard.js deleted file mode 100644 index 6be5558..0000000 --- a/webui/public/js/wizard.js +++ /dev/null @@ -1,139 +0,0 @@ -/** - * Agent Form Wizard - Navigation and UI functionality - */ -document.addEventListener('DOMContentLoaded', function() { - // Check if the wizard exists on the page - const wizardSidebar = document.querySelector('.wizard-sidebar'); - if (!wizardSidebar) return; - - // Get all sections and nav items - const navItems = document.querySelectorAll('.wizard-nav-item'); - const sections = document.querySelectorAll('.form-section'); - const prevButton = document.getElementById('prevSection'); - const nextButton = document.getElementById('nextSection'); - const currentStepLabelEl = document.getElementById('currentStepLabel'); - const progressDotsContainer = document.getElementById('progressDots'); - - // Create progress dots - const totalSteps = sections.length; - - // Create dots for each section - if (progressDotsContainer) { - for (let i = 0; i < totalSteps; i++) { - const dot = document.createElement('div'); - dot.className = 'progress-dot'; - dot.setAttribute('data-index', i); - dot.addEventListener('click', () => setActiveSection(i)); - progressDotsContainer.appendChild(dot); - } - } - - // Get all progress dots - const progressDots = document.querySelectorAll('.progress-dot'); - - // Track current active section - let currentSectionIndex = 0; - - // Initialize - updateNavigation(); - - // Add click events to nav items - navItems.forEach((item, index) => { - item.addEventListener('click', () => { - setActiveSection(index); - }); - }); - - // Add click events to prev/next buttons - if (prevButton) { - prevButton.addEventListener('click', () => { - if (currentSectionIndex > 0) { - setActiveSection(currentSectionIndex - 1); - } - }); - } - - if (nextButton) { - nextButton.addEventListener('click', () => { - if (currentSectionIndex < sections.length - 1) { - setActiveSection(currentSectionIndex + 1); - } - }); - } - - /** - * Set the active section and update navigation - */ - function setActiveSection(index) { - // Remove active class from all sections and nav items - sections.forEach(section => section.classList.remove('active')); - navItems.forEach(item => item.classList.remove('active')); - progressDots.forEach(dot => dot.classList.remove('active')); - - // Add active class to current section, nav item, and dot - sections[index].classList.add('active'); - navItems[index].classList.add('active'); - if (progressDots[index]) { - progressDots[index].classList.add('active'); - } - - // Update current section index - currentSectionIndex = index; - - // Update navigation state - updateNavigation(); - - // Scroll to top of section - sections[index].scrollIntoView({behavior: 'smooth', block: 'start'}); - } - - /** - * Update navigation buttons and progress - */ - function updateNavigation() { - // Update section label - if (currentStepLabelEl && navItems[currentSectionIndex]) { - // Extract text content without the icon - const navText = navItems[currentSectionIndex].textContent.trim(); - currentStepLabelEl.textContent = navText; - } - - // Update prev/next buttons - if (prevButton) { - prevButton.disabled = currentSectionIndex === 0; - prevButton.style.opacity = currentSectionIndex === 0 ? 0.5 : 1; - } - - if (nextButton) { - nextButton.disabled = currentSectionIndex === sections.length - 1; - nextButton.style.opacity = currentSectionIndex === sections.length - 1 ? 0.5 : 1; - - // Change text for last step - if (currentSectionIndex === sections.length - 2) { - nextButton.innerHTML = 'Finish '; - } else { - nextButton.innerHTML = 'Next '; - } - } - } - - // Helper function to validate current section before proceeding - function validateCurrentSection() { - // Implement validation logic here based on the current section - // Return true if valid, false if not - return true; - } - - // Add to initAgentFormCommon function if it exists - if (typeof window.initAgentFormCommon === 'function') { - const originalInit = window.initAgentFormCommon; - - window.initAgentFormCommon = function(options) { - // Call the original initialization function - originalInit(options); - - // Now initialize the wizard navigation - setActiveSection(0); - }; - } -}); \ No newline at end of file diff --git a/webui/public/logo_1.png b/webui/public/logo_1.png deleted file mode 100644 index 117ccc6dbea3fd33ed1a992028bc5552f470260f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 906905 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

tYcRGR4fECw8P~og$&pyj6PZGAi? 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 z∾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�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

*Zg!ANp=|21*{V4eW=0T(<#cqwagT{24IG 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%0DM`P>}F5G!1U5 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 z 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.qY0G0EBzfXFwG8^uu|g3?)fZNJ=7{A9Dr3fGto3 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

xntYeS-poWu}wWGB?12}ndP^%=d| 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�QO5q$#59-fXNJC3;7@t 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%0AL%n-vM{P=Ob=r{OI}ZkDratu5Mr4 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

_!N2Lsi@ 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

BOP!!x{d4!8%Lg9BawfBw1qxqsb-n}GM> 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 diff --git a/webui/routes.go b/webui/routes.go index af90364..6ea82ce 100644 --- a/webui/routes.go +++ b/webui/routes.go @@ -19,12 +19,6 @@ import ( "github.com/mudler/LocalAgent/services" ) -//go:embed views/* -var viewsfs embed.FS - -//go:embed public/* -var embeddedFiles embed.FS - //go:embed react-ui/dist/* var reactUI embed.FS @@ -37,12 +31,6 @@ func (app *App) registerRoutes(pool *state.AgentPool, webapp *fiber.App) { Browse: true, })) - /* webapp.Use("/public", filesystem.New(filesystem.Config{ - Root: http.FS(embeddedFiles), - PathPrefix: "public", - Browse: true, - })) - */ if len(app.config.ApiKeys) > 0 { kaConfig, err := GetKeyAuthConfig(app.config.ApiKeys) if err != nil || kaConfig == nil { @@ -51,15 +39,9 @@ func (app *App) registerRoutes(pool *state.AgentPool, webapp *fiber.App) { webapp.Use(v2keyauth.New(*kaConfig)) } - /* webapp.Get("/", func(c *fiber.Ctx) error { - return c.Render("views/index", fiber.Map{ - "Agents": pool.List(), - "AgentCount": len(pool.List()), - "Actions": len(services.AvailableActions), - "Connectors": len(services.AvailableConnectors), - }) - }) - */ + webapp.Get("/", func(c *fiber.Ctx) error { + return c.Redirect("/app") + }) webapp.Use("/app", filesystem.New(filesystem.Config{ Root: http.FS(reactUI), PathPrefix: "react-ui/dist", @@ -75,31 +57,6 @@ func (app *App) registerRoutes(pool *state.AgentPool, webapp *fiber.App) { return c.Send(indexHTML) }) - /* webapp.Get("/agents", func(c *fiber.Ctx) error { - statuses := map[string]bool{} - for _, a := range pool.List() { - agent := pool.GetAgent(a) - if agent == nil { - xlog.Error("Agent not found", "name", a) - continue - } - statuses[a] = !agent.Paused() - } - return c.Render("views/agents", fiber.Map{ - "Agents": pool.List(), - "Status": statuses, - }) - }) - */ - /* webapp.Get("/api/create", func(c *fiber.Ctx) error { - return c.Render("views/create", fiber.Map{ - "Actions": services.AvailableActions, - "Connectors": services.AvailableConnectors, - "PromptBlocks": services.AvailableBlockPrompts, - }) - }) - */ - // Define a route for the GET method on the root path '/' webapp.Get("/sse/:name", func(c *fiber.Ctx) error { m := pool.GetManager(c.Params("name")) if m == nil { @@ -110,68 +67,16 @@ func (app *App) registerRoutes(pool *state.AgentPool, webapp *fiber.App) { return nil }) - /*webapp.Get("/status/:name", func(c *fiber.Ctx) error { - history := pool.GetStatusHistory(c.Params("name")) - if history == nil { - history = &state.Status{ActionResults: []types.ActionState{}} - } - // reverse history - - return c.Render("views/status", fiber.Map{ - "Name": c.Params("name"), - "History": Reverse(history.Results()), - }) - }) - - webapp.Get("/notify/:name", app.Notify(pool)) - webapp.Post("/chat/:name", app.Chat(pool)) - */ webapp.Post("/api/agent/create", app.Create(pool)) webapp.Delete("/api/agent/:name", app.Delete(pool)) webapp.Put("/api/agent/:name/pause", app.Pause(pool)) webapp.Put("/api/agent/:name/start", app.Start(pool)) - // Add JSON-based chat API endpoint - webapp.Post("/api/chat/:name", app.ChatAPI(pool)) + webapp.Post("/api/chat/:name", app.Chat(pool)) + webapp.Post("/api/notify/:name", app.Notify(pool)) webapp.Post("/v1/responses", app.Responses(pool)) - /* webapp.Get("/talk/:name", func(c *fiber.Ctx) error { - return c.Render("views/chat", fiber.Map{ - // "Character": agent.Character, - "Name": c.Params("name"), - }) - }) - - webapp.Get("/settings/:name", func(c *fiber.Ctx) error { - status := false - for _, a := range pool.List() { - if a == c.Params("name") { - status = !pool.GetAgent(a).Paused() - } - } - - return c.Render("views/settings", fiber.Map{ - "Name": c.Params("name"), - "Status": status, - "Actions": services.AvailableActions, - "Connectors": services.AvailableConnectors, - "PromptBlocks": services.AvailableBlockPrompts, - }) - }) - - webapp.Get("/actions-playground", func(c *fiber.Ctx) error { - return c.Render("views/actions", fiber.Map{}) - }) - - webapp.Get("/group-create", func(c *fiber.Ctx) error { - return c.Render("views/group-create", fiber.Map{ - "Actions": services.AvailableActions, - "Connectors": services.AvailableConnectors, - "PromptBlocks": services.AvailableBlockPrompts, - }) - }) - */ // New API endpoints for getting and updating agent configuration webapp.Get("/api/agent/:name/config", app.GetAgentConfig(pool)) webapp.Put("/api/agent/:name/config", app.UpdateAgentConfig(pool)) diff --git a/webui/views/actions.html b/webui/views/actions.html deleted file mode 100644 index f4e2c33..0000000 --- a/webui/views/actions.html +++ /dev/null @@ -1,291 +0,0 @@ - - - - - - Actions Playground - {{template "views/partials/header"}} - - - {{template "views/partials/menu"}} - - -

- -
-
-

Actions Playground

-

Test and execute actions directly from the UI

-
- -
-

Select an Action

-
- - -
-
- - - - - -
-

© 2025 LocalAgent.

-
-
- - - - - - \ No newline at end of file diff --git a/webui/views/agents.html b/webui/views/agents.html deleted file mode 100644 index 1781f4a..0000000 --- a/webui/views/agents.html +++ /dev/null @@ -1,332 +0,0 @@ - - - - - - Agent List - {{template "views/partials/header"}} - - - - {{template "views/partials/menu"}} - - -
- -
- -
-
-

Agent List

-

Manage and interact with your AI agents

-
- -
- - Add New Agent - - -
- - - -
- {{ $status := .Status }} - {{ range .Agents }} -
-
-
- -
- -
-
-

{{.}}

-
- - {{ if eq (index $status .) true }}Active{{ else }}Inactive{{ end }} - -
- - - -
- - - - -
-
-
- {{ end }} -
- - - -
-

© 2025 LocalAgent.

-
-
- - - - \ No newline at end of file diff --git a/webui/views/chat.html b/webui/views/chat.html deleted file mode 100644 index 92a86f0..0000000 --- a/webui/views/chat.html +++ /dev/null @@ -1,91 +0,0 @@ - - - - Smart Agent Interface - {{template "views/partials/header"}} - - - - {{template "views/partials/menu"}} -
- - -
-

Talk to '{{.Name}}'

-
- - -
- -
-

Clients:

-
- -
-
-
- -
-

Status:

-
- -
-
-
-
-
- - -
-

Agent:

-
- -
-
-
- - -
-
- -
-
-
- -
- - - - diff --git a/webui/views/create.html b/webui/views/create.html deleted file mode 100644 index 95413dc..0000000 --- a/webui/views/create.html +++ /dev/null @@ -1,154 +0,0 @@ - - - - Create New Agent - {{template "views/partials/header"}} - - - - - - - {{template "views/partials/menu"}} -
-
-

Create New Agent

- -
- {{template "views/partials/agent-form" . }} - - -
-
- - -
- - - - -
-
- - -
- -
- - - - diff --git a/webui/views/group-create.html b/webui/views/group-create.html deleted file mode 100644 index f378e54..0000000 --- a/webui/views/group-create.html +++ /dev/null @@ -1,600 +0,0 @@ - - - - Create Agent Group - {{template "views/partials/header"}} - - - - - - - - {{template "views/partials/menu"}} -
-
-

Create Agent Group

- - -
-
-
1
-
Generate Profiles
-
-
-
2
-
Review & Select
-
-
-
3
-
Configure Settings
-
-
- - -
-

Generate Agent Profiles

-

Describe the group of agents you want to create. Be specific about their roles, relationships, and purpose.

- -
- -
- -
- -
-
- - -
- -

Generating agent profiles...

-
- - -
-

Review & Select Agent Profiles

-

Select the agents you want to create. You can customize their details before creation.

- -
- -
- -
- -
- -
- - -
-
- - -
-

Configure Common Settings

-

Configure common settings for all selected agents. These settings will be applied to each agent.

- -
- -
- -
-

Basic Information from Profiles

-

The name, description, and system prompt for each agent will be taken from the profiles you selected in the previous step.

-
-
- - -
- {{template "views/partials/agent-form" . }} -
-
- -
- - -
-
-
- - -
- - - - -
-
- - -
- -
- - - - diff --git a/webui/views/index.html b/webui/views/index.html deleted file mode 100644 index ec6e144..0000000 --- a/webui/views/index.html +++ /dev/null @@ -1,224 +0,0 @@ - - - - Smart Assistant Dashboard - {{template "views/partials/header"}} - - - - {{template "views/partials/menu"}} - - - -
- -
- - - - \ No newline at end of file diff --git a/webui/views/login.html b/webui/views/login.html deleted file mode 100644 index 01a5f86..0000000 --- a/webui/views/login.html +++ /dev/null @@ -1,215 +0,0 @@ - - -{{template "views/partials/header" .}} - - -
- - {{template "views/partials/menu" .}} - -
- -
-
-
- -
-
- -
-
-

- - Authorization Required - -

-

Please enter your access token to continue

-
- -
-
- -
-
- -
- -
-
- -
- -
-
- -
-
- - Instance is token protected -
-

Current time (UTC): {{.CurrentDate}}

-
-
-
-
- -
- - - - - \ No newline at end of file diff --git a/webui/views/partials/agent-form.html b/webui/views/partials/agent-form.html deleted file mode 100644 index 42353ad..0000000 --- a/webui/views/partials/agent-form.html +++ /dev/null @@ -1,307 +0,0 @@ -
- -
-
    -
  • - Basic Information -
  • -
  • - Connectors -
  • -
  • - Actions -
  • -
  • - MCP Servers -
  • -
  • - Memory Settings -
  • -
  • - Model Settings -
  • -
  • - Prompts & Goals -
  • -
  • - Advanced Settings -
  • -
-
- - -
- -
-

Basic Information

- -
- - {{ if .Name }} - - {{ else }} - - {{ end }} -
- -
- - -
- -
- - -
- -
- -
- -
- -
-
- - -
-

Connectors

- -
- -
- -
- -
-
- - -
-

Actions

- -
- -
- -
- -
-
- - -
-

MCP Servers

- -
- -
- -
- -
-
- - -
-

Memory Settings

- -
- -
- -
- - -
- -
- -
- -
- -
-
- - -
-

Model Settings

- -
- - -
- -
- - -
- -
- - -
- -
- - -
- -
- - -
- -
- - -
- -
- -
-
- - -
-

Prompts & Goals

- -
- -
- -
- -
- -
- - -
- -
- - -
-
- - -
-

Advanced Settings

- -
- -
- -
- -
- -
- -
- -
- -
- -
- - -
-
-
-
- - -
-
- -
- -
-
- -
-
- Basic Information -
-
- -
- -
-
\ No newline at end of file diff --git a/webui/views/partials/header.html b/webui/views/partials/header.html deleted file mode 100644 index 6c5b1a4..0000000 --- a/webui/views/partials/header.html +++ /dev/null @@ -1,10 +0,0 @@ - - - - - - - - - - \ No newline at end of file diff --git a/webui/views/partials/menu.html b/webui/views/partials/menu.html deleted file mode 100644 index 84eaaed..0000000 --- a/webui/views/partials/menu.html +++ /dev/null @@ -1,105 +0,0 @@ - -
- - \ No newline at end of file diff --git a/webui/views/settings.html b/webui/views/settings.html deleted file mode 100644 index e3f2a11..0000000 --- a/webui/views/settings.html +++ /dev/null @@ -1,462 +0,0 @@ - - - - Agent settings {{.Name}} - {{template "views/partials/header"}} - - - - - - - {{template "views/partials/menu"}} - - -
- -
- -
-
-

Agent settings - {{.Name}}

-
- -
- - -
-

Edit Agent Configuration

-
- - - {{template "views/partials/agent-form" .}} - - -
-
- -
-

Agent Control

-
- -
-
- -
-

Export Data

-

Export your agent configuration for backup or transfer.

- -
- -
-

Danger Zone

-

Permanently delete this agent and all associated data. This action cannot be undone.

- -
- - -
-
- - - - \ No newline at end of file diff --git a/webui/views/status.html b/webui/views/status.html deleted file mode 100644 index 8339c3f..0000000 --- a/webui/views/status.html +++ /dev/null @@ -1,61 +0,0 @@ - - - - Smart Agent status - {{template "views/partials/header"}} - - - - {{template "views/partials/menu"}} -
- -
-

{{.Name}}

-
- -
-
- {{ range .History }} - -
-

Agent:

-
- Result: {{.Result}} Action: {{.Action}} Params: {{.Params}} Reasoning: {{.Reasoning}} -
-
- {{end}} -
-
- - From f3c06b1bfb0ad4dbcf320486c82a8621107e81e4 Mon Sep 17 00:00:00 2001 From: Ettore Di Giacinto Date: Tue, 1 Apr 2025 18:00:37 +0200 Subject: [PATCH 356/399] feat(api): implement stateful responses api (#122) * feat(api): implement stateful responses api Signed-off-by: mudler * fix(tests): align client to API changes Signed-off-by: mudler --------- Signed-off-by: mudler --- main.go | 2 ++ pkg/client/agents.go | 8 +++--- services/connectors/conversationstracker.go | 9 ++++++ webui/app.go | 25 +++++++++++++++-- webui/options.go | 31 +++++++++++++++------ webui/routes.go | 9 +++++- 6 files changed, 68 insertions(+), 16 deletions(-) diff --git a/main.go b/main.go index 1ce06ba..bb6412a 100644 --- a/main.go +++ b/main.go @@ -21,6 +21,7 @@ var localRAG = os.Getenv("LOCALAGENT_LOCALRAG_URL") var withLogs = os.Getenv("LOCALAGENT_ENABLE_CONVERSATIONS_LOGGING") == "true" var apiKeysEnv = os.Getenv("LOCALAGENT_API_KEYS") var imageModel = os.Getenv("LOCALAGENT_IMAGE_MODEL") +var conversationDuration = os.Getenv("LOCALAGENT_CONVERSATION_DURATION") func init() { if testModel == "" { @@ -73,6 +74,7 @@ func main() { // Create the application app := webui.NewApp( webui.WithPool(pool), + webui.WithConversationStoreduration(conversationDuration), webui.WithApiKeys(apiKeys...), webui.WithLLMAPIUrl(apiURL), webui.WithLLMAPIKey(apiKey), diff --git a/pkg/client/agents.go b/pkg/client/agents.go index 220439c..4e690c6 100644 --- a/pkg/client/agents.go +++ b/pkg/client/agents.go @@ -54,7 +54,7 @@ func (c *Client) GetAgentConfig(name string) (*AgentConfig, error) { // CreateAgent creates a new agent with the given configuration func (c *Client) CreateAgent(config *AgentConfig) error { - resp, err := c.doRequest(http.MethodPost, "/create", config) + resp, err := c.doRequest(http.MethodPost, "/api/agent/create", config) if err != nil { return err } @@ -96,7 +96,7 @@ func (c *Client) UpdateAgentConfig(name string, config *AgentConfig) error { // DeleteAgent removes an agent func (c *Client) DeleteAgent(name string) error { - path := fmt.Sprintf("/delete/%s", name) + path := fmt.Sprintf("/api/agent/%s", name) resp, err := c.doRequest(http.MethodDelete, path, nil) if err != nil { return err @@ -116,7 +116,7 @@ func (c *Client) DeleteAgent(name string) error { // PauseAgent pauses an agent func (c *Client) PauseAgent(name string) error { - path := fmt.Sprintf("/pause/%s", name) + path := fmt.Sprintf("/api/agent/pause/%s", name) resp, err := c.doRequest(http.MethodPut, path, nil) if err != nil { return err @@ -136,7 +136,7 @@ func (c *Client) PauseAgent(name string) error { // StartAgent starts a paused agent func (c *Client) StartAgent(name string) error { - path := fmt.Sprintf("/start/%s", name) + path := fmt.Sprintf("/api/agent/start/%s", name) resp, err := c.doRequest(http.MethodPut, path, nil) if err != nil { return err diff --git a/services/connectors/conversationstracker.go b/services/connectors/conversationstracker.go index cec34fe..bf5343a 100644 --- a/services/connectors/conversationstracker.go +++ b/services/connectors/conversationstracker.go @@ -73,3 +73,12 @@ func (c *ConversationTracker[K]) AddMessage(key K, message openai.ChatCompletion c.currentconversation[key] = append(c.currentconversation[key], message) c.lastMessageTime[key] = time.Now() } + +func (c *ConversationTracker[K]) SetConversation(key K, messages []openai.ChatCompletionMessage) { + // Lock the conversation mutex to update the conversation history + c.convMutex.Lock() + defer c.convMutex.Unlock() + + c.currentconversation[key] = messages + c.lastMessageTime[key] = time.Now() +} diff --git a/webui/app.go b/webui/app.go index 8688c5d..64fe937 100644 --- a/webui/app.go +++ b/webui/app.go @@ -10,11 +10,14 @@ import ( "strings" "time" + "github.com/google/uuid" coreTypes "github.com/mudler/LocalAgent/core/types" "github.com/mudler/LocalAgent/pkg/llm" "github.com/mudler/LocalAgent/pkg/xlog" "github.com/mudler/LocalAgent/services" + "github.com/mudler/LocalAgent/services/connectors" "github.com/mudler/LocalAgent/webui/types" + "github.com/sashabaranov/go-openai" "github.com/sashabaranov/go-openai/jsonschema" "github.com/mudler/LocalAgent/core/sse" @@ -405,7 +408,7 @@ func (a *App) ListActions() func(c *fiber.Ctx) error { } } -func (a *App) Responses(pool *state.AgentPool) func(c *fiber.Ctx) error { +func (a *App) Responses(pool *state.AgentPool, tracker *connectors.ConversationTracker[string]) func(c *fiber.Ctx) error { return func(c *fiber.Ctx) error { var request types.RequestBody if err := c.BodyParser(&request); err != nil { @@ -414,9 +417,15 @@ func (a *App) Responses(pool *state.AgentPool) func(c *fiber.Ctx) error { request.SetInputByType() - agentName := request.Model + var previousResponseID string + conv := []openai.ChatCompletionMessage{} + if request.PreviousResponseID != nil { + previousResponseID = *request.PreviousResponseID + conv = tracker.GetConversation(previousResponseID) + } - messages := request.ToChatCompletionMessages() + agentName := request.Model + messages := append(conv, request.ToChatCompletionMessages()...) a := pool.GetAgent(agentName) if a == nil { @@ -435,7 +444,17 @@ func (a *App) Responses(pool *state.AgentPool) func(c *fiber.Ctx) error { xlog.Info("we got a response from the agent", "agent", agentName, "response", res.Response) } + conv = append(conv, openai.ChatCompletionMessage{ + Role: "assistant", + Content: res.Response, + }) + + id := uuid.New().String() + + tracker.SetConversation(id, conv) + response := types.ResponseBody{ + ID: id, Object: "response", // "created_at": 1741476542, CreatedAt: time.Now().Unix(), diff --git a/webui/options.go b/webui/options.go index 608a0db..f0c649d 100644 --- a/webui/options.go +++ b/webui/options.go @@ -1,15 +1,20 @@ package webui -import "github.com/mudler/LocalAgent/core/state" +import ( + "time" + + "github.com/mudler/LocalAgent/core/state" +) type Config struct { - DefaultChunkSize int - Pool *state.AgentPool - ApiKeys []string - LLMAPIURL string - LLMAPIKey string - LLMModel string - StateDir string + DefaultChunkSize int + Pool *state.AgentPool + ApiKeys []string + LLMAPIURL string + LLMAPIKey string + LLMModel string + StateDir string + ConversationStoreDuration time.Duration } type Option func(*Config) @@ -20,6 +25,16 @@ func WithDefaultChunkSize(size int) Option { } } +func WithConversationStoreduration(duration string) Option { + return func(c *Config) { + d, err := time.ParseDuration(duration) + if err != nil { + d = 1 * time.Hour + } + c.ConversationStoreDuration = d + } +} + func WithStateDir(dir string) Option { return func(c *Config) { c.StateDir = dir diff --git a/webui/routes.go b/webui/routes.go index 6ea82ce..efe2384 100644 --- a/webui/routes.go +++ b/webui/routes.go @@ -13,6 +13,8 @@ import ( "github.com/gofiber/fiber/v2/middleware/filesystem" "github.com/gofiber/fiber/v2/middleware/keyauth" "github.com/mudler/LocalAgent/core/sse" + "github.com/mudler/LocalAgent/services/connectors" + "github.com/mudler/LocalAgent/core/state" "github.com/mudler/LocalAgent/core/types" "github.com/mudler/LocalAgent/pkg/xlog" @@ -75,12 +77,17 @@ func (app *App) registerRoutes(pool *state.AgentPool, webapp *fiber.App) { webapp.Post("/api/chat/:name", app.Chat(pool)) webapp.Post("/api/notify/:name", app.Notify(pool)) - webapp.Post("/v1/responses", app.Responses(pool)) + conversationTracker := connectors.NewConversationTracker[string](app.config.ConversationStoreDuration) + + webapp.Post("/v1/responses", app.Responses(pool, conversationTracker)) // New API endpoints for getting and updating agent configuration webapp.Get("/api/agent/:name/config", app.GetAgentConfig(pool)) webapp.Put("/api/agent/:name/config", app.UpdateAgentConfig(pool)) + // Metadata endpoint for agent configuration fields + webapp.Get("/api/agent/config/metadata", app.GetAgentConfigMeta()) + // Add endpoint for getting agent config metadata webapp.Get("/api/meta/agent/config", app.GetAgentConfigMeta()) From a5ba49ec9388c1e1f2cb4c02f67b00ec7e025dbe Mon Sep 17 00:00:00 2001 From: Richard Palethorpe Date: Tue, 1 Apr 2025 15:37:42 +0100 Subject: [PATCH 357/399] fix(ui): rm broken status message (it's in the button already) --- webui/react-ui/src/pages/GroupCreate.jsx | 8 -------- 1 file changed, 8 deletions(-) diff --git a/webui/react-ui/src/pages/GroupCreate.jsx b/webui/react-ui/src/pages/GroupCreate.jsx index 41c44f9..0d3ad54 100644 --- a/webui/react-ui/src/pages/GroupCreate.jsx +++ b/webui/react-ui/src/pages/GroupCreate.jsx @@ -214,14 +214,6 @@ function GroupCreate() {
- {/* Loader */} - {generatingProfiles && ( -
- -

Generating agent profiles...

-
- )} - {/* Step 2: Review & Select Profiles */}

Review & Select Agent Profiles

From 5023bc77f4975a0cae0beffbfa34f4dabc1fb0f1 Mon Sep 17 00:00:00 2001 From: Richard Palethorpe Date: Tue, 1 Apr 2025 15:38:17 +0100 Subject: [PATCH 358/399] feat(ui): Add custom action config meta data --- core/action/custom.go | 32 ++++++++++++++++++++++++++++++++ services/actions.go | 2 +- 2 files changed, 33 insertions(+), 1 deletion(-) diff --git a/core/action/custom.go b/core/action/custom.go index 3397bff..5eaef04 100644 --- a/core/action/custom.go +++ b/core/action/custom.go @@ -6,6 +6,7 @@ import ( "strings" "github.com/mudler/LocalAgent/core/types" + "github.com/mudler/LocalAgent/pkg/config" "github.com/mudler/LocalAgent/pkg/xlog" "github.com/sashabaranov/go-openai/jsonschema" "github.com/traefik/yaegi/interp" @@ -129,3 +130,34 @@ func (a *CustomAction) Definition() types.ActionDefinition { Required: requiredFields(), } } + +func CustomConfigMeta() []config.Field { + return []config.Field{ + { + Name: "name", + Label: "Action Name", + Type: config.FieldTypeText, + Required: true, + HelpText: "Name of the custom action", + }, + { + Name: "description", + Label: "Description", + Type: config.FieldTypeTextarea, + HelpText: "Description of the custom action", + }, + { + Name: "code", + Label: "Code", + Type: config.FieldTypeTextarea, + Required: true, + HelpText: "Go code for the custom action", + }, + { + Name: "unsafe", + Label: "Unsafe", + Type: config.FieldTypeCheckbox, + HelpText: "Allow unsafe code execution", + }, + } +} diff --git a/services/actions.go b/services/actions.go index ad94e3a..5590911 100644 --- a/services/actions.go +++ b/services/actions.go @@ -217,7 +217,7 @@ func ActionsConfigMeta() []config.FieldGroup { { Name: "custom", Label: "Custom", - Fields: []config.Field{}, + Fields: action.CustomConfigMeta(), }, { Name: "scraper", From 99e00119203be98decb9f8e884f9f35ecb449dd4 Mon Sep 17 00:00:00 2001 From: Richard Palethorpe Date: Tue, 1 Apr 2025 15:49:41 +0100 Subject: [PATCH 359/399] Revert "chore(ui): Nuke original web UI, in favor of React" This reverts commit 86cb9f128266bf5088863819fbe730be083ddbf6. --- webui/app.go | 68 ++- webui/elements.go | 39 ++ webui/public/css/styles.css | 714 +++++++++++++++++++++++++ webui/public/css/wizard.css | 254 +++++++++ webui/public/dash.png | Bin 0 -> 1138154 bytes webui/public/dash2.png | Bin 0 -> 120694 bytes webui/public/js/agent-form.js | 564 +++++++++++++++++++ webui/public/js/common.js | 44 ++ webui/public/js/connector-templates.js | 475 ++++++++++++++++ webui/public/js/wizard.js | 139 +++++ webui/public/logo_1.png | Bin 0 -> 906905 bytes webui/routes.go | 105 +++- webui/views/actions.html | 291 ++++++++++ webui/views/agents.html | 332 ++++++++++++ webui/views/chat.html | 91 ++++ webui/views/create.html | 154 ++++++ webui/views/group-create.html | 600 +++++++++++++++++++++ webui/views/index.html | 224 ++++++++ webui/views/login.html | 215 ++++++++ webui/views/partials/agent-form.html | 307 +++++++++++ webui/views/partials/header.html | 10 + webui/views/partials/menu.html | 105 ++++ webui/views/settings.html | 462 ++++++++++++++++ webui/views/status.html | 61 +++ 24 files changed, 5246 insertions(+), 8 deletions(-) create mode 100644 webui/elements.go create mode 100644 webui/public/css/styles.css create mode 100644 webui/public/css/wizard.css create mode 100644 webui/public/dash.png create mode 100644 webui/public/dash2.png create mode 100644 webui/public/js/agent-form.js create mode 100644 webui/public/js/common.js create mode 100644 webui/public/js/connector-templates.js create mode 100644 webui/public/js/wizard.js create mode 100644 webui/public/logo_1.png create mode 100644 webui/views/actions.html create mode 100644 webui/views/agents.html create mode 100644 webui/views/chat.html create mode 100644 webui/views/create.html create mode 100644 webui/views/group-create.html create mode 100644 webui/views/index.html create mode 100644 webui/views/login.html create mode 100644 webui/views/partials/agent-form.html create mode 100644 webui/views/partials/header.html create mode 100644 webui/views/partials/menu.html create mode 100644 webui/views/settings.html create mode 100644 webui/views/status.html diff --git a/webui/app.go b/webui/app.go index 64fe937..d85c77f 100644 --- a/webui/app.go +++ b/webui/app.go @@ -25,6 +25,7 @@ import ( "github.com/donseba/go-htmx" fiber "github.com/gofiber/fiber/v2" + "github.com/gofiber/template/html/v2" ) type ( @@ -37,10 +38,13 @@ type ( func NewApp(opts ...Option) *App { config := NewConfig(opts...) + engine := html.NewFileSystem(http.FS(viewsfs), ".html") // Initialize a new Fiber app // Pass the engine to the Views - webapp := fiber.New(fiber.Config{}) + webapp := fiber.New(fiber.Config{ + Views: engine, + }) a := &App{ htmx: htmx.New(), @@ -245,9 +249,67 @@ func (a *App) ImportAgent(pool *state.AgentPool) func(c *fiber.Ctx) error { } } -// Chat provides a JSON-based API for chat functionality -// This is designed to work better with the React UI func (a *App) Chat(pool *state.AgentPool) func(c *fiber.Ctx) error { + return func(c *fiber.Ctx) error { + payload := struct { + Message string `json:"message"` + }{} + + if err := c.BodyParser(&payload); err != nil { + return err + } + agentName := c.Params("name") + manager := pool.GetManager(agentName) + + query := strings.Clone(payload.Message) + if query == "" { + _, _ = c.Write([]byte("Please enter a message.")) + return nil + } + manager.Send( + sse.NewMessage( + chatDiv(query, "gray"), + ).WithEvent("messages")) + + go func() { + a := pool.GetAgent(agentName) + if a == nil { + xlog.Info("Agent not found in pool", c.Params("name")) + return + } + res := a.Ask( + coreTypes.WithText(query), + ) + if res.Error != nil { + xlog.Error("Error asking agent", "agent", agentName, "error", res.Error) + } else { + xlog.Info("we got a response from the agent", "agent", agentName, "response", res.Response) + } + manager.Send( + sse.NewMessage( + chatDiv(res.Response, "blue"), + ).WithEvent("messages")) + manager.Send( + sse.NewMessage( + disabledElement("inputMessage", false), // show again the input + ).WithEvent("message_status")) + + //result := `done` + // _, _ = w.Write([]byte(result)) + }() + + manager.Send( + sse.NewMessage( + loader() + disabledElement("inputMessage", true), + ).WithEvent("message_status")) + + return nil + } +} + +// ChatAPI provides a JSON-based API for chat functionality +// This is designed to work better with the React UI +func (a *App) ChatAPI(pool *state.AgentPool) func(c *fiber.Ctx) error { return func(c *fiber.Ctx) error { // Parse the request body payload := struct { diff --git a/webui/elements.go b/webui/elements.go new file mode 100644 index 0000000..9a92b5b --- /dev/null +++ b/webui/elements.go @@ -0,0 +1,39 @@ +package webui + +import ( + "fmt" + "strings" + + elem "github.com/chasefleming/elem-go" + "github.com/chasefleming/elem-go/attrs" +) + +func chatDiv(content string, color string) string { + div := elem.Div(attrs.Props{ + // attrs.ID: "container", + attrs.Class: fmt.Sprintf("p-2 my-2 rounded bg-%s-600", color), + }, + elem.Raw(htmlIfy(content)), + ) + return div.Render() +} + +func loader() string { + return elem.Div(attrs.Props{ + attrs.Class: "loader", + }).Render() +} + +func disabledElement(id string, disabled bool) string { + return elem.Script(nil, + elem.If(disabled, + elem.Raw(`document.getElementById('`+id+`').disabled = true`), + elem.Raw(`document.getElementById('`+id+`').disabled = false`), + )).Render() +} + +func htmlIfy(s string) string { + s = strings.TrimSpace(s) + s = strings.ReplaceAll(s, "\n", "
") + return s +} diff --git a/webui/public/css/styles.css b/webui/public/css/styles.css new file mode 100644 index 0000000..f466cbf --- /dev/null +++ b/webui/public/css/styles.css @@ -0,0 +1,714 @@ +:root { + --primary: #00ff95; + --secondary: #ff00b1; + --tertiary: #5e00ff; + --dark-bg: #111111; + --darker-bg: #0a0a0a; + --medium-bg: #222222; + --light-bg: #333333; + --neon-glow: 0 0 8px rgba(0, 255, 149, 0.7); + --pink-glow: 0 0 8px rgba(255, 0, 177, 0.7); + --purple-glow: 0 0 8px rgba(94, 0, 255, 0.7); +} + +/* Glitch effect animation */ +@keyframes glitch { + 0% { transform: translate(0); } + 20% { transform: translate(-2px, 2px); } + 40% { transform: translate(-2px, -2px); } + 60% { transform: translate(2px, 2px); } + 80% { transform: translate(2px, -2px); } + 100% { transform: translate(0); } +} + +/* Neon pulse animation */ +@keyframes neonPulse { + 0% { text-shadow: 0 0 7px var(--primary), 0 0 10px var(--primary); } + 50% { text-shadow: 0 0 15px var(--primary), 0 0 25px var(--primary); } + 100% { text-shadow: 0 0 7px var(--primary), 0 0 10px var(--primary); } +} + +/* Scanning line effect */ +@keyframes scanline { + 0% { transform: translateY(-100%); } + 100% { transform: translateY(100%); } +} + +body { + font-family: 'Outfit', sans-serif; + background-color: var(--dark-bg); + color: #ffffff; + padding: 20px; + position: relative; + overflow-x: hidden; + background-image: + radial-gradient(circle at 10% 20%, rgba(0, 255, 149, 0.05) 0%, transparent 20%), + radial-gradient(circle at 90% 80%, rgba(255, 0, 177, 0.05) 0%, transparent 20%), + radial-gradient(circle at 50% 50%, rgba(94, 0, 255, 0.05) 0%, transparent 30%), + linear-gradient(180deg, var(--darker-bg) 0%, var(--dark-bg) 100%); + background-attachment: fixed; +} + +body::before { + content: ""; + position: fixed; + top: 0; + left: 0; + right: 0; + bottom: 0; + background: repeating-linear-gradient( + transparent, + transparent 2px, + rgba(0, 0, 0, 0.1) 2px, + rgba(0, 0, 0, 0.1) 4px + ); + pointer-events: none; + z-index: 1000; + opacity: 0.3; +} + +body::after { + content: ""; + position: fixed; + top: 0; + left: 0; + width: 100%; + height: 4px; + background: linear-gradient(90deg, var(--primary), var(--secondary)); + opacity: 0.7; + z-index: 1001; + animation: scanline 6s linear infinite; + pointer-events: none; +} + +h1, h2, h3, h4, h5, h6 { + font-weight: 700; +} + +h1 { + font-family: 'Permanent Marker', cursive; + color: var(--primary); + text-shadow: var(--neon-glow); + margin-bottom: 1rem; + position: relative; + animation: neonPulse 2s infinite; +} + +h1:hover { + animation: glitch 0.3s infinite; +} + +h2 { + font-size: 1.5rem; + color: var(--secondary); + text-shadow: var(--pink-glow); + margin-bottom: 0.5rem; +} + +.section-box { + background-color: rgba(17, 17, 17, 0.85); + border: 1px solid var(--primary); + padding: 25px; + margin-bottom: 20px; + border-radius: 6px; + box-shadow: 0 8px 20px rgba(0, 0, 0, 0.4), 0 0 0 1px var(--primary), inset 0 0 20px rgba(0, 0, 0, 0.3); + position: relative; + overflow: hidden; +} + +.section-box::before { + content: ""; + position: absolute; + top: 0; + left: 0; + right: 0; + height: 2px; + background: linear-gradient(90deg, var(--primary), var(--secondary), var(--tertiary), var(--primary)); + background-size: 200% 100%; + animation: gradientMove 3s linear infinite; +} + +@keyframes gradientMove { + 0% { background-position: 0% 50%; } + 100% { background-position: 100% 50%; } +} + +input, button, textarea, select { + width: 100%; + padding: 12px; + margin-top: 8px; + border-radius: 4px; + border: 1px solid var(--medium-bg); + background-color: var(--light-bg); + color: white; + transition: all 0.3s ease; +} + +input[type="text"], input[type="file"], textarea { + background-color: var(--light-bg); + border-left: 3px solid var(--primary); + color: white; +} + +input:focus, textarea:focus, select:focus { + outline: none; + border-color: var(--primary); + box-shadow: var(--neon-glow); +} + +button { + background: linear-gradient(135deg, var(--tertiary), var(--secondary)); + color: white; + cursor: pointer; + border: none; + position: relative; + overflow: hidden; + font-weight: 600; + text-transform: uppercase; + letter-spacing: 1px; + transition: all 0.3s ease; +} + +button::before { + content: ""; + position: absolute; + top: 0; + left: -100%; + width: 100%; + height: 100%; + background: linear-gradient(90deg, transparent, rgba(255, 255, 255, 0.2), transparent); + transition: all 0.5s; +} + +button:hover { + transform: translateY(-3px); + box-shadow: 0 7px 14px rgba(0, 0, 0, 0.3), 0 0 10px rgba(94, 0, 255, 0.5); +} + +button:hover::before { + left: 100%; +} + +textarea { + height: 200px; + resize: vertical; +} + +/* Select styling */ +select { + appearance: none; + background-color: var(--light-bg); + border-left: 3px solid var(--tertiary); + color: white; + padding: 12px; + border-radius: 4px; + background-image: url('data:image/svg+xml;utf8,'); + background-repeat: no-repeat; + background-position: right 10px center; + background-size: 12px; + cursor: pointer; +} + +select:hover { + border-color: var(--secondary); + box-shadow: 0 0 0 1px var(--secondary); +} + +select:focus { + border-color: var(--tertiary); + box-shadow: var(--purple-glow); +} + +select { + overflow-y: auto; +} + +option { + background-color: var(--medium-bg); + color: white; + padding: 8px 10px; +} + +/* Custom Scrollbars */ +::-webkit-scrollbar { + width: 8px; + height: 8px; +} + +::-webkit-scrollbar-track { + background: var(--medium-bg); + border-radius: 10px; +} + +::-webkit-scrollbar-thumb { + background: linear-gradient(var(--primary), var(--secondary)); + border-radius: 10px; +} + +::-webkit-scrollbar-thumb:hover { + background: var(--tertiary); +} + +/* Checkbox styling */ +.checkbox-custom { + position: relative; + display: inline-block; + width: 22px; + height: 22px; + margin: 5px; + cursor: pointer; + vertical-align: middle; +} + +.checkbox-custom input { + opacity: 0; + width: 0; + height: 0; +} + +.checkbox-custom .checkmark { + position: absolute; + top: 0; + left: 0; + height: 22px; + width: 22px; + background-color: var(--light-bg); + border-radius: 4px; + border: 1px solid var(--medium-bg); + transition: all 0.3s ease; +} + +.checkbox-custom:hover .checkmark { + border-color: var(--primary); + box-shadow: var(--neon-glow); +} + +.checkbox-custom input:checked ~ .checkmark { + background: linear-gradient(135deg, var(--primary), var(--tertiary)); + border-color: transparent; +} + +.checkbox-custom .checkmark:after { + content: ""; + position: absolute; + display: none; +} + +.checkbox-custom input:checked ~ .checkmark:after { + display: block; +} + +.checkbox-custom .checkmark:after { + left: 8px; + top: 4px; + width: 6px; + height: 12px; + border: solid white; + border-width: 0 2px 2px 0; + transform: rotate(45deg); +} + +/* Card styling */ +.container { + max-width: 1200px; + margin: 0 auto; + padding: 20px; +} + +.card-link { + text-decoration: none; + display: block; +} + +.card { + background: linear-gradient(145deg, rgba(34, 34, 34, 0.9), rgba(17, 17, 17, 0.9)); + border: 1px solid rgba(94, 0, 255, 0.2); + border-radius: 8px; + padding: 25px; + margin: 25px auto; + text-align: left; + width: 90%; + transition: all 0.4s cubic-bezier(0.175, 0.885, 0.32, 1.275); + position: relative; + overflow: hidden; +} + +.card::before { + content: ""; + position: absolute; + left: 0; + bottom: 0; + width: 100%; + height: 3px; + background: linear-gradient(90deg, var(--primary), var(--secondary), var(--tertiary)); + transform: scaleX(0); + transform-origin: left; + transition: transform 0.4s ease-out; +} + +.card:hover { + transform: translateY(-8px) scale(1.02); + box-shadow: 0 15px 30px rgba(0, 0, 0, 0.4), 0 0 15px rgba(94, 0, 255, 0.3); +} + +.card:hover::before { + transform: scaleX(1); +} + +.card h2 { + font-family: 'Outfit', sans-serif; + font-size: 1.5em; + font-weight: 600; + color: var(--primary); + margin-bottom: 0.8em; + position: relative; + display: inline-block; +} + +.card a { + color: var(--secondary); + transition: color 0.3s; + text-decoration: none; + position: relative; +} + +.card a:hover { + color: var(--primary); +} + +.card a::after { + content: ""; + position: absolute; + bottom: -2px; + left: 0; + width: 100%; + height: 1px; + background: var(--primary); + transform: scaleX(0); + transform-origin: right; + transition: transform 0.3s ease; +} + +.card a:hover::after { + transform: scaleX(1); + transform-origin: left; +} + +.card p { + color: #cccccc; + font-size: 1em; + line-height: 1.6; +} + +/* Button container */ +.button-container { + display: flex; + justify-content: flex-end; + gap: 10px; + margin-bottom: 12px; +} + +/* Alert and Toast styling */ +.alert { + padding: 12px 15px; + border-radius: 4px; + margin: 15px 0; + display: none; + position: relative; + border-left: 4px solid; + animation: fadeIn 0.3s ease-in; +} + +@keyframes fadeIn { + from { opacity: 0; transform: translateY(-10px); } + to { opacity: 1; transform: translateY(0); } +} + +.alert-success { + background-color: rgba(0, 255, 149, 0.1); + border-color: var(--primary); + color: var(--primary); +} + +.alert-error { + background-color: rgba(255, 0, 177, 0.1); + border-color: var(--secondary); + color: var(--secondary); +} + +.toast { + position: fixed; + top: 30px; + right: 30px; + max-width: 350px; + padding: 15px 20px; + border-radius: 6px; + box-shadow: 0 10px 20px rgba(0, 0, 0, 0.5); + z-index: 2000; + opacity: 0; + transform: translateX(30px); + transition: all 0.4s cubic-bezier(0.175, 0.885, 0.32, 1.275); + display: flex; + align-items: center; +} + +.toast::before { + content: ""; + width: 20px; + height: 20px; + margin-right: 15px; + background-position: center; + background-repeat: no-repeat; + background-size: contain; +} + +.toast-success { + background: linear-gradient(135deg, rgba(0, 255, 149, 0.9), rgba(0, 255, 149, 0.7)); + color: #111111; + border-left: 4px solid var(--primary); +} + +.toast-success::before { + background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='%23111111'%3E%3Cpath d='M9 16.17L4.83 12l-1.42 1.41L9 19 21 7l-1.41-1.41z'/%3E%3C/svg%3E"); +} + +.toast-error { + background: linear-gradient(135deg, rgba(255, 0, 177, 0.9), rgba(255, 0, 177, 0.7)); + color: #ffffff; + border-left: 4px solid var(--secondary); +} + +.toast-error::before { + background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='%23ffffff'%3E%3Cpath d='M19 6.41L17.59 5 12 10.59 6.41 5 5 6.41 10.59 12 5 17.59 6.41 19 12 13.41 17.59 19 19 17.59 13.41 12z'/%3E%3C/svg%3E"); +} + +.toast-visible { + opacity: 1; + transform: translateX(0); +} + +/* Action buttons */ +.action-btn { + background: var(--medium-bg); + color: white; + border: 1px solid rgba(255, 255, 255, 0.1); + padding: 8px 15px; + border-radius: 4px; + cursor: pointer; + transition: all 0.3s ease; + font-weight: 500; + font-size: 0.9rem; + display: inline-flex; + align-items: center; + gap: 8px; +} + +.action-btn i { + font-size: 1rem; +} + +.action-btn:hover { + transform: translateY(-2px); +} + +.start-btn { + background: linear-gradient(135deg, var(--primary), rgba(0, 255, 149, 0.7)); + color: #111111; + border: none; +} + +.start-btn:hover { + box-shadow: 0 0 15px rgba(0, 255, 149, 0.5); + background: var(--primary); +} + +.pause-btn { + background: linear-gradient(135deg, var(--tertiary), rgba(94, 0, 255, 0.7)); + color: white; + border: none; +} + +.pause-btn:hover { + box-shadow: 0 0 15px rgba(94, 0, 255, 0.5); + background: var(--tertiary); +} + +/* Badge styling */ +.badge { + display: inline-block; + padding: 3px 10px; + border-radius: 12px; + font-size: 0.75rem; + font-weight: 600; + text-transform: uppercase; + letter-spacing: 0.5px; +} + +.badge-primary { + background-color: var(--primary); + color: #111111; +} + +.badge-secondary { + background-color: var(--secondary); + color: white; +} + +.badge-tertiary { + background-color: var(--tertiary); + color: white; +} + +/* Data display tables */ +.data-table { + width: 100%; + border-collapse: separate; + border-spacing: 0; + margin: 20px 0; + border-radius: 6px; + overflow: hidden; +} + +.data-table th, .data-table td { + text-align: left; + padding: 12px 15px; + border-bottom: 1px solid var(--medium-bg); +} + +.data-table th { + background-color: rgba(94, 0, 255, 0.2); + color: var(--tertiary); + font-weight: 600; + text-transform: uppercase; + letter-spacing: 1px; + font-size: 0.85rem; +} + +.data-table tr:last-child td { + border-bottom: none; +} + +.data-table tr:nth-child(odd) td { + background-color: rgba(17, 17, 17, 0.6); +} + +.data-table tr:nth-child(even) td { + background-color: rgba(34, 34, 34, 0.6); +} + +.data-table tr:hover td { + background-color: rgba(94, 0, 255, 0.1); +} + +/* Terminal-style code display */ +.code-terminal { + background-color: #0a0a0a; + border-radius: 6px; + padding: 15px; + font-family: 'Courier New', monospace; + color: #00ff95; + margin: 20px 0; + position: relative; + box-shadow: 0 5px 15px rgba(0, 0, 0, 0.4); + overflow: hidden; +} + +.code-terminal::before { + content: ""; + position: absolute; + top: 0; + left: 0; + width: 100%; + height: 25px; + background: #222; + display: flex; + align-items: center; + padding: 0 10px; +} + +.code-terminal::after { + content: "β€’ β€’ β€’"; + position: absolute; + top: 0; + left: 12px; + height: 25px; + display: flex; + align-items: center; + color: #666; + font-size: 20px; + letter-spacing: -2px; +} + +.code-terminal pre { + margin-top: 25px; + white-space: pre-wrap; + word-break: break-word; + line-height: 1.5; +} + +.code-terminal .prompt { + color: var(--secondary); + user-select: none; +} + +/* User info badge */ +.user-info { + display: flex; + align-items: center; + background: linear-gradient(135deg, rgba(17, 17, 17, 0.8), rgba(34, 34, 34, 0.8)); + border: 1px solid var(--tertiary); + border-radius: 30px; + padding: 6px 15px; + margin: 10px 0; + font-size: 0.9rem; + box-shadow: var(--purple-glow); +} + +.user-info::before { + content: ""; + width: 10px; + height: 10px; + background-color: var(--primary); + border-radius: 50%; + margin-right: 10px; + animation: pulse 2s infinite; +} + +@keyframes pulse { + 0% { box-shadow: 0 0 0 0 rgba(0, 255, 149, 0.7); } + 70% { box-shadow: 0 0 0 10px rgba(0, 255, 149, 0); } + 100% { box-shadow: 0 0 0 0 rgba(0, 255, 149, 0); } +} + +.timestamp { + margin-left: auto; + font-family: 'Courier New', monospace; + color: var(--secondary); +} + +/* Responsive design adjustments */ +@media (max-width: 768px) { + .container { + padding: 10px; + } + + .card { + width: 100%; + padding: 15px; + } + + .section-box { + padding: 15px; + } + + .button-container { + flex-direction: column; + } + + .toast { + top: 10px; + right: 10px; + left: 10px; + max-width: none; + } +} \ No newline at end of file diff --git a/webui/public/css/wizard.css b/webui/public/css/wizard.css new file mode 100644 index 0000000..e6ddff7 --- /dev/null +++ b/webui/public/css/wizard.css @@ -0,0 +1,254 @@ +/* Agent Form Wizard Styles */ +.agent-form-container { + display: flex; + gap: 2rem; + margin-bottom: 2rem; +} + +/* Wizard Sidebar */ +.wizard-sidebar { + width: 250px; + background: var(--surface); + border-radius: 8px; + box-shadow: 0 2px 10px rgba(0, 0, 0, 0.1); + padding: 1.5rem 0; + flex-shrink: 0; +} + +.wizard-nav { + list-style: none; + padding: 0; + margin: 0; +} + +.wizard-nav-item { + padding: 12px 20px; + cursor: pointer; + transition: all 0.2s ease; + border-left: 4px solid transparent; + display: flex; + align-items: center; +} + +.wizard-nav-item i { + margin-right: 10px; + width: 20px; + text-align: center; +} + +.wizard-nav-item:hover { + background: rgba(var(--primary-rgb), 0.1); +} + +.wizard-nav-item.active { + background: rgba(var(--primary-rgb), 0.15); + border-left-color: var(--primary); + color: var(--primary); + font-weight: 600; +} + +/* Form Content Area */ +.form-content-area { + flex: 1; + padding: 1.5rem; + background: var(--surface); + border-radius: 8px; + box-shadow: 0 2px 10px rgba(0, 0, 0, 0.1); +} + +.section-title { + font-size: 1.5rem; + margin-bottom: 1.5rem; + padding-bottom: 0.75rem; + border-bottom: 1px solid rgba(var(--border-rgb), 0.5); + color: var(--text); +} + +.form-section { + display: none; +} + +.form-section.active { + display: block; + animation: fadeIn 0.3s ease; +} + +@keyframes fadeIn { + from { + opacity: 0; + transform: translateY(10px); + } + to { + opacity: 1; + transform: translateY(0); + } +} + +/* Improved input styles */ +.mb-4 { + margin-bottom: 1.5rem; +} + +.form-section label { + display: block; + margin-bottom: 0.5rem; + font-weight: 500; + color: var(--text); +} + +.form-section input[type="text"], +.form-section input[type="number"], +.form-section textarea, +.form-section select { + width: 100%; + padding: 10px 12px; + border-radius: 6px; + border: 1px solid rgba(var(--border-rgb), 0.8); + background-color: var(--input-bg); + color: var(--text); + font-size: 16px; + transition: border-color 0.2s ease; +} + +.form-section textarea { + min-height: 120px; + resize: vertical; +} + +.form-section input[type="text"]:focus, +.form-section input[type="number"]:focus, +.form-section textarea:focus, +.form-section select:focus { + border-color: var(--primary); + outline: none; + box-shadow: 0 0 0 2px rgba(var(--primary-rgb), 0.2); +} + +/* Button Styles */ +.button-container { + margin: 1.5rem 0; +} + +.action-btn { + background: linear-gradient(135deg, var(--primary), var(--secondary)); + color: white; + border: none; + padding: 10px 16px; + border-radius: 6px; + cursor: pointer; + font-weight: 500; + transition: all 0.2s ease; + display: inline-flex; + align-items: center; + justify-content: center; +} + +.action-btn i { + margin-right: 6px; +} + +.action-btn:hover { + transform: translateY(-2px); + box-shadow: 0 4px 8px rgba(0, 0, 0, 0.15); +} + +.action-btn:active { + transform: translateY(0); +} +/* Navigation controls - improved layout */ +.wizard-controls { + display: flex; + justify-content: space-between; + align-items: center; + margin-top: 1.5rem; + padding-top: 1.5rem; + border-top: 1px solid rgba(var(--border-rgb), 0.5); +} + +.wizard-controls-left { + flex: 1; + text-align: left; +} + +.wizard-controls-center { + flex: 2; + text-align: center; +} + +.wizard-controls-right { + flex: 1; + text-align: right; +} + +.nav-btn { + background: var(--surface); + color: var(--text); + border: 1px solid rgba(var(--border-rgb), 0.8); + padding: 8px 16px; + border-radius: 6px; + cursor: pointer; + font-weight: 500; + transition: all 0.2s ease; + display: inline-flex; + align-items: center; +} + +.nav-btn i { + margin-right: 6px; +} + +.nav-btn:last-child i { + margin-right: 0; + margin-left: 6px; +} + +.nav-btn:hover { + background: rgba(var(--primary-rgb), 0.1); +} + +.progress-indicator { + display: inline-block; + font-size: 0.9rem; + color: var(--text-muted); + font-weight: 500; + margin-top: 0.5rem; +} + +.progress-dots { + display: flex; + justify-content: center; + margin-bottom: 8px; + gap: 6px; +} + +.progress-dot { + width: 10px; + height: 10px; + border-radius: 50%; + background-color: rgba(var(--border-rgb), 0.4); + transition: all 0.2s ease; +} + +.progress-dot.active { + background-color: var(--primary); + transform: scale(1.2); +} + +/* Responsive adjustments */ +@media (max-width: 768px) { + .wizard-controls { + flex-direction: column; + gap: 1rem; + } + + .wizard-controls-left, + .wizard-controls-center, + .wizard-controls-right { + width: 100%; + text-align: center; + } + + .progress-dots { + margin: 12px 0; + } +} \ No newline at end of file diff --git a/webui/public/dash.png b/webui/public/dash.png new file mode 100644 index 0000000000000000000000000000000000000000..abc8dabe2b9b731dde1c2643a33299cc0d056d1b GIT binary patch literal 1138154 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

%8;Xclplm{7(L_AO3M-Ey!pG#Nt~4S0*Il>OMG3 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�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

Ty^!; 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ˢ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 z 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�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

$R&xp z5h)CpCIU4j!Z&{mQLj59oQ8RE7d_>>u*gSIK!oyn<&UHht;|SmL0KNDG@sWHp5E$Y zy{4*7NcAT3#?~+d%OVmh*!K?-L#&LltPmP|(;1=X zCgKikcpHu45@ z9+ZqPll;?dUy@vlAExe7dyHs=ZyOa`Lwvf?ox2h6aFf~68LMRc!07+%Pe4wDw!?sU z!hQ8``&+sq$mR&3p&IN5{Ea{UtX$rh2rJigz}sar9!Y94;D;WBe^Vh<;`yHzpxUr0 zE)p4^T|{K~PZQJQEoxyuJ2zR#?&k<+N}CJxV$v3qQEb+0$2LJ5+@FzdWt6WZkETRO z4NMt?{C_4IlEua>l0}BzgI*Az(2Z^?<%cSM{w%614*k(sjDt9X_2j@O3a|nBb6-R!8xU~YmC_P4*HpBgbj^JJg)*ulZ7s2p?ZBbb| zy6pNJ@vm0d*`Or5NvwYHWQ0J5SnBz*1#K9s=ylK7Sp541yo-KL<%F0%Q{IVH-vYyx zPkZ$x=dvouMhNDa66-PFs+2iI1SHnZ@eyc;)B7UrB5(+K1Qt=C%kItLdYPE^U`^fK zL0_DoIDcdX#X8h}pd7{7pTEr|bMWLJSNR)K*R~(>7f(c5Ofx zeffYUNyF$v4kQ^7`-}bQQbJcVR!>>wQ=H8fN^Tt9 zc84{oAZShZD6usYKb*XgE}{?|h$OWjIaQSX{VSxkFcc#4@OY8_)}bdksbq{7j2Y&` zO9)JHwXEDfGa&38Y=Gu;A(PEfwlnAB8MDA!D+>p;0qTM(RA;B(hQSXap&x%+~ z%k-2Z9BZ3EIAtE_nfJVJfK-kZE1d`A0}A7nsxxco>JI4Dr0EGOQkc+^sR7PRnSro! zPfrw60w!P&GOwGZ>(yH6<=%flHqzCS-r@5WM0tSN5NZdl5Ccp z9uF%kC#Ue8vup?PTM?|m;r3P!f_SbCgkj9Vs_@4vn&6)#(?hruzG|zX@jc51{q`iX z^3pEo4Q>Ie1-rmk3-Xa>rvm?DhGpl~(NGaK(;@7Uw;(3GgV7W!PjBy30HNnjd=KWq zwR3W!0XC(xtzc`~cmPltz1IF|*q=|_xL>3EDb8l)anyw^DF@g8HJ{P><<4To9$qn3?U&Qs?f@gh_W?Z z6cqF~>a?ZT8~pD7xC-*e%K*IwYtrasvSBwvJl>VdO|f@Tm*528?`3VX zFOlyZ_2WR3e0$2pkNo$$#H1xjmc>6cBYYDs%=WlaZk4oXvcQPw;CBL>g05Jf?wu*a z_h!C&x4W^{)?HfnguQwcbTo6BoiZ-%YNNU^TqXeEM^?^?yL~{PU)hiwjB{^oh%aGb zr(~#UJx21Udp-i?e5z1pw?lMS4V~-9;TocRssfiaSjnf)5e9Q0egdAwp3*Xszq zKTZ`2e6RJh=|3e9v}4LChPnh4fBxjw+MSbxiS(3ObdMhMjvV<)Rk}8>0R7houeEX_o=fQ{=AnfWu;D8SJu`Zn0_Jt!docS z=E%j(jbNsHP9CPjm<+-gYc+hfq{(CBOyh%`IP_cuFUu@cVs~k0FSuLbc{4{W-4b5(T^Oiuo&s z2=9*DxP~8fG2(0Q0E!ABBGkI1=;9xTo6jEZz;a`@g-A+;Cq)ET@I(2CjPFi$JEo zZz|KcT^;;Eqribyho%gT=)bMK;(ZLsg~W)#Cq9G!mwj*sPmrk~Oh!i(pGrLTudRVu zo_r*HIfDt%sYI3<$@#tOe$k#HRxr=T3=>B#6|!;Iwm7DxSR^Ap_ZhbpgTPO)jdBc0 znlTE2w#g4+E$lo`1Md8FMr~l?(KfSmDFRj4?Vj6;o-GLKO&Fg!Ud;uhkrYsW`uescvb=`~X?jwnkc+69UEMk9*DdBhv17GUSSfN;d8oG#dHSIus#?QR&BhTepv7E>$ zC0i%`{wi&zY)0j|wS|dLXm|jB%JUw!!@1#FzuwCg00c*VAMo!`vfH-0bO5cIEx7~e z?^4(T?=Myx?(`!Fkx{#}^H1zjWhQhvxo4v<{veTXFc)mrr5y$4G)(`Q-02B~TF}_| zfg5|35%PirK%1=Oz8^17b0X-k7ikcayn!B?1@43*L^2J`!Pi@AK-BZAQeMfxIli}4 zQFBD$`VAFcQ={wn(f7Iiz_iHL#eFgfsKV z))quTx?-XEVcCLR30OwB;1ijwWCBXkY}ZH8yg=lwF$FrZPcortqNljl*C)Ye77AbCg9cEl%_x)9CU5+S~a0L5&?znyhfZ-?0Hd zhJD}<`uEi&E_itWR~F72Cu$Ep;O~K_qBKMgl}1V&+eR$=sey)s6ACeMHS2X*rm_@< zq8F^kL1?drPAW%(6_^-X%uGA(YqM-EkAS+yq}f%JDXk3~8B4g7E&XG)^7x;85X8xB(71va$$R|HrjoT$|J!93zNy}p;<)n_!BH=Xni-i2 z-t5{^a>JOlgr*2|P>?Ms>EcJr5J2I@62w4kUd@)k$)|OnOB~~Ab7_Oh>beU~XX#@> zNY_*X$5pxMK2q|Djm+_5v36KjFiAU~nfav?`P*4t^MuFrG;#6O)h zMugBxSS%7FDo#@vGW263k;$Y6LOXrdsKeWB8x~N}9%21KBPr_Y3Xf;&&K~~b@97!H zr)~q{_+p6R&m%89G7y&?cyeN5Gr&OScC0|>G53T&x3MAjWi9x;bqB31T}xN{s-3Sh z=@>)=27_ClHk~Q?Quk1S_1nSt#U71hH6RbMn*7n0ktwcR>5K1@4E|L(`8&pp$1h4a zpqwlrIq|c}CPc6N=BERrUy(9XD!1sW7?Zvvg0o|UU#82Pz7U_C!RvJ#;nWY=<(<2Y zZ*<+BotaK$CR&CgCfK6rvz90%9s{Gyf}bK~zpV`$c4;XAs#p3rQ3fspaEn7s$id(p z0p4!>Ne6*)4R(jnURd)ZgPND!O-wbN%bFj5$3eIbN9SVwm+E||sM@cW=PuU;KScZ0 zg5AYxgEkymkHEQyf`3MUzKSU|@<8Y*OrfbWj!VimF z>$hxtH_v>A{Q?Jt14H;GqsLarS6B1`G(Z{8(c$`!GR}VS24+xImA<<6%;+k&^g?5v zJK0(i3Wi-0MkR0decZ0>^=_mkwHPof(^4{LO8?ONWeJ;Mjq-!~$VE)@B~9%n{=mC; z5M?wbmFUQ=i6(-tWOmX*cCadPfhY9LFB=Rw53xy$#Rmvx$anrY)RzA|`?UF2n^qsIE8I7rJ4JP?hJ`OAzZV|`-I5`r%i_N7TQ&)2e?m;;$%{M#Mt|=B zbc?kAl!j{8rQ@FfAr6&%pz_R$u~fDyPF$DsEKshu9W!_SSng@?9CGK(K>-;0?aR3VfM3T@k*@d@Zk2?>g7V4;erj){yfx!K&)C20eG^H>R8#9#bR@LJm4!xsk)7^d zM9a~ng`^)U+>NshzEpvhx}=NvK>Ma{#y)Ho$c1!;?jqoP#cw5LcvU>lACmw zBFqy|gr@SLBAOBPKXxm&sdd@cUZYi-1OsEKcUnPFbkx$!sdX@#*lFpsbP%Ctphu0; zsv1mP0+>g=%-BV*IOnh1?aJN{^s~}@6;8&3T4NNmJQ=}z3esC?IAM-H_^o8^R+Aho z(2(sIkKM^JdKd_)JUoY(JYREzYBacF>@nBJ5VJurN0lC281j|T$^vI+e27u%D_ZSZODnF+;Hh2ro!8@>v&n=+ijo_MwhN^)&jDJo zE#JsU-??xGcTkm!2%9>Y27&O)qfSAPwa`WIX29bJ&TmBMOZ% z&N37nbyx%zSu^SpZC&FrzMiX#b)U`TwyWWp%b&GDsGe!s#JV0I;ScJ%x>HRdcXqQZ zC{#&8Ttm9fPjGvLS?D2$rNWoJYW(YSR}N{(gSBnlbjE5FYScp0AHCHsUooIOv18Tj z9HW9}&doNLf$l*LfP&NyxmKwD-CB^wn?GEixmUgRE9LJwnRCxw?xL2~b$LivFWgkM}{U}!Ju03J=b!rzS11)6<^2$q4VpB+Cp6rUpI^=G7Hvrs?uif_1;9= zostRVWuFfew~-BXR(U{C?vT=#KIGXF%u`83ZtTndSHYdunbiB*F>OQ(nY8ggiSa;u zl2Yly!I}Y5ZaFAgBYO#*A^t?H}zlvN~Y&?6tp4y;uW)eehes5_=1MsV=6Z^`a zKV|i3>pY>M`XK=8nUcFY~TmxV#XUnrm`RElYsVtu}z^PIiXzwT_rh3RZmjDjtTg zXjblEUq#yp!9Y5%ozYmWH+XL7gV1Q#a~JSZ|FFCcSwhP=j|{js!Ob;T8}qIr#1zWf z*@)0<-gV5l$(H(?*~2c^=1nC{_^o2=qcU8kI0lcEq0H8f_?`>BB?%9ObCK zJ~I%AD1#!^YCC`o#E$T)j<(07KFTgFFObCH%(xcSn-SuUP9VkSI-c4Ua1TlJL$|if z=_6PWjdXj4^@Yox3wMwiTa8Q7=`dbwQXXbxy214d>+ds|&*Rcm=s&p9C_kT@m&g5S zFH6%zS1uqx2p|p*gAXaVRd&)f)wZ8cYHj@eK|piHa<$P!-55<<(!w+F~ysiQEr&n|qakaIKH*;fa) z)X8(kQN*4B7s^X4aqB~Yknfbk-%$VnlV!%+Nobh<_jFJg**g?7l0ku4tfQazEuCU1 zg*4XY@PhPTZp+_kz8*iJL>1I(9O1Z0@U5-maN=mFQ-?ut zI?N`?nat{*V1cv6Dcd^E%2>By!`v}*OcNw4ah+=hl%)APPvT_Jj{G?(ISLcBJ|t9@ zUkK_d`|+XkewPM>5}{yXTftUUOsHg*1DE}%nZP)3Br?#{!t}5iB9@4%5_tbS11Ltx zm?ugYjRsnJ?nFdC9zJ3YB)6is`W%nk`yny-(Q<%U%KCbBk5j{ANi)_i&+}X#Ww#!t zof-o&MGuC7<};V1*|40gs8E5wj@?JO<=pY!ctsO9&ZZzZ?}oMY>%T$nppN^{SzF_J zK>t5COD=C0AQv6g3M6#J(3%6D)=F+3-s=T;^0KC;jGA-SZubemgV7r{46B&tw3dK= z@9|#lvI~GMz^8g{VL?evjqQ7ZI}+7z=B^DR%c`o%s;WURBSyyboez2Ebje`21#UoO zar&nTnTuP$KqdRz2>b49@Au|rJPMdP--JL>bd7rdJNsslk5}>oVKnMK=2J(#LHlFG z+h11?8N!U;urTH0ya^qX%N>?AyhS`0q@Nj6wc9?h+xuoh_><&liOi1W=@QTu>hGP> zxp5bce~W^_nCYY%S1{2JXYd`;ix`KYs>P?Ki;Kl_EU!D+;S?3BU(a6>&}}3LY?~p9`j_d2ENR*Tynb=Z{*7io}4>#|> z;Mjl<2){LOBUMfnhBg$kATPvGhUS=K8u3-g)8(9=!F9yo)kz+Ot5($`t!aygA3X67 zVd0KNfR1N4Pc?9*=Ly}L6Y)o9H{~F?(vjE&;dEd&+49sos-oBspxDg^Iki_qlj&$O zv-!SrW5ATBUfX9|Kt!yFzxPZ*JWk!k*1%;3Kl*!;3TG)h(d4$|$$(43M#zKW`p%u% zsq`w53|HPZ#N#$SgCrSpa;k^j#$OMdHutiUMaM_P-ai`$j12*qZ=0qs3o~Ccr1_Yw zwknQ%iy4028YWo6T7(PKwEiPq4|>?BHmqY@Uk>6e4C2jEh6P;B2T4Nb;@OynBT~ub zzpvI+y@fl%qxOgNG9#Vo{gQ4!8ryt4eC&J!gd(xto}8aM+Mk|+9yB-B2Zw=g%z8Yl z=?#!jP2LimMl2Qt{qgwJbKnv3&?0<$DAjqAf3e$q5g4t+8qD+IwPMtH&r{pyX867b zaL)}dEb1>YAIQnaFIrH67>uOc{06^qiL%lF_}nTxGH=zmzCC6c%D=m~0&! zc8X1e`=9Sljzkwj!TM%um*ZgLR|Qk};vZuvPHWPXDeB>8lqjU0@u#!wAJ;><{5z9e zZKw4U^mt0AV!mGuS>*tyf}?LlT__|wu7NwrI9-JOt~J9pn5X4Pe~v#Rk&tdQ zb7kXwRE`#L6GKv|G?wkhiTKwni83wWWQ@_-#M=x%JsL~KNt~R5(X@*AP;4lOs8AHB zaqpbtVgHJR{+Nf7Zat*(17fmq4OYLy%*rHfmPrgWD9X=$shPBJ!AprKo)~ytBH=*1 z>*ozijMiy#>3a;xBI5SA&o?9n2KeUMU%ARXS4Hx}Z#~g|S*j#(4hg_T6x+c-;>7c6 zyRG`pD|(C7spa6l*ZmE<{F(+?ysS$p61}}G0Xz*7R#vI&>SRpz+y0PIc3Z!B4Y=ca zdp$({Rl?jK!VEy`8|X5d+jFYPXyg7)AvyAdjm&{sS|X&SdybL*w@L%gL}X=a8&S?O zMPe(~J6|4uMUNRjME^&I60@8ENDC4L6BCIthOukrSkn^?O#~pksU<)AQ)Jw3g?a~y zZIz{|0<|6&2ZwW|K=1${cGu=1gsWe$ZGWe{T(}YTG%_{#3VC%coN8_D@c?Y`$nihM2!c@Q1N^*y)w()M`F$7zQjGeYIN3L{!Z#HrP^ z_<4Hzo1>HUzB;~U`R7-yoVYk7tU3a~cVFDoQ#clTWFpo#3;g?4xKm|qMMHv@ON{}Vv@vk#1owBH&&V8!a%V?ieQWCA) z4sJ>GZ%++YnGBTWaih4hT0eal2#;qt7P&?(dIFKk;>mb`ajzT@qYtS}R8&+@=c|?w z(l*yN)HWpFhUwgsu1<*k^~D(>v#}H&SyV1KIwIt*+}@98FM!u&3}=**i~s(uy(U|< zz&&GmfKv3^HB9p#W|@%zc5UwT6C8-#{Y>kcj(Y>v_Cv~hvQ;G)6ZExakr5Ej51_uF zrnvNbqLyG3Ewl66u+QU2$YY5j7Q(AOU4>uP^Q8lW=B`6S zjl`u}G;b87BC-J-8$z?n7QExzlFsq*$>Ax# zvY9;+O1`HIY>G0?m2@6pwSZEIMkQY6;^7&(wcJvqVjP2f-mZxV|K{va)h^J3y2WzSo0Pr`EW9k}HeZ>Y_WylmN)$Oj>*2 z5h^Zte6XUNs?}b(>7D(ARa{?(CIkbszwEwM>Oji{OPq=bXb49l&Lj`jsHHF@?2ALo zX7?#|BQMNt0i*MIv~mrl3Nl!N}qJ%L&aB-Do7Ue+=TtH+^KdmtD_&Ue^2w2};a&jwi=Tq=G^UW7&FS1wZU-E1HyCa_=etc$dJU z^|?tYn?MFh(rGUAR_FYbOv*@5#wLPGt*o2#JAP0iDG7yOAu5D!K#s)1%^*yzpS+D0V#f-z8JbJEqRsz4ShD~js!mf z-_Mr6DBPm|v$HNr7t74DZPkY_{^DDSQuuUxAn-c<_-tRd(frBm6blq60wP^2~@RsRW4t`8*bX8twcx-I7yMFg0>e1V(~~PLvqt zyimDO)xxX~Ee;hJGiYIJp-D~0!Q;qASXfw|x;lQ!$*hxqdF zS`7Z57C<>M&mBXON`O;&G_J^jw&o;tl$xH6jpoD>QcOKL%b)$m9;PJ9Se3#nzyBZ9 zb6OBVd+3hf#W7mr+16cd?w8*kKIC%bLDV2tTPLUTmX<7l#I>`d_<078FcdG#QFS#D z7mWc2`o>R2(sZg<^LUv7xOv@xz+f(J1T zJ?CWBgI~`6gUr&@1ajyKeX%C$)yGF}jM7osPr5`z)^AFM?6O6})%hoZ;+Y&i7cxM- zyT5lw42|T*Kb*!?_^%9G4cyd38lienfM-Cf?QvRP>UVtgU49Crwztdp+#WE>>(|)X z8Q!I2&E?m}?Y|H-Si+(48>Rc}@zEW(&As}Zo|-*%tl+GgyKjt^d3JxlWL1@Y&OCc$ zXunyzppYB-k!f}mVFHXVR_q{B#^q41b8)2=TT94+j-nFvvtvFuNa&Y`D0%xobFf&I2!7>+WKFI zs1a$GXVd*JzbWtGLHh)De(}!qA$+xBhc(sq<-5>)s1*1=83^sApjaAaPqu6xZ=4E4 z_OP-*+{L(H2q*-O;zxY!CXvAOi>-FMZ+Ls!dx7u6YHo8f2Un{W$?hjTA54i0*8e33 z0dFUi=xg7E!0cM)3@MDs`}Z%8$(wKZP{`@Ay+JZ^kGLozP<(_!`NJ_XZk$wFtOYY+ zrT7isOCxtj5f-dfB|xD;MY(qz>8d3TUqw!M!>x*NhbsyUqFG33GnOyc)0p(VpY3kR z4$Us&iN#y!=~+!(Eir`gM=%M%u}*89t=6b@z9d|h96`@0f0I!7@sFz8W;TcQmYwp-=rw6|F&4C5pP#qVqH|t^Nkt7x$Y`Bom&cz05d#^Xp ztV@X3PDr$ZqrP*oqd*>;oTVzs3a=9r1sgv`nz}$%l}C1n`9t?>xFUlmc}aoXLxIRv z8$o;T&2FoA`t1k^M?O*hGok{`b*Y;~^VSO#O%V6qKicSP((A3?g10Ez{Ui8r?YNRH z*Q7Ed<*j8fu`}u>S&$3AxZ@U84ELxqkZwI1#YqAxYMGLyd~sG5|9u)2U{!<@ z@Aw8~6ec8$^9w>)NX+^BwPgqK@*Z#hJ@@tjAdvh!I>a(k>U!+?z?04uG1x=Id_q&@p}U!Dl4=q(~k2QA#VH!OW^3BK3@4@yyKSG>Fg=257G zf4~c-BoX1>2G7Q!&GqWVq?+MH6I+LEU92wdISnEb{gT+rR?X(k=wk1 znjAOV6GL7{*sx<|A6MmSw|yQqzPjt;Z)==MTAFW`5M3G{|rmvmK`WX&*gQJQNZRFAqdbucA3@) z_PLPlUO3(R$+Q^3cKFAe%K`5N|%j_T_Jf`>{Knmk*LI6fxX4FY)&gqp#0kGr8%FZ z&68pQ%=gP|!Mkj@!tzDpYWXH89clrk&TR(|05Op4tEw1SSb*54n(sX!5F=i#H}IPS zUbu;giFwWcJgt=rr@OmU)&mC;0p-rbu*$mYfJ$ehHA{}NU@e0QjTO8bg&}1YWk9SMxq-)sku)! zoO$+z|9aI*8MM@UUV}+M_OEhNWD>rrhFXV+MjKeCJi@)F|W<0`7F!GZ5)KrtzxBT%DF8}cwTR51n7wpB-8C`2sQNy@BytaN!c zl5G)hc4qvWhXN~u`rnuF9O=eVUNj$6>3U0)xEXKhPRAGO@CJ~~}*3(s}wj+}$;}4DRmE-|xTH zcRd$#(cPy`Rqg%kR8UVb5>}6Ewhs)a(n8KdRy1B-%+KFG^$tjMsevsh___62>+5#x z;^JTClM2(ZX}?lvq}7x&mu*ZVk_DThP^tbRwnoAWNo%zvn-pq}BtrdQa(9z1@X(4# zaT@TCfvMs@%v7E{n)uA}vI18of9Y-g(k)dfcXxLW zS|+->plY;|et&CZpMofhib5+YDw^os)DWICC0$fAN6Fsa*4KmK8~j%quaylR30hkD z56=#}hbwO6FZbqtzKW~S%z}rPpjSX@s-fH7O)xI3P(RUTsrGjq^a!M|$8>yXWN96* zKeH4*CUKXHkslaYhRV8m1V>s1SG9{u`#yybfRdE9ccMrpKWJ&H>J^&!Is!~m$r_}U*J~b^5zoENlk_Ky49V!g;h}q7g+^`KL@z} zjuBI)C0uPsO(M@4H~un6Cw#QO@4OXAB}Q9JgTvJ`+WN`JSQ5<4EnU@#p(fs)mU4B) zuGDS)>qRC{Eb!b|f-0?KScDP2L*7vpYsUtml}{8QMqW-Pvf?|aK(*~lj0}&$zyzgk z$QPlYwY9iWF|d@?8V!36%vvAVWhNb0PL^4`u(g=i5CsY5=?PAeS(vp4nHV<}hmpSD z88@YB|GhKzvnYMo8>}tRF1$>BS78u_a>wL#;>~2qY(((KjNEwcPAe__v<%-7Up8-` zO@V^-LqiSGN0)9WvxunQ*|x)d#TJkue(!kM^)G4p6=M?POOE$-PD>*V7z%PF(&9&L zJsJTftZcd1-MRPMA(PdYkdMIlu&(L#?tEr#Mv6vXgfF>&3N1Kpv5G?ofod1-XEgWr z#l-|?QSv^ysVEC_eY_fM(8~iq#0-+t{&JEkY+-5|9INZf+4*?d4uJU_&zANtwp#wK z-n=*bcMo*jlq86EC6TLOBs}?8@cTEq4Wi4>N|XKBX^|6fx(p_Adf&F{%&<@}7&e=U zQiS91^mIRBFgHu(=Kb{k4TAn1Cqu%L9n);~FBC1iB6bAatM98z{omTo@`$w+w_5M# zhvjB7RPTm!Lw|J+QkK&jH@A2)5~-yRp8cK3@*RhYTZ>%frU_bLIeJ{N+4@dY+U-9j z1iL{eeVj2!*Z#tP{I?;y3#l7jBKL-%^OF`Nys~#D+KZ6bLiVID_<>)Brt^5%hP+|e zg%Fop!b4D}fDm#;7je%GgP zFb(dCtbN@5%|jF$jwia;%IH)tPl+3oSlA@clTf%Hl-)lA8&xQ7@e2aH&knE{7F`o? zGWYB4&%hij?^g@9aAJQgbJ3?kKF*kJ$|*wG59%sv2!tm~E!@?(@}&`d1%Sj91qB7b zI3y%&349bAbo5c6mT>ZbW}CBPj{L#&Q~_sH6rsa7RWW|J$Ob!K@7LiYAMfuWmo9JqAWb zGTOBrUi+LsL(EJ~!|8H#hp91y$7;<6FMw+nkRT`=`_>`U@xHcV`ThIWuZpUzr(@ya zp&_KkwL4d#=cP%*6|V9x#G|!HA>yK{h49QZ$xNC~gQV^%x@tXGQTS>G29rS;LNbo3 z$Q%}9Jq>yqLLCV}PBZYc!VqYf#<}fb)oX8D5N*(vNa03Z_-_u8{60J%YP-0=U1k_P zmDHCIBrE6*CiDP2bXAVuWOylKJV)U_r0lhts$!3MZd_bzT#q%}&etVrNJ<>P!`|My z_C;;c@5al~#p&oHt)pIPjYeM|_zRAwpLfRnwdPXQQklqF3RBh4P+(u1Od4Q}@rK0f zx(q*SyPX&VR|h-5Pu9Fo*SWEs+Z3~M-VwE}#7{)W8+dMt9HQtlN^IgJTTWdZBZ8{Y zfkgazt~yeG?8Sq^o=#HW$VlFPs-dCl2w$q_#X#V9qO+%W=~$Kqr%eu7Q0)l42;%h) z=}RokmJ~K{+22k@vz+ZXH`XE+^IB9Qrpu(sJSnZNjH{avjv`;X758&JpR~;4i%|A` z(h+(sKTcHWl{7$JXT_FmE(pzBycM7+-JqMh@u# zG_628|3ODbr>vsF7TTN09zC+qg#9qcA{@hMJs+n)qd&aigSuaM%wuSY$sV4H3y;><78Rb0_!5kX zhJI(FU|nQ4&m8L1eSP<9zcgV3QLioTGg~&=3Rh)VE%pd8@z5g*1knH)40hS2UL!eG zLL3|Pq6*{IBZX+ z(0g_=RyX=gT^xx$du?hNCP#c?xFDE>+)AZzI}PP`8@2(04rjne(F;GNiQXynHeF(; zL&uE`JcTr$)p=L3c%(S@;rKumaAfL4&y>o#9wq(AaS0c|g(`|itiXDx`k62L)Uq7Z zBeB3x{+sf!X|XD`u_@W)-*1&S-PvC6&=Z6e^;utVgO>J)k1`Put7w6$mV8 zFKz9&bAPUr(l&cD`=WiM_@IAf|ML10GBiAcoqqEoYmsVh+vS{SQK?V=aT=;Yg}%(`bQH*!SUhAZML8++(Mkujx?=f zEH^b)jH=C8HW0~M7 z$oy;8gLXGv=EtoIc;|3j=^=9`L&S}~0N8dJ-idjvCL|vhy@Wb-iaHY48<^@YN7y-S zh<7X0nB}E#x7hesq+a96vrl6ANa`hExR8dc0dw9Eq!yP9tGEd>sg# zEy*GdUgH|VoO8Iy%}u0f894iBA{yCG909&*$J0x5A+{@k2&%*?0O1FjmZL07I7c^0 zo&+H=F!3M-J3m*Qii!`42Y`T+m?feQX)w2%gn`!Dz$+r4+s}M5UCGMo63)9|LHWYl z%WJX82v$?il@>@~-Keaa*vzmN3N5h)xZ|X&ZY#E0p~Jrc*}}`?wN|Se3*`CCop(10 zNR>l}+-uhWUCl&RH=WQWa*0y5oV`73(CeCIi_%wDJoLnmJg4=uiw(A@lS0qnR6RF_ zQNaFqe`X%Iq?MX7|4E7Wm8NzHtqH&PRU1fC?*{%(d@$e@X|&XBf<}&D5_-+p!5K&S zWskB1|6l%NLSPRe7E`d@A?^aMD)7drVw=w+k2;VN%!X4G$6%qDgTtPmml_Up^x?17_97IdZ?rS{x+`e)i~0S!#6B@=R!7 znOV$G2}1U%`gr59BU?164kTEg$Aq@g%=LWO6tbbE z2sMLM(&)v0#L#so`w8XWPy6_z^+_~&oPm@+2RLygB@gnx?U*zl%5yv1D|d|U+rQ8> zXZ4l}yHe-A{rmYPX~Ait*<$mV3osTS05#g)gHh4>+AibnY=7^g{pP4a%g?t7+?0 zQ>rwrh)YlZt__1h+p6Eq!D?K^p(wrpIcto0a`lQS=)735eGx1N0up-C|9P@BQhNY z+>Lv~Y`q0RxFnsQ(KRW!7!bBE6fj&ubX2Q4>)R*LJ zD%knxsv|Ie6wbvdl1AvN8DyE&k9XdkgF(-h5rrPnGz|@-FvX4xCOSJ0>W0h9$I45F zH`}FQw*vQeIXgjj(fRnW$`@>lT=w(p3eHa@4@* zZSiL0tlenGlB(~=yJ<;NZG*oY9P#96$H8&a5rPk?AqnGYW&LW5&i=8vhD zii?l;!)fqpAOdRaT?fjL8R_A1*OMMHILTW41@tH00H>U!V|#0vtIBq}RUb6zg5>oo z)&HKq=JY8Vp(sI?eTjL~fp8XtA@^(jrsR5;F#CROZPUJbU6tnY6c+B?y5+r4xJA6 z7js~B!b=48Zrn<*BbV&YJATr#^bFF9+v*|DS|}s1l8(6)+celLiZXu*zPLrE2#v)> znN9GZ>NSco$7GGz*hzqf+Gw)Jk>J;Q^|-NBqz+CTnrgEb2JVLHUo>R6copbzM+{6N z_J2_r{e>mYvC^h+aXYu6#EslEbq4NP2%(|j_(6_6w83><9siW%BLu zg3|~CovNN*_tX&7vA({ti3xR`xxz>PPx{odmmv~I2vrq;oGaI1x!l6x_;({aJA2=K z=er=8!6V@yi8C|g?XHo5o_>R%^MMxFY8G^KX-TbME0uhf*wFi{W_Mz5oYlIv>@>Iu>I02>=Ph~ zN&q}$W#LOWF)wDVHcZZh9(TNFx3i+g*02Ftbdm$1ANrPT)|&HFxa5Xe162>h->CLd}qXv(F({?OIu zpqG4Oq~h~-+x28getypD?{S}_+1#B8{_~x->xu0!;m)u+VFyaNUr;g$o(S1!H;fYN zLQ`}qSeony>-q92zHbOs&rh8kxD8s3-mDEy7e1+X6G}HdJas9o7E575aOkrl7@K?i zq9$8jGw@ciEDW`A1|0hnJ6Wicd(PbcDJyTUTy`Cg<|$;JG~c-F0b-@yhQZrz?y&hR zFp$JW6IavMAHndu5Ck?JfL7;jc7A!dy|X2^;!jJ?`^&Zo{X!oaL7`8;pT4x@y^4OO zOO$t8a!8%%wYJkb5$@O2>G`>sZHw}%3W-o!Ub?9Bmb5CREKDZ0`5#+*wHb}GcKbGK+W_d(mL+{N(#Gl$IQLNp=5RHP;s9ML~W zCJx5l+;?9aFBu2SOIgkUUl9Hib!7`6|1ovGYOubN?Z?e;mv`wXPNM_EqrNDVODTp8KR?e8Ey4At zBBEH=z+Hwu8-c-5@P3XcRn(h&vqdXo;Ed&C_pMbHM{E)>jUfkZz5YPOSwPomvS919|%swXV-)KM?MD-n26l^>~7wThi1=@6CFiI(Ma;I`(xba3O^UlMn z{sljFd0+Q=)rU8*+^>b#rb12C*?J1({i#mYf%|Ao`Y)g-HpY=_ooCH(O}#=l9>&<0 z&h|A{5SVm9)}in6n*J9f#WvqVpoon0BmF`Njatu70i9X%ix6>M>gO1R%~qI}7pI1-?NIHVZ;=dMZ3U7Ya7 zI@q}fak?OjzeV5y`2FnByHoz9iz_dZ!M(QY&xV$u?vkJ1RI7&Sq@;46ecHz8>;q!p zALL3~8bZ-C=V$-bhxJF{JNGARQYKA~43cg4bFyCS`afX5yNn87mI}Ye^ZPx(p6I3= z|LKgGNl^2c4`t zKkE&~bb~d)<&hk*g%b5?iE1cfXrH=}WbrQAC!B+6kQ7hfMTdq+!J*VTtr7SR-h0AX z4;WviyM)?sal17<$N^8>UqBWtDB=H(iSd4DG~dybK2tz!u9T}NU_K352+JN<`$A{| ztV_OpO*U!ebx{Q1H+5dO&LvuDs`*Bu_6^!!67{xqkmtuMxx+~sIf*@Im&DV+6+$am@G9oTMB z+TGYan&$u#3k)6pI+n52MO2zQ6ejF~m8$OsEg!2Z;c6zx!gBg@84&hxYJawWSgKhl z`?GwO7{E-JI*GFYy(Kb%ffMDSOQ>M$ea&9Tt>o2&I&1T)p#=!w@rq06R+R@brw5n3W=1 z0Vj%JW@_pOW`YZ!q_Q>t+N&?Kc5OJ0k{3B}12Vi-uUM?{<`$d1V(Z-m^1pY}I|amf z$cl>rYrbyGQk_Mi6|uOuxQm+$=Fk2#uqS&%c41>90YnoQ7gt4BR{;=;ervR&HPxn3 zXCN6wzDgHAwwUZ4F7kX|vY3WI1_3frAFB2I#Y{`;!oaEPSQy;y-yTCq8EToyo4l2Q@KIT^Z{xxy^dvHgsjOP1kct41SdFs-)A+YIfjGq=i;FFh_xW6 z!}+#0{758ioiUC^0WmTj1Wo1F<{X8l7pYlEc_Gs0utjD3`o7F&^L znJf#q+mR+dY3m-!=~_!e8!*4E|hdChue)9+2u7ki0CLt*C6LJGk#HNjq4H9`V^np29842G&J|DfNOawM$mV$f^J+EW zOm08^wQk-TVJa)D+?gPM4gYB06dy+Jhm^n32S}e|F$B7LLQu=gm`nef2(z$w%if~r zeZ=oTyOLzJ=J1_RP~yLp;IdilDsla&GBXx?@N*&i=+v+Cy#cBVaOADuHfsKP7Fcn^ zbYU5#0`^#_SV-8O`guPD?$Rn=>hNj85<~<&zu4??LN?KNr{-27MC{{_d=HK*f{gi% z#R3YR4^m>{bUK1CJsu)!HXfxg%C>%rTZ-@l!Pnw9U+?x8-8}@MHvW`-#NZ?uCW5jYasD~5-&VdEQU>${Da`F7T=V{kS@HjwR87@3_ciN zm%xe;4daf(dIG$4N%(yCH*uUVEmRcLaj^9$RO65YWTlT($Pu^@jho{c%m##kD zy$!f(GM}3M{}CjS9NH#hs--MeadH36-R&lwI`}t4VmFCFA%iPI;*%^72?8aX_$S(8 z+8Z=96?JuB@5`Xa^1J(_Dwlj3YkLeQUtf5noGsZQPK=Hu1{gt+`@dcP2gn9wieh?t zf}1Ky0o|gZQV8^)84Tx7h;Z=+0pM1z8;K9ZWV>Ws;P#*Tzxg>wAewrJp)^~n4K&fU z0o6;5>=YE#WVz849Lp1E-TA6`6vLbGnO}Oqb;>onpnxiJ3;uwr`t~1qiWyaTwi^tr zeUh;trFo!Gq8X54uGt_-|MMho;;gdp&+7@HD2_>?M4$@9jhZc0Tft%oJz#b|-o64& zFJs2HJEIKzuXDu;>Fg2P$~=HKg)h}4Mq5f&mdN(EUZu~8RfqR;_RB#`?#%3T6cK|c zLquwwfzeNfbwhh5h;*HcEZzcsMLUF-0TV z*w-^71h@jUW<_21ZT-_iL&A8%o8n-nUJXH_**&F)0A%aVg=k;Dq=U==9M|u_( zqlqlu6Wi|vW(#(JV)E&;NFF*23S6j}ZQ-%h!ne92(?(~&Wr z*;u_>{I^d&GM&xjQ@TP5Fyup`1l(H+xoiMsR}pXxiXn}Rj>fC81Nj`l+`>?i7aS}? z`tMQr#>=WD=GZ&Sb^dv&(_h#k+w~JS#E0Y3BijFUL=%8)=2m;oYM?QJ%`Hlkh*|O1 z>4nH)py;9FudpMTMrHZA)Q)y+2quvU)q{GGtHns1Z#ikkFqp z#LIwb!)1Q1$8gp524S*pq%jGL`Pcs_ii^HW(@&3wUl_b!{gKT5t8v5g0LeH*bbsLX z=6zRn=+pItZy4Aq7>YyUuwGk&@mR*&vq8M$0t@cwefSKvDAS$t@;d1|@0+ZYYgG{x zb+E>gh}F1hLIh2@X=G%xGyUiA*_#*Vofdv9z74)4R{g-Q+Cjg+Au-`5nN~@A^7Or> zE+l?mM=z1xPT${7{>r|^!_y%>ghVNji#?m?yDcAGY4G#L=}!(f3f@kq87G*;o$-~- z1SYY2D5fC4GF;C(hqBe0spC9>fMH1dX*+P?T<48xeXpW(6Y|cKUUFXVkgD=$SOfWj z8Vd@F6A$>*BLQtCOd}XVojAJ1!$rp`oRN}(Pp0<>XUp;%d~OG$SlU_`1UUYFSu<(3 zp3w?jbYomxD*I&h5_~q?8zVv@U)EW{3KR!J|I4gog`7U^Z!B;ZVkN-By12Llj^+od z`?n`8&*YkcaQ;vs9zhKj@m(ma>ImhS z6!`h`BUiQgI3F5y!h#mrq~;u?slyvy^ignh$}iSZx=Dy;mdIv-5*uAzi?E=cM#_GY zqUxBsm?u2uWH+ddTZczB8L?&uPG>3~X#tM!+WX4<0H+$tf3*XF{Ds+$5t%SAWN;Bf z?dR;^`#w)gN5Ah0Lxx*@^+OT$2c?OkKG>vBX}*0VeB8nT*q>ws?GXt{PRLMfy6mhX6(93s8;GAJjNb;Rj#(Sh)Q3bsgOG#nBR=2=rEP{8Hn(5 zy`Z2q!S`ybBxS}tcYFN&u)}rEu@cu-o~IoI-13(lE8eXhOHdKYpc4)Dx;eg!uZ!_KFaT9PROECEbaw{%h^) zRRj&eTkwMakWhrp&*To`Vh&}RxgjBoIjq5B%0eanB3hs~s#p3lfBgEs~; z?RI)lSq+c=m9M(q$68sI?F+wO3wxe5TU-jp@}IpxuQb~48+2ZM6}o<$bez|=m|9<- z=n07e2F{%k`#f0=GqV2`Gz;NphDQJEk0jo!msuV&5dsez;xE_2?>No6F#sEHw%%QM zQlKt_W71oARGBx%LQ^mZte|EqXrtSn5^~NTsb{Nb*&r^ym#wV@EA-T7!)J}&jSvrU1$iy_R-|-_y-`SUFY;DI${2p-k#&i3t zvd1gEjsf`;((;1@q$VKEJxR>jSFK;~}bG9-e^K6$gksGwl zM=w2H-MCwiwZ+z-BHdsM+W%5It_su*-Lq-I6ob1kl{ z2mkTen@A5aXGlngOIL`Ai&iK4Y%&KMJKI`F2Rzp ztB?Hbk+XT-FK&v*l@WOBOrM_8{#s(SR9(NQPl7z>(LQAQ69SJ@uhqTAe^P&MEO)Zj zBxVcPaLiZvA{XOke7?A}Oj{qiBmG81cwp9DTew(jhMJwNN8+~V!#qlru8@~h@b@ns z1Ff_9q>+PV+})iUSkVG_^E|4g{r&whO={B@^2xxh&s{?x>!CzoegJfjq~wkbBIM5DRUj#ASk3DnJJsB-3-9{J zJ%omR3X;^a@|w-&ITa1D*UEGkerS`vOAbrVjK90h_4Z3pYuVjn?Ww(uuu@`1j1IEniC|^EHuVUJ)){tIp zMgDOt3oKFREXIhyKMNx`=slZV5l=duyWyPw@i`_ED$%q7}{p#vTUOHU%dn zsHsuQN`0tD+{%tY)JUscMo<$vz(QR?mmn-Y&*$d?8g>eWvdWUO+Jvev#EM6jp~ylq z5L(83Al!9fy^qeUdZjR!YDbKN{ybY8Q-fwY3o8>U(Ey-PA-37!`_~Cw;RvjA3C9nOXcu1UFLH>YEWl>e4 zIv08!9qeIE;LkQl!&KL3Glf_^=U*cf*mQ!ccr~hv%Pi(;n5f97gc`IZWecn2l>tM8 zz&LHtfSt#vk(kxvi$uaOO<5I-(HoXJbeLrkRMAA8zjkbX2wPFQ^wTR4D%LC{xAc!2 z*Xbb;0pzougScU>d)|hWxX)1CW3$o%tH@DS@kdN&qlqi$oGJvk#OY2-S|)t?B+iUK z?p?`|XOr^eFMNwW4eyc^O(BOE1KeX(9krNLP019s zXk=K%U3C?eAN!BNy+%Hhr3Eb{V;e$D>$IvOcu1I@a=p$zXRmYi^pSWMn@pdj8Df)} z$cuqQAUq}|QXF?w5|Td3@eV`f7@e=*TPAV@pAQ74`uFYH(t+)>^Cc}ot-~hPe|{kn z*B#ZD4MfOxAS!E7b90Ej-!+$z*Z7>zskOl_P!;e1Yd6lzTgS7u<48IE?f0|JcR%y7wBb!ud^K(D;g-~SqXWKS)5zVy&%k10!o;weJYXQ^_ez>B zz)Yu=ckn_$k`0J84_?>5K(M&}Js#p8$c~1|G>z1v#h)iBv zq7oAck%dOvVGIi`ky7p3SVXGc4`!soqFB~JoUnyhgY93B;f}T+6=zk1(l%jKD1m@u zE1~B@){A1+^&Z&wOA6{a5 z<`9~{xIAK*qomINTtCO)m3hV8X8+680$id-9K|z5b&G7Z5Zmj(0 z=3wBE&&bSJY_ul_VvF)yS|Wd1FKqF==eFO+)K)ajbohUzTm8pdKBvaCA6zR!LmBT} zA2DEb;uz@Iv*!wDBhbLs%>^PvLt9)Fmy(EJju#cvW+|Wht#Od`e5XkFrQJVkMHYM7 zTu7+1!+P!r|EA?WhtKubo!?zu?qGgX(|`Y8Filva75&Tht4GdYk!&InzZ;qwQp5Qo zu;1dfoO}2U>31| zR$>e>OP7IFSP(Bsu+e^1i=(H5m6r;p;qC-gB*r2AI%3q44^1Fci#t0FF=eGM%i;}_ zpbur2&}iJH&bnTD4A1!Vt1kIr?>5Nt{akf5Y5?SPb%8}VL;UN#5RWnW$Anw;IP~=D z+q^sx&Dac58b@ddQAFGoiCQ@gEp5L2^m;dqf(~UZ!{;w<7MrQg?xNyOr<7*S2kFTlFN2|?65R< zLhydIx3*aRzx`uzG5jou*L0qFEGx?fwOQ;@NKKB9Zy8AAk)UR~faO0>*7Ni3;%J3X zzD(-3`*uPpp*pO&xMh#n&`PTrK!Dvne-!>iet{1(&Oi($3F>s>f!Vh?xB04-v9lHt z$*;k^T5g1s!%u}))UCt!+C$;WoF7aG%|)J5xQG!KPNCC{dyKXpM;1E!E_ya?bn3GA zHLLos*=0!ipf*6Y){F;Hw`^$CD$4h;Oy!iea_3l>9#zkqQ@!2()G&PMLo+)t!H?o< z@_kT$8x24+nn>4$w9{gQmP}&edK~3;VJiQ`;!zU387@c&AU8xpEpS(g2Ul^y&k@w2 z)fY5|!DVX=sH}%3i=uy-w~JM)!ps&WOc2z~V@x2&-rdX;xJ*UO`SC0tzw?&(5L0qQ z-07iV!FkEutWm#qOm?0?sGiR9W5KvRG7f!g&YqVwt~4B0n5y~)?E&j&lg2xQOJpJ; zGsL4HHifB?es+=+vc_<3%`+q~@cT4R5hgvnniZN+!r_tmeHCAcVs=*!5Yy6l+8cwv z;h~?$y4xIVEQ;5s9%;!e2ds<>%cF))bZ63OYP8bk=Xs_r;a2b^3b@jf!Ww!!?DE*x z=H}#;Dt`ZX!#BtkbY{RaYY`w zj^T$KLqvb{R;lyimma0iD-*pJ!O^|tMG{u{Hd3!%wCbWw{rD-!H18ahbzDKJEc z3u(g}#VE~XP<_>5`)4$X>cG`*EMOiP0jk)yUk!FsKt`~ZI4gZZEa6x_^d(+GBhLq%GH~|17dGQMhSN93wjwBxq) z%)h13-{?}xgh3ZH$NE0-EjX+0Yqq)tD6Dg8E?mBa6iq~*%E zD4E7oT7*a2HbbZ+aL6k>2t}n-BuW!0_%{Q~q{+YVN0&3}Lbfk5yKEMLwwNFF#SYeN zP3P^pVkCwRaDnHrQQf=eG$K2w%KM!s#SAlc(DQVzvFz8cy>agOYAX}G!=$it%Ssi$ z&dZQ_AvNF*gSh7YGy%6%8kX?dc>wmW4eJ+(R~<*iKM7Sq3oY!dHB z@qy%ADZzR_&K~b-=4!v(pcQWng!3U+`fW&!4`(ep7o3yrZOul7UspP|l}x8uy+7{G zR`BQ%fhMo4KXNqpM@36VfydYx5anDBe6+9jc4vvt(q#)4ZQE`p5sx*(oxT=dBNCslk@tzU_gk@RPF9z^doTVhzBNnMh(# z|F6sefUpQ0x|x6fBoq~a%%w34z?DQ_3{p(A1k2UBTZSxw;B)pVL;4(N(8vX`A@>aA z`byud5&7Nc+1=la#xi(Q&;9Nr-@GYnbtrwQ%E={tY>}7>|3DhJW%*7M><&L^=*Ac= zSq@U)4^fv3m~we1SlP^qJqx|X1&e=(5DE!RXw%jAxiF(2G8%c2bTKM$P|ZQ5jL4Kz zGYyqJSwU}g`*9BU&qH_$%3+qMWqEmsfu$E#0D@S|Mg!cZZWYnHg@__ldABjW6mcL6 zNckAy++Voxk-7vzc+1Qr&7rTV-41_O1gy2fWLn$Dk*PLJYH8swJ0izs|A^d)i?F!x z!59T$$`uCpB@s8)p{fm2q^F#-NFB72;qD}4YKkcH!OA6S>WYmuEY4|R4D&35p+q;! zY9y|&mKNs3tE{%0h|u6X@X^mX02l{0$~3Z z10*@lZ>iV+(*lTgJpQ!5*a*Tf*1_kkA@p`TH*!0)85s#x)m0O7_LWcR$Ir4LCC%>h z#t!bq0{!-bVzyK~n}vQPfZb4!!8En1_f2Y%NEpG|UG=(F6llC+cza20eVlLX?0zK3 z8g=jVCAwdCru(?i-XCc}w)cWMDOLfOlgc*~@bn&AexDQs#*KjlWZIcN^+c>XEZnZ% zJVO$q@2_Ub^~UY1p77>Aa^2cb$f2o#eIb&>Fjh!D5J{w;W<*FtB-ObMsaJEDG%n#H zMVHg(=_9645s>%-BYPZ;6!RtW3pr87S^4e@-7%x)ZoXlSmFEf+F=NA-S-et51CAO8 zvQWwz+stZP>;_sLK7~wPta@^fRaDfZ@#V$}kV}%wNbfDeH!MH6kongSdX$_);JSSU zsssYD$Is?GsqKHqZL|%7XpKE`h62sKkV>{Z1pgC;k4UHfPF2%GjeL>b#Uls0~eA zPGJ;gp&!hWk@+nm*kt2lJy(PA$9$W=+)z`1ji|&5i0IyQXo7^QY^w9x!39UZ<5{50 zqD`+QZyc6tu(!1Za!d%I&;A3Lq|`gR_zp)_rFpO56x)tLHy#IL2Ix>Qkn8TUyxlgb z--XKBJ_gvPcaxHE9Y=rrZ;aJVYyivay@SG7^ZBv#my=TA?JfDwMQv?az)CFpa(i$# z^I#V^p@5{}iLKiOgZ)%M0Z5nYgTmT&A<($$!~t+fphsf_0|2vPt=*cJ-TU?_PfYKB zblZZE>;FbCU%xdL_;}pZ45kU$ewzJ|E?Q8BdPqOt_JDHwtV5)#A*!s5F-~e5ou)Rt ziW3u>MPH=*=JrbNxt*>_WWbe?hJ?e8E|5Ne!DLS2h7__LS$2o_J%AL> zrn_ax#qA&8s8QBuGHyM0RQrzF7#B4v$t0B`CF4|T;vo(9g+N`MSEGA3x@_wM7cgTBs@@@~r6t=Wvu$c^i?9X(8Tp{3{Pb&$r(kW6yoOxff zNtR^@aUxX`y#2z*zrwS1(fc@?`xcxzaRE45QYR+#bG*+&IzO5U@JQ;zjjkhFEztkWtX5I6LMI5?yyR{^A&(ln`V0CD9gxS`Q|FJ zwnO<*oN?!MoF$$e7Bsu@w>H{SPR|7IHt#HRrKmLl3c9-q!`J;CEJnsp@~s-_cI9^>+H4F4;e%7;O}D z;O_KUE~$U?(YK3!VKX_r#gik3_Lh;+RmN#h+)})aJMnqP7h<4n{2{Xm(lyxj6apF< zN0PWe%b}8r8tAMqd8KoW!XIknUNj@GhG9tf%5?5)MDAFjtbc02kWZgSmLwy=(bYxg z0?w@O$47*`zY^MS|8q1NN-J`155|_3m&e1S?ggG3X3YCt?v%c)e{TZB2fYz=ITFs! z9GeblGc(x0uDB;Uonr|AOaeEEnHe>}Glo*N;y+*Bj; zHG`dxr(XJVdu~C)ahR6idS{l2$7>jyaUjOzrSA|o^$WYz7Oq{(A>ZB@>0q||Yv{_m z3r^^6{$GB~FV;)v1~0>qz@SEA68a`*2LynmdhV_+FtPXC`TB`_-HnsC8Nc&InA>sA zf3>gbuk8l@k1<5@Bs7~sA0ib6SV=d)@>K-AJQ}A&J4Dm+oVcls2UVRbSTu(6;*<8s zcQ9HDssx$h^8flC9%Aw^f|_v9#ejxLKolg)F@WgnrFOHjf8#2PQhwQjW3yiWGmf

=Pel9J)?xz10)3(B`|4#S;edzjdh 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%0A9{b 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%0Au5=&7W>9nqvhjG%@B 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

YDRw~TAyCJ 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

qof)5gm8biAa0BG4Dbm=CsSf?s;1KW@^R}&> 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
VFPz9l3j z+pBoxHt9vd&J|*SU8yfCo3Yki0iI1%X{15pnFUA=WP%F)>!+WQt&YrA{Di& z-6$s#GPF8G(QHMlK4GW101Futa*VjF7{M9mWQf5;_b6U4U1vHpJcJx#((&MFh|&KG zH~#S%?MSG+7WK<@A1~hVAHFDf45GH*7mp$n48oUc1<$MBu9GnW!wR35jW;Jc5|bOA zk!i$OZ|r-{dSMPQ@WmSJbHND*x9wTwy$=VB;o{^Qo^|%QZ(U+T!}PivOFJ344$v{< zN5tX8LMoK6GH+X7O7+d^>WDwl(dITWrK6@jyMoYe)fg@1D(qSH;fa{kY?UZ2)4cvW zk7_`s#FXMHrr3TK4yKp}wsBf4jsL1oYXOv>;#rP`^)F*CaV2=7s;27i#JR^L|JBq0 zIZbO%-<6ZFVSJbe^w)*R?J;B}wFL2t{3J^5D03lLhg-7a!@6a=ZQr*Diqp)53}1!3 zC@o}r1|=hh6*Zw6SQsLP?@DwVl2jTUp1_Harn6}d17oMZBr8XXP*zXGTg1=d_ulT)x&6$|pEBRIjge6J&)lv7cPvKPL!YnyK%?-LD3a zw3!hBOM@demvC$~R%D6jg4VcU=eRgH-Z4rP_&l%)u&AhRawm3(tXwPA(ZvyonsUom zr|MrCK{9^3ubs8IYd!kO;^bpUT#c`hI-4ipouDYtzf;3S{Fm6773_P*3bgjprpr@7 zv-Aw3d&{bE0VnrcG3-LlF__!T)+6VyRsPvfIq`cGZ&?8~3hkP5V(>KFZZfs{P@|rb zz$toaYHH((y*vcFV4q7wWD*$P6EKNe)?8R{pirQ}5g#8v>))r*p*_Udv9XhNA*FYd z6p;5?SI2#2jKL<(p-mmdmiigA_$ibUG>vV!Yq!k~!z|`@ znEeW1Vpr^!#NN6UNW1>f&K7CZqR^(=7bSt>JWyQBgjh=T_B0f@Qz(3A<6}=IF@`NI zFu-RbD2s5`;qjQ1i2Hf%Gfoa8bF6G|`M}HgSYU)mz`5_^V&E%j_v_F`iJpDQab+1z zRZJk2H;e`oR<68g&}uTxN#K(PlVUtHN0poecC2jv6c`mK6Vfiedb;MD3hl*WzpcS*9eBEWD&k}+`PB3XTJhM_Pb zWy7g@s9YmS;G@e3{udOEz{jzNxeDRoLjMDf#}S^?L zMR1)~Rl8FicoX^il`L?)+kcA%Xor07&I3|g9qX@vnWkGL{`m0=w&&$V%N7?bj7Oe` zxXO=BdU2fpY8@|@RRV*pN&$79ohrRPNw(mojHUJJCxg@8s^Hi@L5dpu>05{lf~}@m zF6=$UUYW=$a+WD(1bL1Fb}Ksx%h*FekCU;8g#RlrzETqvFC*qFXYN_0D_4uvu2DI` zOI;HXAB4!_{9Lg)${HkH?!t!pdh!6(yCXZ`N&|dTB1!daFLvb?nX2_6n?~oKXg=wP z^-xTApG|O9^XSP9dxDW$SZ^;CFgR80P1H4a1;?4VxusRErCJj=l92IbXzAqTR@Apg zFP>p}!{(He2UQ*($h}}u!@`F(uf56yLBZgJQqrL9EN~1Sya@^CeDifCo4}nieoX$s zlq@wb)yQrG@V?ey#sk)c_4W0A0D7>!1}Cyh{XZ`diRi|=c3cibdAm&WpKN(0j(`%P z%%9)ShK^gOj_>}Yi_oXz!1Vi<(fF{gXk|o>xVfkw4_ont5yd!TNx*f3ihluzz zx_bqfVd;lFO!b%?x*oN1oI=G~@v`;VER=W@N5Gc|mY=SZQCZRU*kncRs5s3xBTq9O)H!NABiy) zFR+990i_a~K{awN>QhrD2}1 ze}s#1a&fU(yCKH#rH-DS1yE(KNFQsjuUYjKfR0tV5u2jWTY1#gw~0@BwjLZv@vfk? z-y+s=r277ZiBX=iF!M2>8p*lxcjP4o&fgG909p?8>sF}bZy!vT5=QjanGXZFJAheH z_v=?rSLgFV8+vRkYMc^?3!oh}tZ%Qjxmq;vwb@04MkY>0(^ho3f6T2$$LSaXFjs`- zQkc@3Kfk)Im1#0lhV|SFGUwt!6!jT_Yx-0<7p$Hk4=CVLTs6lfHpGtx!fF>7Ezy^z zn3T{g@h(xo>ArFbXhoG@zXPAlV0e%d#9NFN1{(ncibiC0`G#s#JWKnMD?3k4HwM`X zJHjzKUu(ghc4&rs$;k;*tn+QrVI}9I7a`)W&xkOBJN!ci))fdEv#Gz&{R8`Uc4*)C zYr6rF<8Vx;lC+K&Q(Oi+G!85J=VOL_`G6{QU_1IUC{-nZnudf$HR8m zCLh#|_&Q$r?&X16`>Rz3!wG!=VNlTajUr-0!s82}{B*iF{aAEr#Y4LB)7SO81(A|P z+frmAa{=)GdjWF6=-4?`U8Pz4l=>Dxxmq^Z=W{}OZwufWl#HXr)*o%rWPaz$a+aK) za^_$7e0{odu8%bTzx`y69{>PrpA= zP&#er{PyDAbpzqJ8b0?XDc*p(cfa{8EZAmAXXp^>l>cpWb+vAvm@RnH?7ID%n>6|` zKareHfe#Y|mPU$aM6UypFu9k_wLb3Yw;q=3FExE9@Vz^uit&p;{P+-E=tZ7k?>t%O zdm+SOO2yFd_lw=cj)d-uFgo_{rF*Q1@VK4k5$!5Hh*l+4(hb@T4K!*OVhJqrx#NH< z3NG3*YXFYg5cB(=bcr#`(Ys8dwI^WiQJGleTd>Vg zIeBq{XFhT&0i_O1c&H!{Iw!ZFB(7XWrqLYkX2)q>$9&aePbrZhIq<}&=UO)WLg2F14SY8oDXB{DSBS9u&UIOmnMRQZ4$sFV4 zR?J_)&3}sS(un4IdohfkRgovua!SBD8ew&iDCXIqC{}U zw5yD=W8hAtUB-KdUD*tvIEfTXx<#PFBhIh~iaLVNS$s5RUMKOmvofLyS{37zRhL)8 zWZ^4Ik7KSlS{ez+&BO_MrdZ98O(%QhEwegL0S- zNY3`7wGDg!@^63w!l*t03DDfH;=V>ZRU2yB;a^D+cb+3Ih~1B>(LZ94Z|_vjj!&G? zr}9TzMoj@3fM32Y5r3@0a~;~^i|e>NCKc6dwWFa~0Om)zKyY+wlQUeMqTm?nO^%8h zJ3c;cqR)qwB3&i7=qzi=Q4FVaPgFeAn%CtWW##X$X=fbQ`>nL|-vux}e~mWRhpz&?W@lL;Rs zF75{UC^V60M48H#^oRIF=vSoZ66yN_8>@q6c6MH0Gn&gF$bqmyw+c&!Yqvza5KZEn zxqrSLp8{Vd9g2j(B3+Ex%%PjO|E!bYN2S>j%Z7nE;Dk2IqBq3^LO(zIsU<{bta$++ zOu11lU|>9O{}{nv6Pn-K`?b3(8(sO0>0(7#w7x_V z+T@#kL2l^2=Tzu|ub)TWObv>0j-#U3T-Z zp>h6{qC@1;di%Sz54!8O>z5mV|& zrgU5>WX&4-b&AjI+slCA1e2ON&gb_wfzbpS{~Oow@ze<9U{PB60lxS;KE$=T+1pHRM4lr zg<>L_6d{K;-F_0j?iNu3a?vAO5;quWQ@2^)1fkuR17jS!3}zDd z=xzD|1&OKkBDf!z2Qbn`Gh)JIeF|dt+j)uE^0YFwN`d}}+3#*nwo0qgsY_o)3(6(B zlD0PAUJd+ikO06c?-#O#MLuiZ97)r-bZ({$d5d}`+hY>Dn*Zv20;07bumL~Zg34@z zM!?cTa7qUUvC{>(m zY-x#e@IA4UAEV*r=kbg2e%`sq{ZD;g?XQl9ZWXg@assf}*eNjRa3xT1X!_ZRSmfCqR=HD12@5Aao-=@-|cDE6@1 zKYM_}p<`rV7H~!zKaWRh^U6`eIO>o1pQOH^KJ{%^jOfZDOb~-53~qp#>oq`Bs7aH^ z8TiaL*raBcmuTwikuQ3^^dYg1ebuIX)XfU(i1$@n zD2l5M<_)$Bb;wk!NpnUecgCk71q#T-N`dooz*I4hHVL_26AE6KlE@v7<>zIr?6Gc4 zKt{1_3~J;r65#C%^<0leCcUFrQt94+=v)B7Cqcg*#!_f$5ol08xeDEQ^bjZ%iN_}t zTe5+A3)k!?TiA4Q>0OGio@x-0(EyIiSZt5;wy^NoYXhHUWo)w)TtAT_gNy8fg1uPJ zjp2To1ee2gg{08{}X6-rI{+-UBXyjpFs{M zBBH9yrZ2&8u>~gPo zo|W(l483};|CL}!XfVI`_)S@)MKMGu(J@b}WcG8O8K&mg+2NA3YoAMiPa2G5Pwz&^ zEhw1h=n&)3lB;565F#FYd+VMXfT^42(|=O0%IfrVV^dzyvRes{7dIi+s#rRc7NU9r z(9&eTKFrCy7i_%u6i$N)N+ros+j5u3O|H<^C|x`+l;8`#p}>sTd{1DRrVnM^PEokO zEXMGMnY?bjUC?iPjy3K^u(nh~oC zBFxSy!;#7})T5fk=C;n)AK=w~1lr98d;>1D3chrr;k8haZd%8mw`!tFtUB)-`b}0D zPu2z=@JBsy)j+W-xU!qq(fEGKgj|{Uk*w5oC5(1zPr1fQ{#ly~c9ORS z`wl$vy&h)Y2R7%B5BTi`^>ZjC5l4eqYJ~?>UT;)@E~?Jp;w=>CjO{jIfMZv(e>qv$ z6|cX3K_776A|j4U$GBB|8=iW^@r>w-1rOsfIHSo7TkF4ee^HnC3Q zXYzHd`y!mfFW6oq6{y^fq(#rp%h?17BP2}eD6763h9E>>vV}!wF2p`&^S&Sm^uLm= zCF_rnqYO&HF8%a(_p4q!{=9njVYFOQ3eZxM17X}?xTIZIjjlVCqi>ny{LG`^-l(j~ zRw}rdlPpEGrVOyqR949_(Zu_dGh0^}Z11B5$dDwah?&sDHtW7kI-nc7M|Jw%ZGzcj zt5{gss`W-iYgO{-0fX!|R8loIzlayGiNJ@fgZy9ZswenVU#oyDA6QK1BA(o zIa`#p$TYs>S2o2Xx%|UwjJuSOal<8hT9VJ4ObEbM2jB-YrvJI|F`OvS-#N*49Z)la z6i5py94|7wwW_0VlbO|%1LU9DO$_0yl~u11isUm71K~%(^uO6LC`Qu8SKHLJMq) zhTUzN|4FJfLck+yZ)mwL22`IKRv20@_rAA1N=<${FCd$fVNPRd-r^vLMF_y!xW9a* z4lfd|R4vnFRAt8hG53cO?e#6lh+q60zF>A;r(-;Bq*0f1)Jw&N%y+ckUBDCA z5XOXtSXs6&Ad>b|nmj~lZGM*h7Y85ACRUUtKEqr@q<#PVvHu_}%uE`ioD*49L-X<- zN;1Kx$&=UIj_(SK1sKStE#a)Kb3;G9q!O*FfXw7-9B$`6&RiIF5V8%(PTDu4^sm(1c z!dR7%QDBFHB2AG7ukVcpR|)nXPTwD&{kAA5LK;Ck8iA{RIFq9>Z5j>uL-b;TL{bKJ zrX7M>N5iQwFbPn~GAae^v{JxryWUs5@l3z|j(Wb|5^&uTRf4d{l5F)EyRMCCpPM*8 z#0@aSj^FpXI^Caa{&Wmrf*8)axyd{Kh|sRCn>nkmUl(tOb;hj=@CdG|IQo76*Kx<4 zqb)l}b}AH~Tgf?HhUv%l_C;6WtGChh5kIHr4uWNO$O!0PFl&RG>KAF$B2|dfCg+y| zSE2CeQ%PpZHMiMKzZDJyxOj8!5Z)5p$h@xO>%8Ya`zgKf9~ksaS>k*}dMqx-_kk4W z-jgbT(ONqhf|XE@zR~mtiACY~<;M5@qoemVhV%9T7imk}w7$!_l+U_u4u@;et5may zz2XI{`5a~X&PcMkf$v(=>eY}w*wr@pb{;RLO9Fy>k+)B}tu1^bwtijk4s_cCC#~^t zG*o6J1#=@gPATC6sLwzJHX_^hj?bnDu#{Zf9h(8&Ua&#cR^cg%-w|ROzGXf>7zcy| z@bA=*v6l)P^kX`&p#gP&i^gMpmEL=M`=?Mk(lX3k=ayfCF?-Y;N|PHH`s!$5%Lvdi zDE9%Hj-df8nua-aE;2%{K5aaG&QpnpyCZ&d*(O5z2=}`;$i6(fG|Zz#qGh&p<&4|f zGrEJy*|Vo;p6=)_y2C$;`njv7Op{H$Cav|&d(r8j$8t{QsIdb`S5CU@oqS%%(6aXY z_b> zMEsiqjjc)`p>lsofV?xvDdt!q*(9k09h6WgG%g_?Si-Teu>4oUXY*gne>PkRACjad z8okQCzwr?F-{WRentiVypY%hn1_aWlY&~e(>hcs-!T%!p$nU1TV zm1&Fw_p^!0r<1&5vY=$;)J_-4C0dnT40}eEqSCn^P5ZKhV6A6e!Be9$trB+(_oXN2 z?X$2vnDKB+fW77_SsdF7wu^%DgRIIlhI!60Sx!8kICC1dtYtP!*FFvc?5=$DWt|#O zl|8nzgRtT`Uhn^mPG3P!L`>XAC{a6GJZ}fQgLNGFICc9Ttn=%N1#WH0I2eDepH0V7 ze~)-=S_EcY4t^NQtLW-^Cmq*xv{a5x%TRwUAh{kxv3PxW{{&?G+tlmqB5Ns;DAVBV zN7PXzffIk)fzRtFa`?MX%w7chvTb^&Jn}B{m(RRJU#wbq0(S_V387E0@&XoeAxSB_ zyXkDc3(}#M?0H8>B#9Bh%C*r+aHWE2PSeg2$3CQ;?*S#Wdp*6Opc!F^UbstB-%Fn$ z%`I_41z{Q2M-1apN@Bo4P2@(XpQ-I{q{8B2n5KsQIuR6|txJ5(Fd`V~Q9E`rp&Jq- zBXS0VB~A9y_XTUbxn%9}_+ePp9;r{w&S@1(!e7Ga z8*U!Wl6#91(^71k#B<927ecSbud1p#`PUR{R@Zun4D)MU$K1n;q0?a;Fj^#F?Aj)8 zZK>@MD9_rqT*L}Xl)9ID8uvw~GI&1}_%1blBj}gF3lSHsQ!N9aY3JbxVz9$?-eUl3 z#T-FGqTjk2xgU0|=GIR24_`cheTcvcKG$GNx8ciWgvd4kiqoKa^1>5wDGkkk9JQPB z!Q`}F(f#YuYjI5GARU@ewoI@R@~! z7zxO5sVG z=Fd+lhDF4wZqG+XvRg;nKc6F>!3lPah5@bl0a> z$(>pH|8DxNoGY|QnB$cGVPQ|+$~Nttzu!4VL*pFZ6SOa{G6Uf^E@B*ab~${RGK~X1 zi@d)XZ&SQK@&G08`*IC&i(O|;ek&~9>5hJb{8uxXoq44)%1-aE7@S;P@u{xYly2z% z*+u{I6CAqMCWPTkd;*ayuAjBlxN%7rDM@2j_}#e{La#mj3V^xp?tCNB*og@Ep)G;G z4Puu4eD;hT+6%)(J7ghST=3zqNFt)u0DhRYf_$W0gP(lCujb#1-7DW3h5H7Yk(v9y zN`Ip#$|tVSBdK?fO&gFC2S**;KQ|I9_4NjoQJ8IqSzsokQnJ*(Z2M?%wO^_%KB)i*+56TeEu~aL)g* z=lDn;u-_6Gs~vcM?{p6YfuykLVl!ST?FXvXWjp_22Qn9cVBc*8Wo$s=b@%lOUR!@B z_aPkb0?m$v&CU~gvxja|dMp0rIz%7&2nR_An;bF!n zsTeU>0EW-NrBHQjVPhq+`aq0%5$O9YT<{3Nd_OOOL(zSVzK%`$eX+<^p|XD!BvU|2 zRUP4H{X=@meuZSlx=cN5r*e9!n;P{5>bER4O|FqgD?4lo&|rYy^YcBu#2&G$vl!0h z0P5}RNgu3O3O#@^f1&JgwkHnd+++@)-s4K#lyj}Q#_BJ}3t0fq^d78g=vuSHsi#a= zIwxUIUQap8dp3zd1jC?sgg4@i3tj=DIhNjasO;F`Vo0I5ZRLs#L6M~fZiv{HWVsMY z^ZzCmmtO8zJ#4h zsYhyyFjyT<$<}p{>|+WjwJdJj&ir&lElwX0#9R)y)-1Sb6H5KyzGdYv%kkW{K2r#X zGHWljnKPspqX3aH+z{+eCsD^K3qQX!P7o3C&)H+EJb|W>UifG077`$o>*}+`D~=jb zC6V{VH$mb446F$?b1IqIg}9 zW{NswoRai^ReN`*4Y(meZI1v7TiGnmw6ktvB7a3!-%{E1fDRIFE7-@INnd#LwUZ*$9sJboxA9Xw|%iyZ1C znn5Sa66pe^gK)|UU3wk# zLSJ@=MMjNZ=Ql3v5(862Uau3cGXrnsl=F=c52?!f|Bt4#42r9blJMZ}B)Ge~ySohu zI=BaScXxLS0YXTEySuvt3GNWw9rk{^wf~u-YPh`jyr;XLo++k#Tml+v3tujcF6aWE zI7FZ10tW$P#>nc6Fx#6a+jcnLdbj`mnhfqOi|>GY#r&Wqeled0$Qg?LZv4;tzH{Y> z?0V}&n&?#2v_P)%E{+lfwbf+7Ue){lxsB%&@oHewlM~65yZ5?l)z%>1YIk`!oa!Wr z-2U>qEaJ2-dZlB#MkUjRGU{+}HVYE8(M;aqL|U>OB(&n|!~%Y!@UPBAJu3@;l2SOF z;^O86rIt^!f+^f{VG5G?5jR32ddFyPro+8qc9^LVNX}Ji*b)7q?T`1kmFM7J85-s% ztGok?9fy{UQ>q%w89Igzm)$UOx;p#=tG&<~#G0f(IXMJub`XhJv?eR3b?v_)MBn05 zsAUcQo0A|UhDL-J${&n#vnZ~1=x`dkkfqrQD3608@86=V+*YGZfI5o z`uXfAcesm_L3A;-Y$U*hUI~1d@Vk&YM<{v>Ci7wvdtNUzo96l&ng@s*l!kayNs6yJtQwUc zvkR67r=8$7Je|`!zE_$pT9s3WgM+t<2pfR)Hi|e=%3Bcd0zLQC)ia=pshbEZs_H0E zeZGgiZ)H!S`AQ8|h+7x`O(So=m=^CYQJ5(I{^d8Bku1FU5naI@Osjk7A_JHKKKakF z-T!+5UPa{<)R|Kp@DY$Nf5+*TV=US<>hto5BOjwB!4M^il3woVJ^p^Km~;}cbqEP& zMxW8mXe*1Avpp@mIh_b6ZyJszhms`>3%MNOi20CvzJ4Aa_L^j#BuQ&s!5d9^tV$+> zWJA2%tB5$vtr!K-PM7c+wdECRa z@+o25Dwx*7MTl|VC}9k*^6;o~Q#Rf=$u7&fuHNU2W|~z=@(I&!S}yK*^?z(7hEB%N z8NTvqxYY0rsudJ2h*JKW(uh!wG}j$gGJ0}<8LfKb1o|kq7WBIcA6vX_^(@oi7)TqS zl{Xar-~X=N1S7bwa}FD5o_&|W4Z17inDX#&myU!Y}EVH9HG=W!`Wi1$(~ z;q76;-sU+k#16_Q)RdX__{79VRHc*(*k{c<9&sZNXXkIK5ILutLoA^W7=Fq>n}WXN zA&eCq%`p`;)8puW)(N~l)mb0uIU~ko3~zdgT6R-N zKKUqOODohlYUTvDzgL=6A-`wDV-4{7(l*gZRdbCn`~p>}gxycn+5jvH9wP;?A%U;7-W@ zTKhI*&54hS4?xO??sR2kWr4~wZ~OU!o1?n_bhZ1{XY$xsCi5eB%!XSXI~5J)kJ;JT z+oMcuRx9KDr7l=Q$<2xs>7jp(6YXRZ3%bhcnCld9ZKNHifdQw^%ON~GT*l{>pKqY? zN}5ki#Dy4PQ4==?s-cLnL62bQGd%;Z3M)#u@!YYbg2LwWg1Uf0v=4jHuktT4L z>fQV{w&fxak)oT&nlnP~XWCDwR|yO`0qM}F5;CbY-ORwxpe0Shx}w`93Jb z;DffWbrbPQD8X*9+7NddtIVlA|E^Iyuu|;DC8UW#^I=jZb3KXgS-!^TM(`(XS77WS zT?6|aWQ7G{GD8y%j%^V`N3Fww8#(vq%L zMKwA|Z6I6em*jqP^YS%J;weBgbU5?bq`%*|$DFIHn~#iCuQbQJb9#kdI|J35ySc>y z7;@UOK_K#FYT+I);(PD(?}p)flggZ3{W= zV{4xs-fyf33iC|u{Icf5ub*y#(-haM0I1gauaUcagaNd$ zxVS9J)%SIyZ1J2TjHUH^S(#0PZ=SF~VlhPapL@hH&?d-O_Hj}NUc4e~fq;u^j+@Z- z#s_Oa5{m&Y9mqpe4FR(Zpk3)TDE_i3FD(2w4ZG5J=ml&pXf1q=4dcv9Nzi7 zEC~h1H3huu+cd#@877Y}Su5q2E_}s=8;zXB9AGLKYV4aTX6IEXfrQ~C?Y-FM^BGFY zLm)Z5xm}?#l(NrI1nJ}R}SpJfbdSbg-c(aVod`-cz0zSdxgtJ;V!0{(+-;Z z)6&X4bZk7T09?e!_DhwGAvv)ptCI3jvteT2bH|pdI_8xUVJn5!QlpKeBZG%Gy@T&Z zlAH9I;hNX0?o;{g7Xy4Qz}6lhw{pNw(9T|74{ja}$ca#ay5ZjKNC)tnH<@q*FgGbn z$AGp~pwi;ecVST<;{U+N_y>9*W&7d}Ld(8@Hdo-61kEy46SoNP*`wEA;vWKCeh_L< zx0z}Q85xLNDY=qIA-0ty15X=MLw1b~r>QM0ba=3amf^KB|E^3!{_iP{r?0t2n5vo6 z2Z?g|hEEhu9|TXYdvhH(|NW{0>OxV?h!YC=2VOCR#{omEuD;`@H)${)yQrw;(eNqI zTamkP#pv9GP-7o(VzO(T3QGZ}sDK;}T}cM~S7YmDOJau&myFC zHKBuy#miM3gV2h_r>=)@2GoMR=9$KRqu2zXhD(Y!JX~2bJOR>HRaF3f>T4q=_4Lx1e#^Z9vFgMD8zjLXlNVE++JW#I< z3g*k^2BcKK|9q|YwTJL^an|QmNDtrZr)c;BQVr=a2lA|9P`=Re(n~-388`Tglt4FfB!^ zZeVE%Ka}3w-2$x?H(`fUP*9PWj+uEp*#e1*$~|U)a?d3l;FbdgUw~)JtxaTba4@8$e*doA5rhH@Y8`i35dIqYXs@C=^Cv;+Xtv|T?~KQ;?FxB!36TV~*Igk< zrz|X#bj>o<$v>P!?HX`!Pw98=F|g;4SYW{Ev74Lww9`|}mP^lt=R zsE<;`;J9TNE9c<-Mduea9U^TMJBR-%#71)!(=Urv1|JqX-Vol{J)&+M(E$=fn0mF!i-tF&G#0PX+Wb@X#u{+vf4=wkxIivN8uiH^GE}5RLK}k}@OBWG%-4CT zb=Gw+3OoePC|X`cWZtg@s31%=NB37oM>bQcB1wEqhDtj5S*XLLrjFOHtFyufjez@m z(Q#n=V(`1N@$w}mJ{lK0wX_9k=@It>1C8D>gqFh9Vr<7-Yd4S`DPbqoQmgVKy5w2& ztLsDX)UVFh&xj1!LZVh?45iIUrhds#phQ2d_{Q)3vX1J#2HX652|}ISfWS`BsFGNB zkYa#eoSj#&3$zOzt0(MsvaKoMdPub5aWCCLz7#CL`_w4^zJi~$jvsMdb;qCm!fnG` z1-^rhkw~syF-zimw!uxlk=%Aj^uqi$hx_3Hc8{|10E-?W9~B6m!9aXZ{{Z*Btp~Ua ztp%^mqGDnZm$W)7JPk>8L}=N6RG$9t1z1#MZR@{g&zeL8*2w8AJ3*q%)b zWPCieG3vtQg3|m0OIPuy5I~Fz2zd4kh}SoK|MIqvQ@Hzi56dn;DrorU^b#m&}?0UqEjo_jWue{eeS$r zuh2qZFlbxM8q#w_9W?*+)56kxVy zQ*9di`&aNd{^PMNT28(wO6=J0-@l9ItV|r;IeI|*93_U5p-k-9t09R-OzQZ*w$bqD z=TTt$EQmJ-*q$1V6nG@fmZ1lQuVJ=h)1fYOVq+Hw8K%@+OVXy$`@f7GpaQhQx?m@R zNm##AhFSz+P3SQ)exS+y|4roJ1tq?k_^5xFlr zZ(_%>A*N!6$}$eu&gXF3e<6bFrN`yH8n#@_*bA|%EZ9X%bMBH~5- z(kdOl1AiiKe zDX`{(XO-&v@Fg7^<(dwVh~wfDwjYtF?hm2BcJZ>Jy-{=aPo&>#X162P@A_UYgaYCQ^>D=KlS>KobO;F* z$%)|#Fr;=qRr#=TX&WhNk^CEIm2-tZiqX9p{|_pCo5XSjxg*;hba9jJQ`bMo*+_c&dn6ijXPA?WHs%mW-ID|rN=QvV(RuB=lTbas(e38C{DbJR_K{60%? zkfZTW-ZBQ%LK$5rE5o*r3eWZ z)5$x)O$$R0@H_lb40kCHQ3Y?aQ=WypX)PW#wH>1Eh;$4%v2}I5O7=j{D<;$AIJ7Cv zA0OD32?WNccaSPFK;*U<5$sXTip@~b(2}W<{x4*-)Vz##;WbuparnALi2&m5E{CLi zci}BP(5dKR_g}x066!+v7)`~6XTY*VF5H&5;cQS>p6wPb0%AL>tE`z{_or? z)#*^M0&7VsnkEcC66ed&Khy6?B~Yu(l=tAPq}cTGQ=&@2o5<(US{EbrMcv+hWQw&V z_I`lH5O$h>LPrIoZ0>6efaTL_M?j;_1gP-dwR3|1>0q&>Kxea8ICR2s5QkRG%6UzD zeecyaa=a{HI*TRF*WbKpq1he=l6cpj&d#ekNS|vqF8bM<3!t@^cZs#Xet}A_VH~L8 ztld|~XVM_9!1@&13`e&2mq(j0I2xyx|22>R#IEL)fL3sCwlGaCM1BC6iD2~N}_=on|Atd zLN3*-vxBB#b|IrRCWhrTTjV`-8QV8zU7{{IPLW2+UVxPdrj9;6&`bf^)Ht=1Wk@1C z9L@G;2|{Aj_z03b1nD=Zlw9dNYZ^dx1wX;^ab_KGQJSjju4J`(fTd)tJQ7VwQ= zD)hzg+Qp*X`rc#q-R%4K@75S#QlAS7z+ku1Xzx`S>H^yl5c#D-vbaTc6Azz+$im-0 zA6OOxgRsJOR!t3uDzR7(5bjegu*o%N(7@HG_#53;OueU=K4+y?^WOad@yK~frK6RfOS5bnxoIRQ z!3DzW+telM^;m)pdg-#oGQXC;iSkOeKzcP|s8w|#kow9|+9C*}2K`4}eFHcO#1PP; zJ45;?x4uf;B>vCO)6SAre+KzdC}V1_Fttxw@*aIZJ`{>Q#jf6$KePLj(d$JXvS8_` zb@6)naFiTCfrK8%W)bbd#B@?+2Gb&)_Y)gqfzMlH`&49){sCwHVro@ueN3OCi_t=- zA*|%3{)5u%QSytN7OT*u{=Uoa-*U5>w_TJglz&rW8AA{%(456eHgt;pErXS0N84XB z&i9`?PxbNL!FhH;3OLGn8W%CJ0oh_teTi2U??>stn$MFwEOaJfJm`~mO;gPszv$UG zx+P$R9z7xTQ5C1mZ%4;_P!<1)W*vVZFO98viL1~y^5X9~_cEJ5ZP-MmmHMrOLgC47 zMPw{@owd5@oj~FqE%wpEJ(G)yuWFl?_03F`>fwqlI>8Dz4=p%Y9${3 zjpn_=!g-)u5gVU-@O19MRrwmV6Sm^;PFzX#cy|88TF*OPC>-HpKq}_FHRh%F{s(}L z!qdLD>)*^M5W5bY79J!37p_D3d?pN1K%Y3t%HJN$t+KLio)iHD#5`2YNv$2J+r1Ww z&TU}5z^4oytje{JnR(PC6o-z%#mTL_dOGLWG(%gg!w4q)x#`7fgRRN@vDx%p)S+_= zzEMS$9M;X(Uo|h!>g?d>O(yg4C3Euea9&t^0Q^o8(mizV|L+zH1eiksI<%Xw0aJ}n z`|b8JJO~0hv4+T{(7c&D6#_ z+-zvS`M8qp@?r)+?@3G=Y7ptf-P&PcPvhGMhjP!<|1|*q0qJ2``}%l@7Zu^YIRWN& zb9?u6&9bR#H;438*D|k%C1R^dR!)5B#&b{@JKh-O?THyk-uA}IDv@CjMiE`LL!2FV zb1{~mr_lJfH2bG->L}_7(pK3O11Y%q=G3Rt&>%tIJj0836F`Sk!rq=2%tLuR;euV| zUk#{2z)w5o1R@SqbF%w~&s;viVbT=S**p^jL}YS`wyjHc4eAN5q@bk|zMSjakW{Qs z{{K}rqdsK}R-wIWp_D_2_b51h?TLqI#<2V>?7R}aVdsY3VNjv-6;jwOt?dxwX$epf zQ^R1iNz9*vmAp51U+vo5BE~A0W1Y~-Iiz0^Q>|^Gn=h;B+sKuEi~bpeCG3VO;&(oO zO|#{pwHy*~d%%<<6Ya%wXbTO^G)zeOY7ugUYS^;}=%-X9BY@oR6_DIaRCG<*rxC-A z>MVk%%ZS6mHm9Un;5x_SR*ardJnR-S$y{CIKcu>Uu+Q&v0~@eeEb~AB+$tdYz`4wl6Z!d)LP=O~?(IPfTC_$=jnOXq{_{wJVT+dE) zQG}aW$C#9W-$@QzFKFM(KA4Q&@K;^+-qH1GURbJuPy$mOFhWCroXj(=7qv6XBQ8`d zRcu3-d{3$E`|&uFII zP=1~1mE;)m(+TXN20QQMWUhnxl=~D_`Nt?>8AjCdX+*gqu0viuZdEq&zqajXxrV*I z8&^in4nrQ)B(vO<=w@ji1dM2|9$U;+fom*)*&{H+0iOa*p5phqa;THA?IEoJJqFif z`*AkE6Iv_3v=~g$sxb7VDxY1EeXgnnDh<@JE1hoh4ob#Z;Y|+*<^Xv&i%|RShxY_P z3@qH$f9vB@r}skb#iXDv1&4PtUD5?!0o4LLRR@}dFGB3B@(9{+@>|BdPz7jT{2H@2 zFC3vjON>1!y~h2Zd~UC;uC{CpzYDzPgEL?675%`Z(o*;WZHhVM)WX!vgzL66+zv0)88h{ z)VUg8jE}tVS@>O_hy!1vyGrLAoCneo$}zO*wPT0_CMhaK{h~_uT$#rwD8g$yxn=hQ zxbaL-|7y0rxr}wVi5@`8IMy5@0jU9c(Za`W^EVu!^noqcq48!Q86We0qSvqBWmY!?FA8iqt)VN5#0v z#}d#UeS3GAIwNH|wE`uuwQ_c>M%s?@>ki>=X~#;#1*)_FuPRWi#jk4J^cO%?7m#(^ z;aZwfHQ#K2KuL5UbKS5s0wAE{d6As>0?)-|2E5nK_aonq6KiV!N(sn-Q{{+|ulQH( zuC1ab4)$x59STK2-SCLhr+3yoE5LqDTpba4{+LQxMOh;ybYAxVy#UNe|`)A!a8ND`G9+VXVqoyboKR=ikX##sydb1m|_7G#2wt9)z8d#0TV(F zIIm_-8;{P}YMplwOI;WUaKo|U2RTt(ua)!jb`LK#^921PS{`Y9id1{5ZUT%jQbcdP z+%WRxk4w_zG|p4#B=ZO*mr18^FW=TuO*NXsOq? zhfI|wu>md}Z6c4-4*+_PKW4evnF=g#X=PP@r|m?X8y@bhIKbHgffAFiUjb#X(5J`# z(Ba?{lPgO4Hx0>E=It9vrDMR2_oV^!_JH8orP{T$rQss)PPL4Y2Y#Mkv$0jx!bZ07Y9 zuCsGKm+KV8>y%v@IYUJ07EVH*cLvZv*2UG#p=rqBiJ8fMS968CF-)unfNr%<)^&%W zql!K>0`*a^)a^8V$3^S<-P$ydRF|r2U%|OD8lp$4n7sepx4&llZpC5X*3R&8G;_|b zAv-_cpaX9}SMT5LjO@0rhd5aV6!`)b6b9Ze>J%@?n4~ez6BOU76IIiikI*Yj=*dzG z&SC>T5!sIJ)EgA>(B6W+qsZ}tk<(g>H5ABs@<6EvJKu|Qpyqo+dtMd+21e3|l}7Jo zq`_4SbLLt8=9Lrz!M}3^rqO=1vFN6P6Cd+si9QVd zV5hu-*>=Fd8L$nC!_;Yv&vd@1C9OQgmd0B1h^(H2Gci%{RY9iz@HLrXu2!!CT=A)f zB-W#C;$;=O!V>3$oK9sM?`u7F#F!M#86F-eX;aH*V(Y#AJ{2A}B#LB3_A!6s4Q>4~ z!Dy@X_&t8H{SNQppY}Un1hJ$KK1=FIBX#oE=(^<`tEw(xWYA{&)-2u#T2j{0V}N+m z3Qg+e;dvFOU}JLf76r2s_5;O)Wo)rrs)>qe4C9o|%fK?IyH&v+zrSA3{_iO|0G;l} zux@I-X{E?_kndP1F?8e@S?uVtSYDvW5dQ%nJbYsx9BU=!cS6!{vj48G2m%#z160Yfj zyS;=-pI>G=cwzubhSuYb{H>u9!aaH_EQir|hcPm$#|SuI1@c@Xlm!y?hpB7o2Qd+_ zeiC6f`n_n0d$vS&tx7yFLV?~K(?L-vFC53;bb9GWFpMr?_mXD1tr`Di7tNRQ)fENCpbNr+b>bLd)}y^n|mW z$N8F)wP}b0PFYUzCl;(oEJnoyv#N%O&MNEbiJz4&B5N)dmo&F{bsWxdZp8KA(}eKXO_o}YfCb@{*iaa+%K;i?;@eEKq(9A?Cna}D4q5sSF2fG zC6bQyJcIU=_0%FxnFp0KN#a+$Z6EJ#_U+)}A%3?*8(jD+x6g_4a`Y6K8Rk0?Xg94; za*4uGyy~p?8sm7?B`Wx^hy1jeBeM=o07a4-)eklVU}{t}0_HeLCYidKlBz1Q#oI$S zA%KvFnp1?-!_NOgNW`8|`OoJd-jYa8PMr zU`;H%SiJmY_W17b_?${BCVap<0zNV+V|P58;OVD7;NB%3VrFHfV$pAX_ZUuk<+!`<$XrJaOi?2#l`5J9-_(dMy$e_4RLp7$LnBl!tC3zR@Ea z`5RB@Y`)7(j~yG&FyGkqJoBi*;vsBp(ZAj<_(KuciUSW|J0Mu6yVJcYIgYTpbR#po zgb*7J9cD@)l8m#COijM^sBB?$4Gaie2K0x`eFMW+*Q(7|GB3WV_pJkC1qpmy1tA3QVErBA^_MNdL2rsquZhbQHz1d8l>9m25(|06Wpm9j;Mzl(M`_`pLdu(y^2o>*;i=(MYEG958gOlp!EBePTT(L6f z7iy17?wx78$FFE~sd`@dQVo-o?bICg61RV-kACPt664Ot?XSo;a^+!-Ry8b6 z-V+}9O?Sea{k7y?LSf+mr0j^WLqEa=N=m$h)b%SYkVT~&S5sULy?#Wc6o!4IVn7Dq%us6jLva^6f5VVZ zSRtn{WwqN3R$J2Q-DIcrX6vZ*`apQ}_XoQ)qD0H5qLnjjIgvPvYOasI1s+IJ#ZrDd z8}H!&fyZ*ANJ;kxOLa9rMzZSnTn2UOFy-JhH_kNHZ()R{Bl%71gL4J$1fA$hHLeI$ zM6&-`g_s~yW_EsY{0sfEII&r$zD;uuO+Q!`e%xV9=NNS(Msp*9C`;oTS?05CzWM7z&dq85M`8j-V4n`&DgX6r>xJCB9AO#W zT#D4&;XPM?9SsyYgUf-UFPjE^pkP^X0QuegA#Ug;@p(XqO_5jf+`LzQp?2) z*u~c_zN_%WSFG3}y|2iK=_WE}Oi4B`REY`y*xrgg16@e#6C~uy+2HyasnIiz$OyNK z$vQHARko&JKwQxRAMuO^JX{co<7%c97T9eWv?^1BK0ADTLLg}SM_>o^mtJMqyRpPB zVbe2k*cduC{V_NBhg-X{KN@}N_mc0pBcpAQfGYIkM>IDUeV@8>l4@Ju^TxZx`b8_B z%fDS4yQ2~Xm=Td+C^KJ$8C&m99_J==Z)IEP4$@Xiu(L8Kxwo`(gZ-F;&4@n>K98{4IsR0f%*kKk9mb}Ci_Rw__2602PgJWM~-S{(Chi|i9a@olvZ2EmOYHpJm8UDq!n`pD%?}d& zE_DM(%etz0Iotj7pG@hG_ZY0Mm-Oar>up&695wz`0E!>X6o~3&`;m%O0A~Nnt_uO@ za)0y0y}#gE&~RdkM0kBoNkhUQMs~XrYoUstV~k7)xv_~!!JZzAg@GZx`_Z$nqsVOA zn7eb-uMs)D;DzYeW@L`mzEWS0i{+_+5YN|tD=m);xsL;jUCIAhf~mpSp^-h_u<+>* ziGkaZBsXOQdE3v9e@|P{!N_Sb!gN+72{G$ z!!7j9h4F?OYV1*xzXwq_2p(qzn5NrQH#heK2_DTdD*Xz?~9%tViBJZvmsUI z?FVWU6rR5mtP)?NK2dtQ+S8dFeTmnCuRyCwn4=*7^wV2b7JjMIl?ew&NWjUMEc0w* zZ0QhSN`(R}$v6&R7j177J*TM&wCl<&#Ye%&@F7N}Q)tcn<$eanIM zeZhsRaZU&`v2Zdso1p+WMu zLyZ4|>AV&&L{nSBx$1M=d+ECySYno;EB0tRWKqJT^^WQ%A)tK0je|dg%uELCQ>+>B zh&|9B7+O!!AN|t#vFFv4=a8t7{k?t9im8Iqf4`bRrYKyPb2RCGL}E>O4Ps2A=15B`pwLR-Pn;Rx0NNjx z-53q35GtxxbZ^qznqfKM=wnRnJHn;@UU05$)hl(^)j|`8w<&g5w~I)eq1Y4W0k?6Yi%3fr2sAlj!guiX zfp&1rJ4^zlSg?KjkJtckn2WycSG{Mb`Q6O9t%y1_R_onV2pq?{8XiBdKIiiM9>fQK z`MDj8aBlVGAGg?53SPDUf#q4p`=+cvD1NEc%fOy zNjH0g)}Q0|V-COti>bBENJ>Y1DUazk?bO;?ipI&y%PY|`qTR8e_aXR%k6rJ}ZR_4T z@lj-BNGAot8hI>$6spF+%uvG|eIV$S5Q|9}jb!H;Er}LGO(R2n*9#6gMdU1y;ys?# zKJAv?ki#;sqxVJq7oQF9%8iexMv1smTn4bgv!}ZpuRO;71uHx+ zTkIYORjZpgQ-gNW<`x2U+ybB`SRqe)D?2}&KB-V(V`w)-5kvVmpO?$ZGOHlZ)W!j8 zNU^;-gr7F|^f=S+9;fsP?ir225xC!XN_)S2MGa$o#R+LoW^Le%`a*Didg0A zOtRF!NyQU_t$>=gv(#Lv@@rYQjP2L4ysiJ6R>D<4~ zCc%D_G}-JVZULr!3Q193khpD_#g;cIE%=9R!q88eTL`|5E;z5FFO zxCeP+o%6ZMi*U#)p{5zK1HA0e(}N|>+IAYv#~tmu730Db@;;@?=iYD)K<(D5J6>!a zDX<1k?#;K3?Z)VOoGwj}G_4NI&lB7kwqh`#N-Pa#Wr_HDn1xxoe2MuINVeu+YW?vT zf3aqI_G@w0GD1S~`MK3|0SP_!&^7&yGl|0BHNEyvzh|J`o_W{0LGR`^ogLq9=zGm- zi8^x#N0>>}POHK-6HUVL>=)khPmCaDX67U|Twv*hErT^SHfCMA1gu{(EUqhr&P@Ss z8v7u?K)A2*f93_?QSp|&yh&g%{YQ1hnIpGZ)A51xM-b3M*xKP>`ommzDPdxKoEhMg zy}bnh7=Cp{4o=}PFoy(wrK%fe!I1bn2*uUan7nYrm}*#ul`{tEpZ%TVvRvWstHi)N zHNUOmKxtP&X>~X)7thr1-JIL)PwVHRpla2oEZ&j~IFqW0j8pxGajU>o`;|uL+m-*_ zPA1w&SQKwlEA;)||CZbEY*wn+z}(KFzvOiU_2hZ}ja^h$U(s|$ajHWG7@imZe?SFYyN_BnjJQJ(Uq9mbdR_{3J$pw)zl5P%~JT z-v@gmcHC_-lboUS_*@z%j)=8SMuARtymqn*-1nGP9r;zR8dxGRn_=DOD=$y z76KYiAiNks2QB=K`O42+q|0_002!vVYxLp*^VQ!!O>uzRknQW@F}92|V;Q>@2BsE< z72_6|HhK6jd0n8clDydprfi0MpdwH&xC zdME6UaWCveHe(0Fr!QG*8DeX>j68JBo`5C+GE83BrB-Sk`Y`1u7<(&dIB0SHrt~-o z@C);W&P>nGlrUA}KE}`|EH|1Fb+8+kHx3UEVhILB#vK6GfZHxT4y`JPUC8)-!)& zr_3BPi8BcZD3B}?r%f#aK*q}-fzPX!sg$iK1RPlC>iwh$Gd8!5a%hvP`(teF1d`JO zIHq9=;w&G+?C=RyW4g46NEnGr%TxArGa&=xO;(Td&jGQHfjdHon*B4&=Ey8=KbsU; zm!w@9CLjI6zrC%&g5vs9qS?aj^^x|({(b$NxY+f0;Jw(k(Np-gTzI`@8<4+ei7+&h zP4L8dA6PwcX})yR2t6#V ztoH}{p4AatF)J_0hEp&i4ttXl&<$n2U5o)i+^X$_l{0BM!m$x7TNIO)BOTsb@+4Bz zK7RcwzmMUUB+@OEMK@9L;kdkdQqrbGrD*2FL>MvzeY+%0>TQocIyvxi6ct%I4L!Ve ztAeAs>sRoiP7}V%O^z7B8&DRQgrngBz+dW$$L>+g9Oncq6R zy~PI0tUe%Pf7bfm23WnJ=0@@aA?rW;p=1GKjy`?IkK<*ceU7jD=Qww;V4o}<<0SmL zS?YqRMR7xBqCfvM&9oZ&Xya*dGsZ5>fR^_gem1Wj3@(nERD`pxTz=G%W&%{gifwA$ zZH|^Wu^LeKPeb8+XXI2!6Ic*1v5qWuy`d3KSg-HF5&j>RPuw_|4k@*LT%xmSs)|g`Ce@BDL8QB5)13m+DcuO0l$4Z)O-Xlm zcSwtLOLsR&cb7Z=b#3e_rW~jrF=W(R+!xbK00rlvS17DxUVSX2ig_ z>DE37ztZmX88P54{ex;r`*&h4!C`Hg?S|S7Nr(eu!G$3iMe*;_KzCp&C)c0PxKftj zoNgCzZ8OV*7un>^;Yk_0kWk;yIcDIy7od*{NJb&Z0Ei!WZuhXu|7D2kaipEWF8f@K zDNa=soTNDuJLGcLi787tlRH{}TMgAC8HGCN0g8jL9ndJOC1Z#T{9>bb5)l1l=V^?$ zYEa}!?Z48~Tj_Vvua|=$0MEc^ooEKcVGlc|!TKX9tQ+Y>y9LAVPNLi|zI~y%n_pBM zhR~82Y=1$BsuGBX;!DjPuF#d|DHEX_R2M(%u!2Z)UEAe;|Lv`%`+4^@_#b&D*ReWP z@Nb8RF<>GZj9*Ad3Ctz?Z`ul{+ro%I7%v{*X5r}RTrs7vvXwu$4ETDz{}IQ@k&g|p z805eL&x1})D%TN5z0)EordYMqZx6&bf2o(fa2<~h3x8d)S*{P?+mrrvQcJ!7#bf@r z3xQNG068X9+;TUmW zz85-VUhDkA21Gr)5pJjd)u-uZ4PJ5H`@}}27OdFqERoT{pCYXK{uMJg?;)5uZg3Ea zr1+cfoK=f-dzpQ<8aW+e<%?uX1s;?u?rxL@~K8%YMC%9wKo>$M;CU;?F>ue-P*VXKNBw7@D7-2C8?ZzA(a=7-0puxSx0ldDw%kys4hU5V%G$!D5M6C4@J z8N`ub?8?MFjJI>&i{*umm`uAiG)pt~p*}xU~haDIM7I;DFXd_ z^_Sd>uJa9{bMpGy(&yiS0YIcw``SkH=rC8h3tq74PW<+!V{}*f8YsCVYN+zu5jP#@TN0~K0uYtvBqMS zs+cw})hwAks+?^QeGd{c&NU9ya2~!TV6b6OBWB#WHFHovH<<1p6)@#QZ#jAG${O!k!&$BRX@AAJgbj;0J3gn=+7ESe>_z*)*`3=@Q@19rh(J5k{&F z#%$xEfZMj&)tqJtEq|hGYFo`aAQM%3y<$woVbx*efJ6t9iENHABMAW>6% zh?gaCCEb)me(ca!*1$gxf61uX{zcxFp!uC>l&4RitA-S_8o>SAwd~RH#71v5+Yx)3 z!XVw?a>XP*uW3vDj**$fz^TZH00bSzl(9S+z^P`2^7!yt_C)cz=rF>%a3o zTTb!SIbTaghY(5U&?RvaPv%eGgWIY5>;8sb7uQXEm2z|(2edxwgum@%t#bt6#6U#u znkO&%KLApMQJGC6ISj^`p_c273c^3`je!yQa3Dfr(76SxkRLmEYf6&@l#W4 zR#9V4sdmEBO)#(*_U~)H>G#ub+>SnP_MuBo^~JnMelF!+QbaF81^TZg?t7z#{WVXq z^qUg6wErGbLih%1^tsUC5t=PYc2b1{k8jtU3u)qbYW9E-Q-kD>X=Y0z*ji~-b<&iW z)$#O9`=Dhn$Zshhf%fpFdTSDU&nMr5mosm29Kr9H4KTt0;=V!XWOU4%W`f$2|3XAQjr2F;d_fT^muN&I#X+?Xgyf-Dh zjv@`km=Q*Y^B?<2F0Dsr#Yj+>hUUU%47*~4DxnB-?isV{tM4mXQBlxIZK_s9{_vKe^`6- zlFubkU{6-dO}Td<8tW|f@cAbeg2y=+Cv3~*3f9?5-g8V-RsuZuJ~7$WwQl>+G!=hp zhHDMNMZQm^dOi5?owH&V{(SqV>8%aLkeE#hO%(x zj05)};BCov`*&^pUpQ-&{rXUdQm;Cbl;aXOU6HJUG6q+bkj^_m6S1q2HfLv3K9tKo zQ@Lbx?3pUELAnQoc_2TQ9AmR73ejp*VCF?N z7zNFu2vI;pm7d1JRrNH@fW1~i+CX{JvYimo2 zj!Up&3kQcaJE*qAMhoj}a7+{s%5mjHZQ}ZGd~Wv?MIAn5e3ul^0x0;@de$6^xk~23)yK z3X3~dX;MeGzIzp7U3&=Le#)bYXeivRJkY}Mz4)MmZy zeUY)=By9w>9(|sePD)=bwodi@rT~xd27TgieiBfTyKDw8Tco6FJIqayVb5^LRsGDYbRt5Ob!5S$tV^?-z3}X4%Jr;xNO*g#)J@1I7Vk=hdy|4{l_g7wH>ct*jE7I$x}m z!NM`NB{(kB9K<$*;uSm%M=nh7nczq8+Ok)OmOqMFdS&_BW~$nSEbS356ACRz5O!aV zan;HEGutSpT)%kKy4p{Dg)87k*y3eZ^@|YaGzih-nOu0=+qgf<_24&rN$l)Our$qq zAH86Qd<}x7oWfH1_s#9iXyBH-?-x2G7FS-rey7~Sq#Ug4Kfn=E9zHZE{IC6W2ZjnW)$i zk;DTnhxjJCkjBK7y&`W@DsA+mgM?}`TV+e%!Z0QKK6hLXKAdhmfScAmKH9szkfi67 zZngAtQO(GglrpZ!g@sOla%^rEJ?KI)wM#Dwr>CrVnlD1C>dZ!64K7Bss;hqkm;aun zM_=fK@Pobx=nV?`l=aS;UQ|sL(G}jv?2zj}Z^Agx0ulx`0|UIV5Qg2wHuo&%%HIKs zY@>gUECnjek+V+JSFasFeg?L<6PeXlK_X)h^b6l^&|&?9X;}j7VvB;`v%ut>Vh4%D zlha;!i*N2Z;f}iV#Mt%K&=@tzR4o-ZRx37(2T!~j3K36gmP0aHk_Uil?IRm&{TFhvmdn@eRya`MT?qtn<^53&^nmQq^{nJ{ zpWO#lbx6KtmT4%nb|N7ronG(ECQ3Rp&X{o!_@;vg#pE+x%Oq?|yRWagZgjF;TNNDM2z^3Ae&aUh(SotaZOASVdyVUL`b;f%s& zh$o@!I@I-a#}D->x-4^6ij#EHK^^2Gm5(oP8?gZBNC&oRb4y+5k_6clp?3E%(ya*9 zt{Vsf0b6;YNrk9HEJ;<_Kaof)lu%wO8)wyuwBL9}UeT&_Fr8W_E1|l{Ie=?(=R!O5 zIwHB;3`0~2xtan7HmY0xqwjm`$+K3NUWtJ4M0?yaxVHb)G!>eG?1(dR&`0-V`8}8u zxb0ia%PsPIF(=D|B6_L{%sw#JBmrdadyJAI+RLlzg8$7qVf=>B2l${ukbJD{DpOsevwPsZ&PLo^k`=P>a3 zNDDX(X~o?bvJaolTKq{Wu#XFB6b%Me6n3*C$?9E+|>5 zpN_+X`(#q$n64uurbGE(J*)~cAj3SB$?kn=hXW;`+WE^Z&?7NT)9KC(VE<4;{MCE7 zZ`5($zX9k&6x^>qv?q5y9KVI`;c}SMW~f%S8h=qT*p%Zt7oEKK_3qDh3s4A;<4H;0 zd3}mGAGbFcEc3Zd{=4FdM6XO%wDQXzZs9@&npGXzV9;u(NgO&jiuqf`^g*JM|6ypM zpnh_ho)xSN&IBg7ol@=VU!Ue#f!h*1yu4nEFR$mFVl}(y=$~CiQ0)@f2p8a-)*vS; z5ywM{U0T4EouA3p3LlJcmil*u9Jam6lj^#c3!h~x0sIVS2RRiK*nF@k(H(GdX`4MY zRxDD5)XNdfm#N{GHWR3{ofTAHK?K&U1k;;C7r zV_QuwiL!Z7dVQyR!MOY7*za+~^2vDIVIInwq`csS3PDy}m5|R(?ffhAu$?M0x&D%R zPLlg#yM8-y=eWDbCEZeLbcmc*O}3eA&5Z|J*E0D!*wHcNNIKM}FhH6cw@$DH>kAyu5oLLV+-3op}Qa+(0Q^APzF} zJ6%*C(Ww1`F<1kVpxY@lPt<@9eO#=!#L4`xE;Gs?`2Ey$HY7R;S;|It=A?dF-b6Q` z+n*`f(ciID7X1F`HG{K1s@n-TvA}`vylqyw`hfEokpCoR3pUk$KVx&X*%&*Y!u0mm zXj4oP?~vuurHH}Hc1?W<<}WU$OV7-fKop}pFj~QHG~0U8_ZT8UOS-zSRqOBlEWTEb}W&>-3(UkNRz>96(g? zp$OPqUuZnqJ-pKw4Tp2;A=Gs;=Cax`y};(}i-C@~HjgT9{HPgLk2qs6t|MBo&u`L8 ztj`Ba1g}df0dnI7>dR>>_w8)o%)b#WarJaLi1suxXpZzTnVb8-3sMtq)P_r>l5Xy9 zbCvvS4IO=*bz*Pqbu3ewve+@N8;Z&%Omgx3L!y*(A)%Eo2_%ms7vZ-U2AX1whEW$@ zo^EW`T4*^2uXH7$Lm|_Yg|z1{VR~$n&pqG=;}{@fTyN`KH<}*op7YT5Z3bD;GLRhW zgs_53cd*g%@*e5=heVB@q;;ZR!2$TgN+ZM)q@9vILJzLz0G2zzd=mIkYu~_2<+4-BFxjDV)s8Yf?D zjS(1dmTz_pqE-wxwN&N4R$6f3Olj!A<27_&yN#}_j{uN#%8uu~4_B26H&FlD&i9DNQKd?aMsqy!Fz5E8b^&U^Hp3BN7*J|0>9$8#AZJV&o;NT z%#0soz3i+X|2rC%?V%PsQp-(ObF%!eU(dRuer z%A!c8pvccezpv5lW=sBwjt1~{2ADLExHn6_k)(`Cp20!N`N{giCr&~UKR(VAr?r`;H7TOz053^6u!O9P(DrRqIU2=lj5&Ln19U^~z?HHBF~B27q4Y;5Wr zCJ)bqi|igXt=(uknu1i>w#~`b`i$-RZ&A5ak0t_EXhR`8A>?VP#r7jmk};Yzadmpl zIsGf*3&1Q3Y%&Nma#4o=` z6=S>OsZV?(pn!rhMwV@Id=7rPRpR*AE}KM%Z8nkc@+K?#Gv?c3Mdh%DpM)$#Y%m~N zcQ~Ge!AOg=JR(@lxrP*BG)22HxV~I{UaCm=O+X#)H122eRQBmq`q}1!u)3hMOX5dP zL61U_34YMme!3~bq!}7$z;tO*2>RCT}F$=RHs+vVyT%Csp6>lAk18g6BQ%RW ziZj$tjUw#Z(hS3VYz3Sd1Q|{IM>3T%s#<6)Cm-LZ4F|L>KV64urmdmwf>Nf3ui<4m zZg{q&&;{>1$6<|BN>VvO$$JHt%OXyTsrWn*moT)I!KIh9Y?g+TK1siPJ;whC7bR=P z8yzn;gru~o%yBdk?3aWqd?C&(e*=^XGzM$sJU8R{?Bdg(&P?0}0XfpyS3ApiJ^s&4 zJ8BcDQ}Q)VcRaVJ8!|wNz;MXS>1y%8<_kVVK7kL9lgnb8CSQ9DXVCI(0hpt9oXsB9 zW5L3Q!iR0M7ace00I-k{8R?%3CyGi+9F0a%jzv8k-kwl!X#5sd0DITnyLyhKQQ9QP zeFugGu)n$x&fRxR6fX^$w=D9PO~k;%nM3{`x-+%sglKG&-ktgD!*IL=fNPe!3C4uYkTHJt4NAmS)LAk`mO%}A3h(?BLAh}ZT0D| zT%fPgRp*$dht8-U70-~!IBK43os1X(fyAtgZFmYseqV>J3+9ln` zAr$8yMV*3^@Qnzk4eWsW+hKjHwN5vx@kDhuJfqAl|kM(!Xop zY4FB1*boH;m&Y}xXo&Z_u@d<$;RY84(7C3SGAvql#oIsUq z1&bluV~>W(Hqix~>eZd6&IFn8DbZt7VZr;EgmR5hMKDVEzbwF?#TJ)O>9<*yaO_gQ6oFyazbjYhdXB!L&DzjmNZy|{;~%*?hQaa; zQJGG)Deog`VgNmdG1M;Rh0N(attU_fhXzLS6(nBUSc zFW}_~gT3A;ttK4W5-(F!C2!b}8;C$o0U?th30Z3Pq}OKW7VOVK`9Pt{p_(vdU=`kUpX}JYF5wdK?)UhLEC1Gl2r~@aLg%t<5J#&b54t??!ZP0nYaRyAXys5p_ z5##}tsncL~(~bZewp@i?!O}m+yX+>X2OKh)(yC8!ZnE#7xYV?KjY>s2TSLjE{J%<37?g&RNbp$94_ zGdCHEU#SF&x}6O^taq-WLy4T(Zt~8)U=jH^gEqO^GkeOb2#>kNf(L3p9T65t7~Dpr zUfecyMt8nucJ2>g_=N34NEG(vme@6=&yr7wo!(395RSr*8a-dcetX_VAzG|S>=@4s zXX*Cx#wtQhHhzx>*H=M@f^c`SC@gqCwc?X_Ap9W5XGDPI9Jd@NN!j}%ai8sX=X*|P z@MzsR@%nVD#+0NQE-o*4dQhKzjlb;r=!_g?_y8yE`d3T~9;pIcBP$%LYN=8xrPEN; zFff;q@3;R4rug4I`t%=|Fdc2XW1p}2Y}y%bkI!!dXB*F+LRaaNpE83O5TQ1yRz-%iNA?03}MiZ*!SC5KN3(EWxMS2 zG8N#&Wc?^>Z2pP|%iG2oZ-6-9S^fEx(?uX)6g%Nnkl*wdPkCaLU@=K=DAMFre2S@q zLzqs5e1m3@9@|#StvvU}orKUNy)rgCc7@A+1Wk=Ci9+#vzz3q(u?eY2Sz_nu*&okb z>@ZwO_oqez)f2f|wXOYxi z7k$NifF|c!*1!D>>*VCbbzC}b*sN{LX98WG$p=Phyn>Se8}4qSGj+K13%b%o%^wRa zW|a^PU9)bY08lIy=xasYzhCGd8m&!|!CCnz?g%B@#>sk7w4aa*6>UGb7>Bi`b)g_G z!~DY8;r8nB_+(uy=h+h8IYp~?Ikg5S?gZbc0W9yyAfU~(K(S&?upGFcLHXz^4DX~% z1{M@Y<_2%{#iBslAgxG+4SLZ}z#;63s}dH_KjfBdWthD8$SL>JlD8#|p@<0CsOnmy z*jAPZmbGF|>BW=;8k@sN12nWNxB(F@yYeB+LXAzPf45jqmkdd;?XWuPyeSX+3HslU z2%zhc^I{hR!HOQMXxnB<|DK-h&2G5?dL9l=4n_LEo4dA+b}K`>-3WXFo0zF)N4 zjbwGHlxoU4D-wnP?v*H2dhojy;JN)nJt6-TQmh&DAS4zCuhF1`M#`K*f@TA71Wbdx z*kr&`T)M1145m-Fwm_+8t5+?^XlNo^5U{Ej&swTg%n$8d-gkV)wnlD-eb4)u@V>sC zr=f#$#zKAYARwGHszt){W zTm~*(odz5p0^upNTk7Bl*(*-3(zlV^Zf_orLV~r}CBDxPBA2xg% zc@_MSEx34pUp8#N1n12i@zTrEu)^YQi@UkZk0`NRCv!B5Rps-_-FCohIB@GvOs72% zjmH)sUnE%pSgXAEa@~g&42B8bj_s#M#ED6g32|X952k07(-rYm$|0+bq2bIqvOdlv zHM&$-_$hIG*kDF>={O6ea^phHB&;Fj$fH(!vxgXa@kJQC_&VAYv#?&a%!!o=PtkLO zO5csQuUl_XZP_CTL(=_9=K~-VOGv%K@V&wywA|r)kDZL1T+D_ysC7q<2J%xy z9<8lqo?XiL^TW$$|6A_RpvVPQzRJZfYu`jqUpGuKbpObC&3SY)Oi1}HjVO}`qi<7yWdC^Xlq~`OYxRiS!c|;cVTL{2jR&q&)Z8`1tB)Io}R$1Wlua zT{XEHTftC-vUR%QfY3AO6TWDPENUNAk#L}1M<0LxOe8HY|a>36R){S zaO^Ayqe_T%4Kvc9_ zwTdLh-7DPD;IS`a-&jNFoNz(e76Epjz|ziw`mmFO7D|k{07+P-LjCaUq_>g9YZ6!_ zK+pXV(tscOpD~u%kCF8{SmDZh9W$;o+DL2=(kOE^{um)`(H6BVRIX z?e13sCt0n+`9JV2r#$`yc`t-`4BMKYrp^!NTk8*W>VYeslkK+jr~0XGIQV#NS?Z}+ z^Vc_iG*G!*PCW-hQMGMmbSBRhf*75UsnLW>W>*6bk2s}mBp;GxQ|4l2A6xSu_|ZP7 zWb2YNv)Cd1As>uMNoesG>U#6t3wqGEus&ol?7^TlbXgQ$LrMAw8aZCc3cTgQ@Cw@Z z(nlIAU3KuFG3bWcsA4*Igjlf$+@4Of;Mpq-HHi!nA=!_ehA@qx{ct4wW0ch<-w&B| z14M^a`APvPAr3CZt}-?(RS(NoM|J2uWYDqJ8OH}+y9*1U zw6v-Tzn0iOeE29LG67T<0iy{E+x$|4HN6;S^>6LTLtDJIN*UZiS%rkr=AR5bhX1Nv zOmPToR>xm;@2+IdUKlXEo+uiB`m-2O&FpRr)unHi7)+FKa2V9^>tIcf{92*wX60+U zXjuTdi_gU5Zvfx^Q06tQlH5e_y?PP_i)X`S3KC?QDzuRW*V0-6dV)T{))M5uCOB-r z>Q}0+(hRPzXe+_$c0Y6Jxq`dBq*QcbFK;p{Wl~t;<9XwEae(FyLP*K+m6QV z_iXJw31(#uv?Te0<;nzSMoK=JvX zpf=mKKUZ}ian>4N6fCgl9)`E9ZLL1GSM#p12gGM>Sn7lfVrP;|d{r!)fpTZWSv7Pa z0P&-?^We@Q&#F%U&%Td!eetr)PK)U)J*BYcx#|sO&2&UFgF)zDjTA!PJ>6aQdY~Q>aG3dagA_I>gAx6j1IP;lC*F}vaNGH zC-8kx@q}w*my6sMU!mVCE7pS}I^45a)D0*a`mQ#g%U(M#GOW`Dyu!Xe&)Z)eiM|Mp z$As>s$fh4yuffdJ+0H?dxi8A@;|JcHSJbM4jWj+wxrh{dI4-sE3RGP3rl{&;h$=fc z@|TOlv})%s@&=Wv%Oym)5KAtBa>Y>J;-Vm~{x#B!hyiKlby6m!V(lH0t#f(P7Bf~2 zUw-kXi3p5#v}3SybB|v;Tfy*&YE7fnr_kh1?(j_@w^AWXv?-_BtrRq`_MP0{>*rE99b2(|nAK4Z?$TcYI=X->qTd)= zq~YXalyg+@k&9R!KbY-}QrO6gCu znr?EbY}Aza^KR2vxw*-cR)d-K>3(#qoAZTON026FS* zfb*6tAuPLH*kf}9i!}$ZG5>`9SoPEk`8b7pXMO)2bZOML!OPR~RR)tkT%)NY?SP7K zQJh>tWCp8?k|A2GV)-V(iT2~Dfe?IDu&zyGe_#>JA^Q78Ip_9INuF(VBU;`iJCztR zKnnP;T8)4k8NBlZKH^w{n@M1(P?7(};zyyR9vO@aXVC!I!+;WKn_VhH1R){e4;2<* zgb=oqCS4#_1TnI)$&xk+2U`8W@U6x+5d3)zw0MnHF3U0)yO>LNg4&%3`ULU}irOohlim@bCxxAI_ zu8NI9r;R(xw;K44l?cHFc&R>h4V%n(h`~)Gu+K*sb4cH7R}&&=7%nWtvDFo=(5B3vu;v zFFb>7tA=}?ZRird$E=GQ%`jD}WThEq)Shiq7+YE80DQ4%^RnTT@l1eko9Fvuq$pLd z517s=ekM1A*7$!}5?yGUWc=jkL;yOpoX+I_b&Xwt3QfX%q|{*ym;&<3fb_uspdecD z3*KTWSu>`&WQ0n zTsP5_bzBGwHk;_I_eH#$MV@ubM!Q~u1<}t82}mQdd-}4Lb33Vnh@7Tj+Ss^K!voYO zrDcJknqpqS8n5K`uG%$4)TcoV43w{H-r{LdMv0Xl3e?1eCQmp;JG=g_fXC!I(Urq#umSSVn!rkVO^41{-wXST5`%pzIU?ga-$|-;bH7VHb@(2n9|t0RzMtsu{{gYIevEk8-^_gO&YhG!Qrt z1_`M$Qe$Xq_i88r2z_I{N6-_jFeFj}KLqK=_C>0QMIm!j{pqWS`;CLyWRjr#X%#(> zq@>acNqb;qY_X4NXH)eVb11&9rKb)J^Yex{lsG~P+hoa3K6gI-YxXpNIlp{>MY$<* zIe&76rW{o>yL=&BnR@$=g3!3=c zBMFl-^iBC%NBZi7wv>O6_F6a&KgL9jE!mRg!ww%1MXN)*qe**r5@^!C|8|({X$*Im zgIobJ`jW;MkQH2xPqZX5GWWSN;*7j4n%Vai(kN;k;94SQY;5Hn$aU;;d)A&C$@V)e z@Abdc4CS%ps`tsu7^y|Ii5tPj{kGOnvQ<#Ud!H@t54#zuLdm6j2G=BfVzjM8>?DIKrGF}78!8+hy#Wxr6;*WVZ-5PR8468^AFx#%yC zv$7wU|}1++&& z^C9uah!V8}wuVn^zE`Cm#BhGVjtsMqRz#g{m5VXYxR+?{Pss(ixd-6;H8`E&J_T!| z;K%t*;a;-Y`;2D(KHNrWzK|f__S|U33z87gqKn~%MG5X^AkP|;Gm%Of4l#}%nIA{} zx9l&x7^-$!KuSx&62K=&&9LF!N6GRhUBJk$ObI#o&y4y5IhE2ltaK+|&TXEp?eWp~6OG9eaRsc}?zMZc1s znx7^--OfBkyF}mCMEz?R@yi&-kHK}Ox6O})>@H@x1{-gl15Z!Ae__8W6VOy{9LzLZ zC-_~All(rq6O}F1+jXh(W=(uT576(!W@CaGbyP!3+0oYUFnja(U3He_YvGjOB+&Xn z$4HPz{_a|U>hY=U`LgQydjj7+j_>6+qE_*oz)yY#r}6(zDNpv3#^5d>!r0N(;yITe zV|N|^+5BhUWwp2&%;1dSKqsJ2WVrdE^M3EzBRX2TQjX>`*;$rVOeT35N>}Ml-CSLH zQ&UL=hFtz9=Ab=CumW^k=W%jTlx*xK(+2(8M>?U}%s7fy|4zVXE2HG9>)liHQ8C6< z?Ax_Q5W`nV5n+tzFG!hDJj_=jG-H%5v*G zCigNplr>>sO<*4WuvH7d21<4qwhAHz^3)qQ9Z7E2a1U` z(~{yDzI}i*D!H1frA?N%EJ~J=6(bCB)5oYV0rD~Z#yP+Zrq<~|+4Xd}duR&OoR!GI zKw#OV_DMK*@*`Ig@)I8Nd!}S$0MGlRErAK=+)7sW(TRnd7+8%KOm=V;tt8n?z71?^Qj^y?b8=(%toa{ zgrqX=06Y2u?*J3s(v3#tYSUjGz53u}x-mRjf1btlawX3Xdg z*&E;f{=r2r#i`c2LbD=uQH5fpJjHnJI&q0(_eGsS^;fiVw}D$wXc9a-r;swc z^lZ40G!Mo_VTow`%D=X3K2@8g#z2aQaG~6BoXnp|R;%s@!rC$Ym1~0MiRb{RXl!Es zsNS2c{aOBY<3=LR{dVofyV7lhHY)07`qXubFrm+{I!xog(76%NKzCM=>l?V>@Y;A+ zpduH*#D3qI6)Nr^3qNX&Uc+cWU+{^y^HvT!45l4EUNgKyP_~m8p7=Jv2V{pylr>z#pp_xkGyU1 zN4=p~oS|Lf^nNuE+*L_L-dwwhQW*CUxaHsBN?Q7Ic2{r{i-;{rgB3|(QTZoQi^@4x z&G1HwFGDmtm7DDg9cdeGuXRKtD9(TSli?F-uC<;H-N<-fC(bT@X?29O->o8Oq8s6< z2+Zy~WI0DA5>`_h7JFQn*>pV1|Ju>LaIuOs)5V7%q9RjMMB%C$Q%vI~g4VRZ-mVKG z-L9b-At=x-T5JQkm#batR}|j2t+T6{)DA@YZ_`%1s!YZ|cx17)y{<7t`mGIK1pc*u z`ykGTXp~5UBu{IN9G{-yI7xS5^D_JS)@$({sCm2Ddo2Br!lK8n&bt&Yi#Zr^gUd_9 z?cz+k-ALaHvvrTPw;yW}P)D=+Mveh#MCPk)^XR+Z{PVppl+{}vyIP2~Uv*-nSA7DQE+lTW``wFC=acARvQHSb`{rl$jQb4#B5a89viMy^9mi_s{xUfVr{&6ON(a+`g# z_I&c?P|9H^Xyd?P`IB#XQbG&aiIeap?xGYz({4cGF`xD)Y-!BCKHJzr9HSQG7TCEt3sEry zVp1l>ggwh*f;S!O+d{nhD^~(YKezJTW~b}*-5-MEpR&`IuJOt+ zRi}AeHp^W8^BGfjnokE~kCWKnRH^t3f-GL#WCsTZL;DXg&&rToZnqzqkh&Q;Of!1H)`|yu?F>YIhvbO@ok=!rcxp7E7S-k zn~-Ub(`?Yl=Mtp(J)J=GThM4LSgf6gLsAW9iANr_q~L(B;GznLCKXGL zJ$HDfx1Q?$EaI1i1{YxT$03D?nsbatTN6Ra!o6-uEc*bZn=M+%mClgyH!89{{gG zP`**e+*f^?GkI-sCv_#*x?_Spdv-81Ttn-aPJ0=pG)_L3I?e!T1z@!RATkY})PA=2 zG&pFqQV@jD=@JJKkyco_Jh@5*C!dF09^n?zj*|fa**>jw%6MFpfSR+O$7f6)tmq|)!jd}B zoUzQZIUCDP*%4Z4k|08LLy}HF)Cq~YSx>vA;t*pDmStxZFzaCg08T8C?l@K|0;Use zM=&^4VPLRIx6|dw)HHEqkTQ?KhAcUdmW@#f&80d~lCWuFGp*)wS}8s5`>#Xq%o)hU zo@zX@YEHM=B=7=^5%doZWg;eB60NbE)X%hMMksWe^h+Z%sY}**;UvdGreCvBee!}ka&tq}1PN&n85M z|6Y7AVq|m_=@=%qj`6)aZl_!=vFp5@OddEu>%cT_X@E5qiBjo3D;0C( z^A29OL$lSSSS(N|6zO!*WW3Yu&{wNbE0tJWoX0IWj7*Gh&kydy&E=WcF+s=gU^_NZ z9Hnjqu8Wis&+~8`CsV=}#{dEARhNws*tU)D``EUFv?NBSqL-Fs(e1P;7E9z@moSR( zyB?NhGdwVq&cZ~4R>V5S>$Di}ALOcCmooLe8E$&}A8`M_{}8Mys5~TD#x5ak?$Zw% z2^MFvfW)yNnQco{oQfzu``ORrLm&DbzWI%Ba{cw!Ge5tGW!p%sOx-`91t|(6Qej7# zb5d~DNZ7KQEl+wHxsg!{qa)<{`)P*}kxpnYwW#K6RNMklcNuTtFpuA{iQm5VSNXMP zJe?vQs@q&45mYOE)E67P<*o1Jx;MX_>BH0HiZxV}U^{MF@wYQ|d7ZUPR7V-R^lHX0 zz6|;X2#tks@@eHmS|nN!8A(Vw)+P)o3r%=rlF9FWlW_U~$W;5laV2qg5vSnrf)_rQ zn{K|5Yo7fKqy0BemFjk{R5BkW0Kke!;kuqx zp+Uw7p-@Q|WWXEW@><^Uj<@mgkN*iDeE;tf_~6(Dk~l%@bPUbeqWV7t0L}scNcZ(b zDICYaadUJ!0YALwUb@{TKmUxMrCiN(c=7<2o$1@GbqY8Yn@yM>^YxziA*DnagH|zN z7;td%F!$ZRpGI?;@$oVG1}hBo*LciDd#Lr-n4X!V)9I`cOz$QBNmjYFRzPv_aC~8Y zI)6`I@YgF0wce{r$ElF7j&ZGo=RWIa`M?eD=Ble7&tLuZ-}8=ly^mYIe-9c5#9C3+ z6Mv#OPF6KzEUhV!tj1~L*y{G$v-y<03cV_33IGg^)Y!Cnkp7_pLmR3TYk8L2ZM0HZ zO9Crwyq=xmYOBUNEezuzRmP@O5qNEgd{p2ewLv&JWTAvC*U)YeBYJHh8f0c~oyCVH zbNETMH`W%6PF0aU698b%{?x17u6?c)b<=tkhnSq4WoCAsW~+g?;v^vq5_IbShcMtcl0wcRS8%ZG)U_nh zI;&oQE?0^#>u%14EEFMbXS9Nk)pXG+rW)bX%Ef{13>pm|Hm9_ zJ!-sV+X!2-+^)0r{GB}K7k`m&-STa4p>MFCUFYrMmRoNjj6(M8IiEv^528&%e}6wC zBcn`BP19<1=o_h0s+8EaV>{pc_BRN~P`b7xDfN-oP8Ldp+Y5V=Ofqs3gI$ zT?T3+{Oi~MgV$X9I==Mhe?^jrjG3U3u8UD>MYH440svT|7oM+GR_`TH37UwjA9n?x z`qNL4#4#^^$xHa*o%i6lHI%Z`)&R@OL{;T++6O;PupU|fKx>`q^(66%e1L7)EX+=` zcmMtD-o2YEuDXK7#U(n;B@p%+5I`J%rV7q50eJWU0FyZqr9fsnrv!q<#X9@;?`QA6 zedJt+E!(#;Fxb!b?c3P3dne6ilZE+t;&3^2Sz)aby!GHF*-zuy2XT8=L zLUwK)=S{DBHE;OMSK)a+*Wd6VKJn?#Qg5^Y7u(IF)vCJxNdW+H776V!wD&bYz{zx; z*1AKjT#>@_+eoR&6?0UoB?boj7#Qrw^E!0B4y;vHCrcKOgGe&aRau!?O#&uKY5s8t zo=5C;h+>7bZQMcyE1$fVN4t;q9{%U z#3eY6AfHb`3foC7eYH+2z{P%{>aj{(o$4!Bm-uNZ4B8gJEzlsey zNHAUuky>S-AWood^wSM<-RRfM(8vas8_NKzLVK$z_rnSRJXnz%u}*ZPR4UT#dKj&6 zTsQ6e4nw5V^I=z~%8$?f`>9OSPDLORoSeh>rZJ)@z;#^?9Xy;NqV_s*oGh_lFS3_5 z8sZi!jE;^nJ#{1<1xpf#VP<`{W^C4pr5sn`5~mSmkteu7r4Y7FUtb@MrNuSTT}+`; z!4CpZYrel$pan9YOX*@g137DG#Hn*MJx^ z>mPXPWj{mnfd#()rN5=`vaP)P#&^<87U(1`A_HNZkk6Np2FgX3qtjDFQGyVXO`A3n zM=_mlD^0o!d5VPs&5qB)d;?n+X)HGBbh+3^ENf-xct#G7`>$;f_Zir*qIF5}mijrO8ypdhp z_s#qH{Kx-_#=bd(RR(P#lk|O+Jkg#nS9?)^R3-+1k7_=Rh( z;d7t+9DniWUpT4lU<%laHA$aH>4uv&v*qGTvHAz;3K-kEg(OH=tS=JB34A74uF@Xx3h&aSTkR*m;rNn`Q2YLVdKEUTb^XEvbxJI-LjMb}P zNDwZFJPeLAy7NLtx9lL4HnEj5%%o-EV9-jTr6w}qN03KQ2s+H~yO-Af`ylo*!KE0f z3|e)m^yhf_wJ+txFZ%!3xpOCh7ZQds!h*iOK4xbY`Mux!FdzTpPh|o?>)lV}3Fp`G z``05&9LU0;k{DsRnVqJ=wgs{Buq@5{-hVxpUw%2i^{#hw>n*n;to(`y+e2}!<|i#) z&?f_o^^Z7@GBG`A&_-c&$kuJ!c+!)f$n4A<|MD;Ymg+HRfo)kBW1-iyu^6FGe}?^M z1y5#G+}9X|Y1aKijp5gk=A$V>xDDQw3%4t!esK0QG}o%Qt_nTh$?no?h$ zi!V8k(G3IGjsk5s^uQGR?mbMi5n~b?&{#5UnH4<|;5DBiR2DZ&4Kiz4>775qhC&T0 z{p2@nq%<;uFEmxHHaasgj&nF5ENvzHcOg1tTT|AK>w?4`ITqC?G)(HK{ zghI)t)>oojaRH6v=1C$$rxVd!?&5V4dhHi0%8w_iTb?uVfL;yu1nF9oS#eiNj1<_m zg=0HN3u2{6RD#ZgM^hocOmm|*SIkfMy)%xlY^U!%UC&F6KvZ%pLiP|KCJ##szzGnf z-Xo4<0QT(J!`#eFN{iJRVOeRl^=v=>G(RA1iBTcK5!7mZ437*G1U}8yGE4PkjPBV? ztyjkFp}Xr31c9&|RFcqITBKC25JfR6j@IK=TP?!vY(u}`j0!gU=Y z&!bQ&GPGfs<@OT&qy0SV`OoI?++m_l8&NERNmA>KwWq5Aw8pk=Hco8D&yr${IhK$k zBnw9lGT&gZv-uuH90p;Rm}vSEa;fBmamcF`sDjgPYTKW@dh6c=B45nj;22#w`B_+Dy>mLvhS zS{2_5kWvyw5!GrHtrbZUr4@b&g?t_6n=V_fiuv|Kkm>;@4mBY_`@)#O*~~qlkQ;YPm+PP~tP6{a?K3MK9yq-?)W* zp^~r#O1s zcL*o<^Z(d8?=ZWr^4$N{TDzP!y^m(pWl5HcEO%qD$;Bqv=F$?HflzFNAwX~_xe$sW z5PEUw2?P>ua?`^NHwh_p-*mCEktEh9FXz_aahBIHJ)+F#eC*ZKFy1N`vr9Mbum{gP_2Zx%BQ2VgYW+H z_qgVo>-f+A_#tT7)Z8{303Aa^{1j&ZBw7zJ5soV{1jJ#H=Uo09{OO;4jfWrJ&UJ6N zmcwIHWV7vrp_rEoGzYi3zLwHlWC<=E;G|JJow;NhL~xY;VUko7v1ls#Wb7`JXD*4o)3L+kY1VeOjbyzkvNaLpTDPaFn(<_kCR zsn36fvGF`e59Oq+ENwx@x>#da!+h39+5F6QOnDF(j6j8Z;P~M=??bVKrd% z&_OEIDt=0m@?F~6Tj=WTCY|<~D;9`qWqZbIfe0gD_2L1U7}se%XW?bVyV# zQYjU1G8s$T_A>~_!}T&~Wc_t?+-jW(8P%#( zY5_qQBBjLlQb;LC`6<%r9G++E$w-F@BT(|>-awMiovib%crR z)L(}YgiX!AY5FWrH~%LG02q<^P`#;aZEYitqGZzY*ia^(XaGP-tEZdI&!PH=lYybcaqK0%d!$U*#^mK9HzzF%NX`*Uq>A7_PpsuqLi!`l^Uf*>cOT{+^ zl!K09j4`ZPyN>DU=_QM+#}WV#4d;4Aty)D#F|O|s#x<_F{`K?@_i*2XcQSO!AkTRA z#q2&bO0|%;he17c!H9-t2_0dCea(84thG)Mzhr{q0Lo`-*DfADw4eX=zV~qFUAJ@V zZMU%H?6VkJzKmOMxr0;IuSZFTJ$v`k-Q7uBYmWBzEC=@OLq`@%>>ujEO*!0p+ntA5ofVZ9E@Wm3XMUF zre;WJAV#8XbNdSv*pCbV7<630^(DXm?sxO**Sw0ae)+3>^($YcJU3@u^%op+ixrwl zvzu-~tzJX-=Cf#ByOtRNx!xX}ltX@MoFE85x%6~(V`^m%K6EcHz4UxO_uhAK-pUma z{|LYPmbdZoPkf$oF+e$K!Z5b$Ry04~a)C3v-_nXqwIKW)cqu$r z;b4#glrRVff@%%V2*QbRM((+V;kf)@ zC04CiNq=7_gM&S6+_a94jy6U|Mko~KaD-!Zs^UZefQ6=YPXhpt{_z!PbX+6t8eaaQ z=ko{edOH`Ke=a}x!H@XhAAOwv{OK)(k-$hFVI)$xw*MuG=M!d$*t_EZ081v0%-?yX zKq-Oa3S2*B8%^XfUq=up|2jEG8?PPPFQdp$%}^+msa69rEg5ocX|f$I9o-p%YDBdh z;`v#kNGE{QJnPPg7+V3&JIf0r5;j0RDWD2L8G;f~xr~T3%1x2VwAr&V(?;z0;P?$d z*Tk`v6{r(zP#-e@KrXDC#k>rpJ`>R>;xHzPAr3TJ3!5I3Q2Q6STR&0=*AmGE!k7ig zNXJU+nwJPA$w^6?gmO~EH3)(btrJ6AV-2NU&mo=hP|AR^X4ZB8fF~~iU>U(uN`&K} zl(b-gm|uf&9HW!w-`*76WRtNd6=L!8b=33r^oF^hUxw6&FmdD5RZ7_jZ36^&Y5@TC zmy2V&F{jcQ%H^_k>^4g@yeEBv==lv+#tbbRU~q7NLSc@P(GkLO*+!HZnV7CQ^P4~; zlB0P8k_$E~W9m7s^AkNG1l4MlIF670w8vZ2C(8hcV}wey;>m*+MFEDGtq*PGoQt+F zQ=H}QTYt)`P3ySyxz8eBD^QGUL_sz2I7*uTL=UB0$4-KcrJET@obxRWnkY#0>57>{ zqa2=^;D#H1kL?d{g-A3?ba zBMrmD!|2#>&%O7uVZ#P`mk;y3@Bcr}KK~rNluHzbmO2$h#BmLT#&ta$W9EF&DTovb zmH5CkSCnE=qi?9IZp|_co)j?l7hu7 z%=N85VM1c0vei&a3ms>kN&o4mAv!wHEm<<19Rwz3c4mf*@6pxKj*MgGCdOzd;KsMV ziR)hQJh~i1r96!*3_(z(C6mKD2t?jLezT6`*_2ks-D7(s|C%Eb7tq*g5v#Wk+D z>NolPO<&+8zx@)zIHWK)N3m3#pUFo9{q6X^il!H-cWM`8@gk z>#1}AYLpC#!wOngx#Ftl@r^(GI^X|~f8*_Mej8Jhvmktg^oWBP$MNPT$4|%z@gxhK zq>w(j*VoCUXko+Oh({DlG}^)(`_GPNw0A-Pz)8?X7g3&-RM^3kW#kp-W_j?Thv@3; z;quF$%h=dqN~NN0ZUo2m@Okodn#m+nSo&>TiKlw6;CZ^HCw~`_)ER)Y9^;zSG9$yx7-1>KsnY1C|)KfQb+UXnU>1o3# zLoKKf#erqAE@F&`rg+zeXGXowG}3zTMS@B>WF|jHVXjCJ2KZ@*j*eEkI(umEXroZb zQ>#^*)^U9`S}!MAkC$t}PjQoZpUqw;44_;_S1LrM3bjb1+%#S)hwG>CGOfg}gOTq1 zXEsYW>_-nEPj*mY9^Hm+L=tmp6NZHA+Zw)+$klXx>axV+E>6<~*qk7cx|k6lZ1k<| z4HQU89BE3$GGVBZ%9<++VNeP@-^FzVaipyox>@RH$>W2z3woAE03v@8#94|)^IvBX zH?k_iz%m)ML1>ZqjL-j`XRw|OBkk#5^8kQs`B2?GGLAJ-5YRs`NF2q4wOV5%P*T_k zFR>8OI&N^z<4s{(lq*|Ll&t@Mxm<*(#+LKWBaA}IrJ~iZHw@|&vdJ#6aX2&%Wo_Lj zwMnMj0jL-^t2q74P0Y*`n3$L)KQm`>6zL?U9>VJD>lCL()~{SpEX+^v<`;DHZ=HOm zFp4n>Q-8MTdC@pxsgK%;bJ0#pGu>JL^>{g1AWxOD%EO*Og4i^yTm~S zA_NDU^`ZDk{E`ssI2W07*naR5g_AAdE%FJ;%pUk|3;-PNkTgnxV73 z%jR24g)ktcrO!D^T6b5iZ4#~$EO5VVoGUhsL2F?n6Q!i3HG`0nYPm>I4M=I1^#kj< z^#uzaU%TnclnWJvm$jPHL`GyKT6HrV*|gW0`37V`&i0c#@}{0B(y(haF`nxr znduQa%G1%?$``-{s`q|kuqg{8H_|oXUW)JbKIQs<9wa)b5Wo0 zEZS4+Nhu;;;5J?_u#^B3#kh`(j=)h8nHaN*B$i7d@Eq6n=c4}HB}_4qc&-?goI8mL z7BY!wl}(_-{K!fyI%h-!WJvy?83yN^T;qi`4mEdbkVV3^xzTp z?Ayz;f8*HPt3P|q6`h^ZE2+?N4QT|isgd;^uDbGn@cY02X3jfr3qSqIZT!(k zKgECj_pOAngGMFS&?F{nmWtn~v5pldwis}0)PK6E25fF17yh|a(A(e1(DEMAErQl= zpIn z;`&gDs%T+s3(moPnnUFe~_e*H(XY=&*#&a0dppu7Tfv6H9P`J4qk?UbnS&Zvh zcC2);a)*Qwsx^)jjWb)Ik`yno$Q*I0iT+ZJ^-{F^r#1Mu7m1>PJs3Da^DT(Jf_`ZYVNnGD0)|xm-D$s-d?ADJSm#elSNeoI~+ zbL{uV$z7jnu|RuwFI}Bo%;gI>O4(t3LOVa%3w$ECXTc`qNbbG;PR`hJ7Q)qZEYGoO z<1hm&2N@jhXKHqqndwt@9%YZyOtuz}$94)oE# zqL1mRBOKYgpS`08dG)Ja$!uYUhj;H_#i|u__Y82$EkEbti!LIpR(WvyHu?toQOcpU zwUw#yX`(2?O}Pv&A4a&6Tkp7)^DjIf5Zra|y_|8zW`dw%4>4tpe6+R>^`7UUlq9GH zRH|j#+S)+~YPG;>{Dnd(h3h&947FN_Qi{TyH4Su}WDO+OODYQl)Ik8H)S_v(ZG!9D zsN*W4T7c0JY1b#CTzum))ILlw8Sv+y{T8?V?a!d%;fNNrcAE~tqYpoG%%F%9-4M+Z z|37aGW+`nnn&vPpbKV8#^QV9Ib@uMt!!_4l$DxCV5RMPVYhuyp#zaOb4hwafPd2 zdo`c?{HOW1fBkpf`TOsrI9J6_w-Z)l3?2gKI1H%A@0}kDP-Q8WRwMU);q=82qm)Dl zCjst4q_m)v<4BM?5yRM`Obd;%kskIZI(ohdL?$MF%@J71^$~jE^Sh+<)|@zVZ1Dv8 z7~d~WpaiMwRBM$g4?Xk%?H%nr^H~=$TgWpzo40JLRLXv|hNHM%#DFlroB~5MQBM`$bTY$(jvgV@O=*@ z1)lFAq?NBG1?v2OpwVGBj|3ChvJ8{IlMAnP<2*^s%^UZ^EPYwU!hvnwD+?hT$qmLB z;yAMM5UuT+Xv|^~qd)O<6aTmZ076P@)P_a~Nvxy9xGl+jvo=>L4Iw z^2jW@rtz{l>k1o0jYvR8ND74l>0FLg8#ZxddKOA$ilWA=-u-I4{uU10y`9PJBkUa? z<9W}2KFV|1xpy~f*RH~KB=_BY7Z+cAF_Y6%j2#(gXm}Y?N>YA`x#ApA6rdcz(6T|o zFy!{z@8pta{{|D|)09ectX?}zrBbxAO<^M#ZG-OOx-LRMsZ>TviRbwkZHVGHG0PzV z0bC*-5o=q-2SJrgCS$elx}Je+b4#VPQv@jmQi{eQ8YgQ`Ce3u(@$eL&V}e47Zoi$O z+z>zc#~<^TfBY@-drM$)pgnY)Ah?g~rf81wXBN#(XB1&n!Vr;8yS)Dc@8?A?dJ!M} z=*Rf0zx)ou@gPp3S#+2TL}HALZS${%&CWGGq_emiH_^R$GhOS~F&);3g=BDG89IvC zv113hwsr;w2B;OMs2v&MO;8i$t_31EW4pzPtM6!<>Iaqu!3f;c8J8j*4#im1#^Q64+Q*p3I# zV+TRm$UhU+aFn20F0yR-5FfnpL;T?%{vjQmUF2tGsg^6GycElam-CY!|BTnZ_O<-u z-~T;97~!PSgtaIsxa3I!HBU7FVBxgHm>8`q46W$l>)-e)t5&Vy4X?YNpZxHr2$=%y z5C${37mFooO&Z;#h%(7<9Yvr7$`!;x(Xx327;LPpjv^uxV^pGl zjDiH5jzLD&Wm|`!Tzh6UtPtwmkpbvJH$kMo(_EP$HC0$$wF4gO;U05ng}lW#tJ z@E{|jhdA}rjci!Ima(x>Dy0&RtC9#{Ge21q<~T*Rc>L>&WBxQ@K~3!5U#r$Qboekk zckO02KSy7055vp*>FMcU!-i96Ys)cq0$MUwYE-w++Ie)ttDm={dX zo2Rl#({4l}aBH5*hX^z+tsa+Oela)Pa6MbjJ(Hi^d@~>a_-Fa?Pi`j+oCcdn3(;iM zEKYJg9S;Clq*-qK*G{^Hki7IrDLR$7(a#f)5ugSI4KJPpslmJi4(?c0wy$KGtB}3v+=VHCma)a z^817N1rHeW*w+81`RtMN*FxJG%ce@jL}8prR}_vb@jMsTl@>El_C6YI5K<@CxQXS^ z0E|e|%9X5Y*Ta64dyQy0EhyF<20t@<70$>#y_EDTGBol*2 z1JIo4xjU~Z7p?=2!_3GCfplo=Xvfbfgc~uiypQE;R?ybc#_qj)2#N(ddwY}UK#epK zZ8X_j3zb@x(a8x?ty!W<6-+?O@-Cip*=6{CE4%K0fT_brm@buh)+NtGn~>dmcQH6T zNPc#XBje*-_>7AfIe37v!;|#&^#PiemJBm9)6{BJd`~evJWRC`@Zi>MJomZJW%ur# zgi(d=o=zfd;|yhDei()kj$=IwKv0+~;CsG}=`#kS4O*K92;jJm-O%K`d5)d(TMc>r zb)~YXXBNF~Rz^YZ&b5qgRqR08c%}bKopdTh2|wMdnsS|;!Rv} z#buPLHKwO$h@zN*-adj_zz08YBk#W9U5p<*1dfl84!Ra3hMLY%n$KTN03b1w5+TG@ z-u%`#@$pZ5ly80OTYTgLAE8tVahwbS2Ps^X@~uK(K{NCOpD)LVu3Sh7*9&!@P0|v3 zzF3(N+TSB!McgtLQW$Z&#s;~3KMbiK6NrlH5`?2{KYrS0aG;;=?oNh=23WIhEz{G}9GRFP4y#T1;3C*;s^z_HfPe5A8fE+!1A)?%inXVEdFQyz{h$)tU{y4%QP)5JQU7S_;lyvVO>9$d6h za7_%Lh8Kvjiq^=XSgJBLHG}KAWV30MGUQrQbab}hx(-1Y5XGTw(9B|Y`r{4XBFml) zs>G!^qNqj~Mi|G%&*bpaIi#1eZtsq3!FM5(fwZ2NOwjzei=!P-f8788#5_C5*gaE7 z7s8l0iV4D)Fp8376@lxzq|+(Bs^Q?|}-B!~&iWeep&3%$li~f8OAS;ee z$7oK;5<(?ZzFk`(G9VoG+`XN- zQkAP-`C_K1aCrM(j%?k{SaF7nER~@Iy-wQ%+0Z5=MK)l@LV3+{s8S=?I`6Cnfd9Gz*X^m1Mq43(=UK?jBlFd#gvO*hmB@p<^MQVc-#>(N! zn!a2wvf%Rlzy1N=`^rC4o77gzXRJQnfZa5ouoi88TA>s;jzEVMkTJ`b5Anx;{82V< zK8p{0-~)W`d;gkDG8}96rLlX4N!T@7V~jx7wY|A6+;yk2?ELd+J7q03SD}TWt35|h ztFU{|ew3f4cc7QT)M4Dh7_YwUVm@;1>p8QtpQt*6BBENW*n5=D@%R7mU9NuBtND-r z_yI<{ApJxyEfW@sOtg#=l~6vxVCs&(K{_Xp=@RQEGX_Ihl;ct#k2|4zD`V`T)#fc6P(eM~?Jw+537+%rKcmDcYbai#| z>Q}vi+i$rCWEOC(H%3BpH(Dgjh@}dXC+K{s>vm&}bXTO%cU4 zJl`Xgc5!?|7?((8Qe6I<&!%^=bZ~XEmqRH`x{ecaG;%6 z|ITmmJFk5yr>tAUkAHF-pZ)BY`SDL~r(7}MWNbuT;_%M`u&!x+p78#9vH-wh6Hb{l z?v{;!mdxenn4HQJ1rfp#_-U8cjx^bvkK;*#ph6rQOc*AbdB6nLsoyNFL+j6(#L~B2 zOe6?un*2D=n=ljF42TA-WbL-BiQ3==l9{UG~&u6j)7+0;>Ti zg>gLGObf!x5IY{Ysd;nkxE_z_B9&Z7dJ)HW(f^eL02;kTy=)Op>(n&-x{MKofu>rG zs8&KN<2DA@RX7Q;QHYo@u&HnJvVer8CQaQj(|QgnX-&54{ue?eHA*~xkCj;f*wkN7 zNY$A7E62fc>_EsS&WVKbZ_u%RD5O*_QH!divl+rDw2Rq<;0T6SEhCjq;W`fEhsK$innl(l{fx3S zvBzKn`=|hb=6X7?(RH1jos^TpC-e`PnFKZI)NLG$-Hd&|h3V0Q92`5$ z>eXv;(>_i{;p7S5(9Ug8DuVGi zv|~5BCP#V2t6o7{XD{2gJ;=n~eN4>Fao+jo(9+h%gFAQ8+R@H|{RbEx8m6bGkL^3Q z;rjx|mAH-^dkG9HYbGIk5*s{Qw6ox3MfCF!Q({;T2o$um%-}`@j_{NVg zIX+>h{iewj$Rs*9ku>1S1F0~Mj~W=F`}EBWo_QL&tCfm0__-8e956dGO<^`qcUL!E zZ8;|P@8aAw!@Td>t9kha&%h7nP*DvNYr;s=+S<;(kwd)sEpOw-8$U+AP_Z#N#+jd3 zEYPVXAdGN`bs_~&9<=q+cjkEvpSA^&YN1l8k@0+-IOf2PZ4{3jA}SY%YgJ?v;z)z* z2(*cbbby=kc-il~lAFHrMJ{~C`IIXqX7kpUVqjp9i6fJ|_dW0Bk8b=3)8muO8z_nS z>t>p!D?*&ye)?qpm82?2N8!4PD6A2ObG-4**YN4je44L)?Q4AG10SVQ3UU1wOFvzp zu~)}#$e-}@#a2f`2wcxi5=D~dL>bZV+liu(^&8hym@BY<=MK^xiZf2z#P;obn4FwoXiXQc2iqUqMOSYZ ztJd~&>m5G=q1mu;Jr8W%PN7ud{0q-w@4lV%^mnmg!y2}2+seyd{xXc#%+5{n<{Mtm zhRrKkxoMElDN(G=pmha232}s04O_-}0QhkM02Yt;78w>AK~Sx+XV=42Y5|vCdMTdo zap=%t&@s~YF^P$>Q0hs=0BAV8Hciw-{n<8(I5y0c%Iw*@vp%to33QAOs(}zj5 zXE|lVYG(5VbOeVFjAKH9qkN>a(_$l}OEx=%Kl*Dx$3^raxs)XV%6^?SyCQ2s$b$m!*w6@ON z3H7NC1W0MnaY#zIbT~cK4#)h%*Z+kd|HZ#!@&Y1vemY%83Kk5Np2*EIp%q3Y)}MMR zpZ)A7$z(IU^M-eG%g=v~lqsZglLNWgh{-fsH&ZvQ>FA_w^A>u}I1PWOpD68-O1Wgx zE)$dEIG#iQvLV`9+o=_1Xo;)5?YFMvU9WgC8`@jYOp{G_B1DQWe(`I(^6J-e z&mH&Scsb%&SXPO2I4bwINlR#wDK5Eg(!=Xnd-gMF>0d#i8k6;W+T(zU?OWM%?`?#$ z;}BL6M2VM!O}MB8A#qUUjI%cLsn30yx4iYuWLi_q=4U9(6-cFhT3cHA_kaC9uY1kw zx&5a8CmXAcXbA&{0ermRPl}hp&I*ODtQqoZo)Q)!cR4 zgZSw#;@Gi~hh|YOawAdYSb5qfTc1fzK4PlrnJ^kdM65&7S&wWsg*H{Zw8K@;zk=Ar z93I)t(CPuszu+9UZr#RIew;J6oI+%(96or2xk{PS&RoaNJr7YU#;o785#>5Oyki?) zMzQJiGuXZ308^8btUYZxsdSoc5A33&y_3_Gx#tXsR0yY74ljAG@=VQ#tg z=bW;BE&E6Ia`@l~=bn2GfA=?k%i4|0>0P0C*&8nB+{@Q;$yH}@!KG&~w0;mT>oQ%L zBMfU0hDmdv9$ycDWb(Pt?K}C>;QDEV@R^yKX6NqRtXaK^Q%_w_v0P$qcFr;|!r(~= z05naLg>E|S>wY5wZ9+WEFJA>PT9DQbT-3*10&R`L1KFO zGyt&hf|~?rj%mqCuDJYJTzk#cT=qYnO*Y%YPk(e9H{JAS+QOwxfw zvxZ(RI1d{sC5h|1js?|Xg-Xp}v`Y|#7^%r*Tw2>aTH7=D8Hapv&R#=#EGd9)dc;M; zl|gHh#7k?4Yfvjetw>ZY5}OD&<)eKMGCAiyHh{VW5Yx}u;*XFDiXDH0g zviZC%gi(znhsG#O&r#0L;Yc5a%`Udon#B{KU-bO?1pxq>vT2QB+0alDDP&z@7XUO% z+>4X;09XVL)S@coe2KxHVMh0jaNmOuGO%J9e$Jz{vxP{8v~*_4w&m#PXk+*O{S?bZ zu72IC7@wJ7Zu~H#5AVS1Z{wObUq|2yMh=g{Tu5=Iz-{;6#g$iH$=T;z#O+%j-@86ZEIm>roi;<1VL0|!^REdXY))?&C=46!F3%nxfa4GCJIC1D5j&MgLFF0 z=)ptevKh3As0B4z+uDetkT{Gj)!$gx{x~+IQa*8P8-9VML%EKN!4M|Q0U@MiA{uQ0 zfQFN;y~uSC01{b+7PzrPMyJV{R&M|PJ$&o)-(m8B!ywv0r;@3EQ-f1?@?FptE-qU;Y}UVio0P&~XG>A%xX*Nn{es2}TNQ^5c3iG(`95 zr_r%y4YIo(ucHl_N>M1}DVIyMwzsfi#Sos+Opff~nWvw^d#`&PSDtYODP2NV%MfY& zOa|BSx%HNNdChCyz&F439fBanOXrAUd$1_wHl~ORD8?c&uaPdq3N^HvzEjVlcg+U0 zm!cX*q&=5la*W+~-oos@hoM$Mi5SlTl}I`ef}mO=*WSjP-tuNX`I%3!Y4d4J%}$cf z=ZT_--mYFI#;1Azdq2P@Zu}!k)3Zp|Pm((pPd%GKfM%y&o|*u_QCY$U*A>LIGB}2J zzUKzs{qEo6rkif!Q=hyE9XU8omY^D;l!Mmc{QmW5KmUn}(3fgpjhuJaZ;oPW($P!L zAYF|yHCC+}=J_wWf_(?}Fni=M!j(MpSr>5Ey?1bMms@8H1xBdlJv zhIQ*#vTy%RR<2ylhV`d%@7>#IZ|`Jyc!1rzcXH9i7jggn_pxkQKV6-j+N9(&$Z51&p?9#0jc1&~1ps3~oW2*I#|6(ko7RC=0yki$FpY^yG{=lDXw(}x zfLTP8mUYVt#OG;v{BH5(a|F@o7d69Om%B!(`Ga`ulsyWPMhzSy)u`60RBHi38dBL5Dc`~K9ooA(2z5-QSUSeFs)I5K zE7CL)6_Wu-Y~@F_l8p_lRWV_WnlWe%%Jq=Gk8*s3=YeuCLSe#Sp&R~E_ebcHXvCjt z0Kg-eGC$G_*n4cF00kJ0CG^-vX$k_+c@>KK{jq0;>^vf z*>uKA)}Ok9fo1JYUT^Mv6H=2K8z{F+&Gxn(S z{b>N;mkR)p%+{6Shjw1{j>DcI;`pT#y(-NC&uB1p<1tgJ^wjoX_pGv7pMrG)6da3NJ z@E4!>EAIHeKZBBMqw<>F{p*J}bNA1$YyNAHHsI30b&j*H_;OfAph?RPVN z->t-R)1Yf8HJ`z&wIK>>Xfzi;`x$)dv!CEquX#B!nyKjtN|iF1Y?gt(LH_Zt{)sof z_ImFA$<0V7jS&e0M2jSTbdkPvK~A(d{)GFN+}t;3vLE$@LRw3Bnw@LdF1T*6O!zjV@GGsyB;Tu6hY`yD#3UftH+jKhj-My8u zv4gByJILhJ6kBh5koK-FRGetDCF~;dB$1n-np9# zFFcQl*)iG&a&#=u@Vu8j6Z|TXh!Bnh5n)t_@@jM~OL6+SE7*L&I<`D>6Hc2)p_Hdw ztUzGb?tFveSm~+Jh{Wqd7-5?&Bj*_#j|eg@vCf;$SdC46FakT}moBr@v+Ufni)9@^`Wj63b|EMis~k9R zh`sv{5!6DK4Rq0#QFL{+a>i*J@H~fu2S*8m7*~4eI7A77l*&%h8m57!Nq=qQ37d1e z=kvOsVy2->KJwQ0A7MD>+%viI%I6Uq!Po!dZ}{HN?xX5=Kt~rM*8*Bv9lEZ9W16VT z0<=IHwMg-78v$Ap)l8DOd;G7Z`2#YjSD^LwELDh;99EJ2-Fn$itl9ghtYirjp_EL(pr!hVN0$pfpL2iAivBoX$NSeOwY!{DuW{5gJ#qezLQNEC zf*?jHiR(dYo1%Xx%kt&ztX<#5rqc#E^|XFAoI1$bb^WYf-Ou1~Cj$d53=Fo=+n1)V zw}rOO47r?7I;E^M#Yy2v2PMJis8I(PZR=X6Wwdrc|n0Zz1u>D7tt;rVJ=FvJ%^64LkMxs99j_sti zRt;IUd?kDL?ZBGZrPxWPMVZ3?04Q-1pxsrBe<}ri1N5JLHl6EEA+F+yMyr1UeGmMq0vzlFXba7gprL!&2@G1 zfe-y5AO6?}S+j06W8-5Kiv?l>D~4Ba;J^rPyZ-Hb>EmCZTnzF2Y%=k$uM>F!`0j?d+c{76VN}#^#oz9fSY!B{|DdCwb#C$_r33Z{NIIv;;scgOb zA(pRRL1$Mx58U$rC^+|=^Vzp&gz3p6tlhW*fnoRk`x#oZf}x>7Zn^nZR;*eYw`}ChEvM7j+etO7QK}Y+Yjbvjms}@fqQp^JHOf>Y%n1MhCzG$< zWTqz-v5q-7x}QQJ&z3D)Xz%Fa(BZ?@6SEtezod`nxe^XV5v@rg!EF^>cQ9OcS-TobHE z4<;Qmg`g?I+DMAU3bV6$f-oSRN|Q=?WHKpoEor2qh>Rhug^T1mP3Z$o9t!gxF>rUxq{rY}3ZW?BIMK?o(J#=>DXlY5~rxfXwLpJBp+TzjHnW3|@gD&u<=Xi9tv{!GO%In{@f`LX9AW0r1oz$Y02e*$nWzC+dFB94HqHKf z?!goz?zsJKPCI84SNzZCaog>8a_@irjP+-4WX-xYj2;;$<)@f9a)dQ&R*`FO;o#^f z*_2Pl_mRRLW=3nmARy(XP(o7r|LnbYlw8Mo=KZU>p>t1;zyO1si9~{61ei%lR$N)K zm7^6c%a&wIlq}n_t+-CItyS{*)?s(OUWZR!Tb3nJkpu%kA`UPBW-yqXL+8GsYX7*m zXL<%h0+c{ffjFlR7$)?+UAO9epZ5vHJhp9Pm=&4JrJ$9l0s&0Z49_!(L?g8u>e~Wi z#EN8D3WXLL)36a*;FKJqL}@hY>H5J*{`xb2%Y`4F1~&@A4&qQSmMr?K(EwiV^RDu< zKw;Syu2TR!ZoTaQpZe4%Ie)%~4}Ivj7#SK3nrLa_hcSAK-=`5a{$|kl*VIw7YY%NZ zufb|=LZ*`VQc`jpoRULbLnDnXtrYXKLXNXELk+Qwb_F!7q-Ohdv~1Y}v04)G zIB}_Qr$^|0{6U;^$00WzAUM7zVwhN#2@=Y#1BT#^`|jq`pZhc~eZ@;Dt0E&~!+5@; ztz`u@san4L#lPZRZ+$o2$4`T_5d@QM8JaLHD#?H9PN*tINhLCFxdu8wUw{(6DsjhM zxAT>+ewp6h9^Ufiw=vv5j$tLy+PF-C&5u`rU-pcsT#vt`01no*)+MAR0uaD3aQ!m3 z+;THpwyxvk$x}>E&k>2mx%G~lnJr8)JvKw%g??W3%P*sE_yW^|bIfEjy!_=a;n1N& zOwNvQ&pr3@=%L4%p2=|VwwpO}^a$B(o?Sby<><*%BoYbMu3g3Bk3Rth?7QxIhWkeu z9~tJF>$c)~F6Vm(*s^I0D?8eG=sORw=elc99-KXMj_dYcPhal^)^x6+RCE}fnqdF_ z{e1U<@3V1FJFj{3%P4v?2vg6;UJ7X-q=97zQ$k;9&^}QcOv|UPEykK1?QGh;hUU&j z%F<0I5;nzgNH9A>Ao z6bogj0MvRZKqoIXPWu@G0JKo^q&NZO3q`umo~N&Ggp!Dm-mr!Ay7gEc?UZ5(JS&1W zW5G}I1bCJ0EC2#^B|h&-Gwz>B0O0A&dc=H^kPs5zh0JUbr|c7nM2W|33=7h=N$iM3 znwpYRT&Vv$c?XR_#Imp~fs`KUni!FYiR*dzo{z>1 zew3_Etf+qe)cpGhWHA*l5I;x@@SR}F@8rNMBZR^<4a{f^VMQ^bF|cDOWrUxdSda!( z0bf*kG5x#)0GD2v#&t_HwkFxMwT-PiRO`E74 zAr^}hi$zJNBQ!K5NTnlK5rH(oDLa&k4#k3x>-hM-Li=j@d-*&7@Y4(c06L(=X69yC zyJ0PbLMbo@L|z>xz|;EjrNx{=nkHJg)HT*(+XjVVmJJ)%qP0)YxgO?b3h0uL@(m2b zLb<_)7l}k^ZEIs@X6B~~0MNdV5s3s;8{fq+t@*gXN*3`|2LJ%AWuW_(CPGWHQ?uB1 zjNXeEsj01_ZACMtZJ_b6q82MxtRh=3aJuI-+js6@-@d(^>FFhNW|$uyJIc*3ypdR~ zO-p+tYqxIU_+w8%uE3EakFk2)23~mI3;6C2zt5u&KgxkS?jTX0B2$<{`#za$hK`jT zpf#hzLnIUNc|$)D#wV7`PLO+>O5nO~pjFZuAs47f)oWFRg{(9JZIjRhQh@n-(m)9r zrtT=DP)IEho`@9%|RD zLDVEMl5xtuN69IXOr~gWZ>N;aF*DLn#3}HKgE#Qex4)TdTU#)5v$%ykwrLTG#4)W1 z|L_n0$m?JCCcgFcZz4<^+m4|;keDIpqEJ;D+u*VdFe0e3M%!s3D>`Z4aV^pMCd_z> zR5FTD%rSZ441-4>f|)T8E_TEUQX!U_~ak*;rl;AN9StBCPtXc zOp{L6u)1R{k34*s_q_AH{LL4>g6o52L{N@{kVc@bG>niX@zV?d=*1HpmYLvIvgM^i zG;Z==|LbS?g%|$dqRdM*&&kX=jeGRgDG7*9T!UySscG!2rb=-98 ze!9+_#B)lV?>WnjH(pOmTMK7Tbum0LgdMlJ@rIii=pSTaV4S()G_QEsD>-(ui;> z4NWjKJiv_yucJ^XGBZ_R!@5mGVm23tdfC2xJDIsG!{bw2vtt+Md(N|S=Pr()Ji(T2 z+mO%uYK{_C${_2wo#Q3$4-(pW^ntTYILtOp{dg)n`TT}DO~>4q4qH?*^6eFrPo zbTH?Xn9a?B=Y!)025SPe@IwZ`Wf)68761@F|KT1qJTSmqHp`y9yJ=`@Vq|0}005RY zbXry!qdmI~>y>=H3@P6tl#oqK&T;-+FH_UgG&MDlN+qbNjk9^v2I^`Xn3iP@Q1JkKK*i{UAcR4PVIO&ZfQaGX+@c(q(S;6fcx zy}uhmUcHD8occ88Wmg@yz-XvcdBJz;YMnW7yEKripDk z+t{$NnHBA68XD8YV^M^LsAXdrHnwRKF@s@7C(Wr&e;JS)zrc8FO zM7iXmLm5S7i1s`H@UsK}RJ8vBW@hH_{W8&59N+h=vYLO4hww^VoU4lh9po{KFn>KT zlJar=BDHl%Iy%}J85v`IWD--xQJ#SzA|W6anw3cd*Y}y84Hyl{WCEvLnl}+#q*=Ml z0)9ql_m??vbVYw9B%b5odLHfV?G%eee9v3hWVL^3ii7e(L{(nlXI9CS4GIqf0|A)Y zpqML>NYruW^f~Gq8mMomL719o+(H9cECSeA`x*!Z3V--7x!8n^7C zVcix;q=_bC)Y_Wj&;`yu{B5#B=OH%}-0IMgR!D(inRvx4G7{mnZ+abn^rwH!!Gi~w z%g!-5HGv(mS-omCc<{Tw^9g?a-M`A!%d}Sh7a7#m^FTIQ}f8{TE)wMLJ$`~xW|lL(=eYIYO|-12=j@sD4D=4rP}j(9 z_Z;N$Q%4x?9iypb1zWdn=j6#_oIQPxTMpdLz~CUgJ^gIkzLlPyvoy8VQ(s?4PuB(3 zZrDOR5o3H}l)cwp!_i}hNhecWyZbsuhQ}Bg9c1f{4NOf>(RJhu*X-Gg03LeiLAGt% zMpxGvCMIU-Sh<>`haY3dp4}Y!;Sbn<%Pl-|=nxranh*TW+c8oeNFSvFlQ0!>m^2H% z2SOUbeNmOvk|1JDni@N%scDYT*4e}_5mSn@|juAo$aQszK&hHcTjTjWTwUmoWxC}w9$Sb>5!)6nLeH`dsR#HuX>T> zP>1QIf52vIk7d;{on}{uO{Q?aQHCVQw{x=vLj?CQcm}R zcxC~BMP@94v#2nFjalP?S0dR^%i7LWB;pCqoH>VAR%mUZJcWTZ|8rFMbMzvhQqj`d zO1@B7Xsn;k0)DQab15+mgSpvRla&vg)nwanKCl&VA`iSqr+6Uf7ycO7ox zm8BpeMM3o13UZe(a?mcjS( zXL$esAOJ~3K~!TW7|mq4@%H_U&5a?X!JT*C&FEx-iHjFGdH4~oz2z1<*KgvnfB7ak zv&7!(t|e0_5KSc*85$&!jIwfNJChURl*?t(HE95B+s1Q!q>v~o)P5ttJy`Jnda4CD z@92*iP`r)ca4`@lM`O7*DUss*kqdm~vtQxD56*&{fKn7xMe`gs|H~Q*Ju?7+QhqQs z(0*wC<)i%)b&Yj==Chw={|(pkv5$S6|M<6m1H%s2L)i2ystkO>|0ayUTqqhPxoHEf zdv;R0x&s}zQKo?~4QBH>>YD1n|U5OhEUhkj@RB`}cE#`8745@08ZuG_|n zZM(5*8i}NmG}PDOWTrWH_#wuQJ&MkZf?L3_ZER`a`@xh!DGyaHu=(0+`SZX0Ja7G# zUqPBMJUWa}in?@~*5+ou`@na39pgm3Q%PU;8?CG=&g>X=JtJL|=Bo_RInR(g-!|%Ez(|)^A$F z)a)p^;tbdB-Oc9Bn>lszDCfG*kgSb!-wR&Ai8H6k&rCBkGR(F6_mWJ;xOi@Wo(mUP zv8t8byZ3UctDCOlC)sn|ZX8cBIWf)T)EqB-;fpwV@&tQ!U(3|=BpQd-)>a0FCqPIV z8fq9B9c1UuZ9MYGW4Nx%uAO@ryf{pM?**>AX&0koqYU(pviJJyDHL;b9XZJz_uR=N zk32@yPLW8Yn3$Skb?0ijySupS1$Xj|fBsiq_2!pw!+m>kWi9~537A{Ur^AR)vLZqg zzVIbgV1#J-SSgE^jutxBw6lKWTI^($$>}Ma*=aD1AQ?o+r#>TpOaNg1XU`Y%2Es5H z8yRF~c7`omH_^Ic1(Q=Vc#aqB5|)XOB5+BU&n$!QX(_-jX;4I!T*$yzg6ZjLdU|@v z7xUEB)lrvD(b!PO+BK_bX>DOuYJUGJfVK(3!G3=RWXySNQy*|J8xp5 zN=4jEhD}=#3Ca`@>pK1@WMs z51CAkd@eW72Jn?jEEQqJiZ&v4lw7`m?`otGuoM=OjTZZLRUe54p?V-R7*)OlZV6q= zqkRwG59)N&vJg^WM^<_wqPb~%dSqA`2ThO|)mJM5)S-ZB0M8YB( zHLABRL749%vLHhBqcqx@KG|PSb8qSY!8Dt2VA7Q=Y|+n@moPlZZ#Dud8Qfb{3?-jz;i2pJ*%==Ai~G z4Jjpt5ky4F5I~Y*K{6pjCP0PJA;N?Jp+rz*2_FeWv`w8+M`^_4>wo*7eEkbw!yR{k z6u2gV$zOHWy9^lsY6%GN%m4rZgGFMR7D|;tWqHjTU&H|P2l(7){|Kk-V_UJHsdxRbz%%FXp%5y# zi&`MGi6<;Dqlng3G;G;P{o2h~HH{=|6WGdS_{<3|9)1{atRHZ|6kr*cEM(RCzE3Qj zUz2?4%OG#xZyxapPy^j+xV;y^EV-FF|~_{KL`w|+BI(=*i8){!gZu+tHeH8IX~ zck$bw`Vf&Ofh$Vj`A9>Al>Oz6Ml~8O{UG^829rD`1ilD>Hz_s3D-w@G)9N(s8ycx? zOW{TZlj9SC##$Q-vYe|50EorqW950%9+5~4Y1rg48Tu~tlCG^`)8>t6smNwCC|9vy zwkn=cDZr2X^lG{IjHnDJv>>0$(c3@5@Zcy>J3>QUEy+}bwiQjRS+f$Q9VRBn1Cy`I z7T97LR8K53-1!OaWQ4AAwXgiU7s$dYW_0BuOi$qEbNHnK!U7esv6~w3(@FeP0xiRH zrNWL>moqwDZvR>0H6fmb>t6(bRnF?b!P@trP$*N#2Mkur6hvYM$+U%K`xsJUm=Sn%kn_T-pPJdy})A`mDlDO}<3%`MOS14yrg)@8Kz5w;0t1R05;%qZH91~M97 z1t|ex&2}jx_vae`5T-|6L!8xX>si^+L^>TO619j}Hl|?`5!NCGK*iNx3M25j(k`Y1 zPwRR5|MH|yY(EL+i7+^?)VzKJr;@)JCwXQF5EDbvyt*{~yeAgiwiv!>*HLo`c zzW*omPuSoJ!@`gfr39|yqLfEtV#q+!?{@g@(@aaVc zwqX>Ur%`2%9ZNDeG{E}x>qyik8JilXsi7W?PuVFmGB!%KoM+25+lWSEOiWBLH#-x! zA8%aC(D)#8`5A7%;{Y8UogC{r$@jkXbzc9rxAS<{DGon&n0*KKkx0k!beU2)&&=dB zjSY>&6LF@erx7A(PL);|rV%nl0^=Vkf=OWD13-{zuPcq_GSfo@rZ6zIiKR?pZj@T; zc=Q`b_}jnuUkpBS7W_CurZ7|ltqlUXv0QAHR_)4rRRI8XX z&uDLJ<^KCW!UNxW0Mm}5b>N5LJ8n1~VE$m9*ZP|Vm?o+1+i2RdiPXwgWK9xJf-(fT zQkllqW@_uxO0oO?CYCJKn?_@4AcTh>OloV&UU^9CM_k8SV46j^57?DM?n}9|xP+0gf0%nZV`mMBW+Dg2!iD)uOG7+ONHA>fG z50X1`3cNh%@_d#%TBEcIA|92`i(dL-{_OLA!o4rJhfIEsnVA{lu_#TAO{9}azVgK{ z@oVq>RUY`y?_ik;EW^eyEIiM@Y)He?&$<0cJ)wg2BqVs{9BVhO<%?hWZ#1_w^QJew zk;fi=0>g-57*RY|h0$?hK5}#3r1e<`0IFj#eNZK&4KIG_3)!?~E&uT!U&HmvyzqrD zW}v^HhrfS_bz9c4Z{L27pE*f?cOQ1b;=cRtqx* zj@^5?(A&?(jTnN3rluE?~pzcRp`&VMp`lCO+6^2=rAS|q}q-EndKBL3qT)fy%u~eeA zK20(er?Ih)b!%5qUsp?^kYjp!x(eXAGoMoOlMVo|I5A`q_!>^fWjJ;A zeVEJO=dzSN2ha1c(=}MhB(a)0{8$vJHELJ}s zRiC2>bo=G9%j|3h&krP?vA9i5ZJJ~}fn~`M`1Zo|zKU6`p8s1_)yMNOi8@4dg+ySY zd`T{wV`gTKR4Re56mv60d>4vE2d#|op6KP%Kj!5x3ycOWR6wSye7!V4`QVjNP9cy5 z=%9`_Y&&@7O%v0KAq*=JGlWZ9SHPV`Ly@0v06_U3iJAzl?P;1?YG`PzB^I@?ZHXle zENNq4AS;ZpYL=4FXsv<-83C@Zn3>HoG(62<{|w_}8Rn)7K|R`es=ST4Z$z_u@g{+d+RwC0Jz@x6AhSt_*l!n=v z9FybIp%&Me&sMK&Ysio)v}g)mor@l9NJ<5o_)@7f9~YOZsi9OT1UaVFj?&c!kkFSm zxp<~0bQmEeY~k=XOp|;rOC)MzS_;oAuyNyhw1$a^NgOw5{KdRO>=j@QLM)ynX|d=K zLYcUkBKcg2{{D-s-Ox$fiYAJFfoLj9sy0m_Um}+&0lo;9MreW}DnQA6R2SGt7*QKj8YoYJVL`-(j&|yI zZKGksT4K$0_`Z)}nqiKxTJWh*I*?S@acF3xdHY^cD?734 zn@Fcp#Qi+|#~)$f@rNKg18xB+Jhbm31z5HnWYm@ltlhkkKltP)_>JFqKQ-wDnamu9 zQq-kV)Tiq?b@Vvze8)Tat1o|*xv6RFSRBs}Yy$$%lQ4N#EJ^Ks%ADKF?RU>KNchyh zU+5*T&}Svk2o^zWoo1EnC`)=m+*)B@64(%PQXl|;fyQ`bJ`ZzV|6wOUd zbe-&?oO8Ku|8-1GOwrff%Pn^t;B?n%rY2^%=f3-Rq_qh!L&^dywMz#!BKQv)Pb%p$_`|I&%{yq}jA z^Sp$LFhNv+`}uVfoau_He-9hLLcYN8$S|pz1nuoDL}QX%ZgzgkE~Sa~)TL3z%kHm> z_t>X;PQ{N?Pl@1j(A8&y49{|5AcR3SU*_Do9tK86h}aS8>(fLmSliLUs*YBCA(@<+ zqg=>`XL3mMR(=5PhG2B%e$MBfS0eGQ`1yL0l29!F^;b8CyDDZ*S4AOK%xSB^8sCFr z0j4HVb6K`uO(bR^&7i4QzK7DGw9BYG zV?m>@^a2o4@%Z{LU+SRT@Cc1gVK6OlljF#1oQqDnisW5x&MW!upqBNK(1~m5)P(J&qQN zOg_iZ$RrmojB>GWlF^Y_%7xHlQ-=VYG?(0SHF@{yIvt?$g!{;Y_kW7P_5+on`<86BRW zTy&_W3orlYavH!(4?x?tF${xpxwMD@APwVEijjVfSJ|RdI4tUvgD@nXlV{7eO{`nL zmU7u)baXVJ%!LQWk3Ruept?&HxHW6X!S{Xg#T@mGbtLMOvoo{I&d$=--j45il*?tJ(I}qp1pt6i(YP%%-ZDJcDtYaKAZkX2O|@_} zwzg@AH4yWXJob&p_|m7p%E*ZU43S1-A&HDalQ zhBd1xnUHnLM3V`uXcWV=SlPY;ubgM3r<+}?TKU9#-^q*j@1b7!=)yD+p>SQ7c%lX^ zEPnU*|B&~+?}ME0=?5K{bycJh3r3dbd`3^}e0k0_xKCq(DHK|{AY8Ox=K7oV z@rD2P=V+~Y=R4lbv12C?Sb(+Q)9|F%x76(NX|DGxWdJPdG<4AX*3_#W6b6zx#!+{$>y^B@CQHSz-_mIC3xsN57N@!%&iA*=ZO=?x!8SyL^{q* zH{C+l`O}PF9K{ztFL>dLICknNgJ(zBxOF}2)@|n0$rB8Y_3*;`?xp)&A2XvKf{C{Q}c!nD>16wU}uaS33x)F?49a zDE0CZS#b#$AT+(z^QVcLwGkG-vc_LWBV zlHKca005WvoXhQlOYhQr!z`}mjS)}zxdc6I$mVk#$Yk(x1xkfH3W*ts5U;60L?c+q zIK<-kl_84jp?x1c-ww%zCS@MbCv2AW(>Va1cKvx}-!Co&L=fOhJYP^Ocw{meqye$G zO*9rIolX;pSQtidg=M#h)|H`0m<%G8JcG+Iw6sJh6Q|^p%@!yY%fX&8AG55V`u)#0 zfK){YE_Yu7#!t{(dQdLoc|NY^1$DTT$Y>HH62r7?glz||Ga>7@^1JmSAZZ?&ev$=# zl_${8>4Z8MOa(xXPb6lMh+CMJK{R4xTQ*V)eC^{Y2ZcguA78t8zJuqx_*zhQ9dd;N zW0Q0A4^DESZ=8XF8Kx#n%*__io>*XSEFF+u_8p3!;QRMH0C3qqN-LD-5{X7>Zfas~ zW;)2Ml}3;yE{w&9&(Z}_nUKySxh!bB@DWnc)Lh5Pl`EK-n4yp>Gd-CJPM0g9=ReI2 zSZlmeiE_CFKr9|dsbKoCY%!vL0#=~#=kKFwX_Q|CT=wkSLwj2rr%rWq@xq0G@=le@ z`;QF(EU+sA5Yl4T?f}N>ABFu_MO{_Cn9*hPc$CIaa~-;p{}lu zV!2G&b%-Ytq0vuZ1~!icS0=VvBZVK#E2V)zVoHf9`y}loO_64XPL1=W&wQ0b|M*>$ zD=~B&-woril%7YJD`^6kE|2Bncb>-jT$VXdmEntr@=DYMfp{egNiBE{I9jamk^0VLjw)h?WO&iZA5BonaboaZHshG4VhArbX`5k zbS)G87qK%FyyGSJ@bS02feke=B5oO5XbOb_(Rd1J$NBCL4)MCzy@kL3+y70uRK_&z z#VG?7_Q)cwuSB~V?VBLuuwnzv8?T{t{Zmy7X&-DT}f|gb3MoZA^D?NF{PXIvpWUoc{T?KotE@Rq)-~PS(dCf1snoocFvwZmr zU#9FTEF*@}G6Zo9u1sJ33a<><*{^q;#(qAt$OH{C$j z=`-~A^wZE@&z@^{a{R4%+k25=+WBvM#SeC)Lb7v`+eQvnvdL}0(>Fw#|!0k71X3~mt_%QJ z$U6-R#sz7Vm``(%QX$fxgt~3vm_D;nwlDjC!&;`Qb3Pp876{Q+W0R`X?gYlfW?z7g)~6BWeme6pUcyI z`YhAa87wnOV`BrB;nTUYja92V@RiTh%oI+kh(uya3#9}?8_TrmS9ty}{T6-cwM%^| z5TL}fU!X5Ke=CC;&w;ra{A`ADp@237GGb%Y)T81l{Adl>iC}W=dZ2>la-LNr)WVRe zx>>B4OFb#j`Ah=<%hd-9PW!&^;krJVOrAo)!LlM)mPI@n!;Ttg;Sl0|Xf4sczody< z3Y0DLK0_7($`8ptdf~ncadobLp7{|n2b?0fWwcX3YY)S;5T?Yiq8L^bGa5&mCR!Nb zdr=Fl1DNNhT?$V9ECK+4C-6OwQppKHUOCUUFbs)h8^JyurZ$+iiP8#Bc{s|Y-O!&Fig6;&xatOKfj2@(<%<0#s*Z;lnF^~ zZ7q&dMmbJ^MlN*~e$D}aN+h5M!b3=(&NZFv+OwO1fdL*r{5bh+7SoOf0D!92rC$Yu zq>wtL!;Mu6jb+F1^JOMyW+`|jR8^HsZ^S^YuA%V#MrcXJtw=4GCe!V<}Dj>l#3mSkW40-%Vt0+YHMmj zhwCt{pvu^9k;xwmc34sym`V~+HZ@i)-VA*6|2)9o{mI{u8^{4sgm0i+9ZU>l2tdsz z3oO45w9r>+2dko{&U<16aX7Dd)hqefM}M0KAAFeK{NM)}>>maziZCN6Es>@b9PlzU zD4d^SnBW1i6p4)+S%3XL;w#(9DaCZIK)j}gL@G|9T%xtPne5aQlfCD-^_new;(c%D zz8$-WxN}g*phL}Ns-}Sxr_S)3AO1MM^`Vb2a&ZV5jiEIt#|LRwHUA+XAu6PCBl!Qy zgqmjJotx;`yo1`dmDJRvu?)q<)5kga$oI(ioyS07VuWXx9~cQ~5A76b>+IlzAN~*@ z_}~X()Bm&HJN*|1FswLQOO#LzfoA{!AOJ~3K~zt` z0MPPjH0aMX01z~!NEc)o*Uu44S?u0@4eK_qr|0|yx}G?}Y<`M+@4c6nwv}|9Iz!j- z6SS^q;kxUuCgIr8{n&UJV5;#a(c<6TFY9L#Y2{%gr(bBqs;vuS%LmSxd> zvX70MHWQD>ICbhIZdr5fzP*f(OwiZU$H6;q;qc+ZIC(-2+U@kNgs+#6|6#;-n6VQM`C=3g)>@Ynw zjRw-`Bn=G>2*7had=;Af%Ie9#ev-~tJ~#De*!XCrFf9vTgK1buVKO{4Mo&*4uB&LM z3o^ZH>uc#)*-lM5Ngg1Cy; zFBk9gN`W651^O<&(u*2f!?F=(1Yt*l2uR-z{T{;7sq&eMtMerPL<0boct>sGx(?;C zM=qbo_Z6=1;dma|e4b*tjN@qvjz`&3WD6xSxgvAfG9x3?3=U7z(>uZGu0i^Grx+W{ zQz{1Ff+6H?NJ z0Og`_K>DoPxQ6ED26}t@86Ta(cXW`eE*2uDt_)@R5jUW46D#C%DA&b^M5(E(qf{)i z0G%o>FEO~92b`*iHp72b!Bo{RgW|41Ld7w8Sc<{d52o(63ELW!ZFewy3bNY$p1Cio(Vr)#Wlp{wf*F*|`}nyg>f z$*GekX>4o)E%ETEZ>Z7mJ zuO|;KQ7;0Xqz=MwD!I3oY2!H_hStj@z>~eqO5~;Qguft&!UWj3aRa~i2fxqC6)U;_{*Us#2ObFc zxx!qSPzVChN0?#Uj|j5Rv4gK&wVIB7*Rf*9Hr%L9HeWQXUs69b%h_HCm1r+ zuvN?ut>A!KR!9Fd0J3Kt5WI{oRe51y;9(dV<(Dulmydn?w|Ld7f05t&-QVYb{>|S9 zneQSRPJ;u=zYxn&r=NWQKnQ`95;UDtVA~BF#Z%i@ZQHi()y8VuSZ&+x%G7RGuD0!V zU2T7PFTSf>C;8{egL8g|mQ%NL)8);5)8h&$b|!Y#f1g7-o~WdyD$e(^m(T<*UdS(b zP?^AN@Ktfs*{#}A&HQ|HEE0`46*jHJ-tyMIVpW9R*!5r1qRxAHq2+@Ia$UR|0j zy&`*DY{{<7sT1&j^3;DGX|bdcSG<`sSFgB%ta)_tgcnq*_$DXQTe$)*(V$5fiF><$ z5JfNqcg}93_2-~4kDR(K0%-Aeug{}Qdfs5WqC}wO-1>&-x#dcYB5+NJXbtq8F(l%< zCu!RXNQ4QzW|@j(OqKI4FR##U=?t685?a1+*gLBC2lMvC8^ruRs=B*YELPZ7e77Vo zz@U-#H-HFvX~{S!x1a_A(eHwcLKHm~xj!(BDxJ;Rz(Bf`OAfbSEWe0^QY0*^I-A7P z;JkVgP?`T3QCLp(tcP=G$v!!K)L{2BI~y}8GYl1PlzwKkjLC4uH0$^vt6G@3gIJ!z z9K6H06gU4vEfZ5d`|{GT+>$M`T-KgVl)-eiqcg2_8QSj%#P9<7J@0}XjTg}HcBXAz z>tU(&S0CJDCa73e(8~4iQ?*0@jQKy;B9YO)#w{y3sK8DB00@|{jUABlruML7o_poH zJBYHBjLX${=5RC($j4bo3Lx5IS?ofIWuVA4A>UOf8ek{XwE8}~|21(f%^Nl_DE`z2I4EA=jGWxTED7r%FWQf@<> z{>t7!00hC~gCLPw4!b5K6hAoPaplPv5u#x7@u_?n!2ki8xB$Av16wG_q{{MUX9Dh2 zJDy1k*I4CAmYgwm0oJJ@xBRFqfsz#5a4E|(;@m^OE1HuTrCE2E&=hJIo)y87(`$kb z-ftEEOynSpI<(O+CJ^T<5UnF(ldlCQ`8mStDQ%Cu0lSt^fXa8VK@n?34m@(A1XYG( z2zA;85n3#tXpK3Q?@p+25TW4G~VB9f^j2~mQY#~sCjGpJD<*qud{vq3+@)TJjw zB@ z5Hlsc(q~ZbH(-Pgy4^Bf|B)?9cmV^o1wzhHZNDzJ-OhZyGrzADeByTa!I4&1G&OeG zAW(;pu^@7oCd#QcIg^7ZeGxVFlnG?#>DE@(!wn3j7HT`%(mz~6W2lKwEZVmIjPAT~ zIp{1zF)1433yINQ3)r9|H~`dcEfhbhWV7CH3f3%p z-~()eM6#tCvXO%4DIEm8FalpK0~I_yx%(b_QCK#GLs^m`Rc#ouLz$pam#_%>wY~vh zvp;uxXzF9JEfOVDRmlu6ENAi!YEJ(dTN#I5Vi+LC-a9WaayOaWX-?-~6rEqQ!Yk$L zIrK!i`9~k1-z7tD9pB`B_!cHH%TM-yKAtK_-7{`p#;`_tKF7}=M(NNJ7wLLry#pJ?tc%c;M3+H3b9|JHp3X`8S;KE67T+3 z#=K|y^?FsK+mbyuhn9NP;QFK)pBE6~8TgFkW@jTIFU*5~GytioJ$(6FA6u+IWpswQpkf3YWoUFGySdhg-`F9LQ z>k>c79}dX1{`)tOQRcZ4WWfjN*SWXv*QR?LarAWz^_`H$XAjfT4^yuHL?-%!Fvk9z z;`DrD+E10Ez)($&!cmNCaRd3T*>Fn^)3dU(VYLaDt~%FszRnCwEFj-njfrH8UcbL~ zu$LiBLdU~E^>cTOx z`iI~p_NUgPN`Nt&Z8mf`Vz^_tb@+Uf9G$pDL6Y(Sz?TT{oCOZ5rROfJ%D_a>(lVUYI01%!#u+6of)QE#B7W0)ug z0+al>T!+;|s$YZgsK%er!oi+PZ4@rs4@iu!`vU_aCiT$QG-))L6O)H7t2Z=^7mDo;NtsyEWR%YZkRT#I^WbK&)3{0 z&&};jQ^kb1w+4S%LaR0!24|Q`Aq1tOYqguZr@Ju@KJ`9B2z{Le9xb+tMzWKrp)RA$ z49TffmjBHH1DKQ5xp84VTfzV`;nOVOn&TtI3(DxzL9*;X#1;3Kyqy;oJ#KqexYoob z@JAmfbg~vWqDF!B4%*M4C43HMr`t1`F@kL*7_gxt)sb>{q(!Dmx&fTd=% zonGMpUON5rskBf({gn?C@yDO5yQ9E2J{p*fF+6=uj;8>nY6xX|<7(d2hT%JSz-qcA zCZxyzfs2h>=AbX~?7HD@>jo(Abeizr zT5C$qvXQcja5K8Op_V!5Q(Zm|i1ZF~$kt}DT z!FRz#v(8W!hvpHa6i4FLpBYQ}8H*eTy#3XJ8N-Qu31X0OYBlZMP&d?aAbevuyq@z1 zMJ*utU2W`GEM>P4@VSAwXI!txZ3oq=+ppW)s+uL*trF|#rX|;PS!;j4f1y|e>{LEd zH||W8=u>A;byNSyqoKr)1!qitD8T}9+0H3;G`qKu>KTYhvo*i*khx6ZH67xn(UA_Z zLjtBp-KxHH%taz(R2i3O(k8Su#eOPPT&vNR7!yG$l5|;Vh%#$aT)lt;hU^$a&Vbz5 z@z}#^QR1V@tU3(EVIT(ne6liYLqkG*9dapoR%Rwe<%_ly{>Pc>eNLPG%E*`{P_Hpk zAMc2dg2s;R-eq0tvKaED=~z;bsH&|*cc5WfjCe%K#0K7=8dtWeIbva5EK$zHVuM6W z1i?C4!9pUmOjE`bB53Rx+zNT70=DpYQWJ_b@4ev04WYJ3^Sj14sVW7imYjH-yCARS z%2U~!td+M3#}=QZ18&@O(S{Zx<7Nh~`KtN4^UsD-C|b)I3!zPdq9HU0KzSlO3`Oto z5_<~JL4FRJw`J?#BotEh!@%;qNkpW~hH~0(;^kE2BN6hkh?+QjI(v(AWYoyS->0xGzSHY9Rz-T{1bgs$&!sQt(m&t->VQn>Ye!FOEbUP#Kee1ab zrH-rWGsmFD1HHrx_ZzCBGZ?s?f3#HC8h$&nL8}chKbif;~sz|2y}2FcG{ZWo=YsHn8Ntyq6jE6=UZ zgQQ>;+6+n4KN8bR|Gvq#h1#cbPd#l*wCE|w&-afuQG99$N?;s7$Y833EbeVT1lHt~ zQRN2D8HY#W^_gNyi0=E=4VvZgf1AyDKc!Ke7N)pa8_a_asFi^)NpYpOxP~v|{AlT; z@wIxZuEr=U`mT)f=?rEwmlZtSSEzYg7n?43KCKSxlgG7sFIm1uqY~cH5q%%9^?pEJ7Kf6#?ew%MUF!>DjGCoPFl?rbg;W=TSa0x7?U~KEfu=0YOquhhlFaV z69wVj#u(P^>7TvBPx2o|(U$W~mQ>x!-vB)Lvy{`h%DSX^n7YC6H+D!lpk_QLy3}($y_{sL^mWmBD$mv;r zThou1^JY8iia9&|TUb&{C@&MPgu>3NT7FC)dXKuU#L)hOa-SVMyuu{XyQskE4{k!Z zBNIAlY(!@wHl1c9m2Qm;vKgu6liN8ivHz#lKZx z3^kVnl^orYvx4cJR$nuFRczBiOsZLuz3f6)Y0NA<+&E4C81_Oyt@}O4@`CMm z9TKzoHB9H)^!FUJg(O3~I0^zn%B^KFtw0#{fG7=+|D<5>K_7zy9*2lm5w!g7>dM*M zLmNMWm(O54III$7%VIF(6UU6;Y5jS!Ix-+7-QF6;arh_np%hK5ByEH&+k+~B1D9Sg zXG7G9ZyzD>@yhSqu~*811w0MfexxA)Vi9qLg7<=-A=~a7Bl}Fw8rpq-3gVI8`Xg0kwzT0nx$b$N3FN%Mh`c0KNUmrPFhn5b#>Dc^3 z3t+8@JoCd%u9y|S{Pqu??xsDvbNqdgNu1FJxV8t#bg0247|MrR|Jus)k}M=%Q3y8V zrdwnz^w{y31jt^K#&5hMJ5N_?}o^WqP!9A_+BF^55mxZ>OycoW-mM6j{3@Oa=K zpiEQr*Edz+y~jd*rcU&O5ur44j<0YweGld9*|Xz3jrrgw@iV~aYuyu#3}W2@@=|Pk z2wjdNZjQi=lF7W!Kl{x&Tvj&e7-4YL`#+$jHBvx6WG2r9EZnGV$jG`{@==3+~N2lOMGj*ToT{Q6M_VB10K^!hIw}*D+vky}sw7>l zD3yy2F0T4(n@fGqi41Jj7>`S9JRK zl8n1P&AD&rv?wK9wJe21e;WS2Iny1K5!ui8WcGNQ?Hdr~v!S;iZTv_gxhsuX5#4SG zPaF3=JL3@qB5gk=x3koRFbPMHPkDMpOz_D6R&dRpA}AQ+v@leTjvTma*UT%(a)8ijCLR%2WVvPm7kn}TFG1fmM7a4=0 zM0ra!kSkMdLPaI$j*_Rm4-uHs&4#u@Q6*H3qe+XcO;^IWty^bnemZ>ni|!g9#(rY9 z+`;Zkjyk}?HGl^>My}~@?uzXB({iQS#n9_SpzVo3Z*+5SFxN+-Sd{`Rog~j$#*!i{ z_H6W96qN{O*upRdEnXNyErSN6YGss|Bo0ln3U_815)!&jLZHRLwk=~6cv!S)De5Zr zDz;Z$+_^UF#BXQ9&_!q-a)$=zGMP|vjB1AsV62F(naceOF1Ro>fQbv>R0kDz#vNz+ z-VakGTc*BRH=KMFbJLBzfKQ=?IN@K3496?N^H zC88F5Dyo+(uE90oPxdwRL}|6S+x>~c&c~Ll@jSEC4i;f%s&_X&Bkm|$OO=$Epib!G(!hd8i7CFxO zArlLS9<8;v#+-Bv(Q(0b+3$JNuCMEYd^wbw(fOASO8G>kEwxyqK-ixR&Y5RY1IBer zHtTE*kaZU1VqwS>_Gcb!Ci&E#uIyhqpzY-9dAhI{rNZ25f>e`OV7lZUY%jQ_V;@+-_Z#~JWP(F@iWQ~b=E+cBE49vgWPCT*T+CR(jSb6CLg!wQl$BO`bD`9uAvwg*KbsCkD+P9*ujyBi23_)i(p) zlxMpN3k>)@8*C?#b@|{yQ2z;DPL82;B;~}higy2xS_0mH)Tsn}ld&UtZPzVbF5!2I ziqUYd!5+umx33%V(i6~z9FNHR)LCjYMq?aI8kxw#&I|nrVL&c6nz1xT%6387v1aXW zEFmv_q+HK9 zZ{Zd+Ls&;qNx=!0G^`i{tkz)9zoREsneW75G@y{GjJ=egM+4=yWo4ZZaCJf86(U+z z_h$)=CgrK5p8*t3ZWFR>yRc9Hw+SIDdq))z|NSH*Ow+- zmyrQwUE{7~yJ_+qc~F$Cj6BZDuOWN+68zZZS8ujji={<1)-Do0%WO6z5}Go&l0@C9 z(ME+$OC4}pM!V79txyi*RB4SW>)JrP9=xdNioDuXwI;&?Vh8}U5TFpQY`)xc4R&NG z)Fdnn!k@vAO+;FnU)jMccV7c{q7gp?typvniy0n30`K=L4ZiMt-;2nZz=#CElJj?7 zVaXnwD_ZnTKk#6wrsvp(O9=QgZ{rayES&bnjkbk7LiuOB(*lz^hFR&l>!$0~)<1!U zpX+B)I_dVZ134bn7gnTHB#89JS#g@9g(a{XuBSS)(m*xNmE!7BY>y;^MQMA}$iYGK z8lATE-cRIsBL3LKWIL`LuVg;ZG?b)N(O@5=&onwTgwvs)t}i5ArZ#XV02$4Lh}Ig1 zUYJyVn@b=79$W^criUsLjd*dUB=x9#J^b}%LG=8O8%_#K%o2(5K_^ls8Ud|}Z>O4a z3{R|RpH42#YfRo~{OWT%0tb(1|0nUgeLR6cWX2fAX!egQS4NEmJ?$uwrk@`Axmfht zULOz5OxiMqW@MN}n2_ld8{4vonA9UQd3=*d6F$#}Fkk#nH9dIWiH1PvbH$7rt=&I! z2Y%1ueWQ-uPyPh_UW=zL+Da+k?kE4|o+)F=Oo$(Ztc2K||GqR3nMtcY)dS{w3+4?S zImchF59CkbSLO-8i&EYgVpsC?yAYUKFa%;7w#M$fTt|3=;;mvHTe-r+VcvxK`1;%An?hi`#{*JBINPP1^RXwsItUY{Vg)Z}Aue8mX{nzMdUPg9!k%Yw4g zQJU6&CmC#%fG-mU>bZ{D6EuM?Z5TV(7U`e{G6pT6Q(;EcJfyPy&d4!R4$T{@zrVkJ zj|1h(mLFlO{oN@FvFZ6S;~~7ap~ooUq|xHcbRPfO^B?G2#@fx7Uj@bbOn0+wz0w=q z$d{exX$s#*)*e?qloF8d)IGQ2GCaKRVG`JcIL8b;`=a-5(DI*uLoe$$Wp9V|*m*fY z{J})XK)gO3#0SayOWAZRT)f7c4<#seYdDt7X=hb88$fdkn7uy%0f-q>MDb`wrKAM( z95f;Fb%N>Qx~$;XUr1(3oH}YSFiCy2ZnaWJau#7EU3MOXEBsX9bJnQ-2`H|5>YhfO zePG#WhOlD9sO<~2R&m5Y;Vg^S{D2-tx`?5vy3KzR?@pW;h1@Q;`9=@QKtEocQ;$_r*!Lj1>cL25B_xC8#m6J;tb5Lp3@>OFhH*Woz;-jZAk_3 zFV-u0~`HUXiNmz`rGfP`F!lU5G`b__z##^ic&KR28id=ZF?O@4aA)2G{ zHLVI$z{?f1eKNelO{2oYe@2sq=!P1>!M@|jueQ_1=nE+_WspTfm|~&PN*ZW4Tq3jA zVz9{ndn#@Y*5`Zq%|2~3qj}~iz>21vvFj6}uuPfZIreS7RA98BUR)B#W?vg^R5jUn z#s-(yHY70J&vxVrBT*NBq%a!GxhBdiPDwkel^)0tcOGo<^IT^&o|Z_C7FeplmxV5f z$J&JYWCqw>n^xw%3Ns2u0z+TAt|-{qk>MRZ8$@sAwMrAwc33#% zYa#}cK0bmM51sVrgR+;^p3~&Wrnw>5g=dq3k5?J z$jhkW2ksI^8L(VQE&m7>9nghMW9$0z0}(>FdoSD%UA;m4`M&;X={E5xR;)^?@(LQa zHrE5il}7&+52cGO`{YQTm|5)XOiC@LGJ>~UBL1;%3xvw(#Qb2P0iNS)j0ADZaHFq_ zHz(KR66*NmG0QCO`W(431)z4RTHS14AXT6| zN5|UA^`WF`cQC|doitKV348z&`n}v4i6dEG+cTVzg-WJs|2262@b&=&<$ovTGZW$r zAP!b(Zo_^)YU|5es$RK{QuYgpQ?}z+IVy`9;Nf+%=*glN?Kropv#9yd)jjJp#l4VE zS7{P7g*&Q}<@4o3!$o0)Dl^S09{<*@_}U6_l4YJJZ4>axso&BX_MQrc$t@C@VM z_B-n58OBI8?-Aa4X5q3(D_EqN;aAg>%Z~q(GpNL{@$!PcHL?`NxurQdYn$l4&+5K| zg@RXCDdjklO%7eqNxCl@wbhJ)*|Jvoqg%T47HYeo{7GM>`zEgbBqQJ~EEpqCGtK*ql(Wn{frI+9V_BwNWHFq!_cPvsxb;g$UnKcxbnkTaqhTF^W4|+ z|2(Mv3PvWs^k2vUJZH>&2Z@EKc`?e_&RdceTdG znWF}~H879|RHU*6rf7)gJRyE4&}r!6|8lnrVmn)})Wt1Dp)EMldT<`KH5@={t2g_7 zbQe_%poB<`R5^v@;9LwMiJyK(q|>A-#8_}`7eXZC08PyIZaE*us0 z_;Y}9jRrn59;d&M_wDsJrB+y*OQyJg3-f+w!gSoh*7E2{IUfJpN z+Pc*aw5XyUsd_o~W94+_{JEvl$LQSC`FA~WMuhI?q*wbIq61Z&J;H*JHUe#YJO*N% z_^=~7oCf>JO<5ud_x=(eY$C<*8OP+6I0FI6RvVzJXNw1N(QomLlr91pgzS`3V7bLe zYT=oaR9uc#(f?)S-r}K7rde*kkX|TGFjL&ZsO+niuP-D?cZ43!N~^21g!($D1}nW1TAFPNqz-ltW=Qn|NP~T#mAU zCN^pxhcFz@tb~>;t2VfFI>mA72Py}G5`y?n8$sNGcIg69mKgjf*r?*J>4e5dOJn7d zmiJQuAv*!vy-yi_9?@QauQXOi)pQeII80L5qmvSTg2}LnRl9j=q zdGbv^ULV>$g8!Rr7Sg$5dN1iN<-<@B<-yN@0au_K;;2L=!;Es``K;p|#F z_zl`K=rqM13|8PU#V0w=%q=ZRYW%vXbqt78h#2+nd-ZU+z|G&hr2zF<+xdp2l%Rt< zq^Jy64q1wOmF9$mZqmdL(B~K>cj`;^+-fgMqkxi($)w6zK5RRPB%pLjbXfg$@BS#< z3RA>(x_aLymj+p-mPftn=Kuys9dWiRrr|oRzzl6+Q#s%izQfyoe&xQNMIkwC zFyYwpTx!p7ZwXY#Z7wx?Eob;90Mp?WBuQUSv9&%fQ6}|owe*gctrn`3k!B@2mOwcA zWTpMCyxMz0kon|Qa-wpPN+#)=x_Ly_VztqoKkzn6`F4259}K{qLy5Q)%UjmMH4rmq z8Pj6HV99{5hWqD1#P^$^dV|)DG8$<6c z{Ptb`({(s^cQ6Zl76Bo3o@~lYOX67h^K@J9$f(exGm*C!gcy&N1!cjE(sDiDiLN&g z0wBSfZjT|&YRD&v`910YUeMqE{ge0|EZyy;|4n$P>VVpLL1%!4&+MwB6byj%Q$vP( zU~2U_0IjsJtF2&oA{}&!QY&6P8M=Y^x7L)gH(2pIy++rQamBC=xlirK;6Z|`@s%NH zhSCX~@F}HS>$b+%m1Zz#&HQ*nc6q<1b?7|$QD^AOiz4(4=*r(5Jkm0nT5qv^8Q1C+ z^KKk^)pI;r1?9vFb4A*I1BHDk{?_(K%mKsl{vq;Umy(K`mT(*xgN_P>?~G1MV(7LL zs(;VQaQz^()%NkGKk`Dq;GvO6r41vFaNXX~#s!EVpi6B`8gr;E07MxS)GAv@mf^9) zW1aP)T1XaIWl);s&$Pp?-nSs^K31en)WrT}ZTkso4P1kR0mP>L`e+8GO8=a&m$K6q z^9ie{PfvU{jp!)C))r1Dr3-@|7jr~O?0yK}1EovZ1J`_@T@I?3>ukdn}(rjW{XkN;av{wUsS>qFjdz0u^;Mh+v{xOEd7R z@YvQ3hm61ykLC?c`MtmsQ0Uzw4-#;aayaj6?zdx~DMW(`R^H9ETKR5~Y1kEv#yID% zrN{Kp5gTNaI$ANMDSENGpgnTMh4h0gF}q|5qZ0{sn*n!Die zZO03w6dciRdBx-7=YRRj{RttZMD_~$UtRKSD0Bov@jH4W2ymm$(nkrdjm#z0?0eK) z-fEBEdh=9&tZqI;aBG<){{>~Y(SbzG*zv~6EY0V%KLiJ|WaXcLN%>=AuI2u`kO`3~ zGCc?&Nf}bIf&B&6;g_y^c)&-ip_tf)prQ0)=jVj5^U?+r2|a=8H)5kKPP3Q}Q2?6Tzcq}qe5p%(QZGCSJ_s#=bBc|#Sx-$dF768d9 zSxOQ3`7Lm`Lg>K~F^>R@!OkS7(C9qNjEt-_S;oGkA<7Iv&6}oKq%JI64o+i!!Uo2EgAvtHJ>6OwhSTS;3v0HI7a|>cW7_lPgd_#!HOf z0=N2hJ7HcM-J@Nv(|1=y(Mt6;B*NGjt~7 zy4GmHpwpS^MmL&7KDydzLBEs)r~AeSDoKo>Wc4QN1t~7!X0)V?8eMlzLc$A;YRSem za1bbnOZWz|D&+98>x!)MH+SDnfsDM%d2L&x<%*#af$(tmw1W}>KN!#q@;8BHd|~uA zWWemCHh(g#Mywhs=$&L&*BOo527rPD`z)}s>IjOk_NwX7SjW+2zqeU0rm=l&$ShQQ zrym-@MY2ToF4Mg*C0}L3DvCsMB+sq}M1Ld@9_$ExSd1$pi!J>;HH84MuT-U?V?7(o zyL51Lh+%KI%*mR0TgbdOS@!iH;(K}Zs~W}&`zW?QxwdUm}X}F za{6~_%_Z3JQ=M8m3S2ff@@%^9eF_qc#kL>#+ZCvX@FzAR@3ui7Mp{=R#=;FK#-l^U zltvOeW9Zy%1qia~v|RYAPlKp~z(vu$Yw)5qH53l>zPp)+(oiXO^Fih0kYVwHSIP_3 z9cBTCWUqfnephoD0?9T|Ar%zUE7LL4)IyDr;$R;FBRcu?ndSsc zccVRkI$i!HFnfD%Y^Hyp+)!R`mr(Mz1hM%p9zhetSBg@qYx?FEPvZ?DXH06@kr;7^ z-B_@UWS;26bV;s^!TJ}HSg|gJATa+CvM7;}LwKV4=P`azKJOt2gTyo_ZU#F+ZrwQ4 zsy^nuMv?2*OIWI-T<9>U3IkTmrnT)uNN>~_y}cBJR?8$`uRrePol8aut@f;V98kf%nJV_bo_d)l{bYA8j zkS%7JZ3>*co@H4NyZm&x4P$si{wKMbJw2^N{>sfIhY8i5|MT1j8kJN^7ktz`vKT;H zd-f>-)_Q>^xgNQNkf4!kIV#@uydwO?rq_Ez@v9Um$kZ3)%JRw2ajX-X!4Yc116ajb ztVOjb4F&q1=RAiQd9m-jUH*J85PrcVA3Rv~SiV<*zijyCnA6Lz_0JliC$|A zV&n;`08k5=N-GHF(HvC{Rs8Nq*zy&us_n$V$h4#Be5cjL_V&WY`{3= zGnnY|OSqu0%~R;V@$h$vuphywJSl3ZC^(yqZTdrYcl)60<>>$g5IL8KZ>+Azmqv@; z&CR{>$Hh`jmjhu&y+OR0?BgYG|MY0<&0?_Np^J_~=gW`u+HQhA&7&m8k020kwb5>v z?K0pZ&z#NLN3X!Nn**eJs?i3fmQ7@^y7^?r32#O|G8lG#g20C8_{4$Wqt0Lv zNoM3D!(s@bTXxP>_@nA2Ifm446AM7jZ1#S1SF6F(vtKbPQZbY-dFk`HEd$}&Y;Ja` zjLJe`MqEB{wHG>}p(+tp)>+XX3`l@HE9BGiPftpTc@K+#_!JHvDNdg+_eOr(JRU@u zV01WR0OtCJh#tXu03wwbd;Fw(xnLh2fc>ZD7L9^c8CrTwYC5glq8Nv<4){uoY+0;v zZPic|J8g5u{B0H*X%3DAO-vC`H9Ud}4m|F_Tf0@VH?gRNQQlV%xyWpwL8|t+q{U9tr}6O_No5cuB94i_OA{TZsW^ZRA}rn8r9xWZeuHl2s`mu~f<`P0s!ExYTWsn$ zi)3sq`u}F5U>vA071@4gkSArs{kJT@mLXoTK(nD_l^$glv^>*=y456HFf{qFj2fIu zBIpL$l3lDBgYgq4>;iV)`rC|q1A}W+i?01T_-&s;*u%?aL2{1))ovZqi(j-KsbWzg zSxO6#5FxT^No@QGuZ*@JyFRiQ2P@CwGHeYsX|q9j3RJ>K)Cv@oEYmI3< z4N(z!p{qTi+Nd!-$~d|wB7gr^i&i3CDUZ)znwM!rHtHMqek|Mi!^2a!-n(7y_BVIW zrq|c%D2<>-h-1bJbK_yL@R5-$nuNKY;)11>`k{mhE9)uN24gf;0@v$5V4JDpqy@t_ zcBQEx?U-MDdb+@o3tAagoh@mZluXJHE(~7OqPsmy*dn+*zn5lss|K~1bhO{y-Oe6= z!3W=wcnWNicr+%Tj87l_KIa2|HB*qRGZ6rA&Va9M&@Qh4b8Z#s-yB4*X*lw>{UnSg z_Fo2U(_Rv_6%XHHSyzipYHLbexV4vG3*!oX1K^)%BPZ`AWdxPq})W)KE|1$JZu)lQ`fb!OMC05>e z`ezkRciuWSu;&L;Glv!>ly19K7I@b0?6#mVtvZw8>=w7DN3<77WV@|D`J==oUhk+H zRL%r3tIQ>-QtOrW4lxO-?&iHTjo?_$ipSg`` zCMfKuuIutgoo-wD^fawbUFY5C?KeA+q$=(B; zbOv2J%91g3C4Nibtz6=NGI)NOIQegV|F4Wn@kJegrdajd(Sw?0C zm)S0FO*%I~@rYI!Ci`i|k_{dwAV>9aFajqcpCw>~`fFAjmdpCq@q2DS5rB$;>mVa*2s-OoDnv%7*-yH=AlYaJZMK2#VI~dJ!`62iy;c& z8quJx3r5%SNu~R)luJ;oO=rT(^^$AtZDmV4yRre&_ehAw>DEf2Mnri?qPKG9t|n9H z$g7t|at@*KMb0_f=^}j(ZDuUBH{<1+Z;c8Im$2O5&xjp%!^wG1z;3##0IHHB7wUrT zP%|mwPEoInOqeI-N9b9JS~d>VWngNPH7QU2G5vuJftRMu$kb?@FXXBp8YGkRY#>ui zQm9{r9%{1BSL#d%v*He9$Y6nm3prKGdJzWs-k}Le2xZC$=5ce<(+N7drRk1H%P68T zMH$O^j@0R1LrEo)!HEdG=dpeyEI#KrNhYYh^=vE8=!Bv0@mT5hX!OLT`;8On4K7DV1Oi@}wK<+RdmLNl9~|PP(>||^ zfQOmyS9=R+=(4e@8;RBtZl2+`SG`Hq4jm!M`TO_Jw4JYfNdBYA_fL=LBiZ5+@re(& z|2BaUJzY;X%Wb__qW$Hy2@6XL!?%Es||5UH)J5?c)RI?X}Gj@S6#CF3hot71ju@HC^09j_c(j0}d)>{tyGiBoTQOyNbCekIXcO!p zyu~|;F zP?9`)<25Dnv1$#v)X|8fVKl?9=#A&Jg1(G0Li@^f$as}dlgN{@B+cvyqP2b)p=VMe z-)ocW`2|2;-NI>#jjM|ybSN+~jKV{|L^$!BVyP|iD5Ji-s|^L~RRJ;2c&A*tDi#S% zISwB_hcRj}drm$D9gD7%vi;)m;e8!6HfGfIp_P$^M?}o={n!%`ri*_8$tlR5cD`gE zh1_X6>K`|Q4%gs~XP(c!9ndlb1Alba=ZZ>0;dP?PK@FK?mCV=Y@Hdz^?49HFVTMIpXGVl&03ua9dd z&88Uz$4*V*O9%}rHjILb?ZnTHlpJPbrs2x@Z^Qq!03UB%FY^_jSjbB<-zi9wfC=gk zUcdj9fuDOD?)=>}t1aL1F11LSu}s2luS26}%BY~ppg$GCwZycZ@!GoE`nrqO7aUzO zBZXwsag__wBo*v2(03jNOk^;c8(Pxq%urTB=kf$(Pw_uBUG<|;RmfS@Hq^M?cI+QY zG-MT>X&6DYLazKC^R7(&nKrR+t~T;0Z>`ZHrNU4`9bK+QG{T;IbGNmD@RD=F)vK;} zMH!o^ONG+&;q`$a%cw7sIZf7sDcT~z!Ub8OJP0h2!Y|a|h*DPDfF=6SOXWL)Hj_`FL03%4 zmPjqDN>C7Lf-`^t#E$wU()?TbW6q{gjP3?s_fm!5@!{Uas*hVtpftC&AnD#{H6+zY zq<(}>E?!c)02NP+U#weuJ+J3b*i@ai8IzoJ|X!nb|>XTwL-kn|ABkYUmx4NvX^&H`;ZYz91$ z;pC(wH25>bP)?-+fpH6e1HWrR$Gunjj3iZ3Hu%VQy8IJT`vg!S4txy!iWmM^P*$zg zNQn;RbUmo4c3r^;Brt^paoaqg?Yr7PVonWwa1H$Zo7>#kIE4m+?Q?L1`~XtQVs`fg zq4t#q?zpk5^|Qhak#Cn>3BEheKDv4cAlSTGm4=l)qZ&<@ z8Zip8F!RjDIUwj}7!05QqvC#D7SL`nPjs};vl?Rbd1SPoztR(~{Iyna^S~UqMGzn5 zAps#Gu=8MK3J5xCA1ZR@2C^e(VUKB8Z))re;K|V3yMf}&l>!}^^Xv`Go1pf!S%tW! zgCQbT+Z>rO{mrYTcis(O-%e6wPf*1Uc#zlhvsq$6WeNu7@iGGMp6SeTY5Y56z$B>G zD%Xq|`=Ogjz&Mi&(Nt+Y!wk6ocT$jMM+Hp%A-qT_v!d-XC1&`wbGiSTQ7?MPfgy@D z(IOH?gPD{_BT>vvhVQ?#0M{$G4)J%;^j;K^T!cE{8l2MZu89T9h~6Wr8aE5;rSYZW#r+I<`EoGhj|F#3M)o@W}9?(hpN1ps`S`u{`?W`&}EjGX50#rbBlPOnu z`q=M|<0f+=%qt)+&1b&SZ3m_<9JDmmn(r>`+auB5;jXm}C-DIhxb7-6fQMYPMp-C$ zvb5ioBt@!}a8m)A5j`V>g^WfsQtmqqNE$z9d^&a)w}Ai!$dwnC!a<6BRLa~zLBLMR z+KEUTLmdU1JLEw`!N?VW6aUG=2^Fw3)YKRirTw&NXR2nT2I%KK*5otWYsXeCy{-nM zbJ%V=jM>LyLIM;5cSY$-FLr&T1eo)HGL{4cD+8?zA^o!-^ktD%V?ivl(B1xqLSO9u zy}4LBl_NrQ3{Hd@>0A-h4iVGdxa;c(pjCFA?LB4mFq?XcP>LCA3P>JL{YyiR)P!-( z`27526wrT%1gKs&l5=SwGLMu@mF+Mhq5W>*NY(d(y@H~fD)rg{qw3}{JE9&#Z3ti->WY=T6`RW(H zP4&bS1Qw2!Lxp0xx*^oFO8(Ca0MMi|-{_BT-iVCIUn-mB^>6rTuD|{ozVI(!;D_J; zJ|OYDOhRvxO%)mQv(&~;4{e#M|GW;e^LyyKd?~&qDTg)s<}bkW(o7c1OjUhab7`hd zpFkIfdGk-bf?xZEH_>f-_`xVbNa8p`S}82c;~QW94u9}RA7{(P?FL|oBCw1Dv~G@K zh1q00vXhh8R_? zl4)<@?z`{ioxl8cR;^lvQW0b0BM2erU(iRbR^uN&`wx8jlb`0m-UGN^j-VDAhD;Mf z;YAMsoG0-R&Ffc0XkBL6iY0vLLmy;pbb{ac@b6I^FM@QCmNOlIU8oJyB?AC7eO_tK zk%7w>bMyMOlxvd+p(&Oo@qM3>ks$^L2br2GK_Ed{6xv(q@9(F3-aLAG=izw{larGi zJaT|zM^8|$R0x8Ad^SfupQEj{g@Hu_bhLLcczTdMyZ3SQ&~e&Zx>&Sm8M}7wp*mH8 z#2e#94FCv*LYlQ8LeMq9XYut*`T2L>!@4`xP;+YpG9*k?-?cV&eo-tN_omJOh)G-m z>Pcih`ELRN>Y{*X*8l-Bnx1cwjq)uHJbHky{P7nE4;PV0R80X*0064t26WK?fLZrS z2!U1#VL>*N!EtS@BqpgO?msG;))YWqYzDyG06@KEgDAqX9i-5xs77yh2W!_{&WaU_ z$QM#rjzy^waA5y2_U${$;iIRRoGLZ#3obL1z-LCE;7D*R@LWX3!%n5av9UbYsFtgk zxZ5;8fM*M~Q-1gEVK*ckEP zX~JX2VQ9#J04g#-KtnrAUKD`i8IMcdI#WcApH)29o^`1wU>6$zXlBnSEJtJg|Lnba zkY!hO=KI^jIp$4yja2)M_P4oBTJSUTFo|%r4C7KNaNzHDePsBKQH7n z`1$1t_DvV)&5)s_S_>E+tuineQSUF&KTstMHMw!bos?E5Woe;9V=1Pw6tmpO$vXwp zK?bW#)#EG@PnZ37$^!tb1Y>_9St`{s6O$th4EC|-k%w8DZ$Mr~1QE`pe$K=~5Jld~ z?1={OZjvPh^?KdUp{1!;vy`XSiFmxmn?tLBJj+o<$J63x1uK<+E3UkpTCI4}Sd~P&F_C zs_0hv2`9BuP(SH9>`?&#yIP?20sz9|Ex9ZgTyOzzzTpOr9zDv(KK3yd<`xi26RLnD z$xv!-ur$uCTK@?NQABmyRz`Q6MQM1DMxGGV%8ZPUk!LvzvrAq=&*UslAK)dsw(-Zm z@he<%&RLXPOx|81)SB2jqH>*m2aocX?|DBT{qV;zu|Y*uOvkJ76X;??uX>hyR%Yls zbFKus3{i#prp=6Q-pb^*b3h6fW)E>>-vcZhegqoxkY=9JDE&IQVq%!I!wX(=0e|>M zf57Wr_d2wcEH2IiP%f7l9vb3@x8KfR{Kfy`%U{0PUz-RKGAKHZJwl>qA^@;H5yY<9 zQ@{DHxAUr3U&Dt#^bu~l=~fUCQiK@e{78j;fh(J1 za+%T5QHF*F=(;ZVRx2d!l!FHk zvfNx^c6P21;Yt z^8()S$8TlJi#L$!4vEOI!miY;a1vmL$mt zgA%xq_;8yqy!$ge@~!)!?VxQ62FvQYoEiYY>OJZT`C4mn))IsPrBZ|rB+ePqG$%__ z&*bA&7y)=R002+FFZ{r@1ZPv~wSZkax3Y8BHYPWWQm$4pIUG4U&qI3-a^C|FGCMox zz2jwg@;xf>Gw@n^z&I%AyVVl9Rv{?+z2S^OB?j9`$XhXaoIsMUbjD9r06+?XQ_kDo zB0!g5a0n(gqBm_J7#$<1^&zZO77B z_gEqsLJ;VHH1if#LI`Z`i(#qNqflR-82~^EfypzFiXf0=c^gQ1>BSeZW5*7@{rKGdCG^Jy^4FcXuj74jKlnSXNN`lP|L7=cMr&g;G zw>t=NTek7J&whdLe)r!CYQJ80FnKgoppb#a%D@MNav6pP7(f4f`X@)d7@t;b z*t(g_S@usKL938JNM`mw!jLk&EueHy0W)Kw*c$H`5IZOV`Fdcr~8K)+qRX-v$itO-;Yk=@VWWQgYxQic6IW&g!Z%t0JY4E!0WLjU~ideJWW>JiKBMcPT5Rmv*Un$2YzjRx~` zOEjAa<)BJ?IVNr=1??z!)HOP#0RSga-Pl}=nAn2KE*%)@SzoWb;Y!~4Th~zC6w%Qc zxiCnpJp%woCb}JcpS*QrPPfRn1=4D};|2wI>)B-i)(VWvy%vCTo{gXb+>+(~o9^Q) zAN&Fw>>%>U3kCO%z3}Anho`qd@HUT93o4a>Qn`$CImSSm=H!_rFPMwneXxE%Jn8(% zJ+bRQVTZ7|2I;_(0U1#s7@rvC{1=|f#!cf44-X@yWVw~_-~$hF|9yKnGBtzAz2?!% zS+Zi|+yesieugN5Qh=zGP?d&5_N_z>#B!g$3OFw4eK4AIpS2%`MJO7Yg<% z0sx4dsI2K9C{ypRP%3Mz&5=@*BpID{!g8ZSqtRY7BJAwCX5n%9kUYgczdSLBge59# z28XLus)GK3GL>3D?tI;6a%i_wl8z&Z9gB+{nvD)FHLGXNX$e4`VgLX(2P8r%oHITl zb%rnuc*#XC#@dAY?|*LUXTjMmxv;9i(%fi5GYK|~H)x4iQ0ujc$~UO*ltDD7xA7ihJc z^!4>IFfc-zIqrRUAG5Rb?AX48Br(EO`HH0EwQjLhbzSNX7}&qnwMS3|9IE0asHM~=)6fFAT}97NUA}^ z{SQ9G|NCeEi_d=cMo0yy5@b0-1itXBi)X=(&$u0TG0MOGE0Kg>>I(D49g@K_erAkClim26UL}8guCq`?J z`lo41yV+o=vB1pC3`s!M-%`6T>!v4(Uc}Num6oJ`Ng+iM_f%vwZ&P5 zMUpv-Azvf*x4!uAf&$Lj!m-wi0D{CB&)hLK!{QJ^km0aOpyGh(yQcZK4}Ov5JEmZ% zcjo_8008Vsu464DL@0lJYc0LLN)gkHg(S|%^NcLZPne*e5&%H4SGsH}Va>`}RO^d4 z`|Pcp^Std04A$wZ^YsZ*&49hJq5a@b;;i&=utaiPXvqh84de!_=4N4W*v>i1uK`=3ds+7=L zkt{Y4GmE&HVJLk$IlV?uPB8$WD_-Y}DMW)BJpYB~GBP~I-n|D{UT(9r zu;iTp(i~(#*^_Q93i>z$)MEzlJTH_|b3_oXIs=>_*?LA6*vd5ma7tP7q|Mf|x3YEX zRt5%!`QCTG&%*pNATe2n&>Ck<53TtGiTDZy+n)IQ-M_b9P)2Hnl9JpQgb-9KRiqFs zFD{_80x8IGKCt8&)yWCQw@%Qa#pVr@-0`JvLaq@`Ap?Oi9n_Wz*SzCu&b{;;g0diY zDNDdYjgQf4Hc2`$ zeSLkNg&-`lK+uKoVtEQruT&~Pb~NEanXi538+`lo--3n#LV}=-u*T1$I#nbYo_?=b z1*5E3+u?Y60DyvdkS9!T+Q6IM^ajSq$N8sEf0}!C--QT5v#gHU0Qa8@xpXRT*v zL?J{a)Z_*>>^z(Pu?bpfMqhuO{*h5yan97tF|WQGDh?lbn9-8t58m=R-ujwrsY*c- zw-9+w6qN~dNUN3diI4vyfBt9xioK3mt z;tTlgcl{Oz_8;W0|N3uPT3AM_GE#;Z<2|>1qG(SZSWo#8fOP%zogY@_J)7RHm z*eE458ch!DKg8^TDUij?zg3$eo6<`Hq5<<$f4|e#< zM{Z=_=YN7|$d%aM1#us1jO%9y0IW-5*Mat30A4B3fg%WeR~s}Yccf|R#~4pJ2Ef{% z)mjyP-9DqACmy!o(P*jT(J3Eh?o%5psX@bD`b6wacmAm|GihsG* zZRWHSVS9!F04op*fBJBGlLi2+Lnw*Mb7T-; zb3^~&002u1i_a_w;0lX0(G^3ELCkTjPe&yZ1x+CV>zrCBJK7#JVJ1cv2! zij6zY;_Q(veD}8R(O0UmIDHICAyjgVv@*G`(b zC93r?GByf19Gjk@ktEay`e-lD(U?BW)i1k%|MDAeni20|JCDfm8?-*5(M6`MG@C^&##er`i`iQ3=8-6FZ*I$c8QS4GtldVs82n z2Oqqf){#As#fUUR7GR6Rd(Yb3Af)EXt1jce|BpZ7qKjUH#n5iG2*Z$4sf2TmuiyF& z{?EJL&kug^Bfr*G_(TtZ&}Bc@<{rHmJ#zqn;tUZvK_K~^-+dPsTyOy&`Ot^?_Se7T zfv>Rci#g*zx3M`+<|pmwomK#VDAvHnY&&-=*SzX-I`I-hYtr11Bnf%u_p7slJa^=I zhh}@8G>wVl*wd~PL#b4vT&@y^C8Smep@};knvDjHMuRwxi90dITC@r%mn&E!Xg53L z?Hm=9eRn%edlHJ%5ddHn04P9GKfPbPXSd5JQ;0fTeZy6}=C@x(X)+*Fx$o2?u-$)O z+^24b-!t&meu5PS01k&FcSVwFK^R|H3gt%&w1}|FhTFgJLw@+tZ<8NvLtZ!w7t5B* zQw;#di$JQd0w<30V zjtC=Mo`P*r8z{5m?9FW3vVkodCMlIlWVzzN!NWYXcOS>5XE}Ck7R!l20AVc-hro~h zStSr*fDNP<3ycC}wTy@Yq*gvBNDWD|<;MXs18MGoxyJwjo+^Ogu>b&BFaSIg&=s!e zJ$~pi@HtBV08CC0Y}iOJI!w^t=kGAQi-Mo8{$YjB$m~oi6lH*5<3HJ_CTqm!CMfn#&2hG8Pe3p;VSc zCFRGgN};zwHkK@N*i4Ybh9ow$TQO;BPdYC8tONj*o^ZBE@}&?M<89@15a3(}!WOgG zUK~hBuK>Jj*A6yr*vx(RJ;c!?Q(!GREU!^5e>@$zr~2Sp|NEmTAZ|86do^BT%oEzc zj~_u_ow*4DO_t?_A~0US!?hS0AL8XNznH0`$Jo959&j3^HF;_?Y4GlUpVj+*+f5xW zMmF~$%Z_HJNoUp-iU0s007*naRAae?bdr&wK}ul+QgL+ZDD76v#N-$*&rn(r1tD3Q zlEfKN6cI%cnKc*;ff8s5Ce0B}Ql<>8fW`eweCzOkuU0NzrS*klPp1A*`bwemtpT4_q93Q8+IZ*k|&^aR5AYTG3YpF6@k|DU(9>(U*hQB3S&92$dI zDfoMV0085xcPr^BFr6&`0N4F@6hc-0z6c@6gacy`q4=4S!|a0`)kO8 zF=1_nlVD6vnpomaPL@iN*pMfgXA4R7m{zQ3^4bdIhzqoz%gQplBDf%=#<|4%G8Xfu z2*>c~5SL#1avpf#KKAZ8fH5J?djH8h%O10UeYydF^{@W^KAO!Y#+bD#*iQ!l(4+LO zwZPgOlPBm<^ZfJ9;RWYEpC8@vBObW#A;61ARjQt9+HAER_h$-&fHY|r06@=(z)G=e zKnoCtEiXEk@eO0l967|n=|iZ&J}$fJayrWmrj8tDbZCele)~JnN#jxG`D=|>(FU%#eaGw=e%e;)xi*y zp;cHOm4bjM2vI>m5CkkOHfVP`OpcGzZnanEcQQw(9aFAVky4V`3~3zNEN0XFKa(}I3yf}H{1jvOeg;_66sjKmzwd49%UB^W)KA#`| z_{V(V#+$sGfhu_b!1flfs|l4=Ua_BY4LLf(mKU7M;O0r%b8lXOzo*1 z2Z}t;$kUigt-@R0dIP`tuK&#QcJ0DpXeUjCP*f{@B(dRhpZfxT`IqnGfxGWTge6@5 zWY3RN8~|`@yCu#UaA_fYn&oIKdjo@*LYOoSY-eGSV!=q#4HKWLb{2hCm01q6_b=TbXM%2CTK@ zNs6(iu(}fjs*Ev`PBZnif4k1jFa{G7XU4r7cT<1y<-0*)IwTNm%vb)>B`r~>5b-S^fSFTU9AAf7Zqd>jm+p6;$B z$J&g+k$%qFvYE3tPck+rAOmlR4fth1-WJ$VO?aPx0lu7BoCxvGo zhTbMnMIowIC6}Nr*fhr^sTT-rClIGSMfTb=MceNFd1kxkE9aYYh5kVZ)jk*0Iuejn$uD;?*9=P`b{^egk$I`JWu6@&M z*!99~7}2H@DjJOjop!>&-~du8f^UC;zW>u{}U(+>ruEp6qxACSo-oV1b z5?}t}%^W&(#Opc~7bCl)Aw>tpiY`q~`ujUF%*c+djGeWOaA<&bmM}UtNi#`UY{n#s zArb+$)1p1UpUuM|zy0UE^qsh=@I2U6~jF?ANX57^ud21X>=&n2Z&o8 zK%=Bw^O;3&F^a|pC7hEmGC_UwHa4BLlUlV8kz1Cg53_u9FY`zC)0vwsS}WGuNMcdK ztgwbIe(6j3qd)osu6o5)l*He>00T?Gv z0sz<*AfQ)=Wjz2OjUYYT;k$qTO@4aQkD(<|nLrj=0al#;002TFl+T}{C|W7>owFF5 zKcTbjI0k@qMUzV)g+NG&v$n8f6r_ng0W0!}G(gtoLM~4W#)zR@F0o-^jO|-DvvK1j zm1-HGVQF!hBU95HJaCj_(~GoPDc1O*kmCv(u`ZdD0<=N~0Ym|!T7i;Ahapl3q>yCo z4tcYKZFaoftXb8CQtOV&pA`e(vDR01nKDXy7GMy|ymbpIh&Xa|hQ+BRrXD)XPrvsAP?9(P z@ozG+ZIIc8qbx5j(P%Wd@RFCYu(-gDpZ_8+e8Kr#am5v6os6&C^i}SE@P1zV%dcj5 ztcHn~862#$u(XV`f>ODJH5MHN1c9dAYI<{sNF#+L3IYNdLTVwgXs0OK5_UG{mVf>V zKls{R+Jkuh7YY9;=JwMlx{DPDZzHrM6*|SUUQKhR~%lON+}in{9I8DC>}PzCnBT z5U;uFCH(P!ehb@128l>9CdWF1b(SQDFZ}Dx{N?|7Klkmv2UV_NjZd<>{@Jo9u&h`+ z-rxv<5NdtYH*8^K`*!N1+ht$e~?dp;?wND^InuHt++)#s1md5m_vge4=% zQa|sXW#lF&O^fxgrtl$O^%?UtXte?c^cG7}`4Kqb{LlHWslpgRXQ=~L`{$u+oA)dN z08k#VcB;eR^GA5YZ@-pvuQ;0|O0YuWdNcsK9sgc8fZjD)0RZR)05}c+$XyN?q!Flj z!S_G;J%0Gl--M<_WvjG!dz#y!N!cBXu;46Vsk}nj?>a0!+WB`p17JPl!ZRPc#lLsZ zDfAgEQ#&W!%D_A*MKEBe7Eo{)GBM1cLnx;|2wH0MCSY)-dPtupUp2gi=RArHwy>%Qr|wo>wonZ5K8cGpSzK> zcWvjY>o4Wt%t0!(I*YAks`Wlbh9@}i&;jD*gnRFLfPIG^;ni<>C1Fi5Hax=e@-n;c zzmM(Pw{g~%ZT$H5+sSjsMHgJiP`!`ueCL}SJUY$AFTaq%{xY3*gTDFz?M?@44drsB z=s5Qx@RC3W7;>a_h!&J=6}cq2`&)PO?>FDh(TArYcWCK_674z~WH+Fn@QnBm0|0hy z1EQOtntVl=F$gqS(gA6B(FM=vm9M;(#f2uH`ON2-o1HBbkJs6b*wp`7^@{3+Fi@wq zX#<;{cMd^cALYJ2R1nb45*n>GX=W*vN|?OG+~Iv}t%m&G+upzp*Iz|l3X-f{?8gk8 zgC8!eqGCG8lu;Iw>|c3##uV58+AF#2 zEicE_EGZVZQjD)-02J$P9mfGK>um$OROPNNKwjt%N#lr`0lPoDn{R&VHtewkl?JQt zC(gXJ_5hSbNWAT?a4P`Si4)+}*ZKyGE1Ct}5rCCMxHucLbX60;IWIuG_W64(mBkZi zvcq_e)5_@ zDu7BkqFjl*Hh?o&n_-MYx`;f5I8NwvQcU9WXNvmDxikCu5kieS=e#vs5JH-D(Asg~ zOI}E+RAS%01039U1VkCEMHCeGUc~;C2LK9@nIMYD(hP(k3`5c+c}xn;<6!_e=fGr? zs#SjBHP*ADnp+> zTzDP>gLO=n`e2;<%B4$j?Ad??DlZ|H49Fo4-gB5+|L?6l{KE&K6@imPDj+c_O6n8e ziKi0)=(%scP_yJF1Cug5Hp1(E=@%IvALHhmZ{p57?)LY)n41;&&dZ9>pOC96z*0i3 zPGx+Y!EKwVjgL_o9w8`K&{7h2Qf3xrQBo3wnuVFeq^&t#dFe&`={w)T&aplQwIoYg zWX2(sW`1dr&wc(z-u)MU!=Zz-NFs20Eojn{w7E1Z#FiomOOOeu4l%g-EGD;|MR{x- zttC23m_G0j`|rPpYxuyS6g9BPg$-gYHdy!}$daF>R^R`hT6JeF$;|1Rj# z3jo-auqTS2_jBvU`OzvRBvCu!uFv1acRuwEvV+U0eDyp#6Z13ARFO#89S@Wz1^`Zw z5FZZ!m^HswskL#ySTDf%)Bpg-7qt#g+xK1(In}aa`?d}2IC~RALjwd+l}a|5^)*>9te2UvtMcmlotsM6hXCu3l%B|ygQWfLdPyM*mgqRi9KE39S_2u z8UTRsth^$}79zk1iBo|e3m6?ojgL_p9zj-Xh@eW^X_GC@VHW0Keiqux&}=~(7YqQ) zbFb$BfM*2&u%?bGo+D|H3Y3=AY90j8L6-q5$#aV-m{6T|w(@5`s;wS}lfr2nYhc_V zGK9|1+IjWXo#(Lskpt}BeXqA8S0VL!ohU3bJ2$(I(svpF0Ik%+Qf0Gmb{5g%grP(^HhnRfb1KXw5Yk z85v>s-9I5EXJ~Mk{{DWVAf#HYa>tKm;BtNTz~zmx&QtL`O+6}rrk;qLir@hT1rtwmL@BOf~U&*u?5Oy z=pSHg*G}pa;|xqrprR70RHo5v5x0_pHBq9~oa5l$pR!}a0Dt_BH}m>yuB3)Vm^RYJ z*xX=6#1C)(DeryX2l?_%x00m>rAk<%A2mn>Qjw<4cl;}Ls0}f`Z3mNEw-Z&$7?Th; z=Gb@l9kh<_hpdf4Vkp#`t@HMqS%<#<3OBszwfxC{`2%+BIEy50k*6`vIr{qsX)HIn z@y45Y&wKugyYAfWt!q>bmpVictP}|+Dge(+0Kg*1aVDm3pvo&>bv2hXIHxXLI|&| z;e0pEIY(|SUG0@D%Sb!1A9Zt*G)-4@N%GvQ&l_XFz>&kpn4eklVxy|GDp>by0RWs_ zDFmI&Ar&}C*6aq#2-0F*i zHURKwKtPX60Duw>o2P^kY~D1+S!ZuyWMqI!)sHoG+6hMvPI2_;EYnlRSZ*emLM7jw z=*$=1CJm`jQX;j&hT4Mx8m#G3J-1dC5gDVs3t(nb~C@CTX@Ck`U67zapm;aMvEZQUQzMwLV|)`ysO7< z8`HD&8c+hHqQ6#OBM#UN_Rd(0aoE^FW#m(Pc|ejI9Xgr7WynX94&G&VV%yo3&9u z2z$b{f69Rkydb1d0oKAJ`;RfVu*CMWCfK-Pg3-}YO68DEn)Z&6gVj$&in|#GtB~UYuTX|>94<= zn>wGPWAH4bEQL6xmF1MpHmFu{l`<+SA%;efVT21yp^w4$J?77!-uQL_E zktfa}3TtqaNfPI<#$YYDNFby^DFq0W(n#r$$|9s9O}djb;*10VbpMdx;+I~A)|wyu z;C2=k8bxPL7jwd{tH(=Ysfm)B{(*kx=jYHm@MrB4SePdoxSui#uwa$$U;N)WOP~ZJ zBO^>rA4LjZ+@F@e5zht+#%SJAZUL$N(X#nA`^| zA=SzZ-f@U8p8l>y*P768Fx%@8;8y3sJSyxHSCe)yQuv@|J(3-U73LOa*>dg$$3GP+dqzBuNLQ1B|r@C6P{G zY>u`PB_*Y-M7A&Et6#j8fB)9)Fy8@L2N`-xO5tbXtn&d~^xV&rcKp|YEXVs8%abH3 zg$P@rn4G1Z!UE5DF(#X#wcyIDuj1z}yM#OLxPwo9;?v}@MG}Jabi*#SH7l%ngjBw8 z5YAh+jZaV;8)JOqMn*SnK-5a;N`?7mQZP~sfw0UT-cNI8FE8FX!tedb?{Mwqmr&D= zl4}!SNmK7_`okaZ=Fk58J$&bzKLlAu==y5ML|Pnn)ycpJPZ<}gsDc8h4k8CPFt+6^ zMkY4V*H^=&9hy@InR?_wW{*4!Y10b~Nr82is1zY&NRlKB4%d0xe|jUo_xr!e*3FZ2 zk|tT2Qi>wVr2(doHu&dHe}<2L?Bm>f@BMx+2!+tqqSz9?Iuo3*_&@z9?&|_l?$ANx zM@E1!RDSeG<&2FE@wzv@nep*)e(?P}xb@a=d&F7Ri-Z}F($lI7Pi)@_e=0j1r}p}; zc6oiWKQLHh`;K#{4}|0{B@Ai^)GD}GbWgj2stSedeqDUeIY*kNtU>4BPFoX zp|!>uhb@>D>os+b7Xe)NRwo!E5TdZdw0_iJRX6Sl?C zYnY_!&JM7UOb+QC@I2Pa(FL z)FR3nSuG(WO=ckM>+=P2JH{rl7YWQv;k@wpa@kdT(kJ_1tpiCg1#oG5QL^sF@L+{A z&{~Ehqti(d!y^Qvqh#d@L8XKU`>~Nmgdw_8!7eXhmZqWIgrF#fa{s$T5lmKD6{}$D ziLUR=1el*p{CuXb@445bu9I6k^5iTSBe0qE#F&~a7*?_vz4CQo82PhMpvV$iG+^8* zpc(QM0|1v@b_u(8-_4;%4uVq%UFi|6^G8x|_u818BuT(^1(w8Vy=k({aP;sYg!bYP zE(aY1-Y&;E!cxi4+lw4$GH{0NJGXJgm6woZhWEbjeI%_69oGCT-8xlczkaI;Z0|;O z#*kx>QmrWUCRvJG85hVA#n-N&ohlt-grQWeQm&O4-7v<~)D(>)hai^R^H9px7oE+H zU1!tkw5W~tk-Ln;Q->MpAE2x?!a==Orsf=-PKPYZ*}QQB_dR$&3&yfxWQ?ilX`Hc) zjEsO-z;&MdiZVIVF$+T?tVu+6NX;lvGI4PAO60 z;XC$n%SUcy?tv-LWmGtXN!QNcKS3GdCx3`I$np%O1B7to#^OxErmdTK!|Pv%(t?kD z^bbzKII^F`XO& zeOvt4_94QSJU*z`J2Z`GWU%B}<{^9RG%~x;vCe6k?N|zD7wb7GF zovDGSSbr(KB6cyplBO+G0GC|)GG6hDE7^B&4(2KUt%+KMR!P(Zz46}8PEKRY_kz229?u;SNe9X#CzLHO;Y3jR$s+Yqq3B$0^ zS@5)UnFpW(oU!C4M)b~5KiiTsS=iQvqOb-OI4f|Ek|f*X3R1hO1>hvE+gWjvuDz|- z4e-0%Ij}~MWxZhdnN*lOMu8#ZiYvg0MgShmb?Gr5uR{Mx2vHDb6hhdiRs3od)YCWw z)6?_B?G6hI3vAi6k>SC9hKBkHOA-D3{R|Hea_HbOrl;mG)_@a8WT9KzqdC!aMgv^t zz~o+=#wcu-B1$1asqCNmP$P)Yfgo2B+6gWzMDv~rMnIPd@_2w0=N%(R9UMD?TV5t@ zEW-F03=X0y6;!2)3L+>~$jeo1rG#tE!_uO63c&hqhcO`RiU#lr3#aE^&%MqdfWSF$ zMvz%YV=*R-Bw;8B!yat_DbY%jo#6n#zVY*4M`(>u{i{?Y*GsoD#|5M$Nqnf#3UXHj z>eDkK3;uuh-ZRRs>patZb~xwUSUI5zg+LMv07Z(TNJ*puDT!2~tzZR*wxVUr-S$kk zSFfHm^J`|!n)x%cmRFD4qxQHR+O|Yx$)HFDMnzK0B1D1-u>e$|a@~B-IeYKTP~}-%t3<|Lec<^sipP2?)Y6N!ubb0LHKDG`k-EJUeXG zf)GHim(tiJ3~suFa$g@|5Mt^JG#6%=o!G<7!95UHJZ(@(giV(?B+}V@>Ra^jqk8;&mlmA2z+%Z6N6mdFV2?@_LzXF zW5eV@k<@xEh_TIs+;-dh>Fw*~2S2!*Up(?e7QIIPS-&9KeEa~|`RecV{=-ZkIsn?O zYz0DjZ*ZwHXB36h8ib{gj|g%Bxl#_TG(n)rg%M#G`T!X(f(8=lK&fD*&)*8B4^44k z&xAh*g{I(8#QEwOI{nbozg6YJE}0C~pmD zz4fqA$^%(Jgbp-TYiv7)W|kah>-I$ThnEf?kta{~PdYqHmF65w*PvO!)rWCCgSehP zL{xz82*Nz7P{dZtSaMLWK&t_98z=3u&Wdoa9Y)iIasDOtXAXWkT;gb1OOmun5=|5Z znVV3@>O0LCYv*6}A3*D%lqEhMJ{3})5}i(sM@pqsSYdo6?^&}zlxkQwD$ zfJkY_ZE!Jfzv)JLddnn<;jjP87fF){A@i6d&CGm#&&U}ax>BK}&U}wEyF!;z==Buf z#!?ML&YxvjfduEMH|pqI#Nwd|ezNl*OSaBiZoP>cZ+SaE{o(!W`pJ(udSE}#KJg6K z-EtMF3W-V)jb@W-qfVHQI66DY+|oRwBclW&q?N>!bijt8Vdj?>an8}z+e^J(qcJx_ zsaPUcED&R9C%(!S>40XlNl__sp+uw-Ns3Y(TS*JXplygUnjkIk!~?sy=UWfZ+E<09 z1Rdg1pETQeb>hFQ5B)MO2n*67qy-zZW$QQ}{Llxf*BgBCi+{u1^qd#!3A`Pf(t0H* z?IZ&t0|10q86UW62gQMYdNyvLduR|5ge)vosn&hsudpmkA7OFo5IvFLPyhH2_=AtV zhtd8#!qf{M%Vp%d`)D+(v}^Os9(a+Xd!NJB=6urX+TQgeiU^eSP5@eP%Lm`jzx{Wg z=Y|`vLuo;rGysPnpxJEm-S6+@@BZ6==fMYmLA}=U^Q9%mK)OEpe+?wB{qX=Ct|{torOoy5#9Et14BNs{_!C{27TK+}u=k@)zU2(K4l3m}7){m8vm=G=?Y zA@B@J#&U3Cibg$VX=#ZqTgK?_DUvG|7#j;Im%Hie z>f+#mLsTj?lBC0~TpzP$MFb02g>Wv@m@yb(lB<)rkttElbXrX;yVN27TjM@41Z}ZGOPePgl69F1bu*$Nl z(mk(tSZnA!~Q zzJ3S)>EC{uH*ViTBn&305(S!evqiPqR9GEFH_%N z>m?bxD#*7?OiWO1EG#FTNt%$Rh9r(jO^UD%>l`LcNzxcc+be2k!eDfYgPlJ)kRjwt zPzYh*(lVoCgIuz03mZ0!k_!raZ|6_=`JKBFI)_U$5yp;H*K1*D>9=78gPVpK+&D-g zJZSA}_~Il9?8$r7J32#THgvvU$v+dqL7+9Z71OTOi5tz84P!MkW$W8@=6K{b6yC4X3rA{%P$;QbSg28{R5&tqlBl8iiTqY<)*hUw&Sin_sus92?7BoGp zLOGGOBV;W&{AR9I7siEg&VvBU`f!${ZAe5)k~o4uVA3ROvpP>j06T{-r&0Mo!O`J2 z&L~1E$L78%?xQ=pX>ReU=koghgc)xZdt=+SL{| zu>>-YtqUHx?{V(?<^!0cDYQx}`Vy-tw8uSQBxjdmYrz?GkRyp}K*Ho7gHP=BI@m8Z0kl6<9L400gQ3v ziv_CHD*N~ErM)=KNPmex`5!;U@85PaqdftUs}cknlL+Ek!XuA9#eezhf8g6Y@4?9u zn8LE7#qr`bA$?yiR)Gv~xx7Z@e1k49%pDQeL;>@Zlru{MWm<{mb8E*HgP`)QxAd zNd1~jR+SbQ6GPgh*xSR6H{8mOD=%Zuo;}=g$DPbhRlJ>?aTqDr1>Nfuxm~9v;I$ll z$(6lASeE7wv9y$lMs|9^GfhjWe0&~gh>DuL66Ep$g>s%!u|%<0pu4+=-rim|Y}i0g zZx_QOy%f7628VhncZKxy7EwAyXp0nzcGFU;FY?T;gDg(eK=dr{|I$e;=f4#rY2vfZ zQb6B^KJvXKoc5~jKKcK3833NS;apa2?Nn<01m7On zzzLbbeF|po@}gy%dUhqFg|!l&627j|2NBSzK76-ER0Zr*kf@ z1BN77jjEl3Yl02HYHw#7L^z#^g+>yoB|#YA@(HHV#x~oKX6Krd=M*Tr+9p>x>qY*P z7NjvWo8Cd8e;D1@hc1^fQb8_H&^H8Oj#x)fT?AQ&W)qW|RVUDer2oP=-#5zD`NztB zWD<)><74BH^K1x2pYuJ-^4LjPo)~+w6C9y5f!3!70GuI$dP)}n_nR;Pe8pZXm8m?o zLA1E>tv4{fc@syDOtE+GUJgwhMyU|3^Q5s`GglqKsO1W*Gbfm@<1Zi~9Vm&D2HjiY z?eDvp15*cRrY*K!axpJH^CFjTyMiMJ4)emVc5}tHD>=OX5S6K;pd=eEznJdf9-e*v zNy70GZ~5Sxabe6wqvH$@4D--~kMpAk?x)<>#UFn9cj@UXP_Hi{w5P}l8BncNaX`6P zqL|O4g(PjYNmE0r03}J2gl4NnAzvU21Ef^MCLxu6eQ0OV1_GnW$vmw}%+!nX+n*=(|qgO-{-IY=F1$Im_f-r z)<~~4AS@`i=JR)y{V zXDx`r0GlcGzi#^#eEze)&u`s!D?L3u9uU%=8nv{v#N&@Y&Od+YtK4(<156#B1(9C{ zZInD#0PMK8Pn;({-kB{ZX%m@KTztu9Zo26v@?pf!fBq1UKKe^Y1v)5@CI%e@NU4dF zgk_&vIu-v_BCMU)Jyn8yGLY+Z66|wyZbc>_>ZAo#;imWP;FEv!L1I(G(ZbOth%{jk z5(F9@1Vm9pJ{O{cfLtyl%tb^w|L<$|Ug3}m65Gbw6l;^ry~8exaz$a07oVHwFaP(i zbN`*cgrpm6h_KS{V#2P7Y{K~m1_%o#g`B46(hXequ^YMkZI>g^K*e|sfb)g{aPs++3bdAlp+aeiH5Oxii=x-e zv1gS0AA6qKHDJ3nU^*6AF9(RQCcd-?=e0OG_tn^xTof`g+Rw)EAvTVW5Cjq_70qUg zsmVE}CTBT1J43Bn_ZX4QEO$GfZ*_5@6JKcMEtHi;O z+F4sb+HoWj=fLxB*W5pm&Dlx}Btb?{>V~dfg8m^?xfdHos35{5ZIb39uD%3IHKgdDPL6& zw^EigZGv!&j1BW!x7|X%P~f|F{(yrAyntCQ*F(GArrl^DRPHn|40+m{hfA{;)0*zy z9;W7w5|ncUxjZ&+*?!{=_U+ljma8sera8;*iC@vzH%vhf(U?8T)Z$U}pymy4zYb9r zEH2J7yrrMn`V2u)^7=PzXLQRTPe1)M-~86sdCz;_#pX>LX|-$EEZ|Z>K($_@Z4y+d zDFhKJ2>hd9QbH}!VT4T+oJ~k#OBh6iT6s@+Kv_wUhD1q@%FzZ7-v1B}{_BrnGDSrF zIGe7Wm(>ZsI0ma<^@|V9tbEyI3 za8{$FLqMK$qx=u=o?^c%NAN~!;#4uVqyf)tXDWVaR4)a zn9-h)KmW5o;txJ@3+2e7(gjdpouJ(`JpRZNeDVMJ2kyM<0a~dBSy(o|mSUCS@#|sMKpr7|((0$iFv#X_@5Qmf;JV^p~pS9FL_6L$5Gh7lqvV{!$YR8XDI@_!31 zUFG6*>TparE(i%;7#GH?1^`%p0EpACUZ3bkQ4~?g=UJGaMJRO*9u; zROcG#;fP9O30oHQZ0@FitW16=WWGMj(C`3Kr4;fhV;jnB*zhKf&d%`cv%7F2rCcu3 zN@9BYdniU4p(Kloi%ic=GuYQpKFVR7AkaZaPnSY5he=W|`Y61|ZaxT5MqrwTf+?~4 z=li+)oA)uhdynt4(`8%=LWZjX6v-N~9>+=6;Ax&FYt*^z@_R`q!8xS#R$)^4q+cq- zrY#%!z0{1_$UG z7^JIzfa!$=;&zHdVCpe5QwONdOh9Xn+ira`|KYR0#~Zheqihr7EHc!jiDL4|Jm0we z4!-=QZ}aT#y(m#6P#TN$y|hmH_Z9-TywDxsnF^$uLf;04$1h=M!$lN(dWe$>^@T$$ zE=)0Xcpuf-DX3SGLEwWMrBKTEKPhLq_S$Rslh1#S54`^t3dIPeEGUaYF*i5IefR#D zFMa8&Jo?Dv%ui1vbXV5zFTK6esqalr@A}X8!XX#VZd6$gJI>BUIVBfHX-d^tENT(1FO*PqIcWmf=e5YBp5g~wn>s*a_j6&j0eXqxl1=l^)^mz^_A zAW+MK#eUwG6@kxueH;_7xaDi`K#ZSz|9j>%3K{YxT)!*NEW)23LS{m{Mlrw8qR~3Q z^z0&=H;*$sJV+F3x_gQgOCjY_jzfoza3~WJ^nL6)yL^Ml_EnK-4>)U4LStJAE;Wz@ zxG;b)K<6TFcN=)nN(360q{t|bX|z@t0jn3ZJ9b|?yUFlz=1#6=1XvHa**30eAxTM{ zBVAlX_V=N?%cxQpDk?yb!$vt&R~b|7#m!B7%fMFZ*P4*%OoZAwv+~Z_{p)}>R$Kr9 zE{s>vI40kfFKhgCN{0GbevV%9MqMQ(?Pi@cNkD4f-M*zI3ZrF zu`s>J8@6A>Tx*W;OE)qxzn9T1Lqt)YzL9Pkl^ENGBL^m#pR;V;umznHlt)TDckp@M zdHGw(l@(~bh+JH!5Jk){Ru~!TV`RfyIWjdxquoMjMWa!tP%2R>m9W;*Xx3P&Rk6Z* zZrj9Wpov9d$>k!fg*Z-8RuY;JooJ@^O!I>u+|MuXej4fuZTm1LMml|h!p(1De{*^j z1(8+kl@?fIy(pV$lP`qa{LY(s{p(-PV-G*Zy$}3|BsHLNKJiB`gGI)*5fnfP(j*It zWk7z*7RnPs zQ7AkuS_o>j7Q1#m!?(Wquk8HSyO=mQiHTEC<&3I+K3A&OX?X|%TKgh^!+HP!AOJ~3 zK~z>BX@QiXk$&Fv=4;u!d7S-w_Vds~53?{=$E6A(Pj`OgX&g?k!NWPDp!#P~vM^I+ zX|Yb1{L($pvR-Gwoe)=C%@&dlL?Ce_jBP6OzT0l#`CW&2>fys+ zOJFn#wf0)+1iJ^P+;VWQAV~6Lr##|bQ#!o?i4Km(w^|W zUFN0eTm}PJ|8)lda7NOqv{{^7qFrsBpA3Lg*w{+BqBmrXXNh%K6EFFtSb?=-1q498 zjC+tgZtyEQLWd&2VQ4i|rjE?hsJEyr)!3Rj1!x`8-`_)_5YgRTX7b21M<*A24?HTP z?2DCWv|~|hvKAh|**3%ma=w?|1O^u>Z;dFkCOa)NEeg*fz_??DsChXPV0n_{L1r2O z79|YUB)Hk5P^e(z8ga85)jx#Gec0KnK5I#67G#a3>;_1z?K z%$L4&JNx%e02&qKyt=XliS@CsbVw26G_;-dhyOqyy_+_Z>+7X=bd0{CVT9DwO-yyM zicJl1rN+|Hd6uRpP$Z&%mqq=_L;nlu-uX;$YrwD)N$OW7eV z18@nlSi~w%mF~^udGqzx@%hhwjvL?l7P`xMUxiBz4#BvQyX+Y40G5&Wf{xU=-fp(o1fmexJz-qQhrhhn9ZnsdGrz`P?V}Y$pN;+$!c*Cz%j9-vi#cmqt@vm}lk~k!y5aDFz zR?%vE7JxlB*JWoKt+hy(VuXNp(_8(v>X>E|S?j_WSA$F8W|LDVTm*-Vk?W@ zU7%6HkYsqP!Z?RowR}5sd7=7$VO$umj-e36|MjIk&?G{7I+>6PAqA~g%hRFL^cY*9 zQ_+LZbT2tpw0oJWvD5Rn>(6dG`(Ccz<= zUvqW3FQr5vPHKU)F0wk##ri|nS7jAQjcv7Atk)RcIEaW0`I4gClc!#<;IMS}b)j;O z*fkj(>t|?WfFP$yjiFd7Q7Yuw_2iS33VAke7zXDM2%=n$La|7_-XMq~qFjzfy-u3M zC?U~G;hdvfEMScxZnypKX@znQ;XqqSQ5R52Kt9c}|EWXl{O{l6@$WrK`)K0r{j5TZ z0G#lBa`IGEMRA7r^K@UwzpoG}#=TT zn}>4zFMsh#{-;0t12*;t1WA>g)+iaWw3KkqeUI{g{GWf#m%p@=Mm0r>Jk~0N3ou5k zsvb+6>{QG;mXiU9h|QN>!}hD*$oQ76SS;2064j*{j!x|5@cw6M%pC?CD$0R`Vow*4 zqP69si#GBnpZhd_@#lZe^>2Iwxk#ghL@G(OQsw6lKFk;Y>)-QF|8zUMcRfp*03txE z2F`>n%64eaB_&d2t^<{_%qx*moFbG(v?qC$VXa zkm@|2pWpDfI2HIJyfcD8-~_be2HP&*$n|f%5=Rqj*0unwt&F-=tum*vAFunlkOC;$T9qJJ;Mxf1RR-i}YQ& zfy-~Wg7NL+xSYgDi_0wfaLy<4C!I~V)^;)bV^@9KsU!;LbxynxoFqyW2cOu(#M2YB zC#!zXGwwLoeLew=YejIi4py-Mj=#pwWPONZS^%!F9^+v-Zxi<4H{Y~SSbqCrp!ehoEq`}%6y#r-F_KDvmpD*&YuY8+5dk!MV zEsME1EJDewsv*2xmovVHRQiP0O8*|K4@u`7Dic35_6(~%%N14nUo-(XMB8&zMd-2?|y-S!9I$GE!?&9`@G@W*Yp1O zznj^)X>{ml#%+|ABuNXY6{T_!DFp3SgEVg8tfGyjyHxhQ=V?k@ZO~mPVX*{6*t(`V z)#RxkJx0<@zkNgCB=N>F-8B|BnNnZ2FC;gZz*3a{<}|d#YMwNJ4b*dDt6JRH+kxp&-0~!`2pYh z*4<3cHE8g{SGa;l0oJ7DflOc;zWKf{gHNfkxdK2SYF2*Xsd}W%c>4Q|~XPKQk zOnr9V+jm7puqi4H&QNiA%!6|j;2j`@x{ID+_{sT zcihEePwe&@1ghYR98O|P7O<;hsi@*r*6)An+)Uz3>H$P&$Q2{5earRi*l`)PW}W-* z`x!63u%D!5Ji{UbKmD%;7f!gB7BlQgK}Bb)!GzXgYLcppZVhtQjZU4`#x5U2lr(5T>XMbr{WJn(cY>dbRg41<68Qbj8HY_%q9A1H=pu6m=cpZB zg4Dz9uCv#lC-h^n3dnHIAeC?X(mL|G6~P$pp^FQ0;j5wo$33fvG;?u2BbiU7(~j= z?|M5ozV!wkdHhlCz56FP6QD(L6-D<12M%I6DC{U0FM|utp_TSPhcUlq^0Q7U+5s}e z9<8za(Pzo^DYkcAipWcPdP~eL%u;k^oD-yNuQ8vr+w}GJu;a>Y9GyJM=;$yv-Skc# zeDG&%*|LfLp>8QX&x{ZOF{T z0!N;Gq!1%cfIrN^!Al`=%I&r z@WEdoT!A1cd%L65BiEuM;3WmlSYIg!Bj_np7#g8>Yy-KTJ_a{#B-hnTHEttQN4wdg zT3KXadXmP`Bd~OoOSbg!XMglLKKh||(3^Ld<|2WX=%9;(6Vu%Fy$AT(?RW9BpFD#x zf$!lzVgI)eilx$?QIV$Pd-~bD^%Aap-Sw2ZdZ;y;EY8nz=bP}eP|t#CT)b!>^pFfhaY*8JMOrXAOG|xOi#~) z%pX^%>9sPX5Ev{-$H>S4?|AzS3=a0O``KrB@`mxq;W)k37sg8h@*yD= zJhSTsp4q*ZfwAq!tjDtlKzXN!*i`5pE%B#+@o}uM+;_)gEKJnFmHf3ByM{CZ>Reyp zEBmIjI2*%2k-=>n*mm7zY`knUxt=^$37kuo6Pk{L%&8DGce;!V=dccpv4kQ(8pX`S z3=4;6v9;7&yLH%n=Oe}?9a1QyaLZu8iiq$k+hLQfak)0}KVhP|?%(aQ>qRF%Gt2Mc ztN-Wf44qhA4Q0O zZ+-K-9NIq#1X;CCtP0jo6KW~Ppg{Ou zG|`}Y#{h5p&|BGb%^0#rGT&TaX=#a4(9Pn^0>xs1VyS?0j-H+#l2)6A*+p`>0*4PD z#+aDPcU+FcAhjeagyi#ij7_Q6YQAqyX;c<$Xsu|rS|}+Alt#2IwhA*ZF7eoXyLkM8 zr@R+)CV*vJry8Tz&86*RP^Wbtf8*ppcvRn|4N6@_uD|{bT=}}~Odp-*?z``0Ze}6# zV0S1PVr-ir$dkHsTuDE9Yb1f9Y_u+Felt?}IR`?&LaceC@3?{RSAFs(+6&>_xd)^#W9 z<#i{gn4atXfa}+#Tg`mM;!J~lA;-0Eyqc@7x`Ilj!Y_aME1rG!MUuA3lK&8A935KZ zn*BnaB0+ksw*Z_{1-D~A2s+ygfR~~YF0%bI2lOgNw{PU) z>n~;F6`RQQ+u6!{7fI`|f|9_+SN+ z0O6!x4}$ZG0U)Gj5K1N1SW;jz>$DC&?)P7&l*SS10A7LUzDjYH&poA|Rm{yEPz1qG_QixLz2%by&02w1-f39%Z{rr;wL}-2@n1B zaS%mr(rPu9)%j171RaNIvC4=2l5Jaf+uPrY!|=l&{*Zlp4$^L=C{@I{03C?T9x&&r zl`2#0mYKJAzDzhcK;Oo3x&{a7-#CuSg~SfDQdFjAS(=@pzBos_z5okTTzuImfA+}_ z^E>Z*D`g$y+7)yt2*Mr?9y-d-@BEN|{_;+qcd zZf4WQQEX~FGe-sNd+`uIf9Mx{`72-Lk%yn8UTY%40xBqA+HKI`Yj8vE^q!||*}9n< zZoHmSDaUiqKhNWjJ;~By9Vv1snZuJQB~dO%9H*~5<@3B7#|B8Y>3HJ7=Q!|zX|8-Z;Z`CG*~duIRg3qH*B0>ti>4(fyN1k3j=Q@s~8s3TVcD?Vd{*fLIFxc-@1H z0c#SdTS(ftdJR{uLRTM2?*OV$K!p)PmhtjL!ebjkde&i*0ST)eiZ3wXE{qG~+>Lk7 zHUr?es6*Cg?VKY?VlN!1d^O#JtzzXc>TDocP$ieqO1WIkk znI()hnADIj6_8R91YQAGI!PQSG#eg_c;>n1xb)Jk^!4{*Y>RfgjY5#m7YG7PGj38S z=D|3+!VttsS6RBBCr z@$i#;`Csnf```Z&3-c9lAwm__ekPM<%UL0`&iXzLLQ1;3``NPfaxUL~6@$Yg)EYJB zm*$v0dYB^z_i*IUev*323(dI%9eO-3$OTB{7#Zp3=9_Nd;~)J9Z+yeGgrO#iBI@-T z3v;vVdGP?>yX$^--tm1795_gtI?VC|A=f>NuM9%@QX{CVnGC*~=Jy2G5#z)FDW#r} zH^1eLT(Wf=wQ8Nm9)Fx?cRz=eQKsnBB3~mZzGZ-xL9Ur4i(p_x)3}vZQH^ z(m;-X|380H7oZ+%Q|o`;5vt3&XO}HG zRS?l`2K?ln-F)NA_w(3KpC_&ghyx%8u^^BEN!mn7wG0?7vwpW$^FMx?XCL?#&4Y{3lqa^!d&QXmr%G_vo{1}rApd=*5F&)YTI=JO%wfoXy*6Gs zR>bejAF$OLO=k+ey>jz+s{fx^|1Kw;-nO_9h4c+{v1!vNgM)o2Es@fH_Ij!lY2EU>g<8>Q;&y@&r90iAkw78?@t;)TES(C3FxF zh5=e>Qj-$L1}Ox^Vv+gzSrC>e3XmP~HtUGv7Nt^&CtZc>{*_8U>A!M zO=#;5%Hsb%lLzD!6zJ1x4RCT9z){P6pefeH1cBu0Yp&#~tFB;nc7|u3d4@fE_F;|k z64X$42QI8ewR3oUmL*<|C{Uv|0@str|0vGqjeLNM{a% zsc^%!m+_~c{2(`6y_vqE*G`a96Y4IWf8h{!eeVHo|I&AO`sux315lnGE(n(A%vmq$ zCuAq__rZCg*u}<;V_bakWn8>%J3*LZerb-0BNI#<+QZc31l74o{}~cXm@oKsC{n^) zK)w*Mef#Bn^ml%n_uhIFn>KAk2}z^TA~A;j`wsAvpZ=8Z-StC$@!+pmT&N<1#5!|~ zaNRKh=DO#>N&BkWAjL72%T>X(OTfl#-*G9gzjg;8uq1^_^0K&%vCQx84_3i2R_ zB8Ik&GJ3^D3|}%zVW32=6oE-dO>zu?ySyJ{^R|BV%QI+s@ULZ8=G6!a1nhnId3N8k zi<#Y1u#ouv|MLO>$kvhqt+jU&T9^DAV=_BFx9Z&E4CnOp0Dv<8mJ#$y005`Ee|L%|QRM#=N-!{lD0ibvJ?J37ByDW7 z3H1u1S|gdAhIR|mIBN?qUbtcv0MG&9owxu1TmS$r006H^0H70WIp^pf=x1?h3Da&N zRIm;JShu0uwSj;!2}%oI|AvdX<(7Bx+_QVxx%0aiD-a?=iopB7iW6Dx3)SS}D1O9&MZJ4o9xN2exOT9~KZXhLQ)sUm-AVpWl#pBi0M63;`+ZhvU!AjQn_Rc$ z_rLHiKKq5=VsIqDni`?XlXk2Dh0PLtd&2$y)BwQAlP4{`u$plS9hRuo1W!J(mpkrw zfS=v}47Eu?x}vYvTjJ(ElX0;dH?1KPqsH{IjCjPDp{cq$b67REaz5OuW(}lCLfRVD--h;LMrtwcFHcEsjjhGBdrv!crAuQj8Ngt4>Pc7fR!l@Ebv(As3><5GMu3 z8E*@k2?!D=&`wrF^Rnmjc+daK#jHE!{%sBD0AvV34oaCmKu-@*xd#zuIzi50n@!@m zIjAi`y$Y=+B5ivBz?wD848M1PL-OiQk}m)N7XW|@0Kgdo0KUR)kYRw0V*tW@fh7BS z^$qG&`F%dw3A|&#GB`NQZMVILp1vYq|N7TCuy#LbK5T{r|J~o6zYh&dJQ{?=25gKm!dA zv_Yc{r<*;~oE~q;8FCEmaw#pByWEf{>4$AUgmHA<_CQD?|;sjGnesX4v;8M z5{98u8`iGc-(A_UIQyV{?*PN=H}TLzd%1t}cBJ$e85`yNrPGX!Uu0tR0#U63ZAA?) zKm-auu=q+c*x$?Ehj;OZzxPd^`ov=l4Gp0D6j7v^onPeQ#S6Ur@@xF$$ItPL*Waa4 z4?*}Kq_abewd?X;-r0YIW+TSh7^xJxZ9CO| zcJ}~)+wk{|BkhDuRN6=D1=eiM^RNHcKjpJu+y$yi;Q3f%iLG|_UN;c{kk+-7NGS+) zh(RFy9I;I?KOb@M?eo0!!^507IKuf0qv%QmvFBRStd}U;t1HLw117bdwJ5qjY9}h2 z7T|*#D$#r25F2;iPtW>3de)W*iUF}TwAFf~l${E7ter-Wyh>tkR_MLF9{@lJfwYe9 zZjq!ypJUG-c{h1oor@_=It`!lo5EMu0X6rg?`006GMrP%6MkA1i&xWTB9UQZJd(0HiXA zz{grcT&tj~73|_7wmc7wI>gN`CV)W@FSS7+ug}802LRj~pL+nn-2(tDAK&B-;uzuk z1fEYAhR%K~QPsEY%|lp}C(*iz3PL{nxnE=7zQ;Ix@HjvG;d2lxXIr)`2ok^C1O5Ol z0LyPr;Q2nrXqRN&0R2u$iRb(DuN|P3ifEV?5R>Z*=({h^x@|)YZdpfZT`xw)ohnSL z)gqV6I%=U(NCm#S?vW9ujHE&zb#iMp_DmQDk(Y}h!+ zBac4B@bEh3=gRDV_Xy|DjiPmg>;gkfM-xFUABUR_0Ib+Au5ekn-uLf@7J$w;clD39 zmFs1dPk-f6{``OZT{dsaVQ7&_2ZSv{Yz@lST*1(K9{|9WKfm(c&9eO_j?Ge4%cNPD zvz$6P!7tuCzdB!9~D+&+;ghl^`jlnM8}4!9wV0~8aX zK0J*mr0|LXnf?NO8`dzibv=bOy%YwE2oF3j0m2eT9NSjth83_%-&wjKSeo9-HN z!~3^c8au!U>Gn05v@7gQviWSYph>J(Z+5f^Z zPQH5)$`(Ny8%JGA{@ii^z*>v%d01D zuYTzX{`8-Jg9q*(L^l?Yu^~_a^+v?;(---x?|hH{{Jj^M99u-GJUU7eL=h+Vx73b+ zm5C;fBAw2XPG{M%YY*GEZ)bRT7-J$PCdavW@jRC=^7E2ohi9rdnxhxyj z4e{_Jd-$Di{}#`D@+o>t1w7#)l*h#QMGhW5%9{rc@!jwKki&;hVU5DXD-@sY#|Z#1 zcoO2Ufu9a|=;1x=+q(;?;K<=)95`^4X5AtPP@W=+T1b(!%ZL@@af<+e>*mKFD*#~S zA2$eP$d+RM?9ac(xBlSMl==iwTum%24ao4O0RYPb2-!)Jtxe7z>yz?JgjzDQQ0L;M zSq{B-o{MMZIR4%xMgTTJ$-Xbl)2M`?rK1OH?SkvrxC)`x$$Au5uFpi!6eV2MxLxfp zW)T^mOg@93^BCONPkyME!HsJPda{U|?~>}kos&VwR!(&R2_V#R#>`bK`|3L1zX1Rs zh!oRjXF2}rQAXdsh@OpI^2$m5&O~8P3 z8c{4^OGUg=4Q{Xe7`y|`8ZR4jud5Qh+9snVcGKVqB?N(ZM z#Y>Xg?Y|PoI;mo7aye()r>}PMC#ti?T7bo3x`#6XcXb)|=V|8!&d~XM;Mi8XaY}#}`J9qA6 z^OkKC3V9Y5<~V)k6sOM|XL4eUMy&$IU~vM0LMnvk5|p*;`q(tQmM?wbGyMMVeT&Wa zZ6pXX#BoHqQe|X(oL{{07C-*k&w1g6H<+Ja01YDOUJpr7B(BJq@8W~V5XUWsH?8II zC-yNoILP$G1n<1_9uwo!9mQ=S4Mq!;OeJ4i9%9}|;{Rb?o?0GY##(>8;)kyGpH=sa zSW=s<^P}&-!}^WudFC@a3G#tskSTK$=kvAH$OY24=N7jrNGTX7L2*wnTelB$eyqaa z?z0>^Ji^p;jb_8ps8ngy8-(R5L>gM56AkOq3rRLf$7E8T>pRY55b1z)Hbsz86#7c! zN@+?1y<~ebq>34&=b-`#N}=1iP;3zbLM1x0+IH;$UR$A`>m~TseNW2w9bg#?p7fX* zpW*yFXP7%Ng`TY=!sIOSRLAH3qcvxRW8q2R)~_(mX~bHrHH2Zjl>A={z_@3j_Womt z)z+iH0q1m%V6+yX4VUK{RGTBLtJYb!wwJ+y9(*Mz1RkoVNH&+@(#RMS6I0Y{4y<#m zK9RhxT^49d?HnyIvD5vCU7}CmgC{XbjG{aRQX=yLS}`V0w27h^Vspzx0I!$$XxSA@ zwQtv0gtb5f%@Au_5Lbx9DqimZHkBjxQ;^DHQUNv?F(5i#)=ZUQg z);pDEWmohK%A2>zi0cQK)>^bNC@HB`EBGmAqqiyuAeOvrg%sFE11XE-iv^0q8T^8x z7KhYzNPeJ*@)h|YPi!M6L}d(8wUvdP6>Zi}QSx($TFA`AJZJV_;J_=#7&$Tp^%O$& zfl*i;IWe2IP1T1rW>>RGYag23lv*K>!lL6k8c8~r;*(E*igg>-asK=n_8&MxeX)-4 za-h1#srz|bZ>eY|JklFBk?ZRt)tjTZW{^T(52;KVZ3XpOjmhyT7U$=Q=H?+RQ_O|@ z!JmASKmP46v3X4%bOmV)f%2)>4DY;qh=2G0eV3m<|2B)4>mW;sP*Y;(*PXAm0f{c# zzcuUEvU$@M_UwL;^~39lwC3FT(;Pc?giDvsGe13vO#2`m9ay&_tWZucOKP^>zmZQq z`53?R&9Cz-Pwb<=zYm0f|{j<#()M7KStwF$VS5QtlRKTB5>H!nAR5rj%c?4-6 z>l>se9rZYH)`PLu7#$-Jc*4Uo+lexhj4k zI;{y;2XgMz%BH-rIh({^Rx0Y%7MCuLu`oYFb;A&A2Kp&x(*#N&JfCe_H&H6)85^Bq zVZKhQ86ya~#;9E_H}0&kNsCfwA#rpP);c#3&mx8BRKBegn6!syJxnV`3jsvf`1U8p z%UT<*IByNo7%&EHLWt^6cf~03B}A?dnaLph6h?aBxjidF!r~mZT7jlr0u{v7=GQ%d z;NErbx{CmSt1RlIdTOo4_dTMPq28Ql-G(gx>R~wy>X@)sQsBWUOXH;oBaaXtzqf!*wdl|H zBC2J)lq8Ir^!N6X%A{GWR}j)tZ`H|UGWbFgSW6y7_53ug$(VOvJi>w3j?T`4frtbe=^lumhn^ntLxU9h2PpIxDfAUd7xJXD8OoJ1lhZR?9-qWELZb3C zS--_Y4-N8X|MD9={rE02Mx&zzkPvFgxijPZ^vAFAo$q{)v!}<9DhH%pU~5DosOQGA zEm&!-!CDE{lF8(_@4oxkz54;SZQVgSon>xrhI8jnapL4LMn*=GXD%_ZqyB1bU6ZbE zlFIlz{Ll`*_La}``@j3!Y~H*Dw86wJs`VP<6EnQ|_J021AHL5kuf9pSTn8HrkYxr%7@>QMX$sa=7}u^9&#YqMGLQ=Z<5AA(Q(y`<@!c z%0}WEU;z)KlWLvl4m{sqkh%1Jk_uU8{FeOPg;=^T>3PK3&}ud@D$8Ou+LD zUH~2_EAjFfAcIQAyWM*mMe(w~uROIZnf6nG+kTQa=Kij7GA>xONm`Ml?AXq^qt;+8 zF5$4wAEkR(;?DE$Oq5mULwkQWT|cwz{U-C#CRzn1(oQg48X9voMh=WJesGlP)NXp1q1IJRBu%_UOeT653d3ahl$ zn3)2lTs)-^1c67aqt4zGMH(Hu!p4=Nz#o3X{-Fa8T^bi{%6$}C=H~0PS|iNQRTv&# z%Rpa=l$2m1hKKqoq*F{z&oMJwVdioLYXzQ2yR+JcXc2XaFYP@?;9*-Dt1UJLJd5@` zyp)en3L_L2ORNntF2BJRh z6#tu$3x25Me`fl5eG5<|ObC!v=4(t(%#hxw=-rsdD99Hx)LTu$NDxOMUdkiodl;j!NOHm_ zC45BPQkz`l?EXs}c;Psg4v#^c1(QXk0<_huZtmBAX7A^jUz_Holmw9ob(x3_8}DP^ zzK1E6vYb78mP7lG(P(LxV5ia$>#pP_>5tcdPF6~;Kzhwu3TxM)@)>%E2kGtaNBJJD zC}L{rG8fLBp;>D{RKqOJuyG*6w}0!ieDmwiuwhMxw5{V?A8kD*X6AY2^>_K3zy1O5 zy?c^s*{YO`C@?#_;N^Z*cn5d7{w6 z^Rpe5^E>4r)W%?KL^>1j_22pp{`gP+kZs#G6Qn#YPtWp$AN-jA{onrIR2H@CH?<$% z3W>By&#wg~QfMuBXR0b-u^Nb$3 z$i;Uruy}477F!TIm!A%pAnur%cGWY?TAR2g_(;`m*%2Kr2^|}Zu`7~)mVp3wQrywL zC#^M7O46BtbUH;}-&%6{EVWvh%a>=VRYP>^qqO(P)jzdKg~l3eY^at)qR3DWTU4t9 ztncq7mr0?GCSS;LUnWgDJ5M^DVRmMbW-D?)h>e|Cujeg|rER+hSjP&`Ew?BF7uqlM_(9H-fSK2fus=x@8ACS#t*}i=z zn>O9g)~#E~Wpj*!~|E>*LDT0*ZzxuQPl5c+N>pZY$FWDfA!LV-a zecZQc1O5Gd{OkYW->|sQfRDV7@-O$ymy7s$*jAdKet$nwD%78Rl^uI}$Q2YuT9gE1 zx?BN-;igvzj7A8EmEv-x!G)@0_82W)>D&PWQli zbh?!69k#cuIJcGnY*#H;N+lI?i8dBv9M#_%mXd#K?*LoBt0l&c5u%hrYlH85WHM<6 z2l{wq?_P$7H)5^k^2`{A4j*D-Y!+)Fj6dQ4WJf4kB^j-tRjYHk)uL9e(W=%M?C&F6 z$Wkce(WXUTe~DZ^OR<qN`6adKp29KSz`ZyF!DBPA>6xeJkPs#-2(uwHc4!^C|Y;GV?f48VewOvfAZ}=;PEFO zv@^lGPw`gS$DM3#m&q8H^R-=v% z0&(gf9oMW;j?F0y%DiQoPDH~9Up{~Co%h^bGaq>s^A#>W8P8Yn3k5?|2CWSjhme7T-%zZ^j%td;+Bca+wsTPM+d>|M@4p^upUrPc5K=0E9qW zL98v(Q%Nv>H=mqcU{ErzqPR&q8XCUSjy&L5bqBfVWNgPj~iyW5JpjqYY8)J_@0hlK+oH$f1!6 zGTDHho+3{@^$9-psZXM0ntHuLPhXn3`5ESBs#MC2yX!1z&pXdU2ur=zVsvtjO0~tB zwSyR|@X~^GI!!9&qa=8~!dElQ&(|>8IXtY?jg`s#w>V=9VgtlULT^AxjOQVgM0g}@ zfMnW*79ph*64VKJY3-d?5pTERDdpZ@7(pCCT!Ur`8hLcCiY)b_f-J)GA(cTW0lq@` z0ap1?sX*9pF_9$coi$7Lz49IsaPPWzeFOl2)o63F(=ujki1I8tYM`WL@4nr9`q^hV zfBGW-%m4Imn4MX~3rc9D+v|j@Ac&4~+{dHpB{Nya5^V~qb2W;&EVXh49R&;z4gm&b zB=JIn`ecLAqthIC?KmgiItg_Rs*s@1aZ-s%X#Y}PsW9y#xNCoYMZ|EO9${_pJP!oK zQ47ykuJS4jg?yGL9)E(38;2PmpXTkKyhNo^bMr*{$#aeou|aswhZm%K^qvnvn%v+< zQpEzf!5*@G1=g%vOOVOn36FZM#>sPMn3|e!9<*_djI8m+&+Ow5f9G>Nv~`%QsFRT% z)@G&Cr%z?YI4enU}_gtj#poKhw)33yzz?z zm^k9}=~Em$a007SSSyJd5mw3$K;krx-2d;Y>VGFOaq~_|&-L2I4G=NgcHPh3y$@0< z^>X&iMc#eqAl1dXqiR@_{GM@)l4SwC>`E$cVu0P92&}NDLTH9J4)Ew>4^k?X$ObtV zlj3?K6#^wvuCH2a;#LSU^}+xCT?GQP>C_&WG_8f0AAR>N<`)+E{XhC5kA7l3r9OqV z0;xnNab21C+w0f>zTeCDQ-oSDG2i6m=nRW>5Pr_hT_rIhUbgln*V&Ji*TIID=C8tB zMZBW}mW#G#K|665tG@h7AmGYCgoxkBzZ-b_V7xG`%I=UMt;}M|;mQw>{5UYH@e*jL{aM!1n@_Cs1nX z47Jt}#hO^hPN24({NKnqdb{#Av841Sq(vBw=PQcEERQ|DmuH@Nnzd`!1CmA~jZh6z zX&>b!qMG_6zMrhL8I`_k2e9tp*Xo*9vrM_xWNK!X4I9={>dBD~Jo32|f#*}o=9!7k7i{WA$bq@;8%0kOfxA!rBsTi;+kiIR??DLoIQLL^qFCXTU2 zCT#)QorAY^=vNVRw#xxB+eSQ^5kyU>*D$RJlPRD|C1fUpRURsv2R{v73L9iF%^EC} zp;-q+V(p#8Gb`iGdrld*X}?H-8F}sa!kT-4&Bqh~SPcX)XdUDE0%0SfuuA{X0KfSg zzfO?y_`&yn!ufM!M3Kbv3WTBUvL9Kc((xfxKkn!NS6h4=P@8WuGd_pTwCG!(XP~E- zyiAi)87ebn#xG5C__gC4dhHC2i8|;sO8SXNl}Q8^yMksbJHm@M^9oWPVJpNBoE=ge zg&++NJoo?)J-7#734ZbV+nhan5gi+pOfQ=^Qus&-x|8@N7E$>knV}&HeS_rsd+1r) z>u7q#Jgs_@$?1I%>5VufO&NXU~ifwEzN?^3id)B6zt&_KvPfXQfi* z_=yvI>Qhe>84XgSkQgkHX%XorFTU_92i`k^l>R*eUMJs8)+jOo&H`w`Td$p?Qu{97 zUU-^c{nRejt?$A24BE6XR%5U?4HU5gTG~>L3={JWCgwvdo>Sd#2g`TJ8FnS(AOQld z!0^qg_{3^sXtg2br-^DY<;fXFk6&Wq=qS}o^DxnXSR#bip-A76+fA%NicYIVkn$6o zT}PL0LqQrN8Fz*-&2CHLIX`jKNeztAj!tUKW85|tM^8~3>8e<#O z>s4yi8m(5_o#Zx)G~UFdwq0z{7OJ(FMsoq9VW3{1x0EMeOyesFX~oc*9*V_0BbO$a zn_Hxz!{kgBXhTQ4!&sYW5GIaSkxqm%EW`pWoTCPQq9x#aNaYG3GB!(QhIa%A!0O4k z?fSf}fE{ayjAK9KBeaPyaS0iuKuJ75i!7wjehM9AuqusdR$N;^6fS`aEARPZkOO=K zg0k)hvT{;zPbl$Y3jlQGBneg5h?p3S@@*-!E4zQ;Lo@Hj8N_$oRQ7^9HFM_ZNX zZ>ugLkQEv0$6?_&8njf**rf@)K9ACUo5=<#G8P&$Rcf`6)B7**_6rA@JTVTDhwl}M z;t(xtN9EecWc;jLLcMPRLtJa^to@=8Y)J1w505|bC__U7jEszN_`MU%&(EWjPdXJ4 zMW$vl&1#JAIk)k#VNR#)-o^+E(Z( z7{2<%TZcc_Ac@j8hiZwyOlx?TX+b zy#TC7E?Z!5a1C3x-p~D8?q_&-7$Gbd&Y$Jb;e(t!b%fc=Q?4ZMrB(?z?A4P(oO-v# zVq;BtzS1@4liILim4;v01p?ewb3a+DWm{!TsDnWZY`L`7eN~# ziIrr&+~nePjp_L&%I|R%ZyCFLNmwAAB`mr?T0pF@QI%Ia^ThHb#;oY|7gtdC69&zP zeE&`bU15wSZpF}wSQwvU^27uekDMnODMQ7AkqG52Irk*-!R_}yzcQ&2!Z|1?B?tl^ zA=}BbAvQ6#o&3k9b3aa?mQ`9P?x3|~EmC@bMhS)T6$1k$)~{c~x;2CJ6!T73MJXDM z3S(oV965TNv9U24jWz)A5#NA1NozL~pnD%_Gf+K@iJ6(L(5N?Q4K?WtixhGh0?$Wz z3g3gxn}#SBQ_RjRGP_vC7|+=&xAh;A;nGQ6TNwumSfdjmW8+#!0)zBjD}a$sBS6VE zV<}0wqC~^#HtGVbx?aVV`d`8trw`CD*jPi@f@X*<6cDK_q&<*6GVNhifc67q!*^~b zwVG=QFbRNQ?9yXPT7^0>fiPEpU-zz?l>A=}0JxX{-(`cewbp{G0 zawbbSW0)N+^UljhIsA)LP*o6S@w^mqD@J)~P`IjRcS5*qon9jW{ScnJum)^|u^~ce zcI@27Bab}-!tnOnZ*%(e1#Bb$AA_XX3K7a%Mvb;Q>HGHrM4?D&-Fj>`M`7I{gKG!q zEoJbPq}dFapP%E*@#DnJ8iX|hnmqoeQA;xOhf{^H+r?)*8v`sL5FeaALtW@dQtg_n8h#a}Q!df8RDS4H4IPM2H;E-#70 zCPBPO{#nVn!?XNV`Dawi3w-vAkFaIiAelmd6tT12f)5BRFK3eoV_Yi^V3E|c;M~*# z<1-bk%&=N(+zlUTcO>Aw@_r;VeE#0iL}jXRq}_nvrX z*^J6W+|Tnp*ZGw^Zeyb4BN!bMYmL<)WCCj3iH~X}-5uvR;(3CU@6pp&U~sUHQmH_! zBQ9UQj1&Pv2*$=onVOnp|Ni$F8=Iol3b7`!P`#V?7M9LZi-$Fu#d4ii*q~l(vTn^F z*<6N9Mv(F)nQXvtb`3o}MKTj}OwKG)YlTUoE>>*?k;!zi#zLsUTK9jGB*4l#dr&Fy zJcS`3>}YISgh*IScY;9R%H-cJ?T<2PMYX05QG~75u#Fbv@{o%V=`{EONQum3K!N8= zLZzVAaJmA-5E-n{2+I|~={-ikZC)$)>>55=_$PAc13ocxjetyoZ6Q>EFcxE*K$B8W ziZ6WOb8OqTjTc{dm3Q_ZB8pWa0JKUU^lBnNLM&h4S`(x*0EEp3()T-P;8KEg2QM7! zD&2zESwh7cPb!pBL?%L;Cge3cKCzi+zW5}W-Ym8yIJN&0@4j+~*-HzcT{T*m6|}={ zkL&IVk-f%vUM*<24g%bM4Nv(*k-<|waa;!)4D|J|=ixo985&?@e1aoKj!>_ zLqe*gPuo>&g#}{;1Zl{mNcRnr8|=j|jg%uYY|OUo}|Y zC;9f5pW&;|e1dg-8T`QD`--p?GdWe}xfkEzr56u!@V&Fl&NLks))uO4&pROyv_+gW z7)>gdBb`pOVfa2aZQjJLox51Gb`5b9bN1|64jeeZ*>k5Um&-1|ZTFmiKt!~IY+vu^ zKB9=XuvZzIww;-3kAZM>e`4~bG~0J>WXqNobTI|4G49v* zxi{B&|MHs2zboY$Byr+)q8!L&v`ZdVx^Q%q>0Lsb&7{Z`vKXydT&yHa2DfJ1y_%)r zvj(LCbR2bF!&8oRBBUUSTBL&l+8B(9u~uWQV;6V*@wqb+wW~cB+i{JFz-!RIF3YDs z_b{LP>OS`DT}S`g48}GwM&Nl0YjtAH*G`b^RTF+AB&LI*8>jbeTxGvyG&)t_++4&f z2hVYOq(&@rSY$HhW*OMqdEYBUuG(P2((_o}qu=(SU-_J__*}|Wzb=JXHh$gT7hQkH zbleA&vtMk#Z{>R5buvyFFO6xmC{NEbckVK?ho_i1J4JJ50qTinh3$Gi;?9~o4w!Jy zUwD#CCWRCt8NWpN+#0ktgrTec+jhdX>OOOut6=T@%XnS75a20;5Ef%Ydi#p>_7*7? z^W+OTw2tv*fWbqFH04^Ig@rk))hg9$l~$`o*oygBIFQ(t%$cRV8K9WUQ0mFEcBqd+ zE=4Ns6UQ211g%!Y%0yy*+`PHs+-|!PD2WPutn$E9NGXwB?StAn zRv@uP#ICg#V_naE7Z9)#T)g?~ZRL5s6mKrOSCPye89*up#UfszfXw7Do`+P*v5Ddc z8-}#%Rj8Dq(S)c4%_f)-Pq}m6U>%5(Fd|kR*L&9u=5fmoh-G`@vhzcjD?q2aPXj>y za^rWC_s3th9{wQ#09`lf3``x0he1e zUPTlsS7-V8^3d$m9b? zN2WOX-Wg83eFG{rzd4+`Eb2|N67++}O`RN)n*4o?^b-no($!3mHqFWU~F_IX>Vy) z6y=QrC)Z&G{4xN5n*!Ycz*697jdZlqZjF;w0u>?bQorabO6yj~C@+N&f;euWJc+SR zExNC-L?*~ksZ=PJ%T8F+CRVCRa(lh=`J({Q}I*$-g$JTwV#j{Pbrk=;d#Q@vn7dtQga{-Lv(y2{qJ`W002lOF<}#= zC6^EA>CMyATcD>@KzWKV3~99@>g5*IdW%LqB8)YyR*NW%mRGQ?y)CS&J7Hhx%-6Vu z7br@_EJFi*3=Q>>PWdRDNTSh(g@rQHGjmK$&rxrN7%LIdPhLY_b>9_AVm;+_gOo%l zh4kI$9hOlm!o;!Ds?f&8Pgel}Zp|87$ws_^^&x!-0!Rmlo<3wIgP+MGy#Ol}Hjc1S zhz(olY6VlTVyiWXLWGV`!qUe5+k5ss0N}#{0G7ubE6*p_w!&4<%8$P2@ZAjncpu8Z zbWye?2B`wHse=mX>G%1{SH4J3&mgb7{3ZwAI|g_N(vF^qT$Y30Fkobt0vZ!L8nyI2 zip3(;Y84ZQw=DVkw#n|tw(|J1d+1-=!{S1nL;Fu~Wd9i!&(DG^ zA|mm@8F(MoVIY=^JR&r4TxQLh0UqA_Abov(oIih&qeq;zpDXG57_C8hE`jP)+<_nk zsXXL+2udXi13eT5OZ2WOkuT=R<#Pxln4XyB!r61oPK<-DQOX-O4CVROSDxY7Pdvoh zo(#T>Ne3R4N{f?+&-3P+NBPy}|Y^O>i4=-~&*rE{D=e~EYBeV6z4A7y5` zN)&;_$88?wt_+UatrzABN@_rDKIWC5o#y=cIgX#6;mKzoWaqA4)~wHw4qTEXlX1CXev;X9lY~=Ms4FM_<@-n>F-{?G**SlEL8Rq2 zoXT@d5akJ^u$^9iYe8$*S`vmaIu?8+`rlUoi=G6V5@d2Iip3mj*AC$M9>xk9)dsa{ zomNv*DL1Iqo5Z1B0t%NDA3wI~((<`#kSU)yj+mXV&}v0Qk*2@5hkQPT=ewT&VsD-x z6Ohhkn3%dux!OSM*g zE;cq!H$~j*|NqcpOmS}@@7C)>&X5g;I!0?UIgclwdXfho+{*FeC-_f)`+XYK2*?0F zAo08uTK{rMlC`#@tZuEPJU@^0eN-xij^aDkH?&%6HopcyC2y? zoNjXV!U*rac8u{em!XwK2K|W0o#y6tQf!1-5}8Y=%U)pFy=OPuwroP{n77_~i;EY= zzy??=6Wbe~cAu_oQ^80YEQ>wJd=G`eHRK2S$@Qk`=`T|1%M%11mBlLO&zxuU+z7T- zMXEX*2GczL@MeDNOHcFA_Volr6f=T2_BeBPoMXo?@WUUy%%MYP85^q*#XeR9?(Dq| zLS4ug=wP(#yNT70@D)+zxTVp z%TJ!$&kuj}GEsc(*VA!`P_C^>$GU5Jxd_o}4a9i9M_+$|&wb%(zWJ?R=h@GEivD6h zB-F@@7ccNP-}x^8;otu~r%#R$YbX5m@d(zJguR6Hu#v^$Gje>6v8mTNb!L>OpV`LV z$2PNT&oF(x8K=%AOs9ooHIT%t0)krM5h19y;N18;lXG=K;~`{_w0pFF({zBLtA)-+ z+&L-c72f6+l#ztBI$@>B%=t;CFHACbZkon)1!e0(2ZxtJSGh>r|_C8uf@) zGfDj0%%gib!0PKl8>HtWjHOzsbG|;7Xan?8C}jx(58**3pJr`3L#|k0(bF;L< z2q9BT&uE#5sbgpfgJXkQXE%&W#IdbK80&ttF!xoZ9Mtpuh6JRy!8C*%*@OYwL(&<9C2)y_57RbEL3|vL~+IM zODXY`*P*j@=-A5jQQhu@tldZBY~;MeD>g=XFBf~JoPYZ)~%yfk9q6eqa1ke zB=O}s1U(RvFejD{_|>Yw_IfPQR+>T$^qS zr%#@sF*6N7DXV$#{v2O?b}yg( zM2M>s&%h&Xol;{_Q zJqEys9b{jZ5`LZgUrEjLrR$kQ7)M7I2CZE?%+T5acJ02O{{CLVmf_slQBIsV+nGB;hSa9DGl z@t0T=kt+mz<6B?m&;Hwg#-k5Eg1{%nq7Y~kBBfw{et|##@Be51=CA*eD0G$Q_&P2T zAJrCstBxN_s^3-^&~?a428N3~@W>_}d1@28_YQO4)_(f>GX$POT7x0#(gt8@{;h0< zlZt9287XVtJ~_&fOY?*x*ZFy?++0tH@EE<6ObUA?1Ku5tmz-hQ+kn;K>~dGIb?J%6AI?uKJ%O zUy0$GlnSFQT7%Y>D6}roSXNm#A9#Pc8TTcGKuO1hio#X`%u6!a6g|Z(J-sFJxg5r7 zT2V+fsr*+e4WbZqY>4%W9-2Gl{_eEBrEPVWIC%(T@g!ujKK%nF)~@R#ol6t=DZ(&9 z2u0XvGCMcRrO`>M)h0@%u|hdHmo~Gt!w5*`ma^@G1w4faJl7r&EZK@mn>>GG(NUDB z?MDd^pcAoFwd^du>HGK93M^d=fQ}s{5|l_%0||Z_^8Jv_AqzQVDot!O(n_SZh^U2V zRu;B+ARRqI1oyA0A@=y9ao0|54)5#}gTRKaJLU*?^dvfYO;*6Itv0cuhjb4kOUI;lTRa6%+$mL7cY)8Ju!xDlqnVhdh?QJpL~$7eSROiHun?An3NY2 z8#s4NP#>OT% zcJvGjb4}O7zH0JyXQ1WQy8dBpoc@U?V%Bf!=d+)Bk_UI+PuME+>Mvg9)wfPFJzWQa zUv52WjTb1^tQq9lXP@E!XYak9L#j^`g+jyhtxIiqL4J(L~5~PaAf#*|bf9APDaY1(dI>%sgfrJ?xWN znNC@RUGYb?$--f~RDByv3oz2T0P0JkJnB z-+>h-w>hv~m9T518poHOg&PIGx$_CvZrtR9_a`{@>Jd(zKFW#bjxgSes5gUHAi|6! zHX8@990>en)-$)*<>vf4Mn;2P|K>?h;m0dd=}YfVcJt`aP>AWBbXsm=V& zJ9Oq(Sh+S&_s$ySLI>6@qLh{JlLje95|qaYED|ad$V!3IGIVN%uf#DoEJBR|X9d=n z;OFiiho`c03^LYM0-=t$rWv1T(rhNQ8g=40q9`+p!m_sBW_`WOdON2mT&3*a|5^U2 zruT!y7SRV3!#`Q?==4gm*#){;#^lsE0gF=F)>7NIv5v4TaA$6r58gY=g>yG4)-CAq zK$$NrL_=~>!^)~(CkP+}QmaaLq2$UNxpU`fuVrYJqP4`hKE=Nh z)sg~)MCv-CUPFvGiO0s6m>y?(W{Rm@yBHg9qT`reH|NTY>s+{SfimktzQRPq@!E4! z{HuTd6JCAk87AvByerU=VsT}Sk3YV^@89~A-@SE?^XG0;`Ro$5jEH27avfqNALH)g0@try$5~rV?uaksQ@;Ip!xNIIdp%?q7~Zz%&$BxLPU4N`>U(#& zeSMwTt6eVsd65(Q*tZ%003ZNKL_t)iZgc#(y_|S{57RR>qSzx9NEte9gYI~xgHsfS zwXS7$q0MTiz(g@#7@P~b0&*a{7!rNGDQs`;m;3GE48K_naQm+p_y2L*FkD7O0AnP1 zo>8n9n672v+8x&BR#=-`q*&}y+*yO3g~Ek<=oG4Y7t)5fKMZtysz@==vKl##PM4y@%=kouS{kFYCeJh4>lwXn z&f031vb13o$%*Pr3v}$KDg1*3MLhy6dM|K7qJ+je$Kp~(r)OAQ%h)|L$>ewqr38^y zM3Lmgb4QrFyTro$3TtcYq1dg&Y_|o>oJZJ77}oi)UTYqq^x*6JdJRE0Cc?`gAn1(6 z7bO_CtsUXld*9?pJQ@+}3xXS!?Q#$hrOdHqfvmLWKOmD_3p4Oj=>KlFZkEbil1)J)yz{O?@+-!D&idOaZkz}5ptJivx<1Eu8Wo;%KK zufI%M)BN(6zvTRpv>?$gWs{?{MUTP#47>0D# zQfsw1b@~)XkM3f-wp?&lNjGuPnH{&FQQ6ulLXzIAR2Fw%uLdl9%E+r zG*jba%k>+GElR+C!AWQFJ454I;N&t?A^DUXP(sPPYFYNw3 zlW^bZf9~oSI}} za+2f6j{|V++BH7;kId<$Qk&fuBce!}+GPiEt!IU1Ml8}(!L%YKZ`9SaU zq3)j;o%P%(=&Jqb4N)3V_SR4leE<8W`NsJTaxyT`PtF++}9IuV)W}w zSq@P=9V*uNs;H1g;c`o7wZrnl3i)!6a=t_7&MK?(E0o;=*D=tmKAZ$yA39s)z>aJ4 zc;6$V|L@d5u%=q;f%YL(p!>&hgpMSp%&HhBQBqZQnht9{MP62gvAj>^FCYE-z2EPX z)w*>dFAz#lZ$^x_QqnZ0R!@;qQkIr(mb13jAvkERXs~N$f@Zx&Bi6)P zQ)_9)8VSvM%+gYu`Gqx1VS!|@=S3xM=ftMpTbALOCDneAa&X(UR${f!scvwsZl9Dn}gbIzT;PG=2#9)YY?YyrcAcIO^$h3+H*=J90#TG1M7 z@a(h4*|T?sm6au~UcJiF{1QcB!C90}u#OE{t<*utC9XkIN7d_$@7;rHHW-_pVr*B7 z@yUdVi58ts#`UY0xqj&qy`@E>NR!BnQ_t?=U;e|7`I{fTz~w`i|=Oc@0hg4me#0R2D$zrFAF(u%36DGuyEzz=@#Ca=BrI{WtTWA@f9 z{>{Jrx4ie>d#o(XhuJeb3M@T-c5`1WFb#r-6eA*H;UnBPTb2(G01S13A|)vE9sHIf{;&aX$HJt)j>J&$I|KkI;lYtQ>FrCST+YduyMRw!07+){z<7<{J(1}J?PrRw`X%g2ODeD44SA_)9R>Crl< z{7V^FEkgLA=O8i0V9F{#Fs^c}d7SgpGFYD~h_#~CsxvlTr&&*eeuJ;ZQr0_kI~ko$ zUc~{nGJA#rr3Zej_u2n_EePj9T96i{MJUp|#5!9wuy3;i z%=8q~;}g{4h$yB~_?IlLtg*Pf#>!HcwbiV$oDBE6?|3zQ-+f>CK2p$E%U1yiQ2l~# z005d`#cBE<4q^SH%VYc(6Y(DXFIh2(0+2b-NRc8~d`Agldo9I)sYWGA zeAdHu)*xF)ngUT42or#N2Y6uz1@V&&0I)p(;KKg0cyJ{$(WqFFMjE9B2!qxFYoRO* zMeeZ!Vu>HHf<_ufBTb`+70LT{U&23H5y6KB0F>VEhhK~ko+OR%-qOpmQ2YzP_c(BP z4?pr78i^ZvV^^6sBL03QlJAtFq^^}rN6SWSHs!a!0=l$1!N$a~qtCo%VZ$nle8>&y|bU=&W^6QLrd8jxbxMqJV^J1wtdoCXlrTwbmH5i7}ef6VxZhn4FoS zHP#>%irE|2xpeV!=I3sKGDvzH-IMTFKX{J+{O^Cv3&;0S7aobjTE~SevwZOJb$<2h z5Bc!jtK6AeCtELo1R>)G0yYM3&sip>rx_m~=fHsjoH%g;tu+@uzrbhbKVyD=J~#yQ zJ0fyaAmvE_0Pafz(^aydR8Wo{>IU@HghzzDHWw}T1pwrrXcm|tpk_1DM#OU`kFkH> ze$uqgow)@*zj&F|l}=Ef_A(&L&ViKo7o>UA0KkBP@3#I-;qa!U9>Z&Aj`O1*ondNf zoEx|9^48mb=G?if7#m}3uxZ+EhJH(@ZPR`ZtgBFbBNaGRb>7X^uNNVHODVB=H*|u6 zGF0_OJ;-ENH58I1>JU+qLb5JTA{brWo==Va~ zTT~2@9h-xqHyN+?|b0=(Z~k~}5=KybK{8|zS1 zfS#-ZpVEPWRI4Exb#%Rsi(?Q9Ej89UunwDd5m^_J_YheZo974L- zkwixkLVEI|L#tKil{2R}e*7qR=I-$J+wZb`w~f%vK@p`?j4g|y1hZ0Fe%t^67XnB~ z0{p`laoZOEeJZs<$ebg`XE^if3rtMb0LMoke$FQ!U8Cp%#2}KP8`1w>@zn&_9lzfW z0U(=%jf7)ttjUq1hk_MbQE=tz73O9a@P$Q13D)$r2?7NR4w@iC$_!Q=(!Kln4ZZ(Ju|Um|Ww>NUsrUp>aZ_{I16!Ar-ON<6YOBvFmE zm5jIl^fB*$e2KT-`JDIPyF}5^;OpSajpF}74woSSKt>T!6wzw72KJGrG_=>-K|NQ9 z4O;xeie`R;1&tTm#Fj{bQiwIww-?f?L? z8i)^$3Bgf8NRM}UFmOl>)HU_VIupAm$T7%zf>$x=cnejJi0UczR-L#OBcmY9m820W zl0;E7Iwvp1wsZ6Sx%~clI#BG9a^!2QF;v#z2oG7OOVKOob$XN?L*C8F*E2e6U5ZYI zSD6KH18Fc^gvKk2tV}iyw zY-t8X>o;0_Zr;=Vb7$mCGpNYZXe3OIx2V+;l2{MA{#jA7w6sc=Wmw~oQWGZOHpa3Z zDF9HdS1BQiJv#EV#_H5+F?dNYGj!S|S#joSU{Rh~k9F$uXv; zCuy~6Xe~%=H~sDB1PsWxGB^RCBqUJ)0;H-KLt-Pw zSO=vEjT`GWSONYKt>Z5W01#LJgL9@5Hyr36^mUk`7-}`BH=$lb#x+!w;Dy4vVErnJ z0+)4AMUL%u@OciV3?o8Y99o{FqE(K7)%Z=X-wWa-qE?ScQbnyHP|6{dN6V1ML@L4= zNme?tt|QAW-L54sTwqgd-h)p8fNu`~p!Fedoe9=aE=NTX)&{$yv>tQp_{k|PPrV*>zeIiSQt6>|OWk0M3UTSr6+Z*p*k@jVUBync+s zNA?m&b#C2U>P8q@6ujwZxqBnP_%-GmV!t_qls*!B&`>LDHHGY}8z(t-aDo~RkvnWAxNzY*@4ojL@4kP9_y2s2 zD>v?duZP6EU&P$+o(T6?uD`EqeGk@nq^blVbP7}w2ZUG(ym6SK2q2lY1KXhcF#yCi zLSubpa_2qXl|V^jEa8P0POx|1Zj_3dy>*9+7p}6ryk04^Yc}RZ+2&CGrT~C&;0Xx| zfioUKL9JGB=9TApX=m?N9mME2o*7 zoTRjtbLYWbW1?LN*598%7Vltvlx)v)7xSXI~#enxN%SPa%qk(gYc6 zR8t~qnmA3+i6(9&h(w{&B)ERXpyKfLkq-1-p@U$T6oMp4M%J;`I#4=o=$e|mz&fx+ ziM1A28cb2r?RIg!64$Y~t|jY~lvzpHHQ2&pGm9%q=;dLCxb)#Idl}x=aF1F{W>>lv$^S6JaHp;+r|ItPeHJ8MM&aAF*)93_wHS^#!?#16iFz+io&q6 zyw2R*UDj5+I7g-5AO`t&-)X~d0u#}dQ&Aitr9{M0rPJXDXS;A7-v|D)V#6-b^VP9q zza#)KdJl)cZ}_~dgr?&d8e@>Ah(;3`$H=%I7*NLHiX34JC~|DChwt^E*9&_}RO~iy zN6+b<7`TtkI;-aU`{TxuMoNX&iX>IkYY|B*Xf+fnvP6*}(!tS2p~*8#x97+UNoT!e zbuFi}p5we4eeaw1-%|kKi3R|4m<|bxUTBH+8Mq$%4jCq*|%>GOUp~#xPFV3<@FF7WmGYu zD+(0?k_cI^LoG!%>gYz3wACOTpP)50Nu!Z6)=Frk35#=g`TX;XEZkav^)*l#duQtW z^e^7vpMLQ}P8_N+(QrtcQIvxD8|!>}_ACgX615n2*Q5m6MhbeuDI7vhqVA))o&QW!GRrUy<0N(N1rJU4W^Ib~@v#^Ni10M(?7fovQh$vD-5ll^w(QMVZJv&c(t;70yhAAyVDy$bT2^m0v zDxmpl>_`e-v3W$${pp|o?lAydcG`o&hDKIasoIwbzUX3Wb$r9%RZJ8`D3Kz3M5zMn zQ6>>i$qgoeGeaT8Jz0(bs%rLVjg$fOlnT;XM3P7vbw!d2>J5#KByr@3lnmM^C?c&< z3fyXe)|yBfw2mnX15XV>zqOaPrV~29#^Al7F|K&!%$uA({Q}F&ZQlCr2i%@rzH6XB=!%TFD>ZiN`waQGlVwm-aE!CXHKza?<62OclH*ae|DX_ zvx^{V2o>Rt4FW@=n%CMcvFXqFq90*ktqxmPMLh|J4jrhvw4STit}-{fMAj{lDhdFB zR0u5)BEd-owG?VK;#LD)s}t4gB#j1XYmBjpahl^zYH`GRyUmqPuW)Df7QMy0$XGJD zOYqt&$N0OSy~1Dq;AK*6NMdl-acg0bOBZhQ?(eVg$w${Y|JgOx)(l0i5HdnTShLcN zB9Y%E+o1<7WK=~5lmeY52rY5_M9O=d4YTY68sJdzKcW!4(^l{vB_()Ik|Z?hijyaI zbM)9j@Mbr^yus??5;AE98lqDbo5YPmmX8U5BjOn0!P$~#E9J#gM|thl7m0=9 z(#4y6`0;04yLFc=*T^WTD03UGDuQijg?&KJ%c1>Ub<|A(l*ILz-BXkN{Kv0x^4X(^ zB;rpWo#(?pU*z(Yxyp7;ZmLw>)`EYN!m;fCU-cTS>vHJuG5-4JKjY0eUuSB(g>eQi z6q1BANjZ74#^3(^3UB}M_x$EpXEy=BU#4i2j~3YcN)Cp504QRV;pR7e9*XKJY4Q?s zQ6<)aYHD?fl^&rrLI?R5q$kt5O3XuCmP(DVcjU0rzV|q5!#IYm3a9=)E&BV{ffcxZ zYtUB7vF|7UqOuC~BZ$Ywuc_3cT_2otgRLnCU+8e+F&G0GT0>F=FeQpKvTC6F%2G{= z%8jS8_cNuzI=4~$kLYnozVYr=)qxbsBZ931X{|=1kucV*6UQ1Q9Nt>G-IDftM!TI+ zT8A^$`s)kUeoZ;NR0^#%Ns2$tEDS@5tgjYwet}T&COZF|&J|u~uA-uqa}kaB%+~RvT+9ueMoPUZmU-++t zq6b9}XAIODINt!B1~6aL@LJ*vg;o(h&#*-g@~p~%+|bs4+#5-DAoeJgK!ofrP`SD-8K@>&2 z|K6YZ=)-fAxds=bql7#!2dcvxLCtUK{(qM)htLl1y3|^lXHPuK_rCW6DuVg>c|QH* zBC|I-lpTSL#{*rfAFK!z#LY8!!^Ojvg!z#q7#4g7rAr$HmfUb zoRuI#(iDmg@KHpZ)F4R^<1Ivzpz94(lF}S+kv3Yinl0+}8rB+SZ{1?<`c0Pa%tF3K zEi#-wagd+?>}CGyXQ!B%&`hR*dcL&S<>HlFe0=^gAAWF!vmf5%){Rw)QiByJ8R2XY zI}<`6h1fKg{4J~BH+TQUy$h9ou{lZujDjGL)(|OV9FO{c=N4CPE&lH{_b)`hb6Cxf z3OTf99mZN3%{qq;?dQm$eN0ZK%-+1o<*T>2d2=3|M8;#4Q-mK~+oEqF@%S7%KF{%h zN@9*5JI3qZf0PJf1Xi)iDpf3&NF z7KI+fCLy9wgt`C<2n!O0l&-pql_NkO$gGlbTLE?<2_LG=b=9r6m3^S=?|C`2+~kIz zbKgNg>gs2MtMolQej{c`dH*65H zxH-~VOp+v|wNSXGHC>GrI-GSuj4*eUg`+HjjaXm+_(2mUh-3zEI?|&f02>XcC;gJ6 zF~rLOvbNqWD2oDP3-Y{4vk}v1g!o*mCrC9$T2D!mg!zRI>z%yP$Mg3?=fg*7!v0qh zujR&hRe>%tQV1Dhml0wBTs{^|fRQ~v`lk@0>Q-1pCE)3MK}(1->~~dn!I27}694on z3e7F80vn*`H=ORCgtXFE!lo){Cg~(XO3;x)YKIV^u_vTQRD#NVH(5c@3K0mh(omKX zW2*RQf*opw6+gYctpI>EJ;ry9^TwN}IDGgp3-fFI?lktS zHPEu^4EpVV?|qZwhZIrqY_c5-)_$nI@2_QM_cVJC>?f(E+?>0~-8)NU>jjb+C4we^ z6_w3Qt%j=A(2W+VR-;rAvQ{G<8>iN2qLY}`#2AT==yleay>)}R*_-(8D)=tPkJb6n zt4H`}fBhyep4dmD77;1Q^70zjuHWX<&*nJ$*)87x@CxV8-5}3=H6tDlE9=c*sf8LQ zti3@3{4MJI3lDne?YIi5_aok~a`3gXItYDuVt^#BH3Hfl2kNnx!PYa(#1*(sZ}cz~ zAyF7C&7m28S*ghjf@-W6nkW)jTVj1loCx;rp62-Rqs;8x!|H0Ak3PD@_3Jn3tgoY@ zI!=gz(}m~@`oMsGxcRhs*zV#(cPFI=?@%&gZN21oZ=K`nwaYBrSwM&wFJgpHc*(JH-(`nO!&L;jE*@x_?i0EV(@ayc`hp}PKQHA zBFykMV#dbn)M_=93U-CPZb`3Ql4q7)VS;1FAfBp`_wvP`!#(c75XD~zfz888kCKR5 zy+&G-)a#10CW0NkmSmZs)9F&=B}HK|Cd{@Q+qWAFz*+FB56@T%fshKVK`DiIK}a=< zf)M9`f%Bw*|2w%Y4eIn@^;uZQ{Bnn)C>R@SGG#Tjx+jS&ajcP%pfojlnZpZ3yR(ij z^Fd*I&-^hr!IDucq*3@di~;uD1)L2Qup-hyY`?FjZ%hD{oF6HU#pV$l@x}7f2j2fX zec9%9V5`sD8E6ApiOmXRqXlt{h$6gKSS9drIMW0Yr4xMK#rAqobT_mChLf<7`}$~O zML+)<0eJfrycFnIhdF*Nky;^Qg~w4ykF-HIL>Yl81x9#E?JGfGfwNE=jWvQ!*HYw; zq7Za56UIvhXTg_<6Hl+|xjpRt*{Qz!VvUr|`$WI=@=Lt(>PvXK{NeY1NQ016b_*^-Wj~@P@haV_2NlRK6eNqJa_Ld@X-esxqE8~XoU~|W$)8h z*CDIqz6J${cP5CZCUE%R0j76P)9YnixpJF@`4xQOLBu%cK{*#tDA18<; z#m5Or+$3o>skMT#e?5&cMZx0iEc3T-&|REI>YQDZl2=YY%isL;Mc(+{VfKt`#%q$Y zS8#21f%6w{a_;k6{PCTOT)2Ff*_-V^50}X{_pBe6{1#vGZ{sEWeG<4K4_gO#TZV3b z93vx*NMfYYgL!{z3w&X)c@Y$V-8L+Pdo~d~ii)Z!CDM7Uby(A5Y^uSrV+VQmnIkyo zxODjnkbIZm4K}&L-#o93n?Nng{3sX;;$@SWi#p@*l6c#xxap+ptU|Y zO~kRJHC87{6^(k0B#i)1*2`F1>$2W1Fj*LLFkja?sX$v7Xf2gvR7|6hQmaR#HAx(6 zbQJ2vUav=0ehsdIoAW1YjiZ<9B7Ru7n?PL{G;9D9a z{087CJgltt=yglFor1}!7Ok-wjYchWc~ua4iy}=N$K>8W7$D+2zA$)cfhaVn`qrdM zg`7Z&fhLJ`HZ&283xc6`d~5NXgQ z5+Id^LgVso&%>A)gpBBl|n@lr8QcGe{(mkQ|^uIFeK_Io0CS>60{@ zb=Fo^nZLWt<;&OUvZt(y2egksb5h+;-=sA}& zIbG+CH(ub(nU}DI;Ing=c<{I8ucLaN%11aGD1y6o zP4VjMr}*2y`w6FBJdTP5cke9m?z^EyX-EKj*Q?S0C zVM~GYJFJ(l^!>Pzbt0sv)r_gvBkJ`!QKUjAQV6Uo$@7x-dP!M&@;s-^O_(qn#LY0S zAS)9gAwg+R9P2Pbpd*wPm0N=&&n%rzPFeIB98aJoz=Py#BahFAId&Yiddi-?(=?lP zgb1S_dFJWmCF|WzSmV~-zku9)>584CgD!y73Q_5gcp0oPz4rsB0GFE$5Wqi3{`@!q z0TpXash|T8#}FsTw1JN6c%^a5W3j<`p~#VC33-kyyHMm{`Z-e{Sm^)gulM~+tw0HM zED@0oQVx}ilXMbOIcd1kg%KzWS_^a}(2=LvOb6De!4}owO6Yb=${afDhO+QjQ?WCp z=V_P!agG-c#{dw|Jpa7Edif@{sOXDQZydA;gi0Q4VSXzC0Jp^(baJZ23#Xppz@c%X z7%p76%*6{gS-xw)1Xc49;TkXRe@J~D0KnimIAr8GaBzm{J(CCpb93`7Ev`~#0@oKN zL_n+%^_ZlVqM`^L*YI&n5yi+_jas8c5{CeqMhP}6>8vfWcIOt|#aUu)Ik>OMU;g+M zKmXZF96OM*Z@NjOH0$k*OV{r3>8CfiercJHKfKJ@Pp>n-*hWwb=ZYi%5n>a?^*aOr z>{KKLZ`>hjxsa%_@i5z$Bw-zz0%<)qD{zGghne$3e({@<{`&v`!A2{LU?>$H&zUnX zv2XugilWEb>N*!czsQ~23qV8?x5$kf6?OW81;*oG6WRv=26L*$R91ZwA=S>w$6%jt z+)If849}fB!ka%h!@)x{+`2W#AKw0$>sROKtY-)v<4uW*Vn9|50QKMiK)*oWHs(~c zeXmg{to3LuaXzClp0NMGI0p{wV|As+_3L+7SgiCwHUS$O0Kg_{xR=`i0FKQXCr<%@ zrvShgJEt8=E3^&@*0nUIGzG>4>U;ZYOkt*V|d>sF$Fm-jZ`Yasa@U$S5L75~4^jJ|0s`!`#2~9%ncDo~{w#8s(+&WM!I8mk5S##j$n9o|Dx*osLY=yt;M_7B?e zeuB?>Zw;dFLPJ3mB}`6^g)smbVLfD7U~1)gzRmrRJA>Pm69A%ebgDoAFU6o4)VB+y zG?-!t1YlHT_OZvF!FfSP5Z8$sljyXDi6ur0qzD$PvUGTp;j=E3CBj&IQ4kP$ zTa8>g+@rR_-82Fv6OD`%QKHe23QU|qQ$bQ>C9d=sQ{pQTN1?(fkx+uPrje0HM`1k5 z77lA5>*N$ga1F6W1oo}#&!9d90KT;V0J`bJjCDUz8&>(3J0=!#n}lKbPc`jeP2`&a#2XvUP+AbOXx&VN_;;RdO;z67& zM_NqfJkOb%zsuU{Iyi-QGLVs_hFBrTYSddbVijRZOIA8Wk|JAUGpSzXRqTkjx<@s$nJpt#);sQHemlvdAIR5M^6i-;mbnjqo?w64Zf1hxpC zx0D89f?Bk2Rnk<6Ea7)pf2KevjT8!N3xx70WjOxqehwYp$5?BEPN&DEi#ND+>n>T( zZ1S6y4^?11?(yS6)U^X};Hy|Ev1XmdgygkXPx0n!FO#MzAAfR*_ul)Io3o36-k2S8 z!!!PJX8^#4_^pxzTNVge;%xy!pml;VWndEk-t`r?N396G*aUof4L+^j@TdrvB8-(F z9ZG_ZBCK)M_?QkX2^oP9D5bEr9QoNh9biv70PwKt>ksSm`%PaD{rpT(DVPUaE3Gtf ztcc<`XjM2LdzPELFs*Lyw2Eo zN?Owh31#l+b~C!2f_A&J(fM|wiUp5w|F}wAv;sR3o;cB@X-ry+snsKDi3r+Tp3nf|H}o|IN&67cnx-kuW&>v(MOo0x^T9p-()p2K;1)z21ONNd^E0 z2b3{D0jgm4fnB`#((@cVxR>_&GPAet@aZR4S#OtktE&XL61)0_0f3DTWhE6B$E0b@ zwr4jJd-hPT zH7T;3m8AvRw{JmvnKX60cIp6s_0v;)|MjCBKQzf?BG5vyw3_kf&#rRu${o&rcAF30 zyUL9lYpk!hYSzE%4i5^OVRiYZ0KiCrCq+Q9m4rwmV~uLmka3LlJ{UXXB`z1Fs9n2?{^boqDWvc;$7($P{4w?)oFdP278h2zc;PxLOI<)??PhVD?=}FSDwSnZ zW=2bTaa+B+CkH2^LYgAK8s(&=(PumS!sr zZUGgGKu3WwY08qKEGf%!0O%MaLh*0q26JPl=jEPIhQP49&o%;;8zP^6<2hFXjb9`` z+ESzsvjLQVB&|jRG>Xtz8vJhOv91g@n$`}q0fgNE0sP~nvjL-w(Tb%e;u^lD!&pG0 zg-{g>LMW5~Qv4ogcbbb2|q^vI}*lOUrAohVcsk)&xASPUjB>2*5z!h!Wf zx=tO9Djh4!cUfLs#H}s>>zq10!B5{f&QIPv$uozin4TIVl8VAQ&R)F6=NIqr`R8+d z@X-xE`S=FQD;7#Xr6I^waoIUnC2UUv&hX(sc>YpUB7YG`jcU|EOMEqUV)G#KM_vRa z+_D&;@_mv2A>F|HU(zG+cvH}5HrT&^FGrs_OdLlnF0FCx+AKG&-N6}wRJCA(S1DMJ z*rPqYKnTXCS{yz)&fz0_Nm9Y5=PvQdhZmT?yNW4GARUbA4CY|IU`$m>in9*y98oRe z__Mn>^V$hcKKE?so;C}5Wt&?!EZudpDMRZ&w@s?(xO>DM2g;|dpbRCX9`zB&k9wPibxOo_ zL%Y3>vtX@6h-m12n6Kqo$V3ii^5ZxF07^@wD)CN`7cQ_Z@=&06I~m3VvA0?sTA~mwRcL;3hz9wKei#lYjGlsq>29Ln9yjb@Po(3 zp4o4*TpR)yh4aY5U|kG(f$#z!$DmV0oM5%a$p{&%AbhL{f`|oB3Ml-LGs{=_+@(SY zk52S}`Gl&RH=Lt14vfd*h?WmKFzzo zOPAj2!#&*j`Qjje5F#9}k3AT$eM0Ms9!Sf9!!w+I@gy^Q>a^EaxP0j{7e2qn`ceiY z2wlVFZj0Rx16BI3LaqBA!R$UDfcF-ZCr%?;V-2QeCa}h`yw;}M>(cF&!I~@5cpZd9 zbdr!Z!l7)7l5V?4zTShFYu|2;9y`MR z{d-tjZ*%S1O|D(N#oFRJs1(ql_*gK4_ww`n?zivq|NLLS zV{Udicnc#R?EO5wzFYCG>h=$>H?1{F2QXV}L6&t9LJ-G_I0@abEGx)*MNo<_s^UfT zJLB>m=jS)I=3FII=#j!RH8nx49+9NseRn%OI_m|iD?ReO9E|8FsQ?k2R7RRL@+*IR z!+%dwMVdx5o3$X!7b&a@baQ8+*C{9qNuC#&(o&YbDoW-5&)$1J$CYJUe!pYxy=mYG z(6d;ktGe1eGnzLeJxQa8iO@vo!-W3b`3pwU2Zdhrv)$!bEIQB=1dy569H$Ta+%y2_ zioOab0>NT8Gm&}jF?+AQ_F63YS>~j~QN@G@OUKK}|Gk`OrWFLXPxuQXNLkAL zNIu06gBfs4j4N+cpAR*yAWYdfx6beW@EO1T?WZ^wx$(mzuKjR}yZ7!v(kQ(t?-fMR zd~txiSuwh0_5S5UGxe9higU_*BFw2sc3iS~W`p(hG0JET>lp|86Pl)xe_}OCJY+Cc z!Dwv_Wi&=XJL{Mp9ujK@O`DU)B(e~;r0qPmsp;A$lmpM-{oN=0pa1*c^2e{w@!2Qa zj0PGD%qA_@uYb=^*Z29?KkxCUf4jNtLq%r69$8 zCntH02*H(DEp}BPD&&Px!Uo7XCv6jOZ6b6@+Dp>1XzVi-te;g8Jn4bGa*N(^mkX^H ztiTWh)v#oJqhd6w7>oy4t8p%{zki5#fyrS@+eN^V@&^okC4El+e?$8sYs$>xcX8gj z;T>}o^56{4r5xIX`PWujqqW8sU~IrzVMjzXDH=K-NYS8-r7Q}ustrNf8T$A68O5#l zI*zn5#QrADEf5kyr8oY4lFJ$#Mnh8AvV<5(T4A*&ky}Nh05PIQZ}NPL1)pdQE$xSu z@9~yJ^p5V|rFl$1%nl-nAl2{`NUE=#mFq!j5|PmBTAI*H9=f{+Mm$<0Y;u|u8P zLo2ZhBq1@P4+QTZAj!W@FSvK#_WpR!Osv-wA%5E;#xHD@j zOUrO=$o9?#$|_v!n9Vv4>JHyzAJekHmIHJp>i*gq3S()ShUsjEZ(5jja=3W$h}X6t z>IfwaMiFBU`TWZ*{?q^TTmJsvea=^(3^>0tU^vipK5=vR3EzHmgPYf%@aJ#u@uxrC z;r@e~uJ)9JO}Z{T7nS{0k6iIjX-UXYD<}+RP@>8LJrog`1o*Zi)-|znBo`I}JZTBR zPdqcx63{M*W`v3;ZSbMSmWGR$&T{qYC!D{qO8IP=ys^t<(n{4K8I-o9(^ica zgF1PyKHZzJ_vj!8p=QAzdZlw1SWyvU;lia&e*cHh`ReOWumwDP_>fyS?{n?D z`|Lfg2|=_l{tf(l&t@8fBw}001BW zNklbEaq zm+zUFMC(NthN`mjq<=6Jk9niTVyx>t-nqF2omlc^k-r#o7i7M-h!`Uj|G}`#?`0_~ zjWKf1wXG8XppBy4&_!Ga&IM9ZB$tabD!WrDVGNX|^fM0zma-7>;NYbtK}Stg0%-c! zgC|H5OAjWz|2B}1VW`{^kh1+|P#$d!kwi+;SFU=!fTTz|kzzy{u@+2i5GE<AXBGsFyp1X(V)cq{% zTn#F;0bOW`uavaDgb;Av5nUh#FA03Ve^q9O^o2~5H3O`X&kU#xg2mpw!Jn@E)A3vY z;OAfJz1nO4^QO>>pN}x!g&pdGjvc{P{YM9!wz=(&uD~ zmGAbh4yI#0;42`21R2G6$mZ5MYN!IjbVS(ea=(*%Og*TS$vXNFC#G$=ARCoJ*H35CS~7|CC!d?{e?%eSGIorb1`b zJf_o23zxR|+yCK9KKtw{_wGL6{{5$X z_svZnKG>&j6onlT=G`Si-JG}K{LHbxzt8vIUE>dbb(QU%4bE(xoBOg8BN5Bqlczl0 zJD_gr`Fc$G>Ur+=KLrSX`THVDQm3?3xQoJIt&%=-o$$T}1yxls9*t>gPuC{ux??(R zkK6dYw=bff0R)6x{k9Z^;>`A#YEWRblB)ltW;&^v9L^-+jYdRqL0a$9Tiy#vgN~?d zX}Y%`AU~Qr(t*jLd##kcYV?qS!6Cp;7)}#=m89^ywQ|KJu zq;Lv6zIt#^a*hy#w2;O~G#af9*^nM`YeGsAljxYaUOp@VV$X?dKM-KD2Z~~|4}Ku6 zmxBRN$!9kO+LkC?5S1a(h$XPmB<~<}xrmmIw{kA;XQfaEsrGA~olKO7{3%1{gqaz= z0B<7IzeLa1OW;=4hf<|MSu3>v6i6ZBg3m1j@y%)$oQ_ifU?tt2_w!}jt1MjcL4W`( z`%p_y+TZ-U-|^*FS1C))qeqXpcI^hcw;$rB7IcNtmf(H9kKdQ)d|XZX_2PT1Z=Ydp zeN0)FxX>|~)HJQbr+_jAs+0rS4l1hg5UmP=b98k>>>PgYAPa%Sxe&;*F<7vQ_3Z(F z^LJPI`~UeX{=;8g;Oe;%7tXFxXv5**lsmh7{CMLD-(P#czkYL%KmGG{_8!h4N}swl z2_J%3D(dn`F!SqH16xtyO}*;AmU%InVtoYG5UfUNMb~vGABnS86#jckV_Lna`>7S- zzqpkA>y-pj>x6eRifY7_OXv9g@4uj|G}GynhY$Ao@!DNn8wpWii}8F9%brN0M{qh` zbSUOtjz|g-Wu-^Kd{Dq%>y3OIVUR2{a z>K5^g>D9Zw+EOlMeHi52pdhRF^09m9x);$r?nAX0z~8zrJzU>aVX|)L?3G6fAYQE$5@rz;VD8H zrG?GNxuk6gN)dDQUHO(2jIc6WmtPm=teE9t3aQpxTVSn`!d%KhVTc6h2tEh{W4UOs z!dzGsjC5tu)@Drx4V@>toc#A_-RU?T^XyBXf2|wzh1KwUAoS|2CwrB?#V@D?wFHeS z42hPaj9k3D!*0^oI`PXPUq6rVyhBW7|duyK)iRAkGQrYIJZD^V>oW* zGY?2Jr7f{o(>du^I%Hq$$oAPyu6}xfix&-{P?@1MDKdk@!1^?%VC7UrJBT5Fv55~OH-e7;V{^UshEaU6Mm3!RB< z8K#q{!k0#vNGcM7Lu<`&R8eS42odj7?m17yD5~(1lZ4m2e~$$WFMmJJt9yD*d)HcL zreMI>#QC!ub8A1P49*26lbYGYad@&|)lDV?@9&CF)sA(=@bgOH+HmW_AB; zA>Da-2FlL0AOw(50w}DHNqAxk*{)gi6FM*8L_p!=;zCq8zEJ&nqRhhbEP7N5E7o?W z7U;O#rn+CueLJ#u??1RU5tqG7) zLY0OTJt@pMcX@};zqrh&pIyLM&E2~X_~HAXcyMn*J9VH28GZgh>|@kYpc4a>mf?7v z@x~Zi8Je!fg-G2rxXxwN)nW$~rW#O;254=Fp`)8kX%8DwiEr~koSwgshr^0bKfBD; zOFLZH8L_!Gy2jqAHSxc`Ldq`?5>KpVf<;Ud52pI17iO}>pl9@xyIGcF0gfG#QOS}hxeZF;K38_-rFbmUTifi?5mW^;gce`PFfO- z%EDfX?zC6&7d6s6kd;`VutE>l8e;Motr!djSp%TN)q%DNk~B6>;^1T#;^OK(?`f5* zp(KbRa9Naw;b_2ky<%fLz!s7K2j_YG_<(xa(YApY)XVkwzeyHMOv3ut8e=rWk)awG zs;ZzYOH%U0sPUnrZ5*>{H>do^umJVvaa`z7#!?LmthEe>gSmcyu?nqJ)(+@IKcIuQ zO|)$yMV*!Xl_V%p%^77{D~thSBUNRn1_gyJP+FV-QW9}M*EpODw9eyw%B=`w7YGH) z3)s;U95WCg1*rm+6cFa;+9?q5GMhMWyu?C`E+#NS_t(~D*MdY;@+{F}^%#vNx*%~+ zh!8$p7KTcoQ$(dmLKD4!T!aEbOY9nAIYOC&Sc))ZBncBv57Acs8|#VD6GI8nNx-HR z=zuPbRO|Dy^C8f=AVr?#ivO}R)covGU`v!W7+YYh!TXT)I0DH>=o~7hQ`-OOcs~HZ zNl3-J1Oc?x#O{#cR>_r5F7t;!e#Llg#B?%a_os(^|LrYNaPW&xeC+b;E>pHsNi6IFBTb9_WlwKlZAqJ9jxM@vyIE8viK{TBJG^kbdZ!+`z z)1Q9i!e)t^oaNu#O|D(P#e@4DKi%5nFW=na?(IjQ3i&yfEb3>f(4P(@;3*8MD$&+r z1_eoLoE4$Au4x3UsU38Vc@uYLzv?CMrcd|h0@y20GAED(Y^gbSVa%mVXSsOgGTuja z?>yq>ja~MiPV-%ntF-Be2mEP4_8o%)%jc12``i}4`RXE{ezDDHTv9ilfBTmoxb}mb zW26C4ply=sVs?30-G57fzzY~S!F6a`P-Le8=iCa5E2acNkz&BR$mC$g;o+2&(p(@a zMo7^Rl0s`mN)D8!92D3>guwth*AZPH1dsQffCReYv{(0+wdS?f7_Ctn%2Jf#jRBPu zgW&+1@8Gs|9PUp=ATGDzr6>s-9}sg)X^qkel%Xs&YwH8n)(4EoLrQCzO&bmmYwD@v z;9w?Je)R4DCuCP|@r>2hV2#BVqDe4XgR;tDkMfd0I7ideG_|L#leBL~3n@vTGfNH* zSu}7w9xxbMs)6{IE8P;J!i9wQiKdn|f)M09@J`g@WAqDZHK4U5`PL}WO0a>VOcXX^ zY$EuGa~|g$AtdTaONzx^@8ye!#<|h)JTI6EjHG_xY!?LQ@h;1Imbm zN75t`-(H{;@G7y0^kqC}li;O_1{{`_y( zczFL1x&(F%Bvet#Ve~;H{{4hGlpRp5mkb93RG|qm&~zQ0cXUKiVjomF>DN?6iPeVS zJ@vF9G@U5?Hyya%YUyRZpJsB{@NfTejmg8ieEr+Yj5mku?N9mPhr3+A{*bOwkOnAQ zptShFo{pD|#(-f3rBMD&QDBRL&O3bPgfchl1if`p^6(>o@O+u5llOt@nHTxb@p{SU zUtHqir5%icr+Ww7xN(PjyHD|L%oQ!EqI?{IP<(OX{0kaqwzv7>i?7(&vfQ}wBj5dS zQ#4CD3$enON<^9x0ssc{Gv;TZ5iwjVIeYdjYimQiPu#!%kmpjJsS9*?nw^qtpr&2-u_J8Ux;X%`9dhcrS%GSZiB3(fZS1{<3rs!I0Z z;X%W}!Gy^{P1nU-@D%!eOz9a6fcUe|vlT1P6IzVQ(oz(K*!q=FRso|kkQWnO=V=>9 zT|3&wi6|jDS2fkr=S!eG>+566(lQ*CA{=O>N*Y2WMVL-IQRiR29Te0PD*5Cfre#Kxg8b1kkDkGjInDgU}KqH7Vd z{br1W&XYnw^=&Pu>-cm$Z%Myx4S;9$K=gfRMr%Thk~pR)rGV#NhCQWxSs*IgZ6Kl= z!FNEz+U9_-|8SLy*~h$|IllkyC+_Y(p+4*=sPc<1bA`YC8NxD*n+2qRVuvl;-oa_y8{u z8;Su_YBt6Lwzk)3>W0a5!r`P9k5^MZH(2Sv-^#OESsx#FqPC)DyF$NTnv1kRU`=Ty zVX_*k0yQe;y>nJ;vG(%;NGWwy7s zXdB1w?gJh^*yG8QL!pc5-eurpc_t#{X{;i}B*C9j3;l`M`;4oT&ktDWYJ4OB$AydM zID2*rr4v8?_yhIKG1uBi`nW3ki!3*Ngrdm7vlIL$ICKHy^^&VsE^z+BHk+I493D=& zb>lIQ9v(2Av~;ruRTM`6-f-eP_n$$jgtdv$`iL(+xxnWaxA>dC{w-hs?H}0M-eEHJ z+}VA^KmNl%@_+w7|G>Tb2Q;;xt4hzc0ZzpMU+H{$=KcJJK|ZBL9bA&IfYJpi%3W1f zin1sv3WL^`7(F31tgo+8mIJ((J>1kCb=@+XwSa#9dGw->|EdMA{;W{($R1p*XQk9! zOCtqOStYi%$82qlsj334E#52kpH4V96e@k!`8+Q#h$mhY_q=2*mcsFCz96`}Wd7in8ZJ?n5zEcv3BwgwRylke4^5#w>mI9nN3RYg%)loq=(?>pMIrEML} zEQ&av_c>PzC&zDDIB+-`V637j48|I?5&_{Dn1d6+#~jY2>=vM({mhTXr&$b8DJ2C9 zwREP;=Wa=GEj@n^ooe8m6#nH_uR_?37>zl>@>V4TD9VYn3X!xV6sXeibN+qI_ww`C zO3g#)q%z>9Bo4<`Fc^zgKv{t@sA#1PKubKYl$?txI8^9R%>mKX#HNGpq{3rbtYd5B zeXW*x)tZ8o=PyXC-!0kv#VD_Nh4|v<0*@a`eDv$X)L(Byyf+E&qb&i-=wp}GGZ$kz z0s_P^??DP}LoqJ6a`g&dd~t=HvupU^xP5Dv>(_4cRLd zeSL_rin?xjx_6N0Xn-k731WXiYwpp*Cp>w)hpQVf2Binj&xl@>C>sSS5WR=ckpNRE z&Yj=n!liA_?yON1pp3&>l|8`=oSQtOdZ~|q536eb+JG$z2E&rksN(a_F7x;Q)nn{I2$V_0@0KK6{@3{(t=g-+ptA*{sQd`ZF{|PR9pw^exfzl_n7|R#Q}( zqL3dSI${i1t5_RtQWRRK-JN4{*x(#^7sL+ly;D|~)>uqPzc>=mE6yQ(5p9gVNF}R1}4% z`&R|Fl=e5J6kR9cgWiPQLSnWJ?jWOx_n~FtOH>%C7s*cmO%h(vd?Q;zZ>_iol_k;0x>ZWyng-=F zaN_)uCd297csf2{0HD9H;rZkW&!F>RmWbOx=f3&Eo+R{=DORxzSBb|4|5amD|3`Hg07|fuO*E>&` zwKRt{)E%^)90t9m+|O++)V%GJ}h|nV2{~;L+}Wt?itnSk8y+$ zWZ&tR6cBq+a-(y#Rx5OADJ#w8PtI}a@)pC9VNhDUPds@vW%u?T5ARQ@XIY@=c~*ky zWShT!okf>$F0#I{#b{%bVz|b5dmCGAP>nUeAB||5hQ@VFCI|d<{SG9HYctD3oq_-# z>QH*o=4X^tbBj`AOeDk(V-i(WF>cTF-6fnx)`?V@p|CtkHz%@J>|to2C<0{!TPOT$dJw z9YIbqprA$j)+CBTV+%uJ`{Z8{V!%78_1Uf)) z;4(N>NgISR!h%S>b5at9iD+PCz*HMlR3v*ui%T0}7nBBF6bqNknB)%jfzD9osznl#aCaj-XC^4!bv7)W3Z$!dyWg&CA2D{8nZ1XAq?O-t$=8YQ_+ zPc3_e9xhEJs0et@Y;SP!(pfHC+QeGTgZodoed_^F9?$6NfUy;EZhw>ref8+0daRn+ ztfQ_w&g_ghv$?^}*>y&vg55iN96arE54;r{#1Bc^<26BmaxkRpx;L@8K}CwHWHc%` ze_@O5v+Io423V`OfBz9r_a;mZJWroA)UzP{z$ORBDZbn}lPS|7LTDo}V{iYES?8Fx zo=scfF_gB1n6Q=N{DmzpUpdQHUw_K}{vnSZPNZ7YSN~2yfDi2Oi}WQsNg55M)s&S* zY4LwAE2;7pwgMEhX+zy~V)567oNs+7`aAkqh@fm_G#aqAJz#CEqAG>GFgX;VzqXMU z1|JeeS^T@yEJ$H4riT`ByJ}Eog@21NhD0Dna4v{2UoC|N=R$sIP9C&eTv}UH)+|uD zDsQZsSN)xnUi`XlvsIw96L=rRK0WAF_CxN?H%9FJs%oL1V6BzJ-v`>Z%T<4fArX_x zW(#j-uZ!K{0tDy2$nJ0O06>s9v!uwc;(UU)B;QX7QkoveaDu z3 zs$w`E5uzughz~8!cOv>R9AFBe+{xu`@m)tdZAjCZRQtFknH#fg8v zUQ|}HHrisUl2}?|q0ys(xaYK;cpkSc%14wBC=@znW{gHaoD+PsSDs6M;Q%29hQo@B zmoIVU)3dCvk7--S^=o&zdvBlFw3BsVYzB*!RDeI+`}M^Dz@g)@o?=Ww=?ylw#(eSR zWwy?&^Wgqd?%&yCa@dMuFADS^vjQ@Z_>m&zee(Z$0jbU;0>#=|#nzcIWu@8J*r071 ze!P8;gFUJE&t{zj^eU0?OZ3}x^2&KeQXWG@X+_t09z1x&H`i`*;p%lZE??%%g-udQ z6jtFqOq(gw**@OaY;LYIIqWh3q2|8c@s#TLUWd^Z5CwJFUs=IDQ@U+w2)-kw$Y4-1 z7?v1Q5<}wfaK>!f;&P&wecG0TgJb>KKMUY`C3LL?T?%U}1bKZ7(rz~}oY~%FyjCzA z34Ohpc_xP)(@9HRd)g+<*MCTUwQc2X-91X26tpe~(dWK=ng61aK6;3F@1;-}q}uPg zNDO)|%y;y2Dy4`%p-it@o}@qD7NnGDYKL>V`riqN;6)fctEBhGj1g9X79gRlY^M8H zm~8n8;C;Y#4(B31M1m*Jr(T>fM>UIHhXpkU*VCLeq0|v3fYLcX6Qvvww{b2ijJ5>jNGhO>k+u}OXphlaKmq5oCRA<}#pM=@Ib+A1UP!0o-2wpb zXs0cm$I{yzqvza(Eq?p;7i?{>p><&Y=^=M+J!SXK6Y8l4iZIWoj{pE507*naRMmw4 zLqH7sfK>^FSC>)^F3S>A8hrA2JkC2JBI02N6~p0BRQ{EsZCkp!#%c2f z{$2qtP6On3_G}e%I(6!MzN!j48WIal$jMsQw4`YbJ#}m8augy=I`OfIFKvFRO28y- zHNmwMRmH~UCZAos#MYU0FoApb9&q!3BCIt5joApBIwsA(&PC0*JgYy^9 zaQTX;%WrRPaO>tn_MSBOP7z$lg}qZCOV*ppN0B5dZR5DN`;a?#?lPIQgf0<-&Qs&s z(zB{ot*+h+rdUGX29>1xTMP@vYXipPijB=7MWu0_sQWilN83m>J%oNgydz+-zcVy* zy83uL#27_c*(|1~gy|I{-iyk=>pWc-2tk1T81%6?sTXOMN1@S1p>;&7B(X_Ucpqt7 zPun_zPsE_;_4DXkl`=y}iDntqASeHW0)~CC(-xYXhXDG3080%shvfNIu{b7+Xqi zqZ3LilGO{dt_0BsQkUDK=E;A2@v}P}r{m)X02V=H@(qJ^%U552#-&T!jMqj?Ck?xI z_Sn7ih`omg5HzYR7s>X?H~o7$Fmg|w(FCn2h6NM`qYX(X+K?-IR+{e0u~-U~)}msf zt!vu4p{pCQ^qU4boudU5DXMu7=IZx61p?msMF|Uq)~XPi+hB;da`ea6;hUCJw?f@Y z%#rQBk{jkh#_{BTW%cI22j4Q@81l)Lb6mK%Ls^zgCll`OK4JIXLpqoJd9@)bcS2=0 zesCb!tKGjM2vzTU?zK~9vzD$4eERuWc6PSd+8i?+7u@*qF^?Y1XowjEFsqfGU+ajT zq@~h!u;0*i4Rw8=7!)z6x#Jhfu^B@v_PKrUCbxI*uzT|XdwU18ZHuvq5={t6+PGdO@O-8V!pFVtKbZZe6vhbMTwBAS zD5c=51)$Le%Fa43)BJgxS3FPjTue__1=TqrnGH*UIN?8!zH~y?yEO{JqU~pE&>@QCg!^Bx!vtky6HFU-e%H6QJ)o zPZ_MST9_OLjgA5a%|#y4OC+H=c~>!tQAlPGDD>PxM)e|*TA{5W_Ifv28%f0XK7hIJ zb+C-I%&08#hfYHE_aOu330xvz%kr{g050G@ZjXK}OK*Nlo>{rnQ2eSV3pGeex~xV!s++qWL@;NFB7Do{g;L5Xwi zTUXuvS!aed7;CY{U<;djp$v{dOpy?T@?TUHwkjEn#uU25H7&D)32xSiLVVLo1=(q= zt-u(3^tqQ!o%Y4Pmxl`sN+=CfC8j8HYgQz6POM(0^@6e$a)05^*fT2cjq{h!ap}@o zw$F@6De&;&L+SN@G$pALbOnXj;ic#o`%J}WUfLg1@*y#zB_&PhJbRB@rjy&WZAF{+1{XQ!I*+a52s8I8-jCEaZtZbf!yy!6RJ zX)iqI)BL?sRJbPa%{SM0^58z#zWIUmwRMbDOxh`v$&9Askq!PwxM&kim8(h~hogGTGd=_y|g8up1dS8#~sLh!7 z0$fxTqjAaBnE}>l){|#AH_Sl*7FL1J zU1I4Ml%%PJNQV5(=#}k(4#4c*>2V&bu)!&D?W#Zxk zoZdmF<2BYV`uv;SMMry<)ANJEq*f`V%RTa<652s*S=$=&#h0IO_0ub8m6+8nKVG}Z z!`=OCH6xeP(M#jKAF|n+jeIzmvcMD;Ta{>Q>2Ol@R|yL7hOb5yWhwrlsRdUH0_bK9 z>>n;wUk3wx`u|BjpSHnH6Jxp-JY;CeJ4U zwu{#mw#0S0p<5e>j&eLiYoUI+t`ql_n9qB&0Hkz^jMvukev9+{SC$3C;fS&uJhnK*@wM{bpI@sK7j=gPeFngu4|ba74@+MQK#H~l>6efHW;lX`HTTu zDC|Hi|8$bGY1VesvwB`FUeM+B+x=cgdz6nkfy7naA{D7B!}`XM^>s=90i5?)-M_^< z=GJy^Z~paag3~)IXc6NxTBEdPIIN_7(B?jEr3lFpe2|`e2VI+63InU)-O9z5Y3(Xu ziiItoB>jtafVOqS81pksOHNAt=k=Mw4b{MifO(nw{jC+dM<)&hAtYRg_`Z*>&$KVdT8dEsjaa`JfSP zm*`puer}g3j1BW_VdQ>}`wG7`^ZD-gtx-h|h4MT`0cgawcF6+#9S?)dfwp$#Ihw-C z=OZWl-Y?ce((=%a6=i>GF-1kv3R4s^uPG2>fZ$1;!^TK(owU4#x4}AjQGBT1^6Nk5 z`|k zfI?8&Ox^pC65w7rR~ZeZr5X~QIVh+b-I*u8g;yLTV*`0;^Ivy(+9D>%`w3II6z_m;IyII}ZiXJ>=0tuuh; z@UUj@@q~vD4w%gv=`&1Pl2To~;CcK~0f0AjLB=3~k2VygVKA)NI@mZAi#i2fNX-q(YoU@$0AHc3^tcA_@lwYbhN*x|fw0ARkLp7a03Oka*D zqp?P@wlQQdEE$bNJ>LgU*L6$|YWAN_@m?(i^InMo^XdS=s^F{aD`lW43}tDsd9IBC zrFvEVfOn3rlPY^~2Is=bVwrhgh^Xd5onLEVbQmiI8Ks2-?p>6A{~%5RDP)jZ^#Wv3 z)`m?Km1a1!3MhS49bWTE|xDa)o6f;FVv&Ym6S_9_pLvz4I&w&7~?R?Ht ziYrM?^0~qu-fcU^91zn2iX8neksc6A^Yf*jr-T4^swlx&`BPh>P4j)OVj{T?x(+R> zow9%5%6B{k0DjE?z>?Qim&PYxp? z%$Q9avuWb&xh>Y#D#{YHb?ooK{?nSS4T~Prq+j6z__dFojw`KN$|kf?j7BAEqms=t z73=E*Y+%h1gTPXlAx*QytgDTj_4Jxi>$2=8IClgHBB`zY;=~U_Ut`1OeZa~ zsTbzUa%J-vprcQp>&pf|YW43r+qK!;bFQ=#FZbLdUK)+k5|>XWj>)7Z_?X)@mJg|LY4R4>BwZZqQN9yAIlEy^lXVM$g~`;KHa%4(D{ zl*5v0I6##JF$P>42u(}7e+bhKIt88u?f-QDzu!?90dmTGcvt13XHqGG6RJP86Q$M@ zF29!sZd4?N22*Ly?QC%V!dcFq-Jo+F*Kge7-t9+B4g)D_&;w%pb=$zKcr|MUsQ_P7 zPZDhtsOtyJW-~Uo#%yj4x%%k^*4Ga)_6d8BYq6Y4=5&v}#u+{s7E}Yn*2b8P%>l!a zVK5X{N{WWZZh}^Zlsp6{UeM1O-ix?ciir@Mc#szbN)4zA%cTova4vFqSo8F0&7Ip1 zd3w+gy(OWZBOG?B5AgE$^5Q%yiXtbT8f_BBn5;Ih=Lzz(ZkSDcR>$uFPIH8v^R~rl zmwe~dvveXNMPVr`#o9(C3i?+5Z9Q$7PFnV#)>$RLl(S*QnEV}_Y2JY?Ci!{$rJtz$2U3(43$gEw&wZv!CzLjrLRcNf8njY#b$(J1o4?lMgI^U^?lByd zuojFJ;LjEsTZnr=?-0j{l@_#x`$1ec@NFjjM7!6SeS^UaiY~qtI&vE(6SvI%EIOlluu;%uy$2_?A z6z?@KUb!=ttuN#I+$1r3fJP6tKo5qPQlpGQ7lIlF6?1>G#g-+-Ks-Rvny%~cvj#Vv z5e{2uJIK`JW%TfLyyKDAsJh=aa;1Z~zh{>Q61agJ)q?Fitr9gC% znRf(#NK?0Xzrn_4U~_AY!Jy*InJEt+9J0UH;@Y&ZpVFt*;^$&iBTs?lU{=asZ{5#Ju!kZJY|F9)F%agC;*0oxP}w!cdf!@pypCLU~1@ zNm?-&4bWQCb)L!LgtkevO~Sin8@K*ZtGAr^FDJQr?m9v4okt}R`ZJ2M(yVV-);C5B zhb7(z+Qu=Rv`h{gnwbMt%&Gn%q<50As<|hr57`22NxD)A0)d08;4ac`+e$kUG$jGdtT{zI>jGm$#?}hUxTx2lt+G z>&9ay`yGS=Wvj)Br2K~!I2lbc3QUpv_zO&-anWV%k3`gpYB)q?0KgcH>msxruAbqi z9kFg<=A_UN)#<)}-@_QG`Wu5TEoM}q$^vh4HOob49lq_L3yX_xp4==qh`mJ68Uw_R z(b_ua&Y$7R2B z8gM~V&m3JFNzT38rbw%O;;!qMDIm2>XA@FNl%-*9ZNQbwXQ`@!oiiQl>ucP({fNg; zCRyWwJ>u3`Yg)8x=)iXxotyUM_-G<5xCTX=8 zjR)D{&ti_G&8wQCPXIIz4YC54?M;dU4W1OkXZV&b6^576kw!Hg`Vk?G#G`#lavJ~4k4)Agq6~<_K4Io z1$u|do_P@+DR@#@q6@onYG@^GN2*Xnr37$zL!x;~sg=(dSZXy+0sy3xmHESR@-J~& z%77WBr~BvW%S!$+3QJUZKetEJAT6Bfqc&+e9j5@m3BRxy;6s@A_!I-fg-bhJxpH1a z&9vtJJ?Zs-aPKKv4Iq`MqRhQS=|~{)eiNRQ5?HAaV-4k?$Q1vQpc5%Nl1`YSz*Ys- zXh2ZllBaDVY32yihB$3doku%JL1m#pJ$H;Fod&7zWmFali!KUuWl^Q5wW^rJ+HdO6 zT|jjX6%#QgIrRJX)3nt8brKMemU^g(*dnp9vB|~DXSr~8htXgt+81~3^LX!ouIVI* zGJ||UW##3U1{r=$>)1ju8e1MeI%GESbZvSg zm4sjH=u0+vzEf1Rjl%~=UDr$|4P6^)n?w@tD5=i$I+`yP;lz2;7*oQ#$RtMEPNB>m z3Q0sSUD)R0g>A;e8I?(tI$%w~qsKFxbNTZvuZ{fPZ$!-P7xFk!7_BkZVhjw1A_i9! zA_x~F*uqj+n-j*wY$jFnruH~TE^p<7Pc5&L#dCZ&LX4S;t5f#r)~u~b;@>CMN(W}M zhUui`@Ng!;ABMRIp9-t?sc$*n(77^SmQwj2jts`A3?>W3-#bs+cK9GMM2v})OkUrj zz^)W?OFyl_+9ESKiu}Jx)xLL^NhuM1!nr5_KxP#{S|tB~vKDIu@Dp3VVRj%8{hQWx z{QvB|SCb^ylCAe`5h627wFC~1wtG1yGiRV0XkAq)B4P{Y zgYSsUtgcq5R@KOD)@T6Tl^J3S_vOCU3L(*VN*zdPygsAJ@D)Js^%R{iWIf31ff{2_ zzIqAIWH(N;+PP_rRpv;(>h8m>&F=PSuaY(VFg+yIxH8U`&agt4aq1Kx-ec2NC&2>g zHFka@5Mag%x{S{)XhVmK>mgaAjxZ@}M?n1T^Gp1e5~%Of6l#s?6u7J%4pDZ% z2CpDU-W4`66E`XAsz>=Dq5ItVqp2%wUEykv^}e*fqFn!OfG%T_ zV3QsSChr_ruT1`(_c{HY3`7hOOyp00{*FI<_mJb`BZf`K|M>s@jTg@^IltTxv&Gd5 zQc8fL?K#JT5ab&-oGSr)ir^azLU-BoI4p?+48y?Log+@qjyX9w;rRFkzx?uom(M%8 zO)UM1?lsBjm)LcYKS{ze21H>(25yL7FX ztpapPAY#Z#c=@~|3{SaSF9{)Y|K1UcMZ?2y&a@lTs?E~#XBWk4%wG9E`;~(LZ%efI zx%ky6^5-kOH`Mj01fR5JysGe3RaD^)30x z&YBE6wJWSD$K88J)Q!hlONxn$ixu5wV7=)+r**m``DsvvI(_^f#SFz2dc%#o7v+H=ZQ$oLG zg`MkTjk15HNHzwC*Y@{O5g$!}4O!dzi*2H0*`udi2Lw#<)cDvWjaXQ*;M?ER^q5u( zhL~8Y=y9sJzZdXglwL5#YGMj7kqf^+3zCGCx14_}uld0E5!R{DsCUH{Hp=!}zMl2e$zpe+ql!QM<&66ePB}Y$z*dBqBLn;Z0|GGk7v4FtQ`!HYRsF_cc{6bH-JcqvM*pcUu1P z*KavJo3S`*=)1t9M^AY9V$H?Nfz3LxUL{hn#8i?yYqkmMwKjo#5+LQ{CI9;XfP#j3 zQa3kN?fa}1oR?xT=V@9M`wQJbRYO&4^%!fWjt;e7>`1W$!I}LQ=+{2CU134@+s}sy zSlI55Dg>O=ii`oQXK_?>e4+~fRpk&dbeqWK#fEhkNfAOQAfGkwwszlleeYQAP5Y3D z3gBBNW&d{OOU2$!2~7-%lvRjNMfEZ%YDQw%TGAS`<(ez6-%{5O=hf-JJBzQiOF%^Z z)J234RG=?KAtzA*^IYut#A1u}VAE98jsCY*{T(Su;rI^>!%!#$v497!v3lHz$;?|4 zo!fHWO>v>!?uQw>&ySa#gnuWIEY+=BdcaF75|et!X}c#~ znJ0T9fxG8}x8OW@k1=k`)i3)`mf}hi3(ydwiph*rjPa{dC|Uxx2=i&>-i#f%-tN#4 zwt{@x`oH~MZ`~@j&1fbro_7aC_{-lOa&)YUvlkaj9{>8B@Bi~>hOXGcl;nTg z9{uHvQNi69Gi@4Dei>_slCaic8c$VwT&pVaxeE-dUfcaQJ+kT`B;6?GdQ|dl{;7xY z0p91>j%*A#wf8e^jh!{%oQgC8anqARB=v(HCb3wyVBYv%wy1yc%C(l9)w@>6%-e=< z9)8QiZ_k*uH8Bf6Kl+tNKR@Q;a)U85#Mnb4$VUm-l#iOTWwROR`=h-u*=w0aVc1JAT{IkPH`93Ri{u4Y*eI2Y(PiEcA!)pNIk^gEyejCQ#K z;0=BhbE`C|Ynlr0!PrF3Q4>-J-fP=a2JMr9T`)1#s@Vrl= zG=jmCjb5axD(c$N&KjIIv~68lr&UyJ7)G9dWC#N}QLfjN&Pc7!D~?ih8=P0S3}37Q zodN*H7;^Cx*Cbsz{wnaNt^O&DfQkW0xLO4R>)KN{`gxF%oQXN=wGD~B?+GDn1J1Eb z%UhnId_C)G@7B!NzMj>p&Wx&oMf{WuZcHf6HQ?y24XB{Z(UddR&#=CllK2TX6Tz4S zsBVO{rL}&~GC7mY76jOPMlnMgbPf1o|7(qk@fp1gV1j^gv`ZpzjuTV=5<1pTH zd;kF8npV>tk6+0Vyl{4B&NtuQ;m+MT^Mxk)kA8g458prG@_em--PVOCx_fATflsX< zoW?oCfgL$V&ft87t(^)1Ru$4`2!Ua>Audk83 zV?*V!#vp_8$l@@N`(fws7$^AazU0dKnBt-Uv7??l?%qA&Pk;P|)6-KV8=k*B=f@v@ z;o^KvHw3C`PKu&Df9g4C97qJ zbISKVS~M(<=0)vXs2j_A6te`Y47NOb=PHg*YMi%)YN78Xg-nQQpSSLU^74m-h$*e~ zC27G)j5~W6Q^7&RYJrShHx&6gz!4FMnaoh~ zZ?~5%XnjxV5t6HkQ*S5={yShuzHSapu3G|eASX?}ts9Fad2he7){u>0OhvNV!8ca) zb?;KaMpr<9?UI$P$lo6&8q#TgZY7*%z zh*2AyY>ify0(38zDi*iylrugekD@?A&IWtf1U}ChWy*$Kd;Pug_*p}m(0pN7Z?GYg zV=P{?rX)3Hd&plqRm{$xdxzD~zqQ z)x0P!AI8T{lr(q^1BAX~v+n8pz-qJP-h;c;bgJB&{5NNzMym zuK@&Z3oK6kJF96L zM>8`tP2j~#6|WO9*C%yY~Rfo3@QVM`3k{ZWaM4<0f*loQG zr9E6Z&{{kzA-5DtMgG(vz?Q;MRhD*Eb8@nvomEs71<=!uh0BYc7zJmG7^SnHC=f4{ zoSg8r&cnKP)UCl9DS(X5Z{_$0!jKrEXw_eRfC~svx-E*5zjJ7%-zzuYc|+wZoOg6x zrwufspA&|tz=uFiM%DRc>?#nfuW-&54G2r!2);IW=P)?6^NWGLi-chyiQ`B2t%uaQ9iZ^fhgGiZNc>cChU8}saw`S{9!9OdH(n!)u zdCprA!Ph?IvaXWV=@%k7J1xk$E7VI$ob4105O0fJvuM@dx@~9F-m=Y@bR~J;9i68Z#Pt`v-WPbkX zDUW`7#>IP8UO~UE!bjr;w`SK6fLhStoK;&h>{s%Kq91izD+;?F#h=V#?n=Uc zHApe?S(DgzU*B8M*gBMNTrY;@{;vP`+ZUgFko~#L*U@TG<7QjpjXd4s#0}3oE#hB#&iFQ+jB#y^NqOZlew#GQ z_>8hliu%frPip%|dOM(4TKHAZMSr*IbE!H3}H z5AX1YKR)2(PD49uc=_T5-+%ur&!4X8R}tgqYTtC5;wwAa8x^%t-M&?DBqkNq>3VV& zVkn{`{Z8`#UN81AKFrh{eU*1w61~ONHKuaJrot5ER#R+a@({J%e~6Q4`E~E@mEgn} z$Pr@{2+PA-^LZC}aQBQqeD{!c=9$kMR+|mKJbKLIUtelt0Ul#*sr2OEW&7kO4_vMb z{Kd0NYucF5~O}^sRf)kHqL(VXSVdt;EF8NTqKgmKw=++q+bT7z4(`s^feB9zHkMlyk zwDf)8@?xU`pQCu0zvTf?NkEln3zb(s_t@?~R-Ua>?rUAw)4myF=Hk4g?-P9|+J1gj zF!htKTQhNLQ;uMjrm$GdnawMXj^+iph+JOwynL}#&?p*GvKZ{^*ZxPkUSqYw?<>z@ zF)IrCdL3DWFl2@y6#KlO!g^5?^zBx%1;~uGIB#*5@>!0$t|x)V6s5QYC_jG`<;y8; z#Vn(aO6u zcx%bVPTD6^+-58yxpZnWsqjmo737?_nw(7TPP<^kPVx^FYQeUH^bqDB#+N+&&G$A< zuBu8EVpA5H)^Ybi%jwySAw+)u`9~i8^ql4S8cYMUIQ8`9ZKtu=mvOIZC+l3pdNsM4;}w1msJW^i>AVOhiz)4-m1supkPhj z^rhXuY~*71IQVa@NEEk=@vx~X&(V?L!M#)N+&`slJ+7{K`s5`){rH4uFD?O#^EJj9 zavxDqh~4D>_ZDE~Pj}z1MbCGX{Ke3%G9j$ktOI=)xN~p8Vo`B))bQ88FSs~g^WwPx z4MFn0YFrl{Q()%9njz zoAxUS-S+cRvJ8V(Qe(*E7-;8-qobDj!qT*cGuu!%md#p^!_~4U1>UXv_=R^07-y-R znVx4|Ym%oze;M!U$roPFC__q#Zs=L91~w~A`oQ45Q`PKi9TPs~d@rJ3#xtKgW(&t+ z(NNV2-i4?@PPd74o3U%b;H=%M)0->r?<0+>@>pw>e$v*Hs3Ig{$Z90hXEvR3{&T5D zYRoXk2|E;r+Toomf_#p7Q)8?q<1uIvCWg$=Cvq10K9Q0jq@8Mg0fnr=JEIx|jiatA zU2`_6eOq!x??Jl}LI_G9$feWsEe;Ncv9mrV+TbYoXNr!a*@-PjKqYT~7jC~epxJo_ zDHpemh$OEWh;ci@c`|9gn4B=it5qKR-Cn!GfO&kzc?1Z@-<@`eIlGs{Zz%{0xR{-Q zJZJ3+*ya519RqILWiWO8$quMie$L3-8R; z1wTD{#bwE_pRD^$ubh zsB6dB>6}0R`7XytHO9ea-SeOS^B{&01j7d7*l=j5!WY0sE16x``HaZe!aW6$q> zFMFe6M&99!D-s13lT`>Ur^FZMF+3$?TOaeBxBSnXwe>sa_fI&iF~n$yF%k!%>w1p* zR%5&*)HAg=tLmD%?x`wET^m-*sD9=_ZXXD@6L2?mg?DC37_Chhlgq+36VKmThc&KL zdL!qTE7t2kjv(~R!GoRwVa>V&c6Jc*TyL(Js8>};=7+LoUT&!2h_4ls9 z8AFmx${90e7dt}5A8%jDw6g_u?U>D4>bfH3h)8A_dWJqht_cBBG=vZf$Yr(-JnY+M zw(X3nb~H_`U=BhomHiYItcf8Ji*|tO$be>5xpaIur6X8}^C}ovS2fNnD3D^H8?@_b z=ph9|OpzQD#`>x9ubk;yY+?7Qx4A0-tn5vfyafVm=>V{{w3?2G@K^Axg{`fg4H{Tj z1$en)rHD0HEZ`9nRr#M+0TC;OP9ZzrVT{J+K`CWMbS;@z;y1e^!kD(=fRl@b*^l{l zlYe7MSHsSC$Gp9S4@B`j6a^3C3k3i&RqMF_%_;M_#n+jm;}%#T+3@S*XFUGtB}k3) z6`<9zv1?3H)|Q_)1QIt!$!=PiG27pBPB`Zk?aKgTvY4j!(rJTo1SM$%C1VdAvYgU$P1)4PG=_}8Qk6A4vNR4rG<)E_TbYZ`&ii#0ET&FYF z8f{T5;E1#8!5bxlPa2>|Rx6xTlyiNvrNDTHvz8PFsz&{BGjgr+@w?8ux6Pl||M`1p zgIEK$2FVP4=Ed`YzFTp061jI@m@OQqcN&^@fw6(*<%Wy%ju;G*OGn3RDvdYw!8S62 zToiUvMkGRl>DFazeZp;o^u=C!sY%L#ChS&=isUrko=wUW@932bo%(Iv~>Z+lxgti&z zJGeMslY&lVYZS27>Sx?Oo{{VNN>%*hCCOKP$FF{;b(YFmX7y+ZXK@~^^W+>b2AZbE z7>~1_7$cir?Ge|j4P6(>A%jgt)f(6VWmKQUTm$yq@O<7AvD|hV*rH^gy}q+{=9tY} z7K@5u80a>U^=jb7i>1&xXj|_YAMASAn{6AgNZRAlk2IEcraBAW89){I zLkOeZplgd<?T^!fh5(jtsYAe5G3oDd9(wRSiqM;=__m9?)3MFrtfE}wr@tmi`{|L^egQuKvP zX;p9AIrDilwbF+e*le`w-)+K9ykU3d^4PUtKFYO@$v-(z&l=iU#cVdCsvOP>z9@r- zkm!4L7a4|uI0zvXK_SLxoHXI_s`l@TSYy*PSO-<@$vKi@X2=6W9|}O0G~ve*QzpeU z8j&SY0tR|*QSAa#;by1X?u7AW0|M#}X~@NrPI>5~t))kd z$CzAP0!9$v^X}6hW@JnnXu_RQvCoMYARx9R-Nju&Ml*$L;y1PNi>jwF z7A9Z<0kW|ZjyyF57|NNQ3%I;Z{6{LUWEBZC*ID}=#$nu&apMjEXAQoBy7ep;HS@)s zzDsP@i5NbyAl66QrN`Tqy-in(Z~3tJKld@R!_PNH+xxB6q~EnQQosOX3>1a`Gz==x znBQbuWnW23%@s8t>%lnT>`ucs-`=0rK(`tA@rUO;dv?KQJ&>X$g@m&uIK2hx;)2!0 z(%2%Llfhf90=W#8;2tbk+*@#Z@0g>L1$XYK6T-5*TR$(Y`Q8EF@J=Xrl2`$*QnTD2jCm(K_KF41i=_wL=Hoz)y49~V)sOJGB{ z&g3ZjQ2tm!{s{Lq0yQ~CuvRqztp#8HEcq$oktD@ZJnhU&J5`uIb%ia2P_9Lo;RKDhL%*Dq^kbe?IgzP3wpe+L@pa$K<-e}AwcFRD&75A3GY0Qfa5P3?=!I?**sMFXcni7AiAv{; zy~h5^e&|VY9YrWl0k`*-rggNfzN4mbfL`}{HPCmOv}$Z`cYw7U?y+Lu@cweqdZ8%% zXRK>DJzG%Mp1Lum3)zs95JF}cBFp8vi1ZEG#WD$Yit>xaVZ5QLYrHqiTean@yv0~k z+WJM?{8JU>Y z{m9E#vsbZTwSQ|XG*{ZzF;Xhq22*q_WCYK@A|M3VCg`|wd!(D)$~N?V z9iA=;qLdCrulgEfjIGEfPw}G#?G`QA86i%tOp}1%PVzsBksf0I!}y&70MHK`>iU#B zXD9edm4v%Z&*eqWYB}6~PgvR8rLMQxI*iZ%nyz#J*vcW!PRYLtvj}MjTG0q`+gA6s zAaGA)ZKuuGXvOW@KRo2l-39Y`i?2K{UtI9Zqo+K5azPA^s;WtG0NZfer2T~*uB^%6 z1WcfMaK`;V-Q^Ge^pHE>-r@M@n8oRW%2zZ^L*;8kgnlz1+0btW)|YD@KYGRw|Mmlq ze|*B`$px$u63Q~Nt|ZuYCqe!KH-u7Y7YsyL$3P5ga^j-(b(^@dKDKlxXAEMcIAq8Kc25uJmH0ewi#(Htf>-d?hoZY= zC&JGA%gYVVo?P(k z>6&hpis+8L`R4G&KEeFPT*1iAI9fO5z%aVk({JZ2P8QUzEp5b+<#JPms4}OgXVlKn z)RwBU#FTjc@`CSwc*KAHj~{sYuaAk3E}$1M6~ zD^e1=ZeX)Ytk;3na;*yUBh72-UUBbsHoR}*KmEUqajKr4@Kv((;|U-s`SW-lq2drhCg~OJ5wdV5}643MtROVzFqLFIoj+ioIVL zIyT)vx6Z^sY0=NbcwIMzieHXy0Zmg;7pZ=Dlr9KX-g_+m+N`5!o#AEtg+W@xfzDE z!sOY#_k^)_YYFF9)W?OitSNPl)fmUM=X)OTyTMZ(!Cq{_x#HPS1`xIXPk&1|I+V zl3#y$%EkGb5Fn?*Tf1r#cH25)1Z?fdHh_)X{mXs+_P_m||K-2^SML4cF4)9!wdBWN zf8qJ#3m!ju!E(8wA0pOzPLGahTE~O?C*1$`F83ea;q2Zqi@V3%xqrrgo_x=L{P+K$ zdvp$+AUS;=h4Gt!B%rN=0;^Tw(DpsYCv(p3%&^XJ_uhiK@m#zdxH#_^`b^3ZYmC}{ zeemlVjg52pRj@6wYJ=$p)75lzP_dfzz`iW^JZv8jg==Sl3})##d?`xLPaFHBsbcr($(ei$MD-J;`~GF$U*7 z-YHGN`iw2MkCoph|B&&8yXss8VoUNouv!j;A(4uRmL~q@0|qwldXLI|7cvqf6vu-3 zqNQmnW{oTS=u8NS<+9&)U}U!y5&jrllDvCv&q(-lKqx|?$5KpH4 z#bb;`OxRL&uAU{gu|U1+6p&NtIy7Xl*dm%ZB{GF7LFLO{8FigzdHp^nsCG(@KwCb? zYs|RIG!qLZZ9htO0EQxr)MlzBHAW~P32MC;s{`f8pM@r}SaN&)+}g zm+znPKH+YF5KOeEo;ZpzrAOJ~3K~xBEUD9vga0dO>s-ktA~gfL`v z8%P$(EBbk0J|AdjHB}|J6U%JT(zFie5`8ChU8id4WAJKr)YotD9F5z*cke5lwS^-t zR6b)}#+4+}Td;2I-pC5*SkDj>L!Y=f-w=ax|5I|?P3gMpyXtuIG4>ZS*wLQOuvpA! z+Db+KO8gL`&~=G!)3aW66d`AGCHc40`J!M=##fbU2TaL-U>Fj4fShb$tZBDK%3A%Goc9xd3r(w^ z)3z;DHJyf&NMP3~$3KQJfeBkH(QBUJ0SNds7?{}y0k$z_;rd&h=Xp9AovxcvM*^ia zZ7uA$wXyeJjFwf4LaRGc^lEpy0mg2DDYo*jfB>&^+L3G_^gx4naD{G`$LG64!Ps`k zN#XwQysyJJj9WS!X7PXhc9^cLx{)hr>#}exruf9(+y~~f=a+B!!?&P-#=OI4+~D>< z_s@US2mG!lsM)b(QahuVqqb|Mq-c871HtSa7FUn}b0xVjiJW>WYq)>^m_Psd8}8pb z<@DqT?;X#cT=4Jz{!^*wmP$(LyVm&+`IW=Rd{OiJUDmmH!JO6n`Jey9-~ac&ap&PF zAq9T?&tLiP|M$Q0!@vH@`H$zMRfgU`boyMAfi6N2hD~JoV#$-|&seQi%#Ru{!pYeQ z^P?GgNL(y8q*c$zU)9GWZ+=MT^FN=x3rQJcJy{H!<%+%^O8cV2drw{0G);xIhMXf| z=*y?%_nsdH5Mxvw8s$cgd(M{UGL`nGYc&+{veJ5Otwl@`EgMy+jX_kF`P1s0T${kX z$wc+K>&w&qo3~Dooj;evs6K5l2W| z^XKF9SF0Z>ynf;AY{6{SFq>C2O|AQ5hQ9CFtb4jH&~<^K*KWuWaMRD*oe!!VQMZn& zR)Dbbz8IophM*b^672*mi9kxZ{JTuIY5i8!e=(mio7L2fnx9KH#3=N=eqIQ%bP|kR zYCD}DlNY;r_viGv34)bE@u7fhMf2wsdV%4f0rtBe@=-T1 z^O4u*4LShqHr5&!pX~c^zSHCT!a3}3$1mRA39`MC za9oCsp;^hU8e|gD^=PSA)Pr$G- zTd&zf;ZmF1ErMxlPqu-x@9y)LfB75tzP$@rp8j;s|NH;^gP;HBGYAeNb8SuZ0%>66 z%VMQ~Fco0vo^AL?_z8gj^}qcWY7xGBa7Os&Kk@v@3w~Yoa2_EVRiU<9FyM{*&}Sc` zy-;aS6a%Iq42I`VI@Zg`>Dhwg;~CCdPEK3endNffSTD6*c(lEfokexk?^(8LP^Dv6 zl=r`zT*);DgybnNmK2c~NUp+HHDW!+sRy&TfFy&7Dn6F4(q`P1`+X~i?KeKh-Tg)0 zasV4QRgj(EiWjOo-qz|&Bo`6J-MJ&L+?;lZ>hrSJk+LuZ=!bzJTIwdTm^D^-DHM+F zy-9Y2!L#WTU1#XJK#FFXC)Ox7`f=CM6@`CE#dSg;Mykp)pS8^9YU|h36**`6J`(!O zw<&70@ZYb)4S0H
FYPYKRBgpvkuW9?SV zubR3CEbXkux=hXkF+%7KL!T!X0u>+}X+d@;d3uLu^(CJFw>^D$%k$GlI!#E$04ac2 zY!Rvxv(;>nLMIVY5z`YsKF6OA`uW#BkBL4>p$mZ(3t|u&5VK#{aUj+~_7FQrvbD0j z4kSqih($XykxeevgWx11Nok~e6pK#=JmpXN{14+(&;R^s_ZRtK0Kj1!#+NtDJ5b=n zyrJM_1!2H7hQ(~gH)nTwc>gYoqn2S9`1P0PJbQM|dKp=50#h~0nh%5sepw?+hDFWk zH)otZP>=i7YT)~S|CLAocn-lqtS0oF#$xI@-eyc1uo!%{3_T2efaFN$13&)zuhibL z_&@%R6}WT%lm~yj%acbJ!bTz>dCM9GMO$35yb(30cmy8>eV82a}Q{keULPY&sE&=cG z0L)myG#L?#-Ip=H=J2&|Jh-*h+K`gAbBAF=(>jJW(#~q;t;c%9qHd^b!PSnc@@zJd z5DhtwN!OL@FuU^JJD`Pk7$aCK7}12davonftW6jj6zp)hB>x%f^yfvudrwM2iiQvk zmzO<#pVW6g%0x~2Jc}Zis&oP?)HBb~d`4S&d;xCKpq2B!PxM2kFP&AB$bxYnF@KGS!G&}Tx71&|uA#~=91x91Sn zv(=8Y7ftZBQ>)rbYRzbu_llzat-bkc|5MK|wW~GGPa@Dz=oCi5c!Sr@IA?Va*)0gk zR*ypgf>@quB3q@yS*#}iaucD&!#IpDa~uGG!}wi}DR0=Rm>M!jrhOs%b!D}MR@3Asz^DQ_Sf zwdH9}XPn+$(9}YT9gXvNsaU=YJo)7raY&F1{qv3={_Q8e`{O+xe0P_l#WDB4z0c{r z$Gmv4hM35d(&jCE#$y6+MkV_aNIZYOB!tB2*@AZFaSrZ3IAiD|&!3&sZM1R|f@r1g z+N718;NAT8>npAnSt9gS)sX87Yb&xO#1)Ql%*7?ZPF8`YB+p+u2Xb5e7g9>U{WG%u z9z!AxiP%Bk3Gv8KH${xkT8`!(Z@^cMz6-=)2{996;cbt}VR^4+n%{Qfm|Iuc`mLj_ zJkAKlC?&}j+jwW4{<|BCQu=u@8HNEB`|EqUbs~h4ELiiIR#Kk${?03>p{^@tbw%4) zTxp^U0s2n)^TQAe_%bHX_WJ7GjliQFKK|ITBpFv(>e^COj>U007b(P%6}K&Lri(U`urx_$I7Wq z#9-0x3pyOXzx1^opH~bKe{)g0~t7xbF4IKD_CSAv>qtUOB&_{QXtLZzC7q zgmTjslNAIQH5D+K?40TaNa;iz-2&vAV$legSfif>B=Xj3@GuVJ0011uVSH^#?${O_ zd2sK92lr37cYmRLU*q}l$6xs6=a(#3fqqDM+mKSiIrDYfz?P)JR+hGHfK0zxbAEnK zx9%a@l6{m`f15ZunQ`x%6ON8+hHgn)H+WN1HEWia9hbwhwC2J3<-iZ$KjQ4(32U?D z>~z8L*)cEtV?B^_y7k`E8pPX@#ArMD%jcK$ec%?t|G!~HwAlV34kVMU!Fs#n5@6MmF&dy)1>R8D?sEVDDWw|+!XgGoMNY6@C%SH+ z?*r}3GG8>zW;M<^n$~F$X%i_Le2`)V$7J8O)h3W4Hm6(%R|&3o!B@^=Z7yJo{;H}< zI|Q7?7}*g8(`0rSGV3m~TB;2lMcB%YqNJZZkliN#kg*nK^BHYhW1X(?lp*v{tNvXo zKKG)))L7v(2J4EY>rJ*av!ft>jf%G`O8oPAP1QJNtuMJ(5j_r(l!eVYuwL~fu{+jz z@(QKE6;Z#+dz|+w)@Vm-WYyV7rJEq8bj6Zy htNoSQ1$wVwky2Z<`(Ws|$$uVV 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 literal 0 HcmV?d00001 diff --git a/webui/public/dash2.png b/webui/public/dash2.png new file mode 100644 index 0000000000000000000000000000000000000000..627a43270f1f843c16d2a25ae4708f98299637e9 GIT binary patch literal 120694 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­N10i=Xm7+or8PxH6VHT3 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 { + // Extract the key from the name attribute + // Format: connectors[0][config][key] + const keyMatch = input.name.match(/\[config\]\[([^\]]+)\]/); + if (keyMatch && keyMatch[1]) { + const key = keyMatch[1]; + // For checkboxes, set true/false based on checked state + if (input.type === 'checkbox') { + connector.config[key] = input.checked ? 'true' : 'false'; + } else { + connector.config[key] = input.value; + } + } + }); + + // Convert the config object to a JSON string for the backend + connector.config = JSON.stringify(connector.config); + } + + connectors.push(connector); + } + + return connectors; + }, + + // Process MCP servers from form + processMCPServers: function() { + const mcpServers = []; + const mcpElements = document.querySelectorAll('.mcp_server'); + + for (let i = 0; i < mcpElements.length; i++) { + const urlInput = document.getElementById(`mcpURL${i}`); + const tokenInput = document.getElementById(`mcpToken${i}`); + + if (urlInput && urlInput.value) { + const server = { + url: urlInput.value + }; + + // Add token if present + if (tokenInput && tokenInput.value) { + server.token = tokenInput.value; + } + + mcpServers.push(server); + } + } + + return mcpServers; + }, + + // Process actions from form + processActions: function(button) { + const actions = []; + const actionElements = document.querySelectorAll('.action'); + + for (let i = 0; i < actionElements.length; i++) { + const nameSelect = document.getElementById(`actionsName${i}`); + const configTextarea = document.getElementById(`actionsConfig${i}`); + + if (!nameSelect) { + showToast(`Error: Could not find action name select for index ${i}`, 'error'); + button.innerHTML = button.getAttribute('data-original-text'); + button.disabled = false; + return null; // Validation failed + } + + const name = nameSelect.value; + if (!name) { + showToast(`Please select an action type for action ${i+1}`, 'error'); + button.innerHTML = button.getAttribute('data-original-text'); + button.disabled = false; + return null; // Validation failed + } + + let config = {}; + if (configTextarea && configTextarea.value) { + try { + config = JSON.parse(configTextarea.value); + } catch (e) { + showToast(`Invalid JSON in action ${i+1} config: ${e.message}`, 'error'); + button.innerHTML = button.getAttribute('data-original-text'); + button.disabled = false; + return null; // Validation failed + } + } + + actions.push({ + name: name, + config: JSON.stringify(config) // Convert to JSON string for backend + }); + } + + return actions; + }, + + // Process prompt blocks from form + processPromptBlocks: function(button) { + const promptBlocks = []; + const promptElements = document.querySelectorAll('.prompt_block'); + + for (let i = 0; i < promptElements.length; i++) { + const nameSelect = document.getElementById(`promptName${i}`); + const configTextarea = document.getElementById(`promptConfig${i}`); + + if (!nameSelect) { + showToast(`Error: Could not find prompt block name select for index ${i}`, 'error'); + button.innerHTML = button.getAttribute('data-original-text'); + button.disabled = false; + return null; // Validation failed + } + + const name = nameSelect.value; + if (!name) { + showToast(`Please select a prompt block type for block ${i+1}`, 'error'); + button.innerHTML = button.getAttribute('data-original-text'); + button.disabled = false; + return null; // Validation failed + } + + let config = {}; + if (configTextarea && configTextarea.value) { + try { + config = JSON.parse(configTextarea.value); + } catch (e) { + showToast(`Invalid JSON in prompt block ${i+1} config: ${e.message}`, 'error'); + button.innerHTML = button.getAttribute('data-original-text'); + button.disabled = false; + return null; // Validation failed + } + } + + promptBlocks.push({ + name: name, + config: JSON.stringify(config) // Convert to JSON string for backend + }); + } + + return promptBlocks; + }, + + // Helper function to format config values (for edit form) + formatConfigValue: function(configElement, configValue) { + if (!configElement) return; + + // If configValue is an object, stringify it + if (typeof configValue === 'object' && configValue !== null) { + try { + configElement.value = JSON.stringify(configValue, null, 2); + } catch (e) { + console.error('Error stringifying config value:', e); + configElement.value = '{}'; + } + } + // If it's a string that looks like JSON, try to parse and pretty print it + else if (typeof configValue === 'string' && (configValue.startsWith('{') || configValue.startsWith('['))) { + try { + const parsed = JSON.parse(configValue); + configElement.value = JSON.stringify(parsed, null, 2); + } catch (e) { + // If it's not valid JSON, just use the string as is + configElement.value = configValue; + } + } + // Otherwise, just use the value as is + else { + configElement.value = configValue || ''; + } + }, + + // Helper function to set select value (with fallback if option doesn't exist) + setSelectValue: function(selectElement, value) { + if (!selectElement) return; + + // Check if the option exists + let optionExists = false; + for (let i = 0; i < selectElement.options.length; i++) { + if (selectElement.options[i].value === value) { + optionExists = true; + break; + } + } + + // Set the value if the option exists + if (optionExists) { + selectElement.value = value; + } else if (selectElement.options.length > 0) { + // Otherwise, select the first option + selectElement.selectedIndex = 0; + } + }, + + // Render connector form based on type + renderConnectorForm: function(index, type, config = {}) { + const formContainer = document.getElementById(`connectorFormContainer${index}`); + if (!formContainer) return; + + // Clear existing form + formContainer.innerHTML = ''; + + // Debug log to see what's happening + console.log(`Rendering connector form for type: ${type}`); + console.log(`Config for connector:`, config); + console.log(`Available templates:`, ConnectorTemplates ? Object.keys(ConnectorTemplates) : 'None'); + + // Ensure config is an object + let configObj = config; + if (typeof config === 'string') { + try { + configObj = JSON.parse(config); + } catch (e) { + console.error('Error parsing connector config string:', e); + configObj = {}; + } + } + + // If we have a template for this connector type in the global ConnectorTemplates object + if (ConnectorTemplates && type && ConnectorTemplates[type]) { + console.log(`Found template for ${type}`); + // Get the template result which contains HTML and setValues function + const templateResult = ConnectorTemplates[type](configObj, index); + + // Set the HTML content + formContainer.innerHTML = templateResult.html; + + // Call the setValues function to set input values safely + if (typeof templateResult.setValues === 'function') { + setTimeout(templateResult.setValues, 0); + } + } else { + console.log(`No template found for ${type}, using fallback`); + // Use the fallback template + if (ConnectorTemplates && ConnectorTemplates.fallback) { + const fallbackResult = ConnectorTemplates.fallback(configObj, index); + formContainer.innerHTML = fallbackResult.html; + + if (typeof fallbackResult.setValues === 'function') { + setTimeout(fallbackResult.setValues, 0); + } + } else { + // Fallback to generic JSON textarea if no fallback template + formContainer.innerHTML = ` +
+ + +
+ `; + + // Set the value safely after DOM is created + setTimeout(function() { + const configTextarea = document.getElementById(`connectorConfig${index}`); + if (configTextarea) { + if (typeof configObj === 'object' && configObj !== null) { + configTextarea.value = JSON.stringify(configObj, null, 2); + } else if (typeof config === 'string') { + configTextarea.value = config; + } + } + }, 0); + } + } + } +}; + +// HTML Templates for dynamic elements +const AgentFormTemplates = { + // Connector template + connectorTemplate: function(index, data) { + return ` +
+

Connector ${index + 1}

+
+ + +
+
+ +
+
Select a connector type to configure
+
+
+ +
+ `; + }, + + // MCP Server template + mcpServerTemplate: function(index, data) { + return ` +
+

MCP Server ${index + 1}

+
+ + +
+
+ + +
+ +
+ `; + }, + + // Action template + actionTemplate: function(index, data) { + return ` +
+

Action ${index + 1}

+
+ + +
+
+ + +
+ +
+ `; + }, + + // Prompt Block template + promptBlockTemplate: function(index, data) { + return ` +
+

Prompt Block ${index + 1}

+
+ + +
+
+ + +
+ +
+ `; + } +}; + +// Initialize form event listeners +function initAgentFormCommon(options = {}) { + // Add connector button + const addConnectorButton = document.getElementById('addConnectorButton'); + if (addConnectorButton) { + addConnectorButton.addEventListener('click', function() { + // Create options string + let optionsHtml = ''; + if (options.connectors) { + optionsHtml = options.connectors; + } + + // Add new connector form + AgentFormUtils.addDynamicComponent('connectorsSection', AgentFormTemplates.connectorTemplate, { + className: 'connector', + options: optionsHtml + }); + }); + } + + // Add MCP server button + const addMCPButton = document.getElementById('addMCPButton'); + if (addMCPButton) { + addMCPButton.addEventListener('click', function() { + // Add new MCP server form + AgentFormUtils.addDynamicComponent('mcpSection', AgentFormTemplates.mcpServerTemplate, { + className: 'mcp_server' + }); + }); + } + + // Add action button + const actionButton = document.getElementById('action_button'); + if (actionButton) { + actionButton.addEventListener('click', function() { + // Create options string + let optionsHtml = ''; + if (options.actions) { + optionsHtml = options.actions; + } + + // Add new action form + AgentFormUtils.addDynamicComponent('action_box', AgentFormTemplates.actionTemplate, { + className: 'action', + options: optionsHtml + }); + }); + } + + // Add prompt block button + const dynamicButton = document.getElementById('dynamic_button'); + if (dynamicButton) { + dynamicButton.addEventListener('click', function() { + // Create options string + let optionsHtml = ''; + if (options.promptBlocks) { + optionsHtml = options.promptBlocks; + } + + // Add new prompt block form + AgentFormUtils.addDynamicComponent('dynamic_box', AgentFormTemplates.promptBlockTemplate, { + className: 'prompt_block', + options: optionsHtml + }); + }); + } +} + +// Simple toast notification function +function showToast(message, type) { + // Check if toast container exists, if not create it + let toast = document.getElementById('toast'); + if (!toast) { + toast = document.createElement('div'); + toast.id = 'toast'; + toast.className = 'toast'; + + const toastMessage = document.createElement('div'); + toastMessage.id = 'toast-message'; + toast.appendChild(toastMessage); + + document.body.appendChild(toast); + } + + const toastMessage = document.getElementById('toast-message'); + + // Set message + toastMessage.textContent = message; + + // Set type class + toast.className = 'toast'; + toast.classList.add(`toast-${type}`); + + // Show toast + toast.classList.add('show'); + + // Hide after 3 seconds + setTimeout(() => { + toast.classList.remove('show'); + }, 3000); +} diff --git a/webui/public/js/common.js b/webui/public/js/common.js new file mode 100644 index 0000000..d0cf5eb --- /dev/null +++ b/webui/public/js/common.js @@ -0,0 +1,44 @@ + // Function to show toast notifications with enhanced animation + function showToast(message, type) { + const toast = document.getElementById('toast'); + const toastMessage = document.getElementById('toast-message'); + + // Set message + toastMessage.textContent = message; + + // Set toast type (success/error) + toast.className = 'toast'; + toast.classList.add(type === 'success' ? 'toast-success' : 'toast-error'); + + // Show toast with enhanced animation + setTimeout(() => { + toast.classList.add('toast-visible'); + }, 100); + + // Hide toast after 3 seconds with animation + setTimeout(() => { + toast.classList.remove('toast-visible'); + + // Clean up after animation completes + setTimeout(() => { + toast.className = 'toast'; + }, 400); + }, 3000); +} + +// Function to create the glitch effect on headings +document.addEventListener('DOMContentLoaded', function() { + const headings = document.querySelectorAll('h1'); + + headings.forEach(heading => { + heading.addEventListener('mouseover', function() { + this.style.animation = 'glitch 0.3s infinite'; + }); + + heading.addEventListener('mouseout', function() { + this.style.animation = 'neonPulse 2s infinite'; + }); + }); + + +}); \ No newline at end of file diff --git a/webui/public/js/connector-templates.js b/webui/public/js/connector-templates.js new file mode 100644 index 0000000..f093989 --- /dev/null +++ b/webui/public/js/connector-templates.js @@ -0,0 +1,475 @@ +/** + * Connector Templates + * + * This file contains templates for all connector types supported by LocalAgent. + * Each template is a function that returns an HTML string for the connector's form. + * + * Note: We don't need to escape HTML in the value attributes because browsers + * handle these values safely when setting them via DOM properties after rendering. + */ + +/** + * Connector Templates + * Each function takes a config object and returns an HTML string + */ +const ConnectorTemplates = { + /** + * Telegram Connector Template + * @param {Object} config - Existing configuration values + * @param {Number} index - Connector index + * @returns {Object} HTML template and setValues function + */ + telegram: function(config = {}, index) { + // Return HTML without values in the template string + const html = ` +
+ + + Get this from @BotFather on Telegram +
+ `; + + // Function to set values after HTML is added to DOM to avoid XSS + const setValues = function() { + const input = document.getElementById(`telegramToken${index}`); + if (input) input.value = config.token || ''; + }; + + return { html, setValues }; + }, + + /** + * Slack Connector Template + * @param {Object} config - Existing configuration values + * @param {Number} index - Connector index + * @returns {Object} HTML template and setValues function + */ + slack: function(config = {}, index) { + // Return HTML without values in the template string + const html = ` +
+ + + App-level token starting with xapp- +
+ +
+ + + Bot token starting with xoxb- +
+ +
+ + + Channel ID where the bot will operate +
+ +
+ + + If checked, the bot will reply to all messages in the channel +
+ `; + + // Function to set values after HTML is added to DOM to avoid XSS + const setValues = function() { + const appTokenInput = document.getElementById(`slackAppToken${index}`); + const botTokenInput = document.getElementById(`slackBotToken${index}`); + const channelIDInput = document.getElementById(`slackChannelID${index}`); + const alwaysReplyInput = document.getElementById(`slackAlwaysReply${index}`); + + if (appTokenInput) appTokenInput.value = config.appToken || ''; + if (botTokenInput) botTokenInput.value = config.botToken || ''; + if (channelIDInput) channelIDInput.value = config.channelID || ''; + if (alwaysReplyInput) alwaysReplyInput.checked = config.alwaysReply === 'true'; + }; + + return { html, setValues }; + }, + + /** + * Discord Connector Template + * @param {Object} config - Existing configuration values + * @param {Number} index - Connector index + * @returns {Object} HTML template and setValues function + */ + discord: function(config = {}, index) { + // Return HTML without values in the template string + const html = ` +
+ + +
+ +
+ + +
+ `; + + // Function to set values after HTML is added to DOM + const setValues = function() { + const tokenInput = document.getElementById(`discordToken${index}`); + const channelIDInput = document.getElementById(`discordChannelID${index}`); + + if (tokenInput) tokenInput.value = config.token || ''; + if (channelIDInput) channelIDInput.value = config.defaultChannel || ''; + }; + + return { html, setValues }; + }, + + /** + * GitHub Issues Connector Template + * @param {Object} config - Existing configuration values + * @param {Number} index - Connector index + * @returns {Object} HTML template and setValues function + */ + 'github-issues': function(config = {}, index) { + // Return HTML without values in the template string + const html = ` +
+ + + Needs repo and read:org permissions +
+ +
+ + +
+ +
+ + +
+ +
+ + + If checked, the bot will reply to issues that have no replies yet +
+ +
+ + + How often to check for new issues (in seconds) +
+ `; + + // Function to set values after HTML is added to DOM to avoid XSS + const setValues = function() { + const tokenInput = document.getElementById(`githubIssuesToken${index}`); + const ownerInput = document.getElementById(`githubIssuesOwner${index}`); + const repoInput = document.getElementById(`githubIssuesRepo${index}`); + const replyIfNoRepliesInput = document.getElementById(`githubIssuesReplyIfNoReplies${index}`); + const pollIntervalInput = document.getElementById(`githubIssuesPollInterval${index}`); + + if (tokenInput) tokenInput.value = config.token || ''; + if (ownerInput) ownerInput.value = config.owner || ''; + if (repoInput) repoInput.value = config.repository || ''; + if (replyIfNoRepliesInput) replyIfNoRepliesInput.checked = config.replyIfNoReplies === 'true'; + if (pollIntervalInput) pollIntervalInput.value = config.pollInterval || '60'; + }; + + return { html, setValues }; + }, + + /** + * GitHub PRs Connector Template + * @param {Object} config - Existing configuration values + * @param {Number} index - Connector index + * @returns {Object} HTML template and setValues function + */ + 'github-prs': function(config = {}, index) { + // Return HTML without values in the template string + const html = ` +
+ + + Personal Access Token with repo permissions +
+ +
+ + +
+ +
+ + +
+ +
+ + + If checked, the bot will reply to pull requests that have no replies yet +
+ +
+ + + How often to check for new pull requests (in seconds) +
+ `; + + // Function to set values after HTML is added to DOM to avoid XSS + const setValues = function() { + const tokenInput = document.getElementById(`githubPRsToken${index}`); + const ownerInput = document.getElementById(`githubPRsOwner${index}`); + const repoInput = document.getElementById(`githubPRsRepo${index}`); + const replyIfNoRepliesInput = document.getElementById(`githubPRsReplyIfNoReplies${index}`); + const pollIntervalInput = document.getElementById(`githubPRsPollInterval${index}`); + + if (tokenInput) tokenInput.value = config.token || ''; + if (ownerInput) ownerInput.value = config.owner || ''; + if (repoInput) repoInput.value = config.repository || ''; + if (replyIfNoRepliesInput) replyIfNoRepliesInput.checked = config.replyIfNoReplies === 'true'; + if (pollIntervalInput) pollIntervalInput.value = config.pollInterval || '60'; + }; + + return { html, setValues }; + }, + + /** + * IRC Connector Template + * @param {Object} config - Existing configuration values + * @param {Number} index - Connector index + * @returns {Object} HTML template and setValues function + */ + irc: function(config = {}, index) { + // Return HTML without values in the template string + const html = ` +
+ + +
+ +
+ + +
+ +
+ + +
+ +
+ + +
+ +
+ + + If checked, the bot will always reply to messages, even if they are not directed at it +
+ `; + + // Function to set values after HTML is added to DOM + const setValues = function() { + const serverInput = document.getElementById(`ircServer${index}`); + const portInput = document.getElementById(`ircPort${index}`); + const channelInput = document.getElementById(`ircChannel${index}`); + const nickInput = document.getElementById(`ircNick${index}`); + const alwaysReplyInput = document.getElementById(`ircAlwaysReply${index}`); + + if (serverInput) serverInput.value = config.server || ''; + if (portInput) portInput.value = config.port || '6667'; + if (channelInput) channelInput.value = config.channel || ''; + if (nickInput) nickInput.value = config.nickname || ''; + if (alwaysReplyInput) alwaysReplyInput.checked = config.alwaysReply === 'true'; + }; + + return { html, setValues }; + }, + + /** + * Twitter Connector Template + * @param {Object} config - Existing configuration values + * @param {Number} index - Connector index + * @returns {Object} HTML template and setValues function + */ + twitter: function(config = {}, index) { + // Return HTML without values in the template string + const html = ` +
+ + +
+ +
+ + + Username of your Twitter bot (with or without @) +
+ +
+ + + If checked, the bot will not enforce Twitter's character limit +
+ `; + + // Function to set values after HTML is added to DOM + const setValues = function() { + const tokenInput = document.getElementById(`twitterToken${index}`); + const botUsernameInput = document.getElementById(`twitterBotUsername${index}`); + const noCharLimitInput = document.getElementById(`twitterNoCharLimit${index}`); + + if (tokenInput) tokenInput.value = config.token || ''; + if (botUsernameInput) botUsernameInput.value = config.botUsername || ''; + if (noCharLimitInput) noCharLimitInput.checked = config.noCharacterLimit === 'true'; + }; + + return { html, setValues }; + }, + + /** + * Fallback template for any connector without a specific template + * @param {Object} config - Existing configuration values + * @param {Number} index - Connector index + * @returns {Object} HTML template and setValues function + */ + fallback: function(config = {}, index) { + // Convert config to a pretty-printed JSON string + let configStr = '{}'; + try { + if (typeof config === 'string') { + // If it's already a string, try to parse it first to pretty-print + configStr = JSON.stringify(JSON.parse(config), null, 2); + } else if (typeof config === 'object' && config !== null) { + configStr = JSON.stringify(config, null, 2); + } + } catch (e) { + console.error('Error formatting config:', e); + // If it's a string but not valid JSON, just use it as is + if (typeof config === 'string') { + configStr = config; + } + } + + // Return HTML without values in the template string + const html = ` +
+ + + Enter the connector configuration as a JSON object +
+ `; + + // Function to set values after HTML is added to DOM + const setValues = function() { + const configInput = document.getElementById(`connectorConfig${index}`); + + if (configInput) configInput.value = configStr; + }; + + return { html, setValues }; + } +}; diff --git a/webui/public/js/wizard.js b/webui/public/js/wizard.js new file mode 100644 index 0000000..6be5558 --- /dev/null +++ b/webui/public/js/wizard.js @@ -0,0 +1,139 @@ +/** + * Agent Form Wizard - Navigation and UI functionality + */ +document.addEventListener('DOMContentLoaded', function() { + // Check if the wizard exists on the page + const wizardSidebar = document.querySelector('.wizard-sidebar'); + if (!wizardSidebar) return; + + // Get all sections and nav items + const navItems = document.querySelectorAll('.wizard-nav-item'); + const sections = document.querySelectorAll('.form-section'); + const prevButton = document.getElementById('prevSection'); + const nextButton = document.getElementById('nextSection'); + const currentStepLabelEl = document.getElementById('currentStepLabel'); + const progressDotsContainer = document.getElementById('progressDots'); + + // Create progress dots + const totalSteps = sections.length; + + // Create dots for each section + if (progressDotsContainer) { + for (let i = 0; i < totalSteps; i++) { + const dot = document.createElement('div'); + dot.className = 'progress-dot'; + dot.setAttribute('data-index', i); + dot.addEventListener('click', () => setActiveSection(i)); + progressDotsContainer.appendChild(dot); + } + } + + // Get all progress dots + const progressDots = document.querySelectorAll('.progress-dot'); + + // Track current active section + let currentSectionIndex = 0; + + // Initialize + updateNavigation(); + + // Add click events to nav items + navItems.forEach((item, index) => { + item.addEventListener('click', () => { + setActiveSection(index); + }); + }); + + // Add click events to prev/next buttons + if (prevButton) { + prevButton.addEventListener('click', () => { + if (currentSectionIndex > 0) { + setActiveSection(currentSectionIndex - 1); + } + }); + } + + if (nextButton) { + nextButton.addEventListener('click', () => { + if (currentSectionIndex < sections.length - 1) { + setActiveSection(currentSectionIndex + 1); + } + }); + } + + /** + * Set the active section and update navigation + */ + function setActiveSection(index) { + // Remove active class from all sections and nav items + sections.forEach(section => section.classList.remove('active')); + navItems.forEach(item => item.classList.remove('active')); + progressDots.forEach(dot => dot.classList.remove('active')); + + // Add active class to current section, nav item, and dot + sections[index].classList.add('active'); + navItems[index].classList.add('active'); + if (progressDots[index]) { + progressDots[index].classList.add('active'); + } + + // Update current section index + currentSectionIndex = index; + + // Update navigation state + updateNavigation(); + + // Scroll to top of section + sections[index].scrollIntoView({behavior: 'smooth', block: 'start'}); + } + + /** + * Update navigation buttons and progress + */ + function updateNavigation() { + // Update section label + if (currentStepLabelEl && navItems[currentSectionIndex]) { + // Extract text content without the icon + const navText = navItems[currentSectionIndex].textContent.trim(); + currentStepLabelEl.textContent = navText; + } + + // Update prev/next buttons + if (prevButton) { + prevButton.disabled = currentSectionIndex === 0; + prevButton.style.opacity = currentSectionIndex === 0 ? 0.5 : 1; + } + + if (nextButton) { + nextButton.disabled = currentSectionIndex === sections.length - 1; + nextButton.style.opacity = currentSectionIndex === sections.length - 1 ? 0.5 : 1; + + // Change text for last step + if (currentSectionIndex === sections.length - 2) { + nextButton.innerHTML = 'Finish '; + } else { + nextButton.innerHTML = 'Next '; + } + } + } + + // Helper function to validate current section before proceeding + function validateCurrentSection() { + // Implement validation logic here based on the current section + // Return true if valid, false if not + return true; + } + + // Add to initAgentFormCommon function if it exists + if (typeof window.initAgentFormCommon === 'function') { + const originalInit = window.initAgentFormCommon; + + window.initAgentFormCommon = function(options) { + // Call the original initialization function + originalInit(options); + + // Now initialize the wizard navigation + setActiveSection(0); + }; + } +}); \ No newline at end of file diff --git a/webui/public/logo_1.png b/webui/public/logo_1.png new file mode 100644 index 0000000000000000000000000000000000000000..117ccc6dbea3fd33ed1a992028bc5552f470260f GIT binary patch literal 906905 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

tYcRGR4fECw8P~og$&pyj6PZGAi? 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 z∾Z?HpM+e0=r%aJ2{TA*Er=v3D2ZGy$QSa;fh_?hPzZ#Lwu}>S!cy2nBWo=K zDWC$#Txo17fV+Pn0cy)_v|C0JCTGTX?E#>zJ{uq*Mkey3hxXT{%88s5Aw(hoVkRLB zA(m3-bI9eBcC1V!qe#RFQOt=JLU2~Uj)?3X+rqova(lELBxv0FVqN!m-vI8`KPyaF zckhO+bZ!-UTm(r3A|u^Fo&Z6Rf?!Qx0R{;vNd!y*f}kyhQ3whu34(TIf_Cm2J$BE; z;oD_7)JbEnG9R5A|73Z5w?F@hfhw>7JfGlKPAxoJ729^~TwjY;udjr26B1}Hb3r0! zXzl9ibY9nAel#^#|IS~* zweyJDA%fkQ{{Hz7-CH?!?fgo84P%(xH@?3l%fc{7BQUi>6-Q0@IfV%gFc!@V|MKVK z=dYJqBMAr9K-4G++02Y@GYKIKAYh>hCQxu6mGpQ21MIZ+JRXD3Mu;UC)4#N%fKEC`C*Y( z-aij6)v!`#IijCCx(RNA!x;mJaJDEJfq}BZ+2+O~-7VHDPuz4s4vRD7{lH1(9gg~J zVp!m$ld7%$GP=E?BjMosm0c0oQl6!@&Q{1G~{mF^hX4S z0e|}Iy~<=%2vfc$&*&cbI!T^-S%{g01uC538n+_&EpAN&z0HYOs=LhwU&78^wraM zOdfjg!Fx`;d8(mfN364};r{DIC@>oV>C0&dES#n@2qc*l#E8g`qBtGSPR#B6*pGY? z+*~|+_RZ&BH?2au9_t{CbrPE-W-Np41Apa#x&PzwbJdYjqVgP+biImP5adU4Rx|;sAQ((Y+$Qno zj?MmGCl}kZQ>DYVuP;}Vx8Dxpwpd<1``Xg{y;D`d01FAe_}s7ZDTHko+*x`c{^CzyGFTAciMwu>mC@y;8?B`qSh*pV*K%A7kRaAVN~0Y(A?N%D zFznUw*ty%X3jIj6{QXgYwRm>#g}Xq+4u0VvK0~-o00FzqyB!v*_fHDYZ0~Cp5<+TH zkU1Tys91;##pc);w#~?Whqv8vtUOf;bTlWcpExq}Uc!E$1cZPF>cFDGo4_|V@LQ*^ zUZwK(edUeI@#@Qq;|FF9VSOP|L6{5BT5g1`<~Ud1e(`ButKV2o$i$9Xa|Q-D*Am*w?VW4Ab-ztir_n z`+oXg6b~IwRu_KpAN~zoIzdS!AVx9rk?Hq5G;^m~7dIAGDk$DDv1dC*RU#2eh&UdJ znmcRLKfVi-Kp2C?#>v;}joQSH(v3!=LG`k1hZI(Lq@pTPOGpKnNHxZe%{%>{gs>F9 z{o%CF6^ONP_A3E*E zeH7k}4A2FKvgbF0;=BU^V=%bvRwv1>=GlyTYuerHUY_iI?u+xv zi_=Y=bmPZ61_i_44CYmS1QA)KAa*y5a(YnUm4;zgh3r|ad+?uZ#zY;t!M{t>IH1qo zW+l7p*lBw!UqCQ3gxfsuG76ZDF*-q_DbXB*b4epYVlxl`NJu|2*;*wUW;U9Hh7=$W zi==L5@>6+`;kb&8r`~va-@UWP_8%R4v$BGA6Orsxv%@TIfnzIK3F;Wz_%-`U2ymA3;oi-}N5E26Mjf-OcuEOYObLCR~)QSAQ zBQ&u?SFhhV`9kIW_cv|pMoDB;oX27w(a6YeonQHzdnTrV67XP%AHH+X&pvi`B^=YG zDYRG7u1hEdD6j#oDZG0A+GqFd90xu%fm5?nf3Ol`dRO64z1^sZ@vrh5QIwt*Q`(UE88d=ViUb^)@NuAdK@BIX)@IM@xCRH`@5YDK!fm*)Co@ zug<6dlT#`z$!j~~YnM#3Za85?dC|}6C+**u6palvc@`Tk!Oe9DuCRkk;1`#Q!Fi`=D zg_)^}b&z8~P2lpG5YjiJuboJhTQT1yoMyPGB4|Gkcg^Zk|X z=R%OM4*U%PPI9-Zam>(w1^omFQc92n3n7FgHUtX7ScFCuWMKrMr16Px`wp?^Na^sM z6Z0d?kSnX7KQ{h}QfV(x0Ybn4OTancwFu`|qt`aXqYJfqWo~u~?MqmB^7Wai*_>%! zy0VrVo5?ZiS8DOf!qli}oOvyN>rE-gZaaG4*S_{g_uO;*#XtB>RF}|L$q5}JXDa#H zNT^L4cO3onkNxFGfBhF4uRKSM8Yc-rBti~K^YinMKmNz@;%RUVV8DO{%2Rj$#NXck zzz2AJ`IrCM-^E)mB54V54&{5skH3G{eLIW0Uw-x+;$Tm4?m)PsWJaJQ$Z*(RFD_31 z_#x~73JIhDMEN~OKXCgIGz_kom9JlZ>K9J#;K@o*7Fx=D5lTWOx)|Z0K+ynWPTF*!MD?$^8l!$P@0LA zg)a6m*$D?ucKyhCdgD?YU^UB7_=G)U^ z???tniS>f)Y`)oC{%_jeGeDB$I1l|I%XGD!o*uI^v$M0_@9lXD9PGgZgr$)vil9hJ zqC|?+6D5jIA|Ibbih49635iCe2pSj)APnyg9%q5WdB1z>&Ft*#c+=CiOlHRWQB~d5 zX7=_DRAMn#U6m%%MShVP5qT|`sTc2|`kzUHSCL$x=|D}#k9ooyD8SeYMc9j(t8~Jz8smc2&H0l3ZKY(zQi<{Y(n2MLFE0iII3@or`$Bw)Fd> zH9#lJrO1UnVn1=9SW~B6jrb3>UbWa8M+Xjx@!3NDo#p_cqAJIxkS$eY5D8)}sKx83 zqaT<;-RJNani)z#`K){?1EJlzp9?~l<{ARRvLv(_(;F@_(w8PFm@Js2l+smOwv4Bc z2B?YPWaIpFW$ED9joZwrIl0;dGqeFiBR&j>Px&aWd|b`eaXH0~lo((V;iWuEiRPgj z_aH4{F$z?8*U@*r^#)W?dG5^j{_g7+o;c}j_@r1vE6vhZ78z(N|5EvDfAYlxXD`0# z|N19l(%`J7F@X<>{BmmP{&Qm(gX;hcGQkp&z6J|GhaN)}a#kVJu=fn@m_o7cHCBll zFCUvZd-0C9zJ2B!U&G=WLSK-f0U?3e2k6TALOm0*}0zjH^kZ{luOHvl5rdDUh<;IfHtO%`4GPOaz zX(F4_HXMnK^OtBKx4?EekT!&xs|85;YzV_NptOS4!Z1^kOl3MozA#$K0MJkx=9-U{ z^$N&&GHY#-N zb9!mvvTinn$x1Pq23QeCI4|1cjn4ujZV`$d6e$6QBf5Q-PtkS5pm@RNmcRE`MpQYEhCl)aN)w6CW}9EM`<5W zh@Cz)fob3&A77hu%W11g_W4H894PMG0=lFZ{_bld1EW);xo1y4?;N^mP^-%6Gr_s@ zTMqBdEL^&H|NZd!gCGBiFa6Dzj@)+S`7eDI^XCl?3}FV^(1RuW?l-*er+!rU-cni9 z)D1uV2Y>a6AAJv9ILV42h;;x}|LT|jLT${0-FU7W$c`WR@t?W*ogWm<$|wKhFUaFh zQs9|@1$&P(b;sCEJ92ww&R46RoU*qa$nVPVAnXim&9+?6Rfa#X3kQI7=#)%Am?#o7 z!}Vc0oDwN5wwMFM&VWfa3>&1i?WMPx*aFxZnoy^umoB;+ZaoN^f<0(ot3Yc7NLC7p zNypCBxXpLl{HeA58XNmYrr@z-wFuyFa!^90c8c$56pk_tAf zU)<;&0I9Q6`_k9(kjSUQAea&~wDRv94c+hmo|?QP^iI6aHt!t`uVIo>=uaxBC`MDa08v& zD}Cz>v%SZ_?V3~UdowJCLe=~bSa;4B0%B0yV;);xp&hkl0=K8~UWiqF}?OKEkYb-*A^S__t>1Co+dK$6&X*XO_hEGq9t98PRdRlw2M z%K3jVWZ&Ytg$e|~Cdh&?9r7|ZP6Te1NYT0&j+@w}h9zbsb(8+s@3lShif zas@@xyzT(sa9wkJQl~O?i3!L4$2Uy8*~FWHU%X)|UtMpSnbhH%)z(Qrm4ThnW(Jv} zEDniW?nmGL_BWO643Gszfgjo9?ALBiXx|h(GLF$LDw`8l1~9>73(5-0ISwobu<~RM z#`xO;iojckbE#(C7)d$%rQmz|F39>*|>~jlD#6oDI=v;`} z1~*KCg@6DFVj?Dk1;Geknh*vI1BL;U$cQ}m!yppTy~9F;{y+^fOg2p|3>Jnq2!<(a z%W!O&O1bGwFi;4FMuMrW#`XK{J8vxB^Tx5a+-hz~S&hqg*wx>8_pV<%TDlb&1=4^7 z7J%;of8M|+7u=bwv&_cnCE2vB@ewp$E?@Y|PZnKwYWvu8r;npBnsYMc?>_E=%(m@6@>4gz^8>W9^r!#&pUGoSz;7BH zI7p3Q@J&-U9U9tidWF-oGea0YRMj3PuVX>QiZ?sNvKzM~0CDgoYF->*<%y`JN1fZfMWtKtd}(L504~7@Bo! z8zSPT@m4&LI3I3t)X46Nh(vq=d&I}u=D+A#zhW-fT0Ytw3O z>-*re%>jKc#NwXJUpvmB7LcQO3oFj1*ZE2>Bi_+FD%hMOl=I= zHwDM>JKRzBVx$DN*t@URWa^}-SQTa{DkCl?@LO= z=kA#8U)(>BWVa`&>>yyXNywXg{rl>Z*OlSxDZDS&Kwrj@9FjfdZB}-&efsj9O@x@3 zk5c<(UtZSL5!W1IiV_SrR<>`=Rn4(OeTqaOj&|!~!YC3B5-g0U#gn;%s7OmVarhaN z5FZ!BC%;`pwsSxN_cOQ0D#rof_C8gtfE1;TGYO>~8Qp#asg&FB;G?x!Z=`Ka1Rd(i z3nG(YfJkc%&0wub)!eE@#vn2&kY=gjzkKER+Q#aUo%;uoF`zUlhKd)tGD&;c+B~xawXv}?g{#*a`J{-{erfk^+E`fs?t{b7hJfXyuyUn-?n<=+KacNJzF@~_neeY*@5L? zU}$vvj`tqgbt7;PI0}4l#5wHPDH0Mu%Fty2l08}2Hr0Ij@#e$#()#l5iIK*c6V>A{qzc&}l^-bPvfiS8;Kx6D{F`6;+%NyCnq3^8+_7zHY;9)x_|xA7BRUM>(D*{e2tmLq zW#0agJ3sVes=V-L|Ndui`gtJ(gE(b4S!8Y;x&F|W!@1PZ(@#G$4(I04J)_1b1zA`Q z3_=Q(e6{$l5{iJQ7ry%V=|^6I6cG>f7_;spzx|o@6AJ_6*p^8q!4@zf?Vy?UaX1G{ zgEf58)0Oh2RX>n5)oik-NK2L=R;)C!0_)J>Psp0XphH`!&}b@x^lfiH@ve$)G2NI^ zb4w|-laUizDxHa?K_{4YpMU+=fX={Oak|#=tAOIoa7!1CN><_3h`Gk1l6m*VV}0Xa zV=28adnJmiBPFwS;y9cb1QSGHb7|S!|NFFFo9oXD`8B^lTQN5|OVGdh?;g`+jM; zrvqLkbk#kXe+SJ82;SNv>FDHs*;3C#lI*MWbsV`ZSNCn_t7meJA>6%*IB;yS8~%!z zcuQ@EqJ6G-KF98WM0oVy_7R?N3z(EGT9G6(5N8svCmEjw?4$~=n^iiL|k6H z{6uS3Yomo*;&SA7F!VqEvkjv!K|j=O=G$ud>oDy5kfyui#@Fvyp#V-$u{ zCC9T2Xo+ARiwpJDv7x=&tjUYPqH8FYBC$Kt>NG~=(;yO~C?Qf23(_RWREh&)7pVJu z>ZJ>x`M>|@M}Gb%j02;&ToKTX^}1t_aB>hp7RZ|R)V`x{+;_ABeP(&?`BSH!J~?;t zitQQhiW=LRdiGP_y7}X869+S}1MIUV|IvZVe|Tw}$IT5B%15|;D;1H@S~D~WLZAhi zJGLA+zWn&!^p35~%gaHtetGufu@i52+ufsgymjfJ2Zd@fBm;mEyZ!(#&KP_4rLA1^ z!X>&eZ%^&@oP2(2vV8K{)bt%Rxyu|L3@!!Db0=Y@>e=B`VffR}U%Khe?V+>(5#UFT zl%9BGZkmgL%4nU2p&@F(l{y8Eb+M8A;!I`xRADPH1pL6L`OJd-q)W}*aC&!kbU3$_ z^xLf+MZg3s!YJ^=`wEx5+VdXd#CF+O)rL?=VQj*+@!>b$JPhOjmm{&P0Nh=olTEwq z>MOQ^Y*rU?s_CKWYI1D@$~H{fFbxWn%sYl14?-WX33=e{CG$(?8rI-AkMGpW>pD;r z1llMR_8b`-8NOqOT>=IeOz;Jc6pPQVud!e*WvGIFJAc!5?@ki|yIFpZ6iGxz`5 zr&0zCLvz|%Lk6A+BW0up0tsybAOkRCM?eeHm*6&(^axr*gM|n&x^1RLO9L6C;@Rf` z7hitXs;n8ltH3Y?D@6*-(P^C#4&P`#gjWf(2C%uvRAl!ZJ0{;- zoZJs&<6FIaU=>&ZjtBVmW&aHLvYDzFDP2KE3(v6g1F)CfOJDvAtW1}Vyg4Y2E}nc2 zyT|i$XRmzab68qT?>cBubN-d5biFJl_La5{te&}i;oeUP?TNr~(-~~t`NRL=KThqL z_?ut(_ZPnXZMb6O-5>kd&;H`d?1j(&+JD4_Q_w1Gnb`U|oZu3a!=CHj_mO|Jaq6Y7 zf8tj$dybe1u#q#Axy#t~jze$RHn`)(@4lGT!Oau54s+3j1F2w{uu!*a#y-Mfz>-*~ zOuz8-tsnYfXh1Ont&cB$^-sRI{KVQ$e_}9KG-0v;gaEX%LEAFe4j2qJ;i3G(Id8Sm z)T*NW8u=~)$y$c~e+ZgL0n8LDD~8-sQ@g|3pe5dNiFhk(4T2CNauC&Ga0%`GzIcFR z$2f@iV622185P7LLa?i$?O83CP*e9eJ+lf1?pHpw@+jUQjk8DGg8d4NFZ_6Kc$ z4H1wJ4*^17A2B(xIaru!T;rC)fBdN?4F`4p;@muJqySRu5T@Xht6K5bCKyK(P!04JA!7gk|_DaM%6O)RwfD zAyky1UFA=&T-j6Hebb&ho<4cp&|WAsC5}uY=pWaw&(ISH?*Rh|l7LI7YPq^pzWn6r z&oBM=cYXY$rF(8dNn{FnH2saU7qe#C9NvPQfXOHV1&Fbc$-71-Yj7_^Z9XN2|;`G|{r$%?*I9F-xz5dq9 z^!df_JU;xfZ8axjmj?YyvzSSXiBcsaUNH*aD5F@!B#;3P0&kxzeyQnuWM{!P0HQju z=&4}9s%6p-mHk^M@GcW0z!dOvN2e})<{wQbjdG++Z$#6LLcoIF)ohTTk;Ffs+C-1Q~l z3zIclsX*Am$-uJH8Jokae1Y>Dwe15r8<+y#JX-p~noq-1VtZ37t*T{_8QFID(6+6) zl7I;i!2oj1@49a6t8?XgHe>BMXnIqX`32Ki6Kl(G>spDxu#{=Rch{ybnk-3xQ-*64 zP@KTfaBX(sn_pZR7))g*#z*qG!K`UHnGpxeubeZgE-7ZE4TH4SM3xq|vQk5%V=00O z>A)mlcD_-)bSBlTla`E7$B`+%p%)PxixvHW*hD{kPYeiQkkE!@=#-^WX$YHzP+E~M zg;a+0p`=n8L>dq*!fT|2X~8grVSvCeeADurY>+KdaX<`@s2$tH&RxdPplx8xpMU@E zt?%2K+m*QBSpw_81>gydFP>;D3XAjhhJ|$>tT1k)x}*hkt|_j3`+l4|jZAjKD^Fj^Rda*6E!lJ)b;T^efW=;_R=Q&nc>oOG#464`@v`)F z4XQ@6DSS@_3R<#O1WiyJ-jE2QSO$o_CR1b-mat)L$pQ&q4lQQQNjU%=AKSP;^ez=E zQ75^2cmx`vmdG1%r&GBuaMv#Q)t1D*3-s0Fw@T#BAT9@#t?N|ILc-`1xu=SF0W!M0JjXzmK*|RH8ln=~|3{ zxtDTE{y>NE2gM1ZkDFAx`x%{0+48Fxc0i)i$#m@|>Js~?voCw&Z1#S$=kGIYHbi=6 z^wq~w|HQa9`omSQrL)$WAJiGOgOp9~4M;MeO*mFBtLfjKy>sKW1_lIEY;FZ+7D6!V z*xN^}<{1rB<`~CP3>ITn-}dy3I6>sspOZ|!U5VJgXtLL$J);QlM~FH8f#?FE$Y`w1 zTsj&%USp8N`r$;2E(8ltI${eK&8&$7sDP#Kd2oHe1_T(ep`k$xts{TvLTll(Fs1Z> zl&}p6E-$TJH+7_N{4pD*B1uHEOLM_E9~j%e<>W{eO97MsF-Rqh0SE$UT@M^_ap#8HU4f z6bwdApd@m84juW(K}bTw$B2Pczy=_iG!%?|d~9WIuKsu>PX(xuE&(V4DaD3>Fi1m# zu_ZgTQeQqibluad=c=mFIQjDIsgp-YGIoI?`@C>(ptY-3H#cd+duRSA1tkTRgJo#_^Ra)u$h|>uZvX%Tj?&1qo?rCLy4- z3Co5l4(%M@zkU0*Y-;Nc=aY}V`0!W0F8sP>_2D1T?L8i3* zzzu?+Ai_)1Dg+V~>C3&psjMFOy+RzT?U&c{d&jrk{zl{h2`n`~{TqLB_QiRBRjKtLw|zi+foY|TlmKZsQWk3B zdV!RLQgBUudSUhQf={TDYKTCRR3rmdl9eK*!(qs=)=kR}xW%hloB6SG9&S6bj5x23 zV13NbTc^ipuU;)z!;z2>XC7&NQfn3J*#AthdZ1^q>s-hCTm;s7?u%i%mXO|cmU{kn z;e@WTHVsiVDE6s^`0O|0{4rSQSkgP`*$g{uR{qtn#^$icXU`^xXbo>h&$~qT_kP=?ls-RufMhr5 z?+c&fpDh<$+)GBX!(LN(O@hJIg^K*H^UjXT?Z#dAR&^2WG(bN%tlRU9W19mz} z>)@h&Q@w8VkC?r;wSNRS-1Cku^#Zl-0f=p}TEY*yTs%iGJ9g`%nc^`N&47;Ueq##( zj)@5KWpJpHLwLa}PdW%8xsH$Far6pg>x}Qm_G206Ox&E))ba2wE^fI4JBMcb{HCU_cR| z<4z{iFqyU1(n;C6DJM%i&etyt`q`}*Sw`9Q*N;E?t)sWS?XLH~`)kiVu4{_`;=O-F z`4Df+O`C;bLsu(jUrt?r!%D?3ZQD~j{h0T{vHU%6S}}`eIxj05{;BinTq(%r&bj*O znx4vuQ6K}_4gRSkWA{Egd&n$gfdFEKEEJG#>|~S0r<$y(#wlW z=K^VaVrNb`fCd(UC$3cAHdz{h7zRGL-K_bgFQ2b1n6_nW$1T72XsHMYU_~Yp>q%g@ZDR|4_|4{rZZk))K3poazS>x)Y7Oc$H^C+kugPjAZvz>cWS_lPJL&g zF*%tjF!l<(d2DcTxn3C?(T#0^Wg51?d5uQjKHC<5=^UHrz017c8FaTCy!w|l!o;~Ld4VhbuqPoDZymAqeK(QZ2LjWcbX;#F7 z1V@-H8l&MM0WnJmkbo8-f@xWta@@g^dDHbbzU{56wdM0?PRqqbd1WD3tfVUj$)*mZ zVS+W7wJ+7rJ30RR9=L_t(&_yR(=@nI;N7~vcyJH?W` zE0>@HgQXw=HW@|%*#nq-`<^>84LtG6a|f{X&0B9tms2L&(UFj$kdh5+W%R~FumKCA zRNQvYJ&}e{1rPnt&%ONk$?_s+>Z#j@4vgA)LlTL|2;DUsrK3X_1WW}b;A8H^6JFD+ zsGy;>%Q_$>St_t1$rM3)w76o#$sF1WN=gw92`7w5cQJdr?v;ZN%NM4bd833hw3 zde!GwkKfe@{hqn+d+zz!w@q5R&ta@YTHdT&Tn*-7^9mw?pIcz5H-j#;d+oToGeppb zTT+eLecI5D*Lsen=k~DT&PeUp;nTGc#GR3;vwq3iZ#I-^^Q=1IW_u{~&F3mKY*y~I zVDoEB+uLAQuGLqI~T+z*7C(hL%UjQIW@0ytK*r^Ebw z--WFgFkK5&<@mGHr=H(;+bvse-oN!XZuGIBr$d?-t!Tvvr`E?=sZ8|&^m z4GpEObhD}&Rt8d}44v|P3r^Uz>)LsAw)U3EOpY)Bylt2D&`L9KGJbv_AThCZn~CP0 zVmiyP2m)}mwqZB|`%Fv}G8?uj9CqMO+V(A@q6ndZU-+SSPM)beeCo`F7hi!8kQ$aV zvSa(l?wZ^SOaKlbpofLP@DMgusopdy4biM?4oHBd7V)hb#J*Wsf9Z2yz|aT=^T^p? z32q=~=TfF+3Is;jfglhItwI|i7U6BbI(i?~Uxkvs zKYP&sRpP#eQm#_mwao3S)UJ1+Ut4~ioN<%PUw>$M`H5YzQ4FkOgIN|NNW>TQXw5`A zQV;@#pU^S{juCvvsRy-{?)$2QMzxHF4|DtGueRD}%VxMWi@U}(C1h|4CtUPQ9Is0N zwI9QkEF8@Yf+kkbnzUk;exPfv(D9JZfh`R}1c+I|Hnasla2=5mnxQytraZs7v^KwG zc-UGoSWqMIDkv}27OG`;-^9M$xy(9zjnHqpf#^0R&Ct{$I&mF(Yi$VMD}>exLbHY; zn$TW~NLg-Uqf{>5`~Uv=4_nB5_+}J<9I%%r-+#;OpFGd6)cs?@!u_*qL<}6A$nDEu zy9t|N8BoBY#-da&tyWKOh_#%(o_C}O9YiMVr73PWVUPi(O|~X8+l4oK$M6luS6-^9 zRDHvJ;d_sd-*WWLKl0(vzxXsZ>hZ#Ff&HjzLO?hCl^Fzn%=jRAXXBOfdCtkeUem|`C+g#wt&Wux$g zGiyipm9jtvI6!#!j>5esXRWD8AMk*azzO6Z*wAAGVh6D)WM8?K2 z@a{w7vllnav~$NuW)DyREIR@w;f%+?Gc4fd2@L#>AFI06$COpfIC+_39~hjnAAMonLkVBZs9 zt(6Gv`@EX1~ zTVD|-iY3>8CioJDg6|?l*zVxs7am^w#^>|R^?EV0>jUo~%bxw(H%!CMZ=GCGeEs%a zFMZ-a;nHz?+dkCR_8iG3aDfC zp%b6`Wk;<%jG6iP53T? zfMw|MQ)$J-nu!rz{~Mxxom5Ei0_C531$L1L#LI^K=}CwX=Z+hR5U@Iaw0 zSA@JfdeERYU;q0Jt)-}M=2tKDb*;Z`R3CEne!eVQ_$pqoI_XK^y(HnUzlD-WGJ)SZ z&`MJ6suxrDNzgBHi`bqXad`vKxj`hYii-Yi^8oU4RQ z(rzvRZc^r}wP(LZYzaUic5F>V?l%Av`Jkt5(cR9Q(%qR^|4Md^na%U-A9~4%uJGx| zw$&K%KqW%xy}J|8$6kM^wdu}aM1VeW>>0IOawDiy){KBTMXCysJRrcjJxSX9BigY- zyO&x*LyTV$r)ZzQMGFz)(&!qzAW?SfWQO=Q;;^e={Gal z6%4p2Yw$-a3?p_sB@9C=fK2U*f-_X}8~by6 zrdEd6(O8wW#V4P;{LzJ@M-Ohl>y}Gje?&x=f$5kxMtS-RGlleE<(VgnJNB2G&Ek%U z`jzALv!_aTzO`ng%j@N-ZM!a9JnhcSnY(tZiuBiJ8aM9BlmG`P06Pj!h=UtIt>I+{ zb17E`5`iILK-u;)jo^EXErem92;7rKd3ay|u)wRJM=rbN+|XxFEbhH?+#zcSG6TG2 zkF#7a-(g~8%*g@)_zLKAuawoUBD**~r)Ljh0x-cD;I@g(rKivA-M()WxNc9Wx~KH` z8lHNlzUViZTqlLmg2Nh8pbmJBQAuaMbZPGT15-PJ67aDdLz4pME|_(ZY5MNY9ho5@ zqd@{L@Z?J6@Wk*QU=Z>>4GHeqtfJ||qZd!(Anj+dzB}0&A)>;UXCV460W>T0aVPa(8;T=EvmRsmL=jC=Q7oyM~S)8s2jNmYMcz@7z^<&v1Ts zY=jLU09Jrgz&Gao@2xggg%cFAu89Vq0|a$sQ!oRthXLTFZ#=GFerorim|b1gd+u~f zb7_7X}tV6j(^9_J7a^?OjRzu_?>_)d+WaR=wx+qsd4HUlmfJq zFFf|Od(Xb|D7*@55<3pP`z}>% zlfGLgkbua--iG{Jh7Z5x&~4AXeDX@Q{MP*K`$zVtDruMkP!UToOqcx3{=pNMA3XFg z-VLE)h*0y%d;HS>`mcX@<;voU+eDBpB7f)BJM3Bpupul6Q*$8GYT)KE3<9i$GST46 zFP@REEc=a$ZZzTg2z-{hO>^vk6Ro))`{xPyI3qe6XstEj-Vwz@1KKP)L_IM(Pb?G^ zF|}EnL*M4ZD(bfhcsgPb+c^th(!yXq5InREhkf z;o5qcz`(s_MUngD-P;h?fX#ZFz-&SGelRRT{~Uki?gl}k$=VuktxvrjzByf2A+~>w zy5MsnQmfql&2sg*)K@T|ev$t^0w;z=SLk2JH6ZWK=gm5Rx_@=GBqiSW&-oh2<4sz- zGv;eX|1s20yok^-bj)~3h!~V|>=r&c%L2mNpU~1Eitb?W|)i-7)9G( zmX2k@XFx!~Nv9XRRZF`{804v;?5J3?FRWa+>E^pkbtX$*T)1>Y`+lAQN7D-c1kty9|5q1!(&B6WaJ z*(yZrEsrJuiSU#kL^@+zIW30m@%`8_gUZ&z=%u;yryhLt#-I2H_q_i@fAz@As#%Uz zAUJeo1O_1BOO&fvJ4*|5O~)P>9)WE&E}j{>{Vi~cjiu@Qu0fnvxP0CiD|wFdT-kjI zneBibDmN7z6Oh0RP|;T4gIx)2!U3QqVZ|Q!%=xuLdrH>>1K<(R4^QO@T7fUYcygxU z=SyWh^yy=j(d!C_g%}3*13!QLSPrlZ5KxCW1I+oNKc`tia2g6dK7kfre#nSmG7Wd{T1Jq>{!V11>ONnx04r?U&MK z7BHn0rs)DFYtr&DZlVOe9eC@Avu`4Q3s3|!umn^Bj9VCn_Ccnd^_(1>%=>TNGX)d@ zXst;AumJ;bGO4<0Qg{I!A#$)20H*MT*-U5r@eyp>ioLs!-gNZmZy4SSfPWJTe^cRrn? z#`4)&9Nl-YXny-o{|dGB8}IsonX|7{FPt$P2Sd9j_gtU0>6I^k7Orn7CXlSIo_+f3 zpa7N-dvEyBU-|9A?y2V={MsXb@Vi)DfsFRUHIkgJ^*8*dm*-CX_OJiq!s12vfq;>L zxdpi!2KV1_=!RF0AD>@exjA>^J$vsm7YRxrWx^s*Xd6*?Chh6wD~Eph-6#O22&F*% z?Cf9s=6|oPmX{kx|} zoTPuAt>-vNY}XmVgov0V4XyapkBB6l$@qPHqwnOnYDf;bR}Z~)?5u1Do!mJfHhWI~ z?4rMy)~k-NPKC%#X7l$E5^y@^&QY(C2siH|LqC9oh&_RVK{~!3k_kcxw44JXs&ll> zA8G9;O6^5tCBRB zpoxf~nTVMM34>w#L20OP&qv;J>&Jfxj*S&mp1gSGspnpN_&c`@2iHY`2!>QU;}VHTbg1+X6`?|aoyo!0dO?5hHW~g5bOmafN3CYn$Tc@OKYx`Z`_p03_}b6 zH>UYW7Fz%TECbKDT37suQ6~>Q1as@i*jX(m)3~F6F~A1aG(ii;h8bQ3ksn$u4Ql7I zawx@V3IffVQlu@Rvx69$z_u|=43F&J{Zls#9|DR%ilGQwM{RR(AmdKTrU%&+20SC( zum`9#Dh7*ACM(Npjp@_I>VoCDI?!a0W@2VdVAJq3896c}Cb#X`H5?A0@TOV-KJe1X zGb&wZ6pcWbL1{QYv9mP3x3FbU>&i`q?1%RqI2il&7eD|k12e#PmiU`z*O$}T6(_qQ zk?}F8bZueDNSDa4owQaSYIQ#?I9IREKKXU;*+(i@&ZxjEy!S)9j$D7`xhLIcznQI8 zb;`W`rW@9td6G{(XR^%=Ie+E^WT4F9!#BUdZMd&I{4F#pkdh+F+!K)6GO>H_kN=nd zFFU&Rxvziqi9h}Wtgb^cz#5t&TbI_l(XqKeWUzD>&Yc0I0J1Pf;oLEC{cU@0d+ylz z#r4&Fbl|;*-HOkrx3ljb&oDZte57)?=s;k>(Ct+_!}1s?*3kl6F)&ao9|k=z&SYJ=B| z4mN{Z+%m<8i`fjzB@=dG$X+p~B^aQyj$Ltjo}>7^1jl*yy&tKq$=a`w*B&~1Jzljb zAprD2e3ZBjyTi?EV*0e_KrG;P53SzbPCWPOR`;15)bZb>;!qz@nv_fu$q0!?=xxHj zjk*cVo5}#2#qUYF`S;C3S4!%9-}RHb5^}p0I!Af;;7U%~WCZjZAe}jNKfjv5aP6TZ zr)XYL=*f**K6~P?ksdz6!OLjbEkzarQG>L$@)J0o+JmHh$iS_!6BiJ(`$T=i6fK*9 zw&gsbzMC2$C31(8v1jDU((4o&9z=D}G zl=eYs!2%?-7dQhMgH+S20UFW}659qRQsZ`6DFcC1cfC34IRuB|z__s)4v^hVw zJo^*Cf)q$fSt(?NAIPb~u5|rmo`%vGY|bqo|L(I>d#}Iqqd#`ysmG|c3NoVFgrx`o z6nNE4KGit+l5_p7!RVM>n(*eI_vS7Rj8Ci^#`4PI@Wgmyd0x%Tq<8IX8rHKb-YaA2 zDIf!wCM2)|dTzB^-Lj>sz(Rlm1OY4y5b(Kf=k7hfe&G7S9C!?5Li$ikFu!?XL7HPi zGFWezxv!pE9?KPUR^61goT$;Y2XhX1^!%DAWdhBtWnkFnq<%r^U51$f8=ykb{LAA@ z#f<%rb``e+DPRitfrC4~JzGw($eGcY+tAQ#Frx|cR8u|Ez(@ur3W06thMk;duk20|)O+?>gceB5&*3^qJLqGw?O!5(%vX&5#5@D{Yx> zAy$WF4QhPe4jZuIC;-|)(tdV320mBq2|WIeV=VU z^mV(k{qvHX^M|JQF)qvi~5Uz)uF-$Qm}%dR8M z^|cF6Jc7omh;(8|0t`WE2cz45@<07fu2lTa7ytZ)zy52iRfHxDO>N9U@xK=O2LOXi z&00iIm(wsuk-lT>#vAtE`r>mJ>XpV}9Qe@nA9B`m!n0rrqzpi7twatOaMzs0iH{t> zts=5acY#w&pZ$$bR4&i0RLXUeU6=DRy&c>3ruP|ZDdbZOlMGX5+-jy$yn6yUKq#<< z3NAf;TDiKW{H9Q@lpagTN@>lJHX<{z))6DpF=vlleTJ(*=n+B3m;G`K$Rmt{=)f}R z{y*gT++rfF4AHtYIJ6{*?wKLd9B+(79Gy6}NsjcV3qrS$_E4TpwOtkFck@yzRtk#v;$p((IiaIILS8YSUmTf@%zOVbF zr0>{Ppq{^*0{x_}f4uTjYczB<7?>_wk;7cp|~AYYAe1pke$DSp!M2Iur+@&84t+ znOPI5Xh8}uqSu!OU}r5?*AXvn0)Sy=ZF{3u^8-)ltcJN|Y#htt zp;O;&8uhFq3xR^H8Qvwe{>+t=9~#~L#%)K>&YWm~B*=*L{-fH*Y%7vRC{ja>t_vU# zm^85hdyqaE0RpWx2Moi6r6Dv}AS*DK*|X=J2+(M_W>wpH8;-;t(|Nx=`}~X}rZO8D zU1t*(l!Ra=O{%4v)jH}IEd|~VFBQZfWm-D$0ydRt7`u!6$L5b$edMi@FV|jt_`zG= z_ra0Gbil9k|>P|=;nnJ<2(1PYtvs_=ke{9 zQ}kC?>`GPShBkEO@eSNOfI_SazW`inP~C@bz_B4+maYdFNSk1Wz#3=2IoFt)$T+|N z-~#8QzEbgd0D=@jX)>2Y{)?wJQagBj(w+?EMU(2FQ;hYhcD?niJ>avJ1j8xbe{B8D zHw+a)9&j0WQe}dQJLKb|HpYMg@PV!7Y9*r-h1UQ}V7>_jGL;OZD8u;r#oEn>bHfCY zv4MIJc%I*|0>`oifi+PLSS9n!ivH5M%GjR51Tb#H1Swz+cno;5tcyeJ0SY1m+?2%! z_YB`m7zY?w0zP+q`e(-uE5HOsfPtnDmrxj~I}HpvDLZZ34ATq>!*XON3MngxkH2x- z9l#cV0AI<1X&b;6Ad|^>P7b3ZL4mZ1^pV?2H{Mnk@YjG~=?!o_hW`N<;Rx(&*q=sg$!CdeU`2a((IcEDF)3 z8ze)8AK;NDzH)wT3AW1R*~YpHw}FWavL|QHfBuV<;sf`*W5YqS0oT_y{IObX=1YI$ zKlmlPQC3=@wEMOXetZP^`+oE1F#QS#?B_@Be8W4ZpFDxNE2cKCJAB=V)5k%ElON$G zE?#&}_*JbHK@fz7A`)Z^oyvavmw(l*Rle}YpV)Z*2~_JsgQGKlj&DV1F&dHN(9yLC zY!GxBP7ZwMo|_Jj9ew)A<6aZD;P8(h{cy=2Bi|H)G${bufN%_zYg99f!|&cE-am)} zK%w8O^5=i+j~CBOFKukBYgyHjwV9WhTS`ZbnrR3d6tYL99W;t=@fHV;h9(38=hoIP zEYw|pBXH{+ctZJF2hdt*#gbWRLU&@^+7na=&GxX+jl{nWF zT8q}E<#7Cs=<3zI8g*Cy*<1A%F}%swZXDPT8b@88=&>#VqeIe&I)76^pttTxY}|(a zK*#Xl=sk14yt)LKYXw(5@~7x-TO^w&p|Ko`uZd>vs#2u8kT_lIC^i|j^`16~l*pvx zb!%QGOfjk5Tu~BgA%gC*yYt^P!d2eCF6f`kvKLxkQ|Zac@tVMNhizsnbL#FPzG_ok z75(@5`2E5CzJc1i^&Ba4wpcJTgS8M4f|zy7WllI6gb*$BV2bB!NM*MvLHi#Np52m& zq=GhAiEY2a=Qwffa+H8rkDuaPqr4+0L5O97_B~?M`rJJz+Wj6&7aCdWRGC@HF zI?%*Q>gGlRE+Qv%Cd`7V5P+Es10W$xC=BOI8eEpOz}A{|#mrKN2vOE3W= zAg-hF?DX@j{abe(9YW544Pj8E^xw;rMe8br_?rj?fN;6g1fNiovf-+)|LwOh>!YS2 z0Vt4!1Ehf*GGmTCkcss0Z4Xm=&%eK=yrZ$2EgQoYgn-uI=-Qt4zFO2BI%*-JmOO~) zLSREFWf)|cR*KD{XWyDXVy*<^#z3A0E}cIA^kYFPb^H5%5Kf6(eoloT0caM64OqSx z2q=B#1*5uzd`{#CYcm(qel6u>;Hq-jO%0Bs>GM*>l-d{OgO|z|fCeDrX0lSLrpsWE z0n@gjfu>8o5}K3`5B4+j!3l*j;6qm-j;%DBuvtTCAvI|Yq%vpM^n7~op}F!RP=#th z*MRSyZg_!>#r67p9oiNQa?CSzx}Z=4R)Obhm=^ZDQ}~-O`$$$_o;59}NNfQ?;%4J>J{_%LH*>!OoJDudxsxpfNH-DKQwWGxSS z08^QzpS!#C69>$F2exu?)N=|-*updo!vqW_Tc@%Z7%1-CGipaZX$9Z{OTfcV9EX*% z_e|}*bI;VST)|&>*Qo!?cVyn4#c+7M1GvCt;F}8n^4XQ&JY79iD6JN9t_3%MS3`-A zIyrOUZ~lT;XQ$rwuIA*(y04)d4$G~wx%`z+`wx8CtgiS$pt7U;-}HeU#gY4d{g-j} zC9_fStyF2xjpK#Em%j41hVN(dgX_zS8<$VP_uO*1wz9(2b?r-n0SJa*2oPyc9=Y}Q zzx=)5`^>NYhmG$&iLwVJ0Gkm_ho0rTg99SE!GuyU3b5XO!yC2^ZF%;|=bKIcjoBN1 z?C1xEDn+v_OkoS#KuRbAQbLr(Mz&(Vp(Nfvj3OX_Cga@dU;mfiKlS{HrOHOtRIZJ{ zfDLmiMh*;Y57rwbpasJau;5$G{GnkC0zyLz1Xy|Mw7=G@`LeEjpMy~6M?-69&6*ME zZN@ydy*I=Phg&o7KK8K>%pk2}dj@*5qWZb-WeCtymFnD3X(3yV7*k_UhQIJ9PCLMayg_G)>lv0C1$khK^a(B}0Ytpgj>| zC5RRXyK3LJ1gWV0E#3VvH|{3}g&A{aYsMeAO;_83p=G4lAt6#vzX@$ggnKobzdw0^5qi-N&!k%?uo0{e;Ux*MOFtI7okkiLf&maj@IwEp3Lp>goxj_##Z7E0wCU1igJi453RHay=c3~8h+SfrE`-erCH%If8b%-BBKok9vEVtQLsH#s-CJ?q-L z2vKbnsHs&=>9VWOp1kta-~OckMMiSUZ1yv9CE{_`DtK(1Qr zO>$W&?J+_rFB0`aysi;mdmK{IKBEcOV?}}l34?5l?NkkK-F5pY3d2D$jZ{iD9{={e zYt4;ax86}Ya5(bd$C`*)DS|Ly3O1xGO+i?>6ilB1poX`&wT;^9+~80SteP7YXJi6o zHD+dWfGM!1&Bx2S3`l@N7oQWOS_WD|D_ChEtQ1_2n+*X04L`tYU_3eBSOYxhRq!*@ zvpVI3mD5^~f+@gcfAQt==dSqQ^f3){333_wH^)HUn%}g+F`Z_v z81R=DnhWGK0E8}pfRVJ7Dve-Z$l1R4!|%TH7e03Pzy9d$KmM*G+sB5sIpS?2&c`Rs zy+8)20r#K0s55q$)&>s_4WN+0NQrmvlasrU&Wy6Yk=%cEWaK@9wm}mqT_~t*njKpS z(j;J5%5qe$fMW6Bp?w7)4P*cT_`r)x-l`9C+qTh(VNtCOHJ1O`&0{~k%h?U&000%> z0`NHSD=)A8yYJ1N%az1Q@!TQH#X0PKwb4Hb4$2 z2jks0y*VROFFbR?lg1sn+uy(c-KFM`>8C-KFep$`vaqr#a#YQ(8rNkqKeQbqk?YgO zGiN{f>%VpR^x4(w#+vqPVBdh0DlP3p#eGiA%9t4v7L$M>z=1UC`RhlK))0Ue*udP& zXSJ`Z%CE5uNC!$PRvOU68ek&biJ3y3oEB$hg68lgfaunDj#zfIZQDj+?R#Jdk=xkB z0vc`pN8CN+)t!)|g?i(KqRkp9UPjt0=Bt6Cn5Xvp))#SifyE>S>KmsEN51xOwL}SA z(Q>K;>L8&N=$Z-GOw4J47fwWF^t1`ChWFa*8g;%;;HdDKJMd+9ecM1Ikq>wFMSCwh z{u%C_wV!)Cr!U#BJtUfiJ6J%!*5XJLf_mcg4&TnnfOvkPXR|OFx)EeTzUW)Ww&pdp zn=I0ePDF@WF!8=kPph0RnX&iz?()OgG%hGbils3i#}Y}y#nQm$D?mT*F8p#vrTAdq#5^$_uE zm`aS;oQ5V1Vz3q@P*)i{3+Oe!>{_1E((rhHerj0dT;FHQ*05|iCJTvR4IAG*@jb=r zmi;$pkTR4(AS0T3B5`wCOR%BP2$)+<4Ps`^4APpoq5Oq9~8}X*^rQl0ee{18E<-F#0n)D!bPg(-(L^2_Z-esPO7vL^{4v z>uAJqCcL|o7+@vY_Y6+6eESFA$Bqq_ zAWcLh1OrNk?qb*^!1w)=r$x;-iW5+@Hg{!UAO$dL<#gJHFlc>)R%^26+qvA=Pt9Ef zYJdjPz|^3vRS+uN1OVF(V4~*fAS7CQrv2nX;{q@bu?U)8tp{3*&|ixXN^54oaaI-^ zGc@|k_aFanml|L7tZ%yF3Kx`-wuR<}8FFEOl+>Q(d}qObS<}-#o$(Y*?Ln@={^oq+ z>lMBPxWEwM=%|wc2=IY5FHppWA%qr?Iw0re<;D!K62Lc7FdVj>1*z)LH6fRQ$F5Y3 zoTK420(C{D|MOR#{_ig>f4gk{#zWH&&3gG#5gX+ui$8sGdKzc|X%j|#yV)O{sJ-ag zUM{mJBN@pAa*nw5`faA;-H{9a-2^^f#1Go|K?@%nH{M@#|J9Up1CRr%z)OsiRTeRl zH9&USK_Q2sB5xT^Ip(cq(WJS<*0B7-X5s5P@mwbk-g! zZ5_>};z=lh4dD3YRTM|J?%raolM+j$w3k|4)3pYGGsgl%76yQ{Gw+WvtL{ovO=|H$fW~?y?PA-DRLacwqX!V);Wz`fUUtAN~n`_<;#m}_4>LB>X06!CLOR=(2`jb z6j--*d17ZgZ3sXen-d8(9&QxH=!BwugvcHs%B-DDi|2=|n_~A2U1z+}X)MCO@u6{o z?e|5m{g%saa=SiXeTD4>41KffkVRfAG}(l(#CwV}OaiT5MAMbmwP1(Mz*@4W+t2+9 zqs_8FXR~l;60zmO?@oE9kIE_&*<# zQsS$Z*#^8l?>Ec3_c_WZd3clPe%d5$tLWYcU2|`5Jx|j=MWG{peBD~U7x3PO@ z2HV<@X*ob9u#WXT!_+Z|@8ZFck!tKtDE=G9irw{a(hoG+JM$5nPbeiJ(hX%GGzn|1 z3XHZ~K`pJ7mhp1SO%>u*D2eskEf`BCEpwW%<{GRG1f+cgfzYm!(p6ZhMxJ_1g+ZYW zXr(~}10X`vPo>hP!4{ND!A`@mVL`Kt;Hi~ki{9#?JqL%8 zOTl7-hDOJ2Ume}nG7IkX3cvs>6}TK!$y<=?FP%NPG`slqKmFVCH(x}JV2Ip~;cZ8c zu3x%Rd*(vr{uBD4Im`;wOt66*uv_o?4~Mq?gMm5cLc?l6F|=sU@g~D*9*957A zy0~)biF3~`sdbsrfC8mNoo^pIv0HX#9 z7E29SPz*Lqm>KwiuGV1yS|iZ&75V52UhwVj%m$0Air9n-n_K{3!B*acmRC+p=eF$o z+KIK_ePHR6Pr5-qpGsM#cB#J1YspP0SO))_?>T_{`WOH7p|8I%s~e0rw#tScHqiM08`>_)Ra zfc$~x+K*qi<2P@cIsi;E#uRn}w<`VdZH4QAK|lkSfkzf94Uq~3fN&+NHe3io&dxjd zu_L8lnaX?+I0y^_4j~1kZO5>Hu)j=82}7GEr_yk8Rw@qzE>H(*Kn*zC;Cg_u(P8__ z$`6zZKQom%1QY-bTmtT8{EO!oe(v$PhoreSKE}m72S5$OgyKwd=_`-n%$aTJLhU<` z)t-C=DOvi!yX0`Le167#;;HS@X*~Sc#uq=2g&FuhJ2{N*xa+O=ET4J##m{{b>=HDz z7%LV3?)Uz``mq<_HlRHN97?(xMm{&Xuy~2cXHo)MBVcHP5|Px+U`4DbI!6>d-&ihpEusMd8@Y*Z#*}s7q_!dQ$}=lPNM=uFokWo72uNYii6Mu|--~HcS(y z1=dKb+|D#gi0pzqTzUFfv(Z?U?mBx-p?oOGT7wl>hxWJ8Ob?B^;tfCImL^X8JC2zY z3*sZ)7Nm%5d?Th!VLR#=*S8Ow5o>X_47?(4*TzBdJpj?KJ}fH9F*gMS?G)7cFR?6i ztrGn|wO)2J>rJA4A0def6MI&#A??+Z^u;?Z@Um$^iL9>`@ln(@$qSQOpod$&hLFI( z{RF*U8aixZ5laGz=hpi+bfL~s^s0T`9r{YbXsH18d`kjuv{a>A3w}JG`t?Rv-}iRQ zRUm8hGGQ�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%0DM`P>}F5G!1U5 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 z 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.qY0G0EBzfXFwG8^uu|g3?)fZNJ=7{A9Dr3fGto3 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

xntYeS-poWu}wWGB?12}ndP^%=d| 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�QO5q$#59-fXNJC3;7@t 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%0AL%n-vM{P=Ob=r{OI}ZkDratu5Mr4 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

_!N2Lsi@ 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

BOP!!x{d4!8%Lg9BawfBw1qxqsb-n}GM> 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 literal 0 HcmV?d00001 diff --git a/webui/routes.go b/webui/routes.go index efe2384..fa2ceae 100644 --- a/webui/routes.go +++ b/webui/routes.go @@ -21,6 +21,12 @@ import ( "github.com/mudler/LocalAgent/services" ) +//go:embed views/* +var viewsfs embed.FS + +//go:embed public/* +var embeddedFiles embed.FS + //go:embed react-ui/dist/* var reactUI embed.FS @@ -33,6 +39,12 @@ func (app *App) registerRoutes(pool *state.AgentPool, webapp *fiber.App) { Browse: true, })) + /* webapp.Use("/public", filesystem.New(filesystem.Config{ + Root: http.FS(embeddedFiles), + PathPrefix: "public", + Browse: true, + })) + */ if len(app.config.ApiKeys) > 0 { kaConfig, err := GetKeyAuthConfig(app.config.ApiKeys) if err != nil || kaConfig == nil { @@ -41,9 +53,15 @@ func (app *App) registerRoutes(pool *state.AgentPool, webapp *fiber.App) { webapp.Use(v2keyauth.New(*kaConfig)) } - webapp.Get("/", func(c *fiber.Ctx) error { - return c.Redirect("/app") - }) + /* webapp.Get("/", func(c *fiber.Ctx) error { + return c.Render("views/index", fiber.Map{ + "Agents": pool.List(), + "AgentCount": len(pool.List()), + "Actions": len(services.AvailableActions), + "Connectors": len(services.AvailableConnectors), + }) + }) + */ webapp.Use("/app", filesystem.New(filesystem.Config{ Root: http.FS(reactUI), PathPrefix: "react-ui/dist", @@ -59,6 +77,31 @@ func (app *App) registerRoutes(pool *state.AgentPool, webapp *fiber.App) { return c.Send(indexHTML) }) + /* webapp.Get("/agents", func(c *fiber.Ctx) error { + statuses := map[string]bool{} + for _, a := range pool.List() { + agent := pool.GetAgent(a) + if agent == nil { + xlog.Error("Agent not found", "name", a) + continue + } + statuses[a] = !agent.Paused() + } + return c.Render("views/agents", fiber.Map{ + "Agents": pool.List(), + "Status": statuses, + }) + }) + */ + /* webapp.Get("/api/create", func(c *fiber.Ctx) error { + return c.Render("views/create", fiber.Map{ + "Actions": services.AvailableActions, + "Connectors": services.AvailableConnectors, + "PromptBlocks": services.AvailableBlockPrompts, + }) + }) + */ + // Define a route for the GET method on the root path '/' webapp.Get("/sse/:name", func(c *fiber.Ctx) error { m := pool.GetManager(c.Params("name")) if m == nil { @@ -69,18 +112,70 @@ func (app *App) registerRoutes(pool *state.AgentPool, webapp *fiber.App) { return nil }) + /*webapp.Get("/status/:name", func(c *fiber.Ctx) error { + history := pool.GetStatusHistory(c.Params("name")) + if history == nil { + history = &state.Status{ActionResults: []types.ActionState{}} + } + // reverse history + + return c.Render("views/status", fiber.Map{ + "Name": c.Params("name"), + "History": Reverse(history.Results()), + }) + }) + + webapp.Get("/notify/:name", app.Notify(pool)) + webapp.Post("/chat/:name", app.Chat(pool)) + */ webapp.Post("/api/agent/create", app.Create(pool)) webapp.Delete("/api/agent/:name", app.Delete(pool)) webapp.Put("/api/agent/:name/pause", app.Pause(pool)) webapp.Put("/api/agent/:name/start", app.Start(pool)) - webapp.Post("/api/chat/:name", app.Chat(pool)) - webapp.Post("/api/notify/:name", app.Notify(pool)) + // Add JSON-based chat API endpoint + webapp.Post("/api/chat/:name", app.ChatAPI(pool)) conversationTracker := connectors.NewConversationTracker[string](app.config.ConversationStoreDuration) webapp.Post("/v1/responses", app.Responses(pool, conversationTracker)) + /* webapp.Get("/talk/:name", func(c *fiber.Ctx) error { + return c.Render("views/chat", fiber.Map{ + // "Character": agent.Character, + "Name": c.Params("name"), + }) + }) + + webapp.Get("/settings/:name", func(c *fiber.Ctx) error { + status := false + for _, a := range pool.List() { + if a == c.Params("name") { + status = !pool.GetAgent(a).Paused() + } + } + + return c.Render("views/settings", fiber.Map{ + "Name": c.Params("name"), + "Status": status, + "Actions": services.AvailableActions, + "Connectors": services.AvailableConnectors, + "PromptBlocks": services.AvailableBlockPrompts, + }) + }) + + webapp.Get("/actions-playground", func(c *fiber.Ctx) error { + return c.Render("views/actions", fiber.Map{}) + }) + + webapp.Get("/group-create", func(c *fiber.Ctx) error { + return c.Render("views/group-create", fiber.Map{ + "Actions": services.AvailableActions, + "Connectors": services.AvailableConnectors, + "PromptBlocks": services.AvailableBlockPrompts, + }) + }) + */ // New API endpoints for getting and updating agent configuration webapp.Get("/api/agent/:name/config", app.GetAgentConfig(pool)) webapp.Put("/api/agent/:name/config", app.UpdateAgentConfig(pool)) diff --git a/webui/views/actions.html b/webui/views/actions.html new file mode 100644 index 0000000..f4e2c33 --- /dev/null +++ b/webui/views/actions.html @@ -0,0 +1,291 @@ + + + + + + Actions Playground + {{template "views/partials/header"}} + + + {{template "views/partials/menu"}} + + +

+ +
+
+

Actions Playground

+

Test and execute actions directly from the UI

+
+ +
+

Select an Action

+
+ + +
+
+ + + + + +
+

© 2025 LocalAgent.

+
+
+ + + + + + \ No newline at end of file diff --git a/webui/views/agents.html b/webui/views/agents.html new file mode 100644 index 0000000..1781f4a --- /dev/null +++ b/webui/views/agents.html @@ -0,0 +1,332 @@ + + + + + + Agent List + {{template "views/partials/header"}} + + + + {{template "views/partials/menu"}} + + +
+ +
+ +
+
+

Agent List

+

Manage and interact with your AI agents

+
+ +
+ + Add New Agent + + +
+ + + +
+ {{ $status := .Status }} + {{ range .Agents }} +
+
+
+ +
+ +
+
+

{{.}}

+
+ + {{ if eq (index $status .) true }}Active{{ else }}Inactive{{ end }} + +
+ + + +
+ + + + +
+
+
+ {{ end }} +
+ + + +
+

© 2025 LocalAgent.

+
+
+ + + + \ No newline at end of file diff --git a/webui/views/chat.html b/webui/views/chat.html new file mode 100644 index 0000000..92a86f0 --- /dev/null +++ b/webui/views/chat.html @@ -0,0 +1,91 @@ + + + + Smart Agent Interface + {{template "views/partials/header"}} + + + + {{template "views/partials/menu"}} +
+ + +
+

Talk to '{{.Name}}'

+
+ + +
+ +
+

Clients:

+
+ +
+
+
+ +
+

Status:

+
+ +
+
+
+
+
+ + +
+

Agent:

+
+ +
+
+
+ + +
+
+ +
+
+
+ +
+ + + + diff --git a/webui/views/create.html b/webui/views/create.html new file mode 100644 index 0000000..95413dc --- /dev/null +++ b/webui/views/create.html @@ -0,0 +1,154 @@ + + + + Create New Agent + {{template "views/partials/header"}} + + + + + + + {{template "views/partials/menu"}} +
+
+

Create New Agent

+ +
+ {{template "views/partials/agent-form" . }} + + +
+
+ + +
+ + + + +
+
+ + +
+ +
+ + + + diff --git a/webui/views/group-create.html b/webui/views/group-create.html new file mode 100644 index 0000000..f378e54 --- /dev/null +++ b/webui/views/group-create.html @@ -0,0 +1,600 @@ + + + + Create Agent Group + {{template "views/partials/header"}} + + + + + + + + {{template "views/partials/menu"}} +
+
+

Create Agent Group

+ + +
+
+
1
+
Generate Profiles
+
+
+
2
+
Review & Select
+
+
+
3
+
Configure Settings
+
+
+ + +
+

Generate Agent Profiles

+

Describe the group of agents you want to create. Be specific about their roles, relationships, and purpose.

+ +
+ +
+ +
+ +
+
+ + +
+ +

Generating agent profiles...

+
+ + +
+

Review & Select Agent Profiles

+

Select the agents you want to create. You can customize their details before creation.

+ +
+ +
+ +
+ +
+ +
+ + +
+
+ + +
+

Configure Common Settings

+

Configure common settings for all selected agents. These settings will be applied to each agent.

+ +
+ +
+ +
+

Basic Information from Profiles

+

The name, description, and system prompt for each agent will be taken from the profiles you selected in the previous step.

+
+
+ + +
+ {{template "views/partials/agent-form" . }} +
+
+ +
+ + +
+
+
+ + +
+ + + + +
+
+ + +
+ +
+ + + + diff --git a/webui/views/index.html b/webui/views/index.html new file mode 100644 index 0000000..ec6e144 --- /dev/null +++ b/webui/views/index.html @@ -0,0 +1,224 @@ + + + + Smart Assistant Dashboard + {{template "views/partials/header"}} + + + + {{template "views/partials/menu"}} + + + +
+ +
+ + + + \ No newline at end of file diff --git a/webui/views/login.html b/webui/views/login.html new file mode 100644 index 0000000..01a5f86 --- /dev/null +++ b/webui/views/login.html @@ -0,0 +1,215 @@ + + +{{template "views/partials/header" .}} + + +
+ + {{template "views/partials/menu" .}} + +
+ +
+
+
+ +
+
+ +
+
+

+ + Authorization Required + +

+

Please enter your access token to continue

+
+ +
+
+ +
+
+ +
+ +
+
+ +
+ +
+
+ +
+
+ + Instance is token protected +
+

Current time (UTC): {{.CurrentDate}}

+
+
+
+
+ +
+ + + + + \ No newline at end of file diff --git a/webui/views/partials/agent-form.html b/webui/views/partials/agent-form.html new file mode 100644 index 0000000..42353ad --- /dev/null +++ b/webui/views/partials/agent-form.html @@ -0,0 +1,307 @@ +
+ +
+
    +
  • + Basic Information +
  • +
  • + Connectors +
  • +
  • + Actions +
  • +
  • + MCP Servers +
  • +
  • + Memory Settings +
  • +
  • + Model Settings +
  • +
  • + Prompts & Goals +
  • +
  • + Advanced Settings +
  • +
+
+ + +
+ +
+

Basic Information

+ +
+ + {{ if .Name }} + + {{ else }} + + {{ end }} +
+ +
+ + +
+ +
+ + +
+ +
+ +
+ +
+ +
+
+ + +
+

Connectors

+ +
+ +
+ +
+ +
+
+ + +
+

Actions

+ +
+ +
+ +
+ +
+
+ + +
+

MCP Servers

+ +
+ +
+ +
+ +
+
+ + +
+

Memory Settings

+ +
+ +
+ +
+ + +
+ +
+ +
+ +
+ +
+
+ + +
+

Model Settings

+ +
+ + +
+ +
+ + +
+ +
+ + +
+ +
+ + +
+ +
+ + +
+ +
+ + +
+ +
+ +
+
+ + +
+

Prompts & Goals

+ +
+ +
+ +
+ +
+ +
+ + +
+ +
+ + +
+
+ + +
+

Advanced Settings

+ +
+ +
+ +
+ +
+ +
+ +
+ +
+ +
+ +
+ + +
+
+
+
+ + +
+
+ +
+ +
+
+ +
+
+ Basic Information +
+
+ +
+ +
+
\ No newline at end of file diff --git a/webui/views/partials/header.html b/webui/views/partials/header.html new file mode 100644 index 0000000..6c5b1a4 --- /dev/null +++ b/webui/views/partials/header.html @@ -0,0 +1,10 @@ + + + + + + + + + + \ No newline at end of file diff --git a/webui/views/partials/menu.html b/webui/views/partials/menu.html new file mode 100644 index 0000000..84eaaed --- /dev/null +++ b/webui/views/partials/menu.html @@ -0,0 +1,105 @@ + +
+ + \ No newline at end of file diff --git a/webui/views/settings.html b/webui/views/settings.html new file mode 100644 index 0000000..e3f2a11 --- /dev/null +++ b/webui/views/settings.html @@ -0,0 +1,462 @@ + + + + Agent settings {{.Name}} + {{template "views/partials/header"}} + + + + + + + {{template "views/partials/menu"}} + + +
+ +
+ +
+
+

Agent settings - {{.Name}}

+
+ +
+ + +
+

Edit Agent Configuration

+
+ + + {{template "views/partials/agent-form" .}} + + +
+
+ +
+

Agent Control

+
+ +
+
+ +
+

Export Data

+

Export your agent configuration for backup or transfer.

+ +
+ +
+

Danger Zone

+

Permanently delete this agent and all associated data. This action cannot be undone.

+ +
+ + +
+
+ + + + \ No newline at end of file diff --git a/webui/views/status.html b/webui/views/status.html new file mode 100644 index 0000000..8339c3f --- /dev/null +++ b/webui/views/status.html @@ -0,0 +1,61 @@ + + + + Smart Agent status + {{template "views/partials/header"}} + + + + {{template "views/partials/menu"}} +
+ +
+

{{.Name}}

+
+ +
+
+ {{ range .History }} + +
+

Agent:

+
+ Result: {{.Result}} Action: {{.Action}} Params: {{.Params}} Reasoning: {{.Reasoning}} +
+
+ {{end}} +
+
+ + From 53d135bec91a07a48e7d848023e27bdd2c9520da Mon Sep 17 00:00:00 2001 From: Richard Palethorpe Date: Tue, 1 Apr 2025 16:44:35 +0100 Subject: [PATCH 360/399] chore(ui): Move zombie UI to old --- webui/app.go | 6 +- webui/{ => old}/public/css/styles.css | 0 webui/{ => old}/public/css/wizard.css | 0 webui/{ => old}/public/dash.png | Bin webui/{ => old}/public/dash2.png | Bin webui/{ => old}/public/js/agent-form.js | 0 webui/{ => old}/public/js/common.js | 0 .../public/js/connector-templates.js | 0 webui/{ => old}/public/js/wizard.js | 0 webui/{ => old}/public/logo_1.png | Bin webui/{ => old}/views/actions.html | 8 +- webui/{ => old}/views/agents.html | 14 +- webui/{ => old}/views/chat.html | 6 +- webui/{ => old}/views/create.html | 20 +-- webui/{ => old}/views/group-create.html | 16 +- webui/{ => old}/views/index.html | 10 +- webui/{ => old}/views/login.html | 4 +- .../{ => old}/views/partials/agent-form.html | 0 webui/{ => old}/views/partials/header.html | 4 +- webui/{ => old}/views/partials/menu.html | 20 +-- webui/{ => old}/views/settings.html | 22 +-- webui/{ => old}/views/status.html | 4 +- webui/routes.go | 153 +++++++++--------- 23 files changed, 144 insertions(+), 143 deletions(-) rename webui/{ => old}/public/css/styles.css (100%) rename webui/{ => old}/public/css/wizard.css (100%) rename webui/{ => old}/public/dash.png (100%) rename webui/{ => old}/public/dash2.png (100%) rename webui/{ => old}/public/js/agent-form.js (100%) rename webui/{ => old}/public/js/common.js (100%) rename webui/{ => old}/public/js/connector-templates.js (100%) rename webui/{ => old}/public/js/wizard.js (100%) rename webui/{ => old}/public/logo_1.png (100%) rename webui/{ => old}/views/actions.html (98%) rename webui/{ => old}/views/agents.html (96%) rename webui/{ => old}/views/chat.html (95%) rename webui/{ => old}/views/create.html (91%) rename webui/{ => old}/views/group-create.html (98%) rename webui/{ => old}/views/index.html (96%) rename webui/{ => old}/views/login.html (99%) rename webui/{ => old}/views/partials/agent-form.html (100%) rename webui/{ => old}/views/partials/header.html (85%) rename webui/{ => old}/views/partials/menu.html (78%) rename webui/{ => old}/views/settings.html (96%) rename webui/{ => old}/views/status.html (96%) diff --git a/webui/app.go b/webui/app.go index d85c77f..75cf677 100644 --- a/webui/app.go +++ b/webui/app.go @@ -249,7 +249,7 @@ func (a *App) ImportAgent(pool *state.AgentPool) func(c *fiber.Ctx) error { } } -func (a *App) Chat(pool *state.AgentPool) func(c *fiber.Ctx) error { +func (a *App) OldChat(pool *state.AgentPool) func(c *fiber.Ctx) error { return func(c *fiber.Ctx) error { payload := struct { Message string `json:"message"` @@ -307,9 +307,9 @@ func (a *App) Chat(pool *state.AgentPool) func(c *fiber.Ctx) error { } } -// ChatAPI provides a JSON-based API for chat functionality +// Chat provides a JSON-based API for chat functionality // This is designed to work better with the React UI -func (a *App) ChatAPI(pool *state.AgentPool) func(c *fiber.Ctx) error { +func (a *App) Chat(pool *state.AgentPool) func(c *fiber.Ctx) error { return func(c *fiber.Ctx) error { // Parse the request body payload := struct { diff --git a/webui/public/css/styles.css b/webui/old/public/css/styles.css similarity index 100% rename from webui/public/css/styles.css rename to webui/old/public/css/styles.css diff --git a/webui/public/css/wizard.css b/webui/old/public/css/wizard.css similarity index 100% rename from webui/public/css/wizard.css rename to webui/old/public/css/wizard.css diff --git a/webui/public/dash.png b/webui/old/public/dash.png similarity index 100% rename from webui/public/dash.png rename to webui/old/public/dash.png diff --git a/webui/public/dash2.png b/webui/old/public/dash2.png similarity index 100% rename from webui/public/dash2.png rename to webui/old/public/dash2.png diff --git a/webui/public/js/agent-form.js b/webui/old/public/js/agent-form.js similarity index 100% rename from webui/public/js/agent-form.js rename to webui/old/public/js/agent-form.js diff --git a/webui/public/js/common.js b/webui/old/public/js/common.js similarity index 100% rename from webui/public/js/common.js rename to webui/old/public/js/common.js diff --git a/webui/public/js/connector-templates.js b/webui/old/public/js/connector-templates.js similarity index 100% rename from webui/public/js/connector-templates.js rename to webui/old/public/js/connector-templates.js diff --git a/webui/public/js/wizard.js b/webui/old/public/js/wizard.js similarity index 100% rename from webui/public/js/wizard.js rename to webui/old/public/js/wizard.js diff --git a/webui/public/logo_1.png b/webui/old/public/logo_1.png similarity index 100% rename from webui/public/logo_1.png rename to webui/old/public/logo_1.png diff --git a/webui/views/actions.html b/webui/old/views/actions.html similarity index 98% rename from webui/views/actions.html rename to webui/old/views/actions.html index f4e2c33..a87acc7 100644 --- a/webui/views/actions.html +++ b/webui/old/views/actions.html @@ -4,10 +4,10 @@ Actions Playground - {{template "views/partials/header"}} + {{template "old/views/partials/header"}} - {{template "views/partials/menu"}} + {{template "old/views/partials/menu"}}
@@ -97,7 +97,7 @@ }); function fetchActions() { - fetch('/actions') + fetch('/api/actions') .then(response => response.json()) .then(actions => { const select = document.getElementById('action-select'); @@ -173,7 +173,7 @@ `; // Execute the action - fetch(`/action/${actionId}/run`, { + fetch(`/api/action/${actionId}/run`, { method: 'POST', headers: { 'Content-Type': 'application/json', diff --git a/webui/views/agents.html b/webui/old/views/agents.html similarity index 96% rename from webui/views/agents.html rename to webui/old/views/agents.html index 1781f4a..9eeb66d 100644 --- a/webui/views/agents.html +++ b/webui/old/views/agents.html @@ -4,7 +4,7 @@ Agent List - {{template "views/partials/header"}} + {{template "old/views/partials/header"}} - {{template "views/partials/menu"}} + {{template "old/views/partials/menu"}}
@@ -60,7 +60,7 @@
- + Add New Agent
- Status - Talk @@ -141,7 +141,7 @@ Start {{ end }} - @@ -244,7 +244,7 @@ button.addEventListener('click', function() { const agent = this.getAttribute('data-agent'); const isActive = this.getAttribute('data-active') === 'true'; - const endpoint = isActive ? `/pause/${agent}` : `/start/${agent}`; + const endpoint = isActive ? `/api/agent/${agent}/pause` : `/api/agent/${agent}/start`; // Add animation this.style.animation = 'pulse 0.5s'; diff --git a/webui/views/chat.html b/webui/old/views/chat.html similarity index 95% rename from webui/views/chat.html rename to webui/old/views/chat.html index 92a86f0..fc42b5f 100644 --- a/webui/views/chat.html +++ b/webui/old/views/chat.html @@ -2,7 +2,7 @@ Smart Agent Interface - {{template "views/partials/header"}} + {{template "old/views/partials/header"}} - {{template "views/partials/menu"}} + {{template "old/views/partials/menu"}}
@@ -78,7 +78,7 @@
-
diff --git a/webui/views/create.html b/webui/old/views/create.html similarity index 91% rename from webui/views/create.html rename to webui/old/views/create.html index 95413dc..887fa26 100644 --- a/webui/views/create.html +++ b/webui/old/views/create.html @@ -2,20 +2,20 @@ Create New Agent - {{template "views/partials/header"}} - - - - + {{template "old/views/partials/header"}} + + + + - {{template "views/partials/menu"}} + {{template "old/views/partials/menu"}}

Create New Agent

-
- {{template "views/partials/agent-form" . }} + + {{template "old/views/partials/agent-form" . }}
@@ -69,7 +69,7 @@ +
+ )} +
+
+
+ ); +} + +export default ImportAgent; diff --git a/webui/react-ui/src/router.jsx b/webui/react-ui/src/router.jsx index c0f5a74..f7d5c34 100644 --- a/webui/react-ui/src/router.jsx +++ b/webui/react-ui/src/router.jsx @@ -8,6 +8,7 @@ import Chat from './pages/Chat'; import ActionsPlayground from './pages/ActionsPlayground'; import GroupCreate from './pages/GroupCreate'; import AgentStatus from './pages/AgentStatus'; +import ImportAgent from './pages/ImportAgent'; // Get the base URL from Vite's environment variables or default to '/app/' const BASE_URL = import.meta.env.BASE_URL || '/app'; @@ -46,6 +47,10 @@ export const router = createBrowserRouter([ path: 'group-create', element: }, + { + path: 'import', + element: + }, { path: 'status/:name', element: diff --git a/webui/react-ui/src/utils/api.js b/webui/react-ui/src/utils/api.js index 36fd7eb..b4f0444 100644 --- a/webui/react-ui/src/utils/api.js +++ b/webui/react-ui/src/utils/api.js @@ -142,11 +142,11 @@ export const agentApi = { }, // Import agent configuration - importAgentConfig: async (configData) => { + importAgent: async (formData) => { const response = await fetch(buildUrl(API_CONFIG.endpoints.importAgent), { method: 'POST', headers: API_CONFIG.headers, - body: JSON.stringify(configData), + body: formData, }); return handleResponse(response); }, From 9f77bb99f146df0b5d2bccf034d2a5ffdf8e4d6b Mon Sep 17 00:00:00 2001 From: Richard Palethorpe Date: Wed, 2 Apr 2025 07:43:48 +0100 Subject: [PATCH 364/399] fix(ui): Various fixes --- webui/react-ui/src/App.jsx | 6 ------ webui/react-ui/src/pages/ImportAgent.jsx | 4 ++-- webui/react-ui/src/utils/api.js | 1 - 3 files changed, 2 insertions(+), 9 deletions(-) diff --git a/webui/react-ui/src/App.jsx b/webui/react-ui/src/App.jsx index d0ee160..2aeb250 100644 --- a/webui/react-ui/src/App.jsx +++ b/webui/react-ui/src/App.jsx @@ -114,12 +114,6 @@ function App() {
- {/* Footer */} -
-
-

© {new Date().getFullYear()} LocalAgent - Cybernetic Intelligence

-
-
) } diff --git a/webui/react-ui/src/pages/ImportAgent.jsx b/webui/react-ui/src/pages/ImportAgent.jsx index ea87b18..a117918 100644 --- a/webui/react-ui/src/pages/ImportAgent.jsx +++ b/webui/react-ui/src/pages/ImportAgent.jsx @@ -26,7 +26,7 @@ function ImportAgent() { const formData = new FormData(); formData.append('file', file); - await agentApi.importAgentConfig(formData); + await agentApi.importAgent(formData); showToast('Agent imported successfully', 'success'); navigate('/agents'); } catch (err) { @@ -58,7 +58,7 @@ function ImportAgent() {

Drop your agent file here

or

-

*Zg!ANp=|21*{V4eW=0T(<#cqwagT{24IG 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

## TAKE BACK CONTROL From ffee9d83078579cb486a6e8586b6838a99bada0b Mon Sep 17 00:00:00 2001 From: Ettore Di Giacinto Date: Wed, 2 Apr 2025 23:24:45 +0200 Subject: [PATCH 370/399] Update README.md --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 9e407e8..981af37 100644 --- a/README.md +++ b/README.md @@ -1,5 +1,5 @@

- LocalAgent Logo + LocalAgent Logo

LOCAL AGENT

From 1eee5b5a326e50894da4aa3083b1bfa2b36aeb2f Mon Sep 17 00:00:00 2001 From: Richard Palethorpe Date: Thu, 3 Apr 2025 14:26:14 +0100 Subject: [PATCH 371/399] feat(ui): Action playground config and parameter forms (#129) --- webui/react-ui/src/App.jsx | 7 +- .../react-ui/src/pages/ActionsPlayground.jsx | 227 +++++++----------- webui/react-ui/src/utils/api.js | 8 + 3 files changed, 101 insertions(+), 141 deletions(-) diff --git a/webui/react-ui/src/App.jsx b/webui/react-ui/src/App.jsx index 2aeb250..decbba7 100644 --- a/webui/react-ui/src/App.jsx +++ b/webui/react-ui/src/App.jsx @@ -1,5 +1,5 @@ import { useState } from 'react' -import { Outlet, Link } from 'react-router-dom' +import { Outlet, Link, useOutletContext } from 'react-router-dom' import './App.css' function App() { @@ -19,6 +19,9 @@ function App() { setMobileMenuOpen(!mobileMenuOpen); }; + // Provide showToast to children + const context = { showToast }; + return (
{/* Navigation Menu */} @@ -110,7 +113,7 @@ function App() { {/* Main Content Area */}
- +
diff --git a/webui/react-ui/src/pages/ActionsPlayground.jsx b/webui/react-ui/src/pages/ActionsPlayground.jsx index 355338e..c3ed28c 100644 --- a/webui/react-ui/src/pages/ActionsPlayground.jsx +++ b/webui/react-ui/src/pages/ActionsPlayground.jsx @@ -1,14 +1,15 @@ import { useState, useEffect } from 'react'; import { useOutletContext, useNavigate } from 'react-router-dom'; import { actionApi } from '../utils/api'; +import FormFieldDefinition from '../components/common/FormFieldDefinition'; function ActionsPlayground() { const { showToast } = useOutletContext(); - const navigate = useNavigate(); const [actions, setActions] = useState([]); const [selectedAction, setSelectedAction] = useState(''); - const [configJson, setConfigJson] = useState('{}'); - const [paramsJson, setParamsJson] = useState('{}'); + const [actionMeta, setActionMeta] = useState(null); + const [configValues, setConfigValues] = useState({}); + const [paramsValues, setParamsValues] = useState({}); const [result, setResult] = useState(null); const [loading, setLoading] = useState(false); const [loadingActions, setLoadingActions] = useState(true); @@ -24,19 +25,29 @@ function ActionsPlayground() { // Fetch available actions useEffect(() => { const fetchActions = async () => { - try { - const response = await actionApi.listActions(); - setActions(response); - } catch (err) { - console.error('Error fetching actions:', err); - showToast('Failed to load actions', 'error'); - } finally { - setLoadingActions(false); - } + const response = await actionApi.listActions(); + setActions(response); + setLoadingActions(false); }; fetchActions(); - }, [showToast]); + }, []); + + // Fetch action metadata when an action is selected + useEffect(() => { + if (selectedAction) { + const fetchActionMeta = async () => { + const response = await actionApi.getAgentConfigMeta(); + const meta = response.actions.find(a => a.name === selectedAction); + setActionMeta(meta); + // Reset values when action changes + setConfigValues({}); + setParamsValues({}); + }; + + fetchActionMeta(); + } + }, [selectedAction]); // Handle action selection const handleActionChange = (e) => { @@ -44,13 +55,20 @@ function ActionsPlayground() { setResult(null); }; - // Handle JSON input changes - const handleConfigChange = (e) => { - setConfigJson(e.target.value); + // Handle config field changes + const handleConfigChange = (fieldName, value) => { + setConfigValues(prev => ({ + ...prev, + [fieldName]: value + })); }; - const handleParamsChange = (e) => { - setParamsJson(e.target.value); + // Handle params field changes + const handleParamsChange = (fieldName, value) => { + setParamsValues(prev => ({ + ...prev, + [fieldName]: value + })); }; // Execute the selected action @@ -66,31 +84,11 @@ function ActionsPlayground() { setResult(null); try { - // Parse JSON inputs - let config = {}; - let params = {}; - - try { - config = JSON.parse(configJson); - } catch (err) { - showToast('Invalid configuration JSON', 'error'); - setLoading(false); - return; - } - - try { - params = JSON.parse(paramsJson); - } catch (err) { - showToast('Invalid parameters JSON', 'error'); - setLoading(false); - return; - } - // Prepare action data const actionData = { action: selectedAction, - config: config, - params: params + config: configValues, + params: paramsValues }; // Execute action @@ -98,114 +96,65 @@ function ActionsPlayground() { setResult(response); showToast('Action executed successfully', 'success'); } catch (err) { - console.error('Error executing action:', err); - showToast(`Failed to execute action: ${err.message}`, 'error'); + showToast('Failed to execute action', 'error'); } finally { setLoading(false); } }; return ( -
-
-

Actions Playground

-

Test and execute actions directly from the UI

-
+
+

Actions Playground

-
-
-

Select an Action

- -
- - -
+ +
+ +
- - {selectedAction && ( -
-

Action Configuration

- - -
- -