INNER CODE UNIT · Go
TestContract_TerminalToolExitConsultsStopGuard
voocel/ainovel-cli · internal/agents/agentcore_contract_test.go:100
func TestContract_TerminalToolExitConsultsStopGuard(t *testing.T) {
var guardCalls atomic.Int32
var trigger atomic.Value
model := &contractModel{fn: func(i int, _ []agentcore.Message) (*agentcore.LLMResponse, error) {
switch i {
case 0:
return &agentcore.LLMResponse{Message: assistantToolCall("finish", `{}`)}, nil
default:
// guard 否决终态退出后模型必须获得新一轮;这轮正常结束。
return &agentcore.LLMResponse{Message: assistantText("done", agentcore.StopReasonStop)}, nil
}
}}
if err := runSubagent(t, subagent.Config{
Name: "editorish",
Description: "contract",
Model: model,