| 310 | } |
| 311 | |
| 312 | func (d *debugModel) StreamObject( |
| 313 | ctx context.Context, |
| 314 | call fantasy.ObjectCall, |
| 315 | ) (fantasy.ObjectStreamResponse, error) { |
| 316 | if d.svc == nil { |
| 317 | return d.inner.StreamObject(ctx, call) |
| 318 | } |
| 319 | if _, ok := RunFromContext(ctx); !ok { |
| 320 | return d.inner.StreamObject(ctx, call) |
| 321 | } |
| 322 | |
| 323 | handle, enrichedCtx := beginStep(ctx, d.svc, d.opts, OperationStream, |
| 324 | normalizeObjectCall(call)) |
| 325 | if handle == nil { |
| 326 | return d.inner.StreamObject(ctx, call) |
| 327 | } |
| 328 | |
| 329 | seq, err := d.inner.StreamObject(enrichedCtx, call) |
| 330 | if err != nil { |
| 331 | handle.finish(ctx, stepStatusForError(err), nil, nil, normalizeError(ctx, err), |
| 332 | map[string]any{"structured_output": true}) |
| 333 | return nil, err |
| 334 | } |
| 335 | if seq == nil { |
| 336 | err = xerrors.Errorf("StreamObject: %w", ErrNilModelResult) |
| 337 | handle.finish(ctx, StatusError, nil, nil, normalizeError(ctx, err), |
| 338 | map[string]any{"structured_output": true}) |
| 339 | return nil, err |
| 340 | } |
| 341 | |
| 342 | return wrapObjectStreamSeq(ctx, handle, seq), nil |
| 343 | } |
| 344 | |
| 345 | func (d *debugModel) Provider() string { |
| 346 | return d.inner.Provider() |