@mcp-graph-workflow/mcp-graph 5.5.3 → 5.6.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.
Files changed (224) hide show
  1. package/dist/api/router.d.ts.map +1 -1
  2. package/dist/api/router.js +4 -0
  3. package/dist/api/router.js.map +1 -1
  4. package/dist/api/routes/journey.d.ts +4 -0
  5. package/dist/api/routes/journey.d.ts.map +1 -0
  6. package/dist/api/routes/journey.js +263 -0
  7. package/dist/api/routes/journey.js.map +1 -0
  8. package/dist/api/routes/siebel.d.ts +7 -0
  9. package/dist/api/routes/siebel.d.ts.map +1 -0
  10. package/dist/api/routes/siebel.js +305 -0
  11. package/dist/api/routes/siebel.js.map +1 -0
  12. package/dist/core/context/rag-context.d.ts.map +1 -1
  13. package/dist/core/context/rag-context.js +21 -5
  14. package/dist/core/context/rag-context.js.map +1 -1
  15. package/dist/core/events/event-types.d.ts +63 -1
  16. package/dist/core/events/event-types.d.ts.map +1 -1
  17. package/dist/core/integrations/integration-orchestrator.d.ts +12 -0
  18. package/dist/core/integrations/integration-orchestrator.d.ts.map +1 -1
  19. package/dist/core/integrations/integration-orchestrator.js +36 -2
  20. package/dist/core/integrations/integration-orchestrator.js.map +1 -1
  21. package/dist/core/journey/journey-store.d.ts +137 -0
  22. package/dist/core/journey/journey-store.d.ts.map +1 -0
  23. package/dist/core/journey/journey-store.js +210 -0
  24. package/dist/core/journey/journey-store.js.map +1 -0
  25. package/dist/core/parser/file-reader.d.ts.map +1 -1
  26. package/dist/core/parser/file-reader.js +16 -1
  27. package/dist/core/parser/file-reader.js.map +1 -1
  28. package/dist/core/parser/read-docx.d.ts +17 -0
  29. package/dist/core/parser/read-docx.d.ts.map +1 -0
  30. package/dist/core/parser/read-docx.js +79 -0
  31. package/dist/core/parser/read-docx.js.map +1 -0
  32. package/dist/core/parser/read-swagger.d.ts +49 -0
  33. package/dist/core/parser/read-swagger.d.ts.map +1 -0
  34. package/dist/core/parser/read-swagger.js +332 -0
  35. package/dist/core/parser/read-swagger.js.map +1 -0
  36. package/dist/core/rag/chunk-text.d.ts +5 -0
  37. package/dist/core/rag/chunk-text.d.ts.map +1 -1
  38. package/dist/core/rag/chunk-text.js +135 -0
  39. package/dist/core/rag/chunk-text.js.map +1 -1
  40. package/dist/core/rag/code-context-indexer.d.ts +27 -0
  41. package/dist/core/rag/code-context-indexer.d.ts.map +1 -0
  42. package/dist/core/rag/code-context-indexer.js +53 -0
  43. package/dist/core/rag/code-context-indexer.js.map +1 -0
  44. package/dist/core/rag/decision-indexer.d.ts +20 -0
  45. package/dist/core/rag/decision-indexer.d.ts.map +1 -0
  46. package/dist/core/rag/decision-indexer.js +32 -0
  47. package/dist/core/rag/decision-indexer.js.map +1 -0
  48. package/dist/core/rag/journey-indexer.d.ts +16 -0
  49. package/dist/core/rag/journey-indexer.d.ts.map +1 -0
  50. package/dist/core/rag/journey-indexer.js +182 -0
  51. package/dist/core/rag/journey-indexer.js.map +1 -0
  52. package/dist/core/rag/knowledge-feedback.d.ts +15 -0
  53. package/dist/core/rag/knowledge-feedback.d.ts.map +1 -0
  54. package/dist/core/rag/knowledge-feedback.js +46 -0
  55. package/dist/core/rag/knowledge-feedback.js.map +1 -0
  56. package/dist/core/rag/knowledge-linker.d.ts +20 -0
  57. package/dist/core/rag/knowledge-linker.d.ts.map +1 -0
  58. package/dist/core/rag/knowledge-linker.js +107 -0
  59. package/dist/core/rag/knowledge-linker.js.map +1 -0
  60. package/dist/core/rag/knowledge-quality.d.ts +31 -0
  61. package/dist/core/rag/knowledge-quality.d.ts.map +1 -0
  62. package/dist/core/rag/knowledge-quality.js +127 -0
  63. package/dist/core/rag/knowledge-quality.js.map +1 -0
  64. package/dist/core/rag/knowledge-synthesizer.d.ts +17 -0
  65. package/dist/core/rag/knowledge-synthesizer.d.ts.map +1 -0
  66. package/dist/core/rag/knowledge-synthesizer.js +115 -0
  67. package/dist/core/rag/knowledge-synthesizer.js.map +1 -0
  68. package/dist/core/rag/memory-rag-query.d.ts +3 -3
  69. package/dist/core/rag/memory-rag-query.d.ts.map +1 -1
  70. package/dist/core/rag/memory-rag-query.js +18 -0
  71. package/dist/core/rag/memory-rag-query.js.map +1 -1
  72. package/dist/core/rag/multi-strategy-retrieval.d.ts +46 -0
  73. package/dist/core/rag/multi-strategy-retrieval.d.ts.map +1 -0
  74. package/dist/core/rag/multi-strategy-retrieval.js +140 -0
  75. package/dist/core/rag/multi-strategy-retrieval.js.map +1 -0
  76. package/dist/core/rag/rag-pipeline.d.ts +11 -0
  77. package/dist/core/rag/rag-pipeline.d.ts.map +1 -1
  78. package/dist/core/rag/rag-pipeline.js +39 -0
  79. package/dist/core/rag/rag-pipeline.js.map +1 -1
  80. package/dist/core/rag/siebel-indexer.d.ts +16 -0
  81. package/dist/core/rag/siebel-indexer.d.ts.map +1 -0
  82. package/dist/core/rag/siebel-indexer.js +75 -0
  83. package/dist/core/rag/siebel-indexer.js.map +1 -0
  84. package/dist/core/rag/swagger-indexer.d.ts +16 -0
  85. package/dist/core/rag/swagger-indexer.d.ts.map +1 -0
  86. package/dist/core/rag/swagger-indexer.js +119 -0
  87. package/dist/core/rag/swagger-indexer.js.map +1 -0
  88. package/dist/core/rag/validation-indexer.d.ts +23 -0
  89. package/dist/core/rag/validation-indexer.d.ts.map +1 -0
  90. package/dist/core/rag/validation-indexer.js +35 -0
  91. package/dist/core/rag/validation-indexer.js.map +1 -0
  92. package/dist/core/siebel/composer-automation.d.ts +77 -0
  93. package/dist/core/siebel/composer-automation.d.ts.map +1 -0
  94. package/dist/core/siebel/composer-automation.js +110 -0
  95. package/dist/core/siebel/composer-automation.js.map +1 -0
  96. package/dist/core/siebel/dependency-analyzer.d.ts +24 -0
  97. package/dist/core/siebel/dependency-analyzer.d.ts.map +1 -0
  98. package/dist/core/siebel/dependency-analyzer.js +174 -0
  99. package/dist/core/siebel/dependency-analyzer.js.map +1 -0
  100. package/dist/core/siebel/siebel-config.d.ts +28 -0
  101. package/dist/core/siebel/siebel-config.d.ts.map +1 -0
  102. package/dist/core/siebel/siebel-config.js +86 -0
  103. package/dist/core/siebel/siebel-config.js.map +1 -0
  104. package/dist/core/siebel/sif-context-assembler.d.ts +37 -0
  105. package/dist/core/siebel/sif-context-assembler.d.ts.map +1 -0
  106. package/dist/core/siebel/sif-context-assembler.js +259 -0
  107. package/dist/core/siebel/sif-context-assembler.js.map +1 -0
  108. package/dist/core/siebel/sif-generator.d.ts +26 -0
  109. package/dist/core/siebel/sif-generator.d.ts.map +1 -0
  110. package/dist/core/siebel/sif-generator.js +232 -0
  111. package/dist/core/siebel/sif-generator.js.map +1 -0
  112. package/dist/core/siebel/sif-parser.d.ts +16 -0
  113. package/dist/core/siebel/sif-parser.d.ts.map +1 -0
  114. package/dist/core/siebel/sif-parser.js +355 -0
  115. package/dist/core/siebel/sif-parser.js.map +1 -0
  116. package/dist/core/siebel/sif-templates.d.ts +45 -0
  117. package/dist/core/siebel/sif-templates.d.ts.map +1 -0
  118. package/dist/core/siebel/sif-templates.js +179 -0
  119. package/dist/core/siebel/sif-templates.js.map +1 -0
  120. package/dist/core/siebel/sif-to-graph.d.ts +20 -0
  121. package/dist/core/siebel/sif-to-graph.d.ts.map +1 -0
  122. package/dist/core/siebel/sif-to-graph.js +176 -0
  123. package/dist/core/siebel/sif-to-graph.js.map +1 -0
  124. package/dist/core/store/knowledge-store.d.ts +25 -0
  125. package/dist/core/store/knowledge-store.d.ts.map +1 -1
  126. package/dist/core/store/knowledge-store.js +72 -0
  127. package/dist/core/store/knowledge-store.js.map +1 -1
  128. package/dist/core/store/migrations.d.ts.map +1 -1
  129. package/dist/core/store/migrations.js +96 -0
  130. package/dist/core/store/migrations.js.map +1 -1
  131. package/dist/mcp/tools/index.d.ts.map +1 -1
  132. package/dist/mcp/tools/index.js +26 -0
  133. package/dist/mcp/tools/index.js.map +1 -1
  134. package/dist/mcp/tools/journey.d.ts +4 -0
  135. package/dist/mcp/tools/journey.d.ts.map +1 -0
  136. package/dist/mcp/tools/journey.js +154 -0
  137. package/dist/mcp/tools/journey.js.map +1 -0
  138. package/dist/mcp/tools/knowledge-feedback.d.ts +8 -0
  139. package/dist/mcp/tools/knowledge-feedback.d.ts.map +1 -0
  140. package/dist/mcp/tools/knowledge-feedback.js +35 -0
  141. package/dist/mcp/tools/knowledge-feedback.js.map +1 -0
  142. package/dist/mcp/tools/knowledge-stats.d.ts +9 -0
  143. package/dist/mcp/tools/knowledge-stats.d.ts.map +1 -0
  144. package/dist/mcp/tools/knowledge-stats.js +83 -0
  145. package/dist/mcp/tools/knowledge-stats.js.map +1 -0
  146. package/dist/mcp/tools/plan-sprint.d.ts.map +1 -1
  147. package/dist/mcp/tools/plan-sprint.js +7 -1
  148. package/dist/mcp/tools/plan-sprint.js.map +1 -1
  149. package/dist/mcp/tools/rag-context.d.ts.map +1 -1
  150. package/dist/mcp/tools/rag-context.js +43 -2
  151. package/dist/mcp/tools/rag-context.js.map +1 -1
  152. package/dist/mcp/tools/reindex-knowledge.d.ts.map +1 -1
  153. package/dist/mcp/tools/reindex-knowledge.js +23 -2
  154. package/dist/mcp/tools/reindex-knowledge.js.map +1 -1
  155. package/dist/mcp/tools/siebel-analyze.d.ts +8 -0
  156. package/dist/mcp/tools/siebel-analyze.d.ts.map +1 -0
  157. package/dist/mcp/tools/siebel-analyze.js +107 -0
  158. package/dist/mcp/tools/siebel-analyze.js.map +1 -0
  159. package/dist/mcp/tools/siebel-composer.d.ts +12 -0
  160. package/dist/mcp/tools/siebel-composer.d.ts.map +1 -0
  161. package/dist/mcp/tools/siebel-composer.js +59 -0
  162. package/dist/mcp/tools/siebel-composer.js.map +1 -0
  163. package/dist/mcp/tools/siebel-env.d.ts +8 -0
  164. package/dist/mcp/tools/siebel-env.d.ts.map +1 -0
  165. package/dist/mcp/tools/siebel-env.js +60 -0
  166. package/dist/mcp/tools/siebel-env.js.map +1 -0
  167. package/dist/mcp/tools/siebel-generate-sif.d.ts +8 -0
  168. package/dist/mcp/tools/siebel-generate-sif.d.ts.map +1 -0
  169. package/dist/mcp/tools/siebel-generate-sif.js +91 -0
  170. package/dist/mcp/tools/siebel-generate-sif.js.map +1 -0
  171. package/dist/mcp/tools/siebel-import-docs.d.ts +9 -0
  172. package/dist/mcp/tools/siebel-import-docs.d.ts.map +1 -0
  173. package/dist/mcp/tools/siebel-import-docs.js +106 -0
  174. package/dist/mcp/tools/siebel-import-docs.js.map +1 -0
  175. package/dist/mcp/tools/siebel-import-sif.d.ts +8 -0
  176. package/dist/mcp/tools/siebel-import-sif.d.ts.map +1 -0
  177. package/dist/mcp/tools/siebel-import-sif.js +68 -0
  178. package/dist/mcp/tools/siebel-import-sif.js.map +1 -0
  179. package/dist/mcp/tools/siebel-search.d.ts +8 -0
  180. package/dist/mcp/tools/siebel-search.d.ts.map +1 -0
  181. package/dist/mcp/tools/siebel-search.js +47 -0
  182. package/dist/mcp/tools/siebel-search.js.map +1 -0
  183. package/dist/mcp/tools/siebel-validate.d.ts +8 -0
  184. package/dist/mcp/tools/siebel-validate.d.ts.map +1 -0
  185. package/dist/mcp/tools/siebel-validate.js +107 -0
  186. package/dist/mcp/tools/siebel-validate.js.map +1 -0
  187. package/dist/mcp/tools/update-status.d.ts.map +1 -1
  188. package/dist/mcp/tools/update-status.js +22 -1
  189. package/dist/mcp/tools/update-status.js.map +1 -1
  190. package/dist/mcp/tools/validate.d.ts.map +1 -1
  191. package/dist/mcp/tools/validate.js +21 -0
  192. package/dist/mcp/tools/validate.js.map +1 -1
  193. package/dist/schemas/knowledge.schema.d.ts +66 -0
  194. package/dist/schemas/knowledge.schema.d.ts.map +1 -1
  195. package/dist/schemas/knowledge.schema.js +28 -0
  196. package/dist/schemas/knowledge.schema.js.map +1 -1
  197. package/dist/schemas/siebel.schema.d.ts +564 -0
  198. package/dist/schemas/siebel.schema.d.ts.map +1 -0
  199. package/dist/schemas/siebel.schema.js +197 -0
  200. package/dist/schemas/siebel.schema.js.map +1 -0
  201. package/dist/web/dashboard/dist/assets/{benchmark-tab-C5fwIqgM.js → benchmark-tab-WCcv55oB.js} +1 -1
  202. package/dist/web/dashboard/dist/assets/{context-tab-ChCyrRlr.js → context-tab-CYnMjkHN.js} +1 -1
  203. package/dist/web/dashboard/dist/assets/{gitnexus-tab-DnlGT63w.js → gitnexus-tab-Dj0DERUy.js} +1 -1
  204. package/dist/web/dashboard/dist/assets/graph-tab-tI93ZxxW.js +1 -0
  205. package/dist/web/dashboard/dist/assets/graph-utils-DeQEwmsr.js +1 -0
  206. package/dist/web/dashboard/dist/assets/index-B1PLsGu1.js +55 -0
  207. package/dist/web/dashboard/dist/assets/index-DKvjo_C5.css +1 -0
  208. package/dist/web/dashboard/dist/assets/{index-DlZhNCGR.js → index-NmopQGmQ.js} +1 -1
  209. package/dist/web/dashboard/dist/assets/{insights-tab-Cj4f85vS.js → insights-tab-X7u4J-xv.js} +1 -1
  210. package/dist/web/dashboard/dist/assets/journey-tab-Cpz6_3mB.js +1 -0
  211. package/dist/web/dashboard/dist/assets/{logs-tab-C4C2Vn8-.js → logs-tab-QB__4Xdl.js} +1 -1
  212. package/dist/web/dashboard/dist/assets/{memories-tab-NtNwoxbT.js → memories-tab-Dry9wz7q.js} +1 -1
  213. package/dist/web/dashboard/dist/assets/prd-backlog-tab-OXTksZKv.js +1 -0
  214. package/dist/web/dashboard/dist/assets/siebel-tab-x7OCuCmb.js +3 -0
  215. package/dist/web/dashboard/dist/assets/{skills-tab-CIj4z1Ol.js → skills-tab-DeUEKmpZ.js} +1 -1
  216. package/dist/web/dashboard/dist/assets/style-C-e8BTyP.js +7 -0
  217. package/dist/web/dashboard/dist/index.html +2 -2
  218. package/package.json +3 -1
  219. package/dist/web/dashboard/dist/assets/graph-tab-DjV9RD41.js +0 -1
  220. package/dist/web/dashboard/dist/assets/graph-utils-C6bvcT4d.js +0 -7
  221. package/dist/web/dashboard/dist/assets/index-DQqYFXms.css +0 -1
  222. package/dist/web/dashboard/dist/assets/index-dCyMex_p.js +0 -53
  223. package/dist/web/dashboard/dist/assets/prd-backlog-tab-Bxt7qiVG.js +0 -1
  224. /package/dist/web/dashboard/dist/assets/{graph-utils-BZV40eAE.css → style-BZV40eAE.css} +0 -0
@@ -94,6 +94,141 @@ function hardSplit(text, maxTokens, overlapTokens) {
94
94
  }
95
95
  return chunks;
96
96
  }
97
+ /**
98
+ * Content-type-aware chunking strategy.
99
+ * Selects chunk size and splitting strategy based on source type.
100
+ */
101
+ export function smartChunk(text, contentType, options) {
102
+ const trimmed = text.trim();
103
+ if (!trimmed)
104
+ return [];
105
+ switch (contentType) {
106
+ case "docs":
107
+ return chunkByStrategy(trimmed, {
108
+ maxTokens: options?.maxTokens ?? 800,
109
+ overlapTokens: options?.overlapTokens ?? 80,
110
+ splitFn: splitPreservingCodeBlocks,
111
+ });
112
+ case "prd":
113
+ case "design":
114
+ return chunkByStrategy(trimmed, {
115
+ maxTokens: options?.maxTokens ?? 600,
116
+ overlapTokens: options?.overlapTokens ?? 60,
117
+ splitFn: splitByMarkdownHeaders,
118
+ });
119
+ case "memory":
120
+ case "ai_decision":
121
+ case "synthesis":
122
+ return chunkText(trimmed, {
123
+ maxTokens: options?.maxTokens ?? 300,
124
+ overlapTokens: options?.overlapTokens ?? 30,
125
+ });
126
+ case "code_context":
127
+ return chunkByStrategy(trimmed, {
128
+ maxTokens: options?.maxTokens ?? 500,
129
+ overlapTokens: options?.overlapTokens ?? 50,
130
+ splitFn: splitByCodeBoundaries,
131
+ });
132
+ case "web_capture":
133
+ return chunkText(trimmed, {
134
+ maxTokens: options?.maxTokens ?? 500,
135
+ overlapTokens: options?.overlapTokens ?? 50,
136
+ });
137
+ default:
138
+ return chunkText(trimmed, options);
139
+ }
140
+ }
141
+ /**
142
+ * Chunk text using a custom split function, then merge segments up to maxTokens.
143
+ */
144
+ function chunkByStrategy(text, opts) {
145
+ const totalTokens = estimateTokens(text);
146
+ if (totalTokens <= opts.maxTokens) {
147
+ return [{ index: 0, content: text, tokens: totalTokens }];
148
+ }
149
+ const segments = opts.splitFn(text);
150
+ const chunks = [];
151
+ let current = [];
152
+ let currentTokens = 0;
153
+ for (const segment of segments) {
154
+ const segTokens = estimateTokens(segment);
155
+ // If single segment exceeds max, chunk it with default splitter
156
+ if (segTokens > opts.maxTokens && current.length === 0) {
157
+ const subChunks = chunkText(segment, {
158
+ maxTokens: opts.maxTokens,
159
+ overlapTokens: opts.overlapTokens,
160
+ });
161
+ for (const sc of subChunks) {
162
+ chunks.push({ index: chunks.length, content: sc.content, tokens: sc.tokens });
163
+ }
164
+ continue;
165
+ }
166
+ if (currentTokens + segTokens > opts.maxTokens && current.length > 0) {
167
+ const chunkContent = current.join("\n\n").trim();
168
+ if (chunkContent) {
169
+ chunks.push({
170
+ index: chunks.length,
171
+ content: chunkContent,
172
+ tokens: estimateTokens(chunkContent),
173
+ });
174
+ }
175
+ current = [];
176
+ currentTokens = 0;
177
+ }
178
+ current.push(segment);
179
+ currentTokens += segTokens;
180
+ }
181
+ if (current.length > 0) {
182
+ const chunkContent = current.join("\n\n").trim();
183
+ if (chunkContent) {
184
+ chunks.push({
185
+ index: chunks.length,
186
+ content: chunkContent,
187
+ tokens: estimateTokens(chunkContent),
188
+ });
189
+ }
190
+ }
191
+ return chunks;
192
+ }
193
+ /**
194
+ * Split text preserving code blocks as atomic units.
195
+ */
196
+ function splitPreservingCodeBlocks(text) {
197
+ const parts = [];
198
+ const codeBlockRegex = /```[\s\S]*?```/g;
199
+ let lastIndex = 0;
200
+ let match;
201
+ while ((match = codeBlockRegex.exec(text)) !== null) {
202
+ // Text before code block
203
+ const before = text.slice(lastIndex, match.index).trim();
204
+ if (before) {
205
+ parts.push(...before.split(/\n\n+/).filter((s) => s.trim()));
206
+ }
207
+ // Code block as atomic unit
208
+ parts.push(match[0]);
209
+ lastIndex = match.index + match[0].length;
210
+ }
211
+ // Remaining text
212
+ const remaining = text.slice(lastIndex).trim();
213
+ if (remaining) {
214
+ parts.push(...remaining.split(/\n\n+/).filter((s) => s.trim()));
215
+ }
216
+ return parts;
217
+ }
218
+ /**
219
+ * Split by markdown headers (h1, h2, h3).
220
+ */
221
+ function splitByMarkdownHeaders(text) {
222
+ const sections = text.split(/(?=^#{1,3}\s)/m);
223
+ return sections.filter((s) => s.trim());
224
+ }
225
+ /**
226
+ * Split by code boundaries (function/class/export declarations).
227
+ */
228
+ function splitByCodeBoundaries(text) {
229
+ const sections = text.split(/(?=\n(?:export\s+)?(?:function|class|interface|type|const|enum)\s)/);
230
+ return sections.filter((s) => s.trim());
231
+ }
97
232
  /**
98
233
  * Build overlap sentences from the tail of the current sentence list.
99
234
  */
@@ -1 +1 @@
1
- {"version":3,"file":"chunk-text.js","sourceRoot":"","sources":["../../../src/core/rag/chunk-text.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"chunk-text.js","sourceRoot":"","sources":["../../../src/core/rag/chunk-text.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,27 @@
1
+ /**
2
+ * Code Context Indexer — captures code analysis results (symbols, flows)
3
+ * into the knowledge store for RAG retrieval.
4
+ */
5
+ import type { KnowledgeStore } from "../store/knowledge-store.js";
6
+ export interface CodeSymbolInput {
7
+ name: string;
8
+ kind: string;
9
+ file: string;
10
+ exported: boolean;
11
+ }
12
+ export interface ProcessFlowInput {
13
+ name: string;
14
+ steps: string[];
15
+ }
16
+ export interface CodeAnalysisInput {
17
+ symbols: CodeSymbolInput[];
18
+ flows: ProcessFlowInput[];
19
+ }
20
+ export interface IndexResult {
21
+ documentsIndexed: number;
22
+ }
23
+ /**
24
+ * Index code analysis results into the knowledge store.
25
+ */
26
+ export declare function indexCodeAnalysis(store: KnowledgeStore, analysis: CodeAnalysisInput): IndexResult;
27
+ //# sourceMappingURL=code-context-indexer.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"code-context-indexer.d.ts","sourceRoot":"","sources":["../../../src/core/rag/code-context-indexer.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,6BAA6B,CAAC;AAGlE,MAAM,WAAW,eAAe;IAC9B,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,OAAO,CAAC;CACnB;AAED,MAAM,WAAW,gBAAgB;IAC/B,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,EAAE,CAAC;CACjB;AAED,MAAM,WAAW,iBAAiB;IAChC,OAAO,EAAE,eAAe,EAAE,CAAC;IAC3B,KAAK,EAAE,gBAAgB,EAAE,CAAC;CAC3B;AAED,MAAM,WAAW,WAAW;IAC1B,gBAAgB,EAAE,MAAM,CAAC;CAC1B;AAED;;GAEG;AACH,wBAAgB,iBAAiB,CAC/B,KAAK,EAAE,cAAc,EACrB,QAAQ,EAAE,iBAAiB,GAC1B,WAAW,CAmDb"}
@@ -0,0 +1,53 @@
1
+ /**
2
+ * Code Context Indexer — captures code analysis results (symbols, flows)
3
+ * into the knowledge store for RAG retrieval.
4
+ */
5
+ import { logger } from "../utils/logger.js";
6
+ /**
7
+ * Index code analysis results into the knowledge store.
8
+ */
9
+ export function indexCodeAnalysis(store, analysis) {
10
+ let documentsIndexed = 0;
11
+ // Index symbols summary
12
+ if (analysis.symbols.length > 0) {
13
+ const symbolLines = analysis.symbols.map((s) => `- ${s.kind} ${s.name} (${s.file})${s.exported ? " [exported]" : ""}`);
14
+ const content = `# Code Symbols\n\n${symbolLines.join("\n")}`;
15
+ store.insert({
16
+ sourceType: "code_context",
17
+ sourceId: `code_symbols:${new Date().toISOString()}`,
18
+ title: `Code Symbols (${analysis.symbols.length} symbols)`,
19
+ content,
20
+ metadata: {
21
+ symbolCount: analysis.symbols.length,
22
+ files: [...new Set(analysis.symbols.map((s) => s.file))],
23
+ phase: "IMPLEMENT",
24
+ indexedAt: new Date().toISOString(),
25
+ },
26
+ });
27
+ documentsIndexed++;
28
+ }
29
+ // Index process flows
30
+ for (const flow of analysis.flows) {
31
+ const content = `# Process Flow: ${flow.name}\n\n${flow.steps.map((s) => `→ ${s}`).join("\n")}`;
32
+ store.insert({
33
+ sourceType: "code_context",
34
+ sourceId: `code_flow:${flow.name}`,
35
+ title: `Flow: ${flow.name}`,
36
+ content,
37
+ metadata: {
38
+ flowName: flow.name,
39
+ stepCount: flow.steps.length,
40
+ phase: "IMPLEMENT",
41
+ indexedAt: new Date().toISOString(),
42
+ },
43
+ });
44
+ documentsIndexed++;
45
+ }
46
+ logger.info("Code analysis indexed", {
47
+ symbols: analysis.symbols.length,
48
+ flows: analysis.flows.length,
49
+ documentsIndexed,
50
+ });
51
+ return { documentsIndexed };
52
+ }
53
+ //# sourceMappingURL=code-context-indexer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"code-context-indexer.js","sourceRoot":"","sources":["../../../src/core/rag/code-context-indexer.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAGH,OAAO,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAC;AAuB5C;;GAEG;AACH,MAAM,UAAU,iBAAiB,CAC/B,KAAqB,EACrB,QAA2B;IAE3B,IAAI,gBAAgB,GAAG,CAAC,CAAC;IAEzB,wBAAwB;IACxB,IAAI,QAAQ,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAChC,MAAM,WAAW,GAAG,QAAQ,CAAC,OAAO,CAAC,GAAG,CACtC,CAAC,CAAC,EAAE,EAAE,CAAC,KAAK,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,EAAE,EAAE,CAC7E,CAAC;QACF,MAAM,OAAO,GAAG,qBAAqB,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;QAE9D,KAAK,CAAC,MAAM,CAAC;YACX,UAAU,EAAE,cAAc;YAC1B,QAAQ,EAAE,gBAAgB,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,EAAE;YACpD,KAAK,EAAE,iBAAiB,QAAQ,CAAC,OAAO,CAAC,MAAM,WAAW;YAC1D,OAAO;YACP,QAAQ,EAAE;gBACR,WAAW,EAAE,QAAQ,CAAC,OAAO,CAAC,MAAM;gBACpC,KAAK,EAAE,CAAC,GAAG,IAAI,GAAG,CAAC,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;gBACxD,KAAK,EAAE,WAAW;gBAClB,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;aACpC;SACF,CAAC,CAAC;QACH,gBAAgB,EAAE,CAAC;IACrB,CAAC;IAED,sBAAsB;IACtB,KAAK,MAAM,IAAI,IAAI,QAAQ,CAAC,KAAK,EAAE,CAAC;QAClC,MAAM,OAAO,GAAG,mBAAmB,IAAI,CAAC,IAAI,OAAO,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;QAEhG,KAAK,CAAC,MAAM,CAAC;YACX,UAAU,EAAE,cAAc;YAC1B,QAAQ,EAAE,aAAa,IAAI,CAAC,IAAI,EAAE;YAClC,KAAK,EAAE,SAAS,IAAI,CAAC,IAAI,EAAE;YAC3B,OAAO;YACP,QAAQ,EAAE;gBACR,QAAQ,EAAE,IAAI,CAAC,IAAI;gBACnB,SAAS,EAAE,IAAI,CAAC,KAAK,CAAC,MAAM;gBAC5B,KAAK,EAAE,WAAW;gBAClB,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;aACpC;SACF,CAAC,CAAC;QACH,gBAAgB,EAAE,CAAC;IACrB,CAAC;IAED,MAAM,CAAC,IAAI,CAAC,uBAAuB,EAAE;QACnC,OAAO,EAAE,QAAQ,CAAC,OAAO,CAAC,MAAM;QAChC,KAAK,EAAE,QAAQ,CAAC,KAAK,CAAC,MAAM;QAC5B,gBAAgB;KACjB,CAAC,CAAC;IAEH,OAAO,EAAE,gBAAgB,EAAE,CAAC;AAC9B,CAAC"}
@@ -0,0 +1,20 @@
1
+ /**
2
+ * Decision Indexer — captures AI decisions/rationale when tasks complete.
3
+ * Indexes the explicit rationale from update_status(done) into knowledge store.
4
+ */
5
+ import type { KnowledgeStore } from "../store/knowledge-store.js";
6
+ export interface DecisionInput {
7
+ nodeId: string;
8
+ title: string;
9
+ rationale: string;
10
+ tags: string[];
11
+ }
12
+ export interface IndexResult {
13
+ documentsIndexed: number;
14
+ skippedDuplicates: number;
15
+ }
16
+ /**
17
+ * Index an AI decision into the knowledge store.
18
+ */
19
+ export declare function indexDecision(store: KnowledgeStore, decision: DecisionInput): IndexResult;
20
+ //# sourceMappingURL=decision-indexer.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"decision-indexer.d.ts","sourceRoot":"","sources":["../../../src/core/rag/decision-indexer.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,6BAA6B,CAAC;AAGlE,MAAM,WAAW,aAAa;IAC5B,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,EAAE,MAAM,CAAC;IAClB,IAAI,EAAE,MAAM,EAAE,CAAC;CAChB;AAED,MAAM,WAAW,WAAW;IAC1B,gBAAgB,EAAE,MAAM,CAAC;IACzB,iBAAiB,EAAE,MAAM,CAAC;CAC3B;AAED;;GAEG;AACH,wBAAgB,aAAa,CAC3B,KAAK,EAAE,cAAc,EACrB,QAAQ,EAAE,aAAa,GACtB,WAAW,CA0Bb"}
@@ -0,0 +1,32 @@
1
+ /**
2
+ * Decision Indexer — captures AI decisions/rationale when tasks complete.
3
+ * Indexes the explicit rationale from update_status(done) into knowledge store.
4
+ */
5
+ import { logger } from "../utils/logger.js";
6
+ /**
7
+ * Index an AI decision into the knowledge store.
8
+ */
9
+ export function indexDecision(store, decision) {
10
+ const content = `# Decision: ${decision.title}\n\n${decision.rationale}`;
11
+ const sourceId = `ai_decision:${decision.nodeId}`;
12
+ const doc = store.insert({
13
+ sourceType: "ai_decision",
14
+ sourceId,
15
+ title: `Decision: ${decision.title}`,
16
+ content,
17
+ metadata: {
18
+ nodeId: decision.nodeId,
19
+ tags: decision.tags,
20
+ phase: "IMPLEMENT",
21
+ indexedAt: new Date().toISOString(),
22
+ },
23
+ });
24
+ // Check if it was a dedup hit (existing doc returned)
25
+ const isNew = doc.sourceId === sourceId;
26
+ logger.info("Decision indexed", { nodeId: decision.nodeId, docId: doc.id, isNew });
27
+ return {
28
+ documentsIndexed: isNew ? 1 : 0,
29
+ skippedDuplicates: isNew ? 0 : 1,
30
+ };
31
+ }
32
+ //# sourceMappingURL=decision-indexer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"decision-indexer.js","sourceRoot":"","sources":["../../../src/core/rag/decision-indexer.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAGH,OAAO,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAC;AAc5C;;GAEG;AACH,MAAM,UAAU,aAAa,CAC3B,KAAqB,EACrB,QAAuB;IAEvB,MAAM,OAAO,GAAG,eAAe,QAAQ,CAAC,KAAK,OAAO,QAAQ,CAAC,SAAS,EAAE,CAAC;IACzE,MAAM,QAAQ,GAAG,eAAe,QAAQ,CAAC,MAAM,EAAE,CAAC;IAElD,MAAM,GAAG,GAAG,KAAK,CAAC,MAAM,CAAC;QACvB,UAAU,EAAE,aAAa;QACzB,QAAQ;QACR,KAAK,EAAE,aAAa,QAAQ,CAAC,KAAK,EAAE;QACpC,OAAO;QACP,QAAQ,EAAE;YACR,MAAM,EAAE,QAAQ,CAAC,MAAM;YACvB,IAAI,EAAE,QAAQ,CAAC,IAAI;YACnB,KAAK,EAAE,WAAW;YAClB,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;SACpC;KACF,CAAC,CAAC;IAEH,sDAAsD;IACtD,MAAM,KAAK,GAAG,GAAG,CAAC,QAAQ,KAAK,QAAQ,CAAC;IAExC,MAAM,CAAC,IAAI,CAAC,kBAAkB,EAAE,EAAE,MAAM,EAAE,QAAQ,CAAC,MAAM,EAAE,KAAK,EAAE,GAAG,CAAC,EAAE,EAAE,KAAK,EAAE,CAAC,CAAC;IAEnF,OAAO;QACL,gBAAgB,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QAC/B,iBAAiB,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;KACjC,CAAC;AACJ,CAAC"}
@@ -0,0 +1,16 @@
1
+ /**
2
+ * Journey Indexer — indexes journey maps (screens, edges, variants) into the knowledge store.
3
+ * Makes journey data discoverable via RAG queries so the AI can use it as context.
4
+ */
5
+ import { KnowledgeStore } from "../store/knowledge-store.js";
6
+ import { JourneyStore } from "../journey/journey-store.js";
7
+ export interface JourneyIndexResult {
8
+ mapsIndexed: number;
9
+ documentsIndexed: number;
10
+ }
11
+ /**
12
+ * Index all journey maps from the database into the knowledge store.
13
+ * Each screen becomes a separate document, plus an overview doc per map.
14
+ */
15
+ export declare function indexJourneyMaps(knowledgeStore: KnowledgeStore, journeyStore: JourneyStore): JourneyIndexResult;
16
+ //# sourceMappingURL=journey-indexer.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"journey-indexer.d.ts","sourceRoot":"","sources":["../../../src/core/rag/journey-indexer.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,cAAc,EAAE,MAAM,6BAA6B,CAAC;AAC7D,OAAO,EAAE,YAAY,EAA6D,MAAM,6BAA6B,CAAC;AAItH,MAAM,WAAW,kBAAkB;IACjC,WAAW,EAAE,MAAM,CAAC;IACpB,gBAAgB,EAAE,MAAM,CAAC;CAC1B;AA0GD;;;GAGG;AACH,wBAAgB,gBAAgB,CAC9B,cAAc,EAAE,cAAc,EAC9B,YAAY,EAAE,YAAY,GACzB,kBAAkB,CA6FpB"}
@@ -0,0 +1,182 @@
1
+ /**
2
+ * Journey Indexer — indexes journey maps (screens, edges, variants) into the knowledge store.
3
+ * Makes journey data discoverable via RAG queries so the AI can use it as context.
4
+ */
5
+ import { chunkText } from "./chunk-text.js";
6
+ import { logger } from "../utils/logger.js";
7
+ /**
8
+ * Format a single screen into a rich text representation for the knowledge store.
9
+ * Includes all contextual data: fields, CTAs, URL, type, connections.
10
+ */
11
+ function formatScreenContent(screen, edges, allScreens) {
12
+ const lines = [];
13
+ lines.push(`# ${screen.title}`);
14
+ lines.push(`Type: ${screen.screenType}`);
15
+ if (screen.url)
16
+ lines.push(`URL: ${screen.url}`);
17
+ if (screen.description)
18
+ lines.push(`\n${screen.description}`);
19
+ // Form fields
20
+ if (screen.fields && screen.fields.length > 0) {
21
+ lines.push(`\n## Form Fields (${screen.fields.length})`);
22
+ for (const field of screen.fields) {
23
+ const req = field.required ? " *required*" : "";
24
+ const opts = field.options ? ` [${field.options.join(", ")}]` : "";
25
+ lines.push(`- ${field.label ?? field.name} (${field.type})${req}${opts}`);
26
+ }
27
+ }
28
+ // CTAs
29
+ if (screen.ctas && screen.ctas.length > 0) {
30
+ lines.push(`\n## CTAs`);
31
+ for (const cta of screen.ctas) {
32
+ lines.push(`- ${cta}`);
33
+ }
34
+ }
35
+ // Outgoing navigations
36
+ const outEdges = edges.filter((e) => e.from === screen.id);
37
+ if (outEdges.length > 0) {
38
+ lines.push(`\n## Navigates To`);
39
+ for (const edge of outEdges) {
40
+ const target = allScreens.get(edge.to);
41
+ const targetName = target ? target.title : edge.to;
42
+ lines.push(`- ${edge.label ?? edge.type} -> ${targetName}`);
43
+ }
44
+ }
45
+ // Incoming navigations
46
+ const inEdges = edges.filter((e) => e.to === screen.id);
47
+ if (inEdges.length > 0) {
48
+ lines.push(`\n## Reached From`);
49
+ for (const edge of inEdges) {
50
+ const source = allScreens.get(edge.from);
51
+ const sourceName = source ? source.title : edge.from;
52
+ lines.push(`- ${sourceName} via ${edge.label ?? edge.type}`);
53
+ }
54
+ }
55
+ // Metadata
56
+ if (screen.metadata && Object.keys(screen.metadata).length > 0) {
57
+ lines.push(`\n## Metadata`);
58
+ for (const [key, value] of Object.entries(screen.metadata)) {
59
+ lines.push(`- ${key}: ${JSON.stringify(value)}`);
60
+ }
61
+ }
62
+ return lines.join("\n");
63
+ }
64
+ /**
65
+ * Format the full journey map overview (summary of all screens and flows).
66
+ */
67
+ function formatMapOverview(map) {
68
+ const lines = [];
69
+ lines.push(`# Journey Map: ${map.name}`);
70
+ if (map.url)
71
+ lines.push(`Site: ${map.url}`);
72
+ if (map.description)
73
+ lines.push(`\n${map.description}`);
74
+ lines.push(`\n## Screens (${map.screens.length})`);
75
+ for (const screen of map.screens) {
76
+ const fieldCount = screen.fields?.length ?? 0;
77
+ const ctaCount = screen.ctas?.length ?? 0;
78
+ lines.push(`- ${screen.title} [${screen.screenType}]${fieldCount > 0 ? ` ${fieldCount} fields` : ""}${ctaCount > 0 ? ` ${ctaCount} CTAs` : ""}`);
79
+ }
80
+ lines.push(`\n## User Flows (${map.edges.length} connections)`);
81
+ const screenMap = new Map(map.screens.map((s) => [s.id, s]));
82
+ for (const edge of map.edges) {
83
+ const from = screenMap.get(edge.from);
84
+ const to = screenMap.get(edge.to);
85
+ lines.push(`- ${from?.title ?? edge.from} -> ${to?.title ?? edge.to}: ${edge.label ?? edge.type}`);
86
+ }
87
+ if (map.variants.length > 0) {
88
+ lines.push(`\n## A/B Variants (${map.variants.length})`);
89
+ for (const variant of map.variants) {
90
+ const pathNames = variant.path.map((id) => screenMap.get(id)?.title ?? id);
91
+ lines.push(`- ${variant.name}: ${pathNames.join(" -> ")}`);
92
+ if (variant.description)
93
+ lines.push(` ${variant.description}`);
94
+ }
95
+ }
96
+ return lines.join("\n");
97
+ }
98
+ /**
99
+ * Index all journey maps from the database into the knowledge store.
100
+ * Each screen becomes a separate document, plus an overview doc per map.
101
+ */
102
+ export function indexJourneyMaps(knowledgeStore, journeyStore) {
103
+ const maps = journeyStore.listMaps();
104
+ if (maps.length === 0) {
105
+ logger.info("No journey maps to index");
106
+ return { mapsIndexed: 0, documentsIndexed: 0 };
107
+ }
108
+ // Clean previous journey knowledge — delete each map's documents
109
+ for (const mapSummary of maps) {
110
+ knowledgeStore.deleteBySource("journey", `journey:map:${mapSummary.id}`);
111
+ const map = journeyStore.getMap(mapSummary.id);
112
+ if (map) {
113
+ for (const screen of map.screens) {
114
+ knowledgeStore.deleteBySource("journey", `journey:screen:${screen.id}`);
115
+ }
116
+ }
117
+ }
118
+ let totalDocs = 0;
119
+ for (const mapSummary of maps) {
120
+ const map = journeyStore.getMap(mapSummary.id);
121
+ if (!map)
122
+ continue;
123
+ const screenMap = new Map(map.screens.map((s) => [s.id, s]));
124
+ // 1. Index the map overview
125
+ const overviewContent = formatMapOverview(map);
126
+ const overviewChunks = chunkText(overviewContent);
127
+ const overviewSourceId = `journey:map:${map.id}`;
128
+ knowledgeStore.insertChunks(overviewChunks.map((chunk) => ({
129
+ sourceType: "journey",
130
+ sourceId: overviewSourceId,
131
+ title: overviewChunks.length > 1
132
+ ? `Journey: ${map.name} [overview ${chunk.index + 1}/${overviewChunks.length}]`
133
+ : `Journey: ${map.name} [overview]`,
134
+ content: chunk.content,
135
+ chunkIndex: chunk.index,
136
+ metadata: {
137
+ mapId: map.id,
138
+ mapName: map.name,
139
+ url: map.url,
140
+ screenCount: map.screens.length,
141
+ edgeCount: map.edges.length,
142
+ variantCount: map.variants.length,
143
+ docType: "overview",
144
+ },
145
+ })));
146
+ totalDocs += overviewChunks.length;
147
+ // 2. Index each screen individually
148
+ for (const screen of map.screens) {
149
+ const screenContent = formatScreenContent(screen, map.edges, screenMap);
150
+ const screenChunks = chunkText(screenContent);
151
+ const screenSourceId = `journey:screen:${screen.id}`;
152
+ knowledgeStore.insertChunks(screenChunks.map((chunk) => ({
153
+ sourceType: "journey",
154
+ sourceId: screenSourceId,
155
+ title: screenChunks.length > 1
156
+ ? `Journey: ${map.name} > ${screen.title} [${chunk.index + 1}/${screenChunks.length}]`
157
+ : `Journey: ${map.name} > ${screen.title}`,
158
+ content: chunk.content,
159
+ chunkIndex: chunk.index,
160
+ metadata: {
161
+ mapId: map.id,
162
+ mapName: map.name,
163
+ screenId: screen.id,
164
+ screenType: screen.screenType,
165
+ url: screen.url,
166
+ fieldCount: screen.fields?.length ?? 0,
167
+ ctaCount: screen.ctas?.length ?? 0,
168
+ docType: "screen",
169
+ },
170
+ })));
171
+ totalDocs += screenChunks.length;
172
+ }
173
+ logger.info("Journey map indexed", {
174
+ mapId: map.id,
175
+ name: map.name,
176
+ screens: map.screens.length,
177
+ documents: totalDocs,
178
+ });
179
+ }
180
+ return { mapsIndexed: maps.length, documentsIndexed: totalDocs };
181
+ }
182
+ //# sourceMappingURL=journey-indexer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"journey-indexer.js","sourceRoot":"","sources":["../../../src/core/rag/journey-indexer.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,15 @@
1
+ /**
2
+ * Knowledge Feedback — applies user/AI feedback to adjust quality scores.
3
+ *
4
+ * Actions:
5
+ * - helpful: +0.05 quality (cap 1.0)
6
+ * - unhelpful: -0.1 quality (floor 0.1)
7
+ * - outdated: set staleness_days = 999
8
+ */
9
+ import type Database from "better-sqlite3";
10
+ /**
11
+ * Apply feedback to a knowledge document.
12
+ * Records usage and adjusts quality_score accordingly.
13
+ */
14
+ export declare function applyFeedback(db: Database.Database, docId: string, query: string, action: "helpful" | "unhelpful" | "outdated", context?: Record<string, unknown>): void;
15
+ //# sourceMappingURL=knowledge-feedback.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"knowledge-feedback.d.ts","sourceRoot":"","sources":["../../../src/core/rag/knowledge-feedback.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,KAAK,QAAQ,MAAM,gBAAgB,CAAC;AAS3C;;;GAGG;AACH,wBAAgB,aAAa,CAC3B,EAAE,EAAE,QAAQ,CAAC,QAAQ,EACrB,KAAK,EAAE,MAAM,EACb,KAAK,EAAE,MAAM,EACb,MAAM,EAAE,SAAS,GAAG,WAAW,GAAG,UAAU,EAC5C,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAChC,IAAI,CAgCN"}
@@ -0,0 +1,46 @@
1
+ /**
2
+ * Knowledge Feedback — applies user/AI feedback to adjust quality scores.
3
+ *
4
+ * Actions:
5
+ * - helpful: +0.05 quality (cap 1.0)
6
+ * - unhelpful: -0.1 quality (floor 0.1)
7
+ * - outdated: set staleness_days = 999
8
+ */
9
+ import { recordUsage } from "./knowledge-quality.js";
10
+ import { logger } from "../utils/logger.js";
11
+ const HELPFUL_BOOST = 0.05;
12
+ const UNHELPFUL_PENALTY = 0.1;
13
+ const QUALITY_MAX = 1.0;
14
+ const QUALITY_MIN = 0.1;
15
+ /**
16
+ * Apply feedback to a knowledge document.
17
+ * Records usage and adjusts quality_score accordingly.
18
+ */
19
+ export function applyFeedback(db, docId, query, action, context) {
20
+ // Record the usage event
21
+ recordUsage(db, docId, query, action, context);
22
+ // Get current quality score
23
+ const row = db
24
+ .prepare("SELECT quality_score FROM knowledge_documents WHERE id = ?")
25
+ .get(docId);
26
+ if (!row) {
27
+ logger.warn("Feedback for unknown doc", { docId, action });
28
+ return;
29
+ }
30
+ let newScore = row.quality_score;
31
+ switch (action) {
32
+ case "helpful":
33
+ newScore = Math.min(QUALITY_MAX, newScore + HELPFUL_BOOST);
34
+ break;
35
+ case "unhelpful":
36
+ newScore = Math.max(QUALITY_MIN, newScore - UNHELPFUL_PENALTY);
37
+ break;
38
+ case "outdated":
39
+ db.prepare("UPDATE knowledge_documents SET staleness_days = 999 WHERE id = ?").run(docId);
40
+ newScore = Math.max(QUALITY_MIN, newScore - UNHELPFUL_PENALTY);
41
+ break;
42
+ }
43
+ db.prepare("UPDATE knowledge_documents SET quality_score = ? WHERE id = ?").run(newScore, docId);
44
+ logger.info("Feedback applied", { docId, action, oldScore: row.quality_score, newScore });
45
+ }
46
+ //# sourceMappingURL=knowledge-feedback.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"knowledge-feedback.js","sourceRoot":"","sources":["../../../src/core/rag/knowledge-feedback.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAGH,OAAO,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAC;AACrD,OAAO,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAC;AAE5C,MAAM,aAAa,GAAG,IAAI,CAAC;AAC3B,MAAM,iBAAiB,GAAG,GAAG,CAAC;AAC9B,MAAM,WAAW,GAAG,GAAG,CAAC;AACxB,MAAM,WAAW,GAAG,GAAG,CAAC;AAExB;;;GAGG;AACH,MAAM,UAAU,aAAa,CAC3B,EAAqB,EACrB,KAAa,EACb,KAAa,EACb,MAA4C,EAC5C,OAAiC;IAEjC,yBAAyB;IACzB,WAAW,CAAC,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,OAAO,CAAC,CAAC;IAE/C,4BAA4B;IAC5B,MAAM,GAAG,GAAG,EAAE;SACX,OAAO,CAAC,4DAA4D,CAAC;SACrE,GAAG,CAAC,KAAK,CAA0C,CAAC;IAEvD,IAAI,CAAC,GAAG,EAAE,CAAC;QACT,MAAM,CAAC,IAAI,CAAC,0BAA0B,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC,CAAC;QAC3D,OAAO;IACT,CAAC;IAED,IAAI,QAAQ,GAAG,GAAG,CAAC,aAAa,CAAC;IAEjC,QAAQ,MAAM,EAAE,CAAC;QACf,KAAK,SAAS;YACZ,QAAQ,GAAG,IAAI,CAAC,GAAG,CAAC,WAAW,EAAE,QAAQ,GAAG,aAAa,CAAC,CAAC;YAC3D,MAAM;QACR,KAAK,WAAW;YACd,QAAQ,GAAG,IAAI,CAAC,GAAG,CAAC,WAAW,EAAE,QAAQ,GAAG,iBAAiB,CAAC,CAAC;YAC/D,MAAM;QACR,KAAK,UAAU;YACb,EAAE,CAAC,OAAO,CAAC,kEAAkE,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;YAC1F,QAAQ,GAAG,IAAI,CAAC,GAAG,CAAC,WAAW,EAAE,QAAQ,GAAG,iBAAiB,CAAC,CAAC;YAC/D,MAAM;IACV,CAAC;IAED,EAAE,CAAC,OAAO,CAAC,+DAA+D,CAAC,CAAC,GAAG,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC;IAEjG,MAAM,CAAC,IAAI,CAAC,kBAAkB,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,GAAG,CAAC,aAAa,EAAE,QAAQ,EAAE,CAAC,CAAC;AAC5F,CAAC"}
@@ -0,0 +1,20 @@
1
+ /**
2
+ * Knowledge Linker — creates cross-source relationships between knowledge documents
3
+ * based on shared nodeId, tags, and source_id patterns.
4
+ *
5
+ * v1: Lightweight linking via metadata matching (no embedding similarity).
6
+ */
7
+ import type Database from "better-sqlite3";
8
+ import type { KnowledgeDocument } from "../../schemas/knowledge.schema.js";
9
+ /**
10
+ * Link knowledge documents that share context (nodeId, tags, source patterns).
11
+ */
12
+ export declare function linkBySharedContext(db: Database.Database): {
13
+ relationsCreated: number;
14
+ };
15
+ /**
16
+ * Find documents related to a given doc via knowledge_relations.
17
+ * Returns docs from different source types for cross-referencing.
18
+ */
19
+ export declare function findCrossSourceContext(db: Database.Database, docId: string, limit?: number): KnowledgeDocument[];
20
+ //# sourceMappingURL=knowledge-linker.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"knowledge-linker.d.ts","sourceRoot":"","sources":["../../../src/core/rag/knowledge-linker.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,QAAQ,MAAM,gBAAgB,CAAC;AAC3C,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,mCAAmC,CAAC;AAY3E;;GAEG;AACH,wBAAgB,mBAAmB,CAAC,EAAE,EAAE,QAAQ,CAAC,QAAQ,GAAG;IAAE,gBAAgB,EAAE,MAAM,CAAA;CAAE,CAoFvF;AAED;;;GAGG;AACH,wBAAgB,sBAAsB,CACpC,EAAE,EAAE,QAAQ,CAAC,QAAQ,EACrB,KAAK,EAAE,MAAM,EACb,KAAK,GAAE,MAAW,GACjB,iBAAiB,EAAE,CAqCrB"}