Commit Graph

226 Commits

Author SHA1 Message Date
argenis de la rosa
305f9bd12e feat(bridge): implement authenticated websocket bridge runtime 2026-03-05 09:51:05 -05:00
argenis de la rosa
4cf1adfd7d feat(channels): scaffold bridge websocket channel for #2816
(cherry picked from commit e8e314f69e396d86ad97a4817532a351cd7c1365)
2026-03-05 09:51:05 -05:00
argenis de la rosa
491f3ddab6 fix(onboarding): make active-workspace persistence custom-home safe 2026-03-05 06:21:13 -05:00
argenis de la rosa
39f2d9dd44 fix(reliability): validate fallback API key mapping 2026-03-05 06:15:24 -05:00
argenis de la rosa
44ef09da9b docs(config): clarify fallback_api_keys contract
(cherry picked from commit dd0cc10e37)
2026-03-05 06:15:24 -05:00
argenis de la rosa
9fc42535c3 feat(reliability): support per-fallback API keys for custom endpoints
(cherry picked from commit 244e68b5fe)
2026-03-05 06:15:24 -05:00
Argenis
9abdb7e333
Merge pull request #2836 from zeroclaw-labs/issue-2784-2782-2781-dev-r2
fix(channels): resolve gateway alias + false missing-tool regressions
2026-03-05 05:53:22 -05:00
argenis de la rosa
69232d0eaa feat(workspace): add registry storage and lifecycle CLI 2026-03-05 05:47:40 -05:00
argenis de la rosa
d85cbce76a fix(channels): harden tool-loop and gateway config regressions 2026-03-05 05:27:51 -05:00
Argenis
d4eb3572c7
Merge pull request #2800 from zeroclaw-labs/issue-2788-mariadb-memory-dev
feat(memory): add MariaDB backend support
2026-03-05 01:54:55 -05:00
Argenis
bde1538871
Merge pull request #2796 from zeroclaw-labs/issue-2779-shell-redirect-policy-dev
fix(shell): add configurable redirect policy and strip mode
2026-03-05 01:54:46 -05:00
Argenis
943d763272
Merge pull request #2726 from zeroclaw-labs/issue-2703-skill-on-demand-dev
feat(skills): load skill bodies on demand in compact mode
2026-03-05 01:54:20 -05:00
Argenis
802cf036e8
Merge pull request #2723 from zeroclaw-labs/dev-issues-2595-2590-2588
fix(gateway+security): restore web agent reliability and security guards on dev
2026-03-05 01:54:12 -05:00
argenis de la rosa
79ab8cdb0f feat(memory): add MariaDB backend support (#2788) 2026-03-04 21:37:41 -05:00
argenis de la rosa
d2e4c0a1fd fix(shell): add configurable redirect policy and strip mode 2026-03-04 21:36:07 -05:00
argenis de la rosa
089b1eec42 feat(skills): load skill bodies on demand in compact mode 2026-03-04 06:25:24 -05:00
argenis de la rosa
e2d65aef2a feat(security): add canary and semantic guardrails with corpus updater 2026-03-04 06:20:45 -05:00
argenis de la rosa
d0e7e7ee26 fix(config): align telegram env tests with dev telegram schema 2026-03-04 05:43:59 -05:00
argenis de la rosa
59aa4fc6ac feat(config): support env refs for telegram allowed_users 2026-03-04 05:39:34 -05:00
killf
a40b0c09fd feat(tools): add Chrome/Firefox support to browser_open tool
Add support for Chrome and Firefox browsers to the browser_open tool,
which previously only supported Brave. Users can now specify the
browser via the `browser_open` config option.

Changes:
- Add `browser_open` config field: "disable" | "brave" | "chrome" | "firefox" | "default"
- Implement platform-specific launch commands for Chrome and Firefox
- When set to "disable", only the browser automation tool is registered,
  not the browser_open tool
- Update tool descriptions and error messages to reflect browser selection

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-03-03 15:07:09 +08:00
killf
a23794e188 feat(tools): add Tavily provider support and round-robin API key load balancing
Add Tavily as a new provider for both web_fetch and web_search_tool tools.
Implements round-robin load balancing for API keys to support multiple
keys in a single configuration.

Changes:
- Add Tavily provider to WebFetchConfig and WebSearchTool
- Support comma-separated API keys with round-robin selection
- Add fetch_with_tavily and search_tavily implementation methods
- Update provider documentation and error messages
- Add comprehensive tests for multi-key parsing and round-robin behavior

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-03-03 15:07:09 +08:00
Chummy
3ea7b6a996 feat(telegram): support custom Bot API base_url 2026-02-26 12:18:55 +08:00
argenis de la rosa
1e8c09d34a fix(agent): improve iteration-limit recovery and defaults 2026-02-25 17:33:32 -05:00
Chummy
1ad2d71c9b feat(approval): add one-time all-tools non-cli approval flow 2026-02-26 02:19:14 +08:00
Chummy
d8a1d1d14c fix: reconcile non-cli approval governance with current dev APIs 2026-02-26 02:19:14 +08:00
Chummy
1fcf2df28b feat: harden non-CLI approval governance and runtime policy sync 2026-02-26 02:19:14 +08:00
Allen Huang
6064890415 feat: goals engine, heartbeat delivery, daemon improvements, and cron consolidation
- goals: add autonomous goal loop engine for long-term goal execution
- goals: add goal-level reflection for stalled goals
- goals: make GoalStatus and StepStatus deserialization self-healing
- goals: remove initiative planning from Rust, use cron job instead
- daemon: add PID lock and goal-loop supervisor
- daemon: add per-task failure tracking and auto-disable for heartbeat
- daemon: deliver heartbeat results to configured channels
- cron: add nightly consolidation cron job
- cron: set delete_after_run for one-shot shell jobs
- cron: add session_source to agent prompt building
- service: forward provider env vars into generated service files
- agent: add reflection flywheel — cron context injection, tool audit, nightly consolidation
- agent: make state reconciliation opt-in per call site

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-02-26 01:50:24 +08:00
Chummy
21696e1956 fix(lark): add new draft config fields in tests 2026-02-26 01:21:32 +08:00
Allen Huang
cc8aac5918 feat: channel improvements (Lark rich-text, WhatsApp QR, draft config)
- lark: convert send to rich-text post format with markdown parsing
- lark: add draft edit throttling and shell polling guidance
- lark: auto-detect receive_id_type from recipient prefix
- lark: deliver heartbeat as interactive card
- lark: use valid Feishu API emoji_type keys for ack reactions
- lark: handle flat post format from WS and add diagnostic logging
- lark: replace unsupported code_inline tag and strip leaked tool blocks
- lark: gate LarkChannel behind channel-lark feature flag
- whatsapp: render WhatsApp Web pairing QR in terminal
- channels: update_draft returns Option<String> for new draft IDs
- config: add draft_update_interval_ms and max_draft_edits to Lark/FeishuConfig

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-02-26 01:21:32 +08:00
Chummy
a9e8526d67 feat(channels): add unified group-reply policy and sender overrides 2026-02-26 00:05:32 +08:00
Ricardo Magaña
da62bd172f feat(tools): add user_agent config and setup_web_tools wizard step
Ports remaining changes from feat/unify-web-fetch-providers that were
not yet integrated into dev:

- config/schema.rs: add `user_agent` field (default "ZeroClaw/1.0") to
  HttpRequestConfig, WebFetchConfig, and WebSearchConfig, with a shared
  default_user_agent() helper. Field is serde-default so existing configs
  remain backward compatible.

- tools/http_request.rs: accept user_agent in constructor; pass it to
  reqwest::Client via .user_agent() replacing the implicit default.

- tools/web_fetch.rs: accept user_agent in constructor; replace hardcoded
  "ZeroClaw/0.1 (web_fetch)" in build_http_client with the configured value.

- tools/web_search_tool.rs: accept user_agent in constructor; replace
  hardcoded Chrome UA string in search_duckduckgo and add .user_agent()
  to the Brave and Firecrawl client builders.

- tools/mod.rs: wire user_agent from each config struct into the
  corresponding tool constructor (HttpRequestTool, WebFetchTool,
  WebSearchTool).

- onboard/wizard.rs: add setup_web_tools() as wizard Step 6 "Web &
  Internet Tools" (total steps bumped from 9 to 10). Configures
  WebSearchConfig, WebFetchConfig, and HttpRequestConfig interactively
  with provider selection and optional API key/URL prompts. Step 5
  setup_tool_mode() http_request and web_search outputs are now discarded
  (_, _) since step 6 owns that configuration. Uses dev's generic
  api_key/api_url schema fields unchanged.

Co-authored-by: Cursor <cursoragent@cursor.com>
(cherry picked from commit fb83da8db021903cf5844852bdb67b9b259941d7)
2026-02-25 23:43:42 +08:00
Chummy
856afe8780 feat(coordination): deep-complete agent coordination message bus
- add typed coordination protocol envelopes/payload validation and deterministic in-memory bus\n- integrate delegate runtime lifecycle tracing with shared coordination bus\n- add delegate_coordination_status read-only observability tool\n- add config/onboarding wiring and coordination enable/limits controls\n- harden retention/memory bounds with inbox/dead-letter/context/dedupe caps\n- add runtime metrics and pagination/offset metadata for status inspection\n- add correlation-scoped fast-path indexes for context/dead-letter/inbox queries\n- expand unit/integration tests for ordering, idempotency, conflict handling, paging, and filters
2026-02-25 23:16:27 +08:00
Chummy
3d86fde6f2 fix(ci): allow wasm security bool config lint 2026-02-25 22:49:57 +08:00
Chummy
163f2fb524 feat(wasm): harden module integrity and symlink policy 2026-02-25 22:49:57 +08:00
Chummy
604f64f3e7 feat(runtime): add configurable wasm security runtime and tooling 2026-02-25 21:46:05 +08:00
Chummy
efdd40787c feat(config): add deprecated runtime reasoning_level compatibility alias 2026-02-25 21:00:59 +08:00
Chummy
cfe1e578bf feat(security): add and harden syscall anomaly detection 2026-02-25 20:43:38 +08:00
Chummy
14f3c2678f hardening: eliminate cleartext secret logging paths flagged by codeql 2026-02-25 18:58:48 +08:00
Chummy
d5cd65bc4f hardening: tighten gateway auth and secret lifecycle handling 2026-02-25 18:33:28 +08:00
Chummy
aa743786c7 fix(config): wire provider reasoning overrides in schema 2026-02-25 17:51:00 +08:00
argenis de la rosa
aac87ca437 feat(provider): add reasoning level override
(cherry picked from commit 8d46469c40)
2026-02-25 17:51:00 +08:00
FlashFamily
931cf40636 fix: resolve all clippy warnings across codebase
Fix all clippy errors reported by `cargo clippy --all-targets -- -D warnings`
on Rust 1.93, covering both the original codebase and upstream dev changes.

Changes by category:
- format!() appended to String → write!/writeln! (telegram, discord)
- Redundant field names, unnecessary boolean not (agent/loop_)
- Long numeric literals (wati, nextcloud, telegram, gemini)
- Wildcard match on single variant (security/leak_detector)
- Derivable Default impls (config/schema)
- &Option<T> → Option<&T> or allow (config/schema, config/mod, gateway/api)
- Identical match arms merged (gateway/ws, observability, providers, main, onboard)
- Cast truncation allowed with rationale (discord, lark)
- Unnecessary borrows/returns removed (multiple files)
- Unused imports removed (channels/mod, peripherals/mod, tests)
- MSRV-gated APIs allowed locally (memory/hygiene, tools/shell, tools/screenshot)
- Unnecessary .get().is_none() → !contains_key() (gemini)
- Explicit iteration → reference loop (gateway/api)
- Test-only: useless vec!, field_reassign_with_default, doc indentation

Validated: cargo fmt, cargo clippy --all-targets -- -D warnings, cargo test
Co-authored-by: Cursor <cursoragent@cursor.com>
(cherry picked from commit 49e90cf3e4)
2026-02-25 17:50:56 +08:00
Chum Yin
dc7cf36a0f
Merge branch 'dev' into codex/supersede-pr-1639-20260225021812-271412-files 2026-02-25 11:06:52 +08:00
reidliu41
3a38c80c05 feat(config): add model_support_vision override for per-model vision control
`supports_vision` is currently hardcoded per-provider. The same Ollama instance can run `llava` (vision) or
  `codellama` (no vision), but the code fixes vision support at the provider level with no user override.

  This adds a top-level `model_support_vision: Option<bool>` config key — tri-state:
  - **Unset (default):** provider's built-in value, zero behavior change
  - **`true`:** force vision on (e.g. Ollama + llava)
  - **`false`:** force vision off

  Follows the exact same pattern as `reasoning_enabled`. Override is applied at the wrapper layer (`ReliableProvider` /
   `RouterProvider`) — no concrete provider code is touched.

  ## Changes

  **Config surface:**
  - Top-level `model_support_vision` field in `Config` struct with `#[serde(default)]`
  - Env override: `ZEROCLAW_MODEL_SUPPORT_VISION` / `MODEL_SUPPORT_VISION`

  **Provider wrappers (core logic):**
  - `ReliableProvider`: `vision_override` field + `with_vision_override()` builder + `supports_vision()` override
  - `RouterProvider`: same pattern

  **Wiring (1-line each):**
  - `ProviderRuntimeOptions` struct + factory functions
  - 5 construction sites: `loop_.rs`, `channels/mod.rs`, `gateway/mod.rs`, `tools/mod.rs`, `onboard/wizard.rs`

  **Docs (i18n parity):**
  - `config-reference.md` — Core Keys table
  - `providers-reference.md` — new "Ollama Vision Override" section
  - Vietnamese sync: `docs/i18n/vi/` + `docs/vi/` (4 files)

  ## Non-goals

  - Does not change any concrete provider implementation
  - Does not auto-detect model vision capability

  ## Test plan

  - [x] `cargo fmt --all -- --check`
  - [x] `cargo clippy --all-targets -- -D warnings` (no new errors)
  - [x] 5 new tests passing:
    - `model_support_vision_deserializes` — TOML parse + default None
    - `env_override_model_support_vision` — env var override + invalid value ignored
    - `vision_override_forces_true` — ReliableProvider override
    - `vision_override_forces_false` — ReliableProvider override
    - `vision_override_none_defers_to_provider` — passthrough behavior

  ## Risk and Rollback

  - **Risk:** Low. `None` default = zero behavior change for existing users.
  - **Rollback:** Revert commit. Field is `#[serde(default)]` so old configs without it will deserialize fine.

(cherry picked from commit a1b8dee785)
2026-02-25 10:56:31 +08:00
Chummy
a43cfba154
fix(config): restore IPC and web tool compatibility in research supersede 2026-02-25 02:32:22 +00:00
Chummy
c293561be2
supersede: file-replay changes from #1639
Automated conflict recovery via changed-file replay on latest dev.
2026-02-25 02:18:16 +00:00
Chummy
b4df1dc30d feat(tools): add web_fetch provider dispatch and shared URL validation 2026-02-25 03:30:45 +08:00
Mike-7777777
ed67184c7a feat(tools): add inter-process communication tools
Add 5 LLM-callable IPC tools (agents_list, agents_send, agents_inbox,
state_get, state_set) backed by a shared SQLite database, enabling
independent ZeroClaw processes on the same host to discover and
communicate with each other. Gated behind [agents_ipc] enabled = true.

Related #88 (item 3: Sessions / Sub-Agent Orchestration)
Related #1518 (design spec)
2026-02-25 01:14:47 +08:00
Chummy
46c9f0fb45 feat(matrix): add mention_only gate for group messages 2026-02-25 00:23:22 +08:00
Chummy
040bd95d84 fix(reliable): remap model fallbacks per provider 2026-02-24 23:21:39 +08:00