Commit Graph

5059 Commits

Author SHA1 Message Date
Justin Massa
96dbc49067 fix: filter ANSI log lines from agent stdout before sending to GChat
The agent's debug logs (e.g., 'read anthropic credentials from claude cli keychain')
were appearing in GChat messages because run-webhook.ts captures all stdout.

Now filters out lines starting with ANSI escape codes before sending the response.

🐙 Clawdette
2026-01-20 08:12:22 -06:00
Justin Massa
6f83f7bd05 fix: downgrade credential sync logs to debug level
Additional auth log messages that were leaking into GChat output:
- "synced anthropic credentials from claude cli"
- "synced openai-codex credentials from codex cli"

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-19 14:08:04 -06:00
Justin Massa
78f45f1c8e docs: add changelog entry for GChat auth log fix
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-19 14:05:58 -06:00
Justin Massa
ed776dd788 fix: prevent auth credential logs from leaking into GChat messages
Change log level from info to debug for credential read/write operations
in cli-credentials.ts. These diagnostic messages were appearing as raw
ANSI-colored text prepended to GChat messages because they were going
to stdout at info level.

Affected log messages:
- "read codex credentials from keychain"
- "read anthropic credentials from claude cli keychain"
- "wrote refreshed credentials to claude cli keychain"
- "wrote refreshed credentials to claude cli file"

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-19 14:05:30 -06:00
Justin Massa
3f1dacb8fc chore: cleanup unused import, add safety delay for temp file cleanup
- Remove unused readFileSync import
- Add 100ms delay before deleting temp files to ensure Python has read them

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-18 20:16:31 -06:00
Justin Massa
2b8b4e5e9b fix: use spawn instead of exec to avoid shell escaping issues
- Replace exec() with spawn() for both clawdbot agent and message sending
- Write AI responses to temp file instead of inline shell escaping
- Eliminates failures with emojis, quotes, and special characters
- Uses gchat_send_file.py helper for reliable message delivery

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-18 20:13:44 -06:00
Justin Massa
42d26a364a feat: async GChat webhook with Tailscale Funnel support
- Change from execSync to exec for non-blocking AI calls
- Acknowledge messages immediately, send response via Chat API
- Add 5-minute timeout (vs 25s) since async doesn't block
- Add start-gchat-tailscale.sh launcher for Tailscale Funnel
- Remove ngrok dependency

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-18 19:42:39 -06:00
Justin Massa
26a7b915fb Rebrand to clawdbot x GChat with Remix Partners style
- Simplified README with ELI5 step-by-step instructions
- Added Google Chat-specific setup guide
- Added Remix Partners branding and support info
- Added standard disclaimer and copyright

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-15 10:43:58 -06:00
Justin Massa
34fb5ca9c6 chore(googlechat): fix lint and formatting issues
- Add node: protocol to imports
- Remove unused imports
- Fix any type to unknown with proper typing
- Fix non-null assertions with optional chaining
- Change let to const where appropriate
- Apply formatting and import organization

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-12 09:16:25 -06:00
Justin Massa
6208f7da36 feat(googlechat): improve startup script with URL change detection
- Detect when ngrok URL changes and prompt user to update Google Chat
- Save URL to ~/.clawdbot-googlechat-url for comparison
- Add clear instructions when URL update is needed
- Skip update prompt when URL hasn't changed

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-11 21:20:00 -06:00
Justin Massa
ffb10c898f feat(googlechat): add webhook server and startup script
- Add run-webhook.ts for handling Google Chat messages via HTTP webhook
- Add webhook-server.ts for full Clawdbot integration
- Add start-googlechat.sh startup script for easy launching

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-11 20:50:27 -06:00
Justin Massa
8bf4401bd8 feat(googlechat): add Google Chat provider
Add Google Chat as the 8th messaging platform, using Pub/Sub for inbound
messages and the Google Chat API for outbound. This enables messaging
with Clawbot via Google Workspace's Google Chat.

Features:
- Pub/Sub-based message monitoring (firewall-friendly)
- Direct message and space support
- Thread support
- Media via cards
- DM/space policy configuration
- Multi-account support

Requires:
- Google Workspace account (not @gmail.com)
- Google Cloud project with Chat API and Pub/Sub enabled
- Service account credentials

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-11 19:14:21 -06:00
Peter Steinberger
74526645eb test: cover unset docker env vars 2026-01-12 00:46:55 +00:00
Peter Steinberger
cb095c8606 test: fix includes tests on windows 2026-01-12 00:39:14 +00:00
Peter Steinberger
376d007371
Merge pull request #725 from petradonka/patch-1
Fix docker-setup.sh crash with optional env vars under set -u
2026-01-12 00:38:46 +00:00
Peter Steinberger
01492b6515 fix: tolerate unset docker env vars (#725) (thanks @petradonka) 2026-01-12 00:38:05 +00:00
Petra Donka
3c81ac0315 Fix docker-setup.sh crash with optional env vars under set -u 2026-01-12 00:36:51 +00:00
Peter Steinberger
9c8967ef5d style: biome fixes 2026-01-12 00:32:47 +00:00
Peter Steinberger
720b9dd116 fix: make codex keychain platform-aware 2026-01-12 00:32:47 +00:00
Peter Steinberger
9f9f6b75e7 test: expand include coverage 2026-01-12 00:30:26 +00:00
Peter Steinberger
26cbbafc86 fix: skip pnpm patch fallback 2026-01-12 00:28:34 +00:00
Peter Steinberger
67743325ee fix: reset session after compaction overflow 2026-01-12 00:28:16 +00:00
Peter Steinberger
32df2ef7bd fix: stabilize invalid-connect handshake response 2026-01-12 00:19:47 +00:00
Peter Steinberger
ccd8950d40 ci: stabilize installer smoke 2026-01-12 00:17:07 +00:00
Peter Steinberger
86a7ab6e28
Merge pull request #731 from pasogott/feat/config-includes
feat(config): add $include directive for modular configs
2026-01-12 00:13:15 +00:00
Peter Steinberger
e3e3498a4b fix: guard config includes (#731) (thanks @pasogott) 2026-01-12 00:12:03 +00:00
David Hurley
56f018ddd6 docs(showcase): add Visual Morning Briefing Scene by @buddyhadry 2026-01-12 00:08:53 +00:00
sheeek
53d3134fe8 refactor(config): simplify includes with class-based processor
- Replace free functions with IncludeProcessor class
- Simplify IncludeResolver interface: { readFile, parseJson }
- Break down loadFile into focused private methods
- Use reduce() for array include merging
- Cleaner separation of concerns
2026-01-12 00:08:27 +00:00
sheeek
e6400b0b0f refactor(config): extract includes logic to separate module
- Move $include resolution to src/config/includes.ts
- Simplify io.ts by importing from includes module
- Cleaner API: resolveConfigIncludes(obj, configPath, resolver?)
- Re-export errors from io.ts for backwards compatibility
- Rename test file to match module name
2026-01-12 00:08:27 +00:00
sheeek
15d286b617 feat(config): add $include directive for modular configs
Adds support for splitting clawdbot.json into multiple files using the
$include directive. This enables:

- Single file includes: { "$include": "./agents.json5" }
- Multiple file merging: { "$include": ["./a.json5", "./b.json5"] }
- Nested includes (up to 10 levels deep)
- Sibling key merging with includes

Features:
- Relative paths resolved from including file
- Absolute paths supported
- Circular include detection
- Clear error messages with resolved paths

Use case: Per-client agent configs for isolated sandboxed environments
(e.g., legal case management with strict data separation).
2026-01-12 00:08:27 +00:00
Peter Steinberger
6b2634512c ci: fix installer site checkout path 2026-01-12 00:06:41 +00:00
Peter Steinberger
9211183f2d ci: fix installer smoke clone 2026-01-12 00:04:26 +00:00
Peter Steinberger
cd8c7f391b
Merge pull request #732 from peschee/feat/wire-model-extra-params
feat: wire up model extraParams (temperature, maxTokens) to pi agent
2026-01-12 00:04:04 +00:00
Peter Steinberger
4b51c96e4e fix: apply model extra params without overwriting stream (#732) (thanks @peschee) 2026-01-12 00:03:48 +00:00
Peter Siska
d9960d83c1 style: fix formatting (biome) 2026-01-12 00:03:25 +00:00
Peter Siska
32affaee02 feat: wire up model extraParams (temperature, maxTokens) to pi agent
- Use resolveExtraParams() which was defined but unused
- Create streamFn wrapper that injects config-driven params
- Apply to both compaction and run sessions

Config path: agents.defaults.models["provider/model"].params.temperature

Example:
  agents.defaults.models["anthropic/claude-sonnet-4"].params.temperature = 0.7
  agents.defaults.models["openai/gpt-4"].params.maxTokens = 8192
2026-01-12 00:03:24 +00:00
Peter Steinberger
60430fcd2e chore: harden installer and add smoke ci 2026-01-12 00:00:54 +00:00
Peter Steinberger
55e55c8825 fix: preserve handshake close code and test truncation 2026-01-11 23:57:37 +00:00
Peter Steinberger
146f7ab433 fix: surface handshake reasons 2026-01-11 23:46:20 +00:00
Peter Steinberger
105d0481d3 chore: note codex keychain fallback 2026-01-11 23:39:55 +00:00
Peter Steinberger
1f95d7fc8b fix: read codex keychain credentials 2026-01-11 23:39:10 +00:00
Peter Steinberger
3a8bfc0a5d
Merge pull request #733 from AbhisekBasu1/patch-1
Readme Fix: Update section title from 'macOS app' to 'Apps'
2026-01-11 23:38:38 +00:00
Peter Steinberger
26cc2bd384 fix: land PR #733 (thanks @AbhisekBasu1) 2026-01-11 23:37:44 +00:00
Peter Steinberger
248c731e78 test: expand voice-call coverage 2026-01-11 23:35:47 +00:00
Abhi
b38155fe9a Readme Fix: Update section title from 'macOS app' to 'Apps'
Tiny readme change that makes it less confusing. 

The section title being "macOS app" makes it seem like the app is mandatory, when it is optional. Updated it to just "Apps"
2026-01-11 23:35:16 +00:00
Peter Steinberger
ec763a7546 docs: add skill override faq 2026-01-11 23:33:36 +00:00
Peter Steinberger
4181e72977 fix: strip markup heartbeat acks 2026-01-11 23:26:51 +00:00
Peter Steinberger
5462cfdc3a chore: update changelog for voice-call plugin 2026-01-11 23:23:23 +00:00
Peter Steinberger
367baaca20 feat: implement voice-call plugin 2026-01-11 23:23:14 +00:00
Peter Steinberger
e576a82c43 docs: clarify WhatsApp pairing + sending FAQ 2026-01-11 23:13:44 +00:00