@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,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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"}
@@ -0,0 +1,26 @@
1
+ /**
2
+ * SIF Generator — two-phase SIF generation pipeline.
3
+ *
4
+ * Phase 1 (prepare): Assembles RAG context + prompt for the LLM.
5
+ * Phase 2 (finalize): Validates LLM output, indexes into knowledge store.
6
+ *
7
+ * The module does NOT call any LLM — it stays pure and testable.
8
+ */
9
+ import { KnowledgeStore } from "../store/knowledge-store.js";
10
+ import { type SifGenerationContext } from "./sif-context-assembler.js";
11
+ import type { SifGenerationRequest, SifGenerationResult } from "../../schemas/siebel.schema.js";
12
+ /**
13
+ * Phase 1: Prepare SIF generation context.
14
+ *
15
+ * Returns a structured context with prompt, templates, existing objects,
16
+ * and validation rules for the LLM to use.
17
+ */
18
+ export declare function prepareSifGeneration(knowledgeStore: KnowledgeStore, request: SifGenerationRequest): SifGenerationContext;
19
+ /**
20
+ * Phase 2: Finalize SIF generation.
21
+ *
22
+ * Validates the LLM-generated XML, checks for collisions with existing objects,
23
+ * runs best-practice checks, and indexes the result into the knowledge store.
24
+ */
25
+ export declare function finalizeSifGeneration(knowledgeStore: KnowledgeStore, generatedXml: string, request: SifGenerationRequest): SifGenerationResult;
26
+ //# sourceMappingURL=sif-generator.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sif-generator.d.ts","sourceRoot":"","sources":["../../../src/core/siebel/sif-generator.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,EAAE,cAAc,EAAE,MAAM,6BAA6B,CAAC;AAI7D,OAAO,EAEL,KAAK,oBAAoB,EAC1B,MAAM,4BAA4B,CAAC;AACpC,OAAO,KAAK,EACV,oBAAoB,EACpB,mBAAmB,EAGpB,MAAM,gCAAgC,CAAC;AAExC;;;;;GAKG;AACH,wBAAgB,oBAAoB,CAClC,cAAc,EAAE,cAAc,EAC9B,OAAO,EAAE,oBAAoB,GAC5B,oBAAoB,CAOtB;AAED;;;;;GAKG;AACH,wBAAgB,qBAAqB,CACnC,cAAc,EAAE,cAAc,EAC9B,YAAY,EAAE,MAAM,EACpB,OAAO,EAAE,oBAAoB,GAC5B,mBAAmB,CAsFrB"}
@@ -0,0 +1,232 @@
1
+ /**
2
+ * SIF Generator — two-phase SIF generation pipeline.
3
+ *
4
+ * Phase 1 (prepare): Assembles RAG context + prompt for the LLM.
5
+ * Phase 2 (finalize): Validates LLM output, indexes into knowledge store.
6
+ *
7
+ * The module does NOT call any LLM — it stays pure and testable.
8
+ */
9
+ import { logger } from "../utils/logger.js";
10
+ import { parseSifContent } from "./sif-parser.js";
11
+ import { indexSifContent } from "../../core/rag/siebel-indexer.js";
12
+ import { assembleSifContext, } from "./sif-context-assembler.js";
13
+ /**
14
+ * Phase 1: Prepare SIF generation context.
15
+ *
16
+ * Returns a structured context with prompt, templates, existing objects,
17
+ * and validation rules for the LLM to use.
18
+ */
19
+ export function prepareSifGeneration(knowledgeStore, request) {
20
+ logger.info("Preparing SIF generation", {
21
+ types: request.objectTypes.join(","),
22
+ description: request.description.slice(0, 100),
23
+ });
24
+ return assembleSifContext(knowledgeStore, request);
25
+ }
26
+ /**
27
+ * Phase 2: Finalize SIF generation.
28
+ *
29
+ * Validates the LLM-generated XML, checks for collisions with existing objects,
30
+ * runs best-practice checks, and indexes the result into the knowledge store.
31
+ */
32
+ export function finalizeSifGeneration(knowledgeStore, generatedXml, request) {
33
+ logger.info("Finalizing SIF generation", {
34
+ xmlLength: String(generatedXml.length),
35
+ requestTypes: request.objectTypes.join(","),
36
+ });
37
+ const messages = [];
38
+ // 1. Parse the generated XML
39
+ let parseResult;
40
+ try {
41
+ parseResult = parseSifContent(generatedXml, "generated.sif");
42
+ messages.push({
43
+ level: "info",
44
+ message: `Parsed ${parseResult.objects.length} objects, ${parseResult.dependencies.length} dependencies`,
45
+ });
46
+ }
47
+ catch (err) {
48
+ const errMsg = err instanceof Error ? err.message : String(err);
49
+ logger.error("SIF generation validation failed: invalid XML", { error: errMsg });
50
+ messages.push({
51
+ level: "error",
52
+ message: `Invalid SIF XML: ${errMsg}`,
53
+ });
54
+ return {
55
+ sifContent: generatedXml,
56
+ objects: [],
57
+ validation: {
58
+ status: "invalid",
59
+ messages,
60
+ score: 0,
61
+ },
62
+ metadata: {
63
+ generatedAt: new Date().toISOString(),
64
+ requestDescription: request.description,
65
+ objectCount: 0,
66
+ },
67
+ };
68
+ }
69
+ // 2. Check for name collisions with existing objects
70
+ checkNameCollisions(knowledgeStore, parseResult, messages);
71
+ // 3. Run best-practice checks
72
+ runBestPracticeChecks(parseResult, messages);
73
+ // 4. Calculate score
74
+ const score = calculateScore(parseResult, messages);
75
+ // 5. Determine status
76
+ const hasErrors = messages.some((m) => m.level === "error");
77
+ const hasWarnings = messages.some((m) => m.level === "warning");
78
+ const status = hasErrors ? "invalid" : hasWarnings ? "warnings" : "valid";
79
+ // 6. Index into knowledge store (only if valid or warnings)
80
+ if (!hasErrors) {
81
+ try {
82
+ indexSifContent(knowledgeStore, parseResult);
83
+ logger.info("Generated SIF indexed into knowledge store", {
84
+ objectCount: String(parseResult.objects.length),
85
+ });
86
+ }
87
+ catch (err) {
88
+ logger.error("Failed to index generated SIF", {
89
+ error: err instanceof Error ? err.message : String(err),
90
+ });
91
+ }
92
+ }
93
+ const result = {
94
+ sifContent: generatedXml,
95
+ objects: parseResult.objects.map((o) => ({ name: o.name, type: o.type })),
96
+ validation: { status, messages, score },
97
+ metadata: {
98
+ generatedAt: new Date().toISOString(),
99
+ requestDescription: request.description,
100
+ objectCount: parseResult.objects.length,
101
+ },
102
+ };
103
+ logger.info("SIF generation finalized", {
104
+ status,
105
+ score: String(score),
106
+ objectCount: String(parseResult.objects.length),
107
+ });
108
+ return result;
109
+ }
110
+ function checkNameCollisions(knowledgeStore, parseResult, messages) {
111
+ for (const obj of parseResult.objects) {
112
+ try {
113
+ // Search by object name — simpler query for better FTS5 matching
114
+ const existing = knowledgeStore.search(obj.name, 10);
115
+ const collision = existing.find((doc) => doc.sourceType === "siebel_sif" &&
116
+ doc.title.toLowerCase().includes(obj.name.toLowerCase()) &&
117
+ (doc.title.toLowerCase().includes(obj.type) ||
118
+ doc.title.toLowerCase().includes(obj.type.replace(/_/g, " "))));
119
+ if (collision) {
120
+ messages.push({
121
+ level: "warning",
122
+ message: `Name collision: ${obj.type} "${obj.name}" already exists in indexed objects`,
123
+ objectName: obj.name,
124
+ });
125
+ }
126
+ }
127
+ catch {
128
+ // Search might fail on empty knowledge store — that's OK
129
+ }
130
+ }
131
+ }
132
+ function runBestPracticeChecks(parseResult, messages) {
133
+ for (const obj of parseResult.objects) {
134
+ // BCs without TABLE
135
+ if (obj.type === "business_component") {
136
+ const hasTable = obj.properties.some((p) => p.name === "TABLE");
137
+ if (!hasTable) {
138
+ messages.push({
139
+ level: "warning",
140
+ message: `Business Component "${obj.name}" is missing TABLE attribute`,
141
+ objectName: obj.name,
142
+ });
143
+ }
144
+ }
145
+ // Applets without BUS_COMP
146
+ if (obj.type === "applet") {
147
+ const hasBusComp = obj.properties.some((p) => p.name === "BUS_COMP");
148
+ if (!hasBusComp) {
149
+ messages.push({
150
+ level: "warning",
151
+ message: `Applet "${obj.name}" is missing BUS_COMP attribute`,
152
+ objectName: obj.name,
153
+ });
154
+ }
155
+ }
156
+ // Views without BUS_OBJECT
157
+ if (obj.type === "view") {
158
+ const hasBusObject = obj.properties.some((p) => p.name === "BUS_OBJECT");
159
+ if (!hasBusObject) {
160
+ messages.push({
161
+ level: "warning",
162
+ message: `View "${obj.name}" is missing BUS_OBJECT attribute`,
163
+ objectName: obj.name,
164
+ });
165
+ }
166
+ }
167
+ // Objects without name (shouldn't happen but defensive)
168
+ if (!obj.name || obj.name.trim() === "") {
169
+ messages.push({
170
+ level: "error",
171
+ message: "Object found without a NAME attribute",
172
+ objectName: "unknown",
173
+ });
174
+ }
175
+ }
176
+ // Check circular dependencies
177
+ if (parseResult.dependencies.length > 0) {
178
+ // Build adjacency map for cycle detection
179
+ const adjMap = new Map();
180
+ for (const dep of parseResult.dependencies) {
181
+ const fromKey = `${dep.from.type}:${dep.from.name}`;
182
+ const toKey = `${dep.to.type}:${dep.to.name}`;
183
+ const existing = adjMap.get(fromKey) ?? [];
184
+ existing.push(toKey);
185
+ adjMap.set(fromKey, existing);
186
+ }
187
+ // Simple DFS cycle detection
188
+ const visited = new Set();
189
+ const inStack = new Set();
190
+ function hasCycle(node) {
191
+ visited.add(node);
192
+ inStack.add(node);
193
+ for (const neighbor of adjMap.get(node) ?? []) {
194
+ if (inStack.has(neighbor))
195
+ return true;
196
+ if (!visited.has(neighbor) && hasCycle(neighbor))
197
+ return true;
198
+ }
199
+ inStack.delete(node);
200
+ return false;
201
+ }
202
+ for (const key of adjMap.keys()) {
203
+ if (!visited.has(key) && hasCycle(key)) {
204
+ messages.push({
205
+ level: "warning",
206
+ message: "Circular dependency detected in generated objects",
207
+ });
208
+ break;
209
+ }
210
+ }
211
+ }
212
+ }
213
+ function calculateScore(parseResult, messages) {
214
+ let score = 100;
215
+ const errors = messages.filter((m) => m.level === "error").length;
216
+ const warnings = messages.filter((m) => m.level === "warning").length;
217
+ // Deduct for errors
218
+ score -= errors * 30;
219
+ // Deduct for warnings
220
+ score -= warnings * 10;
221
+ // Bonus for having dependencies (well-connected objects)
222
+ if (parseResult.dependencies.length > 0) {
223
+ score = Math.min(score + 5, 100);
224
+ }
225
+ // Bonus for having children (detailed objects)
226
+ const hasChildren = parseResult.objects.some((o) => o.children.length > 0);
227
+ if (hasChildren) {
228
+ score = Math.min(score + 5, 100);
229
+ }
230
+ return Math.max(0, Math.min(100, score));
231
+ }
232
+ //# sourceMappingURL=sif-generator.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sif-generator.js","sourceRoot":"","sources":["../../../src/core/siebel/sif-generator.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAGH,OAAO,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAC;AAC5C,OAAO,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC;AAClD,OAAO,EAAE,eAAe,EAAE,MAAM,kCAAkC,CAAC;AACnE,OAAO,EACL,kBAAkB,GAEnB,MAAM,4BAA4B,CAAC;AAQpC;;;;;GAKG;AACH,MAAM,UAAU,oBAAoB,CAClC,cAA8B,EAC9B,OAA6B;IAE7B,MAAM,CAAC,IAAI,CAAC,0BAA0B,EAAE;QACtC,KAAK,EAAE,OAAO,CAAC,WAAW,CAAC,IAAI,CAAC,GAAG,CAAC;QACpC,WAAW,EAAE,OAAO,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC;KAC/C,CAAC,CAAC;IAEH,OAAO,kBAAkB,CAAC,cAAc,EAAE,OAAO,CAAC,CAAC;AACrD,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,qBAAqB,CACnC,cAA8B,EAC9B,YAAoB,EACpB,OAA6B;IAE7B,MAAM,CAAC,IAAI,CAAC,2BAA2B,EAAE;QACvC,SAAS,EAAE,MAAM,CAAC,YAAY,CAAC,MAAM,CAAC;QACtC,YAAY,EAAE,OAAO,CAAC,WAAW,CAAC,IAAI,CAAC,GAAG,CAAC;KAC5C,CAAC,CAAC;IAEH,MAAM,QAAQ,GAA2B,EAAE,CAAC;IAE5C,6BAA6B;IAC7B,IAAI,WAAiC,CAAC;IACtC,IAAI,CAAC;QACH,WAAW,GAAG,eAAe,CAAC,YAAY,EAAE,eAAe,CAAC,CAAC;QAC7D,QAAQ,CAAC,IAAI,CAAC;YACZ,KAAK,EAAE,MAAM;YACb,OAAO,EAAE,UAAU,WAAW,CAAC,OAAO,CAAC,MAAM,aAAa,WAAW,CAAC,YAAY,CAAC,MAAM,eAAe;SACzG,CAAC,CAAC;IACL,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,MAAM,MAAM,GAAG,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;QAChE,MAAM,CAAC,KAAK,CAAC,+CAA+C,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC,CAAC;QACjF,QAAQ,CAAC,IAAI,CAAC;YACZ,KAAK,EAAE,OAAO;YACd,OAAO,EAAE,oBAAoB,MAAM,EAAE;SACtC,CAAC,CAAC;QAEH,OAAO;YACL,UAAU,EAAE,YAAY;YACxB,OAAO,EAAE,EAAE;YACX,UAAU,EAAE;gBACV,MAAM,EAAE,SAAS;gBACjB,QAAQ;gBACR,KAAK,EAAE,CAAC;aACT;YACD,QAAQ,EAAE;gBACR,WAAW,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;gBACrC,kBAAkB,EAAE,OAAO,CAAC,WAAW;gBACvC,WAAW,EAAE,CAAC;aACf;SACF,CAAC;IACJ,CAAC;IAED,qDAAqD;IACrD,mBAAmB,CAAC,cAAc,EAAE,WAAW,EAAE,QAAQ,CAAC,CAAC;IAE3D,8BAA8B;IAC9B,qBAAqB,CAAC,WAAW,EAAE,QAAQ,CAAC,CAAC;IAE7C,qBAAqB;IACrB,MAAM,KAAK,GAAG,cAAc,CAAC,WAAW,EAAE,QAAQ,CAAC,CAAC;IAEpD,sBAAsB;IACtB,MAAM,SAAS,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,KAAK,OAAO,CAAC,CAAC;IAC5D,MAAM,WAAW,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,KAAK,SAAS,CAAC,CAAC;IAChE,MAAM,MAAM,GAAG,SAAS,CAAC,CAAC,CAAC,SAAkB,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,UAAmB,CAAC,CAAC,CAAC,OAAgB,CAAC;IAErG,4DAA4D;IAC5D,IAAI,CAAC,SAAS,EAAE,CAAC;QACf,IAAI,CAAC;YACH,eAAe,CAAC,cAAc,EAAE,WAAW,CAAC,CAAC;YAC7C,MAAM,CAAC,IAAI,CAAC,4CAA4C,EAAE;gBACxD,WAAW,EAAE,MAAM,CAAC,WAAW,CAAC,OAAO,CAAC,MAAM,CAAC;aAChD,CAAC,CAAC;QACL,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,MAAM,CAAC,KAAK,CAAC,+BAA+B,EAAE;gBAC5C,KAAK,EAAE,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC;aACxD,CAAC,CAAC;QACL,CAAC;IACH,CAAC;IAED,MAAM,MAAM,GAAwB;QAClC,UAAU,EAAE,YAAY;QACxB,OAAO,EAAE,WAAW,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC;QACzE,UAAU,EAAE,EAAE,MAAM,EAAE,QAAQ,EAAE,KAAK,EAAE;QACvC,QAAQ,EAAE;YACR,WAAW,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;YACrC,kBAAkB,EAAE,OAAO,CAAC,WAAW;YACvC,WAAW,EAAE,WAAW,CAAC,OAAO,CAAC,MAAM;SACxC;KACF,CAAC;IAEF,MAAM,CAAC,IAAI,CAAC,0BAA0B,EAAE;QACtC,MAAM;QACN,KAAK,EAAE,MAAM,CAAC,KAAK,CAAC;QACpB,WAAW,EAAE,MAAM,CAAC,WAAW,CAAC,OAAO,CAAC,MAAM,CAAC;KAChD,CAAC,CAAC;IAEH,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,SAAS,mBAAmB,CAC1B,cAA8B,EAC9B,WAAiC,EACjC,QAAgC;IAEhC,KAAK,MAAM,GAAG,IAAI,WAAW,CAAC,OAAO,EAAE,CAAC;QACtC,IAAI,CAAC;YACH,iEAAiE;YACjE,MAAM,QAAQ,GAAG,cAAc,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;YACrD,MAAM,SAAS,GAAG,QAAQ,CAAC,IAAI,CAC7B,CAAC,GAAG,EAAE,EAAE,CACN,GAAG,CAAC,UAAU,KAAK,YAAY;gBAC/B,GAAG,CAAC,KAAK,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC;gBACxD,CAAC,GAAG,CAAC,KAAK,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC;oBAC1C,GAAG,CAAC,KAAK,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC,CAAC,CAClE,CAAC;YAEF,IAAI,SAAS,EAAE,CAAC;gBACd,QAAQ,CAAC,IAAI,CAAC;oBACZ,KAAK,EAAE,SAAS;oBAChB,OAAO,EAAE,mBAAmB,GAAG,CAAC,IAAI,KAAK,GAAG,CAAC,IAAI,qCAAqC;oBACtF,UAAU,EAAE,GAAG,CAAC,IAAI;iBACrB,CAAC,CAAC;YACL,CAAC;QACH,CAAC;QAAC,MAAM,CAAC;YACP,yDAAyD;QAC3D,CAAC;IACH,CAAC;AACH,CAAC;AAED,SAAS,qBAAqB,CAC5B,WAAiC,EACjC,QAAgC;IAEhC,KAAK,MAAM,GAAG,IAAI,WAAW,CAAC,OAAO,EAAE,CAAC;QACtC,oBAAoB;QACpB,IAAI,GAAG,CAAC,IAAI,KAAK,oBAAoB,EAAE,CAAC;YACtC,MAAM,QAAQ,GAAG,GAAG,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,OAAO,CAAC,CAAC;YAChE,IAAI,CAAC,QAAQ,EAAE,CAAC;gBACd,QAAQ,CAAC,IAAI,CAAC;oBACZ,KAAK,EAAE,SAAS;oBAChB,OAAO,EAAE,uBAAuB,GAAG,CAAC,IAAI,8BAA8B;oBACtE,UAAU,EAAE,GAAG,CAAC,IAAI;iBACrB,CAAC,CAAC;YACL,CAAC;QACH,CAAC;QAED,2BAA2B;QAC3B,IAAI,GAAG,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;YAC1B,MAAM,UAAU,GAAG,GAAG,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,UAAU,CAAC,CAAC;YACrE,IAAI,CAAC,UAAU,EAAE,CAAC;gBAChB,QAAQ,CAAC,IAAI,CAAC;oBACZ,KAAK,EAAE,SAAS;oBAChB,OAAO,EAAE,WAAW,GAAG,CAAC,IAAI,iCAAiC;oBAC7D,UAAU,EAAE,GAAG,CAAC,IAAI;iBACrB,CAAC,CAAC;YACL,CAAC;QACH,CAAC;QAED,2BAA2B;QAC3B,IAAI,GAAG,CAAC,IAAI,KAAK,MAAM,EAAE,CAAC;YACxB,MAAM,YAAY,GAAG,GAAG,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,YAAY,CAAC,CAAC;YACzE,IAAI,CAAC,YAAY,EAAE,CAAC;gBAClB,QAAQ,CAAC,IAAI,CAAC;oBACZ,KAAK,EAAE,SAAS;oBAChB,OAAO,EAAE,SAAS,GAAG,CAAC,IAAI,mCAAmC;oBAC7D,UAAU,EAAE,GAAG,CAAC,IAAI;iBACrB,CAAC,CAAC;YACL,CAAC;QACH,CAAC;QAED,wDAAwD;QACxD,IAAI,CAAC,GAAG,CAAC,IAAI,IAAI,GAAG,CAAC,IAAI,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC;YACxC,QAAQ,CAAC,IAAI,CAAC;gBACZ,KAAK,EAAE,OAAO;gBACd,OAAO,EAAE,uCAAuC;gBAChD,UAAU,EAAE,SAAS;aACtB,CAAC,CAAC;QACL,CAAC;IACH,CAAC;IAED,8BAA8B;IAC9B,IAAI,WAAW,CAAC,YAAY,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACxC,0CAA0C;QAC1C,MAAM,MAAM,GAAG,IAAI,GAAG,EAAoB,CAAC;QAC3C,KAAK,MAAM,GAAG,IAAI,WAAW,CAAC,YAAY,EAAE,CAAC;YAC3C,MAAM,OAAO,GAAG,GAAG,GAAG,CAAC,IAAI,CAAC,IAAI,IAAI,GAAG,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;YACpD,MAAM,KAAK,GAAG,GAAG,GAAG,CAAC,EAAE,CAAC,IAAI,IAAI,GAAG,CAAC,EAAE,CAAC,IAAI,EAAE,CAAC;YAC9C,MAAM,QAAQ,GAAG,MAAM,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC;YAC3C,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YACrB,MAAM,CAAC,GAAG,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;QAChC,CAAC;QAED,6BAA6B;QAC7B,MAAM,OAAO,GAAG,IAAI,GAAG,EAAU,CAAC;QAClC,MAAM,OAAO,GAAG,IAAI,GAAG,EAAU,CAAC;QAElC,SAAS,QAAQ,CAAC,IAAY;YAC5B,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;YAClB,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;YAClB,KAAK,MAAM,QAAQ,IAAI,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,EAAE,EAAE,CAAC;gBAC9C,IAAI,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC;oBAAE,OAAO,IAAI,CAAC;gBACvC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,IAAI,QAAQ,CAAC,QAAQ,CAAC;oBAAE,OAAO,IAAI,CAAC;YAChE,CAAC;YACD,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;YACrB,OAAO,KAAK,CAAC;QACf,CAAC;QAED,KAAK,MAAM,GAAG,IAAI,MAAM,CAAC,IAAI,EAAE,EAAE,CAAC;YAChC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC;gBACvC,QAAQ,CAAC,IAAI,CAAC;oBACZ,KAAK,EAAE,SAAS;oBAChB,OAAO,EAAE,mDAAmD;iBAC7D,CAAC,CAAC;gBACH,MAAM;YACR,CAAC;QACH,CAAC;IACH,CAAC;AACH,CAAC;AAED,SAAS,cAAc,CACrB,WAAiC,EACjC,QAAgC;IAEhC,IAAI,KAAK,GAAG,GAAG,CAAC;IAEhB,MAAM,MAAM,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,KAAK,OAAO,CAAC,CAAC,MAAM,CAAC;IAClE,MAAM,QAAQ,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,KAAK,SAAS,CAAC,CAAC,MAAM,CAAC;IAEtE,oBAAoB;IACpB,KAAK,IAAI,MAAM,GAAG,EAAE,CAAC;IAErB,sBAAsB;IACtB,KAAK,IAAI,QAAQ,GAAG,EAAE,CAAC;IAEvB,yDAAyD;IACzD,IAAI,WAAW,CAAC,YAAY,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACxC,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,KAAK,GAAG,CAAC,EAAE,GAAG,CAAC,CAAC;IACnC,CAAC;IAED,+CAA+C;IAC/C,MAAM,WAAW,GAAG,WAAW,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;IAC3E,IAAI,WAAW,EAAE,CAAC;QAChB,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,KAAK,GAAG,CAAC,EAAE,GAAG,CAAC,CAAC;IACnC,CAAC;IAED,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC,CAAC;AAC3C,CAAC"}
@@ -0,0 +1,16 @@
1
+ /**
2
+ * SIF Parser — parses Siebel Import Files (.sif) into typed Siebel objects.
3
+ *
4
+ * SIF files are XML-based archives following the hierarchy:
5
+ * Repository → Project → Object Types (Applet, BC, BO, etc.) → Child Elements
6
+ */
7
+ import type { SiebelSifParseResult } from "../../schemas/siebel.schema.js";
8
+ /**
9
+ * Parse SIF XML content string into typed Siebel objects.
10
+ */
11
+ export declare function parseSifContent(content: string, fileName: string): SiebelSifParseResult;
12
+ /**
13
+ * Parse SIF from a file path.
14
+ */
15
+ export declare function parseSifFile(filePath: string): Promise<SiebelSifParseResult>;
16
+ //# sourceMappingURL=sif-parser.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sif-parser.d.ts","sourceRoot":"","sources":["../../../src/core/siebel/sif-parser.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAOH,OAAO,KAAK,EAKV,oBAAoB,EAErB,MAAM,gCAAgC,CAAC;AA0CxC;;GAEG;AACH,wBAAgB,eAAe,CAAC,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,oBAAoB,CAqEvF;AAED;;GAEG;AACH,wBAAsB,YAAY,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,oBAAoB,CAAC,CASlF"}