@kendoo.agentdesk/agentdesk 0.19.0 → 0.19.1
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/CHANGELOG.md +5 -0
- package/cli/prompt.mjs +24 -2
- package/package.json +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -8,6 +8,11 @@ All user-facing changes to AgentDesk. Each entry is tagged:
|
|
|
8
8
|
|
|
9
9
|
Internal refactors, infrastructure changes, and architectural notes are not listed here.
|
|
10
10
|
|
|
11
|
+
## [0.19.1] — 2026-04-18
|
|
12
|
+
|
|
13
|
+
### Fixed
|
|
14
|
+
- `[CLI]` Creating a new task from a description now locks the task to the project configured in settings. The prompt previously told the agent to "create a Jira issue" without naming a project, so Claude was free to pick any project its token had access to. Jira and Linear create-from-description paths now explicitly pass the configured project key / team key and tell the agent not to choose a different one.
|
|
15
|
+
|
|
11
16
|
## [0.19.0] — 2026-04-18
|
|
12
17
|
|
|
13
18
|
### Changed
|
package/cli/prompt.mjs
CHANGED
|
@@ -61,9 +61,23 @@ export function buildPrompt({ taskId, taskLink, description, createTask, tracker
|
|
|
61
61
|
if (createTask && description) {
|
|
62
62
|
let createInstr = "\n\n## CREATE TASK (MANDATORY — FIRST ACTION IN INTAKE)\n\nNo task ID was provided — only a description. Jane MUST create a new task in the tracker as the VERY FIRST action before anything else.\n\n";
|
|
63
63
|
if (tracker === "linear") {
|
|
64
|
-
|
|
64
|
+
const linearTeamKey = config.linear?.teamKey;
|
|
65
|
+
createInstr += `Create a Linear issue using the GraphQL API:\n- Endpoint: https://api.linear.app/graphql\n- Auth: Authorization: $LINEAR_API_KEY\n`;
|
|
66
|
+
if (linearTeamKey) {
|
|
67
|
+
createInstr += `- **Team: MUST be \`${linearTeamKey}\`.** First resolve the team id: \`{ teams(filter: { key: { eq: "${linearTeamKey}" } }) { nodes { id } } }\`, then pass that id as \`teamId\` in \`issueCreate\`. Do NOT pick any other team, even if your account has access to others.\n`;
|
|
68
|
+
} else {
|
|
69
|
+
createInstr += `- ⚠ No Linear team key is configured. Ask the user which team this issue should live in BEFORE creating it.\n`;
|
|
70
|
+
}
|
|
71
|
+
createInstr += `- Set the title based on the description below\n- After creation, use the returned identifier (e.g., ${linearTeamKey || "KEN"}-530) as the task ID for the rest of the session\n`;
|
|
65
72
|
} else if (tracker === "jira") {
|
|
66
|
-
|
|
73
|
+
const jiraProject = config.jira?.project;
|
|
74
|
+
createInstr += `Create a Jira issue:\n- Endpoint: ${config.jira?.baseUrl || ""}/rest/api/3/issue\n- Auth: Basic auth with $JIRA_EMAIL and $JIRA_API_TOKEN\n`;
|
|
75
|
+
if (jiraProject) {
|
|
76
|
+
createInstr += `- **Project: MUST be \`${jiraProject}\`.** Set \`fields.project.key = "${jiraProject}"\` in the create payload. Do NOT pick any other project, even if your account has access to others.\n`;
|
|
77
|
+
} else {
|
|
78
|
+
createInstr += `- ⚠ No Jira project key is configured. Ask the user which project this task should live in BEFORE creating it.\n`;
|
|
79
|
+
}
|
|
80
|
+
createInstr += `- Set the summary based on the description below\n- After creation, use the returned key (e.g., ${jiraProject || "PROJ"}-42) as the task ID for the rest of the session\n`;
|
|
67
81
|
} else if (tracker === "github") {
|
|
68
82
|
createInstr += `Create a GitHub issue:\n- Run: gh issue create --title "..." --body "..."\n- After creation, use the returned issue number as the task ID for the rest of the session\n`;
|
|
69
83
|
}
|
|
@@ -442,9 +456,17 @@ export function buildPhasedPrompt({ phase, taskId, taskLink, description, create
|
|
|
442
456
|
if (phase === "INTAKE" && createTask && description) {
|
|
443
457
|
let createInstr = "\n\n## CREATE TASK (MANDATORY — FIRST ACTION)\n\nNo task ID was provided. Jane MUST create a new task in the tracker as the VERY FIRST action.\n\n";
|
|
444
458
|
if (tracker === "linear") {
|
|
459
|
+
const linearTeamKey = config.linear?.teamKey;
|
|
445
460
|
createInstr += `Create a Linear issue using the GraphQL API.\n`;
|
|
461
|
+
if (linearTeamKey) {
|
|
462
|
+
createInstr += `**Team MUST be \`${linearTeamKey}\`.** Resolve its id via \`{ teams(filter: { key: { eq: "${linearTeamKey}" } }) { nodes { id } } }\` and pass as \`teamId\` in \`issueCreate\`. Do NOT pick any other team.\n`;
|
|
463
|
+
}
|
|
446
464
|
} else if (tracker === "jira") {
|
|
465
|
+
const jiraProject = config.jira?.project;
|
|
447
466
|
createInstr += `Create a Jira issue at ${config.jira?.baseUrl || ""}.\n`;
|
|
467
|
+
if (jiraProject) {
|
|
468
|
+
createInstr += `**Project MUST be \`${jiraProject}\`.** Set \`fields.project.key = "${jiraProject}"\` in the create payload. Do NOT pick any other project.\n`;
|
|
469
|
+
}
|
|
448
470
|
} else if (tracker === "github") {
|
|
449
471
|
createInstr += `Create a GitHub issue: gh issue create --title "..." --body "..."\n`;
|
|
450
472
|
}
|