Skip to content

chore: v0.37.0 - #150

Merged
fylorn merged 1 commit into
mainfrom
chore/v0.37.0
Sep 23, 2026
Merged

fylorn merged 1 commit into
mainfrom
chore/v0.37.0

Conversation

@fylorn

@fylorn fylorn commented Sep 23, 2026

Copy link
Copy Markdown
Contributor

Since v0.36.0: one guard engine for both gateways.

  • feat!: tw-guard, one guard engine for both gateways #149: tw-guard is the guard layer: outbound redaction and restoration, and inspection of the tool calls an upstream returns.
    • tw-redact, the tool-call wall and its rule engine move into it. tw-scan's rules.rs and tw-resil are deleted.
    • Placeholders follow a Scheme, and custom rules may carry a label ({{EMAIL_1}} for the server edition, <<TW_SECRET_1>> unchanged for the desktop).
    • The stream restorer holds only prefixes of placeholders it actually issued.
    • The SSE restorer keeps one lane per block and tool call. This fixes a text tail being prepended to the next tool-argument delta, and the end-of-stream tail being written as an Anthropic delta for every format.
    • Also added: scan_text / restore_json, a DFA cap on caller patterns, and GatewayError::PolicyBlocked (403).
  • Breaking:
    • tw-redact → tw_guard::redact, tw_scan::rules → tw_guard::tools::rules plus ToolPolicy::rules, and tw-resil is removed.
    • Ledger::new(scheme); apply/redact take a ledger; sse::Body::new takes the stream's dialect.

For the desktop app, the control API is unchanged. Streamed restoration is more correct for Chat, Responses and Gemini clients.

🤖 Generated with Claude Code

Co-Authored-By: Claude Opus 5.5 <[email protected]>
@fylorn
fylorn merged commit 62b8186 into main Sep 23, 2026
2 checks passed
@fylorn
fylorn deleted the chore/v0.37.0 branch September 23, 2026 19:42
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant