@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
@@ -0,0 +1,107 @@
1
+ /**
2
+ * MCP Tool: siebel_analyze
3
+ * Analyze Siebel object dependencies, impact, and circular references.
4
+ */
5
+ import { z } from "zod/v4";
6
+ import { analyzeSiebelImpact, findDependencyChain, detectCircularDeps, } from "../../core/siebel/dependency-analyzer.js";
7
+ import { parseSifContent } from "../../core/siebel/sif-parser.js";
8
+ import { SiebelObjectTypeSchema } from "../../schemas/siebel.schema.js";
9
+ import { KnowledgeStore } from "../../core/store/knowledge-store.js";
10
+ import { logger } from "../../core/utils/logger.js";
11
+ import { mcpText, mcpError } from "../response-helpers.js";
12
+ export function registerSiebelAnalyze(server, store) {
13
+ server.tool("siebel_analyze", "Analyze Siebel object dependencies. Modes: impact (blast radius of changing an object), dependencies (find chain between two objects), circular (detect cycles), summary (overview of all Siebel objects in knowledge store).", {
14
+ action: z.enum(["impact", "dependencies", "circular", "summary"]).describe("Analysis mode"),
15
+ objectName: z.string().optional().describe("Siebel object name (for impact analysis)"),
16
+ objectType: SiebelObjectTypeSchema.optional().describe("Siebel object type"),
17
+ targetName: z.string().optional().describe("Target object for dependency chain"),
18
+ targetType: SiebelObjectTypeSchema.optional().describe("Target object type"),
19
+ sifContent: z.string().optional().describe("Raw SIF content to analyze (if not using stored data)"),
20
+ }, async ({ action, objectName, objectType, targetName, targetType, sifContent }) => {
21
+ logger.info("tool:siebel_analyze", { action, objectName, objectType });
22
+ try {
23
+ // Get dependencies from SIF content or stored knowledge
24
+ let dependencies;
25
+ if (sifContent) {
26
+ const parseResult = parseSifContent(sifContent, "analyze-input.sif");
27
+ dependencies = parseResult.dependencies;
28
+ }
29
+ else {
30
+ // Search knowledge store for Siebel SIF data
31
+ const knowledgeStore = new KnowledgeStore(store.getDb());
32
+ const docs = knowledgeStore.search("Siebel", 100);
33
+ const siebelDocs = docs.filter((d) => d.sourceType === "siebel_sif");
34
+ if (siebelDocs.length === 0) {
35
+ return mcpError("No Siebel data found in knowledge store. Import a SIF file first with siebel_import_sif.");
36
+ }
37
+ // Extract dependencies from stored metadata
38
+ // For now, require sifContent for detailed analysis
39
+ if (action !== "summary") {
40
+ return mcpError("Detailed analysis requires sifContent parameter. Use siebel_import_sif to import a SIF first, then pass the content here.");
41
+ }
42
+ return mcpText({
43
+ ok: true,
44
+ action: "summary",
45
+ totalDocuments: siebelDocs.length,
46
+ objectTypes: [...new Set(siebelDocs.map((d) => d.metadata?.siebelType).filter(Boolean))],
47
+ projects: [...new Set(siebelDocs.map((d) => d.metadata?.siebelProject).filter(Boolean))],
48
+ });
49
+ }
50
+ switch (action) {
51
+ case "impact": {
52
+ if (!objectName || !objectType) {
53
+ return mcpError("objectName and objectType are required for impact analysis");
54
+ }
55
+ const impact = analyzeSiebelImpact(dependencies, { name: objectName, type: objectType });
56
+ return mcpText({ ok: true, action: "impact", ...impact });
57
+ }
58
+ case "dependencies": {
59
+ if (!objectName || !objectType || !targetName || !targetType) {
60
+ return mcpError("objectName, objectType, targetName, and targetType are required for dependency chain analysis");
61
+ }
62
+ const chains = findDependencyChain(dependencies, { name: objectName, type: objectType }, { name: targetName, type: targetType });
63
+ return mcpText({
64
+ ok: true,
65
+ action: "dependencies",
66
+ from: { name: objectName, type: objectType },
67
+ to: { name: targetName, type: targetType },
68
+ pathsFound: chains.length,
69
+ paths: chains,
70
+ });
71
+ }
72
+ case "circular": {
73
+ const cycles = detectCircularDeps(dependencies);
74
+ return mcpText({
75
+ ok: true,
76
+ action: "circular",
77
+ cyclesFound: cycles.length,
78
+ cycles,
79
+ });
80
+ }
81
+ case "summary": {
82
+ if (!sifContent) {
83
+ return mcpError("sifContent is required for summary analysis");
84
+ }
85
+ const parseResult = parseSifContent(sifContent, "summary-input.sif");
86
+ return mcpText({
87
+ ok: true,
88
+ action: "summary",
89
+ metadata: parseResult.metadata,
90
+ objectCount: parseResult.objects.length,
91
+ dependencyCount: parseResult.dependencies.length,
92
+ objectsByType: Object.fromEntries([...new Set(parseResult.objects.map((o) => o.type))].map((t) => [
93
+ t,
94
+ parseResult.objects.filter((o) => o.type === t).length,
95
+ ])),
96
+ });
97
+ }
98
+ default:
99
+ return mcpError(`Unknown action: ${action}`);
100
+ }
101
+ }
102
+ catch (err) {
103
+ return mcpError(err instanceof Error ? err : String(err));
104
+ }
105
+ });
106
+ }
107
+ //# sourceMappingURL=siebel-analyze.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"siebel-analyze.js","sourceRoot":"","sources":["../../../src/mcp/tools/siebel-analyze.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,12 @@
1
+ /**
2
+ * MCP Tool: siebel_composer
3
+ * Automate Siebel Composer web UI via Playwright MCP integration.
4
+ *
5
+ * This tool builds structured instructions for the Playwright MCP server
6
+ * to interact with Siebel Composer. It returns step-by-step browser automation
7
+ * instructions that can be executed by the AI agent using Playwright tools.
8
+ */
9
+ import type { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
10
+ import type { SqliteStore } from "../../core/store/sqlite-store.js";
11
+ export declare function registerSiebelComposer(server: McpServer, _store: SqliteStore): void;
12
+ //# sourceMappingURL=siebel-composer.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"siebel-composer.d.ts","sourceRoot":"","sources":["../../../src/mcp/tools/siebel-composer.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAGH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AACzE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,kCAAkC,CAAC;AAQpE,wBAAgB,sBAAsB,CAAC,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,WAAW,GAAG,IAAI,CAkDnF"}
@@ -0,0 +1,59 @@
1
+ /**
2
+ * MCP Tool: siebel_composer
3
+ * Automate Siebel Composer web UI via Playwright MCP integration.
4
+ *
5
+ * This tool builds structured instructions for the Playwright MCP server
6
+ * to interact with Siebel Composer. It returns step-by-step browser automation
7
+ * instructions that can be executed by the AI agent using Playwright tools.
8
+ */
9
+ import { z } from "zod/v4";
10
+ import { buildComposerInstructions } from "../../core/siebel/composer-automation.js";
11
+ import { findEnvironment } from "../../core/siebel/siebel-config.js";
12
+ import { STORE_DIR } from "../../core/utils/constants.js";
13
+ import { logger } from "../../core/utils/logger.js";
14
+ import { mcpText, mcpError } from "../response-helpers.js";
15
+ import path from "node:path";
16
+ export function registerSiebelComposer(server, _store) {
17
+ server.tool("siebel_composer", "Automate Siebel Composer web UI. Returns Playwright instructions for browser automation. Actions: navigate (open Composer or specific object), import_sif (upload SIF file), edit (modify object property), publish (deploy changes), capture (screenshot current state).", {
18
+ action: z.enum(["navigate", "import_sif", "edit", "publish", "capture"]).describe("Composer action"),
19
+ envName: z.string().describe("Siebel environment name (from siebel_env list)"),
20
+ sifPath: z.string().optional().describe("SIF file path (for import_sif action)"),
21
+ objectName: z.string().optional().describe("Siebel object name to navigate to or edit"),
22
+ property: z.string().optional().describe("Property name to edit"),
23
+ value: z.string().optional().describe("New value for the property"),
24
+ selector: z.string().optional().describe("CSS selector for waiting/capturing"),
25
+ timeout: z.number().int().min(1000).optional().describe("Timeout in milliseconds"),
26
+ }, async ({ action, envName, sifPath, objectName, property, value, selector, timeout }) => {
27
+ logger.info("tool:siebel_composer", { action, envName, objectName });
28
+ try {
29
+ const graphDir = path.join(process.cwd(), STORE_DIR);
30
+ const env = findEnvironment(graphDir, envName);
31
+ if (!env) {
32
+ return mcpError(`Siebel environment "${envName}" not found. Use siebel_env action=list to see available environments, or siebel_env action=add to register one.`);
33
+ }
34
+ const instructions = buildComposerInstructions({
35
+ env,
36
+ action,
37
+ sifPath,
38
+ objectName,
39
+ property,
40
+ value,
41
+ selector,
42
+ timeout,
43
+ });
44
+ return mcpText({
45
+ ok: true,
46
+ action,
47
+ envName,
48
+ composerUrl: env.composerUrl ?? `${env.url}/composer`,
49
+ instructions: instructions.steps,
50
+ description: instructions.description,
51
+ hint: "Use Playwright MCP tools (browser_navigate, browser_click, browser_type, browser_file_upload, browser_take_screenshot) to execute these steps sequentially.",
52
+ });
53
+ }
54
+ catch (err) {
55
+ return mcpError(err instanceof Error ? err : String(err));
56
+ }
57
+ });
58
+ }
59
+ //# sourceMappingURL=siebel-composer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"siebel-composer.js","sourceRoot":"","sources":["../../../src/mcp/tools/siebel-composer.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,8 @@
1
+ /**
2
+ * MCP Tool: siebel_env
3
+ * Manage Siebel environment configurations (dev, test, staging, prod).
4
+ */
5
+ import type { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
6
+ import type { SqliteStore } from "../../core/store/sqlite-store.js";
7
+ export declare function registerSiebelEnv(server: McpServer, _store: SqliteStore): void;
8
+ //# sourceMappingURL=siebel-env.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"siebel-env.d.ts","sourceRoot":"","sources":["../../../src/mcp/tools/siebel-env.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAGH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AACzE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,kCAAkC,CAAC;AAYpE,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,WAAW,GAAG,IAAI,CAwD9E"}
@@ -0,0 +1,60 @@
1
+ /**
2
+ * MCP Tool: siebel_env
3
+ * Manage Siebel environment configurations (dev, test, staging, prod).
4
+ */
5
+ import { z } from "zod/v4";
6
+ import { loadSiebelConfig, addEnvironment, removeEnvironment, } from "../../core/siebel/siebel-config.js";
7
+ import { SiebelEnvironmentTypeSchema } from "../../schemas/siebel.schema.js";
8
+ import { STORE_DIR } from "../../core/utils/constants.js";
9
+ import { logger } from "../../core/utils/logger.js";
10
+ import { mcpText, mcpError } from "../response-helpers.js";
11
+ import path from "node:path";
12
+ export function registerSiebelEnv(server, _store) {
13
+ server.tool("siebel_env", "Manage Siebel CRM environment configurations. Actions: list (show all), add (register new), remove (delete by name).", {
14
+ action: z.enum(["list", "add", "remove"]).describe("Action to perform"),
15
+ name: z.string().optional().describe("Environment name (required for add/remove)"),
16
+ url: z.string().url().optional().describe("Siebel application URL (required for add)"),
17
+ version: z.string().optional().default("15.0").describe("Siebel version"),
18
+ type: SiebelEnvironmentTypeSchema.optional().default("dev").describe("Environment type"),
19
+ composerUrl: z.string().url().optional().describe("Siebel Composer URL"),
20
+ restApiUrl: z.string().url().optional().describe("Siebel REST API base URL"),
21
+ }, async ({ action, name, url, version, type, composerUrl, restApiUrl }) => {
22
+ logger.info("tool:siebel_env", { action, name });
23
+ const graphDir = path.join(process.cwd(), STORE_DIR);
24
+ try {
25
+ switch (action) {
26
+ case "list": {
27
+ const envs = loadSiebelConfig(graphDir);
28
+ return mcpText({ ok: true, environments: envs, count: envs.length });
29
+ }
30
+ case "add": {
31
+ if (!name || !url) {
32
+ return mcpError("name and url are required to add an environment");
33
+ }
34
+ const envs = addEnvironment(graphDir, {
35
+ name,
36
+ url,
37
+ version,
38
+ type,
39
+ ...(composerUrl ? { composerUrl } : {}),
40
+ ...(restApiUrl ? { restApiUrl } : {}),
41
+ });
42
+ return mcpText({ ok: true, added: name, environments: envs });
43
+ }
44
+ case "remove": {
45
+ if (!name) {
46
+ return mcpError("name is required to remove an environment");
47
+ }
48
+ const envs = removeEnvironment(graphDir, name);
49
+ return mcpText({ ok: true, removed: name, environments: envs });
50
+ }
51
+ default:
52
+ return mcpError(`Unknown action: ${action}`);
53
+ }
54
+ }
55
+ catch (err) {
56
+ return mcpError(err instanceof Error ? err : String(err));
57
+ }
58
+ });
59
+ }
60
+ //# sourceMappingURL=siebel-env.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"siebel-env.js","sourceRoot":"","sources":["../../../src/mcp/tools/siebel-env.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,QAAQ,CAAC;AAG3B,OAAO,EACL,gBAAgB,EAChB,cAAc,EACd,iBAAiB,GAClB,MAAM,oCAAoC,CAAC;AAC5C,OAAO,EAAE,2BAA2B,EAAE,MAAM,gCAAgC,CAAC;AAC7E,OAAO,EAAE,SAAS,EAAE,MAAM,+BAA+B,CAAC;AAC1D,OAAO,EAAE,MAAM,EAAE,MAAM,4BAA4B,CAAC;AACpD,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,wBAAwB,CAAC;AAC3D,OAAO,IAAI,MAAM,WAAW,CAAC;AAE7B,MAAM,UAAU,iBAAiB,CAAC,MAAiB,EAAE,MAAmB;IACtE,MAAM,CAAC,IAAI,CACT,YAAY,EACZ,sHAAsH,EACtH;QACE,MAAM,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,KAAK,EAAE,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,mBAAmB,CAAC;QACvE,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,4CAA4C,CAAC;QAClF,GAAG,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,2CAA2C,CAAC;QACtF,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,QAAQ,CAAC,gBAAgB,CAAC;QACzE,IAAI,EAAE,2BAA2B,CAAC,QAAQ,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,QAAQ,CAAC,kBAAkB,CAAC;QACxF,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,qBAAqB,CAAC;QACxE,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,0BAA0B,CAAC;KAC7E,EACD,KAAK,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,GAAG,EAAE,OAAO,EAAE,IAAI,EAAE,WAAW,EAAE,UAAU,EAAE,EAAE,EAAE;QACtE,MAAM,CAAC,IAAI,CAAC,iBAAiB,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC;QAEjD,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,SAAS,CAAC,CAAC;QAErD,IAAI,CAAC;YACH,QAAQ,MAAM,EAAE,CAAC;gBACf,KAAK,MAAM,CAAC,CAAC,CAAC;oBACZ,MAAM,IAAI,GAAG,gBAAgB,CAAC,QAAQ,CAAC,CAAC;oBACxC,OAAO,OAAO,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,YAAY,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC;gBACvE,CAAC;gBAED,KAAK,KAAK,CAAC,CAAC,CAAC;oBACX,IAAI,CAAC,IAAI,IAAI,CAAC,GAAG,EAAE,CAAC;wBAClB,OAAO,QAAQ,CAAC,iDAAiD,CAAC,CAAC;oBACrE,CAAC;oBACD,MAAM,IAAI,GAAG,cAAc,CAAC,QAAQ,EAAE;wBACpC,IAAI;wBACJ,GAAG;wBACH,OAAO;wBACP,IAAI;wBACJ,GAAG,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE,WAAW,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;wBACvC,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE,UAAU,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;qBACtC,CAAC,CAAC;oBACH,OAAO,OAAO,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,YAAY,EAAE,IAAI,EAAE,CAAC,CAAC;gBAChE,CAAC;gBAED,KAAK,QAAQ,CAAC,CAAC,CAAC;oBACd,IAAI,CAAC,IAAI,EAAE,CAAC;wBACV,OAAO,QAAQ,CAAC,2CAA2C,CAAC,CAAC;oBAC/D,CAAC;oBACD,MAAM,IAAI,GAAG,iBAAiB,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC;oBAC/C,OAAO,OAAO,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,YAAY,EAAE,IAAI,EAAE,CAAC,CAAC;gBAClE,CAAC;gBAED;oBACE,OAAO,QAAQ,CAAC,mBAAmB,MAAM,EAAE,CAAC,CAAC;YACjD,CAAC;QACH,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,OAAO,QAAQ,CAAC,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC;QAC5D,CAAC;IACH,CAAC,CACF,CAAC;AACJ,CAAC"}
@@ -0,0 +1,8 @@
1
+ /**
2
+ * MCP Tool: siebel_generate_sif
3
+ * Two-phase SIF generation: prepare context + finalize generated XML.
4
+ */
5
+ import type { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
6
+ import type { SqliteStore } from "../../core/store/sqlite-store.js";
7
+ export declare function registerSiebelGenerateSif(server: McpServer, store: SqliteStore): void;
8
+ //# sourceMappingURL=siebel-generate-sif.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"siebel-generate-sif.d.ts","sourceRoot":"","sources":["../../../src/mcp/tools/siebel-generate-sif.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAGH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AACzE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,kCAAkC,CAAC;AAQpE,wBAAgB,yBAAyB,CAAC,MAAM,EAAE,SAAS,EAAE,KAAK,EAAE,WAAW,GAAG,IAAI,CAkGrF"}
@@ -0,0 +1,91 @@
1
+ /**
2
+ * MCP Tool: siebel_generate_sif
3
+ * Two-phase SIF generation: prepare context + finalize generated XML.
4
+ */
5
+ import { z } from "zod/v4";
6
+ import { KnowledgeStore } from "../../core/store/knowledge-store.js";
7
+ import { prepareSifGeneration, finalizeSifGeneration } from "../../core/siebel/sif-generator.js";
8
+ import { listTemplates } from "../../core/siebel/sif-templates.js";
9
+ import { SiebelObjectTypeSchema } from "../../schemas/siebel.schema.js";
10
+ import { logger } from "../../core/utils/logger.js";
11
+ import { mcpText, mcpError, normalizeNewlines } from "../response-helpers.js";
12
+ export function registerSiebelGenerateSif(server, store) {
13
+ server.tool("siebel_generate_sif", "Generate Siebel SIF files using RAG context. Two-phase: action=prepare returns context+prompt for the LLM; action=finalize validates the LLM-generated XML and indexes it.", {
14
+ action: z.enum(["prepare", "finalize", "templates"]).describe("Phase: prepare (get context+prompt), finalize (validate XML), templates (list available templates)"),
15
+ // prepare params
16
+ description: z.string().optional().describe("What to generate (for prepare)"),
17
+ objectTypes: z.array(SiebelObjectTypeSchema).optional().describe("Siebel object types to generate"),
18
+ basedOnProject: z.string().optional().describe("Base project name for context"),
19
+ properties: z.record(z.string(), z.string()).optional().describe("Default properties for generated objects"),
20
+ // finalize params
21
+ generatedXml: z.string().optional().describe("LLM-generated SIF XML content (for finalize)"),
22
+ }, async ({ action, description, objectTypes, basedOnProject, properties, generatedXml }) => {
23
+ logger.info("tool:siebel_generate_sif", { action });
24
+ try {
25
+ if (action === "templates") {
26
+ const templates = listTemplates();
27
+ return mcpText({
28
+ ok: true,
29
+ templates: templates.map((t) => ({
30
+ type: t.type,
31
+ xmlTag: t.xmlTag,
32
+ requiredAttrs: t.requiredAttrs,
33
+ optionalAttrs: t.optionalAttrs,
34
+ childTags: t.childTags,
35
+ })),
36
+ });
37
+ }
38
+ const knowledgeStore = new KnowledgeStore(store.getDb());
39
+ if (action === "prepare") {
40
+ if (!description) {
41
+ return mcpError("description is required for prepare action");
42
+ }
43
+ if (!objectTypes || objectTypes.length === 0) {
44
+ return mcpError("objectTypes is required for prepare action");
45
+ }
46
+ const context = prepareSifGeneration(knowledgeStore, {
47
+ description,
48
+ objectTypes,
49
+ basedOnProject,
50
+ properties,
51
+ });
52
+ return mcpText({
53
+ ok: true,
54
+ action: "prepare",
55
+ prompt: context.prompt,
56
+ templates: context.templates.map((t) => t.type),
57
+ existingObjectsCount: context.existingObjects.length,
58
+ relatedDocsCount: context.relatedDocs.length,
59
+ validationRules: context.validationRules,
60
+ });
61
+ }
62
+ if (action === "finalize") {
63
+ if (!generatedXml) {
64
+ return mcpError("generatedXml is required for finalize action");
65
+ }
66
+ const normalized = normalizeNewlines(generatedXml) ?? generatedXml;
67
+ const result = finalizeSifGeneration(knowledgeStore, normalized, {
68
+ description: description ?? "SIF generation",
69
+ objectTypes: objectTypes ?? [],
70
+ });
71
+ return mcpText({
72
+ ok: true,
73
+ action: "finalize",
74
+ sifContent: result.sifContent,
75
+ objectCount: result.metadata.objectCount,
76
+ objects: result.objects,
77
+ validation: result.validation,
78
+ metadata: result.metadata,
79
+ });
80
+ }
81
+ return mcpError(`Unknown action: ${action}`);
82
+ }
83
+ catch (err) {
84
+ logger.error("tool:siebel_generate_sif failed", {
85
+ error: err instanceof Error ? err.message : String(err),
86
+ });
87
+ return mcpError(err instanceof Error ? err : String(err));
88
+ }
89
+ });
90
+ }
91
+ //# sourceMappingURL=siebel-generate-sif.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"siebel-generate-sif.js","sourceRoot":"","sources":["../../../src/mcp/tools/siebel-generate-sif.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,9 @@
1
+ /**
2
+ * MCP Tool: siebel_import_docs
3
+ * Imports documentation (Swagger/WSDL, PDF, HTML, DOC/DOCX, Markdown)
4
+ * and indexes into knowledge store for RAG context during SIF generation.
5
+ */
6
+ import type { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
7
+ import type { SqliteStore } from "../../core/store/sqlite-store.js";
8
+ export declare function registerSiebelImportDocs(server: McpServer, store: SqliteStore): void;
9
+ //# sourceMappingURL=siebel-import-docs.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"siebel-import-docs.d.ts","sourceRoot":"","sources":["../../../src/mcp/tools/siebel-import-docs.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAGH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AACzE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,kCAAkC,CAAC;AAUpE,wBAAgB,wBAAwB,CAAC,MAAM,EAAE,SAAS,EAAE,KAAK,EAAE,WAAW,GAAG,IAAI,CAmGpF"}
@@ -0,0 +1,106 @@
1
+ /**
2
+ * MCP Tool: siebel_import_docs
3
+ * Imports documentation (Swagger/WSDL, PDF, HTML, DOC/DOCX, Markdown)
4
+ * and indexes into knowledge store for RAG context during SIF generation.
5
+ */
6
+ import { z } from "zod/v4";
7
+ import { parseSwaggerContent, parseWsdlContent } from "../../core/parser/read-swagger.js";
8
+ import { indexSwaggerContent } from "../../core/rag/swagger-indexer.js";
9
+ import { readFileContent } from "../../core/parser/file-reader.js";
10
+ import { KnowledgeStore } from "../../core/store/knowledge-store.js";
11
+ import { chunkText } from "../../core/rag/chunk-text.js";
12
+ import { logger } from "../../core/utils/logger.js";
13
+ import { mcpText, mcpError, normalizeNewlines } from "../response-helpers.js";
14
+ import { readFile } from "node:fs/promises";
15
+ export function registerSiebelImportDocs(server, store) {
16
+ server.tool("siebel_import_docs", "Import documentation (Swagger/WSDL, PDF, HTML, DOC/DOCX, Markdown) into knowledge store for Siebel SIF generation context. Supports file path or inline content.", {
17
+ filePath: z.string().optional().describe("Path to the documentation file on disk"),
18
+ content: z.string().optional().describe("Raw documentation content (alternative to filePath)"),
19
+ fileName: z.string().optional().default("inline-doc").describe("File name (used for source tracking)"),
20
+ docType: z.enum(["swagger", "wsdl", "pdf", "html", "doc", "docx", "markdown"])
21
+ .describe("Document type to determine parsing strategy"),
22
+ }, async ({ filePath, content, fileName, docType }) => {
23
+ logger.info("tool:siebel_import_docs", { filePath, fileName, docType });
24
+ try {
25
+ const knowledgeStore = new KnowledgeStore(store.getDb());
26
+ let documentsIndexed = 0;
27
+ if (docType === "swagger" || docType === "wsdl") {
28
+ // Swagger/WSDL: parse and index with specialized indexer
29
+ const rawContent = content ?? (filePath ? await readFileToString(filePath) : undefined);
30
+ if (!rawContent) {
31
+ return mcpError("Either filePath or content is required");
32
+ }
33
+ const normalized = normalizeNewlines(rawContent) ?? rawContent;
34
+ const parseResult = docType === "wsdl"
35
+ ? parseWsdlContent(normalized)
36
+ : parseSwaggerContent(normalized);
37
+ const indexResult = indexSwaggerContent(knowledgeStore, parseResult, fileName);
38
+ documentsIndexed = indexResult.documentsIndexed;
39
+ return mcpText({
40
+ ok: true,
41
+ docType,
42
+ fileName,
43
+ title: parseResult.title,
44
+ version: parseResult.version,
45
+ format: parseResult.format,
46
+ endpointsFound: parseResult.endpoints.length,
47
+ schemasFound: parseResult.schemas.length,
48
+ documentsIndexed,
49
+ });
50
+ }
51
+ // General docs: PDF, HTML, DOC/DOCX, Markdown
52
+ let textContent;
53
+ if (filePath) {
54
+ const fileResult = await readFileContent(filePath, fileName);
55
+ textContent = fileResult.text;
56
+ }
57
+ else if (content) {
58
+ textContent = normalizeNewlines(content) ?? content;
59
+ }
60
+ else {
61
+ return mcpError("Either filePath or content is required");
62
+ }
63
+ // Chunk and index into knowledge store
64
+ const sourceId = `siebel_docs:${fileName}`;
65
+ knowledgeStore.deleteBySource("siebel_docs", sourceId);
66
+ const chunks = chunkText(textContent);
67
+ const chunkDocs = chunks.map((chunk, index) => ({
68
+ sourceType: "siebel_docs",
69
+ sourceId,
70
+ title: `Siebel Doc: ${fileName} [${index + 1}/${chunks.length}]`,
71
+ content: chunk.content,
72
+ chunkIndex: index,
73
+ metadata: {
74
+ docType,
75
+ fileName,
76
+ chunkTokens: chunk.tokens,
77
+ indexedAt: new Date().toISOString(),
78
+ },
79
+ }));
80
+ const docs = knowledgeStore.insertChunks(chunkDocs);
81
+ documentsIndexed = docs.length;
82
+ logger.info("Documentation indexed", {
83
+ fileName,
84
+ docType,
85
+ chunks: String(chunks.length),
86
+ documents: String(documentsIndexed),
87
+ });
88
+ return mcpText({
89
+ ok: true,
90
+ docType,
91
+ fileName,
92
+ textLength: textContent.length,
93
+ chunksCreated: chunks.length,
94
+ documentsIndexed,
95
+ });
96
+ }
97
+ catch (err) {
98
+ return mcpError(err instanceof Error ? err : String(err));
99
+ }
100
+ });
101
+ }
102
+ async function readFileToString(filePath) {
103
+ const buffer = await readFile(filePath, "utf-8");
104
+ return buffer;
105
+ }
106
+ //# sourceMappingURL=siebel-import-docs.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"siebel-import-docs.js","sourceRoot":"","sources":["../../../src/mcp/tools/siebel-import-docs.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,8 @@
1
+ /**
2
+ * MCP Tool: siebel_import_sif
3
+ * Imports a Siebel .SIF file, parses it, optionally maps to graph nodes, and indexes into knowledge store.
4
+ */
5
+ import type { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
6
+ import type { SqliteStore } from "../../core/store/sqlite-store.js";
7
+ export declare function registerSiebelImportSif(server: McpServer, store: SqliteStore): void;
8
+ //# sourceMappingURL=siebel-import-sif.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"siebel-import-sif.d.ts","sourceRoot":"","sources":["../../../src/mcp/tools/siebel-import-sif.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAGH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AACzE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,kCAAkC,CAAC;AAQpE,wBAAgB,uBAAuB,CAAC,MAAM,EAAE,SAAS,EAAE,KAAK,EAAE,WAAW,GAAG,IAAI,CA8DnF"}
@@ -0,0 +1,68 @@
1
+ /**
2
+ * MCP Tool: siebel_import_sif
3
+ * Imports a Siebel .SIF file, parses it, optionally maps to graph nodes, and indexes into knowledge store.
4
+ */
5
+ import { z } from "zod/v4";
6
+ import { parseSifFile, parseSifContent } from "../../core/siebel/sif-parser.js";
7
+ import { convertSifToGraph } from "../../core/siebel/sif-to-graph.js";
8
+ import { KnowledgeStore } from "../../core/store/knowledge-store.js";
9
+ import { indexSifContent } from "../../core/rag/siebel-indexer.js";
10
+ import { logger } from "../../core/utils/logger.js";
11
+ import { mcpText, mcpError, normalizeNewlines } from "../response-helpers.js";
12
+ export function registerSiebelImportSif(server, store) {
13
+ server.tool("siebel_import_sif", "Import a Siebel .SIF file. Parses XML, extracts objects and dependencies, optionally maps to graph nodes, and indexes into knowledge store for RAG retrieval.", {
14
+ filePath: z.string().optional().describe("Path to the .sif file on disk"),
15
+ content: z.string().optional().describe("Raw SIF XML content (alternative to filePath)"),
16
+ fileName: z.string().optional().default("inline.sif").describe("File name for content mode"),
17
+ mapToGraph: z.boolean().optional().default(true).describe("Convert Siebel objects to graph nodes and edges"),
18
+ }, async ({ filePath, content, fileName, mapToGraph }) => {
19
+ logger.info("tool:siebel_import_sif", { filePath, fileName, mapToGraph });
20
+ try {
21
+ // Parse SIF
22
+ let parseResult;
23
+ if (filePath) {
24
+ parseResult = await parseSifFile(filePath);
25
+ }
26
+ else if (content) {
27
+ const normalizedContent = normalizeNewlines(content) ?? content;
28
+ parseResult = parseSifContent(normalizedContent, fileName);
29
+ }
30
+ else {
31
+ return mcpError("Either filePath or content is required");
32
+ }
33
+ const result = {
34
+ ok: true,
35
+ metadata: parseResult.metadata,
36
+ objectCount: parseResult.objects.length,
37
+ dependencyCount: parseResult.dependencies.length,
38
+ objectTypes: parseResult.metadata.objectTypes,
39
+ };
40
+ // Map to graph nodes
41
+ if (mapToGraph) {
42
+ const { nodes, edges } = convertSifToGraph(parseResult);
43
+ store.bulkInsert(nodes, edges);
44
+ result.nodesCreated = nodes.length;
45
+ result.edgesCreated = edges.length;
46
+ result.epicId = nodes.find((n) => n.type === "epic")?.id;
47
+ }
48
+ // Index into knowledge store
49
+ try {
50
+ const knowledgeStore = new KnowledgeStore(store.getDb());
51
+ const indexResult = indexSifContent(knowledgeStore, parseResult);
52
+ result.documentsIndexed = indexResult.documentsIndexed;
53
+ }
54
+ catch (indexErr) {
55
+ logger.warn("Siebel knowledge indexing failed (non-fatal)", {
56
+ error: String(indexErr),
57
+ });
58
+ }
59
+ // Record import
60
+ store.recordImport(parseResult.metadata.fileName, parseResult.objects.length, parseResult.dependencies.length);
61
+ return mcpText(result);
62
+ }
63
+ catch (err) {
64
+ return mcpError(err instanceof Error ? err : String(err));
65
+ }
66
+ });
67
+ }
68
+ //# sourceMappingURL=siebel-import-sif.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"siebel-import-sif.js","sourceRoot":"","sources":["../../../src/mcp/tools/siebel-import-sif.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,8 @@
1
+ /**
2
+ * MCP Tool: siebel_search
3
+ * Search indexed Siebel objects in the knowledge store.
4
+ */
5
+ import type { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
6
+ import type { SqliteStore } from "../../core/store/sqlite-store.js";
7
+ export declare function registerSiebelSearch(server: McpServer, store: SqliteStore): void;
8
+ //# sourceMappingURL=siebel-search.d.ts.map