From d1002e10bd205d786e7fa388e0e49d3f8d3f6821 Mon Sep 17 00:00:00 2001 From: Jeffrey Chen Date: Wed, 8 Apr 2026 14:14:00 -0700 Subject: [PATCH 1/6] Update Fig spec for Azure Developer CLI (azd) --- .../terminal-suggest/src/completions/azd.ts | 663 ++++++++++-------- 1 file changed, 370 insertions(+), 293 deletions(-) diff --git a/extensions/terminal-suggest/src/completions/azd.ts b/extensions/terminal-suggest/src/completions/azd.ts index 97c9fc661910e..889ae07ae3a49 100644 --- a/extensions/terminal-suggest/src/completions/azd.ts +++ b/extensions/terminal-suggest/src/completions/azd.ts @@ -225,36 +225,36 @@ const completionSpec: Fig.Spec = { subcommands: [ { name: ['agent'], - description: 'Extension for the Foundry Agent Service. (Preview)', + description: 'Ship agents with Microsoft Foundry from your terminal. (Preview)', subcommands: [ { name: ['init'], description: 'Initialize a new AI agent project. (Preview)', options: [ { - name: ['--environment', '-e'], - description: 'The name of the azd environment to use.', + name: ['--manifest', '-m'], + description: 'Path or URI to an agent manifest to add to your azd project', args: [ { - name: 'environment', + name: 'manifest', }, ], }, { - name: ['--host'], - description: '[Optional] For container based agents, can override the default host to target a container app instead. Accepted values: \'containerapp\'', + name: ['--model'], + description: 'Name of the AI model to use (e.g., \'gpt-4o\'). If not specified, defaults to \'gpt-4.1-mini\'. Mutually exclusive with --model-deployment, with --model-deployment being used if both are provided', args: [ { - name: 'host', + name: 'model', }, ], }, { - name: ['--manifest', '-m'], - description: 'Path or URI to an agent manifest to add to your azd project', + name: ['--model-deployment', '-d'], + description: 'Name of an existing model deployment to use from the Foundry project. Only used when paired with an existing Foundry project, either via --project-id or interactive prompts', args: [ { - name: 'manifest', + name: 'model-deployment', }, ], }, @@ -269,7 +269,7 @@ const completionSpec: Fig.Spec = { }, { name: ['--src', '-s'], - description: '[Optional] Directory to download the agent definition to (defaults to \'src/\')', + description: 'Directory to download the agent definition to (defaults to \'src/\')', args: [ { name: 'src', @@ -279,115 +279,139 @@ const completionSpec: Fig.Spec = { ], }, { - name: ['monitor'], - description: 'Monitor logs from a hosted agent container.', + name: ['invoke'], + description: 'Send a message to your agent.', options: [ { - name: ['--account-name', '-a'], - description: 'Cognitive Services account name', + name: ['--conversation-id'], + description: 'Explicit conversation ID override', args: [ { - name: 'account-name', + name: 'conversation-id', }, ], }, { - name: ['--follow', '-f'], - description: 'Stream logs in real-time', - }, - { - name: ['--name', '-n'], - description: 'Name of the hosted agent (required)', + name: ['--input-file', '-f'], + description: 'Path to a file whose contents are sent as the request body', args: [ { - name: 'name', + name: 'input-file', }, ], }, { - name: ['--project-name', '-p'], - description: 'AI Foundry project name', - args: [ - { - name: 'project-name', - }, - ], + name: ['--local', '-l'], + description: 'Invoke on localhost instead of Foundry', }, { - name: ['--tail', '-l'], - description: 'Number of trailing log lines to fetch (1-300)', + name: ['--new-conversation'], + description: 'Force a new conversation (discard saved one)', + }, + { + name: ['--new-session'], + description: 'Force a new session (discard saved one)', + }, + { + name: ['--port'], + description: 'Local server port', args: [ { - name: 'tail', + name: 'port', }, ], }, { - name: ['--type', '-t'], - description: 'Type of logs: \'console\' (stdout/stderr) or \'system\' (container events)', + name: ['--session-id', '-s'], + description: 'Explicit session ID override', args: [ { - name: 'type', + name: 'session-id', }, ], }, { - name: ['--version', '-v'], - description: 'Version of the hosted agent (required)', + name: ['--timeout', '-t'], + description: 'Request timeout in seconds (0 for no timeout)', args: [ { - name: 'version', + name: 'timeout', }, ], }, ], }, { - name: ['show'], - description: 'Show the status of a hosted agent deployment.', + name: ['monitor'], + description: 'Monitor logs from a hosted agent.', options: [ { - name: ['--account-name', '-a'], - description: 'Cognitive Services account name', + name: ['--follow', '-f'], + description: 'Stream logs in real-time', + }, + { + name: ['--session', '-s'], + description: 'Session ID to stream logs for', args: [ { - name: 'account-name', + name: 'session', }, ], }, { - name: ['--name', '-n'], - description: 'Name of the hosted agent (required)', + name: ['--tail', '-l'], + description: 'Number of trailing log lines to fetch (1-300)', args: [ { - name: 'name', + name: 'tail', }, ], }, { - name: ['--output', '-o'], - description: 'Output format (json or table)', + name: ['--type', '-t'], + description: 'Type of logs: \'console\' (stdout/stderr) or \'system\' (container events)', args: [ { - name: 'output', + name: 'type', + }, + ], + }, + ], + }, + { + name: ['run'], + description: 'Run your agent locally for development.', + options: [ + { + name: ['--port', '-p'], + description: 'Port to listen on', + args: [ + { + name: 'port', }, ], }, { - name: ['--project-name', '-p'], - description: 'AI Foundry project name', + name: ['--start-command', '-c'], + description: 'Explicit startup command (overrides azure.yaml and auto-detection)', args: [ { - name: 'project-name', + name: 'start-command', }, ], }, + ], + }, + { + name: ['show'], + description: 'Show the status of a hosted agent deployment.', + options: [ { - name: ['--version', '-v'], - description: 'Version of the hosted agent (required)', + name: ['--output', '-o'], + description: 'Output format (json or table)', args: [ { - name: 'version', + name: 'output', }, ], }, @@ -407,15 +431,6 @@ const completionSpec: Fig.Spec = { name: ['init'], description: 'Initialize a new AI Fine-tuning project. (Preview)', options: [ - { - name: ['--environment', '-n'], - description: 'The name of the azd environment to use.', - args: [ - { - name: 'environment', - }, - ], - }, { name: ['--from-job', '-j'], description: 'Clone configuration from an existing job ID', @@ -895,15 +910,6 @@ const completionSpec: Fig.Spec = { }, ], }, - { - name: ['--blob-uri'], - description: 'Already-uploaded blob URI (skips upload, registers directly)', - args: [ - { - name: 'blob-uri', - }, - ], - }, { name: ['--description'], description: 'Model description', @@ -922,6 +928,10 @@ const completionSpec: Fig.Spec = { }, ], }, + { + name: ['--no-wait'], + description: 'Start async registration and return immediately with the operation URL', + }, { name: ['--project-endpoint', '-e'], description: 'Azure AI Foundry project endpoint URL (e.g., https://account.services.ai.azure.com/api/projects/project-name)', @@ -1100,7 +1110,7 @@ const completionSpec: Fig.Spec = { }, { name: ['--version'], - description: 'Model version', + description: 'Model version (defaults to latest)', args: [ { name: 'version', @@ -1135,15 +1145,6 @@ const completionSpec: Fig.Spec = { name: ['init'], description: 'Initialize a new AI models project. (Preview)', options: [ - { - name: ['--environment', '-n'], - description: 'The name of the azd environment to use', - args: [ - { - name: 'environment', - }, - ], - }, { name: ['--project-endpoint', '-e'], description: 'Azure AI Foundry project endpoint URL (e.g., https://account.services.ai.azure.com/api/projects/project-name)', @@ -1471,6 +1472,196 @@ const completionSpec: Fig.Spec = { }, ], }, + { + name: ['copilot'], + description: 'Manage GitHub Copilot agent settings. (Preview)', + subcommands: [ + { + name: ['consent'], + description: 'Manage tool consent.', + subcommands: [ + { + name: ['grant'], + description: 'Grant consent trust rules.', + options: [ + { + name: ['--action'], + description: 'Action type: \'all\' or \'readonly\'', + args: [ + { + name: 'action', + suggestions: ['all', 'readonly'], + }, + ], + }, + { + name: ['--global'], + description: 'Apply globally to all servers', + }, + { + name: ['--operation'], + description: 'Operation type: \'tool\' or \'sampling\'', + args: [ + { + name: 'operation', + suggestions: ['tool', 'sampling'], + }, + ], + }, + { + name: ['--permission'], + description: 'Permission: \'allow\', \'deny\', or \'prompt\'', + args: [ + { + name: 'permission', + suggestions: ['allow', 'deny', 'prompt'], + }, + ], + }, + { + name: ['--scope'], + description: 'Rule scope: \'global\', or \'project\'', + args: [ + { + name: 'scope', + suggestions: ['global', 'project'], + }, + ], + }, + { + name: ['--server'], + description: 'Server name', + args: [ + { + name: 'server', + }, + ], + }, + { + name: ['--tool'], + description: 'Specific tool name (requires --server)', + args: [ + { + name: 'tool', + }, + ], + }, + ], + }, + { + name: ['list'], + description: 'List consent rules.', + options: [ + { + name: ['--action'], + description: 'Action type to filter by (readonly, any)', + args: [ + { + name: 'action', + suggestions: ['all', 'readonly'], + }, + ], + }, + { + name: ['--operation'], + description: 'Operation to filter by (tool, sampling)', + args: [ + { + name: 'operation', + suggestions: ['tool', 'sampling'], + }, + ], + }, + { + name: ['--permission'], + description: 'Permission to filter by (allow, deny, prompt)', + args: [ + { + name: 'permission', + suggestions: ['allow', 'deny', 'prompt'], + }, + ], + }, + { + name: ['--scope'], + description: 'Consent scope to filter by (global, project). If not specified, lists rules from all scopes.', + args: [ + { + name: 'scope', + suggestions: ['global', 'project'], + }, + ], + }, + { + name: ['--target'], + description: 'Specific target to operate on (server/tool format)', + args: [ + { + name: 'target', + }, + ], + }, + ], + }, + { + name: ['revoke'], + description: 'Revoke consent rules.', + options: [ + { + name: ['--action'], + description: 'Action type to filter by (readonly, any)', + args: [ + { + name: 'action', + suggestions: ['all', 'readonly'], + }, + ], + }, + { + name: ['--operation'], + description: 'Operation to filter by (tool, sampling)', + args: [ + { + name: 'operation', + suggestions: ['tool', 'sampling'], + }, + ], + }, + { + name: ['--permission'], + description: 'Permission to filter by (allow, deny, prompt)', + args: [ + { + name: 'permission', + suggestions: ['allow', 'deny', 'prompt'], + }, + ], + }, + { + name: ['--scope'], + description: 'Consent scope to filter by (global, project). If not specified, revokes rules from all scopes.', + args: [ + { + name: 'scope', + suggestions: ['global', 'project'], + }, + ], + }, + { + name: ['--target'], + description: 'Specific target to operate on (server/tool format)', + args: [ + { + name: 'target', + }, + ], + }, + ], + }, + ], + }, + ], + }, { name: ['demo'], description: 'This extension provides examples of the azd extension framework.', @@ -1559,6 +1750,15 @@ const completionSpec: Fig.Spec = { }, ], }, + { + name: ['--timeout'], + description: 'Maximum time in seconds for azd to wait for each service deployment. This stops azd from waiting but does not cancel the Azure-side deployment. (default: 1200)', + args: [ + { + name: 'timeout', + }, + ], + }, ], args: { name: 'service', @@ -2054,14 +2254,23 @@ const completionSpec: Fig.Spec = { subcommands: [ { name: ['run'], - description: 'Runs the specified hook for the project and services', + description: 'Runs the specified hook for the project, provisioning layers, and services', options: [ { - name: ['--environment', '-e'], - description: 'The name of the environment to use.', + name: ['--environment', '-e'], + description: 'The name of the environment to use.', + args: [ + { + name: 'environment', + }, + ], + }, + { + name: ['--layer'], + description: 'Only runs hooks for the specified provisioning layer.', args: [ { - name: 'environment', + name: 'layer', }, ], }, @@ -2213,190 +2422,6 @@ const completionSpec: Fig.Spec = { name: ['mcp'], description: 'Manage Model Context Protocol (MCP) server. (Alpha)', subcommands: [ - { - name: ['consent'], - description: 'Manage MCP tool consent.', - subcommands: [ - { - name: ['grant'], - description: 'Grant consent trust rules.', - options: [ - { - name: ['--action'], - description: 'Action type: \'all\' or \'readonly\'', - args: [ - { - name: 'action', - suggestions: ['all', 'readonly'], - }, - ], - }, - { - name: ['--global'], - description: 'Apply globally to all servers', - }, - { - name: ['--operation'], - description: 'Operation type: \'tool\' or \'sampling\'', - args: [ - { - name: 'operation', - suggestions: ['tool', 'sampling'], - }, - ], - }, - { - name: ['--permission'], - description: 'Permission: \'allow\', \'deny\', or \'prompt\'', - args: [ - { - name: 'permission', - suggestions: ['allow', 'deny', 'prompt'], - }, - ], - }, - { - name: ['--scope'], - description: 'Rule scope: \'global\', or \'project\'', - args: [ - { - name: 'scope', - suggestions: ['global', 'project'], - }, - ], - }, - { - name: ['--server'], - description: 'Server name', - args: [ - { - name: 'server', - }, - ], - }, - { - name: ['--tool'], - description: 'Specific tool name (requires --server)', - args: [ - { - name: 'tool', - }, - ], - }, - ], - }, - { - name: ['list'], - description: 'List consent rules.', - options: [ - { - name: ['--action'], - description: 'Action type to filter by (readonly, any)', - args: [ - { - name: 'action', - suggestions: ['all', 'readonly'], - }, - ], - }, - { - name: ['--operation'], - description: 'Operation to filter by (tool, sampling)', - args: [ - { - name: 'operation', - suggestions: ['tool', 'sampling'], - }, - ], - }, - { - name: ['--permission'], - description: 'Permission to filter by (allow, deny, prompt)', - args: [ - { - name: 'permission', - suggestions: ['allow', 'deny', 'prompt'], - }, - ], - }, - { - name: ['--scope'], - description: 'Consent scope to filter by (global, project). If not specified, lists rules from all scopes.', - args: [ - { - name: 'scope', - suggestions: ['global', 'project'], - }, - ], - }, - { - name: ['--target'], - description: 'Specific target to operate on (server/tool format)', - args: [ - { - name: 'target', - }, - ], - }, - ], - }, - { - name: ['revoke'], - description: 'Revoke consent rules.', - options: [ - { - name: ['--action'], - description: 'Action type to filter by (readonly, any)', - args: [ - { - name: 'action', - suggestions: ['all', 'readonly'], - }, - ], - }, - { - name: ['--operation'], - description: 'Operation to filter by (tool, sampling)', - args: [ - { - name: 'operation', - suggestions: ['tool', 'sampling'], - }, - ], - }, - { - name: ['--permission'], - description: 'Permission to filter by (allow, deny, prompt)', - args: [ - { - name: 'permission', - suggestions: ['allow', 'deny', 'prompt'], - }, - ], - }, - { - name: ['--scope'], - description: 'Consent scope to filter by (global, project). If not specified, revokes rules from all scopes.', - args: [ - { - name: 'scope', - suggestions: ['global', 'project'], - }, - ], - }, - { - name: ['--target'], - description: 'Specific target to operate on (server/tool format)', - args: [ - { - name: 'target', - }, - ], - }, - ], - }, - ], - }, { name: ['start'], description: 'Starts the MCP server.', @@ -2808,6 +2833,30 @@ const completionSpec: Fig.Spec = { }, ], }, + { + name: ['update'], + description: 'Updates azd to the latest version.', + options: [ + { + name: ['--channel'], + description: 'Update channel: stable or daily.', + args: [ + { + name: 'channel', + }, + ], + }, + { + name: ['--check-interval-hours'], + description: 'Override the update check interval in hours.', + args: [ + { + name: 'check-interval-hours', + }, + ], + }, + ], + }, { name: ['version'], description: 'Print the version number of Azure Developer CLI.', @@ -3063,15 +3112,23 @@ const completionSpec: Fig.Spec = { subcommands: [ { name: ['agent'], - description: 'Extension for the Foundry Agent Service. (Preview)', + description: 'Ship agents with Microsoft Foundry from your terminal. (Preview)', subcommands: [ { name: ['init'], description: 'Initialize a new AI agent project. (Preview)', }, + { + name: ['invoke'], + description: 'Send a message to your agent.', + }, { name: ['monitor'], - description: 'Monitor logs from a hosted agent container.', + description: 'Monitor logs from a hosted agent.', + }, + { + name: ['run'], + description: 'Run your agent locally for development.', }, { name: ['show'], @@ -3289,6 +3346,30 @@ const completionSpec: Fig.Spec = { }, ], }, + { + name: ['copilot'], + description: 'Manage GitHub Copilot agent settings. (Preview)', + subcommands: [ + { + name: ['consent'], + description: 'Manage tool consent.', + subcommands: [ + { + name: ['grant'], + description: 'Grant consent trust rules.', + }, + { + name: ['list'], + description: 'List consent rules.', + }, + { + name: ['revoke'], + description: 'Revoke consent rules.', + }, + ], + }, + ], + }, { name: ['demo'], description: 'This extension provides examples of the azd extension framework.', @@ -3473,7 +3554,7 @@ const completionSpec: Fig.Spec = { subcommands: [ { name: ['run'], - description: 'Runs the specified hook for the project and services', + description: 'Runs the specified hook for the project, provisioning layers, and services', }, ], }, @@ -3495,24 +3576,6 @@ const completionSpec: Fig.Spec = { name: ['mcp'], description: 'Manage Model Context Protocol (MCP) server. (Alpha)', subcommands: [ - { - name: ['consent'], - description: 'Manage MCP tool consent.', - subcommands: [ - { - name: ['grant'], - description: 'Grant consent trust rules.', - }, - { - name: ['list'], - description: 'List consent rules.', - }, - { - name: ['revoke'], - description: 'Revoke consent rules.', - }, - ], - }, { name: ['start'], description: 'Starts the MCP server.', @@ -3589,6 +3652,10 @@ const completionSpec: Fig.Spec = { name: ['up'], description: 'Provision and deploy your project to Azure with a single command.', }, + { + name: ['update'], + description: 'Updates azd to the latest version.', + }, { name: ['version'], description: 'Print the version number of Azure Developer CLI.', @@ -3646,6 +3713,16 @@ const completionSpec: Fig.Spec = { description: 'Enables debugging and diagnostics logging.', isPersistent: true, }, + { + name: ['--environment', '-e'], + description: 'The name of the environment to use.', + isPersistent: true, + args: [ + { + name: 'environment', + }, + ], + }, { name: ['--no-prompt'], description: 'Accepts the default value instead of prompting, or it fails if there is no default.', From 7326bbc819e3730873f849527c4b254a2716d750 Mon Sep 17 00:00:00 2001 From: JeffreyCA Date: Wed, 8 Apr 2026 14:43:59 -0700 Subject: [PATCH 2/6] Refactor action descriptions and clean up options Updated action type descriptions and removed redundant environment options from multiple commands. --- .../terminal-suggest/src/completions/azd.ts | 214 +----------------- 1 file changed, 2 insertions(+), 212 deletions(-) diff --git a/extensions/terminal-suggest/src/completions/azd.ts b/extensions/terminal-suggest/src/completions/azd.ts index 889ae07ae3a49..b3e33b35340cf 100644 --- a/extensions/terminal-suggest/src/completions/azd.ts +++ b/extensions/terminal-suggest/src/completions/azd.ts @@ -1554,7 +1554,7 @@ const completionSpec: Fig.Spec = { options: [ { name: ['--action'], - description: 'Action type to filter by (readonly, any)', + description: 'Action type to filter by (all, readonly)', args: [ { name: 'action', @@ -1609,7 +1609,7 @@ const completionSpec: Fig.Spec = { options: [ { name: ['--action'], - description: 'Action type to filter by (readonly, any)', + description: 'Action type to filter by (all, readonly)', args: [ { name: 'action', @@ -1732,15 +1732,6 @@ const completionSpec: Fig.Spec = { name: ['--all'], description: 'Deploys all services that are listed in azure.yaml', }, - { - name: ['--environment', '-e'], - description: 'The name of the environment to use.', - args: [ - { - name: 'environment', - }, - ], - }, { name: ['--from-package'], description: 'Deploys the packaged service located at the provided path. Supports zipped file packages (file path) or container images (image tag).', @@ -1769,15 +1760,6 @@ const completionSpec: Fig.Spec = { name: ['down'], description: 'Delete your project\'s Azure resources.', options: [ - { - name: ['--environment', '-e'], - description: 'The name of the environment to use.', - args: [ - { - name: 'environment', - }, - ], - }, { name: ['--force'], description: 'Does not require confirmation before it deletes resources.', @@ -1805,17 +1787,6 @@ const completionSpec: Fig.Spec = { { name: ['get'], description: 'Gets a configuration value from the environment.', - options: [ - { - name: ['--environment', '-e'], - description: 'The name of the environment to use.', - args: [ - { - name: 'environment', - }, - ], - }, - ], args: { name: 'path', }, @@ -1823,17 +1794,6 @@ const completionSpec: Fig.Spec = { { name: ['set'], description: 'Sets a configuration value in the environment.', - options: [ - { - name: ['--environment', '-e'], - description: 'The name of the environment to use.', - args: [ - { - name: 'environment', - }, - ], - }, - ], args: [ { name: 'path', @@ -1846,17 +1806,6 @@ const completionSpec: Fig.Spec = { { name: ['unset'], description: 'Unsets a configuration value in the environment.', - options: [ - { - name: ['--environment', '-e'], - description: 'The name of the environment to use.', - args: [ - { - name: 'environment', - }, - ], - }, - ], args: { name: 'path', }, @@ -1866,17 +1815,6 @@ const completionSpec: Fig.Spec = { { name: ['get-value'], description: 'Get specific environment value.', - options: [ - { - name: ['--environment', '-e'], - description: 'The name of the environment to use.', - args: [ - { - name: 'environment', - }, - ], - }, - ], args: { name: 'keyName', generators: azdGenerators.listEnvironmentVariables, @@ -1885,17 +1823,6 @@ const completionSpec: Fig.Spec = { { name: ['get-values'], description: 'Get all environment values.', - options: [ - { - name: ['--environment', '-e'], - description: 'The name of the environment to use.', - args: [ - { - name: 'environment', - }, - ], - }, - ], }, { name: ['list', 'ls'], @@ -1932,15 +1859,6 @@ const completionSpec: Fig.Spec = { name: ['refresh'], description: 'Refresh environment values by using information from a previous infrastructure provision.', options: [ - { - name: ['--environment', '-e'], - description: 'The name of the environment to use.', - args: [ - { - name: 'environment', - }, - ], - }, { name: ['--hint'], description: 'Hint to help identify the environment to refresh', @@ -1968,15 +1886,6 @@ const completionSpec: Fig.Spec = { name: ['remove', 'rm'], description: 'Remove an environment.', options: [ - { - name: ['--environment', '-e'], - description: 'The name of the environment to use.', - args: [ - { - name: 'environment', - }, - ], - }, { name: ['--force'], description: 'Skips confirmation before performing removal.', @@ -2000,15 +1909,6 @@ const completionSpec: Fig.Spec = { name: ['set'], description: 'Set one or more environment values.', options: [ - { - name: ['--environment', '-e'], - description: 'The name of the environment to use.', - args: [ - { - name: 'environment', - }, - ], - }, { name: ['--file'], description: 'Path to .env formatted file to load environment values from.', @@ -2033,17 +1933,6 @@ const completionSpec: Fig.Spec = { { name: ['set-secret'], description: 'Set a name as a reference to a Key Vault secret in the environment.', - options: [ - { - name: ['--environment', '-e'], - description: 'The name of the environment to use.', - args: [ - { - name: 'environment', - }, - ], - }, - ], args: { name: 'name', }, @@ -2256,15 +2145,6 @@ const completionSpec: Fig.Spec = { name: ['run'], description: 'Runs the specified hook for the project, provisioning layers, and services', options: [ - { - name: ['--environment', '-e'], - description: 'The name of the environment to use.', - args: [ - { - name: 'environment', - }, - ], - }, { name: ['--layer'], description: 'Only runs hooks for the specified provisioning layer.', @@ -2325,15 +2205,6 @@ const completionSpec: Fig.Spec = { name: ['generate', 'gen', 'synth'], description: 'Write IaC for your project to disk, allowing you to manually manage it.', options: [ - { - name: ['--environment', '-e'], - description: 'The name of the environment to use.', - args: [ - { - name: 'environment', - }, - ], - }, { name: ['--force'], description: 'Overwrite any existing files without prompting', @@ -2356,15 +2227,6 @@ const completionSpec: Fig.Spec = { }, ], }, - { - name: ['--environment', '-e'], - description: 'The name of the environment to use.', - args: [ - { - name: 'environment', - }, - ], - }, { name: ['--filter', '-f'], description: 'The tag(s) used to filter template results. Supports comma-separated values.', @@ -2432,15 +2294,6 @@ const completionSpec: Fig.Spec = { name: ['monitor'], description: 'Monitor a deployed project.', options: [ - { - name: ['--environment', '-e'], - description: 'The name of the environment to use.', - args: [ - { - name: 'environment', - }, - ], - }, { name: ['--live'], description: 'Open a browser to Application Insights Live Metrics. Live Metrics is currently not supported for Python apps.', @@ -2463,15 +2316,6 @@ const completionSpec: Fig.Spec = { name: ['--all'], description: 'Packages all services that are listed in azure.yaml', }, - { - name: ['--environment', '-e'], - description: 'The name of the environment to use.', - args: [ - { - name: 'environment', - }, - ], - }, { name: ['--output-path'], description: 'File or folder path where the generated packages will be saved.', @@ -2514,15 +2358,6 @@ const completionSpec: Fig.Spec = { }, ], }, - { - name: ['--environment', '-e'], - description: 'The name of the environment to use.', - args: [ - { - name: 'environment', - }, - ], - }, { name: ['--principal-id'], description: 'The client id of the service principal to use to grant access to Azure resources as part of the pipeline.', @@ -2578,15 +2413,6 @@ const completionSpec: Fig.Spec = { name: ['provision'], description: 'Provision Azure resources for your project.', options: [ - { - name: ['--environment', '-e'], - description: 'The name of the environment to use.', - args: [ - { - name: 'environment', - }, - ], - }, { name: ['--location', '-l'], description: 'Azure location for the new environment', @@ -2627,15 +2453,6 @@ const completionSpec: Fig.Spec = { name: ['--all'], description: 'Publishes all services that are listed in azure.yaml', }, - { - name: ['--environment', '-e'], - description: 'The name of the environment to use.', - args: [ - { - name: 'environment', - }, - ], - }, { name: ['--from-package'], description: 'Publishes the service from a container image (image tag).', @@ -2668,15 +2485,6 @@ const completionSpec: Fig.Spec = { name: ['--all'], description: 'Restores all services that are listed in azure.yaml', }, - { - name: ['--environment', '-e'], - description: 'The name of the environment to use.', - args: [ - { - name: 'environment', - }, - ], - }, ], args: { name: 'service', @@ -2687,15 +2495,6 @@ const completionSpec: Fig.Spec = { name: ['show'], description: 'Display information about your project and its resources.', options: [ - { - name: ['--environment', '-e'], - description: 'The name of the environment to use.', - args: [ - { - name: 'environment', - }, - ], - }, { name: ['--show-secrets'], description: 'Unmask secrets in output.', @@ -2804,15 +2603,6 @@ const completionSpec: Fig.Spec = { name: ['up'], description: 'Provision and deploy your project to Azure with a single command.', options: [ - { - name: ['--environment', '-e'], - description: 'The name of the environment to use.', - args: [ - { - name: 'environment', - }, - ], - }, { name: ['--location', '-l'], description: 'Azure location for the new environment', From 0812c060b805e47c4651222fc8020b07dd90dc97 Mon Sep 17 00:00:00 2001 From: JeffreyCA Date: Fri, 10 Apr 2026 10:22:40 -0700 Subject: [PATCH 3/6] Update azd Fig spec Added support for --protocol option with description and repeatable argument. --- .../terminal-suggest/src/completions/azd.ts | 15 +++++++++++++-- 1 file changed, 13 insertions(+), 2 deletions(-) diff --git a/extensions/terminal-suggest/src/completions/azd.ts b/extensions/terminal-suggest/src/completions/azd.ts index b3e33b35340cf..38d0bf30b4d65 100644 --- a/extensions/terminal-suggest/src/completions/azd.ts +++ b/extensions/terminal-suggest/src/completions/azd.ts @@ -267,6 +267,16 @@ const completionSpec: Fig.Spec = { }, ], }, + { + name: ['--protocol'], + description: 'Protocols supported by the agent (e.g., \'responses\', \'invocations\'). Can be specified multiple times.', + isRepeatable: true, + args: [ + { + name: 'protocol', + }, + ], + }, { name: ['--src', '-s'], description: 'Directory to download the agent definition to (defaults to \'src/\')', @@ -404,7 +414,7 @@ const completionSpec: Fig.Spec = { }, { name: ['show'], - description: 'Show the status of a hosted agent deployment.', + description: 'Show the status of a hosted agent.', options: [ { name: ['--output', '-o'], @@ -2922,7 +2932,7 @@ const completionSpec: Fig.Spec = { }, { name: ['show'], - description: 'Show the status of a hosted agent deployment.', + description: 'Show the status of a hosted agent.', }, { name: ['version'], @@ -3532,3 +3542,4 @@ const completionSpec: Fig.Spec = { }; export default completionSpec; + From 00e4f0f9c086e3f552044b4aaa0427db15023966 Mon Sep 17 00:00:00 2001 From: JeffreyCA Date: Mon, 20 Apr 2026 13:32:24 -0700 Subject: [PATCH 4/6] Update azd Fig spec Update protocol and session ID descriptions --- .../terminal-suggest/src/completions/azd.ts | 18 +++++++++++++----- 1 file changed, 13 insertions(+), 5 deletions(-) diff --git a/extensions/terminal-suggest/src/completions/azd.ts b/extensions/terminal-suggest/src/completions/azd.ts index 38d0bf30b4d65..1e8514475bb26 100644 --- a/extensions/terminal-suggest/src/completions/azd.ts +++ b/extensions/terminal-suggest/src/completions/azd.ts @@ -331,6 +331,15 @@ const completionSpec: Fig.Spec = { }, ], }, + { + name: ['--protocol', '-p'], + description: 'Protocol to use: responses (default) or invocations', + args: [ + { + name: 'protocol', + }, + ], + }, { name: ['--session-id', '-s'], description: 'Explicit session ID override', @@ -360,11 +369,11 @@ const completionSpec: Fig.Spec = { description: 'Stream logs in real-time', }, { - name: ['--session', '-s'], + name: ['--session-id', '-s'], description: 'Session ID to stream logs for', args: [ { - name: 'session', + name: 'session-id', }, ], }, @@ -1202,7 +1211,7 @@ const completionSpec: Fig.Spec = { options: [ { name: ['--dst'], - description: 'The destination slot name. Use @main for production.', + description: 'The destination slot name. Use \'production\' for main app.', args: [ { name: 'dst', @@ -1220,7 +1229,7 @@ const completionSpec: Fig.Spec = { }, { name: ['--src'], - description: 'The source slot name. Use @main for production.', + description: 'The source slot name. Use \'production\' for main app.', args: [ { name: 'src', @@ -3542,4 +3551,3 @@ const completionSpec: Fig.Spec = { }; export default completionSpec; - From 4d92beb29334ebfcc556c66340ec262aee40b0eb Mon Sep 17 00:00:00 2001 From: JeffreyCA Date: Wed, 29 Apr 2026 09:27:37 -0700 Subject: [PATCH 5/6] Update azd Fig spec Add file management commands for agents extension --- .../terminal-suggest/src/completions/azd.ts | 435 +++++++++++++++++- 1 file changed, 434 insertions(+), 1 deletion(-) diff --git a/extensions/terminal-suggest/src/completions/azd.ts b/extensions/terminal-suggest/src/completions/azd.ts index 1e8514475bb26..f756bd1bc735c 100644 --- a/extensions/terminal-suggest/src/completions/azd.ts +++ b/extensions/terminal-suggest/src/completions/azd.ts @@ -227,6 +227,232 @@ const completionSpec: Fig.Spec = { name: ['agent'], description: 'Ship agents with Microsoft Foundry from your terminal. (Preview)', subcommands: [ + { + name: ['files'], + description: 'Manage files in a hosted agent session.', + subcommands: [ + { + name: ['delete', 'remove', 'rm'], + description: 'Delete a file or directory from 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: ['--file', '-f'], + description: 'Remote file or directory path to delete', + args: [ + { + name: 'file', + }, + ], + }, + { + name: ['--recursive'], + description: 'Recursively delete directories and their contents', + }, + { + name: ['--session-id', '-s'], + description: 'Session ID override (defaults to last invoke session)', + args: [ + { + name: 'session-id', + }, + ], + }, + ], + }, + { + 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)', + args: [ + { + name: 'agent-name', + }, + ], + }, + { + name: ['--file', '-f'], + description: 'Remote file path to download', + args: [ + { + name: 'file', + }, + ], + }, + { + name: ['--session-id', '-s'], + description: 'Session ID override (defaults to last invoke session)', + args: [ + { + name: 'session-id', + }, + ], + }, + { + name: ['--target-path', '-t'], + description: 'Local destination path (defaults to remote filename)', + args: [ + { + name: 'target-path', + }, + ], + }, + ], + }, + { + name: ['list', 'ls'], + description: 'List files 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: ['--output'], + description: 'Output format (json or table)', + args: [ + { + name: 'output', + }, + ], + }, + { + name: ['--session-id', '-s'], + description: 'Session ID override (defaults to last invoke session)', + args: [ + { + name: 'session-id', + }, + ], + }, + ], + }, + { + 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: ['--dir', '-d'], + description: 'Remote directory path to create', + args: [ + { + name: 'dir', + }, + ], + }, + { + name: ['--session-id', '-s'], + description: 'Session ID override (defaults to last invoke session)', + args: [ + { + name: 'session-id', + }, + ], + }, + ], + }, + { + 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: ['--output', '-o'], + description: 'Output format (json or table)', + args: [ + { + name: 'output', + }, + ], + }, + { + name: ['--session-id', '-s'], + description: 'Session ID override (defaults to last invoke session)', + args: [ + { + name: 'session-id', + }, + ], + }, + ], + }, + { + 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: ['--file', '-f'], + description: 'Local file path to upload', + args: [ + { + name: 'file', + }, + ], + }, + { + 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: ['init'], description: 'Initialize a new AI agent project. (Preview)', @@ -368,6 +594,10 @@ const completionSpec: Fig.Spec = { name: ['--follow', '-f'], description: 'Stream logs in real-time', }, + { + name: ['--raw'], + description: 'Print the raw SSE stream without formatting', + }, { name: ['--session-id', '-s'], description: 'Session ID to stream logs for', @@ -395,6 +625,10 @@ const completionSpec: Fig.Spec = { }, ], }, + { + name: ['--utc'], + description: 'Display timestamps in UTC instead of local time', + }, ], }, { @@ -421,6 +655,153 @@ const completionSpec: Fig.Spec = { }, ], }, + { + name: ['sessions'], + description: 'Manage sessions for a hosted agent endpoint.', + subcommands: [ + { + name: ['create'], + description: 'Create a new session for a hosted agent.', + options: [ + { + name: ['--agent-name', '-n'], + description: 'Agent name (matches azure.yaml service name; auto-detected when only one exists)', + args: [ + { + name: 'agent-name', + }, + ], + }, + { + name: ['--isolation-key'], + description: 'Isolation key for session ownership (derived from Entra token by default)', + args: [ + { + name: 'isolation-key', + }, + ], + }, + { + name: ['--output', '-o'], + description: 'Output format (json or table)', + args: [ + { + name: 'output', + }, + ], + }, + { + name: ['--session-id'], + description: 'Optional caller-provided session ID (auto-generated if omitted)', + args: [ + { + name: 'session-id', + }, + ], + }, + { + name: ['--version'], + description: 'Agent version to back the session (auto-resolved from azd environment if omitted)', + args: [ + { + name: 'version', + }, + ], + }, + ], + }, + { + name: ['delete'], + description: 'Delete a 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: ['--isolation-key'], + description: 'Isolation key for session ownership (derived from Entra token by default)', + args: [ + { + name: 'isolation-key', + }, + ], + }, + ], + }, + { + name: ['list'], + description: 'List sessions for a hosted agent.', + options: [ + { + name: ['--agent-name', '-n'], + description: 'Agent name (matches azure.yaml service name; auto-detected when only one exists)', + args: [ + { + name: 'agent-name', + }, + ], + }, + { + name: ['--limit'], + description: 'Maximum number of sessions to return', + args: [ + { + name: 'limit', + }, + ], + }, + { + name: ['--output', '-o'], + description: 'Output format (json or table)', + args: [ + { + name: 'output', + }, + ], + }, + { + name: ['--pagination-token'], + description: 'Continuation token from a previous list response', + args: [ + { + name: 'pagination-token', + }, + ], + }, + ], + }, + { + name: ['show'], + description: 'Show details of a 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: ['--output', '-o'], + description: 'Output format (json or table)', + args: [ + { + name: 'output', + }, + ], + }, + ], + }, + ], + }, { name: ['show'], description: 'Show the status of a hosted agent.', @@ -2923,6 +3304,36 @@ const completionSpec: Fig.Spec = { name: ['agent'], description: 'Ship agents with Microsoft Foundry from your terminal. (Preview)', subcommands: [ + { + name: ['files'], + description: 'Manage files in a hosted agent session.', + subcommands: [ + { + name: ['delete', 'remove', 'rm'], + description: 'Delete a file or directory from a hosted agent session.', + }, + { + name: ['download'], + description: 'Download a file from a hosted agent session.', + }, + { + name: ['list', 'ls'], + description: 'List files in a hosted agent session.', + }, + { + name: ['mkdir'], + description: 'Create a directory in a hosted agent session.', + }, + { + name: ['stat'], + description: 'Get file or directory metadata in a hosted agent session.', + }, + { + name: ['upload'], + description: 'Upload a file to a hosted agent session.', + }, + ], + }, { name: ['init'], description: 'Initialize a new AI agent project. (Preview)', @@ -2939,6 +3350,28 @@ const completionSpec: Fig.Spec = { name: ['run'], description: 'Run your agent locally for development.', }, + { + name: ['sessions'], + description: 'Manage sessions for a hosted agent endpoint.', + subcommands: [ + { + name: ['create'], + description: 'Create a new session for a hosted agent.', + }, + { + name: ['delete'], + description: 'Delete a session.', + }, + { + name: ['list'], + description: 'List sessions for a hosted agent.', + }, + { + name: ['show'], + description: 'Show details of a session.', + }, + ], + }, { name: ['show'], description: 'Show the status of a hosted agent.', @@ -3534,7 +3967,7 @@ const completionSpec: Fig.Spec = { }, { name: ['--no-prompt'], - description: 'Accepts the default value instead of prompting, or it fails if there is no default.', + description: 'Runs without prompts. Uses existing values; fails if any required value or decision cannot be resolved automatically.', isPersistent: true, }, { From 802e97641be4a5d38c76e468c5aee21dc1aa1c99 Mon Sep 17 00:00:00 2001 From: JeffreyCA Date: Tue, 5 May 2026 11:12:36 -0700 Subject: [PATCH 6/6] Update azd Fig spec Added commands for managing Azure development tools including check, install, list, show, and upgrade. --- .../terminal-suggest/src/completions/azd.ts | 83 ++++++++++++++++++- 1 file changed, 81 insertions(+), 2 deletions(-) diff --git a/extensions/terminal-suggest/src/completions/azd.ts b/extensions/terminal-suggest/src/completions/azd.ts index f756bd1bc735c..6e73b4580044f 100644 --- a/extensions/terminal-suggest/src/completions/azd.ts +++ b/extensions/terminal-suggest/src/completions/azd.ts @@ -2504,7 +2504,7 @@ const completionSpec: Fig.Spec = { }, { name: ['upgrade'], - description: 'Upgrade specified extensions.', + description: 'Upgrade installed extensions to the latest version.', options: [ { name: ['--all'], @@ -2999,6 +2999,59 @@ const completionSpec: Fig.Spec = { }, ], }, + { + name: ['tool'], + description: 'Manage Azure development tools.', + subcommands: [ + { + name: ['check'], + description: 'Check for tool updates.', + }, + { + name: ['install'], + description: 'Install specified tools.', + options: [ + { + name: ['--all'], + description: 'Install all recommended tools', + }, + { + name: ['--dry-run'], + description: 'Preview what would be installed without making changes', + }, + ], + args: { + name: 'tool-name...', + isOptional: true, + }, + }, + { + name: ['list'], + description: 'List all tools with status.', + }, + { + name: ['show'], + description: 'Show details for a specific tool.', + args: { + name: 'tool-name', + }, + }, + { + name: ['upgrade'], + description: 'Upgrade installed tools.', + options: [ + { + name: ['--dry-run'], + description: 'Preview what would be upgraded without making changes', + }, + ], + args: { + name: 'tool-name...', + isOptional: true, + }, + }, + ], + }, { name: ['up'], description: 'Provision and deploy your project to Azure with a single command.', @@ -3786,7 +3839,7 @@ const completionSpec: Fig.Spec = { }, { name: ['upgrade'], - description: 'Upgrade specified extensions.', + description: 'Upgrade installed extensions to the latest version.', }, ], }, @@ -3890,6 +3943,32 @@ const completionSpec: Fig.Spec = { }, ], }, + { + name: ['tool'], + description: 'Manage Azure development tools.', + subcommands: [ + { + name: ['check'], + description: 'Check for tool updates.', + }, + { + name: ['install'], + description: 'Install specified tools.', + }, + { + name: ['list'], + description: 'List all tools with status.', + }, + { + name: ['show'], + description: 'Show details for a specific tool.', + }, + { + name: ['upgrade'], + description: 'Upgrade installed tools.', + }, + ], + }, { name: ['up'], description: 'Provision and deploy your project to Azure with a single command.',