Init DevTools Cli#4
Conversation
There was a problem hiding this comment.
Pull Request Overview
This pull request introduces initial CLI functionality for the Agent365 DevTools CLI, implementing core configuration management, service layer architecture, and comprehensive test coverage for the developer tools.
Key Changes:
- Added configuration service with two-file model (static + generated state)
- Implemented multi-platform deployment services (DotNet, Node.js, Python)
- Created comprehensive test suite with 2,000+ lines of unit and integration tests
- Added Azure service integrations (authentication, deployment, bot configuration)
Reviewed Changes
Copilot reviewed 76 out of 93 changed files in this pull request and generated 34 comments.
Show a summary per file
| File | Description |
|---|---|
Microsoft.Agents.A365.DevTools.Cli.Tests.csproj |
Test project configuration with xUnit, Moq, and FluentAssertions dependencies |
McpServerConfigTests.cs |
Unit tests for MCP server configuration model validation and serialization |
Agent365ConfigTests.cs |
Tests for static/dynamic configuration properties and JSON serialization |
ScopeIntegrationTests.cs |
Integration tests for MCP server scope and audience flow |
ProjectSettingsSyncHelperTests.cs |
Tests for syncing settings across DotNet, Python, and Node.js projects |
ManifestHelperTests.cs |
Tests for manifest creation and server object generation |
TestConstants.cs |
Centralized test constants for consistent test data |
AuthenticationConstantsTests.cs |
Validation tests for authentication constants |
SetupCommandTests.cs |
Tests for setup command dry-run functionality |
QueryEntraCommandTests.cs |
Tests for Entra query command structure |
DevelopCommandTests.cs |
Tests for develop command with MCP server management |
DeployCommandTests.cs |
Tests for deployment command structure |
CreateInstanceCommandTests.cs |
Tests for instance creation command |
ConfigCommandTests.cs |
Tests for configuration management commands |
CleanupCommandTests.cs |
Tests for cleanup command with interactive confirmation |
Directory.Build.props |
Test project build configuration |
| Service files (PythonBuilder.cs, NodeBuilder.cs, etc.) | Platform-specific build and deployment implementations |
There was a problem hiding this comment.
Pull Request Overview
Copilot reviewed 75 out of 92 changed files in this pull request and generated no new comments.
Comments suppressed due to low confidence (1)
src/Microsoft.Agents.A365.DevTools.Cli/Services/GraphApiService.cs:1
- Exception is logged with Debug level and generic message. When token cache read fails, this should be logged as a warning or info since it's a normal scenario (cache might not exist yet), and the message should clarify this is expected: 'Token cache file not found or unreadable - will acquire fresh token'.
// Copyright (c) Microsoft Corporation.
There was a problem hiding this comment.
Pull Request Overview
Copilot reviewed 75 out of 92 changed files in this pull request and generated no new comments.
Comments suppressed due to low confidence (1)
src/Tests/Microsoft.Agents.A365.DevTools.Cli.Tests/Commands/ConfigCommandTests.cs:1
- The bullet character '�' appears to be a unicode character that may not render correctly. Consider using a standard ASCII character like '-' or '*' for better compatibility.
// Copyright (c) Microsoft Corporation.
|
@sellakumaran I've opened a new pull request, #5, to work on those changes. Once the pull request is ready, I'll request review from you. |
* Init Cli for Agent 365 * Remove build artifacts (bin, obj, .vs) from git tracking - these are now properly ignored by .gitignore * Add .gitignore file to properly ignore build artifacts * Use nbgv * restore test dependencies * Add header * fix pack * fix pack * Address PR comments * Addressed PR comments * Handle PR comments. * Handled PR comments. * Handled pr comments * another set of pr comments. * Remove extra non-existent links * Remove related documentation. * Update ci.yml --------- Co-authored-by: Rahul Devikar <radevika@microsoft.com> Co-authored-by: Sellakumaran Kanagarathnam <sellak@microsoft.com>
- Delegate zip creation to ManifestTemplateService.CreateManifestZipAsync, removing duplicate inline implementation and aligning file list with the service's canonical set (fixes comments #1 and #2) - Move per-file zip log entries to LogDebug in ManifestTemplateService so the command output remains terse - Fix --dry-run option description: "without writing files or creating the zip" (fixes comment #3) - Handle null/empty displayName in name.short guidance with explicit warning instead of printing currently: "" (fixes comment #4) - Update test class summary to reflect current Console.In redirect approach (fixes comment #6) - Fix CHANGELOG: interactive prompts occur only in interactive terminals; stdin redirect suppresses them in scripts (fixes comment #7) - Comment #5 (PowerPlatformConstants summary) already resolved by prior rename Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
… instructions (#315) * fix: strip publish command to zip-only and remove internal MOS constants - PublishCommand now only updates manifest files, creates manifest.zip, and prints manual upload instructions (Agents > All agents > Upload custom agent) - Removed MOS Titles upload, token acquisition, and Graph API steps from publish - Removed --mos-env, --mos-token, --skip-graph options - Deleted AgentPublishService, MosTokenService, PublishHelpers (dead code) - Stripped MosConstants to PowerPlatform-only; removed internal TPS/MOS Titles app IDs, scope GUIDs, and service URLs - Removed dead MOS error message helpers from ErrorMessages - Updated PublishCommandTests to match new simplified signature and added zip creation test Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com> * refactor: address code review issues in publish command cleanup - Remove unused agentBlueprintService parameter from CreateCommand signature and its callsite in Program.cs (CR-001) - Replace magic-number zip cap (4) and arbitrary file padding loop with a clean LINQ expression over known candidate filenames (CR-002) - Remove dead --verbose option binding in publish command handler; startup- level --verbose in Program.cs continues to work (CR-003) - Add CHANGELOG [Unreleased] entry for the breaking behavior change (CR-004) - Remove redundant Console.SetIn call inside zip creation test; constructor already sets it (CR-005) Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com> * fix: resolve post-merge build errors from main refactoring - Update Program.cs to use AzureAuthValidator directly (replaces removed IAzureValidator/AzureValidator), remove AzureWebAppCreator resolution, and pass authValidator to CleanupCommand - Delete MosPrerequisitesRequirementCheck and its test — this check wraps the deleted PublishHelpers and is no longer needed after the publish command was stripped to zip-only Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com> * refactor: clean up publish command output to follow az cli conventions - Replace verbose section headers and wall-of-text guidance with a terse column-aligned field list (version, name.short, name.full, descriptions, developer.*, icons) - Remove duplicate success messages; single 'Manifest updated: {path}' line - Move per-file zip log entries to LogDebug - Remove mixed Console.WriteLine / logger calls; output consistent through logger - Add blank line after interactive prompt block before 'Package created:' - Fix column alignment: replace 'color.png / outline.png' key with 'icons' - Add name.short > 30 char warning - Remove unused logger parameters from UpdateManifestFileAsync and UpdateAgenticUserManifestTemplateFileAsync - Update tests: remove Console.SetIn workarounds that are no longer needed for early-exit paths; add WithDisplayNameExceeding30Chars_LogsWarning test Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com> * rename: MosConstants -> PowerPlatformConstants File and class name no longer reflect their contents after MOS upload infrastructure was removed. The remaining constants relate solely to the Power Platform API (CopilotStudio permissions), so rename to match. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com> * fix: address PR #315 review comments - Delegate zip creation to ManifestTemplateService.CreateManifestZipAsync, removing duplicate inline implementation and aligning file list with the service's canonical set (fixes comments #1 and #2) - Move per-file zip log entries to LogDebug in ManifestTemplateService so the command output remains terse - Fix --dry-run option description: "without writing files or creating the zip" (fixes comment #3) - Handle null/empty displayName in name.short guidance with explicit warning instead of printing currently: "" (fixes comment #4) - Update test class summary to reflect current Console.In redirect approach (fixes comment #6) - Fix CHANGELOG: interactive prompts occur only in interactive terminals; stdin redirect suppresses them in scripts (fixes comment #7) - Comment #5 (PowerPlatformConstants summary) already resolved by prior rename Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com> --------- Co-authored-by: Claude Sonnet 4.6 <noreply@anthropic.com>
No description provided.