fettpl
a871b28f85
fix(tools): use original headers for HTTP requests, redact only in display
...
sanitize_headers was replacing sensitive header values with
***REDACTED*** before passing them to the actual HTTP request,
breaking any authenticated API call. Split into parse_headers
(preserves original values for the request) and
redact_headers_for_display (returns redacted copy for output/logging).
Closes #348
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-16 16:59:05 +01:00
Will Sarg
7a66ce15c5
ci: route trusted security and workflow checks to self-hosted ( #370 )
2026-02-16 10:58:45 -05:00
Will Sarg
13d411cd2b
ci: route trusted pushes to self-hosted runner ( #369 )
2026-02-16 10:56:53 -05:00
cd slash
5b19502bd9
fix(providers): correct Fireworks AI base URL to include /v1 path ( #346 )
...
The Fireworks API endpoint requires /v1/chat/completions, but the
base URL was missing the /v1 path segment, causing 404 errors and
triggering a broken responses fallback.
Fix: Add /v1 to base URL so correct endpoint is built:
https://api.fireworks.ai/inference/v1/chat/completions
2026-02-16 23:53:34 +08:00
Chummy
e4944a5fc2
feat(cost): add budget tracking core and harden storage reliability ( #292 )
2026-02-16 23:40:47 +08:00
Chummy
8882746ced
fix(onboard): refresh MiniMax defaults and endpoint ( #299 )
2026-02-16 23:40:44 +08:00
Chummy
3fd901a5ec
fix(build): reduce release-build memory pressure on low-RAM devices ( #303 )
2026-02-16 23:40:40 +08:00
Chummy
23b0f360c2
fix(composio): align v3 execute path and honor configured entity_id ( #322 )
2026-02-16 23:40:37 +08:00
Chummy
a403b5f5b1
feat(onboard): add provider model refresh command with TTL cache ( #323 )
2026-02-16 23:40:33 +08:00
Chummy
80da3e64e9
feat: unify scheduled tasks from #337 and #338 with security-first integration
...
Unifies scheduled task capabilities and consolidates overlapping implementations from #337 and #338 into a single security-first integration path.\n\nCo-authored-by: Edvard <ecschoye@stud.ntnu.no>\nCo-authored-by: stawky <stakeswky@gmail.com>
2026-02-16 23:38:29 +08:00
Will Sarg
f0373f2db1
docs(agents): clarify branch lifecycle and worktree workflow ( #344 )
2026-02-16 09:37:28 -05:00
Chummy
c842ece12c
feat(onboard): refresh model discovery and canonicalize provider aliases ( #341 )
...
* feat(onboard): add model refresh command with ttl cache
* fix(onboard): refresh curated models and canonicalize provider aliases
* fix(channels): align agent_turn call signature
* fix(channels): call run_tool_call_loop for stable channel runtime
2026-02-16 22:32:30 +08:00
Chummy
0995c57776
Merge pull request #321 from stakeswky/feat/model-failover-auth-rotation
...
feat(providers): model failover chain + API key rotation
2026-02-16 22:27:32 +08:00
Chummy
dea02a6915
Merge pull request #318 from zeroclaw-labs/fix/issue-309-composio-v3-endpoint
...
fix: update Composio API endpoint from v2 to v3
2026-02-16 22:26:40 +08:00
Will Sarg
b61d33aa1c
feat(dev): add local dockerized ci workflow ( #342 )
2026-02-16 09:10:39 -05:00
Chummy
8bcb5efa8a
fix(ci): align reliable provider tests with ChatResponse
2026-02-16 22:06:40 +08:00
Chummy
f2c73bacf8
Merge pull request #343 from zeroclaw-labs/chore-codeowner-route-ci-docs
...
chore(codeowners): route ci/docs surfaces to @chumyin
2026-02-16 22:00:57 +08:00
Chummy
1c3f4ec804
`chore(codeowners): route ci/docs surfaces to @chumyin
...
add route ci/docs surfaces to @chumyin to view directly.
2026-02-16 21:59:38 +08:00
stawky
9a5db46cf7
feat(providers): model failover chain + API key rotation
...
- Add model_fallbacks and api_keys to ReliabilityConfig
- Implement per-model fallback chain in ReliableProvider
- Add API key rotation on auth failures (401/403)
- Add retry-after header parsing and exponential backoff
- Integrate failover into chat_with_system and chat_with_history
- 20 unit tests covering failover, rotation, and retry logic
2026-02-16 21:59:35 +08:00
Chummy
ef41f2ab10
chore(fmt): format composio conflict-resolution tests
2026-02-16 21:54:19 +08:00
Chummy
fa9cdabbcb
Merge pull request #340 from chumyin/fix/agent-turn-provider-name-signature
...
fix(agent): align channel agent_turn signature with provider label
2026-02-16 21:51:17 +08:00
Chummy
593dbb3641
fix(agent): align agent_turn signature with channel provider label
2026-02-16 21:48:49 +08:00
argenis de la rosa
58693ae5a1
fix: update Composio API endpoint from v2 to v3
...
Fixes #309 - Composio v2 endpoint has been discontinued. Updated to v3
endpoint which is the current supported version.
Composio v2 API is no longer available, causing all Composio tool
executions to fail. This updates the base URL to use v3.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-16 21:40:22 +08:00
Chummy
fa0c77385c
Merge pull request #266 from chumyin/fix/provider-chatresponse-unification
...
fix(provider): complete ChatResponse integration across runtime surfaces
2026-02-16 21:21:43 +08:00
Will Sarg
b76a3879a9
fix(ci): mitigate GitHub API rate-limit failures ( #334 )
...
* fix(ci): mitigate GitHub API rate-limit failures in workflows
* fix(ci): resolve signature drift blocking Docker smoke
2026-02-16 08:05:52 -05:00
dependabot[bot]
07dc8b3927
build(deps): bump rusqlite from 0.32.1 to 0.38.0 ( #315 )
...
Bumps [rusqlite](https://github.com/rusqlite/rusqlite ) from 0.32.1 to 0.38.0.
- [Release notes](https://github.com/rusqlite/rusqlite/releases )
- [Changelog](https://github.com/rusqlite/rusqlite/blob/master/Changelog.md )
- [Commits](https://github.com/rusqlite/rusqlite/compare/v0.32.1...v0.38.0 )
---
updated-dependencies:
- dependency-name: rusqlite
dependency-version: 0.38.0
dependency-type: direct:production
update-type: version-update:semver-minor
...
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Will Sarg <12886992+willsarg@users.noreply.github.com>
2026-02-16 07:45:00 -05:00
dependabot[bot]
52f62dc24c
build(deps): bump prometheus from 0.13.4 to 0.14.0 ( #316 )
...
Bumps [prometheus](https://github.com/tikv/rust-prometheus ) from 0.13.4 to 0.14.0.
- [Changelog](https://github.com/tikv/rust-prometheus/blob/master/CHANGELOG.md )
- [Commits](https://github.com/tikv/rust-prometheus/compare/v0.13.4...v0.14.0 )
---
updated-dependencies:
- dependency-name: prometheus
dependency-version: 0.14.0
dependency-type: direct:production
update-type: version-update:semver-minor
...
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Will Sarg <12886992+willsarg@users.noreply.github.com>
2026-02-16 07:44:57 -05:00
dependabot[bot]
debe24038c
build(deps): bump toml from 0.8.23 to 1.0.1+spec-1.1.0 ( #317 )
...
Bumps [toml](https://github.com/toml-rs/toml ) from 0.8.23 to 1.0.1+spec-1.1.0.
- [Commits](https://github.com/toml-rs/toml/compare/toml-v0.8.23...toml-v1.0.1 )
---
updated-dependencies:
- dependency-name: toml
dependency-version: 1.0.1+spec-1.1.0
dependency-type: direct:production
update-type: version-update:semver-major
...
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Will Sarg <12886992+willsarg@users.noreply.github.com>
2026-02-16 07:44:54 -05:00
dependabot[bot]
444dee978a
build(deps): bump dialoguer from 0.11.0 to 0.12.0 ( #319 )
...
Bumps [dialoguer](https://github.com/console-rs/dialoguer ) from 0.11.0 to 0.12.0.
- [Release notes](https://github.com/console-rs/dialoguer/releases )
- [Changelog](https://github.com/console-rs/dialoguer/blob/main/CHANGELOG-OLD.md )
- [Commits](https://github.com/console-rs/dialoguer/compare/v0.11.0...v0.12.0 )
---
updated-dependencies:
- dependency-name: dialoguer
dependency-version: 0.12.0
dependency-type: direct:production
update-type: version-update:semver-minor
...
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Will Sarg <12886992+willsarg@users.noreply.github.com>
2026-02-16 07:44:51 -05:00
dependabot[bot]
d451af1237
build(deps): bump axum from 0.7.9 to 0.8.8 ( #320 )
...
Bumps [axum](https://github.com/tokio-rs/axum ) from 0.7.9 to 0.8.8.
- [Release notes](https://github.com/tokio-rs/axum/releases )
- [Changelog](https://github.com/tokio-rs/axum/blob/main/CHANGELOG.md )
- [Commits](https://github.com/tokio-rs/axum/compare/axum-v0.7.9...axum-v0.8.8 )
---
updated-dependencies:
- dependency-name: axum
dependency-version: 0.8.8
dependency-type: direct:production
update-type: version-update:semver-minor
...
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Will Sarg <12886992+willsarg@users.noreply.github.com>
2026-02-16 07:44:47 -05:00
dependabot[bot]
bd137c89fb
build(deps): bump DavidAnson/markdownlint-cli2-action from 20 to 22 ( #312 )
...
Bumps [DavidAnson/markdownlint-cli2-action](https://github.com/davidanson/markdownlint-cli2-action ) from 20 to 22.
- [Release notes](https://github.com/davidanson/markdownlint-cli2-action/releases )
- [Commits](https://github.com/davidanson/markdownlint-cli2-action/compare/v20...v22 )
---
updated-dependencies:
- dependency-name: DavidAnson/markdownlint-cli2-action
dependency-version: '22'
dependency-type: direct:production
update-type: version-update:semver-major
...
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-02-16 07:42:22 -05:00
dependabot[bot]
1ec8b7e57a
build(deps): bump actions/github-script from 7 to 8 ( #313 )
...
Bumps [actions/github-script](https://github.com/actions/github-script ) from 7 to 8.
- [Release notes](https://github.com/actions/github-script/releases )
- [Commits](https://github.com/actions/github-script/compare/v7...v8 )
---
updated-dependencies:
- dependency-name: actions/github-script
dependency-version: '8'
dependency-type: direct:production
update-type: version-update:semver-major
...
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-02-16 07:42:10 -05:00
dependabot[bot]
8338b9c7a7
build(deps): bump actions/upload-artifact from 4 to 6 ( #314 )
...
Bumps [actions/upload-artifact](https://github.com/actions/upload-artifact ) from 4 to 6.
- [Release notes](https://github.com/actions/upload-artifact/releases )
- [Commits](https://github.com/actions/upload-artifact/compare/v4...v6 )
---
updated-dependencies:
- dependency-name: actions/upload-artifact
dependency-version: '6'
dependency-type: direct:production
update-type: version-update:semver-major
...
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-02-16 07:42:07 -05:00
Chummy
05de9003f1
Merge pull request #332 from chumyin/fix/labeler-collapse-all-prefixes
...
ci(labeler): collapse duplicate module labels for all prefixes
2026-02-16 20:23:21 +08:00
Chummy
5410ce4afd
ci(labeler): compact duplicate module labels across all prefixes
2026-02-16 20:20:55 +08:00
Chummy
1851cf58a2
Merge pull request #328 from chumyin/fix/labeler-compact-noisy-modules
...
ci(labeler): dedupe noisy module labels and improve label UX
2026-02-16 20:06:08 +08:00
Chummy
140dad1f72
style(labeler): lock low-saturation ordered module palette
2026-02-16 20:01:36 +08:00
Chummy
3a25f4fa3a
ci(labeler): enforce ordered gradient palette and compact module labels
2026-02-16 19:52:14 +08:00
Chummy
004fc4590f
ci(labeler): compact noisy module labels for tool/provider/channel
2026-02-16 19:49:45 +08:00
Chummy
389496823d
ci(labeler): dedupe labels, add hover rules, and tune low-sat palette ( #6 )
...
* ci(labeler): dedupe scope labels and prioritize risk/size
* ci(labeler): add hover rule descriptions and refresh label palette
* style(labeler): reduce label saturation for better readability
2026-02-16 19:46:22 +08:00
chumyin
dedb465377
test(telegram): ensure newline split case exceeds max length
2026-02-16 19:36:39 +08:00
chumyin
2d6ec2fb71
fix(rebase): resolve PR #266 conflicts against latest main
2026-02-16 19:33:04 +08:00
chumyin
34306e32d8
fix(provider): complete ChatResponse integration across runtime surfaces
2026-02-16 19:18:12 +08:00
chumyin
3b4a4de457
refactor(provider): unify Provider responses with ChatResponse
...
- Switch Provider trait methods to return structured ChatResponse
- Map OpenAI-compatible tool_calls into shared ToolCall type
- Update reliable/router wrappers and provider tests for new interface
- Make agent loop prefer structured tool calls with text fallback parsing
- Adapt gateway replies to structured responses with safe tool-call fallback
2026-02-16 19:16:22 +08:00
Mgrsc
b3fcdad3b5
fix: use consistent <tool_call> tag in channel system prompt ( #305 )
...
The tool use protocol in channels/mod.rs was using <invoke> tags,
but the parser in agent/loop_.rs only recognizes <tool_call> tags.
This ensures consistency across all entry points.
2026-02-16 05:59:40 -05:00
Abdul Samad
4fd1408034
fix(telegram): add message splitting, timeout, and validation fixes ( #246 )
...
High-priority fixes:
- Message length validation and splitting (4096 char limit)
- Empty chat_id validation to prevent silent failures
- Health check timeout (5s) to prevent service hangs
Testing infrastructure:
- Comprehensive test suite (20+ automated tests)
- Quick smoke test script
- Test message generator
- Complete testing documentation
All changes are backward compatible.
Co-authored-by: Claude Sonnet 4.5 <noreply@anthropic.com>
2026-02-16 05:59:11 -05:00
mai1015
50f508766f
feat: add verbose logging and complete observability ( #251 )
2026-02-16 05:59:07 -05:00
Chummy
6d56a040ce
docs: strengthen collaboration governance and AGENTS engineering protocol ( #263 )
...
* docs: harden collaboration policy and review automation
* ci(docs): remove unsupported lychee --exclude-mail flag
* docs(governance): reduce automation side-effects and tighten risk controls
* docs(governance): add backlog pruning and supersede protocol
* docs(agents): codify engineering principles and risk-tier workflow
* docs(readme): add centered star history section at bottom
* docs(agents): enforce privacy-safe and neutral test wording
* docs(governance): enforce privacy-safe and neutral collaboration checks
* fix(ci): satisfy rustfmt and discord schema test fields
* docs(governance): require ZeroClaw-native identity wording
* docs(agents): add ZeroClaw identity-safe naming palette
* docs(governance): codify code naming and architecture contracts
* docs(contributing): add naming and architecture good/bad examples
* docs(pr): reduce checkbox TODOs and shift to label-first metadata
* docs(pr): remove duplicate collaboration track field
* ci(labeler): auto-derive module labels and expand provider hints
* ci(labeler): auto-apply trusted contributor on PRs and issues
* fix(ci): apply rustfmt updates from latest main
* ci(labels): flatten namespaces and add contributor tiers
* chore: drop stale rustfmt-only drift
* ci: scope Rust and docs checks by change set
* ci: exclude non-markdown docs from docs-quality targets
* ci: satisfy actionlint shellcheck output style
* ci(labels): auto-correct manual contributor tier edits
* ci(labeler): auto-correct risk label edits
* ci(labeler): auto-correct size label edits
---------
Co-authored-by: Chummy <183474434+chumyin@users.noreply.github.com>
2026-02-16 05:59:04 -05:00
Chummy
b5d9f72023
test(channels): neutralize UTF-8 truncation regression fixture ( #289 )
...
* test(channels): neutralize UTF-8 truncation regression fixture
* fix(ci): resolve fmt drift and discord test config init
2026-02-16 05:58:35 -05:00
Argenis
3231a61323
test: add comprehensive recovery tests for agent loop ( #288 )
...
Add recovery test coverage for all edge cases and failure scenarios
in the agentic loop, addressing the missing test coverage for
recovery use cases.
Tool Call Parsing Edge Cases:
- Empty tool_result tags
- Empty tool_calls arrays
- Whitespace-only tool names
- Empty string arguments
History Management:
- Trimming without system prompt
- Role ordering consistency after trim
- Only system prompt edge case
Arguments Parsing:
- Invalid JSON string fallback
- None arguments handling
- Null value handling
JSON Extraction:
- Empty input handling
- Whitespace only input
- Multiple JSON objects
- JSON arrays
Tool Call Value Parsing:
- Missing name field
- Non-OpenAI format
- Empty tool_calls array
- Missing tool_calls field fallback
- Top-level array format
Constants Validation:
- MAX_TOOL_ITERATIONS bounds (prevent runaway loops)
- MAX_HISTORY_MESSAGES bounds (prevent memory bloat)
Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-16 05:58:32 -05:00