Commit Graph

1805 Commits

Author SHA1 Message Date
Lucas Czekaj
d1f6849785 feat(discord): add exec approval forwarding to DMs (#1621)
* feat(discord): add exec approval forwarding to DMs

Add support for forwarding exec approval requests to Discord DMs,
allowing users to approve/deny command execution via interactive buttons.

Features:
- New DiscordExecApprovalHandler that connects to gateway and listens
  for exec.approval.requested/resolved events
- Sends DMs with embeds showing command details and 3 buttons:
  Allow once, Always allow, Deny
- Configurable via channels.discord.execApprovals with:
  - enabled: boolean
  - approvers: Discord user IDs to notify
  - agentFilter: only forward for specific agents
  - sessionFilter: only forward for matching session patterns
- Updates message embed when approval is resolved or expires

Also fixes exec completion routing: when async exec completes after
approval, the heartbeat now uses a specialized prompt to ensure the
model relays the result to the user instead of responding HEARTBEAT_OK.

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>

* feat: generic exec approvals forwarding (#1621) (thanks @czekaj)

---------

Co-authored-by: Claude Opus 4.5 <noreply@anthropic.com>
Co-authored-by: Peter Steinberger <steipete@gmail.com>
2026-01-24 20:56:40 +00:00
Peter Steinberger
ebaa858af8 docs: add backup strategy faq 2026-01-24 20:34:05 +00:00
Peter Steinberger
e994460c9d docs: add subscription requirement faq 2026-01-24 20:32:33 +00:00
Peter Steinberger
1adddc3925 docs: add xfinity unblock link 2026-01-24 20:30:03 +00:00
Peter Steinberger
bbfb8a9243 docs: mention local-only model option 2026-01-24 20:15:58 +00:00
Peter Steinberger
184c344b07 docs: add imessage mac requirement faq 2026-01-24 20:13:13 +00:00
Peter Steinberger
9bc7402814 docs: add self-update faq entry 2026-01-24 20:10:47 +00:00
Peter Steinberger
80dd0f948c docs: add linux install faq entry 2026-01-24 19:58:42 +00:00
Peter Steinberger
011c1b1cde docs: clarify migration state vs workspace 2026-01-24 19:50:02 +00:00
Peter Steinberger
c0809fad8a chore: bump 2026.1.24 2026-01-24 15:00:00 +00:00
Peter Steinberger
9d0b601927 docs: add hackable install faq 2026-01-24 14:52:26 +00:00
Peter Steinberger
2d1e3928ad docs: add docs ssl error faq 2026-01-24 14:51:26 +00:00
Peter Steinberger
fcc93d099b docs: add pi sizing guidance 2026-01-24 14:51:26 +00:00
Peter Steinberger
72e9f0d55a docs: add openai subscription faq 2026-01-24 14:37:17 +00:00
Peter Steinberger
c8e7da880d docs: clarify gpt-5.2 vs glm 2026-01-24 14:37:17 +00:00
Peter Steinberger
fe37799e14 docs: add glm budget option 2026-01-24 14:37:17 +00:00
Peter Steinberger
69e81bce5b docs: link models concept in faq 2026-01-24 14:28:38 +00:00
Peter Steinberger
5f0866451a docs: add recommended models faq 2026-01-24 14:28:38 +00:00
Peter Steinberger
2f894c9bf9 docs: add installer verbose troubleshooting 2026-01-24 14:25:29 +00:00
Peter Steinberger
c133f25286 docs: add migration scheduling and concurrency faqs 2026-01-24 14:21:26 +00:00
Peter Steinberger
53c60017f6 fix: normalize heartbeat targets 2026-01-24 13:53:00 +00:00
Peter Steinberger
587c53b3eb docs: link macos node to cli node 2026-01-24 13:17:28 +00:00
Nicolas Zullo
2861c123da feat(templates): add emoji reactions guidance to AGENTS.md (#1591)
## What
Add emoji reactions guidance to the default AGENTS.md template.

## Why  
Reactions are a natural, human-like way to acknowledge messages without cluttering chat. This should be default behavior.

## Testing
- Tested locally on Discord DM 
- Tested locally on Discord guild channel 

## AI-Assisted
This change was drafted with help from my Clawdbot instance (Clawd 🦞). 
We tested the behavior together before submitting.
2026-01-24 13:12:16 +00:00
Peter Steinberger
0c43f657dc docs: add vps install faq 2026-01-24 13:11:31 +00:00
Peter Steinberger
2f0bd37c76 docs: add beta vs dev install faq 2026-01-24 13:11:31 +00:00
Peter Steinberger
036a5f80e2 docs: add latest version faq 2026-01-24 13:11:31 +00:00
Peter Steinberger
f2b04e7ff4 docs: clarify mac mini + imessage ssh 2026-01-24 13:11:31 +00:00
Peter Steinberger
3cfb10d179 docs: add mac mini faq 2026-01-24 13:11:31 +00:00
Peter Steinberger
7d30ffd2d4 fix: harden outbound mirroring normalization 2026-01-24 12:57:58 +00:00
Peter Steinberger
3ce03936bd build: refresh control-ui dist + release docs 2026-01-24 12:51:32 +00:00
Peter Steinberger
129b405337 docs: clarify node host sizing 2026-01-24 12:50:22 +00:00
Peter Steinberger
4988dcd6eb docs: add node vs ssh faq 2026-01-24 12:48:29 +00:00
Peter Steinberger
6ae794bb1c fix: align bluebubbles outbound group sessions 2026-01-24 12:23:26 +00:00
Peter Steinberger
dd6fba317e chore: tune fly deployment defaults 2026-01-24 11:58:25 +00:00
Peter Steinberger
dd5375883a fix: normalize session keys and outbound mirroring 2026-01-24 11:57:11 +00:00
Peter Steinberger
26147b37f4 fix: resolve session ids in session tools 2026-01-24 11:09:11 +00:00
Peter Steinberger
b3182cdc94 docs: fix redirects and help links 2026-01-24 10:21:05 +00:00
Peter Steinberger
e606ca1841 fix: avoid Discord /tts conflict 2026-01-24 09:58:06 +00:00
Peter Steinberger
227f7cf761 docs: consolidate faq under help 2026-01-24 09:49:38 +00:00
Peter Steinberger
e92b05f2cb feat: default TTS model overrides on (#1559) (thanks @Glucksberg)
Co-authored-by: Glucksberg <80581902+Glucksberg@users.noreply.github.com>
2026-01-24 09:42:32 +00:00
Peter Steinberger
aae71ab3af docs: restore faq and fix redirect 2026-01-24 09:39:24 +00:00
Peter Steinberger
ad7cfceff0 docs(fly): update guide with deployment lessons
- Increase recommended memory to 2GB (512MB/1GB OOM)
- Add OOM symptoms (SIGABRT, v8 allocation errors)
- Fix lock file path (/data/gateway.*.lock)
- Add complete config example with failover, auth, bindings
- Document Discord token from env var vs config
- Add machine update commands for command/memory changes
- Add config writing tips (echo+tee, sftp caveats)

Learned from FLAWD deployment debugging.
2026-01-24 09:36:54 +00:00
Peter Steinberger
a3f5fefaeb docs: move cross-context faq to troubleshooting 2026-01-24 09:36:44 +00:00
Peter Steinberger
3cfa7b4511 docs: expand heartbeat visibility config examples 2026-01-24 09:31:04 +00:00
Peter Steinberger
1b37c54f9f fix: document tools invoke + honor main session key (#1575) (thanks @vignesh07) 2026-01-24 09:29:32 +00:00
Peter Steinberger
d6eeb609ad docs: add cross-context messaging faq 2026-01-24 09:28:59 +00:00
Peter Steinberger
440b8e1905 docs: add oauth refresh troubleshooting 2026-01-24 09:21:15 +00:00
Peter Steinberger
6669be2afa fix: document heartbeat visibility controls (#1452) (thanks @dlauer) 2026-01-24 09:07:03 +00:00
Peter Steinberger
668cd829b5 fix: gate openai reasoning downgrade on model switches (#1562) (thanks @roshanasingh4) 2026-01-24 08:16:42 +00:00
Peter Steinberger
310d06ca27 fix: harden gateway lock validation (#1572) (thanks @steipete) 2026-01-24 08:15:07 +00:00
Peter Steinberger
b4b767e7ae docs(fly): comprehensive deployment guide with real-world learnings
Based on actual Flawd deployment experience:
- Proper fly.toml configuration with all required settings
- Step-by-step guide following exe.dev doc format
- Troubleshooting section with common issues and fixes
- Config file creation via SSH
- Cost estimates
2026-01-24 08:15:07 +00:00
Peter Steinberger
9313ac2d64 docs(fly): add configuration guidance for bind mode, memory, and troubleshooting 2026-01-24 08:15:07 +00:00
Peter Steinberger
15ae7d2672 feat: add Fly.io deployment support
- Add fly.toml configuration for Fly.io deployment
- Add docs/platforms/fly.md with deployment guide
- Uses London (lhr) region by default
- Includes persistent volume for data storage
2026-01-24 08:15:07 +00:00
Peter Steinberger
70a4b1046b feat: move TTS into core (#1559) (thanks @Glucksberg) 2026-01-24 08:00:44 +00:00
Peter Steinberger
6ee24fe6cc fix: guard tool allowlists with warnings 2026-01-24 07:38:42 +00:00
Glucksberg
dc9c9d63fa fix: address code review findings for plugin command API
Blockers fixed:
- Fix documentation: requireAuth defaults to true (not false)
- Add command name validation (must start with letter, alphanumeric only)
- Add reserved commands list to prevent shadowing built-in commands
- Emit diagnostic errors for invalid/duplicate command registration

Other improvements:
- Return user-friendly message for unauthorized commands (instead of silence)
- Sanitize error messages to avoid leaking internal details
- Document acceptsArgs behavior when arguments are provided
- Add notes about reserved commands and validation rules to docs

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-24 06:28:22 +00:00
Glucksberg
5f95fc6ac8 feat: add plugin command API for LLM-free auto-reply commands
This adds a new `api.registerCommand()` method to the plugin API, allowing
plugins to register slash commands that execute without invoking the AI agent.

Features:
- Plugin commands are processed before built-in commands and the agent
- Commands can optionally require authorization
- Commands can accept arguments
- Async handlers are supported

Use case: plugins can implement toggle commands (like /tts_on, /tts_off)
that respond immediately without consuming LLM API calls.

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-24 06:28:22 +00:00
Peter Steinberger
ad0777754d perf: stabilize system prompt time 2026-01-24 06:24:04 +00:00
Peter Steinberger
6a4d478791 fix: ignore identity template placeholders 2026-01-24 05:35:50 +00:00
Peter Steinberger
67b9b0ef1f fix: honor tools.exec ask/security in approvals 2026-01-24 04:53:44 +00:00
Peter Steinberger
e74768b428 feat: add node browser proxy routing 2026-01-24 04:21:47 +00:00
JustYannicc
31ddfbb47d feat(heartbeat): skip API calls when HEARTBEAT.md is effectively empty (#1535)
* feat: skip heartbeat API calls when HEARTBEAT.md is effectively empty

- Added isHeartbeatContentEffectivelyEmpty() to detect files with only headers/comments
- Modified runHeartbeatOnce() to check HEARTBEAT.md content before polling the LLM
- Returns early with 'empty-heartbeat-file' reason when no actionable tasks exist
- Preserves existing behavior when file is missing (lets LLM decide)
- Added comprehensive test coverage for empty file detection
- Saves API calls/costs when heartbeat file has no meaningful content

* chore: update HEARTBEAT.md template to be effectively empty by default

Changed instruction text to comment format so new workspaces benefit from
heartbeat optimization immediately. Users still get clear guidance on usage.

* fix: only treat markdown headers (# followed by space) as comments, not #TODO etc

* refactor: simplify regex per code review suggestion

* docs: clarify heartbeat empty file behavior (#1535) (thanks @JustYannicc)

---------

Co-authored-by: Peter Steinberger <steipete@gmail.com>
2026-01-24 04:19:01 +00:00
Peter Steinberger
5909f66b7a feat: add system cli 2026-01-24 04:03:07 +00:00
Peter Steinberger
25eb5ac794 docs: add channels list usage troubleshooting 2026-01-24 03:44:44 +00:00
Peter Steinberger
7bb7a63330 fix: update docker gateway command 2026-01-24 03:24:28 +00:00
Peter Steinberger
b9cbce9f4b fix: publish llm-task docs and harden tool 2026-01-24 01:44:51 +00:00
Peter Steinberger
2cecf28971 fix: honor wildcard tool allowlists 2026-01-24 01:30:44 +00:00
Peter Steinberger
77bb342301 fix: refine bedrock discovery defaults (#1543) (thanks @fal3) 2026-01-24 01:18:33 +00:00
Alex Fallah
212b602921 feat: add dynamic Bedrock model discovery
Add automatic discovery of AWS Bedrock models using ListFoundationModels API.
When AWS credentials are detected, models that support streaming and text output
are automatically discovered and made available.

- Add @aws-sdk/client-bedrock dependency
- Add discoverBedrockModels() with caching (default 1 hour)
- Add resolveImplicitBedrockProvider() for auto-registration
- Add BedrockDiscoveryConfig for optional filtering by provider/region
- Filter to active, streaming, text-output models only
- Update docs/bedrock.md with auto-discovery documentation
2026-01-24 01:15:06 +00:00
Peter Steinberger
8636ef2ad6 docs: extend cron vs heartbeat guide 2026-01-24 00:42:56 +00:00
justyannicc
53dc2c35f8 docs: add cron vs heartbeat decision guide
- New docs/automation/cron-vs-heartbeat.md with complete guidance
- Cross-links from heartbeat.md and cron-jobs.md
- Updated AGENTS.md template with practical guidance
- Added navigation entry in docs.json
2026-01-24 00:42:56 +00:00
AJ (@techfren)
9ee98c5377 docs: remove misplaced Google Docs Editor from showcase (#1547)
- Was incorrectly placed in Voice & Phone section
- Not a Clawdbot project (Claude Code skill)
- No valid link available
2026-01-24 00:42:48 +00:00
Peter Steinberger
367f48ce51 feat: add tlon channel plugin 2026-01-24 00:25:39 +00:00
Peter Steinberger
5cb73668a9 docs: add Comcast SSL troubleshooting note 2026-01-24 00:01:20 +00:00
Peter Steinberger
36c770e78f docs: remove channel unify checklist 2026-01-23 23:37:04 +00:00
Peter Steinberger
38b757687a docs: add channel unification checklist 2026-01-23 23:32:14 +00:00
Peter Steinberger
750dc7191c chore: bump version to 2026.1.23 2026-01-23 22:14:56 +00:00
Peter Steinberger
571257b972 fix: handle gateway slash command replies in TUI 2026-01-23 19:48:22 +00:00
Peter Steinberger
08d11149a0 feat: add models status auth probes 2026-01-23 19:28:55 +00:00
Peter Steinberger
1c71124ada fix: expand linux service PATH handling 2026-01-23 19:16:41 +00:00
Peter Steinberger
9f5cee9493 fix(exec-approvals): stabilize allowlist ids (#1521) 2026-01-23 19:00:45 +00:00
Peter Steinberger
6b88bb7ac6 fix: add per-channel markdown table conversion (#1495) (thanks @odysseus0) 2026-01-23 18:39:25 +00:00
Peter Steinberger
9e1ce76cfb fix: restart gateway after update by default 2026-01-23 11:50:19 +00:00
Peter Steinberger
c9c6284127 docs: prefer fast install smoke for release 2026-01-23 09:18:15 +00:00
Peter Steinberger
be3cb5776c fix: keep core tools when allowlist is plugin-only 2026-01-23 09:02:17 +00:00
Peter Steinberger
aad7fe5d4f docs: note SPARKLE_PRIVATE_KEY_FILE in profile 2026-01-23 08:25:20 +00:00
Peter Steinberger
de455683af Revert "fix: improve GitHub Copilot integration"
This reverts commit b69e70668d.
2026-01-23 07:14:00 +00:00
Peter Steinberger
eeda206294 docs: update media auto-detect 2026-01-23 05:47:16 +00:00
Peter Steinberger
0892eefa2b docs: expand slack replyToModeByChatType examples 2026-01-23 05:38:28 +00:00
Peter Steinberger
a1878d0d3c feat: add slack replyToModeByChatType overrides 2026-01-23 05:38:28 +00:00
Stefan Galescu
aa3972d93d feat(slack): add dm-specific replyToMode configuration (#1442)
Adds support for separate replyToMode settings for DMs vs channels:

- Add channels.slack.dm.replyToMode for DM-specific threading
- Keep channels.slack.replyToMode as default for channels
- Add resolveSlackReplyToMode helper to centralize logic
- Pass chatType through threading resolution chain

Usage:
```json5
{
  channels: {
    slack: {
      replyToMode: "off",     // channels
      dm: {
        replyToMode: "all"    // DMs always thread
      }
    }
  }
}
```

When dm.replyToMode is set, DMs use that mode; channels use the
top-level replyToMode. Backward compatible when not configured.
2026-01-23 05:13:23 +00:00
Peter Steinberger
4b7726fed7 fix: harden BlueBubbles voice memos (#1477) (thanks @Nicell) 2026-01-23 04:38:08 +00:00
Peter Steinberger
8890f8511c fix: repair docs redirects 2026-01-23 03:13:12 +00:00
Peter Steinberger
487cd76a97 feat: extend lobster tool run args 2026-01-23 03:09:59 +00:00
Peter Steinberger
ffd4488518 docs: fix lobster links 2026-01-23 02:51:33 +00:00
Peter Steinberger
b69e70668d fix: improve GitHub Copilot integration 2026-01-23 02:51:33 +00:00
Peter Steinberger
744a4e4fb2 docs: simplify OpenProse install 2026-01-23 01:37:54 +00:00
Peter Steinberger
d02e0e7a0f docs: expand mattermost intro 2026-01-23 01:35:50 +00:00
Peter Steinberger
a30a1b73c4 docs: add mattermost redirect 2026-01-23 01:35:15 +00:00
Peter Steinberger
ea95941c40 docs: add transcript hygiene reference 2026-01-23 01:34:21 +00:00