@kendoo.agentdesk/agentdesk 0.9.12 → 0.9.14

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 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: https://agentdesk.live
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
@@ -218,6 +218,18 @@ function trackerCommands(tracker, config) {
218
218
  ' -d \'{"query":"mutation { attachmentCreate(input: { issueId: \\"$ISSUE_ID\\", title: \\"Pull Request\\", url: \\"$PR_URL\\" }) { success } }"}\'',
219
219
  '```',
220
220
  ].join('\n'),
221
+ attachScreenshots: [
222
+ 'Upload each screenshot via Linear fileUpload mutation, then post a comment with the image URLs:',
223
+ '```bash',
224
+ 'for f in screenshots/*.png; do',
225
+ ' UPLOAD=$(curl -s -X POST https://api.linear.app/graphql \\',
226
+ ' -H "Authorization: $LINEAR_API_KEY" -H "Content-Type: application/json" \\',
227
+ ' -d \'{"query":"mutation { fileUpload(contentType: \\"image/png\\", filename: \\"\'$(basename "$f")\'\\", size: \'$(stat -f%z "$f")\') { uploadFile { uploadUrl assetUrl headers { key value } } } }"}\')',
228
+ ' # Extract uploadUrl, assetUrl, headers from $UPLOAD — PUT the file to uploadUrl, then collect assetUrl',
229
+ 'done',
230
+ '# Post a comment with all image URLs as markdown images',
231
+ '```',
232
+ ].join('\n'),
221
233
  agentComment: [
222
234
  'Post a comment on Linear with key findings:',
223
235
  '```',
@@ -252,6 +264,17 @@ function trackerCommands(tracker, config) {
252
264
  ` -d '{"object":{"url":"$PR_URL","title":"Pull Request"}}'`,
253
265
  '```',
254
266
  ].join('\n'),
267
+ attachScreenshots: [
268
+ 'Upload each screenshot as a Jira attachment:',
269
+ '```bash',
270
+ `for f in screenshots/*.png; do`,
271
+ ` curl -s -X POST -u "$JIRA_EMAIL:$JIRA_API_TOKEN" \\`,
272
+ ` -H "X-Atlassian-Token: no-check" \\`,
273
+ ` -F "file=@$f" \\`,
274
+ ` "${baseUrl}/rest/api/3/issue/$TASK_ID/attachments"`,
275
+ `done`,
276
+ '```',
277
+ ].join('\n'),
255
278
  agentComment: [
256
279
  'Post a comment on Jira with key findings:',
257
280
  '```bash',
@@ -285,6 +308,17 @@ function trackerCommands(tracker, config) {
285
308
  'gh issue comment $TASK_ID --body "PR created: $PR_URL"',
286
309
  '```',
287
310
  ].join('\n'),
311
+ attachScreenshots: [
312
+ 'Upload screenshots and post them in a GitHub issue comment:',
313
+ '```bash',
314
+ 'BODY=""',
315
+ 'for f in screenshots/*.png; do',
316
+ ' BASE64=$(base64 < "$f")',
317
+ ' BODY="$BODY![$(basename $f)](data:image/png;base64,$BASE64)\\n"',
318
+ 'done',
319
+ 'gh issue comment $TASK_ID --body "$BODY"',
320
+ '```',
321
+ ].join('\n'),
288
322
  agentComment: [
289
323
  'Post a comment on GitHub with key findings:',
290
324
  '```bash',
@@ -373,7 +407,7 @@ export function generateTeamPrompt(team, opts = {}) {
373
407
  return `Push and create PR.\n ${cmds.postPrLink}`;
374
408
  }
375
409
  if (/screenshot.*tracker/i.test(t)) {
376
- return `Post screenshots as separate tracker comment.\n ${cmds.agentComment.replace('<COMMENT>', 'Screenshots attached above.')}`;
410
+ return `Upload screenshots to tracker, then post a comment.\n ${cmds.attachScreenshots}\n ${cmds.agentComment.replace('<COMMENT>', 'Screenshots attached — see attachments above.')}`;
377
411
  }
378
412
  return t;
379
413
  });
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) console.log(`Task: ${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
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@kendoo.agentdesk/agentdesk",
3
- "version": "0.9.12",
3
+ "version": "0.9.14",
4
4
  "description": "AI team orchestrator for Claude Code — run collaborative agent sessions from your terminal",
5
5
  "type": "module",
6
6
  "bin": {
@@ -21,7 +21,7 @@
21
21
  "server": "node server/index.mjs",
22
22
  "build": "vite build",
23
23
  "preview": "vite preview",
24
- "test": "node --test tests/server.test.mjs tests/agents.test.mjs"
24
+ "test": "node --test tests/server.test.mjs tests/agents.test.mjs tests/homepage.test.mjs"
25
25
  },
26
26
  "dependencies": {
27
27
  "bcryptjs": "^3.0.3",