INNER CODE UNIT · Go
runSubagent
voocel/ainovel-cli · internal/agents/agentcore_contract_test.go:91
func runSubagent(t *testing.T, cfg subagent.Config) error {
t.Helper()
_, err := subagent.NewRunner(cfg).Run(context.Background(), cfg.Name, "contract")
return err
}
// 契约 1:终态工具退出经过 StopGuard;guard 否决(InjectMessage)后 run 继续。
// 依赖方:EditorStopGuard —— save_review 等终态工具命中后,任务感知 guard 必须
// 有机会把"产物未落盘"的提前退出拉回来。
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: