diff --git a/.claude/skills/add-gchat-v2/REMOVE.md b/.claude/skills/add-gchat-v2/REMOVE.md index a88cbb2..104ad2d 100644 --- a/.claude/skills/add-gchat-v2/REMOVE.md +++ b/.claude/skills/add-gchat-v2/REMOVE.md @@ -2,5 +2,5 @@ 1. Comment out `import './gchat.js'` in `src/channels/index.ts` 2. Remove `GCHAT_CREDENTIALS` from `.env` -3. `ppnpm uninstall @chat-adapter/gchat` +3. `pnpm uninstall @chat-adapter/gchat` 4. Rebuild and restart diff --git a/.claude/skills/add-github-v2/REMOVE.md b/.claude/skills/add-github-v2/REMOVE.md index 9d0b05b..c41df6f 100644 --- a/.claude/skills/add-github-v2/REMOVE.md +++ b/.claude/skills/add-github-v2/REMOVE.md @@ -2,5 +2,5 @@ 1. Comment out `import './github.js'` in `src/channels/index.ts` 2. Remove `GITHUB_TOKEN` and `GITHUB_WEBHOOK_SECRET` from `.env` -3. `ppnpm uninstall @chat-adapter/github` +3. `pnpm uninstall @chat-adapter/github` 4. Rebuild and restart diff --git a/.claude/skills/add-gmail/SKILL.md b/.claude/skills/add-gmail/SKILL.md index 055d8fe..6a13291 100644 --- a/.claude/skills/add-gmail/SKILL.md +++ b/.claude/skills/add-gmail/SKILL.md @@ -230,7 +230,7 @@ pnpm dlx @gongrzhe/server-gmail-autoauth-mcp 2. Remove `import './gmail.js'` from `src/channels/index.ts` 3. Remove `~/.gmail-mcp` mount from `src/container-runner.ts` 4. Remove `gmail` MCP server and `mcp__gmail__*` from `container/agent-runner/src/index.ts` -5. Uninstall: `ppnpm uninstall googleapis` +5. Uninstall: `pnpm uninstall googleapis` 6. Rebuild and restart 7. Clear stale agent-runner copies: `rm -r data/sessions/*/agent-runner-src 2>/dev/null || true` 8. Rebuild: `cd container && ./build.sh && cd .. && pnpm run build && launchctl kickstart -k gui/$(id -u)/com.nanoclaw` (macOS) or `systemctl --user restart nanoclaw` (Linux) diff --git a/.claude/skills/add-imessage-v2/REMOVE.md b/.claude/skills/add-imessage-v2/REMOVE.md index d9d8aef..684b2d1 100644 --- a/.claude/skills/add-imessage-v2/REMOVE.md +++ b/.claude/skills/add-imessage-v2/REMOVE.md @@ -2,5 +2,5 @@ 1. Comment out `import './imessage.js'` in `src/channels/index.ts` 2. Remove iMessage env vars (`IMESSAGE_ENABLED`, `IMESSAGE_LOCAL`, `IMESSAGE_SERVER_URL`, `IMESSAGE_API_KEY`) from `.env` -3. `ppnpm uninstall chat-adapter-imessage` +3. `pnpm uninstall chat-adapter-imessage` 4. Rebuild and restart diff --git a/.claude/skills/add-linear-v2/REMOVE.md b/.claude/skills/add-linear-v2/REMOVE.md index 270c02c..4b95024 100644 --- a/.claude/skills/add-linear-v2/REMOVE.md +++ b/.claude/skills/add-linear-v2/REMOVE.md @@ -2,5 +2,5 @@ 1. Comment out `import './linear.js'` in `src/channels/index.ts` 2. Remove `LINEAR_API_KEY` and `LINEAR_WEBHOOK_SECRET` from `.env` -3. `ppnpm uninstall @chat-adapter/linear` +3. `pnpm uninstall @chat-adapter/linear` 4. Rebuild and restart diff --git a/.claude/skills/add-matrix-v2/REMOVE.md b/.claude/skills/add-matrix-v2/REMOVE.md index 3cb6753..b64aa56 100644 --- a/.claude/skills/add-matrix-v2/REMOVE.md +++ b/.claude/skills/add-matrix-v2/REMOVE.md @@ -2,5 +2,5 @@ 1. Comment out `import './matrix.js'` in `src/channels/index.ts` 2. Remove `MATRIX_BASE_URL`, `MATRIX_ACCESS_TOKEN`, `MATRIX_USER_ID`, `MATRIX_BOT_USERNAME` from `.env` -3. `ppnpm uninstall @beeper/chat-adapter-matrix` +3. `pnpm uninstall @beeper/chat-adapter-matrix` 4. Rebuild and restart diff --git a/.claude/skills/add-resend-v2/REMOVE.md b/.claude/skills/add-resend-v2/REMOVE.md index 4d38414..4c00004 100644 --- a/.claude/skills/add-resend-v2/REMOVE.md +++ b/.claude/skills/add-resend-v2/REMOVE.md @@ -2,5 +2,5 @@ 1. Comment out `import './resend.js'` in `src/channels/index.ts` 2. Remove `RESEND_API_KEY`, `RESEND_FROM_ADDRESS`, `RESEND_FROM_NAME`, `RESEND_WEBHOOK_SECRET` from `.env` -3. `ppnpm uninstall @resend/chat-sdk-adapter` +3. `pnpm uninstall @resend/chat-sdk-adapter` 4. Rebuild and restart diff --git a/.claude/skills/add-slack-v2/REMOVE.md b/.claude/skills/add-slack-v2/REMOVE.md index e489d4c..3ac402a 100644 --- a/.claude/skills/add-slack-v2/REMOVE.md +++ b/.claude/skills/add-slack-v2/REMOVE.md @@ -2,5 +2,5 @@ 1. Comment out `import './slack.js'` in `src/channels/index.ts` 2. Remove `SLACK_BOT_TOKEN` and `SLACK_SIGNING_SECRET` from `.env` -3. `ppnpm uninstall @chat-adapter/slack` +3. `pnpm uninstall @chat-adapter/slack` 4. Rebuild and restart diff --git a/.claude/skills/add-teams-v2/REMOVE.md b/.claude/skills/add-teams-v2/REMOVE.md index e35415c..caa87b8 100644 --- a/.claude/skills/add-teams-v2/REMOVE.md +++ b/.claude/skills/add-teams-v2/REMOVE.md @@ -2,5 +2,5 @@ 1. Comment out `import './teams.js'` in `src/channels/index.ts` 2. Remove `TEAMS_APP_ID` and `TEAMS_APP_PASSWORD` from `.env` -3. `ppnpm uninstall @chat-adapter/teams` +3. `pnpm uninstall @chat-adapter/teams` 4. Rebuild and restart diff --git a/.claude/skills/add-telegram-v2/REMOVE.md b/.claude/skills/add-telegram-v2/REMOVE.md index 8d7c5b0..3d6d2b8 100644 --- a/.claude/skills/add-telegram-v2/REMOVE.md +++ b/.claude/skills/add-telegram-v2/REMOVE.md @@ -2,5 +2,5 @@ 1. Comment out `import './telegram.js'` in `src/channels/index.ts` 2. Remove `TELEGRAM_BOT_TOKEN` from `.env` -3. `ppnpm uninstall @chat-adapter/telegram` +3. `pnpm uninstall @chat-adapter/telegram` 4. Rebuild and restart diff --git a/.claude/skills/add-telegram/SKILL.md b/.claude/skills/add-telegram/SKILL.md index e95dcce..da760ee 100644 --- a/.claude/skills/add-telegram/SKILL.md +++ b/.claude/skills/add-telegram/SKILL.md @@ -210,5 +210,5 @@ To remove Telegram integration: 2. Remove `import './telegram.js'` from `src/channels/index.ts` 3. Remove `TELEGRAM_BOT_TOKEN` from `.env` 4. Remove Telegram registrations from SQLite: `sqlite3 store/messages.db "DELETE FROM registered_groups WHERE jid LIKE 'tg:%'"` -5. Uninstall: `ppnpm uninstall grammy` +5. Uninstall: `pnpm uninstall grammy` 6. Rebuild: `pnpm run build && launchctl kickstart -k gui/$(id -u)/com.nanoclaw` (macOS) or `pnpm run build && systemctl --user restart nanoclaw` (Linux) diff --git a/.claude/skills/add-webex-v2/REMOVE.md b/.claude/skills/add-webex-v2/REMOVE.md index d2d2556..b778644 100644 --- a/.claude/skills/add-webex-v2/REMOVE.md +++ b/.claude/skills/add-webex-v2/REMOVE.md @@ -2,5 +2,5 @@ 1. Comment out `import './webex.js'` in `src/channels/index.ts` 2. Remove `WEBEX_BOT_TOKEN` and `WEBEX_WEBHOOK_SECRET` from `.env` -3. `ppnpm uninstall @bitbasti/chat-adapter-webex` +3. `pnpm uninstall @bitbasti/chat-adapter-webex` 4. Rebuild and restart diff --git a/.claude/skills/add-whatsapp-cloud-v2/REMOVE.md b/.claude/skills/add-whatsapp-cloud-v2/REMOVE.md index ab3d369..d10df0e 100644 --- a/.claude/skills/add-whatsapp-cloud-v2/REMOVE.md +++ b/.claude/skills/add-whatsapp-cloud-v2/REMOVE.md @@ -2,5 +2,5 @@ 1. Comment out `import './whatsapp-cloud.js'` in `src/channels/index.ts` 2. Remove `WHATSAPP_ACCESS_TOKEN`, `WHATSAPP_PHONE_NUMBER_ID`, `WHATSAPP_APP_SECRET`, `WHATSAPP_VERIFY_TOKEN` from `.env` -3. `ppnpm uninstall @chat-adapter/whatsapp` +3. `pnpm uninstall @chat-adapter/whatsapp` 4. Rebuild and restart diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 6550b08..ebe5257 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -24,7 +24,7 @@ importers: specifier: ^4.24.0 version: 4.26.0 '@chat-adapter/linear': - specifier: ^4.24.0 + specifier: ^4.26.0 version: 4.26.0(graphql@16.13.2) '@chat-adapter/slack': specifier: ^4.24.0 @@ -51,7 +51,7 @@ importers: specifier: ^1.5.6 version: 1.5.6 '@whiskeysockets/baileys': - specifier: ^6.7.21 + specifier: ^6.17.16 version: 6.17.16(eslint@9.39.4)(typescript@5.9.3) better-sqlite3: specifier: 11.10.0 diff --git a/src/container-runner.ts b/src/container-runner.ts index d467dcd..f34d1cf 100644 --- a/src/container-runner.ts +++ b/src/container-runner.ts @@ -322,7 +322,12 @@ export async function buildAgentGroupImage(agentGroupId: string): Promise dockerfile += `RUN apt-get update && apt-get install -y ${aptPackages.join(' ')} && rm -rf /var/lib/apt/lists/*\n`; } if (npmPackages.length > 0) { - dockerfile += `RUN pnpm install -g ${npmPackages.join(' ')}\n`; + // pnpm skips build scripts unless packages are allowlisted. Append each + // to /root/.npmrc (base image sets it up for agent-browser) so packages + // with postinstall — e.g. playwright, puppeteer, native addons — don't + // install silently broken. + const allowlist = npmPackages.map((p) => `echo 'only-built-dependencies[]=${p}' >> /root/.npmrc`).join(' && '); + dockerfile += `RUN ${allowlist} && pnpm install -g ${npmPackages.join(' ')}\n`; } dockerfile += 'USER node\n';