mirror of
https://github.com/codewhale-hq/Codewhale.git
synced 2026-11-11 01:51:34 -10:00
fix(shell): accept Windows verbatim-path operands; changelog receipt for C3
Read-only Scout shell operands are judged by resolved location, but Windows Path::canonicalize returns verbatim device paths (\\\\?\\C:\\...) that Path::is_absolute does not recognize, so every canonical absolute in-workspace operand fell into the shape refusal on Windows (CI: readonly_operands_are_workspace_bounded_and_symlink_aware and read_only_inspection_roles_execute_pwd_and_absolute_git_log). Strip the verbatim prefix before classification; the stripped form resolves to the same location, so location-based judgement is unchanged and unix hosts stay fail-closed for such spellings. Also add the missing CHANGELOG receipt for the C3 cache-hit-rate feature (DSH #3) and resync crates/tui/CHANGELOG.md, clearing the Version drift check.
This commit is contained in:
1 parent
0098062ed1
commit
42857108ff
3 files changed
+32
No files matched your search
@@ -30,6 +30,10 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
|
||||
self-updater refuses to fight an Omarchy/package-manager installation.
|
||||
- Added a Fleet run-wide cost/token usage ceiling (R6, #5567): an accumulator
|
||||
plus admission gate and alert bound a whole run's spend across workers.
|
||||
- Added the real provider cache hit rate to `/context` (C3, DSH #3): the
|
||||
token-weighted provider-reported rate from the same telemetry `/cache`
|
||||
aggregates, plus an honest "no cache telemetry yet" state when nothing is
|
||||
recorded.
|
||||
- Added per-step cost movement: `TurnUsage` receipts are priced as they land
|
||||
so the live cost surface moves during long agentic turns instead of only at
|
||||
`TurnComplete` (#5578), and the footer now honestly shows `cost: unknown`
|
||||
|
||||
@@ -9,6 +9,20 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
|
||||
|
||||
### Added
|
||||
|
||||
- Added the managed Chat relay: account-owned Chat commands now execute on the
|
||||
native runtime thread engine through a new `runtime_chat_relay` module
|
||||
instead of a second execution path. Each Chat thread is a dedicated,
|
||||
isolated runtime thread with an empty model-visible tool allowlist, a
|
||||
chat-only system prompt, and no workspace, memory, skill, credential, or
|
||||
local-path context; the active interactive TUI thread is never reused. The
|
||||
relay keeps one durable state file per scope behind a session-wide owner
|
||||
lock, binds a saved session permanently to its first remote target, replays
|
||||
exact duplicate commands from retained results instead of starting a second
|
||||
inference turn, terminalizes orphaned reservations on restart, and rejects
|
||||
(never queues into) a busy local Work turn with an immediate retryable
|
||||
result. Stop commands require the exact run and turn identity, and a worker
|
||||
aborts on any account or target mismatch during token refresh.
|
||||
|
||||
- Added a verified Omarchy/AUR packaging path: `packaging/aur` now carries a
|
||||
`PKGBUILD` template, `.SRCINFO` renderer and tests, release-candidate
|
||||
render step, and docs; the live AUR compatibility alias `codewhale-tui ->
|
||||
@@ -16,6 +30,10 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
|
||||
self-updater refuses to fight an Omarchy/package-manager installation.
|
||||
- Added a Fleet run-wide cost/token usage ceiling (R6, #5567): an accumulator
|
||||
plus admission gate and alert bound a whole run's spend across workers.
|
||||
- Added the real provider cache hit rate to `/context` (C3, DSH #3): the
|
||||
token-weighted provider-reported rate from the same telemetry `/cache`
|
||||
aggregates, plus an honest "no cache telemetry yet" state when nothing is
|
||||
recorded.
|
||||
- Added per-step cost movement: `TurnUsage` receipts are priced as they land
|
||||
so the live cost surface moves during long agentic turns instead of only at
|
||||
`TurnComplete` (#5578), and the footer now honestly shows `cost: unknown`
|
||||
|
||||
@@ -3865,6 +3865,16 @@ fn enforce_readonly_workspace_operands(
|
||||
.split_once('=')
|
||||
.map_or(token.as_str(), |(_, value)| value)
|
||||
.trim();
|
||||
// Windows `Path::canonicalize` returns verbatim device paths
|
||||
// (`\\?\C:\...`), which `Path::is_absolute` does not recognize; without
|
||||
// stripping the prefix the operand falls into the shape refusal and
|
||||
// every canonical absolute read is denied on Windows. The stripped
|
||||
// form resolves to the same location, so location-based judgement is
|
||||
// unchanged. On unix hosts such spellings stay fail-closed below.
|
||||
let value = value
|
||||
.strip_prefix(r"\\?\")
|
||||
.or_else(|| value.strip_prefix(r"\\.\"))
|
||||
.unwrap_or(value);
|
||||
if value.is_empty() || value == "-" {
|
||||
continue;
|
||||
}
|
||||
|
||||
Reference in new issue
Block a user