Commit graph

510 commits

Author SHA1 Message Date
Argenis
dc5a85c85c
fix: use 256-bit entropy for pairing tokens (#351)
Merges #413
2026-02-16 13:48:03 -05:00
Chummy
b161fff9ef
chore(ci): align lint gate and add strict audit path (#410) 2026-02-17 01:36:17 +08:00
Chummy
74c0c7340b
Revert "fix(build): avoid release OOM on 1GB hosts (#404)" (#407)
This reverts commit 0456f14a11.
2026-02-17 01:34:11 +08:00
Will Sarg
24bf116216
docs(ci): add allowlist export controls and sweep finding (#408) 2026-02-16 12:32:05 -05:00
Chummy
0456f14a11
fix(build): avoid release OOM on 1GB hosts (#404) 2026-02-17 01:27:24 +08:00
Will Sarg
90deb8fd5e
docs(ci): define phase-1 actions source allowlist policy (#405) 2026-02-16 12:26:10 -05:00
Chummy
40e592ffed
Merge pull request #403 from zeroclaw-labs/docs/pr-template-supersede
docs(pr-template): require supersede attribution details
2026-02-17 01:20:35 +08:00
Chummy
bbcef7ddeb docs(pr-template): require supersede attribution details 2026-02-17 01:19:13 +08:00
Chummy
50c1dadd17
style(labeler): brighten semantic colors and unify contributor highlight (#402) 2026-02-17 01:16:52 +08:00
Chummy
4264c3bb21
Merge pull request #397 from elonfeng/feat/dingtalk-channel
feat(channels): add DingTalk channel via Stream Mode
2026-02-17 01:11:12 +08:00
Chummy
ec39009048
Merge pull request #396 from fettpl/fix/365-release-signatures
ci: add cosign keyless signing for release artifacts
2026-02-17 01:11:06 +08:00
Chummy
ca528325eb
Merge pull request #394 from fettpl/fix/364-env-example
docs: add .env.example for local secret handling
2026-02-17 01:11:01 +08:00
Chummy
4ede1c95ed
Merge pull request #392 from fettpl/fix/362-pin-cargo-audit
ci: pin cargo-audit to 0.22.1 in dev CI Dockerfile
2026-02-17 01:10:56 +08:00
Chummy
19d78882a5
Merge pull request #388 from fettpl/fix/360-docker-resource-limits
ops: add resource limits to docker-compose.yml
2026-02-17 01:10:48 +08:00
Chummy
0cfc1a2ad4
Merge pull request #387 from fettpl/fix/359-pin-docker-images
ci: pin Docker base images to SHA256 digests
2026-02-17 01:10:43 +08:00
Chummy
709152e900
Merge pull request #385 from fettpl/fix/357-pin-actions-sha
ci: pin all GitHub Actions to full SHA digests
2026-02-17 01:10:32 +08:00
Chummy
9fbd8c7f57
Merge pull request #382 from fettpl/fix/356-gateway-error-leaks
fix(security): stop leaking serde parse details in gateway error responses
2026-02-17 01:10:27 +08:00
Chummy
2f57499a39
Merge pull request #379 from fettpl/fix/354-file-read-rate-limit
fix(security): move record_action before canonicalize in file_read
2026-02-17 01:10:16 +08:00
fettpl
dc86be4939 Merge remote-tracking branch 'origin/main' into fix/360-docker-resource-limits 2026-02-16 18:08:10 +01:00
fettpl
34c044766f Merge remote-tracking branch 'origin/main' into fix/359-pin-docker-images 2026-02-16 18:08:10 +01:00
Chummy
f13ce909c4
Merge pull request #274 from mai1015/feat/refactor-agent-loop
feat(providers): add native tool-calling for OpenRouter/Anthropic and align provider tests with simple_chat
2026-02-17 01:06:56 +08:00
Chummy
88de2555ab
Merge pull request #391 from fettpl/fix/361-browser-security
security(browser): harden SSRF blocking and block file:// URLs
2026-02-17 01:06:50 +08:00
Chummy
e005b6d9e4 fix(rebase): unify agent config and remove duplicate fields 2026-02-17 01:01:57 +08:00
Chummy
413ecfd143 fix(rebase): resolve main drift and restore CI contracts 2026-02-17 01:01:57 +08:00
Chummy
b2dd3582a4 fix(ci): align reliable tests with simple_chat contract 2026-02-17 01:01:56 +08:00
mai1015
dc5e14d7d2 refactor: improve code formatting and structure across multiple files 2026-02-17 01:01:56 +08:00
mai1015
b341fdb368 feat: add agent structure and improve tooling for provider 2026-02-17 01:01:56 +08:00
Chummy
98822498fb
Merge pull request #398 from zeroclaw-labs/docs/agents-supersede-commit-template
docs(agents): add superseded-PR commit message template
2026-02-17 01:01:55 +08:00
Chummy
dbff1b40b1 docs(agents): add superseded-PR commit message template 2026-02-17 01:00:39 +08:00
fettpl
3702449ff0 ci: whitelist lxc-ci self-hosted runner label for actionlint
Add actionlint.yaml config to declare lxc-ci as a known custom label
for self-hosted runners, fixing the actionlint CI check.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-16 17:58:42 +01:00
Chummy
e2c966d31e
Merge pull request #389 from reidliu41/add-qwen
feat(provider): add Qwen/DashScope provider with multi-region support
2026-02-17 00:58:04 +08:00
Chummy
e6d79283d1
Merge pull request #378 from fettpl/fix/353-rate-limiter-memory
fix(gateway): add periodic sweep to SlidingWindowRateLimiter
2026-02-17 00:57:38 +08:00
fettpl
fed1997f62 ci: add cosign keyless signing for release artifacts
- Add sigstore/cosign keyless signing to the release workflow
- Each artifact gets a detached .sig signature and .pem certificate
- Uses GitHub Actions OIDC for keyless signing (no secret management)
- Adds id-token: write permission for OIDC token generation
- Signatures and certificates are uploaded alongside binaries

Users can verify artifacts with:
  cosign verify-blob --certificate <file>.pem --signature <file>.sig \
    --certificate-oidc-issuer=https://token.actions.githubusercontent.com \
    --certificate-identity-regexp="github.com/zeroclaw-labs/zeroclaw" \
    <file>

Closes #365

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-16 17:55:40 +01:00
fettpl
3cdc6b6ebd docs: add .env.example for local secret handling
Provide a template with all recognized environment variables so
developers can set up their local .env without guessing.
The actual .env is already in .gitignore.

Closes #364

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-16 17:54:06 +01:00
elonf
9463bf08a4 feat(channels): add DingTalk channel via Stream Mode
Implement DingTalk messaging channel using the official Stream Mode
WebSocket protocol with per-message session webhook replies.

- Add DingTalkChannel with send/listen/health_check support
- Add DingTalkConfig (client_id, client_secret, allowed_users)
- Integrate with onboard wizard, integrations registry, and channel
  list/doctor commands
- Include unit tests for user allowlist rules and config serialization
2026-02-17 00:53:13 +08:00
fettpl
47e5483ade ci: pin cargo-audit to 0.22.1 in dev CI Dockerfile
Match the version pinned in the security workflow to ensure
reproducible CI builds.

Closes #362

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-16 17:50:17 +01:00
fettpl
882defef12 security(browser): harden SSRF blocking and block file:// URLs
- Block file:// URLs which bypassed all SSRF and domain-allowlist
  controls, enabling arbitrary local file exfiltration via browser
- Harden is_private_host() to match http_request.rs coverage:
  multicast, broadcast, reserved (240/4), shared address space
  (100.64/10), documentation IPs, benchmarking IPs
- Add .localhost subdomain and .local mDNS TLD blocking
- Extract is_non_global_v4() and is_non_global_v6() helpers

Closes #361

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-16 17:49:21 +01:00
Chummy
c11c569ddd
Merge pull request #377 from fettpl/fix/352-ssrf-ip-blocking
fix(security): block multicast/broadcast/reserved IPs in SSRF protection
2026-02-17 00:47:46 +08:00
Chummy
def9fe4e23
Merge pull request #390 from zeroclaw-labs/docs/agents-supersede-template
docs(agents): add superseded-PR title/body template
2026-02-17 00:47:24 +08:00
Chummy
44ef48f3c6 docs(agents): add superseded-PR title/body template 2026-02-17 00:46:01 +08:00
fettpl
ac5cce4ec5 ops: add resource limits to docker-compose.yml
Add CPU and memory constraints to prevent runaway resource consumption:
- Limits: 2 CPUs, 2 GB memory
- Reservations: 0.5 CPUs, 512 MB memory

Closes #360

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-16 17:43:00 +01:00
reidliu41
6bb9bc47c0 feat(provider): add Qwen/DashScope provider with multi-region support
- Add Alibaba Qwen as an OpenAI-compatible provider via DashScope API
- Support three regional endpoints: China (Beijing), Singapore, and US (Virginia)
- All regions share a single `DASHSCOPE_API_KEY` environment variable

| Config Value | Region | Base URL |
|---|---|---|
| `qwen` / `dashscope` | China (Beijing) | `dashscope.aliyuncs.com/compatible-mode/v1` |
| `qwen-intl` / `dashscope-intl` | Singapore | `dashscope-intl.aliyuncs.com/compatible-mode/v1` |
| `qwen-us` / `dashscope-us` | US (Virginia) | `dashscope-us.aliyuncs.com/compatible-mode/v1` |
2026-02-17 00:42:53 +08:00
fettpl
38f6339a83 ci: pin Docker base images to SHA256 digests
Pin all FROM images in Dockerfile and dev/ci/Dockerfile to their
current SHA256 manifest digests for reproducible builds.

- rust:1.93-slim-trixie → @sha256:9663b80a...
- busybox:latest → busybox:1.37@sha256:b3255e7d...
- debian:trixie-slim → @sha256:f6e2cfac...
- gcr.io/distroless/cc-debian13:nonroot → @sha256:84fcd3c2...
- rust:1.92-slim → @sha256:bf3368a9...

Closes #359

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-16 17:42:05 +01:00
Chummy
02decd309f fix(security): tighten SSRF IP classification for docs ranges 2026-02-17 00:41:48 +08:00
ehu shubham shaw
de3ec87d16
Ehu shubham shaw contribution --> Hardware support (#306)
* feat: add ZeroClaw firmware for ESP32 and Nucleo

* Introduced new firmware for ZeroClaw on ESP32 and Nucleo-F401RE, enabling JSON-over-serial communication for GPIO control.
* Added `zeroclaw-esp32` with support for commands like `gpio_read` and `gpio_write`, along with capabilities reporting.
* Implemented `zeroclaw-nucleo` firmware with similar functionality for STM32, ensuring compatibility with existing ZeroClaw protocols.
* Updated `.gitignore` to include new firmware targets and added necessary dependencies in `Cargo.toml` for both platforms.
* Created README files for both firmware projects detailing setup, build, and usage instructions.

Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>

* feat: enhance hardware peripheral support and documentation

- Added `Peripheral` trait implementation in `src/peripherals/` to manage hardware boards (STM32, RPi GPIO).
- Updated `AGENTS.md` to include new extension points for peripherals and their configuration.
- Introduced comprehensive documentation for adding boards and tools, including a quick start guide and supported boards.
- Enhanced `Cargo.toml` to include optional dependencies for PDF extraction and peripheral support.
- Created new datasheets for Arduino Uno, ESP32, and Nucleo-F401RE, detailing pin aliases and GPIO usage.
- Implemented new tools for hardware memory reading and board information retrieval in the agent loop.

This update significantly improves the integration and usability of hardware peripherals within the ZeroClaw framework.

* feat: add ZeroClaw firmware for ESP32 and Nucleo

* Introduced new firmware for ZeroClaw on ESP32 and Nucleo-F401RE, enabling JSON-over-serial communication for GPIO control.
* Added `zeroclaw-esp32` with support for commands like `gpio_read` and `gpio_write`, along with capabilities reporting.
* Implemented `zeroclaw-nucleo` firmware with similar functionality for STM32, ensuring compatibility with existing ZeroClaw protocols.
* Updated `.gitignore` to include new firmware targets and added necessary dependencies in `Cargo.toml` for both platforms.
* Created README files for both firmware projects detailing setup, build, and usage instructions.

Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>

* feat: enhance hardware peripheral support and documentation

- Added `Peripheral` trait implementation in `src/peripherals/` to manage hardware boards (STM32, RPi GPIO).
- Updated `AGENTS.md` to include new extension points for peripherals and their configuration.
- Introduced comprehensive documentation for adding boards and tools, including a quick start guide and supported boards.
- Enhanced `Cargo.toml` to include optional dependencies for PDF extraction and peripheral support.
- Created new datasheets for Arduino Uno, ESP32, and Nucleo-F401RE, detailing pin aliases and GPIO usage.
- Implemented new tools for hardware memory reading and board information retrieval in the agent loop.

This update significantly improves the integration and usability of hardware peripherals within the ZeroClaw framework.

* feat: Introduce hardware auto-discovery and expanded configuration options for agents, hardware, and security.

* chore: update dependencies and improve probe-rs integration

- Updated `Cargo.lock` to remove specific version constraints for several dependencies, including `zerocopy`, `syn`, and `strsim`, allowing for more flexibility in version resolution.
- Upgraded `bincode` and `bitfield` to their latest versions, enhancing serialization and memory management capabilities.
- Updated `Cargo.toml` to reflect the new version of `probe-rs` from `0.24` to `0.30`, improving hardware probing functionality.
- Refactored code in `src/hardware` and `src/tools` to utilize the new `SessionConfig` for session management in `probe-rs`, ensuring better compatibility and performance.
- Cleaned up documentation in `docs/datasheets/nucleo-f401re.md` by removing unnecessary lines.

* fix: apply cargo fmt

* docs: add hardware architecture diagram.

---------

Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-16 11:40:10 -05:00
Chummy
b36f23784a
fix(build): harden rustls dependency path for Linux builds (#275) 2026-02-17 00:39:28 +08:00
fettpl
4aaa0444c9 ci: whitelist lxc-ci self-hosted runner label for actionlint
Add actionlint.yaml config to declare lxc-ci as a known custom label
for self-hosted runners, fixing the actionlint CI check.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-16 17:39:14 +01:00
fettpl
91ae151548 style: fix rustfmt formatting in SSRF tests
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-16 17:35:30 +01:00
Chummy
3234159c6c
chore(clippy): clear warning backlog and harden conversions (#383) 2026-02-17 00:32:33 +08:00
Chummy
a91516df7a
Merge pull request #368 from fettpl/fix/349-email-bounded-seen-set
fix(channels): bound email seen_messages set to prevent memory leak
2026-02-17 00:32:29 +08:00