From 6cdd6c8e71fc39f912aebcacc3758c981fc5757b Mon Sep 17 00:00:00 2001 From: azure-sdk Date: Sat, 23 May 2026 00:19:53 +0000 Subject: [PATCH] [azure.ai.agents] Registry update for 0.1.34-preview --- cli/azd/cmd/testdata/TestFigSpec.ts | 1272 +++++++++++++++++++++------ cli/azd/extensions/registry.json | 76 ++ 2 files changed, 1102 insertions(+), 246 deletions(-) diff --git a/cli/azd/cmd/testdata/TestFigSpec.ts b/cli/azd/cmd/testdata/TestFigSpec.ts index f84b78d2320..bf68221999f 100644 --- a/cli/azd/cmd/testdata/TestFigSpec.ts +++ b/cli/azd/cmd/testdata/TestFigSpec.ts @@ -230,15 +230,42 @@ const completionSpec: Fig.Spec = { name: ['create'], description: 'Create a new Foundry project connection.', options: [ + { + name: ['--audience'], + description: 'Token audience for user-entra-token/agentic-identity auth', + args: [ + { + name: 'audience', + }, + ], + }, { name: ['--auth-type'], - description: 'Auth type: api-key, custom-keys, none', + description: 'Auth type: api-key, custom-keys, none, oauth2, user-entra-token, project-managed-identity, agentic-identity', args: [ { name: 'auth-type', }, ], }, + { + name: ['--client-id'], + description: 'OAuth2 client ID (required for oauth2 auth)', + args: [ + { + name: 'client-id', + }, + ], + }, + { + name: ['--client-secret'], + description: 'OAuth2 client secret (required for oauth2 auth)', + args: [ + { + name: 'client-secret', + }, + ], + }, { name: ['--custom-key'], description: 'Custom key=value (repeatable, for custom-keys auth)', @@ -265,7 +292,7 @@ const completionSpec: Fig.Spec = { }, { name: ['--kind'], - description: 'Connection kind (e.g., remote-tool, cognitive-search)', + description: 'Connection kind (e.g., remote-tool, remote-a2a, cognitive-search)', args: [ { name: 'kind', @@ -478,101 +505,151 @@ const completionSpec: Fig.Spec = { ], }, { - name: ['files'], - description: 'Manage files in a hosted agent session.', + name: ['doctor'], + description: 'Diagnose problems with an azd ai agent project.', + options: [ + { + name: ['--local-only'], + description: 'Skip remote (network-dependent) checks. Useful when offline, behind a proxy, or for a fast local triage.', + }, + { + name: ['--output', '-o'], + description: 'The output format', + args: [ + { + name: 'output', + }, + ], + }, + { + name: ['--unredacted'], + description: 'Show raw principal IDs, scope ARNs, and UPNs in the report.', + }, + ], + }, + { + name: ['endpoint'], + description: 'Manage agent endpoint and card configuration.', subcommands: [ { - name: ['delete', 'remove', 'rm'], - description: 'Delete a file or directory from a hosted agent session.', + name: ['update'], + description: 'Update an agent\'s endpoint and card configuration without deploying a new version.', options: [ { - name: ['--agent-name', '-n'], - description: 'Agent name (matches azure.yaml service name; auto-detected when only one exists)', + name: ['--output', '-o'], + description: 'The output format', args: [ { - name: 'agent-name', + name: 'output', }, ], }, + ], + }, + ], + options: [ + { + name: ['--output', '-o'], + description: 'The output format', + args: [ { - name: ['--chat-isolation-key'], - description: 'Foundry chat isolation key header value (x-agent-chat-isolation-key); independent of --isolation-key (session ownership)', + name: 'output', + }, + ], + }, + ], + }, + { + name: ['eval'], + description: 'Create and run quick evals for an agent.', + subcommands: [ + { + name: ['init'], + description: 'Generate a local eval suite for a deployed agent.', + options: [ + { + name: ['--agent'], + description: 'Target agent name', args: [ { - name: 'chat-isolation-key', + name: 'agent', }, ], }, { - name: ['--file', '-f'], - description: 'Remote file or directory path to delete', + name: ['--dataset'], + description: 'Existing local file or registered dataset name to use for evaluation (instead of generating a new dataset)', args: [ { - name: 'file', + name: 'dataset', }, ], }, { - name: ['--output', '-o'], - description: 'The output format', + name: ['--eval-model'], + description: 'Model used for evaluation and generation', args: [ { - name: 'output', + name: 'eval-model', }, ], }, { - name: ['--recursive'], - description: 'Recursively delete directories and their contents', + name: ['--evaluator'], + description: 'Built-in or custom evaluator name', + isRepeatable: true, + args: [ + { + name: 'evaluator', + }, + ], }, { - name: ['--session-id', '-s'], - description: 'Session ID override (defaults to last invoke session)', + name: ['--gen-instruction', '-g'], + description: 'Agent instruction used for dataset and evaluator generation', args: [ { - name: 'session-id', + name: 'gen-instruction', }, ], }, { - name: ['--user-isolation-key'], - description: 'Foundry user isolation key header value (x-agent-user-isolation-key); independent of --isolation-key (session ownership)', + name: ['--gen-instruction-file'], + description: 'Path to a file containing the agent instruction', args: [ { - name: 'user-isolation-key', + name: 'gen-instruction-file', }, ], }, - ], - }, - { - name: ['download'], - description: 'Download a file from a hosted agent session.', - options: [ { - name: ['--agent-name', '-n'], - description: 'Agent name (matches azure.yaml service name; auto-detected when only one exists)', + name: ['--max-samples'], + description: 'Number of samples to generate (15-1000)', args: [ { - name: 'agent-name', + name: 'max-samples', }, ], }, { - name: ['--chat-isolation-key'], - description: 'Foundry chat isolation key header value (x-agent-chat-isolation-key); independent of --isolation-key (session ownership)', + name: ['--name'], + description: 'Name for the eval suite', args: [ { - name: 'chat-isolation-key', + name: 'name', }, ], }, { - name: ['--file', '-f'], - description: 'Remote file path to download', + name: ['--no-wait'], + description: 'Submit generation jobs and return immediately', + }, + { + name: ['--out-file'], + description: 'Eval config path', args: [ { - name: 'file', + name: 'out-file', }, ], }, @@ -586,114 +663,118 @@ const completionSpec: Fig.Spec = { ], }, { - name: ['--session-id', '-s'], - description: 'Session ID override (defaults to last invoke session)', + name: ['--project-endpoint', '-p'], + description: 'Microsoft Foundry project endpoint URL', args: [ { - name: 'session-id', + name: 'project-endpoint', }, ], }, { - name: ['--target-path', '-t'], - description: 'Local destination path (defaults to remote filename)', - args: [ - { - name: 'target-path', - }, - ], + name: ['--reset-defaults'], + description: 'Overwrite an existing eval config', }, { - name: ['--user-isolation-key'], - description: 'Foundry user isolation key header value (x-agent-user-isolation-key); independent of --isolation-key (session ownership)', + name: ['--trace-days'], + description: 'Include agent traces from the last N days for evaluator generation (0 = no traces)', args: [ { - name: 'user-isolation-key', + name: 'trace-days', }, ], }, ], }, { - name: ['list', 'ls'], - description: 'List files in a hosted agent session.', + name: ['list'], + description: 'List evaluations for the current project.', options: [ { - name: ['--agent-name', '-n'], - description: 'Agent name (matches azure.yaml service name; auto-detected when only one exists)', + name: ['--limit'], + description: 'Maximum number of evals to return', args: [ { - name: 'agent-name', + name: 'limit', }, ], }, { - name: ['--chat-isolation-key'], - description: 'Foundry chat isolation key header value (x-agent-chat-isolation-key); independent of --isolation-key (session ownership)', + name: ['--output', '-o'], + description: 'The output format', args: [ { - name: 'chat-isolation-key', + name: 'output', }, ], }, + ], + }, + { + name: ['run'], + description: 'Execute an evaluation run from eval.yaml.', + options: [ { - name: ['--output', '-o'], - description: 'The output format', + name: ['--config'], + description: 'Local eval config YAML', args: [ { - name: 'output', - suggestions: ['json', 'table'], + name: 'config', }, ], }, { - name: ['--session-id', '-s'], - description: 'Session ID override (defaults to last invoke session)', + name: ['--name'], + description: 'Name for the eval run (defaults to eval config name)', args: [ { - name: 'session-id', + name: 'name', }, ], }, { - name: ['--user-isolation-key'], - description: 'Foundry user isolation key header value (x-agent-user-isolation-key); independent of --isolation-key (session ownership)', + name: ['--no-wait'], + description: 'Start the run and return immediately without waiting for results', + }, + { + name: ['--output', '-o'], + description: 'The output format', args: [ { - name: 'user-isolation-key', + name: 'output', }, ], }, ], }, { - name: ['mkdir'], - description: 'Create a directory in a hosted agent session.', + name: ['show'], + description: 'Show an eval definition, run history, or run details.', options: [ { - name: ['--agent-name', '-n'], - description: 'Agent name (matches azure.yaml service name; auto-detected when only one exists)', + name: ['--eval-run-id'], + description: 'Show details for a specific eval run', args: [ { - name: 'agent-name', + name: 'eval-run-id', }, ], }, { - name: ['--chat-isolation-key'], - description: 'Foundry chat isolation key header value (x-agent-chat-isolation-key); independent of --isolation-key (session ownership)', + name: ['--limit'], + description: 'Maximum number of runs to show', args: [ { - name: 'chat-isolation-key', + name: 'limit', }, ], }, { - name: ['--dir', '-d'], - description: 'Remote directory path to create', + name: ['--out-file', '-O'], + description: 'Export full run results to a JSON file', args: [ { - name: 'dir', + name: 'out-file', }, ], }, @@ -706,29 +787,60 @@ const completionSpec: Fig.Spec = { }, ], }, + ], + }, + { + name: ['update'], + description: 'Update evaluators and datasets from local files.', + options: [ { - name: ['--session-id', '-s'], - description: 'Session ID override (defaults to last invoke session)', + name: ['--config'], + description: 'Local eval config YAML', args: [ { - name: 'session-id', + name: 'config', }, ], }, { - name: ['--user-isolation-key'], - description: 'Foundry user isolation key header value (x-agent-user-isolation-key); independent of --isolation-key (session ownership)', + name: ['--dataset-only'], + description: 'Only update the dataset', + }, + { + name: ['--evaluator-only'], + description: 'Only update evaluators', + }, + { + name: ['--output', '-o'], + description: 'The output format', args: [ { - name: 'user-isolation-key', + name: 'output', }, ], }, ], }, + ], + options: [ + { + name: ['--output', '-o'], + description: 'The output format', + args: [ + { + name: 'output', + }, + ], + }, + ], + }, + { + name: ['files'], + description: 'Manage files in a hosted agent session.', + subcommands: [ { - name: ['stat'], - description: 'Get file or directory metadata in a hosted agent session.', + name: ['delete', 'remove', 'rm'], + description: 'Delete a file or directory from a hosted agent session.', options: [ { name: ['--agent-name', '-n'], @@ -748,16 +860,28 @@ const completionSpec: Fig.Spec = { }, ], }, + { + name: ['--file', '-f'], + description: 'Remote file or directory path to delete', + args: [ + { + name: 'file', + }, + ], + }, { name: ['--output', '-o'], description: 'The output format', args: [ { name: 'output', - suggestions: ['json', 'table'], }, ], }, + { + name: ['--recursive'], + description: 'Recursively delete directories and their contents', + }, { name: ['--session-id', '-s'], description: 'Session ID override (defaults to last invoke session)', @@ -779,8 +903,8 @@ const completionSpec: Fig.Spec = { ], }, { - name: ['upload'], - description: 'Upload a file to a hosted agent session.', + name: ['download'], + description: 'Download a file from a hosted agent session.', options: [ { name: ['--agent-name', '-n'], @@ -802,7 +926,7 @@ const completionSpec: Fig.Spec = { }, { name: ['--file', '-f'], - description: 'Local file path to upload', + description: 'Remote file path to download', args: [ { name: 'file', @@ -829,7 +953,7 @@ const completionSpec: Fig.Spec = { }, { name: ['--target-path', '-t'], - description: 'Remote destination path (defaults to local filename)', + description: 'Local destination path (defaults to remote filename)', args: [ { name: 'target-path', @@ -847,22 +971,255 @@ const completionSpec: Fig.Spec = { }, ], }, - ], - options: [ { - name: ['--output', '-o'], - description: 'The output format', - args: [ + name: ['list', 'ls'], + description: 'List files in a hosted agent session.', + options: [ { - name: 'output', + name: ['--agent-name', '-n'], + description: 'Agent name (matches azure.yaml service name; auto-detected when only one exists)', + args: [ + { + name: 'agent-name', + }, + ], }, - ], - }, - ], - }, - { - name: ['init'], - description: 'Initialize a new AI agent project. (Preview)', + { + name: ['--chat-isolation-key'], + description: 'Foundry chat isolation key header value (x-agent-chat-isolation-key); independent of --isolation-key (session ownership)', + args: [ + { + name: 'chat-isolation-key', + }, + ], + }, + { + name: ['--output', '-o'], + description: 'The output format', + args: [ + { + name: 'output', + suggestions: ['json', 'table'], + }, + ], + }, + { + name: ['--session-id', '-s'], + description: 'Session ID override (defaults to last invoke session)', + args: [ + { + name: 'session-id', + }, + ], + }, + { + name: ['--user-isolation-key'], + description: 'Foundry user isolation key header value (x-agent-user-isolation-key); independent of --isolation-key (session ownership)', + args: [ + { + name: 'user-isolation-key', + }, + ], + }, + ], + }, + { + name: ['mkdir'], + description: 'Create a directory in a hosted agent session.', + options: [ + { + name: ['--agent-name', '-n'], + description: 'Agent name (matches azure.yaml service name; auto-detected when only one exists)', + args: [ + { + name: 'agent-name', + }, + ], + }, + { + name: ['--chat-isolation-key'], + description: 'Foundry chat isolation key header value (x-agent-chat-isolation-key); independent of --isolation-key (session ownership)', + args: [ + { + name: 'chat-isolation-key', + }, + ], + }, + { + name: ['--dir', '-d'], + description: 'Remote directory path to create', + args: [ + { + name: 'dir', + }, + ], + }, + { + name: ['--output', '-o'], + description: 'The output format', + args: [ + { + name: 'output', + }, + ], + }, + { + name: ['--session-id', '-s'], + description: 'Session ID override (defaults to last invoke session)', + args: [ + { + name: 'session-id', + }, + ], + }, + { + name: ['--user-isolation-key'], + description: 'Foundry user isolation key header value (x-agent-user-isolation-key); independent of --isolation-key (session ownership)', + args: [ + { + name: 'user-isolation-key', + }, + ], + }, + ], + }, + { + name: ['stat'], + description: 'Get file or directory metadata in a hosted agent session.', + options: [ + { + name: ['--agent-name', '-n'], + description: 'Agent name (matches azure.yaml service name; auto-detected when only one exists)', + args: [ + { + name: 'agent-name', + }, + ], + }, + { + name: ['--chat-isolation-key'], + description: 'Foundry chat isolation key header value (x-agent-chat-isolation-key); independent of --isolation-key (session ownership)', + args: [ + { + name: 'chat-isolation-key', + }, + ], + }, + { + name: ['--output', '-o'], + description: 'The output format', + args: [ + { + name: 'output', + suggestions: ['json', 'table'], + }, + ], + }, + { + name: ['--session-id', '-s'], + description: 'Session ID override (defaults to last invoke session)', + args: [ + { + name: 'session-id', + }, + ], + }, + { + name: ['--user-isolation-key'], + description: 'Foundry user isolation key header value (x-agent-user-isolation-key); independent of --isolation-key (session ownership)', + args: [ + { + name: 'user-isolation-key', + }, + ], + }, + ], + }, + { + name: ['upload'], + description: 'Upload a file to a hosted agent session.', + options: [ + { + name: ['--agent-name', '-n'], + description: 'Agent name (matches azure.yaml service name; auto-detected when only one exists)', + args: [ + { + name: 'agent-name', + }, + ], + }, + { + name: ['--chat-isolation-key'], + description: 'Foundry chat isolation key header value (x-agent-chat-isolation-key); independent of --isolation-key (session ownership)', + args: [ + { + name: 'chat-isolation-key', + }, + ], + }, + { + name: ['--file', '-f'], + description: 'Local file path to upload', + args: [ + { + name: 'file', + }, + ], + }, + { + name: ['--output', '-o'], + description: 'The output format', + args: [ + { + name: 'output', + }, + ], + }, + { + name: ['--session-id', '-s'], + description: 'Session ID override (defaults to last invoke session)', + args: [ + { + name: 'session-id', + }, + ], + }, + { + name: ['--target-path', '-t'], + description: 'Remote destination path (defaults to local filename)', + args: [ + { + name: 'target-path', + }, + ], + }, + { + name: ['--user-isolation-key'], + description: 'Foundry user isolation key header value (x-agent-user-isolation-key); independent of --isolation-key (session ownership)', + args: [ + { + name: 'user-isolation-key', + }, + ], + }, + ], + }, + ], + options: [ + { + name: ['--output', '-o'], + description: 'The output format', + args: [ + { + name: 'output', + }, + ], + }, + ], + }, + { + name: ['init'], + description: 'Initialize a new AI agent project. (Preview)', options: [ { name: ['--agent-name'], @@ -873,6 +1230,33 @@ const completionSpec: Fig.Spec = { }, ], }, + { + name: ['--dep-resolution'], + description: 'Dependency resolution for code deploy: \'remote_build\' or \'bundled\'. Defaults to \'remote_build\'.', + args: [ + { + name: 'dep-resolution', + }, + ], + }, + { + name: ['--deploy-mode'], + description: 'Deployment mode: \'container\' (Docker image) or \'code\' (ZIP upload). Defaults to \'container\' in --no-prompt.', + args: [ + { + name: 'deploy-mode', + }, + ], + }, + { + name: ['--entry-point'], + description: 'Entry point file for code deploy (e.g., \'app.py\', \'MyAgent.dll\'). Required with --deploy-mode code --no-prompt.', + args: [ + { + name: 'entry-point', + }, + ], + }, { name: ['--force'], description: 'Overwrite an input manifest that already lives inside the generated src tree without prompting. Required together with --no-prompt when init would otherwise need confirmation.', @@ -910,173 +1294,515 @@ const completionSpec: Fig.Spec = { description: 'The output format', args: [ { - name: 'output', + name: 'output', + }, + ], + }, + { + name: ['--project-id', '-p'], + description: 'Existing Microsoft Foundry Project Id to initialize your azd environment with', + args: [ + { + name: 'project-id', + }, + ], + }, + { + name: ['--protocol'], + description: 'Protocols supported by the agent (e.g., \'responses\', \'invocations\'). Can be specified multiple times.', + isRepeatable: true, + args: [ + { + name: 'protocol', + }, + ], + }, + { + name: ['--runtime'], + description: 'Runtime for code deploy (e.g., \'python_3_13\', \'python_3_14\', \'dotnet_10\'). Required with --deploy-mode code --no-prompt.', + args: [ + { + name: 'runtime', + }, + ], + }, + { + name: ['--src', '-s'], + description: 'Directory to download the agent definition to (defaults to \'src/\')', + args: [ + { + name: 'src', + }, + ], + }, + ], + }, + { + name: ['invoke'], + description: 'Send a message to your agent.', + options: [ + { + name: ['--agent-endpoint'], + description: 'Full endpoint URL of a deployed agent (run \'azd ai agent show\' to see it). Invokes without requiring an azd project; protocol is derived from the URL.', + args: [ + { + name: 'agent-endpoint', + }, + ], + }, + { + name: ['--chat-isolation-key'], + description: 'Foundry chat isolation key header value (x-agent-chat-isolation-key); independent of --isolation-key (session ownership)', + args: [ + { + name: 'chat-isolation-key', + }, + ], + }, + { + name: ['--conversation-id'], + description: 'Explicit conversation ID override', + args: [ + { + name: 'conversation-id', + }, + ], + }, + { + name: ['--input-file', '-f'], + description: 'Path to a file whose contents are sent as the request body', + args: [ + { + name: 'input-file', + }, + ], + }, + { + name: ['--local', '-l'], + description: 'Invoke on localhost instead of Foundry', + }, + { + name: ['--new-conversation'], + description: 'Force a new conversation (discard saved one)', + }, + { + name: ['--new-session'], + description: 'Force a new session (discard saved one)', + }, + { + name: ['--output', '-o'], + description: 'The output format', + args: [ + { + name: 'output', + }, + ], + }, + { + name: ['--port'], + description: 'Local server port', + args: [ + { + name: 'port', + }, + ], + }, + { + name: ['--protocol', '-p'], + description: 'Protocol to use: responses (default) or invocations', + args: [ + { + name: 'protocol', + }, + ], + }, + { + name: ['--session-id', '-s'], + description: 'Explicit session ID override', + args: [ + { + name: 'session-id', + }, + ], + }, + { + name: ['--timeout', '-t'], + description: 'Request timeout in seconds (0 for no timeout)', + args: [ + { + name: 'timeout', + }, + ], + }, + { + name: ['--user-isolation-key'], + description: 'Foundry user isolation key header value (x-agent-user-isolation-key); independent of --isolation-key (session ownership)', + args: [ + { + name: 'user-isolation-key', + }, + ], + }, + { + name: ['--version'], + description: 'Agent version to invoke (creates or reuses a session backed by that version)', + args: [ + { + name: 'version', + }, + ], + }, + ], + }, + { + name: ['monitor'], + description: 'Monitor logs from a hosted agent.', + options: [ + { + name: ['--chat-isolation-key'], + description: 'Foundry chat isolation key header value (x-agent-chat-isolation-key); independent of --isolation-key (session ownership)', + args: [ + { + name: 'chat-isolation-key', + }, + ], + }, + { + name: ['--follow', '-f'], + description: 'Stream logs in real-time', + }, + { + name: ['--output', '-o'], + description: 'The output format', + args: [ + { + name: 'output', + }, + ], + }, + { + name: ['--raw'], + description: 'Print the raw SSE stream without formatting', + }, + { + name: ['--session-id', '-s'], + description: 'Session ID to stream logs for', + args: [ + { + name: 'session-id', + }, + ], + }, + { + name: ['--tail', '-l'], + description: 'Number of trailing log lines to fetch (1-300)', + args: [ + { + name: 'tail', + }, + ], + }, + { + name: ['--type', '-t'], + description: 'Type of logs: \'console\' (stdout/stderr) or \'system\' (container events)', + args: [ + { + name: 'type', + }, + ], + }, + { + name: ['--user-isolation-key'], + description: 'Foundry user isolation key header value (x-agent-user-isolation-key); independent of --isolation-key (session ownership)', + args: [ + { + name: 'user-isolation-key', + }, + ], + }, + { + name: ['--utc'], + description: 'Display timestamps in UTC instead of local time', + }, + ], + }, + { + name: ['optimize'], + description: 'Evaluate and optimize AI agents.', + subcommands: [ + { + name: ['apply'], + description: 'Apply optimized candidate configuration locally to your azd project.', + options: [ + { + name: ['--agent'], + description: 'Agent service name (auto-detected from azure.yaml)', + args: [ + { + name: 'agent', + }, + ], + }, + { + name: ['--candidate'], + description: 'Candidate ID from optimization results (required)', + args: [ + { + name: 'candidate', + }, + ], + }, + { + name: ['--endpoint'], + description: 'Optimization service endpoint (for local dev)', + args: [ + { + name: 'endpoint', + }, + ], + }, + { + name: ['--output', '-o'], + description: 'The output format', + args: [ + { + name: 'output', + }, + ], + }, + { + name: ['--project-endpoint', '-p'], + description: 'Foundry project endpoint URL', + args: [ + { + name: 'project-endpoint', + }, + ], + }, + ], + }, + { + name: ['cancel'], + description: 'Cancel a running optimization job.', + options: [ + { + name: ['--endpoint'], + description: 'Optimization service endpoint (for local dev)', + args: [ + { + name: 'endpoint', + }, + ], + }, + { + name: ['--output', '-o'], + description: 'The output format', + args: [ + { + name: 'output', + }, + ], + }, + { + name: ['--project-endpoint', '-p'], + description: 'Foundry project endpoint URL', + args: [ + { + name: 'project-endpoint', + }, + ], + }, + ], + }, + { + name: ['deploy'], + description: 'Deploy a winning optimization candidate as a new agent version via the API.', + options: [ + { + name: ['--agent'], + description: 'Agent name to deploy to (auto-detected from agent.yaml)', + args: [ + { + name: 'agent', + }, + ], + }, + { + name: ['--candidate'], + description: 'Candidate ID from optimization results (required)', + args: [ + { + name: 'candidate', + }, + ], + }, + { + name: ['--endpoint'], + description: 'Optimization service endpoint (for local dev)', + args: [ + { + name: 'endpoint', + }, + ], + }, + { + name: ['--output', '-o'], + description: 'The output format', + args: [ + { + name: 'output', + }, + ], }, - ], - }, - { - name: ['--project-id', '-p'], - description: 'Existing Microsoft Foundry Project Id to initialize your azd environment with', - args: [ { - name: 'project-id', + name: ['--project-endpoint', '-p'], + description: 'Foundry project endpoint URL', + args: [ + { + name: 'project-endpoint', + }, + ], }, ], }, { - name: ['--protocol'], - description: 'Protocols supported by the agent (e.g., \'responses\', \'invocations\'). Can be specified multiple times.', - isRepeatable: true, - args: [ + name: ['list'], + description: 'List recent optimization runs.', + options: [ { - name: 'protocol', + name: ['--endpoint'], + description: 'Optimization service endpoint (for local dev)', + args: [ + { + name: 'endpoint', + }, + ], }, - ], - }, - { - name: ['--src', '-s'], - description: 'Directory to download the agent definition to (defaults to \'src/\')', - args: [ { - name: 'src', + name: ['--limit'], + description: 'Maximum number of results', + args: [ + { + name: 'limit', + }, + ], }, - ], - }, - ], - }, - { - name: ['invoke'], - description: 'Send a message to your agent.', - options: [ - { - name: ['--agent-endpoint'], - description: 'Full endpoint URL of a deployed agent (run \'azd ai agent show\' to see it). Invokes without requiring an azd project; protocol is derived from the URL.', - args: [ { - name: 'agent-endpoint', + name: ['--output', '-o'], + description: 'The output format', + args: [ + { + name: 'output', + }, + ], }, - ], - }, - { - name: ['--chat-isolation-key'], - description: 'Foundry chat isolation key header value (x-agent-chat-isolation-key); independent of --isolation-key (session ownership)', - args: [ { - name: 'chat-isolation-key', + name: ['--project-endpoint', '-p'], + description: 'Foundry project endpoint URL', + args: [ + { + name: 'project-endpoint', + }, + ], }, - ], - }, - { - name: ['--conversation-id'], - description: 'Explicit conversation ID override', - args: [ { - name: 'conversation-id', + name: ['--status'], + description: 'Filter by status (pending/running/completed/failed/cancelled)', + args: [ + { + name: 'status', + }, + ], }, ], }, { - name: ['--input-file', '-f'], - description: 'Path to a file whose contents are sent as the request body', - args: [ + name: ['status'], + description: 'Check the status of an optimization job.', + options: [ { - name: 'input-file', + name: ['--endpoint'], + description: 'Optimization service endpoint (for local dev)', + args: [ + { + name: 'endpoint', + }, + ], }, - ], - }, - { - name: ['--local', '-l'], - description: 'Invoke on localhost instead of Foundry', - }, - { - name: ['--new-conversation'], - description: 'Force a new conversation (discard saved one)', - }, - { - name: ['--new-session'], - description: 'Force a new session (discard saved one)', - }, - { - name: ['--output', '-o'], - description: 'The output format', - args: [ { - name: 'output', + name: ['--output', '-o'], + description: 'The output format', + args: [ + { + name: 'output', + }, + ], }, - ], - }, - { - name: ['--port'], - description: 'Local server port', - args: [ { - name: 'port', + name: ['--poll-interval'], + description: 'Polling interval in seconds', + args: [ + { + name: 'poll-interval', + }, + ], }, - ], - }, - { - name: ['--protocol', '-p'], - description: 'Protocol to use: responses (default) or invocations', - args: [ { - name: 'protocol', + name: ['--project-endpoint', '-p'], + description: 'Foundry project endpoint URL', + args: [ + { + name: 'project-endpoint', + }, + ], }, - ], - }, - { - name: ['--session-id', '-s'], - description: 'Explicit session ID override', - args: [ { - name: 'session-id', + name: ['--watch'], + description: 'Poll until job completes', }, ], }, + ], + options: [ { - name: ['--timeout', '-t'], - description: 'Request timeout in seconds (0 for no timeout)', + name: ['--agent', '-a'], + description: 'Agent name (auto-detected from azd project if omitted)', args: [ { - name: 'timeout', + name: 'agent', }, ], }, { - name: ['--user-isolation-key'], - description: 'Foundry user isolation key header value (x-agent-user-isolation-key); independent of --isolation-key (session ownership)', + name: ['--config', '-c'], + description: 'Path to YAML config file (optional — uses defaults if omitted)', args: [ { - name: 'user-isolation-key', + name: 'config', }, ], }, { - name: ['--version'], - description: 'Agent version to invoke (creates or reuses a session backed by that version)', + name: ['--endpoint'], + description: 'Optimization service endpoint (for local dev)', args: [ { - name: 'version', + name: 'endpoint', }, ], }, - ], - }, - { - name: ['monitor'], - description: 'Monitor logs from a hosted agent.', - options: [ { - name: ['--chat-isolation-key'], - description: 'Foundry chat isolation key header value (x-agent-chat-isolation-key); independent of --isolation-key (session ownership)', + name: ['--eval-model', '-m'], + description: 'Model for evaluation', args: [ { - name: 'chat-isolation-key', + name: 'eval-model', }, ], }, { - name: ['--follow', '-f'], - description: 'Stream logs in real-time', + name: ['--no-wait'], + description: 'Submit job and return immediately without waiting for completion', }, { name: ['--output', '-o'], @@ -1088,55 +1814,43 @@ const completionSpec: Fig.Spec = { ], }, { - name: ['--raw'], - description: 'Print the raw SSE stream without formatting', - }, - { - name: ['--session-id', '-s'], - description: 'Session ID to stream logs for', - args: [ - { - name: 'session-id', - }, - ], - }, - { - name: ['--tail', '-l'], - description: 'Number of trailing log lines to fetch (1-300)', + name: ['--poll-interval'], + description: 'Polling interval in seconds', args: [ { - name: 'tail', + name: 'poll-interval', }, ], }, { - name: ['--type', '-t'], - description: 'Type of logs: \'console\' (stdout/stderr) or \'system\' (container events)', + name: ['--project-endpoint', '-p'], + description: 'Foundry project endpoint URL', args: [ { - name: 'type', + name: 'project-endpoint', }, ], }, { - name: ['--user-isolation-key'], - description: 'Foundry user isolation key header value (x-agent-user-isolation-key); independent of --isolation-key (session ownership)', + name: ['--target', '-t'], + description: 'Target attribute for optimization: instruction, skill (repeatable)', + isRepeatable: true, args: [ { - name: 'user-isolation-key', + name: 'target', }, ], }, - { - name: ['--utc'], - description: 'Display timestamps in UTC instead of local time', - }, ], }, { name: ['run'], description: 'Run your agent locally for development.', options: [ + { + name: ['--no-inspector'], + description: 'Do not open Agent Inspector', + }, { name: ['--output', '-o'], description: 'The output format', @@ -4718,6 +5432,46 @@ const completionSpec: Fig.Spec = { }, ], }, + { + name: ['doctor'], + description: 'Diagnose problems with an azd ai agent project.', + }, + { + name: ['endpoint'], + description: 'Manage agent endpoint and card configuration.', + subcommands: [ + { + name: ['update'], + description: 'Update an agent\'s endpoint and card configuration without deploying a new version.', + }, + ], + }, + { + name: ['eval'], + description: 'Create and run quick evals for an agent.', + subcommands: [ + { + name: ['init'], + description: 'Generate a local eval suite for a deployed agent.', + }, + { + name: ['list'], + description: 'List evaluations for the current project.', + }, + { + name: ['run'], + description: 'Execute an evaluation run from eval.yaml.', + }, + { + name: ['show'], + description: 'Show an eval definition, run history, or run details.', + }, + { + name: ['update'], + description: 'Update evaluators and datasets from local files.', + }, + ], + }, { name: ['files'], description: 'Manage files in a hosted agent session.', @@ -4760,6 +5514,32 @@ const completionSpec: Fig.Spec = { name: ['monitor'], description: 'Monitor logs from a hosted agent.', }, + { + name: ['optimize'], + description: 'Evaluate and optimize AI agents.', + subcommands: [ + { + name: ['apply'], + description: 'Apply optimized candidate configuration locally to your azd project.', + }, + { + name: ['cancel'], + description: 'Cancel a running optimization job.', + }, + { + name: ['deploy'], + description: 'Deploy a winning optimization candidate as a new agent version via the API.', + }, + { + name: ['list'], + description: 'List recent optimization runs.', + }, + { + name: ['status'], + description: 'Check the status of an optimization job.', + }, + ], + }, { name: ['run'], description: 'Run your agent locally for development.', diff --git a/cli/azd/extensions/registry.json b/cli/azd/extensions/registry.json index d7642db16ec..313eb35dd5f 100644 --- a/cli/azd/extensions/registry.json +++ b/cli/azd/extensions/registry.json @@ -4179,6 +4179,82 @@ "url": "https://github.com/Azure/azure-dev/releases/download/azd-ext-azure-ai-agents_0.1.33-preview/azure-ai-agents-windows-arm64.zip" } } + }, + { + "version": "0.1.34-preview", + "requiredAzdVersion": "\u003e1.23.13", + "capabilities": [ + "custom-commands", + "lifecycle-events", + "mcp-server", + "service-target-provider", + "metadata" + ], + "providers": [ + { + "name": "azure.ai.agent", + "type": "service-target", + "description": "Deploys agents to the Foundry Agent Service" + } + ], + "usage": "azd ai agent \u003ccommand\u003e [options]", + "examples": [ + { + "name": "init", + "description": "Initialize a new AI agent project.", + "usage": "azd ai agent init" + } + ], + "artifacts": { + "darwin/amd64": { + "checksum": { + "algorithm": "sha256", + "value": "9d5ef6fc956a6b843d8653405ba040a89e6fd49232f84946cbea47dbecc2f430" + }, + "entryPoint": "azure-ai-agents-darwin-amd64", + "url": "https://github.com/Azure/azure-dev/releases/download/azd-ext-azure-ai-agents_0.1.34-preview/azure-ai-agents-darwin-amd64.zip" + }, + "darwin/arm64": { + "checksum": { + "algorithm": "sha256", + "value": "c530b651a21550a050b899495ab24320a573c79f66b2f0dcd0352509d7f260d4" + }, + "entryPoint": "azure-ai-agents-darwin-arm64", + "url": "https://github.com/Azure/azure-dev/releases/download/azd-ext-azure-ai-agents_0.1.34-preview/azure-ai-agents-darwin-arm64.zip" + }, + "linux/amd64": { + "checksum": { + "algorithm": "sha256", + "value": "c4e0d9694847b4af6cda6ac48675ff99722887d9fed8907af4f5e83c170f0cc6" + }, + "entryPoint": "azure-ai-agents-linux-amd64", + "url": "https://github.com/Azure/azure-dev/releases/download/azd-ext-azure-ai-agents_0.1.34-preview/azure-ai-agents-linux-amd64.tar.gz" + }, + "linux/arm64": { + "checksum": { + "algorithm": "sha256", + "value": "9b2d28f0efb9f946059e96b325aa1981285cf2b108e11f475b34d38d1e41585c" + }, + "entryPoint": "azure-ai-agents-linux-arm64", + "url": "https://github.com/Azure/azure-dev/releases/download/azd-ext-azure-ai-agents_0.1.34-preview/azure-ai-agents-linux-arm64.tar.gz" + }, + "windows/amd64": { + "checksum": { + "algorithm": "sha256", + "value": "42dbcdbd8e8ceaeb79d0f5eb4367401bd89022594af9bd0acd6dea80e4833c22" + }, + "entryPoint": "azure-ai-agents-windows-amd64.exe", + "url": "https://github.com/Azure/azure-dev/releases/download/azd-ext-azure-ai-agents_0.1.34-preview/azure-ai-agents-windows-amd64.zip" + }, + "windows/arm64": { + "checksum": { + "algorithm": "sha256", + "value": "0f962b13b5f3794f534ee5f28b7fb912b5693e63a70a552764a0e8dbf5d0f176" + }, + "entryPoint": "azure-ai-agents-windows-arm64.exe", + "url": "https://github.com/Azure/azure-dev/releases/download/azd-ext-azure-ai-agents_0.1.34-preview/azure-ai-agents-windows-arm64.zip" + } + } } ] },