@roarpeng/graphflow 1.9.4 → 1.9.12
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 +133 -0
- package/README.md +193 -107
- package/dist/agents/atp-example-producer.d.ts +33 -0
- package/dist/agents/atp-example-producer.d.ts.map +1 -0
- package/dist/agents/atp-example-producer.js +154 -0
- package/dist/agents/atp-example-producer.js.map +1 -0
- package/dist/agents/planner.d.ts.map +1 -1
- package/dist/agents/planner.js +14 -8
- package/dist/agents/planner.js.map +1 -1
- package/dist/config/defaults.d.ts.map +1 -1
- package/dist/config/defaults.js +5 -3
- package/dist/config/defaults.js.map +1 -1
- package/dist/config/include-extensions.d.ts +3 -1
- package/dist/config/include-extensions.d.ts.map +1 -1
- package/dist/config/include-extensions.js +6 -3
- package/dist/config/include-extensions.js.map +1 -1
- package/dist/config/loader.js +1 -1
- package/dist/config/loader.js.map +1 -1
- package/dist/core/agent-delegation.d.ts +16 -2
- package/dist/core/agent-delegation.d.ts.map +1 -1
- package/dist/core/agent-delegation.js +48 -5
- package/dist/core/agent-delegation.js.map +1 -1
- package/dist/core/merge-agent-insight.d.ts.map +1 -1
- package/dist/core/merge-agent-insight.js +10 -0
- package/dist/core/merge-agent-insight.js.map +1 -1
- package/dist/core/orchestrator-episode.d.ts.map +1 -1
- package/dist/core/orchestrator-episode.js +24 -0
- package/dist/core/orchestrator-episode.js.map +1 -1
- package/dist/core/orchestrator.js +52 -1
- package/dist/core/orchestrator.js.map +1 -1
- package/dist/core/submit-agent-insight.d.ts +17 -0
- package/dist/core/submit-agent-insight.d.ts.map +1 -1
- package/dist/core/submit-agent-insight.js +28 -0
- package/dist/core/submit-agent-insight.js.map +1 -1
- package/dist/core/types.d.ts +35 -2
- package/dist/core/types.d.ts.map +1 -1
- package/dist/graph/client-factory.d.ts +4 -0
- package/dist/graph/client-factory.d.ts.map +1 -1
- package/dist/graph/client-factory.js +83 -7
- package/dist/graph/client-factory.js.map +1 -1
- package/dist/graph/context-slicer-types.d.ts +4 -0
- package/dist/graph/context-slicer-types.d.ts.map +1 -1
- package/dist/graph/context-slicer-types.js +3 -0
- package/dist/graph/context-slicer-types.js.map +1 -1
- package/dist/graph/context-slicer.d.ts.map +1 -1
- package/dist/graph/context-slicer.js +154 -6
- package/dist/graph/context-slicer.js.map +1 -1
- package/dist/graph/document-convert.d.ts +33 -0
- package/dist/graph/document-convert.d.ts.map +1 -0
- package/dist/graph/document-convert.js +137 -0
- package/dist/graph/document-convert.js.map +1 -0
- package/dist/graph/document-semantic-bridge.d.ts +23 -0
- package/dist/graph/document-semantic-bridge.d.ts.map +1 -0
- package/dist/graph/document-semantic-bridge.js +61 -0
- package/dist/graph/document-semantic-bridge.js.map +1 -0
- package/dist/graph/document-semantic-ingest.d.ts +48 -0
- package/dist/graph/document-semantic-ingest.d.ts.map +1 -0
- package/dist/graph/document-semantic-ingest.js +229 -0
- package/dist/graph/document-semantic-ingest.js.map +1 -0
- package/dist/graph/episode-engineering-links.d.ts +29 -0
- package/dist/graph/episode-engineering-links.d.ts.map +1 -0
- package/dist/graph/episode-engineering-links.js +63 -0
- package/dist/graph/episode-engineering-links.js.map +1 -0
- package/dist/graph/file-indexer-edges.d.ts +26 -0
- package/dist/graph/file-indexer-edges.d.ts.map +1 -1
- package/dist/graph/file-indexer-edges.js +120 -20
- package/dist/graph/file-indexer-edges.js.map +1 -1
- package/dist/graph/file-indexer-nodes.d.ts +18 -0
- package/dist/graph/file-indexer-nodes.d.ts.map +1 -1
- package/dist/graph/file-indexer-nodes.js +0 -0
- package/dist/graph/file-indexer-nodes.js.map +1 -1
- package/dist/graph/file-indexer-walker.d.ts +4 -1
- package/dist/graph/file-indexer-walker.d.ts.map +1 -1
- package/dist/graph/file-indexer-walker.js +33 -16
- package/dist/graph/file-indexer-walker.js.map +1 -1
- package/dist/graph/file-indexer.d.ts +5 -0
- package/dist/graph/file-indexer.d.ts.map +1 -1
- package/dist/graph/file-indexer.js +162 -50
- package/dist/graph/file-indexer.js.map +1 -1
- package/dist/graph/graph-compression.d.ts +11 -2
- package/dist/graph/graph-compression.d.ts.map +1 -1
- package/dist/graph/graph-compression.js +153 -16
- package/dist/graph/graph-compression.js.map +1 -1
- package/dist/graph/graphify-client.d.ts +1 -0
- package/dist/graph/graphify-client.d.ts.map +1 -1
- package/dist/graph/graphify-client.js +24 -9
- package/dist/graph/graphify-client.js.map +1 -1
- package/dist/graph/graphify-file-client.d.ts +1 -0
- package/dist/graph/graphify-file-client.d.ts.map +1 -1
- package/dist/graph/graphify-file-client.js +8 -2
- package/dist/graph/graphify-file-client.js.map +1 -1
- package/dist/graph/language-indexers/c-cpp.d.ts.map +1 -1
- package/dist/graph/language-indexers/c-cpp.js +19 -13
- package/dist/graph/language-indexers/c-cpp.js.map +1 -1
- package/dist/graph/language-indexers/dart.d.ts.map +1 -1
- package/dist/graph/language-indexers/dart.js +2 -6
- package/dist/graph/language-indexers/dart.js.map +1 -1
- package/dist/graph/language-indexers/go.d.ts.map +1 -1
- package/dist/graph/language-indexers/go.js +3 -6
- package/dist/graph/language-indexers/go.js.map +1 -1
- package/dist/graph/language-indexers/java.d.ts.map +1 -1
- package/dist/graph/language-indexers/java.js +2 -6
- package/dist/graph/language-indexers/java.js.map +1 -1
- package/dist/graph/language-indexers/kotlin.d.ts.map +1 -1
- package/dist/graph/language-indexers/kotlin.js +2 -6
- package/dist/graph/language-indexers/kotlin.js.map +1 -1
- package/dist/graph/language-indexers/python.d.ts.map +1 -1
- package/dist/graph/language-indexers/python.js +4 -6
- package/dist/graph/language-indexers/python.js.map +1 -1
- package/dist/graph/language-indexers/ruby.d.ts.map +1 -1
- package/dist/graph/language-indexers/ruby.js +2 -6
- package/dist/graph/language-indexers/ruby.js.map +1 -1
- package/dist/graph/language-indexers/rust.d.ts.map +1 -1
- package/dist/graph/language-indexers/rust.js +3 -6
- package/dist/graph/language-indexers/rust.js.map +1 -1
- package/dist/graph/language-indexers/swift.d.ts.map +1 -1
- package/dist/graph/language-indexers/swift.js +2 -6
- package/dist/graph/language-indexers/swift.js.map +1 -1
- package/dist/graph/language-indexers/tree-sitter-loader.d.ts +20 -0
- package/dist/graph/language-indexers/tree-sitter-loader.d.ts.map +1 -1
- package/dist/graph/language-indexers/tree-sitter-loader.js +42 -0
- package/dist/graph/language-indexers/tree-sitter-loader.js.map +1 -1
- package/dist/graph/memory-pack.d.ts +46 -0
- package/dist/graph/memory-pack.d.ts.map +1 -0
- package/dist/graph/memory-pack.js +204 -0
- package/dist/graph/memory-pack.js.map +1 -0
- package/dist/graph/snapshot-view.d.ts.map +1 -1
- package/dist/graph/snapshot-view.js +26 -1
- package/dist/graph/snapshot-view.js.map +1 -1
- package/dist/graph/sqlite-client.d.ts +1 -0
- package/dist/graph/sqlite-client.d.ts.map +1 -1
- package/dist/graph/sqlite-client.js +15 -4
- package/dist/graph/sqlite-client.js.map +1 -1
- package/dist/graph/symbol-extract.d.ts +39 -0
- package/dist/graph/symbol-extract.d.ts.map +1 -0
- package/dist/graph/symbol-extract.js +187 -0
- package/dist/graph/symbol-extract.js.map +1 -0
- package/dist/hooks/auto-capture.d.ts +87 -0
- package/dist/hooks/auto-capture.d.ts.map +1 -0
- package/dist/hooks/auto-capture.js +182 -0
- package/dist/hooks/auto-capture.js.map +1 -0
- package/dist/index.d.ts +7 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +21 -2
- package/dist/index.js.map +1 -1
- package/dist/integrations/agent-mcp-installer.d.ts +87 -5
- package/dist/integrations/agent-mcp-installer.d.ts.map +1 -1
- package/dist/integrations/agent-mcp-installer.js +418 -60
- package/dist/integrations/agent-mcp-installer.js.map +1 -1
- package/dist/integrations/agent-profiles/profiles/qoder.d.ts.map +1 -1
- package/dist/integrations/agent-profiles/profiles/qoder.js +14 -2
- package/dist/integrations/agent-profiles/profiles/qoder.js.map +1 -1
- package/dist/integrations/agent-profiles/skills/qoder.js +6 -0
- package/dist/integrations/agent-profiles/skills/qoder.js.map +1 -1
- package/dist/integrations/claude-code-hooks.d.ts +95 -0
- package/dist/integrations/claude-code-hooks.d.ts.map +1 -0
- package/dist/integrations/claude-code-hooks.js +321 -0
- package/dist/integrations/claude-code-hooks.js.map +1 -0
- package/dist/integrations/ensure-anydoc.d.ts +41 -0
- package/dist/integrations/ensure-anydoc.d.ts.map +1 -0
- package/dist/integrations/ensure-anydoc.js +221 -0
- package/dist/integrations/ensure-anydoc.js.map +1 -0
- package/dist/integrations/skill-installer.d.ts +26 -3
- package/dist/integrations/skill-installer.d.ts.map +1 -1
- package/dist/integrations/skill-installer.js +148 -4
- package/dist/integrations/skill-installer.js.map +1 -1
- package/dist/learning/canary-gate.d.ts +39 -0
- package/dist/learning/canary-gate.d.ts.map +1 -0
- package/dist/learning/canary-gate.js +57 -0
- package/dist/learning/canary-gate.js.map +1 -0
- package/dist/learning/skill-consolidate.d.ts +84 -0
- package/dist/learning/skill-consolidate.d.ts.map +1 -0
- package/dist/learning/skill-consolidate.js +353 -0
- package/dist/learning/skill-consolidate.js.map +1 -0
- package/dist/learning/skill-flywheel.d.ts +26 -0
- package/dist/learning/skill-flywheel.d.ts.map +1 -1
- package/dist/learning/skill-flywheel.js +192 -29
- package/dist/learning/skill-flywheel.js.map +1 -1
- package/dist/learning/skill-opt-lite.d.ts +46 -0
- package/dist/learning/skill-opt-lite.d.ts.map +1 -0
- package/dist/learning/skill-opt-lite.js +270 -0
- package/dist/learning/skill-opt-lite.js.map +1 -0
- package/dist/learning/skill-package.d.ts.map +1 -1
- package/dist/learning/skill-package.js +80 -6
- package/dist/learning/skill-package.js.map +1 -1
- package/dist/learning/skill-store.d.ts.map +1 -1
- package/dist/learning/skill-store.js +13 -0
- package/dist/learning/skill-store.js.map +1 -1
- package/dist/learning/skill-types.d.ts +32 -0
- package/dist/learning/skill-types.d.ts.map +1 -1
- package/dist/learning/skill-types.js +17 -0
- package/dist/learning/skill-types.js.map +1 -1
- package/dist/skills/index.js +1 -1
- package/dist/skills/index.js.map +1 -1
- package/dist/surfaces/cli/index.js +46 -5
- package/dist/surfaces/cli/index.js.map +1 -1
- package/dist/surfaces/cli/init.d.ts +17 -4
- package/dist/surfaces/cli/init.d.ts.map +1 -1
- package/dist/surfaces/cli/init.js +71 -8
- package/dist/surfaces/cli/init.js.map +1 -1
- package/dist/surfaces/cli/output.d.ts.map +1 -1
- package/dist/surfaces/cli/output.js +4 -2
- package/dist/surfaces/cli/output.js.map +1 -1
- package/dist/surfaces/cli/runtime/facade.d.ts +2 -1
- package/dist/surfaces/cli/runtime/facade.d.ts.map +1 -1
- package/dist/surfaces/cli/runtime/facade.js +1 -0
- package/dist/surfaces/cli/runtime/facade.js.map +1 -1
- package/dist/surfaces/cli/runtime/graph.d.ts +59 -2
- package/dist/surfaces/cli/runtime/graph.d.ts.map +1 -1
- package/dist/surfaces/cli/runtime/graph.js +120 -7
- package/dist/surfaces/cli/runtime/graph.js.map +1 -1
- package/dist/surfaces/cli/runtime/learning.d.ts +19 -0
- package/dist/surfaces/cli/runtime/learning.d.ts.map +1 -1
- package/dist/surfaces/cli/runtime/learning.js +46 -0
- package/dist/surfaces/cli/runtime/learning.js.map +1 -1
- package/dist/surfaces/cli/runtime/routing.d.ts +6 -3
- package/dist/surfaces/cli/runtime/routing.d.ts.map +1 -1
- package/dist/surfaces/cli/runtime/routing.js +70 -7
- package/dist/surfaces/cli/runtime/routing.js.map +1 -1
- package/dist/surfaces/cli/runtime/types.d.ts +54 -0
- package/dist/surfaces/cli/runtime/types.d.ts.map +1 -1
- package/dist/surfaces/cli/runtime.d.ts +3 -3
- package/dist/surfaces/cli/runtime.d.ts.map +1 -1
- package/dist/surfaces/cli/runtime.js +6 -2
- package/dist/surfaces/cli/runtime.js.map +1 -1
- package/dist/surfaces/mcp/server.d.ts +12 -4
- package/dist/surfaces/mcp/server.d.ts.map +1 -1
- package/dist/surfaces/mcp/server.js +270 -97
- package/dist/surfaces/mcp/server.js.map +1 -1
- package/dist/surfaces/mcp/tool-definitions.d.ts.map +1 -1
- package/dist/surfaces/mcp/tool-definitions.js +15 -0
- package/dist/surfaces/mcp/tool-definitions.js.map +1 -1
- package/dist/surfaces/mcp/tool-handlers.d.ts +5 -3
- package/dist/surfaces/mcp/tool-handlers.d.ts.map +1 -1
- package/dist/surfaces/mcp/tool-handlers.js +36 -6
- package/dist/surfaces/mcp/tool-handlers.js.map +1 -1
- package/dist/utils/logger.d.ts +8 -0
- package/dist/utils/logger.d.ts.map +1 -1
- package/dist/utils/logger.js +54 -5
- package/dist/utils/logger.js.map +1 -1
- package/mcp.json +14 -0
- package/package.json +19 -1
- package/plugin.json +21 -0
- package/scripts/safe-postinstall.cjs +36 -1
- package/skills/graphflow/SKILL.md +565 -0
|
@@ -0,0 +1,353 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* QM-inspired skill consolidation: explicit, auditable actions only.
|
|
4
|
+
* Heuristic planner — no LLM required. Apply is opt-in and safe (skips unknown ids).
|
|
5
|
+
*/
|
|
6
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
7
|
+
exports.normalizeSkillNameKey = normalizeSkillNameKey;
|
|
8
|
+
exports.toConsolidateResult = toConsolidateResult;
|
|
9
|
+
exports.planSkillConsolidation = planSkillConsolidation;
|
|
10
|
+
exports.applySkillConsolidation = applySkillConsolidation;
|
|
11
|
+
exports.planFromRequest = planFromRequest;
|
|
12
|
+
const canary_gate_1 = require("./canary-gate");
|
|
13
|
+
const skill_store_1 = require("./skill-store");
|
|
14
|
+
const DEFAULT_VERY_LOW_SCORE = -10;
|
|
15
|
+
/** Normalize skill names for near-duplicate detection (lowercase + hyphen). */
|
|
16
|
+
function normalizeSkillNameKey(name) {
|
|
17
|
+
return (0, skill_store_1.sanitizeAtom)(name.trim().toLowerCase()).replace(/^-+|-+$/g, "");
|
|
18
|
+
}
|
|
19
|
+
function summarizeActions(actions) {
|
|
20
|
+
const summary = { updates: 0, deletes: 0, adds: 0, none: 0 };
|
|
21
|
+
for (const action of actions) {
|
|
22
|
+
if (action.action === "UPDATE")
|
|
23
|
+
summary.updates += 1;
|
|
24
|
+
else if (action.action === "DELETE")
|
|
25
|
+
summary.deletes += 1;
|
|
26
|
+
else if (action.action === "ADD")
|
|
27
|
+
summary.adds += 1;
|
|
28
|
+
else
|
|
29
|
+
summary.none += 1;
|
|
30
|
+
}
|
|
31
|
+
return summary;
|
|
32
|
+
}
|
|
33
|
+
function toConsolidateResult(actions) {
|
|
34
|
+
return { actions, summary: summarizeActions(actions) };
|
|
35
|
+
}
|
|
36
|
+
function pickSurvivor(group) {
|
|
37
|
+
return [...group].sort((a, b) => {
|
|
38
|
+
const provenBias = (s) => (s.outcomeKind === "proven" ? 1 : 0);
|
|
39
|
+
return (b.uses - a.uses ||
|
|
40
|
+
b.score - a.score ||
|
|
41
|
+
provenBias(b) - provenBias(a) ||
|
|
42
|
+
a.id.localeCompare(b.id));
|
|
43
|
+
})[0];
|
|
44
|
+
}
|
|
45
|
+
function mergeGuidance(...parts) {
|
|
46
|
+
const seen = new Set();
|
|
47
|
+
const lines = [];
|
|
48
|
+
for (const part of parts) {
|
|
49
|
+
const trimmed = part?.trim();
|
|
50
|
+
if (!trimmed)
|
|
51
|
+
continue;
|
|
52
|
+
const key = trimmed.toLowerCase();
|
|
53
|
+
if (seen.has(key))
|
|
54
|
+
continue;
|
|
55
|
+
seen.add(key);
|
|
56
|
+
lines.push(trimmed);
|
|
57
|
+
}
|
|
58
|
+
return lines.length > 0 ? lines.join("\n") : undefined;
|
|
59
|
+
}
|
|
60
|
+
/**
|
|
61
|
+
* Plan consolidation actions for a skill inventory.
|
|
62
|
+
* Prefer UPDATE (merge / refresh) over DELETE+ADD. Anti-pattern hard-delete
|
|
63
|
+
* follows {@link shouldHardDeleteAntiPattern} (currently always false — soft isolation).
|
|
64
|
+
*/
|
|
65
|
+
function planSkillConsolidation(skills, options) {
|
|
66
|
+
const veryLowScore = options?.veryLowScore ?? DEFAULT_VERY_LOW_SCORE;
|
|
67
|
+
const actions = [];
|
|
68
|
+
const consumed = new Set();
|
|
69
|
+
// 1) MERGE near-duplicate names → UPDATE survivor + DELETE duplicates
|
|
70
|
+
const byKey = new Map();
|
|
71
|
+
for (const skill of skills) {
|
|
72
|
+
const key = normalizeSkillNameKey(skill.name);
|
|
73
|
+
if (!key)
|
|
74
|
+
continue;
|
|
75
|
+
const group = byKey.get(key) ?? [];
|
|
76
|
+
group.push(skill);
|
|
77
|
+
byKey.set(key, group);
|
|
78
|
+
}
|
|
79
|
+
for (const [, group] of byKey) {
|
|
80
|
+
if (group.length < 2)
|
|
81
|
+
continue;
|
|
82
|
+
const survivor = pickSurvivor(group);
|
|
83
|
+
const duplicates = group.filter((s) => s.id !== survivor.id);
|
|
84
|
+
const mergedUses = group.reduce((sum, s) => sum + s.uses, 0);
|
|
85
|
+
const mergedScore = Math.max(...group.map((s) => s.score));
|
|
86
|
+
const mergedGuidance = mergeGuidance(survivor.guidance, ...duplicates.map((d) => d.guidance));
|
|
87
|
+
const outcomeKind = group.find((s) => s.outcomeKind === "proven")?.outcomeKind ??
|
|
88
|
+
survivor.outcomeKind ??
|
|
89
|
+
group.find((s) => s.outcomeKind)?.outcomeKind;
|
|
90
|
+
actions.push({
|
|
91
|
+
action: "UPDATE",
|
|
92
|
+
skillId: survivor.id,
|
|
93
|
+
name: survivor.name,
|
|
94
|
+
patch: {
|
|
95
|
+
name: survivor.name,
|
|
96
|
+
score: mergedScore,
|
|
97
|
+
uses: mergedUses,
|
|
98
|
+
...(mergedGuidance ? { guidance: mergedGuidance } : {}),
|
|
99
|
+
...(outcomeKind ? { outcomeKind } : {}),
|
|
100
|
+
},
|
|
101
|
+
reason: `merge ${duplicates.length} near-duplicate name(s) into survivor`,
|
|
102
|
+
relatedIds: duplicates.map((d) => d.id),
|
|
103
|
+
});
|
|
104
|
+
consumed.add(survivor.id);
|
|
105
|
+
for (const dup of duplicates) {
|
|
106
|
+
actions.push({
|
|
107
|
+
action: "DELETE",
|
|
108
|
+
skillId: dup.id,
|
|
109
|
+
name: dup.name,
|
|
110
|
+
reason: `duplicate of ${survivor.id} after name normalize`,
|
|
111
|
+
relatedIds: [survivor.id],
|
|
112
|
+
});
|
|
113
|
+
consumed.add(dup.id);
|
|
114
|
+
}
|
|
115
|
+
}
|
|
116
|
+
// 2) DELETE: anti-pattern when policy allows, or unused very-low score
|
|
117
|
+
const hardDeleteAnti = (0, canary_gate_1.shouldHardDeleteAntiPattern)();
|
|
118
|
+
for (const skill of skills) {
|
|
119
|
+
if (consumed.has(skill.id))
|
|
120
|
+
continue;
|
|
121
|
+
if (skill.outcomeKind === "anti-pattern" && hardDeleteAnti) {
|
|
122
|
+
actions.push({
|
|
123
|
+
action: "DELETE",
|
|
124
|
+
skillId: skill.id,
|
|
125
|
+
name: skill.name,
|
|
126
|
+
reason: "anti-pattern eligible for hard-delete per canary policy",
|
|
127
|
+
});
|
|
128
|
+
consumed.add(skill.id);
|
|
129
|
+
continue;
|
|
130
|
+
}
|
|
131
|
+
if (skill.uses === 0 && skill.score <= veryLowScore) {
|
|
132
|
+
actions.push({
|
|
133
|
+
action: "DELETE",
|
|
134
|
+
skillId: skill.id,
|
|
135
|
+
name: skill.name,
|
|
136
|
+
reason: `unused skill with very low score (<= ${veryLowScore})`,
|
|
137
|
+
});
|
|
138
|
+
consumed.add(skill.id);
|
|
139
|
+
}
|
|
140
|
+
}
|
|
141
|
+
// 3) ADD candidates (prefer UPDATE when normalized name already exists)
|
|
142
|
+
const existingByKey = new Map();
|
|
143
|
+
for (const skill of skills) {
|
|
144
|
+
if (consumed.has(skill.id) && !actions.some((a) => a.action === "UPDATE" && a.skillId === skill.id)) {
|
|
145
|
+
// deleted — do not treat as existing for ADD match
|
|
146
|
+
continue;
|
|
147
|
+
}
|
|
148
|
+
const key = normalizeSkillNameKey(skill.name);
|
|
149
|
+
if (!key)
|
|
150
|
+
continue;
|
|
151
|
+
// Prefer survivor / highest-uses entry for the key
|
|
152
|
+
const prev = existingByKey.get(key);
|
|
153
|
+
if (!prev || skill.uses > prev.uses || (skill.uses === prev.uses && skill.score > prev.score)) {
|
|
154
|
+
// Skip if this id was deleted in this plan
|
|
155
|
+
if (actions.some((a) => a.action === "DELETE" && a.skillId === skill.id))
|
|
156
|
+
continue;
|
|
157
|
+
existingByKey.set(key, skill);
|
|
158
|
+
}
|
|
159
|
+
}
|
|
160
|
+
// Re-seed from UPDATE survivors so candidate matching prefers them
|
|
161
|
+
for (const action of actions) {
|
|
162
|
+
if (action.action !== "UPDATE" || !action.skillId)
|
|
163
|
+
continue;
|
|
164
|
+
const key = normalizeSkillNameKey(action.name ?? action.patch?.name ?? "");
|
|
165
|
+
if (!key)
|
|
166
|
+
continue;
|
|
167
|
+
const base = skills.find((s) => s.id === action.skillId);
|
|
168
|
+
if (!base)
|
|
169
|
+
continue;
|
|
170
|
+
existingByKey.set(key, {
|
|
171
|
+
...base,
|
|
172
|
+
score: action.patch?.score ?? base.score,
|
|
173
|
+
uses: action.patch?.uses ?? base.uses,
|
|
174
|
+
...(action.patch?.guidance !== undefined ? { guidance: action.patch.guidance } : {}),
|
|
175
|
+
...(action.patch?.outcomeKind !== undefined ? { outcomeKind: action.patch.outcomeKind } : {}),
|
|
176
|
+
});
|
|
177
|
+
}
|
|
178
|
+
for (const candidate of options?.candidates ?? []) {
|
|
179
|
+
const key = normalizeSkillNameKey(candidate.name);
|
|
180
|
+
if (!key)
|
|
181
|
+
continue;
|
|
182
|
+
const existing = existingByKey.get(key);
|
|
183
|
+
if (existing) {
|
|
184
|
+
// Prefer UPDATE over DELETE+ADD
|
|
185
|
+
const alreadyUpdated = actions.some((a) => a.action === "UPDATE" && a.skillId === existing.id);
|
|
186
|
+
if (alreadyUpdated) {
|
|
187
|
+
const update = actions.find((a) => a.action === "UPDATE" && a.skillId === existing.id);
|
|
188
|
+
const foldedGuidance = candidate.guidance
|
|
189
|
+
? mergeGuidance(update.patch?.guidance, candidate.guidance)
|
|
190
|
+
: undefined;
|
|
191
|
+
update.patch = {
|
|
192
|
+
name: update.patch?.name ?? existing.name,
|
|
193
|
+
score: candidate.score !== undefined
|
|
194
|
+
? Math.max(update.patch?.score ?? existing.score, candidate.score)
|
|
195
|
+
: (update.patch?.score ?? existing.score),
|
|
196
|
+
uses: update.patch?.uses ?? existing.uses,
|
|
197
|
+
...(foldedGuidance ? { guidance: foldedGuidance } : update.patch?.guidance ? { guidance: update.patch.guidance } : {}),
|
|
198
|
+
...(candidate.outcomeKind
|
|
199
|
+
? { outcomeKind: candidate.outcomeKind }
|
|
200
|
+
: update.patch?.outcomeKind
|
|
201
|
+
? { outcomeKind: update.patch.outcomeKind }
|
|
202
|
+
: {}),
|
|
203
|
+
};
|
|
204
|
+
update.reason = `${update.reason}; fold candidate "${candidate.name}" into UPDATE`;
|
|
205
|
+
continue;
|
|
206
|
+
}
|
|
207
|
+
const mergedGuidance = mergeGuidance(existing.guidance, candidate.guidance);
|
|
208
|
+
const mergedOutcome = candidate.outcomeKind ?? existing.outcomeKind;
|
|
209
|
+
actions.push({
|
|
210
|
+
action: "UPDATE",
|
|
211
|
+
skillId: existing.id,
|
|
212
|
+
name: existing.name,
|
|
213
|
+
patch: {
|
|
214
|
+
name: existing.name,
|
|
215
|
+
score: Math.max(existing.score, candidate.score ?? existing.score),
|
|
216
|
+
uses: Math.max(existing.uses, candidate.uses ?? existing.uses),
|
|
217
|
+
...(mergedGuidance ? { guidance: mergedGuidance } : {}),
|
|
218
|
+
...(mergedOutcome ? { outcomeKind: mergedOutcome } : {}),
|
|
219
|
+
},
|
|
220
|
+
reason: `prefer UPDATE over ADD for candidate matching "${existing.name}"`,
|
|
221
|
+
});
|
|
222
|
+
continue;
|
|
223
|
+
}
|
|
224
|
+
const id = (0, skill_store_1.skillNodeId)(candidate.name);
|
|
225
|
+
actions.push({
|
|
226
|
+
action: "ADD",
|
|
227
|
+
skillId: id,
|
|
228
|
+
name: candidate.name,
|
|
229
|
+
patch: {
|
|
230
|
+
name: candidate.name,
|
|
231
|
+
score: candidate.score ?? 0,
|
|
232
|
+
uses: candidate.uses ?? 0,
|
|
233
|
+
...(candidate.guidance ? { guidance: candidate.guidance } : {}),
|
|
234
|
+
...(candidate.outcomeKind ? { outcomeKind: candidate.outcomeKind } : {}),
|
|
235
|
+
},
|
|
236
|
+
reason: "candidate not present in skill inventory",
|
|
237
|
+
});
|
|
238
|
+
}
|
|
239
|
+
return actions;
|
|
240
|
+
}
|
|
241
|
+
async function listSkillNodes(client) {
|
|
242
|
+
if (client.readSnapshot) {
|
|
243
|
+
return client.readSnapshot().nodes.filter((node) => node.type === "Skill");
|
|
244
|
+
}
|
|
245
|
+
const hits = await client.queryByKeyword("skill");
|
|
246
|
+
return hits.filter((node) => node.type === "Skill");
|
|
247
|
+
}
|
|
248
|
+
/**
|
|
249
|
+
* Apply UPDATE / DELETE (and ADD) actions to Skill nodes.
|
|
250
|
+
* Unknown ids are skipped. DELETE falls back to soft-hide when deleteNode is missing.
|
|
251
|
+
*/
|
|
252
|
+
async function applySkillConsolidation(graphClient, actions) {
|
|
253
|
+
const applied = [];
|
|
254
|
+
const skipped = [];
|
|
255
|
+
const nodes = await listSkillNodes(graphClient);
|
|
256
|
+
const byId = new Map(nodes.map((n) => [n.id, n]));
|
|
257
|
+
for (const action of actions) {
|
|
258
|
+
if (action.action === "NONE") {
|
|
259
|
+
skipped.push({ action, reason: "NONE is a no-op" });
|
|
260
|
+
continue;
|
|
261
|
+
}
|
|
262
|
+
if (action.action === "ADD") {
|
|
263
|
+
const name = action.patch?.name ?? action.name;
|
|
264
|
+
if (!name?.trim()) {
|
|
265
|
+
skipped.push({ action, reason: "ADD missing name" });
|
|
266
|
+
continue;
|
|
267
|
+
}
|
|
268
|
+
const id = action.skillId ?? (0, skill_store_1.skillNodeId)(name);
|
|
269
|
+
if (byId.has(id)) {
|
|
270
|
+
skipped.push({ action, reason: `skill already exists: ${id}` });
|
|
271
|
+
continue;
|
|
272
|
+
}
|
|
273
|
+
const state = {
|
|
274
|
+
id,
|
|
275
|
+
name,
|
|
276
|
+
score: action.patch?.score ?? 0,
|
|
277
|
+
uses: action.patch?.uses ?? 0,
|
|
278
|
+
lastOutcome: "pass",
|
|
279
|
+
updatedAt: Date.now(),
|
|
280
|
+
...(action.patch?.guidance ? { guidance: action.patch.guidance } : {}),
|
|
281
|
+
...(action.patch?.outcomeKind ? { outcomeKind: action.patch.outcomeKind } : {}),
|
|
282
|
+
};
|
|
283
|
+
await graphClient.upsertNodes([{ id, type: "Skill", content: (0, skill_store_1.serializeAtomic)(state) }]);
|
|
284
|
+
byId.set(id, { id, type: "Skill", content: (0, skill_store_1.serializeAtomic)(state) });
|
|
285
|
+
applied.push(action);
|
|
286
|
+
continue;
|
|
287
|
+
}
|
|
288
|
+
const id = action.skillId;
|
|
289
|
+
if (!id) {
|
|
290
|
+
skipped.push({ action, reason: "missing skillId" });
|
|
291
|
+
continue;
|
|
292
|
+
}
|
|
293
|
+
const node = byId.get(id);
|
|
294
|
+
if (!node) {
|
|
295
|
+
skipped.push({ action, reason: `unknown skill id: ${id}` });
|
|
296
|
+
continue;
|
|
297
|
+
}
|
|
298
|
+
if (action.action === "DELETE") {
|
|
299
|
+
if (graphClient.deleteNode) {
|
|
300
|
+
await graphClient.deleteNode(id);
|
|
301
|
+
byId.delete(id);
|
|
302
|
+
}
|
|
303
|
+
else {
|
|
304
|
+
const atomic = (0, skill_store_1.parseSkillState)(node.content);
|
|
305
|
+
if (!atomic) {
|
|
306
|
+
skipped.push({ action, reason: `unparseable skill for soft-hide: ${id}` });
|
|
307
|
+
continue;
|
|
308
|
+
}
|
|
309
|
+
const hidden = {
|
|
310
|
+
...atomic,
|
|
311
|
+
hidden: true,
|
|
312
|
+
updatedAt: Date.now(),
|
|
313
|
+
};
|
|
314
|
+
await graphClient.upsertNodes([{ id, type: "Skill", content: (0, skill_store_1.serializeAtomic)(hidden) }]);
|
|
315
|
+
byId.set(id, { id, type: "Skill", content: (0, skill_store_1.serializeAtomic)(hidden) });
|
|
316
|
+
}
|
|
317
|
+
applied.push(action);
|
|
318
|
+
continue;
|
|
319
|
+
}
|
|
320
|
+
// UPDATE
|
|
321
|
+
const atomic = (0, skill_store_1.parseSkillState)(node.content);
|
|
322
|
+
if (!atomic) {
|
|
323
|
+
skipped.push({ action, reason: `unparseable skill for UPDATE: ${id}` });
|
|
324
|
+
continue;
|
|
325
|
+
}
|
|
326
|
+
const next = {
|
|
327
|
+
...atomic,
|
|
328
|
+
name: action.patch?.name ?? atomic.name,
|
|
329
|
+
score: action.patch?.score ?? atomic.score,
|
|
330
|
+
uses: action.patch?.uses ?? atomic.uses,
|
|
331
|
+
updatedAt: Date.now(),
|
|
332
|
+
...(action.patch?.guidance !== undefined
|
|
333
|
+
? { guidance: action.patch.guidance }
|
|
334
|
+
: atomic.guidance
|
|
335
|
+
? { guidance: atomic.guidance }
|
|
336
|
+
: {}),
|
|
337
|
+
...(action.patch?.outcomeKind !== undefined
|
|
338
|
+
? { outcomeKind: action.patch.outcomeKind }
|
|
339
|
+
: atomic.outcomeKind
|
|
340
|
+
? { outcomeKind: atomic.outcomeKind }
|
|
341
|
+
: {}),
|
|
342
|
+
};
|
|
343
|
+
await graphClient.upsertNodes([{ id, type: "Skill", content: (0, skill_store_1.serializeAtomic)(next) }]);
|
|
344
|
+
byId.set(id, { id, type: "Skill", content: (0, skill_store_1.serializeAtomic)(next) });
|
|
345
|
+
applied.push(action);
|
|
346
|
+
}
|
|
347
|
+
return { applied, skipped };
|
|
348
|
+
}
|
|
349
|
+
/** Convenience: plan from a ConsolidateRequest. */
|
|
350
|
+
function planFromRequest(request) {
|
|
351
|
+
return toConsolidateResult(planSkillConsolidation(request.skills, request.options));
|
|
352
|
+
}
|
|
353
|
+
//# sourceMappingURL=skill-consolidate.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"skill-consolidate.js","sourceRoot":"","sources":["../../src/learning/skill-consolidate.ts"],"names":[],"mappings":"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"}
|
|
@@ -3,6 +3,8 @@ import type { GraphClient } from "../graph/client-factory";
|
|
|
3
3
|
import type { SkillState, SkillOutcomeKind } from "./skill-types";
|
|
4
4
|
export type { SkillState, CompositeSkillState } from "./skill-types";
|
|
5
5
|
export { composeSkillId, loadCompositeSkill } from "./skill-store";
|
|
6
|
+
export { canaryPassed, gateSkillPromotion, DEFAULT_CANARY_LOCAL_SUCCESSES, shouldHardDeleteAntiPattern, } from "./canary-gate";
|
|
7
|
+
export { planSkillConsolidation, applySkillConsolidation, planFromRequest, toConsolidateResult, normalizeSkillNameKey, type ConsolidateAction, type ConsolidateActionKind, type ConsolidateRequest, type ConsolidateResult, type ConsolidateSkillInput, type ConsolidateCandidate, type PlanSkillConsolidationOptions, type ApplySkillConsolidationResult, } from "./skill-consolidate";
|
|
6
8
|
/** True when the text references at least one project-specific symbol. */
|
|
7
9
|
export declare function hasProjectSymbolEvidence(text: string): boolean;
|
|
8
10
|
/** Extract project-symbol-shaped tokens from the text (for diagnostics/tests). */
|
|
@@ -26,6 +28,8 @@ export interface SkillLearningOptions {
|
|
|
26
28
|
* - proven: >= 2 uses or a linked successful outcome — the ONLY class
|
|
27
29
|
* that accrues positive score. Curated seed skills count as
|
|
28
30
|
* proven by design (baseline, never sinkable to negative).
|
|
31
|
+
* External (sync/import) skills additionally require canary
|
|
32
|
+
* (N local successes or canaryValidated) before proven.
|
|
29
33
|
* - correctable: symbol evidence present, not yet proven. Score stays put.
|
|
30
34
|
*/
|
|
31
35
|
export declare function classifySkillOutcome(options: {
|
|
@@ -33,7 +37,16 @@ export declare function classifySkillOutcome(options: {
|
|
|
33
37
|
failStreak: number;
|
|
34
38
|
linkedSuccess: boolean;
|
|
35
39
|
seeded?: boolean;
|
|
40
|
+
provenance?: SkillState["provenance"];
|
|
41
|
+
canaryValidated?: boolean;
|
|
42
|
+
/** Successful local applications for canary (defaults to uses). */
|
|
43
|
+
localSuccesses?: number;
|
|
36
44
|
}): SkillOutcomeKind;
|
|
45
|
+
/**
|
|
46
|
+
* Explicit canary validate hook: mark an atomic skill as canary-validated and
|
|
47
|
+
* re-run promotion classification (external skills may become proven immediately).
|
|
48
|
+
*/
|
|
49
|
+
export declare function markSkillCanaryValidated(client: GraphClient, skillId: string): Promise<SkillState | undefined>;
|
|
37
50
|
export interface PruneFailedSkillsOptions {
|
|
38
51
|
/** Soft-hide when score is at or below this (default -5). */
|
|
39
52
|
scoreThreshold?: number;
|
|
@@ -49,6 +62,7 @@ export interface PruneFailedSkillsResult {
|
|
|
49
62
|
/**
|
|
50
63
|
* Soft-hide chronically failing low-score atomic skills so they stop polluting
|
|
51
64
|
* insights and hint ranking. Prefer hide over delete (Decision history stays).
|
|
65
|
+
* Anti-patterns stay isolated for audit — never hard-deleted (canary policy).
|
|
52
66
|
*/
|
|
53
67
|
export declare function pruneFailedSkills(client: GraphClient, options?: PruneFailedSkillsOptions): Promise<PruneFailedSkillsResult>;
|
|
54
68
|
export interface CleanupNoiseSkillsResult {
|
|
@@ -67,6 +81,18 @@ export interface CleanupNoiseSkillsResult {
|
|
|
67
81
|
*/
|
|
68
82
|
export declare function cleanupNoiseSkills(client: GraphClient): Promise<CleanupNoiseSkillsResult>;
|
|
69
83
|
export declare function applySkillLearning(client: GraphClient, task: string, run: TaskRunResult, lessons?: string[], options?: SkillLearningOptions): Promise<number>;
|
|
84
|
+
/** Structured skill conditioning for plan DAG nodes / agent-bridge prompts. */
|
|
85
|
+
export interface SkillConditionHints {
|
|
86
|
+
/** Proven / correctable skill names to apply while executing steps. */
|
|
87
|
+
skillRefs: string[];
|
|
88
|
+
/** Anti-pattern skill names the agent should avoid. */
|
|
89
|
+
avoidPatterns: string[];
|
|
90
|
+
}
|
|
91
|
+
/**
|
|
92
|
+
* Skill-conditioned DAG helper: returns proven/correctable refs plus anti-patterns
|
|
93
|
+
* to avoid, without bumping composite use counters (read-only for plan packaging).
|
|
94
|
+
*/
|
|
95
|
+
export declare function suggestSkillConditionHints(client: GraphClient, task: string, maxHints: number): Promise<SkillConditionHints>;
|
|
70
96
|
export declare function suggestSkillHints(client: GraphClient, task: string, maxHints: number): Promise<string[]>;
|
|
71
97
|
export interface SkillDecayResult {
|
|
72
98
|
total: number;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"skill-flywheel.d.ts","sourceRoot":"","sources":["../../src/learning/skill-flywheel.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAa,aAAa,EAAE,MAAM,eAAe,CAAC;AAC9D,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AAG3D,OAAO,KAAK,EACV,UAAU,EAGV,gBAAgB,EACjB,MAAM,eAAe,CAAC;
|
|
1
|
+
{"version":3,"file":"skill-flywheel.d.ts","sourceRoot":"","sources":["../../src/learning/skill-flywheel.ts"],"names":[],"mappings":"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"}
|