Skip to content
Open
Show file tree
Hide file tree
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
2 changes: 2 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -126,3 +126,5 @@ See [CONTRIBUTING.md](CONTRIBUTING.md) and [STUDENT_ONBOARDING.md](STUDENT_ONBOA
## License

MIT — see [LICENSE](LICENSE).


36 changes: 29 additions & 7 deletions agents/manifests/github_issue_triage_agent.json
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
{
"id": "github_issue_triage",
"name": "GitHub Issue Triage Agent",
"description": "Analyzes open GitHub issues, suggests labels, priority, and assignees.",
"description": "Analyzes GitHub issues, recommends labels, assigns priority levels, suggests assignees, and helps maintainers organize issue backlogs more efficiently.",
"category": "Developer Tools",
"creator": "AgentStore Team",
"version": "1.0.0",
Expand All @@ -10,18 +10,35 @@
"downloads": 980,
"installs": 720,
"runs": 3100,
"tags": ["github", "developer", "triage", "issues"],
"tags": [
"github",
"developer",
"triage",
"issues",
"automation",
"project-management"
],
"tools_required": ["github_reader"],
"permissions_required": ["github.read"],
"permission_explanation": "Requires read-only access to repository issues. The agent does not create, edit, or delete issues.",
"inputs": {
"type": "object",
"description": "Parameters used to select which repository issues should be analyzed.",
"properties": {
"repo": { "type": "string", "description": "owner/repo" },
"state": { "type": "string", "enum": ["open", "closed", "all"] }
"repo": {
"type": "string",
"description": "Repository in owner/repo format."
},
"state": {
"type": "string",
"enum": ["open", "closed", "all"],
"description": "Issue state filter."
}
}
},
"outputs": {
"type": "object",
"description": "Suggested triage information for each analyzed issue.",
"properties": {
"triaged_issues": {
"type": "array",
Expand All @@ -30,16 +47,21 @@
"properties": {
"issue_number": { "type": "integer" },
"suggested_labels": { "type": "array" },
"priority": { "type": "string" },
"priority": {
"type": "string",
"description": "Low, Medium, High, or Critical"
},
"suggested_assignee": { "type": "string" }
}
}
}
}
},
"example_use_case": "Automatically triage new issues in an open-source repo every morning.",
"example_use_case": "Automatically triage new issues in an open-source repository every morning.",
"example_prompts": [
"Triage all open issues in myorg/myrepo",
"Which issues need urgent attention?"
"Which issues need urgent attention?",
"Suggest labels and priorities for all open bugs.",
"Which issues should be assigned to frontend developers?"
]
}
59 changes: 59 additions & 0 deletions agents/runner/mock_runner_design.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,59 @@
# Mock Agent Runner Design

## Agent
GitHub Issue Triage Agent

## Purpose
Simulate agent execution without calling real GitHub APIs or LLMs.

## Agent -> Tools

github_issue_triage
-> github_reader

## Mock Tool Output

github_reader:
[
{
"issue_number": 12,
"title": "Frontend card does not show required tools"
},
{
"issue_number": 15,
"title": "Health endpoint response is too minimal"
}
]

## Execution Flow

1. Receive user request
2. Load manifest
3. Validate inputs
4. Load mock issue data
5. Generate suggested labels
6. Assign priority
7. Suggest assignee
8. Return final output
9. Save trace

## Pseudocode

function run_agent(request):
manifest = load_manifest()

issues = github_reader_mock()

triaged = analyze_issues(issues)

save_trace()

return triaged

## TODO

- Add trace IDs
- Add confidence scores
- Add validation errors
- Support multiple repositories
- Save execution timing metrics
51 changes: 36 additions & 15 deletions agents/traces/github_issue_triage_trace.json
Original file line number Diff line number Diff line change
@@ -1,42 +1,63 @@
{
"agent_id": "github_issue_triage",
"run_id": "run_github_001",
"status": "completed",
"status": "simulated",
"started_at": "2026-05-29T10:15:00Z",
"completed_at": "2026-05-29T10:15:04Z",
"user_request": "Triage all open issues in techx/agentstore",
"steps": [
{
"step": 1,
"action": "Receive user request",
"details": "Parsed request: triage open issues for repo techx/agentstore"
"details": "Parsed request to triage open issues for repo techx/agentstore."
},
{
"step": 2,
"action": "Identify required tools",
"details": "Agent manifest requires: github_reader"
"details": "Loaded manifest for github_issue_triage and found required tool: github_reader."
},
{
"step": 3,
"action": "Call mock tool",
"tool": "github_reader",
"input": { "repo": "techx/agentstore", "state": "open" },
"output_summary": "Retrieved 8 open issues"
"input": {
"repo": "techx/agentstore",
"state": "open"
},
"intermediate_result": {
"issues_found": 2,
"issues": [
{
"number": 12,
"title": "Frontend card does not show required tools",
"body_summary": "Agent marketplace cards are missing tools_required and tags."
},
{
"number": 15,
"title": "Health endpoint response is too minimal",
"body_summary": "Backend /health route only returns status and should include service info."
}
]
}
},
{
"step": 4,
"action": "Process tool response",
"details": "Analyzed issue titles, bodies, and existing labels"
"action": "Analyze mock issues",
"intermediate_result": [
{
"issue_number": 12,
"reasoning": "Issue affects frontend display, so it should be labeled frontend and bug."
},
{
"issue_number": 15,
"reasoning": "Issue affects backend API quality, so it should be labeled backend and enhancement."
}
]
},
{
"step": 5,
"action": "Generate final answer",
"details": "Assigned suggested labels, priority, and assignees for 8 issues"
},
{
"step": 6,
"action": "Save run history",
"details": "Run logged to trace store with run_id run_github_001"
"action": "Generate final output",
"details": "Created suggested labels, priority levels, and assignee groups."
}
],
"final_output": {
Expand All @@ -55,4 +76,4 @@
}
]
}
}
}
Empty file.
6 changes: 5 additions & 1 deletion backend/app/main.py
Original file line number Diff line number Diff line change
Expand Up @@ -37,4 +37,8 @@ def root():

@app.get("/health")
def health():
return {"status": "ok"}
return {
"status": "ok",
"service": "agentstore-backend",
"message": "Backend is running"
}
Loading