server.reply = func(w http.ResponseWriter, call ModelFakeCall) {
if call.number == 0 {
modelWriteEvents(w, modelCompletedEvent([]any{
- modelReasoningItem("rs_1", "opaque thought"),
+ turnReasoningItem("rs_1", "opaque thought"),
modelFunctionCallItem("fc_1", "call_1", "shell", `{"command":"echo hi"}`),
}, 100, 0, 5))
"echo: hi\n",
"reply: It said hi.",
}, test.Log(t))
+
require.Equal(t, []string{"user", "busy", "tool", "echo", "reply", "idle"}, test.events.Kinds())
var turns []string
return r.LastEvent(kind).Text
}
+func (r *TurnEventRecorder) Add(event Event) {
+ r.mutex.Lock()
+ defer r.mutex.Unlock()
+
+ r.events = append(r.events, event)
+}
+
// LastEvent returns the last event of kind.
func (r *TurnEventRecorder) LastEvent(kind string) Event {
r.mutex.Lock()
return Event{}
}
-func (r *TurnEventRecorder) Add(event Event) {
- r.mutex.Lock()
- defer r.mutex.Unlock()
-
- r.events = append(r.events, event)
+func turnReasoningItem(id, encrypted string) map[string]any {
+ return map[string]any{
+ "type": "reasoning",
+ "id": id,
+ "encrypted_content": encrypted,
+ "summary": []any{},
+ }
}
// turnInputTexts returns the text of each user message of the input of call.
return texts
}
-
-func modelReasoningItem(id, encrypted string) map[string]any {
- return map[string]any{
- "type": "reasoning",
- "id": id,
- "encrypted_content": encrypted,
- "summary": []any{},
- }
-}