Files
Agent-Native/runtime/tools/utf8.go
T
weichenandCursor 17f2a4ecfa Close the native P1 gaps the audit listed for this batch
Why: token budget let the current tool batch run, compaction could split a tool pair or race an append, writes were not crash-atomic, and several MCP and session edges only existed as comments.
Evidence: GOWORK=off go test -count=1 -race ./runtime/ ./runtime/llm/ ./runtime/session/ ./runtime/tools/ ./runtime/mcp/ ./adapters/native/ ./adapters/intentgate/ passed, including the TestR2* cases for budget, replacement, cancel, compaction, SSE, UTF-8, schema, MCP retry, session terminate, poison reload, and registry reload.
Impact: over-budget tool calls are skipped and paired; Stop.Replacement is appended to the session; the intent gate can follow Registry.Reload.
Refs: N5, N6, N7, N8, N9, N11, N12, N15, N16, N17, N18, N19, N21, I9
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-10-03 13:05:58 +00:00

16 lines
314 B
Go

package tools
import "unicode/utf8"
// CutUTF8 按字节上限截断,并回退到完整 rune,避免切开 UTF-8。
func CutUTF8(s string, maxBytes int) string {
if maxBytes <= 0 || len(s) <= maxBytes {
return s
}
end := maxBytes
for end > 0 && !utf8.ValidString(s[:end]) {
end--
}
return s[:end]
}