@kendoo.agentdesk/agentdesk 0.8.0 → 0.8.2

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/README.md CHANGED
@@ -79,6 +79,7 @@ agentdesk update Update to the latest version
79
79
  |------|-------------|
80
80
  | `--description`, `-d` | Task description or requirements |
81
81
  | `--cwd` | Working directory (defaults to current) |
82
+ | `--legacy` | Use single-process mode (cheaper, less independent reasoning) |
82
83
 
83
84
  ## Configuration
84
85
 
@@ -115,12 +116,22 @@ AgentDesk also auto-discovers agents from `.claude/agents/`, `.claude/commands/`
115
116
 
116
117
  ## How It Works
117
118
 
119
+ Each agent runs as its own independent Claude session — not one model role-playing multiple personas. This produces genuine independent reasoning, real disagreements, and better output.
120
+
118
121
  1. You run `agentdesk team TASK-ID` in your project directory
119
122
  2. AgentDesk detects your project type, reads `CLAUDE.md`, and discovers existing agents
120
- 3. The team collaborates in structured phases: **Intake** > **Brainstorm** > **Planning** > **Execution** > **Review**
121
- 4. The session streams live to [agentdesk.live](https://agentdesk.live) where you can watch and send messages to the team
122
- 5. For UI tasks, the team captures screenshots (desktop + mobile) and uploads them to your task tracker
123
- 6. Token usage is tracked and displayed per session
123
+ 3. The orchestrator manages 5 phases: **Intake** > **Brainstorm** > **Planning** > **Execution** > **Review**
124
+ 4. In brainstorm/planning/review, all agents run **in parallel** each gets their own Claude session
125
+ 5. In execution, agents run sequentially: Dennis implements > Sam audits > Luna+Mark review > Vera tests > Bart QA
126
+ 6. The session streams live to [agentdesk.live](https://agentdesk.live) where you can watch and send messages to the team
127
+ 7. Token usage is tracked and displayed per session
128
+
129
+ ### Session Modes
130
+
131
+ | Mode | Command | Description |
132
+ |------|---------|-------------|
133
+ | Sub-agents (default) | `agentdesk team -d "..."` | Each agent is an independent Claude session. Better reasoning, ~4-5x tokens. |
134
+ | Legacy | `agentdesk team -d "..." --legacy` | Single Claude process, all agents as personas. Cheaper, less independent. |
124
135
 
125
136
  ## Daemon (Remote Sessions)
126
137
 
@@ -10,7 +10,12 @@ const PHASE_INSTRUCTIONS = {
10
10
  3. Check for existing PRs: \`gh pr list --search <task-id> --json number,title,state\`
11
11
  4. Explore the codebase briefly to understand what we're working with.
12
12
  5. Summarize: what needs to be done, what already exists, and what the starting point is.
13
- 6. Recommend which phase to start from (BRAINSTORM for new work, EXECUTION if branch exists).`,
13
+ 6. Recommend which phase to start from (BRAINSTORM for new work, EXECUTION if branch exists).
14
+
15
+ IMPORTANT: At the end of your intake summary, you MUST provide a short title for this session on its own line in this exact format:
16
+ SESSION_TITLE: <4-8 word title>
17
+ Example: SESSION_TITLE: Fix checkout total calculation
18
+ This title will be displayed in the dashboard navbar, so keep it short and descriptive.`,
14
19
  },
15
20
 
16
21
  brainstorm: {
@@ -146,6 +146,13 @@ export async function runOrchestrator({
146
146
  const intakeResult = await spawnAgent("Jane", jane, "intake");
147
147
  state.phaseSummaries.intake = summarizeResults([intakeResult]);
148
148
 
149
+ // Extract short title from Jane's intake (SESSION_TITLE: ...)
150
+ const titleMatch = intakeResult.rawOutput.match(/SESSION_TITLE:\s*(.+)/);
151
+ if (titleMatch) {
152
+ const shortTitle = titleMatch[1].trim().slice(0, 60);
153
+ emit({ type: "session:update", title: shortTitle });
154
+ }
155
+
149
156
  // ===========================
150
157
  // PHASE 2: BRAINSTORM (parallel, 3-5 rounds)
151
158
  // ===========================
@@ -84,6 +84,12 @@ export function createStreamParser({ teamNames, callbacks }) {
84
84
  callbacks.onSessionUpdate?.({ taskId: taskIdMatch[1] });
85
85
  }
86
86
 
87
+ // Detect short title from Jane
88
+ const titleMatch = text.match(/SESSION_TITLE:\s*(.+)/);
89
+ if (titleMatch) {
90
+ callbacks.onSessionUpdate?.({ title: titleMatch[1].trim().slice(0, 60) });
91
+ }
92
+
87
93
  const textLines = text.split("\n");
88
94
  let i = 0;
89
95
  while (i < textLines.length) {
package/cli/team.mjs CHANGED
@@ -239,8 +239,11 @@ export async function runTeam(taskId, opts = {}) {
239
239
  console.log(` ${success ? "✓" : "✗"} ${summary}`);
240
240
  vizSend({ type: "tool:result", success, summary });
241
241
  },
242
- onSessionUpdate({ taskId: newTaskId }) {
243
- if (createTask) {
242
+ onSessionUpdate({ taskId: newTaskId, title: newTitle }) {
243
+ if (newTitle) {
244
+ vizSend({ type: "session:update", title: newTitle });
245
+ }
246
+ if (newTaskId && createTask) {
244
247
  taskId = newTaskId;
245
248
  if (tracker === "linear" && config.linear?.workspace) {
246
249
  taskLink = `https://linear.app/${config.linear.workspace}/issue/${newTaskId}`;
@@ -251,7 +254,7 @@ export async function runTeam(taskId, opts = {}) {
251
254
  if (repo) taskLink = `https://github.com/${repo}/issues/${newTaskId}`;
252
255
  }
253
256
  console.log(`\n # Task: ${newTaskId}${taskLink ? ` (${taskLink})` : ""}\n`);
254
- vizSend({ type: "session:update", taskId: newTaskId, taskLink, title: description || newTaskId });
257
+ vizSend({ type: "session:update", taskId: newTaskId, taskLink, title: newTitle || description || newTaskId });
255
258
  }
256
259
  },
257
260
  onSessionEnd({ duration, steps, inputTokens, outputTokens }) {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@kendoo.agentdesk/agentdesk",
3
- "version": "0.8.0",
3
+ "version": "0.8.2",
4
4
  "description": "AI team orchestrator for Claude Code — run collaborative agent sessions from your terminal",
5
5
  "type": "module",
6
6
  "bin": {
package/prompts/team.md CHANGED
@@ -359,6 +359,11 @@ Based on what you find, Jane determines the starting point:
359
359
  - Branch exists but no PR: Review what's implemented, continue from EXECUTION.
360
360
  - PR exists: Review the PR status, continue accordingly.
361
361
 
362
+ IMPORTANT: At the end of the intake, Jane MUST provide a short title for this session on its own line in this exact format:
363
+ SESSION_TITLE: <4-8 word title>
364
+ Example: SESSION_TITLE: Fix checkout total calculation
365
+ This title is displayed in the dashboard navbar, so keep it short and descriptive.
366
+
362
367
  ---
363
368
 
364
369
  ## BRAINSTORM (3-5 rounds)