- 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>
- 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>
- 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>
- 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>
- 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>
- 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>
- 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>
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>
- 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
- 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
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).
- 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
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"