Summary
Review and standardize how Agent Framework uses machine-oriented IDs versus human-readable names for agents and workflows.
Current observations
BaseAgent.id is a machine identity, but defaults to a newly generated UUID when no ID is supplied.
BaseAgent.name is human-readable, but workflow auto-wrapping currently uses the name as the default AgentExecutor.id when present.
Workflow.id is runtime/instance-oriented, while Workflow.name is used for persistence grouping and telemetry naming.
- Workflow routing, duplicate executor detection, per-executor invocation kwargs, and checkpoint compatibility can therefore depend on human-readable names.
- Agent responses and telemetry expose both agent IDs and names, but their contract and intended stability should be made explicit.
Request
Please review these semantics across Python and .NET and establish a consistent identity model. In particular:
- Define when IDs versus names are used for machine identity, routing, persistence, telemetry, attribution, and display.
- Determine whether workflow executor IDs should default to explicit stable IDs rather than human-readable agent names.
- Clarify whether generated IDs are expected to be stable across process restarts, or whether callers must provide IDs for durable identity.
- Document which identifiers are part of checkpoint and serialized-state compatibility.
- Review the corresponding .NET APIs and align behavior where appropriate.
- Add compatibility guidance and focused tests before changing any existing behavior.
Important constraint
This should be treated as an API/design review rather than a blanket replacement of names with IDs. Names remain useful for display, message attribution, and telemetry labels; the goal is to ensure that machine-facing contracts do not accidentally depend on mutable human-readable values.
Summary
Review and standardize how Agent Framework uses machine-oriented IDs versus human-readable names for agents and workflows.
Current observations
BaseAgent.idis a machine identity, but defaults to a newly generated UUID when no ID is supplied.BaseAgent.nameis human-readable, but workflow auto-wrapping currently uses the name as the defaultAgentExecutor.idwhen present.Workflow.idis runtime/instance-oriented, whileWorkflow.nameis used for persistence grouping and telemetry naming.Request
Please review these semantics across Python and .NET and establish a consistent identity model. In particular:
Important constraint
This should be treated as an API/design review rather than a blanket replacement of names with IDs. Names remain useful for display, message attribution, and telemetry labels; the goal is to ensure that machine-facing contracts do not accidentally depend on mutable human-readable values.