daedalus-cli 3.30.4 → 3.30.5
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 +7 -0
- package/dist/commands/enhance.d.ts +1 -1
- package/dist/commands/enhance.d.ts.map +1 -1
- package/dist/commands/enhance.js +27 -2
- package/dist/commands/enhance.js.map +1 -1
- package/dist/commands/enhance.test.js +14 -0
- package/dist/commands/enhance.test.js.map +1 -1
- package/package.json +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -1,3 +1,10 @@
|
|
|
1
|
+
## [3.30.5](https://github.com/bgill55/daedalus/compare/v3.30.4...v3.30.5) (2026-08-17)
|
|
2
|
+
|
|
3
|
+
|
|
4
|
+
### Bug Fixes
|
|
5
|
+
|
|
6
|
+
* **enhance:** bound open-ended 'improvements/ideas' lists to stop boilerplate rambles (Rule 9) ([#124](https://github.com/bgill55/daedalus/issues/124)) ([00e4e3e](https://github.com/bgill55/daedalus/commit/00e4e3ee976d89a7ed78db2f5f7387fdb4a2ec61)), closes [#121](https://github.com/bgill55/daedalus/issues/121) [#122](https://github.com/bgill55/daedalus/issues/122) [#123](https://github.com/bgill55/daedalus/issues/123)
|
|
7
|
+
|
|
1
8
|
## [3.30.4](https://github.com/bgill55/daedalus/compare/v3.30.3...v3.30.4) (2026-08-17)
|
|
2
9
|
|
|
3
10
|
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import type { Command, CommandContext } from './types.js';
|
|
2
|
-
export declare const ENHANCE_SYSTEM_PROMPT = "You are an expert prompt engineer for AI coding agents. \nExpand the user's raw or casual request into a crisp, high-yield engineering prompt for Daedalus.\nRules for the generated prompt:\n1. Frame the prompt as a direct action command instructing the agent to perform the task and write out its completed report.\n2. Instruct the agent to inspect relevant files and codebase context using tools before writing.\n3. Require the agent to deliver a fully populated report formatted in Markdown with headers, filled-in comparison tables, and bullet points.\n4. NEVER output empty Markdown templates, empty table rows (e.g. \"| Aspect | | |\"), or bracketed placeholders (e.g. \"[dependency]\", \"[what it does]\"). Instead, write clear instructions ordering the agent to analyze the code and populate those sections with actual findings.\n5. Return ONLY the final enhanced prompt text without meta-commentary, introductory remarks, or surrounding quote marks.\n6. If the user's request already contains tool-call markup (e.g. `<tool_call>`, `<function=...>`), code fences, or XML-like tags, DO NOT copy that structured markup into the output. Rephrase the request as a clean natural-language instruction that a coding agent can act on directly. The enhanced prompt must be plain prose/Markdown an agent can execute \u2014 never raw tool-call XML.\n7. PRESERVE THE USER'S INTENT MODE. If the user's request is a proposal, ideation, brainstorm, design, or discussion ask (e.g. \"come up with ideas\", \"propose\", \"what are some options\", \"brainstorm\", \"think about how to\", \"suggest approaches\", \"architecture review\"), the enhanced prompt MUST remain a proposal/analysis ask. Do NOT reframe it as an implement/build command, and do NOT inject execution-scope deliverables such as \"implement the following\", \"deliver a comprehensive Markdown report with sprint breakdowns and file modifications\", \"manageable sprints\", or \"populate all sections with actual implementation plans\". If the user wants implementation, they will say so \u2014 your job is to make the proposal sharper and more specific, not to expand a question into a build order. Conversely, if the request IS a direct implementation task, keep Rule 1-3 as written.\n8. DO NOT NAME SPECIFIC TOOL FUNCTIONS. The execution agent selects its own tools from whatever is available in its environment \u2014 you cannot know the exact tool names, and naming non-existent ones (e.g. \"using find_symbol and get_definition to locate files\") makes the agent attempt calls that fail. Instead, describe the ACTION in plain language (\"inspect the relevant source files\", \"search the codebase for usages of X\"). Never write \"using <tool_name> to ...\" or \"via <tool_name>\" clauses.";
|
|
2
|
+
export declare const ENHANCE_SYSTEM_PROMPT = "You are an expert prompt engineer for AI coding agents. \nExpand the user's raw or casual request into a crisp, high-yield engineering prompt for Daedalus.\nRules for the generated prompt:\n1. Frame the prompt as a direct action command instructing the agent to perform the task and write out its completed report.\n2. Instruct the agent to inspect relevant files and codebase context using tools before writing.\n3. Require the agent to deliver a fully populated report formatted in Markdown with headers, filled-in comparison tables, and bullet points.\n4. NEVER output empty Markdown templates, empty table rows (e.g. \"| Aspect | | |\"), or bracketed placeholders (e.g. \"[dependency]\", \"[what it does]\"). Instead, write clear instructions ordering the agent to analyze the code and populate those sections with actual findings.\n5. Return ONLY the final enhanced prompt text without meta-commentary, introductory remarks, or surrounding quote marks.\n6. If the user's request already contains tool-call markup (e.g. `<tool_call>`, `<function=...>`), code fences, or XML-like tags, DO NOT copy that structured markup into the output. Rephrase the request as a clean natural-language instruction that a coding agent can act on directly. The enhanced prompt must be plain prose/Markdown an agent can execute \u2014 never raw tool-call XML.\n7. PRESERVE THE USER'S INTENT MODE. If the user's request is a proposal, ideation, brainstorm, design, or discussion ask (e.g. \"come up with ideas\", \"propose\", \"what are some options\", \"brainstorm\", \"think about how to\", \"suggest approaches\", \"architecture review\"), the enhanced prompt MUST remain a proposal/analysis ask. Do NOT reframe it as an implement/build command, and do NOT inject execution-scope deliverables such as \"implement the following\", \"deliver a comprehensive Markdown report with sprint breakdowns and file modifications\", \"manageable sprints\", or \"populate all sections with actual implementation plans\". If the user wants implementation, they will say so \u2014 your job is to make the proposal sharper and more specific, not to expand a question into a build order. Conversely, if the request IS a direct implementation task, keep Rule 1-3 as written.\n8. DO NOT NAME SPECIFIC TOOL FUNCTIONS. The execution agent selects its own tools from whatever is available in its environment \u2014 you cannot know the exact tool names, and naming non-existent ones (e.g. \"using find_symbol and get_definition to locate files\") makes the agent attempt calls that fail. Instead, describe the ACTION in plain language (\"inspect the relevant source files\", \"search the codebase for usages of X\"). Never write \"using <tool_name> to ...\" or \"via <tool_name>\" clauses.\n9. BOUNDED, DISTINCT OUTPUT \u2014 DEPTH OVER BREADTH. When the request asks for \"improvements\", \"ideas\", \"options\", or \"areas for <X>\", instruct the agent to produce AT MOST 8-10 highest-impact, DISTINCT items. Never generate templated or boilerplate variations of the same idea (e.g. fifty \"Add Prompt Template Variables ...\" bullets that only swap words). Each item must be a concrete, independently valuable change with its own rationale. \"Fully populated\" (Rule 3-4) means every table ROW holds real findings \u2014 it does NOT mean padding an open-ended list with repetitive permutations. If the codebase yields fewer than 8 genuine items, stop; do not invent filler.";
|
|
3
3
|
export declare function enhancePrompt(rawPrompt: string, ctx: CommandContext): Promise<string>;
|
|
4
4
|
export declare const enhanceCommand: Command;
|
|
5
5
|
//# sourceMappingURL=enhance.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"enhance.d.ts","sourceRoot":"","sources":["../../src/commands/enhance.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,OAAO,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAE1D,eAAO,MAAM,qBAAqB,
|
|
1
|
+
{"version":3,"file":"enhance.d.ts","sourceRoot":"","sources":["../../src/commands/enhance.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,OAAO,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAE1D,eAAO,MAAM,qBAAqB,q3GAWsnB,CAAC;AA6EzpB,wBAAsB,aAAa,CAAC,SAAS,EAAE,MAAM,EAAE,GAAG,EAAE,cAAc,GAAG,OAAO,CAAC,MAAM,CAAC,CAiC3F;AAED,eAAO,MAAM,cAAc,EAAE,OAgE5B,CAAC"}
|
package/dist/commands/enhance.js
CHANGED
|
@@ -13,7 +13,8 @@ Rules for the generated prompt:
|
|
|
13
13
|
5. Return ONLY the final enhanced prompt text without meta-commentary, introductory remarks, or surrounding quote marks.
|
|
14
14
|
6. If the user's request already contains tool-call markup (e.g. \`<tool_call>\`, \`<function=...>\`), code fences, or XML-like tags, DO NOT copy that structured markup into the output. Rephrase the request as a clean natural-language instruction that a coding agent can act on directly. The enhanced prompt must be plain prose/Markdown an agent can execute — never raw tool-call XML.
|
|
15
15
|
7. PRESERVE THE USER'S INTENT MODE. If the user's request is a proposal, ideation, brainstorm, design, or discussion ask (e.g. "come up with ideas", "propose", "what are some options", "brainstorm", "think about how to", "suggest approaches", "architecture review"), the enhanced prompt MUST remain a proposal/analysis ask. Do NOT reframe it as an implement/build command, and do NOT inject execution-scope deliverables such as "implement the following", "deliver a comprehensive Markdown report with sprint breakdowns and file modifications", "manageable sprints", or "populate all sections with actual implementation plans". If the user wants implementation, they will say so — your job is to make the proposal sharper and more specific, not to expand a question into a build order. Conversely, if the request IS a direct implementation task, keep Rule 1-3 as written.
|
|
16
|
-
8. DO NOT NAME SPECIFIC TOOL FUNCTIONS. The execution agent selects its own tools from whatever is available in its environment — you cannot know the exact tool names, and naming non-existent ones (e.g. "using find_symbol and get_definition to locate files") makes the agent attempt calls that fail. Instead, describe the ACTION in plain language ("inspect the relevant source files", "search the codebase for usages of X"). Never write "using <tool_name> to ..." or "via <tool_name>" clauses
|
|
16
|
+
8. DO NOT NAME SPECIFIC TOOL FUNCTIONS. The execution agent selects its own tools from whatever is available in its environment — you cannot know the exact tool names, and naming non-existent ones (e.g. "using find_symbol and get_definition to locate files") makes the agent attempt calls that fail. Instead, describe the ACTION in plain language ("inspect the relevant source files", "search the codebase for usages of X"). Never write "using <tool_name> to ..." or "via <tool_name>" clauses.
|
|
17
|
+
9. BOUNDED, DISTINCT OUTPUT — DEPTH OVER BREADTH. When the request asks for "improvements", "ideas", "options", or "areas for <X>", instruct the agent to produce AT MOST 8-10 highest-impact, DISTINCT items. Never generate templated or boilerplate variations of the same idea (e.g. fifty "Add Prompt Template Variables ..." bullets that only swap words). Each item must be a concrete, independently valuable change with its own rationale. "Fully populated" (Rule 3-4) means every table ROW holds real findings — it does NOT mean padding an open-ended list with repetitive permutations. If the codebase yields fewer than 8 genuine items, stop; do not invent filler.`;
|
|
17
18
|
// Intent-mode markers. If the RAW request contains a proposal/brainstorm marker, the
|
|
18
19
|
// enhanced prompt must stay a proposal and must not be expanded into an implementation
|
|
19
20
|
// mandate. Used by stripModeViolation to defend against an enhancer that ignores Rule 7.
|
|
@@ -43,6 +44,30 @@ function stripInventedToolRefs(enhanced) {
|
|
|
43
44
|
.replace(/\n{3,}/g, '\n\n')
|
|
44
45
|
.trim();
|
|
45
46
|
}
|
|
47
|
+
// Matches a Markdown bullet line (supports "-", "*", "•", numbered "1.").
|
|
48
|
+
const BULLET_RE = /^\s*(?:[-*•]|\d+\.)\s+/;
|
|
49
|
+
/**
|
|
50
|
+
* Backstop for Rule 9: if the enhanced prompt's bullet list degenerates into templated
|
|
51
|
+
* boilerplate (the same prefix repeating many times — e.g. fifty "Add Prompt Template
|
|
52
|
+
* Variables ..." bullets that only swap words), keep the first MAX_DISTINCT_BULLETS items
|
|
53
|
+
* and append a cap note. This stops the execution turn from producing a 4.5k-token
|
|
54
|
+
* copy-paste ramble when the user asked for "areas of improvement". We cap by total bullet
|
|
55
|
+
* count (not by de-duping semantics) — a list with >MAX items is almost always padding, and
|
|
56
|
+
* the note instructs the agent to keep only the highest-impact, distinct items.
|
|
57
|
+
*/
|
|
58
|
+
const MAX_DISTINCT_BULLETS = 12;
|
|
59
|
+
function capRepetition(enhanced) {
|
|
60
|
+
const lines = enhanced.split('\n');
|
|
61
|
+
const bulletIdx = [];
|
|
62
|
+
lines.forEach((ln, i) => { if (BULLET_RE.test(ln))
|
|
63
|
+
bulletIdx.push(i); });
|
|
64
|
+
if (bulletIdx.length <= MAX_DISTINCT_BULLETS)
|
|
65
|
+
return enhanced;
|
|
66
|
+
const keepThrough = bulletIdx[MAX_DISTINCT_BULLETS - 1]; // last bullet we keep
|
|
67
|
+
const truncated = lines.slice(0, keepThrough + 1);
|
|
68
|
+
truncated.push('', `> Note: list capped at the ${MAX_DISTINCT_BULLETS} highest-impact, distinct items — do not pad with templated variations of the same idea.`);
|
|
69
|
+
return truncated.join('\n').trim();
|
|
70
|
+
}
|
|
46
71
|
/**
|
|
47
72
|
* Backstop for Rule 7: if the raw request is a proposal/ideation ask but the enhancer
|
|
48
73
|
* still expanded it into an implement/build mandate (added sprint breakdowns, "implement
|
|
@@ -81,7 +106,7 @@ export async function enhancePrompt(rawPrompt, ctx) {
|
|
|
81
106
|
// markup so the displayed/enhanced prompt is always plain prose an agent
|
|
82
107
|
// can execute (see bug where /enhance returned <tool_call><function=read_file>).
|
|
83
108
|
const stripped = stripToolCallMarkup(res.trim());
|
|
84
|
-
return stripInventedToolRefs(stripModeViolation(rawPrompt, stripped));
|
|
109
|
+
return capRepetition(stripInventedToolRefs(stripModeViolation(rawPrompt, stripped)));
|
|
85
110
|
}
|
|
86
111
|
}
|
|
87
112
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"enhance.js","sourceRoot":"","sources":["../../src/commands/enhance.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,YAAY,CAAC;AAC5B,OAAO,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AAChE,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAClD,OAAO,EAAE,eAAe,EAAE,MAAM,0BAA0B,CAAC;AAC3D,OAAO,EAAE,mBAAmB,EAAE,MAAM,kBAAkB,CAAC;AAGvD,MAAM,CAAC,MAAM,qBAAqB,GAAG
|
|
1
|
+
{"version":3,"file":"enhance.js","sourceRoot":"","sources":["../../src/commands/enhance.ts"],"names":[],"mappings":"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"}
|
|
@@ -71,6 +71,20 @@ describe('enhanceCommand', () => {
|
|
|
71
71
|
// Action-based phrasing survives.
|
|
72
72
|
expect(result).toMatch(/locate relevant source files/i);
|
|
73
73
|
});
|
|
74
|
+
it('caps a boilerplate bullet ramble at the top 12 distinct items (Rule 9)', async () => {
|
|
75
|
+
// Regression: a "areas of improvement" ask produced ~150 near-duplicate "Add Prompt
|
|
76
|
+
// Template Variables ..." bullets (4.5k-token copy-paste ramble). Rule 9 + capRepetition
|
|
77
|
+
// keep the first 12 bullets and append a cap note instead of letting the list explode.
|
|
78
|
+
const ramble = Array.from({ length: 60 }, (_, i) => `- Add Prompt Template Variables ${i + 1}: description for variation ${i + 1}.`).join('\n');
|
|
79
|
+
const mockCallModel = vi.fn().mockResolvedValue(ramble);
|
|
80
|
+
const mockCtx = { callModelWithFallback: mockCallModel };
|
|
81
|
+
const result = await enhancePrompt('identify areas for improvement in PromptVault', mockCtx);
|
|
82
|
+
const bulletCount = (result.match(/^\s*(?:[-*•]|\d+\.)\s+/gm) || []).length;
|
|
83
|
+
expect(bulletCount).toBeLessThanOrEqual(12);
|
|
84
|
+
expect(result).toMatch(/list capped at the 12 highest-impact, distinct items/);
|
|
85
|
+
// The cap note must be present and the ramble truncated.
|
|
86
|
+
expect(result).not.toMatch(/Add Prompt Template Variables 60:/);
|
|
87
|
+
});
|
|
74
88
|
it('enhanceCommand asks for prompt if empty and handles user response', async () => {
|
|
75
89
|
const askLineMock = vi.fn()
|
|
76
90
|
.mockResolvedValueOnce('review server.ts') // raw prompt input
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"enhance.test.js","sourceRoot":"","sources":["../../src/commands/enhance.test.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"enhance.test.js","sourceRoot":"","sources":["../../src/commands/enhance.test.ts"],"names":[],"mappings":"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"}
|