Implements the agent-host and init parts of the unified azure.yaml design spec #8590 (docs/specs/unify-azure-yaml/spec.md) §1.1, §1.5, §2.3, §2.5, §2.7, §2.9.
Builds on #8675, which splits init output into per-resource sibling services but still writes the agent under config: and still emits agent.yaml / agent.manifest.yaml.
Summary
Lock the unified azure.yaml format for the agent host: move agent fields to service-level direct properties, drop the legacy agent files, and migrate older projects during a deprecation window.
Scope
- core schema (
schemas/v1.0/azure.yaml.json):
- Evolve the
host: azure.ai.agent conditional from a $ref into config: to composing azure.ai.agent.json at the service level; keep project / runtime / docker / image, turn off config:.
- Remove the superseded
host: microsoft.foundry conditional and host example.
additionalProperties: true on the agent schema.
init: write the agent service with direct service-level properties (no config: nesting) in both the manifest (init.go) and code-deploy (init_from_code.go) paths.
- Retire legacy files: stop emitting
agent.yaml / agent.manifest.yaml for new projects (writeAgentDefinitionFile).
- Migration + telemetry: when
agent.yaml / agent.manifest.yaml or the old config-nested host: azure.ai.agent shape is present, print a deprecation warning that links the migration guide, build the equivalent in-memory services so build/deploy still run, and emit a telemetry signal. Plan the rename/retire of CodeInvalidAgentManifest.
- Shared templating helper (§2.5): move the
${VAR} / ${{...}} expander (ExpandEnv) into a shared package the sibling Foundry extensions can reuse.
Out of scope (follow-ups)
Related
3-PR follow-up to #8590 / #8675:
Implements the agent-host and
initparts of the unifiedazure.yamldesign spec #8590 (docs/specs/unify-azure-yaml/spec.md) §1.1, §1.5, §2.3, §2.5, §2.7, §2.9.Builds on #8675, which splits
initoutput into per-resource sibling services but still writes the agent underconfig:and still emitsagent.yaml/agent.manifest.yaml.Summary
Lock the unified
azure.yamlformat for the agent host: move agent fields to service-level direct properties, drop the legacy agent files, and migrate older projects during a deprecation window.Scope
schemas/v1.0/azure.yaml.json):host: azure.ai.agentconditional from a$refintoconfig:to composingazure.ai.agent.jsonat the service level; keepproject/runtime/docker/image, turn offconfig:.host: microsoft.foundryconditional and host example.additionalProperties: trueon the agent schema.init: write the agent service with direct service-level properties (noconfig:nesting) in both the manifest (init.go) and code-deploy (init_from_code.go) paths.agent.yaml/agent.manifest.yamlfor new projects (writeAgentDefinitionFile).agent.yaml/agent.manifest.yamlor the old config-nestedhost: azure.ai.agentshape is present, print a deprecation warning that links the migration guide, build the equivalent in-memory services so build/deploy still run, and emit a telemetry signal. Plan the rename/retire ofCodeInvalidAgentManifest.${VAR}/${{...}}expander (ExpandEnv) into a shared package the sibling Foundry extensions can reuse.Out of scope (follow-ups)
$reffile includes / overlay overrides → [ext-foundry]: wire $ref file includes + overlay overrides for separate-services azure.yaml #8775.Related
3-PR follow-up to #8590 / #8675:
$reffile includes