@trygentic/agentloop 0.17.0-alpha.11 → 0.18.0-alpha.11
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/package.json +3 -3
- package/templates/agents/chat/chat.bt.json +36 -3
- package/templates/agents/chat/chat.md +11 -3
- package/templates/agents/engineer/engineer.bt.json +671 -103
- package/templates/agents/engineer/engineer.md +40 -10
- package/templates/agents/merge-resolver/merge-resolver.bt.json +217 -0
- package/templates/agents/merge-resolver/merge-resolver.md +297 -0
- package/templates/agents/orchestrator/orchestrator.md +0 -1
- package/templates/agents/product-manager/product-manager.bt.json +210 -63
- package/templates/agents/product-manager/product-manager.md +77 -7
- package/templates/agents/qa-tester/qa-tester.bt.json +39 -9
- package/templates/agents/qa-tester/qa-tester.md +44 -4
- package/templates/agents/release/release.bt.json +32 -18
- package/templates/agents/release/release.md +53 -8
- package/templates/plugins/qa-e2e-maestro/qa-e2e-maestro.bt.json +1191 -0
- package/templates/plugins/qa-e2e-maestro/qa-e2e-maestro.md +923 -0
- package/templates/plugins/qa-e2e-scenario/qa-e2e-scenario.md +85 -0
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "release-continuous-agent-tree",
|
|
3
|
-
"description": "Continuous behavior tree for the Release agent. Loops forever, waiting for task assignments. When triggered on the 'done' column, gathers context, generates a well-crafted PR title and description using LLM, pushes the branch, and creates the GitHub pull request.",
|
|
4
|
-
"version": "1.
|
|
3
|
+
"description": "Continuous behavior tree for the Release agent. Loops forever, waiting for task assignments. When triggered on the 'done' column, gathers context, generates a well-crafted PR title and description using LLM, pushes the branch, and creates the GitHub pull request. Skips PR creation if an open PR already exists for the branch.",
|
|
4
|
+
"version": "1.1.0",
|
|
5
5
|
"mode": "reactive",
|
|
6
6
|
"tree": {
|
|
7
7
|
"type": "root",
|
|
@@ -11,8 +11,8 @@
|
|
|
11
11
|
"children": [
|
|
12
12
|
{
|
|
13
13
|
"type": "action",
|
|
14
|
-
"call": "
|
|
15
|
-
"comment": "Block until
|
|
14
|
+
"call": "WaitForAgentMessage",
|
|
15
|
+
"comment": "Block until a done-column task assignment or a direct release handoff message arrives"
|
|
16
16
|
},
|
|
17
17
|
{
|
|
18
18
|
"type": "action",
|
|
@@ -49,7 +49,7 @@
|
|
|
49
49
|
},
|
|
50
50
|
{
|
|
51
51
|
"type": "selector",
|
|
52
|
-
"comment": "Check if there are changes to create a PR for",
|
|
52
|
+
"comment": "Check if there are changes to create a PR for, and whether a PR already exists",
|
|
53
53
|
"children": [
|
|
54
54
|
{
|
|
55
55
|
"type": "sequence",
|
|
@@ -74,11 +74,32 @@
|
|
|
74
74
|
},
|
|
75
75
|
{
|
|
76
76
|
"type": "sequence",
|
|
77
|
-
"comment": "
|
|
77
|
+
"comment": "PR already exists for this branch - skip LLM generation and PR creation",
|
|
78
|
+
"children": [
|
|
79
|
+
{
|
|
80
|
+
"type": "action",
|
|
81
|
+
"call": "CheckExistingPR",
|
|
82
|
+
"comment": "Returns SUCCEEDED if open PR found (sets gitPRUrl on blackboard), FAILED if no PR exists"
|
|
83
|
+
},
|
|
84
|
+
{
|
|
85
|
+
"type": "action",
|
|
86
|
+
"call": "AddReleaseComment",
|
|
87
|
+
"comment": "Add comment noting the existing PR URL"
|
|
88
|
+
},
|
|
89
|
+
{
|
|
90
|
+
"type": "action",
|
|
91
|
+
"call": "ReportTriggerPass"
|
|
92
|
+
}
|
|
93
|
+
]
|
|
94
|
+
},
|
|
95
|
+
{
|
|
96
|
+
"type": "sequence",
|
|
97
|
+
"comment": "Changes detected, no existing PR - generate PR content and create it",
|
|
78
98
|
"children": [
|
|
79
99
|
{
|
|
80
100
|
"type": "llm-action",
|
|
81
101
|
"name": "GeneratePRContent",
|
|
102
|
+
"allowedTools": [],
|
|
82
103
|
"prompt": "You are creating a GitHub pull request for a completed task. Generate a high-quality PR title and description.\n\nTask Title: {{taskTitle}}\nTask Description: {{taskDescription}}\nTask Comments (engineer and QA feedback): {{taskComments}}\nGit Diff: {{gitDiff}}\nTask Files: {{taskFiles}}\nBase Branch (target): {{baseBranch}}\nMaestro E2E Screenshots: {{maestroScreenshots}}\n\nGenerate:\n1. A concise PR title using conventional commit format (e.g., 'feat(scope): description', 'fix(scope): description'). Keep under 72 characters. Be specific about WHAT changed, not just the task title.\n2. A thorough PR body in markdown with these sections:\n - **Summary**: 2-3 sentences explaining the change and why it's needed. Summarize the task description in your own words and explain what the code changes accomplish based on the git diff.\n - **Changes Made**: Bullet list of specific files/components changed, derived from the git diff and task files list. Describe what each change does.\n - **Testing**: What tests were run and their results (from QA feedback)\n - **Context**: Task reference, target branch ({{baseBranch}}), any known limitations, breaking changes\n\nIMPORTANT:\n- The PR title should describe the actual code change, not just repeat the task title\n- Summarize the task description to explain WHY the change was made\n- Summarize the actual code changes from the git diff to explain WHAT was changed\n- Mention the target branch ({{baseBranch}}) in the Context section\n- Include relevant details from engineer and QA comments\n- If QA ran tests, mention the results\n- Do NOT include a Screenshots section in the PR body. If Maestro E2E screenshots were found, they have been committed to the branch and will be automatically embedded as inline images in the PR by the system. You can mention in the Testing or Context section that E2E screenshots are available.\n- If there are any caveats or follow-up items mentioned in comments, note them",
|
|
83
104
|
"contextKeys": [
|
|
84
105
|
"taskTitle",
|
|
@@ -101,10 +122,7 @@
|
|
|
101
122
|
"description": "Full PR description in markdown with Summary, Changes Made, Testing, and Context sections"
|
|
102
123
|
}
|
|
103
124
|
},
|
|
104
|
-
"required": [
|
|
105
|
-
"prTitle",
|
|
106
|
-
"prBody"
|
|
107
|
-
]
|
|
125
|
+
"required": ["prTitle", "prBody"]
|
|
108
126
|
},
|
|
109
127
|
"outputKey": "prContent",
|
|
110
128
|
"temperature": 0.4
|
|
@@ -122,12 +140,9 @@
|
|
|
122
140
|
{
|
|
123
141
|
"type": "llm-action",
|
|
124
142
|
"name": "WritePRComment",
|
|
143
|
+
"allowedTools": [],
|
|
125
144
|
"prompt": "Write a brief task comment documenting the PR creation result.\n\nTask: {{taskTitle}}\nPR Content: {{prContent}}\nGit Push Result: {{custom.gitPushResult}}\nPR Creation Result: {{custom.gitCreatePRResult}}\nPR URL: {{custom.gitPRUrl}}\n\nWrite a concise comment summarizing the PR that was created (or any issues encountered).",
|
|
126
|
-
"contextKeys": [
|
|
127
|
-
"taskTitle",
|
|
128
|
-
"prContent",
|
|
129
|
-
"custom"
|
|
130
|
-
],
|
|
145
|
+
"contextKeys": ["taskTitle", "prContent", "custom"],
|
|
131
146
|
"outputSchema": {
|
|
132
147
|
"type": "object",
|
|
133
148
|
"properties": {
|
|
@@ -135,9 +150,7 @@
|
|
|
135
150
|
"type": "string"
|
|
136
151
|
}
|
|
137
152
|
},
|
|
138
|
-
"required": [
|
|
139
|
-
"comment"
|
|
140
|
-
]
|
|
153
|
+
"required": ["comment"]
|
|
141
154
|
},
|
|
142
155
|
"outputKey": "releaseComment",
|
|
143
156
|
"temperature": 0.3
|
|
@@ -200,6 +213,7 @@
|
|
|
200
213
|
"statusChangeReason": null,
|
|
201
214
|
"currentTaskId": null,
|
|
202
215
|
"taskAssignedAt": null,
|
|
216
|
+
"existingPRFound": false,
|
|
203
217
|
"loopCount": 0
|
|
204
218
|
}
|
|
205
219
|
}
|
|
@@ -4,7 +4,6 @@ description: >-
|
|
|
4
4
|
Release agent that creates well-crafted GitHub pull requests with descriptive
|
|
5
5
|
titles and thorough descriptions. Triggered when tasks reach the "done" column
|
|
6
6
|
to push branches and open PRs summarizing changes, test results, and context.
|
|
7
|
-
model: sonnet
|
|
8
7
|
triggeredByColumns:
|
|
9
8
|
- done
|
|
10
9
|
triggerPriority: 10
|
|
@@ -67,10 +66,12 @@ You are a release agent responsible for creating high-quality GitHub pull reques
|
|
|
67
66
|
|
|
68
67
|
When a task reaches the "done" column, you:
|
|
69
68
|
|
|
70
|
-
1. **
|
|
71
|
-
2. **
|
|
72
|
-
3. **
|
|
73
|
-
4. **
|
|
69
|
+
1. **Ensure all changes are committed and pushed**: Previous agents (engineer, QA) may have left unstaged or unpushed changes. You MUST check `git status`, commit any remaining changes, and push BEFORE creating a PR. See the "CRITICAL: Ensure ALL Changes Are Committed and Pushed" section below.
|
|
70
|
+
2. **Gather context**: Read the task details, comments from the engineer and QA agents, and the git diff
|
|
71
|
+
3. **Craft a PR title**: Create a concise, descriptive title following conventional commit style
|
|
72
|
+
4. **Write a thorough PR description**: Summarize what changed, why, how it was tested, and any relevant context
|
|
73
|
+
5. **Push the branch and create the PR**
|
|
74
|
+
6. **Final sync**: Check for any new changes from your own release work, commit and push if needed
|
|
74
75
|
|
|
75
76
|
## PR Title Guidelines
|
|
76
77
|
|
|
@@ -111,9 +112,53 @@ Write a PR description that a reviewer can understand without reading the code:
|
|
|
111
112
|
- You do not need to reference screenshot paths manually — the system handles this
|
|
112
113
|
- You may mention in the Testing or Context section that E2E screenshots are included
|
|
113
114
|
|
|
115
|
+
## CRITICAL: Ensure ALL Changes Are Committed and Pushed
|
|
116
|
+
|
|
117
|
+
**The release agent is the LAST line of defense before a PR is created.** Previous agents
|
|
118
|
+
(engineer, QA) sometimes leave unstaged, uncommitted, or unpushed changes in worktrees.
|
|
119
|
+
If you skip this step, the PR will be missing work and the review will be incomplete.
|
|
120
|
+
|
|
121
|
+
**YOU MUST follow this sequence every single time, no exceptions.**
|
|
122
|
+
|
|
123
|
+
### Pre-Release Git Sync (BEFORE creating or updating a PR)
|
|
124
|
+
|
|
125
|
+
1. **Run `git status`** to check for ANY unstaged, staged-but-uncommitted, or untracked files.
|
|
126
|
+
2. **If there are ANY changes at all** (modified files, untracked files, staged changes):
|
|
127
|
+
- Stage everything: `git add -A`
|
|
128
|
+
- Commit with message: `chore: stage remaining changes from agent pipeline`
|
|
129
|
+
- Push the commit: `git push`
|
|
130
|
+
3. **If `git status` is clean**, verify the local branch is up to date with the remote:
|
|
131
|
+
- Run `git status` or `git log origin/<branch>..HEAD` to check for unpushed commits.
|
|
132
|
+
- If there are unpushed commits, run `git push`.
|
|
133
|
+
4. **Only after the remote branch is fully up to date**, proceed to create or update the PR.
|
|
134
|
+
|
|
135
|
+
### Post-Release Git Sync (AFTER all release work is done)
|
|
136
|
+
|
|
137
|
+
After creating or updating the PR, do a **final check**:
|
|
138
|
+
|
|
139
|
+
1. **Run `git status` again.** Your own release work (e.g., changelog edits, version bumps)
|
|
140
|
+
may have created new changes.
|
|
141
|
+
2. **If there are ANY changes**:
|
|
142
|
+
- `git add -A`
|
|
143
|
+
- `git commit -m "chore: finalize release changes"`
|
|
144
|
+
- `git push`
|
|
145
|
+
3. **Confirm the PR branch is fully synced** with the remote before reporting success.
|
|
146
|
+
|
|
147
|
+
### Why This Matters
|
|
148
|
+
|
|
149
|
+
- Engineer agents write code but sometimes fail to push their final commits.
|
|
150
|
+
- QA agents may leave test artifacts, updated snapshots, or lint fixes uncommitted.
|
|
151
|
+
- Without this step, the PR diff will not reflect all the actual work that was done.
|
|
152
|
+
- Reviewers will see a PR that is missing changes, leading to confusion and wasted time.
|
|
153
|
+
|
|
154
|
+
**If you create a PR without first ensuring all changes are pushed, the PR is BROKEN.**
|
|
155
|
+
|
|
114
156
|
## Mandatory Workflow
|
|
115
157
|
|
|
116
|
-
1.
|
|
117
|
-
2.
|
|
158
|
+
1. **Pre-release git sync** - Check for unstaged changes, commit, and push (see above)
|
|
159
|
+
2. **Create/update the PR** - Push branch and open or update the GitHub PR
|
|
160
|
+
3. **Post-release git sync** - Final check for any new changes, commit, and push
|
|
161
|
+
4. `add_task_comment` - Document PR creation result
|
|
162
|
+
5. `report_trigger_result` - Report pass/fail
|
|
118
163
|
|
|
119
|
-
**DO NOT FINISH WITHOUT
|
|
164
|
+
**DO NOT FINISH WITHOUT COMPLETING ALL FIVE STEPS.**
|