Commit Graph

516 Commits

Author SHA1 Message Date
xj 13feef9cee fix(plugins): address copilot review follow-ups 2026-03-01 14:37:02 -08:00
xj 61ee2a4664 Merge pull request #1365 from gh-xj/feat/wasm-plugin-runtime-exec
feat(plugins): add wasm runtime execution bridge, limits, and docs (part 2/2) (RMN-271)
2026-03-01 14:00:26 -08:00
argenis de la rosa 3f6e192b14 feat(channel): add native Discord approval buttons and interactions 2026-03-01 15:51:27 -05:00
argenis de la rosa 13790ac2b9 fix(agent): refresh system prompt datetime across long-lived turns 2026-03-01 15:51:10 -05:00
xj b145093488 Merge remote-tracking branch 'upstream/main' into tmp/pr1365-sync 2026-03-01 12:40:02 -08:00
argenis de la rosa 9fb0e30dac feat(channels): hot-reload runtime tool-loop and memory defaults 2026-03-01 15:24:39 -05:00
argenis de la rosa cc9ff1820b feat(autonomy): exclude process by default for non-cli channels 2026-03-01 15:18:48 -05:00
argenis de la rosa a0bba8ee1b test(telegram): verify approval prompt markdown payload 2026-03-01 15:05:12 -05:00
argenis de la rosa 5dede160a2 fix(telegram): add Markdown parse_mode to approval prompts
The approval prompt message uses backticks for code formatting
but was missing the parse_mode field, Telegram displays the
backticks literally instead of rendering them as code.

Add "parse_mode": "Markdown" to the sendMessage request body
to enable proper formatting.

Fixes #2359

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-01 15:05:12 -05:00
argenis de la rosa fa2f902259 fix(approval): keep approve-allow one-shot for pending requests
Route /approve-allow through a runtime-only pending-request path so it does not
persist approval policy changes for normal tools.

This preserves always_ask semantics for Telegram inline HITL approvals while
keeping /approve and /approve-request + /approve-confirm as the persistent
approval flows. Update docs and regression assertions accordingly.
2026-03-01 13:17:30 -05:00
argenis de la rosa d800b1caf5 fix(feishu): map legacy config keys and improve feature guidance 2026-03-01 13:16:33 -05:00
xj 1da53f154c Merge branch 'main' into feat/wasm-plugin-runtime-exec 2026-03-01 00:57:15 -08:00
argenis de la rosa 4043056332 feat(cost): enforce preflight budget policy in agent loop 2026-03-01 00:17:27 -05:00
Argenis 0683467bc1 fix(channels): prompt non-CLI always_ask approvals (#2337)
* fix(channels): prompt non-cli always_ask approvals

* chore(ci): retrigger intake after PR template update
2026-02-28 23:53:59 -05:00
xj 05d36862c5 feat(plugins): add hot-reload state and activate observer bridge 2026-02-28 21:33:11 -05:00
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