Skip to content
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
144 changes: 144 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -379,3 +379,147 @@ npm run mcp-server
📘 **[Docs](https://agentstack.ai)** (Coming Q1 2026)

_Last updated: 2025-12-05 | v3.3.0_

## 📚 **Class Diagram**

- Latest class diagram for core AgentStack agents and tools:

```mermaid
classDiagram
class Agent {
+string id
+string name
+string description
+function instructions(runtimeContext)
Copy link

Copilot AI Dec 5, 2025

Choose a reason for hiding this comment

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

The instructions method should use proper type annotations in the class diagram. Consider +instructions(runtimeContext: RuntimeContext): object instead of +function instructions(runtimeContext) for better clarity and consistency with TypeScript conventions.

Suggested change
+function instructions(runtimeContext)
+instructions(runtimeContext: RuntimeContext): object

Copilot uses AI. Check for mistakes.
+model
+memory
+tools
+agents
+workflows
+scorers
+maxRetries
Comment on lines +394 to +400
Copy link

Copilot AI Dec 5, 2025

Choose a reason for hiding this comment

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

Several Agent properties lack type information in the class diagram. For clarity and consistency with the codebase, consider adding types:

  • +model: Model
  • +memory: Memory
  • +tools: Record<string, Tool>
  • +agents: Record<string, Agent>
  • +workflows: Record<string, Workflow>
  • +scorers: Record<string, Scorer>
  • +maxRetries: number
Suggested change
+model
+memory
+tools
+agents
+workflows
+scorers
+maxRetries
+model: Model
+memory: Memory
+tools: Record<string, Tool>
+agents: Record<string, Agent>
+workflows: Record<string, Workflow>
+scorers: Record<string, Scorer>
+maxRetries: number

Copilot uses AI. Check for mistakes.
}

class Tool {
+string id
+string description
+inputSchema
+outputSchema
Comment on lines +406 to +407
Copy link

Copilot AI Dec 5, 2025

Choose a reason for hiding this comment

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

Tool properties lack type information in the class diagram. For clarity and consistency, consider adding types:

  • +inputSchema: ZodSchema
  • +outputSchema: ZodSchema
Suggested change
+inputSchema
+outputSchema
+inputSchema: ZodSchema
+outputSchema: ZodSchema

Copilot uses AI. Check for mistakes.
+function execute(context)
Copy link

Copilot AI Dec 5, 2025

Choose a reason for hiding this comment

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

The execute method should use proper type annotations in the class diagram. Consider +execute(context: InputContext): Promise<Output> instead of +function execute(context) for better clarity and consistency with TypeScript conventions.

Suggested change
+function execute(context)
+execute(context: InputContext): Promise<Output>

Copilot uses AI. Check for mistakes.
}

class codingTeamNetwork {
+id = "coding-team-network"
+name = "Coding Team Network"
+description
+agents: coding_agents
}

class codingA2ACoordinator {
+id = "codingA2ACoordinator"
+name = "Coding A2A Coordinator"
+description
+agents: coding_agents
}

class codeArchitectAgent {
+id = "code-architect"
+name = "Code Architect Agent"
+description
+UserTier userTier
+string language
+string projectRoot
Comment on lines +429 to +431
Copy link

Copilot AI Dec 5, 2025

Choose a reason for hiding this comment

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

The properties userTier, language, and projectRoot are not direct properties of codeArchitectAgent. These values are accessed from the RuntimeContext within the agent's instructions function, not stored as agent properties. Consider removing these lines or clarifying that they are runtime context values, not agent properties.

Suggested change
+UserTier userTier
+string language
+string projectRoot
// Note: userTier, language, and projectRoot are accessed from RuntimeContext in instructions, not stored as agent properties.

Copilot uses AI. Check for mistakes.
}

class codeReviewerAgent {
+id = "code-reviewer"
+name = "Code Reviewer Agent"
+description
}

class testEngineerAgent {
+id = "test-engineer"
+name = "Test Engineer Agent"
+description
}

class refactoringAgent {
+id = "refactoring"
+name = "Refactoring Agent"
+description
}
Comment on lines +425 to +450
Copy link
Contributor

Choose a reason for hiding this comment

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

medium

This class diagram is a great addition for understanding the agent architecture.

There's a small inconsistency in how agent properties derived from runtimeContext are displayed. The codeArchitectAgent class includes userTier, language, and projectRoot, but other agents like codeReviewerAgent, testEngineerAgent, and refactoringAgent—which also use these context properties—do not have them listed in the diagram.

For better consistency and to make the diagram more informative about what context each agent uses, I suggest adding these properties to the other agent classes as well. This will make it clearer at a glance what contextual information each agent depends on.

  class codeArchitectAgent {
    +id = "code-architect"
    +name = "Code Architect Agent"
    +description
    +UserTier userTier
    +string language
    +string projectRoot
  }

  class codeReviewerAgent {
    +id = "code-reviewer"
    +name = "Code Reviewer Agent"
    +description
    +UserTier userTier
    +string language
  }

  class testEngineerAgent {
    +id = "test-engineer"
    +name = "Test Engineer Agent"
    +description
    +UserTier userTier
    +string language
  }

  class refactoringAgent {
    +id = "refactoring"
    +name = "Refactoring Agent"
    +description
    +UserTier userTier
    +string language
    +string projectRoot
  }


class codeAnalysisTool {
+id = "coding:codeAnalysis"
+description
+CodeAnalysisInput inputSchema
+CodeAnalysisOutput outputSchema
}

class codeSearchTool {
+id = "coding:codeSearch"
+description
+CodeSearchInput inputSchema
+CodeSearchOutput outputSchema
}

class diffReviewTool {
+id = "coding:diffReview"
+description
+DiffReviewInput inputSchema
+DiffReviewOutput outputSchema
}

class multiStringEditTool {
+id = "coding:multiStringEdit"
+description
+MultiStringEditInput inputSchema
+MultiStringEditOutput outputSchema
}

class testGeneratorTool {
+id = "coding:testGenerator"
+description
+TestGeneratorInput inputSchema
+TestGeneratorOutput outputSchema
}

Agent <|-- codingTeamNetwork
Agent <|-- codingA2ACoordinator
Agent <|-- codeArchitectAgent
Agent <|-- codeReviewerAgent
Agent <|-- testEngineerAgent
Agent <|-- refactoringAgent

Tool <|-- codeAnalysisTool
Tool <|-- codeSearchTool
Tool <|-- diffReviewTool
Tool <|-- multiStringEditTool
Tool <|-- testGeneratorTool

codingTeamNetwork o-- codeArchitectAgent
codingTeamNetwork o-- codeReviewerAgent
codingTeamNetwork o-- testEngineerAgent
codingTeamNetwork o-- refactoringAgent

codingA2ACoordinator o-- codeArchitectAgent
codingA2ACoordinator o-- codeReviewerAgent
codingA2ACoordinator o-- testEngineerAgent
codingA2ACoordinator o-- refactoringAgent

codeArchitectAgent --> codeAnalysisTool
codeArchitectAgent --> codeSearchTool

codeReviewerAgent --> codeAnalysisTool
codeReviewerAgent --> diffReviewTool
codeReviewerAgent --> codeSearchTool

testEngineerAgent --> codeAnalysisTool
testEngineerAgent --> testGeneratorTool
testEngineerAgent --> codeSearchTool

refactoringAgent --> multiStringEditTool
refactoringAgent --> codeAnalysisTool
refactoringAgent --> diffReviewTool
refactoringAgent --> codeSearchTool
```
Loading