@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.
Files changed (245) hide show
  1. package/CHANGELOG.md +133 -0
  2. package/README.md +193 -107
  3. package/dist/agents/atp-example-producer.d.ts +33 -0
  4. package/dist/agents/atp-example-producer.d.ts.map +1 -0
  5. package/dist/agents/atp-example-producer.js +154 -0
  6. package/dist/agents/atp-example-producer.js.map +1 -0
  7. package/dist/agents/planner.d.ts.map +1 -1
  8. package/dist/agents/planner.js +14 -8
  9. package/dist/agents/planner.js.map +1 -1
  10. package/dist/config/defaults.d.ts.map +1 -1
  11. package/dist/config/defaults.js +5 -3
  12. package/dist/config/defaults.js.map +1 -1
  13. package/dist/config/include-extensions.d.ts +3 -1
  14. package/dist/config/include-extensions.d.ts.map +1 -1
  15. package/dist/config/include-extensions.js +6 -3
  16. package/dist/config/include-extensions.js.map +1 -1
  17. package/dist/config/loader.js +1 -1
  18. package/dist/config/loader.js.map +1 -1
  19. package/dist/core/agent-delegation.d.ts +16 -2
  20. package/dist/core/agent-delegation.d.ts.map +1 -1
  21. package/dist/core/agent-delegation.js +48 -5
  22. package/dist/core/agent-delegation.js.map +1 -1
  23. package/dist/core/merge-agent-insight.d.ts.map +1 -1
  24. package/dist/core/merge-agent-insight.js +10 -0
  25. package/dist/core/merge-agent-insight.js.map +1 -1
  26. package/dist/core/orchestrator-episode.d.ts.map +1 -1
  27. package/dist/core/orchestrator-episode.js +24 -0
  28. package/dist/core/orchestrator-episode.js.map +1 -1
  29. package/dist/core/orchestrator.js +52 -1
  30. package/dist/core/orchestrator.js.map +1 -1
  31. package/dist/core/submit-agent-insight.d.ts +17 -0
  32. package/dist/core/submit-agent-insight.d.ts.map +1 -1
  33. package/dist/core/submit-agent-insight.js +28 -0
  34. package/dist/core/submit-agent-insight.js.map +1 -1
  35. package/dist/core/types.d.ts +35 -2
  36. package/dist/core/types.d.ts.map +1 -1
  37. package/dist/graph/client-factory.d.ts +4 -0
  38. package/dist/graph/client-factory.d.ts.map +1 -1
  39. package/dist/graph/client-factory.js +83 -7
  40. package/dist/graph/client-factory.js.map +1 -1
  41. package/dist/graph/context-slicer-types.d.ts +4 -0
  42. package/dist/graph/context-slicer-types.d.ts.map +1 -1
  43. package/dist/graph/context-slicer-types.js +3 -0
  44. package/dist/graph/context-slicer-types.js.map +1 -1
  45. package/dist/graph/context-slicer.d.ts.map +1 -1
  46. package/dist/graph/context-slicer.js +154 -6
  47. package/dist/graph/context-slicer.js.map +1 -1
  48. package/dist/graph/document-convert.d.ts +33 -0
  49. package/dist/graph/document-convert.d.ts.map +1 -0
  50. package/dist/graph/document-convert.js +137 -0
  51. package/dist/graph/document-convert.js.map +1 -0
  52. package/dist/graph/document-semantic-bridge.d.ts +23 -0
  53. package/dist/graph/document-semantic-bridge.d.ts.map +1 -0
  54. package/dist/graph/document-semantic-bridge.js +61 -0
  55. package/dist/graph/document-semantic-bridge.js.map +1 -0
  56. package/dist/graph/document-semantic-ingest.d.ts +48 -0
  57. package/dist/graph/document-semantic-ingest.d.ts.map +1 -0
  58. package/dist/graph/document-semantic-ingest.js +229 -0
  59. package/dist/graph/document-semantic-ingest.js.map +1 -0
  60. package/dist/graph/episode-engineering-links.d.ts +29 -0
  61. package/dist/graph/episode-engineering-links.d.ts.map +1 -0
  62. package/dist/graph/episode-engineering-links.js +63 -0
  63. package/dist/graph/episode-engineering-links.js.map +1 -0
  64. package/dist/graph/file-indexer-edges.d.ts +26 -0
  65. package/dist/graph/file-indexer-edges.d.ts.map +1 -1
  66. package/dist/graph/file-indexer-edges.js +120 -20
  67. package/dist/graph/file-indexer-edges.js.map +1 -1
  68. package/dist/graph/file-indexer-nodes.d.ts +18 -0
  69. package/dist/graph/file-indexer-nodes.d.ts.map +1 -1
  70. package/dist/graph/file-indexer-nodes.js +0 -0
  71. package/dist/graph/file-indexer-nodes.js.map +1 -1
  72. package/dist/graph/file-indexer-walker.d.ts +4 -1
  73. package/dist/graph/file-indexer-walker.d.ts.map +1 -1
  74. package/dist/graph/file-indexer-walker.js +33 -16
  75. package/dist/graph/file-indexer-walker.js.map +1 -1
  76. package/dist/graph/file-indexer.d.ts +5 -0
  77. package/dist/graph/file-indexer.d.ts.map +1 -1
  78. package/dist/graph/file-indexer.js +162 -50
  79. package/dist/graph/file-indexer.js.map +1 -1
  80. package/dist/graph/graph-compression.d.ts +11 -2
  81. package/dist/graph/graph-compression.d.ts.map +1 -1
  82. package/dist/graph/graph-compression.js +153 -16
  83. package/dist/graph/graph-compression.js.map +1 -1
  84. package/dist/graph/graphify-client.d.ts +1 -0
  85. package/dist/graph/graphify-client.d.ts.map +1 -1
  86. package/dist/graph/graphify-client.js +24 -9
  87. package/dist/graph/graphify-client.js.map +1 -1
  88. package/dist/graph/graphify-file-client.d.ts +1 -0
  89. package/dist/graph/graphify-file-client.d.ts.map +1 -1
  90. package/dist/graph/graphify-file-client.js +8 -2
  91. package/dist/graph/graphify-file-client.js.map +1 -1
  92. package/dist/graph/language-indexers/c-cpp.d.ts.map +1 -1
  93. package/dist/graph/language-indexers/c-cpp.js +19 -13
  94. package/dist/graph/language-indexers/c-cpp.js.map +1 -1
  95. package/dist/graph/language-indexers/dart.d.ts.map +1 -1
  96. package/dist/graph/language-indexers/dart.js +2 -6
  97. package/dist/graph/language-indexers/dart.js.map +1 -1
  98. package/dist/graph/language-indexers/go.d.ts.map +1 -1
  99. package/dist/graph/language-indexers/go.js +3 -6
  100. package/dist/graph/language-indexers/go.js.map +1 -1
  101. package/dist/graph/language-indexers/java.d.ts.map +1 -1
  102. package/dist/graph/language-indexers/java.js +2 -6
  103. package/dist/graph/language-indexers/java.js.map +1 -1
  104. package/dist/graph/language-indexers/kotlin.d.ts.map +1 -1
  105. package/dist/graph/language-indexers/kotlin.js +2 -6
  106. package/dist/graph/language-indexers/kotlin.js.map +1 -1
  107. package/dist/graph/language-indexers/python.d.ts.map +1 -1
  108. package/dist/graph/language-indexers/python.js +4 -6
  109. package/dist/graph/language-indexers/python.js.map +1 -1
  110. package/dist/graph/language-indexers/ruby.d.ts.map +1 -1
  111. package/dist/graph/language-indexers/ruby.js +2 -6
  112. package/dist/graph/language-indexers/ruby.js.map +1 -1
  113. package/dist/graph/language-indexers/rust.d.ts.map +1 -1
  114. package/dist/graph/language-indexers/rust.js +3 -6
  115. package/dist/graph/language-indexers/rust.js.map +1 -1
  116. package/dist/graph/language-indexers/swift.d.ts.map +1 -1
  117. package/dist/graph/language-indexers/swift.js +2 -6
  118. package/dist/graph/language-indexers/swift.js.map +1 -1
  119. package/dist/graph/language-indexers/tree-sitter-loader.d.ts +20 -0
  120. package/dist/graph/language-indexers/tree-sitter-loader.d.ts.map +1 -1
  121. package/dist/graph/language-indexers/tree-sitter-loader.js +42 -0
  122. package/dist/graph/language-indexers/tree-sitter-loader.js.map +1 -1
  123. package/dist/graph/memory-pack.d.ts +46 -0
  124. package/dist/graph/memory-pack.d.ts.map +1 -0
  125. package/dist/graph/memory-pack.js +204 -0
  126. package/dist/graph/memory-pack.js.map +1 -0
  127. package/dist/graph/snapshot-view.d.ts.map +1 -1
  128. package/dist/graph/snapshot-view.js +26 -1
  129. package/dist/graph/snapshot-view.js.map +1 -1
  130. package/dist/graph/sqlite-client.d.ts +1 -0
  131. package/dist/graph/sqlite-client.d.ts.map +1 -1
  132. package/dist/graph/sqlite-client.js +15 -4
  133. package/dist/graph/sqlite-client.js.map +1 -1
  134. package/dist/graph/symbol-extract.d.ts +39 -0
  135. package/dist/graph/symbol-extract.d.ts.map +1 -0
  136. package/dist/graph/symbol-extract.js +187 -0
  137. package/dist/graph/symbol-extract.js.map +1 -0
  138. package/dist/hooks/auto-capture.d.ts +87 -0
  139. package/dist/hooks/auto-capture.d.ts.map +1 -0
  140. package/dist/hooks/auto-capture.js +182 -0
  141. package/dist/hooks/auto-capture.js.map +1 -0
  142. package/dist/index.d.ts +7 -2
  143. package/dist/index.d.ts.map +1 -1
  144. package/dist/index.js +21 -2
  145. package/dist/index.js.map +1 -1
  146. package/dist/integrations/agent-mcp-installer.d.ts +87 -5
  147. package/dist/integrations/agent-mcp-installer.d.ts.map +1 -1
  148. package/dist/integrations/agent-mcp-installer.js +418 -60
  149. package/dist/integrations/agent-mcp-installer.js.map +1 -1
  150. package/dist/integrations/agent-profiles/profiles/qoder.d.ts.map +1 -1
  151. package/dist/integrations/agent-profiles/profiles/qoder.js +14 -2
  152. package/dist/integrations/agent-profiles/profiles/qoder.js.map +1 -1
  153. package/dist/integrations/agent-profiles/skills/qoder.js +6 -0
  154. package/dist/integrations/agent-profiles/skills/qoder.js.map +1 -1
  155. package/dist/integrations/claude-code-hooks.d.ts +95 -0
  156. package/dist/integrations/claude-code-hooks.d.ts.map +1 -0
  157. package/dist/integrations/claude-code-hooks.js +321 -0
  158. package/dist/integrations/claude-code-hooks.js.map +1 -0
  159. package/dist/integrations/ensure-anydoc.d.ts +41 -0
  160. package/dist/integrations/ensure-anydoc.d.ts.map +1 -0
  161. package/dist/integrations/ensure-anydoc.js +221 -0
  162. package/dist/integrations/ensure-anydoc.js.map +1 -0
  163. package/dist/integrations/skill-installer.d.ts +26 -3
  164. package/dist/integrations/skill-installer.d.ts.map +1 -1
  165. package/dist/integrations/skill-installer.js +148 -4
  166. package/dist/integrations/skill-installer.js.map +1 -1
  167. package/dist/learning/canary-gate.d.ts +39 -0
  168. package/dist/learning/canary-gate.d.ts.map +1 -0
  169. package/dist/learning/canary-gate.js +57 -0
  170. package/dist/learning/canary-gate.js.map +1 -0
  171. package/dist/learning/skill-consolidate.d.ts +84 -0
  172. package/dist/learning/skill-consolidate.d.ts.map +1 -0
  173. package/dist/learning/skill-consolidate.js +353 -0
  174. package/dist/learning/skill-consolidate.js.map +1 -0
  175. package/dist/learning/skill-flywheel.d.ts +26 -0
  176. package/dist/learning/skill-flywheel.d.ts.map +1 -1
  177. package/dist/learning/skill-flywheel.js +192 -29
  178. package/dist/learning/skill-flywheel.js.map +1 -1
  179. package/dist/learning/skill-opt-lite.d.ts +46 -0
  180. package/dist/learning/skill-opt-lite.d.ts.map +1 -0
  181. package/dist/learning/skill-opt-lite.js +270 -0
  182. package/dist/learning/skill-opt-lite.js.map +1 -0
  183. package/dist/learning/skill-package.d.ts.map +1 -1
  184. package/dist/learning/skill-package.js +80 -6
  185. package/dist/learning/skill-package.js.map +1 -1
  186. package/dist/learning/skill-store.d.ts.map +1 -1
  187. package/dist/learning/skill-store.js +13 -0
  188. package/dist/learning/skill-store.js.map +1 -1
  189. package/dist/learning/skill-types.d.ts +32 -0
  190. package/dist/learning/skill-types.d.ts.map +1 -1
  191. package/dist/learning/skill-types.js +17 -0
  192. package/dist/learning/skill-types.js.map +1 -1
  193. package/dist/skills/index.js +1 -1
  194. package/dist/skills/index.js.map +1 -1
  195. package/dist/surfaces/cli/index.js +46 -5
  196. package/dist/surfaces/cli/index.js.map +1 -1
  197. package/dist/surfaces/cli/init.d.ts +17 -4
  198. package/dist/surfaces/cli/init.d.ts.map +1 -1
  199. package/dist/surfaces/cli/init.js +71 -8
  200. package/dist/surfaces/cli/init.js.map +1 -1
  201. package/dist/surfaces/cli/output.d.ts.map +1 -1
  202. package/dist/surfaces/cli/output.js +4 -2
  203. package/dist/surfaces/cli/output.js.map +1 -1
  204. package/dist/surfaces/cli/runtime/facade.d.ts +2 -1
  205. package/dist/surfaces/cli/runtime/facade.d.ts.map +1 -1
  206. package/dist/surfaces/cli/runtime/facade.js +1 -0
  207. package/dist/surfaces/cli/runtime/facade.js.map +1 -1
  208. package/dist/surfaces/cli/runtime/graph.d.ts +59 -2
  209. package/dist/surfaces/cli/runtime/graph.d.ts.map +1 -1
  210. package/dist/surfaces/cli/runtime/graph.js +120 -7
  211. package/dist/surfaces/cli/runtime/graph.js.map +1 -1
  212. package/dist/surfaces/cli/runtime/learning.d.ts +19 -0
  213. package/dist/surfaces/cli/runtime/learning.d.ts.map +1 -1
  214. package/dist/surfaces/cli/runtime/learning.js +46 -0
  215. package/dist/surfaces/cli/runtime/learning.js.map +1 -1
  216. package/dist/surfaces/cli/runtime/routing.d.ts +6 -3
  217. package/dist/surfaces/cli/runtime/routing.d.ts.map +1 -1
  218. package/dist/surfaces/cli/runtime/routing.js +70 -7
  219. package/dist/surfaces/cli/runtime/routing.js.map +1 -1
  220. package/dist/surfaces/cli/runtime/types.d.ts +54 -0
  221. package/dist/surfaces/cli/runtime/types.d.ts.map +1 -1
  222. package/dist/surfaces/cli/runtime.d.ts +3 -3
  223. package/dist/surfaces/cli/runtime.d.ts.map +1 -1
  224. package/dist/surfaces/cli/runtime.js +6 -2
  225. package/dist/surfaces/cli/runtime.js.map +1 -1
  226. package/dist/surfaces/mcp/server.d.ts +12 -4
  227. package/dist/surfaces/mcp/server.d.ts.map +1 -1
  228. package/dist/surfaces/mcp/server.js +270 -97
  229. package/dist/surfaces/mcp/server.js.map +1 -1
  230. package/dist/surfaces/mcp/tool-definitions.d.ts.map +1 -1
  231. package/dist/surfaces/mcp/tool-definitions.js +15 -0
  232. package/dist/surfaces/mcp/tool-definitions.js.map +1 -1
  233. package/dist/surfaces/mcp/tool-handlers.d.ts +5 -3
  234. package/dist/surfaces/mcp/tool-handlers.d.ts.map +1 -1
  235. package/dist/surfaces/mcp/tool-handlers.js +36 -6
  236. package/dist/surfaces/mcp/tool-handlers.js.map +1 -1
  237. package/dist/utils/logger.d.ts +8 -0
  238. package/dist/utils/logger.d.ts.map +1 -1
  239. package/dist/utils/logger.js +54 -5
  240. package/dist/utils/logger.js.map +1 -1
  241. package/mcp.json +14 -0
  242. package/package.json +19 -1
  243. package/plugin.json +21 -0
  244. package/scripts/safe-postinstall.cjs +36 -1
  245. 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":"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"}
1
+ {"version":3,"file":"skill-flywheel.d.ts","sourceRoot":"","sources":["../../src/learning/skill-flywheel.ts"],"names":[],"mappings":"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"}