daedalus-cli 3.53.6 → 3.53.7
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/skills/auto-synthesis.d.ts +1 -0
- package/dist/skills/auto-synthesis.d.ts.map +1 -1
- package/dist/skills/auto-synthesis.js +18 -6
- package/dist/skills/auto-synthesis.js.map +1 -1
- package/dist/skills/auto-synthesis.test.js +43 -1
- package/dist/skills/auto-synthesis.test.js.map +1 -1
- package/package.json +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -1,3 +1,10 @@
|
|
|
1
|
+
## [3.53.7](https://github.com/bgill55/daedalus/compare/v3.53.6...v3.53.7) (2026-08-29)
|
|
2
|
+
|
|
3
|
+
|
|
4
|
+
### Bug Fixes
|
|
5
|
+
|
|
6
|
+
* **skills:** tighten auto-synthesis gate against social/praise/correction turns ([24408e5](https://github.com/bgill55/daedalus/commit/24408e5f488bf45dd50acd60e969c8ebfe5f985a))
|
|
7
|
+
|
|
1
8
|
## [3.53.6](https://github.com/bgill55/daedalus/compare/v3.53.5...v3.53.6) (2026-08-29)
|
|
2
9
|
|
|
3
10
|
|
|
@@ -6,5 +6,6 @@ export interface SynthesisResult {
|
|
|
6
6
|
export declare function slugify(text: string): string;
|
|
7
7
|
export declare function isTrivialPrompt(prompt: string): boolean;
|
|
8
8
|
export declare function isInformationalPrompt(prompt: string): boolean;
|
|
9
|
+
export declare function isSocialPrompt(prompt: string): boolean;
|
|
9
10
|
export declare function synthesizeSkillFromTurn(userPrompt: string, turnSummary: string): SynthesisResult;
|
|
10
11
|
//# sourceMappingURL=auto-synthesis.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"auto-synthesis.d.ts","sourceRoot":"","sources":["../../src/skills/auto-synthesis.ts"],"names":[],"mappings":"AAGA,MAAM,WAAW,eAAe;IAC9B,WAAW,EAAE,OAAO,CAAC;IACrB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED,wBAAgB,OAAO,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAM5C;AAgBD,wBAAgB,eAAe,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAEvD;AAQD,wBAAgB,qBAAqB,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAE7D;
|
|
1
|
+
{"version":3,"file":"auto-synthesis.d.ts","sourceRoot":"","sources":["../../src/skills/auto-synthesis.ts"],"names":[],"mappings":"AAGA,MAAM,WAAW,eAAe;IAC9B,WAAW,EAAE,OAAO,CAAC;IACrB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED,wBAAgB,OAAO,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAM5C;AAgBD,wBAAgB,eAAe,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAEvD;AAQD,wBAAgB,qBAAqB,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAE7D;AAUD,wBAAgB,cAAc,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAEtD;AAkBD,wBAAgB,uBAAuB,CACrC,UAAU,EAAE,MAAM,EAClB,WAAW,EAAE,MAAM,GAClB,eAAe,CA6CjB"}
|
|
@@ -29,17 +29,27 @@ const INFORMATIONAL_PROMPT_RE = /\b(break down|how (this|the) (project|app|code|
|
|
|
29
29
|
export function isInformationalPrompt(prompt) {
|
|
30
30
|
return INFORMATIONAL_PROMPT_RE.test(prompt.trim());
|
|
31
31
|
}
|
|
32
|
+
// Social / praise / meta-correction prompts ("hey daedalus", "lol look at this",
|
|
33
|
+
// "job well done", "woohoo thanks", "you're right, I fabricated that") are not task
|
|
34
|
+
// requests and must never synthesize a skill — even though the model's turn summary
|
|
35
|
+
// for them often contains work verbs ("verified on disk", "build passes") that would
|
|
36
|
+
// otherwise slip past the work-signal gate. Catch them on the USER prompt directly.
|
|
37
|
+
const SOCIAL_PROMPT_RE = /^\s*(hey|hi|hello|yo|lol|lmao|haha|ha|whoa|woohoo|yay|aww|oh|hmm|hm|uh|um|cool|nice|sweet|great|awesome|perfect|validated|thanks|thank you|ty|cheers|job well done|well done|good job|nice work|you('re| are) right|my (mistake|bad)|fair|agreed|gotcha|noted|respect|legend|goat)\b/i;
|
|
38
|
+
export function isSocialPrompt(prompt) {
|
|
39
|
+
return SOCIAL_PROMPT_RE.test(prompt.trim());
|
|
40
|
+
}
|
|
32
41
|
// A turn summary that shows no actual work performed (no edit/run confirmation, no
|
|
33
42
|
// file change) is not a reusable playbook. We require at least one "did work" signal
|
|
34
43
|
// before proposing a skill, so read-only summaries and "nothing to do" turns don't synth.
|
|
35
44
|
const NO_WORK_SUMMARY_RE = /\b(no (changes|patches|edits|fix(es)?) (were )?made|already (fixed|resolved|done|present)|nothing (to do|left|changed)|no further (changes|action)|change[s]? (already )?(present|in place|existing))\b/i;
|
|
36
45
|
// Positive proof of work: a reusable skill can only be synthesized from a turn that
|
|
37
|
-
// actually
|
|
38
|
-
//
|
|
39
|
-
//
|
|
40
|
-
//
|
|
41
|
-
//
|
|
42
|
-
|
|
46
|
+
// actually EDITED or CREATED something — a file patch, a dependency addition, an
|
|
47
|
+
// implemented feature, a code generation. Read-only/verification signals ("ran",
|
|
48
|
+
// "verified", "build passes", "tests green") are NOT sufficient on their own: an audit
|
|
49
|
+
// report or a "you were right, I fabricated that" admission both contain those words
|
|
50
|
+
// but produced no reusable procedure, so they must not spawn a skill draft. This is the
|
|
51
|
+
// mechanism-level gate: "ground, don't guess" — no observed EDIT, no synthesized playbook.
|
|
52
|
+
const DID_WORK_SUMMARY_RE = /\b(installed|edited|updated|created|added|removed|deleted|fixed|resolved|refactored|implemented|patched|configured|set up|migrated|modified|wrote|generated|debugged|diff --git|@@ -\d)\b/i;
|
|
43
53
|
export function synthesizeSkillFromTurn(userPrompt, turnSummary) {
|
|
44
54
|
if (!userPrompt || userPrompt.length < 10)
|
|
45
55
|
return { synthesized: false };
|
|
@@ -49,6 +59,8 @@ export function synthesizeSkillFromTurn(userPrompt, turnSummary) {
|
|
|
49
59
|
return { synthesized: false };
|
|
50
60
|
if (isInformationalPrompt(userPrompt))
|
|
51
61
|
return { synthesized: false };
|
|
62
|
+
if (isSocialPrompt(userPrompt))
|
|
63
|
+
return { synthesized: false };
|
|
52
64
|
if (NO_WORK_SUMMARY_RE.test(turnSummary))
|
|
53
65
|
return { synthesized: false };
|
|
54
66
|
// Require proof of actual work before proposing a skill. Without this, a casual
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"auto-synthesis.js","sourceRoot":"","sources":["../../src/skills/auto-synthesis.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAC9D,OAAO,IAAI,MAAM,MAAM,CAAC;AAQxB,MAAM,UAAU,OAAO,CAAC,IAAY;IAClC,OAAO,IAAI;SACR,WAAW,EAAE;SACb,OAAO,CAAC,aAAa,EAAE,GAAG,CAAC;SAC3B,OAAO,CAAC,UAAU,EAAE,EAAE,CAAC;SACvB,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;AAClB,CAAC;AAED;;;;;;;GAOG;AACH,kFAAkF;AAClF,sFAAsF;AACtF,mEAAmE;AACnE,MAAM,iBAAiB,GACrB,uOAAuO,CAAC;AAE1O,MAAM,UAAU,eAAe,CAAC,MAAc;IAC5C,OAAO,iBAAiB,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC;AAC/C,CAAC;AAED,kGAAkG;AAClG,mGAAmG;AACnG,4DAA4D;AAC5D,MAAM,uBAAuB,GAC3B,0RAA0R,CAAC;AAE7R,MAAM,UAAU,qBAAqB,CAAC,MAAc;IAClD,OAAO,uBAAuB,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC;AACrD,CAAC;AAED,mFAAmF;AACnF,qFAAqF;AACrF,0FAA0F;AAC1F,MAAM,kBAAkB,GACtB,0MAA0M,CAAC;AAE7M,oFAAoF;AACpF,
|
|
1
|
+
{"version":3,"file":"auto-synthesis.js","sourceRoot":"","sources":["../../src/skills/auto-synthesis.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { describe, it, expect, beforeEach, afterEach } from 'vitest';
|
|
2
|
-
import { synthesizeSkillFromTurn, slugify, isTrivialPrompt, isInformationalPrompt } from './auto-synthesis.js';
|
|
2
|
+
import { synthesizeSkillFromTurn, slugify, isTrivialPrompt, isInformationalPrompt, isSocialPrompt } from './auto-synthesis.js';
|
|
3
3
|
import { setSkillsBaseDir, listSkillDrafts } from './draft.js';
|
|
4
4
|
import fs from 'fs';
|
|
5
5
|
import os from 'os';
|
|
@@ -120,5 +120,47 @@ describe('Auto Skill Synthesis', () => {
|
|
|
120
120
|
const res = synthesizeSkillFromTurn(prompt, summary);
|
|
121
121
|
expect(res.synthesized).toBe(false);
|
|
122
122
|
});
|
|
123
|
+
describe('isSocialPrompt', () => {
|
|
124
|
+
it('flags greetings, laughter, and praise as social', () => {
|
|
125
|
+
expect(isSocialPrompt('hey daedalus')).toBe(true);
|
|
126
|
+
expect(isSocialPrompt(' Hi there')).toBe(true);
|
|
127
|
+
expect(isSocialPrompt('lol can you look at this project')).toBe(true);
|
|
128
|
+
expect(isSocialPrompt('job well done')).toBe(true);
|
|
129
|
+
expect(isSocialPrompt('woohoo thanks daedalus')).toBe(true);
|
|
130
|
+
expect(isSocialPrompt('validated')).toBe(true);
|
|
131
|
+
});
|
|
132
|
+
it('does NOT flag substantive task prompts as social', () => {
|
|
133
|
+
expect(isSocialPrompt('Fix typescript module resolution error in Express router')).toBe(false);
|
|
134
|
+
expect(isSocialPrompt('Add input validation for the preview panel')).toBe(false);
|
|
135
|
+
expect(isSocialPrompt('can you look at this project and do an audit and fix the bugs')).toBe(false);
|
|
136
|
+
});
|
|
137
|
+
});
|
|
138
|
+
it('skips synthesis for a greeting turn even when the summary mentions verified work', () => {
|
|
139
|
+
// Regression: greetings like "hey daedalus" / "job well done" produce a model
|
|
140
|
+
// summary containing "verified on disk" / "build passes", which previously slipped
|
|
141
|
+
// past the work-signal gate and synthesized a junk draft. The social-prompt guard
|
|
142
|
+
// on the USER prompt must block it regardless of the summary contents.
|
|
143
|
+
const prompt = 'job well done daedalus i just checked the work you did';
|
|
144
|
+
const summary = 'All 6 tests passed and the build is clean. The changes are verified on disk.';
|
|
145
|
+
const res = synthesizeSkillFromTurn(prompt, summary);
|
|
146
|
+
expect(res.synthesized).toBe(false);
|
|
147
|
+
});
|
|
148
|
+
it('skips synthesis for a self-correction / admission turn (no edit performed)', () => {
|
|
149
|
+
// Regression: the user pointed out a fabricated finding; the model admitted it and
|
|
150
|
+
// re-verified the file. The summary contains "verified on disk" / "build passes" but
|
|
151
|
+
// NO actual edit was made, so it must not synthesize a playbook from the admission.
|
|
152
|
+
const prompt = 'can you redo the audit fixing the corrections i pointed out';
|
|
153
|
+
const summary = 'I falsely claimed github-client.ts had unused imports. That was a fabrication. ' +
|
|
154
|
+
'The actual file imports only GITHUB_API, RETRY and Repo. Build passes, tests pass (6/6 green), no patches applied.';
|
|
155
|
+
const res = synthesizeSkillFromTurn(prompt, summary);
|
|
156
|
+
expect(res.synthesized).toBe(false);
|
|
157
|
+
});
|
|
158
|
+
it('still synthesizes when a turn actually edited or created something', () => {
|
|
159
|
+
// The edit-signal gate must still allow genuine implementation turns through.
|
|
160
|
+
const prompt = 'Add input validation for the preview panel';
|
|
161
|
+
const summary = 'Edited src/preview.ts to validate the panel input and added a unit test in test/preview.test.ts.';
|
|
162
|
+
const res = synthesizeSkillFromTurn(prompt, summary);
|
|
163
|
+
expect(res.synthesized).toBe(true);
|
|
164
|
+
});
|
|
123
165
|
});
|
|
124
166
|
//# sourceMappingURL=auto-synthesis.test.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"auto-synthesis.test.js","sourceRoot":"","sources":["../../src/skills/auto-synthesis.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,EAAE,EAAE,MAAM,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,QAAQ,CAAC;AACrE,OAAO,EAAE,uBAAuB,EAAE,OAAO,EAAE,eAAe,EAAE,qBAAqB,EAAE,MAAM,qBAAqB,CAAC;AAC/
|
|
1
|
+
{"version":3,"file":"auto-synthesis.test.js","sourceRoot":"","sources":["../../src/skills/auto-synthesis.test.ts"],"names":[],"mappings":"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"}
|