INNER CODE UNIT · Go
TestContract_SafetyStopReachesStopGuardWithReason
voocel/ainovel-cli · internal/agents/agentcore_contract_test.go:175
func TestContract_SafetyStopReachesStopGuardWithReason(t *testing.T) {
var seen atomic.Value
model := &contractModel{fn: func(int, []agentcore.Message) (*agentcore.LLMResponse, error) {
return &agentcore.LLMResponse{Message: assistantText("refused", agentcore.StopReason("safety"))}, nil
}}
err := runSubagent(t, subagent.Config{
Name: "refused", Description: "contract", Model: model,
SystemPrompt: "test", MaxTurns: 5,
StopGuardFactory: func(_, _ string) agentcore.StopGuard {
return func(_ context.Context, info agentcore.StopInfo) agentcore.StopDecision {
seen.Store(info.Message.StopReason)
return agentcore.StopDecision{Allow: false, Escalate: true}
}
},
})
if got := seen.Load(); got != agentcore.StopReason("safety") {
t.Fatalf("StopGuard 应看到原始 stop reason safety,got %v", got)
}