argenis de la rosa
a1d51b6454
feat(agent): add ProgressTracker for in-place tool progress updates
2026-02-28 21:19:16 -05:00
argenis de la rosa
bfacba20cb
feat(config): add ProgressMode enum for streaming channel draft updates
2026-02-28 20:56:16 -05:00
xj
9095a54de3
fix(main): restore rust gates after bluebubbles merge
2026-02-28 17:00:18 -08:00
argenis de la rosa
467fea87c6
refactor(hooks): extract HookRunner factory and make plugin registry init idempotent
...
- Add HookRunner::from_config() factory that encapsulates hook construction
from HooksConfig, replacing 3 duplicated blocks in agent/loop_, gateway,
and channels modules.
- Make plugin registry initialize_from_config() idempotent: skip re-init
if already initialized, log debug message instead of silently overwriting.
- Add capability gating for tool_result_persist hook modifications.
2026-02-28 19:51:37 -05:00
argenis de la rosa
ade0e91898
feat(plugins): route declared tools/providers through plugin registry
2026-02-28 19:51:37 -05:00
argenis de la rosa
1d6afe792b
feat(plugins): scaffold wasm runtime and wire core hook lifecycle
2026-02-28 19:51:37 -05:00
argenis de la rosa
c3dbd9a7a7
fix(quality): remove infallible unwraps in sop and skillforge
2026-02-28 19:37:38 -05:00
argenis de la rosa
5b6348d103
fix(telegram): deduplicate attachment markers in single reply
2026-02-28 19:24:39 -05:00
argenis de la rosa
c56c33d477
test(channels): add new runtime context fields in approval command tests
2026-02-28 19:23:30 -05:00
Chummy
cc80d51388
fix: align telegram ack constructor usage after rebase
2026-02-28 19:23:30 -05:00
Chummy
f1009c43a3
fix: resolve ack config rebase drift across telegram runtime
2026-02-28 19:23:30 -05:00
Chummy
762ca25e19
feat(channels): add chat-scoped ACK rules and simulation aggregates
2026-02-28 19:23:30 -05:00
argenis de la rosa
cd3c6375d7
fix(channels): resolve approval command merge conflict on main
2026-02-28 19:23:30 -05:00
Chummy
f594a233b0
feat(channels): enrich ack reaction policy with regex sampling and simulate
2026-02-28 19:23:30 -05:00
Chummy
8583f59066
feat(channels): add configurable ack reactions and channel ack config tool
2026-02-28 19:23:30 -05:00
xj
09119d46ec
Merge pull request #2271 from maxtongwang/feat/channel-bluebubbles
...
feat(channel): add BlueBubbles iMessage channel
2026-02-28 15:56:36 -08:00
bevis
812c2f62f8
fix(channels): bound dingtalk rich text recursion
2026-02-28 18:50:59 -05:00
bevis
c2b361d093
fix(channels): accept richer dingtalk callback text payloads
2026-02-28 18:50:59 -05:00
argenis de la rosa
7d6d90174f
feat(channel): use DingTalk Open API for sending messages
...
- Switch from sessionWebhook to /v1.0/robot/oToMessages/batchSend API
- Add access_token caching with automatic refresh (60s buffer)
- Enable cron job delivery to DingTalk (no user interaction required)
This change allows DingTalk to actively send messages (e.g., cron
reminders) without requiring the user to send a message first.
2026-02-28 18:41:51 -05:00
xj
f2c7498345
Merge remote-tracking branch 'upstream/main' into feat/channel-bluebubbles
...
# Conflicts:
# src/channels/mod.rs
2026-02-28 14:52:34 -08:00
argenis de la rosa
61d538b6d6
feat(slack): support listening on multiple configured channel IDs
2026-02-28 17:48:20 -05:00
argenis de la rosa
7f645e1a5c
Merge remote-tracking branch 'origin/main' into pr2093-mainmerge
2026-02-28 17:43:48 -05:00
argenis de la rosa
c07314bd92
merge(main): resolve #2093 conflicts and restore session build/test parity
2026-02-28 17:42:37 -05:00
argenis de la rosa
e663ad274e
fix(acp): harden process lifecycle and health validation
2026-02-28 17:36:39 -05:00
argenis de la rosa
1b8d747e1f
fix(acp): stabilize send path, remove unreachable arms, and fix docs tables
2026-02-28 17:36:39 -05:00
feishiheng
579f0f3d9a
feat(channels): add comprehensive ACP channel tests and fix implementation bugs (conflict resolution)
...
- Add 14 test functions for ACP channel (allowlist logic and JSON-RPC structures)
- Fix mutex guard across await in send() method using take() pattern
- Add acp: None default fields to ChannelsConfig in schema.rs
- Integrate ACP channel into channels/mod.rs and collect_configured_channels()
- Update channels-reference.md documentation
- Resolve merge conflicts with upstream/dev
All 17 ACP tests pass successfully.
2026-02-28 17:36:39 -05:00
argenis de la rosa
f7de9cda3a
Merge remote-tracking branch 'origin/main' into pr2093-mainmerge
2026-02-28 17:33:17 -05:00
argenis de la rosa
9b9c36e84d
test(channels): lock assistant autosave key namespace
2026-02-28 17:24:31 -05:00
argenis de la rosa
6a24f25f91
fix(memory): auto-save assistant responses alongside user messages
2026-02-28 17:24:31 -05:00
Preventnetworkhacking
d89e7ab415
fix(utf8): prevent panic on CJK text truncation [CDV-27]
...
Fix UTF-8 boundary panics in two locations not covered by PR #2154 :
1. telegram.rs:3112 - OTP/approval message preview truncation
- Changed from byte-based `&raw_args[..260]` to char-based truncation
- Uses existing `truncate_with_ellipsis` utility
2. detection.rs:222 - Tool output hash prefix
- Changed from `&output[..4096]` to UTF-8-safe boundary
- Uses existing `floor_utf8_char_boundary` utility
Added test: hash_output_utf8_boundary_safe() verifies no panic on CJK text.
Fixes #2276
2026-02-28 16:35:09 -05:00
argenis de la rosa
df9ebcb3d2
fix(model): resolve provider-aware fallback model IDs
2026-02-28 16:33:04 -05:00
argenis de la rosa
9e4ecc0ee6
fix(slack): resolve sender display names with cache
2026-02-28 16:23:45 -05:00
argenis de la rosa
a30869112e
fix(lark,config): complete feishu dedupe and profile config compatibility
2026-02-28 16:17:24 -05:00
argenis de la rosa
4f32b6d8e4
fix(lark): dedupe ws and webhook events by event key
2026-02-28 16:17:24 -05:00
maxtongwang
32150c85fb
fix(channel/bluebubbles): address CodeRabbit review findings
...
- typing_handle → typing_handles: per-recipient HashMap to prevent
concurrent conversations from cancelling each other's typing loops
- add is_sender_ignored() method; enforce ignore_senders before allowlist
evaluation in parse_webhook_payload (precedence: ignore > allow)
- wire BlueBubblesConfig.password and .webhook_secret into
decrypt_channel_secrets / encrypt_channel_secrets in config/schema.rs
- add 3 unit tests covering is_sender_ignored edge cases
2026-02-28 12:20:47 -08:00
maxtongwang
4d195be713
feat(channel): add BlueBubbles iMessage channel
...
Adds a BlueBubbles channel so ZeroClaw can send and receive iMessages
via a locally-running BlueBubbles server on macOS.
What changed:
- src/channels/bluebubbles.rs — new BlueBubblesChannel implementing Channel
- Webhook-based ingestion (push, no polling)
- Allowlist + ignore_senders filtering
- Rich text via iMessage Private API (attributedBody bold/italic/underline)
- Typing indicator (start_typing / stop_typing) while LLM processes
- Message effects ([EFFECT:confetti], [EFFECT:slam], etc.)
- 500-entry fromMe FIFO cache for reply-context resolution
- Attachment placeholder format matching OpenClaw (<media:image>)
- 38 unit tests covering parsing, filtering, timestamps, effects
- src/config/schema.rs — BlueBubblesConfig struct + ChannelsConfig field
- Fields: server_url, password, allowed_senders, webhook_secret, ignore_senders
- Debug impl redacts password and webhook_secret
- src/gateway/mod.rs — POST /bluebubbles route + handler
- Bearer token auth if webhook_secret is set
- Typing indicator around LLM call
- Memory auto-save on incoming messages
- src/channels/mod.rs — module + re-export + iMessage delivery instructions
- src/providers/cursor.rs — fix pre-existing missing quota_metadata field
Non-goals: BlueBubbles Private API pairing, polling mode, contact management.
Closes #2268
2026-02-28 12:08:24 -08:00
argenis de la rosa
3825eca3dc
fix(memory): thread session IDs through runtime paths
2026-02-28 15:00:27 -05:00
argenis de la rosa
9784e3bfc1
feat(channel): add github native channel MVP
2026-02-28 14:03:10 -05:00
argenis de la rosa
0253752bc9
feat(memory): add observation memory tool
2026-02-28 13:32:13 -05:00
Argenis
a25ca6524f
feat(skills): support front-matter metadata and always-inject skills ( #2248 )
...
* feat(skills): support front matter always injection in compact mode
* chore(pr): retrigger intake after template and linear updates
2026-02-28 13:11:57 -05:00
argenis de la rosa
6500f048bc
feat(email): add IMAP ID extension support
2026-02-28 13:05:49 -05:00
argenis de la rosa
cc0bc49b2f
feat(channel): add napcat support for qq protocol
2026-02-28 13:02:55 -05:00
argenis de la rosa
376d965088
Merge remote-tracking branch 'origin/main' into supersede-pr-1923-mergefix
2026-02-28 12:05:28 -05:00
loydccc
2044e828de
fix(channel): mark discord inbound image attachments as [IMAGE]
...
# Conflicts:
# src/channels/discord.rs
2026-02-28 11:57:17 -05:00
ZeroClaw Bot
8c0be20422
feat(providers): add quota_metadata to ChatResponse across all providers
...
Wire QuotaMetadata into ChatResponse for all provider implementations,
enabling quota tracking data to flow from API responses through the
agent loop to quota monitoring tools.
Depends on: circuit breaker (#1842 ) + quota monitoring (#1904 )
Made-with: Cursor
2026-02-28 11:45:02 -05:00
Chummy
cf59171937
test: align channel context defaults and de-flake proxy assertion
2026-02-28 23:01:53 +08:00
Chummy
a89f5c25be
fix: resolve rebase drift in channel approval runtime
2026-02-28 23:01:53 +08:00
Chummy
42471f4d3e
fix: restore ws query-token fallback and telegram test fixtures
2026-02-28 23:01:53 +08:00
Chummy
be8f7efe82
test: stabilize flaky threshold assertions
2026-02-28 23:01:53 +08:00
Chummy
5ee6024914
Fix channel turn persistence and low-sensitivity leak detection
2026-02-28 23:01:53 +08:00