@kendoo.agentdesk/agentdesk 0.8.1 → 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/cli/agent-prompts.mjs +6 -1
- package/cli/orchestrator.mjs +7 -0
- package/cli/stream-parser.mjs +6 -0
- package/cli/team.mjs +6 -3
- package/package.json +1 -1
- package/prompts/team.md +5 -0
package/cli/agent-prompts.mjs
CHANGED
|
@@ -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: {
|
package/cli/orchestrator.mjs
CHANGED
|
@@ -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
|
// ===========================
|
package/cli/stream-parser.mjs
CHANGED
|
@@ -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 (
|
|
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
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)
|