Skip to content

Initial commit of endpoint registration migration#15

Merged
joratz merged 20 commits into
mainfrom
users/joratz/abscli
Nov 17, 2025
Merged

Initial commit of endpoint registration migration#15
joratz merged 20 commits into
mainfrom
users/joratz/abscli

Conversation

@joratz
Copy link
Copy Markdown
Contributor

@joratz joratz commented Nov 15, 2025

No description provided.

@joratz joratz requested a review from a team as a code owner November 15, 2025 00:37
Copilot AI review requested due to automatic review settings November 15, 2025 00:37
Copy link
Copy Markdown
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull Request Overview

This PR migrates from Azure Bot Service bot registration to a new endpoint registration system using Agent Blueprint Identity. The changes replace Azure CLI-based bot creation with direct HTTP API calls to Agent365 endpoints for registering and deleting messaging endpoints.

Key changes:

  • Replaced CreateOrUpdateBotWithAgentBlueprintAsync with CreateEndpointWithAgentBlueprintAsync that calls REST APIs directly
  • Added DeleteEndpointWithAgentBlueprintAsync for endpoint cleanup
  • Removed Bot Service provider registration and channel configuration logic
  • Updated naming convention from "bot" to "endpoint" throughout the codebase

Reviewed Changes

Copilot reviewed 10 out of 10 changed files in this pull request and generated 15 comments.

Show a summary per file
File Description
BotConfigurator.cs Refactored to use HTTP API calls for endpoint registration instead of Azure CLI bot commands; added new dependencies for config and auth services
BotConfiguratorTests.cs Removed extensive bot-related tests; updated remaining tests to use new endpoint method signatures
SetupCommandTests.cs Updated mock call verification to match new endpoint method signature
CleanupCommandTests.cs Added BotConfigurator mock initialization to support new cleanup flow
SetupCommand.cs Removed bot service provider registration; updated to call new endpoint registration method
CreateInstanceCommand.cs Simplified bot configuration retrieval by using agent blueprint ID directly instead of querying Azure
CleanupCommand.cs Updated cleanup logic to call new endpoint deletion method instead of Azure CLI bot deletion
Program.cs Added BotConfigurator parameter to CleanupCommand initialization
Agent365Config.cs Changed bot name suffix from "-bot" to "-endpoint"
ConfigConstants.cs Added endpoint URL constants and helper methods for create/delete operations
Comments suppressed due to low confidence (1)

src/Microsoft.Agents.A365.DevTools.Cli/Commands/SetupCommand.cs:1

  • Extra space after comma. Should be 'botName, location' instead of 'botName, location'.
// Copyright (c) Microsoft Corporation.

Comment thread src/Microsoft.Agents.A365.DevTools.Cli/Services/BotConfigurator.cs Outdated
Comment thread src/Microsoft.Agents.A365.DevTools.Cli/Services/BotConfigurator.cs Outdated
Comment thread src/Microsoft.Agents.A365.DevTools.Cli/Services/BotConfigurator.cs Outdated
Comment thread src/Microsoft.Agents.A365.DevTools.Cli/Services/BotConfigurator.cs Outdated
Comment thread src/Microsoft.Agents.A365.DevTools.Cli/Services/BotConfigurator.cs Outdated
Comment thread src/Microsoft.Agents.A365.DevTools.Cli/Services/BotConfigurator.cs
Comment thread src/Microsoft.Agents.A365.DevTools.Cli/Services/BotConfigurator.cs Outdated
Comment thread src/Microsoft.Agents.A365.DevTools.Cli/Services/BotConfigurator.cs
Comment thread src/Microsoft.Agents.A365.DevTools.Cli/Services/BotConfigurator.cs
Comment thread src/Microsoft.Agents.A365.DevTools.Cli/Services/BotConfigurator.cs
LavanyaK235
LavanyaK235 previously approved these changes Nov 15, 2025
Copilot AI review requested due to automatic review settings November 15, 2025 08:24
Copy link
Copy Markdown
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull Request Overview

Copilot reviewed 12 out of 12 changed files in this pull request and generated 16 comments.

Comments suppressed due to low confidence (4)

src/Tests/Microsoft.Agents.A365.DevTools.Cli.Tests/Commands/CleanupCommandTests.cs:32

  • This assignment to mockBotLogger is useless, since its value is never read.
        var mockBotLogger = Substitute.For<ILogger<IBotConfigurator>>();

src/Tests/Microsoft.Agents.A365.DevTools.Cli.Tests/Commands/CleanupCommandTests.cs:34

  • This assignment to mockAuthService is useless, since its value is never read.
        var mockAuthService = Substitute.ForPartsOf<AuthenticationService>(mockAuthLogger);

src/Tests/Microsoft.Agents.A365.DevTools.Cli.Tests/Commands/CreateInstanceCommandTests.cs:34

  • This assignment to mockAuthService is useless, since its value is never read.
        var mockAuthService = Substitute.ForPartsOf<AuthenticationService>(mockAuthLogger);

src/Tests/Microsoft.Agents.A365.DevTools.Cli.Tests/Commands/SetupCommandTests.cs:55

  • This assignment to mockAuthService is useless, since its value is never read.
        var mockAuthService = Substitute.ForPartsOf<AuthenticationService>(mockAuthLogger);

Comment thread src/Microsoft.Agents.A365.DevTools.Cli/Services/IBotConfigurator.cs
Comment thread src/Microsoft.Agents.A365.DevTools.Cli/Constants/ConfigConstants.cs Outdated
Comment thread src/Microsoft.Agents.A365.DevTools.Cli/Services/BotConfigurator.cs Outdated
Comment thread src/Microsoft.Agents.A365.DevTools.Cli/Services/IBotConfigurator.cs
Comment thread src/Microsoft.Agents.A365.DevTools.Cli/Services/BotConfigurator.cs Outdated
Comment thread src/Tests/Microsoft.Agents.A365.DevTools.Cli.Tests/Commands/SetupCommandTests.cs Outdated
Comment thread src/Microsoft.Agents.A365.DevTools.Cli/Services/BotConfigurator.cs
…r.cs

Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
Copilot AI review requested due to automatic review settings November 15, 2025 09:01
Copy link
Copy Markdown
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull Request Overview

Copilot reviewed 12 out of 12 changed files in this pull request and generated 8 comments.

Comment thread src/Microsoft.Agents.A365.DevTools.Cli/Services/BotConfigurator.cs Outdated
Comment thread src/Microsoft.Agents.A365.DevTools.Cli/Services/BotConfigurator.cs
Comment thread src/Microsoft.Agents.A365.DevTools.Cli/Models/Agent365Config.cs Outdated
Comment thread src/Microsoft.Agents.A365.DevTools.Cli/Services/BotConfigurator.cs
Comment thread src/Tests/Microsoft.Agents.A365.DevTools.Cli.Tests/Commands/SetupCommandTests.cs Outdated
Copilot AI review requested due to automatic review settings November 15, 2025 22:06
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
LavanyaK235
LavanyaK235 previously approved these changes Nov 15, 2025
Copy link
Copy Markdown
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull Request Overview

Copilot reviewed 12 out of 12 changed files in this pull request and generated 15 comments.

Comments suppressed due to low confidence (2)

src/Tests/Microsoft.Agents.A365.DevTools.Cli.Tests/Commands/CleanupCommandTests.cs:32

  • This assignment to mockBotLogger is useless, since its value is never read.
        var mockBotLogger = Substitute.For<ILogger<IBotConfigurator>>();

src/Tests/Microsoft.Agents.A365.DevTools.Cli.Tests/Commands/CleanupCommandTests.cs:34

  • This assignment to mockAuthService is useless, since its value is never read.
        var mockAuthService = Substitute.ForPartsOf<AuthenticationService>(mockAuthLogger);

Comment thread src/Microsoft.Agents.A365.DevTools.Cli/Constants/ConfigConstants.cs Outdated
Comment thread src/Microsoft.Agents.A365.DevTools.Cli/Services/IBotConfigurator.cs
Comment thread src/Microsoft.Agents.A365.DevTools.Cli/Constants/ConfigConstants.cs
Comment thread src/Microsoft.Agents.A365.DevTools.Cli/Services/BotConfigurator.cs
Comment thread src/Microsoft.Agents.A365.DevTools.Cli/Services/BotConfigurator.cs
Copy link
Copy Markdown
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull Request Overview

Copilot reviewed 12 out of 12 changed files in this pull request and generated 10 comments.

Comments suppressed due to low confidence (1)

src/Microsoft.Agents.A365.DevTools.Cli/Commands/CleanupCommand.cs:182

  • This assignment to endpointName is useless, since its value is never read.
                    var endpointName = config.BotName.Length > 42
                        ? config.BotName.Substring(0, 42)
                        : config.BotName;

Comment thread src/Microsoft.Agents.A365.DevTools.Cli/Services/BotConfigurator.cs
Comment thread src/Microsoft.Agents.A365.DevTools.Cli/Services/BotConfigurator.cs
Comment thread src/Microsoft.Agents.A365.DevTools.Cli/Commands/CleanupCommand.cs Outdated
Comment thread src/Microsoft.Agents.A365.DevTools.Cli/Services/BotConfigurator.cs Outdated
Comment thread src/Microsoft.Agents.A365.DevTools.Cli/Services/BotConfigurator.cs
Comment thread src/Microsoft.Agents.A365.DevTools.Cli/Models/Agent365Config.cs
Comment thread src/Microsoft.Agents.A365.DevTools.Cli/Services/BotConfigurator.cs
Comment thread src/Microsoft.Agents.A365.DevTools.Cli/Services/BotConfigurator.cs
Comment thread src/Microsoft.Agents.A365.DevTools.Cli/Services/BotConfigurator.cs
Comment thread src/Microsoft.Agents.A365.DevTools.Cli/Services/BotConfigurator.cs
Copilot AI review requested due to automatic review settings November 17, 2025 03:52
Copy link
Copy Markdown
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull Request Overview

Copilot reviewed 19 out of 19 changed files in this pull request and generated 8 comments.

Comments suppressed due to low confidence (3)

src/Microsoft.Agents.A365.DevTools.Cli/Services/Helpers/EndpointHelper.cs:89

  • Corrected spelling of 'Environment' to 'environment' in heading to maintain consistency.
    src/Tests/Microsoft.Agents.A365.DevTools.Cli.Tests/Commands/CleanupCommandTests.cs:32
  • This assignment to mockBotLogger is useless, since its value is never read.
        var mockBotLogger = Substitute.For<ILogger<IBotConfigurator>>();

src/Tests/Microsoft.Agents.A365.DevTools.Cli.Tests/Commands/CleanupCommandTests.cs:34

  • This assignment to mockAuthService is useless, since its value is never read.
        var mockAuthService = Substitute.ForPartsOf<AuthenticationService>(mockAuthLogger);

Comment thread src/Microsoft.Agents.A365.DevTools.Cli/Services/BotConfigurator.cs Outdated
Comment thread src/DEVELOPER.md Outdated
Comment thread src/Microsoft.Agents.A365.DevTools.Cli/Services/BotConfigurator.cs
Comment thread src/Microsoft.Agents.A365.DevTools.Cli/Services/BotConfigurator.cs
Comment thread src/Microsoft.Agents.A365.DevTools.Cli/Services/BotConfigurator.cs
Comment thread src/Microsoft.Agents.A365.DevTools.Cli/Services/BotConfigurator.cs
joratz and others added 2 commits November 16, 2025 20:02
…eanupCommandTests.cs

Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
Copilot AI review requested due to automatic review settings November 17, 2025 17:29
…r.cs

Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
Copy link
Copy Markdown
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull Request Overview

Copilot reviewed 18 out of 18 changed files in this pull request and generated 5 comments.

Comment thread src/DEVELOPER.md
Comment thread src/Microsoft.Agents.A365.DevTools.Cli/Models/Agent365Config.cs
Comment thread src/Microsoft.Agents.A365.DevTools.Cli/Services/BotConfigurator.cs
Copilot AI review requested due to automatic review settings November 17, 2025 21:21
Copy link
Copy Markdown
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull Request Overview

Copilot reviewed 21 out of 21 changed files in this pull request and generated 5 comments.

Comment thread src/DEVELOPER.md Outdated
Comment thread src/Microsoft.Agents.A365.DevTools.Cli/Services/BotConfigurator.cs
Comment thread src/Microsoft.Agents.A365.DevTools.Cli/Services/BotConfigurator.cs
Comment thread src/Microsoft.Agents.A365.DevTools.Cli/Services/BotConfigurator.cs
@joratz joratz merged commit 596c068 into main Nov 17, 2025
2 checks passed
@pontemonti pontemonti deleted the users/joratz/abscli branch December 5, 2025 17:27
sellakumaran pushed a commit that referenced this pull request Feb 27, 2026
* Initial commit of endpoint registration migration

* Add bot configurator interface, fix tests, and apply suggestions

* Update src/Microsoft.Agents.A365.DevTools.Cli/Services/BotConfigurator.cs

Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>

* Respond to comments

* Remove test env vars

* Update src/Microsoft.Agents.A365.DevTools.Cli/Services/BotConfigurator.cs

Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>

* Update src/Microsoft.Agents.A365.DevTools.Cli/Models/Agent365Config.cs

Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>

* Add message for API errors

* Respond to comments

* Update default location

* Revert default location update for now

This reverts commit f05818ce4274f8086c953ed750e5437ade8af7ca.

* Update src/Tests/Microsoft.Agents.A365.DevTools.Cli.Tests/Commands/CleanupCommandTests.cs

Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>

* Update src/Microsoft.Agents.A365.DevTools.Cli/Services/BotConfigurator.cs

Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>

* Update src/DEVELOPER.md

Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>

* Update error message

* Temporarily set westus as default region

* Respond to comments

---------

Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
sellakumaran added a commit that referenced this pull request Mar 8, 2026
…aph, tests)

Exit codes (#7, #8/#9):
- Set Environment.ExitCode = 1 in ValidateDeploymentPrerequisitesAsync before
  each null return so callers exit non-zero on config/Web App validation failure
- Replace deploy-mcp guard `return` with ExceptionHandler.ExitWithCleanup(1)
  for AgentBlueprintId, AgenticAppId, and TenantId missing-config cases

Log severity (#15, #16, #17):
- LogCheckWarning: LogInformation -> LogWarning
- LogCheckFailure: all three LogInformation -> LogError
- ExecuteCheckWithLoggingAsync warning path: log ErrorMessage ?? Details
  so the primary warning message is no longer silently dropped

skip-graph regressions (#21, #22):
- Guard RunChecksOrExitAsync(MOS checks) behind if (!skipGraph)
- Guard clientAppId null check behind !skipGraph in PublishCommand

Unused parameter (#14):
- Remove IPrerequisiteRunner from BlueprintSubcommand.CreateCommand signature
- Update SetupCommand.cs call site and BlueprintSubcommandTests accordingly

InfrastructureRequirementCheck (#5, #6):
- Add I1/I2/I3/I1V2/I2V2/I3V2 (Isolated) SKUs to validation error message
- Wrap CheckAsync with ExecuteCheckWithLoggingAsync so [PASS]/[FAIL] is printed

PrerequisiteRunner warning message (#3):
- Log ErrorMessage ?? Details, log even when both are empty

IsCaeError gap (#18):
- Add InvalidAuthenticationToken to IsCaeError in ClientAppValidator

Stale comment (#10):
- Update ValidateDeploymentPrerequisitesAsync doc to remove "environment"

Tests (#19, #20):
- Add AppServiceAuthRequirementCheckTests (success, failure, metadata, null guard)
- Add MosPrerequisitesRequirementCheckTests (exception->failure, metadata, null guards)
- Update FrontierPreviewRequirementCheckTests: [WARN] now at LogWarning not LogInformation

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
sellakumaran added a commit that referenced this pull request Mar 10, 2026
…siteRunner (#106) (#312)

* feat: unify prerequisite validation via IRequirementCheck + IPrerequisiteRunner (#106)

Commands now declare prerequisites using IRequirementCheck and fail early
with actionable messages before any side effects occur.

Phase 1 - pure reorganization (zero behavioral change):
- Add AzureAuthRequirementCheck and InfrastructureRequirementCheck adapters
- Add IPrerequisiteRunner / PrerequisiteRunner to run checks in order
- Route AllSubcommand, BlueprintSubcommand, InfrastructureSubcommand,
  and DeployCommand through the shared runner instead of ad-hoc validators
- Delete dead code: ISubCommand.ValidateAsync, IAzureValidator/AzureValidator
- Make AzureAuthValidator.ValidateAuthenticationAsync virtual for testability

Phase 2 - minimal early-fail additions:
- cleanup azure: auth check before preview display
- deploy mcp: explicit early guards for agentBlueprintId and agenticAppId
  before any Graph/network calls

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>

* fix: three CLI polish fixes

- ConfigFileNotFoundException now extends Agent365Exception so missing
  config errors surface as clean user messages (no stack trace) on all
  commands, not just those with local catch blocks. Removes ad-hoc
  FileNotFoundException catches in CleanupCommand and CreateInstanceCommand.

- config init: expand relative/dot deployment paths to absolute before
  saving so the stored value is portable across directories. Update help
  text to clarify relative paths are accepted.

- config init: drop platform-specific parenthetical from 'Allow public
  client flows' log message -- the setting is required on all platforms.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>

* Polish CLI output: reduce noise, fix ordering, add TraceId

- Move "Running all setup steps..." to after requirements check output
- Remove redundant "Agent 365 Setup" header (user already knows the command)
- Change CorrelationId log to LogDebug for setup all and blueprint; surface
  as TraceId inline on the action line ("Running all setup steps... (TraceId: ...)")
  so it is always captured in setup.log as [INF] and visible on console
- Demote PlatformDetector internal logs to LogDebug; single "Detected project
  platform: X" line remains as the user-facing output
- Add AzureAuthRequirementCheck to GetConfigRequirementChecks so Azure auth
  appears in requirements output for all setup subcommands
- Remove redundant mid-execution auth gate from BlueprintSubcommand that caused
  duplicate [PASS] Azure Authentication output
- Fix RequirementCheck base class: use LogInformation for all check result lines
  to avoid WARNING:/ERROR: prefix doubling from logger formatter
- Collapse verbose requirements summary to single line:
  "Requirements: X passed, Y warnings, Z failed"
- Update tests to match new message text and log level assertions

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>

* feat: add fail-early requirement checks to remaining commands

Extends fail-early validation to setup infrastructure, setup permissions,
setup copilot-studio, cleanup azure, deploy, and publish commands.
Each command now runs targeted IRequirementCheck-based pre-flight checks
with formatted [PASS]/[FAIL] output before executing destructive or
slow operations, surfacing auth and config failures immediately.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>

* refactor: structured requirement check composition + fix CAE token revocation UX

Phase 1 (zero behavioral change):
- Add GetBaseChecks() to SetupCommand and CleanupCommand for explicit check composition
- Add GetChecks() to each setup subcommand so check lists are co-located with their command
- Add RunChecksOrExitAsync() helper to RequirementsSubcommand to eliminate four-line boilerplate
- Guard all requirement check calls with if (!dryRun) to avoid spurious network calls
- Update RequirementsSubcommandTests to use public API after making internal helpers private

Fix CAE token revocation UX:
- Add ClientAppValidationException.TokenRevoked() factory for clear re-auth guidance
- Detect server-side CAE token revocation in GetClientAppInfoAsync and throw TokenRevoked
  instead of returning null (which was misreported as "app not found")
- Pass suppressErrorLogging: true to all az CLI calls in ClientAppValidator so raw error
  output no longer leaks to console before the formatted [FAIL] message
- Update ClientAppValidatorTests mocks to match suppressErrorLogging parameter

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>

* fix: suppress raw subprocess output leaking before structured check results

AzureAuthValidator: add suppressErrorLogging to az account show call to
prevent CommandExecutor from printing raw stderr before [FAIL] output.
Remove verbose LogError/LogInformation guidance blocks — the validator
returns bool only; issue/resolution messaging belongs in the check layer.

PowerShellModulesRequirementCheck: downgrade auto-install progress from
LogInformation/LogWarning to LogDebug so they don't print before [PASS].

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>

* feat: add cleanup azure --dry-run, AppService/MOS checks, update docs

- Add `--dry-run` flag to `a365 cleanup azure`: previews resources that
  would be deleted without requiring Azure auth or making any changes
- Add `AppServiceAuthRequirementCheck`: validates App Service deployment
  token before `a365 deploy`, catching AADSTS50173 token revocation early
- Add `MosPrerequisitesRequirementCheck`: validates MOS service principals
  before `a365 publish` proceeds, converting SetupValidationException to
  structured failure output
- Wire new checks into DeployCommand and PublishCommand via
  RunChecksOrExitAsync, replacing ad-hoc inline validation
- Add `GetChecks(AzureAuthValidator)` to InfrastructureSubcommand for
  explicit check composition
- Add `GetAppServiceTokenAsync` to AzureAuthValidator
- Update CLI design.md: add Requirements/ to project structure and
  document the IRequirementCheck prerequisite validation pattern
- Update CHANGELOG.md with user-visible additions

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>

* fix: address PR #312 review comments (exit codes, log levels, skip-graph, tests)

Exit codes (#7, #8/#9):
- Set Environment.ExitCode = 1 in ValidateDeploymentPrerequisitesAsync before
  each null return so callers exit non-zero on config/Web App validation failure
- Replace deploy-mcp guard `return` with ExceptionHandler.ExitWithCleanup(1)
  for AgentBlueprintId, AgenticAppId, and TenantId missing-config cases

Log severity (#15, #16, #17):
- LogCheckWarning: LogInformation -> LogWarning
- LogCheckFailure: all three LogInformation -> LogError
- ExecuteCheckWithLoggingAsync warning path: log ErrorMessage ?? Details
  so the primary warning message is no longer silently dropped

skip-graph regressions (#21, #22):
- Guard RunChecksOrExitAsync(MOS checks) behind if (!skipGraph)
- Guard clientAppId null check behind !skipGraph in PublishCommand

Unused parameter (#14):
- Remove IPrerequisiteRunner from BlueprintSubcommand.CreateCommand signature
- Update SetupCommand.cs call site and BlueprintSubcommandTests accordingly

InfrastructureRequirementCheck (#5, #6):
- Add I1/I2/I3/I1V2/I2V2/I3V2 (Isolated) SKUs to validation error message
- Wrap CheckAsync with ExecuteCheckWithLoggingAsync so [PASS]/[FAIL] is printed

PrerequisiteRunner warning message (#3):
- Log ErrorMessage ?? Details, log even when both are empty

IsCaeError gap (#18):
- Add InvalidAuthenticationToken to IsCaeError in ClientAppValidator

Stale comment (#10):
- Update ValidateDeploymentPrerequisitesAsync doc to remove "environment"

Tests (#19, #20):
- Add AppServiceAuthRequirementCheckTests (success, failure, metadata, null guard)
- Add MosPrerequisitesRequirementCheckTests (exception->failure, metadata, null guards)
- Update FrontierPreviewRequirementCheckTests: [WARN] now at LogWarning not LogInformation

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>

---------

Co-authored-by: Claude Sonnet 4.6 <noreply@anthropic.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

6 participants