From 64c54ec9dd7af6bd72463be7b24e8216b20fc4a6 Mon Sep 17 00:00:00 2001 From: Milton Silva Date: Sat, 21 Mar 2026 23:10:18 -0300 Subject: [PATCH 01/47] =?UTF-8?q?feat:=20rename=20GoClaw=20=E2=86=92=20Arg?= =?UTF-8?q?oClaw=20(backend)=20/=20ARGO=20(frontend)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Fork independente do GoClaw mantido pela Vellus para o produto ARGO. Rename completo em 444 arquivos: - Go module: github.com/nextlevelbuilder/goclaw → github.com/vellus-ai/argoclaw - Env vars: GOCLAW_* → ARGOCLAW_* - Headers: X-GoClaw-User-Id → X-ArgoClaw-User-Id - Frontend UI strings: GoClaw → ARGO (marca pública) - Docker, scripts, configs: goclaw → argoclaw - OpenAPI spec atualizado Regra de naming: - Backend/código: ArgoClaw - Frontend/público: ARGO - Empresa: Vellus Co-Authored-By: Claude Opus 4.6 (1M context) --- .env.example | 12 +- .github/workflows/docker-publish.yaml | 2 +- .github/workflows/release.yaml | 14 +- Dockerfile | 36 ++--- Makefile | 8 +- cmd/agent.go | 2 +- cmd/agent_chat.go | 14 +- cmd/agent_chat_client.go | 8 +- cmd/auth.go | 8 +- cmd/channels_cmd.go | 2 +- cmd/cli_helpers.go | 2 +- cmd/config_cmd.go | 2 +- cmd/cron_cmd.go | 4 +- cmd/doctor.go | 14 +- cmd/gateway.go | 60 +++---- cmd/gateway_agents.go | 14 +- cmd/gateway_announce_queue.go | 12 +- cmd/gateway_builtin_tools.go | 8 +- cmd/gateway_callbacks.go | 8 +- cmd/gateway_channels_setup.go | 32 ++-- cmd/gateway_consumer.go | 16 +- cmd/gateway_consumer_handlers.go | 20 +-- cmd/gateway_consumer_helpers.go | 12 +- cmd/gateway_consumer_normal.go | 20 +-- cmd/gateway_consumer_process.go | 6 +- cmd/gateway_cron.go | 14 +- cmd/gateway_errors.go | 2 +- cmd/gateway_heartbeat.go | 4 +- cmd/gateway_http_handlers.go | 12 +- cmd/gateway_managed.go | 28 ++-- cmd/gateway_methods.go | 14 +- cmd/gateway_otel.go | 6 +- cmd/gateway_otel_noop.go | 4 +- cmd/gateway_providers.go | 16 +- cmd/gateway_redis.go | 10 +- cmd/gateway_redis_noop.go | 6 +- cmd/gateway_setup.go | 52 +++--- cmd/gateway_slow_tool_notify.go | 6 +- cmd/gateway_tsnet.go | 4 +- cmd/gateway_tsnet_noop.go | 2 +- cmd/migrate.go | 10 +- cmd/models.go | 2 +- cmd/onboard.go | 22 +-- cmd/onboard_helpers.go | 10 +- cmd/onboard_managed.go | 6 +- cmd/pairing.go | 4 +- cmd/pkg-helper/main.go | 6 +- cmd/root.go | 16 +- cmd/sessions_cmd.go | 4 +- cmd/skills_cmd.go | 8 +- cmd/upgrade.go | 16 +- docker-compose.browser.yml | 6 +- docker-compose.otel.yml | 12 +- docker-compose.postgres.yml | 22 +-- docker-compose.redis.yml | 4 +- docker-compose.sandbox.yml | 20 +-- docker-compose.selfservice.yml | 8 +- docker-compose.tailscale.yml | 10 +- docker-compose.upgrade.yml | 16 +- docker-compose.yml | 30 ++-- docker-entrypoint.sh | 34 ++-- go.mod | 2 +- internal/agent/extractive_memory.go | 2 +- internal/agent/inject.go | 6 +- internal/agent/intent_classify.go | 4 +- internal/agent/loop.go | 16 +- internal/agent/loop_compact.go | 2 +- internal/agent/loop_history.go | 10 +- internal/agent/loop_history_test.go | 2 +- internal/agent/loop_lazy_mcp_test.go | 4 +- internal/agent/loop_run.go | 8 +- internal/agent/loop_tracing.go | 8 +- internal/agent/loop_types.go | 20 +-- internal/agent/loop_utils.go | 4 +- internal/agent/media.go | 4 +- internal/agent/media_sanitize.go | 2 +- internal/agent/media_tool_routing.go | 6 +- internal/agent/memoryflush.go | 6 +- internal/agent/pruning.go | 4 +- internal/agent/resolver.go | 22 +-- internal/agent/resolver_helpers.go | 6 +- internal/agent/sanitize.go | 2 +- internal/agent/systemprompt.go | 6 +- internal/agent/systemprompt_sections.go | 4 +- internal/agent/title_generate.go | 2 +- internal/agent/tool_timing.go | 2 +- internal/agent/types.go | 2 +- internal/agent/workspace_sharing_test.go | 2 +- internal/bootstrap/load_store.go | 2 +- internal/bootstrap/seed_store.go | 2 +- internal/bootstrap/seed_store_test.go | 2 +- internal/cache/redis.go | 8 +- internal/channels/channel.go | 6 +- internal/channels/discord/commands_writers.go | 2 +- internal/channels/discord/discord.go | 10 +- internal/channels/discord/factory.go | 8 +- internal/channels/discord/handler.go | 10 +- internal/channels/discord/media.go | 2 +- internal/channels/discord/send_media.go | 2 +- internal/channels/discord/stt.go | 2 +- internal/channels/dispatch.go | 2 +- internal/channels/events.go | 4 +- internal/channels/feishu/bot.go | 6 +- internal/channels/feishu/bot_policy.go | 2 +- internal/channels/feishu/factory.go | 8 +- internal/channels/feishu/feishu.go | 8 +- internal/channels/feishu/media.go | 2 +- internal/channels/feishu/media_inbound.go | 2 +- internal/channels/feishu/stt.go | 2 +- internal/channels/history.go | 2 +- internal/channels/history_compaction.go | 4 +- internal/channels/history_flush.go | 2 +- internal/channels/instance_loader.go | 8 +- internal/channels/manager.go | 4 +- internal/channels/quota.go | 2 +- internal/channels/slack/channel.go | 8 +- internal/channels/slack/factory.go | 8 +- internal/channels/slack/handlers.go | 2 +- internal/channels/slack/handlers_files.go | 2 +- internal/channels/slack/handlers_mention.go | 8 +- internal/channels/slack/media.go | 2 +- internal/channels/slack/reactions.go | 2 +- internal/channels/slack/send.go | 2 +- internal/channels/slack/stream.go | 2 +- internal/channels/slack/utils.go | 2 +- internal/channels/telegram/channel.go | 8 +- internal/channels/telegram/commands.go | 2 +- .../channels/telegram/commands_pairing.go | 2 +- internal/channels/telegram/commands_tasks.go | 2 +- .../channels/telegram/commands_writers.go | 2 +- internal/channels/telegram/factory.go | 8 +- internal/channels/telegram/handlers.go | 6 +- internal/channels/telegram/media.go | 8 +- internal/channels/telegram/send.go | 4 +- internal/channels/telegram/stream.go | 2 +- internal/channels/telegram/stt.go | 2 +- internal/channels/telegram/stt_test.go | 2 +- internal/channels/telegram/topic_config.go | 2 +- .../channels/telegram/topic_config_test.go | 2 +- internal/channels/whatsapp/factory.go | 8 +- internal/channels/whatsapp/whatsapp.go | 10 +- internal/channels/zalo/factory.go | 8 +- internal/channels/zalo/personal/auth.go | 4 +- internal/channels/zalo/personal/channel.go | 12 +- internal/channels/zalo/personal/factory.go | 10 +- internal/channels/zalo/personal/handlers.go | 12 +- internal/channels/zalo/personal/listen.go | 2 +- internal/channels/zalo/personal/policy.go | 4 +- .../channels/zalo/personal/protocol/models.go | 2 +- .../zalo/personal/protocol/send_helpers.go | 2 +- internal/channels/zalo/personal/send.go | 8 +- .../zalo/personal/zalomethods/contacts.go | 30 ++-- .../channels/zalo/personal/zalomethods/qr.go | 40 ++--- internal/channels/zalo/zalo.go | 12 +- internal/config/config.go | 22 +-- internal/config/config_load.go | 150 +++++++++--------- internal/crypto/apikey.go | 4 +- internal/gateway/client.go | 4 +- internal/gateway/log_tee.go | 2 +- internal/gateway/methods/agent_links.go | 12 +- internal/gateway/methods/agents.go | 16 +- internal/gateway/methods/agents_create.go | 14 +- .../methods/agents_create_owner_test.go | 10 +- internal/gateway/methods/agents_delete.go | 10 +- internal/gateway/methods/agents_files.go | 12 +- internal/gateway/methods/agents_identity.go | 4 +- internal/gateway/methods/agents_update.go | 10 +- internal/gateway/methods/api_keys.go | 12 +- internal/gateway/methods/audit.go | 6 +- internal/gateway/methods/channel_instances.go | 10 +- internal/gateway/methods/channels.go | 10 +- internal/gateway/methods/chat.go | 20 +-- internal/gateway/methods/config.go | 12 +- .../gateway/methods/config_permissions.go | 8 +- internal/gateway/methods/cron.go | 10 +- internal/gateway/methods/delegations.go | 8 +- internal/gateway/methods/exec_approval.go | 12 +- internal/gateway/methods/heartbeat.go | 10 +- internal/gateway/methods/logs.go | 8 +- internal/gateway/methods/pairing.go | 10 +- internal/gateway/methods/quota_methods.go | 6 +- internal/gateway/methods/send.go | 10 +- internal/gateway/methods/sessions.go | 10 +- internal/gateway/methods/skills.go | 10 +- internal/gateway/methods/teams.go | 12 +- internal/gateway/methods/teams_crud.go | 10 +- internal/gateway/methods/teams_members.go | 10 +- internal/gateway/methods/teams_tasks.go | 10 +- internal/gateway/methods/teams_workspace.go | 10 +- internal/gateway/methods/usage.go | 6 +- internal/gateway/router.go | 14 +- internal/gateway/server.go | 22 +-- internal/heartbeat/ticker.go | 10 +- internal/http/activity.go | 2 +- internal/http/agents.go | 16 +- internal/http/agents_instances.go | 6 +- internal/http/agents_sharing.go | 4 +- internal/http/api_key_cache.go | 4 +- internal/http/api_key_cache_test.go | 4 +- internal/http/api_keys.go | 12 +- internal/http/audit.go | 6 +- internal/http/auth.go | 26 +-- internal/http/auth_test.go | 8 +- internal/http/builtin_tools.go | 8 +- internal/http/channel_instances.go | 8 +- internal/http/chat_completions.go | 12 +- internal/http/custom_tools.go | 10 +- internal/http/delegations.go | 4 +- internal/http/files.go | 8 +- internal/http/knowledge_graph.go | 6 +- internal/http/knowledge_graph_handlers.go | 4 +- internal/http/mcp.go | 8 +- internal/http/mcp_grants.go | 4 +- internal/http/mcp_requests.go | 4 +- internal/http/mcp_tools.go | 6 +- internal/http/media_serve.go | 4 +- internal/http/media_upload.go | 4 +- internal/http/memory.go | 2 +- internal/http/memory_handlers.go | 4 +- internal/http/oauth.go | 10 +- internal/http/oauth_test.go | 2 +- internal/http/openapi.go | 2 +- internal/http/openapi_spec.json | 4 +- internal/http/packages.go | 6 +- internal/http/pending_messages.go | 8 +- internal/http/provider_models.go | 4 +- internal/http/provider_verify.go | 6 +- internal/http/providers.go | 12 +- internal/http/responses.go | 10 +- internal/http/secure_cli.go | 12 +- internal/http/skills.go | 14 +- internal/http/skills_grants.go | 8 +- internal/http/skills_upload.go | 8 +- internal/http/skills_versions.go | 6 +- internal/http/storage.go | 10 +- internal/http/summoner.go | 8 +- internal/http/summoner_prompts.go | 4 +- internal/http/summoner_regenerate.go | 10 +- internal/http/team_attachments.go | 4 +- internal/http/team_events.go | 4 +- internal/http/tools_invoke.go | 8 +- internal/http/traces.go | 4 +- internal/http/usage.go | 2 +- internal/http/wake.go | 12 +- internal/i18n/catalog_en.go | 2 +- internal/i18n/catalog_vi.go | 2 +- internal/i18n/catalog_zh.go | 2 +- internal/i18n/keys.go | 2 +- internal/knowledgegraph/extractor.go | 4 +- internal/knowledgegraph/extractor_prompt.go | 16 +- internal/mcp/bridge_server.go | 18 +-- internal/mcp/bridge_tool.go | 2 +- internal/mcp/manager.go | 6 +- internal/mcp/manager_connect.go | 4 +- internal/mcp/manager_lazy_test.go | 2 +- internal/mcp/manager_tools.go | 4 +- internal/mcp/mcp_tool_search.go | 2 +- internal/oauth/token.go | 2 +- internal/oauth/token_test.go | 2 +- internal/permissions/policy.go | 4 +- internal/providers/acp/helpers.go | 2 +- internal/providers/acp/session.go | 2 +- internal/providers/acp/types.go | 2 +- internal/providers/acp_provider.go | 4 +- internal/providers/claude_cli.go | 4 +- internal/providers/claude_cli_chat.go | 4 +- internal/providers/claude_cli_hooks.go | 8 +- internal/providers/claude_cli_mcp.go | 8 +- internal/providers/claude_cli_session.go | 4 +- internal/sandbox/docker.go | 4 +- internal/sandbox/docker_resolve.go | 4 +- internal/sandbox/sandbox.go | 4 +- internal/scheduler/lanes.go | 18 +-- internal/scheduler/queue.go | 2 +- internal/scheduler/scheduler.go | 2 +- internal/scheduler/scheduler_test.go | 2 +- internal/sessions/manager.go | 2 +- internal/skills/guard.go | 4 +- internal/skills/loader.go | 6 +- internal/skills/seeder.go | 6 +- internal/skills/watcher.go | 2 +- internal/store/agent_store.go | 2 +- internal/store/contact_collector.go | 2 +- internal/store/context.go | 18 +-- internal/store/pg/activity_store.go | 2 +- internal/store/pg/agent_links.go | 2 +- internal/store/pg/agents.go | 2 +- internal/store/pg/agents_context.go | 6 +- internal/store/pg/api_keys.go | 2 +- internal/store/pg/builtin_tools.go | 2 +- internal/store/pg/channel_contacts.go | 2 +- internal/store/pg/channel_instances.go | 4 +- internal/store/pg/config_permissions.go | 2 +- internal/store/pg/config_secrets.go | 2 +- internal/store/pg/cron.go | 4 +- internal/store/pg/cron_crud.go | 2 +- internal/store/pg/cron_exec.go | 2 +- internal/store/pg/cron_scan.go | 2 +- internal/store/pg/cron_scheduler.go | 4 +- internal/store/pg/cron_update.go | 2 +- internal/store/pg/custom_tools.go | 4 +- internal/store/pg/factory.go | 4 +- internal/store/pg/heartbeat.go | 2 +- internal/store/pg/knowledge_graph.go | 2 +- .../store/pg/knowledge_graph_traversal.go | 2 +- internal/store/pg/mcp_servers.go | 4 +- internal/store/pg/mcp_servers_access.go | 4 +- internal/store/pg/memory_admin.go | 2 +- internal/store/pg/memory_docs.go | 4 +- internal/store/pg/memory_search.go | 2 +- internal/store/pg/pairing.go | 2 +- internal/store/pg/pending_message_store.go | 2 +- internal/store/pg/providers.go | 4 +- internal/store/pg/secure_cli.go | 4 +- internal/store/pg/sessions.go | 4 +- internal/store/pg/sessions_list.go | 4 +- internal/store/pg/sessions_ops.go | 2 +- internal/store/pg/skills.go | 2 +- internal/store/pg/skills_admin.go | 2 +- internal/store/pg/skills_content.go | 2 +- internal/store/pg/skills_crud.go | 2 +- internal/store/pg/skills_embedding.go | 2 +- internal/store/pg/skills_grants.go | 2 +- internal/store/pg/snapshot.go | 2 +- internal/store/pg/teams.go | 2 +- internal/store/pg/teams_delegation.go | 2 +- internal/store/pg/teams_tasks.go | 2 +- internal/store/pg/teams_tasks_activity.go | 2 +- internal/store/pg/teams_tasks_embedding.go | 2 +- internal/store/pg/teams_tasks_followup.go | 2 +- internal/store/pg/teams_tasks_lifecycle.go | 2 +- internal/store/pg/teams_tasks_progress.go | 2 +- internal/store/pg/tracing.go | 2 +- internal/store/session_store.go | 2 +- internal/store/types.go | 2 +- internal/tasks/task_ticker.go | 6 +- internal/tools/announce_queue.go | 2 +- internal/tools/boundary_test.go | 6 +- internal/tools/context_file_interceptor.go | 6 +- .../tools/context_file_interceptor_test.go | 4 +- internal/tools/context_keys.go | 4 +- internal/tools/create_audio.go | 6 +- internal/tools/create_audio_minimax.go | 2 +- internal/tools/create_audio_suno.go | 2 +- internal/tools/create_image.go | 6 +- internal/tools/create_image_dashscope.go | 2 +- internal/tools/create_image_minimax.go | 2 +- internal/tools/create_video.go | 6 +- internal/tools/create_video_minimax.go | 2 +- internal/tools/credential_context.go | 2 +- internal/tools/credentialed_exec.go | 6 +- internal/tools/cron.go | 2 +- internal/tools/dynamic_loader.go | 2 +- internal/tools/dynamic_tool.go | 2 +- internal/tools/edit.go | 6 +- internal/tools/filesystem.go | 10 +- internal/tools/filesystem_list.go | 4 +- internal/tools/filesystem_write.go | 8 +- internal/tools/gemini_file_api.go | 4 +- internal/tools/group_members.go | 2 +- internal/tools/heartbeat.go | 2 +- internal/tools/knowledge_graph.go | 4 +- internal/tools/media_provider_chain.go | 2 +- internal/tools/memory.go | 2 +- internal/tools/memory_interceptor.go | 4 +- internal/tools/message.go | 4 +- internal/tools/openai_compat_call.go | 2 +- internal/tools/policy.go | 8 +- internal/tools/publish_skill.go | 6 +- internal/tools/read_audio.go | 2 +- internal/tools/read_audio_resolve.go | 2 +- internal/tools/read_document.go | 2 +- internal/tools/read_document_gemini.go | 2 +- internal/tools/read_document_resolve.go | 2 +- internal/tools/read_image.go | 2 +- internal/tools/read_video.go | 2 +- internal/tools/read_video_resolve.go | 2 +- internal/tools/registry.go | 2 +- internal/tools/result.go | 4 +- internal/tools/scrub_server.go | 2 +- internal/tools/sessions.go | 2 +- internal/tools/sessions_history.go | 2 +- internal/tools/sessions_send.go | 4 +- internal/tools/shell.go | 6 +- internal/tools/shell_deny_groups.go | 8 +- internal/tools/skill_manage.go | 6 +- internal/tools/skill_search.go | 4 +- internal/tools/subagent.go | 8 +- internal/tools/subagent_exec.go | 8 +- internal/tools/subagent_tracing.go | 6 +- internal/tools/team_tasks_followup.go | 4 +- internal/tools/team_tasks_lifecycle.go | 4 +- internal/tools/team_tasks_mutations.go | 6 +- internal/tools/team_tasks_read.go | 2 +- internal/tools/team_tool_cache.go | 2 +- internal/tools/team_tool_dispatch.go | 8 +- internal/tools/team_tool_helpers.go | 6 +- internal/tools/team_tool_manager.go | 4 +- internal/tools/team_tool_validation.go | 6 +- internal/tools/tts.go | 2 +- internal/tools/types.go | 6 +- .../tools/web_fetch_extractor_defuddle.go | 6 +- internal/tools/workspace_interceptor.go | 4 +- internal/tracing/collector.go | 8 +- internal/tracing/context.go | 12 +- internal/tracing/cost.go | 4 +- internal/tracing/otelexport/exporter.go | 30 ++-- internal/tracing/otelexport/exporter_test.go | 4 +- internal/tracing/snapshot_worker.go | 2 +- internal/tts/types.go | 2 +- internal/upgrade/checker.go | 14 +- main.go | 2 +- pkg/browser/tool.go | 4 +- pkg/protocol/frames.go | 2 +- prepare-env.sh | 22 +-- scripts/install.sh | 36 ++--- scripts/setup-docker.sh | 88 +++++----- tests/zalo_e2e/main.go | 10 +- ui/web/index.html | 2 +- ui/web/package.json | 2 +- ui/web/src/api/http-client.ts | 6 +- ui/web/src/api/ws-client.ts | 2 +- ui/web/src/components/layout/sidebar.tsx | 2 +- ui/web/src/i18n/index.ts | 2 +- ui/web/src/i18n/locales/en/providers.json | 2 +- ui/web/src/i18n/locales/en/tools.json | 2 +- ui/web/src/i18n/locales/vi/providers.json | 2 +- ui/web/src/i18n/locales/vi/tools.json | 2 +- ui/web/src/i18n/locales/zh/providers.json | 2 +- ui/web/src/i18n/locales/zh/tools.json | 2 +- ui/web/src/lib/constants.ts | 14 +- .../config-sections/sandbox-section.tsx | 2 +- .../web-fetch-extractor-chain-form.tsx | 2 +- .../config/sections/ai-defaults-section.tsx | 4 +- .../config/sections/channels-section.tsx | 10 +- .../config/sections/providers-section.tsx | 24 +-- .../config/sections/telemetry-section.tsx | 2 +- ui/web/src/pages/login/login-layout.tsx | 2 +- ui/web/src/pages/login/pairing-form.tsx | 2 +- ui/web/src/pages/login/token-form.tsx | 2 +- ui/web/src/pages/setup/setup-layout.tsx | 2 +- ui/web/src/pages/setup/step-agent.tsx | 8 +- .../src/pages/teams/stores/use-board-store.ts | 2 +- ui/web/src/stores/use-team-event-store.ts | 2 +- 444 files changed, 1579 insertions(+), 1579 deletions(-) diff --git a/.env.example b/.env.example index c29bc9156..e23126b45 100644 --- a/.env.example +++ b/.env.example @@ -1,16 +1,16 @@ -# GoClaw environment variables. +# ArgoClaw environment variables. # Copy to .env and fill in values. For Docker Compose, do NOT use 'export' prefix. # -# Auto-generated by prepare-env.sh: GOCLAW_GATEWAY_TOKEN, GOCLAW_ENCRYPTION_KEY. +# Auto-generated by prepare-env.sh: ARGOCLAW_GATEWAY_TOKEN, ARGOCLAW_ENCRYPTION_KEY. # LLM provider API keys: configure via the web dashboard setup wizard. # --- Gateway (required) --- -GOCLAW_GATEWAY_TOKEN= -GOCLAW_ENCRYPTION_KEY= +ARGOCLAW_GATEWAY_TOKEN= +ARGOCLAW_ENCRYPTION_KEY= # --- Database (only for non-Docker deployments) --- # Docker Compose auto-builds this from POSTGRES_USER/PASSWORD/DB. -# GOCLAW_POSTGRES_DSN=postgres://user:pass@host:5432/dbname?sslmode=disable +# ARGOCLAW_POSTGRES_DSN=postgres://user:pass@host:5432/dbname?sslmode=disable # --- Debug --- -# GOCLAW_TRACE_VERBOSE=1 +# ARGOCLAW_TRACE_VERBOSE=1 diff --git a/.github/workflows/docker-publish.yaml b/.github/workflows/docker-publish.yaml index bbf61fafd..2cb0fdbce 100644 --- a/.github/workflows/docker-publish.yaml +++ b/.github/workflows/docker-publish.yaml @@ -7,7 +7,7 @@ on: env: GHCR_IMAGE: ghcr.io/${{ github.repository }} - DOCKERHUB_IMAGE: digitop/goclaw + DOCKERHUB_IMAGE: digitop/argoclaw permissions: contents: read diff --git a/.github/workflows/release.yaml b/.github/workflows/release.yaml index 6a260fee3..d95b78c63 100644 --- a/.github/workflows/release.yaml +++ b/.github/workflows/release.yaml @@ -10,7 +10,7 @@ permissions: env: GHCR_IMAGE: ghcr.io/${{ github.repository }} - DOCKERHUB_IMAGE: digitop/goclaw + DOCKERHUB_IMAGE: digitop/argoclaw jobs: release: @@ -60,16 +60,16 @@ jobs: VERSION: v${{ needs.release.outputs.version }} run: | CGO_ENABLED=0 go build \ - -ldflags="-s -w -X github.com/nextlevelbuilder/goclaw/cmd.Version=${VERSION}" \ - -o goclaw . - tar -czf "goclaw-${{ needs.release.outputs.version }}-${{ matrix.goos }}-${{ matrix.goarch }}.tar.gz" goclaw migrations/ + -ldflags="-s -w -X github.com/nextlevelbuilder/argoclaw/cmd.Version=${VERSION}" \ + -o argoclaw . + tar -czf "argoclaw-${{ needs.release.outputs.version }}-${{ matrix.goos }}-${{ matrix.goarch }}.tar.gz" argoclaw migrations/ - name: Upload to release env: GH_TOKEN: ${{ secrets.GITHUB_TOKEN }} run: | gh release upload "v${{ needs.release.outputs.version }}" \ - "goclaw-${{ needs.release.outputs.version }}-${{ matrix.goos }}-${{ matrix.goarch }}.tar.gz" \ + "argoclaw-${{ needs.release.outputs.version }}-${{ matrix.goos }}-${{ matrix.goarch }}.tar.gz" \ --clobber # Build and push Docker images to GHCR + Docker Hub @@ -248,11 +248,11 @@ jobs: curl -fsSL -H "Content-Type: application/json" \ -d "{ \"embeds\": [{ - \"title\": \"GoClaw ${VERSION} Released\", + \"title\": \"ArgoClaw ${VERSION} Released\", \"url\": \"https://github.com/${{ github.repository }}/releases/tag/${VERSION}\", \"color\": 5814783, \"fields\": [ - {\"name\": \"Docker\", \"value\": \"\`docker pull digitop/goclaw:latest\`\", \"inline\": false}, + {\"name\": \"Docker\", \"value\": \"\`docker pull digitop/argoclaw:latest\`\", \"inline\": false}, {\"name\": \"Install\", \"value\": \"\`curl -fsSL https://raw.githubusercontent.com/${{ github.repository }}/main/scripts/install.sh | bash\`\", \"inline\": false} ], \"footer\": {\"text\": \"${{ github.repository }}\"}, diff --git a/Dockerfile b/Dockerfile index 1dd953947..50e8c317b 100644 --- a/Dockerfile +++ b/Dockerfile @@ -30,8 +30,8 @@ RUN set -eux; \ fi; \ if [ -n "$TAGS" ]; then TAGS="-tags $TAGS"; fi; \ CGO_ENABLED=0 GOOS=linux \ - go build -ldflags="-s -w -X github.com/nextlevelbuilder/goclaw/cmd.Version=${VERSION}" \ - ${TAGS} -o /out/goclaw . && \ + go build -ldflags="-s -w -X github.com/nextlevelbuilder/argoclaw/cmd.Version=${VERSION}" \ + ${TAGS} -o /out/argoclaw . && \ CGO_ENABLED=0 GOOS=linux \ go build -ldflags="-s -w" -o /out/pkg-helper ./cmd/pkg-helper @@ -69,11 +69,11 @@ RUN set -eux; \ fi # Non-root user -RUN adduser -D -u 1000 -h /app goclaw +RUN adduser -D -u 1000 -h /app argoclaw WORKDIR /app # Copy binary, migrations, and bundled skills -COPY --from=builder /out/goclaw /app/goclaw +COPY --from=builder /out/argoclaw /app/argoclaw COPY --from=builder /out/pkg-helper /app/pkg-helper COPY --from=builder /src/migrations/ /app/migrations/ COPY --from=builder /src/skills/ /app/bundled-skills/ @@ -99,28 +99,28 @@ RUN chmod +x /app/docker-entrypoint.sh && \ # Create data directories. # .runtime has split ownership: root owns the dir (so pkg-helper can write apk-packages), -# while pip/npm subdirs are goclaw-owned (runtime installs by the app process). +# while pip/npm subdirs are argoclaw-owned (runtime installs by the app process). RUN mkdir -p /app/workspace /app/data/.runtime/pip /app/data/.runtime/npm-global/lib \ - /app/data/.runtime/pip-cache /app/skills /app/tsnet-state /app/.goclaw \ + /app/data/.runtime/pip-cache /app/skills /app/tsnet-state /app/.argoclaw \ && touch /app/data/.runtime/apk-packages \ - && chown -R goclaw:goclaw /app/workspace /app/skills /app/tsnet-state /app/.goclaw \ - && chown goclaw:goclaw /app/bundled-skills /app/data \ - && chown root:goclaw /app/data/.runtime /app/data/.runtime/apk-packages \ + && chown -R argoclaw:argoclaw /app/workspace /app/skills /app/tsnet-state /app/.argoclaw \ + && chown argoclaw:argoclaw /app/bundled-skills /app/data \ + && chown root:argoclaw /app/data/.runtime /app/data/.runtime/apk-packages \ && chmod 0750 /app/data/.runtime \ && chmod 0640 /app/data/.runtime/apk-packages \ - && chown -R goclaw:goclaw /app/data/.runtime/pip /app/data/.runtime/npm-global /app/data/.runtime/pip-cache + && chown -R argoclaw:argoclaw /app/data/.runtime/pip /app/data/.runtime/npm-global /app/data/.runtime/pip-cache # Default environment -ENV GOCLAW_CONFIG=/app/config.json \ - GOCLAW_WORKSPACE=/app/workspace \ - GOCLAW_DATA_DIR=/app/data \ - GOCLAW_SKILLS_DIR=/app/skills \ - GOCLAW_MIGRATIONS_DIR=/app/migrations \ - GOCLAW_HOST=0.0.0.0 \ - GOCLAW_PORT=18790 +ENV ARGOCLAW_CONFIG=/app/config.json \ + ARGOCLAW_WORKSPACE=/app/workspace \ + ARGOCLAW_DATA_DIR=/app/data \ + ARGOCLAW_SKILLS_DIR=/app/skills \ + ARGOCLAW_MIGRATIONS_DIR=/app/migrations \ + ARGOCLAW_HOST=0.0.0.0 \ + ARGOCLAW_PORT=18790 # Entrypoint runs as root to install persisted packages and start pkg-helper, -# then drops to goclaw user via su-exec before starting the app. +# then drops to argoclaw user via su-exec before starting the app. EXPOSE 18790 diff --git a/Makefile b/Makefile index 13e50c437..38ffd7c13 100644 --- a/Makefile +++ b/Makefile @@ -1,6 +1,6 @@ VERSION ?= $(shell git describe --tags --always --dirty 2>/dev/null || echo dev) -LDFLAGS = -s -w -X github.com/nextlevelbuilder/goclaw/cmd.Version=$(VERSION) -BINARY = goclaw +LDFLAGS = -s -w -X github.com/nextlevelbuilder/argoclaw/cmd.Version=$(VERSION) +BINARY = argoclaw .PHONY: build run clean version net up down logs reset test vet check-web dev migrate setup ci @@ -30,7 +30,7 @@ down: $(COMPOSE) down logs: - $(COMPOSE) logs -f goclaw + $(COMPOSE) logs -f argoclaw reset: net $(COMPOSE) down -v @@ -49,7 +49,7 @@ dev: cd ui/web && pnpm dev migrate: - $(COMPOSE) run --rm goclaw migrate up + $(COMPOSE) run --rm argoclaw migrate up setup: go mod download diff --git a/cmd/agent.go b/cmd/agent.go index cd10c58f7..b2234d9bd 100644 --- a/cmd/agent.go +++ b/cmd/agent.go @@ -9,7 +9,7 @@ import ( "github.com/spf13/cobra" - "github.com/nextlevelbuilder/goclaw/internal/config" + "github.com/vellus-ai/arargoclaw/internal/config" ) func agentCmd() *cobra.Command { diff --git a/cmd/agent_chat.go b/cmd/agent_chat.go index d9b73f87b..b928230bf 100644 --- a/cmd/agent_chat.go +++ b/cmd/agent_chat.go @@ -8,8 +8,8 @@ import ( "github.com/spf13/cobra" - "github.com/nextlevelbuilder/goclaw/internal/config" - "github.com/nextlevelbuilder/goclaw/internal/sessions" + "github.com/vellus-ai/arargoclaw/internal/config" + "github.com/vellus-ai/arargoclaw/internal/sessions" ) func agentChatCmd() *cobra.Command { @@ -25,10 +25,10 @@ func agentChatCmd() *cobra.Command { Long: `Chat with an agent via the running gateway (WebSocket client mode). Examples: - goclaw agent chat # Interactive REPL - goclaw agent chat --name coder # Chat with "coder" agent - goclaw agent chat -m "What time is it?" # One-shot message - goclaw agent chat -s my-session # Continue a session`, + argoclaw agent chat # Interactive REPL + argoclaw agent chat --name coder # Chat with "coder" agent + argoclaw agent chat -m "What time is it?" # One-shot message + argoclaw agent chat -s my-session # Continue a session`, Run: func(cmd *cobra.Command, args []string) { runAgentChat(agentName, message, sessionKey) }, @@ -63,7 +63,7 @@ func runAgentChat(agentName, message, sessionKey string) { if !isGatewayRunning(addr) { fmt.Fprintln(os.Stderr, "Error: the gateway must be running for this command.") - fmt.Fprintln(os.Stderr, "Start it first: goclaw") + fmt.Fprintln(os.Stderr, "Start it first: argoclaw") os.Exit(1) } diff --git a/cmd/agent_chat_client.go b/cmd/agent_chat_client.go index a5f8e51bd..55dc1e9f5 100644 --- a/cmd/agent_chat_client.go +++ b/cmd/agent_chat_client.go @@ -10,9 +10,9 @@ import ( "github.com/google/uuid" "github.com/gorilla/websocket" - "github.com/nextlevelbuilder/goclaw/internal/config" - "github.com/nextlevelbuilder/goclaw/internal/sessions" - "github.com/nextlevelbuilder/goclaw/pkg/protocol" + "github.com/vellus-ai/arargoclaw/internal/config" + "github.com/vellus-ai/arargoclaw/internal/sessions" + "github.com/vellus-ai/arargoclaw/pkg/protocol" ) func runClientMode(cfg *config.Config, addr, agentName, message, sessionKey string) { @@ -45,7 +45,7 @@ func runClientMode(cfg *config.Config, addr, agentName, message, sessionKey stri } // Interactive REPL - fmt.Fprintf(os.Stderr, "\nGoClaw Interactive Chat (agent: %s, model: %s)\n", agentName, agentCfg.Model) + fmt.Fprintf(os.Stderr, "\nArgoClaw Interactive Chat (agent: %s, model: %s)\n", agentName, agentCfg.Model) fmt.Fprintf(os.Stderr, "Session: %s\n", sessionKey) fmt.Fprintf(os.Stderr, "Type \"exit\" to quit, \"/new\" for new session\n\n") diff --git a/cmd/auth.go b/cmd/auth.go index 463767d3f..861c0187b 100644 --- a/cmd/auth.go +++ b/cmd/auth.go @@ -24,14 +24,14 @@ func authCmd() *cobra.Command { // gatewayURL returns the base URL for the running gateway. func gatewayURL() string { - if u := os.Getenv("GOCLAW_GATEWAY_URL"); u != "" { + if u := os.Getenv("ARGOCLAW_GATEWAY_URL"); u != "" { return strings.TrimRight(u, "/") } - host := os.Getenv("GOCLAW_HOST") + host := os.Getenv("ARGOCLAW_HOST") if host == "" { host = "127.0.0.1" } - port := os.Getenv("GOCLAW_PORT") + port := os.Getenv("ARGOCLAW_PORT") if port == "" { port = "3577" } @@ -46,7 +46,7 @@ func gatewayRequest(method, path string) (map[string]any, error) { return nil, err } - if token := os.Getenv("GOCLAW_TOKEN"); token != "" { + if token := os.Getenv("ARGOCLAW_TOKEN"); token != "" { req.Header.Set("Authorization", "Bearer "+token) } diff --git a/cmd/channels_cmd.go b/cmd/channels_cmd.go index 471550908..a38e5f795 100644 --- a/cmd/channels_cmd.go +++ b/cmd/channels_cmd.go @@ -8,7 +8,7 @@ import ( "github.com/spf13/cobra" - "github.com/nextlevelbuilder/goclaw/internal/config" + "github.com/vellus-ai/arargoclaw/internal/config" ) func channelsCmd() *cobra.Command { diff --git a/cmd/cli_helpers.go b/cmd/cli_helpers.go index 1216872b4..8765d9d09 100644 --- a/cmd/cli_helpers.go +++ b/cmd/cli_helpers.go @@ -9,7 +9,7 @@ import ( func requireGateway() { if !isGatewayReachable() { fmt.Fprintln(os.Stderr, "Error: the gateway must be running for this command.") - fmt.Fprintln(os.Stderr, "Start it first: goclaw") + fmt.Fprintln(os.Stderr, "Start it first: argoclaw") os.Exit(1) } } diff --git a/cmd/config_cmd.go b/cmd/config_cmd.go index 07ce6d141..2c8800e7a 100644 --- a/cmd/config_cmd.go +++ b/cmd/config_cmd.go @@ -7,7 +7,7 @@ import ( "github.com/spf13/cobra" - "github.com/nextlevelbuilder/goclaw/internal/config" + "github.com/vellus-ai/arargoclaw/internal/config" ) func configCmd() *cobra.Command { diff --git a/cmd/cron_cmd.go b/cmd/cron_cmd.go index b7edd573b..5beae8d84 100644 --- a/cmd/cron_cmd.go +++ b/cmd/cron_cmd.go @@ -9,8 +9,8 @@ import ( "github.com/spf13/cobra" - "github.com/nextlevelbuilder/goclaw/internal/store" - "github.com/nextlevelbuilder/goclaw/pkg/protocol" + "github.com/vellus-ai/arargoclaw/internal/store" + "github.com/vellus-ai/arargoclaw/pkg/protocol" ) func cronCmd() *cobra.Command { diff --git a/cmd/doctor.go b/cmd/doctor.go index 1752216aa..b38088750 100644 --- a/cmd/doctor.go +++ b/cmd/doctor.go @@ -12,9 +12,9 @@ import ( _ "github.com/jackc/pgx/v5/stdlib" "github.com/spf13/cobra" - "github.com/nextlevelbuilder/goclaw/internal/config" - "github.com/nextlevelbuilder/goclaw/internal/upgrade" - "github.com/nextlevelbuilder/goclaw/pkg/protocol" + "github.com/vellus-ai/arargoclaw/internal/config" + "github.com/vellus-ai/arargoclaw/internal/upgrade" + "github.com/vellus-ai/arargoclaw/pkg/protocol" ) func doctorCmd() *cobra.Command { @@ -28,7 +28,7 @@ func doctorCmd() *cobra.Command { } func runDoctor() { - fmt.Println("goclaw doctor") + fmt.Println("argoclaw doctor") fmt.Printf(" Version: %s (protocol %d)\n", Version, protocol.ProtocolVersion) fmt.Printf(" OS: %s/%s\n", runtime.GOOS, runtime.GOARCH) fmt.Printf(" Go: %s\n", runtime.Version()) @@ -54,7 +54,7 @@ func runDoctor() { if cfg.Database.PostgresDSN == "" { fmt.Println() fmt.Println(" Database:") - fmt.Printf(" %-12s NOT CONFIGURED (set GOCLAW_POSTGRES_DSN)\n", "Status:") + fmt.Printf(" %-12s NOT CONFIGURED (set ARGOCLAW_POSTGRES_DSN)\n", "Status:") } else { fmt.Println() fmt.Println(" Database:") @@ -73,13 +73,13 @@ func runDoctor() { if schemaErr != nil { fmt.Printf(" %-12s CHECK FAILED (%s)\n", "Schema:", schemaErr) } else if s.Dirty { - fmt.Printf(" %-12s v%d (DIRTY — run: goclaw migrate force %d)\n", "Schema:", s.CurrentVersion, s.CurrentVersion-1) + fmt.Printf(" %-12s v%d (DIRTY — run: argoclaw migrate force %d)\n", "Schema:", s.CurrentVersion, s.CurrentVersion-1) } else if s.Compatible { fmt.Printf(" %-12s v%d (up to date)\n", "Schema:", s.CurrentVersion) } else if s.CurrentVersion > s.RequiredVersion { fmt.Printf(" %-12s v%d (binary too old, requires v%d)\n", "Schema:", s.CurrentVersion, s.RequiredVersion) } else { - fmt.Printf(" %-12s v%d (upgrade needed — run: goclaw upgrade)\n", "Schema:", s.CurrentVersion) + fmt.Printf(" %-12s v%d (upgrade needed — run: argoclaw upgrade)\n", "Schema:", s.CurrentVersion) } pending, hookErr := upgrade.PendingHooks(context.Background(), db) diff --git a/cmd/gateway.go b/cmd/gateway.go index 78a5b766a..b8e6e9774 100644 --- a/cmd/gateway.go +++ b/cmd/gateway.go @@ -11,32 +11,32 @@ import ( "github.com/google/uuid" - "github.com/nextlevelbuilder/goclaw/internal/agent" - "github.com/nextlevelbuilder/goclaw/internal/bus" - "github.com/nextlevelbuilder/goclaw/internal/cache" - "github.com/nextlevelbuilder/goclaw/internal/channels" - "github.com/nextlevelbuilder/goclaw/internal/channels/discord" - "github.com/nextlevelbuilder/goclaw/internal/channels/feishu" - slackchannel "github.com/nextlevelbuilder/goclaw/internal/channels/slack" - "github.com/nextlevelbuilder/goclaw/internal/channels/telegram" - "github.com/nextlevelbuilder/goclaw/internal/channels/whatsapp" - "github.com/nextlevelbuilder/goclaw/internal/channels/zalo" - zalopersonal "github.com/nextlevelbuilder/goclaw/internal/channels/zalo/personal" - "github.com/nextlevelbuilder/goclaw/internal/config" - "github.com/nextlevelbuilder/goclaw/internal/gateway" - "github.com/nextlevelbuilder/goclaw/internal/heartbeat" - "github.com/nextlevelbuilder/goclaw/internal/gateway/methods" - httpapi "github.com/nextlevelbuilder/goclaw/internal/http" - mcpbridge "github.com/nextlevelbuilder/goclaw/internal/mcp" - "github.com/nextlevelbuilder/goclaw/internal/media" - "github.com/nextlevelbuilder/goclaw/internal/providers" - "github.com/nextlevelbuilder/goclaw/internal/scheduler" - "github.com/nextlevelbuilder/goclaw/internal/skills" - "github.com/nextlevelbuilder/goclaw/internal/store" - "github.com/nextlevelbuilder/goclaw/internal/store/pg" - "github.com/nextlevelbuilder/goclaw/internal/tasks" - "github.com/nextlevelbuilder/goclaw/internal/tools" - "github.com/nextlevelbuilder/goclaw/pkg/protocol" + "github.com/vellus-ai/arargoclaw/internal/agent" + "github.com/vellus-ai/arargoclaw/internal/bus" + "github.com/vellus-ai/arargoclaw/internal/cache" + "github.com/vellus-ai/arargoclaw/internal/channels" + "github.com/vellus-ai/arargoclaw/internal/channels/discord" + "github.com/vellus-ai/arargoclaw/internal/channels/feishu" + slackchannel "github.com/vellus-ai/arargoclaw/internal/channels/slack" + "github.com/vellus-ai/arargoclaw/internal/channels/telegram" + "github.com/vellus-ai/arargoclaw/internal/channels/whatsapp" + "github.com/vellus-ai/arargoclaw/internal/channels/zalo" + zalopersonal "github.com/vellus-ai/arargoclaw/internal/channels/zalo/personal" + "github.com/vellus-ai/arargoclaw/internal/config" + "github.com/vellus-ai/arargoclaw/internal/gateway" + "github.com/vellus-ai/arargoclaw/internal/heartbeat" + "github.com/vellus-ai/arargoclaw/internal/gateway/methods" + httpapi "github.com/vellus-ai/arargoclaw/internal/http" + mcpbridge "github.com/vellus-ai/arargoclaw/internal/mcp" + "github.com/vellus-ai/arargoclaw/internal/media" + "github.com/vellus-ai/arargoclaw/internal/providers" + "github.com/vellus-ai/arargoclaw/internal/scheduler" + "github.com/vellus-ai/arargoclaw/internal/skills" + "github.com/vellus-ai/arargoclaw/internal/store" + "github.com/vellus-ai/arargoclaw/internal/store/pg" + "github.com/vellus-ai/arargoclaw/internal/tasks" + "github.com/vellus-ai/arargoclaw/internal/tools" + "github.com/vellus-ai/arargoclaw/pkg/protocol" ) func runGateway() { @@ -402,8 +402,8 @@ func runGateway() { server.SetFilesHandler(httpapi.NewFilesHandler(cfg.Gateway.Token, workspace)) // Storage file management — browse/delete files under the resolved workspace directory. - // Uses GOCLAW_WORKSPACE (or default ~/.goclaw/workspace) so it works correctly - // in Docker deployments where volumes are mounted outside ~/.goclaw/. + // Uses ARGOCLAW_WORKSPACE (or default ~/.argoclaw/workspace) so it works correctly + // in Docker deployments where volumes are mounted outside ~/.argoclaw/. server.SetStorageHandler(httpapi.NewStorageHandler(workspace, cfg.Gateway.Token)) // Media upload endpoint — accepts multipart file uploads, returns temp path + MIME type. @@ -976,7 +976,7 @@ func runGateway() { cancel() }() - slog.Info("goclaw gateway starting", + slog.Info("argoclaw gateway starting", "version", Version, "protocol", protocol.ProtocolVersion, "agents", agentRouter.List(), @@ -1003,7 +1003,7 @@ func runGateway() { // Phase 1: suggest localhost binding when Tailscale is active if cfg.Tailscale.Hostname != "" && cfg.Gateway.Host == "0.0.0.0" { - slog.Info("Tailscale enabled. Consider setting GOCLAW_HOST=127.0.0.1 for localhost-only + Tailscale access") + slog.Info("Tailscale enabled. Consider setting ARGOCLAW_HOST=127.0.0.1 for localhost-only + Tailscale access") } if err := server.Start(ctx); err != nil { diff --git a/cmd/gateway_agents.go b/cmd/gateway_agents.go index 05654f72e..f680e812b 100644 --- a/cmd/gateway_agents.go +++ b/cmd/gateway_agents.go @@ -4,13 +4,13 @@ import ( "log/slog" "strings" - "github.com/nextlevelbuilder/goclaw/internal/bus" - "github.com/nextlevelbuilder/goclaw/internal/config" - "github.com/nextlevelbuilder/goclaw/internal/memory" - "github.com/nextlevelbuilder/goclaw/internal/providers" - "github.com/nextlevelbuilder/goclaw/internal/sandbox" - "github.com/nextlevelbuilder/goclaw/internal/tools" - "github.com/nextlevelbuilder/goclaw/internal/tts" + "github.com/vellus-ai/arargoclaw/internal/bus" + "github.com/vellus-ai/arargoclaw/internal/config" + "github.com/vellus-ai/arargoclaw/internal/memory" + "github.com/vellus-ai/arargoclaw/internal/providers" + "github.com/vellus-ai/arargoclaw/internal/sandbox" + "github.com/vellus-ai/arargoclaw/internal/tools" + "github.com/vellus-ai/arargoclaw/internal/tts" ) // resolveEmbeddingProvider auto-selects an embedding provider based on config and available API keys. diff --git a/cmd/gateway_announce_queue.go b/cmd/gateway_announce_queue.go index 5adc5caf5..ab85cf36c 100644 --- a/cmd/gateway_announce_queue.go +++ b/cmd/gateway_announce_queue.go @@ -9,12 +9,12 @@ import ( "github.com/google/uuid" - "github.com/nextlevelbuilder/goclaw/internal/agent" - "github.com/nextlevelbuilder/goclaw/internal/bus" - "github.com/nextlevelbuilder/goclaw/internal/config" - "github.com/nextlevelbuilder/goclaw/internal/scheduler" - "github.com/nextlevelbuilder/goclaw/internal/store" - "github.com/nextlevelbuilder/goclaw/internal/tools" + "github.com/vellus-ai/arargoclaw/internal/agent" + "github.com/vellus-ai/arargoclaw/internal/bus" + "github.com/vellus-ai/arargoclaw/internal/config" + "github.com/vellus-ai/arargoclaw/internal/scheduler" + "github.com/vellus-ai/arargoclaw/internal/store" + "github.com/vellus-ai/arargoclaw/internal/tools" ) // announceEntry holds one teammate completion result waiting to be announced. diff --git a/cmd/gateway_builtin_tools.go b/cmd/gateway_builtin_tools.go index fa98b7276..972f3d7a1 100644 --- a/cmd/gateway_builtin_tools.go +++ b/cmd/gateway_builtin_tools.go @@ -5,8 +5,8 @@ import ( "encoding/json" "log/slog" - "github.com/nextlevelbuilder/goclaw/internal/store" - "github.com/nextlevelbuilder/goclaw/internal/tools" + "github.com/vellus-ai/arargoclaw/internal/store" + "github.com/vellus-ai/arargoclaw/internal/tools" ) // builtinToolSeedData returns the canonical list of built-in tools to seed into the database. @@ -29,7 +29,7 @@ func builtinToolSeedData() []store.BuiltinToolDef { Metadata: json.RawMessage(`{"config_hint":"Config → Tools → Web Search"}`), }, {Name: "web_fetch", DisplayName: "Web Fetch", Description: "Fetch a web page or API endpoint and extract its text content", Category: "web", Enabled: true, - Settings: json.RawMessage(`{"extractors":[{"name":"defuddle","enabled":true,"base_url":"https://fetch.goclaw.sh/","max_retries":2},{"name":"html-to-markdown","enabled":true}]}`), + Settings: json.RawMessage(`{"extractors":[{"name":"defuddle","enabled":true,"base_url":"https://fetch.argoclaw.sh/","max_retries":2},{"name":"html-to-markdown","enabled":true}]}`), }, // memory @@ -210,7 +210,7 @@ func backfillWebFetchSettings(ctx context.Context, bts store.BuiltinToolStore) { if len(t.Settings) > 0 && string(t.Settings) != "{}" && string(t.Settings) != "null" { return // already has settings, don't overwrite } - defaultSettings := json.RawMessage(`{"extractors":[{"name":"defuddle","enabled":true,"base_url":"https://fetch.goclaw.sh/","max_retries":2},{"name":"html-to-markdown","enabled":true}]}`) + defaultSettings := json.RawMessage(`{"extractors":[{"name":"defuddle","enabled":true,"base_url":"https://fetch.argoclaw.sh/","max_retries":2},{"name":"html-to-markdown","enabled":true}]}`) if err := bts.Update(ctx, "web_fetch", map[string]any{"settings": defaultSettings}); err != nil { slog.Warn("builtin_tools: failed to backfill web_fetch settings", "error", err) return diff --git a/cmd/gateway_callbacks.go b/cmd/gateway_callbacks.go index 30da4f66d..58dfe6066 100644 --- a/cmd/gateway_callbacks.go +++ b/cmd/gateway_callbacks.go @@ -8,10 +8,10 @@ import ( "github.com/google/uuid" - "github.com/nextlevelbuilder/goclaw/internal/agent" - "github.com/nextlevelbuilder/goclaw/internal/bootstrap" - "github.com/nextlevelbuilder/goclaw/internal/store" - "github.com/nextlevelbuilder/goclaw/internal/tools" + "github.com/vellus-ai/arargoclaw/internal/agent" + "github.com/vellus-ai/arargoclaw/internal/bootstrap" + "github.com/vellus-ai/arargoclaw/internal/store" + "github.com/vellus-ai/arargoclaw/internal/tools" ) // buildEnsureUserFiles creates the per-user file seeding callback. diff --git a/cmd/gateway_channels_setup.go b/cmd/gateway_channels_setup.go index 2c0edffd5..ea50f0772 100644 --- a/cmd/gateway_channels_setup.go +++ b/cmd/gateway_channels_setup.go @@ -8,22 +8,22 @@ import ( "github.com/google/uuid" - "github.com/nextlevelbuilder/goclaw/internal/agent" - "github.com/nextlevelbuilder/goclaw/internal/bus" - "github.com/nextlevelbuilder/goclaw/internal/channels" - "github.com/nextlevelbuilder/goclaw/internal/channels/discord" - "github.com/nextlevelbuilder/goclaw/internal/channels/feishu" - slackchannel "github.com/nextlevelbuilder/goclaw/internal/channels/slack" - "github.com/nextlevelbuilder/goclaw/internal/channels/telegram" - "github.com/nextlevelbuilder/goclaw/internal/channels/whatsapp" - "github.com/nextlevelbuilder/goclaw/internal/channels/zalo" - zalopersonal "github.com/nextlevelbuilder/goclaw/internal/channels/zalo/personal" - "github.com/nextlevelbuilder/goclaw/internal/channels/zalo/personal/zalomethods" - "github.com/nextlevelbuilder/goclaw/internal/config" - "github.com/nextlevelbuilder/goclaw/internal/gateway" - "github.com/nextlevelbuilder/goclaw/internal/gateway/methods" - "github.com/nextlevelbuilder/goclaw/internal/store" - "github.com/nextlevelbuilder/goclaw/pkg/protocol" + "github.com/vellus-ai/arargoclaw/internal/agent" + "github.com/vellus-ai/arargoclaw/internal/bus" + "github.com/vellus-ai/arargoclaw/internal/channels" + "github.com/vellus-ai/arargoclaw/internal/channels/discord" + "github.com/vellus-ai/arargoclaw/internal/channels/feishu" + slackchannel "github.com/vellus-ai/arargoclaw/internal/channels/slack" + "github.com/vellus-ai/arargoclaw/internal/channels/telegram" + "github.com/vellus-ai/arargoclaw/internal/channels/whatsapp" + "github.com/vellus-ai/arargoclaw/internal/channels/zalo" + zalopersonal "github.com/vellus-ai/arargoclaw/internal/channels/zalo/personal" + "github.com/vellus-ai/arargoclaw/internal/channels/zalo/personal/zalomethods" + "github.com/vellus-ai/arargoclaw/internal/config" + "github.com/vellus-ai/arargoclaw/internal/gateway" + "github.com/vellus-ai/arargoclaw/internal/gateway/methods" + "github.com/vellus-ai/arargoclaw/internal/store" + "github.com/vellus-ai/arargoclaw/pkg/protocol" ) // registerConfigChannels registers config-based channels as fallback when no DB instances are loaded. diff --git a/cmd/gateway_consumer.go b/cmd/gateway_consumer.go index 538041676..7dad2265d 100644 --- a/cmd/gateway_consumer.go +++ b/cmd/gateway_consumer.go @@ -11,14 +11,14 @@ import ( "github.com/google/uuid" - "github.com/nextlevelbuilder/goclaw/internal/agent" - "github.com/nextlevelbuilder/goclaw/internal/bus" - "github.com/nextlevelbuilder/goclaw/internal/channels" - "github.com/nextlevelbuilder/goclaw/internal/config" - "github.com/nextlevelbuilder/goclaw/internal/scheduler" - "github.com/nextlevelbuilder/goclaw/internal/store" - "github.com/nextlevelbuilder/goclaw/internal/tools" - "github.com/nextlevelbuilder/goclaw/pkg/protocol" + "github.com/vellus-ai/arargoclaw/internal/agent" + "github.com/vellus-ai/arargoclaw/internal/bus" + "github.com/vellus-ai/arargoclaw/internal/channels" + "github.com/vellus-ai/arargoclaw/internal/config" + "github.com/vellus-ai/arargoclaw/internal/scheduler" + "github.com/vellus-ai/arargoclaw/internal/store" + "github.com/vellus-ai/arargoclaw/internal/tools" + "github.com/vellus-ai/arargoclaw/pkg/protocol" ) // consumeInboundMessages reads inbound messages from channels (Telegram, Discord, etc.) diff --git a/cmd/gateway_consumer_handlers.go b/cmd/gateway_consumer_handlers.go index 9b7a25060..97c2e887e 100644 --- a/cmd/gateway_consumer_handlers.go +++ b/cmd/gateway_consumer_handlers.go @@ -11,16 +11,16 @@ import ( "github.com/google/uuid" - "github.com/nextlevelbuilder/goclaw/internal/agent" - "github.com/nextlevelbuilder/goclaw/internal/bus" - "github.com/nextlevelbuilder/goclaw/internal/channels" - "github.com/nextlevelbuilder/goclaw/internal/config" - "github.com/nextlevelbuilder/goclaw/internal/providers" - "github.com/nextlevelbuilder/goclaw/internal/scheduler" - "github.com/nextlevelbuilder/goclaw/internal/sessions" - "github.com/nextlevelbuilder/goclaw/internal/store" - "github.com/nextlevelbuilder/goclaw/internal/tools" - "github.com/nextlevelbuilder/goclaw/pkg/protocol" + "github.com/vellus-ai/arargoclaw/internal/agent" + "github.com/vellus-ai/arargoclaw/internal/bus" + "github.com/vellus-ai/arargoclaw/internal/channels" + "github.com/vellus-ai/arargoclaw/internal/config" + "github.com/vellus-ai/arargoclaw/internal/providers" + "github.com/vellus-ai/arargoclaw/internal/scheduler" + "github.com/vellus-ai/arargoclaw/internal/sessions" + "github.com/vellus-ai/arargoclaw/internal/store" + "github.com/vellus-ai/arargoclaw/internal/tools" + "github.com/vellus-ai/arargoclaw/pkg/protocol" ) // handleSubagentAnnounce processes subagent announce messages: bypass debounce, diff --git a/cmd/gateway_consumer_helpers.go b/cmd/gateway_consumer_helpers.go index 904cc6747..7f5c4cc86 100644 --- a/cmd/gateway_consumer_helpers.go +++ b/cmd/gateway_consumer_helpers.go @@ -6,11 +6,11 @@ import ( "path/filepath" "strings" - "github.com/nextlevelbuilder/goclaw/internal/agent" - "github.com/nextlevelbuilder/goclaw/internal/bus" - "github.com/nextlevelbuilder/goclaw/internal/channels" - "github.com/nextlevelbuilder/goclaw/internal/config" - "github.com/nextlevelbuilder/goclaw/internal/sessions" + "github.com/vellus-ai/arargoclaw/internal/agent" + "github.com/vellus-ai/arargoclaw/internal/bus" + "github.com/vellus-ai/arargoclaw/internal/channels" + "github.com/vellus-ai/arargoclaw/internal/config" + "github.com/vellus-ai/arargoclaw/internal/sessions" ) // resolveAgentRoute determines which agent should handle a message @@ -124,7 +124,7 @@ func mediaToMarkdown(media []agent.MediaResult, cfg *config.Config) string { var parts []string for _, mr := range media { cleanPath := filepath.Clean(mr.Path) - // Strip leading "/" so URL path is /v1/files/app/.goclaw/... + // Strip leading "/" so URL path is /v1/files/app/.argoclaw/... urlPath := strings.TrimPrefix(cleanPath, "/") if urlPath == "" { continue diff --git a/cmd/gateway_consumer_normal.go b/cmd/gateway_consumer_normal.go index 9035caa08..0f399e10f 100644 --- a/cmd/gateway_consumer_normal.go +++ b/cmd/gateway_consumer_normal.go @@ -9,16 +9,16 @@ import ( "github.com/google/uuid" - "github.com/nextlevelbuilder/goclaw/internal/agent" - "github.com/nextlevelbuilder/goclaw/internal/bus" - "github.com/nextlevelbuilder/goclaw/internal/channels" - "github.com/nextlevelbuilder/goclaw/internal/channels/telegram/voiceguard" - "github.com/nextlevelbuilder/goclaw/internal/config" - "github.com/nextlevelbuilder/goclaw/internal/i18n" - "github.com/nextlevelbuilder/goclaw/internal/scheduler" - "github.com/nextlevelbuilder/goclaw/internal/sessions" - "github.com/nextlevelbuilder/goclaw/internal/store" - "github.com/nextlevelbuilder/goclaw/internal/tools" + "github.com/vellus-ai/arargoclaw/internal/agent" + "github.com/vellus-ai/arargoclaw/internal/bus" + "github.com/vellus-ai/arargoclaw/internal/channels" + "github.com/vellus-ai/arargoclaw/internal/channels/telegram/voiceguard" + "github.com/vellus-ai/arargoclaw/internal/config" + "github.com/vellus-ai/arargoclaw/internal/i18n" + "github.com/vellus-ai/arargoclaw/internal/scheduler" + "github.com/vellus-ai/arargoclaw/internal/sessions" + "github.com/vellus-ai/arargoclaw/internal/store" + "github.com/vellus-ai/arargoclaw/internal/tools" ) // processNormalMessage handles routing, scheduling, and response delivery for a single diff --git a/cmd/gateway_consumer_process.go b/cmd/gateway_consumer_process.go index 9f75bc17d..65350cb8a 100644 --- a/cmd/gateway_consumer_process.go +++ b/cmd/gateway_consumer_process.go @@ -5,9 +5,9 @@ import ( "fmt" "strings" - "github.com/nextlevelbuilder/goclaw/internal/agent" - "github.com/nextlevelbuilder/goclaw/internal/config" - "github.com/nextlevelbuilder/goclaw/internal/scheduler" + "github.com/vellus-ai/arargoclaw/internal/agent" + "github.com/vellus-ai/arargoclaw/internal/config" + "github.com/vellus-ai/arargoclaw/internal/scheduler" ) // makeSchedulerRunFunc creates the RunFunc for the scheduler. diff --git a/cmd/gateway_cron.go b/cmd/gateway_cron.go index 2075f1f67..a902fd7d2 100644 --- a/cmd/gateway_cron.go +++ b/cmd/gateway_cron.go @@ -5,13 +5,13 @@ import ( "fmt" "strings" - "github.com/nextlevelbuilder/goclaw/internal/agent" - "github.com/nextlevelbuilder/goclaw/internal/bus" - "github.com/nextlevelbuilder/goclaw/internal/channels" - "github.com/nextlevelbuilder/goclaw/internal/config" - "github.com/nextlevelbuilder/goclaw/internal/scheduler" - "github.com/nextlevelbuilder/goclaw/internal/sessions" - "github.com/nextlevelbuilder/goclaw/internal/store" + "github.com/vellus-ai/arargoclaw/internal/agent" + "github.com/vellus-ai/arargoclaw/internal/bus" + "github.com/vellus-ai/arargoclaw/internal/channels" + "github.com/vellus-ai/arargoclaw/internal/config" + "github.com/vellus-ai/arargoclaw/internal/scheduler" + "github.com/vellus-ai/arargoclaw/internal/sessions" + "github.com/vellus-ai/arargoclaw/internal/store" ) // makeCronJobHandler creates a cron job handler that routes through the scheduler's cron lane. diff --git a/cmd/gateway_errors.go b/cmd/gateway_errors.go index 95ee5db16..038e58bc2 100644 --- a/cmd/gateway_errors.go +++ b/cmd/gateway_errors.go @@ -5,7 +5,7 @@ import ( "log/slog" "strings" - "github.com/nextlevelbuilder/goclaw/internal/channels" + "github.com/vellus-ai/arargoclaw/internal/channels" ) // Matching TS pi-embedded-helpers/errors.ts error classification. diff --git a/cmd/gateway_heartbeat.go b/cmd/gateway_heartbeat.go index a0b91c5b8..b22bec8fa 100644 --- a/cmd/gateway_heartbeat.go +++ b/cmd/gateway_heartbeat.go @@ -3,8 +3,8 @@ package cmd import ( "context" - "github.com/nextlevelbuilder/goclaw/internal/agent" - "github.com/nextlevelbuilder/goclaw/internal/scheduler" + "github.com/vellus-ai/arargoclaw/internal/agent" + "github.com/vellus-ai/arargoclaw/internal/scheduler" ) // makeHeartbeatRunFn creates a function that routes a heartbeat run through the scheduler's cron lane. diff --git a/cmd/gateway_http_handlers.go b/cmd/gateway_http_handlers.go index 66f9ce243..e76676371 100644 --- a/cmd/gateway_http_handlers.go +++ b/cmd/gateway_http_handlers.go @@ -1,12 +1,12 @@ package cmd import ( - "github.com/nextlevelbuilder/goclaw/internal/bus" - httpapi "github.com/nextlevelbuilder/goclaw/internal/http" - "github.com/nextlevelbuilder/goclaw/internal/providers" - "github.com/nextlevelbuilder/goclaw/internal/store" - "github.com/nextlevelbuilder/goclaw/internal/store/pg" - "github.com/nextlevelbuilder/goclaw/internal/tools" + "github.com/vellus-ai/arargoclaw/internal/bus" + httpapi "github.com/vellus-ai/arargoclaw/internal/http" + "github.com/vellus-ai/arargoclaw/internal/providers" + "github.com/vellus-ai/arargoclaw/internal/store" + "github.com/vellus-ai/arargoclaw/internal/store/pg" + "github.com/vellus-ai/arargoclaw/internal/tools" ) // wireHTTP creates HTTP handlers (agents + skills + traces + MCP + custom tools + channel instances + providers + delegations + builtin tools + pending messages). diff --git a/cmd/gateway_managed.go b/cmd/gateway_managed.go index 84508a14f..55f2ef813 100644 --- a/cmd/gateway_managed.go +++ b/cmd/gateway_managed.go @@ -8,20 +8,20 @@ import ( "github.com/google/uuid" - "github.com/nextlevelbuilder/goclaw/internal/agent" - "github.com/nextlevelbuilder/goclaw/internal/bus" - "github.com/nextlevelbuilder/goclaw/internal/config" - kg "github.com/nextlevelbuilder/goclaw/internal/knowledgegraph" - mcpbridge "github.com/nextlevelbuilder/goclaw/internal/mcp" - "github.com/nextlevelbuilder/goclaw/internal/media" - "github.com/nextlevelbuilder/goclaw/internal/providers" - "github.com/nextlevelbuilder/goclaw/internal/sandbox" - "github.com/nextlevelbuilder/goclaw/internal/skills" - "github.com/nextlevelbuilder/goclaw/internal/store" - "github.com/nextlevelbuilder/goclaw/internal/store/pg" - "github.com/nextlevelbuilder/goclaw/internal/tools" - "github.com/nextlevelbuilder/goclaw/internal/tracing" - "github.com/nextlevelbuilder/goclaw/pkg/protocol" + "github.com/vellus-ai/arargoclaw/internal/agent" + "github.com/vellus-ai/arargoclaw/internal/bus" + "github.com/vellus-ai/arargoclaw/internal/config" + kg "github.com/vellus-ai/arargoclaw/internal/knowledgegraph" + mcpbridge "github.com/vellus-ai/arargoclaw/internal/mcp" + "github.com/vellus-ai/arargoclaw/internal/media" + "github.com/vellus-ai/arargoclaw/internal/providers" + "github.com/vellus-ai/arargoclaw/internal/sandbox" + "github.com/vellus-ai/arargoclaw/internal/skills" + "github.com/vellus-ai/arargoclaw/internal/store" + "github.com/vellus-ai/arargoclaw/internal/store/pg" + "github.com/vellus-ai/arargoclaw/internal/tools" + "github.com/vellus-ai/arargoclaw/internal/tracing" + "github.com/vellus-ai/arargoclaw/pkg/protocol" ) // wireExtras wires components that require PG stores: diff --git a/cmd/gateway_methods.go b/cmd/gateway_methods.go index 9749a114f..c6c419030 100644 --- a/cmd/gateway_methods.go +++ b/cmd/gateway_methods.go @@ -3,13 +3,13 @@ package cmd import ( "log/slog" - "github.com/nextlevelbuilder/goclaw/internal/agent" - "github.com/nextlevelbuilder/goclaw/internal/bus" - "github.com/nextlevelbuilder/goclaw/internal/config" - "github.com/nextlevelbuilder/goclaw/internal/gateway" - "github.com/nextlevelbuilder/goclaw/internal/gateway/methods" - "github.com/nextlevelbuilder/goclaw/internal/store" - "github.com/nextlevelbuilder/goclaw/internal/tools" + "github.com/vellus-ai/arargoclaw/internal/agent" + "github.com/vellus-ai/arargoclaw/internal/bus" + "github.com/vellus-ai/arargoclaw/internal/config" + "github.com/vellus-ai/arargoclaw/internal/gateway" + "github.com/vellus-ai/arargoclaw/internal/gateway/methods" + "github.com/vellus-ai/arargoclaw/internal/store" + "github.com/vellus-ai/arargoclaw/internal/tools" ) func registerAllMethods(server *gateway.Server, agents *agent.Router, sessStore store.SessionStore, cronStore store.CronStore, pairingStore store.PairingStore, cfg *config.Config, cfgPath, workspace, dataDir string, msgBus *bus.MessageBus, execApprovalMgr *tools.ExecApprovalManager, agentStore store.AgentStore, skillStore store.SkillStore, configSecretsStore store.ConfigSecretsStore, teamStore store.TeamStore, contextFileInterceptor *tools.ContextFileInterceptor, logTee *gateway.LogTee, heartbeatStore store.HeartbeatStore, configPermStore store.ConfigPermissionStore) (*methods.PairingMethods, *methods.HeartbeatMethods, *methods.ChatMethods) { diff --git a/cmd/gateway_otel.go b/cmd/gateway_otel.go index d286ce466..2223c97a2 100644 --- a/cmd/gateway_otel.go +++ b/cmd/gateway_otel.go @@ -6,9 +6,9 @@ import ( "context" "log/slog" - "github.com/nextlevelbuilder/goclaw/internal/config" - "github.com/nextlevelbuilder/goclaw/internal/tracing" - "github.com/nextlevelbuilder/goclaw/internal/tracing/otelexport" + "github.com/vellus-ai/arargoclaw/internal/config" + "github.com/vellus-ai/arargoclaw/internal/tracing" + "github.com/vellus-ai/arargoclaw/internal/tracing/otelexport" ) // initOTelExporter creates and wires the OpenTelemetry OTLP exporter diff --git a/cmd/gateway_otel_noop.go b/cmd/gateway_otel_noop.go index 4222ca4b2..d35cd6490 100644 --- a/cmd/gateway_otel_noop.go +++ b/cmd/gateway_otel_noop.go @@ -5,8 +5,8 @@ package cmd import ( "context" - "github.com/nextlevelbuilder/goclaw/internal/config" - "github.com/nextlevelbuilder/goclaw/internal/tracing" + "github.com/vellus-ai/arargoclaw/internal/config" + "github.com/vellus-ai/arargoclaw/internal/tracing" ) // initOTelExporter is a no-op when built without the "otel" tag. diff --git a/cmd/gateway_providers.go b/cmd/gateway_providers.go index b505c68a2..8c6402f4a 100644 --- a/cmd/gateway_providers.go +++ b/cmd/gateway_providers.go @@ -12,11 +12,11 @@ import ( "github.com/google/uuid" - "github.com/nextlevelbuilder/goclaw/internal/config" - "github.com/nextlevelbuilder/goclaw/internal/oauth" - "github.com/nextlevelbuilder/goclaw/internal/providers" - "github.com/nextlevelbuilder/goclaw/internal/store" - "github.com/nextlevelbuilder/goclaw/internal/tools" + "github.com/vellus-ai/arargoclaw/internal/config" + "github.com/vellus-ai/arargoclaw/internal/oauth" + "github.com/vellus-ai/arargoclaw/internal/providers" + "github.com/vellus-ai/arargoclaw/internal/store" + "github.com/vellus-ai/arargoclaw/internal/tools" ) // loopbackAddr normalizes a gateway address for local connections. @@ -149,11 +149,11 @@ func registerProviders(registry *providers.Registry, cfg *config.Config) { if cfg.Providers.ClaudeCLI.PermMode != "" { opts = append(opts, providers.WithClaudeCLIPermMode(cfg.Providers.ClaudeCLI.PermMode)) } - // Build per-session MCP config: external MCP servers + GoClaw bridge + // Build per-session MCP config: external MCP servers + ArgoClaw bridge gatewayAddr := loopbackAddr(cfg.Gateway.Host, cfg.Gateway.Port) mcpData := providers.BuildCLIMCPConfigData(cfg.Tools.McpServers, gatewayAddr, cfg.Gateway.Token) opts = append(opts, providers.WithClaudeCLIMCPConfigData(mcpData)) - // Enable GoClaw security hooks (shell deny patterns, path restrictions) + // Enable ArgoClaw security hooks (shell deny patterns, path restrictions) opts = append(opts, providers.WithClaudeCLISecurityHooks( cfg.Providers.ClaudeCLI.BaseWorkDir, true)) registry.Register(providers.NewClaudeCLIProvider(cliPath, opts...)) @@ -229,7 +229,7 @@ func jsonToStringMap(data json.RawMessage) map[string]string { // registerProvidersFromDB loads providers from Postgres and registers them. // DB providers are registered after config providers, so they take precedence (overwrite). -// gatewayAddr is used to inject GoClaw MCP bridge for Claude CLI providers. +// gatewayAddr is used to inject ArgoClaw MCP bridge for Claude CLI providers. // mcpStore is optional; when provided, per-agent MCP servers are injected into CLI config. // cfg provides fallback api_base values from config/env when DB providers have none set. func registerProvidersFromDB(registry *providers.Registry, provStore store.ProviderStore, secretStore store.ConfigSecretsStore, gatewayAddr, gatewayToken string, mcpStore store.MCPServerStore, cfg *config.Config) { diff --git a/cmd/gateway_redis.go b/cmd/gateway_redis.go index 728febe3f..83c866387 100644 --- a/cmd/gateway_redis.go +++ b/cmd/gateway_redis.go @@ -7,17 +7,17 @@ import ( "github.com/redis/go-redis/v9" - "github.com/nextlevelbuilder/goclaw/internal/cache" - "github.com/nextlevelbuilder/goclaw/internal/config" - "github.com/nextlevelbuilder/goclaw/internal/store" + "github.com/vellus-ai/arargoclaw/internal/cache" + "github.com/vellus-ai/arargoclaw/internal/config" + "github.com/vellus-ai/arargoclaw/internal/store" ) // initRedisClient creates a Redis client when built with -tags redis. -// Returns nil (typed as any) if GOCLAW_REDIS_DSN is empty or connection fails. +// Returns nil (typed as any) if ARGOCLAW_REDIS_DSN is empty or connection fails. func initRedisClient(cfg *config.Config) any { dsn := cfg.Database.RedisDSN if dsn == "" { - slog.Debug("Redis available but not configured (set GOCLAW_REDIS_DSN)") + slog.Debug("Redis available but not configured (set ARGOCLAW_REDIS_DSN)") return nil } client, err := cache.NewRedisClient(dsn) diff --git a/cmd/gateway_redis_noop.go b/cmd/gateway_redis_noop.go index a80d48058..8909fe46e 100644 --- a/cmd/gateway_redis_noop.go +++ b/cmd/gateway_redis_noop.go @@ -5,9 +5,9 @@ package cmd import ( "log/slog" - "github.com/nextlevelbuilder/goclaw/internal/cache" - "github.com/nextlevelbuilder/goclaw/internal/config" - "github.com/nextlevelbuilder/goclaw/internal/store" + "github.com/vellus-ai/arargoclaw/internal/cache" + "github.com/vellus-ai/arargoclaw/internal/config" + "github.com/vellus-ai/arargoclaw/internal/store" ) // initRedisClient is a no-op when built without the "redis" tag. diff --git a/cmd/gateway_setup.go b/cmd/gateway_setup.go index e2543f47a..97b2fbae2 100644 --- a/cmd/gateway_setup.go +++ b/cmd/gateway_setup.go @@ -9,21 +9,21 @@ import ( "github.com/google/uuid" - "github.com/nextlevelbuilder/goclaw/internal/bootstrap" - "github.com/nextlevelbuilder/goclaw/internal/bus" - "github.com/nextlevelbuilder/goclaw/internal/config" - mcpbridge "github.com/nextlevelbuilder/goclaw/internal/mcp" - "github.com/nextlevelbuilder/goclaw/internal/permissions" - "github.com/nextlevelbuilder/goclaw/internal/providers" - "github.com/nextlevelbuilder/goclaw/internal/sandbox" - "github.com/nextlevelbuilder/goclaw/internal/skills" - "github.com/nextlevelbuilder/goclaw/internal/store" - "github.com/nextlevelbuilder/goclaw/internal/store/pg" - "github.com/nextlevelbuilder/goclaw/internal/tools" - "github.com/nextlevelbuilder/goclaw/internal/tracing" - "github.com/nextlevelbuilder/goclaw/internal/tts" - "github.com/nextlevelbuilder/goclaw/pkg/browser" - "github.com/nextlevelbuilder/goclaw/pkg/protocol" + "github.com/vellus-ai/arargoclaw/internal/bootstrap" + "github.com/vellus-ai/arargoclaw/internal/bus" + "github.com/vellus-ai/arargoclaw/internal/config" + mcpbridge "github.com/vellus-ai/arargoclaw/internal/mcp" + "github.com/vellus-ai/arargoclaw/internal/permissions" + "github.com/vellus-ai/arargoclaw/internal/providers" + "github.com/vellus-ai/arargoclaw/internal/sandbox" + "github.com/vellus-ai/arargoclaw/internal/skills" + "github.com/vellus-ai/arargoclaw/internal/store" + "github.com/vellus-ai/arargoclaw/internal/store/pg" + "github.com/vellus-ai/arargoclaw/internal/tools" + "github.com/vellus-ai/arargoclaw/internal/tracing" + "github.com/vellus-ai/arargoclaw/internal/tts" + "github.com/vellus-ai/arargoclaw/pkg/browser" + "github.com/vellus-ai/arargoclaw/pkg/protocol" ) // setupToolRegistry creates the tool registry and registers all tools. @@ -194,14 +194,14 @@ func setupToolRegistry( dataDir = cfg.ResolvedDataDir() os.MkdirAll(dataDir, 0755) - // Block exec from accessing sensitive directories (data dir, .goclaw, config file). + // Block exec from accessing sensitive directories (data dir, .argoclaw, config file). // Prevents `cp /app/data/config.json workspace/` and similar exfiltration. - // Exception: .goclaw/skills-store/ is allowed (skills may contain executable scripts). + // Exception: .argoclaw/skills-store/ is allowed (skills may contain executable scripts). if execTool, ok := toolsReg.Get("exec"); ok { if et, ok := execTool.(*tools.ExecTool); ok { - et.DenyPaths(dataDir, ".goclaw/") - et.AllowPathExemptions(".goclaw/skills-store/") - if cfgPath := os.Getenv("GOCLAW_CONFIG"); cfgPath != "" { + et.DenyPaths(dataDir, ".argoclaw/") + et.AllowPathExemptions(".argoclaw/skills-store/") + if cfgPath := os.Getenv("ARGOCLAW_CONFIG"); cfgPath != "" { et.DenyPaths(cfgPath) } } @@ -249,7 +249,7 @@ func setupStoresAndTracing( ) (*store.Stores, *tracing.Collector, *tracing.SnapshotWorker) { // --- Store creation (Postgres) --- if cfg.Database.PostgresDSN == "" { - slog.Error("GOCLAW_POSTGRES_DSN is required. Set it in your environment or .env.local file.") + slog.Error("ARGOCLAW_POSTGRES_DSN is required. Set it in your environment or .env.local file.") os.Exit(1) } @@ -263,7 +263,7 @@ func setupStoresAndTracing( storeCfg := store.StoreConfig{ PostgresDSN: cfg.Database.PostgresDSN, - EncryptionKey: os.Getenv("GOCLAW_ENCRYPTION_KEY"), + EncryptionKey: os.Getenv("ARGOCLAW_ENCRYPTION_KEY"), SkillsStorageDir: filepath.Join(dataDir, "skills-store"), } pgStores, pgErr := pg.NewPGStores(storeCfg) @@ -454,14 +454,14 @@ func setupSkillsSystem( msgBus *bus.MessageBus, ) (*skills.Loader, *tools.SkillSearchTool, string) { // Skills loader + search tool - // Global skills live under ~/.goclaw/skills/ (user-managed), not data/skills/. - globalSkillsDir := os.Getenv("GOCLAW_SKILLS_DIR") + // Global skills live under ~/.argoclaw/skills/ (user-managed), not data/skills/. + globalSkillsDir := os.Getenv("ARGOCLAW_SKILLS_DIR") if globalSkillsDir == "" { globalSkillsDir = filepath.Join(dataDir, "skills") } // Bundled skills: shipped with the Docker image at /app/bundled-skills/. // Lowest priority — managed (skills-store) and user-uploaded skills override these. - builtinSkillsDir := os.Getenv("GOCLAW_BUILTIN_SKILLS_DIR") + builtinSkillsDir := os.Getenv("ARGOCLAW_BUILTIN_SKILLS_DIR") if builtinSkillsDir == "" { builtinSkillsDir = "/app/bundled-skills" } @@ -480,7 +480,7 @@ func setupSkillsSystem( slog.Info("skills-store directory wired into loader", "dir", storeDirs[0]) // Seed system/bundled skills into DB - bundledSkillsDir := os.Getenv("GOCLAW_BUNDLED_SKILLS_DIR") + bundledSkillsDir := os.Getenv("ARGOCLAW_BUNDLED_SKILLS_DIR") if bundledSkillsDir == "" { // Check common locations: Docker default, then local dev for _, candidate := range []string{"bundled-skills", "/app/bundled-skills", "skills"} { diff --git a/cmd/gateway_slow_tool_notify.go b/cmd/gateway_slow_tool_notify.go index 622cc44b3..df2a04658 100644 --- a/cmd/gateway_slow_tool_notify.go +++ b/cmd/gateway_slow_tool_notify.go @@ -3,9 +3,9 @@ package cmd import ( "fmt" - "github.com/nextlevelbuilder/goclaw/internal/agent" - "github.com/nextlevelbuilder/goclaw/internal/bus" - "github.com/nextlevelbuilder/goclaw/pkg/protocol" + "github.com/vellus-ai/arargoclaw/internal/agent" + "github.com/vellus-ai/arargoclaw/internal/bus" + "github.com/vellus-ai/arargoclaw/pkg/protocol" ) // wireSlowToolNotifySubscriber registers a subscriber that sends direct outbound diff --git a/cmd/gateway_tsnet.go b/cmd/gateway_tsnet.go index 03a6fc6f6..8f9b85cdd 100644 --- a/cmd/gateway_tsnet.go +++ b/cmd/gateway_tsnet.go @@ -12,7 +12,7 @@ import ( "tailscale.com/tsnet" - "github.com/nextlevelbuilder/goclaw/internal/config" + "github.com/vellus-ai/arargoclaw/internal/config" ) // initTailscale starts an additional Tailscale listener alongside the main gateway. @@ -20,7 +20,7 @@ import ( func initTailscale(ctx context.Context, cfg *config.Config, mux http.Handler) func() { tc := cfg.Tailscale if tc.Hostname == "" { - slog.Debug("Tailscale available but not configured (set GOCLAW_TSNET_HOSTNAME to enable)") + slog.Debug("Tailscale available but not configured (set ARGOCLAW_TSNET_HOSTNAME to enable)") return nil } diff --git a/cmd/gateway_tsnet_noop.go b/cmd/gateway_tsnet_noop.go index a84ad9a56..57e8277d6 100644 --- a/cmd/gateway_tsnet_noop.go +++ b/cmd/gateway_tsnet_noop.go @@ -6,7 +6,7 @@ import ( "context" "net/http" - "github.com/nextlevelbuilder/goclaw/internal/config" + "github.com/vellus-ai/arargoclaw/internal/config" ) // initTailscale is a no-op when built without the "tsnet" tag. diff --git a/cmd/migrate.go b/cmd/migrate.go index c691f98a6..618483d99 100644 --- a/cmd/migrate.go +++ b/cmd/migrate.go @@ -16,8 +16,8 @@ import ( _ "github.com/jackc/pgx/v5/stdlib" "github.com/spf13/cobra" - "github.com/nextlevelbuilder/goclaw/internal/config" - "github.com/nextlevelbuilder/goclaw/internal/upgrade" + "github.com/vellus-ai/arargoclaw/internal/config" + "github.com/vellus-ai/arargoclaw/internal/upgrade" ) var migrationsDir string @@ -27,7 +27,7 @@ func resolveMigrationsDir() string { return migrationsDir } // Allow env override (used by Docker entrypoint). - if v := os.Getenv("GOCLAW_MIGRATIONS_DIR"); v != "" { + if v := os.Getenv("ARGOCLAW_MIGRATIONS_DIR"); v != "" { return v } // Default: ./migrations relative to the executable's working directory. @@ -49,14 +49,14 @@ func newMigrator(dsn string) (*migrate.Migrate, error) { func resolveDSN() (string, error) { // DSN comes from environment only (secret, never in config.json). - // config.Load also reads GOCLAW_POSTGRES_DSN into cfg.Database.PostgresDSN. + // config.Load also reads ARGOCLAW_POSTGRES_DSN into cfg.Database.PostgresDSN. cfg, err := config.Load(resolveConfigPath()) if err != nil { return "", fmt.Errorf("load config: %w", err) } dsn := cfg.Database.PostgresDSN if dsn == "" { - return "", fmt.Errorf("GOCLAW_POSTGRES_DSN environment variable is not set") + return "", fmt.Errorf("ARGOCLAW_POSTGRES_DSN environment variable is not set") } return dsn, nil } diff --git a/cmd/models.go b/cmd/models.go index b72ef2471..190e0a17e 100644 --- a/cmd/models.go +++ b/cmd/models.go @@ -8,7 +8,7 @@ import ( "github.com/spf13/cobra" - "github.com/nextlevelbuilder/goclaw/internal/config" + "github.com/vellus-ai/arargoclaw/internal/config" ) func modelsCmd() *cobra.Command { diff --git a/cmd/onboard.go b/cmd/onboard.go index 4efa013ec..395958c16 100644 --- a/cmd/onboard.go +++ b/cmd/onboard.go @@ -8,7 +8,7 @@ import ( "github.com/spf13/cobra" - "github.com/nextlevelbuilder/goclaw/internal/config" + "github.com/vellus-ai/arargoclaw/internal/config" ) func onboardCmd() *cobra.Command { @@ -23,7 +23,7 @@ func onboardCmd() *cobra.Command { func runOnboard() { fmt.Println("╔══════════════════════════════════════════════╗") - fmt.Println("║ GoClaw — Quick Setup ║") + fmt.Println("║ ArgoClaw — Quick Setup ║") fmt.Println("╚══════════════════════════════════════════════╝") fmt.Println() @@ -38,7 +38,7 @@ func runOnboard() { } // ── Step 1: Postgres connection ── - postgresDSN := os.Getenv("GOCLAW_POSTGRES_DSN") + postgresDSN := os.Getenv("ARGOCLAW_POSTGRES_DSN") if postgresDSN == "" { postgresDSN = cfg.Database.PostgresDSN } @@ -62,13 +62,13 @@ func runOnboard() { if err := testPostgresConnection(postgresDSN); err != nil { fmt.Println("FAILED") fmt.Printf(" Error: %v\n", err) - fmt.Println(" Please check your DSN and try again: ./goclaw onboard") + fmt.Println(" Please check your DSN and try again: ./argoclaw onboard") return } fmt.Println("OK") // ── Step 3: Generate keys ── - gatewayToken := os.Getenv("GOCLAW_GATEWAY_TOKEN") + gatewayToken := os.Getenv("ARGOCLAW_GATEWAY_TOKEN") if gatewayToken == "" { gatewayToken = cfg.Gateway.Token } @@ -78,24 +78,24 @@ func runOnboard() { generatedToken = true } - encryptionKey := os.Getenv("GOCLAW_ENCRYPTION_KEY") + encryptionKey := os.Getenv("ARGOCLAW_ENCRYPTION_KEY") generatedEncKey := false if encryptionKey == "" { encryptionKey = onboardGenerateToken(32) generatedEncKey = true } - os.Setenv("GOCLAW_ENCRYPTION_KEY", encryptionKey) + os.Setenv("ARGOCLAW_ENCRYPTION_KEY", encryptionKey) // ── Step 4: Migrations ── fmt.Print(" Running migrations... ") m, err := newMigrator(postgresDSN) if err != nil { fmt.Printf("FAILED: %v\n", err) - fmt.Println(" You can run it manually later: ./goclaw migrate up") + fmt.Println(" You can run it manually later: ./argoclaw migrate up") } else { if err := m.Up(); err != nil && err.Error() != "no change" { fmt.Printf("FAILED: %v\n", err) - fmt.Println(" You can run it manually later: ./goclaw migrate up") + fmt.Println(" You can run it manually later: ./argoclaw migrate up") } else { v, _, _ := m.Version() fmt.Printf("OK (version: %d)\n", v) @@ -157,13 +157,13 @@ func runOnboard() { fmt.Println("── Files ──") fmt.Println() fmt.Printf(" Config: %s (gateway host/port, no secrets)\n", cfgPath) - fmt.Printf(" Secrets: %s (GOCLAW_POSTGRES_DSN, GOCLAW_GATEWAY_TOKEN, GOCLAW_ENCRYPTION_KEY)\n", envPath) + fmt.Printf(" Secrets: %s (ARGOCLAW_POSTGRES_DSN, ARGOCLAW_GATEWAY_TOKEN, ARGOCLAW_ENCRYPTION_KEY)\n", envPath) fmt.Println() fmt.Println("── Next Steps ──") fmt.Println() fmt.Println(" 1. Start the gateway:") - fmt.Printf(" source %s && ./goclaw\n", envPath) + fmt.Printf(" source %s && ./argoclaw\n", envPath) fmt.Println() fmt.Println(" 2. Open the dashboard to complete setup:") fmt.Printf(" http://localhost:%s\n", port) diff --git a/cmd/onboard_helpers.go b/cmd/onboard_helpers.go index 88db7a55b..09e1eff39 100644 --- a/cmd/onboard_helpers.go +++ b/cmd/onboard_helpers.go @@ -25,7 +25,7 @@ func promptPostgresFields() (string, error) { if err != nil { return "", err } - dbName, err := promptString("Database name", "", "goclaw") + dbName, err := promptString("Database name", "", "argoclaw") if err != nil { return "", err } @@ -56,12 +56,12 @@ func promptPostgresFields() (string, error) { // onboardWriteEnvFile writes the minimal .env.local with only the 3 required secrets. func onboardWriteEnvFile(path, postgresDSN, gatewayToken, encryptionKey string) { var lines []string - lines = append(lines, "# GoClaw — auto-generated by onboard") + lines = append(lines, "# ArgoClaw — auto-generated by onboard") lines = append(lines, "# Keep this file secret! Add to .gitignore.") lines = append(lines, "") - lines = append(lines, fmt.Sprintf("export GOCLAW_POSTGRES_DSN=%s", postgresDSN)) - lines = append(lines, fmt.Sprintf("export GOCLAW_GATEWAY_TOKEN=%s", gatewayToken)) - lines = append(lines, fmt.Sprintf("export GOCLAW_ENCRYPTION_KEY=%s", encryptionKey)) + lines = append(lines, fmt.Sprintf("export ARGOCLAW_POSTGRES_DSN=%s", postgresDSN)) + lines = append(lines, fmt.Sprintf("export ARGOCLAW_GATEWAY_TOKEN=%s", gatewayToken)) + lines = append(lines, fmt.Sprintf("export ARGOCLAW_ENCRYPTION_KEY=%s", encryptionKey)) lines = append(lines, "") content := strings.Join(lines, "\n") diff --git a/cmd/onboard_managed.go b/cmd/onboard_managed.go index 88ab8fd48..c806652b1 100644 --- a/cmd/onboard_managed.go +++ b/cmd/onboard_managed.go @@ -7,8 +7,8 @@ import ( "os" "time" - "github.com/nextlevelbuilder/goclaw/internal/store" - "github.com/nextlevelbuilder/goclaw/internal/store/pg" + "github.com/vellus-ai/arargoclaw/internal/store" + "github.com/vellus-ai/arargoclaw/internal/store/pg" ) // testPostgresConnection verifies connectivity to Postgres with a 5s timeout. @@ -40,7 +40,7 @@ var defaultPlaceholderProviders = []store.LLMProviderData{ func seedOnboardPlaceholders(dsn string) error { storeCfg := store.StoreConfig{ PostgresDSN: dsn, - EncryptionKey: os.Getenv("GOCLAW_ENCRYPTION_KEY"), + EncryptionKey: os.Getenv("ARGOCLAW_ENCRYPTION_KEY"), } stores, err := pg.NewPGStores(storeCfg) if err != nil { diff --git a/cmd/pairing.go b/cmd/pairing.go index aed8b9a03..b19211dbc 100644 --- a/cmd/pairing.go +++ b/cmd/pairing.go @@ -10,8 +10,8 @@ import ( "github.com/gorilla/websocket" "github.com/spf13/cobra" - "github.com/nextlevelbuilder/goclaw/internal/config" - "github.com/nextlevelbuilder/goclaw/pkg/protocol" + "github.com/vellus-ai/arargoclaw/internal/config" + "github.com/vellus-ai/arargoclaw/pkg/protocol" ) func pairingCmd() *cobra.Command { diff --git a/cmd/pkg-helper/main.go b/cmd/pkg-helper/main.go index cfc35b421..ae73d9b65 100644 --- a/cmd/pkg-helper/main.go +++ b/cmd/pkg-helper/main.go @@ -51,7 +51,7 @@ func main() { } defer listener.Close() - // Socket permissions: owner root, group goclaw (gid 1000), mode 0660. + // Socket permissions: owner root, group argoclaw (gid 1000), mode 0660. // Chown requires CAP_CHOWN; if missing (misconfigured container), warn but continue // since umask already set restrictive permissions. if os.Getuid() == 0 { @@ -229,7 +229,7 @@ func apkListFile() string { } // ensurePersistDir ensures the apk persist file's parent directory is writable by root. -// On existing volumes the directory may be goclaw-owned (from older images); fix ownership +// On existing volumes the directory may be argoclaw-owned (from older images); fix ownership // using CAP_CHOWN so pkg-helper can create/write the persist file. func ensurePersistDir() { dir := filepath.Dir(apkListFile()) @@ -242,7 +242,7 @@ func ensurePersistDir() { return } - // Try to fix ownership to root:goclaw (gid 1000) if not already root-owned. + // Try to fix ownership to root:argoclaw (gid 1000) if not already root-owned. // CAP_CHOWN is available even when CAP_DAC_OVERRIDE is dropped. if stat, ok := fi.Sys().(*syscall.Stat_t); ok && stat.Uid != 0 { if err := os.Chown(dir, 0, 1000); err != nil { diff --git a/cmd/root.go b/cmd/root.go index 543f79f37..41016715a 100644 --- a/cmd/root.go +++ b/cmd/root.go @@ -6,10 +6,10 @@ import ( "github.com/spf13/cobra" - "github.com/nextlevelbuilder/goclaw/pkg/protocol" + "github.com/vellus-ai/arargoclaw/pkg/protocol" ) -// Version is set at build time via -ldflags "-X github.com/nextlevelbuilder/goclaw/cmd.Version=v1.0.0" +// Version is set at build time via -ldflags "-X github.com/vellus-ai/arargoclaw/cmd.Version=v1.0.0" var Version = "dev" var ( @@ -18,16 +18,16 @@ var ( ) var rootCmd = &cobra.Command{ - Use: "goclaw", - Short: "GoClaw — AI agent gateway", - Long: "GoClaw: multi-agent AI platform with WebSocket RPC, tool execution, and channel integration. A Go port of OpenClaw with enhanced security and multi-tenant support.", + Use: "argoclaw", + Short: "ArgoClaw — AI agent gateway", + Long: "ArgoClaw: multi-agent AI platform with WebSocket RPC, tool execution, and channel integration. A Go port of OpenClaw with enhanced security and multi-tenant support.", Run: func(cmd *cobra.Command, args []string) { runGateway() }, } func init() { - rootCmd.PersistentFlags().StringVar(&cfgFile, "config", "", "config file (default: config.json or $GOCLAW_CONFIG)") + rootCmd.PersistentFlags().StringVar(&cfgFile, "config", "", "config file (default: config.json or $ARGOCLAW_CONFIG)") rootCmd.PersistentFlags().BoolVarP(&verbose, "verbose", "v", false, "enable debug logging") rootCmd.AddCommand(onboardCmd()) @@ -51,7 +51,7 @@ func versionCmd() *cobra.Command { Use: "version", Short: "Print version information", Run: func(cmd *cobra.Command, args []string) { - fmt.Printf("goclaw %s (protocol %d)\n", Version, protocol.ProtocolVersion) + fmt.Printf("argoclaw %s (protocol %d)\n", Version, protocol.ProtocolVersion) }, } } @@ -60,7 +60,7 @@ func resolveConfigPath() string { if cfgFile != "" { return cfgFile } - if v := os.Getenv("GOCLAW_CONFIG"); v != "" { + if v := os.Getenv("ARGOCLAW_CONFIG"); v != "" { return v } return "config.json" diff --git a/cmd/sessions_cmd.go b/cmd/sessions_cmd.go index cf3764338..2213afaf3 100644 --- a/cmd/sessions_cmd.go +++ b/cmd/sessions_cmd.go @@ -9,8 +9,8 @@ import ( "github.com/spf13/cobra" - "github.com/nextlevelbuilder/goclaw/internal/store" - "github.com/nextlevelbuilder/goclaw/pkg/protocol" + "github.com/vellus-ai/arargoclaw/internal/store" + "github.com/vellus-ai/arargoclaw/pkg/protocol" ) func sessionsCmd() *cobra.Command { diff --git a/cmd/skills_cmd.go b/cmd/skills_cmd.go index 542d46911..0f2926a77 100644 --- a/cmd/skills_cmd.go +++ b/cmd/skills_cmd.go @@ -9,8 +9,8 @@ import ( "github.com/spf13/cobra" - "github.com/nextlevelbuilder/goclaw/internal/config" - "github.com/nextlevelbuilder/goclaw/internal/skills" + "github.com/vellus-ai/arargoclaw/internal/config" + "github.com/vellus-ai/arargoclaw/internal/skills" ) func skillsCmd() *cobra.Command { @@ -90,11 +90,11 @@ func loadSkillsLoader() *skills.Loader { cfgPath := resolveConfigPath() cfg, _ := config.Load(cfgPath) workspace := config.ExpandHome(cfg.Agents.Defaults.Workspace) - globalSkillsDir := os.Getenv("GOCLAW_SKILLS_DIR") + globalSkillsDir := os.Getenv("ARGOCLAW_SKILLS_DIR") if globalSkillsDir == "" { globalSkillsDir = filepath.Join(cfg.ResolvedDataDir(), "skills") } - builtinSkillsDir := os.Getenv("GOCLAW_BUILTIN_SKILLS_DIR") + builtinSkillsDir := os.Getenv("ARGOCLAW_BUILTIN_SKILLS_DIR") if builtinSkillsDir == "" { builtinSkillsDir = "/app/bundled-skills" } diff --git a/cmd/upgrade.go b/cmd/upgrade.go index 2109a7d43..707f2d362 100644 --- a/cmd/upgrade.go +++ b/cmd/upgrade.go @@ -12,9 +12,9 @@ import ( _ "github.com/jackc/pgx/v5/stdlib" "github.com/spf13/cobra" - "github.com/nextlevelbuilder/goclaw/internal/config" - "github.com/nextlevelbuilder/goclaw/internal/upgrade" - "github.com/nextlevelbuilder/goclaw/pkg/protocol" + "github.com/vellus-ai/arargoclaw/internal/config" + "github.com/vellus-ai/arargoclaw/internal/upgrade" + "github.com/vellus-ai/arargoclaw/pkg/protocol" ) func upgradeCmd() *cobra.Command { @@ -48,7 +48,7 @@ func runUpgradeStatus() error { fmt.Printf(" App version: %s (protocol %d)\n", Version, protocol.ProtocolVersion) if cfg.Database.PostgresDSN == "" { - fmt.Println(" Database: NOT CONFIGURED (set GOCLAW_POSTGRES_DSN)") + fmt.Println(" Database: NOT CONFIGURED (set ARGOCLAW_POSTGRES_DSN)") return nil } @@ -94,7 +94,7 @@ func runUpgradeStatus() error { if s.NeedsMigration { fmt.Println() - fmt.Println(" Run 'goclaw upgrade' to apply all pending changes.") + fmt.Println(" Run 'argoclaw upgrade' to apply all pending changes.") } return nil @@ -107,7 +107,7 @@ func runUpgrade(dryRun bool) error { } if cfg.Database.PostgresDSN == "" { - fmt.Println("Database not configured. Set GOCLAW_POSTGRES_DSN to enable migrations.") + fmt.Println("Database not configured. Set ARGOCLAW_POSTGRES_DSN to enable migrations.") return nil } @@ -200,7 +200,7 @@ func runUpgrade(dryRun bool) error { var ErrUpgradeFailed = fmt.Errorf("upgrade cannot proceed") // checkSchemaOrAutoUpgrade is called from gateway startup to gate on schema compatibility. -// If GOCLAW_AUTO_UPGRADE=true and schema is outdated, it runs the upgrade inline. +// If ARGOCLAW_AUTO_UPGRADE=true and schema is outdated, it runs the upgrade inline. func checkSchemaOrAutoUpgrade(dsn string) error { db, err := sql.Open("pgx", dsn) if err != nil { @@ -231,7 +231,7 @@ func checkSchemaOrAutoUpgrade(dsn string) error { } // Schema is outdated — check if auto-upgrade is enabled. - if os.Getenv("GOCLAW_AUTO_UPGRADE") == "true" { + if os.Getenv("ARGOCLAW_AUTO_UPGRADE") == "true" { slog.Info("auto-upgrade: applying migrations", "from", s.CurrentVersion, "to", s.RequiredVersion) m, mErr := newMigrator(dsn) diff --git a/docker-compose.browser.yml b/docker-compose.browser.yml index 9191e3bb7..271f7e562 100644 --- a/docker-compose.browser.yml +++ b/docker-compose.browser.yml @@ -4,7 +4,7 @@ # docker compose -f docker-compose.yml -f docker-compose.postgres.yml -f docker-compose.browser.yml up -d --build # # The Chrome sidecar exposes CDP (Chrome DevTools Protocol) on port 9222. -# GoClaw connects to it automatically via GOCLAW_BROWSER_REMOTE_URL. +# ArgoClaw connects to it automatically via ARGOCLAW_BROWSER_REMOTE_URL. services: chrome: @@ -31,9 +31,9 @@ services: cpus: '2.0' restart: unless-stopped - goclaw: + argoclaw: environment: - - GOCLAW_BROWSER_REMOTE_URL=ws://chrome:9222 + - ARGOCLAW_BROWSER_REMOTE_URL=ws://chrome:9222 depends_on: chrome: condition: service_healthy diff --git a/docker-compose.otel.yml b/docker-compose.otel.yml index 03c960ab0..0bfdfea9a 100644 --- a/docker-compose.otel.yml +++ b/docker-compose.otel.yml @@ -16,16 +16,16 @@ services: - COLLECTOR_OTLP_ENABLED=true restart: unless-stopped - goclaw: + argoclaw: build: args: ENABLE_OTEL: "true" environment: - - GOCLAW_TELEMETRY_ENABLED=true - - GOCLAW_TELEMETRY_ENDPOINT=jaeger:4317 - - GOCLAW_TELEMETRY_PROTOCOL=grpc - - GOCLAW_TELEMETRY_INSECURE=true - - GOCLAW_TELEMETRY_SERVICE_NAME=goclaw-gateway + - ARGOCLAW_TELEMETRY_ENABLED=true + - ARGOCLAW_TELEMETRY_ENDPOINT=jaeger:4317 + - ARGOCLAW_TELEMETRY_PROTOCOL=grpc + - ARGOCLAW_TELEMETRY_INSECURE=true + - ARGOCLAW_TELEMETRY_SERVICE_NAME=argoclaw-gateway depends_on: jaeger: condition: service_started diff --git a/docker-compose.postgres.yml b/docker-compose.postgres.yml index 4b51565aa..bca54f63b 100644 --- a/docker-compose.postgres.yml +++ b/docker-compose.postgres.yml @@ -4,8 +4,8 @@ # docker compose -f docker-compose.yml -f docker-compose.postgres.yml -f docker-compose.selfservice.yml up -d --build # # Required env vars (set in .env or shell): -# GOCLAW_OPENROUTER_API_KEY (or another provider key) -# POSTGRES_PASSWORD (defaults to "goclaw" for dev) +# ARGOCLAW_OPENROUTER_API_KEY (or another provider key) +# POSTGRES_PASSWORD (defaults to "argoclaw" for dev) services: postgres: @@ -13,28 +13,28 @@ services: ports: - "${POSTGRES_PORT:-5432}:5432" environment: - POSTGRES_USER: ${POSTGRES_USER:-goclaw} - POSTGRES_PASSWORD: ${POSTGRES_PASSWORD:-goclaw} - POSTGRES_DB: ${POSTGRES_DB:-goclaw} + POSTGRES_USER: ${POSTGRES_USER:-argoclaw} + POSTGRES_PASSWORD: ${POSTGRES_PASSWORD:-argoclaw} + POSTGRES_DB: ${POSTGRES_DB:-argoclaw} volumes: - postgres-data:/var/lib/postgresql healthcheck: - test: ["CMD-SHELL", "pg_isready -U ${POSTGRES_USER:-goclaw} -d ${POSTGRES_DB:-goclaw}"] + test: ["CMD-SHELL", "pg_isready -U ${POSTGRES_USER:-argoclaw} -d ${POSTGRES_DB:-argoclaw}"] interval: 5s timeout: 5s retries: 10 restart: unless-stopped - goclaw: + argoclaw: depends_on: postgres: condition: service_healthy environment: - - GOCLAW_POSTGRES_DSN=postgres://${POSTGRES_USER:-goclaw}:${POSTGRES_PASSWORD:-goclaw}@postgres:5432/${POSTGRES_DB:-goclaw}?sslmode=disable + - ARGOCLAW_POSTGRES_DSN=postgres://${POSTGRES_USER:-argoclaw}:${POSTGRES_PASSWORD:-argoclaw}@postgres:5432/${POSTGRES_DB:-argoclaw}?sslmode=disable volumes: - - goclaw-skills:/app/skills - - goclaw-workspace:/app/.goclaw + - argoclaw-skills:/app/skills + - argoclaw-workspace:/app/.argoclaw volumes: postgres-data: - goclaw-skills: + argoclaw-skills: diff --git a/docker-compose.redis.yml b/docker-compose.redis.yml index 3c0660c39..5ea217da6 100644 --- a/docker-compose.redis.yml +++ b/docker-compose.redis.yml @@ -14,12 +14,12 @@ services: command: redis-server --appendonly yes restart: unless-stopped - goclaw: + argoclaw: build: args: ENABLE_REDIS: "true" environment: - - GOCLAW_REDIS_DSN=redis://redis:6379/0 + - ARGOCLAW_REDIS_DSN=redis://redis:6379/0 depends_on: redis: condition: service_started diff --git a/docker-compose.sandbox.yml b/docker-compose.sandbox.yml index eeaa014dc..06623c1d1 100644 --- a/docker-compose.sandbox.yml +++ b/docker-compose.sandbox.yml @@ -1,7 +1,7 @@ # Sandbox overlay — enables Docker-based sandbox for agent code execution. # # Prerequisites: -# 1. Build the sandbox image: docker build -t goclaw-sandbox:bookworm-slim -f Dockerfile.sandbox . +# 1. Build the sandbox image: docker build -t argoclaw-sandbox:bookworm-slim -f Dockerfile.sandbox . # 2. Ensure Docker socket is accessible # # Usage: @@ -11,21 +11,21 @@ # Only use in trusted environments where agent code execution isolation is required. services: - goclaw: + argoclaw: build: args: ENABLE_SANDBOX: "true" volumes: - /var/run/docker.sock:/var/run/docker.sock environment: - - GOCLAW_SANDBOX_MODE=all - - GOCLAW_SANDBOX_IMAGE=goclaw-sandbox:bookworm-slim - - GOCLAW_SANDBOX_WORKSPACE_ACCESS=rw - - GOCLAW_SANDBOX_SCOPE=session - - GOCLAW_SANDBOX_MEMORY_MB=512 - - GOCLAW_SANDBOX_CPUS=1.0 - - GOCLAW_SANDBOX_TIMEOUT_SEC=300 - - GOCLAW_SANDBOX_NETWORK=false + - ARGOCLAW_SANDBOX_MODE=all + - ARGOCLAW_SANDBOX_IMAGE=argoclaw-sandbox:bookworm-slim + - ARGOCLAW_SANDBOX_WORKSPACE_ACCESS=rw + - ARGOCLAW_SANDBOX_SCOPE=session + - ARGOCLAW_SANDBOX_MEMORY_MB=512 + - ARGOCLAW_SANDBOX_CPUS=1.0 + - ARGOCLAW_SANDBOX_TIMEOUT_SEC=300 + - ARGOCLAW_SANDBOX_NETWORK=false # Override base cap_drop to allow Docker socket access cap_drop: [] cap_add: diff --git a/docker-compose.selfservice.yml b/docker-compose.selfservice.yml index 29e2dc347..be7f548f1 100644 --- a/docker-compose.selfservice.yml +++ b/docker-compose.selfservice.yml @@ -6,16 +6,16 @@ # Dashboard: http://localhost:3000 services: - goclaw-ui: - image: ghcr.io/nextlevelbuilder/goclaw-web:latest + argoclaw-ui: + image: ghcr.io/nextlevelbuilder/argoclaw-web:latest build: context: ./ui/web dockerfile: Dockerfile ports: - - "${GOCLAW_UI_PORT:-3000}:80" + - "${ARGOCLAW_UI_PORT:-3000}:80" networks: - default - shared depends_on: - - goclaw + - argoclaw restart: unless-stopped diff --git a/docker-compose.tailscale.yml b/docker-compose.tailscale.yml index b1e9fa82f..797ec0fcf 100644 --- a/docker-compose.tailscale.yml +++ b/docker-compose.tailscale.yml @@ -4,19 +4,19 @@ # docker compose -f docker-compose.yml -f docker-compose.postgres.yml -f docker-compose.tailscale.yml up # # Required: -# GOCLAW_TSNET_AUTH_KEY — Tailscale auth key (from https://login.tailscale.com/admin/settings/keys) +# ARGOCLAW_TSNET_AUTH_KEY — Tailscale auth key (from https://login.tailscale.com/admin/settings/keys) # # Optional: -# GOCLAW_TSNET_HOSTNAME — Tailscale device name (default: goclaw-gateway) +# ARGOCLAW_TSNET_HOSTNAME — Tailscale device name (default: argoclaw-gateway) services: - goclaw: + argoclaw: build: args: ENABLE_TSNET: "true" environment: - - GOCLAW_TSNET_HOSTNAME=${GOCLAW_TSNET_HOSTNAME:-goclaw-gateway} - - GOCLAW_TSNET_AUTH_KEY=${GOCLAW_TSNET_AUTH_KEY} + - ARGOCLAW_TSNET_HOSTNAME=${ARGOCLAW_TSNET_HOSTNAME:-argoclaw-gateway} + - ARGOCLAW_TSNET_AUTH_KEY=${ARGOCLAW_TSNET_AUTH_KEY} volumes: - tsnet-state:/app/tsnet-state diff --git a/docker-compose.upgrade.yml b/docker-compose.upgrade.yml index 50b8df71e..3df3cbb5d 100644 --- a/docker-compose.upgrade.yml +++ b/docker-compose.upgrade.yml @@ -10,11 +10,11 @@ # # Check status: # docker compose -f docker-compose.yml -f docker-compose.postgres.yml -f docker-compose.upgrade.yml run --rm upgrade --status # -# The upgrade service runs goclaw upgrade and exits. Use --rm to auto-remove the container. +# The upgrade service runs argoclaw upgrade and exits. Use --rm to auto-remove the container. services: upgrade: - image: ghcr.io/nextlevelbuilder/goclaw:latest + image: ghcr.io/nextlevelbuilder/argoclaw:latest build: context: . dockerfile: Dockerfile @@ -24,15 +24,15 @@ services: - path: .env required: false environment: - - GOCLAW_POSTGRES_DSN=postgres://${POSTGRES_USER:-goclaw}:${POSTGRES_PASSWORD:-goclaw}@postgres:5432/${POSTGRES_DB:-goclaw}?sslmode=disable - - GOCLAW_CONFIG=/app/data/config.json - - GOCLAW_MIGRATIONS_DIR=/app/migrations - - GOCLAW_ENCRYPTION_KEY=${GOCLAW_ENCRYPTION_KEY:-} + - ARGOCLAW_POSTGRES_DSN=postgres://${POSTGRES_USER:-argoclaw}:${POSTGRES_PASSWORD:-argoclaw}@postgres:5432/${POSTGRES_DB:-argoclaw}?sslmode=disable + - ARGOCLAW_CONFIG=/app/data/config.json + - ARGOCLAW_MIGRATIONS_DIR=/app/migrations + - ARGOCLAW_ENCRYPTION_KEY=${ARGOCLAW_ENCRYPTION_KEY:-} volumes: - - goclaw-data:/app/data + - argoclaw-data:/app/data depends_on: postgres: condition: service_healthy - entrypoint: ["/app/goclaw"] + entrypoint: ["/app/argoclaw"] command: ["upgrade"] restart: "no" diff --git a/docker-compose.yml b/docker-compose.yml index daa58c1fd..5433bbcfc 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -1,5 +1,5 @@ # Base docker-compose — shared service definition. -# Pre-built images: ghcr.io/nextlevelbuilder/goclaw (also on Docker Hub: digitop/goclaw) +# Pre-built images: ghcr.io/nextlevelbuilder/argoclaw (also on Docker Hub: digitop/argoclaw) # # Combine with overlays for your deployment: # @@ -13,8 +13,8 @@ # With OTel tracing: docker compose -f docker-compose.yml -f docker-compose.postgres.yml -f docker-compose.otel.yml up -d --build services: - goclaw: - image: ghcr.io/nextlevelbuilder/goclaw:latest + argoclaw: + image: ghcr.io/nextlevelbuilder/argoclaw:latest build: context: . dockerfile: Dockerfile @@ -23,22 +23,22 @@ services: ENABLE_PYTHON: "${ENABLE_PYTHON:-true}" ENABLE_FULL_SKILLS: "${ENABLE_FULL_SKILLS:-false}" ports: - - "${GOCLAW_PORT:-18790}:18790" + - "${ARGOCLAW_PORT:-18790}:18790" env_file: - path: .env required: false environment: - - GOCLAW_HOST=0.0.0.0 - - GOCLAW_PORT=18790 - - GOCLAW_CONFIG=/app/data/config.json - - GOCLAW_GATEWAY_TOKEN=${GOCLAW_GATEWAY_TOKEN:-} - - GOCLAW_ENCRYPTION_KEY=${GOCLAW_ENCRYPTION_KEY:-} - - GOCLAW_SKILLS_DIR=/app/data/skills + - ARGOCLAW_HOST=0.0.0.0 + - ARGOCLAW_PORT=18790 + - ARGOCLAW_CONFIG=/app/data/config.json + - ARGOCLAW_GATEWAY_TOKEN=${ARGOCLAW_GATEWAY_TOKEN:-} + - ARGOCLAW_ENCRYPTION_KEY=${ARGOCLAW_ENCRYPTION_KEY:-} + - ARGOCLAW_SKILLS_DIR=/app/data/skills # Debug - - GOCLAW_TRACE_VERBOSE=${GOCLAW_TRACE_VERBOSE:-0} + - ARGOCLAW_TRACE_VERBOSE=${ARGOCLAW_TRACE_VERBOSE:-0} volumes: - - goclaw-data:/app/data - - goclaw-workspace:/app/workspace + - argoclaw-data:/app/data + - argoclaw-workspace:/app/workspace security_opt: - no-new-privileges:true init: true @@ -62,8 +62,8 @@ services: restart: unless-stopped volumes: - goclaw-data: - goclaw-workspace: + argoclaw-data: + argoclaw-workspace: networks: shared: diff --git a/docker-entrypoint.sh b/docker-entrypoint.sh index 5bf0bcd44..b95fd3e8b 100644 --- a/docker-entrypoint.sh +++ b/docker-entrypoint.sh @@ -9,14 +9,14 @@ RUNTIME_DIR="/app/data/.runtime" # The app starts fine without .runtime; package installs will fail gracefully. mkdir -p "$RUNTIME_DIR/pip" "$RUNTIME_DIR/npm-global/lib" "$RUNTIME_DIR/pip-cache" || true -# Fix .runtime ownership for split root/goclaw access. +# Fix .runtime ownership for split root/argoclaw access. # .runtime itself must be root-owned so pkg-helper (root) can write apk-packages. -# Subdirs pip/, npm-global/, pip-cache/ must be goclaw-owned for runtime installs. -# This also handles upgrades from older images where .runtime was fully goclaw-owned. +# Subdirs pip/, npm-global/, pip-cache/ must be argoclaw-owned for runtime installs. +# This also handles upgrades from older images where .runtime was fully argoclaw-owned. if [ "$(id -u)" = "0" ] && [ -d "$RUNTIME_DIR" ]; then - chown root:goclaw "$RUNTIME_DIR" 2>/dev/null || true + chown root:argoclaw "$RUNTIME_DIR" 2>/dev/null || true chmod 0750 "$RUNTIME_DIR" 2>/dev/null || true - chown -R goclaw:goclaw "$RUNTIME_DIR/pip" "$RUNTIME_DIR/npm-global" "$RUNTIME_DIR/pip-cache" 2>/dev/null || true + chown -R argoclaw:argoclaw "$RUNTIME_DIR/pip" "$RUNTIME_DIR/npm-global" "$RUNTIME_DIR/pip-cache" 2>/dev/null || true fi # Python: allow agent to pip install to writable target dir @@ -36,7 +36,7 @@ export PATH="$RUNTIME_DIR/npm-global/bin:$RUNTIME_DIR/pip/bin:$PATH" APK_LIST="$RUNTIME_DIR/apk-packages" if [ "$(id -u)" = "0" ]; then touch "$APK_LIST" 2>/dev/null || true - chown root:goclaw "$APK_LIST" 2>/dev/null || true + chown root:argoclaw "$APK_LIST" 2>/dev/null || true chmod 0640 "$APK_LIST" 2>/dev/null || true fi if [ -f "$APK_LIST" ] && [ -s "$APK_LIST" ]; then @@ -73,9 +73,9 @@ if [ -x /app/pkg-helper ] && [ "$(id -u)" = "0" ]; then fi # Run command with privilege drop (su-exec in Docker, direct otherwise). -run_as_goclaw() { +run_as_argoclaw() { if command -v su-exec >/dev/null 2>&1 && [ "$(id -u)" = "0" ]; then - exec su-exec goclaw "$@" + exec su-exec argoclaw "$@" else exec "$@" fi @@ -84,33 +84,33 @@ run_as_goclaw() { case "${1:-serve}" in serve) # Auto-upgrade (schema migrations + data hooks) before starting. - if [ -n "$GOCLAW_POSTGRES_DSN" ]; then + if [ -n "$ARGOCLAW_POSTGRES_DSN" ]; then echo "Running database upgrade..." if command -v su-exec >/dev/null 2>&1 && [ "$(id -u)" = "0" ]; then - su-exec goclaw /app/goclaw upgrade || \ + su-exec argoclaw /app/argoclaw upgrade || \ echo "Upgrade warning (may already be up-to-date)" else - /app/goclaw upgrade || \ + /app/argoclaw upgrade || \ echo "Upgrade warning (may already be up-to-date)" fi fi - run_as_goclaw /app/goclaw + run_as_argoclaw /app/argoclaw ;; upgrade) shift - run_as_goclaw /app/goclaw upgrade "$@" + run_as_argoclaw /app/argoclaw upgrade "$@" ;; migrate) shift - run_as_goclaw /app/goclaw migrate "$@" + run_as_argoclaw /app/argoclaw migrate "$@" ;; onboard) - run_as_goclaw /app/goclaw onboard + run_as_argoclaw /app/argoclaw onboard ;; version) - run_as_goclaw /app/goclaw version + run_as_argoclaw /app/argoclaw version ;; *) - run_as_goclaw /app/goclaw "$@" + run_as_argoclaw /app/argoclaw "$@" ;; esac diff --git a/go.mod b/go.mod index 47b1782fc..a1b22d7c2 100644 --- a/go.mod +++ b/go.mod @@ -1,4 +1,4 @@ -module github.com/nextlevelbuilder/goclaw +module github.com/vellus-ai/argoclaw go 1.26.0 diff --git a/internal/agent/extractive_memory.go b/internal/agent/extractive_memory.go index 24aefd42d..219b2707d 100644 --- a/internal/agent/extractive_memory.go +++ b/internal/agent/extractive_memory.go @@ -4,7 +4,7 @@ import ( "regexp" "strings" - "github.com/nextlevelbuilder/goclaw/internal/providers" + "github.com/vellus-ai/arargoclaw/internal/providers" ) // Regex patterns for extractive memory fallback. diff --git a/internal/agent/inject.go b/internal/agent/inject.go index 02e238415..f5866995f 100644 --- a/internal/agent/inject.go +++ b/internal/agent/inject.go @@ -5,9 +5,9 @@ import ( "log/slog" "strings" - "github.com/nextlevelbuilder/goclaw/internal/config" - "github.com/nextlevelbuilder/goclaw/internal/providers" - "github.com/nextlevelbuilder/goclaw/pkg/protocol" + "github.com/vellus-ai/arargoclaw/internal/config" + "github.com/vellus-ai/arargoclaw/internal/providers" + "github.com/vellus-ai/arargoclaw/pkg/protocol" ) // InjectedMessage represents a user message injected into a running agent loop diff --git a/internal/agent/intent_classify.go b/internal/agent/intent_classify.go index 675a8ff72..64419f6e1 100644 --- a/internal/agent/intent_classify.go +++ b/internal/agent/intent_classify.go @@ -6,8 +6,8 @@ import ( "time" "unicode/utf8" - "github.com/nextlevelbuilder/goclaw/internal/i18n" - "github.com/nextlevelbuilder/goclaw/internal/providers" + "github.com/vellus-ai/arargoclaw/internal/i18n" + "github.com/vellus-ai/arargoclaw/internal/providers" ) // IntentType represents the classified intent of a user message. diff --git a/internal/agent/loop.go b/internal/agent/loop.go index b260c459f..fc9a7f82c 100644 --- a/internal/agent/loop.go +++ b/internal/agent/loop.go @@ -15,14 +15,14 @@ import ( "github.com/google/uuid" - "github.com/nextlevelbuilder/goclaw/internal/bootstrap" - "github.com/nextlevelbuilder/goclaw/internal/bus" - "github.com/nextlevelbuilder/goclaw/internal/i18n" - "github.com/nextlevelbuilder/goclaw/internal/config" - "github.com/nextlevelbuilder/goclaw/internal/providers" - "github.com/nextlevelbuilder/goclaw/internal/store" - "github.com/nextlevelbuilder/goclaw/internal/tools" - "github.com/nextlevelbuilder/goclaw/pkg/protocol" + "github.com/vellus-ai/arargoclaw/internal/bootstrap" + "github.com/vellus-ai/arargoclaw/internal/bus" + "github.com/vellus-ai/arargoclaw/internal/i18n" + "github.com/vellus-ai/arargoclaw/internal/config" + "github.com/vellus-ai/arargoclaw/internal/providers" + "github.com/vellus-ai/arargoclaw/internal/store" + "github.com/vellus-ai/arargoclaw/internal/tools" + "github.com/vellus-ai/arargoclaw/pkg/protocol" ) func (l *Loop) runLoop(ctx context.Context, req RunRequest) (*RunResult, error) { diff --git a/internal/agent/loop_compact.go b/internal/agent/loop_compact.go index 108a00d3f..402300ac4 100644 --- a/internal/agent/loop_compact.go +++ b/internal/agent/loop_compact.go @@ -7,7 +7,7 @@ import ( "strings" "time" - "github.com/nextlevelbuilder/goclaw/internal/providers" + "github.com/vellus-ai/arargoclaw/internal/providers" ) // compactMessagesInPlace summarizes the first ~70% of messages into a condensed diff --git a/internal/agent/loop_history.go b/internal/agent/loop_history.go index 7e67d883e..41e6788e8 100644 --- a/internal/agent/loop_history.go +++ b/internal/agent/loop_history.go @@ -11,11 +11,11 @@ import ( "time" "github.com/google/uuid" - "github.com/nextlevelbuilder/goclaw/internal/bootstrap" - "github.com/nextlevelbuilder/goclaw/internal/config" - "github.com/nextlevelbuilder/goclaw/internal/providers" - "github.com/nextlevelbuilder/goclaw/internal/store" - "github.com/nextlevelbuilder/goclaw/internal/tools" + "github.com/vellus-ai/arargoclaw/internal/bootstrap" + "github.com/vellus-ai/arargoclaw/internal/config" + "github.com/vellus-ai/arargoclaw/internal/providers" + "github.com/vellus-ai/arargoclaw/internal/store" + "github.com/vellus-ai/arargoclaw/internal/tools" ) // filteredToolNames returns tool names after applying policy filters. diff --git a/internal/agent/loop_history_test.go b/internal/agent/loop_history_test.go index 189a452bd..b438ac8d6 100644 --- a/internal/agent/loop_history_test.go +++ b/internal/agent/loop_history_test.go @@ -3,7 +3,7 @@ package agent import ( "testing" - "github.com/nextlevelbuilder/goclaw/internal/providers" + "github.com/vellus-ai/arargoclaw/internal/providers" ) func TestLimitHistoryTurns_NoLimit(t *testing.T) { diff --git a/internal/agent/loop_lazy_mcp_test.go b/internal/agent/loop_lazy_mcp_test.go index 1b3d9da5b..44ace7447 100644 --- a/internal/agent/loop_lazy_mcp_test.go +++ b/internal/agent/loop_lazy_mcp_test.go @@ -4,8 +4,8 @@ import ( "context" "testing" - "github.com/nextlevelbuilder/goclaw/internal/config" - "github.com/nextlevelbuilder/goclaw/internal/tools" + "github.com/vellus-ai/arargoclaw/internal/config" + "github.com/vellus-ai/arargoclaw/internal/tools" ) // mockExecTool is a simple tool that records whether it was executed. diff --git a/internal/agent/loop_run.go b/internal/agent/loop_run.go index 8b3293352..28d768c54 100644 --- a/internal/agent/loop_run.go +++ b/internal/agent/loop_run.go @@ -7,10 +7,10 @@ import ( "github.com/google/uuid" - "github.com/nextlevelbuilder/goclaw/internal/store" - "github.com/nextlevelbuilder/goclaw/internal/tools" - "github.com/nextlevelbuilder/goclaw/internal/tracing" - "github.com/nextlevelbuilder/goclaw/pkg/protocol" + "github.com/vellus-ai/arargoclaw/internal/store" + "github.com/vellus-ai/arargoclaw/internal/tools" + "github.com/vellus-ai/arargoclaw/internal/tracing" + "github.com/vellus-ai/arargoclaw/pkg/protocol" ) // Run processes a single message through the agent loop. diff --git a/internal/agent/loop_tracing.go b/internal/agent/loop_tracing.go index f7805a5bf..03a53649d 100644 --- a/internal/agent/loop_tracing.go +++ b/internal/agent/loop_tracing.go @@ -10,10 +10,10 @@ import ( "github.com/google/uuid" - "github.com/nextlevelbuilder/goclaw/internal/providers" - "github.com/nextlevelbuilder/goclaw/internal/store" - "github.com/nextlevelbuilder/goclaw/internal/tools" - "github.com/nextlevelbuilder/goclaw/internal/tracing" + "github.com/vellus-ai/arargoclaw/internal/providers" + "github.com/vellus-ai/arargoclaw/internal/store" + "github.com/vellus-ai/arargoclaw/internal/tools" + "github.com/vellus-ai/arargoclaw/internal/tracing" ) func (l *Loop) emit(event AgentEvent) { diff --git a/internal/agent/loop_types.go b/internal/agent/loop_types.go index 00c509bf8..860ade790 100644 --- a/internal/agent/loop_types.go +++ b/internal/agent/loop_types.go @@ -7,16 +7,16 @@ import ( "github.com/google/uuid" - "github.com/nextlevelbuilder/goclaw/internal/bootstrap" - "github.com/nextlevelbuilder/goclaw/internal/bus" - "github.com/nextlevelbuilder/goclaw/internal/config" - "github.com/nextlevelbuilder/goclaw/internal/media" - "github.com/nextlevelbuilder/goclaw/internal/providers" - "github.com/nextlevelbuilder/goclaw/internal/sandbox" - "github.com/nextlevelbuilder/goclaw/internal/skills" - "github.com/nextlevelbuilder/goclaw/internal/store" - "github.com/nextlevelbuilder/goclaw/internal/tools" - "github.com/nextlevelbuilder/goclaw/internal/tracing" + "github.com/vellus-ai/arargoclaw/internal/bootstrap" + "github.com/vellus-ai/arargoclaw/internal/bus" + "github.com/vellus-ai/arargoclaw/internal/config" + "github.com/vellus-ai/arargoclaw/internal/media" + "github.com/vellus-ai/arargoclaw/internal/providers" + "github.com/vellus-ai/arargoclaw/internal/sandbox" + "github.com/vellus-ai/arargoclaw/internal/skills" + "github.com/vellus-ai/arargoclaw/internal/store" + "github.com/vellus-ai/arargoclaw/internal/tools" + "github.com/vellus-ai/arargoclaw/internal/tracing" ) // bootstrapAutoCleanupTurns is the number of user messages after which diff --git a/internal/agent/loop_utils.go b/internal/agent/loop_utils.go index aea25d6f9..5cf174db9 100644 --- a/internal/agent/loop_utils.go +++ b/internal/agent/loop_utils.go @@ -6,8 +6,8 @@ import ( "slices" "strings" - "github.com/nextlevelbuilder/goclaw/internal/providers" - "github.com/nextlevelbuilder/goclaw/internal/tools" + "github.com/vellus-ai/arargoclaw/internal/providers" + "github.com/vellus-ai/arargoclaw/internal/tools" ) // sanitizePathSegment makes a userID safe for use as a directory name. diff --git a/internal/agent/media.go b/internal/agent/media.go index 6223d66e9..6f81ba1de 100644 --- a/internal/agent/media.go +++ b/internal/agent/media.go @@ -8,8 +8,8 @@ import ( "path/filepath" "strings" - "github.com/nextlevelbuilder/goclaw/internal/bus" - "github.com/nextlevelbuilder/goclaw/internal/providers" + "github.com/vellus-ai/arargoclaw/internal/bus" + "github.com/vellus-ai/arargoclaw/internal/providers" ) // maxImageBytes is the safety limit for reading image files (10MB). diff --git a/internal/agent/media_sanitize.go b/internal/agent/media_sanitize.go index a06ead509..f9263a8f9 100644 --- a/internal/agent/media_sanitize.go +++ b/internal/agent/media_sanitize.go @@ -51,7 +51,7 @@ func SanitizeImage(inputPath string) (string, error) { return "", fmt.Errorf("encode jpeg (q=%d): %w", quality, err) } if buf.Len() <= imageSanitizeMaxBytes { - outPath := filepath.Join(os.TempDir(), fmt.Sprintf("goclaw_sanitized_%d.jpg", os.Getpid())) + outPath := filepath.Join(os.TempDir(), fmt.Sprintf("argoclaw_sanitized_%d.jpg", os.Getpid())) if err := os.WriteFile(outPath, buf.Bytes(), 0644); err != nil { return "", fmt.Errorf("write sanitized image: %w", err) } diff --git a/internal/agent/media_tool_routing.go b/internal/agent/media_tool_routing.go index e2231837e..f89361e33 100644 --- a/internal/agent/media_tool_routing.go +++ b/internal/agent/media_tool_routing.go @@ -5,9 +5,9 @@ import ( "encoding/json" "log/slog" - "github.com/nextlevelbuilder/goclaw/internal/bus" - "github.com/nextlevelbuilder/goclaw/internal/providers" - "github.com/nextlevelbuilder/goclaw/internal/tools" + "github.com/vellus-ai/arargoclaw/internal/bus" + "github.com/vellus-ai/arargoclaw/internal/providers" + "github.com/vellus-ai/arargoclaw/internal/tools" ) // hasReadImageProvider checks if the read_image builtin tool has a dedicated provider configured. diff --git a/internal/agent/memoryflush.go b/internal/agent/memoryflush.go index 1abed4665..3e002bca5 100644 --- a/internal/agent/memoryflush.go +++ b/internal/agent/memoryflush.go @@ -7,9 +7,9 @@ import ( "log/slog" "time" - "github.com/nextlevelbuilder/goclaw/internal/config" - "github.com/nextlevelbuilder/goclaw/internal/providers" - "github.com/nextlevelbuilder/goclaw/internal/store" + "github.com/vellus-ai/arargoclaw/internal/config" + "github.com/vellus-ai/arargoclaw/internal/providers" + "github.com/vellus-ai/arargoclaw/internal/store" ) // Default memory flush prompts matching TS memory-flush.ts. diff --git a/internal/agent/pruning.go b/internal/agent/pruning.go index 0aec34fbb..47e00e061 100644 --- a/internal/agent/pruning.go +++ b/internal/agent/pruning.go @@ -4,8 +4,8 @@ import ( "fmt" "unicode/utf8" - "github.com/nextlevelbuilder/goclaw/internal/config" - "github.com/nextlevelbuilder/goclaw/internal/providers" + "github.com/vellus-ai/arargoclaw/internal/config" + "github.com/vellus-ai/arargoclaw/internal/providers" ) // Context pruning defaults matching TS DEFAULT_CONTEXT_PRUNING_SETTINGS. diff --git a/internal/agent/resolver.go b/internal/agent/resolver.go index 137fde475..841d133e1 100644 --- a/internal/agent/resolver.go +++ b/internal/agent/resolver.go @@ -8,17 +8,17 @@ import ( "path/filepath" "github.com/google/uuid" - "github.com/nextlevelbuilder/goclaw/internal/bootstrap" - "github.com/nextlevelbuilder/goclaw/internal/bus" - "github.com/nextlevelbuilder/goclaw/internal/config" - mcpbridge "github.com/nextlevelbuilder/goclaw/internal/mcp" - "github.com/nextlevelbuilder/goclaw/internal/media" - "github.com/nextlevelbuilder/goclaw/internal/providers" - "github.com/nextlevelbuilder/goclaw/internal/sandbox" - "github.com/nextlevelbuilder/goclaw/internal/skills" - "github.com/nextlevelbuilder/goclaw/internal/store" - "github.com/nextlevelbuilder/goclaw/internal/tools" - "github.com/nextlevelbuilder/goclaw/internal/tracing" + "github.com/vellus-ai/arargoclaw/internal/bootstrap" + "github.com/vellus-ai/arargoclaw/internal/bus" + "github.com/vellus-ai/arargoclaw/internal/config" + mcpbridge "github.com/vellus-ai/arargoclaw/internal/mcp" + "github.com/vellus-ai/arargoclaw/internal/media" + "github.com/vellus-ai/arargoclaw/internal/providers" + "github.com/vellus-ai/arargoclaw/internal/sandbox" + "github.com/vellus-ai/arargoclaw/internal/skills" + "github.com/vellus-ai/arargoclaw/internal/store" + "github.com/vellus-ai/arargoclaw/internal/tools" + "github.com/vellus-ai/arargoclaw/internal/tracing" ) // ResolverDeps holds shared dependencies for the agent resolver. diff --git a/internal/agent/resolver_helpers.go b/internal/agent/resolver_helpers.go index b3fabf024..0eea99ce1 100644 --- a/internal/agent/resolver_helpers.go +++ b/internal/agent/resolver_helpers.go @@ -7,9 +7,9 @@ import ( "github.com/google/uuid" - "github.com/nextlevelbuilder/goclaw/internal/config" - "github.com/nextlevelbuilder/goclaw/internal/store" - "github.com/nextlevelbuilder/goclaw/internal/tools" + "github.com/vellus-ai/arargoclaw/internal/config" + "github.com/vellus-ai/arargoclaw/internal/store" + "github.com/vellus-ai/arargoclaw/internal/tools" ) // buildTeamMD generates compact TEAM.md content for an agent that is part of a team. diff --git a/internal/agent/sanitize.go b/internal/agent/sanitize.go index b0917e024..b5f0b7cfb 100644 --- a/internal/agent/sanitize.go +++ b/internal/agent/sanitize.go @@ -21,7 +21,7 @@ import ( "regexp" "strings" - "github.com/nextlevelbuilder/goclaw/internal/store" + "github.com/vellus-ai/arargoclaw/internal/store" ) // SanitizeAssistantContent applies the full sanitization pipeline to assistant diff --git a/internal/agent/systemprompt.go b/internal/agent/systemprompt.go index 598289b35..91e6543e1 100644 --- a/internal/agent/systemprompt.go +++ b/internal/agent/systemprompt.go @@ -5,9 +5,9 @@ import ( "log/slog" "strings" - "github.com/nextlevelbuilder/goclaw/internal/bootstrap" - "github.com/nextlevelbuilder/goclaw/internal/store" - "github.com/nextlevelbuilder/goclaw/internal/tools" + "github.com/vellus-ai/arargoclaw/internal/bootstrap" + "github.com/vellus-ai/arargoclaw/internal/store" + "github.com/vellus-ai/arargoclaw/internal/tools" ) // PromptMode controls which system prompt sections are included. diff --git a/internal/agent/systemprompt_sections.go b/internal/agent/systemprompt_sections.go index c9af9681d..7e597a335 100644 --- a/internal/agent/systemprompt_sections.go +++ b/internal/agent/systemprompt_sections.go @@ -7,8 +7,8 @@ import ( "strings" "time" - "github.com/nextlevelbuilder/goclaw/internal/bootstrap" - "github.com/nextlevelbuilder/goclaw/internal/store" + "github.com/vellus-ai/arargoclaw/internal/bootstrap" + "github.com/vellus-ai/arargoclaw/internal/store" ) // mcpToolDescMaxLen is the max character length for MCP tool descriptions diff --git a/internal/agent/title_generate.go b/internal/agent/title_generate.go index 627a45343..e6fbf2dd6 100644 --- a/internal/agent/title_generate.go +++ b/internal/agent/title_generate.go @@ -6,7 +6,7 @@ import ( "strings" "time" - "github.com/nextlevelbuilder/goclaw/internal/providers" + "github.com/vellus-ai/arargoclaw/internal/providers" ) const titleGenerateTimeout = 120 * time.Second diff --git a/internal/agent/tool_timing.go b/internal/agent/tool_timing.go index e79965562..85df26b83 100644 --- a/internal/agent/tool_timing.go +++ b/internal/agent/tool_timing.go @@ -5,7 +5,7 @@ import ( "log/slog" "time" - "github.com/nextlevelbuilder/goclaw/pkg/protocol" + "github.com/vellus-ai/arargoclaw/pkg/protocol" ) // defaultSlowToolThreshold is used when no historical data is available for a tool. diff --git a/internal/agent/types.go b/internal/agent/types.go index e39ca1868..f3765f292 100644 --- a/internal/agent/types.go +++ b/internal/agent/types.go @@ -3,7 +3,7 @@ package agent import ( "context" - "github.com/nextlevelbuilder/goclaw/internal/providers" + "github.com/vellus-ai/arargoclaw/internal/providers" ) // Agent is the core abstraction for an AI agent execution loop. diff --git a/internal/agent/workspace_sharing_test.go b/internal/agent/workspace_sharing_test.go index f67bc82b1..23f8dc0db 100644 --- a/internal/agent/workspace_sharing_test.go +++ b/internal/agent/workspace_sharing_test.go @@ -3,7 +3,7 @@ package agent import ( "testing" - "github.com/nextlevelbuilder/goclaw/internal/store" + "github.com/vellus-ai/arargoclaw/internal/store" ) func TestShouldShareWorkspace_NilConfig(t *testing.T) { diff --git a/internal/bootstrap/load_store.go b/internal/bootstrap/load_store.go index 22fd135da..65e33b1e9 100644 --- a/internal/bootstrap/load_store.go +++ b/internal/bootstrap/load_store.go @@ -6,7 +6,7 @@ import ( "github.com/google/uuid" - "github.com/nextlevelbuilder/goclaw/internal/store" + "github.com/vellus-ai/arargoclaw/internal/store" ) // LoadFromStore loads agent-level context files from the agent store (DB). diff --git a/internal/bootstrap/seed_store.go b/internal/bootstrap/seed_store.go index 397299928..30f7b24e2 100644 --- a/internal/bootstrap/seed_store.go +++ b/internal/bootstrap/seed_store.go @@ -7,7 +7,7 @@ import ( "github.com/google/uuid" - "github.com/nextlevelbuilder/goclaw/internal/store" + "github.com/vellus-ai/arargoclaw/internal/store" ) // SeedToStore seeds embedded templates into agent_context_files (agent-level). diff --git a/internal/bootstrap/seed_store_test.go b/internal/bootstrap/seed_store_test.go index 61f323781..594a43853 100644 --- a/internal/bootstrap/seed_store_test.go +++ b/internal/bootstrap/seed_store_test.go @@ -7,7 +7,7 @@ import ( "github.com/google/uuid" - "github.com/nextlevelbuilder/goclaw/internal/store" + "github.com/vellus-ai/arargoclaw/internal/store" ) // ---- minimal AgentStore stub for seed tests ---- diff --git a/internal/cache/redis.go b/internal/cache/redis.go index daee21283..2cb085782 100644 --- a/internal/cache/redis.go +++ b/internal/cache/redis.go @@ -19,17 +19,17 @@ type RedisCache[V any] struct { } // NewRedisCache creates a Redis-backed cache with the given key prefix. -// Keys are stored as "goclaw:{prefix}:{key}". +// Keys are stored as "argoclaw:{prefix}:{key}". func NewRedisCache[V any](client *redis.Client, prefix string) *RedisCache[V] { return &RedisCache[V]{client: client, prefix: prefix} } func (c *RedisCache[V]) fullKey(key string) string { - return "goclaw:" + c.prefix + ":" + key + return "argoclaw:" + c.prefix + ":" + key } func (c *RedisCache[V]) keyPattern() string { - return "goclaw:" + c.prefix + ":*" + return "argoclaw:" + c.prefix + ":*" } func (c *RedisCache[V]) Get(ctx context.Context, key string) (V, bool) { @@ -64,7 +64,7 @@ func (c *RedisCache[V]) Delete(ctx context.Context, key string) { } func (c *RedisCache[V]) DeleteByPrefix(ctx context.Context, prefix string) { - pattern := "goclaw:" + c.prefix + ":" + prefix + "*" + pattern := "argoclaw:" + c.prefix + ":" + prefix + "*" c.deleteByPattern(ctx, pattern) } diff --git a/internal/channels/channel.go b/internal/channels/channel.go index 5d4d26e8f..3131cf332 100644 --- a/internal/channels/channel.go +++ b/internal/channels/channel.go @@ -2,7 +2,7 @@ // Channels connect external platforms (Telegram, Discord, Slack, etc.) to the agent runtime // via the message bus. // -// Adapted from PicoClaw's pkg/channels with GoClaw-specific additions: +// Adapted from PicoClaw's pkg/channels with ArgoClaw-specific additions: // - DM/Group policies (pairing, allowlist, open, disabled) // - Mention gating for group chats // - Rich MsgContext metadata @@ -14,8 +14,8 @@ import ( "net/http" "strings" - "github.com/nextlevelbuilder/goclaw/internal/bus" - "github.com/nextlevelbuilder/goclaw/internal/store" + "github.com/vellus-ai/arargoclaw/internal/bus" + "github.com/vellus-ai/arargoclaw/internal/store" ) // InternalChannels are system channels excluded from outbound dispatch. diff --git a/internal/channels/discord/commands_writers.go b/internal/channels/discord/commands_writers.go index 19a20c751..f40672e77 100644 --- a/internal/channels/discord/commands_writers.go +++ b/internal/channels/discord/commands_writers.go @@ -11,7 +11,7 @@ import ( "github.com/bwmarrin/discordgo" "github.com/google/uuid" - "github.com/nextlevelbuilder/goclaw/internal/store" + "github.com/vellus-ai/arargoclaw/internal/store" ) // resolveAgentUUID looks up the agent UUID from the channel's agent key. diff --git a/internal/channels/discord/discord.go b/internal/channels/discord/discord.go index 80f96a624..b39875c23 100644 --- a/internal/channels/discord/discord.go +++ b/internal/channels/discord/discord.go @@ -9,11 +9,11 @@ import ( "github.com/bwmarrin/discordgo" - "github.com/nextlevelbuilder/goclaw/internal/bus" - "github.com/nextlevelbuilder/goclaw/internal/channels" - "github.com/nextlevelbuilder/goclaw/internal/channels/typing" - "github.com/nextlevelbuilder/goclaw/internal/config" - "github.com/nextlevelbuilder/goclaw/internal/store" + "github.com/vellus-ai/arargoclaw/internal/bus" + "github.com/vellus-ai/arargoclaw/internal/channels" + "github.com/vellus-ai/arargoclaw/internal/channels/typing" + "github.com/vellus-ai/arargoclaw/internal/config" + "github.com/vellus-ai/arargoclaw/internal/store" ) const pairingDebounceTime = 60 * time.Second diff --git a/internal/channels/discord/factory.go b/internal/channels/discord/factory.go index f2bf2a7db..1693b66e7 100644 --- a/internal/channels/discord/factory.go +++ b/internal/channels/discord/factory.go @@ -4,10 +4,10 @@ import ( "encoding/json" "fmt" - "github.com/nextlevelbuilder/goclaw/internal/bus" - "github.com/nextlevelbuilder/goclaw/internal/channels" - "github.com/nextlevelbuilder/goclaw/internal/config" - "github.com/nextlevelbuilder/goclaw/internal/store" + "github.com/vellus-ai/arargoclaw/internal/bus" + "github.com/vellus-ai/arargoclaw/internal/channels" + "github.com/vellus-ai/arargoclaw/internal/config" + "github.com/vellus-ai/arargoclaw/internal/store" ) // discordCreds maps the credentials JSON from the channel_instances table. diff --git a/internal/channels/discord/handler.go b/internal/channels/discord/handler.go index 9ed8d611b..136818e10 100644 --- a/internal/channels/discord/handler.go +++ b/internal/channels/discord/handler.go @@ -9,10 +9,10 @@ import ( "github.com/bwmarrin/discordgo" - "github.com/nextlevelbuilder/goclaw/internal/bus" - "github.com/nextlevelbuilder/goclaw/internal/channels" - "github.com/nextlevelbuilder/goclaw/internal/channels/media" - "github.com/nextlevelbuilder/goclaw/internal/channels/typing" + "github.com/vellus-ai/arargoclaw/internal/bus" + "github.com/vellus-ai/arargoclaw/internal/channels" + "github.com/vellus-ai/arargoclaw/internal/channels/media" + "github.com/vellus-ai/arargoclaw/internal/channels/typing" ) // handleMessage processes incoming Discord messages. @@ -377,7 +377,7 @@ func (c *Channel) sendPairingReply(senderID, channelID string) { } replyText := fmt.Sprintf( - "GoClaw: access not configured.\n\nYour Discord user ID: %s\n\nPairing code: %s\n\nAsk the bot owner to approve with:\n goclaw pairing approve %s", + "ArgoClaw: access not configured.\n\nYour Discord user ID: %s\n\nPairing code: %s\n\nAsk the bot owner to approve with:\n argoclaw pairing approve %s", senderID, code, code, ) diff --git a/internal/channels/discord/media.go b/internal/channels/discord/media.go index 8cc746cb1..3cc542432 100644 --- a/internal/channels/discord/media.go +++ b/internal/channels/discord/media.go @@ -12,7 +12,7 @@ import ( "github.com/bwmarrin/discordgo" - "github.com/nextlevelbuilder/goclaw/internal/channels/media" + "github.com/vellus-ai/arargoclaw/internal/channels/media" ) const ( diff --git a/internal/channels/discord/send_media.go b/internal/channels/discord/send_media.go index 99bc582b2..bbad36b9c 100644 --- a/internal/channels/discord/send_media.go +++ b/internal/channels/discord/send_media.go @@ -7,7 +7,7 @@ import ( "github.com/bwmarrin/discordgo" - "github.com/nextlevelbuilder/goclaw/internal/bus" + "github.com/vellus-ai/arargoclaw/internal/bus" ) // sendMediaMessage sends media attachments to a Discord channel using file uploads. diff --git a/internal/channels/discord/stt.go b/internal/channels/discord/stt.go index ad89d826c..1213b56dc 100644 --- a/internal/channels/discord/stt.go +++ b/internal/channels/discord/stt.go @@ -3,7 +3,7 @@ package discord import ( "context" - "github.com/nextlevelbuilder/goclaw/internal/channels/media" + "github.com/vellus-ai/arargoclaw/internal/channels/media" ) // transcribeAudio calls the shared STT proxy service with the given audio file. diff --git a/internal/channels/dispatch.go b/internal/channels/dispatch.go index 4d2030bbd..d7644b920 100644 --- a/internal/channels/dispatch.go +++ b/internal/channels/dispatch.go @@ -9,7 +9,7 @@ import ( "regexp" "strings" - "github.com/nextlevelbuilder/goclaw/internal/bus" + "github.com/vellus-ai/arargoclaw/internal/bus" ) // WebhookRoute holds a path and handler pair for mounting on the main gateway mux. diff --git a/internal/channels/events.go b/internal/channels/events.go index af552f7ee..edb2256bc 100644 --- a/internal/channels/events.go +++ b/internal/channels/events.go @@ -6,8 +6,8 @@ import ( "log/slog" "strings" - "github.com/nextlevelbuilder/goclaw/internal/bus" - "github.com/nextlevelbuilder/goclaw/pkg/protocol" + "github.com/vellus-ai/arargoclaw/internal/bus" + "github.com/vellus-ai/arargoclaw/pkg/protocol" ) // HandleAgentEvent routes agent lifecycle events to streaming/reaction channels. diff --git a/internal/channels/feishu/bot.go b/internal/channels/feishu/bot.go index 87ce4b0a0..d495eedeb 100644 --- a/internal/channels/feishu/bot.go +++ b/internal/channels/feishu/bot.go @@ -6,9 +6,9 @@ import ( "log/slog" "time" - "github.com/nextlevelbuilder/goclaw/internal/bus" - "github.com/nextlevelbuilder/goclaw/internal/channels" - "github.com/nextlevelbuilder/goclaw/internal/channels/media" + "github.com/vellus-ai/arargoclaw/internal/bus" + "github.com/vellus-ai/arargoclaw/internal/channels" + "github.com/vellus-ai/arargoclaw/internal/channels/media" ) // messageContext holds parsed information from a Feishu message event. diff --git a/internal/channels/feishu/bot_policy.go b/internal/channels/feishu/bot_policy.go index f91724dac..7a5bf87b5 100644 --- a/internal/channels/feishu/bot_policy.go +++ b/internal/channels/feishu/bot_policy.go @@ -163,7 +163,7 @@ func (c *Channel) sendPairingReply(senderID, chatID string) { } replyText := fmt.Sprintf( - "GoClaw: access not configured.\n\nYour Feishu open_id: %s\n\nPairing code: %s\n\nAsk the bot owner to approve with:\n goclaw pairing approve %s", + "ArgoClaw: access not configured.\n\nYour Feishu open_id: %s\n\nPairing code: %s\n\nAsk the bot owner to approve with:\n argoclaw pairing approve %s", senderID, code, code, ) diff --git a/internal/channels/feishu/factory.go b/internal/channels/feishu/factory.go index 869a53726..08f4fc717 100644 --- a/internal/channels/feishu/factory.go +++ b/internal/channels/feishu/factory.go @@ -4,10 +4,10 @@ import ( "encoding/json" "fmt" - "github.com/nextlevelbuilder/goclaw/internal/bus" - "github.com/nextlevelbuilder/goclaw/internal/channels" - "github.com/nextlevelbuilder/goclaw/internal/config" - "github.com/nextlevelbuilder/goclaw/internal/store" + "github.com/vellus-ai/arargoclaw/internal/bus" + "github.com/vellus-ai/arargoclaw/internal/channels" + "github.com/vellus-ai/arargoclaw/internal/config" + "github.com/vellus-ai/arargoclaw/internal/store" ) // feishuCreds maps the credentials JSON from the channel_instances table. diff --git a/internal/channels/feishu/feishu.go b/internal/channels/feishu/feishu.go index da87c40ee..0a6adf552 100644 --- a/internal/channels/feishu/feishu.go +++ b/internal/channels/feishu/feishu.go @@ -15,10 +15,10 @@ import ( "sync" "time" - "github.com/nextlevelbuilder/goclaw/internal/bus" - "github.com/nextlevelbuilder/goclaw/internal/channels" - "github.com/nextlevelbuilder/goclaw/internal/config" - "github.com/nextlevelbuilder/goclaw/internal/store" + "github.com/vellus-ai/arargoclaw/internal/bus" + "github.com/vellus-ai/arargoclaw/internal/channels" + "github.com/vellus-ai/arargoclaw/internal/config" + "github.com/vellus-ai/arargoclaw/internal/store" ) const ( diff --git a/internal/channels/feishu/media.go b/internal/channels/feishu/media.go index 8615a8dc0..4c812d361 100644 --- a/internal/channels/feishu/media.go +++ b/internal/channels/feishu/media.go @@ -9,7 +9,7 @@ import ( "path/filepath" "strings" - "github.com/nextlevelbuilder/goclaw/internal/bus" + "github.com/vellus-ai/arargoclaw/internal/bus" ) // downloadMessageResource downloads a message attachment (image, file, audio, video, sticker). diff --git a/internal/channels/feishu/media_inbound.go b/internal/channels/feishu/media_inbound.go index 5f6f8e038..2cb81050b 100644 --- a/internal/channels/feishu/media_inbound.go +++ b/internal/channels/feishu/media_inbound.go @@ -9,7 +9,7 @@ import ( "strings" "time" - "github.com/nextlevelbuilder/goclaw/internal/channels/media" + "github.com/vellus-ai/arargoclaw/internal/channels/media" ) // resolveMediaFromMessage extracts and downloads media from a Feishu message. diff --git a/internal/channels/feishu/stt.go b/internal/channels/feishu/stt.go index 6ec5f8ba3..44a2dec56 100644 --- a/internal/channels/feishu/stt.go +++ b/internal/channels/feishu/stt.go @@ -3,7 +3,7 @@ package feishu import ( "context" - "github.com/nextlevelbuilder/goclaw/internal/channels/media" + "github.com/vellus-ai/arargoclaw/internal/channels/media" ) // transcribeAudio calls the shared STT proxy service with the given audio file. diff --git a/internal/channels/history.go b/internal/channels/history.go index a5470e303..79fc69291 100644 --- a/internal/channels/history.go +++ b/internal/channels/history.go @@ -16,7 +16,7 @@ import ( "sync" "time" - "github.com/nextlevelbuilder/goclaw/internal/store" + "github.com/vellus-ai/arargoclaw/internal/store" ) // maxHistoryKeys is the max number of distinct groups/topics tracked in RAM. diff --git a/internal/channels/history_compaction.go b/internal/channels/history_compaction.go index 623497945..af276566c 100644 --- a/internal/channels/history_compaction.go +++ b/internal/channels/history_compaction.go @@ -9,8 +9,8 @@ import ( "github.com/google/uuid" - "github.com/nextlevelbuilder/goclaw/internal/providers" - "github.com/nextlevelbuilder/goclaw/internal/store" + "github.com/vellus-ai/arargoclaw/internal/providers" + "github.com/vellus-ai/arargoclaw/internal/store" ) // CompactionConfig configures LLM-based history compaction. diff --git a/internal/channels/history_flush.go b/internal/channels/history_flush.go index bd5501a90..afe52ca9f 100644 --- a/internal/channels/history_flush.go +++ b/internal/channels/history_flush.go @@ -5,7 +5,7 @@ import ( "log/slog" "time" - "github.com/nextlevelbuilder/goclaw/internal/store" + "github.com/vellus-ai/arargoclaw/internal/store" ) // StartFlusher starts the background DB flush goroutine. No-op if RAM-only. diff --git a/internal/channels/instance_loader.go b/internal/channels/instance_loader.go index 79f38109f..e374dacba 100644 --- a/internal/channels/instance_loader.go +++ b/internal/channels/instance_loader.go @@ -9,10 +9,10 @@ import ( "sync" "time" - "github.com/nextlevelbuilder/goclaw/internal/bus" - "github.com/nextlevelbuilder/goclaw/internal/config" - "github.com/nextlevelbuilder/goclaw/internal/providers" - "github.com/nextlevelbuilder/goclaw/internal/store" + "github.com/vellus-ai/arargoclaw/internal/bus" + "github.com/vellus-ai/arargoclaw/internal/config" + "github.com/vellus-ai/arargoclaw/internal/providers" + "github.com/vellus-ai/arargoclaw/internal/store" ) // ChannelFactory creates a Channel from DB instance data. diff --git a/internal/channels/manager.go b/internal/channels/manager.go index 33846bd8e..c10ddc745 100644 --- a/internal/channels/manager.go +++ b/internal/channels/manager.go @@ -6,8 +6,8 @@ import ( "log/slog" "sync" - "github.com/nextlevelbuilder/goclaw/internal/bus" - "github.com/nextlevelbuilder/goclaw/internal/store" + "github.com/vellus-ai/arargoclaw/internal/bus" + "github.com/vellus-ai/arargoclaw/internal/store" ) // ChannelStream is the per-run streaming handle stored on RunContext. diff --git a/internal/channels/quota.go b/internal/channels/quota.go index 8a9bcef6e..d732763c0 100644 --- a/internal/channels/quota.go +++ b/internal/channels/quota.go @@ -7,7 +7,7 @@ import ( "sync" "time" - "github.com/nextlevelbuilder/goclaw/internal/config" + "github.com/vellus-ai/arargoclaw/internal/config" ) // QuotaResult is returned by QuotaChecker.Check. diff --git a/internal/channels/slack/channel.go b/internal/channels/slack/channel.go index 8e9658477..6268d9b06 100644 --- a/internal/channels/slack/channel.go +++ b/internal/channels/slack/channel.go @@ -11,10 +11,10 @@ import ( slackapi "github.com/slack-go/slack" "github.com/slack-go/slack/socketmode" - "github.com/nextlevelbuilder/goclaw/internal/bus" - "github.com/nextlevelbuilder/goclaw/internal/channels" - "github.com/nextlevelbuilder/goclaw/internal/config" - "github.com/nextlevelbuilder/goclaw/internal/store" + "github.com/vellus-ai/arargoclaw/internal/bus" + "github.com/vellus-ai/arargoclaw/internal/channels" + "github.com/vellus-ai/arargoclaw/internal/config" + "github.com/vellus-ai/arargoclaw/internal/store" ) const ( diff --git a/internal/channels/slack/factory.go b/internal/channels/slack/factory.go index b1f96c729..916ee0581 100644 --- a/internal/channels/slack/factory.go +++ b/internal/channels/slack/factory.go @@ -4,10 +4,10 @@ import ( "encoding/json" "fmt" - "github.com/nextlevelbuilder/goclaw/internal/bus" - "github.com/nextlevelbuilder/goclaw/internal/channels" - "github.com/nextlevelbuilder/goclaw/internal/config" - "github.com/nextlevelbuilder/goclaw/internal/store" + "github.com/vellus-ai/arargoclaw/internal/bus" + "github.com/vellus-ai/arargoclaw/internal/channels" + "github.com/vellus-ai/arargoclaw/internal/config" + "github.com/vellus-ai/arargoclaw/internal/store" ) // slackCreds maps the credentials JSON from the channel_instances table. diff --git a/internal/channels/slack/handlers.go b/internal/channels/slack/handlers.go index 79827028f..be6e7bacb 100644 --- a/internal/channels/slack/handlers.go +++ b/internal/channels/slack/handlers.go @@ -11,7 +11,7 @@ import ( "github.com/slack-go/slack/slackevents" "github.com/slack-go/slack/socketmode" - "github.com/nextlevelbuilder/goclaw/internal/channels" + "github.com/vellus-ai/arargoclaw/internal/channels" ) func (c *Channel) handleEventsAPI(evt socketmode.Event) { diff --git a/internal/channels/slack/handlers_files.go b/internal/channels/slack/handlers_files.go index f96a1788f..d40034e0f 100644 --- a/internal/channels/slack/handlers_files.go +++ b/internal/channels/slack/handlers_files.go @@ -14,7 +14,7 @@ import ( slackapi "github.com/slack-go/slack" - "github.com/nextlevelbuilder/goclaw/internal/bus" + "github.com/vellus-ai/arargoclaw/internal/bus" ) // --- Message debounce/batching --- diff --git a/internal/channels/slack/handlers_mention.go b/internal/channels/slack/handlers_mention.go index 2a0ba6f75..0b4a4fdd4 100644 --- a/internal/channels/slack/handlers_mention.go +++ b/internal/channels/slack/handlers_mention.go @@ -9,7 +9,7 @@ import ( slackapi "github.com/slack-go/slack" "github.com/slack-go/slack/slackevents" - "github.com/nextlevelbuilder/goclaw/internal/channels" + "github.com/vellus-ai/arargoclaw/internal/channels" ) func (c *Channel) handleAppMention(ev *slackevents.AppMentionEvent) { @@ -212,10 +212,10 @@ func (c *Channel) sendPairingReply(senderID, channelID string) { var msg string if strings.HasPrefix(senderID, "group:") { msg = fmt.Sprintf("This channel is not authorized to use this bot.\n\n"+ - "An admin can approve via CLI:\n goclaw pairing approve %s\n\n"+ - "Or approve via the GoClaw web UI (Pairing section).", code) + "An admin can approve via CLI:\n argoclaw pairing approve %s\n\n"+ + "Or approve via the ArgoClaw web UI (Pairing section).", code) } else { - msg = fmt.Sprintf("GoClaw: access not configured.\n\nYour Slack user ID: %s\n\nPairing code: %s\n\nAsk the bot owner to approve with:\n goclaw pairing approve %s", + msg = fmt.Sprintf("ArgoClaw: access not configured.\n\nYour Slack user ID: %s\n\nPairing code: %s\n\nAsk the bot owner to approve with:\n argoclaw pairing approve %s", senderID, code, code) } if _, _, err := c.api.PostMessage(channelID, slackapi.MsgOptionText(msg, false)); err != nil { diff --git a/internal/channels/slack/media.go b/internal/channels/slack/media.go index 477566352..f2f960d78 100644 --- a/internal/channels/slack/media.go +++ b/internal/channels/slack/media.go @@ -7,7 +7,7 @@ import ( slackapi "github.com/slack-go/slack" - "github.com/nextlevelbuilder/goclaw/internal/channels/media" + "github.com/vellus-ai/arargoclaw/internal/channels/media" ) const defaultMediaMaxBytes int64 = 20 * 1024 * 1024 // 20MB diff --git a/internal/channels/slack/reactions.go b/internal/channels/slack/reactions.go index 4f6294cb3..a74cbb7e7 100644 --- a/internal/channels/slack/reactions.go +++ b/internal/channels/slack/reactions.go @@ -11,7 +11,7 @@ import ( const reactionDebounceInterval = 700 * time.Millisecond -// statusEmoji maps GoClaw agent status to Slack emoji names (without colons). +// statusEmoji maps ArgoClaw agent status to Slack emoji names (without colons). var statusEmoji = map[string]string{ "thinking": "thinking_face", "tool": "hammer_and_wrench", diff --git a/internal/channels/slack/send.go b/internal/channels/slack/send.go index 10f15c464..fcbf59365 100644 --- a/internal/channels/slack/send.go +++ b/internal/channels/slack/send.go @@ -8,7 +8,7 @@ import ( slackapi "github.com/slack-go/slack" - "github.com/nextlevelbuilder/goclaw/internal/bus" + "github.com/vellus-ai/arargoclaw/internal/bus" ) // Send delivers an outbound message to Slack. diff --git a/internal/channels/slack/stream.go b/internal/channels/slack/stream.go index ca0856505..ce138b709 100644 --- a/internal/channels/slack/stream.go +++ b/internal/channels/slack/stream.go @@ -9,7 +9,7 @@ import ( slackapi "github.com/slack-go/slack" - "github.com/nextlevelbuilder/goclaw/internal/channels" + "github.com/vellus-ai/arargoclaw/internal/channels" ) const streamThrottleInterval = 1000 * time.Millisecond diff --git a/internal/channels/slack/utils.go b/internal/channels/slack/utils.go index 307095c06..9ff5381d3 100644 --- a/internal/channels/slack/utils.go +++ b/internal/channels/slack/utils.go @@ -8,7 +8,7 @@ import ( "strings" "time" - "github.com/nextlevelbuilder/goclaw/internal/bus" + "github.com/vellus-ai/arargoclaw/internal/bus" ) // HandleMessage overrides BaseChannel to allow messages when the chatID (Slack channel) diff --git a/internal/channels/telegram/channel.go b/internal/channels/telegram/channel.go index ea6b61ad2..832fa854e 100644 --- a/internal/channels/telegram/channel.go +++ b/internal/channels/telegram/channel.go @@ -13,10 +13,10 @@ import ( "github.com/mymmrac/telego" - "github.com/nextlevelbuilder/goclaw/internal/bus" - "github.com/nextlevelbuilder/goclaw/internal/channels" - "github.com/nextlevelbuilder/goclaw/internal/config" - "github.com/nextlevelbuilder/goclaw/internal/store" + "github.com/vellus-ai/arargoclaw/internal/bus" + "github.com/vellus-ai/arargoclaw/internal/channels" + "github.com/vellus-ai/arargoclaw/internal/config" + "github.com/vellus-ai/arargoclaw/internal/store" ) // Channel connects to Telegram via the Bot API using long polling. diff --git a/internal/channels/telegram/commands.go b/internal/channels/telegram/commands.go index 372b5eb01..05500dca7 100644 --- a/internal/channels/telegram/commands.go +++ b/internal/channels/telegram/commands.go @@ -10,7 +10,7 @@ import ( "github.com/mymmrac/telego" tu "github.com/mymmrac/telego/telegoutil" - "github.com/nextlevelbuilder/goclaw/internal/bus" + "github.com/vellus-ai/arargoclaw/internal/bus" ) // resolveAgentUUID looks up the agent UUID from the channel's agent key. diff --git a/internal/channels/telegram/commands_pairing.go b/internal/channels/telegram/commands_pairing.go index 9ff8446a5..39ec063fc 100644 --- a/internal/channels/telegram/commands_pairing.go +++ b/internal/channels/telegram/commands_pairing.go @@ -100,7 +100,7 @@ func (c *Channel) SendPairingApproved(ctx context.Context, chatID, botName strin return fmt.Errorf("invalid chat ID: %w", err) } if botName == "" { - botName = "GoClaw" + botName = "ArgoClaw" } msg := tu.Message(tu.ID(id), fmt.Sprintf("✅ %s access approved. Send a message to start chatting.", botName)) diff --git a/internal/channels/telegram/commands_tasks.go b/internal/channels/telegram/commands_tasks.go index fa9883a1a..84b3a6a9a 100644 --- a/internal/channels/telegram/commands_tasks.go +++ b/internal/channels/telegram/commands_tasks.go @@ -9,7 +9,7 @@ import ( "github.com/mymmrac/telego" tu "github.com/mymmrac/telego/telegoutil" - "github.com/nextlevelbuilder/goclaw/internal/store" + "github.com/vellus-ai/arargoclaw/internal/store" ) // --- Team tasks --- diff --git a/internal/channels/telegram/commands_writers.go b/internal/channels/telegram/commands_writers.go index a0cde2005..0cbab9c39 100644 --- a/internal/channels/telegram/commands_writers.go +++ b/internal/channels/telegram/commands_writers.go @@ -10,7 +10,7 @@ import ( "github.com/mymmrac/telego" tu "github.com/mymmrac/telego/telegoutil" - "github.com/nextlevelbuilder/goclaw/internal/store" + "github.com/vellus-ai/arargoclaw/internal/store" ) // handleWriterCommand handles /addwriter and /removewriter commands. diff --git a/internal/channels/telegram/factory.go b/internal/channels/telegram/factory.go index e379606ff..d680cf8a6 100644 --- a/internal/channels/telegram/factory.go +++ b/internal/channels/telegram/factory.go @@ -4,10 +4,10 @@ import ( "encoding/json" "fmt" - "github.com/nextlevelbuilder/goclaw/internal/bus" - "github.com/nextlevelbuilder/goclaw/internal/channels" - "github.com/nextlevelbuilder/goclaw/internal/config" - "github.com/nextlevelbuilder/goclaw/internal/store" + "github.com/vellus-ai/arargoclaw/internal/bus" + "github.com/vellus-ai/arargoclaw/internal/channels" + "github.com/vellus-ai/arargoclaw/internal/config" + "github.com/vellus-ai/arargoclaw/internal/store" ) // telegramCreds maps the credentials JSON from the channel_instances table. diff --git a/internal/channels/telegram/handlers.go b/internal/channels/telegram/handlers.go index aa332eac8..184f9ffd3 100644 --- a/internal/channels/telegram/handlers.go +++ b/internal/channels/telegram/handlers.go @@ -10,9 +10,9 @@ import ( "github.com/mymmrac/telego" tu "github.com/mymmrac/telego/telegoutil" - "github.com/nextlevelbuilder/goclaw/internal/bus" - "github.com/nextlevelbuilder/goclaw/internal/channels" - "github.com/nextlevelbuilder/goclaw/internal/channels/typing" + "github.com/vellus-ai/arargoclaw/internal/bus" + "github.com/vellus-ai/arargoclaw/internal/channels" + "github.com/vellus-ai/arargoclaw/internal/channels/typing" ) // handleMessage processes an incoming Telegram update. diff --git a/internal/channels/telegram/media.go b/internal/channels/telegram/media.go index f8e777976..af3c9ff41 100644 --- a/internal/channels/telegram/media.go +++ b/internal/channels/telegram/media.go @@ -14,8 +14,8 @@ import ( "github.com/mymmrac/telego" - "github.com/nextlevelbuilder/goclaw/internal/channels/media" - "github.com/nextlevelbuilder/goclaw/internal/tools" + "github.com/vellus-ai/arargoclaw/internal/channels/media" + "github.com/vellus-ai/arargoclaw/internal/tools" ) const ( @@ -291,7 +291,7 @@ func (c *Channel) downloadMedia(ctx context.Context, fileID string, maxBytes int ext = ".bin" } - tmpFile, err := os.CreateTemp("", "goclaw_media_*"+ext) + tmpFile, err := os.CreateTemp("", "argoclaw_media_*"+ext) if err != nil { return "", fmt.Errorf("create temp file: %w", err) } @@ -336,7 +336,7 @@ func copyLocalFile(srcPath string, maxBytes int64) (string, error) { ext = ".bin" } - tmpFile, err := os.CreateTemp("", "goclaw_media_*"+ext) + tmpFile, err := os.CreateTemp("", "argoclaw_media_*"+ext) if err != nil { return "", fmt.Errorf("create temp file: %w", err) } diff --git a/internal/channels/telegram/send.go b/internal/channels/telegram/send.go index e0754df6f..9dae45857 100644 --- a/internal/channels/telegram/send.go +++ b/internal/channels/telegram/send.go @@ -15,8 +15,8 @@ import ( "github.com/mymmrac/telego/telegoapi" tu "github.com/mymmrac/telego/telegoutil" - "github.com/nextlevelbuilder/goclaw/internal/bus" - "github.com/nextlevelbuilder/goclaw/internal/channels/typing" + "github.com/vellus-ai/arargoclaw/internal/bus" + "github.com/vellus-ai/arargoclaw/internal/channels/typing" ) // Error patterns for graceful handling (matching TS error constants in send.ts). diff --git a/internal/channels/telegram/stream.go b/internal/channels/telegram/stream.go index e65691bc4..1a93d71d4 100644 --- a/internal/channels/telegram/stream.go +++ b/internal/channels/telegram/stream.go @@ -13,7 +13,7 @@ import ( "github.com/mymmrac/telego" tu "github.com/mymmrac/telego/telegoutil" - "github.com/nextlevelbuilder/goclaw/internal/channels" + "github.com/vellus-ai/arargoclaw/internal/channels" ) const ( diff --git a/internal/channels/telegram/stt.go b/internal/channels/telegram/stt.go index df9d005d3..65a195003 100644 --- a/internal/channels/telegram/stt.go +++ b/internal/channels/telegram/stt.go @@ -3,7 +3,7 @@ package telegram import ( "context" - "github.com/nextlevelbuilder/goclaw/internal/channels/media" + "github.com/vellus-ai/arargoclaw/internal/channels/media" ) // transcribeAudio calls the configured STT proxy service with the given audio file and returns diff --git a/internal/channels/telegram/stt_test.go b/internal/channels/telegram/stt_test.go index 236163a0d..461e8feab 100644 --- a/internal/channels/telegram/stt_test.go +++ b/internal/channels/telegram/stt_test.go @@ -9,7 +9,7 @@ import ( "strings" "testing" - "github.com/nextlevelbuilder/goclaw/internal/config" + "github.com/vellus-ai/arargoclaw/internal/config" ) // sttTestResponse mirrors the STT proxy JSON response for test assertions. diff --git a/internal/channels/telegram/topic_config.go b/internal/channels/telegram/topic_config.go index 93ac9608f..2c55aee96 100644 --- a/internal/channels/telegram/topic_config.go +++ b/internal/channels/telegram/topic_config.go @@ -4,7 +4,7 @@ import ( "fmt" "strings" - "github.com/nextlevelbuilder/goclaw/internal/config" + "github.com/vellus-ai/arargoclaw/internal/config" ) // resolvedTopicConfig holds the merged config for a specific group+topic combination. diff --git a/internal/channels/telegram/topic_config_test.go b/internal/channels/telegram/topic_config_test.go index 0d7331fa5..872449f25 100644 --- a/internal/channels/telegram/topic_config_test.go +++ b/internal/channels/telegram/topic_config_test.go @@ -3,7 +3,7 @@ package telegram import ( "testing" - "github.com/nextlevelbuilder/goclaw/internal/config" + "github.com/vellus-ai/arargoclaw/internal/config" ) //go:fix inline diff --git a/internal/channels/whatsapp/factory.go b/internal/channels/whatsapp/factory.go index 3a039f33e..86e63e5c5 100644 --- a/internal/channels/whatsapp/factory.go +++ b/internal/channels/whatsapp/factory.go @@ -4,10 +4,10 @@ import ( "encoding/json" "fmt" - "github.com/nextlevelbuilder/goclaw/internal/bus" - "github.com/nextlevelbuilder/goclaw/internal/channels" - "github.com/nextlevelbuilder/goclaw/internal/config" - "github.com/nextlevelbuilder/goclaw/internal/store" + "github.com/vellus-ai/arargoclaw/internal/bus" + "github.com/vellus-ai/arargoclaw/internal/channels" + "github.com/vellus-ai/arargoclaw/internal/config" + "github.com/vellus-ai/arargoclaw/internal/store" ) // whatsappCreds maps the credentials JSON from the channel_instances table. diff --git a/internal/channels/whatsapp/whatsapp.go b/internal/channels/whatsapp/whatsapp.go index 66e10e10d..af509f0f4 100644 --- a/internal/channels/whatsapp/whatsapp.go +++ b/internal/channels/whatsapp/whatsapp.go @@ -11,10 +11,10 @@ import ( "github.com/gorilla/websocket" - "github.com/nextlevelbuilder/goclaw/internal/bus" - "github.com/nextlevelbuilder/goclaw/internal/channels" - "github.com/nextlevelbuilder/goclaw/internal/config" - "github.com/nextlevelbuilder/goclaw/internal/store" + "github.com/vellus-ai/arargoclaw/internal/bus" + "github.com/vellus-ai/arargoclaw/internal/channels" + "github.com/vellus-ai/arargoclaw/internal/config" + "github.com/vellus-ai/arargoclaw/internal/store" ) const pairingDebounceTime = 60 * time.Second @@ -376,7 +376,7 @@ func (c *Channel) sendPairingReply(senderID, chatID string) { } replyText := fmt.Sprintf( - "GoClaw: access not configured.\n\nYour WhatsApp ID: %s\n\nPairing code: %s\n\nAsk the bot owner to approve with:\n goclaw pairing approve %s", + "ArgoClaw: access not configured.\n\nYour WhatsApp ID: %s\n\nPairing code: %s\n\nAsk the bot owner to approve with:\n argoclaw pairing approve %s", senderID, code, code, ) diff --git a/internal/channels/zalo/factory.go b/internal/channels/zalo/factory.go index 661afd854..0a94d3986 100644 --- a/internal/channels/zalo/factory.go +++ b/internal/channels/zalo/factory.go @@ -4,10 +4,10 @@ import ( "encoding/json" "fmt" - "github.com/nextlevelbuilder/goclaw/internal/bus" - "github.com/nextlevelbuilder/goclaw/internal/channels" - "github.com/nextlevelbuilder/goclaw/internal/config" - "github.com/nextlevelbuilder/goclaw/internal/store" + "github.com/vellus-ai/arargoclaw/internal/bus" + "github.com/vellus-ai/arargoclaw/internal/channels" + "github.com/vellus-ai/arargoclaw/internal/config" + "github.com/vellus-ai/arargoclaw/internal/store" ) // zaloCreds maps the credentials JSON from the channel_instances table. diff --git a/internal/channels/zalo/personal/auth.go b/internal/channels/zalo/personal/auth.go index 42f96cb68..8d6a7e017 100644 --- a/internal/channels/zalo/personal/auth.go +++ b/internal/channels/zalo/personal/auth.go @@ -8,8 +8,8 @@ import ( "os" "path/filepath" - "github.com/nextlevelbuilder/goclaw/internal/channels/zalo/personal/protocol" - "github.com/nextlevelbuilder/goclaw/internal/config" + "github.com/vellus-ai/arargoclaw/internal/channels/zalo/personal/protocol" + "github.com/vellus-ai/arargoclaw/internal/config" ) // authenticate resolves credentials and returns an authenticated session. diff --git a/internal/channels/zalo/personal/channel.go b/internal/channels/zalo/personal/channel.go index 98d39d9ba..da2a83314 100644 --- a/internal/channels/zalo/personal/channel.go +++ b/internal/channels/zalo/personal/channel.go @@ -6,12 +6,12 @@ import ( "log/slog" "sync" - "github.com/nextlevelbuilder/goclaw/internal/bus" - "github.com/nextlevelbuilder/goclaw/internal/channels" - "github.com/nextlevelbuilder/goclaw/internal/channels/typing" - "github.com/nextlevelbuilder/goclaw/internal/channels/zalo/personal/protocol" - "github.com/nextlevelbuilder/goclaw/internal/config" - "github.com/nextlevelbuilder/goclaw/internal/store" + "github.com/vellus-ai/arargoclaw/internal/bus" + "github.com/vellus-ai/arargoclaw/internal/channels" + "github.com/vellus-ai/arargoclaw/internal/channels/typing" + "github.com/vellus-ai/arargoclaw/internal/channels/zalo/personal/protocol" + "github.com/vellus-ai/arargoclaw/internal/config" + "github.com/vellus-ai/arargoclaw/internal/store" ) // Channel connects to Zalo Personal Chat via the internal protocol port (from zcago, MIT). diff --git a/internal/channels/zalo/personal/factory.go b/internal/channels/zalo/personal/factory.go index 85bcec6f5..6e4662f95 100644 --- a/internal/channels/zalo/personal/factory.go +++ b/internal/channels/zalo/personal/factory.go @@ -4,11 +4,11 @@ import ( "encoding/json" "fmt" - "github.com/nextlevelbuilder/goclaw/internal/bus" - "github.com/nextlevelbuilder/goclaw/internal/channels" - "github.com/nextlevelbuilder/goclaw/internal/channels/zalo/personal/protocol" - "github.com/nextlevelbuilder/goclaw/internal/config" - "github.com/nextlevelbuilder/goclaw/internal/store" + "github.com/vellus-ai/arargoclaw/internal/bus" + "github.com/vellus-ai/arargoclaw/internal/channels" + "github.com/vellus-ai/arargoclaw/internal/channels/zalo/personal/protocol" + "github.com/vellus-ai/arargoclaw/internal/config" + "github.com/vellus-ai/arargoclaw/internal/store" ) // zaloCreds maps the credentials JSON from the channel_instances table. diff --git a/internal/channels/zalo/personal/handlers.go b/internal/channels/zalo/personal/handlers.go index 5ecb1614a..7dffbf998 100644 --- a/internal/channels/zalo/personal/handlers.go +++ b/internal/channels/zalo/personal/handlers.go @@ -11,11 +11,11 @@ import ( "strings" "time" - "github.com/nextlevelbuilder/goclaw/internal/channels" - "github.com/nextlevelbuilder/goclaw/internal/channels/media" - "github.com/nextlevelbuilder/goclaw/internal/channels/typing" - "github.com/nextlevelbuilder/goclaw/internal/channels/zalo/personal/protocol" - "github.com/nextlevelbuilder/goclaw/internal/tools" + "github.com/vellus-ai/arargoclaw/internal/channels" + "github.com/vellus-ai/arargoclaw/internal/channels/media" + "github.com/vellus-ai/arargoclaw/internal/channels/typing" + "github.com/vellus-ai/arargoclaw/internal/channels/zalo/personal/protocol" + "github.com/vellus-ai/arargoclaw/internal/tools" ) func (c *Channel) handleMessage(msg protocol.Message) { @@ -250,7 +250,7 @@ func downloadFile(ctx context.Context, fileURL string) (string, error) { ext = ".bin" } - tmpFile, err := os.CreateTemp("", "goclaw_zca_*"+ext) + tmpFile, err := os.CreateTemp("", "argoclaw_zca_*"+ext) if err != nil { return "", fmt.Errorf("create temp: %w", err) } diff --git a/internal/channels/zalo/personal/listen.go b/internal/channels/zalo/personal/listen.go index 991332878..1fb41d702 100644 --- a/internal/channels/zalo/personal/listen.go +++ b/internal/channels/zalo/personal/listen.go @@ -6,7 +6,7 @@ import ( "log/slog" "time" - "github.com/nextlevelbuilder/goclaw/internal/channels/zalo/personal/protocol" + "github.com/vellus-ai/arargoclaw/internal/channels/zalo/personal/protocol" ) const ( diff --git a/internal/channels/zalo/personal/policy.go b/internal/channels/zalo/personal/policy.go index 6dcf31db7..7291f237b 100644 --- a/internal/channels/zalo/personal/policy.go +++ b/internal/channels/zalo/personal/policy.go @@ -7,7 +7,7 @@ import ( "strings" "time" - "github.com/nextlevelbuilder/goclaw/internal/channels/zalo/personal/protocol" + "github.com/vellus-ai/arargoclaw/internal/channels/zalo/personal/protocol" ) const pairingDebounce = 60 * time.Second @@ -77,7 +77,7 @@ func (c *Channel) sendPairingReply(senderID, chatID string) { } replyText := fmt.Sprintf( - "GoClaw: access not configured.\n\nYour Zalo user id: %s\n\nPairing code: %s\n\nAsk the bot owner to approve with:\n goclaw pairing approve %s", + "ArgoClaw: access not configured.\n\nYour Zalo user id: %s\n\nPairing code: %s\n\nAsk the bot owner to approve with:\n argoclaw pairing approve %s", senderID, code, code, ) diff --git a/internal/channels/zalo/personal/protocol/models.go b/internal/channels/zalo/personal/protocol/models.go index 52874305a..a6b55acf2 100644 --- a/internal/channels/zalo/personal/protocol/models.go +++ b/internal/channels/zalo/personal/protocol/models.go @@ -31,7 +31,7 @@ type ZpwServiceMapV3 struct { File []string `json:"file"` Profile []string `json:"profile"` GroupPoll []string `json:"group_poll"` - // Only fields needed for GoClaw; Zalo returns many more. + // Only fields needed for ArgoClaw; Zalo returns many more. } // ServerInfo from getServerInfo response. diff --git a/internal/channels/zalo/personal/protocol/send_helpers.go b/internal/channels/zalo/personal/protocol/send_helpers.go index 0a2925e43..d895ddb01 100644 --- a/internal/channels/zalo/personal/protocol/send_helpers.go +++ b/internal/channels/zalo/personal/protocol/send_helpers.go @@ -55,7 +55,7 @@ func buildMultipartBody(fieldName, fileName string, data []byte) (io.Reader, str var buf bytes.Buffer w := multipart.NewWriter(&buf) - boundary := "----GoClaw" + randomBoundary() + boundary := "----ArgoClaw" + randomBoundary() if err := w.SetBoundary(boundary); err != nil { return nil, "", err } diff --git a/internal/channels/zalo/personal/send.go b/internal/channels/zalo/personal/send.go index 70b9dc856..bdf1148f5 100644 --- a/internal/channels/zalo/personal/send.go +++ b/internal/channels/zalo/personal/send.go @@ -6,10 +6,10 @@ import ( "log/slog" "strings" - "github.com/nextlevelbuilder/goclaw/internal/bus" - "github.com/nextlevelbuilder/goclaw/internal/channels/typing" - "github.com/nextlevelbuilder/goclaw/internal/channels/zalo" - "github.com/nextlevelbuilder/goclaw/internal/channels/zalo/personal/protocol" + "github.com/vellus-ai/arargoclaw/internal/bus" + "github.com/vellus-ai/arargoclaw/internal/channels/typing" + "github.com/vellus-ai/arargoclaw/internal/channels/zalo" + "github.com/vellus-ai/arargoclaw/internal/channels/zalo/personal/protocol" ) const maxTextLength = 2000 diff --git a/internal/channels/zalo/personal/zalomethods/contacts.go b/internal/channels/zalo/personal/zalomethods/contacts.go index cbf87c856..91306b285 100644 --- a/internal/channels/zalo/personal/zalomethods/contacts.go +++ b/internal/channels/zalo/personal/zalomethods/contacts.go @@ -10,11 +10,11 @@ import ( "github.com/google/uuid" "golang.org/x/sync/errgroup" - "github.com/nextlevelbuilder/goclaw/internal/channels" - "github.com/nextlevelbuilder/goclaw/internal/channels/zalo/personal/protocol" - "github.com/nextlevelbuilder/goclaw/internal/gateway" - "github.com/nextlevelbuilder/goclaw/internal/store" - goclawprotocol "github.com/nextlevelbuilder/goclaw/pkg/protocol" + "github.com/vellus-ai/arargoclaw/internal/channels" + "github.com/vellus-ai/arargoclaw/internal/channels/zalo/personal/protocol" + "github.com/vellus-ai/arargoclaw/internal/gateway" + "github.com/vellus-ai/arargoclaw/internal/store" + argoclawprotocol "github.com/vellus-ai/arargoclaw/pkg/protocol" ) // ContactsMethods handles fetching Zalo friends/groups for the picker UI. @@ -28,10 +28,10 @@ func NewContactsMethods(s store.ChannelInstanceStore) *ContactsMethods { } func (m *ContactsMethods) Register(router *gateway.MethodRouter) { - router.Register(goclawprotocol.MethodZaloPersonalContacts, m.handleContacts) + router.Register(argoclawprotocol.MethodZaloPersonalContacts, m.handleContacts) } -func (m *ContactsMethods) handleContacts(ctx context.Context, client *gateway.Client, req *goclawprotocol.RequestFrame) { +func (m *ContactsMethods) handleContacts(ctx context.Context, client *gateway.Client, req *argoclawprotocol.RequestFrame) { var params struct { InstanceID string `json:"instance_id"` } @@ -41,24 +41,24 @@ func (m *ContactsMethods) handleContacts(ctx context.Context, client *gateway.Cl instID, err := uuid.Parse(params.InstanceID) if err != nil { - client.SendResponse(goclawprotocol.NewErrorResponse(req.ID, goclawprotocol.ErrInvalidRequest, "invalid instance_id")) + client.SendResponse(argoclawprotocol.NewErrorResponse(req.ID, argoclawprotocol.ErrInvalidRequest, "invalid instance_id")) return } inst, err := m.instanceStore.Get(ctx, instID) if err != nil || inst.ChannelType != channels.TypeZaloPersonal { - client.SendResponse(goclawprotocol.NewErrorResponse(req.ID, goclawprotocol.ErrNotFound, "zalo_personal instance not found")) + client.SendResponse(argoclawprotocol.NewErrorResponse(req.ID, argoclawprotocol.ErrNotFound, "zalo_personal instance not found")) return } if len(inst.Credentials) == 0 { - client.SendResponse(goclawprotocol.NewErrorResponse(req.ID, goclawprotocol.ErrInvalidRequest, "instance has no credentials — complete QR login first")) + client.SendResponse(argoclawprotocol.NewErrorResponse(req.ID, argoclawprotocol.ErrInvalidRequest, "instance has no credentials — complete QR login first")) return } // Prevent concurrent fetches for same instance if _, loaded := m.activeFetches.LoadOrStore(params.InstanceID, struct{}{}); loaded { - client.SendResponse(goclawprotocol.NewErrorResponse(req.ID, goclawprotocol.ErrInvalidRequest, "contacts fetch already in progress")) + client.SendResponse(argoclawprotocol.NewErrorResponse(req.ID, argoclawprotocol.ErrInvalidRequest, "contacts fetch already in progress")) return } defer m.activeFetches.Delete(params.InstanceID) @@ -71,7 +71,7 @@ func (m *ContactsMethods) handleContacts(ctx context.Context, client *gateway.Cl Language *string `json:"language,omitempty"` } if err := json.Unmarshal(inst.Credentials, &creds); err != nil { - client.SendResponse(goclawprotocol.NewErrorResponse(req.ID, goclawprotocol.ErrInternal, "failed to parse credentials")) + client.SendResponse(argoclawprotocol.NewErrorResponse(req.ID, argoclawprotocol.ErrInternal, "failed to parse credentials")) return } @@ -89,7 +89,7 @@ func (m *ContactsMethods) handleContacts(ctx context.Context, client *gateway.Cl sess := protocol.NewSession() if err := protocol.LoginWithCredentials(fetchCtx, sess, *protoCred); err != nil { slog.Warn("Zalo Personal contacts: login failed", "instance", params.InstanceID, "error", err) - client.SendResponse(goclawprotocol.NewErrorResponse(req.ID, goclawprotocol.ErrInternal, "Zalo login failed — credentials may be expired, try QR login again")) + client.SendResponse(argoclawprotocol.NewErrorResponse(req.ID, argoclawprotocol.ErrInternal, "Zalo login failed — credentials may be expired, try QR login again")) return } @@ -117,11 +117,11 @@ func (m *ContactsMethods) handleContacts(ctx context.Context, client *gateway.Cl if err := g.Wait(); err != nil { slog.Warn("Zalo Personal contacts: fetch failed", "instance", params.InstanceID, "error", err) - client.SendResponse(goclawprotocol.NewErrorResponse(req.ID, goclawprotocol.ErrInternal, "failed to fetch contacts")) + client.SendResponse(argoclawprotocol.NewErrorResponse(req.ID, argoclawprotocol.ErrInternal, "failed to fetch contacts")) return } - client.SendResponse(goclawprotocol.NewOKResponse(req.ID, map[string]any{ + client.SendResponse(argoclawprotocol.NewOKResponse(req.ID, map[string]any{ "friends": friends, "groups": groups, })) diff --git a/internal/channels/zalo/personal/zalomethods/qr.go b/internal/channels/zalo/personal/zalomethods/qr.go index 27a66f540..402ffe47d 100644 --- a/internal/channels/zalo/personal/zalomethods/qr.go +++ b/internal/channels/zalo/personal/zalomethods/qr.go @@ -10,12 +10,12 @@ import ( "github.com/google/uuid" - "github.com/nextlevelbuilder/goclaw/internal/bus" - "github.com/nextlevelbuilder/goclaw/internal/channels" - "github.com/nextlevelbuilder/goclaw/internal/channels/zalo/personal/protocol" - "github.com/nextlevelbuilder/goclaw/internal/gateway" - "github.com/nextlevelbuilder/goclaw/internal/store" - goclawprotocol "github.com/nextlevelbuilder/goclaw/pkg/protocol" + "github.com/vellus-ai/arargoclaw/internal/bus" + "github.com/vellus-ai/arargoclaw/internal/channels" + "github.com/vellus-ai/arargoclaw/internal/channels/zalo/personal/protocol" + "github.com/vellus-ai/arargoclaw/internal/gateway" + "github.com/vellus-ai/arargoclaw/internal/store" + argoclawprotocol "github.com/vellus-ai/arargoclaw/pkg/protocol" ) // QRMethods handles QR login for zalo_personal channel instances. @@ -30,10 +30,10 @@ func NewQRMethods(s store.ChannelInstanceStore, msgBus *bus.MessageBus) *QRMetho } func (m *QRMethods) Register(router *gateway.MethodRouter) { - router.Register(goclawprotocol.MethodZaloPersonalQRStart, m.handleQRStart) + router.Register(argoclawprotocol.MethodZaloPersonalQRStart, m.handleQRStart) } -func (m *QRMethods) handleQRStart(ctx context.Context, client *gateway.Client, req *goclawprotocol.RequestFrame) { +func (m *QRMethods) handleQRStart(ctx context.Context, client *gateway.Client, req *argoclawprotocol.RequestFrame) { var params struct { InstanceID string `json:"instance_id"` } @@ -43,23 +43,23 @@ func (m *QRMethods) handleQRStart(ctx context.Context, client *gateway.Client, r instID, err := uuid.Parse(params.InstanceID) if err != nil { - client.SendResponse(goclawprotocol.NewErrorResponse(req.ID, goclawprotocol.ErrInvalidRequest, "invalid instance_id")) + client.SendResponse(argoclawprotocol.NewErrorResponse(req.ID, argoclawprotocol.ErrInvalidRequest, "invalid instance_id")) return } inst, err := m.instanceStore.Get(ctx, instID) if err != nil || inst.ChannelType != channels.TypeZaloPersonal { - client.SendResponse(goclawprotocol.NewErrorResponse(req.ID, goclawprotocol.ErrNotFound, "zalo_personal instance not found")) + client.SendResponse(argoclawprotocol.NewErrorResponse(req.ID, argoclawprotocol.ErrNotFound, "zalo_personal instance not found")) return } if _, loaded := m.activeSessions.LoadOrStore(params.InstanceID, struct{}{}); loaded { - client.SendResponse(goclawprotocol.NewErrorResponse(req.ID, goclawprotocol.ErrInvalidRequest, "QR session already active for this instance")) + client.SendResponse(argoclawprotocol.NewErrorResponse(req.ID, argoclawprotocol.ErrInvalidRequest, "QR session already active for this instance")) return } // ACK immediately — QR arrives via event. - client.SendResponse(goclawprotocol.NewOKResponse(req.ID, map[string]any{"status": "started"})) + client.SendResponse(argoclawprotocol.NewOKResponse(req.ID, map[string]any{"status": "started"})) go m.runQRFlow(ctx, client, params.InstanceID, instID) } @@ -74,9 +74,9 @@ func (m *QRMethods) runQRFlow(ctx context.Context, client *gateway.Client, insta defer cancel() cred, err := protocol.LoginQR(qrCtx, sess, func(qrPNG []byte) { - client.SendEvent(goclawprotocol.EventFrame{ - Type: goclawprotocol.FrameTypeEvent, - Event: goclawprotocol.EventZaloPersonalQRCode, + client.SendEvent(argoclawprotocol.EventFrame{ + Type: argoclawprotocol.FrameTypeEvent, + Event: argoclawprotocol.EventZaloPersonalQRCode, Payload: map[string]any{ "instance_id": instanceIDStr, "png_b64": base64.StdEncoding.EncodeToString(qrPNG), @@ -86,7 +86,7 @@ func (m *QRMethods) runQRFlow(ctx context.Context, client *gateway.Client, insta if err != nil { slog.Warn("Zalo Personal QR login failed", "instance", instanceIDStr, "error", err) - client.SendEvent(*goclawprotocol.NewEvent(goclawprotocol.EventZaloPersonalQRDone, map[string]any{ + client.SendEvent(*argoclawprotocol.NewEvent(argoclawprotocol.EventZaloPersonalQRDone, map[string]any{ "instance_id": instanceIDStr, "success": false, "error": err.Error(), @@ -102,7 +102,7 @@ func (m *QRMethods) runQRFlow(ctx context.Context, client *gateway.Client, insta }) if err != nil { slog.Error("Zalo Personal QR: marshal credentials failed", "error", err) - client.SendEvent(*goclawprotocol.NewEvent(goclawprotocol.EventZaloPersonalQRDone, map[string]any{ + client.SendEvent(*argoclawprotocol.NewEvent(argoclawprotocol.EventZaloPersonalQRDone, map[string]any{ "instance_id": instanceIDStr, "success": false, "error": "internal error: credential serialization failed", @@ -114,7 +114,7 @@ func (m *QRMethods) runQRFlow(ctx context.Context, client *gateway.Client, insta "credentials": string(credsJSON), }); err != nil { slog.Error("Zalo Personal QR: save credentials failed", "instance", instanceIDStr, "error", err) - client.SendEvent(*goclawprotocol.NewEvent(goclawprotocol.EventZaloPersonalQRDone, map[string]any{ + client.SendEvent(*argoclawprotocol.NewEvent(argoclawprotocol.EventZaloPersonalQRDone, map[string]any{ "instance_id": instanceIDStr, "success": false, "error": "failed to save credentials", @@ -125,12 +125,12 @@ func (m *QRMethods) runQRFlow(ctx context.Context, client *gateway.Client, insta // Trigger instanceLoader reload via cache invalidation. if m.msgBus != nil { m.msgBus.Broadcast(bus.Event{ - Name: goclawprotocol.EventCacheInvalidate, + Name: argoclawprotocol.EventCacheInvalidate, Payload: bus.CacheInvalidatePayload{Kind: bus.CacheKindChannelInstances}, }) } - client.SendEvent(*goclawprotocol.NewEvent(goclawprotocol.EventZaloPersonalQRDone, map[string]any{ + client.SendEvent(*argoclawprotocol.NewEvent(argoclawprotocol.EventZaloPersonalQRDone, map[string]any{ "instance_id": instanceIDStr, "success": true, })) diff --git a/internal/channels/zalo/zalo.go b/internal/channels/zalo/zalo.go index 88279a4b4..579331a32 100644 --- a/internal/channels/zalo/zalo.go +++ b/internal/channels/zalo/zalo.go @@ -18,10 +18,10 @@ import ( "sync" "time" - "github.com/nextlevelbuilder/goclaw/internal/bus" - "github.com/nextlevelbuilder/goclaw/internal/channels" - "github.com/nextlevelbuilder/goclaw/internal/config" - "github.com/nextlevelbuilder/goclaw/internal/store" + "github.com/vellus-ai/arargoclaw/internal/bus" + "github.com/vellus-ai/arargoclaw/internal/channels" + "github.com/vellus-ai/arargoclaw/internal/config" + "github.com/vellus-ai/arargoclaw/internal/store" ) const ( @@ -338,7 +338,7 @@ func (c *Channel) sendPairingReply(senderID, chatID string) { } replyText := fmt.Sprintf( - "GoClaw: access not configured.\n\nYour Zalo user id: %s\n\nPairing code: %s\n\nAsk the bot owner to approve with:\n goclaw pairing approve %s", + "ArgoClaw: access not configured.\n\nYour Zalo user id: %s\n\nPairing code: %s\n\nAsk the bot owner to approve with:\n argoclaw pairing approve %s", senderID, code, code, ) @@ -379,7 +379,7 @@ func (c *Channel) downloadMedia(url string) (string, error) { ext = ".webp" } - f, err := os.CreateTemp("", "goclaw_zalo_*"+ext) + f, err := os.CreateTemp("", "argoclaw_zalo_*"+ext) if err != nil { return "", fmt.Errorf("create temp: %w", err) } diff --git a/internal/config/config.go b/internal/config/config.go index f8f6fb32c..92ff16c23 100644 --- a/internal/config/config.go +++ b/internal/config/config.go @@ -6,8 +6,8 @@ import ( "sync" "time" - "github.com/nextlevelbuilder/goclaw/internal/cron" - "github.com/nextlevelbuilder/goclaw/internal/sandbox" + "github.com/vellus-ai/arargoclaw/internal/cron" + "github.com/vellus-ai/arargoclaw/internal/sandbox" ) // FlexibleStringSlice accepts both ["str"] and [123] in JSON. @@ -38,9 +38,9 @@ func (f *FlexibleStringSlice) UnmarshalJSON(data []byte) error { return nil } -// Config is the root configuration for the GoClaw Gateway. +// Config is the root configuration for the ArgoClaw Gateway. type Config struct { - DataDir string `json:"data_dir,omitempty"` // persistent data directory (default: ~/.goclaw/data) + DataDir string `json:"data_dir,omitempty"` // persistent data directory (default: ~/.argoclaw/data) Agents AgentsConfig `json:"agents"` Channels ChannelsConfig `json:"channels"` Providers ProvidersConfig `json:"providers"` @@ -59,9 +59,9 @@ type Config struct { // TailscaleConfig configures the optional Tailscale tsnet listener. // Requires building with -tags tsnet. Auth key from env only (never persisted). type TailscaleConfig struct { - Hostname string `json:"hostname"` // Tailscale machine name (e.g. "goclaw-gateway") - StateDir string `json:"state_dir,omitempty"` // persistent state directory (default: os.UserConfigDir/tsnet-goclaw) - AuthKey string `json:"-"` // from env GOCLAW_TSNET_AUTH_KEY only + Hostname string `json:"hostname"` // Tailscale machine name (e.g. "argoclaw-gateway") + StateDir string `json:"state_dir,omitempty"` // persistent state directory (default: os.UserConfigDir/tsnet-argoclaw) + AuthKey string `json:"-"` // from env ARGOCLAW_TSNET_AUTH_KEY only Ephemeral bool `json:"ephemeral,omitempty"` // remove node on exit (default false) EnableTLS bool `json:"enable_tls,omitempty"` // use ListenTLS for auto HTTPS certs } @@ -69,8 +69,8 @@ type TailscaleConfig struct { // DatabaseConfig configures the PostgreSQL connection and optional Redis cache. // DSN fields are NEVER read from config.json (secrets) — only from env vars. type DatabaseConfig struct { - PostgresDSN string `json:"-"` // from env GOCLAW_POSTGRES_DSN only - RedisDSN string `json:"-"` // from env GOCLAW_REDIS_DSN only (optional, requires -tags redis) + PostgresDSN string `json:"-"` // from env ARGOCLAW_POSTGRES_DSN only + RedisDSN string `json:"-"` // from env ARGOCLAW_REDIS_DSN only (optional, requires -tags redis) } // SkillsConfig configures the skills storage system. @@ -190,7 +190,7 @@ type MemoryConfig struct { // Matching TS agents.defaults.sandbox. type SandboxConfig struct { Mode string `json:"mode,omitempty"` // "off" (default), "non-main", "all" - Image string `json:"image,omitempty"` // Docker image (default: "goclaw-sandbox:bookworm-slim") + Image string `json:"image,omitempty"` // Docker image (default: "argoclaw-sandbox:bookworm-slim") WorkspaceAccess string `json:"workspace_access,omitempty"` // "none", "ro", "rw" (default) Scope string `json:"scope,omitempty"` // "session" (default), "agent", "shared" MemoryMB int `json:"memory_mb,omitempty"` // memory limit in MB (default 512) @@ -309,7 +309,7 @@ type TelemetryConfig struct { Endpoint string `json:"endpoint,omitempty"` // OTLP endpoint (e.g. "localhost:4317", "https://otel.example.com:4318") Protocol string `json:"protocol,omitempty"` // "grpc" (default) or "http" Insecure bool `json:"insecure,omitempty"` // skip TLS verification (default false, set true for local dev) - ServiceName string `json:"service_name,omitempty"` // OTEL service name (default "goclaw-gateway") + ServiceName string `json:"service_name,omitempty"` // OTEL service name (default "argoclaw-gateway") Headers map[string]string `json:"headers,omitempty"` // extra headers (e.g. auth tokens for cloud backends) ModelPricing map[string]*ModelPricing `json:"model_pricing,omitempty"` // cost per model, key = "provider/model" or just "model" } diff --git a/internal/config/config_load.go b/internal/config/config_load.go index d03294a98..f7c7c0020 100644 --- a/internal/config/config_load.go +++ b/internal/config/config_load.go @@ -16,10 +16,10 @@ import ( // Default returns a Config with sensible defaults. func Default() *Config { return &Config{ - DataDir: "~/.goclaw/data", + DataDir: "~/.argoclaw/data", Agents: AgentsConfig{ Defaults: AgentDefaults{ - Workspace: "~/.goclaw/workspace", + Workspace: "~/.argoclaw/workspace", RestrictToWorkspace: true, Provider: "anthropic", Model: "claude-sonnet-4-5-20250929", @@ -94,44 +94,44 @@ func (c *Config) applyEnvOverrides() { *dst = v } } - envStr("GOCLAW_ANTHROPIC_API_KEY", &c.Providers.Anthropic.APIKey) - envStr("GOCLAW_ANTHROPIC_BASE_URL", &c.Providers.Anthropic.APIBase) - envStr("GOCLAW_OPENAI_API_KEY", &c.Providers.OpenAI.APIKey) - envStr("GOCLAW_OPENAI_BASE_URL", &c.Providers.OpenAI.APIBase) - envStr("GOCLAW_OPENROUTER_API_KEY", &c.Providers.OpenRouter.APIKey) - envStr("GOCLAW_GROQ_API_KEY", &c.Providers.Groq.APIKey) - envStr("GOCLAW_DEEPSEEK_API_KEY", &c.Providers.DeepSeek.APIKey) - envStr("GOCLAW_GEMINI_API_KEY", &c.Providers.Gemini.APIKey) - envStr("GOCLAW_MISTRAL_API_KEY", &c.Providers.Mistral.APIKey) - envStr("GOCLAW_XAI_API_KEY", &c.Providers.XAI.APIKey) - envStr("GOCLAW_MINIMAX_API_KEY", &c.Providers.MiniMax.APIKey) - envStr("GOCLAW_COHERE_API_KEY", &c.Providers.Cohere.APIKey) - envStr("GOCLAW_PERPLEXITY_API_KEY", &c.Providers.Perplexity.APIKey) - envStr("GOCLAW_DASHSCOPE_API_KEY", &c.Providers.DashScope.APIKey) - envStr("GOCLAW_BAILIAN_API_KEY", &c.Providers.Bailian.APIKey) - envStr("GOCLAW_ZAI_API_KEY", &c.Providers.Zai.APIKey) - envStr("GOCLAW_ZAI_CODING_API_KEY", &c.Providers.ZaiCoding.APIKey) - envStr("GOCLAW_OLLAMA_HOST", &c.Providers.Ollama.Host) - envStr("GOCLAW_OLLAMA_CLOUD_API_KEY", &c.Providers.OllamaCloud.APIKey) - envStr("GOCLAW_OLLAMA_CLOUD_API_BASE", &c.Providers.OllamaCloud.APIBase) - envStr("GOCLAW_GATEWAY_TOKEN", &c.Gateway.Token) - envStr("GOCLAW_TELEGRAM_TOKEN", &c.Channels.Telegram.Token) - envStr("GOCLAW_DISCORD_TOKEN", &c.Channels.Discord.Token) - envStr("GOCLAW_ZALO_TOKEN", &c.Channels.Zalo.Token) - envStr("GOCLAW_LARK_APP_ID", &c.Channels.Feishu.AppID) - envStr("GOCLAW_LARK_APP_SECRET", &c.Channels.Feishu.AppSecret) - envStr("GOCLAW_LARK_ENCRYPT_KEY", &c.Channels.Feishu.EncryptKey) - envStr("GOCLAW_LARK_VERIFICATION_TOKEN", &c.Channels.Feishu.VerificationToken) - envStr("GOCLAW_WHATSAPP_BRIDGE_URL", &c.Channels.WhatsApp.BridgeURL) - envStr("GOCLAW_SLACK_BOT_TOKEN", &c.Channels.Slack.BotToken) - envStr("GOCLAW_SLACK_APP_TOKEN", &c.Channels.Slack.AppToken) - envStr("GOCLAW_SLACK_USER_TOKEN", &c.Channels.Slack.UserToken) + envStr("ARGOCLAW_ANTHROPIC_API_KEY", &c.Providers.Anthropic.APIKey) + envStr("ARGOCLAW_ANTHROPIC_BASE_URL", &c.Providers.Anthropic.APIBase) + envStr("ARGOCLAW_OPENAI_API_KEY", &c.Providers.OpenAI.APIKey) + envStr("ARGOCLAW_OPENAI_BASE_URL", &c.Providers.OpenAI.APIBase) + envStr("ARGOCLAW_OPENROUTER_API_KEY", &c.Providers.OpenRouter.APIKey) + envStr("ARGOCLAW_GROQ_API_KEY", &c.Providers.Groq.APIKey) + envStr("ARGOCLAW_DEEPSEEK_API_KEY", &c.Providers.DeepSeek.APIKey) + envStr("ARGOCLAW_GEMINI_API_KEY", &c.Providers.Gemini.APIKey) + envStr("ARGOCLAW_MISTRAL_API_KEY", &c.Providers.Mistral.APIKey) + envStr("ARGOCLAW_XAI_API_KEY", &c.Providers.XAI.APIKey) + envStr("ARGOCLAW_MINIMAX_API_KEY", &c.Providers.MiniMax.APIKey) + envStr("ARGOCLAW_COHERE_API_KEY", &c.Providers.Cohere.APIKey) + envStr("ARGOCLAW_PERPLEXITY_API_KEY", &c.Providers.Perplexity.APIKey) + envStr("ARGOCLAW_DASHSCOPE_API_KEY", &c.Providers.DashScope.APIKey) + envStr("ARGOCLAW_BAILIAN_API_KEY", &c.Providers.Bailian.APIKey) + envStr("ARGOCLAW_ZAI_API_KEY", &c.Providers.Zai.APIKey) + envStr("ARGOCLAW_ZAI_CODING_API_KEY", &c.Providers.ZaiCoding.APIKey) + envStr("ARGOCLAW_OLLAMA_HOST", &c.Providers.Ollama.Host) + envStr("ARGOCLAW_OLLAMA_CLOUD_API_KEY", &c.Providers.OllamaCloud.APIKey) + envStr("ARGOCLAW_OLLAMA_CLOUD_API_BASE", &c.Providers.OllamaCloud.APIBase) + envStr("ARGOCLAW_GATEWAY_TOKEN", &c.Gateway.Token) + envStr("ARGOCLAW_TELEGRAM_TOKEN", &c.Channels.Telegram.Token) + envStr("ARGOCLAW_DISCORD_TOKEN", &c.Channels.Discord.Token) + envStr("ARGOCLAW_ZALO_TOKEN", &c.Channels.Zalo.Token) + envStr("ARGOCLAW_LARK_APP_ID", &c.Channels.Feishu.AppID) + envStr("ARGOCLAW_LARK_APP_SECRET", &c.Channels.Feishu.AppSecret) + envStr("ARGOCLAW_LARK_ENCRYPT_KEY", &c.Channels.Feishu.EncryptKey) + envStr("ARGOCLAW_LARK_VERIFICATION_TOKEN", &c.Channels.Feishu.VerificationToken) + envStr("ARGOCLAW_WHATSAPP_BRIDGE_URL", &c.Channels.WhatsApp.BridgeURL) + envStr("ARGOCLAW_SLACK_BOT_TOKEN", &c.Channels.Slack.BotToken) + envStr("ARGOCLAW_SLACK_APP_TOKEN", &c.Channels.Slack.AppToken) + envStr("ARGOCLAW_SLACK_USER_TOKEN", &c.Channels.Slack.UserToken) // TTS secrets - envStr("GOCLAW_TTS_OPENAI_API_KEY", &c.Tts.OpenAI.APIKey) - envStr("GOCLAW_TTS_ELEVENLABS_API_KEY", &c.Tts.ElevenLabs.APIKey) - envStr("GOCLAW_TTS_MINIMAX_API_KEY", &c.Tts.MiniMax.APIKey) - envStr("GOCLAW_TTS_MINIMAX_GROUP_ID", &c.Tts.MiniMax.GroupID) + envStr("ARGOCLAW_TTS_OPENAI_API_KEY", &c.Tts.OpenAI.APIKey) + envStr("ARGOCLAW_TTS_ELEVENLABS_API_KEY", &c.Tts.ElevenLabs.APIKey) + envStr("ARGOCLAW_TTS_MINIMAX_API_KEY", &c.Tts.MiniMax.APIKey) + envStr("ARGOCLAW_TTS_MINIMAX_GROUP_ID", &c.Tts.MiniMax.GroupID) // Auto-enable channels if credentials are provided via env if c.Channels.Telegram.Token != "" { @@ -154,9 +154,9 @@ func (c *Config) applyEnvOverrides() { } // Claude CLI provider - envStr("GOCLAW_CLAUDE_CLI_PATH", &c.Providers.ClaudeCLI.CLIPath) - envStr("GOCLAW_CLAUDE_CLI_MODEL", &c.Providers.ClaudeCLI.Model) - envStr("GOCLAW_CLAUDE_CLI_WORK_DIR", &c.Providers.ClaudeCLI.BaseWorkDir) + envStr("ARGOCLAW_CLAUDE_CLI_PATH", &c.Providers.ClaudeCLI.CLIPath) + envStr("ARGOCLAW_CLAUDE_CLI_MODEL", &c.Providers.ClaudeCLI.Model) + envStr("ARGOCLAW_CLAUDE_CLI_WORK_DIR", &c.Providers.ClaudeCLI.BaseWorkDir) // Default provider/model: env is fallback only (applied when config has no value). // The onboard wizard sets these in .env for initial bootstrap; once the user @@ -168,50 +168,50 @@ func (c *Config) applyEnvOverrides() { } } } - envFallback("GOCLAW_PROVIDER", &c.Agents.Defaults.Provider) - envFallback("GOCLAW_MODEL", &c.Agents.Defaults.Model) + envFallback("ARGOCLAW_PROVIDER", &c.Agents.Defaults.Provider) + envFallback("ARGOCLAW_MODEL", &c.Agents.Defaults.Model) // Data directory, workspace & sessions - envStr("GOCLAW_DATA_DIR", &c.DataDir) - envStr("GOCLAW_WORKSPACE", &c.Agents.Defaults.Workspace) + envStr("ARGOCLAW_DATA_DIR", &c.DataDir) + envStr("ARGOCLAW_WORKSPACE", &c.Agents.Defaults.Workspace) // Gateway host/port - envStr("GOCLAW_HOST", &c.Gateway.Host) - if v := os.Getenv("GOCLAW_PORT"); v != "" { + envStr("ARGOCLAW_HOST", &c.Gateway.Host) + if v := os.Getenv("ARGOCLAW_PORT"); v != "" { if port, err := strconv.Atoi(v); err == nil && port > 0 { c.Gateway.Port = port } } // Database - envStr("GOCLAW_POSTGRES_DSN", &c.Database.PostgresDSN) - envStr("GOCLAW_REDIS_DSN", &c.Database.RedisDSN) + envStr("ARGOCLAW_POSTGRES_DSN", &c.Database.PostgresDSN) + envStr("ARGOCLAW_REDIS_DSN", &c.Database.RedisDSN) - // Deprecation warning for GOCLAW_MODE (removed — PostgreSQL is always active) - if v := os.Getenv("GOCLAW_MODE"); v != "" { - slog.Warn("GOCLAW_MODE is deprecated; managed mode is now the only mode", "value", v) + // Deprecation warning for ARGOCLAW_MODE (removed — PostgreSQL is always active) + if v := os.Getenv("ARGOCLAW_MODE"); v != "" { + slog.Warn("ARGOCLAW_MODE is deprecated; managed mode is now the only mode", "value", v) } // Telemetry - envStr("GOCLAW_TELEMETRY_ENDPOINT", &c.Telemetry.Endpoint) - envStr("GOCLAW_TELEMETRY_PROTOCOL", &c.Telemetry.Protocol) - envStr("GOCLAW_TELEMETRY_SERVICE_NAME", &c.Telemetry.ServiceName) - if v := os.Getenv("GOCLAW_TELEMETRY_ENABLED"); v != "" { + envStr("ARGOCLAW_TELEMETRY_ENDPOINT", &c.Telemetry.Endpoint) + envStr("ARGOCLAW_TELEMETRY_PROTOCOL", &c.Telemetry.Protocol) + envStr("ARGOCLAW_TELEMETRY_SERVICE_NAME", &c.Telemetry.ServiceName) + if v := os.Getenv("ARGOCLAW_TELEMETRY_ENABLED"); v != "" { c.Telemetry.Enabled = v == "true" || v == "1" } - if v := os.Getenv("GOCLAW_TELEMETRY_INSECURE"); v != "" { + if v := os.Getenv("ARGOCLAW_TELEMETRY_INSECURE"); v != "" { c.Telemetry.Insecure = v == "true" || v == "1" } // Owner IDs from env (comma-separated) - if v := os.Getenv("GOCLAW_OWNER_IDS"); v != "" { + if v := os.Getenv("ARGOCLAW_OWNER_IDS"); v != "" { c.Gateway.OwnerIDs = strings.Split(v, ",") } // Tailscale (tsnet) - envStr("GOCLAW_TSNET_HOSTNAME", &c.Tailscale.Hostname) - envStr("GOCLAW_TSNET_AUTH_KEY", &c.Tailscale.AuthKey) - envStr("GOCLAW_TSNET_DIR", &c.Tailscale.StateDir) + envStr("ARGOCLAW_TSNET_HOSTNAME", &c.Tailscale.Hostname) + envStr("ARGOCLAW_TSNET_AUTH_KEY", &c.Tailscale.AuthKey) + envStr("ARGOCLAW_TSNET_DIR", &c.Tailscale.StateDir) // Sandbox (for Docker-compose sandbox overlay) ensureSandbox := func() { @@ -219,47 +219,47 @@ func (c *Config) applyEnvOverrides() { c.Agents.Defaults.Sandbox = &SandboxConfig{} } } - if v := os.Getenv("GOCLAW_SANDBOX_MODE"); v != "" { + if v := os.Getenv("ARGOCLAW_SANDBOX_MODE"); v != "" { ensureSandbox() c.Agents.Defaults.Sandbox.Mode = v } - if v := os.Getenv("GOCLAW_SANDBOX_IMAGE"); v != "" { + if v := os.Getenv("ARGOCLAW_SANDBOX_IMAGE"); v != "" { ensureSandbox() c.Agents.Defaults.Sandbox.Image = v } - if v := os.Getenv("GOCLAW_SANDBOX_WORKSPACE_ACCESS"); v != "" { + if v := os.Getenv("ARGOCLAW_SANDBOX_WORKSPACE_ACCESS"); v != "" { ensureSandbox() c.Agents.Defaults.Sandbox.WorkspaceAccess = v } - if v := os.Getenv("GOCLAW_SANDBOX_SCOPE"); v != "" { + if v := os.Getenv("ARGOCLAW_SANDBOX_SCOPE"); v != "" { ensureSandbox() c.Agents.Defaults.Sandbox.Scope = v } - if v := os.Getenv("GOCLAW_SANDBOX_MEMORY_MB"); v != "" { + if v := os.Getenv("ARGOCLAW_SANDBOX_MEMORY_MB"); v != "" { ensureSandbox() if mb, err := strconv.Atoi(v); err == nil && mb > 0 { c.Agents.Defaults.Sandbox.MemoryMB = mb } } - if v := os.Getenv("GOCLAW_SANDBOX_CPUS"); v != "" { + if v := os.Getenv("ARGOCLAW_SANDBOX_CPUS"); v != "" { ensureSandbox() if cpus, err := strconv.ParseFloat(v, 64); err == nil && cpus > 0 { c.Agents.Defaults.Sandbox.CPUs = cpus } } - if v := os.Getenv("GOCLAW_SANDBOX_TIMEOUT_SEC"); v != "" { + if v := os.Getenv("ARGOCLAW_SANDBOX_TIMEOUT_SEC"); v != "" { ensureSandbox() if sec, err := strconv.Atoi(v); err == nil && sec > 0 { c.Agents.Defaults.Sandbox.TimeoutSec = sec } } - if v := os.Getenv("GOCLAW_SANDBOX_NETWORK"); v != "" { + if v := os.Getenv("ARGOCLAW_SANDBOX_NETWORK"); v != "" { ensureSandbox() c.Agents.Defaults.Sandbox.NetworkEnabled = v == "true" || v == "1" } // Browser (for Docker-compose browser sidecar overlay) - envStr("GOCLAW_BROWSER_REMOTE_URL", &c.Tools.Browser.RemoteURL) + envStr("ARGOCLAW_BROWSER_REMOTE_URL", &c.Tools.Browser.RemoteURL) if c.Tools.Browser.RemoteURL != "" { c.Tools.Browser.Enabled = true } @@ -323,13 +323,13 @@ func (c *Config) ResolvedDataDir() string { return ExpandHome(c.DataDir) } -// ResolvedDataDirFromEnv returns the data dir from GOCLAW_DATA_DIR env or default. +// ResolvedDataDirFromEnv returns the data dir from ARGOCLAW_DATA_DIR env or default. // Use this in packages that don't have access to a Config instance. func ResolvedDataDirFromEnv() string { - if v := os.Getenv("GOCLAW_DATA_DIR"); v != "" { + if v := os.Getenv("ARGOCLAW_DATA_DIR"); v != "" { return ExpandHome(v) } - return ExpandHome("~/.goclaw/data") + return ExpandHome("~/.argoclaw/data") } // WorkspacePath returns the expanded workspace path. @@ -397,14 +397,14 @@ func (c *Config) ResolveDefaultAgentID() string { } // ResolveDisplayName returns the display name for an agent. -// Falls back to "GoClaw" if not configured. +// Falls back to "ArgoClaw" if not configured. func (c *Config) ResolveDisplayName(agentID string) string { c.mu.RLock() defer c.mu.RUnlock() if spec, ok := c.Agents.List[agentID]; ok && spec.DisplayName != "" { return spec.DisplayName } - return "GoClaw" + return "ArgoClaw" } // ApplyEnvOverrides re-applies environment variable overrides onto the config. diff --git a/internal/crypto/apikey.go b/internal/crypto/apikey.go index 085e84e2f..de7bb83be 100644 --- a/internal/crypto/apikey.go +++ b/internal/crypto/apikey.go @@ -7,9 +7,9 @@ import ( "fmt" ) -const apiKeyPrefix = "goclaw_" +const apiKeyPrefix = "argoclaw_" -// GenerateAPIKey creates a new API key with format "goclaw_<32hex>". +// GenerateAPIKey creates a new API key with format "argoclaw_<32hex>". // Returns the raw key (show once), its SHA-256 hash, and 8-char display prefix. func GenerateAPIKey() (raw, hash, displayPrefix string, err error) { b := make([]byte, 16) // 16 bytes = 32 hex chars diff --git a/internal/gateway/client.go b/internal/gateway/client.go index b76d006d7..2a6abc156 100644 --- a/internal/gateway/client.go +++ b/internal/gateway/client.go @@ -9,8 +9,8 @@ import ( "github.com/google/uuid" "github.com/gorilla/websocket" - "github.com/nextlevelbuilder/goclaw/internal/permissions" - "github.com/nextlevelbuilder/goclaw/pkg/protocol" + "github.com/vellus-ai/arargoclaw/internal/permissions" + "github.com/vellus-ai/arargoclaw/pkg/protocol" ) // Client represents a single WebSocket connection. diff --git a/internal/gateway/log_tee.go b/internal/gateway/log_tee.go index 282285197..8fb08a634 100644 --- a/internal/gateway/log_tee.go +++ b/internal/gateway/log_tee.go @@ -7,7 +7,7 @@ import ( "sync" "time" - "github.com/nextlevelbuilder/goclaw/pkg/protocol" + "github.com/vellus-ai/arargoclaw/pkg/protocol" ) const ( diff --git a/internal/gateway/methods/agent_links.go b/internal/gateway/methods/agent_links.go index b040e33b7..24122b6c8 100644 --- a/internal/gateway/methods/agent_links.go +++ b/internal/gateway/methods/agent_links.go @@ -6,12 +6,12 @@ import ( "github.com/google/uuid" - "github.com/nextlevelbuilder/goclaw/internal/agent" - "github.com/nextlevelbuilder/goclaw/internal/bus" - "github.com/nextlevelbuilder/goclaw/internal/gateway" - "github.com/nextlevelbuilder/goclaw/internal/i18n" - "github.com/nextlevelbuilder/goclaw/internal/store" - "github.com/nextlevelbuilder/goclaw/pkg/protocol" + "github.com/vellus-ai/arargoclaw/internal/agent" + "github.com/vellus-ai/arargoclaw/internal/bus" + "github.com/vellus-ai/arargoclaw/internal/gateway" + "github.com/vellus-ai/arargoclaw/internal/i18n" + "github.com/vellus-ai/arargoclaw/internal/store" + "github.com/vellus-ai/arargoclaw/pkg/protocol" ) // AgentLinksMethods handles agents.links.* RPC methods. diff --git a/internal/gateway/methods/agents.go b/internal/gateway/methods/agents.go index dca94bac4..12780588d 100644 --- a/internal/gateway/methods/agents.go +++ b/internal/gateway/methods/agents.go @@ -6,14 +6,14 @@ import ( "log/slog" "slices" - "github.com/nextlevelbuilder/goclaw/internal/agent" - "github.com/nextlevelbuilder/goclaw/internal/bus" - "github.com/nextlevelbuilder/goclaw/internal/config" - "github.com/nextlevelbuilder/goclaw/internal/gateway" - "github.com/nextlevelbuilder/goclaw/internal/i18n" - "github.com/nextlevelbuilder/goclaw/internal/store" - "github.com/nextlevelbuilder/goclaw/internal/tools" - "github.com/nextlevelbuilder/goclaw/pkg/protocol" + "github.com/vellus-ai/arargoclaw/internal/agent" + "github.com/vellus-ai/arargoclaw/internal/bus" + "github.com/vellus-ai/arargoclaw/internal/config" + "github.com/vellus-ai/arargoclaw/internal/gateway" + "github.com/vellus-ai/arargoclaw/internal/i18n" + "github.com/vellus-ai/arargoclaw/internal/store" + "github.com/vellus-ai/arargoclaw/internal/tools" + "github.com/vellus-ai/arargoclaw/pkg/protocol" ) // AgentsMethods handles agents.list, agents.create, agents.update, agents.delete, diff --git a/internal/gateway/methods/agents_create.go b/internal/gateway/methods/agents_create.go index dd19758f1..426f7ff8c 100644 --- a/internal/gateway/methods/agents_create.go +++ b/internal/gateway/methods/agents_create.go @@ -8,12 +8,12 @@ import ( "os" "path/filepath" - "github.com/nextlevelbuilder/goclaw/internal/bootstrap" - "github.com/nextlevelbuilder/goclaw/internal/config" - "github.com/nextlevelbuilder/goclaw/internal/gateway" - "github.com/nextlevelbuilder/goclaw/internal/i18n" - "github.com/nextlevelbuilder/goclaw/internal/store" - "github.com/nextlevelbuilder/goclaw/pkg/protocol" + "github.com/vellus-ai/arargoclaw/internal/bootstrap" + "github.com/vellus-ai/arargoclaw/internal/config" + "github.com/vellus-ai/arargoclaw/internal/gateway" + "github.com/vellus-ai/arargoclaw/internal/i18n" + "github.com/vellus-ai/arargoclaw/internal/store" + "github.com/vellus-ai/arargoclaw/pkg/protocol" ) // --- agents.create --- @@ -75,7 +75,7 @@ func (m *AgentsMethods) handleCreate(ctx context.Context, client *gateway.Client return } - // Resolve owner: use first provided ID so external provisioning tools (e.g. goclaw-wizards) + // Resolve owner: use first provided ID so external provisioning tools (e.g. argoclaw-wizards) // can set a real user as owner at creation time. Falls back to "system" for backward compat. ownerID := "system" if len(params.OwnerIDs) > 0 && params.OwnerIDs[0] != "" { diff --git a/internal/gateway/methods/agents_create_owner_test.go b/internal/gateway/methods/agents_create_owner_test.go index 1928d4d54..3a6ff924a 100644 --- a/internal/gateway/methods/agents_create_owner_test.go +++ b/internal/gateway/methods/agents_create_owner_test.go @@ -7,11 +7,11 @@ import ( "github.com/google/uuid" - "github.com/nextlevelbuilder/goclaw/internal/agent" - "github.com/nextlevelbuilder/goclaw/internal/config" - "github.com/nextlevelbuilder/goclaw/internal/gateway" - "github.com/nextlevelbuilder/goclaw/internal/store" - "github.com/nextlevelbuilder/goclaw/pkg/protocol" + "github.com/vellus-ai/arargoclaw/internal/agent" + "github.com/vellus-ai/arargoclaw/internal/config" + "github.com/vellus-ai/arargoclaw/internal/gateway" + "github.com/vellus-ai/arargoclaw/internal/store" + "github.com/vellus-ai/arargoclaw/pkg/protocol" ) // ---- stub AgentStore that captures Create calls ---- diff --git a/internal/gateway/methods/agents_delete.go b/internal/gateway/methods/agents_delete.go index 039ed9ef5..3308d64e8 100644 --- a/internal/gateway/methods/agents_delete.go +++ b/internal/gateway/methods/agents_delete.go @@ -6,11 +6,11 @@ import ( "fmt" "os" - "github.com/nextlevelbuilder/goclaw/internal/config" - "github.com/nextlevelbuilder/goclaw/internal/gateway" - "github.com/nextlevelbuilder/goclaw/internal/i18n" - "github.com/nextlevelbuilder/goclaw/internal/store" - "github.com/nextlevelbuilder/goclaw/pkg/protocol" + "github.com/vellus-ai/arargoclaw/internal/config" + "github.com/vellus-ai/arargoclaw/internal/gateway" + "github.com/vellus-ai/arargoclaw/internal/i18n" + "github.com/vellus-ai/arargoclaw/internal/store" + "github.com/vellus-ai/arargoclaw/pkg/protocol" ) // --- agents.delete --- diff --git a/internal/gateway/methods/agents_files.go b/internal/gateway/methods/agents_files.go index c6058209f..400c62642 100644 --- a/internal/gateway/methods/agents_files.go +++ b/internal/gateway/methods/agents_files.go @@ -7,12 +7,12 @@ import ( "path/filepath" "slices" - "github.com/nextlevelbuilder/goclaw/internal/bootstrap" - "github.com/nextlevelbuilder/goclaw/internal/config" - "github.com/nextlevelbuilder/goclaw/internal/gateway" - "github.com/nextlevelbuilder/goclaw/internal/i18n" - "github.com/nextlevelbuilder/goclaw/internal/store" - "github.com/nextlevelbuilder/goclaw/pkg/protocol" + "github.com/vellus-ai/arargoclaw/internal/bootstrap" + "github.com/vellus-ai/arargoclaw/internal/config" + "github.com/vellus-ai/arargoclaw/internal/gateway" + "github.com/vellus-ai/arargoclaw/internal/i18n" + "github.com/vellus-ai/arargoclaw/internal/store" + "github.com/vellus-ai/arargoclaw/pkg/protocol" ) // allowedAgentFiles is the list of files exposed via agents.files.* RPCs. diff --git a/internal/gateway/methods/agents_identity.go b/internal/gateway/methods/agents_identity.go index 8bd361e48..03378653b 100644 --- a/internal/gateway/methods/agents_identity.go +++ b/internal/gateway/methods/agents_identity.go @@ -8,8 +8,8 @@ import ( "path/filepath" "strings" - "github.com/nextlevelbuilder/goclaw/internal/gateway" - "github.com/nextlevelbuilder/goclaw/pkg/protocol" + "github.com/vellus-ai/arargoclaw/internal/gateway" + "github.com/vellus-ai/arargoclaw/pkg/protocol" ) // --- agent.identity.get --- diff --git a/internal/gateway/methods/agents_update.go b/internal/gateway/methods/agents_update.go index 2172ba916..365c8a70e 100644 --- a/internal/gateway/methods/agents_update.go +++ b/internal/gateway/methods/agents_update.go @@ -8,11 +8,11 @@ import ( "os" "path/filepath" - "github.com/nextlevelbuilder/goclaw/internal/config" - "github.com/nextlevelbuilder/goclaw/internal/gateway" - "github.com/nextlevelbuilder/goclaw/internal/i18n" - "github.com/nextlevelbuilder/goclaw/internal/store" - "github.com/nextlevelbuilder/goclaw/pkg/protocol" + "github.com/vellus-ai/arargoclaw/internal/config" + "github.com/vellus-ai/arargoclaw/internal/gateway" + "github.com/vellus-ai/arargoclaw/internal/i18n" + "github.com/vellus-ai/arargoclaw/internal/store" + "github.com/vellus-ai/arargoclaw/pkg/protocol" ) // --- agents.update --- diff --git a/internal/gateway/methods/api_keys.go b/internal/gateway/methods/api_keys.go index cb8167880..4b0702d6e 100644 --- a/internal/gateway/methods/api_keys.go +++ b/internal/gateway/methods/api_keys.go @@ -8,12 +8,12 @@ import ( "github.com/google/uuid" - "github.com/nextlevelbuilder/goclaw/internal/crypto" - "github.com/nextlevelbuilder/goclaw/internal/gateway" - "github.com/nextlevelbuilder/goclaw/internal/i18n" - "github.com/nextlevelbuilder/goclaw/internal/permissions" - "github.com/nextlevelbuilder/goclaw/internal/store" - "github.com/nextlevelbuilder/goclaw/pkg/protocol" + "github.com/vellus-ai/arargoclaw/internal/crypto" + "github.com/vellus-ai/arargoclaw/internal/gateway" + "github.com/vellus-ai/arargoclaw/internal/i18n" + "github.com/vellus-ai/arargoclaw/internal/permissions" + "github.com/vellus-ai/arargoclaw/internal/store" + "github.com/vellus-ai/arargoclaw/pkg/protocol" ) // APIKeysMethods handles api_keys.list, api_keys.create, api_keys.revoke. diff --git a/internal/gateway/methods/audit.go b/internal/gateway/methods/audit.go index bdb3434d9..e2aa39130 100644 --- a/internal/gateway/methods/audit.go +++ b/internal/gateway/methods/audit.go @@ -1,9 +1,9 @@ package methods import ( - "github.com/nextlevelbuilder/goclaw/internal/bus" - "github.com/nextlevelbuilder/goclaw/internal/gateway" - "github.com/nextlevelbuilder/goclaw/pkg/protocol" + "github.com/vellus-ai/arargoclaw/internal/bus" + "github.com/vellus-ai/arargoclaw/internal/gateway" + "github.com/vellus-ai/arargoclaw/pkg/protocol" ) // emitAudit broadcasts an audit event via eventBus for async persistence. diff --git a/internal/gateway/methods/channel_instances.go b/internal/gateway/methods/channel_instances.go index 7f50ce98d..527f0af8f 100644 --- a/internal/gateway/methods/channel_instances.go +++ b/internal/gateway/methods/channel_instances.go @@ -7,11 +7,11 @@ import ( "github.com/google/uuid" - "github.com/nextlevelbuilder/goclaw/internal/bus" - "github.com/nextlevelbuilder/goclaw/internal/gateway" - "github.com/nextlevelbuilder/goclaw/internal/i18n" - "github.com/nextlevelbuilder/goclaw/internal/store" - "github.com/nextlevelbuilder/goclaw/pkg/protocol" + "github.com/vellus-ai/arargoclaw/internal/bus" + "github.com/vellus-ai/arargoclaw/internal/gateway" + "github.com/vellus-ai/arargoclaw/internal/i18n" + "github.com/vellus-ai/arargoclaw/internal/store" + "github.com/vellus-ai/arargoclaw/pkg/protocol" ) // ChannelInstancesMethods handles channel instance CRUD via WebSocket RPC. diff --git a/internal/gateway/methods/channels.go b/internal/gateway/methods/channels.go index dd3241f61..d6445c419 100644 --- a/internal/gateway/methods/channels.go +++ b/internal/gateway/methods/channels.go @@ -3,11 +3,11 @@ package methods import ( "context" - "github.com/nextlevelbuilder/goclaw/internal/channels" - "github.com/nextlevelbuilder/goclaw/internal/gateway" - "github.com/nextlevelbuilder/goclaw/internal/i18n" - "github.com/nextlevelbuilder/goclaw/internal/store" - "github.com/nextlevelbuilder/goclaw/pkg/protocol" + "github.com/vellus-ai/arargoclaw/internal/channels" + "github.com/vellus-ai/arargoclaw/internal/gateway" + "github.com/vellus-ai/arargoclaw/internal/i18n" + "github.com/vellus-ai/arargoclaw/internal/store" + "github.com/vellus-ai/arargoclaw/pkg/protocol" ) // ChannelsMethods handles channels.list, channels.status, channels.toggle. diff --git a/internal/gateway/methods/chat.go b/internal/gateway/methods/chat.go index d670c6a3a..4d64e85fe 100644 --- a/internal/gateway/methods/chat.go +++ b/internal/gateway/methods/chat.go @@ -8,16 +8,16 @@ import ( "log/slog" - "github.com/nextlevelbuilder/goclaw/internal/agent" - "github.com/nextlevelbuilder/goclaw/internal/bus" - "github.com/nextlevelbuilder/goclaw/internal/channels/media" - "github.com/nextlevelbuilder/goclaw/internal/gateway" - "github.com/nextlevelbuilder/goclaw/internal/i18n" - "github.com/nextlevelbuilder/goclaw/internal/providers" - "github.com/nextlevelbuilder/goclaw/internal/sessions" - "github.com/nextlevelbuilder/goclaw/internal/store" - "github.com/nextlevelbuilder/goclaw/internal/tools" - "github.com/nextlevelbuilder/goclaw/pkg/protocol" + "github.com/vellus-ai/arargoclaw/internal/agent" + "github.com/vellus-ai/arargoclaw/internal/bus" + "github.com/vellus-ai/arargoclaw/internal/channels/media" + "github.com/vellus-ai/arargoclaw/internal/gateway" + "github.com/vellus-ai/arargoclaw/internal/i18n" + "github.com/vellus-ai/arargoclaw/internal/providers" + "github.com/vellus-ai/arargoclaw/internal/sessions" + "github.com/vellus-ai/arargoclaw/internal/store" + "github.com/vellus-ai/arargoclaw/internal/tools" + "github.com/vellus-ai/arargoclaw/pkg/protocol" ) // ChatMethods handles chat.send, chat.history, chat.abort, chat.inject. diff --git a/internal/gateway/methods/config.go b/internal/gateway/methods/config.go index d8dcf46ab..837acfc3f 100644 --- a/internal/gateway/methods/config.go +++ b/internal/gateway/methods/config.go @@ -7,12 +7,12 @@ import ( "github.com/titanous/json5" - "github.com/nextlevelbuilder/goclaw/internal/bus" - "github.com/nextlevelbuilder/goclaw/internal/config" - "github.com/nextlevelbuilder/goclaw/internal/gateway" - "github.com/nextlevelbuilder/goclaw/internal/i18n" - "github.com/nextlevelbuilder/goclaw/internal/store" - "github.com/nextlevelbuilder/goclaw/pkg/protocol" + "github.com/vellus-ai/arargoclaw/internal/bus" + "github.com/vellus-ai/arargoclaw/internal/config" + "github.com/vellus-ai/arargoclaw/internal/gateway" + "github.com/vellus-ai/arargoclaw/internal/i18n" + "github.com/vellus-ai/arargoclaw/internal/store" + "github.com/vellus-ai/arargoclaw/pkg/protocol" ) // ConfigMethods handles config.get, config.apply, config.patch, config.schema. diff --git a/internal/gateway/methods/config_permissions.go b/internal/gateway/methods/config_permissions.go index 7d1b89c9d..378130277 100644 --- a/internal/gateway/methods/config_permissions.go +++ b/internal/gateway/methods/config_permissions.go @@ -6,10 +6,10 @@ import ( "log/slog" "github.com/google/uuid" - "github.com/nextlevelbuilder/goclaw/internal/gateway" - "github.com/nextlevelbuilder/goclaw/internal/i18n" - "github.com/nextlevelbuilder/goclaw/internal/store" - "github.com/nextlevelbuilder/goclaw/pkg/protocol" + "github.com/vellus-ai/arargoclaw/internal/gateway" + "github.com/vellus-ai/arargoclaw/internal/i18n" + "github.com/vellus-ai/arargoclaw/internal/store" + "github.com/vellus-ai/arargoclaw/pkg/protocol" ) // ConfigPermissionsMethods handles config.permissions.* RPC methods. diff --git a/internal/gateway/methods/cron.go b/internal/gateway/methods/cron.go index 92d6b7acf..736e6e643 100644 --- a/internal/gateway/methods/cron.go +++ b/internal/gateway/methods/cron.go @@ -6,11 +6,11 @@ import ( "log/slog" "regexp" - "github.com/nextlevelbuilder/goclaw/internal/bus" - "github.com/nextlevelbuilder/goclaw/internal/gateway" - "github.com/nextlevelbuilder/goclaw/internal/i18n" - "github.com/nextlevelbuilder/goclaw/internal/store" - "github.com/nextlevelbuilder/goclaw/pkg/protocol" + "github.com/vellus-ai/arargoclaw/internal/bus" + "github.com/vellus-ai/arargoclaw/internal/gateway" + "github.com/vellus-ai/arargoclaw/internal/i18n" + "github.com/vellus-ai/arargoclaw/internal/store" + "github.com/vellus-ai/arargoclaw/pkg/protocol" ) var cronSlugRe = regexp.MustCompile(`^[a-z0-9]([a-z0-9-]*[a-z0-9])?$`) diff --git a/internal/gateway/methods/delegations.go b/internal/gateway/methods/delegations.go index 321100981..bbcafe35b 100644 --- a/internal/gateway/methods/delegations.go +++ b/internal/gateway/methods/delegations.go @@ -6,10 +6,10 @@ import ( "github.com/google/uuid" - "github.com/nextlevelbuilder/goclaw/internal/gateway" - "github.com/nextlevelbuilder/goclaw/internal/i18n" - "github.com/nextlevelbuilder/goclaw/internal/store" - "github.com/nextlevelbuilder/goclaw/pkg/protocol" + "github.com/vellus-ai/arargoclaw/internal/gateway" + "github.com/vellus-ai/arargoclaw/internal/i18n" + "github.com/vellus-ai/arargoclaw/internal/store" + "github.com/vellus-ai/arargoclaw/pkg/protocol" ) // DelegationsMethods handles delegations.* RPC methods. diff --git a/internal/gateway/methods/exec_approval.go b/internal/gateway/methods/exec_approval.go index 186f460ba..b1f321dee 100644 --- a/internal/gateway/methods/exec_approval.go +++ b/internal/gateway/methods/exec_approval.go @@ -4,12 +4,12 @@ import ( "context" "encoding/json" - "github.com/nextlevelbuilder/goclaw/internal/bus" - "github.com/nextlevelbuilder/goclaw/internal/gateway" - "github.com/nextlevelbuilder/goclaw/internal/i18n" - "github.com/nextlevelbuilder/goclaw/internal/store" - "github.com/nextlevelbuilder/goclaw/internal/tools" - "github.com/nextlevelbuilder/goclaw/pkg/protocol" + "github.com/vellus-ai/arargoclaw/internal/bus" + "github.com/vellus-ai/arargoclaw/internal/gateway" + "github.com/vellus-ai/arargoclaw/internal/i18n" + "github.com/vellus-ai/arargoclaw/internal/store" + "github.com/vellus-ai/arargoclaw/internal/tools" + "github.com/vellus-ai/arargoclaw/pkg/protocol" ) // ExecApprovalMethods handles exec.approval.list, exec.approval.approve, exec.approval.deny. diff --git a/internal/gateway/methods/heartbeat.go b/internal/gateway/methods/heartbeat.go index 3f828ddd7..2664bea1f 100644 --- a/internal/gateway/methods/heartbeat.go +++ b/internal/gateway/methods/heartbeat.go @@ -10,11 +10,11 @@ import ( "github.com/google/uuid" - "github.com/nextlevelbuilder/goclaw/internal/bus" - "github.com/nextlevelbuilder/goclaw/internal/gateway" - "github.com/nextlevelbuilder/goclaw/internal/i18n" - "github.com/nextlevelbuilder/goclaw/internal/store" - "github.com/nextlevelbuilder/goclaw/pkg/protocol" + "github.com/vellus-ai/arargoclaw/internal/bus" + "github.com/vellus-ai/arargoclaw/internal/gateway" + "github.com/vellus-ai/arargoclaw/internal/i18n" + "github.com/vellus-ai/arargoclaw/internal/store" + "github.com/vellus-ai/arargoclaw/pkg/protocol" ) // HeartbeatMethods handles heartbeat.get/set/toggle/test/logs/checklist RPC methods. diff --git a/internal/gateway/methods/logs.go b/internal/gateway/methods/logs.go index 267856259..8d7e8f661 100644 --- a/internal/gateway/methods/logs.go +++ b/internal/gateway/methods/logs.go @@ -5,10 +5,10 @@ import ( "encoding/json" "log/slog" - "github.com/nextlevelbuilder/goclaw/internal/gateway" - "github.com/nextlevelbuilder/goclaw/internal/i18n" - "github.com/nextlevelbuilder/goclaw/internal/store" - "github.com/nextlevelbuilder/goclaw/pkg/protocol" + "github.com/vellus-ai/arargoclaw/internal/gateway" + "github.com/vellus-ai/arargoclaw/internal/i18n" + "github.com/vellus-ai/arargoclaw/internal/store" + "github.com/vellus-ai/arargoclaw/pkg/protocol" ) // LogsMethods handles logs.tail (start/stop live log tailing). diff --git a/internal/gateway/methods/pairing.go b/internal/gateway/methods/pairing.go index 696417307..7888e82b5 100644 --- a/internal/gateway/methods/pairing.go +++ b/internal/gateway/methods/pairing.go @@ -5,11 +5,11 @@ import ( "encoding/json" "log/slog" - "github.com/nextlevelbuilder/goclaw/internal/bus" - "github.com/nextlevelbuilder/goclaw/internal/gateway" - "github.com/nextlevelbuilder/goclaw/internal/i18n" - "github.com/nextlevelbuilder/goclaw/internal/store" - "github.com/nextlevelbuilder/goclaw/pkg/protocol" + "github.com/vellus-ai/arargoclaw/internal/bus" + "github.com/vellus-ai/arargoclaw/internal/gateway" + "github.com/vellus-ai/arargoclaw/internal/i18n" + "github.com/vellus-ai/arargoclaw/internal/store" + "github.com/vellus-ai/arargoclaw/pkg/protocol" ) // PairingApproveCallback is called after a pairing is approved. diff --git a/internal/gateway/methods/quota_methods.go b/internal/gateway/methods/quota_methods.go index 511d9f330..07ff0610a 100644 --- a/internal/gateway/methods/quota_methods.go +++ b/internal/gateway/methods/quota_methods.go @@ -4,9 +4,9 @@ import ( "context" "database/sql" - "github.com/nextlevelbuilder/goclaw/internal/channels" - "github.com/nextlevelbuilder/goclaw/internal/gateway" - "github.com/nextlevelbuilder/goclaw/pkg/protocol" + "github.com/vellus-ai/arargoclaw/internal/channels" + "github.com/vellus-ai/arargoclaw/internal/gateway" + "github.com/vellus-ai/arargoclaw/pkg/protocol" ) // QuotaMethods handles quota.usage — returns per-user quota consumption for the dashboard. diff --git a/internal/gateway/methods/send.go b/internal/gateway/methods/send.go index 99b5304ba..e8bc8ba06 100644 --- a/internal/gateway/methods/send.go +++ b/internal/gateway/methods/send.go @@ -4,11 +4,11 @@ import ( "context" "encoding/json" - "github.com/nextlevelbuilder/goclaw/internal/bus" - "github.com/nextlevelbuilder/goclaw/internal/gateway" - "github.com/nextlevelbuilder/goclaw/internal/i18n" - "github.com/nextlevelbuilder/goclaw/internal/store" - "github.com/nextlevelbuilder/goclaw/pkg/protocol" + "github.com/vellus-ai/arargoclaw/internal/bus" + "github.com/vellus-ai/arargoclaw/internal/gateway" + "github.com/vellus-ai/arargoclaw/internal/i18n" + "github.com/vellus-ai/arargoclaw/internal/store" + "github.com/vellus-ai/arargoclaw/pkg/protocol" ) // SendMethods handles the "send" RPC for routing outbound messages to channels. diff --git a/internal/gateway/methods/sessions.go b/internal/gateway/methods/sessions.go index 11f6290bc..741d7ed61 100644 --- a/internal/gateway/methods/sessions.go +++ b/internal/gateway/methods/sessions.go @@ -4,11 +4,11 @@ import ( "context" "encoding/json" - "github.com/nextlevelbuilder/goclaw/internal/bus" - "github.com/nextlevelbuilder/goclaw/internal/gateway" - "github.com/nextlevelbuilder/goclaw/internal/i18n" - "github.com/nextlevelbuilder/goclaw/internal/store" - "github.com/nextlevelbuilder/goclaw/pkg/protocol" + "github.com/vellus-ai/arargoclaw/internal/bus" + "github.com/vellus-ai/arargoclaw/internal/gateway" + "github.com/vellus-ai/arargoclaw/internal/i18n" + "github.com/vellus-ai/arargoclaw/internal/store" + "github.com/vellus-ai/arargoclaw/pkg/protocol" ) // SessionsMethods handles sessions.list, sessions.preview, sessions.patch, sessions.delete, sessions.reset. diff --git a/internal/gateway/methods/skills.go b/internal/gateway/methods/skills.go index a96b10625..589b22115 100644 --- a/internal/gateway/methods/skills.go +++ b/internal/gateway/methods/skills.go @@ -6,11 +6,11 @@ import ( "github.com/google/uuid" - "github.com/nextlevelbuilder/goclaw/internal/gateway" - "github.com/nextlevelbuilder/goclaw/internal/i18n" - "github.com/nextlevelbuilder/goclaw/internal/permissions" - "github.com/nextlevelbuilder/goclaw/internal/store" - "github.com/nextlevelbuilder/goclaw/pkg/protocol" + "github.com/vellus-ai/arargoclaw/internal/gateway" + "github.com/vellus-ai/arargoclaw/internal/i18n" + "github.com/vellus-ai/arargoclaw/internal/permissions" + "github.com/vellus-ai/arargoclaw/internal/store" + "github.com/vellus-ai/arargoclaw/pkg/protocol" ) // skillOwnerGetter is an optional interface for stores that can return a skill's owner ID. diff --git a/internal/gateway/methods/teams.go b/internal/gateway/methods/teams.go index 53759aa5e..50218fed3 100644 --- a/internal/gateway/methods/teams.go +++ b/internal/gateway/methods/teams.go @@ -6,12 +6,12 @@ import ( "fmt" "log/slog" - "github.com/nextlevelbuilder/goclaw/internal/agent" - "github.com/nextlevelbuilder/goclaw/internal/bus" - "github.com/nextlevelbuilder/goclaw/internal/gateway" - "github.com/nextlevelbuilder/goclaw/internal/i18n" - "github.com/nextlevelbuilder/goclaw/internal/store" - "github.com/nextlevelbuilder/goclaw/pkg/protocol" + "github.com/vellus-ai/arargoclaw/internal/agent" + "github.com/vellus-ai/arargoclaw/internal/bus" + "github.com/vellus-ai/arargoclaw/internal/gateway" + "github.com/vellus-ai/arargoclaw/internal/i18n" + "github.com/vellus-ai/arargoclaw/internal/store" + "github.com/vellus-ai/arargoclaw/pkg/protocol" ) // TeamsMethods handles teams.* RPC methods. diff --git a/internal/gateway/methods/teams_crud.go b/internal/gateway/methods/teams_crud.go index 1feed25da..875049f9f 100644 --- a/internal/gateway/methods/teams_crud.go +++ b/internal/gateway/methods/teams_crud.go @@ -7,11 +7,11 @@ import ( "github.com/google/uuid" - "github.com/nextlevelbuilder/goclaw/internal/bus" - "github.com/nextlevelbuilder/goclaw/internal/gateway" - "github.com/nextlevelbuilder/goclaw/internal/i18n" - "github.com/nextlevelbuilder/goclaw/internal/store" - "github.com/nextlevelbuilder/goclaw/pkg/protocol" + "github.com/vellus-ai/arargoclaw/internal/bus" + "github.com/vellus-ai/arargoclaw/internal/gateway" + "github.com/vellus-ai/arargoclaw/internal/i18n" + "github.com/vellus-ai/arargoclaw/internal/store" + "github.com/vellus-ai/arargoclaw/pkg/protocol" ) // --- Get --- diff --git a/internal/gateway/methods/teams_members.go b/internal/gateway/methods/teams_members.go index b58e320d9..f7ffdeff0 100644 --- a/internal/gateway/methods/teams_members.go +++ b/internal/gateway/methods/teams_members.go @@ -7,11 +7,11 @@ import ( "github.com/google/uuid" - "github.com/nextlevelbuilder/goclaw/internal/bus" - "github.com/nextlevelbuilder/goclaw/internal/gateway" - "github.com/nextlevelbuilder/goclaw/internal/i18n" - "github.com/nextlevelbuilder/goclaw/internal/store" - "github.com/nextlevelbuilder/goclaw/pkg/protocol" + "github.com/vellus-ai/arargoclaw/internal/bus" + "github.com/vellus-ai/arargoclaw/internal/gateway" + "github.com/vellus-ai/arargoclaw/internal/i18n" + "github.com/vellus-ai/arargoclaw/internal/store" + "github.com/vellus-ai/arargoclaw/pkg/protocol" ) // --- Add Member --- diff --git a/internal/gateway/methods/teams_tasks.go b/internal/gateway/methods/teams_tasks.go index 41c5956d4..003fe1731 100644 --- a/internal/gateway/methods/teams_tasks.go +++ b/internal/gateway/methods/teams_tasks.go @@ -10,11 +10,11 @@ import ( "github.com/google/uuid" - "github.com/nextlevelbuilder/goclaw/internal/bus" - "github.com/nextlevelbuilder/goclaw/internal/gateway" - "github.com/nextlevelbuilder/goclaw/internal/i18n" - "github.com/nextlevelbuilder/goclaw/internal/store" - "github.com/nextlevelbuilder/goclaw/pkg/protocol" + "github.com/vellus-ai/arargoclaw/internal/bus" + "github.com/vellus-ai/arargoclaw/internal/gateway" + "github.com/vellus-ai/arargoclaw/internal/i18n" + "github.com/vellus-ai/arargoclaw/internal/store" + "github.com/vellus-ai/arargoclaw/pkg/protocol" ) // maxCommentLength caps comment/reason content to prevent DB bloat. diff --git a/internal/gateway/methods/teams_workspace.go b/internal/gateway/methods/teams_workspace.go index f9f389c45..7815b67e4 100644 --- a/internal/gateway/methods/teams_workspace.go +++ b/internal/gateway/methods/teams_workspace.go @@ -10,11 +10,11 @@ import ( "github.com/google/uuid" - "github.com/nextlevelbuilder/goclaw/internal/gateway" - "github.com/nextlevelbuilder/goclaw/internal/i18n" - "github.com/nextlevelbuilder/goclaw/internal/store" - "github.com/nextlevelbuilder/goclaw/internal/tools" - "github.com/nextlevelbuilder/goclaw/pkg/protocol" + "github.com/vellus-ai/arargoclaw/internal/gateway" + "github.com/vellus-ai/arargoclaw/internal/i18n" + "github.com/vellus-ai/arargoclaw/internal/store" + "github.com/vellus-ai/arargoclaw/internal/tools" + "github.com/vellus-ai/arargoclaw/pkg/protocol" ) // RegisterWorkspace adds workspace RPC handlers to the method router. diff --git a/internal/gateway/methods/usage.go b/internal/gateway/methods/usage.go index c2f705e20..106ac098b 100644 --- a/internal/gateway/methods/usage.go +++ b/internal/gateway/methods/usage.go @@ -5,9 +5,9 @@ import ( "encoding/json" "sort" - "github.com/nextlevelbuilder/goclaw/internal/gateway" - "github.com/nextlevelbuilder/goclaw/internal/store" - "github.com/nextlevelbuilder/goclaw/pkg/protocol" + "github.com/vellus-ai/arargoclaw/internal/gateway" + "github.com/vellus-ai/arargoclaw/internal/store" + "github.com/vellus-ai/arargoclaw/pkg/protocol" ) // UsageMethods handles usage.get, usage.summary. diff --git a/internal/gateway/router.go b/internal/gateway/router.go index 334b1d44e..f48f7964f 100644 --- a/internal/gateway/router.go +++ b/internal/gateway/router.go @@ -7,11 +7,11 @@ import ( "log/slog" "time" - httpapi "github.com/nextlevelbuilder/goclaw/internal/http" - "github.com/nextlevelbuilder/goclaw/internal/i18n" - "github.com/nextlevelbuilder/goclaw/internal/permissions" - "github.com/nextlevelbuilder/goclaw/internal/store" - "github.com/nextlevelbuilder/goclaw/pkg/protocol" + httpapi "github.com/vellus-ai/arargoclaw/internal/http" + "github.com/vellus-ai/arargoclaw/internal/i18n" + "github.com/vellus-ai/arargoclaw/internal/permissions" + "github.com/vellus-ai/arargoclaw/internal/store" + "github.com/vellus-ai/arargoclaw/pkg/protocol" ) // MethodHandler processes a single RPC method request. @@ -178,7 +178,7 @@ func (r *MethodRouter) handleConnect(ctx context.Context, client *Client, req *p "pairing_code": code, "sender_id": client.id, "server": map[string]any{ - "name": "goclaw", + "name": "argoclaw", "version": "0.2.0", }, })) @@ -199,7 +199,7 @@ func (r *MethodRouter) sendConnectResponse(client *Client, reqID string) { "role": string(client.role), "user_id": client.userID, "server": map[string]any{ - "name": "goclaw", + "name": "argoclaw", "version": "0.2.0", }, })) diff --git a/internal/gateway/server.go b/internal/gateway/server.go index fa05c7a79..a2f3445a1 100644 --- a/internal/gateway/server.go +++ b/internal/gateway/server.go @@ -15,16 +15,16 @@ import ( "github.com/google/uuid" "github.com/gorilla/websocket" - "github.com/nextlevelbuilder/goclaw/internal/agent" - "github.com/nextlevelbuilder/goclaw/internal/bus" - "github.com/nextlevelbuilder/goclaw/internal/config" - httpapi "github.com/nextlevelbuilder/goclaw/internal/http" - mcpbridge "github.com/nextlevelbuilder/goclaw/internal/mcp" - "github.com/nextlevelbuilder/goclaw/internal/permissions" - "github.com/nextlevelbuilder/goclaw/internal/providers" - "github.com/nextlevelbuilder/goclaw/internal/store" - "github.com/nextlevelbuilder/goclaw/internal/tools" - "github.com/nextlevelbuilder/goclaw/pkg/protocol" + "github.com/vellus-ai/arargoclaw/internal/agent" + "github.com/vellus-ai/arargoclaw/internal/bus" + "github.com/vellus-ai/arargoclaw/internal/config" + httpapi "github.com/vellus-ai/arargoclaw/internal/http" + mcpbridge "github.com/vellus-ai/arargoclaw/internal/mcp" + "github.com/vellus-ai/arargoclaw/internal/permissions" + "github.com/vellus-ai/arargoclaw/internal/providers" + "github.com/vellus-ai/arargoclaw/internal/store" + "github.com/vellus-ai/arargoclaw/internal/tools" + "github.com/vellus-ai/arargoclaw/pkg/protocol" ) // Server is the main gateway server handling WebSocket and HTTP connections. @@ -309,7 +309,7 @@ func (s *Server) BuildMux() *http.ServeMux { s.oauthHandler.RegisterRoutes(mux) } - // MCP bridge: expose GoClaw tools to Claude CLI via streamable-http. + // MCP bridge: expose ArgoClaw tools to Claude CLI via streamable-http. // Only listens on localhost (CLI runs on the same machine). // Protected by gateway token when configured. // Agent context (X-Agent-ID, X-User-ID) is injected from request headers. diff --git a/internal/heartbeat/ticker.go b/internal/heartbeat/ticker.go index f79c65bdc..349579069 100644 --- a/internal/heartbeat/ticker.go +++ b/internal/heartbeat/ticker.go @@ -13,11 +13,11 @@ import ( "github.com/google/uuid" - "github.com/nextlevelbuilder/goclaw/internal/agent" - "github.com/nextlevelbuilder/goclaw/internal/bus" - "github.com/nextlevelbuilder/goclaw/internal/scheduler" - "github.com/nextlevelbuilder/goclaw/internal/sessions" - "github.com/nextlevelbuilder/goclaw/internal/store" + "github.com/vellus-ai/arargoclaw/internal/agent" + "github.com/vellus-ai/arargoclaw/internal/bus" + "github.com/vellus-ai/arargoclaw/internal/scheduler" + "github.com/vellus-ai/arargoclaw/internal/sessions" + "github.com/vellus-ai/arargoclaw/internal/store" ) const ( diff --git a/internal/http/activity.go b/internal/http/activity.go index 7c46ba21b..df1c652e3 100644 --- a/internal/http/activity.go +++ b/internal/http/activity.go @@ -4,7 +4,7 @@ import ( "net/http" "strconv" - "github.com/nextlevelbuilder/goclaw/internal/store" + "github.com/vellus-ai/arargoclaw/internal/store" ) // ActivityHandler handles activity audit log endpoints. diff --git a/internal/http/agents.go b/internal/http/agents.go index 549997d34..330d4b199 100644 --- a/internal/http/agents.go +++ b/internal/http/agents.go @@ -9,26 +9,26 @@ import ( "github.com/google/uuid" - "github.com/nextlevelbuilder/goclaw/internal/bootstrap" - "github.com/nextlevelbuilder/goclaw/internal/bus" - "github.com/nextlevelbuilder/goclaw/internal/config" - "github.com/nextlevelbuilder/goclaw/internal/i18n" - "github.com/nextlevelbuilder/goclaw/internal/store" - "github.com/nextlevelbuilder/goclaw/pkg/protocol" + "github.com/vellus-ai/arargoclaw/internal/bootstrap" + "github.com/vellus-ai/arargoclaw/internal/bus" + "github.com/vellus-ai/arargoclaw/internal/config" + "github.com/vellus-ai/arargoclaw/internal/i18n" + "github.com/vellus-ai/arargoclaw/internal/store" + "github.com/vellus-ai/arargoclaw/pkg/protocol" ) // AgentsHandler handles agent CRUD and sharing endpoints. type AgentsHandler struct { agents store.AgentStore token string - defaultWorkspace string // default workspace path template (e.g. "~/.goclaw/workspace") + defaultWorkspace string // default workspace path template (e.g. "~/.argoclaw/workspace") msgBus *bus.MessageBus // for cache invalidation events (nil = no events) summoner *AgentSummoner // LLM-based agent setup (nil = disabled) isOwner func(string) bool // checks if user ID is a system owner (nil = no owners configured) } // NewAgentsHandler creates a handler for agent management endpoints. -// isOwner is a function that checks if a user ID is in GOCLAW_OWNER_IDS (nil = disabled). +// isOwner is a function that checks if a user ID is in ARGOCLAW_OWNER_IDS (nil = disabled). func NewAgentsHandler(agents store.AgentStore, token, defaultWorkspace string, msgBus *bus.MessageBus, summoner *AgentSummoner, isOwner func(string) bool) *AgentsHandler { return &AgentsHandler{agents: agents, token: token, defaultWorkspace: defaultWorkspace, msgBus: msgBus, summoner: summoner, isOwner: isOwner} } diff --git a/internal/http/agents_instances.go b/internal/http/agents_instances.go index 717cbacbb..82fdee1ce 100644 --- a/internal/http/agents_instances.go +++ b/internal/http/agents_instances.go @@ -7,9 +7,9 @@ import ( "github.com/google/uuid" - "github.com/nextlevelbuilder/goclaw/internal/bus" - "github.com/nextlevelbuilder/goclaw/internal/i18n" - "github.com/nextlevelbuilder/goclaw/internal/store" + "github.com/vellus-ai/arargoclaw/internal/bus" + "github.com/vellus-ai/arargoclaw/internal/i18n" + "github.com/vellus-ai/arargoclaw/internal/store" ) // handleListInstances returns all user instances for a predefined agent. diff --git a/internal/http/agents_sharing.go b/internal/http/agents_sharing.go index f9cd87552..94c674c51 100644 --- a/internal/http/agents_sharing.go +++ b/internal/http/agents_sharing.go @@ -6,8 +6,8 @@ import ( "github.com/google/uuid" - "github.com/nextlevelbuilder/goclaw/internal/i18n" - "github.com/nextlevelbuilder/goclaw/internal/store" + "github.com/vellus-ai/arargoclaw/internal/i18n" + "github.com/vellus-ai/arargoclaw/internal/store" ) func (h *AgentsHandler) handleListShares(w http.ResponseWriter, r *http.Request) { diff --git a/internal/http/api_key_cache.go b/internal/http/api_key_cache.go index 372f98729..b01350859 100644 --- a/internal/http/api_key_cache.go +++ b/internal/http/api_key_cache.go @@ -5,8 +5,8 @@ import ( "sync" "time" - "github.com/nextlevelbuilder/goclaw/internal/permissions" - "github.com/nextlevelbuilder/goclaw/internal/store" + "github.com/vellus-ai/arargoclaw/internal/permissions" + "github.com/vellus-ai/arargoclaw/internal/store" ) // cacheEntry holds a cached API key lookup result. diff --git a/internal/http/api_key_cache_test.go b/internal/http/api_key_cache_test.go index 7d3d643bd..d9ac31100 100644 --- a/internal/http/api_key_cache_test.go +++ b/internal/http/api_key_cache_test.go @@ -8,8 +8,8 @@ import ( "github.com/google/uuid" - "github.com/nextlevelbuilder/goclaw/internal/permissions" - "github.com/nextlevelbuilder/goclaw/internal/store" + "github.com/vellus-ai/arargoclaw/internal/permissions" + "github.com/vellus-ai/arargoclaw/internal/store" ) // mockAPIKeyStore is a minimal mock for testing the cache layer. diff --git a/internal/http/api_keys.go b/internal/http/api_keys.go index 3f5c38e47..314dc8017 100644 --- a/internal/http/api_keys.go +++ b/internal/http/api_keys.go @@ -8,12 +8,12 @@ import ( "github.com/google/uuid" - "github.com/nextlevelbuilder/goclaw/internal/bus" - "github.com/nextlevelbuilder/goclaw/internal/crypto" - "github.com/nextlevelbuilder/goclaw/internal/i18n" - "github.com/nextlevelbuilder/goclaw/internal/permissions" - "github.com/nextlevelbuilder/goclaw/internal/store" - "github.com/nextlevelbuilder/goclaw/pkg/protocol" + "github.com/vellus-ai/arargoclaw/internal/bus" + "github.com/vellus-ai/arargoclaw/internal/crypto" + "github.com/vellus-ai/arargoclaw/internal/i18n" + "github.com/vellus-ai/arargoclaw/internal/permissions" + "github.com/vellus-ai/arargoclaw/internal/store" + "github.com/vellus-ai/arargoclaw/pkg/protocol" ) // APIKeysHandler handles API key management endpoints. diff --git a/internal/http/audit.go b/internal/http/audit.go index 9de66e6e5..0643bf779 100644 --- a/internal/http/audit.go +++ b/internal/http/audit.go @@ -3,9 +3,9 @@ package http import ( "net/http" - "github.com/nextlevelbuilder/goclaw/internal/bus" - "github.com/nextlevelbuilder/goclaw/internal/store" - "github.com/nextlevelbuilder/goclaw/pkg/protocol" + "github.com/vellus-ai/arargoclaw/internal/bus" + "github.com/vellus-ai/arargoclaw/internal/store" + "github.com/vellus-ai/arargoclaw/pkg/protocol" ) // emitAudit broadcasts an audit event via msgBus for async persistence. diff --git a/internal/http/auth.go b/internal/http/auth.go index 652fc62c0..188af656e 100644 --- a/internal/http/auth.go +++ b/internal/http/auth.go @@ -8,11 +8,11 @@ import ( "strings" "time" - "github.com/nextlevelbuilder/goclaw/internal/bus" - "github.com/nextlevelbuilder/goclaw/internal/crypto" - "github.com/nextlevelbuilder/goclaw/internal/i18n" - "github.com/nextlevelbuilder/goclaw/internal/permissions" - "github.com/nextlevelbuilder/goclaw/internal/store" + "github.com/vellus-ai/arargoclaw/internal/bus" + "github.com/vellus-ai/arargoclaw/internal/crypto" + "github.com/vellus-ai/arargoclaw/internal/i18n" + "github.com/vellus-ai/arargoclaw/internal/permissions" + "github.com/vellus-ai/arargoclaw/internal/store" ) // extractBearerToken extracts a bearer token from the Authorization header. @@ -40,7 +40,7 @@ func tokenMatch(provided, expected string) bool { // Returns "" if no user ID is provided (anonymous). // Rejects IDs exceeding MaxUserIDLength (VARCHAR(255) DB constraint). func extractUserID(r *http.Request) string { - id := r.Header.Get("X-GoClaw-User-Id") + id := r.Header.Get("X-ArgoClaw-User-Id") if id == "" { return "" } @@ -54,8 +54,8 @@ func extractUserID(r *http.Request) string { // extractAgentID determines the target agent from the request. // Checks model field, headers, and falls back to "default". func extractAgentID(r *http.Request, model string) string { - // From model field: "goclaw:" or "agent:" - if after, ok := strings.CutPrefix(model, "goclaw:"); ok { + // From model field: "argoclaw:" or "agent:" + if after, ok := strings.CutPrefix(model, "argoclaw:"); ok { return after } if after, ok := strings.CutPrefix(model, "agent:"); ok { @@ -63,10 +63,10 @@ func extractAgentID(r *http.Request, model string) string { } // From headers - if id := r.Header.Get("X-GoClaw-Agent-Id"); id != "" { + if id := r.Header.Get("X-ArgoClaw-Agent-Id"); id != "" { return id } - if id := r.Header.Get("X-GoClaw-Agent"); id != "" { + if id := r.Header.Get("X-ArgoClaw-Agent"); id != "" { return id } @@ -92,7 +92,7 @@ func InitAPIKeyCache(s store.APIKeyStore, mb *bus.MessageBus) { } // InitPairingAuth sets the pairing store for HTTP auth. -// Allows browser-paired users to access HTTP APIs via X-GoClaw-Sender-Id header. +// Allows browser-paired users to access HTTP APIs via X-ArgoClaw-Sender-Id header. func InitPairingAuth(ps store.PairingStore) { pkgPairingStore = ps } @@ -130,8 +130,8 @@ func resolveAuthBearer(r *http.Request, gatewayToken, bearer string) authResult if _, role := ResolveAPIKey(r.Context(), bearer); role != "" { return authResult{Role: role, Authenticated: true} } - // Browser pairing → operator (via X-GoClaw-Sender-Id header) - if senderID := r.Header.Get("X-GoClaw-Sender-Id"); senderID != "" && pkgPairingStore != nil { + // Browser pairing → operator (via X-ArgoClaw-Sender-Id header) + if senderID := r.Header.Get("X-ArgoClaw-Sender-Id"); senderID != "" && pkgPairingStore != nil { paired, err := pkgPairingStore.IsPaired(senderID, "browser") if err == nil && paired { return authResult{Role: permissions.RoleOperator, Authenticated: true} diff --git a/internal/http/auth_test.go b/internal/http/auth_test.go index 5c20a2f9b..f494d2702 100644 --- a/internal/http/auth_test.go +++ b/internal/http/auth_test.go @@ -6,9 +6,9 @@ import ( "testing" "time" - "github.com/nextlevelbuilder/goclaw/internal/bus" - "github.com/nextlevelbuilder/goclaw/internal/permissions" - "github.com/nextlevelbuilder/goclaw/internal/store" + "github.com/vellus-ai/arargoclaw/internal/bus" + "github.com/vellus-ai/arargoclaw/internal/permissions" + "github.com/vellus-ai/arargoclaw/internal/store" "github.com/google/uuid" ) @@ -199,7 +199,7 @@ func TestRequireAuth_InjectLocaleAndUserID(t *testing.T) { r := httptest.NewRequest("GET", "/v1/agents", nil) r.Header.Set("Authorization", "Bearer secret") r.Header.Set("Accept-Language", "vi") - r.Header.Set("X-GoClaw-User-Id", "user123") + r.Header.Set("X-ArgoClaw-User-Id", "user123") w := httptest.NewRecorder() handler(w, r) diff --git a/internal/http/builtin_tools.go b/internal/http/builtin_tools.go index 43e06ed9c..528dfe4f4 100644 --- a/internal/http/builtin_tools.go +++ b/internal/http/builtin_tools.go @@ -5,10 +5,10 @@ import ( "log/slog" "net/http" - "github.com/nextlevelbuilder/goclaw/internal/bus" - "github.com/nextlevelbuilder/goclaw/internal/i18n" - "github.com/nextlevelbuilder/goclaw/internal/store" - "github.com/nextlevelbuilder/goclaw/pkg/protocol" + "github.com/vellus-ai/arargoclaw/internal/bus" + "github.com/vellus-ai/arargoclaw/internal/i18n" + "github.com/vellus-ai/arargoclaw/internal/store" + "github.com/vellus-ai/arargoclaw/pkg/protocol" ) // BuiltinToolsHandler handles built-in tool management endpoints. diff --git a/internal/http/channel_instances.go b/internal/http/channel_instances.go index b670d2928..f0d1d16fb 100644 --- a/internal/http/channel_instances.go +++ b/internal/http/channel_instances.go @@ -9,10 +9,10 @@ import ( "github.com/google/uuid" - "github.com/nextlevelbuilder/goclaw/internal/bus" - "github.com/nextlevelbuilder/goclaw/internal/i18n" - "github.com/nextlevelbuilder/goclaw/internal/store" - "github.com/nextlevelbuilder/goclaw/pkg/protocol" + "github.com/vellus-ai/arargoclaw/internal/bus" + "github.com/vellus-ai/arargoclaw/internal/i18n" + "github.com/vellus-ai/arargoclaw/internal/store" + "github.com/vellus-ai/arargoclaw/pkg/protocol" ) // ChannelInstancesHandler handles channel instance CRUD endpoints. diff --git a/internal/http/chat_completions.go b/internal/http/chat_completions.go index 5a523a172..3d3c01dcb 100644 --- a/internal/http/chat_completions.go +++ b/internal/http/chat_completions.go @@ -9,12 +9,12 @@ import ( "github.com/google/uuid" - "github.com/nextlevelbuilder/goclaw/internal/agent" - "github.com/nextlevelbuilder/goclaw/internal/i18n" - "github.com/nextlevelbuilder/goclaw/internal/permissions" - "github.com/nextlevelbuilder/goclaw/internal/sessions" - "github.com/nextlevelbuilder/goclaw/internal/store" - "github.com/nextlevelbuilder/goclaw/internal/tools" + "github.com/vellus-ai/arargoclaw/internal/agent" + "github.com/vellus-ai/arargoclaw/internal/i18n" + "github.com/vellus-ai/arargoclaw/internal/permissions" + "github.com/vellus-ai/arargoclaw/internal/sessions" + "github.com/vellus-ai/arargoclaw/internal/store" + "github.com/vellus-ai/arargoclaw/internal/tools" ) // ChatCompletionsHandler handles POST /v1/chat/completions (OpenAI-compatible). diff --git a/internal/http/custom_tools.go b/internal/http/custom_tools.go index 5b574cad6..320108304 100644 --- a/internal/http/custom_tools.go +++ b/internal/http/custom_tools.go @@ -8,11 +8,11 @@ import ( "github.com/google/uuid" - "github.com/nextlevelbuilder/goclaw/internal/bus" - "github.com/nextlevelbuilder/goclaw/internal/i18n" - "github.com/nextlevelbuilder/goclaw/internal/store" - "github.com/nextlevelbuilder/goclaw/internal/tools" - "github.com/nextlevelbuilder/goclaw/pkg/protocol" + "github.com/vellus-ai/arargoclaw/internal/bus" + "github.com/vellus-ai/arargoclaw/internal/i18n" + "github.com/vellus-ai/arargoclaw/internal/store" + "github.com/vellus-ai/arargoclaw/internal/tools" + "github.com/vellus-ai/arargoclaw/pkg/protocol" ) // CustomToolsHandler handles custom tool CRUD endpoints. diff --git a/internal/http/delegations.go b/internal/http/delegations.go index d72b3870c..71a63faaf 100644 --- a/internal/http/delegations.go +++ b/internal/http/delegations.go @@ -6,8 +6,8 @@ import ( "github.com/google/uuid" - "github.com/nextlevelbuilder/goclaw/internal/i18n" - "github.com/nextlevelbuilder/goclaw/internal/store" + "github.com/vellus-ai/arargoclaw/internal/i18n" + "github.com/vellus-ai/arargoclaw/internal/store" ) // DelegationsHandler handles delegation history HTTP endpoints. diff --git a/internal/http/files.go b/internal/http/files.go index 3962b0819..a2d08b225 100644 --- a/internal/http/files.go +++ b/internal/http/files.go @@ -8,13 +8,13 @@ import ( "path/filepath" "strings" - "github.com/nextlevelbuilder/goclaw/internal/i18n" + "github.com/vellus-ai/arargoclaw/internal/i18n" ) // FilesHandler serves files over HTTP with Bearer token auth. // Accepts absolute paths — the auth token protects against unauthorized access. // When an exact path is not found, falls back to searching the workspace for -// generated files by basename (goclaw_gen_* filenames are globally unique). +// generated files by basename (argoclaw_gen_* filenames are globally unique). type FilesHandler struct { token string workspace string // workspace root for fallback file search @@ -69,7 +69,7 @@ func (h *FilesHandler) handleServe(w http.ResponseWriter, r *http.Request) { return } - // URL path is the absolute path with leading "/" stripped (e.g. "app/.goclaw/workspace/file.png") + // URL path is the absolute path with leading "/" stripped (e.g. "app/.argoclaw/workspace/file.png") absPath := filepath.Clean("/" + urlPath) // Block access to sensitive system directories @@ -84,7 +84,7 @@ func (h *FilesHandler) handleServe(w http.ResponseWriter, r *http.Request) { info, err := os.Stat(absPath) if err != nil || info.IsDir() { // Fallback: search workspace for file by basename (handles LLM-hallucinated paths). - // Generated filenames (goclaw_gen_*) include nanosecond timestamps and are globally unique. + // Generated filenames (argoclaw_gen_*) include nanosecond timestamps and are globally unique. if resolved := h.findInWorkspace(filepath.Base(absPath)); resolved != "" { absPath = resolved info, _ = os.Stat(absPath) diff --git a/internal/http/knowledge_graph.go b/internal/http/knowledge_graph.go index 1606c04f2..2dd9eabb4 100644 --- a/internal/http/knowledge_graph.go +++ b/internal/http/knowledge_graph.go @@ -3,9 +3,9 @@ package http import ( "net/http" - kg "github.com/nextlevelbuilder/goclaw/internal/knowledgegraph" - "github.com/nextlevelbuilder/goclaw/internal/providers" - "github.com/nextlevelbuilder/goclaw/internal/store" + kg "github.com/vellus-ai/arargoclaw/internal/knowledgegraph" + "github.com/vellus-ai/arargoclaw/internal/providers" + "github.com/vellus-ai/arargoclaw/internal/store" ) // KnowledgeGraphHandler handles KG entity/relation management endpoints. diff --git a/internal/http/knowledge_graph_handlers.go b/internal/http/knowledge_graph_handlers.go index 634729696..b33d399e8 100644 --- a/internal/http/knowledge_graph_handlers.go +++ b/internal/http/knowledge_graph_handlers.go @@ -6,8 +6,8 @@ import ( "net/http" "strconv" - "github.com/nextlevelbuilder/goclaw/internal/i18n" - "github.com/nextlevelbuilder/goclaw/internal/store" + "github.com/vellus-ai/arargoclaw/internal/i18n" + "github.com/vellus-ai/arargoclaw/internal/store" ) func (h *KnowledgeGraphHandler) handleListEntities(w http.ResponseWriter, r *http.Request) { diff --git a/internal/http/mcp.go b/internal/http/mcp.go index 8830afe66..8db56fdc9 100644 --- a/internal/http/mcp.go +++ b/internal/http/mcp.go @@ -7,10 +7,10 @@ import ( "github.com/google/uuid" - "github.com/nextlevelbuilder/goclaw/internal/bus" - "github.com/nextlevelbuilder/goclaw/internal/i18n" - "github.com/nextlevelbuilder/goclaw/internal/store" - "github.com/nextlevelbuilder/goclaw/pkg/protocol" + "github.com/vellus-ai/arargoclaw/internal/bus" + "github.com/vellus-ai/arargoclaw/internal/i18n" + "github.com/vellus-ai/arargoclaw/internal/store" + "github.com/vellus-ai/arargoclaw/pkg/protocol" ) // MCPToolLister returns discovered tool names for a specific MCP server. diff --git a/internal/http/mcp_grants.go b/internal/http/mcp_grants.go index aebe0c91e..21038f4d3 100644 --- a/internal/http/mcp_grants.go +++ b/internal/http/mcp_grants.go @@ -7,8 +7,8 @@ import ( "github.com/google/uuid" - "github.com/nextlevelbuilder/goclaw/internal/i18n" - "github.com/nextlevelbuilder/goclaw/internal/store" + "github.com/vellus-ai/arargoclaw/internal/i18n" + "github.com/vellus-ai/arargoclaw/internal/store" ) func (h *MCPHandler) handleGrantAgent(w http.ResponseWriter, r *http.Request) { diff --git a/internal/http/mcp_requests.go b/internal/http/mcp_requests.go index fc6c49a82..52b346539 100644 --- a/internal/http/mcp_requests.go +++ b/internal/http/mcp_requests.go @@ -7,8 +7,8 @@ import ( "github.com/google/uuid" - "github.com/nextlevelbuilder/goclaw/internal/i18n" - "github.com/nextlevelbuilder/goclaw/internal/store" + "github.com/vellus-ai/arargoclaw/internal/i18n" + "github.com/vellus-ai/arargoclaw/internal/store" ) func (h *MCPHandler) handleCreateRequest(w http.ResponseWriter, r *http.Request) { diff --git a/internal/http/mcp_tools.go b/internal/http/mcp_tools.go index bcaa33dc9..a91213045 100644 --- a/internal/http/mcp_tools.go +++ b/internal/http/mcp_tools.go @@ -7,9 +7,9 @@ import ( "github.com/google/uuid" - "github.com/nextlevelbuilder/goclaw/internal/i18n" - mcpbridge "github.com/nextlevelbuilder/goclaw/internal/mcp" - "github.com/nextlevelbuilder/goclaw/internal/store" + "github.com/vellus-ai/arargoclaw/internal/i18n" + mcpbridge "github.com/vellus-ai/arargoclaw/internal/mcp" + "github.com/vellus-ai/arargoclaw/internal/store" ) // handleTestConnection tests an MCP server connection without saving it. diff --git a/internal/http/media_serve.go b/internal/http/media_serve.go index 52c71c8ae..fa398a711 100644 --- a/internal/http/media_serve.go +++ b/internal/http/media_serve.go @@ -7,8 +7,8 @@ import ( "path/filepath" "strings" - "github.com/nextlevelbuilder/goclaw/internal/i18n" - "github.com/nextlevelbuilder/goclaw/internal/media" + "github.com/vellus-ai/arargoclaw/internal/i18n" + "github.com/vellus-ai/arargoclaw/internal/media" ) // MediaServeHandler serves persisted media files by ID. diff --git a/internal/http/media_upload.go b/internal/http/media_upload.go index bb2a8ff5c..dfce9459c 100644 --- a/internal/http/media_upload.go +++ b/internal/http/media_upload.go @@ -9,8 +9,8 @@ import ( "strings" "time" - "github.com/nextlevelbuilder/goclaw/internal/channels/media" - "github.com/nextlevelbuilder/goclaw/internal/i18n" + "github.com/vellus-ai/arargoclaw/internal/channels/media" + "github.com/vellus-ai/arargoclaw/internal/i18n" ) const ( diff --git a/internal/http/memory.go b/internal/http/memory.go index f281f9893..cefded116 100644 --- a/internal/http/memory.go +++ b/internal/http/memory.go @@ -3,7 +3,7 @@ package http import ( "net/http" - "github.com/nextlevelbuilder/goclaw/internal/store" + "github.com/vellus-ai/arargoclaw/internal/store" ) // MemoryHandler handles memory document management endpoints. diff --git a/internal/http/memory_handlers.go b/internal/http/memory_handlers.go index d35f630f8..23e4588e0 100644 --- a/internal/http/memory_handlers.go +++ b/internal/http/memory_handlers.go @@ -5,8 +5,8 @@ import ( "log/slog" "net/http" - "github.com/nextlevelbuilder/goclaw/internal/i18n" - "github.com/nextlevelbuilder/goclaw/internal/store" + "github.com/vellus-ai/arargoclaw/internal/i18n" + "github.com/vellus-ai/arargoclaw/internal/store" ) func (h *MemoryHandler) handleListAllDocuments(w http.ResponseWriter, r *http.Request) { diff --git a/internal/http/oauth.go b/internal/http/oauth.go index 0d7890890..8a855f411 100644 --- a/internal/http/oauth.go +++ b/internal/http/oauth.go @@ -10,11 +10,11 @@ import ( "github.com/google/uuid" - "github.com/nextlevelbuilder/goclaw/internal/bus" - "github.com/nextlevelbuilder/goclaw/internal/i18n" - "github.com/nextlevelbuilder/goclaw/internal/oauth" - "github.com/nextlevelbuilder/goclaw/internal/providers" - "github.com/nextlevelbuilder/goclaw/internal/store" + "github.com/vellus-ai/arargoclaw/internal/bus" + "github.com/vellus-ai/arargoclaw/internal/i18n" + "github.com/vellus-ai/arargoclaw/internal/oauth" + "github.com/vellus-ai/arargoclaw/internal/providers" + "github.com/vellus-ai/arargoclaw/internal/store" ) // OAuthHandler handles OAuth-related HTTP endpoints for web UI. diff --git a/internal/http/oauth_test.go b/internal/http/oauth_test.go index 0eb4d746e..c5e781e2c 100644 --- a/internal/http/oauth_test.go +++ b/internal/http/oauth_test.go @@ -10,7 +10,7 @@ import ( "github.com/google/uuid" - "github.com/nextlevelbuilder/goclaw/internal/store" + "github.com/vellus-ai/arargoclaw/internal/store" ) // --- mock stores for tests --- diff --git a/internal/http/openapi.go b/internal/http/openapi.go index 4c07058f4..1089b361b 100644 --- a/internal/http/openapi.go +++ b/internal/http/openapi.go @@ -41,7 +41,7 @@ const swaggerHTML = ` - GoClaw API Documentation + ArgoClaw API Documentation