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>
30 lines
502 B
Go
30 lines
502 B
Go
package llm
|
|
|
|
import (
|
|
"context"
|
|
"strings"
|
|
"testing"
|
|
)
|
|
|
|
func TestR2SSEJoinsMultilineData(t *testing.T) {
|
|
body := strings.Join([]string{
|
|
`data: {"choices":[{"delta":{"content":"hi"}`,
|
|
`data: }]}`,
|
|
``,
|
|
`data: [DONE]`,
|
|
``,
|
|
}, "\n")
|
|
var got string
|
|
for ev := range ParseSSE(context.Background(), strings.NewReader(body)) {
|
|
if ev.Kind == KindTextDelta {
|
|
got += ev.Text
|
|
}
|
|
if ev.Kind == KindError {
|
|
t.Fatal(ev.Err)
|
|
}
|
|
}
|
|
if got != "hi" {
|
|
t.Fatalf("joined content %q", got)
|
|
}
|
|
}
|