@skillit/core 1.5.0
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/LICENSE +21 -0
- package/README.md +55 -0
- package/dist/audit-formatter.d.ts +36 -0
- package/dist/audit-formatter.d.ts.map +1 -0
- package/dist/audit-formatter.js +173 -0
- package/dist/audit-formatter.js.map +1 -0
- package/dist/audit-score.d.ts +76 -0
- package/dist/audit-score.d.ts.map +1 -0
- package/dist/audit-score.js +490 -0
- package/dist/audit-score.js.map +1 -0
- package/dist/audit-types.d.ts +81 -0
- package/dist/audit-types.d.ts.map +1 -0
- package/dist/audit-types.js +2 -0
- package/dist/audit-types.js.map +1 -0
- package/dist/audit.d.ts +17 -0
- package/dist/audit.d.ts.map +1 -0
- package/dist/audit.js +567 -0
- package/dist/audit.js.map +1 -0
- package/dist/canonical.d.ts +36 -0
- package/dist/canonical.d.ts.map +1 -0
- package/dist/canonical.js +148 -0
- package/dist/canonical.js.map +1 -0
- package/dist/config-renderer.d.ts +16 -0
- package/dist/config-renderer.d.ts.map +1 -0
- package/dist/config-renderer.js +296 -0
- package/dist/config-renderer.js.map +1 -0
- package/dist/config-types.d.ts +144 -0
- package/dist/config-types.d.ts.map +1 -0
- package/dist/config-types.js +2 -0
- package/dist/config-types.js.map +1 -0
- package/dist/docs-scanner.d.ts +40 -0
- package/dist/docs-scanner.d.ts.map +1 -0
- package/dist/docs-scanner.js +176 -0
- package/dist/docs-scanner.js.map +1 -0
- package/dist/examples-scanner.d.ts +39 -0
- package/dist/examples-scanner.d.ts.map +1 -0
- package/dist/examples-scanner.js +221 -0
- package/dist/examples-scanner.js.map +1 -0
- package/dist/index.d.ts +40 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +31 -0
- package/dist/index.js.map +1 -0
- package/dist/llms-txt.d.ts +20 -0
- package/dist/llms-txt.d.ts.map +1 -0
- package/dist/llms-txt.js +187 -0
- package/dist/llms-txt.js.map +1 -0
- package/dist/markdown-parser.d.ts +11 -0
- package/dist/markdown-parser.d.ts.map +1 -0
- package/dist/markdown-parser.js +222 -0
- package/dist/markdown-parser.js.map +1 -0
- package/dist/markdown-types.d.ts +48 -0
- package/dist/markdown-types.d.ts.map +1 -0
- package/dist/markdown-types.js +2 -0
- package/dist/markdown-types.js.map +1 -0
- package/dist/readme-parser.d.ts +21 -0
- package/dist/readme-parser.d.ts.map +1 -0
- package/dist/readme-parser.js +137 -0
- package/dist/readme-parser.js.map +1 -0
- package/dist/references-mcp.d.ts +79 -0
- package/dist/references-mcp.d.ts.map +1 -0
- package/dist/references-mcp.js +130 -0
- package/dist/references-mcp.js.map +1 -0
- package/dist/refine/ast-edit.d.ts +21 -0
- package/dist/refine/ast-edit.d.ts.map +1 -0
- package/dist/refine/ast-edit.js +147 -0
- package/dist/refine/ast-edit.js.map +1 -0
- package/dist/refine/index.d.ts +7 -0
- package/dist/refine/index.d.ts.map +1 -0
- package/dist/refine/index.js +6 -0
- package/dist/refine/index.js.map +1 -0
- package/dist/refine/jsdoc-edit.d.ts +4 -0
- package/dist/refine/jsdoc-edit.d.ts.map +1 -0
- package/dist/refine/jsdoc-edit.js +6 -0
- package/dist/refine/jsdoc-edit.js.map +1 -0
- package/dist/refine/loop.d.ts +8 -0
- package/dist/refine/loop.d.ts.map +1 -0
- package/dist/refine/loop.js +98 -0
- package/dist/refine/loop.js.map +1 -0
- package/dist/refine/select-targets.d.ts +5 -0
- package/dist/refine/select-targets.d.ts.map +1 -0
- package/dist/refine/select-targets.js +30 -0
- package/dist/refine/select-targets.js.map +1 -0
- package/dist/refine/types.d.ts +67 -0
- package/dist/refine/types.d.ts.map +1 -0
- package/dist/refine/types.js +2 -0
- package/dist/refine/types.js.map +1 -0
- package/dist/renderer.d.ts +27 -0
- package/dist/renderer.d.ts.map +1 -0
- package/dist/renderer.js +1244 -0
- package/dist/renderer.js.map +1 -0
- package/dist/tokens.d.ts +14 -0
- package/dist/tokens.d.ts.map +1 -0
- package/dist/tokens.js +26 -0
- package/dist/tokens.js.map +1 -0
- package/dist/types.d.ts +519 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/types.js +2 -0
- package/dist/types.js.map +1 -0
- package/dist/writer.d.ts +17 -0
- package/dist/writer.d.ts.map +1 -0
- package/dist/writer.js +313 -0
- package/dist/writer.js.map +1 -0
- package/package.json +54 -0
|
@@ -0,0 +1,98 @@
|
|
|
1
|
+
// packages/core/src/refine/loop.ts
|
|
2
|
+
import { auditSkill } from '../audit.js';
|
|
3
|
+
import { estimateSkillJudgeScore } from '../audit-score.js';
|
|
4
|
+
import { selectWorkItems } from './select-targets.js';
|
|
5
|
+
const DEFAULT_PASSING_GRADES = ['A'];
|
|
6
|
+
const DEFAULT_MAX_ITERATIONS = 5;
|
|
7
|
+
const DEFAULT_ITEMS_PER_ITERATION = 5;
|
|
8
|
+
function defaultScore(source) {
|
|
9
|
+
return (skill) => {
|
|
10
|
+
const audit = auditSkill(skill, source.auditContext(skill));
|
|
11
|
+
return estimateSkillJudgeScore(audit, skill);
|
|
12
|
+
};
|
|
13
|
+
}
|
|
14
|
+
export async function refineSkill(opts) {
|
|
15
|
+
const { source, model, passingGrades = DEFAULT_PASSING_GRADES, maxIterations = DEFAULT_MAX_ITERATIONS, itemsPerIteration = DEFAULT_ITEMS_PER_ITERATION, onIteration, scoreSkill = defaultScore(source) } = opts;
|
|
16
|
+
const passingSet = new Set(passingGrades);
|
|
17
|
+
const iterations = [];
|
|
18
|
+
let skill = await source.extract();
|
|
19
|
+
const guidance = await source.guidance?.();
|
|
20
|
+
let estimate = scoreSkill(skill);
|
|
21
|
+
if (passingSet.has(estimate.grade)) {
|
|
22
|
+
return finished('passed', skill, estimate, iterations, guidance);
|
|
23
|
+
}
|
|
24
|
+
let prevTotal = estimate.total;
|
|
25
|
+
for (let i = 0; i < maxIterations; i++) {
|
|
26
|
+
// Plateau: if this isn't the last allowed iteration and score hasn't improved, stop early.
|
|
27
|
+
if (i > 0 && i < maxIterations - 1 && estimate.total <= prevTotal) {
|
|
28
|
+
return finished('plateau', skill, estimate, iterations, guidance);
|
|
29
|
+
}
|
|
30
|
+
const workItems = selectWorkItems(estimate.improvements, itemsPerIteration);
|
|
31
|
+
if (workItems.length === 0) {
|
|
32
|
+
return finished('no-improvements', skill, estimate, iterations, guidance);
|
|
33
|
+
}
|
|
34
|
+
const fixes = [];
|
|
35
|
+
for (const item of workItems) {
|
|
36
|
+
const fn = skill.functions.find((f) => f.name === item.toolName);
|
|
37
|
+
let currentValue;
|
|
38
|
+
if (fn) {
|
|
39
|
+
const tag = item.tag;
|
|
40
|
+
if (tag === 'useWhen' || tag === 'avoidWhen' || tag === 'pitfalls') {
|
|
41
|
+
currentValue = fn.mcpMetadata?.toSkills?.[tag]?.[0];
|
|
42
|
+
}
|
|
43
|
+
else {
|
|
44
|
+
currentValue = fn.tags[tag];
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
let draft = await model.draft({
|
|
48
|
+
toolName: item.toolName,
|
|
49
|
+
tag: item.tag,
|
|
50
|
+
suggestion: item.improvement.suggestion,
|
|
51
|
+
currentValue,
|
|
52
|
+
skill,
|
|
53
|
+
guidance
|
|
54
|
+
});
|
|
55
|
+
const review = await model.review({
|
|
56
|
+
toolName: item.toolName,
|
|
57
|
+
tag: item.tag,
|
|
58
|
+
draft,
|
|
59
|
+
suggestion: item.improvement.suggestion,
|
|
60
|
+
skill,
|
|
61
|
+
guidance
|
|
62
|
+
});
|
|
63
|
+
if (review.verdict === 'revise') {
|
|
64
|
+
draft = await model.draft({
|
|
65
|
+
toolName: item.toolName,
|
|
66
|
+
tag: item.tag,
|
|
67
|
+
suggestion: review.feedback,
|
|
68
|
+
currentValue: draft,
|
|
69
|
+
skill,
|
|
70
|
+
guidance
|
|
71
|
+
});
|
|
72
|
+
}
|
|
73
|
+
fixes.push({ toolName: item.toolName, tag: item.tag, value: draft });
|
|
74
|
+
}
|
|
75
|
+
await source.applyFixes(fixes);
|
|
76
|
+
prevTotal = estimate.total;
|
|
77
|
+
skill = await source.extract();
|
|
78
|
+
estimate = scoreSkill(skill);
|
|
79
|
+
const iteration = { iteration: i + 1, estimate, workItems, fixes };
|
|
80
|
+
iterations.push(iteration);
|
|
81
|
+
onIteration?.(iteration);
|
|
82
|
+
if (passingSet.has(estimate.grade)) {
|
|
83
|
+
return finished('passed', skill, estimate, iterations, guidance);
|
|
84
|
+
}
|
|
85
|
+
}
|
|
86
|
+
return finished('max-iterations', skill, estimate, iterations, guidance);
|
|
87
|
+
}
|
|
88
|
+
function finished(stoppedReason, finalSkill, finalEstimate, iterations, guidance) {
|
|
89
|
+
return {
|
|
90
|
+
iterations,
|
|
91
|
+
finalSkill,
|
|
92
|
+
finalEstimate,
|
|
93
|
+
passed: stoppedReason === 'passed',
|
|
94
|
+
stoppedReason,
|
|
95
|
+
guidance
|
|
96
|
+
};
|
|
97
|
+
}
|
|
98
|
+
//# sourceMappingURL=loop.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"loop.js","sourceRoot":"","sources":["../../src/refine/loop.ts"],"names":[],"mappings":"AAAA,mCAAmC;AACnC,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACzC,OAAO,EAAE,uBAAuB,EAAE,MAAM,mBAAmB,CAAC;AAE5D,OAAO,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AAYtD,MAAM,sBAAsB,GAA+C,CAAC,GAAG,CAAC,CAAC;AACjF,MAAM,sBAAsB,GAAG,CAAC,CAAC;AACjC,MAAM,2BAA2B,GAAG,CAAC,CAAC;AAEtC,SAAS,YAAY,CAAC,MAA+B;IACnD,OAAO,CAAC,KAAK,EAAE,EAAE;QACf,MAAM,KAAK,GAAG,UAAU,CAAC,KAAK,EAAE,MAAM,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC,CAAC;QAC5D,OAAO,uBAAuB,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;IAC/C,CAAC,CAAC;AACJ,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,WAAW,CAC/B,IAAiD;IAEjD,MAAM,EACJ,MAAM,EACN,KAAK,EACL,aAAa,GAAG,sBAAsB,EACtC,aAAa,GAAG,sBAAsB,EACtC,iBAAiB,GAAG,2BAA2B,EAC/C,WAAW,EACX,UAAU,GAAG,YAAY,CAAC,MAAM,CAAC,EAClC,GAAG,IAAI,CAAC;IAET,MAAM,UAAU,GAAG,IAAI,GAAG,CAAC,aAAa,CAAC,CAAC;IAC1C,MAAM,UAAU,GAAsB,EAAE,CAAC;IACzC,IAAI,KAAK,GAAG,MAAM,MAAM,CAAC,OAAO,EAAE,CAAC;IACnC,MAAM,QAAQ,GAAG,MAAM,MAAM,CAAC,QAAQ,EAAE,EAAE,CAAC;IAC3C,IAAI,QAAQ,GAAG,UAAU,CAAC,KAAK,CAAC,CAAC;IAEjC,IAAI,UAAU,CAAC,GAAG,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC;QACnC,OAAO,QAAQ,CAAC,QAAQ,EAAE,KAAK,EAAE,QAAQ,EAAE,UAAU,EAAE,QAAQ,CAAC,CAAC;IACnE,CAAC;IAED,IAAI,SAAS,GAAG,QAAQ,CAAC,KAAK,CAAC;IAE/B,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,aAAa,EAAE,CAAC,EAAE,EAAE,CAAC;QACvC,2FAA2F;QAC3F,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,aAAa,GAAG,CAAC,IAAI,QAAQ,CAAC,KAAK,IAAI,SAAS,EAAE,CAAC;YAClE,OAAO,QAAQ,CAAC,SAAS,EAAE,KAAK,EAAE,QAAQ,EAAE,UAAU,EAAE,QAAQ,CAAC,CAAC;QACpE,CAAC;QAED,MAAM,SAAS,GAAG,eAAe,CAAC,QAAQ,CAAC,YAAY,EAAE,iBAAiB,CAAC,CAAC;QAC5E,IAAI,SAAS,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC3B,OAAO,QAAQ,CAAC,iBAAiB,EAAE,KAAK,EAAE,QAAQ,EAAE,UAAU,EAAE,QAAQ,CAAC,CAAC;QAC5E,CAAC;QAED,MAAM,KAAK,GAAiB,EAAE,CAAC;QAC/B,KAAK,MAAM,IAAI,IAAI,SAAS,EAAE,CAAC;YAC7B,MAAM,EAAE,GAAG,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,QAAQ,CAAC,CAAC;YACjE,IAAI,YAAgC,CAAC;YACrC,IAAI,EAAE,EAAE,CAAC;gBACP,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC;gBACrB,IAAI,GAAG,KAAK,SAAS,IAAI,GAAG,KAAK,WAAW,IAAI,GAAG,KAAK,UAAU,EAAE,CAAC;oBACnE,YAAY,GAAG,EAAE,CAAC,WAAW,EAAE,QAAQ,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;gBACtD,CAAC;qBAAM,CAAC;oBACN,YAAY,GAAG,EAAE,CAAC,IAAI,CAAC,GAAG,CAAuB,CAAC;gBACpD,CAAC;YACH,CAAC;YACD,IAAI,KAAK,GAAG,MAAM,KAAK,CAAC,KAAK,CAAC;gBAC5B,QAAQ,EAAE,IAAI,CAAC,QAAQ;gBACvB,GAAG,EAAE,IAAI,CAAC,GAAG;gBACb,UAAU,EAAE,IAAI,CAAC,WAAW,CAAC,UAAU;gBACvC,YAAY;gBACZ,KAAK;gBACL,QAAQ;aACT,CAAC,CAAC;YACH,MAAM,MAAM,GAAG,MAAM,KAAK,CAAC,MAAM,CAAC;gBAChC,QAAQ,EAAE,IAAI,CAAC,QAAQ;gBACvB,GAAG,EAAE,IAAI,CAAC,GAAG;gBACb,KAAK;gBACL,UAAU,EAAE,IAAI,CAAC,WAAW,CAAC,UAAU;gBACvC,KAAK;gBACL,QAAQ;aACT,CAAC,CAAC;YACH,IAAI,MAAM,CAAC,OAAO,KAAK,QAAQ,EAAE,CAAC;gBAChC,KAAK,GAAG,MAAM,KAAK,CAAC,KAAK,CAAC;oBACxB,QAAQ,EAAE,IAAI,CAAC,QAAQ;oBACvB,GAAG,EAAE,IAAI,CAAC,GAAG;oBACb,UAAU,EAAE,MAAM,CAAC,QAAQ;oBAC3B,YAAY,EAAE,KAAK;oBACnB,KAAK;oBACL,QAAQ;iBACT,CAAC,CAAC;YACL,CAAC;YACD,KAAK,CAAC,IAAI,CAAC,EAAE,QAAQ,EAAE,IAAI,CAAC,QAAQ,EAAE,GAAG,EAAE,IAAI,CAAC,GAAG,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC;QACvE,CAAC;QAED,MAAM,MAAM,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;QAC/B,SAAS,GAAG,QAAQ,CAAC,KAAK,CAAC;QAC3B,KAAK,GAAG,MAAM,MAAM,CAAC,OAAO,EAAE,CAAC;QAC/B,QAAQ,GAAG,UAAU,CAAC,KAAK,CAAC,CAAC;QAE7B,MAAM,SAAS,GAAoB,EAAE,SAAS,EAAE,CAAC,GAAG,CAAC,EAAE,QAAQ,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC;QACpF,UAAU,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QAC3B,WAAW,EAAE,CAAC,SAAS,CAAC,CAAC;QAEzB,IAAI,UAAU,CAAC,GAAG,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC;YACnC,OAAO,QAAQ,CAAC,QAAQ,EAAE,KAAK,EAAE,QAAQ,EAAE,UAAU,EAAE,QAAQ,CAAC,CAAC;QACnE,CAAC;IACH,CAAC;IAED,OAAO,QAAQ,CAAC,gBAAgB,EAAE,KAAK,EAAE,QAAQ,EAAE,UAAU,EAAE,QAAQ,CAAC,CAAC;AAC3E,CAAC;AAED,SAAS,QAAQ,CACf,aAA+B,EAC/B,UAA0B,EAC1B,aAAiC,EACjC,UAAsC,EACtC,QAA4B;IAE5B,OAAO;QACL,UAAU;QACV,UAAU;QACV,aAAa;QACb,MAAM,EAAE,aAAa,KAAK,QAAQ;QAClC,aAAa;QACb,QAAQ;KACT,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import type { ActionableImprovement } from '../index.js';
|
|
2
|
+
import type { RefineTag, RefineWorkItem } from './types.js';
|
|
3
|
+
export declare function parseTag(suggestion: string): RefineTag | undefined;
|
|
4
|
+
export declare function selectWorkItems(improvements: readonly ActionableImprovement[], limit: number): RefineWorkItem[];
|
|
5
|
+
//# sourceMappingURL=select-targets.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"select-targets.d.ts","sourceRoot":"","sources":["../../src/refine/select-targets.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,aAAa,CAAC;AACzD,OAAO,KAAK,EAAE,SAAS,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAI5D,wBAAgB,QAAQ,CAAC,UAAU,EAAE,MAAM,GAAG,SAAS,GAAG,SAAS,CAYlE;AAED,wBAAgB,eAAe,CAC7B,YAAY,EAAE,SAAS,qBAAqB,EAAE,EAC9C,KAAK,EAAE,MAAM,GACZ,cAAc,EAAE,CAYlB"}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
const TAG_RE = /@(\w+)/;
|
|
2
|
+
export function parseTag(suggestion) {
|
|
3
|
+
const match = suggestion.match(TAG_RE);
|
|
4
|
+
if (!match)
|
|
5
|
+
return undefined;
|
|
6
|
+
const tag = match[1];
|
|
7
|
+
const valid = new Set([
|
|
8
|
+
'useWhen',
|
|
9
|
+
'avoidWhen',
|
|
10
|
+
'pitfalls',
|
|
11
|
+
'remarks',
|
|
12
|
+
'example'
|
|
13
|
+
]);
|
|
14
|
+
return valid.has(tag) ? tag : undefined;
|
|
15
|
+
}
|
|
16
|
+
export function selectWorkItems(improvements, limit) {
|
|
17
|
+
const items = [];
|
|
18
|
+
for (const imp of improvements) {
|
|
19
|
+
const tag = parseTag(imp.suggestion);
|
|
20
|
+
if (!tag)
|
|
21
|
+
continue;
|
|
22
|
+
const targets = imp.targets ?? [];
|
|
23
|
+
for (const target of targets) {
|
|
24
|
+
items.push({ toolName: target.name, tag, improvement: imp });
|
|
25
|
+
}
|
|
26
|
+
}
|
|
27
|
+
items.sort((a, b) => b.improvement.points - a.improvement.points);
|
|
28
|
+
return items.slice(0, limit);
|
|
29
|
+
}
|
|
30
|
+
//# sourceMappingURL=select-targets.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"select-targets.js","sourceRoot":"","sources":["../../src/refine/select-targets.ts"],"names":[],"mappings":"AAIA,MAAM,MAAM,GAAG,QAAQ,CAAC;AAExB,MAAM,UAAU,QAAQ,CAAC,UAAkB;IACzC,MAAM,KAAK,GAAG,UAAU,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;IACvC,IAAI,CAAC,KAAK;QAAE,OAAO,SAAS,CAAC;IAC7B,MAAM,GAAG,GAAG,KAAK,CAAC,CAAC,CAAc,CAAC;IAClC,MAAM,KAAK,GAA2B,IAAI,GAAG,CAAC;QAC5C,SAAS;QACT,WAAW;QACX,UAAU;QACV,SAAS;QACT,SAAS;KACV,CAAC,CAAC;IACH,OAAO,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,SAAS,CAAC;AAC1C,CAAC;AAED,MAAM,UAAU,eAAe,CAC7B,YAA8C,EAC9C,KAAa;IAEb,MAAM,KAAK,GAAqB,EAAE,CAAC;IACnC,KAAK,MAAM,GAAG,IAAI,YAAY,EAAE,CAAC;QAC/B,MAAM,GAAG,GAAG,QAAQ,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;QACrC,IAAI,CAAC,GAAG;YAAE,SAAS;QACnB,MAAM,OAAO,GAAG,GAAG,CAAC,OAAO,IAAI,EAAE,CAAC;QAClC,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE,CAAC;YAC7B,KAAK,CAAC,IAAI,CAAC,EAAE,QAAQ,EAAE,MAAM,CAAC,IAAI,EAAE,GAAG,EAAE,WAAW,EAAE,GAAG,EAAE,CAAC,CAAC;QAC/D,CAAC;IACH,CAAC;IACD,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,WAAW,CAAC,MAAM,GAAG,CAAC,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;IAClE,OAAO,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC;AAC/B,CAAC"}
|
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
import type { ExtractedSkill, SkillJudgeEstimate, ActionableImprovement, AuditContext } from '../index.js';
|
|
2
|
+
export type RefineTag = 'useWhen' | 'avoidWhen' | 'pitfalls' | 'remarks' | 'example';
|
|
3
|
+
export interface DraftRequest {
|
|
4
|
+
toolName: string;
|
|
5
|
+
tag: RefineTag;
|
|
6
|
+
suggestion: string;
|
|
7
|
+
currentValue: string | undefined;
|
|
8
|
+
skill: ExtractedSkill;
|
|
9
|
+
guidance?: string;
|
|
10
|
+
}
|
|
11
|
+
export interface ReviewRequest {
|
|
12
|
+
toolName: string;
|
|
13
|
+
tag: RefineTag;
|
|
14
|
+
draft: string;
|
|
15
|
+
suggestion: string;
|
|
16
|
+
skill: ExtractedSkill;
|
|
17
|
+
guidance?: string;
|
|
18
|
+
}
|
|
19
|
+
export type ReviewVerdict = 'accepted' | 'revise';
|
|
20
|
+
export interface ReviewResult {
|
|
21
|
+
verdict: ReviewVerdict;
|
|
22
|
+
feedback: string;
|
|
23
|
+
}
|
|
24
|
+
export interface DraftedFix {
|
|
25
|
+
toolName: string;
|
|
26
|
+
tag: RefineTag;
|
|
27
|
+
value: string;
|
|
28
|
+
}
|
|
29
|
+
export interface ModelClient {
|
|
30
|
+
draft(req: DraftRequest): Promise<string>;
|
|
31
|
+
review(req: ReviewRequest): Promise<ReviewResult>;
|
|
32
|
+
}
|
|
33
|
+
export interface RefineSource {
|
|
34
|
+
extract(): Promise<ExtractedSkill>;
|
|
35
|
+
auditContext(skill: ExtractedSkill): AuditContext;
|
|
36
|
+
applyFixes(fixes: readonly DraftedFix[]): Promise<void>;
|
|
37
|
+
guidance?(): string | Promise<string>;
|
|
38
|
+
}
|
|
39
|
+
export interface RefineWorkItem {
|
|
40
|
+
toolName: string;
|
|
41
|
+
tag: RefineTag;
|
|
42
|
+
improvement: ActionableImprovement;
|
|
43
|
+
}
|
|
44
|
+
export type RefineStopReason = 'passed' | 'max-iterations' | 'no-improvements' | 'plateau';
|
|
45
|
+
export interface RefineIteration {
|
|
46
|
+
iteration: number;
|
|
47
|
+
estimate: SkillJudgeEstimate;
|
|
48
|
+
workItems: readonly RefineWorkItem[];
|
|
49
|
+
fixes: readonly DraftedFix[];
|
|
50
|
+
}
|
|
51
|
+
export interface RefineOptions {
|
|
52
|
+
source: RefineSource;
|
|
53
|
+
model: ModelClient;
|
|
54
|
+
passingGrades?: ReadonlyArray<SkillJudgeEstimate['grade']>;
|
|
55
|
+
maxIterations?: number;
|
|
56
|
+
itemsPerIteration?: number;
|
|
57
|
+
onIteration?: (iteration: RefineIteration) => void;
|
|
58
|
+
}
|
|
59
|
+
export interface RefineResult {
|
|
60
|
+
iterations: readonly RefineIteration[];
|
|
61
|
+
finalSkill: ExtractedSkill;
|
|
62
|
+
finalEstimate: SkillJudgeEstimate;
|
|
63
|
+
passed: boolean;
|
|
64
|
+
stoppedReason: RefineStopReason;
|
|
65
|
+
guidance: string | undefined;
|
|
66
|
+
}
|
|
67
|
+
//# sourceMappingURL=types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/refine/types.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EACV,cAAc,EACd,kBAAkB,EAClB,qBAAqB,EACrB,YAAY,EACb,MAAM,aAAa,CAAC;AAErB,MAAM,MAAM,SAAS,GAAG,SAAS,GAAG,WAAW,GAAG,UAAU,GAAG,SAAS,GAAG,SAAS,CAAC;AAErF,MAAM,WAAW,YAAY;IAC3B,QAAQ,EAAE,MAAM,CAAC;IACjB,GAAG,EAAE,SAAS,CAAC;IACf,UAAU,EAAE,MAAM,CAAC;IACnB,YAAY,EAAE,MAAM,GAAG,SAAS,CAAC;IACjC,KAAK,EAAE,cAAc,CAAC;IACtB,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,aAAa;IAC5B,QAAQ,EAAE,MAAM,CAAC;IACjB,GAAG,EAAE,SAAS,CAAC;IACf,KAAK,EAAE,MAAM,CAAC;IACd,UAAU,EAAE,MAAM,CAAC;IACnB,KAAK,EAAE,cAAc,CAAC;IACtB,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,MAAM,aAAa,GAAG,UAAU,GAAG,QAAQ,CAAC;AAElD,MAAM,WAAW,YAAY;IAC3B,OAAO,EAAE,aAAa,CAAC;IACvB,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,UAAU;IACzB,QAAQ,EAAE,MAAM,CAAC;IACjB,GAAG,EAAE,SAAS,CAAC;IACf,KAAK,EAAE,MAAM,CAAC;CACf;AAED,MAAM,WAAW,WAAW;IAC1B,KAAK,CAAC,GAAG,EAAE,YAAY,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;IAC1C,MAAM,CAAC,GAAG,EAAE,aAAa,GAAG,OAAO,CAAC,YAAY,CAAC,CAAC;CACnD;AAED,MAAM,WAAW,YAAY;IAC3B,OAAO,IAAI,OAAO,CAAC,cAAc,CAAC,CAAC;IACnC,YAAY,CAAC,KAAK,EAAE,cAAc,GAAG,YAAY,CAAC;IAClD,UAAU,CAAC,KAAK,EAAE,SAAS,UAAU,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACxD,QAAQ,CAAC,IAAI,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;CACvC;AAED,MAAM,WAAW,cAAc;IAC7B,QAAQ,EAAE,MAAM,CAAC;IACjB,GAAG,EAAE,SAAS,CAAC;IACf,WAAW,EAAE,qBAAqB,CAAC;CACpC;AAED,MAAM,MAAM,gBAAgB,GAAG,QAAQ,GAAG,gBAAgB,GAAG,iBAAiB,GAAG,SAAS,CAAC;AAE3F,MAAM,WAAW,eAAe;IAC9B,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,kBAAkB,CAAC;IAC7B,SAAS,EAAE,SAAS,cAAc,EAAE,CAAC;IACrC,KAAK,EAAE,SAAS,UAAU,EAAE,CAAC;CAC9B;AAED,MAAM,WAAW,aAAa;IAC5B,MAAM,EAAE,YAAY,CAAC;IACrB,KAAK,EAAE,WAAW,CAAC;IACnB,aAAa,CAAC,EAAE,aAAa,CAAC,kBAAkB,CAAC,OAAO,CAAC,CAAC,CAAC;IAC3D,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,WAAW,CAAC,EAAE,CAAC,SAAS,EAAE,eAAe,KAAK,IAAI,CAAC;CACpD;AAED,MAAM,WAAW,YAAY;IAC3B,UAAU,EAAE,SAAS,eAAe,EAAE,CAAC;IACvC,UAAU,EAAE,cAAc,CAAC;IAC3B,aAAa,EAAE,kBAAkB,CAAC;IAClC,MAAM,EAAE,OAAO,CAAC;IAChB,aAAa,EAAE,gBAAgB,CAAC;IAChC,QAAQ,EAAE,MAAM,GAAG,SAAS,CAAC;CAC9B"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/refine/types.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import type { ExtractedSkill, RenderedSkill, SkillRenderOptions } from './types.js';
|
|
2
|
+
/**
|
|
3
|
+
* Render multiple extracted skills into progressive disclosure file sets.
|
|
4
|
+
*
|
|
5
|
+
* @category Rendering
|
|
6
|
+
* @useWhen
|
|
7
|
+
* - You have one or more ExtractedSkill objects and need SKILL.md + references/ output
|
|
8
|
+
* - Building a custom extraction pipeline that bypasses the TypeDoc plugin
|
|
9
|
+
* @never
|
|
10
|
+
* - NEVER set maxTokens below 500 — reference files become truncated mid-signature, producing broken code blocks that confuse LLMs
|
|
11
|
+
* - NEVER pass skills with empty `name` — the output directory becomes a bare `/` path
|
|
12
|
+
*/
|
|
13
|
+
export declare function renderSkills(skills: ExtractedSkill[], options?: Partial<Omit<SkillRenderOptions, 'invocation'>>): RenderedSkill[];
|
|
14
|
+
/**
|
|
15
|
+
* Render a single skill into SKILL.md + references/.
|
|
16
|
+
*
|
|
17
|
+
* @category Rendering
|
|
18
|
+
* @useWhen
|
|
19
|
+
* - You need fine-grained control over rendering a single skill
|
|
20
|
+
* @never
|
|
21
|
+
* - NEVER set maxTokens below 500 — reference files become truncated mid-signature, producing broken code blocks
|
|
22
|
+
*/
|
|
23
|
+
export declare function renderSkill(skill: ExtractedSkill, options?: Partial<SkillRenderOptions>): RenderedSkill;
|
|
24
|
+
export declare function renderSkill(skill: ExtractedSkill, options: Partial<SkillRenderOptions> & {
|
|
25
|
+
invocation: NonNullable<SkillRenderOptions['invocation']>;
|
|
26
|
+
}): Promise<RenderedSkill>;
|
|
27
|
+
//# sourceMappingURL=renderer.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"renderer.d.ts","sourceRoot":"","sources":["../src/renderer.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAEV,cAAc,EASd,aAAa,EACb,kBAAkB,EACnB,MAAM,YAAY,CAAC;AA+BpB;;;;;;;;;;GAUG;AACH,wBAAgB,YAAY,CAC1B,MAAM,EAAE,cAAc,EAAE,EACxB,OAAO,CAAC,EAAE,OAAO,CAAC,IAAI,CAAC,kBAAkB,EAAE,YAAY,CAAC,CAAC,GACxD,aAAa,EAAE,CAWjB;AAED;;;;;;;;GAQG;AACH,wBAAgB,WAAW,CACzB,KAAK,EAAE,cAAc,EACrB,OAAO,CAAC,EAAE,OAAO,CAAC,kBAAkB,CAAC,GACpC,aAAa,CAAC;AACjB,wBAAgB,WAAW,CACzB,KAAK,EAAE,cAAc,EACrB,OAAO,EAAE,OAAO,CAAC,kBAAkB,CAAC,GAAG;IACrC,UAAU,EAAE,WAAW,CAAC,kBAAkB,CAAC,YAAY,CAAC,CAAC,CAAC;CAC3D,GACA,OAAO,CAAC,aAAa,CAAC,CAAC"}
|