Commit Graph
233 Commits
Author SHA1 Message Date
Philippe BranchuandClaude Opus 4.6 4b5aba28cf Revert unrelated mcp.rs rewrite and Cargo.lock changes
The previous commit accidentally included a complete MCP module rewrite
that removed Http transport and headers support, breaking compilation
against upstream kernel.rs tests.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-28 00:42:52 +00:00
Philippe BranchuandClaude Opus 4.6 946363e919 Fix silent reinforcement: recognize [SILENT] token in agent replies
Extract is_silent_token() helper for case-insensitive [SILENT] detection.
Revert unrelated Cargo.lock and formatting changes. Add unit tests.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-27 23:15:05 +00:00
jaberjaber23 64631a31e6 fix: resolve 5 bugs + close 1 resolved (#771, #811, #752, #772, #661)
- #771: Fix Qwen tool_calls orphaning after context overflow. Added safe drain boundaries
  in compactor and context_overflow to avoid splitting tool pairs. Added missing
  validate_and_repair call in streaming loop.
- #811: LINE webhook signature now uses raw request bytes (not re-serialized JSON) for
  HMAC. Channel secret is trimmed. Debug logging added for mismatches.
- #752: Local skill install now hot-reloads kernel via POST /api/skills/reload. TUI skill
  list fixed to parse wrapper object. ClawHub install also triggers reload.
- #772: exec_policy mode=full now bypasses approval gate for shell_exec tools. Non-shell
  tools like file_delete still respect approval settings.
- #661: Closed as resolved by #770 splice() reactivity fix and #836 tool ID fix.

All tests passing. 10 files changed, 436 insertions.
2026-03-28 00:44:12 +03:00
jaberjaber23 9fef6d6c91 fix: resolve 5 bugs + close 1 resolved (#875, #872, #867, #824, #833, #766)
- #875: Install script uses robust sed parsing instead of fragile cut for version detection
- #872: Session endpoint returns full tool results (removed 2000-char truncation)
- #867: agent_send/agent_spawn get 600s timeout (was 120s), regular tools keep 120s
- #824: Doctor workspace skills count uses direct return value from load_workspace_skills
- #833: Model switching respects provider via new find_model_for_provider() lookup
- #766: Closed as resolved by combined heartbeat fixes (v0.5.3 + merged PRs)

All tests passing. Live tested with daemon.
2026-03-27 22:42:24 +03:00
Jaber JaberandGitHub a72e6087d8 Merge pull request #665 from tianrking/main
feat(channels): add MQTT pub/sub channel adapter
2026-03-27 22:00:33 +03:00
Sky Moore 9e2853a5f8 fix: resolve CI failures after rebase on upstream/main
- Add missing budget_config field to AppState in all 3 test files
- Fix redundant closures and unwrap_or_else in openfang-memory semantic.rs
- Fix needless_borrow in openfang-api routes.rs (toml::from_str)
- Update parse_researcher_hand test to match new max_iterations = 25
- Update tar to 0.4.45 to fix RUSTSEC-2026-0067 and RUSTSEC-2026-0068
- Apply cargo fmt fixes in ws.rs and feishu.rs
2026-03-27 18:40:33 +00:00
Sky Moore feecb60442 fix: use specific capability-denial assertion to avoid OS error false positive on Linux CI 2026-03-27 16:47:37 +00:00
Sky Moore e53e238e81 fix: cargo fmt and update rustls-webpki to 0.103.10 (RUSTSEC-2026-0049) 2026-03-27 16:47:35 +00:00
Sky Moore 991aea85ee feat: use rmcp for mcp protocol instead of hand rolled
Replace the custom JSON-RPC + stdio/SSE transport layer with the rmcp
SDK (crate 'rmcp').  This gives us spec-compliant Streamable-HTTP
transport, automatic Mcp-Session-Id tracking, SSE stream parsing, and
content-type negotiation out of the box while deleting ~300 lines of
hand-rolled plumbing.

Key changes:
- Add rmcp dependency with transport feature
- Replace McpTransportHandle enum with rmcp RunningService
- Replace manual JSON-RPC send_request/send_notification with rmcp client calls
- Add custom HTTP headers support for authenticated remote MCP servers
- Simplify tool discovery and invocation through rmcp's typed API
2026-03-27 16:47:32 +00:00
w0x7ce bfbf0bb892 feat(channels): add MQTT pub/sub channel adapter
Add generic MQTT 3.1.1/5.0 support for IoT and messaging integration:

- MqttConfig with broker_url, TLS, QoS, auth via env vars
- MqttAdapter implementing ChannelAdapter trait
- Support for text and JSON {"text": "..."} payloads
- Command messages via /command args syntax
- Auto-reconnect with exponential backoff
- Message chunking for long responses

Configuration example:
  [channels.mqtt]
  broker_url = "tcp://broker.hivemq.com:1883"
  subscribe_topic = "openfang/inbox"
  publish_topic = "openfang/outbox"
2026-03-27 22:08:18 +08:00
Jaber JaberandGitHub b6cb4cc2d9 Merge pull request #657 from xinuxZ/feat/feishu-websocket-receive-mode
feat(feishu): add WebSocket receive mode with protobuf framing
2026-03-27 16:44:31 +03:00
Jaber JaberandGitHub ad780b9cb4 Merge pull request #667 from bobbiejaxn/feat/http-memory-backend
feat: HTTP memory backend for SemanticStore
2026-03-27 16:44:17 +03:00
Jaber JaberandGitHub 4582ed16b0 Merge pull request #659 from zamal-db/feat/vertex-ai-oauth-v2
feat(drivers): add Vertex AI driver with OAuth authentication
2026-03-27 16:44:09 +03:00
Jaber JaberandGitHub f56505258d Merge pull request #673 from vnz/feat/cron-run-now
Implement "Run Now" for cron jobs
2026-03-27 16:42:47 +03:00
Jaber JaberandGitHub ddd1536bcb Merge pull request #702 from yaroslavyaroslav/codex/tlg-chat-enhancements
Expose Telegram slash commands via setMyCommands
2026-03-27 16:42:42 +03:00
Jaber JaberandGitHub 9fa5234061 Merge pull request #705 from apestchanker/fix/claude-code-system-prompt
fix(claude-code): pass system prompt via --system-prompt flag instead…
2026-03-27 16:42:33 +03:00
Jaber JaberandGitHub e21efa61ef Merge pull request #685 from Fail-Safe/fix/researcher-hand-defaults
fix: make heartbeat interval configurable and reduce researcher max_iterations
2026-03-27 16:39:31 +03:00
Jaber JaberandGitHub 3f72c5d918 Merge pull request #701 from Fail-Safe/fix/agent-modal-ui
fix: improve agent detail modal layout and fallback chain display
2026-03-27 16:39:23 +03:00
Jaber JaberandGitHub c286b88d54 Merge pull request #703 from Fail-Safe/fix/heartbeat-startup-false-positive
fix: reset last_active on agent restore to prevent heartbeat false-positives on startup
2026-03-27 16:39:19 +03:00
Jaber JaberandGitHub 22c08c2325 Merge pull request #668 from lc-soft/fix-runtime-page-style
fix runtime page stat card layout
2026-03-27 16:39:13 +03:00
Jaber JaberandGitHub f6493e8843 Merge pull request #682 from Fail-Safe/fix/tool-filter-case-insensitive
fix: make tool allowlist/blocklist matching case-insensitive
2026-03-27 16:39:08 +03:00
Jaber JaberandGitHub b967852891 Merge pull request #690 from lc-soft/fix-list-style
fix list style in message bubble
2026-03-27 16:38:59 +03:00
Jaber JaberandGitHub d95d9583b0 Merge pull request #696 from Abhishek21k/fix(#660)/notion-api-token-fix
Fix Notion MCP server env var name (NOTION_API_KEY → NOTION_TOKEN)
2026-03-27 16:38:53 +03:00
Jaber JaberandGitHub 8c0cce3ac5 Merge pull request #737 from octo-patch/feature/add-minimax-m2.7
feat: add MiniMax-M2.7 as new flagship model
2026-03-27 16:25:35 +03:00
Jaber JaberandGitHub f036bd54e3 Merge pull request #710 from Reaster0/fix/fallback-default-provider-resolution
fix(kernel): resolve "default" provider in fallback_models before driver init
2026-03-27 16:25:30 +03:00
Jaber JaberandGitHub 77da90f3f8 Merge pull request #709 from Fail-Safe/fix/touch-agent-before-llm-call
fix: stamp last_active before LLM call to prevent mid-iteration heartbeat timeouts
2026-03-27 16:25:26 +03:00
Jaber JaberandGitHub b0b6f84492 Merge pull request #762 from lc-soft/fix/mobile-menu-btn-overlap
fix: resolve page-header overlap and overflow
2026-03-27 16:25:23 +03:00
Liu 7410faa96d fix(wizard): prevent provider reset to first item during API_KEY test 2026-03-27 10:57:40 +08:00
Jaber JaberandGitHub e880dfa3e7 Merge pull request #777 from ANierbeck/main
Expose all agent templates in the web interface
2026-03-27 05:37:24 +03:00
Jaber JaberandGitHub 7791b3f170 Merge pull request #768 from voidborne-d/fix/matrix-self-message-loop
fix(matrix): prevent bot self-reply loop with user_id mismatch and event dedup
2026-03-27 05:37:19 +03:00
Jaber JaberandGitHub e58039c83e Merge pull request #789 from pbranchu/fix/mcp-response-matching
Fix MCP bridge dropping tool results when servers send notifications
2026-03-27 05:37:15 +03:00
Jaber JaberandGitHub 9b0a7d2f61 Merge pull request #790 from pbranchu/fix/sender-identity
Prepend sender identity to channel messages for agent context
2026-03-27 05:37:10 +03:00
Jaber JaberandGitHub 86fe4929e9 Merge pull request #775 from pbranchu/config-heartbeat-timeout
Expose heartbeat default_timeout_secs in config.toml
2026-03-27 05:36:32 +03:00
Jaber JaberandGitHub 9993718d9c Merge pull request #779 from Mohl/fix/streamable-http-mcp
fix(mcp): handle Streamable HTTP MCP responses with SSE framing
2026-03-27 05:36:28 +03:00
Jaber JaberandGitHub 0bf2f61ab1 Merge pull request #782 from rager306/fix/safe-budget-mutation
fix: replace unsafe Arc mutation in PUT /api/budget with RwLock
2026-03-27 05:36:24 +03:00
Jaber JaberandGitHub 51eff0d75f Merge pull request #783 from rager306/fix/csp-nonce
fix: replace unsafe-inline CSP with per-request nonce
2026-03-27 05:36:21 +03:00
Jaber JaberandGitHub 54885d8a1c Merge pull request #765 from felix307253927/pr-main-0320
fix: Fix the issue of duplicate tool calls with identical arguments i…
2026-03-27 05:34:59 +03:00
Jaber JaberandGitHub 617b4f81d8 Merge pull request #764 from felix307253927/pr-main-320
fix: The command succeeded, yet the model keeps calling it repeatedly.
2026-03-27 05:34:55 +03:00
Jaber JaberandGitHub a0f829383c Merge pull request #776 from felix307253927/pr-main-321
fix: Empty string IDs are overwritten, leading to inconsistencies in …
2026-03-27 05:34:51 +03:00
Jaber JaberandGitHub 1964545f35 Merge pull request #814 from szponeczek/feat/infisical-sync-hand-clean
Adds infisical-sync hand. Declarative only, strong security posture.
2026-03-27 04:53:23 +03:00
Jaber JaberandGitHub fc7e971d7e Merge pull request #806 from ilteoood/main
Adds NVIDIA NIM support to CLI wizard.
2026-03-27 04:53:20 +03:00
Jaber JaberandGitHub 86309c8e40 Merge pull request #838 from turbolego/fix_clippy_linting_errors
Trivial lint and clippy fixes.
2026-03-27 04:52:53 +03:00
Jaber JaberandGitHub 282ad3a960 Merge pull request #832 from felix307253927/pr-main-324
Fixes unicode filename upload via multipart/form-data.
2026-03-27 04:52:50 +03:00
Jaber JaberandGitHub d6f857eee2 Merge pull request #830 from lc-soft/fix/tool-input-json-format
Clean 3-line fix for object-type tool input in formatToolJson.
2026-03-27 04:52:46 +03:00
Jaber JaberandGitHub 751b420b39 Merge pull request #796 from pbranchu/fix/gemini-turn-sanitization
Fixes Gemini INVALID_ARGUMENT crash after message trimming.
2026-03-27 04:51:28 +03:00
Jaber JaberandGitHub 5b2be80399 Merge pull request #803 from jam676767/fix/claude-code-empty-response-295
Critical fix for claude-code driver deadlock and empty responses.
2026-03-27 04:51:26 +03:00
jaberjaber23andClaude Opus 4.6 9b7496947b fix: resolve 7 more bugs (#825, #828, #856, #770, #774, #851/#808, #785)
- #825: Doctor now surfaces blocked workspace skills count in injection scan
- #828: Skill install detects Git URLs (https://, git@) and clones before install
- #856: Custom model names preserved — user-defined models take priority over builtins
- #770: Dashboard WS streaming now triggers Alpine.js reactivity via splice()
- #774: tool_use.input always normalized to JSON object (fixes Anthropic API errors)
- #851/#808: Global skills loaded for all agents; workspace skills properly override globals
- #785: Gemini streaming SSE parser handles \r\n line endings (fixes empty response loop)

All 2,186 tests passing. Live tested with daemon.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-27 04:04:17 +03:00
jaberjaber23 e7b9143423 fix: resolve 6 more bugs (#845, #844, #823, #767, #802, #816)
- #845: Model fallback chain now retries with fallback_models on ModelNotFound
- #844: Heartbeat skips idle agents that never received a message (no more crash loops)
- #823: Doctor --json outputs clean JSON to stdout, tracing to stderr, BrokenPipe handled
- #767: Workflows page scrollable with flex layout fix
- #802: Model dropdown handles object options (no more [object Object] for Ollama)
- #816: Spawn wizard provider dropdown loads dynamically from /api/providers (43 providers)

All 829+ tests passing. Live tested with daemon.
2026-03-26 05:26:57 +03:00
jaberjaber23 604e4ea7e3 fix: resolve 6 open bugs (#834, #805, #820, #848, #826, #836)
- #834: Remove 3 decommissioned Groq models (gemma2-9b-it, llama-3.2-1b/3b-preview)
- #805: Ollama streaming parser now checks both reasoning_content and reasoning fields
- #820: Browser Hand checks python3 before python, fix optional dep logic
- #848: Hand continuous interval changed from 60s to 3600s to prevent credit waste
- #826: Doctor command no longer reports all_ok when provider key is rejected
- #836: WebSocket tool events now include tool call ID for concurrent call correlation

All 825+ tests passing. Verified live with daemon.
2026-03-26 03:33:07 +03:00
turbolego c926372d81 lint fixes for 'cargo clippy --workspace --all-targets -- -D warnings' and 'cargo test --workspace' 2026-03-24 22:23:06 +01:00