@mcp-graph-workflow/mcp-graph 5.5.2 → 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 (283) 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/compact-context.d.ts.map +1 -1
  13. package/dist/core/context/compact-context.js +6 -28
  14. package/dist/core/context/compact-context.js.map +1 -1
  15. package/dist/core/context/rag-context.d.ts.map +1 -1
  16. package/dist/core/context/rag-context.js +34 -5
  17. package/dist/core/context/rag-context.js.map +1 -1
  18. package/dist/core/designer/traceability-matrix.js +1 -1
  19. package/dist/core/designer/traceability-matrix.js.map +1 -1
  20. package/dist/core/events/event-types.d.ts +63 -1
  21. package/dist/core/events/event-types.d.ts.map +1 -1
  22. package/dist/core/graph/mermaid-export.d.ts.map +1 -1
  23. package/dist/core/graph/mermaid-export.js +1 -5
  24. package/dist/core/graph/mermaid-export.js.map +1 -1
  25. package/dist/core/implementer/tdd-checker.d.ts +1 -1
  26. package/dist/core/implementer/tdd-checker.d.ts.map +1 -1
  27. package/dist/core/implementer/tdd-checker.js +2 -2
  28. package/dist/core/implementer/tdd-checker.js.map +1 -1
  29. package/dist/core/importer/prd-to-graph.d.ts.map +1 -1
  30. package/dist/core/importer/prd-to-graph.js +28 -2
  31. package/dist/core/importer/prd-to-graph.js.map +1 -1
  32. package/dist/core/integrations/integration-orchestrator.d.ts +12 -0
  33. package/dist/core/integrations/integration-orchestrator.d.ts.map +1 -1
  34. package/dist/core/integrations/integration-orchestrator.js +36 -2
  35. package/dist/core/integrations/integration-orchestrator.js.map +1 -1
  36. package/dist/core/journey/journey-store.d.ts +137 -0
  37. package/dist/core/journey/journey-store.d.ts.map +1 -0
  38. package/dist/core/journey/journey-store.js +210 -0
  39. package/dist/core/journey/journey-store.js.map +1 -0
  40. package/dist/core/listener/backlog-health.d.ts.map +1 -1
  41. package/dist/core/listener/backlog-health.js +10 -2
  42. package/dist/core/listener/backlog-health.js.map +1 -1
  43. package/dist/core/listener/feedback-readiness.d.ts.map +1 -1
  44. package/dist/core/listener/feedback-readiness.js +2 -5
  45. package/dist/core/listener/feedback-readiness.js.map +1 -1
  46. package/dist/core/parser/classify.d.ts +1 -0
  47. package/dist/core/parser/classify.d.ts.map +1 -1
  48. package/dist/core/parser/classify.js +13 -0
  49. package/dist/core/parser/classify.js.map +1 -1
  50. package/dist/core/parser/extract.d.ts.map +1 -1
  51. package/dist/core/parser/extract.js +8 -2
  52. package/dist/core/parser/extract.js.map +1 -1
  53. package/dist/core/parser/file-reader.d.ts.map +1 -1
  54. package/dist/core/parser/file-reader.js +16 -1
  55. package/dist/core/parser/file-reader.js.map +1 -1
  56. package/dist/core/parser/read-docx.d.ts +17 -0
  57. package/dist/core/parser/read-docx.d.ts.map +1 -0
  58. package/dist/core/parser/read-docx.js +79 -0
  59. package/dist/core/parser/read-docx.js.map +1 -0
  60. package/dist/core/parser/read-swagger.d.ts +49 -0
  61. package/dist/core/parser/read-swagger.d.ts.map +1 -0
  62. package/dist/core/parser/read-swagger.js +332 -0
  63. package/dist/core/parser/read-swagger.js.map +1 -0
  64. package/dist/core/planner/decompose.d.ts.map +1 -1
  65. package/dist/core/planner/decompose.js +5 -4
  66. package/dist/core/planner/decompose.js.map +1 -1
  67. package/dist/core/planner/dependency-chain.d.ts.map +1 -1
  68. package/dist/core/planner/dependency-chain.js +3 -0
  69. package/dist/core/planner/dependency-chain.js.map +1 -1
  70. package/dist/core/planner/lifecycle-phase.d.ts.map +1 -1
  71. package/dist/core/planner/lifecycle-phase.js +3 -5
  72. package/dist/core/planner/lifecycle-phase.js.map +1 -1
  73. package/dist/core/planner/next-task.d.ts.map +1 -1
  74. package/dist/core/planner/next-task.js +7 -6
  75. package/dist/core/planner/next-task.js.map +1 -1
  76. package/dist/core/rag/chunk-text.d.ts +5 -0
  77. package/dist/core/rag/chunk-text.d.ts.map +1 -1
  78. package/dist/core/rag/chunk-text.js +135 -0
  79. package/dist/core/rag/chunk-text.js.map +1 -1
  80. package/dist/core/rag/code-context-indexer.d.ts +27 -0
  81. package/dist/core/rag/code-context-indexer.d.ts.map +1 -0
  82. package/dist/core/rag/code-context-indexer.js +53 -0
  83. package/dist/core/rag/code-context-indexer.js.map +1 -0
  84. package/dist/core/rag/decision-indexer.d.ts +20 -0
  85. package/dist/core/rag/decision-indexer.d.ts.map +1 -0
  86. package/dist/core/rag/decision-indexer.js +32 -0
  87. package/dist/core/rag/decision-indexer.js.map +1 -0
  88. package/dist/core/rag/journey-indexer.d.ts +16 -0
  89. package/dist/core/rag/journey-indexer.d.ts.map +1 -0
  90. package/dist/core/rag/journey-indexer.js +182 -0
  91. package/dist/core/rag/journey-indexer.js.map +1 -0
  92. package/dist/core/rag/knowledge-feedback.d.ts +15 -0
  93. package/dist/core/rag/knowledge-feedback.d.ts.map +1 -0
  94. package/dist/core/rag/knowledge-feedback.js +46 -0
  95. package/dist/core/rag/knowledge-feedback.js.map +1 -0
  96. package/dist/core/rag/knowledge-linker.d.ts +20 -0
  97. package/dist/core/rag/knowledge-linker.d.ts.map +1 -0
  98. package/dist/core/rag/knowledge-linker.js +107 -0
  99. package/dist/core/rag/knowledge-linker.js.map +1 -0
  100. package/dist/core/rag/knowledge-quality.d.ts +31 -0
  101. package/dist/core/rag/knowledge-quality.d.ts.map +1 -0
  102. package/dist/core/rag/knowledge-quality.js +127 -0
  103. package/dist/core/rag/knowledge-quality.js.map +1 -0
  104. package/dist/core/rag/knowledge-synthesizer.d.ts +17 -0
  105. package/dist/core/rag/knowledge-synthesizer.d.ts.map +1 -0
  106. package/dist/core/rag/knowledge-synthesizer.js +115 -0
  107. package/dist/core/rag/knowledge-synthesizer.js.map +1 -0
  108. package/dist/core/rag/memory-rag-query.d.ts +3 -3
  109. package/dist/core/rag/memory-rag-query.d.ts.map +1 -1
  110. package/dist/core/rag/memory-rag-query.js +18 -0
  111. package/dist/core/rag/memory-rag-query.js.map +1 -1
  112. package/dist/core/rag/multi-strategy-retrieval.d.ts +46 -0
  113. package/dist/core/rag/multi-strategy-retrieval.d.ts.map +1 -0
  114. package/dist/core/rag/multi-strategy-retrieval.js +140 -0
  115. package/dist/core/rag/multi-strategy-retrieval.js.map +1 -0
  116. package/dist/core/rag/rag-pipeline.d.ts +11 -0
  117. package/dist/core/rag/rag-pipeline.d.ts.map +1 -1
  118. package/dist/core/rag/rag-pipeline.js +39 -0
  119. package/dist/core/rag/rag-pipeline.js.map +1 -1
  120. package/dist/core/rag/siebel-indexer.d.ts +16 -0
  121. package/dist/core/rag/siebel-indexer.d.ts.map +1 -0
  122. package/dist/core/rag/siebel-indexer.js +75 -0
  123. package/dist/core/rag/siebel-indexer.js.map +1 -0
  124. package/dist/core/rag/swagger-indexer.d.ts +16 -0
  125. package/dist/core/rag/swagger-indexer.d.ts.map +1 -0
  126. package/dist/core/rag/swagger-indexer.js +119 -0
  127. package/dist/core/rag/swagger-indexer.js.map +1 -0
  128. package/dist/core/rag/validation-indexer.d.ts +23 -0
  129. package/dist/core/rag/validation-indexer.d.ts.map +1 -0
  130. package/dist/core/rag/validation-indexer.js +35 -0
  131. package/dist/core/rag/validation-indexer.js.map +1 -0
  132. package/dist/core/siebel/composer-automation.d.ts +77 -0
  133. package/dist/core/siebel/composer-automation.d.ts.map +1 -0
  134. package/dist/core/siebel/composer-automation.js +110 -0
  135. package/dist/core/siebel/composer-automation.js.map +1 -0
  136. package/dist/core/siebel/dependency-analyzer.d.ts +24 -0
  137. package/dist/core/siebel/dependency-analyzer.d.ts.map +1 -0
  138. package/dist/core/siebel/dependency-analyzer.js +174 -0
  139. package/dist/core/siebel/dependency-analyzer.js.map +1 -0
  140. package/dist/core/siebel/siebel-config.d.ts +28 -0
  141. package/dist/core/siebel/siebel-config.d.ts.map +1 -0
  142. package/dist/core/siebel/siebel-config.js +86 -0
  143. package/dist/core/siebel/siebel-config.js.map +1 -0
  144. package/dist/core/siebel/sif-context-assembler.d.ts +37 -0
  145. package/dist/core/siebel/sif-context-assembler.d.ts.map +1 -0
  146. package/dist/core/siebel/sif-context-assembler.js +259 -0
  147. package/dist/core/siebel/sif-context-assembler.js.map +1 -0
  148. package/dist/core/siebel/sif-generator.d.ts +26 -0
  149. package/dist/core/siebel/sif-generator.d.ts.map +1 -0
  150. package/dist/core/siebel/sif-generator.js +232 -0
  151. package/dist/core/siebel/sif-generator.js.map +1 -0
  152. package/dist/core/siebel/sif-parser.d.ts +16 -0
  153. package/dist/core/siebel/sif-parser.d.ts.map +1 -0
  154. package/dist/core/siebel/sif-parser.js +355 -0
  155. package/dist/core/siebel/sif-parser.js.map +1 -0
  156. package/dist/core/siebel/sif-templates.d.ts +45 -0
  157. package/dist/core/siebel/sif-templates.d.ts.map +1 -0
  158. package/dist/core/siebel/sif-templates.js +179 -0
  159. package/dist/core/siebel/sif-templates.js.map +1 -0
  160. package/dist/core/siebel/sif-to-graph.d.ts +20 -0
  161. package/dist/core/siebel/sif-to-graph.d.ts.map +1 -0
  162. package/dist/core/siebel/sif-to-graph.js +176 -0
  163. package/dist/core/siebel/sif-to-graph.js.map +1 -0
  164. package/dist/core/store/knowledge-store.d.ts +25 -0
  165. package/dist/core/store/knowledge-store.d.ts.map +1 -1
  166. package/dist/core/store/knowledge-store.js +73 -1
  167. package/dist/core/store/knowledge-store.js.map +1 -1
  168. package/dist/core/store/migrations.d.ts.map +1 -1
  169. package/dist/core/store/migrations.js +107 -0
  170. package/dist/core/store/migrations.js.map +1 -1
  171. package/dist/core/store/sqlite-store.d.ts.map +1 -1
  172. package/dist/core/store/sqlite-store.js +11 -7
  173. package/dist/core/store/sqlite-store.js.map +1 -1
  174. package/dist/core/utils/blocked-helpers.d.ts +14 -0
  175. package/dist/core/utils/blocked-helpers.d.ts.map +1 -0
  176. package/dist/core/utils/blocked-helpers.js +19 -0
  177. package/dist/core/utils/blocked-helpers.js.map +1 -0
  178. package/dist/core/utils/text.d.ts +9 -0
  179. package/dist/core/utils/text.d.ts.map +1 -0
  180. package/dist/core/utils/text.js +13 -0
  181. package/dist/core/utils/text.js.map +1 -0
  182. package/dist/mcp/lifecycle-wrapper.d.ts.map +1 -1
  183. package/dist/mcp/lifecycle-wrapper.js +1 -0
  184. package/dist/mcp/lifecycle-wrapper.js.map +1 -1
  185. package/dist/mcp/tools/index.d.ts.map +1 -1
  186. package/dist/mcp/tools/index.js +26 -0
  187. package/dist/mcp/tools/index.js.map +1 -1
  188. package/dist/mcp/tools/journey.d.ts +4 -0
  189. package/dist/mcp/tools/journey.d.ts.map +1 -0
  190. package/dist/mcp/tools/journey.js +154 -0
  191. package/dist/mcp/tools/journey.js.map +1 -0
  192. package/dist/mcp/tools/knowledge-feedback.d.ts +8 -0
  193. package/dist/mcp/tools/knowledge-feedback.d.ts.map +1 -0
  194. package/dist/mcp/tools/knowledge-feedback.js +35 -0
  195. package/dist/mcp/tools/knowledge-feedback.js.map +1 -0
  196. package/dist/mcp/tools/knowledge-stats.d.ts +9 -0
  197. package/dist/mcp/tools/knowledge-stats.d.ts.map +1 -0
  198. package/dist/mcp/tools/knowledge-stats.js +83 -0
  199. package/dist/mcp/tools/knowledge-stats.js.map +1 -0
  200. package/dist/mcp/tools/plan-sprint.d.ts.map +1 -1
  201. package/dist/mcp/tools/plan-sprint.js +7 -1
  202. package/dist/mcp/tools/plan-sprint.js.map +1 -1
  203. package/dist/mcp/tools/rag-context.d.ts.map +1 -1
  204. package/dist/mcp/tools/rag-context.js +43 -2
  205. package/dist/mcp/tools/rag-context.js.map +1 -1
  206. package/dist/mcp/tools/reindex-knowledge.d.ts.map +1 -1
  207. package/dist/mcp/tools/reindex-knowledge.js +23 -2
  208. package/dist/mcp/tools/reindex-knowledge.js.map +1 -1
  209. package/dist/mcp/tools/siebel-analyze.d.ts +8 -0
  210. package/dist/mcp/tools/siebel-analyze.d.ts.map +1 -0
  211. package/dist/mcp/tools/siebel-analyze.js +107 -0
  212. package/dist/mcp/tools/siebel-analyze.js.map +1 -0
  213. package/dist/mcp/tools/siebel-composer.d.ts +12 -0
  214. package/dist/mcp/tools/siebel-composer.d.ts.map +1 -0
  215. package/dist/mcp/tools/siebel-composer.js +59 -0
  216. package/dist/mcp/tools/siebel-composer.js.map +1 -0
  217. package/dist/mcp/tools/siebel-env.d.ts +8 -0
  218. package/dist/mcp/tools/siebel-env.d.ts.map +1 -0
  219. package/dist/mcp/tools/siebel-env.js +60 -0
  220. package/dist/mcp/tools/siebel-env.js.map +1 -0
  221. package/dist/mcp/tools/siebel-generate-sif.d.ts +8 -0
  222. package/dist/mcp/tools/siebel-generate-sif.d.ts.map +1 -0
  223. package/dist/mcp/tools/siebel-generate-sif.js +91 -0
  224. package/dist/mcp/tools/siebel-generate-sif.js.map +1 -0
  225. package/dist/mcp/tools/siebel-import-docs.d.ts +9 -0
  226. package/dist/mcp/tools/siebel-import-docs.d.ts.map +1 -0
  227. package/dist/mcp/tools/siebel-import-docs.js +106 -0
  228. package/dist/mcp/tools/siebel-import-docs.js.map +1 -0
  229. package/dist/mcp/tools/siebel-import-sif.d.ts +8 -0
  230. package/dist/mcp/tools/siebel-import-sif.d.ts.map +1 -0
  231. package/dist/mcp/tools/siebel-import-sif.js +68 -0
  232. package/dist/mcp/tools/siebel-import-sif.js.map +1 -0
  233. package/dist/mcp/tools/siebel-search.d.ts +8 -0
  234. package/dist/mcp/tools/siebel-search.d.ts.map +1 -0
  235. package/dist/mcp/tools/siebel-search.js +47 -0
  236. package/dist/mcp/tools/siebel-search.js.map +1 -0
  237. package/dist/mcp/tools/siebel-validate.d.ts +8 -0
  238. package/dist/mcp/tools/siebel-validate.d.ts.map +1 -0
  239. package/dist/mcp/tools/siebel-validate.js +107 -0
  240. package/dist/mcp/tools/siebel-validate.js.map +1 -0
  241. package/dist/mcp/tools/update-status.d.ts.map +1 -1
  242. package/dist/mcp/tools/update-status.js +34 -9
  243. package/dist/mcp/tools/update-status.js.map +1 -1
  244. package/dist/mcp/tools/validate.d.ts.map +1 -1
  245. package/dist/mcp/tools/validate.js +21 -0
  246. package/dist/mcp/tools/validate.js.map +1 -1
  247. package/dist/schemas/designer-schema.d.ts +3 -3
  248. package/dist/schemas/knowledge.schema.d.ts +66 -0
  249. package/dist/schemas/knowledge.schema.d.ts.map +1 -1
  250. package/dist/schemas/knowledge.schema.js +28 -0
  251. package/dist/schemas/knowledge.schema.js.map +1 -1
  252. package/dist/schemas/listener-schema.d.ts +9 -0
  253. package/dist/schemas/listener-schema.d.ts.map +1 -1
  254. package/dist/schemas/listener-schema.js +5 -0
  255. package/dist/schemas/listener-schema.js.map +1 -1
  256. package/dist/schemas/siebel.schema.d.ts +564 -0
  257. package/dist/schemas/siebel.schema.d.ts.map +1 -0
  258. package/dist/schemas/siebel.schema.js +197 -0
  259. package/dist/schemas/siebel.schema.js.map +1 -0
  260. package/dist/web/dashboard/dist/assets/{benchmark-tab-C5fwIqgM.js → benchmark-tab-WCcv55oB.js} +1 -1
  261. package/dist/web/dashboard/dist/assets/{context-tab-ChCyrRlr.js → context-tab-CYnMjkHN.js} +1 -1
  262. package/dist/web/dashboard/dist/assets/{gitnexus-tab-DnlGT63w.js → gitnexus-tab-Dj0DERUy.js} +1 -1
  263. package/dist/web/dashboard/dist/assets/graph-tab-tI93ZxxW.js +1 -0
  264. package/dist/web/dashboard/dist/assets/graph-utils-DeQEwmsr.js +1 -0
  265. package/dist/web/dashboard/dist/assets/index-B1PLsGu1.js +55 -0
  266. package/dist/web/dashboard/dist/assets/index-DKvjo_C5.css +1 -0
  267. package/dist/web/dashboard/dist/assets/{index-DlZhNCGR.js → index-NmopQGmQ.js} +1 -1
  268. package/dist/web/dashboard/dist/assets/{insights-tab-Cj4f85vS.js → insights-tab-X7u4J-xv.js} +1 -1
  269. package/dist/web/dashboard/dist/assets/journey-tab-Cpz6_3mB.js +1 -0
  270. package/dist/web/dashboard/dist/assets/{logs-tab-C4C2Vn8-.js → logs-tab-QB__4Xdl.js} +1 -1
  271. package/dist/web/dashboard/dist/assets/{memories-tab-NtNwoxbT.js → memories-tab-Dry9wz7q.js} +1 -1
  272. package/dist/web/dashboard/dist/assets/prd-backlog-tab-OXTksZKv.js +1 -0
  273. package/dist/web/dashboard/dist/assets/siebel-tab-x7OCuCmb.js +3 -0
  274. package/dist/web/dashboard/dist/assets/{skills-tab-CIj4z1Ol.js → skills-tab-DeUEKmpZ.js} +1 -1
  275. package/dist/web/dashboard/dist/assets/style-C-e8BTyP.js +7 -0
  276. package/dist/web/dashboard/dist/index.html +2 -2
  277. package/package.json +3 -1
  278. package/dist/web/dashboard/dist/assets/graph-tab-DjV9RD41.js +0 -1
  279. package/dist/web/dashboard/dist/assets/graph-utils-C6bvcT4d.js +0 -7
  280. package/dist/web/dashboard/dist/assets/index-DQqYFXms.css +0 -1
  281. package/dist/web/dashboard/dist/assets/index-dCyMex_p.js +0 -53
  282. package/dist/web/dashboard/dist/assets/prd-backlog-tab-Bxt7qiVG.js +0 -1
  283. /package/dist/web/dashboard/dist/assets/{graph-utils-BZV40eAE.css → style-BZV40eAE.css} +0 -0
@@ -0,0 +1,355 @@
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 { XMLParser } from "fast-xml-parser";
8
+ import { readFile } from "node:fs/promises";
9
+ import { basename } from "node:path";
10
+ import { logger } from "../utils/logger.js";
11
+ import { FileNotFoundError, ValidationError } from "../utils/errors.js";
12
+ /**
13
+ * Mapping from SIF XML tag names to Siebel object types.
14
+ */
15
+ const TAG_TO_TYPE = {
16
+ APPLET: "applet",
17
+ BUSINESS_COMPONENT: "business_component",
18
+ BUSINESS_OBJECT: "business_object",
19
+ VIEW: "view",
20
+ SCREEN: "screen",
21
+ WORKFLOW: "workflow",
22
+ INTEGRATION_OBJECT: "integration_object",
23
+ BUSINESS_SERVICE: "business_service",
24
+ WEB_TEMPLATE: "web_template",
25
+ PICK_LIST: "pick_list",
26
+ TABLE: "table",
27
+ };
28
+ /**
29
+ * Child element tag names and their mapped types.
30
+ */
31
+ const CHILD_TAG_TO_TYPE = {
32
+ FIELD: "field",
33
+ COLUMN: "column",
34
+ CONTROL: "control",
35
+ LIST_COLUMN: "list_column",
36
+ LINK: "link",
37
+ APPLET_WEB_TEMPLATE: "web_template",
38
+ VIEW_WEB_TEMPLATE: "web_template",
39
+ VIEW_APPLET: "applet",
40
+ SCREEN_VIEW: "view",
41
+ APPLET_METHOD_MENU_ITEM: "menu_item",
42
+ BUSINESS_OBJECT_COMPONENT: "business_component",
43
+ BUSINESS_SERVICE_METHOD: "business_service",
44
+ WORKFLOW_STEP: "workflow",
45
+ INTEGRATION_COMPONENT: "business_component",
46
+ };
47
+ /** Reserved XML attribute names that are not properties. */
48
+ const RESERVED_ATTRS = new Set(["NAME", "INACTIVE"]);
49
+ /**
50
+ * Parse SIF XML content string into typed Siebel objects.
51
+ */
52
+ export function parseSifContent(content, fileName) {
53
+ if (!content || content.trim().length === 0) {
54
+ throw new ValidationError("SIF content is empty", [{ field: "content", message: "empty" }]);
55
+ }
56
+ const parser = new XMLParser({
57
+ ignoreAttributes: false,
58
+ attributeNamePrefix: "@_",
59
+ allowBooleanAttributes: true,
60
+ parseAttributeValue: false,
61
+ isArray: () => {
62
+ // Force array for repeating elements
63
+ return true;
64
+ },
65
+ });
66
+ let parsed;
67
+ try {
68
+ parsed = parser.parse(content);
69
+ }
70
+ catch (err) {
71
+ throw new ValidationError("Invalid SIF XML", [
72
+ { field: "xml", message: err instanceof Error ? err.message : String(err) },
73
+ ]);
74
+ }
75
+ // Navigate to REPOSITORY root
76
+ const repositories = getArray(parsed, "REPOSITORY");
77
+ if (repositories.length === 0) {
78
+ throw new ValidationError("SIF file missing REPOSITORY root element", [
79
+ { field: "structure", message: "no REPOSITORY found" },
80
+ ]);
81
+ }
82
+ const repo = repositories[0];
83
+ const repositoryName = getAttr(repo, "NAME") ?? "Unknown";
84
+ // Navigate to PROJECT(s)
85
+ const projects = getArray(repo, "PROJECT");
86
+ const projectName = projects.length > 0 ? getAttr(projects[0], "NAME") : undefined;
87
+ const objects = [];
88
+ for (const proj of projects) {
89
+ const projObj = proj;
90
+ const projName = getAttr(projObj, "NAME") ?? "Unknown";
91
+ extractObjectsFromProject(projObj, projName, objects);
92
+ }
93
+ const dependencies = inferDependencies(objects);
94
+ const objectTypes = [...new Set(objects.map((o) => o.type))];
95
+ const metadata = {
96
+ fileName,
97
+ repositoryName,
98
+ projectName,
99
+ objectCount: objects.length,
100
+ objectTypes,
101
+ extractedAt: new Date().toISOString(),
102
+ };
103
+ logger.info("SIF parsed", {
104
+ fileName,
105
+ objectCount: String(objects.length),
106
+ dependencyCount: String(dependencies.length),
107
+ objectTypes: objectTypes.join(","),
108
+ });
109
+ return { metadata, objects, dependencies };
110
+ }
111
+ /**
112
+ * Parse SIF from a file path.
113
+ */
114
+ export async function parseSifFile(filePath) {
115
+ let content;
116
+ try {
117
+ content = await readFile(filePath, "utf-8");
118
+ }
119
+ catch {
120
+ throw new FileNotFoundError(filePath);
121
+ }
122
+ return parseSifContent(content, basename(filePath));
123
+ }
124
+ /**
125
+ * Extract top-level objects from a PROJECT element.
126
+ */
127
+ function extractObjectsFromProject(projObj, projectName, objects) {
128
+ for (const [tag, siebelType] of Object.entries(TAG_TO_TYPE)) {
129
+ const elements = getArray(projObj, tag);
130
+ for (const elem of elements) {
131
+ const obj = elementToSiebelObject(elem, siebelType, projectName);
132
+ if (obj) {
133
+ objects.push(obj);
134
+ }
135
+ }
136
+ }
137
+ }
138
+ /**
139
+ * Convert a single XML element into a SiebelObject.
140
+ */
141
+ function elementToSiebelObject(elem, type, projectName) {
142
+ const name = getAttr(elem, "NAME");
143
+ if (!name)
144
+ return null;
145
+ const properties = extractProperties(elem);
146
+ const children = extractChildren(elem, name);
147
+ const inactive = getAttr(elem, "INACTIVE") === "Y";
148
+ return {
149
+ name,
150
+ type,
151
+ project: projectName,
152
+ properties,
153
+ children,
154
+ inactive: inactive || undefined,
155
+ };
156
+ }
157
+ /**
158
+ * Extract properties from element attributes.
159
+ */
160
+ function extractProperties(elem) {
161
+ const props = [];
162
+ for (const [key, value] of Object.entries(elem)) {
163
+ if (key.startsWith("@_") && !RESERVED_ATTRS.has(key.slice(2))) {
164
+ props.push({ name: key.slice(2), value: String(value) });
165
+ }
166
+ }
167
+ return props;
168
+ }
169
+ /**
170
+ * Extract child elements from a parent element.
171
+ */
172
+ function extractChildren(elem, parentName) {
173
+ const children = [];
174
+ for (const [tag, childType] of Object.entries(CHILD_TAG_TO_TYPE)) {
175
+ const elements = getArray(elem, tag);
176
+ for (const child of elements) {
177
+ const childObj = child;
178
+ const name = getAttr(childObj, "NAME");
179
+ if (!name)
180
+ continue;
181
+ children.push({
182
+ name,
183
+ type: childType,
184
+ properties: extractProperties(childObj),
185
+ children: [],
186
+ parentName,
187
+ });
188
+ }
189
+ }
190
+ return children;
191
+ }
192
+ /**
193
+ * Infer dependencies between Siebel objects based on known patterns.
194
+ */
195
+ function inferDependencies(objects) {
196
+ const deps = [];
197
+ const objectIndex = new Map();
198
+ for (const obj of objects) {
199
+ objectIndex.set(`${obj.type}:${obj.name}`, obj);
200
+ }
201
+ for (const obj of objects) {
202
+ // Applet → BC (via BUS_COMP attribute)
203
+ if (obj.type === "applet") {
204
+ const busComp = findProperty(obj, "BUS_COMP");
205
+ if (busComp && objectIndex.has(`business_component:${busComp}`)) {
206
+ deps.push({
207
+ from: { name: obj.name, type: "applet" },
208
+ to: { name: busComp, type: "business_component" },
209
+ relationType: "references",
210
+ inferred: true,
211
+ });
212
+ }
213
+ }
214
+ // View → BO (via BUS_OBJECT attribute)
215
+ if (obj.type === "view") {
216
+ const busObject = findProperty(obj, "BUS_OBJECT");
217
+ if (busObject && objectIndex.has(`business_object:${busObject}`)) {
218
+ deps.push({
219
+ from: { name: obj.name, type: "view" },
220
+ to: { name: busObject, type: "business_object" },
221
+ relationType: "references",
222
+ inferred: true,
223
+ });
224
+ }
225
+ // View → Applet (via VIEW_APPLET children)
226
+ for (const child of obj.children) {
227
+ if (child.type === "applet") {
228
+ const appletName = findProperty(child, "APPLET") ?? child.name;
229
+ if (objectIndex.has(`applet:${appletName}`)) {
230
+ deps.push({
231
+ from: { name: obj.name, type: "view" },
232
+ to: { name: appletName, type: "applet" },
233
+ relationType: "contains",
234
+ inferred: true,
235
+ });
236
+ }
237
+ }
238
+ }
239
+ }
240
+ // Screen → View (via SCREEN_VIEW children)
241
+ if (obj.type === "screen") {
242
+ for (const child of obj.children) {
243
+ if (child.type === "view") {
244
+ const viewName = findProperty(child, "VIEW") ?? child.name;
245
+ if (objectIndex.has(`view:${viewName}`)) {
246
+ deps.push({
247
+ from: { name: obj.name, type: "screen" },
248
+ to: { name: viewName, type: "view" },
249
+ relationType: "contains",
250
+ inferred: true,
251
+ });
252
+ }
253
+ }
254
+ }
255
+ }
256
+ // BO → BC (via BUSINESS_OBJECT_COMPONENT children)
257
+ if (obj.type === "business_object") {
258
+ for (const child of obj.children) {
259
+ if (child.type === "business_component") {
260
+ const bcName = findProperty(child, "BUS_COMP") ?? child.name;
261
+ if (objectIndex.has(`business_component:${bcName}`)) {
262
+ deps.push({
263
+ from: { name: obj.name, type: "business_object" },
264
+ to: { name: bcName, type: "business_component" },
265
+ relationType: "contains",
266
+ inferred: true,
267
+ });
268
+ }
269
+ }
270
+ }
271
+ }
272
+ // Workflow → BO (via BUS_OBJECT attribute)
273
+ if (obj.type === "workflow") {
274
+ const busObject = findProperty(obj, "BUS_OBJECT");
275
+ if (busObject && objectIndex.has(`business_object:${busObject}`)) {
276
+ deps.push({
277
+ from: { name: obj.name, type: "workflow" },
278
+ to: { name: busObject, type: "business_object" },
279
+ relationType: "references",
280
+ inferred: true,
281
+ });
282
+ }
283
+ // Workflow → BS (via workflow steps)
284
+ for (const child of obj.children) {
285
+ const busService = findProperty(child, "BUS_SERVICE");
286
+ if (busService && objectIndex.has(`business_service:${busService}`)) {
287
+ deps.push({
288
+ from: { name: obj.name, type: "workflow" },
289
+ to: { name: busService, type: "business_service" },
290
+ relationType: "uses",
291
+ inferred: true,
292
+ });
293
+ }
294
+ }
295
+ }
296
+ // Integration Object → BC (via BUS_COMP attribute or INTEGRATION_COMPONENT children)
297
+ if (obj.type === "integration_object") {
298
+ const busComp = findProperty(obj, "BUS_COMP");
299
+ if (busComp && objectIndex.has(`business_component:${busComp}`)) {
300
+ deps.push({
301
+ from: { name: obj.name, type: "integration_object" },
302
+ to: { name: busComp, type: "business_component" },
303
+ relationType: "references",
304
+ inferred: true,
305
+ });
306
+ }
307
+ }
308
+ // BC → Table (via TABLE attribute)
309
+ if (obj.type === "business_component") {
310
+ const table = findProperty(obj, "TABLE");
311
+ if (table) {
312
+ deps.push({
313
+ from: { name: obj.name, type: "business_component" },
314
+ to: { name: table, type: "table" },
315
+ relationType: "based_on",
316
+ inferred: true,
317
+ });
318
+ }
319
+ // BC → BC (via LINK children's CHILD_BC)
320
+ for (const child of obj.children) {
321
+ if (child.type === "link") {
322
+ const childBc = findProperty(child, "CHILD_BC");
323
+ if (childBc && objectIndex.has(`business_component:${childBc}`)) {
324
+ deps.push({
325
+ from: { name: obj.name, type: "business_component" },
326
+ to: { name: childBc, type: "business_component" },
327
+ relationType: "linked_to",
328
+ inferred: true,
329
+ });
330
+ }
331
+ }
332
+ }
333
+ }
334
+ }
335
+ return deps;
336
+ }
337
+ /** Find a property value by name. */
338
+ function findProperty(obj, propName) {
339
+ return obj.properties.find((p) => p.name === propName)?.value;
340
+ }
341
+ /** Safely get an array of elements from parsed XML. */
342
+ function getArray(obj, key) {
343
+ const val = obj[key];
344
+ if (Array.isArray(val))
345
+ return val;
346
+ if (val != null)
347
+ return [val];
348
+ return [];
349
+ }
350
+ /** Get an XML attribute value. */
351
+ function getAttr(obj, name) {
352
+ const val = obj[`@_${name}`];
353
+ return val != null ? String(val) : undefined;
354
+ }
355
+ //# sourceMappingURL=sif-parser.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sif-parser.js","sourceRoot":"","sources":["../../../src/core/siebel/sif-parser.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAC5C,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAC5C,OAAO,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAC;AACrC,OAAO,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAC;AAC5C,OAAO,EAAE,iBAAiB,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AAUxE;;GAEG;AACH,MAAM,WAAW,GAAqC;IACpD,MAAM,EAAE,QAAQ;IAChB,kBAAkB,EAAE,oBAAoB;IACxC,eAAe,EAAE,iBAAiB;IAClC,IAAI,EAAE,MAAM;IACZ,MAAM,EAAE,QAAQ;IAChB,QAAQ,EAAE,UAAU;IACpB,kBAAkB,EAAE,oBAAoB;IACxC,gBAAgB,EAAE,kBAAkB;IACpC,YAAY,EAAE,cAAc;IAC5B,SAAS,EAAE,WAAW;IACtB,KAAK,EAAE,OAAO;CACf,CAAC;AAEF;;GAEG;AACH,MAAM,iBAAiB,GAAqC;IAC1D,KAAK,EAAE,OAAO;IACd,MAAM,EAAE,QAAQ;IAChB,OAAO,EAAE,SAAS;IAClB,WAAW,EAAE,aAAa;IAC1B,IAAI,EAAE,MAAM;IACZ,mBAAmB,EAAE,cAAc;IACnC,iBAAiB,EAAE,cAAc;IACjC,WAAW,EAAE,QAAQ;IACrB,WAAW,EAAE,MAAM;IACnB,uBAAuB,EAAE,WAAW;IACpC,yBAAyB,EAAE,oBAAoB;IAC/C,uBAAuB,EAAE,kBAAkB;IAC3C,aAAa,EAAE,UAAU;IACzB,qBAAqB,EAAE,oBAAoB;CAC5C,CAAC;AAEF,4DAA4D;AAC5D,MAAM,cAAc,GAAG,IAAI,GAAG,CAAC,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC,CAAC;AAErD;;GAEG;AACH,MAAM,UAAU,eAAe,CAAC,OAAe,EAAE,QAAgB;IAC/D,IAAI,CAAC,OAAO,IAAI,OAAO,CAAC,IAAI,EAAE,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC5C,MAAM,IAAI,eAAe,CAAC,sBAAsB,EAAE,CAAC,EAAE,KAAK,EAAE,SAAS,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC,CAAC,CAAC;IAC9F,CAAC;IAED,MAAM,MAAM,GAAG,IAAI,SAAS,CAAC;QAC3B,gBAAgB,EAAE,KAAK;QACvB,mBAAmB,EAAE,IAAI;QACzB,sBAAsB,EAAE,IAAI;QAC5B,mBAAmB,EAAE,KAAK;QAC1B,OAAO,EAAE,GAAG,EAAE;YACZ,qCAAqC;YACrC,OAAO,IAAI,CAAC;QACd,CAAC;KACF,CAAC,CAAC;IAEH,IAAI,MAA+B,CAAC;IACpC,IAAI,CAAC;QACH,MAAM,GAAG,MAAM,CAAC,KAAK,CAAC,OAAO,CAA4B,CAAC;IAC5D,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,MAAM,IAAI,eAAe,CAAC,iBAAiB,EAAE;YAC3C,EAAE,KAAK,EAAE,KAAK,EAAE,OAAO,EAAE,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE;SAC5E,CAAC,CAAC;IACL,CAAC;IAED,8BAA8B;IAC9B,MAAM,YAAY,GAAG,QAAQ,CAAC,MAAM,EAAE,YAAY,CAAC,CAAC;IACpD,IAAI,YAAY,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC9B,MAAM,IAAI,eAAe,CAAC,0CAA0C,EAAE;YACpE,EAAE,KAAK,EAAE,WAAW,EAAE,OAAO,EAAE,qBAAqB,EAAE;SACvD,CAAC,CAAC;IACL,CAAC;IAED,MAAM,IAAI,GAAG,YAAY,CAAC,CAAC,CAA4B,CAAC;IACxD,MAAM,cAAc,GAAG,OAAO,CAAC,IAAI,EAAE,MAAM,CAAC,IAAI,SAAS,CAAC;IAE1D,yBAAyB;IACzB,MAAM,QAAQ,GAAG,QAAQ,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC;IAC3C,MAAM,WAAW,GAAG,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,CAA4B,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;IAE9G,MAAM,OAAO,GAAmB,EAAE,CAAC;IAEnC,KAAK,MAAM,IAAI,IAAI,QAAQ,EAAE,CAAC;QAC5B,MAAM,OAAO,GAAG,IAA+B,CAAC;QAChD,MAAM,QAAQ,GAAG,OAAO,CAAC,OAAO,EAAE,MAAM,CAAC,IAAI,SAAS,CAAC;QACvD,yBAAyB,CAAC,OAAO,EAAE,QAAQ,EAAE,OAAO,CAAC,CAAC;IACxD,CAAC;IAED,MAAM,YAAY,GAAG,iBAAiB,CAAC,OAAO,CAAC,CAAC;IAEhD,MAAM,WAAW,GAAG,CAAC,GAAG,IAAI,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAE7D,MAAM,QAAQ,GAAsB;QAClC,QAAQ;QACR,cAAc;QACd,WAAW;QACX,WAAW,EAAE,OAAO,CAAC,MAAM;QAC3B,WAAW;QACX,WAAW,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;KACtC,CAAC;IAEF,MAAM,CAAC,IAAI,CAAC,YAAY,EAAE;QACxB,QAAQ;QACR,WAAW,EAAE,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC;QACnC,eAAe,EAAE,MAAM,CAAC,YAAY,CAAC,MAAM,CAAC;QAC5C,WAAW,EAAE,WAAW,CAAC,IAAI,CAAC,GAAG,CAAC;KACnC,CAAC,CAAC;IAEH,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,YAAY,EAAE,CAAC;AAC7C,CAAC;AAED;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,YAAY,CAAC,QAAgB;IACjD,IAAI,OAAe,CAAC;IACpB,IAAI,CAAC;QACH,OAAO,GAAG,MAAM,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;IAC9C,CAAC;IAAC,MAAM,CAAC;QACP,MAAM,IAAI,iBAAiB,CAAC,QAAQ,CAAC,CAAC;IACxC,CAAC;IAED,OAAO,eAAe,CAAC,OAAO,EAAE,QAAQ,CAAC,QAAQ,CAAC,CAAC,CAAC;AACtD,CAAC;AAED;;GAEG;AACH,SAAS,yBAAyB,CAChC,OAAgC,EAChC,WAAmB,EACnB,OAAuB;IAEvB,KAAK,MAAM,CAAC,GAAG,EAAE,UAAU,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,WAAW,CAAC,EAAE,CAAC;QAC5D,MAAM,QAAQ,GAAG,QAAQ,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC;QACxC,KAAK,MAAM,IAAI,IAAI,QAAQ,EAAE,CAAC;YAC5B,MAAM,GAAG,GAAG,qBAAqB,CAAC,IAA+B,EAAE,UAAU,EAAE,WAAW,CAAC,CAAC;YAC5F,IAAI,GAAG,EAAE,CAAC;gBACR,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;YACpB,CAAC;QACH,CAAC;IACH,CAAC;AACH,CAAC;AAED;;GAEG;AACH,SAAS,qBAAqB,CAC5B,IAA6B,EAC7B,IAAsB,EACtB,WAAmB;IAEnB,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;IACnC,IAAI,CAAC,IAAI;QAAE,OAAO,IAAI,CAAC;IAEvB,MAAM,UAAU,GAAG,iBAAiB,CAAC,IAAI,CAAC,CAAC;IAC3C,MAAM,QAAQ,GAAG,eAAe,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;IAC7C,MAAM,QAAQ,GAAG,OAAO,CAAC,IAAI,EAAE,UAAU,CAAC,KAAK,GAAG,CAAC;IAEnD,OAAO;QACL,IAAI;QACJ,IAAI;QACJ,OAAO,EAAE,WAAW;QACpB,UAAU;QACV,QAAQ;QACR,QAAQ,EAAE,QAAQ,IAAI,SAAS;KAChC,CAAC;AACJ,CAAC;AAED;;GAEG;AACH,SAAS,iBAAiB,CAAC,IAA6B;IACtD,MAAM,KAAK,GAAqB,EAAE,CAAC;IAEnC,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC;QAChD,IAAI,GAAG,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;YAC9D,KAAK,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;QAC3D,CAAC;IACH,CAAC;IAED,OAAO,KAAK,CAAC;AACf,CAAC;AAED;;GAEG;AACH,SAAS,eAAe,CAAC,IAA6B,EAAE,UAAkB;IACxE,MAAM,QAAQ,GAAmB,EAAE,CAAC;IAEpC,KAAK,MAAM,CAAC,GAAG,EAAE,SAAS,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,iBAAiB,CAAC,EAAE,CAAC;QACjE,MAAM,QAAQ,GAAG,QAAQ,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;QACrC,KAAK,MAAM,KAAK,IAAI,QAAQ,EAAE,CAAC;YAC7B,MAAM,QAAQ,GAAG,KAAgC,CAAC;YAClD,MAAM,IAAI,GAAG,OAAO,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;YACvC,IAAI,CAAC,IAAI;gBAAE,SAAS;YAEpB,QAAQ,CAAC,IAAI,CAAC;gBACZ,IAAI;gBACJ,IAAI,EAAE,SAAS;gBACf,UAAU,EAAE,iBAAiB,CAAC,QAAQ,CAAC;gBACvC,QAAQ,EAAE,EAAE;gBACZ,UAAU;aACX,CAAC,CAAC;QACL,CAAC;IACH,CAAC;IAED,OAAO,QAAQ,CAAC;AAClB,CAAC;AAED;;GAEG;AACH,SAAS,iBAAiB,CAAC,OAAuB;IAChD,MAAM,IAAI,GAAuB,EAAE,CAAC;IACpC,MAAM,WAAW,GAAG,IAAI,GAAG,EAAwB,CAAC;IAEpD,KAAK,MAAM,GAAG,IAAI,OAAO,EAAE,CAAC;QAC1B,WAAW,CAAC,GAAG,CAAC,GAAG,GAAG,CAAC,IAAI,IAAI,GAAG,CAAC,IAAI,EAAE,EAAE,GAAG,CAAC,CAAC;IAClD,CAAC;IAED,KAAK,MAAM,GAAG,IAAI,OAAO,EAAE,CAAC;QAC1B,uCAAuC;QACvC,IAAI,GAAG,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;YAC1B,MAAM,OAAO,GAAG,YAAY,CAAC,GAAG,EAAE,UAAU,CAAC,CAAC;YAC9C,IAAI,OAAO,IAAI,WAAW,CAAC,GAAG,CAAC,sBAAsB,OAAO,EAAE,CAAC,EAAE,CAAC;gBAChE,IAAI,CAAC,IAAI,CAAC;oBACR,IAAI,EAAE,EAAE,IAAI,EAAE,GAAG,CAAC,IAAI,EAAE,IAAI,EAAE,QAAQ,EAAE;oBACxC,EAAE,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,oBAAoB,EAAE;oBACjD,YAAY,EAAE,YAAY;oBAC1B,QAAQ,EAAE,IAAI;iBACf,CAAC,CAAC;YACL,CAAC;QACH,CAAC;QAED,uCAAuC;QACvC,IAAI,GAAG,CAAC,IAAI,KAAK,MAAM,EAAE,CAAC;YACxB,MAAM,SAAS,GAAG,YAAY,CAAC,GAAG,EAAE,YAAY,CAAC,CAAC;YAClD,IAAI,SAAS,IAAI,WAAW,CAAC,GAAG,CAAC,mBAAmB,SAAS,EAAE,CAAC,EAAE,CAAC;gBACjE,IAAI,CAAC,IAAI,CAAC;oBACR,IAAI,EAAE,EAAE,IAAI,EAAE,GAAG,CAAC,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE;oBACtC,EAAE,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,iBAAiB,EAAE;oBAChD,YAAY,EAAE,YAAY;oBAC1B,QAAQ,EAAE,IAAI;iBACf,CAAC,CAAC;YACL,CAAC;YAED,2CAA2C;YAC3C,KAAK,MAAM,KAAK,IAAI,GAAG,CAAC,QAAQ,EAAE,CAAC;gBACjC,IAAI,KAAK,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;oBAC5B,MAAM,UAAU,GAAG,YAAY,CAAC,KAAK,EAAE,QAAQ,CAAC,IAAI,KAAK,CAAC,IAAI,CAAC;oBAC/D,IAAI,WAAW,CAAC,GAAG,CAAC,UAAU,UAAU,EAAE,CAAC,EAAE,CAAC;wBAC5C,IAAI,CAAC,IAAI,CAAC;4BACR,IAAI,EAAE,EAAE,IAAI,EAAE,GAAG,CAAC,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE;4BACtC,EAAE,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,QAAQ,EAAE;4BACxC,YAAY,EAAE,UAAU;4BACxB,QAAQ,EAAE,IAAI;yBACf,CAAC,CAAC;oBACL,CAAC;gBACH,CAAC;YACH,CAAC;QACH,CAAC;QAED,2CAA2C;QAC3C,IAAI,GAAG,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;YAC1B,KAAK,MAAM,KAAK,IAAI,GAAG,CAAC,QAAQ,EAAE,CAAC;gBACjC,IAAI,KAAK,CAAC,IAAI,KAAK,MAAM,EAAE,CAAC;oBAC1B,MAAM,QAAQ,GAAG,YAAY,CAAC,KAAK,EAAE,MAAM,CAAC,IAAI,KAAK,CAAC,IAAI,CAAC;oBAC3D,IAAI,WAAW,CAAC,GAAG,CAAC,QAAQ,QAAQ,EAAE,CAAC,EAAE,CAAC;wBACxC,IAAI,CAAC,IAAI,CAAC;4BACR,IAAI,EAAE,EAAE,IAAI,EAAE,GAAG,CAAC,IAAI,EAAE,IAAI,EAAE,QAAQ,EAAE;4BACxC,EAAE,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,MAAM,EAAE;4BACpC,YAAY,EAAE,UAAU;4BACxB,QAAQ,EAAE,IAAI;yBACf,CAAC,CAAC;oBACL,CAAC;gBACH,CAAC;YACH,CAAC;QACH,CAAC;QAED,mDAAmD;QACnD,IAAI,GAAG,CAAC,IAAI,KAAK,iBAAiB,EAAE,CAAC;YACnC,KAAK,MAAM,KAAK,IAAI,GAAG,CAAC,QAAQ,EAAE,CAAC;gBACjC,IAAI,KAAK,CAAC,IAAI,KAAK,oBAAoB,EAAE,CAAC;oBACxC,MAAM,MAAM,GAAG,YAAY,CAAC,KAAK,EAAE,UAAU,CAAC,IAAI,KAAK,CAAC,IAAI,CAAC;oBAC7D,IAAI,WAAW,CAAC,GAAG,CAAC,sBAAsB,MAAM,EAAE,CAAC,EAAE,CAAC;wBACpD,IAAI,CAAC,IAAI,CAAC;4BACR,IAAI,EAAE,EAAE,IAAI,EAAE,GAAG,CAAC,IAAI,EAAE,IAAI,EAAE,iBAAiB,EAAE;4BACjD,EAAE,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,oBAAoB,EAAE;4BAChD,YAAY,EAAE,UAAU;4BACxB,QAAQ,EAAE,IAAI;yBACf,CAAC,CAAC;oBACL,CAAC;gBACH,CAAC;YACH,CAAC;QACH,CAAC;QAED,2CAA2C;QAC3C,IAAI,GAAG,CAAC,IAAI,KAAK,UAAU,EAAE,CAAC;YAC5B,MAAM,SAAS,GAAG,YAAY,CAAC,GAAG,EAAE,YAAY,CAAC,CAAC;YAClD,IAAI,SAAS,IAAI,WAAW,CAAC,GAAG,CAAC,mBAAmB,SAAS,EAAE,CAAC,EAAE,CAAC;gBACjE,IAAI,CAAC,IAAI,CAAC;oBACR,IAAI,EAAE,EAAE,IAAI,EAAE,GAAG,CAAC,IAAI,EAAE,IAAI,EAAE,UAAU,EAAE;oBAC1C,EAAE,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,iBAAiB,EAAE;oBAChD,YAAY,EAAE,YAAY;oBAC1B,QAAQ,EAAE,IAAI;iBACf,CAAC,CAAC;YACL,CAAC;YAED,qCAAqC;YACrC,KAAK,MAAM,KAAK,IAAI,GAAG,CAAC,QAAQ,EAAE,CAAC;gBACjC,MAAM,UAAU,GAAG,YAAY,CAAC,KAAK,EAAE,aAAa,CAAC,CAAC;gBACtD,IAAI,UAAU,IAAI,WAAW,CAAC,GAAG,CAAC,oBAAoB,UAAU,EAAE,CAAC,EAAE,CAAC;oBACpE,IAAI,CAAC,IAAI,CAAC;wBACR,IAAI,EAAE,EAAE,IAAI,EAAE,GAAG,CAAC,IAAI,EAAE,IAAI,EAAE,UAAU,EAAE;wBAC1C,EAAE,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,kBAAkB,EAAE;wBAClD,YAAY,EAAE,MAAM;wBACpB,QAAQ,EAAE,IAAI;qBACf,CAAC,CAAC;gBACL,CAAC;YACH,CAAC;QACH,CAAC;QAED,qFAAqF;QACrF,IAAI,GAAG,CAAC,IAAI,KAAK,oBAAoB,EAAE,CAAC;YACtC,MAAM,OAAO,GAAG,YAAY,CAAC,GAAG,EAAE,UAAU,CAAC,CAAC;YAC9C,IAAI,OAAO,IAAI,WAAW,CAAC,GAAG,CAAC,sBAAsB,OAAO,EAAE,CAAC,EAAE,CAAC;gBAChE,IAAI,CAAC,IAAI,CAAC;oBACR,IAAI,EAAE,EAAE,IAAI,EAAE,GAAG,CAAC,IAAI,EAAE,IAAI,EAAE,oBAAoB,EAAE;oBACpD,EAAE,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,oBAAoB,EAAE;oBACjD,YAAY,EAAE,YAAY;oBAC1B,QAAQ,EAAE,IAAI;iBACf,CAAC,CAAC;YACL,CAAC;QACH,CAAC;QAED,mCAAmC;QACnC,IAAI,GAAG,CAAC,IAAI,KAAK,oBAAoB,EAAE,CAAC;YACtC,MAAM,KAAK,GAAG,YAAY,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC;YACzC,IAAI,KAAK,EAAE,CAAC;gBACV,IAAI,CAAC,IAAI,CAAC;oBACR,IAAI,EAAE,EAAE,IAAI,EAAE,GAAG,CAAC,IAAI,EAAE,IAAI,EAAE,oBAAoB,EAAE;oBACpD,EAAE,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,OAAO,EAAE;oBAClC,YAAY,EAAE,UAAU;oBACxB,QAAQ,EAAE,IAAI;iBACf,CAAC,CAAC;YACL,CAAC;YAED,yCAAyC;YACzC,KAAK,MAAM,KAAK,IAAI,GAAG,CAAC,QAAQ,EAAE,CAAC;gBACjC,IAAI,KAAK,CAAC,IAAI,KAAK,MAAM,EAAE,CAAC;oBAC1B,MAAM,OAAO,GAAG,YAAY,CAAC,KAAK,EAAE,UAAU,CAAC,CAAC;oBAChD,IAAI,OAAO,IAAI,WAAW,CAAC,GAAG,CAAC,sBAAsB,OAAO,EAAE,CAAC,EAAE,CAAC;wBAChE,IAAI,CAAC,IAAI,CAAC;4BACR,IAAI,EAAE,EAAE,IAAI,EAAE,GAAG,CAAC,IAAI,EAAE,IAAI,EAAE,oBAAoB,EAAE;4BACpD,EAAE,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,oBAAoB,EAAE;4BACjD,YAAY,EAAE,WAAW;4BACzB,QAAQ,EAAE,IAAI;yBACf,CAAC,CAAC;oBACL,CAAC;gBACH,CAAC;YACH,CAAC;QACH,CAAC;IACH,CAAC;IAED,OAAO,IAAI,CAAC;AACd,CAAC;AAED,qCAAqC;AACrC,SAAS,YAAY,CAAC,GAAiB,EAAE,QAAgB;IACvD,OAAO,GAAG,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,QAAQ,CAAC,EAAE,KAAK,CAAC;AAChE,CAAC;AAED,uDAAuD;AACvD,SAAS,QAAQ,CAAC,GAA4B,EAAE,GAAW;IACzD,MAAM,GAAG,GAAG,GAAG,CAAC,GAAG,CAAC,CAAC;IACrB,IAAI,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC;QAAE,OAAO,GAAG,CAAC;IACnC,IAAI,GAAG,IAAI,IAAI;QAAE,OAAO,CAAC,GAAG,CAAC,CAAC;IAC9B,OAAO,EAAE,CAAC;AACZ,CAAC;AAED,kCAAkC;AAClC,SAAS,OAAO,CAAC,GAA4B,EAAE,IAAY;IACzD,MAAM,GAAG,GAAG,GAAG,CAAC,KAAK,IAAI,EAAE,CAAC,CAAC;IAC7B,OAAO,GAAG,IAAI,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;AAC/C,CAAC"}
@@ -0,0 +1,45 @@
1
+ /**
2
+ * SIF Template Registry — parameterized XML templates for Siebel object types.
3
+ *
4
+ * Uses XMLBuilder from fast-xml-parser (already in project) to generate valid
5
+ * SIF XML that round-trips through sif-parser.ts.
6
+ */
7
+ import type { SifTemplateType } from "../../schemas/siebel.schema.js";
8
+ /** Child element definition for a SIF template object. */
9
+ export interface SifTemplateChild {
10
+ tag: string;
11
+ attributes: Record<string, string>;
12
+ }
13
+ /** A single object to include in generated SIF XML. */
14
+ export interface SifTemplateObject {
15
+ type: SifTemplateType;
16
+ name: string;
17
+ projectName: string;
18
+ attributes?: Record<string, string>;
19
+ children?: SifTemplateChild[];
20
+ }
21
+ /** Template metadata for a Siebel object type. */
22
+ export interface SifTemplate {
23
+ type: SifTemplateType;
24
+ xmlTag: string;
25
+ requiredAttrs: string[];
26
+ optionalAttrs: string[];
27
+ childTags: string[];
28
+ }
29
+ /**
30
+ * Return all available SIF templates.
31
+ */
32
+ export declare function listTemplates(): SifTemplate[];
33
+ /**
34
+ * Return the template for a specific Siebel object type.
35
+ * Returns undefined for non-generatable types (field, column, etc.).
36
+ */
37
+ export declare function getTemplate(type: SifTemplateType): SifTemplate | undefined;
38
+ /**
39
+ * Build a complete SIF XML string from template objects.
40
+ *
41
+ * Groups objects by project and generates a valid REPOSITORY → PROJECT → Objects hierarchy.
42
+ * The output is compatible with parseSifContent() for round-trip validation.
43
+ */
44
+ export declare function buildSifXml(objects: SifTemplateObject[]): string;
45
+ //# sourceMappingURL=sif-templates.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sif-templates.d.ts","sourceRoot":"","sources":["../../../src/core/siebel/sif-templates.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAIH,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,gCAAgC,CAAC;AAEtE,0DAA0D;AAC1D,MAAM,WAAW,gBAAgB;IAC/B,GAAG,EAAE,MAAM,CAAC;IACZ,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CACpC;AAED,uDAAuD;AACvD,MAAM,WAAW,iBAAiB;IAChC,IAAI,EAAE,eAAe,CAAC;IACtB,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,UAAU,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACpC,QAAQ,CAAC,EAAE,gBAAgB,EAAE,CAAC;CAC/B;AAED,kDAAkD;AAClD,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,eAAe,CAAC;IACtB,MAAM,EAAE,MAAM,CAAC;IACf,aAAa,EAAE,MAAM,EAAE,CAAC;IACxB,aAAa,EAAE,MAAM,EAAE,CAAC;IACxB,SAAS,EAAE,MAAM,EAAE,CAAC;CACrB;AAuED;;GAEG;AACH,wBAAgB,aAAa,IAAI,WAAW,EAAE,CAE7C;AAED;;;GAGG;AACH,wBAAgB,WAAW,CAAC,IAAI,EAAE,eAAe,GAAG,WAAW,GAAG,SAAS,CAE1E;AAED;;;;;GAKG;AACH,wBAAgB,WAAW,CAAC,OAAO,EAAE,iBAAiB,EAAE,GAAG,MAAM,CAqGhE"}
@@ -0,0 +1,179 @@
1
+ /**
2
+ * SIF Template Registry — parameterized XML templates for Siebel object types.
3
+ *
4
+ * Uses XMLBuilder from fast-xml-parser (already in project) to generate valid
5
+ * SIF XML that round-trips through sif-parser.ts.
6
+ */
7
+ import { XMLBuilder } from "fast-xml-parser";
8
+ import { logger } from "../utils/logger.js";
9
+ /**
10
+ * Mapping from generatable Siebel types to their SIF XML tag and attribute metadata.
11
+ */
12
+ const TEMPLATES = {
13
+ applet: {
14
+ type: "applet",
15
+ xmlTag: "APPLET",
16
+ requiredAttrs: ["NAME", "BUS_COMP"],
17
+ optionalAttrs: ["CLASS", "CHANGED"],
18
+ childTags: ["CONTROL", "LIST_COLUMN", "APPLET_WEB_TEMPLATE", "APPLET_METHOD_MENU_ITEM"],
19
+ },
20
+ business_component: {
21
+ type: "business_component",
22
+ xmlTag: "BUSINESS_COMPONENT",
23
+ requiredAttrs: ["NAME", "TABLE"],
24
+ optionalAttrs: ["CLASS", "CHANGED"],
25
+ childTags: ["FIELD", "LINK"],
26
+ },
27
+ business_object: {
28
+ type: "business_object",
29
+ xmlTag: "BUSINESS_OBJECT",
30
+ requiredAttrs: ["NAME"],
31
+ optionalAttrs: ["CHANGED"],
32
+ childTags: ["BUSINESS_OBJECT_COMPONENT"],
33
+ },
34
+ view: {
35
+ type: "view",
36
+ xmlTag: "VIEW",
37
+ requiredAttrs: ["NAME", "BUS_OBJECT"],
38
+ optionalAttrs: ["CHANGED"],
39
+ childTags: ["VIEW_WEB_TEMPLATE", "VIEW_APPLET"],
40
+ },
41
+ screen: {
42
+ type: "screen",
43
+ xmlTag: "SCREEN",
44
+ requiredAttrs: ["NAME"],
45
+ optionalAttrs: ["CHANGED"],
46
+ childTags: ["SCREEN_VIEW"],
47
+ },
48
+ workflow: {
49
+ type: "workflow",
50
+ xmlTag: "WORKFLOW",
51
+ requiredAttrs: ["NAME"],
52
+ optionalAttrs: ["BUS_OBJECT", "CHANGED"],
53
+ childTags: ["WORKFLOW_STEP"],
54
+ },
55
+ business_service: {
56
+ type: "business_service",
57
+ xmlTag: "BUSINESS_SERVICE",
58
+ requiredAttrs: ["NAME"],
59
+ optionalAttrs: ["CLASS", "CHANGED"],
60
+ childTags: ["BUSINESS_SERVICE_METHOD"],
61
+ },
62
+ integration_object: {
63
+ type: "integration_object",
64
+ xmlTag: "INTEGRATION_OBJECT",
65
+ requiredAttrs: ["NAME"],
66
+ optionalAttrs: ["BUS_COMP", "CHANGED"],
67
+ childTags: ["INTEGRATION_COMPONENT"],
68
+ },
69
+ };
70
+ /**
71
+ * Type-to-XML-tag mapping (inverse of sif-parser's TAG_TO_TYPE).
72
+ */
73
+ const TYPE_TO_TAG = Object.fromEntries(Object.values(TEMPLATES).map((t) => [t.type, t.xmlTag]));
74
+ /**
75
+ * Return all available SIF templates.
76
+ */
77
+ export function listTemplates() {
78
+ return Object.values(TEMPLATES);
79
+ }
80
+ /**
81
+ * Return the template for a specific Siebel object type.
82
+ * Returns undefined for non-generatable types (field, column, etc.).
83
+ */
84
+ export function getTemplate(type) {
85
+ return TEMPLATES[type];
86
+ }
87
+ /**
88
+ * Build a complete SIF XML string from template objects.
89
+ *
90
+ * Groups objects by project and generates a valid REPOSITORY → PROJECT → Objects hierarchy.
91
+ * The output is compatible with parseSifContent() for round-trip validation.
92
+ */
93
+ export function buildSifXml(objects) {
94
+ logger.info("Building SIF XML", { objectCount: String(objects.length) });
95
+ // Group objects by project
96
+ const byProject = new Map();
97
+ for (const obj of objects) {
98
+ const projName = obj.projectName || "Generated Project";
99
+ const existing = byProject.get(projName) ?? [];
100
+ existing.push(obj);
101
+ byProject.set(projName, existing);
102
+ }
103
+ // Build XML structure
104
+ const projectElements = [];
105
+ for (const [projName, projObjects] of byProject) {
106
+ const projectElement = {
107
+ "@_NAME": projName,
108
+ "@_UPDATED": new Date().toISOString().split("T")[0],
109
+ };
110
+ // Group objects by XML tag
111
+ for (const obj of projObjects) {
112
+ const tag = TYPE_TO_TAG[obj.type];
113
+ if (!tag) {
114
+ logger.debug("Skipping object with unknown type", { type: obj.type, name: obj.name });
115
+ continue;
116
+ }
117
+ const element = {
118
+ "@_NAME": obj.name,
119
+ };
120
+ // Add attributes
121
+ if (obj.attributes) {
122
+ for (const [key, value] of Object.entries(obj.attributes)) {
123
+ element[`@_${key}`] = value;
124
+ }
125
+ }
126
+ // Add children
127
+ if (obj.children && obj.children.length > 0) {
128
+ for (const child of obj.children) {
129
+ const childElement = {};
130
+ for (const [key, value] of Object.entries(child.attributes)) {
131
+ childElement[`@_${key}`] = value;
132
+ }
133
+ // Append to array of same-tag children
134
+ if (!element[child.tag]) {
135
+ element[child.tag] = [];
136
+ }
137
+ element[child.tag].push(childElement);
138
+ }
139
+ }
140
+ // Append to project (as array to support multiple objects of same type)
141
+ if (!projectElement[tag]) {
142
+ projectElement[tag] = [];
143
+ }
144
+ projectElement[tag].push(element);
145
+ }
146
+ projectElements.push(projectElement);
147
+ }
148
+ // If no projects, create an empty one to ensure valid XML
149
+ if (projectElements.length === 0) {
150
+ projectElements.push({
151
+ "@_NAME": "Generated Project",
152
+ "@_UPDATED": new Date().toISOString().split("T")[0],
153
+ });
154
+ }
155
+ const doc = {
156
+ "?xml": { "@_version": "1.0", "@_encoding": "UTF-8" },
157
+ REPOSITORY: {
158
+ "@_NAME": "Siebel Repository",
159
+ "@_UPDATED": new Date().toISOString().split("T")[0],
160
+ PROJECT: projectElements,
161
+ },
162
+ };
163
+ const builder = new XMLBuilder({
164
+ ignoreAttributes: false,
165
+ attributeNamePrefix: "@_",
166
+ format: true,
167
+ indentBy: " ",
168
+ suppressEmptyNode: true,
169
+ processEntities: false,
170
+ });
171
+ const xml = builder.build(doc);
172
+ logger.debug("SIF XML built", {
173
+ projects: String(byProject.size),
174
+ objects: String(objects.length),
175
+ xmlLength: String(xml.length),
176
+ });
177
+ return xml;
178
+ }
179
+ //# sourceMappingURL=sif-templates.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sif-templates.js","sourceRoot":"","sources":["../../../src/core/siebel/sif-templates.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,20 @@
1
+ /**
2
+ * SIF-to-Graph Converter — maps parsed Siebel objects to mcp-graph nodes and edges.
3
+ *
4
+ * Mapping strategy:
5
+ * - SIF Project → epic node
6
+ * - BC, BO, Workflow, Business Service → task nodes (core logic)
7
+ * - Applets, Views, Screens, Web Templates, Integration Objects → subtask nodes (UI/integration)
8
+ * - Dependencies → depends_on / related_to edges
9
+ */
10
+ import type { GraphNode, GraphEdge } from "../graph/graph-types.js";
11
+ import type { SiebelSifParseResult } from "../../schemas/siebel.schema.js";
12
+ export interface SifToGraphResult {
13
+ nodes: GraphNode[];
14
+ edges: GraphEdge[];
15
+ }
16
+ /**
17
+ * Convert a parsed SIF result into graph nodes and edges.
18
+ */
19
+ export declare function convertSifToGraph(parseResult: SiebelSifParseResult): SifToGraphResult;
20
+ //# sourceMappingURL=sif-to-graph.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sif-to-graph.d.ts","sourceRoot":"","sources":["../../../src/core/siebel/sif-to-graph.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,KAAK,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,yBAAyB,CAAC;AACpE,OAAO,KAAK,EACV,oBAAoB,EAIrB,MAAM,gCAAgC,CAAC;AAwBxC,MAAM,WAAW,gBAAgB;IAC/B,KAAK,EAAE,SAAS,EAAE,CAAC;IACnB,KAAK,EAAE,SAAS,EAAE,CAAC;CACpB;AAED;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,WAAW,EAAE,oBAAoB,GAAG,gBAAgB,CAqGrF"}