@mcp-graph-workflow/mcp-graph 5.5.3 → 5.6.1

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 (237) 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/code-graph.d.ts.map +1 -1
  5. package/dist/api/routes/code-graph.js +4 -1
  6. package/dist/api/routes/code-graph.js.map +1 -1
  7. package/dist/api/routes/journey.d.ts +4 -0
  8. package/dist/api/routes/journey.d.ts.map +1 -0
  9. package/dist/api/routes/journey.js +263 -0
  10. package/dist/api/routes/journey.js.map +1 -0
  11. package/dist/api/routes/siebel.d.ts +7 -0
  12. package/dist/api/routes/siebel.d.ts.map +1 -0
  13. package/dist/api/routes/siebel.js +305 -0
  14. package/dist/api/routes/siebel.js.map +1 -0
  15. package/dist/core/code/code-indexer.d.ts.map +1 -1
  16. package/dist/core/code/code-indexer.js +17 -2
  17. package/dist/core/code/code-indexer.js.map +1 -1
  18. package/dist/core/code/code-types.d.ts +1 -0
  19. package/dist/core/code/code-types.d.ts.map +1 -1
  20. package/dist/core/code/code-types.js.map +1 -1
  21. package/dist/core/code/ts-analyzer.d.ts +6 -0
  22. package/dist/core/code/ts-analyzer.d.ts.map +1 -1
  23. package/dist/core/code/ts-analyzer.js +9 -0
  24. package/dist/core/code/ts-analyzer.js.map +1 -1
  25. package/dist/core/context/rag-context.d.ts.map +1 -1
  26. package/dist/core/context/rag-context.js +21 -5
  27. package/dist/core/context/rag-context.js.map +1 -1
  28. package/dist/core/events/event-types.d.ts +63 -1
  29. package/dist/core/events/event-types.d.ts.map +1 -1
  30. package/dist/core/integrations/integration-orchestrator.d.ts +12 -0
  31. package/dist/core/integrations/integration-orchestrator.d.ts.map +1 -1
  32. package/dist/core/integrations/integration-orchestrator.js +36 -2
  33. package/dist/core/integrations/integration-orchestrator.js.map +1 -1
  34. package/dist/core/journey/journey-store.d.ts +137 -0
  35. package/dist/core/journey/journey-store.d.ts.map +1 -0
  36. package/dist/core/journey/journey-store.js +210 -0
  37. package/dist/core/journey/journey-store.js.map +1 -0
  38. package/dist/core/parser/file-reader.d.ts.map +1 -1
  39. package/dist/core/parser/file-reader.js +16 -1
  40. package/dist/core/parser/file-reader.js.map +1 -1
  41. package/dist/core/parser/read-docx.d.ts +17 -0
  42. package/dist/core/parser/read-docx.d.ts.map +1 -0
  43. package/dist/core/parser/read-docx.js +79 -0
  44. package/dist/core/parser/read-docx.js.map +1 -0
  45. package/dist/core/parser/read-swagger.d.ts +49 -0
  46. package/dist/core/parser/read-swagger.d.ts.map +1 -0
  47. package/dist/core/parser/read-swagger.js +332 -0
  48. package/dist/core/parser/read-swagger.js.map +1 -0
  49. package/dist/core/rag/chunk-text.d.ts +5 -0
  50. package/dist/core/rag/chunk-text.d.ts.map +1 -1
  51. package/dist/core/rag/chunk-text.js +135 -0
  52. package/dist/core/rag/chunk-text.js.map +1 -1
  53. package/dist/core/rag/code-context-indexer.d.ts +27 -0
  54. package/dist/core/rag/code-context-indexer.d.ts.map +1 -0
  55. package/dist/core/rag/code-context-indexer.js +53 -0
  56. package/dist/core/rag/code-context-indexer.js.map +1 -0
  57. package/dist/core/rag/decision-indexer.d.ts +20 -0
  58. package/dist/core/rag/decision-indexer.d.ts.map +1 -0
  59. package/dist/core/rag/decision-indexer.js +32 -0
  60. package/dist/core/rag/decision-indexer.js.map +1 -0
  61. package/dist/core/rag/journey-indexer.d.ts +16 -0
  62. package/dist/core/rag/journey-indexer.d.ts.map +1 -0
  63. package/dist/core/rag/journey-indexer.js +182 -0
  64. package/dist/core/rag/journey-indexer.js.map +1 -0
  65. package/dist/core/rag/knowledge-feedback.d.ts +15 -0
  66. package/dist/core/rag/knowledge-feedback.d.ts.map +1 -0
  67. package/dist/core/rag/knowledge-feedback.js +46 -0
  68. package/dist/core/rag/knowledge-feedback.js.map +1 -0
  69. package/dist/core/rag/knowledge-linker.d.ts +20 -0
  70. package/dist/core/rag/knowledge-linker.d.ts.map +1 -0
  71. package/dist/core/rag/knowledge-linker.js +107 -0
  72. package/dist/core/rag/knowledge-linker.js.map +1 -0
  73. package/dist/core/rag/knowledge-quality.d.ts +31 -0
  74. package/dist/core/rag/knowledge-quality.d.ts.map +1 -0
  75. package/dist/core/rag/knowledge-quality.js +127 -0
  76. package/dist/core/rag/knowledge-quality.js.map +1 -0
  77. package/dist/core/rag/knowledge-synthesizer.d.ts +17 -0
  78. package/dist/core/rag/knowledge-synthesizer.d.ts.map +1 -0
  79. package/dist/core/rag/knowledge-synthesizer.js +115 -0
  80. package/dist/core/rag/knowledge-synthesizer.js.map +1 -0
  81. package/dist/core/rag/memory-rag-query.d.ts +3 -3
  82. package/dist/core/rag/memory-rag-query.d.ts.map +1 -1
  83. package/dist/core/rag/memory-rag-query.js +18 -0
  84. package/dist/core/rag/memory-rag-query.js.map +1 -1
  85. package/dist/core/rag/multi-strategy-retrieval.d.ts +46 -0
  86. package/dist/core/rag/multi-strategy-retrieval.d.ts.map +1 -0
  87. package/dist/core/rag/multi-strategy-retrieval.js +140 -0
  88. package/dist/core/rag/multi-strategy-retrieval.js.map +1 -0
  89. package/dist/core/rag/rag-pipeline.d.ts +11 -0
  90. package/dist/core/rag/rag-pipeline.d.ts.map +1 -1
  91. package/dist/core/rag/rag-pipeline.js +39 -0
  92. package/dist/core/rag/rag-pipeline.js.map +1 -1
  93. package/dist/core/rag/siebel-indexer.d.ts +16 -0
  94. package/dist/core/rag/siebel-indexer.d.ts.map +1 -0
  95. package/dist/core/rag/siebel-indexer.js +75 -0
  96. package/dist/core/rag/siebel-indexer.js.map +1 -0
  97. package/dist/core/rag/swagger-indexer.d.ts +16 -0
  98. package/dist/core/rag/swagger-indexer.d.ts.map +1 -0
  99. package/dist/core/rag/swagger-indexer.js +119 -0
  100. package/dist/core/rag/swagger-indexer.js.map +1 -0
  101. package/dist/core/rag/validation-indexer.d.ts +23 -0
  102. package/dist/core/rag/validation-indexer.d.ts.map +1 -0
  103. package/dist/core/rag/validation-indexer.js +35 -0
  104. package/dist/core/rag/validation-indexer.js.map +1 -0
  105. package/dist/core/siebel/composer-automation.d.ts +77 -0
  106. package/dist/core/siebel/composer-automation.d.ts.map +1 -0
  107. package/dist/core/siebel/composer-automation.js +110 -0
  108. package/dist/core/siebel/composer-automation.js.map +1 -0
  109. package/dist/core/siebel/dependency-analyzer.d.ts +24 -0
  110. package/dist/core/siebel/dependency-analyzer.d.ts.map +1 -0
  111. package/dist/core/siebel/dependency-analyzer.js +174 -0
  112. package/dist/core/siebel/dependency-analyzer.js.map +1 -0
  113. package/dist/core/siebel/siebel-config.d.ts +28 -0
  114. package/dist/core/siebel/siebel-config.d.ts.map +1 -0
  115. package/dist/core/siebel/siebel-config.js +86 -0
  116. package/dist/core/siebel/siebel-config.js.map +1 -0
  117. package/dist/core/siebel/sif-context-assembler.d.ts +37 -0
  118. package/dist/core/siebel/sif-context-assembler.d.ts.map +1 -0
  119. package/dist/core/siebel/sif-context-assembler.js +259 -0
  120. package/dist/core/siebel/sif-context-assembler.js.map +1 -0
  121. package/dist/core/siebel/sif-generator.d.ts +26 -0
  122. package/dist/core/siebel/sif-generator.d.ts.map +1 -0
  123. package/dist/core/siebel/sif-generator.js +232 -0
  124. package/dist/core/siebel/sif-generator.js.map +1 -0
  125. package/dist/core/siebel/sif-parser.d.ts +16 -0
  126. package/dist/core/siebel/sif-parser.d.ts.map +1 -0
  127. package/dist/core/siebel/sif-parser.js +355 -0
  128. package/dist/core/siebel/sif-parser.js.map +1 -0
  129. package/dist/core/siebel/sif-templates.d.ts +45 -0
  130. package/dist/core/siebel/sif-templates.d.ts.map +1 -0
  131. package/dist/core/siebel/sif-templates.js +179 -0
  132. package/dist/core/siebel/sif-templates.js.map +1 -0
  133. package/dist/core/siebel/sif-to-graph.d.ts +20 -0
  134. package/dist/core/siebel/sif-to-graph.d.ts.map +1 -0
  135. package/dist/core/siebel/sif-to-graph.js +176 -0
  136. package/dist/core/siebel/sif-to-graph.js.map +1 -0
  137. package/dist/core/store/knowledge-store.d.ts +25 -0
  138. package/dist/core/store/knowledge-store.d.ts.map +1 -1
  139. package/dist/core/store/knowledge-store.js +72 -0
  140. package/dist/core/store/knowledge-store.js.map +1 -1
  141. package/dist/core/store/migrations.d.ts.map +1 -1
  142. package/dist/core/store/migrations.js +96 -0
  143. package/dist/core/store/migrations.js.map +1 -1
  144. package/dist/mcp/tools/index.d.ts.map +1 -1
  145. package/dist/mcp/tools/index.js +26 -0
  146. package/dist/mcp/tools/index.js.map +1 -1
  147. package/dist/mcp/tools/journey.d.ts +4 -0
  148. package/dist/mcp/tools/journey.d.ts.map +1 -0
  149. package/dist/mcp/tools/journey.js +154 -0
  150. package/dist/mcp/tools/journey.js.map +1 -0
  151. package/dist/mcp/tools/knowledge-feedback.d.ts +8 -0
  152. package/dist/mcp/tools/knowledge-feedback.d.ts.map +1 -0
  153. package/dist/mcp/tools/knowledge-feedback.js +35 -0
  154. package/dist/mcp/tools/knowledge-feedback.js.map +1 -0
  155. package/dist/mcp/tools/knowledge-stats.d.ts +9 -0
  156. package/dist/mcp/tools/knowledge-stats.d.ts.map +1 -0
  157. package/dist/mcp/tools/knowledge-stats.js +83 -0
  158. package/dist/mcp/tools/knowledge-stats.js.map +1 -0
  159. package/dist/mcp/tools/plan-sprint.d.ts.map +1 -1
  160. package/dist/mcp/tools/plan-sprint.js +7 -1
  161. package/dist/mcp/tools/plan-sprint.js.map +1 -1
  162. package/dist/mcp/tools/rag-context.d.ts.map +1 -1
  163. package/dist/mcp/tools/rag-context.js +43 -2
  164. package/dist/mcp/tools/rag-context.js.map +1 -1
  165. package/dist/mcp/tools/reindex-knowledge.d.ts.map +1 -1
  166. package/dist/mcp/tools/reindex-knowledge.js +23 -2
  167. package/dist/mcp/tools/reindex-knowledge.js.map +1 -1
  168. package/dist/mcp/tools/siebel-analyze.d.ts +8 -0
  169. package/dist/mcp/tools/siebel-analyze.d.ts.map +1 -0
  170. package/dist/mcp/tools/siebel-analyze.js +107 -0
  171. package/dist/mcp/tools/siebel-analyze.js.map +1 -0
  172. package/dist/mcp/tools/siebel-composer.d.ts +12 -0
  173. package/dist/mcp/tools/siebel-composer.d.ts.map +1 -0
  174. package/dist/mcp/tools/siebel-composer.js +59 -0
  175. package/dist/mcp/tools/siebel-composer.js.map +1 -0
  176. package/dist/mcp/tools/siebel-env.d.ts +8 -0
  177. package/dist/mcp/tools/siebel-env.d.ts.map +1 -0
  178. package/dist/mcp/tools/siebel-env.js +60 -0
  179. package/dist/mcp/tools/siebel-env.js.map +1 -0
  180. package/dist/mcp/tools/siebel-generate-sif.d.ts +8 -0
  181. package/dist/mcp/tools/siebel-generate-sif.d.ts.map +1 -0
  182. package/dist/mcp/tools/siebel-generate-sif.js +91 -0
  183. package/dist/mcp/tools/siebel-generate-sif.js.map +1 -0
  184. package/dist/mcp/tools/siebel-import-docs.d.ts +9 -0
  185. package/dist/mcp/tools/siebel-import-docs.d.ts.map +1 -0
  186. package/dist/mcp/tools/siebel-import-docs.js +106 -0
  187. package/dist/mcp/tools/siebel-import-docs.js.map +1 -0
  188. package/dist/mcp/tools/siebel-import-sif.d.ts +8 -0
  189. package/dist/mcp/tools/siebel-import-sif.d.ts.map +1 -0
  190. package/dist/mcp/tools/siebel-import-sif.js +68 -0
  191. package/dist/mcp/tools/siebel-import-sif.js.map +1 -0
  192. package/dist/mcp/tools/siebel-search.d.ts +8 -0
  193. package/dist/mcp/tools/siebel-search.d.ts.map +1 -0
  194. package/dist/mcp/tools/siebel-search.js +47 -0
  195. package/dist/mcp/tools/siebel-search.js.map +1 -0
  196. package/dist/mcp/tools/siebel-validate.d.ts +8 -0
  197. package/dist/mcp/tools/siebel-validate.d.ts.map +1 -0
  198. package/dist/mcp/tools/siebel-validate.js +107 -0
  199. package/dist/mcp/tools/siebel-validate.js.map +1 -0
  200. package/dist/mcp/tools/update-status.d.ts.map +1 -1
  201. package/dist/mcp/tools/update-status.js +22 -1
  202. package/dist/mcp/tools/update-status.js.map +1 -1
  203. package/dist/mcp/tools/validate.d.ts.map +1 -1
  204. package/dist/mcp/tools/validate.js +21 -0
  205. package/dist/mcp/tools/validate.js.map +1 -1
  206. package/dist/schemas/knowledge.schema.d.ts +66 -0
  207. package/dist/schemas/knowledge.schema.d.ts.map +1 -1
  208. package/dist/schemas/knowledge.schema.js +28 -0
  209. package/dist/schemas/knowledge.schema.js.map +1 -1
  210. package/dist/schemas/siebel.schema.d.ts +564 -0
  211. package/dist/schemas/siebel.schema.d.ts.map +1 -0
  212. package/dist/schemas/siebel.schema.js +197 -0
  213. package/dist/schemas/siebel.schema.js.map +1 -0
  214. package/dist/web/dashboard/dist/assets/{benchmark-tab-C5fwIqgM.js → benchmark-tab-BoMsoQjO.js} +1 -1
  215. package/dist/web/dashboard/dist/assets/{context-tab-ChCyrRlr.js → context-tab-BLT4qQ77.js} +1 -1
  216. package/dist/web/dashboard/dist/assets/{gitnexus-tab-DnlGT63w.js → gitnexus-tab-DDw7DUED.js} +4 -4
  217. package/dist/web/dashboard/dist/assets/graph-tab-DG9Q6nko.js +1 -0
  218. package/dist/web/dashboard/dist/assets/graph-utils-BpYHKE87.js +1 -0
  219. package/dist/web/dashboard/dist/assets/index-Cu23WCcu.css +1 -0
  220. package/dist/web/dashboard/dist/assets/index-DtkPX5ZZ.js +55 -0
  221. package/dist/web/dashboard/dist/assets/{index-DlZhNCGR.js → index-F9dY4AG_.js} +1 -1
  222. package/dist/web/dashboard/dist/assets/{insights-tab-Cj4f85vS.js → insights-tab-YN7G6mjm.js} +1 -1
  223. package/dist/web/dashboard/dist/assets/journey-tab-BcweuR82.js +1 -0
  224. package/dist/web/dashboard/dist/assets/{logs-tab-C4C2Vn8-.js → logs-tab-BjdAURdy.js} +1 -1
  225. package/dist/web/dashboard/dist/assets/{memories-tab-NtNwoxbT.js → memories-tab-CQ2xM2aw.js} +1 -1
  226. package/dist/web/dashboard/dist/assets/prd-backlog-tab-CIeCpE1a.js +1 -0
  227. package/dist/web/dashboard/dist/assets/siebel-tab-bj5CT4-Z.js +3 -0
  228. package/dist/web/dashboard/dist/assets/{skills-tab-CIj4z1Ol.js → skills-tab-Bgk72mKO.js} +1 -1
  229. package/dist/web/dashboard/dist/assets/style-Da3qWU01.js +7 -0
  230. package/dist/web/dashboard/dist/index.html +2 -2
  231. package/package.json +15 -3
  232. package/dist/web/dashboard/dist/assets/graph-tab-DjV9RD41.js +0 -1
  233. package/dist/web/dashboard/dist/assets/graph-utils-C6bvcT4d.js +0 -7
  234. package/dist/web/dashboard/dist/assets/index-DQqYFXms.css +0 -1
  235. package/dist/web/dashboard/dist/assets/index-dCyMex_p.js +0 -53
  236. package/dist/web/dashboard/dist/assets/prd-backlog-tab-Bxt7qiVG.js +0 -1
  237. /package/dist/web/dashboard/dist/assets/{graph-utils-BZV40eAE.css → style-BZV40eAE.css} +0 -0
@@ -0,0 +1,24 @@
1
+ /**
2
+ * Siebel Dependency Analyzer — impact analysis, dependency chains, and circular dep detection.
3
+ */
4
+ import type { SiebelDependency, SiebelObjectRef, SiebelImpactResult } from "../../schemas/siebel.schema.js";
5
+ export interface DependencyPath {
6
+ path: SiebelObjectRef[];
7
+ }
8
+ export interface CircularDep {
9
+ cycle: SiebelObjectRef[];
10
+ }
11
+ /**
12
+ * Analyze blast radius of modifying a Siebel object.
13
+ * Finds all direct and transitive dependents.
14
+ */
15
+ export declare function analyzeSiebelImpact(dependencies: SiebelDependency[], target: SiebelObjectRef): SiebelImpactResult;
16
+ /**
17
+ * Find dependency chain(s) from one object to another.
18
+ */
19
+ export declare function findDependencyChain(dependencies: SiebelDependency[], from: SiebelObjectRef, to: SiebelObjectRef): DependencyPath[];
20
+ /**
21
+ * Detect circular dependencies in the dependency graph.
22
+ */
23
+ export declare function detectCircularDeps(dependencies: SiebelDependency[]): CircularDep[];
24
+ //# sourceMappingURL=dependency-analyzer.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"dependency-analyzer.d.ts","sourceRoot":"","sources":["../../../src/core/siebel/dependency-analyzer.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EACV,gBAAgB,EAChB,eAAe,EACf,kBAAkB,EACnB,MAAM,gCAAgC,CAAC;AAGxC,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,eAAe,EAAE,CAAC;CACzB;AAED,MAAM,WAAW,WAAW;IAC1B,KAAK,EAAE,eAAe,EAAE,CAAC;CAC1B;AAED;;;GAGG;AACH,wBAAgB,mBAAmB,CACjC,YAAY,EAAE,gBAAgB,EAAE,EAChC,MAAM,EAAE,eAAe,GACtB,kBAAkB,CA+DpB;AAED;;GAEG;AACH,wBAAgB,mBAAmB,CACjC,YAAY,EAAE,gBAAgB,EAAE,EAChC,IAAI,EAAE,eAAe,EACrB,EAAE,EAAE,eAAe,GAClB,cAAc,EAAE,CAqClB;AAED;;GAEG;AACH,wBAAgB,kBAAkB,CAAC,YAAY,EAAE,gBAAgB,EAAE,GAAG,WAAW,EAAE,CAmDlF"}
@@ -0,0 +1,174 @@
1
+ /**
2
+ * Siebel Dependency Analyzer — impact analysis, dependency chains, and circular dep detection.
3
+ */
4
+ import { logger } from "../utils/logger.js";
5
+ /**
6
+ * Analyze blast radius of modifying a Siebel object.
7
+ * Finds all direct and transitive dependents.
8
+ */
9
+ export function analyzeSiebelImpact(dependencies, target) {
10
+ const targetKey = refKey(target);
11
+ // Build reverse adjacency: target → objects that depend ON target
12
+ const reverseDeps = new Map();
13
+ for (const dep of dependencies) {
14
+ const toKey = refKey(dep.to);
15
+ if (!reverseDeps.has(toKey)) {
16
+ reverseDeps.set(toKey, []);
17
+ }
18
+ const arr = reverseDeps.get(toKey);
19
+ if (arr)
20
+ arr.push(dep.from);
21
+ }
22
+ // BFS for direct dependents
23
+ const directDependents = reverseDeps.get(targetKey) ?? [];
24
+ // BFS for transitive dependents
25
+ const visited = new Set([targetKey]);
26
+ const allDependents = [];
27
+ const queue = [...directDependents];
28
+ for (const dep of directDependents) {
29
+ visited.add(refKey(dep));
30
+ }
31
+ while (queue.length > 0) {
32
+ const current = queue.shift();
33
+ if (!current)
34
+ continue;
35
+ allDependents.push(current);
36
+ const currentKey = refKey(current);
37
+ const nextDeps = reverseDeps.get(currentKey) ?? [];
38
+ for (const next of nextDeps) {
39
+ const nextKey = refKey(next);
40
+ if (!visited.has(nextKey)) {
41
+ visited.add(nextKey);
42
+ queue.push(next);
43
+ }
44
+ }
45
+ }
46
+ // Transitive = all minus direct
47
+ const directKeys = new Set(directDependents.map(refKey));
48
+ const transitiveDependents = allDependents.filter((d) => !directKeys.has(refKey(d)));
49
+ const totalAffected = allDependents.length;
50
+ const riskLevel = calculateRisk(totalAffected);
51
+ logger.debug("Siebel impact analysis", {
52
+ target: targetKey,
53
+ direct: String(directDependents.length),
54
+ transitive: String(transitiveDependents.length),
55
+ risk: riskLevel,
56
+ });
57
+ return {
58
+ targetObject: target,
59
+ directDependents: deduplicateRefs(directDependents),
60
+ transitiveDependents: deduplicateRefs(transitiveDependents),
61
+ totalAffected,
62
+ riskLevel,
63
+ };
64
+ }
65
+ /**
66
+ * Find dependency chain(s) from one object to another.
67
+ */
68
+ export function findDependencyChain(dependencies, from, to) {
69
+ // Build forward adjacency: from → to
70
+ const forwardDeps = new Map();
71
+ for (const dep of dependencies) {
72
+ const fromKey = refKey(dep.from);
73
+ if (!forwardDeps.has(fromKey)) {
74
+ forwardDeps.set(fromKey, []);
75
+ }
76
+ const fArr = forwardDeps.get(fromKey);
77
+ if (fArr)
78
+ fArr.push(dep.to);
79
+ }
80
+ const targetKey = refKey(to);
81
+ const paths = [];
82
+ // DFS to find all paths
83
+ function dfs(current, path, visited) {
84
+ if (refKey(current) === targetKey) {
85
+ paths.push({ path: [...path, current] });
86
+ return;
87
+ }
88
+ const neighbors = forwardDeps.get(refKey(current)) ?? [];
89
+ for (const neighbor of neighbors) {
90
+ const nKey = refKey(neighbor);
91
+ if (!visited.has(nKey)) {
92
+ visited.add(nKey);
93
+ dfs(neighbor, [...path, current], visited);
94
+ visited.delete(nKey);
95
+ }
96
+ }
97
+ }
98
+ const visited = new Set([refKey(from)]);
99
+ dfs(from, [], visited);
100
+ return paths;
101
+ }
102
+ /**
103
+ * Detect circular dependencies in the dependency graph.
104
+ */
105
+ export function detectCircularDeps(dependencies) {
106
+ const forwardDeps = new Map();
107
+ const allRefs = new Map();
108
+ for (const dep of dependencies) {
109
+ const fromKey = refKey(dep.from);
110
+ if (!forwardDeps.has(fromKey)) {
111
+ forwardDeps.set(fromKey, []);
112
+ }
113
+ const cArr = forwardDeps.get(fromKey);
114
+ if (cArr)
115
+ cArr.push(dep.to);
116
+ allRefs.set(fromKey, dep.from);
117
+ allRefs.set(refKey(dep.to), dep.to);
118
+ }
119
+ const cycles = [];
120
+ const visited = new Set();
121
+ const inStack = new Set();
122
+ function dfs(nodeKey, path) {
123
+ if (inStack.has(nodeKey)) {
124
+ // Found a cycle — extract it
125
+ const cycleStart = path.indexOf(nodeKey);
126
+ if (cycleStart !== -1) {
127
+ const cyclePath = path.slice(cycleStart).map((k) => allRefs.get(k)).filter((r) => r !== undefined);
128
+ cycles.push({ cycle: cyclePath });
129
+ }
130
+ return;
131
+ }
132
+ if (visited.has(nodeKey))
133
+ return;
134
+ visited.add(nodeKey);
135
+ inStack.add(nodeKey);
136
+ path.push(nodeKey);
137
+ const neighbors = forwardDeps.get(nodeKey) ?? [];
138
+ for (const neighbor of neighbors) {
139
+ dfs(refKey(neighbor), [...path]);
140
+ }
141
+ inStack.delete(nodeKey);
142
+ }
143
+ for (const key of allRefs.keys()) {
144
+ if (!visited.has(key)) {
145
+ dfs(key, []);
146
+ }
147
+ }
148
+ return cycles;
149
+ }
150
+ function refKey(ref) {
151
+ return `${ref.type}:${ref.name}`;
152
+ }
153
+ function calculateRisk(affected) {
154
+ if (affected === 0)
155
+ return "low";
156
+ if (affected <= 2)
157
+ return "low";
158
+ if (affected <= 5)
159
+ return "medium";
160
+ if (affected <= 10)
161
+ return "high";
162
+ return "critical";
163
+ }
164
+ function deduplicateRefs(refs) {
165
+ const seen = new Set();
166
+ return refs.filter((r) => {
167
+ const key = refKey(r);
168
+ if (seen.has(key))
169
+ return false;
170
+ seen.add(key);
171
+ return true;
172
+ });
173
+ }
174
+ //# sourceMappingURL=dependency-analyzer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"dependency-analyzer.js","sourceRoot":"","sources":["../../../src/core/siebel/dependency-analyzer.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,28 @@
1
+ /**
2
+ * Siebel Environment Configuration Manager.
3
+ * Persists Siebel environment settings to workflow-graph/siebel-envs.json.
4
+ */
5
+ import type { SiebelEnvironment } from "../../schemas/siebel.schema.js";
6
+ /**
7
+ * Load Siebel environment configurations from disk.
8
+ */
9
+ export declare function loadSiebelConfig(graphDir: string): SiebelEnvironment[];
10
+ /**
11
+ * Save Siebel environment configurations to disk.
12
+ */
13
+ export declare function saveSiebelConfig(graphDir: string, environments: SiebelEnvironment[]): void;
14
+ /**
15
+ * Add a new Siebel environment.
16
+ * @throws ValidationError if name already exists.
17
+ */
18
+ export declare function addEnvironment(graphDir: string, env: SiebelEnvironment): SiebelEnvironment[];
19
+ /**
20
+ * Remove a Siebel environment by name.
21
+ * @throws ValidationError if name not found.
22
+ */
23
+ export declare function removeEnvironment(graphDir: string, name: string): SiebelEnvironment[];
24
+ /**
25
+ * Find an environment by name.
26
+ */
27
+ export declare function findEnvironment(graphDir: string, name: string): SiebelEnvironment | undefined;
28
+ //# sourceMappingURL=siebel-config.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"siebel-config.d.ts","sourceRoot":"","sources":["../../../src/core/siebel/siebel-config.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAOH,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,gCAAgC,CAAC;AASxE;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,QAAQ,EAAE,MAAM,GAAG,iBAAiB,EAAE,CAetE;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,QAAQ,EAAE,MAAM,EAAE,YAAY,EAAE,iBAAiB,EAAE,GAAG,IAAI,CAa1F;AAED;;;GAGG;AACH,wBAAgB,cAAc,CAAC,QAAQ,EAAE,MAAM,EAAE,GAAG,EAAE,iBAAiB,GAAG,iBAAiB,EAAE,CAiB5F;AAED;;;GAGG;AACH,wBAAgB,iBAAiB,CAAC,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,iBAAiB,EAAE,CAerF;AAED;;GAEG;AACH,wBAAgB,eAAe,CAAC,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,iBAAiB,GAAG,SAAS,CAG7F"}
@@ -0,0 +1,86 @@
1
+ /**
2
+ * Siebel Environment Configuration Manager.
3
+ * Persists Siebel environment settings to workflow-graph/siebel-envs.json.
4
+ */
5
+ import { readFileSync, writeFileSync, existsSync, mkdirSync } from "node:fs";
6
+ import { join } from "node:path";
7
+ import { logger } from "../utils/logger.js";
8
+ import { ValidationError } from "../utils/errors.js";
9
+ import { SiebelEnvironmentSchema } from "../../schemas/siebel.schema.js";
10
+ const CONFIG_FILE = "siebel-envs.json";
11
+ /**
12
+ * Load Siebel environment configurations from disk.
13
+ */
14
+ export function loadSiebelConfig(graphDir) {
15
+ const filePath = join(graphDir, CONFIG_FILE);
16
+ if (!existsSync(filePath)) {
17
+ return [];
18
+ }
19
+ try {
20
+ const raw = readFileSync(filePath, "utf-8");
21
+ const data = JSON.parse(raw);
22
+ return data.environments ?? [];
23
+ }
24
+ catch (err) {
25
+ logger.warn("Failed to load Siebel config", { path: filePath, error: String(err) });
26
+ return [];
27
+ }
28
+ }
29
+ /**
30
+ * Save Siebel environment configurations to disk.
31
+ */
32
+ export function saveSiebelConfig(graphDir, environments) {
33
+ if (!existsSync(graphDir)) {
34
+ mkdirSync(graphDir, { recursive: true });
35
+ }
36
+ const filePath = join(graphDir, CONFIG_FILE);
37
+ const config = {
38
+ version: "1.0",
39
+ environments,
40
+ };
41
+ writeFileSync(filePath, JSON.stringify(config, null, 2), "utf-8");
42
+ logger.info("Siebel config saved", { path: filePath, envCount: String(environments.length) });
43
+ }
44
+ /**
45
+ * Add a new Siebel environment.
46
+ * @throws ValidationError if name already exists.
47
+ */
48
+ export function addEnvironment(graphDir, env) {
49
+ // Validate schema
50
+ SiebelEnvironmentSchema.parse(env);
51
+ const environments = loadSiebelConfig(graphDir);
52
+ if (environments.some((e) => e.name === env.name)) {
53
+ throw new ValidationError(`Environment "${env.name}" already exists`, [
54
+ { field: "name", message: "duplicate" },
55
+ ]);
56
+ }
57
+ environments.push(env);
58
+ saveSiebelConfig(graphDir, environments);
59
+ logger.info("Siebel environment added", { name: env.name, type: env.type });
60
+ return environments;
61
+ }
62
+ /**
63
+ * Remove a Siebel environment by name.
64
+ * @throws ValidationError if name not found.
65
+ */
66
+ export function removeEnvironment(graphDir, name) {
67
+ const environments = loadSiebelConfig(graphDir);
68
+ const idx = environments.findIndex((e) => e.name === name);
69
+ if (idx === -1) {
70
+ throw new ValidationError(`Environment "${name}" not found`, [
71
+ { field: "name", message: "not found" },
72
+ ]);
73
+ }
74
+ environments.splice(idx, 1);
75
+ saveSiebelConfig(graphDir, environments);
76
+ logger.info("Siebel environment removed", { name });
77
+ return environments;
78
+ }
79
+ /**
80
+ * Find an environment by name.
81
+ */
82
+ export function findEnvironment(graphDir, name) {
83
+ const environments = loadSiebelConfig(graphDir);
84
+ return environments.find((e) => e.name === name);
85
+ }
86
+ //# sourceMappingURL=siebel-config.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"siebel-config.js","sourceRoot":"","sources":["../../../src/core/siebel/siebel-config.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,37 @@
1
+ /**
2
+ * SIF Context Assembler — builds RAG-optimized context for SIF generation.
3
+ *
4
+ * Queries the knowledge store for existing Siebel objects, documentation,
5
+ * and Swagger specs to assemble a rich context payload for the LLM.
6
+ */
7
+ import { KnowledgeStore } from "../store/knowledge-store.js";
8
+ import { type SifTemplate } from "./sif-templates.js";
9
+ import type { SifGenerationRequest } from "../../schemas/siebel.schema.js";
10
+ /** Summary of a knowledge document for context assembly. */
11
+ export interface KnowledgeSummary {
12
+ title: string;
13
+ content: string;
14
+ sourceType: string;
15
+ score?: number;
16
+ }
17
+ /** Assembled context for SIF generation. */
18
+ export interface SifGenerationContext {
19
+ existingObjects: KnowledgeSummary[];
20
+ templates: SifTemplate[];
21
+ exampleSif: string;
22
+ relatedDocs: KnowledgeSummary[];
23
+ validationRules: string[];
24
+ prompt: string;
25
+ }
26
+ /**
27
+ * Assemble a SIF generation context from the knowledge store.
28
+ *
29
+ * Pipeline:
30
+ * 1. Search existing Siebel objects by type/project
31
+ * 2. Select relevant templates
32
+ * 3. Search for example SIF content
33
+ * 4. Search related documentation and swagger specs
34
+ * 5. Build structured prompt
35
+ */
36
+ export declare function assembleSifContext(knowledgeStore: KnowledgeStore, request: SifGenerationRequest): SifGenerationContext;
37
+ //# sourceMappingURL=sif-context-assembler.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sif-context-assembler.d.ts","sourceRoot":"","sources":["../../../src/core/siebel/sif-context-assembler.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,cAAc,EAAE,MAAM,6BAA6B,CAAC;AAE7D,OAAO,EAAe,KAAK,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACnE,OAAO,KAAK,EAAE,oBAAoB,EAAmB,MAAM,gCAAgC,CAAC;AAG5F,4DAA4D;AAC5D,MAAM,WAAW,gBAAgB;IAC/B,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;IAChB,UAAU,EAAE,MAAM,CAAC;IACnB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,4CAA4C;AAC5C,MAAM,WAAW,oBAAoB;IACnC,eAAe,EAAE,gBAAgB,EAAE,CAAC;IACpC,SAAS,EAAE,WAAW,EAAE,CAAC;IACzB,UAAU,EAAE,MAAM,CAAC;IACnB,WAAW,EAAE,gBAAgB,EAAE,CAAC;IAChC,eAAe,EAAE,MAAM,EAAE,CAAC;IAC1B,MAAM,EAAE,MAAM,CAAC;CAChB;AAcD;;;;;;;;;GASG;AACH,wBAAgB,kBAAkB,CAChC,cAAc,EAAE,cAAc,EAC9B,OAAO,EAAE,oBAAoB,GAC5B,oBAAoB,CAyCtB"}
@@ -0,0 +1,259 @@
1
+ /**
2
+ * SIF Context Assembler — builds RAG-optimized context for SIF generation.
3
+ *
4
+ * Queries the knowledge store for existing Siebel objects, documentation,
5
+ * and Swagger specs to assemble a rich context payload for the LLM.
6
+ */
7
+ import { logger } from "../utils/logger.js";
8
+ import { getTemplate } from "./sif-templates.js";
9
+ /** Validation rules that apply to all generated SIF. */
10
+ const BASE_VALIDATION_RULES = [
11
+ "Every object must have a NAME attribute",
12
+ "XML must follow REPOSITORY > PROJECT > Objects hierarchy",
13
+ "Use valid Siebel object tags: APPLET, BUSINESS_COMPONENT, BUSINESS_OBJECT, VIEW, SCREEN, WORKFLOW, BUSINESS_SERVICE, INTEGRATION_OBJECT",
14
+ "Business Components must have a TABLE attribute referencing a valid Siebel table",
15
+ "Applets must have a BUS_COMP attribute referencing a Business Component",
16
+ "Views must have a BUS_OBJECT attribute referencing a Business Object",
17
+ "Field names must be unique within a Business Component",
18
+ "Control names must be unique within an Applet",
19
+ ];
20
+ /**
21
+ * Assemble a SIF generation context from the knowledge store.
22
+ *
23
+ * Pipeline:
24
+ * 1. Search existing Siebel objects by type/project
25
+ * 2. Select relevant templates
26
+ * 3. Search for example SIF content
27
+ * 4. Search related documentation and swagger specs
28
+ * 5. Build structured prompt
29
+ */
30
+ export function assembleSifContext(knowledgeStore, request) {
31
+ logger.info("Assembling SIF generation context", {
32
+ types: request.objectTypes.join(","),
33
+ project: request.basedOnProject ?? "none",
34
+ });
35
+ // 1. Search existing Siebel objects
36
+ const existingObjects = searchExistingObjects(knowledgeStore, request);
37
+ // 2. Select templates for requested types (only for generatable types)
38
+ const templates = request.objectTypes
39
+ .map((type) => getTemplate(type))
40
+ .filter((t) => t !== undefined);
41
+ // 3. Search for example SIF content
42
+ const exampleSif = searchExampleSif(knowledgeStore, request);
43
+ // 4. Search related docs (documentation, swagger)
44
+ const relatedDocs = searchRelatedDocs(knowledgeStore, request);
45
+ // 5. Build validation rules
46
+ const validationRules = buildValidationRules(request);
47
+ // 6. Build structured prompt
48
+ const prompt = buildPrompt(request, templates, existingObjects, relatedDocs, exampleSif, validationRules);
49
+ logger.debug("SIF context assembled", {
50
+ existingObjects: String(existingObjects.length),
51
+ templates: String(templates.length),
52
+ relatedDocs: String(relatedDocs.length),
53
+ promptLength: String(prompt.length),
54
+ });
55
+ return {
56
+ existingObjects,
57
+ templates,
58
+ exampleSif,
59
+ relatedDocs,
60
+ validationRules,
61
+ prompt,
62
+ };
63
+ }
64
+ function searchExistingObjects(knowledgeStore, request) {
65
+ const summaries = [];
66
+ // Search by each object type separately for better FTS5 matching
67
+ for (const type of request.objectTypes) {
68
+ try {
69
+ const results = knowledgeStore.search(type.replace(/_/g, " "), 5);
70
+ for (const r of results) {
71
+ if (r.sourceType === "siebel_sif" || r.sourceType === "siebel_generated") {
72
+ summaries.push(docToSummary(r));
73
+ }
74
+ }
75
+ }
76
+ catch {
77
+ // FTS5 may throw on empty index — safe to ignore
78
+ }
79
+ }
80
+ // Also search by key words from description
81
+ const descWords = request.description
82
+ .split(/\s+/)
83
+ .filter((w) => w.length > 3)
84
+ .slice(0, 3);
85
+ for (const word of descWords) {
86
+ try {
87
+ const results = knowledgeStore.search(word, 5);
88
+ for (const r of results) {
89
+ if (r.sourceType === "siebel_sif" || r.sourceType === "siebel_generated") {
90
+ if (!summaries.some((s) => s.title === r.title)) {
91
+ summaries.push(docToSummary(r));
92
+ }
93
+ }
94
+ }
95
+ }
96
+ catch {
97
+ // Ignore FTS5 errors
98
+ }
99
+ }
100
+ logger.debug("Existing objects search", { found: String(summaries.length) });
101
+ return summaries;
102
+ }
103
+ function searchExampleSif(knowledgeStore, request) {
104
+ try {
105
+ const type = request.objectTypes[0].replace(/_/g, " ");
106
+ const results = knowledgeStore.search(type, 3);
107
+ const sifDoc = results.find((r) => r.sourceType === "siebel_sif");
108
+ return sifDoc?.content ?? "";
109
+ }
110
+ catch {
111
+ return "";
112
+ }
113
+ }
114
+ function searchRelatedDocs(knowledgeStore, request) {
115
+ const docTypes = new Set(["siebel_docs", "swagger", "docs", "prd"]);
116
+ const summaries = [];
117
+ // Search by key words from description
118
+ const words = request.description
119
+ .split(/\s+/)
120
+ .filter((w) => w.length > 3)
121
+ .slice(0, 5);
122
+ for (const word of words) {
123
+ try {
124
+ const results = knowledgeStore.search(word, 5);
125
+ for (const r of results) {
126
+ if (docTypes.has(r.sourceType) && !summaries.some((s) => s.title === r.title)) {
127
+ summaries.push(docToSummary(r));
128
+ }
129
+ }
130
+ }
131
+ catch {
132
+ // Ignore FTS5 errors
133
+ }
134
+ }
135
+ // Also search by object types
136
+ for (const type of request.objectTypes) {
137
+ try {
138
+ const results = knowledgeStore.search(type.replace(/_/g, " "), 5);
139
+ for (const r of results) {
140
+ if (docTypes.has(r.sourceType) && !summaries.some((s) => s.title === r.title)) {
141
+ summaries.push(docToSummary(r));
142
+ }
143
+ }
144
+ }
145
+ catch {
146
+ // Ignore
147
+ }
148
+ }
149
+ return summaries;
150
+ }
151
+ function docToSummary(doc) {
152
+ return {
153
+ title: doc.title,
154
+ content: doc.content,
155
+ sourceType: doc.sourceType,
156
+ };
157
+ }
158
+ function buildValidationRules(request) {
159
+ const rules = [...BASE_VALIDATION_RULES];
160
+ // Add type-specific rules
161
+ for (const type of request.objectTypes) {
162
+ const template = getTemplate(type);
163
+ if (template) {
164
+ for (const attr of template.requiredAttrs) {
165
+ if (attr !== "NAME") {
166
+ rules.push(`${template.xmlTag} must have a ${attr} attribute`);
167
+ }
168
+ }
169
+ }
170
+ }
171
+ return rules;
172
+ }
173
+ function buildPrompt(request, templates, existingObjects, relatedDocs, exampleSif, validationRules) {
174
+ const parts = [];
175
+ // Header
176
+ parts.push("# SIF Generation Request");
177
+ parts.push("");
178
+ parts.push(`**Description:** ${request.description}`);
179
+ parts.push(`**Object types:** ${request.objectTypes.join(", ")}`);
180
+ if (request.basedOnProject) {
181
+ parts.push(`**Project:** ${request.basedOnProject}`);
182
+ }
183
+ if (request.properties) {
184
+ parts.push(`**Properties:** ${JSON.stringify(request.properties)}`);
185
+ }
186
+ // Templates
187
+ parts.push("");
188
+ parts.push("## Available Templates");
189
+ parts.push("");
190
+ for (const template of templates) {
191
+ parts.push(`### ${template.xmlTag}`);
192
+ parts.push(`- Required attributes: ${template.requiredAttrs.join(", ")}`);
193
+ parts.push(`- Optional attributes: ${template.optionalAttrs.join(", ")}`);
194
+ parts.push(`- Child elements: ${template.childTags.join(", ") || "none"}`);
195
+ parts.push("");
196
+ }
197
+ // Expected XML structure
198
+ parts.push("## Expected SIF XML Structure");
199
+ parts.push("");
200
+ parts.push("```xml");
201
+ parts.push('<?xml version="1.0" encoding="UTF-8"?>');
202
+ parts.push('<REPOSITORY NAME="Siebel Repository">');
203
+ parts.push(` <PROJECT NAME="${request.basedOnProject ?? "Generated Project"}">`);
204
+ for (const template of templates) {
205
+ parts.push(` <${template.xmlTag} NAME="..." ${template.requiredAttrs.filter((a) => a !== "NAME").map((a) => `${a}="..."`).join(" ")}>`);
206
+ if (template.childTags.length > 0) {
207
+ parts.push(` <${template.childTags[0]} NAME="..." />`);
208
+ }
209
+ parts.push(` </${template.xmlTag}>`);
210
+ }
211
+ parts.push(" </PROJECT>");
212
+ parts.push("</REPOSITORY>");
213
+ parts.push("```");
214
+ // Existing objects context
215
+ if (existingObjects.length > 0) {
216
+ parts.push("");
217
+ parts.push("## Existing Siebel Objects (for reference)");
218
+ parts.push("");
219
+ for (const obj of existingObjects.slice(0, 5)) {
220
+ parts.push(`### ${obj.title}`);
221
+ parts.push(obj.content.slice(0, 500));
222
+ parts.push("");
223
+ }
224
+ }
225
+ // Related documentation
226
+ if (relatedDocs.length > 0) {
227
+ parts.push("");
228
+ parts.push("## Related Documentation");
229
+ parts.push("");
230
+ for (const doc of relatedDocs.slice(0, 5)) {
231
+ parts.push(`### ${doc.title} (${doc.sourceType})`);
232
+ parts.push(doc.content.slice(0, 500));
233
+ parts.push("");
234
+ }
235
+ }
236
+ // Example SIF
237
+ if (exampleSif) {
238
+ parts.push("");
239
+ parts.push("## Example SIF Content");
240
+ parts.push("");
241
+ parts.push(exampleSif.slice(0, 1000));
242
+ }
243
+ // Validation rules
244
+ parts.push("");
245
+ parts.push("## Validation Rules");
246
+ parts.push("");
247
+ for (const rule of validationRules) {
248
+ parts.push(`- ${rule}`);
249
+ }
250
+ // Instructions
251
+ parts.push("");
252
+ parts.push("## Instructions");
253
+ parts.push("");
254
+ parts.push("Generate a valid Siebel SIF XML file following the structure above.");
255
+ parts.push("Return ONLY the XML content, no markdown code blocks or explanations.");
256
+ parts.push("Ensure all required attributes are present for each object type.");
257
+ return parts.join("\n");
258
+ }
259
+ //# sourceMappingURL=sif-context-assembler.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sif-context-assembler.js","sourceRoot":"","sources":["../../../src/core/siebel/sif-context-assembler.ts"],"names":[],"mappings":"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"}