Commit Graph

313 Commits

Author SHA1 Message Date
argenis de la rosa
f0a5bbdb1b feat(http_request): add env credential profiles and onboarding guards 2026-02-28 08:07:37 -05:00
Chummy
7470bded5d fix: harden browser and web search validation paths 2026-02-28 15:50:06 +08:00
Chummy
ad432b9981 docs: expand runtime policy and web search configuration workflows 2026-02-28 15:50:06 +08:00
Chummy
6716391502 feat: harden web access policy and add flexible web search/runtime config 2026-02-28 15:50:06 +08:00
xj
a381963623
fix(ci): stabilize post-2142 local quality gates (COM-2142) (#2171)
* chore(ci): retrigger PR checks after intake body update

* fix(ci): stabilize local quality gates on rebased main

---------

Co-authored-by: Chummy <chumyin0912@gmail.com>
Co-authored-by: xj <gh-xj@users.noreply.github.com>
2026-02-27 23:18:25 -08:00
Argenis
5a2f1902c4
Merge pull request #2103 from Preventnetworkhacking/docs/cron-scheduling-clean
docs: add cron/scheduling reference documentation [COM-2]
2026-02-28 01:30:02 -05:00
Argenis
7b1c63cf27
Merge pull request #2157 from zeroclaw-labs/feat/providers-sf-volcengine
feat: integrate Volcengine ARK and SiliconFlow providers
2026-02-28 01:28:09 -05:00
Argenis
4ddc4fe1e7
Merge pull request #2127 from zeroclaw-labs/fix/ci-require-chumyin-approval
ci: require explicit @chumyin approval for CI/CD changes
2026-02-28 01:28:00 -05:00
Chummy
cd70a18fa0 ci: remove dev-to-main promotion gate and align main flow 2026-02-28 14:06:08 +08:00
reidliu41
6662601a6c feat(agent): add result-aware loop detection for tool-call loop 2026-02-28 00:58:31 -05:00
Chummy
9d0ea63ace
docs(i18n): sync vi provider docs for Volcengine/SiliconFlow 2026-02-28 05:55:35 +00:00
Chum Yin
ca8ef10dcf
Merge branch 'main' into fix/ci-require-chumyin-approval 2026-02-28 13:49:32 +08:00
Chummy
1b82597eac fix(codex): harden transport validation and fallback 2026-02-28 13:48:41 +08:00
Chummy
81387f9896 fix(codex): preserve transport overrides across runtimes 2026-02-28 13:48:41 +08:00
Chummy
b721754ead feat(codex): add websocket-first transport selection 2026-02-28 13:48:41 +08:00
Preventnetworkhacking
769538ad23 fix: address CodeRabbit review comments for cron docs
- Fix MD036: convert bold text to proper heading at line 197
- Add Vietnamese localization (cron-scheduling.md)
- Update Vietnamese SUMMARY.md with cron-scheduling link
2026-02-27 21:43:51 -08:00
Chummy
f3f44c48f4
feat(providers): integrate Volcengine ARK and SiliconFlow
Add SiliconFlow provider factory support and alias/env handling.

Normalize onboarding UX to volcengine while preserving doubao/ark runtime aliases.

Add integration registry entries and provider resolution coverage tests.

Expand provider and command docs with setup and validation examples.
2026-02-28 05:25:15 +00:00
Chummy
b6290e041c
ci: require explicit @chumyin approval for CI/CD changes 2026-02-27 22:11:27 +00:00
Chummy
55cabbb70c ci: narrow feature-matrix push scope and add queue hygiene tool 2026-02-28 05:28:25 +08:00
Chummy
467888b872 ci: tighten low-signal triggers and gate e2e by paths 2026-02-28 05:13:09 +08:00
Chummy
e0c1b67929 ops(ci): add self-hosted runner remediation tooling 2026-02-28 05:00:32 +08:00
Chummy
a5cd875f1b ci: reduce non-blocking workflow load 2026-02-28 05:00:19 +08:00
Chummy
6da4a321b8 ci: remove blacksmith action dependencies 2026-02-28 05:00:01 +08:00
Chummy
211bff082b
perf(ci): optimize CI/CD pipeline critical path and runner utilization
Reduce PR CI critical path from ~80min to ~30min and total runner
pressure by ~40% through job parallelization, deduplication, and
cache unification.

Changes:
- ci-run.yml: run lint, test, and build in parallel (remove lint→test
  serial dependency); merge flake-probe retry logic into test job;
  unify rust-cache prefix-key for lint/test; simplify ci-required gate
- ci-build-fast.yml: delete redundant workflow (cargo build --release
  with lto=fat, codegen-units=1 duplicated ci-run.build's release-fast)
- feature-matrix.yml: skip 4 compilation lanes on PRs by default (only
  trigger on ci:full or ci:feature-matrix label); remove unnecessary
  fetch-depth: 0 from checkout
- docs/ci-map.md: update documentation to reflect new job topology,
  parallel execution model, and label-gated feature matrix behavior
2026-02-27 20:52:23 +00:00
Tom Cr00se
d41936ac05
Merge branch 'main' into docs/cron-scheduling-clean 2026-02-27 11:24:02 -08:00
Preventnetworkhacking
80ce59fa6c docs: add cron/scheduling reference documentation
Closes #88 (partial - cron section)

Comprehensive documentation for ZeroClaw's cron system:

- Schedule types: cron, at, every
- Job types: shell, agent
- Session targeting: main vs isolated
- Delivery configuration
- CLI commands reference
- Configuration file examples
- Tool integration (cron_add, cron_list, etc.)
- Migration guide from OpenClaw
- Best practices and troubleshooting

This addresses the 'Cron / Scheduling System' section of issue #88
which asked for documentation of these features.
2026-02-27 09:36:59 -08:00
Philip Peitsch
276ff7bd42 feat(channels): add matrix integration for sovereign communication 2026-02-27 20:34:16 +11:00
Samy
860e8b2442 fix: address remaining CodeRabbit review items
- Fix convert_channels() return type: dict → tuple[dict, list[str]]
- Remove unnecessary f-string prefixes on plain string literals
- Add blank lines after markdown headings (MD022 compliance)
- Handle triple-quote edge case in TOML multiline string output
- Add handler-level validation tests: missing message rejection,
  empty messages detection, whitespace-only user message, and
  context extraction correctness

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-27 04:43:16 +00:00
sudomove
0aa2994423 fix: address PR review issues — auth guard, doc refs, TOML escaping
- Add non-loopback auth guard to /v1/chat/completions (matching /api/chat)
- Fix migration guide references to non-existent files (api_chat.rs,
  openai_compat_shim.rs, mod_patch.rs) — endpoints live in openclaw_compat.rs
- Remove phantom `provider` field from /api/chat response docs
- Add TOML string escaping to config converter to handle special chars
- Add proper JSON parse error handling in config converter
- Update deployment checklist and troubleshooting to match actual file layout

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-27 04:43:16 +00:00
Samy
dde8b82ea0 feat(gateway): add OpenClaw migration compat layer with /api/chat and tools-enabled /v1/chat/completions
Add a complete OpenClaw → ZeroClaw migration toolkit:

- POST /api/chat: ZeroClaw-native endpoint with full agent loop (tools, memory,
  context enrichment). Supports session_id scoping and context[] injection for
  conversation history. Same code path as Linq/WhatsApp/Nextcloud handlers.

- POST /v1/chat/completions: OpenAI-compatible shim that routes through
  run_gateway_chat_with_tools instead of the simple provider.chat_with_history
  path. Extracts last user message + up to 10 messages of conversation context
  from the messages[] array. Supports streaming (simulated SSE). Drop-in
  replacement for OpenClaw callers with zero code changes.

Both endpoints include full observability instrumentation (AgentStart, LlmRequest,
LlmResponse, RequestLatency, AgentEnd), auth (pairing + webhook secret), rate
limiting, auto-save to memory, and response sanitization.

Also adds:
- scripts/convert-openclaw-config.py: Converts openclaw.json → config.toml with
  provider mapping, channel detection, and migration notes
- docs/migration/openclaw-migration-guide.md: Full migration walkthrough with
  endpoint reference, config mapping, callsite examples, and deployment checklist

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-27 04:43:16 +00:00
argenis de la rosa
cec99ffacb docs(security): codify official anti-fraud channels statement 2026-02-26 22:57:46 -05:00
argenis de la rosa
bfe3e4295d feat(security): add opt-in perplexity adversarial suffix filter 2026-02-26 22:55:23 -05:00
argenis de la rosa
90c82dc6b1 docs(structure): add function-oriented navigation map 2026-02-26 22:54:31 -05:00
argenis de la rosa
21e13c8ae5 fix(qq): add sandbox mode and passive msg id fallback 2026-02-26 22:53:06 -05:00
Argenis
7f3b7302b1 fix(config): resolve env credential reporting and safer compaction default
- report api_key_configured via provider credential resolution (env + overrides)\n- set agent.compact_context default to true for new configs\n- align docs and tests with the new default\n\nRefs: #1983\nRefs: #1984\nContext: #1358\n\nCo-authored-by: Argenis <144828210+theonlyhennygod@users.noreply.github.com>
2026-02-27 03:15:55 +00:00
argenis de la rosa
8180e7dc82 feat(skills): add WASM skill engine with secure registry install 2026-02-26 22:09:24 -05:00
argenis de la rosa
d63a6a8ceb feat(security): unify URL validation with configurable CIDR/domain allowlist 2026-02-26 22:07:07 -05:00
argenis de la rosa
b5292f54aa feat: plugin system
Implements a plugin system for ZeroClaw modeled after OpenClaw's architecture.

Key components:
- Plugin trait and PluginApi for registering tools/hooks
- Plugin manifest (zeroclaw.plugin.toml) for metadata
- Plugin discovery from bundled, global, and workspace directories
- PluginRegistry managing loaded plugins, tools, and hooks
- Error isolation via panic catching in register()
- Config integration via [plugins] section

Example plugin included in extensions/hello-world/.

Closes #1414

# Conflicts:
#	src/config/mod.rs
#	src/config/schema.rs
2026-02-26 21:49:10 -05:00
argenis de la rosa
ffaf927690 fix(web): improve web access guidance and search failure diagnostics 2026-02-26 21:42:13 -05:00
argenis de la rosa
6aa2164d16 fix(web): advertise browser automation tool in prompts 2026-02-26 21:30:32 -05:00
argenis de la rosa
b27b44829a chore: promote dev snapshot to main (resolve #1978/#1970) 2026-02-26 21:09:33 -05:00
argenis de la rosa
779b193de6 fix(config): default compact_context to true
Set AgentConfig compact_context default to true and align config defaults/tests/docs so daemon conversations recover from context pressure out of the box.

Closes #1984
2026-02-26 21:07:05 -05:00
Chummy
102af29f97 ci(intake): remove Linear dependency from public PR flow 2026-02-26 20:14:36 +08:00
Chum Yin
9b0e70b2f2
supersede: file-replay changes from #1895 (#1926)
Automated conflict recovery via changed-file replay on latest main.
2026-02-26 04:15:47 -05:00
Chummy
caae81b3c9 ci: remove blacksmith runner/actions and use self-hosted labels 2026-02-26 13:33:15 +08:00
Chummy
e0f6f24a5e
merge: promote dev into main (dev-first conflict resolution) 2026-02-26 03:41:59 +00:00
argenis de la rosa
1e8c09d34a fix(agent): improve iteration-limit recovery and defaults 2026-02-25 17:33:32 -05:00
Chummy
1fcf2df28b feat: harden non-CLI approval governance and runtime policy sync 2026-02-26 02:19:14 +08:00
Chummy
a9e8526d67 feat(channels): add unified group-reply policy and sender overrides 2026-02-26 00:05:32 +08:00
Chummy
c52603305c docs(ci): align nightly governance docs with active matrix profile 2026-02-25 23:01:49 +08:00
Chummy
163f2fb524 feat(wasm): harden module integrity and symlink policy 2026-02-25 22:49:57 +08:00
Mike-7777777
0b172c4554 docs(config): add [agents_ipc] section to config-reference
Document the agents_ipc configuration section (enabled, db_path,
staleness_secs) and the five IPC tools registered when enabled.
Closes the documentation gap from PR #1668 (agents IPC feature).

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-25 22:36:34 +08:00
Chummy
9769822dc8 docs(ci): harden matrix/nightly gate mapping and escalation runbooks 2026-02-25 22:29:26 +08:00
Chummy
d9a81409fb feat(ci): formalize canary cohorts and observability policy 2026-02-25 22:29:26 +08:00
Rui Chen
7d07e46798 ci: remove Homebrew core publishing flow
Remove the manual Homebrew-core publishing workflow and related docs references.

Signed-off-by: Rui Chen <rui@chenrui.dev>
(cherry picked from commit bc8b721b7e)
2026-02-25 22:28:23 +08:00
Chummy
17c606205b docs(ci): document docs deploy promotion and rollback policy 2026-02-25 21:55:13 +08:00
Chummy
604f64f3e7 feat(runtime): add configurable wasm security runtime and tooling 2026-02-25 21:46:05 +08:00
Chummy
e3c9bd9189 docs(i18n): consolidate localized readmes under docs/i18n 2026-02-25 21:37:51 +08:00
Chummy
53829623fa docs(release): document GHCR vulnerability gate policy 2026-02-25 21:35:57 +08:00
Chummy
1189ff59b8 docs(security): standardize private vuln workflow and SLA templates 2026-02-25 21:32:32 +08:00
Chummy
84e3e02e0a docs(release): document GHCR tag immutability contract 2026-02-25 21:10:19 +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
0134a11697 docs(release): map release-notes supply-chain flow 2026-02-25 20:38:51 +08:00
Chummy
076444ce50 docs(release): document artifact contract guard flow 2026-02-25 20:16:35 +08:00
Chummy
b50e66731a docs(ci): document release trigger guardrails 2026-02-25 19:54:17 +08:00
Sir Wesley
38585a8e00 docs(channels): improve Lark config placeholder values
Replace vague placeholders with descriptive ones:
- cli_xxx → your_lark_app_id
- xxx → your_lark_app_secret

Makes it clearer what values users need to substitute.
2026-02-25 19:40:42 +08:00
Chummy
9e7f3cbe81 docs(ci): document stage matrix and history audit outputs 2026-02-25 19:30:11 +08:00
Chummy
d579fb9c3c feat(ci): bridge canary abort to rollback guard dispatch 2026-02-25 18:39:11 +08:00
Chummy
3aed919c47 docs(ci): add runbooks and required-check mapping for new lanes 2026-02-25 17:51:04 +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
Chum Yin
db175c3690
[supersede #1545] feat(providers): implement Qwen OAuth quota tracking (#1746)
* feat(providers): implement Qwen OAuth quota tracking

Add static quota display for Qwen OAuth provider (portal.qwen.ai).
Qwen OAuth API does not return rate-limit headers, so this provides
a static quota indicator based on known OAuth free-tier limits.

Changes:
- Add QwenQuotaExtractor in quota_adapter.rs
  - Parses rate-limit errors for retry backoff
  - Registered for all Qwen aliases (qwen, qwen-code, dashscope, etc.)
- Add Qwen OAuth detection in quota_cli.rs
  - Auto-detects ~/.qwen/oauth_creds.json
  - Displays static quota: ?/1000 (unknown remaining, 1000/day total)
- Improve quota display formatting
  - Shows "?/total" when only total limit is known
- Add comprehensive test report and testing scripts
  - Full integration test report: docs/qwen-provider-test-report.md
  - Model availability, context window, and latency tests
  - Reusable test scripts in scripts/ directory

Test results:
- Available model: qwen3-coder-plus (verified)
- Context window: ~32K tokens
- Average latency: ~2.8s
- All 15 quota tests passing

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
(cherry picked from commit fa91b6a170)

* docs: satisfy markdownlint spacing in qwen docs

---------

Co-authored-by: ZeroClaw Bot <zeroclaw_bot@users.noreply.github.com>
Co-authored-by: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-02-25 03:09:38 -05:00
Chum Yin
9a407690b6
supersede: file-replay changes from #1595 (#1728)
Automated conflict recovery via changed-file replay on latest dev.
2026-02-25 02:49:23 -05:00
Chum Yin
6a057bf7d7
Merge branch 'dev' into codex/supersede-pr-1639-20260225021812-271412-files 2026-02-25 11:27:53 +08:00
Chummy
479df22ea7 supersede: file-replay changes from #1622
Automated conflict recovery via changed-file replay on latest dev.
2026-02-25 11:17:11 +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
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
Argenis
8541aa1bd3
docs: add Docker setup guide (#1690)
Add comprehensive Docker documentation covering:
- Bootstrap and onboarding in Docker mode
- Running ZeroClaw as a daemon or interactively
- Common commands and troubleshooting
- Environment variables and configuration options

This addresses user confusion where `zeroclaw` commands don't work
on the host after Docker bootstrap, and no containers are started.

Closes #1364

Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-24 18:40:43 -05:00
Chummy
b4df1dc30d feat(tools): add web_fetch provider dispatch and shared URL validation 2026-02-25 03:30:45 +08:00
Chummy
46c9f0fb45 feat(matrix): add mention_only gate for group messages 2026-02-25 00:23:22 +08:00
Chummy
4893ffebad docs(i18n): unify greek localization and docs structure parity 2026-02-25 00:08:28 +08:00
Chummy
c876a03819 feat(gateway): add experimental node-control scaffold API 2026-02-24 22:03:53 +08:00
Chummy
54dd7a4a9b feat(qq): add webhook receive mode with challenge validation 2026-02-24 19:30:36 +08:00
Chummy
7f2ef13da1 fix(ci): keep lark default feature without matrix bloat 2026-02-24 19:19:10 +08:00
Chummy
51d9d0d9e8 fix(channels): enable matrix+lark in default build features 2026-02-24 19:19:10 +08:00
Chummy
8f91f956fd feat(ci): complete security audit governance and resilient CI control lanes 2026-02-24 16:25:53 +08:00
Chummy
306cf16dc5
docs(ci): document workflow owner default allowlist 2026-02-24 16:03:01 +08:00
Chummy
d4849d333b
ci: enforce PR gate parity with push checks 2026-02-24 16:03:01 +08:00
aricredemption-ai
3b2009f15a
feat(lark): add mention_only group gating with bot open_id auto-discovery
(cherry picked from commit ef1f75640a)
2026-02-24 16:03:00 +08:00
Nguyen Minh Thai
77a3b39ff7
feat(tools): Use system default browser instead of hard-coded Brave Browser (#1453)
* ci(homebrew): prefer HOMEBREW_UPSTREAM_PR_TOKEN with fallback

* ci(homebrew): handle existing upstream remote and main base

* feat(tools): Use system default browser instead of hard-coded Brave Browser

---------

Co-authored-by: Will Sarg <12886992+willsarg@users.noreply.github.com>
2026-02-24 16:03:00 +08:00
Edvard Schøyen
15061f9605
feat(channels): add /new command to clear conversation history (#1417)
Adds a `/new` runtime chat command for Telegram and Discord that clears
the sender's conversation history without changing provider or model.
Useful for starting a fresh session when stale context causes issues.

Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-24 16:03:00 +08:00
argenis de la rosa
1a0e5547d7
fix(web): call doctor endpoint with authenticated POST 2026-02-24 16:02:59 +08:00
argenis de la rosa
50f537fa6a
docs(structure): add language-part-function navigation map 2026-02-24 16:02:59 +08:00
argenis de la rosa
f044237cc9
docs(macOS): add update and uninstall guide 2026-02-24 16:02:59 +08:00
Chummy
742aa0208f
fix(security): honor explicit command paths in allowed_commands 2026-02-24 16:02:59 +08:00
Chummy
b3b5055080 feat: replay custom provider api mode, route max_tokens, and lark image support 2026-02-24 15:59:49 +08:00
Chummy
666f1a7d10 feat(provider): add responses websocket transport fallback 2026-02-24 15:08:03 +08:00
Chummy
81b4680173 ci: add provider connectivity probes matrix and runbook
Implements scheduled/manual connectivity probes with contract-driven provider matrix, categorized failure policy, CI artifacts, and operator runbook.\n\nRefs RMN-5\nRefs RMN-6
2026-02-24 14:38:08 +08:00
Chummy
1caed16099 docs(ci): document workflow owner default allowlist 2026-02-24 14:02:42 +08:00