@kendoo.agentdesk/agentdesk 0.9.13 → 0.9.15
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/bin/agentdesk.mjs +1 -1
- package/cli/agents.mjs +8 -2
- package/cli/team.mjs +9 -2
- package/package.json +1 -1
- package/prompts/team.md +61 -4
package/bin/agentdesk.mjs
CHANGED
|
@@ -85,7 +85,7 @@ if (!command || command === "help" || command === "--help") {
|
|
|
85
85
|
agentdesk team -d "Fix the checkout total calculation"
|
|
86
86
|
agentdesk team -d "Add Google OAuth to the login page"
|
|
87
87
|
|
|
88
|
-
Dashboard:
|
|
88
|
+
Dashboard: \x1b[38;2;45;212;191mhttps://agentdesk.live\x1b[0m
|
|
89
89
|
`);
|
|
90
90
|
process.exit(0);
|
|
91
91
|
}
|
package/cli/agents.mjs
CHANGED
|
@@ -276,11 +276,17 @@ function trackerCommands(tracker, config) {
|
|
|
276
276
|
'```',
|
|
277
277
|
].join('\n'),
|
|
278
278
|
agentComment: [
|
|
279
|
-
'Post a comment on Jira with key findings:',
|
|
279
|
+
'Post a comment on Jira with key findings. IMPORTANT: Any URLs in the comment MUST use ADF inlineCard nodes so they render as clickable links:',
|
|
280
280
|
'```bash',
|
|
281
281
|
`curl -s -X POST -u "$JIRA_EMAIL:$JIRA_API_TOKEN" -H "Content-Type: application/json" \\`,
|
|
282
282
|
` "${baseUrl}/rest/api/3/issue/$TASK_ID/comment" \\`,
|
|
283
|
-
` -d '
|
|
283
|
+
` -d '<ADF_BODY>'`,
|
|
284
|
+
'```',
|
|
285
|
+
'For plain text: `{"type":"text","text":"..."}`',
|
|
286
|
+
'For clickable URLs: `{"type":"inlineCard","attrs":{"url":"https://..."}}`',
|
|
287
|
+
'Example body with a link:',
|
|
288
|
+
'```json',
|
|
289
|
+
'{"body":{"type":"doc","version":1,"content":[{"type":"paragraph","content":[{"type":"text","text":"Session: "},{"type":"inlineCard","attrs":{"url":"https://agentdesk.live/sessions/..."}}]}]}}',
|
|
284
290
|
'```',
|
|
285
291
|
].join('\n'),
|
|
286
292
|
transitionToReview: [
|
package/cli/team.mjs
CHANGED
|
@@ -30,6 +30,9 @@ function loadDotEnv(dir) {
|
|
|
30
30
|
}
|
|
31
31
|
|
|
32
32
|
export async function runTeam(taskId, opts = {}) {
|
|
33
|
+
const teal = "\x1b[38;2;45;212;191m";
|
|
34
|
+
const reset = "\x1b[0m";
|
|
35
|
+
|
|
33
36
|
const cwd = opts.cwd || process.cwd();
|
|
34
37
|
const description = opts.description || "";
|
|
35
38
|
|
|
@@ -78,7 +81,11 @@ export async function runTeam(taskId, opts = {}) {
|
|
|
78
81
|
}
|
|
79
82
|
}
|
|
80
83
|
if (tracker) console.log(`Tracker: ${tracker}`);
|
|
81
|
-
if (taskLink)
|
|
84
|
+
if (taskLink) {
|
|
85
|
+
console.log(`Task: ${teal}${taskLink}${reset}`);
|
|
86
|
+
} else if (tracker === "jira" && config.jira?.baseUrl) {
|
|
87
|
+
console.log(`Jira: ${teal}${config.jira.baseUrl}${reset}`);
|
|
88
|
+
}
|
|
82
89
|
|
|
83
90
|
// Resolve team and generate dynamic prompt sections
|
|
84
91
|
const team = resolveTeam(config);
|
|
@@ -154,7 +161,7 @@ export async function runTeam(taskId, opts = {}) {
|
|
|
154
161
|
vizConnected = true;
|
|
155
162
|
if (!sessionStartSent) {
|
|
156
163
|
console.log("AgentDesk: connected");
|
|
157
|
-
console.log(`Dashboard: ${agentdeskServer}`);
|
|
164
|
+
console.log(`Dashboard: ${teal}${agentdeskServer}${reset}`);
|
|
158
165
|
} else {
|
|
159
166
|
console.log("AgentDesk: reconnected");
|
|
160
167
|
}
|
package/package.json
CHANGED
package/prompts/team.md
CHANGED
|
@@ -136,15 +136,36 @@ Keep comments to bullet points. The tracker should tell the story without the da
|
|
|
136
136
|
|
|
137
137
|
Post comments using badge format with session link: {{SESSION_URL}}
|
|
138
138
|
|
|
139
|
+
### Clickable URLs in Jira comments
|
|
140
|
+
|
|
141
|
+
IMPORTANT: Jira REST API v3 uses ADF (Atlassian Document Format). Plain text URLs are NOT clickable. Always use `inlineCard` nodes for any URL you post:
|
|
142
|
+
|
|
143
|
+
```json
|
|
144
|
+
{"body":{"type":"doc","version":1,"content":[
|
|
145
|
+
{"type":"paragraph","content":[
|
|
146
|
+
{"type":"text","text":"Session: "},
|
|
147
|
+
{"type":"inlineCard","attrs":{"url":"https://agentdesk.live/sessions/..."}}
|
|
148
|
+
]}
|
|
149
|
+
]}}
|
|
150
|
+
```
|
|
151
|
+
|
|
152
|
+
- Plain text: `{"type":"text","text":"some text"}`
|
|
153
|
+
- Clickable link: `{"type":"inlineCard","attrs":{"url":"<URL>"}}`
|
|
154
|
+
- Line break between paragraphs: use separate `{"type":"paragraph","content":[...]}` blocks
|
|
155
|
+
|
|
139
156
|
### Required tracker actions
|
|
140
157
|
|
|
141
|
-
1. **Session start (Jane):** Post "Team session started
|
|
158
|
+
1. **Session start (Jane):** Post "Team session started" with clickable session link and transition to "In Progress":
|
|
142
159
|
```bash
|
|
143
160
|
curl -s -u "$JIRA_EMAIL:$JIRA_API_TOKEN" "{{JIRA_BASE_URL}}/rest/api/3/issue/{{TASK_ID}}/transitions"
|
|
144
161
|
# Find "In Progress" transition ID, then:
|
|
145
162
|
curl -s -X POST -u "$JIRA_EMAIL:$JIRA_API_TOKEN" -H "Content-Type: application/json" \
|
|
146
163
|
"{{JIRA_BASE_URL}}/rest/api/3/issue/{{TASK_ID}}/transitions" \
|
|
147
164
|
-d '{"transition":{"id":"<TRANSITION_ID>"}}'
|
|
165
|
+
# Post session start comment with clickable link:
|
|
166
|
+
curl -s -X POST -u "$JIRA_EMAIL:$JIRA_API_TOKEN" -H "Content-Type: application/json" \
|
|
167
|
+
"{{JIRA_BASE_URL}}/rest/api/3/issue/{{TASK_ID}}/comment" \
|
|
168
|
+
-d '{"body":{"type":"doc","version":1,"content":[{"type":"paragraph","content":[{"type":"text","text":"Team session started. Session: "},{"type":"inlineCard","attrs":{"url":"{{SESSION_URL}}"}}]}]}}'
|
|
148
169
|
```
|
|
149
170
|
|
|
150
171
|
2. **PR created (Bart):** Post PR link and attach as remote link:
|
|
@@ -154,14 +175,50 @@ Post comments using badge format with session link: {{SESSION_URL}}
|
|
|
154
175
|
-d '{"object":{"url":"$PR_URL","title":"Pull Request"}}'
|
|
155
176
|
```
|
|
156
177
|
|
|
157
|
-
3. **Session end (Jane):** Transition to "In Review" and post summary.
|
|
178
|
+
3. **Session end (Jane):** Transition to "In Review", attach session protocol, and post summary.
|
|
179
|
+
|
|
180
|
+
### Session protocol attachment
|
|
181
|
+
|
|
182
|
+
At the end of the session, Jane MUST create and attach a session protocol file to the Jira task. This is a text file summarizing the entire session:
|
|
183
|
+
|
|
184
|
+
```bash
|
|
185
|
+
cat > /tmp/session-protocol.txt << 'PROTOCOL'
|
|
186
|
+
Session Protocol — {{TASK_ID}}
|
|
187
|
+
Date: $(date -u +"%Y-%m-%d %H:%M UTC")
|
|
188
|
+
Session: {{SESSION_URL}}
|
|
189
|
+
|
|
190
|
+
## Agents
|
|
191
|
+
<list each agent and their role>
|
|
192
|
+
|
|
193
|
+
## Plan
|
|
194
|
+
<brief plan summary>
|
|
195
|
+
|
|
196
|
+
## Changes Made
|
|
197
|
+
<list of files changed and what was done>
|
|
198
|
+
|
|
199
|
+
## Decisions
|
|
200
|
+
<key technical decisions and reasoning>
|
|
201
|
+
|
|
202
|
+
## PR
|
|
203
|
+
<PR URL if created>
|
|
204
|
+
|
|
205
|
+
## Status
|
|
206
|
+
<final status — e.g., "In Review", "Blocked", etc.>
|
|
207
|
+
PROTOCOL
|
|
208
|
+
|
|
209
|
+
# Attach to Jira task
|
|
210
|
+
curl -s -X POST -u "$JIRA_EMAIL:$JIRA_API_TOKEN" \
|
|
211
|
+
-H "X-Atlassian-Token: no-check" \
|
|
212
|
+
-F "file=@/tmp/session-protocol.txt" \
|
|
213
|
+
"{{JIRA_BASE_URL}}/rest/api/3/issue/{{TASK_ID}}/attachments"
|
|
214
|
+
```
|
|
158
215
|
|
|
159
216
|
### Agent tracker comments
|
|
160
217
|
|
|
161
|
-
After completing work, agents post a brief comment on the tracker with key findings:
|
|
218
|
+
After completing work, agents post a brief comment on the tracker with key findings. All URLs MUST use inlineCard:
|
|
162
219
|
- **Dennis**: Files changed, technical decisions
|
|
163
220
|
- **Sam**: Architecture concerns or clean audit
|
|
164
|
-
- **Bart**: PR link, test results, screenshots
|
|
221
|
+
- **Bart**: PR link (as inlineCard), test results, screenshots
|
|
165
222
|
|
|
166
223
|
Keep comments to bullet points. The tracker should tell the story without the dashboard.
|
|
167
224
|
{{/JIRA}}
|