@kendoo.agentdesk/agentdesk 0.28.0 → 0.28.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/CHANGELOG.md +12 -0
- package/cli/config.mjs +1 -1
- package/cli/engine/agents/index.mjs +2 -1
- package/cli/engine/hooks.mjs +7 -0
- package/package.json +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -8,6 +8,18 @@ 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.28.2] — 2026-09-18
|
|
12
|
+
|
|
13
|
+
### Changed
|
|
14
|
+
- `[UI]` The session feed no longer prints a line for every file read, search, and shell command. Consecutive tool actions collapse into a single expandable "N actions" line, so the feed reads as a team conversation instead of a tool-call transcript.
|
|
15
|
+
- `[UI]` The team status bar is now docked at the bottom of the session view and no longer scrolls away with the conversation. The message list scrolls independently above it.
|
|
16
|
+
- `[CLI]` Added Fable 5.1 as a selectable per-phase model, and updated the Opus/Sonnet model labels in project settings.
|
|
17
|
+
|
|
18
|
+
## [0.28.1] — 2026-09-17
|
|
19
|
+
|
|
20
|
+
### Fixed
|
|
21
|
+
- `[CLI]` Jane's delegation to the team ran the delegate in the background by default, leaving its own tool calls with no live turn to get approved — every one was rejected, so a delegated agent could do nothing. Delegation now always runs synchronously.
|
|
22
|
+
|
|
11
23
|
## [0.28.0] — 2026-09-17
|
|
12
24
|
|
|
13
25
|
### Changed
|
package/cli/config.mjs
CHANGED
|
@@ -22,7 +22,7 @@ const DEFAULTS = {
|
|
|
22
22
|
projectAgents: [],
|
|
23
23
|
screenshots: true,
|
|
24
24
|
// Model per phase — override the phase default.
|
|
25
|
-
// Keys: INTAKE, PLAN, EXECUTION, REVIEW, SUMMARY. Values: "default" | "opus" | "sonnet" | "haiku".
|
|
25
|
+
// Keys: INTAKE, PLAN, EXECUTION, REVIEW, SUMMARY. Values: "default" | "opus" | "sonnet" | "haiku" | "fable".
|
|
26
26
|
// Missing entry or "default" falls back to the phase default
|
|
27
27
|
// (sonnet for INTAKE/PLAN/EXECUTION, haiku for REVIEW/SUMMARY).
|
|
28
28
|
phaseModels: {},
|
|
@@ -33,7 +33,7 @@ export const PHASE_ROSTER = Object.freeze({
|
|
|
33
33
|
const CUSTOM_AGENT_PHASES = new Set(["PLAN", "EXECUTION"]);
|
|
34
34
|
|
|
35
35
|
// Today's defaults: REVIEW and SUMMARY on haiku, the rest on the CLI default.
|
|
36
|
-
// `phaseModels` values are "opus" | "sonnet" | "haiku" | "default" | undefined.
|
|
36
|
+
// `phaseModels` values are "opus" | "sonnet" | "haiku" | "fable" | "default" | undefined.
|
|
37
37
|
export function modelForPhase(phase, phaseModels = {}) {
|
|
38
38
|
const choice = phaseModels?.[phase];
|
|
39
39
|
if (choice && choice !== "default") return choice;
|
|
@@ -81,6 +81,7 @@ export function leadSystemPrompt(roster, phase) {
|
|
|
81
81
|
`You are ${LEAD}, ${jane.role}. ${jane.description}.`,
|
|
82
82
|
"",
|
|
83
83
|
"You coordinate; you do not build. You have exactly one tool — Agent — and you use it to delegate to the team. You never read files, run commands, or edit anything yourself; when you need technical information, ask an agent for it.",
|
|
84
|
+
"Always delegate with run_in_background: false. A backgrounded agent's own tool calls cannot be approved, so it will be unable to do anything.",
|
|
84
85
|
"Your language is product-only: user stories, acceptance criteria, scope, priorities, stakeholder impact.",
|
|
85
86
|
"",
|
|
86
87
|
`Team available in phase ${phase}:`,
|
package/cli/engine/hooks.mjs
CHANGED
|
@@ -51,6 +51,13 @@ export function decidePreToolUse({ phase, input, state = {} }) {
|
|
|
51
51
|
return { decision: "deny", reason: `The lead does not touch code or run commands — delegate ${tool} to a team agent.` };
|
|
52
52
|
}
|
|
53
53
|
|
|
54
|
+
// The SDK backgrounds Agent calls by default. A backgrounded delegate's own
|
|
55
|
+
// tool calls have no live turn to resolve permissions against, so every one
|
|
56
|
+
// of them gets silently rejected. Force synchronous delegation instead.
|
|
57
|
+
if (isMainThread && tool === "Agent" && input?.tool_input?.run_in_background !== false) {
|
|
58
|
+
return { decision: "deny", reason: "Delegate synchronously: call Agent with run_in_background: false, or the delegate's own tool calls will be rejected." };
|
|
59
|
+
}
|
|
60
|
+
|
|
54
61
|
if (phase === "REVIEW" && MUTATING_TOOLS.has(tool)) {
|
|
55
62
|
return { decision: "deny", reason: "REVIEW is read-only: report findings; fixes happen back in EXECUTION." };
|
|
56
63
|
}
|