first commit
This commit is contained in:
@@ -0,0 +1,22 @@
|
||||
package agentcore
|
||||
|
||||
import "context"
|
||||
|
||||
// progressEmitterKey is the unexported context key under which a run-level
|
||||
// progress EmitFunc is stored.
|
||||
type progressEmitterKey struct{}
|
||||
|
||||
// WithProgressEmitter returns a child context carrying emit as the run-level
|
||||
// progress emitter. The task tool injects the parent loop's EmitFunc here so a
|
||||
// dispatched sub-agent can surface SubAgentProgressEvent up the parent stream.
|
||||
func WithProgressEmitter(ctx context.Context, emit EmitFunc) context.Context {
|
||||
return context.WithValue(ctx, progressEmitterKey{}, emit)
|
||||
}
|
||||
|
||||
// ProgressEmitterFromContext returns the run-level progress emitter carried by
|
||||
// ctx, or nil if none was set (in which case callers should skip progress
|
||||
// reporting rather than panic).
|
||||
func ProgressEmitterFromContext(ctx context.Context) EmitFunc {
|
||||
emit, _ := ctx.Value(progressEmitterKey{}).(EmitFunc)
|
||||
return emit
|
||||
}
|
||||
Reference in New Issue
Block a user