CodeWhale Agent
173fd00e27
feat(protocol): define Agent Fleet protocol types and event schema ( #3155 )
...
Adds with the durable, serializable
contract for the v0.8.60 Agent Fleet control plane:
- FleetRun, FleetTaskSpec, FleetWorkerSpec, FleetHostSpec
- FleetWorkerStatus and FleetInboxEntry
- FleetWorkerEvent envelope with tagged lifecycle payloads:
queued, leased, starting, running, model_wait, running_tool,
heartbeat, artifact, completed, failed, cancelled, interrupted,
stale, restarted, escalated
- FleetArtifactRef, FleetScorerSpec, FleetRetryPolicy,
FleetAlertPolicy, FleetReceipt, FleetScore
Types are additive (unknown fields ignored by existing consumers) and
use stable snake_case JSON names. Includes JSON round-trip tests.
Closes #3155 .
2026-06-12 11:02:14 -07:00
wavezhang
eac4139e52
feat: build static linux x64 binaries with musl ( #2903 )
...
* feat: build static linux x64 binaries with musl
Build codewhale-cli and codewhale-tui with x86_64-unknown-linux-musl
target in the CNB tag_push workflow to produce fully static Linux x64
binaries. Install musl-tools instead of libdbus-1-dev; keep toolchain
install and build in a single stage since CNB stages run in isolated
containers without persistent state.
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com >
* fix: gate keyring behind not(target_env = "musl") for static builds
When targeting x86_64-unknown-linux-musl, the keyring crate's
linux-native-sync-persistent feature pulls in libdbus-sys which
cannot link against musl. Gate the OS keyring dependency behind
not(target_env = "musl") so musl builds fall back to the
file-backed secret store instead.
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com >
---------
Co-authored-by: wavezhang <wavezhang@users.noreply.github.com >
Co-authored-by: Claude Opus 4.7 <noreply@anthropic.com >
2026-06-12 10:53:42 -07:00
Turisla
4e3e12eee7
feat(execpolicy): expose matched approval rule metadata ( #2971 )
2026-06-12 10:53:39 -07:00
Hanmiao Li
5d9b5f67cb
feat(bench): improve cli-compare harness with real Harbor integration ( #3009 )
...
- Match actual Harbor CLI interface (no invented flags)
- Proper BaseInstalledAgent subclass for Codex
- Robust token extraction from stream JSONL + transcript parsing
- Heuristic answer_len extraction (## Final Answer markers)
- Metadata capture: versions, git commit, platform, timestamp
- --regenerate walks existing run directories
- All missing fields explicit null, never zero
- Support multiple runs per task with run_idx tracking
The harness is designed to run:
harbor run --dataset terminal-bench@2.0:<task> --agent ... --model ...
for both codex and codewhale agents, then normalize the results.
2026-06-12 10:53:36 -07:00
cyq
38519552fd
feat(cli): track provider source and customize unsupported TUI errors ( #3011 )
2026-06-12 10:53:32 -07:00
cyq
b63287e653
feat(config): implement verbosity settings with normal and concise modes ( #3052 )
...
* feat(config): implement verbosity settings with normal and concise modes
* fix(config): wrap unsafe env calls in tests and fix clippy/fmt errors for CI
* perf(config): avoid verbosity prompt allocations
2026-06-12 10:53:29 -07:00
Gordon
5be5cd5a79
feat(i18n): localize ToolFamily labels (10 MessageIds) ( #2901 )
...
* feat(i18n): localize ToolFamily labels (10 MessageIds)
- localization.rs: Add 10 ToolFamily* MessageId variants + ALL_MESSAGE_IDS + all 7 locales
- tool_card.rs: tool_activity_label_for_name() accepts locale, uses tr() for labels
- footer_ui.rs, ui.rs: thread locale to tool_activity_label_for_name() callers
- Tests: 2 negative i18n tests + updated existing tests for new signatures
* chore: add .claude/ to gitignore
* fixup: make tool_display_label_for_name private + deduplicate family→MessageId mapping
---------
Co-authored-by: gordonlu <gordonlu@users.noreply.github.com >
2026-06-12 10:53:22 -07:00
dependabot[bot]
f8e6de926c
chore(deps): bump reqwest from 0.13.1 to 0.13.4 ( #3001 )
...
Bumps [reqwest](https://github.com/seanmonstar/reqwest ) from 0.13.1 to 0.13.4.
- [Release notes](https://github.com/seanmonstar/reqwest/releases )
- [Changelog](https://github.com/seanmonstar/reqwest/blob/master/CHANGELOG.md )
- [Commits](https://github.com/seanmonstar/reqwest/compare/v0.13.1...v0.13.4 )
---
updated-dependencies:
- dependency-name: reqwest
dependency-version: 0.13.4
dependency-type: direct:production
update-type: version-update:semver-patch
...
Signed-off-by: dependabot[bot] <support@github.com >
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-06-12 10:53:19 -07:00
dependabot[bot]
b8785403b2
chore(deps): bump rustls from 0.23.36 to 0.23.40 ( #3002 )
...
Bumps [rustls](https://github.com/rustls/rustls ) from 0.23.36 to 0.23.40.
- [Release notes](https://github.com/rustls/rustls/releases )
- [Changelog](https://github.com/rustls/rustls/blob/main/CHANGELOG.md )
- [Commits](https://github.com/rustls/rustls/compare/v/0.23.36...v/0.23.40 )
---
updated-dependencies:
- dependency-name: rustls
dependency-version: 0.23.40
dependency-type: direct:production
update-type: version-update:semver-patch
...
Signed-off-by: dependabot[bot] <support@github.com >
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-06-12 10:53:17 -07:00
dependabot[bot]
94456d728d
chore(deps): bump clap_complete from 4.5.65 to 4.6.5 ( #3003 )
...
Bumps [clap_complete](https://github.com/clap-rs/clap ) from 4.5.65 to 4.6.5.
- [Release notes](https://github.com/clap-rs/clap/releases )
- [Changelog](https://github.com/clap-rs/clap/blob/master/CHANGELOG.md )
- [Commits](https://github.com/clap-rs/clap/compare/clap_complete-v4.5.65...clap_complete-v4.6.5 )
---
updated-dependencies:
- dependency-name: clap_complete
dependency-version: 4.6.5
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>
2026-06-12 10:53:14 -07:00
Hanmiao Li
b291214cd2
fix(config): add separate siliconflow_cn provider config field with fallback ( #2893 ) ( #2895 )
...
Split SiliconflowCN into its own [providers.siliconflow_cn] TOML section
instead of silently ignoring [providers.siliconflow-CN] config.
- ProvidersToml / ProvidersConfig: add siliconflow_cn field with serde alias
- for_provider / for_provider_mut / provider_config_for: route SiliconflowCN
to the new field
- resolve_runtime_options_with_secrets: fallback siliconflow_cn → siliconflow
for api_key / base_url / model when unset
- deepseek_api_key: add config-file fallback for SiliconflowCn
- provider_config_key: update metadata to "siliconflow_cn"
- save_api_key_for: write SiliconflowCn keys to providers.siliconflow_cn
- docs/PROVIDERS.md, config.example.toml, scripts/check-provider-registry.py
2026-06-12 10:53:11 -07:00
Hanmiao Li
5e22753ee1
fix(tui): normalize macOS SUPER (Cmd) to CONTROL for keyboard shortcuts ( #2938 ) ( #2943 )
...
* fix(tui): normalize macOS SUPER (Cmd) to CONTROL for keyboard shortcuts (#2938 )
On macOS, terminal emulators may report Cmd (SUPER) instead of Ctrl
(CONTROL) for keyboard shortcuts, depending on the terminal app and
its configuration. This caused Ctrl+B, Ctrl+Alt+2, and other shortcuts
to be inconsistent.
Fix:
- Add normalize_macos_modifiers() in composer_ui.rs
- On macOS: map SUPER to CONTROL when CONTROL is not already set
- On other platforms: no-op
- Apply normalization at the key event entry point in ui.rs
Tests:
- normalize_macos_modifiers_maps_super_to_control
- normalize_macos_modifiers_preserves_existing_control
- normalize_macos_modifiers_leaves_alt_unchanged
* fix: strip SUPER from modifiers after normalization per review
* fix: gate macOS-specific modifier tests with #[cfg(target_os = "macos")]
2026-06-12 10:53:09 -07:00
New2Niu
2d81f91ea1
fix: codewhale update error: GitHub release downloads may be blocked or slow on this network ( #3006 )
...
Co-authored-by: lei <liulei@8531.cn >
2026-06-12 10:53:06 -07:00
cyq
b8be06d9ba
docs(prompt): clarify Constitution trust framing ( #3008 )
...
* docs(prompt): clarify Constitution trust framing
* docs(prompt): align trust standing wording
2026-06-12 10:53:03 -07:00
gus
24a91499e5
docs: add Upgrading from deepseek-tui section to README ( #3053 )
...
Co-authored-by: gus.guo <gus.guo@tec-do.com >
2026-06-12 10:53:01 -07:00
Hunter Bown
aa1ce527e7
feat(tui): add /plugins slash command ( #3169 )
...
Adds a /plugins [name] command to list discovered script plugin tools
and inspect their metadata (description, input schema, approval level,
path). Includes localization strings and unit tests.
Co-authored-by: CodeWhale Agent <codewhale-agent@hmbown.local >
2026-06-12 10:52:38 -07:00
Reid
1ac32df627
feat(tui): dispatch hotbar slots from number keys ( #3056 )
...
Wire hotbar key dispatch into the TUI event loop.
Bare 1-8 now fires the matching hotbar slot only when the composer is empty.
Alt+1 through Alt+8 fires the matching slot even when the composer has text.
Modal and overlay views keep ownership of those keys, and empty slots remain a
safe no-op.
2026-06-12 10:52:02 -07:00
Nightt
4968983339
fix(tools): apply strict mode per schema ( #3062 )
...
* fix: apply strict tool mode per schema
* fix: preserve optional strict schema fields
2026-06-12 10:51:58 -07:00
Claude
0181493c79
release: v0.8.58 — native Anthropic provider, hooks v2 JSON decisions, clickable sidebar, provider-aware subagent routing, model-fact prompt templating
...
Co-Authored-By: Claude <noreply@anthropic.com >
https://claude.ai/code/session_018zaP8vUfTAsrE38L6h6fw5
2026-06-10 23:06:44 -07:00
Hunter Bown
ce39b111cd
Merge PR #3054 from Hmbown: native Anthropic Messages API adapter
...
feat(client): native Anthropic Messages API adapter — cache_control, thinking blocks, tool streaming (#3014 )
2026-06-10 22:46:01 -07:00
Claude
d940b7821c
Merge origin/main into v0.8.58-3014-anthropic-adapter — keep #3024 Moonshot/Ollama dialect arms plus the #3014 Anthropic native-shaping arms in all three reasoning tiers; keep the #3014 Anthropic capability early-return while honoring the #3023 removal of the Openai/Atlascloud/Moonshot one; union claude + bare-id max_output rows
2026-06-11 05:45:51 +00:00
Hunter Bown
f87245ff5f
Merge PR #3034 from Hmbown: constitution refactor, Codex fixes, sidebar improvements
...
v0.8.58: Constitution refactor, Codex fixes, sidebar improvements
2026-06-10 22:39:31 -07:00
Claude
06f49af69f
Merge origin/main into v0.8.58-constitution — carry the #3025 model-fact placeholders ({context_window_note}/{subagent_economics}/{model_thinking_note}/{model_characteristics}) into constitution.md per the prompt-layer coordination note; union sidebar tests and add TaskPanelEntry.kind to #3028 test literals
2026-06-11 05:39:19 +00:00
Hunter Bown
5b47a2e3e0
Merge PR #3048 from Hmbown: parameterize model-specific facts in the base prompt
...
feat(prompts): parameterize model-specific facts — context window, pricing, thinking
2026-06-10 22:30:08 -07:00
Hunter Bown
186ebbb116
Merge PR #3050 from Hmbown: wire reasoning-effort for Atlascloud, Moonshot, Ollama dialects
...
fix(reasoning): wire reasoning-effort for Atlascloud, Moonshot, Ollama
2026-06-10 22:30:00 -07:00
Hunter Bown
a6d5824cee
Merge PR #3047 from Hmbown: model-based capability lookups for Moonshot/OpenAI/Atlascloud + bare-id registry rows
...
fix(providers): use model-based lookups for Moonshot/OpenAI/Atlascloud/Ollama capability
2026-06-10 22:29:52 -07:00
Hunter Bown
78ed3768bf
Merge PR #3046 from Hmbown: add Moonshot/Kimi to reasoning-content provider and model gates
...
fix(reasoning): add Moonshot/Kimi to reasoning-content provider and model support
2026-06-10 22:29:44 -07:00
Hunter Bown
18d5302da1
Merge PR #3045 from Hmbown: un-hardcode DeepSeek from subagent model validation — provider-aware router candidates
...
fix(subagent): un-hardcode DeepSeek from model validation — accept any provider id
2026-06-10 22:29:35 -07:00
Claude
3f2f154ad2
Merge origin/main into v0.8.58-3018-unhardcode-deepseek — append #3030 step-counter tests after the #3018 routing tests
2026-06-11 05:29:25 +00:00
Hunter Bown
e0b6441a26
Merge PR #3049 from Hmbown: hooks v2 — JSON decision contract, glob matchers, project-local hooks
...
feat(hooks): JSON decision contract, glob matchers, project-local hooks
2026-06-10 22:26:36 -07:00
Claude
d9dff6809c
Merge origin/main into v0.8.58-3026-hooks-v2 — keep both the #3026 hook fold helpers and the #3027 command_denies_tool gate in turn_loop
2026-06-11 05:26:27 +00:00
Hunter Bown
667e18888b
Merge PR #3040 from Hmbown: clickable sidebar rows — click-to-act on Tasks and Agents panels
...
feat(tui): clickable sidebar rows — click-to-act on Tasks and Agents panels
2026-06-10 22:23:38 -07:00
Claude
8a165cc49b
Merge origin/main into v0.8.58-3028-clickable-tui — union the sidebar test imports ( #3030 hover texts + #3028 row builders)
2026-06-11 05:23:29 +00:00
Hunter Bown
880346622b
Merge PR #3039 from Hmbown: OSC 8 out-of-band hyperlink infrastructure
...
feat(tui): OSC 8 out-of-band hyperlink infrastructure
2026-06-10 22:20:35 -07:00
Hunter Bown
6b01cccc65
Merge PR #3038 from Hmbown: make Ctrl+B directly background the active foreground shell
...
fix(tui): make Ctrl+B directly background the active foreground shell
2026-06-10 22:20:27 -07:00
Hunter Bown
d9c5dac55b
Merge PR #3037 from Hmbown: compact tool-call transcript rendering — suppress boilerplate cells
...
fix(tui): compact tool-call transcript rendering — suppress boilerplate
2026-06-10 22:20:18 -07:00
Hunter Bown
49890d1244
Merge PR #3036 from Hmbown: hide internal IDs from normal UI — stable labels for turns and agents
...
fix(tui): hide internal IDs from normal UI — stable labels for turns and agents
2026-06-10 22:20:06 -07:00
Claude
418ad5b744
Merge origin/main into v0.8.58-3030-hide-internal-ids — combine #3030 stable agent labels with #3033 AgentProgress redraw throttle (both kept in App state and the AgentProgress arm)
2026-06-11 05:19:57 +00:00
Hunter Bown
eb610c83ee
Merge PR #3035 from Hmbown: throttle AgentProgress redraws to prevent freeze under subagent load
...
fix(tui): throttle AgentProgress redraws to prevent freeze under subagent load
2026-06-10 22:11:17 -07:00
Hunter Bown
8fadd764d2
Merge PR #3042 from Hmbown: exec --allowed-tools, --disallowed-tools, --max-turns, --append-system-prompt
...
feat(exec): add --allowed-tools, --disallowed-tools, --max-turns, --append-system-prompt
2026-06-10 22:11:07 -07:00
Hunter Bown
20fa626fb8
Merge PR #3041 from Hmbown: harvest error-message fixes — better tool denial and provider errors
...
fix: harvest error-message fixes from PR #2933 — better tool denial + subagent conflict messages
2026-06-10 22:11:00 -07:00
Hunter Bown
b11d8d55c5
Merge PR #3044 from Hmbown: remote-smoke droplet loop — gh CLI, swapfile, agent-session bumps
...
feat(remote-smoke): bump to v0.8.57, add gh CLI, swapfile, agent-session.sh, autonomous loop docs
2026-06-10 22:10:51 -07:00
Hunter Bown
f68059b9b3
Merge PR #3043 from Hmbown: agent-task issue template, labels, and runner protocol
...
feat(docs): agent-task issue template, labels, and runner protocol
2026-06-10 22:10:42 -07:00
Claude
4cf9e52f19
ci: re-run after known Windows test flake (no code changes)
...
Co-Authored-By: Claude <noreply@anthropic.com >
https://claude.ai/code/session_018zaP8vUfTAsrE38L6h6fw5
2026-06-11 04:47:00 +00:00
Claude
ff6dca1d45
ci: re-run after known Windows test flake (no code changes)
...
Co-Authored-By: Claude <noreply@anthropic.com >
https://claude.ai/code/session_018zaP8vUfTAsrE38L6h6fw5
2026-06-11 04:46:58 +00:00
Claude
f55c54c487
ci: re-run after known Windows test flake (no code changes)
...
Co-Authored-By: Claude <noreply@anthropic.com >
https://claude.ai/code/session_018zaP8vUfTAsrE38L6h6fw5
2026-06-11 04:46:55 +00:00
Claude
1a61a79910
fix(hooks): pass the Windows cmd /C command line via raw_arg — Command::arg's CRT-style quoting inserted literal \" into hook commands, which cmd.exe does not unescape, so JSON decisions never parsed (hook_gate_* Windows failures)
...
Co-Authored-By: Claude <noreply@anthropic.com >
https://claude.ai/code/session_018zaP8vUfTAsrE38L6h6fw5
2026-06-11 04:46:05 +00:00
Claude
29f75dc19d
fix(lint): fold the sidebar click row lookup into the bounds let-chain — newer clippy (1.96) flags the nested if as collapsible_if and CI lints with -D warnings
...
Co-Authored-By: Claude <noreply@anthropic.com >
https://claude.ai/code/session_018zaP8vUfTAsrE38L6h6fw5
2026-06-11 04:42:18 +00:00
Claude
8284f395e6
test(integration): add signature field to ContentBlock::Thinking initializers and pattern in tests/ — the bins-only local run missed integration-test targets when the field landed
...
Co-Authored-By: Claude <noreply@anthropic.com >
https://claude.ai/code/session_018zaP8vUfTAsrE38L6h6fw5
2026-06-11 04:38:39 +00:00
Claude
f65d091c65
fix(lint): collapse nested if-let into a let-chain in codex responses reasoning shaping — newer clippy (1.96) flags collapsible_if on if-let nesting and CI lints with -D warnings
...
Co-Authored-By: Claude <noreply@anthropic.com >
https://claude.ai/code/session_018zaP8vUfTAsrE38L6h6fw5
2026-06-11 04:29:24 +00:00