CloudArchitectOptionDefinitions.cs•4.92 kB
// Copyright (c) Microsoft Corporation.
// Licensed under the MIT License.
using System.CommandLine;
namespace AzureMcp.CloudArchitect.Options;
public static class CloudArchitectOptionDefinitions
{
    public const string QuestionName = "question";
    public const string QuestionNumberName = "question-number";
    public const string TotalQuestionsName = "total-questions";
    public const string AnswerName = "answer";
    public const string NextQuestionNeededName = "next-question-needed";
    public const string ConfidenceScoreName = "confidence-score";
    public const string ArchitectureComponentName = "architecture-component";
    public const string ArchitectureTierName = "architecture-tier";
    public const string StateName = "state";
    public static readonly Option<string> Question = new(
        $"--{QuestionName}",
         "The current question being asked"
    )
    {
        IsRequired = false
    };
    public static readonly Option<int> QuestionNumber = new(
        $"--{QuestionNumberName}",
        "Current question number"
    )
    {
        IsRequired = false
    };
    public static readonly Option<int> TotalQuestions = new(
        $"--{TotalQuestionsName}",
        "Estimated total questions needed"
    )
    {
        IsRequired = false
    };
    public static readonly Option<string> Answer = new(
        $"--{AnswerName}",
         "The user's response to the question"
    )
    {
        IsRequired = false
    };
    public static readonly Option<bool> NextQuestionNeeded = new(
        $"--{NextQuestionNeededName}",
        "Whether another question is needed"
    )
    {
        IsRequired = false
    };
    public static readonly Option<double> ConfidenceScore = new(
        $"--{ConfidenceScoreName}",
        "A value between 0.0 and 1.0 representing confidence in understanding requirements. When this reaches 0.7 or higher, nextQuestionNeeded should be set to false."
    )
    {
        IsRequired = false
    };
    public static readonly Option<string> State = new(
        $"--{StateName}",
        "The complete architecture state from the previous request as JSON, State input schema:\n{\n\"state\":{\n\"type\":\"object\",\n\"description\":\"The complete architecture state from the previous request\",\n\"properties\":{\n\"architectureComponents\":{\n\"type\":\"array\",\n\"description\":\"All architecture components suggested so far\",\n\"items\":{\n\"type\":\"string\"\n}\n},\n\"architectureTiers\":{\n\"type\":\"object\",\n\"description\":\"Components organized by architecture tier\",\n\"additionalProperties\":{\n\"type\":\"array\",\n\"items\":{\n\"type\":\"string\"\n}\n}\n},\n\"thought\":{\n\"type\":\"string\",\n\"description\":\"The calling agent's thoughts on the next question or reasoning process. The calling agent should use the requirements it has gathered to reason about the next question.\"\n},\n\"suggestedHint\":{\n\"type\":\"string\",\n\"description\":\"A suggested interaction hint to show the user, such as 'Ask me to create an ASCII art diagram of this architecture' or 'Ask about how this design handles disaster recovery'.\"\n},\n\"requirements\":{\n\"type\":\"object\",\n\"description\":\"Tracked requirements organized by type\",\n\"properties\":{\n\"explicit\":{\n\"type\":\"array\",\n\"description\":\"Requirements explicitly stated by the user\",\n\"items\":{\n\"type\":\"object\",\n\"properties\":{\n\"category\":{\n\"type\":\"string\"\n},\n\"description\":{\n\"type\":\"string\"\n},\n\"source\":{\n\"type\":\"string\"\n},\n\"importance\":{\n\"type\":\"string\",\n\"enum\":[\n\"high\",\n\"medium\",\n\"low\"\n]\n},\n\"confidence\":{\n\"type\":\"number\"\n}\n}\n}\n},\n\"implicit\":{\n\"type\":\"array\",\n\"description\":\"Requirements implied by user responses\",\n\"items\":{\n\"type\":\"object\",\n\"properties\":{\n\"category\":{\n\"type\":\"string\"\n},\n\"description\":{\n\"type\":\"string\"\n},\n\"source\":{\n\"type\":\"string\"\n},\n\"importance\":{\n\"type\":\"string\",\n\"enum\":[\n\"high\",\n\"medium\",\n\"low\"\n]\n},\n\"confidence\":{\n\"type\":\"number\"\n}\n}\n}\n},\n\"assumed\":{\n\"type\":\"array\",\n\"description\":\"Requirements assumed based on context/best practices\",\n\"items\":{\n\"type\":\"object\",\n\"properties\":{\n\"category\":{\n\"type\":\"string\"\n},\n\"description\":{\n\"type\":\"string\"\n},\n\"source\":{\n\"type\":\"string\"\n},\n\"importance\":{\n\"type\":\"string\",\n\"enum\":[\n\"high\",\n\"medium\",\n\"low\"\n]\n},\n\"confidence\":{\n\"type\":\"number\"\n}\n}\n}\n}\n}\n},\n\"confidenceFactors\":{\n\"type\":\"object\",\n\"description\":\"Factors that contribute to the overall confidence score\",\n\"properties\":{\n\"explicitRequirementsCoverage\":{\n\"type\":\"number\"\n},\n\"implicitRequirementsCertainty\":{\n\"type\":\"number\"\n},\n\"assumptionRisk\":{\n\"type\":\"number\"\n}\n}\n}\n}\n}\n}"
    )
    {
        IsRequired = false
    };
}