diff --git a/.claude/skills/add-dashboard/SKILL.md b/.claude/skills/add-dashboard/SKILL.md index 246ac48..c891563 100644 --- a/.claude/skills/add-dashboard/SKILL.md +++ b/.claude/skills/add-dashboard/SKILL.md @@ -1,6 +1,6 @@ --- name: add-dashboard -description: Add a monitoring dashboard to NanoClaw v2. Installs @nanoco/nanoclaw-dashboard and a pusher that sends periodic JSON snapshots. +description: Add a monitoring dashboard to NanoClaw. Installs @nanoco/nanoclaw-dashboard and a pusher that sends periodic JSON snapshots. --- # /add-dashboard — NanoClaw Dashboard @@ -65,7 +65,7 @@ Add the `readEnvFile` import at the top if not already present: import { readEnvFile } from './env.js'; ``` -Add after step 7 (OneCLI approval handler), before the `log.info('NanoClaw v2 running')` line: +Add after step 7 (OneCLI approval handler), before the `log.info('NanoClaw running')` line: ```typescript // 8. Dashboard (optional) diff --git a/.claude/skills/add-discord/SKILL.md b/.claude/skills/add-discord/SKILL.md index 9b41a8b..6d3ccc8 100644 --- a/.claude/skills/add-discord/SKILL.md +++ b/.claude/skills/add-discord/SKILL.md @@ -1,15 +1,15 @@ --- -name: add-discord-v2 -description: Add Discord bot channel integration to NanoClaw v2 via Chat SDK. +name: add-discord +description: Add Discord bot channel integration via Chat SDK. --- # Add Discord Channel -Adds Discord bot support to NanoClaw v2. Discord is built in — no adapter package to install. +Adds Discord bot support via the Chat SDK bridge. ## Install -v2 trunk doesn't ship channels. This skill copies the Discord adapter in from the `channels` branch. +NanoClaw doesn't ship channels in trunk. This skill copies the Discord adapter in from the `channels` branch. ### Pre-flight (idempotent) diff --git a/.claude/skills/add-gchat/SKILL.md b/.claude/skills/add-gchat/SKILL.md index 342921a..c4d8dfd 100644 --- a/.claude/skills/add-gchat/SKILL.md +++ b/.claude/skills/add-gchat/SKILL.md @@ -1,15 +1,15 @@ --- -name: add-gchat-v2 -description: Add Google Chat channel integration to NanoClaw v2 via Chat SDK. +name: add-gchat +description: Add Google Chat channel integration via Chat SDK. --- # Add Google Chat Channel -Adds Google Chat support to NanoClaw v2 using the Chat SDK bridge. +Adds Google Chat support via the Chat SDK bridge. ## Install -v2 trunk doesn't ship channels. This skill copies the Google Chat adapter in from the `channels` branch. +NanoClaw doesn't ship channels in trunk. This skill copies the Google Chat adapter in from the `channels` branch. ### Pre-flight (idempotent) diff --git a/.claude/skills/add-github/SKILL.md b/.claude/skills/add-github/SKILL.md index 9971e80..e60e562 100644 --- a/.claude/skills/add-github/SKILL.md +++ b/.claude/skills/add-github/SKILL.md @@ -1,15 +1,15 @@ --- -name: add-github-v2 -description: Add GitHub channel integration to NanoClaw v2 via Chat SDK. PR and issue comment threads as conversations. +name: add-github +description: Add GitHub channel integration via Chat SDK. PR and issue comment threads as conversations. --- # Add GitHub Channel -Adds GitHub support to NanoClaw v2 using the Chat SDK bridge. The agent participates in PR and issue comment threads. +Adds GitHub support via the Chat SDK bridge. The agent participates in PR and issue comment threads. ## Install -v2 trunk doesn't ship channels. This skill copies the GitHub adapter in from the `channels` branch. +NanoClaw doesn't ship channels in trunk. This skill copies the GitHub adapter in from the `channels` branch. ### Pre-flight (idempotent) diff --git a/.claude/skills/add-imessage/SKILL.md b/.claude/skills/add-imessage/SKILL.md index 36d1f65..7ee87aa 100644 --- a/.claude/skills/add-imessage/SKILL.md +++ b/.claude/skills/add-imessage/SKILL.md @@ -1,15 +1,15 @@ --- -name: add-imessage-v2 -description: Add iMessage channel integration to NanoClaw v2 via Chat SDK. Local (macOS) or remote (Photon API) mode. +name: add-imessage +description: Add iMessage channel integration via Chat SDK. Local (macOS) or remote (Photon API) mode. --- # Add iMessage Channel -Adds iMessage support to NanoClaw v2 using the Chat SDK bridge. Two modes: local (macOS with Full Disk Access) or remote (Photon API). +Adds iMessage support via the Chat SDK bridge. Two modes: local (macOS with Full Disk Access) or remote (Photon API). ## Install -v2 trunk doesn't ship channels. This skill copies the iMessage adapter in from the `channels` branch. +NanoClaw doesn't ship channels in trunk. This skill copies the iMessage adapter in from the `channels` branch. ### Pre-flight (idempotent) diff --git a/.claude/skills/add-linear/SKILL.md b/.claude/skills/add-linear/SKILL.md index b7105f3..f3650b6 100644 --- a/.claude/skills/add-linear/SKILL.md +++ b/.claude/skills/add-linear/SKILL.md @@ -1,15 +1,15 @@ --- -name: add-linear-v2 -description: Add Linear channel integration to NanoClaw v2 via Chat SDK. Issue comment threads as conversations. +name: add-linear +description: Add Linear channel integration via Chat SDK. Issue comment threads as conversations. --- # Add Linear Channel -Adds Linear support to NanoClaw v2 using the Chat SDK bridge. The agent participates in issue comment threads. +Adds Linear support via the Chat SDK bridge. The agent participates in issue comment threads. ## Install -v2 trunk doesn't ship channels. This skill copies the Linear adapter in from the `channels` branch. +NanoClaw doesn't ship channels in trunk. This skill copies the Linear adapter in from the `channels` branch. ### Pre-flight (idempotent) diff --git a/.claude/skills/add-matrix/SKILL.md b/.claude/skills/add-matrix/SKILL.md index 209998a..7a6ea0f 100644 --- a/.claude/skills/add-matrix/SKILL.md +++ b/.claude/skills/add-matrix/SKILL.md @@ -1,15 +1,15 @@ --- -name: add-matrix-v2 -description: Add Matrix channel integration to NanoClaw v2 via Chat SDK. Works with any Matrix homeserver. +name: add-matrix +description: Add Matrix channel integration via Chat SDK. Works with any Matrix homeserver. --- # Add Matrix Channel -Adds Matrix support to NanoClaw v2 using the Chat SDK bridge. +Adds Matrix support via the Chat SDK bridge. ## Install -v2 trunk doesn't ship channels. This skill copies the Matrix adapter in from the `channels` branch. +NanoClaw doesn't ship channels in trunk. This skill copies the Matrix adapter in from the `channels` branch. ### Pre-flight (idempotent) diff --git a/.claude/skills/add-opencode/SKILL.md b/.claude/skills/add-opencode/SKILL.md index 1edaaad..1dd31df 100644 --- a/.claude/skills/add-opencode/SKILL.md +++ b/.claude/skills/add-opencode/SKILL.md @@ -1,13 +1,13 @@ --- name: add-opencode -description: Use OpenCode as an agent provider on NanoClaw v2 (AGENT_PROVIDER=opencode). OpenRouter, OpenAI, Google, DeepSeek, etc. via OpenCode config — not the Anthropic Agent SDK. Per-session and per-group via agent_provider; host passes OPENCODE_* and XDG mount when spawning containers. +description: Use OpenCode as an agent provider (AGENT_PROVIDER=opencode). OpenRouter, OpenAI, Google, DeepSeek, etc. via OpenCode config — not the Anthropic Agent SDK. Per-session and per-group via agent_provider; host passes OPENCODE_* and XDG mount when spawning containers. --- -# OpenCode agent provider (v2) +# OpenCode agent provider -NanoClaw **v2** runs agents in a long-lived **poll loop** inside the container. The backend is selected with **`AGENT_PROVIDER`** (`claude` | `opencode` | `mock`). +NanoClaw runs agents in a long-lived **poll loop** inside the container. The backend is selected with **`AGENT_PROVIDER`** (`claude` | `opencode` | `mock`). -v2 trunk ships with only the `claude` provider baked in. This skill copies the OpenCode provider files in from the `providers` branch, wires them into the host and container barrels, installs dependencies, and rebuilds the image. +Trunk ships with only the `claude` provider baked in. This skill copies the OpenCode provider files in from the `providers` branch, wires them into the host and container barrels, installs dependencies, and rebuilds the image. ## Install @@ -137,7 +137,7 @@ OPENCODE_MODEL=openrouter/google/gemini-2.5-pro-preview Zen's HTTP API (e.g. `POST …/zen/v1/messages`) expects the key in the **`x-api-key`** header. If OneCLI injects **`Authorization: Bearer …`** only, Zen often returns **401 / "Missing API key"** even though the gateway is working. -**Naming:** NanoClaw **`AGENT_PROVIDER=opencode`** (v2 DB `agent_provider`) means "run the **OpenCode agent provider**." Separately, **`OPENCODE_PROVIDER=opencode`** in `.env` is OpenCode's **Zen provider id** inside the OpenCode config (see [Zen docs](https://opencode.ai/docs/zen/)). +**Naming:** NanoClaw **`AGENT_PROVIDER=opencode`** (DB `agent_provider`) means "run the **OpenCode agent provider**." Separately, **`OPENCODE_PROVIDER=opencode`** in `.env` is OpenCode's **Zen provider id** inside the OpenCode config (see [Zen docs](https://opencode.ai/docs/zen/)). **Host `.env` (typical Zen shape):** @@ -166,7 +166,7 @@ For comparison, OpenRouter uses `Authorization` + `Bearer {value}`. Zen is diffe ### Per group / per session -v2 schema: **`agent_groups.agent_provider`** and **`sessions.agent_provider`**. Set to `opencode` for groups or sessions that should use OpenCode. The container receives `AGENT_PROVIDER` from the resolved value (session overrides group). +Schema: **`agent_groups.agent_provider`** and **`sessions.agent_provider`**. Set to `opencode` for groups or sessions that should use OpenCode. The container receives `AGENT_PROVIDER` from the resolved value (session overrides group). Extra MCP servers still come from **`NANOCLAW_MCP_SERVERS`** / `container_config.mcpServers` on the host; the runner merges them into the same `mcpServers` object passed to **both** Claude and OpenCode providers. @@ -185,7 +185,3 @@ grep -q "@opencode-ai/sdk" container/agent-runner/package.json && echo "agent-ru grep -q "opencode-ai@" container/Dockerfile && echo "Dockerfile install: OK" cd container/agent-runner && bun test src/providers/ && cd - ``` - -## Migrate from v1 wording - -If documentation or habits still say **`AGENT_RUNNER=opencode`**, update to **`AGENT_PROVIDER=opencode`** and store **`agent_provider`** in v2 tables, not v1 runner columns. diff --git a/.claude/skills/add-resend/SKILL.md b/.claude/skills/add-resend/SKILL.md index 9191257..59ff577 100644 --- a/.claude/skills/add-resend/SKILL.md +++ b/.claude/skills/add-resend/SKILL.md @@ -1,6 +1,6 @@ --- -name: add-resend-v2 -description: Add Resend (email) channel integration to NanoClaw v2 via Chat SDK. +name: add-resend +description: Add Resend (email) channel integration via Chat SDK. --- # Add Resend Email Channel @@ -9,7 +9,7 @@ Connect NanoClaw to email via Resend for async email conversations. ## Install -v2 trunk doesn't ship channels. This skill copies the Resend adapter in from the `channels` branch. +NanoClaw doesn't ship channels in trunk. This skill copies the Resend adapter in from the `channels` branch. ### Pre-flight (idempotent) diff --git a/.claude/skills/add-slack/SKILL.md b/.claude/skills/add-slack/SKILL.md index 7946c87..318de7b 100644 --- a/.claude/skills/add-slack/SKILL.md +++ b/.claude/skills/add-slack/SKILL.md @@ -1,15 +1,15 @@ --- -name: add-slack-v2 -description: Add Slack channel integration to NanoClaw v2 via Chat SDK. +name: add-slack +description: Add Slack channel integration via Chat SDK. --- # Add Slack Channel -Adds Slack support to NanoClaw v2 using the Chat SDK bridge. +Adds Slack support via the Chat SDK bridge. ## Install -v2 trunk doesn't ship channels. This skill copies the Slack adapter in from the `channels` branch. +NanoClaw doesn't ship channels in trunk. This skill copies the Slack adapter in from the `channels` branch. ### Pre-flight (idempotent) diff --git a/.claude/skills/add-teams/SKILL.md b/.claude/skills/add-teams/SKILL.md index c9301b3..10bce29 100644 --- a/.claude/skills/add-teams/SKILL.md +++ b/.claude/skills/add-teams/SKILL.md @@ -1,6 +1,6 @@ --- -name: add-teams-v2 -description: Add Microsoft Teams channel integration to NanoClaw v2 via Chat SDK. +name: add-teams +description: Add Microsoft Teams channel integration via Chat SDK. --- # Add Microsoft Teams Channel @@ -9,7 +9,7 @@ Connect NanoClaw to Microsoft Teams for interactive chat in team channels, group ## Install -v2 trunk doesn't ship channels. This skill copies the Teams adapter in from the `channels` branch. +NanoClaw doesn't ship channels in trunk. This skill copies the Teams adapter in from the `channels` branch. ### Pre-flight (idempotent) diff --git a/.claude/skills/add-telegram/SKILL.md b/.claude/skills/add-telegram/SKILL.md index 053d7a2..f605b41 100644 --- a/.claude/skills/add-telegram/SKILL.md +++ b/.claude/skills/add-telegram/SKILL.md @@ -1,15 +1,15 @@ --- -name: add-telegram-v2 -description: Add Telegram channel integration to NanoClaw v2 via Chat SDK. +name: add-telegram +description: Add Telegram channel integration via Chat SDK. --- # Add Telegram Channel -Adds Telegram bot support to NanoClaw v2 using the Chat SDK bridge. +Adds Telegram bot support via the Chat SDK bridge. ## Install -v2 trunk doesn't ship channels. This skill copies the Telegram adapter, its formatting/pairing helpers, their tests, and the `pair-telegram` setup step in from the `channels` branch. +NanoClaw doesn't ship channels in trunk. This skill copies the Telegram adapter, its formatting/pairing helpers, their tests, and the `pair-telegram` setup step in from the `channels` branch. ### Pre-flight (idempotent) diff --git a/.claude/skills/add-webex/SKILL.md b/.claude/skills/add-webex/SKILL.md index a81d878..0f52178 100644 --- a/.claude/skills/add-webex/SKILL.md +++ b/.claude/skills/add-webex/SKILL.md @@ -1,15 +1,15 @@ --- -name: add-webex-v2 -description: Add Webex channel integration to NanoClaw v2 via Chat SDK. +name: add-webex +description: Add Webex channel integration via Chat SDK. --- # Add Webex Channel -Adds Cisco Webex support to NanoClaw v2 using the Chat SDK bridge. +Adds Cisco Webex support via the Chat SDK bridge. ## Install -v2 trunk doesn't ship channels. This skill copies the Webex adapter in from the `channels` branch. +NanoClaw doesn't ship channels in trunk. This skill copies the Webex adapter in from the `channels` branch. ### Pre-flight (idempotent) diff --git a/.claude/skills/add-whatsapp-cloud/SKILL.md b/.claude/skills/add-whatsapp-cloud/SKILL.md index fe778b2..d08f375 100644 --- a/.claude/skills/add-whatsapp-cloud/SKILL.md +++ b/.claude/skills/add-whatsapp-cloud/SKILL.md @@ -1,6 +1,6 @@ --- -name: add-whatsapp-cloud-v2 -description: Add WhatsApp Business Cloud API channel to NanoClaw v2 via Chat SDK. Official Meta API. +name: add-whatsapp-cloud +description: Add WhatsApp Business Cloud API channel via Chat SDK. Official Meta API. --- # Add WhatsApp Cloud API Channel @@ -9,7 +9,7 @@ Connect NanoClaw to WhatsApp via the official Meta WhatsApp Business Cloud API. ## Install -v2 trunk doesn't ship channels. This skill copies the WhatsApp Cloud adapter in from the `channels` branch. +NanoClaw doesn't ship channels in trunk. This skill copies the WhatsApp Cloud adapter in from the `channels` branch. ### Pre-flight (idempotent) diff --git a/.claude/skills/add-whatsapp/SKILL.md b/.claude/skills/add-whatsapp/SKILL.md index 8d90b62..3f10ce1 100644 --- a/.claude/skills/add-whatsapp/SKILL.md +++ b/.claude/skills/add-whatsapp/SKILL.md @@ -1,15 +1,15 @@ --- -name: add-whatsapp-v2 -description: Add WhatsApp channel to NanoClaw v2 using native Baileys adapter. Direct connection — no Chat SDK bridge. Uses QR code or pairing code for authentication. +name: add-whatsapp +description: Add WhatsApp channel via native Baileys adapter. Direct connection — no Chat SDK bridge. Uses QR code or pairing code for authentication. --- # Add WhatsApp Channel -Adds WhatsApp support to NanoClaw v2 using the native Baileys adapter (no Chat SDK bridge). +Adds WhatsApp support via the native Baileys adapter (no Chat SDK bridge). ## Install -v2 trunk doesn't ship channels. This skill copies the native WhatsApp (Baileys) adapter and its `whatsapp-auth` setup step in from the `channels` branch. No Chat SDK bridge. +NanoClaw doesn't ship channels in trunk. This skill copies the native WhatsApp (Baileys) adapter and its `whatsapp-auth` setup step in from the `channels` branch. No Chat SDK bridge. ### Pre-flight (idempotent) diff --git a/.claude/skills/init-first-agent/SKILL.md b/.claude/skills/init-first-agent/SKILL.md index fcda7c0..be78845 100644 --- a/.claude/skills/init-first-agent/SKILL.md +++ b/.claude/skills/init-first-agent/SKILL.md @@ -1,16 +1,16 @@ --- name: init-first-agent -description: Walk the operator through creating the first NanoClaw v2 agent for a DM channel — resolve the operator's channel identity, wire the DM messaging group to a new agent, and trigger a welcome DM via the normal delivery path. Use after channel credentials are configured and the service is running. +description: Walk the operator through creating the first NanoClaw agent for a DM channel — resolve the operator's channel identity, wire the DM messaging group to a new agent, and trigger a welcome DM via the normal delivery path. Use after channel credentials are configured and the service is running. --- # Init First Agent -Stand up the first NanoClaw v2 agent for a channel and verify end-to-end delivery by having the agent DM the operator. Everything the skill does is idempotent — rerunning is safe. +Stand up the first NanoClaw agent for a channel and verify end-to-end delivery by having the agent DM the operator. Everything the skill does is idempotent — rerunning is safe. ## Prerequisites - **Service running.** Check: `launchctl list | grep nanoclaw` (macOS) or `systemctl --user status nanoclaw` (Linux). If stopped, tell the user to run `/setup` first. -- **Target channel installed.** At least one `/add--v2` skill has run, credentials are in `.env`, and the adapter is uncommented in `src/channels/index.ts`. +- **Target channel installed.** At least one `/add-` skill has run, credentials are in `.env`, and the adapter is uncommented in `src/channels/index.ts`. - **Adapter connected.** Tail `logs/nanoclaw.log` — look for a recent `channel setup` / `adapter connected` line for the target channel. ## 1. Pick the channel @@ -23,7 +23,7 @@ Record the choice as `CHANNEL` (lowercase, e.g. `discord`). ## 2. Ask for the operator's identity -Read the channel's own skill for its `## Channel Info > how-to-find-id` section (e.g. `.claude/skills/add-discord-v2/SKILL.md`, `.claude/skills/add-telegram-v2/SKILL.md`). Show those instructions to the user in plain text. +Read the channel's own skill for its `## Channel Info > how-to-find-id` section (e.g. `.claude/skills/add-discord/SKILL.md`, `.claude/skills/add-telegram/SKILL.md`). Show those instructions to the user in plain text. Then ask in plain text (NOT `AskUserQuestion` — these are free-form): diff --git a/.claude/skills/manage-channels/SKILL.md b/.claude/skills/manage-channels/SKILL.md index c1bca29..9d84d3d 100644 --- a/.claude/skills/manage-channels/SKILL.md +++ b/.claude/skills/manage-channels/SKILL.md @@ -5,13 +5,13 @@ description: Wire channels to agent groups, manage isolation levels, add new cha # Manage Channels -Wire messaging channels to agent groups. See `docs/v2-isolation-model.md` for the full isolation model. +Wire messaging channels to agent groups. See `docs/isolation-model.md` for the full isolation model. Privilege is a **user-level** concept, not a channel-level one (see `src/db/user-roles.ts`, `src/access.ts`). There is no "main channel" / "main group" — any user can be granted `owner` or `admin` (global or scoped to an agent group) via `grantRole()`, and messages from unknown senders are gated per-messaging-group by `unknown_sender_policy` (`strict` | `request_approval` | `public`). ## Assess Current State -Read the v2 central DB (`data/v2.db`) — query `agent_groups`, `messaging_groups`, `messaging_group_agents`, `users`, and `user_roles` tables. Also check `.env` for channel tokens and `src/channels/index.ts` for uncommented imports. +Read the central DB (`data/v2.db`) — query `agent_groups`, `messaging_groups`, `messaging_group_agents`, `users`, and `user_roles` tables. Also check `.env` for channel tokens and `src/channels/index.ts` for uncommented imports. Categorize channels as: **wired** (has DB entities + messaging_group_agents row), **configured but unwired** (has credentials + barrel import, no DB entities), or **not configured**. @@ -38,7 +38,7 @@ Present a multiple-choice with a contextual recommendation. The three options: - **Same agent, separate conversations** (`--session-mode "shared"` + existing folder) — shared workspace/memory, independent threads. Recommend for same user across platforms. - **Separate agent** (new `--folder`) — full isolation. Recommend when different people are involved. -Use the channel's `typical-use` and `default-isolation` fields to pick the recommendation. Offer to explain more if the user is unsure — reference `docs/v2-isolation-model.md` for the detailed explanation. +Use the channel's `typical-use` and `default-isolation` fields to pick the recommendation. Offer to explain more if the user is unsure — reference `docs/isolation-model.md` for the detailed explanation. ### Register Command diff --git a/.claude/skills/setup/SKILL.md b/.claude/skills/setup/SKILL.md index 25cbfa3..3b21e14 100644 --- a/.claude/skills/setup/SKILL.md +++ b/.claude/skills/setup/SKILL.md @@ -213,19 +213,19 @@ Channels where the agent gets its own identity (name and avatar) are marked as r Invoke the matching skill: -- **Discord:** Invoke `/add-discord-v2` -- **Slack:** Invoke `/add-slack-v2` -- **Telegram:** Invoke `/add-telegram-v2` -- **GitHub:** Invoke `/add-github-v2` -- **Linear:** Invoke `/add-linear-v2` -- **Microsoft Teams:** Invoke `/add-teams-v2` -- **Google Chat:** Invoke `/add-gchat-v2` -- **WhatsApp Cloud API:** Invoke `/add-whatsapp-cloud-v2` +- **Discord:** Invoke `/add-discord` +- **Slack:** Invoke `/add-slack` +- **Telegram:** Invoke `/add-telegram` +- **GitHub:** Invoke `/add-github` +- **Linear:** Invoke `/add-linear` +- **Microsoft Teams:** Invoke `/add-teams` +- **Google Chat:** Invoke `/add-gchat` +- **WhatsApp Cloud API:** Invoke `/add-whatsapp-cloud` - **WhatsApp Baileys:** Invoke `/add-whatsapp` -- **Resend:** Invoke `/add-resend-v2` -- **Matrix:** Invoke `/add-matrix-v2` -- **Webex:** Invoke `/add-webex-v2` -- **iMessage:** Invoke `/add-imessage-v2` +- **Resend:** Invoke `/add-resend` +- **Matrix:** Invoke `/add-matrix` +- **Webex:** Invoke `/add-webex` +- **iMessage:** Invoke `/add-imessage` The skill will: 1. Install the Chat SDK adapter package diff --git a/src/index.ts b/src/index.ts index 08c1564..e2a1b9e 100644 --- a/src/index.ts +++ b/src/index.ts @@ -1,5 +1,5 @@ /** - * NanoClaw v2 — main entry point. + * NanoClaw — main entry point. * * Thin orchestrator: init DB, run migrations, start channel adapters, * start delivery polls, start sweep, handle shutdown. @@ -41,7 +41,7 @@ import type { ChannelAdapter, ChannelSetup, ConversationConfig } from './channel import { initChannelAdapters, teardownChannelAdapters, getChannelAdapter } from './channels/channel-registry.js'; async function main(): Promise { - log.info('NanoClaw v2 starting'); + log.info('NanoClaw starting'); // 1. Init central DB const dbPath = path.join(DATA_DIR, 'v2.db'); @@ -125,7 +125,7 @@ async function main(): Promise { // 7. Start OneCLI manual-approval handler startOneCLIApprovalHandler(deliveryAdapter); - log.info('NanoClaw v2 running'); + log.info('NanoClaw running'); } /** Build ConversationConfig[] for a channel type from the central DB. */