From 4ea9ff653121134d23354c8b153497b31f5684e4 Mon Sep 17 00:00:00 2001 From: Sammy Kerata Oina <44265300+SammyOina@users.noreply.github.com> Date: Fri, 10 Nov 2023 18:12:20 +0300 Subject: [PATCH] NOISSUE - Add message broker on agent and manager (#17) * Fix bug in agent state machine The bug in the agent state machine caused an error when attempting an invalid transition. This commit fixes the bug by properly locking and unlocking the state machine before and after transitioning to the next state. Additionally, the logger now correctly logs the current and next state during a valid transition. Signed-off-by: SammyOina * Fix race condition in state machine The commit fixes a race condition in the state machine implementation in the `Start` method. The race condition occurs when multiple goroutines try to access and modify the state concurrently. To fix this, a mutex lock and unlock are added around the critical sections of code to ensure exclusive access to the state variable. This prevents race conditions and ensures the state transitions are executed correctly. Signed-off-by: SammyOina * Fix race condition in StateMachine.Start() The StateMachine.Start() method was experiencing a race condition when multiple events were being processed concurrently. This was caused by not properly locking and unlocking the state machine before and after updating the state. This commit fixes the issue by adding proper locking and unlocking around the state update operation. Additionally, the logging statement has been updated to include the previous and next states for better debugging. Signed-off-by: SammyOina * add magistrala dep Signed-off-by: SammyOina * remove mainflux Signed-off-by: SammyOina * Fix agentService New function to include messaging.Publisher parameter The agentService New function has been updated to include a messaging.Publisher parameter. This change allows the agent service to publish messages to a messaging system. The messaging.Publisher parameter has been added to the agentService struct and the New function signature has been updated accordingly. This change ensures that the agent service can communicate with other components using the messaging system. Signed-off-by: SammyOina * Refactor service.go state functions The commit refactors the state functions in the service.go file. The functions for each state have been modified to use the svc.publishEvent method to publish events with appropriate messages. - Refactor state functions in service.go - Use svc.publishEvent to publish events with messages for each state Signed-off-by: SammyOina * Fix computation run event publishing and add pubsub functionality The computation run event publishing in the agent service was fixed to correctly call the publishEvent function. Additionally, the pubsub functionality was added to the manager package. - Fixed computation run event publishing in agent service - Added pubsub functionality to manager package Signed-off-by: SammyOina * Fix license header in pubsub.go file The commit fixes the license header in the pubsub.go file. The copyright and SPDX-License-Identifier have been added to comply with the Apache-2.0 license. Signed-off-by: SammyOina * Add Docker environment variables for Nats, RabbitMQ, Message Broker, and Jaeger. The commit message should be: "Add Docker environment variables for Nats, RabbitMQ, Message Broker, and Jaeger" Signed-off-by: SammyOina * Fix Makefile to properly set DOCKER_PROJECT and COCOS_MESSAGE_BROKER_TYPE The Makefile has been updated to fix an issue with setting the DOCKER_PROJECT and COCOS_MESSAGE_BROKER_TYPE variables. The USER_REPO variable is now used to generate the DOCKER_PROJECT name following the Docker Compose guidelines. Additionally, the COCOS_MESSAGE_BROKER_TYPE variable is now properly set to "nats" if it is empty. This ensures that the correct values are used when compiling and installing the service. Summary: Fix Makefile to properly set DOCKER_PROJECT and COCOS_MESSAGE_BROKER_TYPE Details: - Update USER_REPO variable to generate DOCKER_PROJECT name - Set COCOS_MESSAGE_BROKER_TYPE to "nats" if empty Signed-off-by: SammyOina * Fix Makefile Docker profile assignment and build flags The Makefile was updated to fix the assignment of the Docker profile and build flags. The Docker profile is now assigned based on the value of COCOS_MESSAGE_BROKER_TYPE, and if it is not provided, the default value is set to "nats". The build flags were also updated to include the COCOS_MESSAGE_BROKER_TYPE value as a tag for the Go build process. This commit addresses the issue with the Docker profile assignment and ensures that the correct build flags are used during the build process. Signed-off-by: SammyOina * fix makefile Signed-off-by: SammyOina * Fix notification topic in agent service and update NATS ports in Docker environment variables The agent service's notification topic was incorrectly set to "channels.manager" instead of "agent". This commit fixes the issue by updating the notification topic. Additionally, the NATS ports in the Docker environment variables were incorrect. The COCOS_NATS_PORT and COCOS_NATS_HTTP_PORT have been updated to the correct values. These changes ensure that the agent service uses the correct notification topic and the NATS ports are properly configured. Signed-off-by: SammyOina * add pubsub Signed-off-by: SammyOina * update protoc Signed-off-by: SammyOina --------- Signed-off-by: SammyOina --- .github/workflows/checkproto.yaml | 2 +- .gitignore | 2 + Makefile | 37 +++- agent/agent.pb.go | 2 +- agent/agent_grpc.pb.go | 2 +- agent/api/logging.go | 2 +- agent/doc.go | 3 - agent/service.go | 34 ++- agent/state.go | 2 +- agent/state_test.go | 2 +- agent/tracing/doc.go | 5 +- cmd/agent/main.go | 25 ++- cmd/cli/main.go | 2 +- cmd/manager/main.go | 20 +- docker/.env | 33 +++ docker/brokers/README.md | 28 +++ docker/brokers/docker-compose.yml | 22 ++ docker/brokers/nats.yml | 13 ++ docker/brokers/rabbitmq.yml | 11 + docker/docker-compose.yml | 25 +++ docker/nats/nats.conf | 13 ++ go.mod | 21 +- go.sum | 111 ++++++++-- internal/jaeger/doc.go | 2 - internal/libvirt/connect.go | 2 +- internal/server/grpc/grpc.go | 2 +- internal/server/http/http.go | 2 +- internal/server/server.go | 2 +- manager/api/http/responses.go | 4 +- manager/api/http/transport.go | 6 +- manager/api/logging.go | 2 +- manager/doc.go | 3 - manager/pubsub.go | 58 +++++ manager/tracing/doc.go | 3 - pkg/clients/grpc/connect.go | 2 +- pkg/sdk/agent.go | 2 +- prof.cov | 337 ------------------------------ 37 files changed, 422 insertions(+), 422 deletions(-) create mode 100644 docker/.env create mode 100644 docker/brokers/README.md create mode 100644 docker/brokers/docker-compose.yml create mode 100644 docker/brokers/nats.yml create mode 100644 docker/brokers/rabbitmq.yml create mode 100644 docker/docker-compose.yml create mode 100644 docker/nats/nats.conf create mode 100644 manager/pubsub.go delete mode 100644 prof.cov diff --git a/.github/workflows/checkproto.yaml b/.github/workflows/checkproto.yaml index f60f0c0f..5d6ad08d 100644 --- a/.github/workflows/checkproto.yaml +++ b/.github/workflows/checkproto.yaml @@ -48,7 +48,7 @@ jobs: # Add protoc to the PATH export PATH=$PATH:/usr/local/bin/protoc - - name: Set up Mainflux + - name: Set up Cocos-AI run: | # Rename .pb.go files to .pb.go.tmp to prevent conflicts for p in $(ls manager/*.pb.go); do diff --git a/.gitignore b/.gitignore index c550c845..343e6bb2 100644 --- a/.gitignore +++ b/.gitignore @@ -4,3 +4,5 @@ build cmd/manager/img cmd/manager/iso cmd/manager/tmp + +.cov diff --git a/Makefile b/Makefile index 26c81980..66a968d7 100644 --- a/Makefile +++ b/Makefile @@ -8,13 +8,19 @@ TIME ?= $(shell date +%F_%T) CLI_SOURCE = ./cmd/cli/main.go CLI_BIN = ${BUILD_DIR}/cocos-cli +USER_REPO ?= $(shell git remote get-url origin | sed -e 's/.*\/\([^/]*\)\/\([^/]*\).*/\1_\2/' ) +empty:= +space:= $(empty) $(empty) +# Docker compose project name should follow this guidelines: https://docs.docker.com/compose/reference/#use--p-to-specify-a-project-name +DOCKER_PROJECT ?= $(shell echo $(subst $(space),,$(USER_REPO)) | tr -c -s '[:alnum:][=-=]' '_' | tr '[:upper:]' '[:lower:]') +DOCKER_PROFILE ?= $(if $(COCOS_MESSAGE_BROKER_TYPE),$(COCOS_MESSAGE_BROKER_TYPE),nats) define compile_service CGO_ENABLED=$(CGO_ENABLED) GOOS=$(GOOS) GOARCH=$(GOARCH) GOARM=$(GOARM) \ - go build -ldflags "-s -w \ - -X 'github.com/mainflux/mainflux.BuildTime=$(TIME)' \ - -X 'github.com/mainflux/mainflux.Version=$(VERSION)' \ - -X 'github.com/mainflux/mainflux.Commit=$(COMMIT)'" \ + go build -tags $(DOCKER_PROFILE) -ldflags "-s -w \ + -X 'github.com/absmach/magistrala.BuildTime=$(TIME)' \ + -X 'github.com/absmach/magistrala.Version=$(VERSION)' \ + -X 'github.com/absmach/magistrala.Commit=$(COMMIT)'" \ -o ${BUILD_DIR}/cocos-$(1) cmd/$(1)/main.go endef @@ -30,3 +36,26 @@ install-cli: cli protoc: protoc -I. --go_out=. --go_opt=paths=source_relative --go-grpc_out=. --go-grpc_opt=paths=source_relative agent/agent.proto + +define edit_docker_config + sed -i "s/COCOS_MESSAGE_BROKER_TYPE=.*/COCOS_MESSAGE_BROKER_TYPE=$(1)/" docker/.env + sed -i "s,file: .*.yml,file: $(1).yml," docker/brokers/docker-compose.yml + sed -i "s,COCOS_MESSAGE_BROKER_URL=.*,COCOS_MESSAGE_BROKER_URL=$$\{COCOS_$(shell echo ${DOCKER_PROFILE} | tr 'a-z' 'A-Z')_URL\}," docker/.env +endef + +change_config: +ifeq ($(DOCKER_PROFILE),nats) + sed -i "s/- broker/- nats/g" docker/docker-compose.yml + sed -i "s,COCOS_NATS_URL=.*,COCOS_NATS_URL=nats://nats:$$\{COCOS_NATS_PORT}," docker/.env + $(call edit_docker_config,nats) +else ifeq ($(DOCKER_PROFILE),rabbitmq) + sed -i "s/nats/broker/g" docker/docker-compose.yml + sed -i "s/rabbitmq/broker/g" docker/docker-compose.yml + $(call edit_docker_config,rabbitmq) +else + $(error Invalid DOCKER_PROFILE $(DOCKER_PROFILE)) +endif + +run: change_config + docker compose -f docker/docker-compose.yml --profile $(DOCKER_PROFILE) -p $(DOCKER_PROJECT) up + diff --git a/agent/agent.pb.go b/agent/agent.pb.go index 8a53d7da..f0bffd45 100644 --- a/agent/agent.pb.go +++ b/agent/agent.pb.go @@ -4,7 +4,7 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: // protoc-gen-go v1.31.0 -// protoc v4.24.3 +// protoc v4.24.4 // source: agent/agent.proto package agent diff --git a/agent/agent_grpc.pb.go b/agent/agent_grpc.pb.go index 5a292cf1..7e100a04 100644 --- a/agent/agent_grpc.pb.go +++ b/agent/agent_grpc.pb.go @@ -4,7 +4,7 @@ // Code generated by protoc-gen-go-grpc. DO NOT EDIT. // versions: // - protoc-gen-go-grpc v1.3.0 -// - protoc v4.24.3 +// - protoc v4.24.4 // source: agent/agent.proto package agent diff --git a/agent/api/logging.go b/agent/api/logging.go index f1a1673f..00f4d6ca 100644 --- a/agent/api/logging.go +++ b/agent/api/logging.go @@ -11,7 +11,7 @@ import ( "fmt" "time" - "github.com/mainflux/mainflux/logger" + "github.com/absmach/magistrala/logger" "github.com/ultravioletrs/cocos-ai/agent" ) diff --git a/agent/doc.go b/agent/doc.go index 52b523b7..fd4d985f 100644 --- a/agent/doc.go +++ b/agent/doc.go @@ -1,7 +1,4 @@ // Copyright (c) Ultraviolet // SPDX-License-Identifier: Apache-2.0 -// Package things contains the domain concept definitions needed to support -// Mainflux agent service functionality. - package agent diff --git a/agent/service.go b/agent/service.go index ed02dee5..8a1598bd 100644 --- a/agent/service.go +++ b/agent/service.go @@ -14,7 +14,8 @@ import ( "slices" "time" - "github.com/mainflux/mainflux/logger" + "github.com/absmach/magistrala/logger" + "github.com/absmach/magistrala/pkg/messaging" "github.com/ultravioletrs/cocos-ai/pkg/socket" ) @@ -61,22 +62,31 @@ type agentService struct { attestation []byte sm *StateMachine runError error + publisher messaging.Publisher } const ( - socketPath = "unix_socket" - pyRuntime = "python3" + socketPath = "unix_socket" + pyRuntime = "python3" + notificationTopic = "agent" ) var _ Service = (*agentService)(nil) // New instantiates the agent service implementation. -func New(ctx context.Context, logger logger.Logger) Service { +func New(ctx context.Context, logger logger.Logger, publisher messaging.Publisher) Service { svc := &agentService{ - sm: NewStateMachine(logger), + sm: NewStateMachine(logger), + publisher: publisher, } go svc.sm.Start(ctx) svc.sm.SendEvent(start) + svc.sm.StateFunctions[idle] = svc.publishEvent(ctx, "idle", "agent has started") + svc.sm.StateFunctions[receivingManifests] = svc.publishEvent(ctx, "run", "agent ready to receive manifests") + svc.sm.StateFunctions[receivingAlgorithms] = svc.publishEvent(ctx, "algorithms", "agent is ready to receiving algorithms") + svc.sm.StateFunctions[receivingData] = svc.publishEvent(ctx, "datasets", "agent is ready to receiving datasets") + svc.sm.StateFunctions[resultsReady] = svc.publishEvent(ctx, "results", "agent computation results are ready") + svc.sm.StateFunctions[complete] = svc.publishEvent(ctx, "complete", "agent results have been consumed") svc.sm.StateFunctions[running] = svc.runComputation return svc } @@ -197,10 +207,11 @@ func (as *agentService) Attestation(ctx context.Context) ([]byte, error) { } func (as *agentService) runComputation() { + ctx := context.Background() + as.publishEvent(ctx, "running", "computation run has started")() as.sm.logger.Debug("computation run started") defer as.sm.SendEvent(runComplete) var cancel context.CancelFunc - ctx := context.Background() if as.computation.Timeout.Duration != 0 { ctx, cancel = context.WithDeadline(ctx, <-time.After(as.computation.Timeout.Duration)) defer cancel() @@ -213,6 +224,17 @@ func (as *agentService) runComputation() { as.result = result } +func (as *agentService) publishEvent(ctx context.Context, subtopic, body string) func() { + return func() { + if err := as.publisher.Publish(ctx, notificationTopic, &messaging.Message{ + Subtopic: subtopic, + Payload: []byte(body), + }); err != nil { + as.sm.logger.Warn(err.Error()) + } + } +} + func run(ctx context.Context, algoContent []byte, dataContent []byte) ([]byte, error) { listener, err := socket.StartUnixSocketServer(socketPath) if err != nil { diff --git a/agent/state.go b/agent/state.go index 6cc9d7bc..f18ea1cd 100644 --- a/agent/state.go +++ b/agent/state.go @@ -7,7 +7,7 @@ import ( "fmt" "sync" - "github.com/mainflux/mainflux/logger" + "github.com/absmach/magistrala/logger" ) type state int diff --git a/agent/state_test.go b/agent/state_test.go index 1b446754..5f54701b 100644 --- a/agent/state_test.go +++ b/agent/state_test.go @@ -7,7 +7,7 @@ import ( "fmt" "testing" - "github.com/mainflux/mainflux/logger" + "github.com/absmach/magistrala/logger" ) func TestStateMachineTransitions(t *testing.T) { diff --git a/agent/tracing/doc.go b/agent/tracing/doc.go index c0e59001..cae33225 100644 --- a/agent/tracing/doc.go +++ b/agent/tracing/doc.go @@ -5,8 +5,5 @@ // // This package provides tracing middleware for cocos auth service. // It can be used to trace incoming requests and add tracing capabilities to -// cocos auth service. -// -// For more details about tracing instrumentation refer -// to the documentation at https://docs.mainflux.io/tracing/. +// cocos agent service. package tracing diff --git a/cmd/agent/main.go b/cmd/agent/main.go index 88b12c07..1e73266a 100644 --- a/cmd/agent/main.go +++ b/cmd/agent/main.go @@ -8,8 +8,10 @@ import ( "log" "os" - mflog "github.com/mainflux/mainflux/logger" - "github.com/mainflux/mainflux/pkg/uuid" + mflog "github.com/absmach/magistrala/logger" + "github.com/absmach/magistrala/pkg/messaging" + "github.com/absmach/magistrala/pkg/messaging/brokers" + "github.com/absmach/magistrala/pkg/uuid" "github.com/ultravioletrs/cocos-ai/agent" "github.com/ultravioletrs/cocos-ai/agent/api" agentgrpc "github.com/ultravioletrs/cocos-ai/agent/api/grpc" @@ -34,9 +36,10 @@ const ( ) type config struct { - LogLevel string `env:"AGENT_LOG_LEVEL" envDefault:"info"` - JaegerURL string `env:"AGENT_JAEGER_URL" envDefault:"http://localhost::4318/v1/traces"` - InstanceID string `env:"AGENT_INSTANCE_ID" envDefault:""` + LogLevel string `env:"AGENT_LOG_LEVEL" envDefault:"info"` + JaegerURL string `env:"COCOS_JAEGER_URL" envDefault:"http://localhost::4318/v1/traces"` + InstanceID string `env:"AGENT_INSTANCE_ID" envDefault:""` + BrokerURL string `env:"COCOS_MESSAGE_BROKER_URL" envDefault:"nats://localhost:4222"` } func main() { @@ -71,7 +74,13 @@ func main() { }() tracer := tp.Tracer(svcName) - svc := newService(ctx, logger, tracer) + pub, err := brokers.NewPublisher(ctx, cfg.BrokerURL) + if err != nil { + logger.Error(err.Error()) + return + } + + svc := newService(ctx, logger, tracer, pub) httpServerConfig := server.Config{Port: defSvcHTTPPort} if err := env.Parse(&httpServerConfig, env.Options{Prefix: envPrefixHTTP}); err != nil { @@ -102,8 +111,8 @@ func main() { } } -func newService(ctx context.Context, logger mflog.Logger, tracer trace.Tracer) agent.Service { - svc := agent.New(ctx, logger) +func newService(ctx context.Context, logger mflog.Logger, tracer trace.Tracer, publisher messaging.Publisher) agent.Service { + svc := agent.New(ctx, logger, publisher) svc = api.LoggingMiddleware(svc, logger) counter, latency := internal.MakeMetrics(svcName, "api") diff --git a/cmd/cli/main.go b/cmd/cli/main.go index 181252ee..11f565ef 100644 --- a/cmd/cli/main.go +++ b/cmd/cli/main.go @@ -7,7 +7,7 @@ import ( "log" "os" - "github.com/mainflux/mainflux/logger" + "github.com/absmach/magistrala/logger" "github.com/spf13/cobra" "github.com/spf13/pflag" "github.com/ultravioletrs/cocos-ai/cli" diff --git a/cmd/manager/main.go b/cmd/manager/main.go index 5082a26c..ba70d7d5 100644 --- a/cmd/manager/main.go +++ b/cmd/manager/main.go @@ -10,8 +10,9 @@ import ( "os" "strings" - "github.com/mainflux/mainflux/logger" - "github.com/mainflux/mainflux/pkg/uuid" + "github.com/absmach/magistrala/logger" + "github.com/absmach/magistrala/pkg/messaging/brokers" + "github.com/absmach/magistrala/pkg/uuid" "github.com/ultravioletrs/cocos-ai/agent" "github.com/ultravioletrs/cocos-ai/internal" "github.com/ultravioletrs/cocos-ai/internal/env" @@ -44,9 +45,10 @@ const ( ) type config struct { - LogLevel string `env:"MANAGER_LOG_LEVEL" envDefault:"info"` - JaegerURL string `env:"MANAGER_JAEGER_URL" envDefault:"http://localhost:4318/v1/traces"` - InstanceID string `env:"MANAGER_INSTANCE_ID" envDefault:""` + LogLevel string `env:"MANAGER_LOG_LEVEL" envDefault:"info"` + JaegerURL string `env:"COCOS_JAEGER_URL" envDefault:"http://localhost:4318/v1/traces"` + InstanceID string `env:"MANAGER_INSTANCE_ID" envDefault:""` + BrokerURL string `env:"COCOS_MESSAGE_BROKER_URL" envDefault:"nats://localhost:4222"` } func main() { @@ -103,6 +105,14 @@ func main() { } logger.Info(fmt.Sprintf("%s %s", exe, strings.Join(args, " "))) + pubsub, err := brokers.NewPubSub(ctx, cfg.BrokerURL, logger) + if err != nil { + logger.Fatal(err.Error()) + } + if err := manager.NewAgentEventNotifier(ctx, pubsub, logger); err != nil { + logger.Fatal(err.Error()) + } + svc := newService(agentClient, logger, tracer, qemuCfg) httpServerConfig := server.Config{Port: defSvcHTTPPort} diff --git a/docker/.env b/docker/.env new file mode 100644 index 00000000..8c297a4c --- /dev/null +++ b/docker/.env @@ -0,0 +1,33 @@ +# Docker: Environment variables in Compose + +## Nats +COCOS_NATS_PORT=4222 +COCOS_NATS_HTTP_PORT=8222 +COCOS_NATS_JETSTREAM_KEY=u7wFoAPgXpDueXOFldBnXDh4xjnSOyEJ2Cb8Z5SZvGLzIZ3U4exWhhoIBZHzuNvh +COCOS_NATS_URL=nats://nats:${COCOS_NATS_PORT} + +## RabbitMQ +COCOS_RABBITMQ_PORT=5672 +COCOS_RABBITMQ_HTTP_PORT=15672 +COCOS_RABBITMQ_USER=cocos +COCOS_RABBITMQ_PASS=cocos +COCOS_RABBITMQ_COOKIE=cocos +COCOS_RABBITMQ_VHOST=/ +COCOS_RABBITMQ_URL=amqp://${COCOS_RABBITMQ_USER}:${COCOS_RABBITMQ_PASS}@broker:${COCOS_RABBITMQ_PORT}${COCOS_RABBITMQ_VHOST} + +## Message Broker +COCOS_MESSAGE_BROKER_TYPE=nats +COCOS_MESSAGE_BROKER_URL=${COCOS_NATS_URL} + +## Jaeger +COCOS_JAEGER_PORT=6831 +COCOS_JAEGER_FRONTEND=16686 +COCOS_JAEGER_COLLECTOR=14268 +COCOS_JAEGER_CONFIGS=5778 +COCOS_JAEGER_URL=http://jaeger:14268/api/traces +COCOS_JAEGER_TRACE_RATIO=1.0 + +## Core Services + +# Docker image tag +COCOS_RELEASE_TAG=latest diff --git a/docker/brokers/README.md b/docker/brokers/README.md new file mode 100644 index 00000000..511e5445 --- /dev/null +++ b/docker/brokers/README.md @@ -0,0 +1,28 @@ +# Brokers Docker Compose + +Cocos supports configurable Message broker. + +## Message Broker + +Magistrala supports NATS and RabbitMQ as a message broker. + +## Profiles + +This directory contains 2 docker-compose profiles for running Magistrala with different message brokers. + +The profiles are: + +- `nats` - Nats as a message broker +- `rabbitmq` - RabbitMQ as a message broker + +The following command will run Nats as a message broker: + +```bash +MG_MESSAGE_BROKER_TYPE=nats make run +``` + +The following command will run RabbitMQ as a message broker: + +```bash +MG_MESSAGE_BROKER_TYPE=rabbitmq make run +``` diff --git a/docker/brokers/docker-compose.yml b/docker/brokers/docker-compose.yml new file mode 100644 index 00000000..8a72d79e --- /dev/null +++ b/docker/brokers/docker-compose.yml @@ -0,0 +1,22 @@ +# This file configures COCOS brokers. +# MESSAGE_BROKER can be either 'nats' or 'rabbitmq'. +# +# Each broker has a unique profile for configuration. The available profiles are: +# - nats: Uses 'nats' as MESSAGE_BROKER. +# - rabbitmq: Uses 'rabbitmq' as MESSAGE_BROKER. +# + +services: + broker: + extends: + file: nats.yml + service: broker + container_name: cocos-broker + restart: on-failure + networks: + - cocos-base-net + volumes: + - cocos-broker-volume:/data + profiles: + - rabbitmq + - nats \ No newline at end of file diff --git a/docker/brokers/nats.yml b/docker/brokers/nats.yml new file mode 100644 index 00000000..d025243d --- /dev/null +++ b/docker/brokers/nats.yml @@ -0,0 +1,13 @@ +services: + broker: + image: nats:2.9.21-alpine + command: "--config=/etc/nats/nats.conf" + volumes: + - ./../nats/:/etc/nats + environment: + - COCOS_NATS_PORT=${COCOS_NATS_PORT} + - COCOS_NATS_HTTP_PORT=${COCOS_NATS_HTTP_PORT} + - COCOS_NATS_JETSTREAM_KEY=${COCOS_NATS_JETSTREAM_KEY} + ports: + - ${COCOS_NATS_PORT}:${COCOS_NATS_PORT} + - ${COCOS_NATS_HTTP_PORT}:${COCOS_NATS_HTTP_PORT} \ No newline at end of file diff --git a/docker/brokers/rabbitmq.yml b/docker/brokers/rabbitmq.yml new file mode 100644 index 00000000..8b0ee5e7 --- /dev/null +++ b/docker/brokers/rabbitmq.yml @@ -0,0 +1,11 @@ +services: + broker: + image: rabbitmq:3.9.20-management-alpine + environment: + RABBITMQ_ERLANG_COOKIE: ${COCOS_RABBITMQ_COOKIE} + RABBITMQ_DEFAULT_USER: ${COCOS_RABBITMQ_USER} + RABBITMQ_DEFAULT_PASS: ${COCOS_RABBITMQ_PASS} + RABBITMQ_DEFAULT_VHOST: ${COCOS_RABBITMQ_VHOST} + ports: + - ${COCOS_RABBITMQ_PORT}:${COCOS_RABBITMQ_PORT} + - ${COCOS_RABBITMQ_HTTP_PORT}:${COCOS_RABBITMQ_HTTP_PORT} diff --git a/docker/docker-compose.yml b/docker/docker-compose.yml new file mode 100644 index 00000000..ac040f2a --- /dev/null +++ b/docker/docker-compose.yml @@ -0,0 +1,25 @@ +version: "3.7" +name: "cocos" + +networks: + cocos-base-net: + driver: bridge + +volumes: + cocos-broker-volume: + +include: + - path: brokers/docker-compose.yml + env_file: docker/.env + +services: + jaeger: + image: jaegertracing/all-in-one:1.38.0 + container_name: cocos-jaeger + ports: + - ${COCOS_JAEGER_PORT}:${COCOS_JAEGER_PORT}/udp + - ${COCOS_JAEGER_FRONTEND}:${COCOS_JAEGER_FRONTEND} + - ${COCOS_JAEGER_COLLECTOR}:${COCOS_JAEGER_COLLECTOR} + - ${COCOS_JAEGER_CONFIGS}:${COCOS_JAEGER_CONFIGS} + networks: + - cocos-base-net diff --git a/docker/nats/nats.conf b/docker/nats/nats.conf new file mode 100644 index 00000000..99af654c --- /dev/null +++ b/docker/nats/nats.conf @@ -0,0 +1,13 @@ +server_name: "nats_internal_broker" +max_payload: 1MB +max_connections: 1M +port: $COCOS_NATS_PORT +http_port: $COCOS_NATS_HTTP_PORT +trace: true + +jetstream { + store_dir: "/data" + cipher: "aes" + key: $COCOS_NATS_JETSTREAM_KEY + max_mem: 1G +} diff --git a/go.mod b/go.mod index e34a393c..76ff24ce 100644 --- a/go.mod +++ b/go.mod @@ -3,13 +3,13 @@ module github.com/ultravioletrs/cocos-ai go 1.21.3 require ( + github.com/absmach/magistrala v0.11.1-0.20231102134813-44408395e6a3 github.com/caarlos0/env/v7 v7.1.0 github.com/cenkalti/backoff/v4 v4.2.1 github.com/digitalocean/go-libvirt v0.0.0-20221205150000-2939327a8519 github.com/go-kit/kit v0.13.0 github.com/go-zoo/bone v1.3.0 github.com/gofrs/uuid v4.4.0+incompatible - github.com/mainflux/mainflux v0.0.0-20231024165949-8b185d205b6c github.com/prometheus/client_golang v1.17.0 github.com/spf13/cobra v1.7.0 github.com/spf13/pflag v1.0.5 @@ -27,25 +27,34 @@ require ( ) require ( + cloud.google.com/go/compute v1.23.3 // indirect github.com/beorn7/perks v1.0.1 // indirect github.com/cespare/xxhash/v2 v2.2.0 // indirect github.com/felixge/httpsnoop v1.0.3 // indirect github.com/go-kit/log v0.2.1 // indirect github.com/go-logfmt/logfmt v0.6.0 // indirect - github.com/go-logr/logr v1.2.4 // indirect + github.com/go-logr/logr v1.3.0 // indirect github.com/go-logr/stdr v1.2.2 // indirect github.com/golang/protobuf v1.5.3 // indirect + github.com/google/go-cmp v0.6.0 // indirect github.com/grpc-ecosystem/grpc-gateway/v2 v2.18.0 // indirect github.com/inconshreveable/mousetrap v1.1.0 // indirect - github.com/matttproud/golang_protobuf_extensions v1.0.4 // indirect + github.com/klauspost/compress v1.17.2 // indirect + github.com/matttproud/golang_protobuf_extensions/v2 v2.0.0 // indirect + github.com/nats-io/nats.go v1.31.0 // indirect + github.com/nats-io/nkeys v0.4.6 // indirect + github.com/nats-io/nuid v1.0.1 // indirect github.com/prometheus/client_model v0.5.0 // indirect - github.com/prometheus/common v0.44.0 // indirect + github.com/prometheus/common v0.45.0 // indirect github.com/prometheus/procfs v0.12.0 // indirect + github.com/rabbitmq/amqp091-go v1.9.0 // indirect go.opentelemetry.io/otel/metric v1.19.0 // indirect go.opentelemetry.io/proto/otlp v1.0.0 // indirect + golang.org/x/crypto v0.14.0 // indirect golang.org/x/net v0.17.0 // indirect + golang.org/x/oauth2 v0.13.0 // indirect golang.org/x/sys v0.13.0 // indirect golang.org/x/text v0.13.0 // indirect - google.golang.org/genproto/googleapis/api v0.0.0-20231012201019-e917dd12ba7a // indirect - google.golang.org/genproto/googleapis/rpc v0.0.0-20231016165738-49dd2c1f3d0b // indirect + google.golang.org/genproto/googleapis/api v0.0.0-20231030173426-d783a09b4405 // indirect + google.golang.org/genproto/googleapis/rpc v0.0.0-20231030173426-d783a09b4405 // indirect ) diff --git a/go.sum b/go.sum index bd95ee4c..129bb086 100644 --- a/go.sum +++ b/go.sum @@ -1,9 +1,18 @@ -cloud.google.com/go/compute v1.23.0 h1:tP41Zoavr8ptEqaW6j+LQOnyBBhO7OkOMAGrgLopTwY= -cloud.google.com/go/compute v1.23.0/go.mod h1:4tCnrn48xsqlwSAiLf1HXMQk8CONslYbdiEZc9FEIbM= +cloud.google.com/go v0.110.8 h1:tyNdfIxjzaWctIiLYOTalaLKZ17SI44SKFW26QbOhME= +cloud.google.com/go/compute v1.23.3 h1:6sVlXXBmbd7jNX0Ipq0trII3e4n1/MsADLK6a+aiVlk= +cloud.google.com/go/compute v1.23.3/go.mod h1:VCgBUoMnIVIR0CscqQiPJLAG25E3ZRZMzcFZeQ+h8CI= cloud.google.com/go/compute/metadata v0.2.3 h1:mg4jlk7mCAj6xXp9UJ4fjI9VUI5rubuGBW5aJ7UnBMY= cloud.google.com/go/compute/metadata v0.2.3/go.mod h1:VAV5nSsACxMJvgaAuX6Pk2AawlZn8kiOGuCv6gTkwuA= +github.com/Azure/go-ansiterm v0.0.0-20230124172434-306776ec8161 h1:L/gRVlceqvL25UVaW/CKtUDjefjrs0SPonmDGUVOYP0= +github.com/Azure/go-ansiterm v0.0.0-20230124172434-306776ec8161/go.mod h1:xomTg63KZ2rFqZQzSB4Vz2SUXa1BpHTVz9L5PTmPC4E= +github.com/Microsoft/go-winio v0.6.1 h1:9/kr64B9VUZrLm5YYwbGtUJnMgqWVOdUAXu6Migciow= +github.com/Microsoft/go-winio v0.6.1/go.mod h1:LRdKpFKfdobln8UmuiYcKPot9D2v6svN5+sAH+4kjUM= +github.com/Nvveen/Gotty v0.0.0-20120604004816-cd527374f1e5 h1:TngWCqHvy9oXAN6lEVMRuU21PR1EtLVZJmdB18Gu3Rw= +github.com/Nvveen/Gotty v0.0.0-20120604004816-cd527374f1e5/go.mod h1:lmUJ/7eu/Q8D7ML55dXQrVaamCz2vxCfdQBasLZfHKk= github.com/VividCortex/gohistogram v1.0.0 h1:6+hBz+qvs0JOrrNhhmR7lFxo5sINxBCGXrdtl/UvroE= github.com/VividCortex/gohistogram v1.0.0/go.mod h1:Pf5mBqqDxYaXu3hDrrU+w6nw50o/4+TcAqDqk/vUH7g= +github.com/absmach/magistrala v0.11.1-0.20231102134813-44408395e6a3 h1:g5dSaPtjj9mNnz2cMJ076MRKSnrOcMjW8BsJ7Kbzd7s= +github.com/absmach/magistrala v0.11.1-0.20231102134813-44408395e6a3/go.mod h1:ebPpg3UNO6ier1Ic2jBHkd8VUDD62707JRacj4UwGkM= github.com/beorn7/perks v1.0.1 h1:VlbKKnNfV8bJzeqoa4cOKqO6bYr3WgKZxO8Z16+hsOM= github.com/beorn7/perks v1.0.1/go.mod h1:G2ZrVWU2WbWT9wwq4/hrbKbnv/1ERSJQ0ibhJ6rlkpw= github.com/caarlos0/env/v7 v7.1.0 h1:9lzTF5amyQeWHZzuZeKlCb5FWSUxpG1js43mhbY8ozg= @@ -14,6 +23,8 @@ github.com/cespare/xxhash/v2 v2.2.0 h1:DC2CZ1Ep5Y4k3ZQ899DldepgrayRUGE6BBZ/cd9Cj github.com/cespare/xxhash/v2 v2.2.0/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs= github.com/cncf/xds/go v0.0.0-20230607035331-e9ce68804cb4 h1:/inchEIKaYC1Akx+H+gqO04wryn5h75LSazbRlnya1k= github.com/cncf/xds/go v0.0.0-20230607035331-e9ce68804cb4/go.mod h1:eXthEFrGJvWHgFFCl3hGmgk+/aYT6PnTQLykKQRLhEs= +github.com/containerd/continuity v0.4.3 h1:6HVkalIp+2u1ZLH1J/pYX2oBVXlJZvh1X1A7bEZ9Su8= +github.com/containerd/continuity v0.4.3/go.mod h1:F6PTNCKepoxEaXLQp3wDAjygEnImnZ/7o4JzpodfroQ= github.com/cpuguy83/go-md2man/v2 v2.0.2/go.mod h1:tgQtvFlXSQOSOSIRvRPT7W67SCa46tRHOmNcaadrF8o= github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= @@ -21,6 +32,14 @@ github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc h1:U9qPSI2PIWSS1 github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= github.com/digitalocean/go-libvirt v0.0.0-20221205150000-2939327a8519 h1:OpkN/n40cmKenDQS+IOAeW9DLhYy4DADSeZnouCEV/E= github.com/digitalocean/go-libvirt v0.0.0-20221205150000-2939327a8519/go.mod h1:WyJJyfmJ0gWJvjV+ZH4DOgtOYZc1KOvYyBXWCLKxsUU= +github.com/docker/cli v24.0.7+incompatible h1:wa/nIwYFW7BVTGa7SWPVyyXU9lgORqUb1xfI36MSkFg= +github.com/docker/cli v24.0.7+incompatible/go.mod h1:JLrzqnKDaYBop7H2jaqPtU4hHvMKP+vjCwu2uszcLI8= +github.com/docker/docker v24.0.7+incompatible h1:Wo6l37AuwP3JaMnZa226lzVXGA3F9Ig1seQen0cKYlM= +github.com/docker/docker v24.0.7+incompatible/go.mod h1:eEKB0N0r5NX/I1kEveEz05bcu8tLC/8azJZsviup8Sk= +github.com/docker/go-connections v0.4.0 h1:El9xVISelRB7BuFusrZozjnkIM5YnzCViNKohAFqRJQ= +github.com/docker/go-connections v0.4.0/go.mod h1:Gbd7IOopHjR8Iph03tsViu4nIes5XhDvyHbTtUxmeec= +github.com/docker/go-units v0.5.0 h1:69rxXcBk27SvSaaxTtLh/8llcHD8vYHT7WSdRZ/jvr4= +github.com/docker/go-units v0.5.0/go.mod h1:fgPhTUdO+D/Jk86RDLlptpiXQzgHJF7gydDDbaIK4Dk= github.com/envoyproxy/protoc-gen-validate v1.0.2 h1:QkIBuU5k+x7/QXPvPPnWXWlCdaBFApVqftFV6k087DA= github.com/envoyproxy/protoc-gen-validate v1.0.2/go.mod h1:GpiZQP3dDbg4JouG/NNS7QWXpgx6x8QiMKdmN72jogE= github.com/felixge/httpsnoop v1.0.3 h1:s/nj+GCswXYzN5v2DpNMuMQYe+0DDwt5WVCU6CWBdXk= @@ -32,31 +51,59 @@ github.com/go-kit/log v0.2.1/go.mod h1:NwTd00d/i8cPZ3xOwwiv2PO5MOcx78fFErGNcVmBj github.com/go-logfmt/logfmt v0.6.0 h1:wGYYu3uicYdqXVgoYbvnkrPVXkuLM1p1ifugDMEdRi4= github.com/go-logfmt/logfmt v0.6.0/go.mod h1:WYhtIu8zTZfxdn5+rREduYbwxfcBr/Vr6KEVveWlfTs= github.com/go-logr/logr v1.2.2/go.mod h1:jdQByPbusPIv2/zmleS9BjJVeZ6kBagPoEUsqbVz/1A= -github.com/go-logr/logr v1.2.4 h1:g01GSCwiDw2xSZfjJ2/T9M+S6pFdcNtFYsp+Y43HYDQ= -github.com/go-logr/logr v1.2.4/go.mod h1:jdQByPbusPIv2/zmleS9BjJVeZ6kBagPoEUsqbVz/1A= +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-logr/stdr v1.2.2 h1:hSWxHoqTgW2S2qGc0LTAI563KZ5YKYRhT3MFKZMbjag= github.com/go-logr/stdr v1.2.2/go.mod h1:mMo/vtBO5dYbehREoey6XUKy/eSumjCCveDpRre4VKE= github.com/go-zoo/bone v1.3.0 h1:PY6sHq37FnQhj+4ZyqFIzJQHvrrGx0GEc3vTZZC/OsI= github.com/go-zoo/bone v1.3.0/go.mod h1:HI3Lhb7G3UQcAwEhOJ2WyNcsFtQX1WYHa0Hl4OBbhW8= github.com/gofrs/uuid v4.4.0+incompatible h1:3qXRTX8/NbyulANqlc0lchS1gqAVxRgsuW1YrTJupqA= github.com/gofrs/uuid v4.4.0+incompatible/go.mod h1:b2aQJv3Z4Fp6yNu3cdSllBxTCLRxnplIgP/c0N/04lM= +github.com/gogo/protobuf v1.3.2 h1:Ov1cvc58UF3b5XjBnZv7+opcTcQFZebYjWzi34vdm4Q= +github.com/gogo/protobuf v1.3.2/go.mod h1:P1XiOD3dCwIKUDQYPy72D8LYyHL2YPYrpS2s69NZV8Q= github.com/golang/glog v1.1.2 h1:DVjP2PbBOzHyzA+dn3WhHIq4NdVu3Q+pvivFICf/7fo= github.com/golang/glog v1.1.2/go.mod h1:zR+okUeTbrL6EL3xHUDxZuEtGv04p5shwip1+mL/rLQ= -github.com/golang/protobuf v1.2.0/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= github.com/golang/protobuf v1.5.0/go.mod h1:FsONVRAS9T7sI+LIUmWTfcYkHO4aIWwzhcaSAoJOfIk= 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.5/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= -github.com/google/go-cmp v0.5.9 h1:O2Tfq5qg4qc4AmwVlvv0oLiVAGB7enBSJ2x2DqQFi38= -github.com/google/go-cmp v0.5.9/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY= +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/shlex v0.0.0-20191202100458-e7afc7fbc510 h1:El6M4kTTCOh6aBiKaUGG7oYTSPP8MxqL4YI3kZKwcP4= +github.com/google/shlex v0.0.0-20191202100458-e7afc7fbc510/go.mod h1:pupxD2MaaD3pAXIBCelhxNneeOaAeabZDe5s4K6zSpQ= github.com/grpc-ecosystem/grpc-gateway/v2 v2.18.0 h1:RtRsiaGvWxcwd8y3BiRZxsylPT8hLWZ5SPcfI+3IDNk= github.com/grpc-ecosystem/grpc-gateway/v2 v2.18.0/go.mod h1:TzP6duP4Py2pHLVPPQp42aoYI92+PCrVotyR5e8Vqlk= +github.com/imdario/mergo v0.3.16 h1:wwQJbIsHYGMUyLSPrEq1CT16AhnhNJQ51+4fdHUnCl4= +github.com/imdario/mergo v0.3.16/go.mod h1:WBLT9ZmE3lPoWsEzCh9LPo3TiwVN+ZKEjmz+hD27ysY= github.com/inconshreveable/mousetrap v1.1.0 h1:wN+x4NVGpMsO7ErUn/mUI3vEoE6Jt13X2s0bqwp9tc8= github.com/inconshreveable/mousetrap v1.1.0/go.mod h1:vpF70FUmC8bwa3OWnCshd2FqLfsEA9PFc4w1p2J65bw= -github.com/mainflux/mainflux v0.0.0-20231024165949-8b185d205b6c h1:s0cZJ9ACxthpWu4XjvLhNg2Za0p3yjDDzjy+TRGVBRQ= -github.com/mainflux/mainflux v0.0.0-20231024165949-8b185d205b6c/go.mod h1:7gFBWrgiL5rZHO5NOrqajuSzAWXsKMLL1yyz1wmC7EA= -github.com/matttproud/golang_protobuf_extensions v1.0.4 h1:mmDVorXM7PCGKw94cs5zkfA9PSy5pEvNWRP0ET0TIVo= -github.com/matttproud/golang_protobuf_extensions v1.0.4/go.mod h1:BSXmuO+STAnVfrANrmjBb36TMTDstsz7MSK+HVaYKv4= +github.com/klauspost/compress v1.17.2 h1:RlWWUY/Dr4fL8qk9YG7DTZ7PDgME2V4csBXA8L/ixi4= +github.com/klauspost/compress v1.17.2/go.mod h1:ntbaceVETuRiXiv4DpjP66DpAtAGkEQskQzEyD//IeE= +github.com/kr/pretty v0.1.0/go.mod h1:dAy3ld7l9f0ibDNOQOHHMYYIIbhfbHSm3C4ZsoJORNo= +github.com/kr/pty v1.1.1/go.mod h1:pFQYn66WHrOpPYNljwOMqo10TkYh1fy3cYio2l3bCsQ= +github.com/kr/text v0.1.0/go.mod h1:4Jbv+DJW3UT/LiOwJeYQe1efqtUx/iVham/4vfdArNI= +github.com/matttproud/golang_protobuf_extensions/v2 v2.0.0 h1:jWpvCLoY8Z/e3VKvlsiIGKtc+UG6U5vzxaoagmhXfyg= +github.com/matttproud/golang_protobuf_extensions/v2 v2.0.0/go.mod h1:QUyp042oQthUoa9bqDv0ER0wrtXnBruoNd7aNjkbP+k= +github.com/mitchellh/mapstructure v1.5.0 h1:jeMsZIYE/09sWLaz43PL7Gy6RuMjD2eJVyuac5Z2hdY= +github.com/mitchellh/mapstructure v1.5.0/go.mod h1:bFUtVrKA4DC2yAKiSyO/QUcy7e+RRV2QTWOzhPopBRo= +github.com/moby/term v0.5.0 h1:xt8Q1nalod/v7BqbG21f8mQPqH+xAaC9C3N3wfWbVP0= +github.com/moby/term v0.5.0/go.mod h1:8FzsFHVUBGZdbDsJw/ot+X+d5HLUbvklYLJ9uGfcI3Y= +github.com/nats-io/nats.go v1.31.0 h1:/WFBHEc/dOKBF6qf1TZhrdEfTmOZ5JzdJ+Y3m6Y/p7E= +github.com/nats-io/nats.go v1.31.0/go.mod h1:di3Bm5MLsoB4Bx61CBTsxuarI36WbhAwOm8QrW39+i8= +github.com/nats-io/nkeys v0.4.6 h1:IzVe95ru2CT6ta874rt9saQRkWfe2nFj1NtvYSLqMzY= +github.com/nats-io/nkeys v0.4.6/go.mod h1:4DxZNzenSVd1cYQoAa8948QY3QDjrHfcfVADymtkpts= +github.com/nats-io/nuid v1.0.1 h1:5iA8DT8V7q8WK2EScv2padNa/rTESc1KdnPw4TC2paw= +github.com/nats-io/nuid v1.0.1/go.mod h1:19wcPz3Ph3q0Jbyiqsd0kePYG7A95tJPxeL+1OSON2c= +github.com/opencontainers/go-digest v1.0.0 h1:apOUWs51W5PlhuyGyz9FCeeBIOUDA/6nW8Oi/yOhh5U= +github.com/opencontainers/go-digest v1.0.0/go.mod h1:0JzlMkj0TRzQZfJkVvzbP0HBR3IKzErnv2BNG4W4MAM= +github.com/opencontainers/image-spec v1.0.2 h1:9yCKha/T5XdGtO0q9Q9a6T5NUCsTn/DrBg0D7ufOcFM= +github.com/opencontainers/image-spec v1.0.2/go.mod h1:BtxoFyWECRxE4U/7sNtV5W15zMzWCbyJoFRP3s7yZA0= +github.com/opencontainers/runc v1.1.10 h1:EaL5WeO9lv9wmS6SASjszOeQdSctvpbu0DdBQBizE40= +github.com/opencontainers/runc v1.1.10/go.mod h1:+/R6+KmDlh+hOO8NkjmgkG9Qzvypzk0yXxAPYYR65+M= +github.com/ory/dockertest/v3 v3.10.0 h1:4K3z2VMe8Woe++invjaTB7VRyQXQy5UY+loujO4aNE4= +github.com/ory/dockertest/v3 v3.10.0/go.mod h1:nr57ZbRWMqfsdGdFNLHz5jjNdDb7VVFnzAeW1n5N1Lg= +github.com/pkg/errors v0.9.1 h1:FEBLx1zS214owpjy7qsBeixbURkuhQAwrK5UwLGTwt4= +github.com/pkg/errors v0.9.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2 h1:Jamvg5psRIccs7FGNTlIRMkT8wgtp5eCXdBlqhYGL6U= github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= @@ -64,11 +111,15 @@ github.com/prometheus/client_golang v1.17.0 h1:rl2sfwZMtSthVU752MqfjQozy7blglC+1 github.com/prometheus/client_golang v1.17.0/go.mod h1:VeL+gMmOAxkS2IqfCq0ZmHSL+LjWfWDUmp1mBz9JgUY= github.com/prometheus/client_model v0.5.0 h1:VQw1hfvPvk3Uv6Qf29VrPF32JB6rtbgI6cYPYQjL0Qw= github.com/prometheus/client_model v0.5.0/go.mod h1:dTiFglRmd66nLR9Pv9f0mZi7B7fk5Pm3gvsjB5tr+kI= -github.com/prometheus/common v0.44.0 h1:+5BrQJwiBB9xsMygAB3TNvpQKOwlkc25LbISbrdOOfY= -github.com/prometheus/common v0.44.0/go.mod h1:ofAIvZbQ1e/nugmZGz4/qCb9Ap1VoSTIO7x0VV9VvuY= +github.com/prometheus/common v0.45.0 h1:2BGz0eBc2hdMDLnO/8n0jeB3oPrt2D08CekT0lneoxM= +github.com/prometheus/common v0.45.0/go.mod h1:YJmSTw9BoKxJplESWWxlbyttQR4uaEcGyv9MZjVOJsY= github.com/prometheus/procfs v0.12.0 h1:jluTpSng7V9hY0O2R9DzzJHYb2xULk9VTR1V1R/k6Bo= github.com/prometheus/procfs v0.12.0/go.mod h1:pcuDEFsWDnvcgNzo4EEweacyhjeA9Zk3cnaOZAZEfOo= +github.com/rabbitmq/amqp091-go v1.9.0 h1:qrQtyzB4H8BQgEuJwhmVQqVHB9O4+MNDJCCAcpc3Aoo= +github.com/rabbitmq/amqp091-go v1.9.0/go.mod h1:+jPrT9iY2eLjRaMSRHUhc3z14E/l85kv/f+6luSD3pc= github.com/russross/blackfriday/v2 v2.1.0/go.mod h1:+Rmxgy9KzJVeS9/2gXHxylqXiyQDYRxCVz55jmeOWTM= +github.com/sirupsen/logrus v1.9.3 h1:dueUQJ1C2q9oE3F7wvmSGAaVtTmUizReu6fjN8uqzbQ= +github.com/sirupsen/logrus v1.9.3/go.mod h1:naHLuLoDiP4jHNo9R0sCBMtWGeIprob74mVsIT4qYEQ= github.com/spf13/cobra v1.7.0 h1:hyqWnYt1ZQShIddO5kBpj3vu05/++x6tJ6dg8EC572I= github.com/spf13/cobra v1.7.0/go.mod h1:uLxZILRyS/50WlhOIKD7W6V5bgeIt+4sICxh6uRMrb0= github.com/spf13/pflag v1.0.5 h1:iy+VFUOCP1a+8yFto/drg2CJ5u0yRoB7fZw3DKv/JXA= @@ -81,6 +132,12 @@ github.com/stretchr/testify v1.8.0/go.mod h1:yNjHg4UonilssWZ8iaSj1OCr/vHnekPRkoO github.com/stretchr/testify v1.8.1/go.mod h1:w2LPCIKwWwSfY2zedu0+kehJoqGctiVI29o6fzry7u4= github.com/stretchr/testify v1.8.4 h1:CcVxjf3Q8PM0mHUKJCdn+eZZtm5yQwehR5yeSVQQcUk= github.com/stretchr/testify v1.8.4/go.mod h1:sz/lmYIOXD/1dqDmKjjqLyZ2RngseejIcXlSw2iwfAo= +github.com/xeipuuv/gojsonpointer v0.0.0-20190905194746-02993c407bfb h1:zGWFAtiMcyryUHoUjUJX0/lt1H2+i2Ka2n+D3DImSNo= +github.com/xeipuuv/gojsonpointer v0.0.0-20190905194746-02993c407bfb/go.mod h1:N2zxlSyiKSe5eX1tZViRH5QA0qijqEDrYZiPEAiq3wU= +github.com/xeipuuv/gojsonreference v0.0.0-20180127040603-bd5ef7bd5415 h1:EzJWgHovont7NscjpAxXsDA8S8BMYve8Y5+7cuRE7R0= +github.com/xeipuuv/gojsonreference v0.0.0-20180127040603-bd5ef7bd5415/go.mod h1:GwrjFmJcFw6At/Gs6z4yjiIwzuJ1/+UwLxMQDVQXShQ= +github.com/xeipuuv/gojsonschema v1.2.0 h1:LhYJRs+L4fBtjZUfuSZIKGeVu0QRy8e5Xi7D17UxZ74= +github.com/xeipuuv/gojsonschema v1.2.0/go.mod h1:anYRn/JVcOK2ZgGU+IjEV4nwlhoK5sQluxsYJ78Id3Y= github.com/yuin/goldmark v1.4.13/go.mod h1:6yULJ656Px+3vBD8DxQVa3kxgyrAnzto9xy5taEt/CY= go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.45.0 h1:RsQi0qJ2imFfCvZabqzM9cNXBG8k6gXMv1A0cXRmH6A= go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.45.0/go.mod h1:vsh3ySueQCiKPxFLvjWC4Z135gIa34TQ/NSqkDTZYUM= @@ -102,17 +159,22 @@ go.opentelemetry.io/otel/trace v1.19.0 h1:DFVQmlVbfVeOuBRrwdtaehRrWiL1JoVs9CPIQ1 go.opentelemetry.io/otel/trace v1.19.0/go.mod h1:mfaSyvGyEJEI0nyV2I4qhNQnbBOUUmYZpYojqMnX2vo= go.opentelemetry.io/proto/otlp v1.0.0 h1:T0TX0tmXU8a3CbNXzEKGeU5mIVOdf0oykP+u2lIVU/I= go.opentelemetry.io/proto/otlp v1.0.0/go.mod h1:Sy6pihPLfYHkr3NkUbEhGHFhINUSI/v80hjKIs5JXpM= +go.uber.org/goleak v1.2.1 h1:NBol2c7O1ZokfZ0LEU9K6Whx/KnwvepVetCUhtKja4A= +go.uber.org/goleak v1.2.1/go.mod h1:qlT2yGI9QafXHhZZLxlSuNsMw3FFLxBr+tBRlmO1xH4= golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= golang.org/x/crypto v0.0.0-20210921155107-089bfa567519/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc= +golang.org/x/crypto v0.14.0 h1:wBqGXzWJW6m1XrIKlAH0Hs1JJ7+9KBwnIO8v66Q9cHc= +golang.org/x/crypto v0.14.0/go.mod h1:MVFd36DqK4CsrnJYDkBA3VC4m2GkXAM0PvzMCn4JQf4= golang.org/x/mod v0.6.0-dev.0.20220419223038-86c51ed26bb4/go.mod h1:jJ57K6gSWd91VN4djpZkiMVwK6gcyfeH4XE8wZrZaV4= +golang.org/x/mod v0.13.0 h1:I/DsJXRlw/8l/0c24sM9yb0T4z9liZTduXvdAWYiysY= +golang.org/x/mod v0.13.0/go.mod h1:hTbmBsO62+eylJbnUtE2MGJUyE7QWk4xUqPFrRgJ+7c= golang.org/x/net v0.0.0-20190620200207-3b0461eec859/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.0.0-20220722155237-a158d28d115b/go.mod h1:XRhObCWvk6IyKnWLug+ECip1KBveYUHfp+8e9klMJ9c= golang.org/x/net v0.17.0 h1:pVaXccu2ozPjCXewfr1S7xza/zcXTity9cCdXQYSjIM= golang.org/x/net v0.17.0/go.mod h1:NxSsAGuq816PNPmqtQdLE42eU2Fs7NoRIZrHJAlaCOE= -golang.org/x/oauth2 v0.12.0 h1:smVPGxink+n1ZI5pkQa8y6fZT0RW0MgCO5bFpepy4B4= -golang.org/x/oauth2 v0.12.0/go.mod h1:A74bZ3aGXgCY0qaIC9Ahg6Lglin4AMAco8cIv9baba4= -golang.org/x/sync v0.0.0-20181221193216-37e7f081c4d4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/oauth2 v0.13.0 h1:jDDenyj+WgFtmV3zYVoi8aE2BwtXFLWOA67ZfNWftiY= +golang.org/x/oauth2 v0.13.0/go.mod h1:/JMhi4ZRXAf4HG9LiNmxvk+45+96RUlVThiH8FzNBn0= golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20220722155255-886fb9371eb4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.4.0 h1:zxkM55ReGkDlKSM+Fu41A+zmbZuaPVbGMzvvdUPznYQ= @@ -134,16 +196,18 @@ golang.org/x/text v0.13.0/go.mod h1:TvPlkZtksWOMsz7fbANvkp4WM8x/WCo/om8BMLbz+aE= golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= 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.14.0 h1:jvNa2pY0M4r62jkRQ6RwEZZyPcymeL9XZMLBbV7U2nc= +golang.org/x/tools v0.14.0/go.mod h1:uYBEerGOWcJyEORxN+Ek8+TT266gXkNlHdJBwexUsBg= 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= google.golang.org/appengine v1.6.7 h1:FZR1q0exgwxzPzp/aF+VccGrSfxfPpkBqjIIEq3ru6c= google.golang.org/appengine v1.6.7/go.mod h1:8WjMMxjGQR8xUklV/ARdw2HLXBOI7O7uCIDZVag1xfc= -google.golang.org/genproto v0.0.0-20231012201019-e917dd12ba7a h1:fwgW9j3vHirt4ObdHoYNwuO24BEZjSzbh+zPaNWoiY8= -google.golang.org/genproto v0.0.0-20231012201019-e917dd12ba7a/go.mod h1:EMfReVxb80Dq1hhioy0sOsY9jCE46YDgHlJ7fWVUWRE= -google.golang.org/genproto/googleapis/api v0.0.0-20231012201019-e917dd12ba7a h1:myvhA4is3vrit1a6NZCWBIwN0kNEnX21DJOJX/NvIfI= -google.golang.org/genproto/googleapis/api v0.0.0-20231012201019-e917dd12ba7a/go.mod h1:SUBoKXbI1Efip18FClrQVGjWcyd0QZd8KkvdP34t7ww= -google.golang.org/genproto/googleapis/rpc v0.0.0-20231016165738-49dd2c1f3d0b h1:ZlWIi1wSK56/8hn4QcBp/j9M7Gt3U/3hZw3mC7vDICo= -google.golang.org/genproto/googleapis/rpc v0.0.0-20231016165738-49dd2c1f3d0b/go.mod h1:swOH3j0KzcDDgGUWr+SNpyTen5YrXjS3eyPzFYKc6lc= +google.golang.org/genproto v0.0.0-20231030173426-d783a09b4405 h1:I6WNifs6pF9tNdSob2W24JtyxIYjzFB9qDlpUC76q+U= +google.golang.org/genproto v0.0.0-20231030173426-d783a09b4405/go.mod h1:3WDQMjmJk36UQhjQ89emUzb1mdaHcPeeAh4SCBKznB4= +google.golang.org/genproto/googleapis/api v0.0.0-20231030173426-d783a09b4405 h1:HJMDndgxest5n2y77fnErkM62iUsptE/H8p0dC2Huo4= +google.golang.org/genproto/googleapis/api v0.0.0-20231030173426-d783a09b4405/go.mod h1:oT32Z4o8Zv2xPQTg0pbVaPr0MPOH6f14RgXt7zfIpwg= +google.golang.org/genproto/googleapis/rpc v0.0.0-20231030173426-d783a09b4405 h1:AB/lmRny7e2pLhFEYIbl5qkDAUt2h0ZRO4wGPhZf+ik= +google.golang.org/genproto/googleapis/rpc v0.0.0-20231030173426-d783a09b4405/go.mod h1:67X1fPuzjcrkymZzZV1vvkFeTn2Rvc6lYF9MYFGCcwE= google.golang.org/grpc v1.59.0 h1:Z5Iec2pjwb+LEOqzpB2MR12/eKFhDPhuqW91O+4bwUk= google.golang.org/grpc v1.59.0/go.mod h1:aUPDwccQo6OTjy7Hct4AfBPD1GptF4fyUjIkQ9YtF98= google.golang.org/protobuf v1.26.0-rc.1/go.mod h1:jlhhOSvTdKEhbULTjvd4ARK9grFBp09yW+WbY/TyQbw= @@ -151,6 +215,9 @@ google.golang.org/protobuf v1.26.0/go.mod h1:9q0QmTI4eRPtz6boOQmLYwt+qCgq0jsYwAQ google.golang.org/protobuf v1.31.0 h1:g0LDEJHgrBl9N9r17Ru3sqWhkIx2NB67okBHPwC7hs8= google.golang.org/protobuf v1.31.0/go.mod h1:HV8QOd/L58Z+nl8r43ehVNZIU/HEI6OcFqwMG9pJV4I= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= +gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= +gopkg.in/yaml.v2 v2.4.0 h1:D8xgwECY7CYvx+Y2n4sBz93Jn9JRvxdiyyo8CTfuKaY= +gopkg.in/yaml.v2 v2.4.0/go.mod h1:RDklbk79AGWmwhnvt/jBztapEOGDOx6ZbXqjP6csGnQ= 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/internal/jaeger/doc.go b/internal/jaeger/doc.go index be973089..51c1fca4 100644 --- a/internal/jaeger/doc.go +++ b/internal/jaeger/doc.go @@ -1,6 +1,4 @@ // Copyright (c) Ultraviolet // SPDX-License-Identifier: Apache-2.0 -// Package jaeger contains the domain concept definitions needed to support -// Mainflux Jaeger functionality. package jaeger diff --git a/internal/libvirt/connect.go b/internal/libvirt/connect.go index 1bb969f4..1894ace5 100644 --- a/internal/libvirt/connect.go +++ b/internal/libvirt/connect.go @@ -8,8 +8,8 @@ import ( "net" "time" + "github.com/absmach/magistrala/logger" "github.com/digitalocean/go-libvirt" - "github.com/mainflux/mainflux/logger" ) func Connect(logger logger.Logger) *libvirt.Libvirt { diff --git a/internal/server/grpc/grpc.go b/internal/server/grpc/grpc.go index c3851584..2488a6f6 100644 --- a/internal/server/grpc/grpc.go +++ b/internal/server/grpc/grpc.go @@ -8,7 +8,7 @@ import ( "net" "time" - "github.com/mainflux/mainflux/logger" + "github.com/absmach/magistrala/logger" "github.com/ultravioletrs/cocos-ai/internal/server" "go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc" "google.golang.org/grpc" diff --git a/internal/server/http/http.go b/internal/server/http/http.go index 957a9849..d8e0806c 100644 --- a/internal/server/http/http.go +++ b/internal/server/http/http.go @@ -8,7 +8,7 @@ import ( "net/http" "time" - "github.com/mainflux/mainflux/logger" + "github.com/absmach/magistrala/logger" "github.com/ultravioletrs/cocos-ai/internal/server" ) diff --git a/internal/server/server.go b/internal/server/server.go index 941f2ea2..4f0d4be5 100644 --- a/internal/server/server.go +++ b/internal/server/server.go @@ -9,7 +9,7 @@ import ( "os/signal" "syscall" - "github.com/mainflux/mainflux/logger" + "github.com/absmach/magistrala/logger" ) type Server interface { diff --git a/manager/api/http/responses.go b/manager/api/http/responses.go index 8b896acf..2b93fd40 100644 --- a/manager/api/http/responses.go +++ b/manager/api/http/responses.go @@ -5,10 +5,10 @@ package http import ( "net/http" - "github.com/mainflux/mainflux" + "github.com/absmach/magistrala" ) -var _ mainflux.Response = (*runRes)(nil) +var _ magistrala.Response = (*runRes)(nil) type runRes struct { ID string `json:"id"` diff --git a/manager/api/http/transport.go b/manager/api/http/transport.go index a825a16e..8c7d10e3 100644 --- a/manager/api/http/transport.go +++ b/manager/api/http/transport.go @@ -10,9 +10,9 @@ import ( "net/http" "strings" + "github.com/absmach/magistrala" kithttp "github.com/go-kit/kit/transport/http" "github.com/go-zoo/bone" - "github.com/mainflux/mainflux" "github.com/prometheus/client_golang/prometheus/promhttp" "github.com/ultravioletrs/cocos-ai/manager" "go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp" @@ -40,7 +40,7 @@ func MakeHandler(svc manager.Service, instanceID string) http.Handler { opts..., ), "run")) - r.GetFunc("/health", mainflux.Health("manager", instanceID)) + r.GetFunc("/health", magistrala.Health("manager", instanceID)) r.Handle("/metrics", promhttp.Handler()) return r @@ -62,7 +62,7 @@ func decodeRun(_ context.Context, r *http.Request) (interface{}, error) { func encodeResponse(_ context.Context, w http.ResponseWriter, response interface{}) error { w.Header().Set("Content-Type", contentType) - if ar, ok := response.(mainflux.Response); ok { + if ar, ok := response.(magistrala.Response); ok { for k, v := range ar.Headers() { w.Header().Set(k, v) } diff --git a/manager/api/logging.go b/manager/api/logging.go index 01db69ba..78445fe7 100644 --- a/manager/api/logging.go +++ b/manager/api/logging.go @@ -11,7 +11,7 @@ import ( "fmt" "time" - log "github.com/mainflux/mainflux/logger" + log "github.com/absmach/magistrala/logger" "github.com/ultravioletrs/cocos-ai/manager" ) diff --git a/manager/doc.go b/manager/doc.go index b4e7f2c3..bd09913d 100644 --- a/manager/doc.go +++ b/manager/doc.go @@ -1,7 +1,4 @@ // Copyright (c) Ultraviolet // SPDX-License-Identifier: Apache-2.0 -// Package things contains the domain concept definitions needed to support -// Mainflux manager service functionality. - package manager diff --git a/manager/pubsub.go b/manager/pubsub.go new file mode 100644 index 00000000..09accb73 --- /dev/null +++ b/manager/pubsub.go @@ -0,0 +1,58 @@ +// Copyright (c) Ultraviolet +// SPDX-License-Identifier: Apache-2.0 +package manager + +import ( + "context" + "errors" + + "github.com/absmach/magistrala/logger" + "github.com/absmach/magistrala/pkg/messaging" +) + +const agentTopic = "channels.agent.>" + +var errUnexpectedEvent = errors.New("unexpected event from agent") + +func NewAgentEventNotifier(ctx context.Context, pubsub messaging.PubSub, logger logger.Logger) error { + if err := pubsub.Subscribe(ctx, messaging.SubscriberConfig{ + ID: "manager", + Topic: agentTopic, + DeliveryPolicy: messaging.DeliverAllPolicy, + Handler: &eventHandler{logger: logger}, + }); err != nil { + return err + } + return nil +} + +type eventHandler struct { + logger logger.Logger +} + +func (ev *eventHandler) Handle(msg *messaging.Message) error { + switch msg.Subtopic { + case "idle": + ev.logger.Info("agent is running and idle") + case "run": + ev.logger.Info("agent is ready to receive computation manifest") + case "algorithms": + ev.logger.Info("agent is ready to receive algorithms") + case "datasets": + ev.logger.Info("agent is ready to receive datasets") + case "results": + ev.logger.Info("agent computation results are ready") + case "running": + ev.logger.Info("agent computation is running") + case "complete": + ev.logger.Info("agent computation results have been consumed") + default: + ev.logger.Error("unexpected event from agent") + return errUnexpectedEvent + } + return nil +} + +func (*eventHandler) Cancel() error { + return nil +} diff --git a/manager/tracing/doc.go b/manager/tracing/doc.go index c0e59001..e337d145 100644 --- a/manager/tracing/doc.go +++ b/manager/tracing/doc.go @@ -6,7 +6,4 @@ // This package provides tracing middleware for cocos auth service. // It can be used to trace incoming requests and add tracing capabilities to // cocos auth service. -// -// For more details about tracing instrumentation refer -// to the documentation at https://docs.mainflux.io/tracing/. package tracing diff --git a/pkg/clients/grpc/connect.go b/pkg/clients/grpc/connect.go index 8080780e..86b1d443 100644 --- a/pkg/clients/grpc/connect.go +++ b/pkg/clients/grpc/connect.go @@ -5,7 +5,7 @@ package grpc import ( "time" - "github.com/mainflux/mainflux/pkg/errors" + "github.com/absmach/magistrala/pkg/errors" "go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc" gogrpc "google.golang.org/grpc" "google.golang.org/grpc/credentials" diff --git a/pkg/sdk/agent.go b/pkg/sdk/agent.go index 1e2f1588..c5bca7c5 100644 --- a/pkg/sdk/agent.go +++ b/pkg/sdk/agent.go @@ -6,7 +6,7 @@ import ( "context" "encoding/json" - "github.com/mainflux/mainflux/logger" + "github.com/absmach/magistrala/logger" "github.com/ultravioletrs/cocos-ai/agent" ) diff --git a/prof.cov b/prof.cov deleted file mode 100644 index d69ddfc4..00000000 --- a/prof.cov +++ /dev/null @@ -1,337 +0,0 @@ -mode: atomic -github.com/ultravioletrs/cocos-ai/agent/agent.pb.go:34.30,36.29 2 0 -github.com/ultravioletrs/cocos-ai/agent/agent.pb.go:36.29,40.3 3 0 -github.com/ultravioletrs/cocos-ai/agent/agent.pb.go:43.38,45.2 1 0 -github.com/ultravioletrs/cocos-ai/agent/agent.pb.go:47.36,47.37 0 0 -github.com/ultravioletrs/cocos-ai/agent/agent.pb.go:49.58,51.41 2 0 -github.com/ultravioletrs/cocos-ai/agent/agent.pb.go:51.41,53.34 2 0 -github.com/ultravioletrs/cocos-ai/agent/agent.pb.go:53.34,55.4 1 0 -github.com/ultravioletrs/cocos-ai/agent/agent.pb.go:56.3,56.12 1 0 -github.com/ultravioletrs/cocos-ai/agent/agent.pb.go:58.2,58.24 1 0 -github.com/ultravioletrs/cocos-ai/agent/agent.pb.go:62.49,64.2 1 0 -github.com/ultravioletrs/cocos-ai/agent/agent.pb.go:66.46,67.14 1 0 -github.com/ultravioletrs/cocos-ai/agent/agent.pb.go:67.14,69.3 1 0 -github.com/ultravioletrs/cocos-ai/agent/agent.pb.go:70.2,70.12 1 0 -github.com/ultravioletrs/cocos-ai/agent/agent.pb.go:81.31,83.29 2 0 -github.com/ultravioletrs/cocos-ai/agent/agent.pb.go:83.29,87.3 3 0 -github.com/ultravioletrs/cocos-ai/agent/agent.pb.go:90.39,92.2 1 0 -github.com/ultravioletrs/cocos-ai/agent/agent.pb.go:94.37,94.38 0 0 -github.com/ultravioletrs/cocos-ai/agent/agent.pb.go:96.59,98.41 2 0 -github.com/ultravioletrs/cocos-ai/agent/agent.pb.go:98.41,100.34 2 0 -github.com/ultravioletrs/cocos-ai/agent/agent.pb.go:100.34,102.4 1 0 -github.com/ultravioletrs/cocos-ai/agent/agent.pb.go:103.3,103.12 1 0 -github.com/ultravioletrs/cocos-ai/agent/agent.pb.go:105.2,105.24 1 0 -github.com/ultravioletrs/cocos-ai/agent/agent.pb.go:109.50,111.2 1 0 -github.com/ultravioletrs/cocos-ai/agent/agent.pb.go:113.47,114.14 1 0 -github.com/ultravioletrs/cocos-ai/agent/agent.pb.go:114.14,116.3 1 0 -github.com/ultravioletrs/cocos-ai/agent/agent.pb.go:117.2,117.11 1 0 -github.com/ultravioletrs/cocos-ai/agent/agent.pb.go:129.31,131.29 2 0 -github.com/ultravioletrs/cocos-ai/agent/agent.pb.go:131.29,135.3 3 0 -github.com/ultravioletrs/cocos-ai/agent/agent.pb.go:138.39,140.2 1 0 -github.com/ultravioletrs/cocos-ai/agent/agent.pb.go:142.37,142.38 0 0 -github.com/ultravioletrs/cocos-ai/agent/agent.pb.go:144.59,146.41 2 0 -github.com/ultravioletrs/cocos-ai/agent/agent.pb.go:146.41,148.34 2 0 -github.com/ultravioletrs/cocos-ai/agent/agent.pb.go:148.34,150.4 1 0 -github.com/ultravioletrs/cocos-ai/agent/agent.pb.go:151.3,151.12 1 0 -github.com/ultravioletrs/cocos-ai/agent/agent.pb.go:153.2,153.24 1 0 -github.com/ultravioletrs/cocos-ai/agent/agent.pb.go:157.50,159.2 1 0 -github.com/ultravioletrs/cocos-ai/agent/agent.pb.go:161.45,162.14 1 0 -github.com/ultravioletrs/cocos-ai/agent/agent.pb.go:162.14,164.3 1 0 -github.com/ultravioletrs/cocos-ai/agent/agent.pb.go:165.2,165.12 1 0 -github.com/ultravioletrs/cocos-ai/agent/agent.pb.go:168.44,169.14 1 0 -github.com/ultravioletrs/cocos-ai/agent/agent.pb.go:169.14,171.3 1 0 -github.com/ultravioletrs/cocos-ai/agent/agent.pb.go:172.2,172.11 1 0 -github.com/ultravioletrs/cocos-ai/agent/agent.pb.go:183.32,185.29 2 0 -github.com/ultravioletrs/cocos-ai/agent/agent.pb.go:185.29,189.3 3 0 -github.com/ultravioletrs/cocos-ai/agent/agent.pb.go:192.40,194.2 1 0 -github.com/ultravioletrs/cocos-ai/agent/agent.pb.go:196.38,196.39 0 0 -github.com/ultravioletrs/cocos-ai/agent/agent.pb.go:198.60,200.41 2 0 -github.com/ultravioletrs/cocos-ai/agent/agent.pb.go:200.41,202.34 2 0 -github.com/ultravioletrs/cocos-ai/agent/agent.pb.go:202.34,204.4 1 0 -github.com/ultravioletrs/cocos-ai/agent/agent.pb.go:205.3,205.12 1 0 -github.com/ultravioletrs/cocos-ai/agent/agent.pb.go:207.2,207.24 1 0 -github.com/ultravioletrs/cocos-ai/agent/agent.pb.go:211.51,213.2 1 0 -github.com/ultravioletrs/cocos-ai/agent/agent.pb.go:215.48,216.14 1 0 -github.com/ultravioletrs/cocos-ai/agent/agent.pb.go:216.14,218.3 1 0 -github.com/ultravioletrs/cocos-ai/agent/agent.pb.go:219.2,219.11 1 0 -github.com/ultravioletrs/cocos-ai/agent/agent.pb.go:231.31,233.29 2 0 -github.com/ultravioletrs/cocos-ai/agent/agent.pb.go:233.29,237.3 3 0 -github.com/ultravioletrs/cocos-ai/agent/agent.pb.go:240.39,242.2 1 0 -github.com/ultravioletrs/cocos-ai/agent/agent.pb.go:244.37,244.38 0 0 -github.com/ultravioletrs/cocos-ai/agent/agent.pb.go:246.59,248.41 2 0 -github.com/ultravioletrs/cocos-ai/agent/agent.pb.go:248.41,250.34 2 0 -github.com/ultravioletrs/cocos-ai/agent/agent.pb.go:250.34,252.4 1 0 -github.com/ultravioletrs/cocos-ai/agent/agent.pb.go:253.3,253.12 1 0 -github.com/ultravioletrs/cocos-ai/agent/agent.pb.go:255.2,255.24 1 0 -github.com/ultravioletrs/cocos-ai/agent/agent.pb.go:259.50,261.2 1 0 -github.com/ultravioletrs/cocos-ai/agent/agent.pb.go:263.43,264.14 1 0 -github.com/ultravioletrs/cocos-ai/agent/agent.pb.go:264.14,266.3 1 0 -github.com/ultravioletrs/cocos-ai/agent/agent.pb.go:267.2,267.12 1 0 -github.com/ultravioletrs/cocos-ai/agent/agent.pb.go:270.44,271.14 1 0 -github.com/ultravioletrs/cocos-ai/agent/agent.pb.go:271.14,273.3 1 0 -github.com/ultravioletrs/cocos-ai/agent/agent.pb.go:274.2,274.11 1 0 -github.com/ultravioletrs/cocos-ai/agent/agent.pb.go:285.32,287.29 2 0 -github.com/ultravioletrs/cocos-ai/agent/agent.pb.go:287.29,291.3 3 0 -github.com/ultravioletrs/cocos-ai/agent/agent.pb.go:294.40,296.2 1 0 -github.com/ultravioletrs/cocos-ai/agent/agent.pb.go:298.38,298.39 0 0 -github.com/ultravioletrs/cocos-ai/agent/agent.pb.go:300.60,302.41 2 0 -github.com/ultravioletrs/cocos-ai/agent/agent.pb.go:302.41,304.34 2 0 -github.com/ultravioletrs/cocos-ai/agent/agent.pb.go:304.34,306.4 1 0 -github.com/ultravioletrs/cocos-ai/agent/agent.pb.go:307.3,307.12 1 0 -github.com/ultravioletrs/cocos-ai/agent/agent.pb.go:309.2,309.24 1 0 -github.com/ultravioletrs/cocos-ai/agent/agent.pb.go:313.51,315.2 1 0 -github.com/ultravioletrs/cocos-ai/agent/agent.pb.go:317.46,318.14 1 0 -github.com/ultravioletrs/cocos-ai/agent/agent.pb.go:318.14,320.3 1 0 -github.com/ultravioletrs/cocos-ai/agent/agent.pb.go:321.2,321.11 1 0 -github.com/ultravioletrs/cocos-ai/agent/agent.pb.go:332.33,334.29 2 0 -github.com/ultravioletrs/cocos-ai/agent/agent.pb.go:334.29,338.3 3 0 -github.com/ultravioletrs/cocos-ai/agent/agent.pb.go:341.41,343.2 1 0 -github.com/ultravioletrs/cocos-ai/agent/agent.pb.go:345.39,345.40 0 0 -github.com/ultravioletrs/cocos-ai/agent/agent.pb.go:347.61,349.41 2 0 -github.com/ultravioletrs/cocos-ai/agent/agent.pb.go:349.41,351.34 2 0 -github.com/ultravioletrs/cocos-ai/agent/agent.pb.go:351.34,353.4 1 0 -github.com/ultravioletrs/cocos-ai/agent/agent.pb.go:354.3,354.12 1 0 -github.com/ultravioletrs/cocos-ai/agent/agent.pb.go:356.2,356.24 1 0 -github.com/ultravioletrs/cocos-ai/agent/agent.pb.go:360.52,362.2 1 0 -github.com/ultravioletrs/cocos-ai/agent/agent.pb.go:364.46,365.14 1 0 -github.com/ultravioletrs/cocos-ai/agent/agent.pb.go:365.14,367.3 1 0 -github.com/ultravioletrs/cocos-ai/agent/agent.pb.go:368.2,368.11 1 0 -github.com/ultravioletrs/cocos-ai/agent/agent.pb.go:379.34,381.29 2 0 -github.com/ultravioletrs/cocos-ai/agent/agent.pb.go:381.29,385.3 3 0 -github.com/ultravioletrs/cocos-ai/agent/agent.pb.go:388.42,390.2 1 0 -github.com/ultravioletrs/cocos-ai/agent/agent.pb.go:392.40,392.41 0 0 -github.com/ultravioletrs/cocos-ai/agent/agent.pb.go:394.62,396.41 2 0 -github.com/ultravioletrs/cocos-ai/agent/agent.pb.go:396.41,398.34 2 0 -github.com/ultravioletrs/cocos-ai/agent/agent.pb.go:398.34,400.4 1 0 -github.com/ultravioletrs/cocos-ai/agent/agent.pb.go:401.3,401.12 1 0 -github.com/ultravioletrs/cocos-ai/agent/agent.pb.go:403.2,403.24 1 0 -github.com/ultravioletrs/cocos-ai/agent/agent.pb.go:407.53,409.2 1 0 -github.com/ultravioletrs/cocos-ai/agent/agent.pb.go:411.43,412.14 1 0 -github.com/ultravioletrs/cocos-ai/agent/agent.pb.go:412.14,414.3 1 0 -github.com/ultravioletrs/cocos-ai/agent/agent.pb.go:415.2,415.12 1 0 -github.com/ultravioletrs/cocos-ai/agent/agent.pb.go:424.38,426.29 2 0 -github.com/ultravioletrs/cocos-ai/agent/agent.pb.go:426.29,430.3 3 0 -github.com/ultravioletrs/cocos-ai/agent/agent.pb.go:433.46,435.2 1 0 -github.com/ultravioletrs/cocos-ai/agent/agent.pb.go:437.44,437.45 0 0 -github.com/ultravioletrs/cocos-ai/agent/agent.pb.go:439.66,441.41 2 0 -github.com/ultravioletrs/cocos-ai/agent/agent.pb.go:441.41,443.34 2 0 -github.com/ultravioletrs/cocos-ai/agent/agent.pb.go:443.34,445.4 1 0 -github.com/ultravioletrs/cocos-ai/agent/agent.pb.go:446.3,446.12 1 0 -github.com/ultravioletrs/cocos-ai/agent/agent.pb.go:448.2,448.24 1 0 -github.com/ultravioletrs/cocos-ai/agent/agent.pb.go:452.57,454.2 1 0 -github.com/ultravioletrs/cocos-ai/agent/agent.pb.go:464.39,466.29 2 0 -github.com/ultravioletrs/cocos-ai/agent/agent.pb.go:466.29,470.3 3 0 -github.com/ultravioletrs/cocos-ai/agent/agent.pb.go:473.47,475.2 1 0 -github.com/ultravioletrs/cocos-ai/agent/agent.pb.go:477.45,477.46 0 0 -github.com/ultravioletrs/cocos-ai/agent/agent.pb.go:479.67,481.41 2 0 -github.com/ultravioletrs/cocos-ai/agent/agent.pb.go:481.41,483.34 2 0 -github.com/ultravioletrs/cocos-ai/agent/agent.pb.go:483.34,485.4 1 0 -github.com/ultravioletrs/cocos-ai/agent/agent.pb.go:486.3,486.12 1 0 -github.com/ultravioletrs/cocos-ai/agent/agent.pb.go:488.2,488.24 1 0 -github.com/ultravioletrs/cocos-ai/agent/agent.pb.go:492.58,494.2 1 0 -github.com/ultravioletrs/cocos-ai/agent/agent.pb.go:496.48,497.14 1 0 -github.com/ultravioletrs/cocos-ai/agent/agent.pb.go:497.14,499.3 1 0 -github.com/ultravioletrs/cocos-ai/agent/agent.pb.go:500.2,500.12 1 0 -github.com/ultravioletrs/cocos-ai/agent/agent.pb.go:565.50,566.47 1 0 -github.com/ultravioletrs/cocos-ai/agent/agent.pb.go:566.47,568.3 1 0 -github.com/ultravioletrs/cocos-ai/agent/agent.pb.go:569.2,569.43 1 0 -github.com/ultravioletrs/cocos-ai/agent/agent.pb.go:603.13,603.46 1 1 -github.com/ultravioletrs/cocos-ai/agent/agent.pb.go:604.36,605.35 1 1 -github.com/ultravioletrs/cocos-ai/agent/agent.pb.go:605.35,607.3 1 0 -github.com/ultravioletrs/cocos-ai/agent/agent.pb.go:608.2,608.30 1 1 -github.com/ultravioletrs/cocos-ai/agent/agent.pb.go:608.30,609.88 1 0 -github.com/ultravioletrs/cocos-ai/agent/agent.pb.go:609.88,610.35 1 0 -github.com/ultravioletrs/cocos-ai/agent/agent.pb.go:611.11,612.20 1 0 -github.com/ultravioletrs/cocos-ai/agent/agent.pb.go:613.11,614.24 1 0 -github.com/ultravioletrs/cocos-ai/agent/agent.pb.go:615.11,616.28 1 0 -github.com/ultravioletrs/cocos-ai/agent/agent.pb.go:617.12,618.15 1 0 -github.com/ultravioletrs/cocos-ai/agent/agent.pb.go:621.3,621.88 1 0 -github.com/ultravioletrs/cocos-ai/agent/agent.pb.go:621.88,622.36 1 0 -github.com/ultravioletrs/cocos-ai/agent/agent.pb.go:623.11,624.20 1 0 -github.com/ultravioletrs/cocos-ai/agent/agent.pb.go:625.11,626.24 1 0 -github.com/ultravioletrs/cocos-ai/agent/agent.pb.go:627.11,628.28 1 0 -github.com/ultravioletrs/cocos-ai/agent/agent.pb.go:629.12,630.15 1 0 -github.com/ultravioletrs/cocos-ai/agent/agent.pb.go:633.3,633.88 1 0 -github.com/ultravioletrs/cocos-ai/agent/agent.pb.go:633.88,634.36 1 0 -github.com/ultravioletrs/cocos-ai/agent/agent.pb.go:635.11,636.20 1 0 -github.com/ultravioletrs/cocos-ai/agent/agent.pb.go:637.11,638.24 1 0 -github.com/ultravioletrs/cocos-ai/agent/agent.pb.go:639.11,640.28 1 0 -github.com/ultravioletrs/cocos-ai/agent/agent.pb.go:641.12,642.15 1 0 -github.com/ultravioletrs/cocos-ai/agent/agent.pb.go:645.3,645.88 1 0 -github.com/ultravioletrs/cocos-ai/agent/agent.pb.go:645.88,646.37 1 0 -github.com/ultravioletrs/cocos-ai/agent/agent.pb.go:647.11,648.20 1 0 -github.com/ultravioletrs/cocos-ai/agent/agent.pb.go:649.11,650.24 1 0 -github.com/ultravioletrs/cocos-ai/agent/agent.pb.go:651.11,652.28 1 0 -github.com/ultravioletrs/cocos-ai/agent/agent.pb.go:653.12,654.15 1 0 -github.com/ultravioletrs/cocos-ai/agent/agent.pb.go:657.3,657.88 1 0 -github.com/ultravioletrs/cocos-ai/agent/agent.pb.go:657.88,658.36 1 0 -github.com/ultravioletrs/cocos-ai/agent/agent.pb.go:659.11,660.20 1 0 -github.com/ultravioletrs/cocos-ai/agent/agent.pb.go:661.11,662.24 1 0 -github.com/ultravioletrs/cocos-ai/agent/agent.pb.go:663.11,664.28 1 0 -github.com/ultravioletrs/cocos-ai/agent/agent.pb.go:665.12,666.15 1 0 -github.com/ultravioletrs/cocos-ai/agent/agent.pb.go:669.3,669.88 1 0 -github.com/ultravioletrs/cocos-ai/agent/agent.pb.go:669.88,670.37 1 0 -github.com/ultravioletrs/cocos-ai/agent/agent.pb.go:671.11,672.20 1 0 -github.com/ultravioletrs/cocos-ai/agent/agent.pb.go:673.11,674.24 1 0 -github.com/ultravioletrs/cocos-ai/agent/agent.pb.go:675.11,676.28 1 0 -github.com/ultravioletrs/cocos-ai/agent/agent.pb.go:677.12,678.15 1 0 -github.com/ultravioletrs/cocos-ai/agent/agent.pb.go:681.3,681.88 1 0 -github.com/ultravioletrs/cocos-ai/agent/agent.pb.go:681.88,682.38 1 0 -github.com/ultravioletrs/cocos-ai/agent/agent.pb.go:683.11,684.20 1 0 -github.com/ultravioletrs/cocos-ai/agent/agent.pb.go:685.11,686.24 1 0 -github.com/ultravioletrs/cocos-ai/agent/agent.pb.go:687.11,688.28 1 0 -github.com/ultravioletrs/cocos-ai/agent/agent.pb.go:689.12,690.15 1 0 -github.com/ultravioletrs/cocos-ai/agent/agent.pb.go:693.3,693.88 1 0 -github.com/ultravioletrs/cocos-ai/agent/agent.pb.go:693.88,694.39 1 0 -github.com/ultravioletrs/cocos-ai/agent/agent.pb.go:695.11,696.20 1 0 -github.com/ultravioletrs/cocos-ai/agent/agent.pb.go:697.11,698.24 1 0 -github.com/ultravioletrs/cocos-ai/agent/agent.pb.go:699.11,700.28 1 0 -github.com/ultravioletrs/cocos-ai/agent/agent.pb.go:701.12,702.15 1 0 -github.com/ultravioletrs/cocos-ai/agent/agent.pb.go:705.3,705.88 1 0 -github.com/ultravioletrs/cocos-ai/agent/agent.pb.go:705.88,706.43 1 0 -github.com/ultravioletrs/cocos-ai/agent/agent.pb.go:707.11,708.20 1 0 -github.com/ultravioletrs/cocos-ai/agent/agent.pb.go:709.11,710.24 1 0 -github.com/ultravioletrs/cocos-ai/agent/agent.pb.go:711.11,712.28 1 0 -github.com/ultravioletrs/cocos-ai/agent/agent.pb.go:713.12,714.15 1 0 -github.com/ultravioletrs/cocos-ai/agent/agent.pb.go:717.3,717.88 1 0 -github.com/ultravioletrs/cocos-ai/agent/agent.pb.go:717.88,718.44 1 0 -github.com/ultravioletrs/cocos-ai/agent/agent.pb.go:719.11,720.20 1 0 -github.com/ultravioletrs/cocos-ai/agent/agent.pb.go:721.11,722.24 1 0 -github.com/ultravioletrs/cocos-ai/agent/agent.pb.go:723.11,724.28 1 0 -github.com/ultravioletrs/cocos-ai/agent/agent.pb.go:725.12,726.15 1 0 -github.com/ultravioletrs/cocos-ai/agent/agent.pb.go:730.2,747.38 6 1 -github.com/ultravioletrs/cocos-ai/agent/agent_grpc.pb.go:47.76,49.2 1 0 -github.com/ultravioletrs/cocos-ai/agent/agent_grpc.pb.go:51.118,54.16 3 0 -github.com/ultravioletrs/cocos-ai/agent/agent_grpc.pb.go:54.16,56.3 1 0 -github.com/ultravioletrs/cocos-ai/agent/agent_grpc.pb.go:57.2,57.17 1 0 -github.com/ultravioletrs/cocos-ai/agent/agent_grpc.pb.go:60.121,63.16 3 0 -github.com/ultravioletrs/cocos-ai/agent/agent_grpc.pb.go:63.16,65.3 1 0 -github.com/ultravioletrs/cocos-ai/agent/agent_grpc.pb.go:66.2,66.17 1 0 -github.com/ultravioletrs/cocos-ai/agent/agent_grpc.pb.go:69.121,72.16 3 0 -github.com/ultravioletrs/cocos-ai/agent/agent_grpc.pb.go:72.16,74.3 1 0 -github.com/ultravioletrs/cocos-ai/agent/agent_grpc.pb.go:75.2,75.17 1 0 -github.com/ultravioletrs/cocos-ai/agent/agent_grpc.pb.go:78.127,81.16 3 0 -github.com/ultravioletrs/cocos-ai/agent/agent_grpc.pb.go:81.16,83.3 1 0 -github.com/ultravioletrs/cocos-ai/agent/agent_grpc.pb.go:84.2,84.17 1 0 -github.com/ultravioletrs/cocos-ai/agent/agent_grpc.pb.go:87.142,90.16 3 0 -github.com/ultravioletrs/cocos-ai/agent/agent_grpc.pb.go:90.16,92.3 1 0 -github.com/ultravioletrs/cocos-ai/agent/agent_grpc.pb.go:93.2,93.17 1 0 -github.com/ultravioletrs/cocos-ai/agent/agent_grpc.pb.go:112.96,114.2 1 0 -github.com/ultravioletrs/cocos-ai/agent/agent_grpc.pb.go:115.99,117.2 1 0 -github.com/ultravioletrs/cocos-ai/agent/agent_grpc.pb.go:118.99,120.2 1 0 -github.com/ultravioletrs/cocos-ai/agent/agent_grpc.pb.go:121.105,123.2 1 0 -github.com/ultravioletrs/cocos-ai/agent/agent_grpc.pb.go:124.120,126.2 1 0 -github.com/ultravioletrs/cocos-ai/agent/agent_grpc.pb.go:127.84,127.85 0 0 -github.com/ultravioletrs/cocos-ai/agent/agent_grpc.pb.go:136.82,138.2 1 0 -github.com/ultravioletrs/cocos-ai/agent/agent_grpc.pb.go:140.161,142.32 2 0 -github.com/ultravioletrs/cocos-ai/agent/agent_grpc.pb.go:142.32,144.3 1 0 -github.com/ultravioletrs/cocos-ai/agent/agent_grpc.pb.go:145.2,145.24 1 0 -github.com/ultravioletrs/cocos-ai/agent/agent_grpc.pb.go:145.24,147.3 1 0 -github.com/ultravioletrs/cocos-ai/agent/agent_grpc.pb.go:148.2,152.77 2 0 -github.com/ultravioletrs/cocos-ai/agent/agent_grpc.pb.go:152.77,154.3 1 0 -github.com/ultravioletrs/cocos-ai/agent/agent_grpc.pb.go:155.2,155.44 1 0 -github.com/ultravioletrs/cocos-ai/agent/agent_grpc.pb.go:158.162,160.32 2 0 -github.com/ultravioletrs/cocos-ai/agent/agent_grpc.pb.go:160.32,162.3 1 0 -github.com/ultravioletrs/cocos-ai/agent/agent_grpc.pb.go:163.2,163.24 1 0 -github.com/ultravioletrs/cocos-ai/agent/agent_grpc.pb.go:163.24,165.3 1 0 -github.com/ultravioletrs/cocos-ai/agent/agent_grpc.pb.go:166.2,170.77 2 0 -github.com/ultravioletrs/cocos-ai/agent/agent_grpc.pb.go:170.77,172.3 1 0 -github.com/ultravioletrs/cocos-ai/agent/agent_grpc.pb.go:173.2,173.44 1 0 -github.com/ultravioletrs/cocos-ai/agent/agent_grpc.pb.go:176.162,178.32 2 0 -github.com/ultravioletrs/cocos-ai/agent/agent_grpc.pb.go:178.32,180.3 1 0 -github.com/ultravioletrs/cocos-ai/agent/agent_grpc.pb.go:181.2,181.24 1 0 -github.com/ultravioletrs/cocos-ai/agent/agent_grpc.pb.go:181.24,183.3 1 0 -github.com/ultravioletrs/cocos-ai/agent/agent_grpc.pb.go:184.2,188.77 2 0 -github.com/ultravioletrs/cocos-ai/agent/agent_grpc.pb.go:188.77,190.3 1 0 -github.com/ultravioletrs/cocos-ai/agent/agent_grpc.pb.go:191.2,191.44 1 0 -github.com/ultravioletrs/cocos-ai/agent/agent_grpc.pb.go:194.164,196.32 2 0 -github.com/ultravioletrs/cocos-ai/agent/agent_grpc.pb.go:196.32,198.3 1 0 -github.com/ultravioletrs/cocos-ai/agent/agent_grpc.pb.go:199.2,199.24 1 0 -github.com/ultravioletrs/cocos-ai/agent/agent_grpc.pb.go:199.24,201.3 1 0 -github.com/ultravioletrs/cocos-ai/agent/agent_grpc.pb.go:202.2,206.77 2 0 -github.com/ultravioletrs/cocos-ai/agent/agent_grpc.pb.go:206.77,208.3 1 0 -github.com/ultravioletrs/cocos-ai/agent/agent_grpc.pb.go:209.2,209.44 1 0 -github.com/ultravioletrs/cocos-ai/agent/agent_grpc.pb.go:212.169,214.32 2 0 -github.com/ultravioletrs/cocos-ai/agent/agent_grpc.pb.go:214.32,216.3 1 0 -github.com/ultravioletrs/cocos-ai/agent/agent_grpc.pb.go:217.2,217.24 1 0 -github.com/ultravioletrs/cocos-ai/agent/agent_grpc.pb.go:217.24,219.3 1 0 -github.com/ultravioletrs/cocos-ai/agent/agent_grpc.pb.go:220.2,224.77 2 0 -github.com/ultravioletrs/cocos-ai/agent/agent_grpc.pb.go:224.77,226.3 1 0 -github.com/ultravioletrs/cocos-ai/agent/agent_grpc.pb.go:227.2,227.44 1 0 -github.com/ultravioletrs/cocos-ai/agent/computations.go:37.51,39.39 2 0 -github.com/ultravioletrs/cocos-ai/agent/computations.go:39.39,42.18 3 0 -github.com/ultravioletrs/cocos-ai/agent/computations.go:42.18,43.27 1 0 -github.com/ultravioletrs/cocos-ai/agent/computations.go:43.27,45.5 1 0 -github.com/ultravioletrs/cocos-ai/agent/computations.go:48.2,48.11 1 0 -github.com/ultravioletrs/cocos-ai/agent/service.go:73.61,81.2 5 0 -github.com/ultravioletrs/cocos-ai/agent/service.go:83.83,85.16 2 0 -github.com/ultravioletrs/cocos-ai/agent/service.go:85.16,87.3 1 0 -github.com/ultravioletrs/cocos-ai/agent/service.go:89.2,96.21 5 0 -github.com/ultravioletrs/cocos-ai/agent/service.go:99.88,100.41 1 0 -github.com/ultravioletrs/cocos-ai/agent/service.go:100.41,102.3 1 0 -github.com/ultravioletrs/cocos-ai/agent/service.go:103.2,104.15 2 0 -github.com/ultravioletrs/cocos-ai/agent/service.go:105.10,106.36 1 0 -github.com/ultravioletrs/cocos-ai/agent/service.go:107.10,108.70 1 0 -github.com/ultravioletrs/cocos-ai/agent/service.go:108.70,110.4 1 0 -github.com/ultravioletrs/cocos-ai/agent/service.go:111.3,111.87 1 0 -github.com/ultravioletrs/cocos-ai/agent/service.go:114.2,116.41 2 0 -github.com/ultravioletrs/cocos-ai/agent/service.go:116.41,118.3 1 0 -github.com/ultravioletrs/cocos-ai/agent/service.go:121.2,125.27 3 0 -github.com/ultravioletrs/cocos-ai/agent/service.go:128.84,129.39 1 0 -github.com/ultravioletrs/cocos-ai/agent/service.go:129.39,131.3 1 0 -github.com/ultravioletrs/cocos-ai/agent/service.go:132.2,133.15 2 0 -github.com/ultravioletrs/cocos-ai/agent/service.go:134.10,135.34 1 0 -github.com/ultravioletrs/cocos-ai/agent/service.go:136.10,137.66 1 0 -github.com/ultravioletrs/cocos-ai/agent/service.go:137.66,139.4 1 0 -github.com/ultravioletrs/cocos-ai/agent/service.go:140.3,140.83 1 0 -github.com/ultravioletrs/cocos-ai/agent/service.go:143.2,145.39 2 0 -github.com/ultravioletrs/cocos-ai/agent/service.go:145.39,147.3 1 0 -github.com/ultravioletrs/cocos-ai/agent/service.go:150.2,154.25 3 0 -github.com/ultravioletrs/cocos-ai/agent/service.go:157.86,158.46 1 0 -github.com/ultravioletrs/cocos-ai/agent/service.go:158.46,160.3 1 0 -github.com/ultravioletrs/cocos-ai/agent/service.go:161.2,162.15 2 0 -github.com/ultravioletrs/cocos-ai/agent/service.go:163.10,164.41 1 0 -github.com/ultravioletrs/cocos-ai/agent/service.go:165.10,166.97 1 0 -github.com/ultravioletrs/cocos-ai/agent/service.go:169.2,169.33 1 0 -github.com/ultravioletrs/cocos-ai/agent/service.go:169.33,171.3 1 0 -github.com/ultravioletrs/cocos-ai/agent/service.go:173.2,173.46 1 0 -github.com/ultravioletrs/cocos-ai/agent/service.go:173.46,175.3 1 0 -github.com/ultravioletrs/cocos-ai/agent/service.go:177.2,177.31 1 0 -github.com/ultravioletrs/cocos-ai/agent/service.go:180.74,182.2 1 0 -github.com/ultravioletrs/cocos-ai/agent/service.go:184.42,187.16 3 0 -github.com/ultravioletrs/cocos-ai/agent/service.go:187.16,190.3 2 0 -github.com/ultravioletrs/cocos-ai/agent/service.go:191.2,191.20 1 0 -github.com/ultravioletrs/cocos-ai/agent/service.go:194.66,196.16 2 0 -github.com/ultravioletrs/cocos-ai/agent/service.go:196.16,198.3 1 0 -github.com/ultravioletrs/cocos-ai/agent/service.go:199.2,211.36 8 0 -github.com/ultravioletrs/cocos-ai/agent/service.go:211.36,213.3 1 0 -github.com/ultravioletrs/cocos-ai/agent/service.go:215.2,216.9 2 0 -github.com/ultravioletrs/cocos-ai/agent/service.go:217.30,217.30 0 0 -github.com/ultravioletrs/cocos-ai/agent/service.go:218.28,219.58 1 0 -github.com/ultravioletrs/cocos-ai/agent/service.go:222.2,222.35 1 0 -github.com/ultravioletrs/cocos-ai/agent/service.go:222.35,224.3 1 0 -github.com/ultravioletrs/cocos-ai/agent/service.go:226.2,226.20 1 0 -github.com/ultravioletrs/cocos-ai/agent/state.go:47.58,75.2 14 7 -github.com/ultravioletrs/cocos-ai/agent/state.go:78.52,79.6 1 7 -github.com/ultravioletrs/cocos-ai/agent/state.go:79.6,80.10 1 24 -github.com/ultravioletrs/cocos-ai/agent/state.go:81.32,83.13 2 17 -github.com/ultravioletrs/cocos-ai/agent/state.go:83.13,88.5 4 6 -github.com/ultravioletrs/cocos-ai/agent/state.go:88.10,90.5 1 11 -github.com/ultravioletrs/cocos-ai/agent/state.go:92.4,93.14 2 17 -github.com/ultravioletrs/cocos-ai/agent/state.go:93.14,95.5 1 0 -github.com/ultravioletrs/cocos-ai/agent/state.go:96.21,97.10 1 7 -github.com/ultravioletrs/cocos-ai/agent/state.go:103.48,105.2 1 7 -github.com/ultravioletrs/cocos-ai/agent/state.go:107.42,112.2 4 6 -github.com/ultravioletrs/cocos-ai/pkg/socket/socket.go:12.69,18.16 3 0 -github.com/ultravioletrs/cocos-ai/pkg/socket/socket.go:18.16,20.3 1 0 -github.com/ultravioletrs/cocos-ai/pkg/socket/socket.go:22.2,24.22 2 0 -github.com/ultravioletrs/cocos-ai/pkg/socket/socket.go:27.96,29.16 2 0 -github.com/ultravioletrs/cocos-ai/pkg/socket/socket.go:29.16,31.3 1 0 -github.com/ultravioletrs/cocos-ai/pkg/socket/socket.go:33.2,33.51 1 0 -github.com/ultravioletrs/cocos-ai/pkg/socket/socket.go:36.88,43.6 4 0 -github.com/ultravioletrs/cocos-ai/pkg/socket/socket.go:43.6,46.17 2 0 -github.com/ultravioletrs/cocos-ai/pkg/socket/socket.go:46.17,47.21 1 0 -github.com/ultravioletrs/cocos-ai/pkg/socket/socket.go:47.21,48.10 1 0 -github.com/ultravioletrs/cocos-ai/pkg/socket/socket.go:50.4,50.23 1 0 -github.com/ultravioletrs/cocos-ai/pkg/socket/socket.go:52.3,52.38 1 0 -github.com/ultravioletrs/cocos-ai/pkg/socket/socket.go:55.2,55.23 1 0