Commit Graph
55 Commits
Author SHA1 Message Date
mofengandxinlingzhao 0628d55da2 feat(wecom): 新增企业微信 WebSocket 长连接模式 (#93)
* feat(wecom): add WebSocket long-connection mode for WeChat Work

Add WeChat Work AI Bot WebSocket support, enabling connection without
public URL, message encryption, or IP allowlist. Key implementation details:

- Use userID as chatid for single-chat scenarios (matching official SDK behavior)
- Add 500ms delay between multi-chunk sends to prevent out-of-order delivery
- Support text and pre-transcribed voice messages
- Exponential backoff reconnection with heartbeat-based dead connection detection

Made-with: Cursor

* docs(readme): add WebSocket mode for WeChat Work; test(wecom): add unit tests for WebSocket implementation

- Update README support matrix, setup guide, config examples and project
  structure to include the new WebSocket long-connection mode alongside
  existing Webhook
- Add 22 unit tests covering splitByBytes, handleMsgCallback chatID
  fallback, writeAndWaitAck, handleFrame ACK dispatch, generateReqID
  and newWebSocket

Made-with: Cursor

---------

Co-authored-by: xinlingzhao <xinlingzhao@tencent.com>
2026-03-13 07:46:59 +08:00
Leigh StillardandClaude Opus 4.6 647398f765 feat: multi-workspace mode — single bot, multiple workspaces per channel (#79)
* feat: add multi-workspace mode and base_dir config fields

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

* feat: add WorkspaceBindingManager for channel-to-workspace persistence

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

* feat: add workspacePool for managing per-workspace agent state

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

* feat: add ChannelNameResolver interface and Slack implementation

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

* feat: add multi-workspace fields, SetMultiWorkspace, and idle reaper to Engine

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

* feat: add resolveWorkspace method for channel-to-directory mapping

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

* feat: wire multi-workspace mode setup in main.go

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

* feat: add workspace init flow for cloning repos and binding channels

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

* feat: add /workspace commands (init, unbind, list, status)

Add handleWorkspaceCommand with subcommands:
- (no args): show current workspace binding for the channel
- init <git-url>: clone repo and bind workspace to channel
- unbind: remove workspace binding from channel
- list: show all workspace bindings for the project

Only available when multi-workspace mode is enabled.

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

* feat: wire multi-workspace routing into handleMessage with per-workspace agents

Add workspace resolution to handleMessage that resolves channels to workspace
directories, creates per-workspace agents with correct work_dir, and routes
messages through workspace-specific session managers. The normal (single-workspace)
code path is unchanged — all new logic is gated behind e.multiWorkspace.

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

* test: add integration tests for multi-workspace resolution

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

* fix: resolve multi-workspace bugs found during live testing

Three bugs fixed:

1. App mention events not handled - Slack sends `app_mention` events
   (not `message.channels`) when the bot is @mentioned. Added
   AppMentionEvent handler in the Slack platform.

2. Bot mention prefix not stripped - app_mention text includes
   `<@UBOTID> ` prefix, breaking command parsing and workspace
   resolution. Now stripped before passing to engine.

3. Slash command syntax incompatible with Slack - `/workspace` commands
   were being intercepted by Slack as slash commands. Changed all
   user-facing references and prefix detection to use `workspace`
   without the leading slash.

Also added debug logging to handleEvent for diagnosing event delivery.

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

* fix: instruct agent to use Slack mrkdwn formatting

Add Slack formatting guidelines to the agent system prompt so responses
use Slack's mrkdwn syntax instead of standard Markdown (e.g. *bold*
instead of **bold**, no ## headings).

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

---------

Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-12 19:38:58 +08:00
chenhg5andClaude 47df97e35d feat(admin): add admin privilege system for privileged commands
generated by llmgit

Co-Authored-By: Claude <noreply@anthropic.com>
2026-03-12 07:26:28 +08:00
q107580018andmac 986faefb4a feat(codex): support reasoning effort switching (#70)
* feat(codex): support reasoning effort switching

* fix(codex): remove unsupported minimal effort

---------

Co-authored-by: mac <mac@Mac-mini.local>
2026-03-11 19:38:00 +08:00
bydsky ab322933c2 feat(gemini): add timeout flag (#62)
* feat(gemini): add timeout flag

* feat(gemini): default to no timeout

* feat(gemini): add config example and log
2026-03-11 15:40:50 +08:00
woqiqishi 13a750c1b5 feat(cards): interactive card UI for slash commands (Feishu) (#52)
* feat(cards): interactive card UI for slash commands on Feishu

- Add platform-agnostic Card model (core/card.go) with builder API
- Add CardSender/CardNavigable interfaces (core/interfaces.go)
- Implement Feishu card renderer using column_set for mobile layout
- Redesign all slash command responses to use interactive cards
- Add handleCardNav router and executeCardAction for in-place updates
- Convert /new /quiet /switch /stop to act: and nav: actions
- /help card uses tab buttons grouped by Session/Agent/Tools/System
- renderUpgradeCard: sync update check with 8s timeout
- Fix: return error card instead of nil in handleCardNav /list /switch

Made-with: Cursor

* fix(cards): address PR #52 review feedback

- Add enable_feishu_card config option (default true) so operators can
  fall back to plain-text replies when card permissions are unavailable;
  wraps Platform in interactivePlatform only when cards are enabled
- Fix goroutine leak in renderUpgradeCard: use buffered channel (cap 1)
  so the background goroutine can always complete even after a timeout
- Fix /stop concurrent logic in executeCardAction: consolidate state
  mutation under a single interactiveMu critical section
- Fix code indentation in platform/feishu/card.go (action map and
  CardSelect/CardNote case blocks)
- Add unit tests for Card.RenderText and Card.HasButtons (core/card_test.go)
- Add Feishu platform tests for ReplyCard/SendCard and card renderer
  (platform/feishu/platform_test.go)
- Update docs/feishu.md and README with enable_feishu_card option

Made-with: Cursor
2026-03-11 07:52:36 +08:00
chenhg5andClaude 3cbf69e1db feat(messaging): add message tracing and threaded replies
- Added MessageID field to Message struct for platform message tracing

generated by llmgit

Co-Authored-By: Claude <noreply@anthropic.com>
2026-03-09 18:08:15 +08:00
chenhg5andClaude 363a21e9ca feat: add shared session support for all platforms
generated by llmgit

Co-Authored-By: Claude <noreply@anthropic.com>
2026-03-09 17:38:49 +08:00
wujian 0dc9168029 tts:fix some code review comments 2026-03-09 15:45:21 +08:00
oskarwu 27c8eccdbb feat: add TTS support with Qwen and OpenAI providers 2026-03-09 12:07:40 +08:00
xiaoheicat b89aadb9c2 Merge upstream/main and resolve conflicts
Merge upstream changes (iFlow agent, multi-bot relay, QQ Beta tag)
with our QQ Bot Official Platform additions. Resolved conflicts in
README.md, README.zh-CN.md, and cmd/cc-connect/main.go by combining
both sets of changes.
2026-03-08 13:25:30 +08:00
chenhg5andClaude c70d3eed7e feat(iflow): update CLI flags and preserve quiet state
Updated iFlow CLI integration flags from `-p` to `-i` for interactive mode.
Modified quiet mode handling to preserve state across session stops.
Added shell command support in i18n messages.
Fixed empty tool ID handling in iFlow session.

generated by llmgit

Co-Authored-By: Claude <noreply@anthropic.com>
2026-03-08 09:30:28 +08:00
xiaoheicat f567b90dd1 feat(platform): add official QQ Bot Platform integration
Add new `qqbot` platform type using the official QQ Bot API v2
(bot.q.qq.com), coexisting with the existing `qq` (OneBot v11) platform.

- OAuth2 token management with auto-refresh
- WebSocket gateway with heartbeat, reconnection, and resume
- GROUP_AT_MESSAGE_CREATE and C2C_MESSAGE_CREATE event handling
- REST API v2 message sending with msg_seq tracking
- No new dependencies (reuses gorilla/websocket)
2026-03-07 21:13:24 +08:00
xinyuan0801 74b88bc352 feat: add iFlow CLI agent support 2026-03-07 10:26:44 +08:00
chenhg5andClaude 8f630a0538 feat(commands): add support for exec commands with shell execution
Add ability to define custom slash commands that execute shell commands directly:
- Extend CommandConfig with Exec and WorkDir fields
- Add cmdCommandsAddExec handler for exec commands
- Implement executeShellCommand with timeout and output handling
- Add work_dir support for exec commands
- Update documentation and i18n messages
- Add tests and error handling

generated by llmgit

Co-Authored-By: Claude <noreply@anthropic.com>
2026-03-07 07:55:24 +08:00
chenhg5andClaude 796526df50 feat(engine): add configurable agent idle timeout
Add support for configuring agent idle timeout duration via config file
(idle_timeout_mins). Defaults to 2 hours (changed from previous fixed 30 mins).
Timeout can be disabled by setting to 0.

generated by llmgit

Co-Authored-By: Claude <noreply@anthropic.com>
2026-03-07 00:21:40 +08:00
wujian 505bb43bf0 voice function support qwen mod 2026-03-06 19:03:05 +08:00
chenhg5andClaude fcc0da88e2 feat(cron): add silent mode for cron job notifications
generated by llmgit

Co-Authored-By: Claude <noreply@anthropic.com>
2026-03-06 14:00:12 +08:00
chenhg5andClaude Opus 4.6 e5d328d9d6 feat: add streaming preview and rate limiting support
Streaming Preview:
- Real-time message preview during agent response (like "typing" indicator)
- Supported on Telegram, Discord, and Feishu
- Configurable interval, min delta chars, and max preview length

Rate Limiting:
- Per-session sliding-window rate limiter
- Prevents users from flooding the bot with messages
- Configurable max messages and window size

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-06 07:02:37 +08:00
chenhg5andClaude b07b18e181 feat(engine): add project-level command disabling support
Implement disabled commands functionality for projects, including config parsing, engine integration, and i18n support. Allows disabling specific commands per-project via config.

generated by llmgit

Co-Authored-By: Claude <noreply@anthropic.com>
2026-03-05 14:43:51 +08:00
chenhg5andClaude d6a3a2253e feat: add banned words filter functionality
Add banned words configuration and filtering logic to block messages containing prohibited content. Includes:
- Config file support for banned_words list
- Engine methods to set and check banned words
- Case-insensitive matching during message processing
- Localization support for blocked message response
- Documentation updates in config example

generated by llmgit

Co-Authored-By: Claude <noreply@anthropic.com>
2026-03-05 13:59:25 +08:00
chenhg5andClaude 506061597e feat: add group_replay_all config
generated by llmgit

Co-Authored-By: Claude <noreply@anthropic.com>
2026-03-05 12:50:51 +08:00
chenhg5andClaude e5b9b35278 feat(alias): add command alias support with config and runtime management
generated by llmgit

Co-Authored-By: Claude <noreply@anthropic.com>
2026-03-05 10:17:43 +08:00
chenhg5 fcdd11a79b feat(config): add default quiet mode setting at global and project level\n\nAllow users to configure quiet = true globally or per-project to\nsuppress thinking/tool progress messages by default. Project-level\nsetting overrides global. Users can still toggle with /quiet command. 2026-03-05 08:06:11 +08:00
chenhg5andClaude 5e0a192b01 feat(claudecode): add provider proxy support for third-party endpoints
Add local reverse proxy support for third-party Claude providers with:
- Thinking parameter override rewriting
- Bearer token auth compatibility
- Provider clearing functionality
- Configurable thinking modes
- Improved provider management UX
- Enhanced markdown rendering for Feishu

generated by llmgit

Co-Authored-By: Claude <noreply@anthropic.com>
2026-03-04 23:57:13 +08:00
TerrencyandClaude Sonnet 4.6 d91f7d3a29 feat(claudecode): add Claude Code Router integration support
Add support for routing Claude Code requests through Claude Code Router,
enabling multi-provider support (OpenRouter, DeepSeek, Gemini, etc.) and
dynamic model switching.

Changes:
- Add router_url and router_api_key configuration options
- Automatically set ANTHROPIC_BASE_URL when router is configured
- Set NO_PROXY, DISABLE_TELEMETRY, DISABLE_COST_WARNINGS for clean integration
- Update documentation with setup guide and usage examples
- Add configuration examples in config.example.toml

The integration is backward compatible - when router_url is not configured,
the agent behaves exactly as before. When configured, all requests are
transparently routed through Claude Code Router.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-03-04 16:50:30 +08:00
cg33 848f22543b Merge remote-tracking branch 'gitee/main' into main 2026-03-04 10:45:29 +08:00
chenhg5andClaude 698ac48ba7 feat(discord): add slash command support with guild-specific registration
generated by llmgit

Co-Authored-By: Claude <noreply@anthropic.com>
2026-03-04 10:29:20 +08:00
cg33 33dcbbabf3 Merge pull request #8 from kevinWangSheng/feat/opencode-agent
feat(agent): add OpenCode support
2026-03-04 10:08:11 +08:00
shenghui kevin f2d0d6c46c docs: update README and config for OpenCode agent
- Add OpenCode to support matrix (4 agents → 5 agents)
- Add OpenCode permission modes section
- Add OpenCode to prerequisites, provider env mapping, project structure
- Add OpenCode config example in config.example.toml
- Update both English and Chinese README
2026-03-03 15:58:28 -08:00
chenhg5andClaude 522f9ff4c9 feat(commands): add custom slash command system with config and file-based commands
Add support for customizable slash commands that expand prompt templates with arguments. Includes:
- CommandProvider interface for agent-specific command directories
- Command registry with config.toml and agent file support
- Template expansion with placeholders ({{1}}, {{args}}, etc.)
- Dynamic command management via `/commands add/del`
- Multi-language support and documentation
- Example config additions and implementation for Claude/Gemini agents

generated by llmgit

Co-Authored-By: Claude <noreply@anthropic.com>
2026-03-04 07:34:00 +08:00
chenhg5andClaude Opus 4.6 9a291eb0c3 feat: add daemon mode for running as background service
Add support for running cc-connect as a daemon managed by OS init system:
- Linux: systemd user service
- macOS: launchd LaunchAgent

New CLI commands:
- cc-connect daemon install/uninstall
- cc-connect daemon start/stop/restart/status
- cc-connect daemon logs [-f] [-n N] [--log-file PATH]

Features:
- Auto log rotation with configurable max size
- Cross-platform support (systemd/launchd)

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-04 00:18:55 +08:00
chenhg5andClaude cca838504a feat(qoder): add Qoder CLI agent support
generated by llmgit

Co-Authored-By: Claude <noreply@anthropic.com>
2026-03-03 22:43:20 +08:00
chenhg5andClaude df9f38894d feat(wecom): add proxy authentication support
generated by llmgit

Co-Authored-By: Claude <noreply@anthropic.com>
2026-03-03 19:14:37 +08:00
chenhg5andClaude 3bcc969209 feat(claudecode): add system prompt support and user allowlist
Implement agent system prompts explaining cc-connect capabilities
Add AllowList function for platform user authorization

generated by llmgit

Co-Authored-By: Claude <noreply@anthropic.com>
2026-03-02 17:34:43 +08:00
chenhg5andClaude c6a453ef70 feat(display): add configurable message truncation settings
generated by llmgit

Co-Authored-By: Claude <noreply@anthropic.com>
2026-03-02 15:44:37 +08:00
chenhg5andClaude b4fd9bf940 feat(feishu): add configurable emoji reactions
generated by llmgit

Co-Authored-By: Claude <noreply@anthropic.com>
2026-03-02 15:19:35 +08:00
chenhg5andClaude c88d46a973 feat(qq): add QQ platform support via OneBot v11/NapCat
generated by llmgit

Co-Authored-By: Claude <noreply@anthropic.com>
2026-03-02 11:50:53 +08:00
chenhg5andClaude b6f2a25505 feat(gemini): add Gemini CLI agent support
Add support for Google Gemini CLI as a new agent type. Includes:
- New gemini agent implementation with session management

generated by llmgit

Co-Authored-By: Claude <noreply@anthropic.com>
2026-03-01 21:39:28 +08:00
chenhg5andClaude ed8778b99e feat(agent): add Cursor Agent integration with CLI support
Add full integration for Cursor Agent with support for CLI interactions via `agent --print --output-format stream-json`. Includes:
- New cursor package with Agent and Session implementations

generated by llmgit

Co-Authored-By: Claude <noreply@anthropic.com>
2026-03-01 19:28:41 +08:00
chenhg5andClaude f75da06fee feat(speech): add voice message support with Whisper API and ffmpeg integration
Add speech-to-text functionality for voice messages using OpenAI/Groq Whisper API. Includes:
- Configurable speech provider (OpenAI or Groq)
- Audio format conversion via ffmpeg
- Support for voice messages on Feishu, WeChat Work, Telegram, LINE, Discord, Slack
- Internationalization messages for voice transcription flow
- Documentation updates in README and config example

generated by llmgit

Co-Authored-By: Claude <noreply@anthropic.com>
2026-03-01 12:29:40 +08:00
chenhg5andClaude 6ba2704ce5 feat(provider): add runtime API provider switching support with CLI and chat commands
Add provider management system allowing dynamic switching between API providers (Anthropic, relay services, AWS Bedrock, etc.) without restarting. Includes:

generated by llmgit

Co-Authored-By: Claude <noreply@anthropic.com>
2026-03-01 10:31:43 +08:00
chenhg5andClaude e22a6028f4 feat(codex): add OpenAI Codex agent support with docs and config updates
Add new Codex agent implementation with permission modes, session management, and history retrieval. Update installation docs, README files, and config templates to reflect Codex support. Enhance session listing and history commands to work with both Claude and Codex agents.

generated by llmgit

Co-Authored-By: Claude <noreply@anthropic.com>
2026-03-01 09:20:38 +08:00
chenhg5andClaude 5ab969cec5 feat(wecom): add Markdown support and improve help formatting
generated by llmgit

Co-Authored-By: Claude <noreply@anthropic.com>
2026-03-01 00:09:50 +08:00
chenhg5andClaude 737f4f8c75 feat(claudecode): enhance permission modes with runtime switching
generated by llmgit

Co-Authored-By: Claude <noreply@anthropic.com>
2026-02-28 23:44:59 +08:00
chenhg5andClaude ecd0e0070f feat(claudecode): refactor agent into persistent session model with permission handling and i18n support
This major refactor:

generated by llmgit

Co-Authored-By: Claude <noreply@anthropic.com>
2026-02-28 22:05:12 +08:00
chenhg5 b3f9887454 feat(wecom): add proxy support for API calls
generated by llmgit

o-Authored-By: Claude <noreply@anthropic.com>
2026-02-28 16:02:23 +08:00
chenhg5andClaude 16bec7cc38 feat(platform): add WeChat Work support with AES encryption
Add support for WeChat Work (企业微信) as a new platform with full HTTP Webhook integration. Includes:
- AES-256-CBC message encryption/decryption
- Token verification and message handling
- API client for sending messages with access token caching
- Documentation updates in README and config
- Chinese language README support
- Example configuration

generated by llmgit

Co-Authored-By: Claude <noreply@anthropic.com>
2026-02-28 15:25:31 +08:00
chenhg5andClaude 2b1152c1c7 feat(platform): add support for Telegram, Slack, Discord and LINE
The changes introduce support for four new messaging platforms:

Includes implementation code for LINE platform adapter, documentation updates in READMEs, and configuration examples. Also adds required dependencies to go.mod.

generated by llmgit

Co-Authored-By: Claude <noreply@anthropic.com>
2026-02-28 15:17:17 +08:00
chenhg5andClaude eaec71f8a5 feat: add Telegram, Slack and Discord platform support
Add new platform integrations with configuration examples and dependencies:
- Telegram long polling bot support
- Slack Socket Mode WebSocket integration
- Discord Gateway WebSocket connection
- Include required dependencies in go.mod

generated by llmgit

Co-Authored-By: Claude <noreply@anthropic.com>
2026-02-28 14:56:29 +08:00