shank318
06/04/2026, 7:17 AMVaibhav (BAML 🐑)
06/04/2026, 7:18 AMWithOnTick as a function argVaibhav (BAML 🐑)
06/04/2026, 7:18 AMshank318
06/04/2026, 7:22 AMfunc (t *ThinkingExtractor) HandleTick(
ctx context.Context,
reason baml.TickReason,
log baml.FunctionLog,
) baml.FunctionSignal {
if t.doneProcessed {
return nil
}
calls, err := log.Calls()
if err != nil || len(calls) == 0 {
return nil
}
lastCall := calls[len(calls)-1]
streamCall, ok := lastCall.(baml.LLMStreamCall)
if !ok {
return nil
}
responses, err := streamCall.SSEChunks()
if err != nil {
return nil
}
for i := t.lastProcessedIndex; i < len(responses); i++ {
response := responses[i]
var data map[string]interface{}
text, err := response.Text()
if err != nil {
continue
}
if err := json.Unmarshal([]byte(text), &data); err != nil {
continue
}
eventType, _ := data["type"].(string)
switch eventType {
// 🧠 reasoning started (still comes as added)
case "response.reasoning_summary_part.added":
if !t.started {
t.startTime = time.Now()
t.started = true
}
select {
case t.emitCh <- struct{}{}:
default:
}
// ✅ NEW DONE EVENT
case "response.output_item.done":
if t.doneProcessed {
continue
}Vaibhav (BAML 🐑)
06/04/2026, 3:54 PM.raw_text field available on the FunctionLog object!