>>dot_trace_snapshot

Opens a dotTrace snapshot file with application profile. This is the first tool that should be performed before starting the analysis.

>>dot_trace_snapshot:path

The absolute path to the snapshot file with performance data. Must point to a file, not a directory. 
The path must be complete and valid within the current file system. 
Examples: "/home/user/project/src/snapshot.dtp"

>>dot_trace_get_graph_nodes

Retrieve the top 50 nodes ordered by specified sorting field

>>dot_trace_get_graph_nodes:sortBy

The sorting field name. Must be one of 'ExclusiveRunningTime', 'InclusiveRunningTime', 'ExclusiveExecutionTime', 'InclusiveExecutionTime', 'ExclusiveMemoryTraffic' or 'InclusiveMemoryTraffic' values

>>dot_trace_get_graph_node_callers

Retrieve the list of node with methods that called specified method

>>dot_trace_get_graph_node_callers:fqn

The fqn of the node representing the method

>>dot_trace_get_graph_node_callees

Retrieve the list of node with methods that is called by specified method

>>dot_trace_get_graph_node_callees:fqn

The fqn of the node representing the method

>>dot_trace_set_graph_node_mark

sets the custom mark for the specified node

>>dot_trace_set_graph_node_mark:fqn

The fqn of the node

>>dot_trace_set_graph_node_mark:mark

text mark

>>dot_trace_source 

Request the source code of a method represented by a node in the call graph.

>>dot_trace_source:fqn

The fqn of the node representing the method to get the source code of.

>>answer

Provides snapshot analysis results, displays it to the user and terminates the session.

>>answer:full_answer

full_answer is a sting that contains list of found issues in JSON format.
Use this JSON Schema as a strict template for full_answer parameter.
```
{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "type": "object",
  "properties": {
    "issues": {
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "rank": { "type": "integer", "minimum": 1 },
          "reasoning": { "type": "string" },
          "method_name": { "type": "string" },
          "impact": { 
            "type": "string",
            "enum": ["Execution time savings", "Memory improvement", "I/O reduction", "Concurrency fix"]
          },
          "root_cause": { "type": "string" },
        },
        "required": ["rank", "reasoning", "method_name", "impact", "root_cause"]
      }
    }
  },
  "required": ["issues"]
}
```

##### Rules
- The JSON must be valid and strictly follow the schema.
- DO NOT include explanations or text outside the JSON output.
- Ensure the impact field contains one of the following values: "Execution time savings", "Memory improvement", "I/O reduction", "Concurrency fix".
- Every issue must have a rank, and ranks should be sorted by severity (most critical first).
- Method name should be fully qualified if possible
- Do not include absolute values of the payload in the response, use only percentages if needed

##### Example
{
  "issues": [
    {
      "rank": 2,
      "reasoning": "[The reason why issue chosen and have such a rank]",
      "method_name": "<method_name>",
      "impact": "[Execution time savings | Memory improvement | I/O reduction | Concurrency fix]",
      "root_cause": "[Brief explanation of the performance degradation root]",
    },
    {
      "rank": 13,
      "reasoning": "Method execution time takes up most of the application execution and can be simply improved",
      "method_name": "SudokuSolver.Solve",
      "impact": "Execution time savings",
      "root_cause": "The method contains an algorithm with quadratic complexity",
    }
  ]
}
