@mcp-graph-workflow/mcp-graph 5.10.0 → 5.12.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 (256) hide show
  1. package/dist/api/routes/code-graph.d.ts.map +1 -1
  2. package/dist/api/routes/code-graph.js +163 -0
  3. package/dist/api/routes/code-graph.js.map +1 -1
  4. package/dist/api/routes/siebel.d.ts.map +1 -1
  5. package/dist/api/routes/siebel.js +170 -0
  6. package/dist/api/routes/siebel.js.map +1 -1
  7. package/dist/core/code/code-indexer.d.ts +5 -3
  8. package/dist/core/code/code-indexer.d.ts.map +1 -1
  9. package/dist/core/code/code-indexer.js +57 -10
  10. package/dist/core/code/code-indexer.js.map +1 -1
  11. package/dist/core/code/code-types.d.ts +8 -0
  12. package/dist/core/code/code-types.d.ts.map +1 -1
  13. package/dist/core/code/code-types.js.map +1 -1
  14. package/dist/core/code/graph-traversal.d.ts +15 -0
  15. package/dist/core/code/graph-traversal.d.ts.map +1 -1
  16. package/dist/core/code/graph-traversal.js +53 -0
  17. package/dist/core/code/graph-traversal.js.map +1 -1
  18. package/dist/core/code/ts-analyzer.d.ts +6 -1
  19. package/dist/core/code/ts-analyzer.d.ts.map +1 -1
  20. package/dist/core/code/ts-analyzer.js +8 -0
  21. package/dist/core/code/ts-analyzer.js.map +1 -1
  22. package/dist/core/config/config-schema.d.ts +8 -0
  23. package/dist/core/config/config-schema.d.ts.map +1 -1
  24. package/dist/core/config/config-schema.js +3 -1
  25. package/dist/core/config/config-schema.js.map +1 -1
  26. package/dist/core/context/context-assembler.d.ts +2 -0
  27. package/dist/core/context/context-assembler.d.ts.map +1 -1
  28. package/dist/core/context/context-assembler.js +15 -0
  29. package/dist/core/context/context-assembler.js.map +1 -1
  30. package/dist/core/lsp/language-detector.d.ts +11 -0
  31. package/dist/core/lsp/language-detector.d.ts.map +1 -0
  32. package/dist/core/lsp/language-detector.js +149 -0
  33. package/dist/core/lsp/language-detector.js.map +1 -0
  34. package/dist/core/lsp/lsp-analyzer.d.ts +16 -0
  35. package/dist/core/lsp/lsp-analyzer.d.ts.map +1 -0
  36. package/dist/core/lsp/lsp-analyzer.js +30 -0
  37. package/dist/core/lsp/lsp-analyzer.js.map +1 -0
  38. package/dist/core/lsp/lsp-bridge.d.ts +40 -0
  39. package/dist/core/lsp/lsp-bridge.d.ts.map +1 -0
  40. package/dist/core/lsp/lsp-bridge.js +349 -0
  41. package/dist/core/lsp/lsp-bridge.js.map +1 -0
  42. package/dist/core/lsp/lsp-cache.d.ts +33 -0
  43. package/dist/core/lsp/lsp-cache.d.ts.map +1 -0
  44. package/dist/core/lsp/lsp-cache.js +134 -0
  45. package/dist/core/lsp/lsp-cache.js.map +1 -0
  46. package/dist/core/lsp/lsp-client.d.ts +47 -0
  47. package/dist/core/lsp/lsp-client.d.ts.map +1 -0
  48. package/dist/core/lsp/lsp-client.js +256 -0
  49. package/dist/core/lsp/lsp-client.js.map +1 -0
  50. package/dist/core/lsp/lsp-diagnostics.d.ts +40 -0
  51. package/dist/core/lsp/lsp-diagnostics.d.ts.map +1 -0
  52. package/dist/core/lsp/lsp-diagnostics.js +113 -0
  53. package/dist/core/lsp/lsp-diagnostics.js.map +1 -0
  54. package/dist/core/lsp/lsp-server-manager.d.ts +56 -0
  55. package/dist/core/lsp/lsp-server-manager.d.ts.map +1 -0
  56. package/dist/core/lsp/lsp-server-manager.js +330 -0
  57. package/dist/core/lsp/lsp-server-manager.js.map +1 -0
  58. package/dist/core/lsp/lsp-types.d.ts +130 -0
  59. package/dist/core/lsp/lsp-types.d.ts.map +1 -0
  60. package/dist/core/lsp/lsp-types.js +131 -0
  61. package/dist/core/lsp/lsp-types.js.map +1 -0
  62. package/dist/core/lsp/server-registry.d.ts +19 -0
  63. package/dist/core/lsp/server-registry.d.ts.map +1 -0
  64. package/dist/core/lsp/server-registry.js +188 -0
  65. package/dist/core/lsp/server-registry.js.map +1 -0
  66. package/dist/core/rag/multi-strategy-retrieval.d.ts +6 -0
  67. package/dist/core/rag/multi-strategy-retrieval.d.ts.map +1 -1
  68. package/dist/core/rag/multi-strategy-retrieval.js +31 -3
  69. package/dist/core/rag/multi-strategy-retrieval.js.map +1 -1
  70. package/dist/core/rag/siebel-indexer.d.ts.map +1 -1
  71. package/dist/core/rag/siebel-indexer.js +57 -1
  72. package/dist/core/rag/siebel-indexer.js.map +1 -1
  73. package/dist/core/rag/wsdl-indexer.d.ts +16 -0
  74. package/dist/core/rag/wsdl-indexer.d.ts.map +1 -0
  75. package/dist/core/rag/wsdl-indexer.js +115 -0
  76. package/dist/core/rag/wsdl-indexer.js.map +1 -0
  77. package/dist/core/siebel/auto-wiring.d.ts +29 -0
  78. package/dist/core/siebel/auto-wiring.d.ts.map +1 -0
  79. package/dist/core/siebel/auto-wiring.js +211 -0
  80. package/dist/core/siebel/auto-wiring.js.map +1 -0
  81. package/dist/core/siebel/best-practices.d.ts +16 -0
  82. package/dist/core/siebel/best-practices.d.ts.map +1 -0
  83. package/dist/core/siebel/best-practices.js +92 -0
  84. package/dist/core/siebel/best-practices.js.map +1 -0
  85. package/dist/core/siebel/change-simulator.d.ts +32 -0
  86. package/dist/core/siebel/change-simulator.d.ts.map +1 -0
  87. package/dist/core/siebel/change-simulator.js +138 -0
  88. package/dist/core/siebel/change-simulator.js.map +1 -0
  89. package/dist/core/siebel/clone-adapt.d.ts +21 -0
  90. package/dist/core/siebel/clone-adapt.d.ts.map +1 -0
  91. package/dist/core/siebel/clone-adapt.js +157 -0
  92. package/dist/core/siebel/clone-adapt.js.map +1 -0
  93. package/dist/core/siebel/code-review.d.ts +36 -0
  94. package/dist/core/siebel/code-review.d.ts.map +1 -0
  95. package/dist/core/siebel/code-review.js +239 -0
  96. package/dist/core/siebel/code-review.js.map +1 -0
  97. package/dist/core/siebel/complexity-metrics.d.ts +24 -0
  98. package/dist/core/siebel/complexity-metrics.d.ts.map +1 -0
  99. package/dist/core/siebel/complexity-metrics.js +41 -0
  100. package/dist/core/siebel/complexity-metrics.js.map +1 -0
  101. package/dist/core/siebel/context-enrichment.d.ts +18 -0
  102. package/dist/core/siebel/context-enrichment.d.ts.map +1 -0
  103. package/dist/core/siebel/context-enrichment.js +91 -0
  104. package/dist/core/siebel/context-enrichment.js.map +1 -0
  105. package/dist/core/siebel/cross-project-analyzer.d.ts +30 -0
  106. package/dist/core/siebel/cross-project-analyzer.d.ts.map +1 -0
  107. package/dist/core/siebel/cross-project-analyzer.js +108 -0
  108. package/dist/core/siebel/cross-project-analyzer.js.map +1 -0
  109. package/dist/core/siebel/definition-of-ready.d.ts +25 -0
  110. package/dist/core/siebel/definition-of-ready.d.ts.map +1 -0
  111. package/dist/core/siebel/definition-of-ready.js +164 -0
  112. package/dist/core/siebel/definition-of-ready.js.map +1 -0
  113. package/dist/core/siebel/escript-crossref.d.ts +18 -0
  114. package/dist/core/siebel/escript-crossref.d.ts.map +1 -0
  115. package/dist/core/siebel/escript-crossref.js +50 -0
  116. package/dist/core/siebel/escript-crossref.js.map +1 -0
  117. package/dist/core/siebel/escript-generator.d.ts +33 -0
  118. package/dist/core/siebel/escript-generator.d.ts.map +1 -0
  119. package/dist/core/siebel/escript-generator.js +200 -0
  120. package/dist/core/siebel/escript-generator.js.map +1 -0
  121. package/dist/core/siebel/escript-patterns.d.ts +20 -0
  122. package/dist/core/siebel/escript-patterns.d.ts.map +1 -0
  123. package/dist/core/siebel/escript-patterns.js +69 -0
  124. package/dist/core/siebel/escript-patterns.js.map +1 -0
  125. package/dist/core/siebel/escript-refactor.d.ts +23 -0
  126. package/dist/core/siebel/escript-refactor.d.ts.map +1 -0
  127. package/dist/core/siebel/escript-refactor.js +270 -0
  128. package/dist/core/siebel/escript-refactor.js.map +1 -0
  129. package/dist/core/siebel/field-suggestion.d.ts +29 -0
  130. package/dist/core/siebel/field-suggestion.d.ts.map +1 -0
  131. package/dist/core/siebel/field-suggestion.js +105 -0
  132. package/dist/core/siebel/field-suggestion.js.map +1 -0
  133. package/dist/core/siebel/health-check.d.ts +21 -0
  134. package/dist/core/siebel/health-check.d.ts.map +1 -0
  135. package/dist/core/siebel/health-check.js +51 -0
  136. package/dist/core/siebel/health-check.js.map +1 -0
  137. package/dist/core/siebel/integration-test-gen.d.ts +26 -0
  138. package/dist/core/siebel/integration-test-gen.d.ts.map +1 -0
  139. package/dist/core/siebel/integration-test-gen.js +131 -0
  140. package/dist/core/siebel/integration-test-gen.js.map +1 -0
  141. package/dist/core/siebel/lov-mapper.d.ts +23 -0
  142. package/dist/core/siebel/lov-mapper.d.ts.map +1 -0
  143. package/dist/core/siebel/lov-mapper.js +42 -0
  144. package/dist/core/siebel/lov-mapper.js.map +1 -0
  145. package/dist/core/siebel/migration-package.d.ts +38 -0
  146. package/dist/core/siebel/migration-package.d.ts.map +1 -0
  147. package/dist/core/siebel/migration-package.js +276 -0
  148. package/dist/core/siebel/migration-package.js.map +1 -0
  149. package/dist/core/siebel/naming-convention-validator.d.ts +38 -0
  150. package/dist/core/siebel/naming-convention-validator.d.ts.map +1 -0
  151. package/dist/core/siebel/naming-convention-validator.js +165 -0
  152. package/dist/core/siebel/naming-convention-validator.js.map +1 -0
  153. package/dist/core/siebel/object-erd.d.ts +28 -0
  154. package/dist/core/siebel/object-erd.d.ts.map +1 -0
  155. package/dist/core/siebel/object-erd.js +82 -0
  156. package/dist/core/siebel/object-erd.js.map +1 -0
  157. package/dist/core/siebel/orphan-detector.d.ts +21 -0
  158. package/dist/core/siebel/orphan-detector.d.ts.map +1 -0
  159. package/dist/core/siebel/orphan-detector.js +64 -0
  160. package/dist/core/siebel/orphan-detector.js.map +1 -0
  161. package/dist/core/siebel/pattern-analyzer.d.ts +32 -0
  162. package/dist/core/siebel/pattern-analyzer.d.ts.map +1 -0
  163. package/dist/core/siebel/pattern-analyzer.js +155 -0
  164. package/dist/core/siebel/pattern-analyzer.js.map +1 -0
  165. package/dist/core/siebel/profileattr-flow.d.ts +26 -0
  166. package/dist/core/siebel/profileattr-flow.d.ts.map +1 -0
  167. package/dist/core/siebel/profileattr-flow.js +50 -0
  168. package/dist/core/siebel/profileattr-flow.js.map +1 -0
  169. package/dist/core/siebel/runtime-dep-builder.d.ts +9 -0
  170. package/dist/core/siebel/runtime-dep-builder.d.ts.map +1 -0
  171. package/dist/core/siebel/runtime-dep-builder.js +47 -0
  172. package/dist/core/siebel/runtime-dep-builder.js.map +1 -0
  173. package/dist/core/siebel/scaffold-generator.d.ts +25 -0
  174. package/dist/core/siebel/scaffold-generator.d.ts.map +1 -0
  175. package/dist/core/siebel/scaffold-generator.js +278 -0
  176. package/dist/core/siebel/scaffold-generator.js.map +1 -0
  177. package/dist/core/siebel/siebel-context-builder.d.ts +10 -0
  178. package/dist/core/siebel/siebel-context-builder.d.ts.map +1 -0
  179. package/dist/core/siebel/siebel-context-builder.js +75 -0
  180. package/dist/core/siebel/siebel-context-builder.js.map +1 -0
  181. package/dist/core/siebel/siebel-rag-booster.d.ts +19 -0
  182. package/dist/core/siebel/siebel-rag-booster.d.ts.map +1 -0
  183. package/dist/core/siebel/siebel-rag-booster.js +41 -0
  184. package/dist/core/siebel/siebel-rag-booster.js.map +1 -0
  185. package/dist/core/siebel/siebel-validators.d.ts +73 -0
  186. package/dist/core/siebel/siebel-validators.d.ts.map +1 -0
  187. package/dist/core/siebel/siebel-validators.js +269 -0
  188. package/dist/core/siebel/siebel-validators.js.map +1 -0
  189. package/dist/core/siebel/sif-batch-importer.d.ts +27 -0
  190. package/dist/core/siebel/sif-batch-importer.d.ts.map +1 -0
  191. package/dist/core/siebel/sif-batch-importer.js +68 -0
  192. package/dist/core/siebel/sif-batch-importer.js.map +1 -0
  193. package/dist/core/siebel/sif-diff.d.ts +57 -0
  194. package/dist/core/siebel/sif-diff.d.ts.map +1 -0
  195. package/dist/core/siebel/sif-diff.js +198 -0
  196. package/dist/core/siebel/sif-diff.js.map +1 -0
  197. package/dist/core/siebel/sif-parser.d.ts.map +1 -1
  198. package/dist/core/siebel/sif-parser.js +86 -0
  199. package/dist/core/siebel/sif-parser.js.map +1 -1
  200. package/dist/core/siebel/similarity-detector.d.ts +20 -0
  201. package/dist/core/siebel/similarity-detector.d.ts.map +1 -0
  202. package/dist/core/siebel/similarity-detector.js +83 -0
  203. package/dist/core/siebel/similarity-detector.js.map +1 -0
  204. package/dist/core/siebel/template-learner.d.ts +25 -0
  205. package/dist/core/siebel/template-learner.d.ts.map +1 -0
  206. package/dist/core/siebel/template-learner.js +129 -0
  207. package/dist/core/siebel/template-learner.js.map +1 -0
  208. package/dist/core/siebel/troubleshoot.d.ts +37 -0
  209. package/dist/core/siebel/troubleshoot.d.ts.map +1 -0
  210. package/dist/core/siebel/troubleshoot.js +249 -0
  211. package/dist/core/siebel/troubleshoot.js.map +1 -0
  212. package/dist/core/siebel/wsdl-correlation.d.ts +22 -0
  213. package/dist/core/siebel/wsdl-correlation.d.ts.map +1 -0
  214. package/dist/core/siebel/wsdl-correlation.js +64 -0
  215. package/dist/core/siebel/wsdl-correlation.js.map +1 -0
  216. package/dist/core/siebel/wsdl-parser.d.ts +57 -0
  217. package/dist/core/siebel/wsdl-parser.d.ts.map +1 -0
  218. package/dist/core/siebel/wsdl-parser.js +226 -0
  219. package/dist/core/siebel/wsdl-parser.js.map +1 -0
  220. package/dist/core/siebel/wsdl-to-sif.d.ts +22 -0
  221. package/dist/core/siebel/wsdl-to-sif.d.ts.map +1 -0
  222. package/dist/core/siebel/wsdl-to-sif.js +184 -0
  223. package/dist/core/siebel/wsdl-to-sif.js.map +1 -0
  224. package/dist/core/store/migrations.d.ts.map +1 -1
  225. package/dist/core/store/migrations.js +21 -0
  226. package/dist/core/store/migrations.js.map +1 -1
  227. package/dist/mcp/tools/code-intelligence.d.ts +15 -0
  228. package/dist/mcp/tools/code-intelligence.d.ts.map +1 -0
  229. package/dist/mcp/tools/code-intelligence.js +276 -0
  230. package/dist/mcp/tools/code-intelligence.js.map +1 -0
  231. package/dist/mcp/tools/index.d.ts.map +1 -1
  232. package/dist/mcp/tools/index.js +4 -0
  233. package/dist/mcp/tools/index.js.map +1 -1
  234. package/dist/mcp/tools/siebel-analyze.d.ts.map +1 -1
  235. package/dist/mcp/tools/siebel-analyze.js +89 -6
  236. package/dist/mcp/tools/siebel-analyze.js.map +1 -1
  237. package/dist/mcp/tools/siebel-composer.d.ts.map +1 -1
  238. package/dist/mcp/tools/siebel-composer.js +40 -3
  239. package/dist/mcp/tools/siebel-composer.js.map +1 -1
  240. package/dist/mcp/tools/siebel-generate-sif.d.ts.map +1 -1
  241. package/dist/mcp/tools/siebel-generate-sif.js +188 -3
  242. package/dist/mcp/tools/siebel-generate-sif.js.map +1 -1
  243. package/dist/mcp/tools/siebel-search.js +1 -1
  244. package/dist/mcp/tools/siebel-search.js.map +1 -1
  245. package/dist/mcp/tools/siebel-validate.d.ts.map +1 -1
  246. package/dist/mcp/tools/siebel-validate.js +94 -5
  247. package/dist/mcp/tools/siebel-validate.js.map +1 -1
  248. package/dist/schemas/knowledge.schema.d.ts +6 -0
  249. package/dist/schemas/knowledge.schema.d.ts.map +1 -1
  250. package/dist/schemas/knowledge.schema.js +2 -1
  251. package/dist/schemas/knowledge.schema.js.map +1 -1
  252. package/dist/schemas/siebel.schema.d.ts +42 -0
  253. package/dist/schemas/siebel.schema.d.ts.map +1 -1
  254. package/dist/schemas/siebel.schema.js +4 -0
  255. package/dist/schemas/siebel.schema.js.map +1 -1
  256. package/package.json +2 -2
@@ -0,0 +1,105 @@
1
+ /**
2
+ * Smart Field Suggestion — suggests fields for new applets based on
3
+ * frequency analysis of existing applets that use the same BC.
4
+ *
5
+ * Fields are ranked by how many existing applets include them, and
6
+ * classified as required (high frequency), optional (medium), or
7
+ * available (unused but present in BC).
8
+ */
9
+ import { logger } from "../utils/logger.js";
10
+ // --- Implementation ---
11
+ export function suggestFields(request) {
12
+ const { targetBcName, repository, requiredThreshold = 0.6 } = request;
13
+ logger.debug("field-suggestion: analyzing", { targetBcName, repoSize: repository.length });
14
+ // Find the target BC
15
+ const targetBc = repository.find((o) => o.type === "business_component" && o.name === targetBcName);
16
+ if (!targetBc) {
17
+ logger.debug("field-suggestion: BC not found", { targetBcName });
18
+ return {
19
+ targetBcName,
20
+ suggestions: [],
21
+ appletCount: 0,
22
+ bcFieldCount: 0,
23
+ requiredThreshold,
24
+ };
25
+ }
26
+ // Get all BC field names
27
+ const bcFields = new Set(targetBc.children.filter((c) => c.type === "field").map((c) => c.name));
28
+ // Find applets that reference this BC
29
+ const applets = repository.filter((o) => o.type === "applet" &&
30
+ o.properties.some((p) => p.name === "BUS_COMP" && p.value === targetBcName));
31
+ if (applets.length === 0) {
32
+ logger.debug("field-suggestion: no applets for BC", { targetBcName });
33
+ return {
34
+ targetBcName,
35
+ suggestions: [],
36
+ appletCount: 0,
37
+ bcFieldCount: bcFields.size,
38
+ requiredThreshold,
39
+ };
40
+ }
41
+ // Count field usage across applets
42
+ const fieldCounts = new Map();
43
+ for (const applet of applets) {
44
+ const usedFields = new Set();
45
+ for (const child of applet.children) {
46
+ const fieldProp = child.properties.find((p) => p.name === "FIELD")?.value;
47
+ if (fieldProp) {
48
+ usedFields.add(fieldProp);
49
+ }
50
+ // Also check if child name matches a BC field (control name = field name)
51
+ if (child.type === "control" && bcFields.has(child.name) && !fieldProp) {
52
+ usedFields.add(child.name);
53
+ }
54
+ }
55
+ for (const field of usedFields) {
56
+ fieldCounts.set(field, (fieldCounts.get(field) ?? 0) + 1);
57
+ }
58
+ }
59
+ // Build suggestions: include all BC fields
60
+ const suggestions = [];
61
+ for (const fieldName of bcFields) {
62
+ const count = fieldCounts.get(fieldName) ?? 0;
63
+ const ratio = applets.length > 0 ? count / applets.length : 0;
64
+ let classification;
65
+ if (count === 0) {
66
+ classification = "available";
67
+ }
68
+ else if (ratio >= requiredThreshold) {
69
+ classification = "required";
70
+ }
71
+ else {
72
+ classification = "optional";
73
+ }
74
+ suggestions.push({
75
+ fieldName,
76
+ frequency: count,
77
+ frequencyRatio: Math.round(ratio * 100) / 100,
78
+ classification,
79
+ });
80
+ }
81
+ // Sort: required first, then by frequency desc, then alphabetical
82
+ suggestions.sort((a, b) => {
83
+ const classOrder = { required: 0, optional: 1, available: 2 };
84
+ const classDiff = classOrder[a.classification] - classOrder[b.classification];
85
+ if (classDiff !== 0)
86
+ return classDiff;
87
+ if (b.frequency !== a.frequency)
88
+ return b.frequency - a.frequency;
89
+ return a.fieldName.localeCompare(b.fieldName);
90
+ });
91
+ logger.info("field-suggestion: complete", {
92
+ targetBcName,
93
+ applets: applets.length,
94
+ suggestions: suggestions.length,
95
+ required: suggestions.filter((s) => s.classification === "required").length,
96
+ });
97
+ return {
98
+ targetBcName,
99
+ suggestions,
100
+ appletCount: applets.length,
101
+ bcFieldCount: bcFields.size,
102
+ requiredThreshold,
103
+ };
104
+ }
105
+ //# sourceMappingURL=field-suggestion.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"field-suggestion.js","sourceRoot":"","sources":["../../../src/core/siebel/field-suggestion.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,21 @@
1
+ /**
2
+ * Health Check — validates connectivity with configured Siebel environments.
3
+ */
4
+ import type { SiebelEnvironment } from "../../schemas/siebel.schema.js";
5
+ export type HealthStatus = "online" | "offline" | "degraded";
6
+ export interface HealthCheckOptions {
7
+ timeoutMs?: number;
8
+ }
9
+ export interface HealthCheckResult {
10
+ environmentName: string;
11
+ url: string;
12
+ status: HealthStatus;
13
+ responseTimeMs: number;
14
+ error?: string;
15
+ checkedAt: string;
16
+ }
17
+ /**
18
+ * Check connectivity with a Siebel environment.
19
+ */
20
+ export declare function checkEnvironmentHealth(env: SiebelEnvironment, options?: HealthCheckOptions): Promise<HealthCheckResult>;
21
+ //# sourceMappingURL=health-check.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"health-check.d.ts","sourceRoot":"","sources":["../../../src/core/siebel/health-check.ts"],"names":[],"mappings":"AAAA;;GAEG;AAGH,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,gCAAgC,CAAC;AAExE,MAAM,MAAM,YAAY,GAAG,QAAQ,GAAG,SAAS,GAAG,UAAU,CAAC;AAE7D,MAAM,WAAW,kBAAkB;IACjC,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,iBAAiB;IAChC,eAAe,EAAE,MAAM,CAAC;IACxB,GAAG,EAAE,MAAM,CAAC;IACZ,MAAM,EAAE,YAAY,CAAC;IACrB,cAAc,EAAE,MAAM,CAAC;IACvB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,MAAM,CAAC;CACnB;AAED;;GAEG;AACH,wBAAsB,sBAAsB,CAC1C,GAAG,EAAE,iBAAiB,EACtB,OAAO,CAAC,EAAE,kBAAkB,GAC3B,OAAO,CAAC,iBAAiB,CAAC,CAiD5B"}
@@ -0,0 +1,51 @@
1
+ /**
2
+ * Health Check — validates connectivity with configured Siebel environments.
3
+ */
4
+ import { logger } from "../utils/logger.js";
5
+ /**
6
+ * Check connectivity with a Siebel environment.
7
+ */
8
+ export async function checkEnvironmentHealth(env, options) {
9
+ const timeoutMs = options?.timeoutMs ?? 10000;
10
+ const start = Date.now();
11
+ try {
12
+ const controller = new AbortController();
13
+ const timer = setTimeout(() => controller.abort(), timeoutMs);
14
+ const response = await fetch(env.url, {
15
+ method: "HEAD",
16
+ signal: controller.signal,
17
+ });
18
+ clearTimeout(timer);
19
+ const responseTimeMs = Date.now() - start;
20
+ const status = response.ok ? "online" : "degraded";
21
+ logger.info("Health check complete", {
22
+ environment: env.name,
23
+ status,
24
+ responseTime: String(responseTimeMs),
25
+ });
26
+ return {
27
+ environmentName: env.name,
28
+ url: env.url,
29
+ status,
30
+ responseTimeMs,
31
+ checkedAt: new Date().toISOString(),
32
+ };
33
+ }
34
+ catch (err) {
35
+ const responseTimeMs = Date.now() - start;
36
+ const error = err instanceof Error ? err.message : String(err);
37
+ logger.warn("Health check failed", {
38
+ environment: env.name,
39
+ error,
40
+ });
41
+ return {
42
+ environmentName: env.name,
43
+ url: env.url,
44
+ status: "offline",
45
+ responseTimeMs,
46
+ error,
47
+ checkedAt: new Date().toISOString(),
48
+ };
49
+ }
50
+ }
51
+ //# sourceMappingURL=health-check.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"health-check.js","sourceRoot":"","sources":["../../../src/core/siebel/health-check.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAC;AAkB5C;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,sBAAsB,CAC1C,GAAsB,EACtB,OAA4B;IAE5B,MAAM,SAAS,GAAG,OAAO,EAAE,SAAS,IAAI,KAAK,CAAC;IAC9C,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;IAEzB,IAAI,CAAC;QACH,MAAM,UAAU,GAAG,IAAI,eAAe,EAAE,CAAC;QACzC,MAAM,KAAK,GAAG,UAAU,CAAC,GAAG,EAAE,CAAC,UAAU,CAAC,KAAK,EAAE,EAAE,SAAS,CAAC,CAAC;QAE9D,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,GAAG,CAAC,GAAG,EAAE;YACpC,MAAM,EAAE,MAAM;YACd,MAAM,EAAE,UAAU,CAAC,MAAM;SAC1B,CAAC,CAAC;QAEH,YAAY,CAAC,KAAK,CAAC,CAAC;QACpB,MAAM,cAAc,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,KAAK,CAAC;QAE1C,MAAM,MAAM,GAAiB,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,UAAU,CAAC;QAEjE,MAAM,CAAC,IAAI,CAAC,uBAAuB,EAAE;YACnC,WAAW,EAAE,GAAG,CAAC,IAAI;YACrB,MAAM;YACN,YAAY,EAAE,MAAM,CAAC,cAAc,CAAC;SACrC,CAAC,CAAC;QAEH,OAAO;YACL,eAAe,EAAE,GAAG,CAAC,IAAI;YACzB,GAAG,EAAE,GAAG,CAAC,GAAG;YACZ,MAAM;YACN,cAAc;YACd,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;SACpC,CAAC;IACJ,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,MAAM,cAAc,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,KAAK,CAAC;QAC1C,MAAM,KAAK,GAAG,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;QAE/D,MAAM,CAAC,IAAI,CAAC,qBAAqB,EAAE;YACjC,WAAW,EAAE,GAAG,CAAC,IAAI;YACrB,KAAK;SACN,CAAC,CAAC;QAEH,OAAO;YACL,eAAe,EAAE,GAAG,CAAC,IAAI;YACzB,GAAG,EAAE,GAAG,CAAC,GAAG;YACZ,MAAM,EAAE,SAAS;YACjB,cAAc;YACd,KAAK;YACL,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;SACpC,CAAC;IACJ,CAAC;AACH,CAAC"}
@@ -0,0 +1,26 @@
1
+ /**
2
+ * Integration Test Generator — generates HTTP test scripts from WSDL definitions.
3
+ *
4
+ * For each WSDL operation, generates:
5
+ * - Example SOAP request payload
6
+ * - HTTP test script (curl/fetch style)
7
+ * - Expected response fields for validation
8
+ * - Direction detection (inbound vs outbound)
9
+ */
10
+ import type { WsdlParseResult } from "./wsdl-parser.js";
11
+ export interface IntegrationTestCase {
12
+ readonly operationName: string;
13
+ readonly direction: "inbound" | "outbound";
14
+ readonly soapAction: string;
15
+ readonly requestPayload: string;
16
+ readonly httpScript: string;
17
+ readonly expectedResponseFields: readonly string[];
18
+ }
19
+ export interface IntegrationTestSuite {
20
+ readonly serviceName: string;
21
+ readonly endpointUrl: string;
22
+ readonly totalOperations: number;
23
+ readonly testCases: readonly IntegrationTestCase[];
24
+ }
25
+ export declare function generateIntegrationTests(wsdl: WsdlParseResult): IntegrationTestSuite;
26
+ //# sourceMappingURL=integration-test-gen.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"integration-test-gen.d.ts","sourceRoot":"","sources":["../../../src/core/siebel/integration-test-gen.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,KAAK,EACV,eAAe,EAKhB,MAAM,kBAAkB,CAAC;AAK1B,MAAM,WAAW,mBAAmB;IAClC,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAC;IAC/B,QAAQ,CAAC,SAAS,EAAE,SAAS,GAAG,UAAU,CAAC;IAC3C,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,cAAc,EAAE,MAAM,CAAC;IAChC,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,sBAAsB,EAAE,SAAS,MAAM,EAAE,CAAC;CACpD;AAED,MAAM,WAAW,oBAAoB;IACnC,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,eAAe,EAAE,MAAM,CAAC;IACjC,QAAQ,CAAC,SAAS,EAAE,SAAS,mBAAmB,EAAE,CAAC;CACpD;AA8GD,wBAAgB,wBAAwB,CAAC,IAAI,EAAE,eAAe,GAAG,oBAAoB,CAsDpF"}
@@ -0,0 +1,131 @@
1
+ /**
2
+ * Integration Test Generator — generates HTTP test scripts from WSDL definitions.
3
+ *
4
+ * For each WSDL operation, generates:
5
+ * - Example SOAP request payload
6
+ * - HTTP test script (curl/fetch style)
7
+ * - Expected response fields for validation
8
+ * - Direction detection (inbound vs outbound)
9
+ */
10
+ import { logger } from "../utils/logger.js";
11
+ // --- Helpers ---
12
+ const INBOUND_PATTERNS = /upsert|insert|update|create|delete|sync|import|write|save/i;
13
+ const OUTBOUND_PATTERNS = /query|check|get|fetch|read|search|lookup|validate|verify|export/i;
14
+ function detectDirection(operationName) {
15
+ if (INBOUND_PATTERNS.test(operationName))
16
+ return "inbound";
17
+ if (OUTBOUND_PATTERNS.test(operationName))
18
+ return "outbound";
19
+ // Default: if name contains "WS" suffix or "Service" it's typically inbound
20
+ return INBOUND_PATTERNS.test(operationName) ? "inbound" : "outbound";
21
+ }
22
+ function findMessageType(messageName, messages) {
23
+ return messages.find((m) => m.name === messageName);
24
+ }
25
+ function findComplexType(typeName, types) {
26
+ return types.find((t) => t.name === typeName);
27
+ }
28
+ function resolveFields(message, types) {
29
+ if (!message || message.parts.length === 0)
30
+ return [];
31
+ // Try to resolve through parts → complex types
32
+ for (const part of message.parts) {
33
+ const ct = findComplexType(part.type, types);
34
+ if (ct)
35
+ return ct.fields;
36
+ }
37
+ // Fallback: create fields from part names
38
+ return message.parts.map((p) => ({
39
+ name: p.name,
40
+ type: p.type,
41
+ }));
42
+ }
43
+ function generateSampleValue(field) {
44
+ const lower = field.type.toLowerCase();
45
+ if (lower.includes("int") || lower.includes("number") || lower.includes("decimal")) {
46
+ return "12345";
47
+ }
48
+ if (lower.includes("bool"))
49
+ return "true";
50
+ if (lower.includes("date"))
51
+ return "2026-01-01T00:00:00Z";
52
+ return `sample_${field.name}`;
53
+ }
54
+ function buildXmlPayload(operationName, fields, namespace) {
55
+ const lines = [
56
+ `<?xml version="1.0" encoding="UTF-8"?>`,
57
+ `<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ns="${namespace}">`,
58
+ ` <soapenv:Header/>`,
59
+ ` <soapenv:Body>`,
60
+ ` <ns:${operationName}>`,
61
+ ];
62
+ for (const field of fields) {
63
+ const value = generateSampleValue(field);
64
+ const comment = field.optional ? " <!-- optional -->" : "";
65
+ lines.push(` <ns:${field.name}>${value}</ns:${field.name}>${comment}`);
66
+ }
67
+ lines.push(` </ns:${operationName}>`, ` </soapenv:Body>`, `</soapenv:Envelope>`);
68
+ return lines.join("\n");
69
+ }
70
+ function buildHttpScript(operationName, endpointUrl, soapAction, payload) {
71
+ const lines = [
72
+ `# Test: ${operationName}`,
73
+ `# Method: POST`,
74
+ `# Endpoint: ${endpointUrl}`,
75
+ ``,
76
+ `curl -X POST "${endpointUrl}" \\`,
77
+ ` -H "Content-Type: text/xml; charset=UTF-8" \\`,
78
+ ` -H "SOAPAction: ${soapAction}" \\`,
79
+ ` -d '${payload.replace(/'/g, "\\'")}'`,
80
+ ``,
81
+ `# Expected: HTTP 200 with SOAP response`,
82
+ `# Validate: response contains ${operationName} result fields`,
83
+ ];
84
+ return lines.join("\n");
85
+ }
86
+ // --- Main function ---
87
+ export function generateIntegrationTests(wsdl) {
88
+ logger.debug("integration-test-gen: generating", {
89
+ operations: wsdl.operations.length,
90
+ types: wsdl.types.length,
91
+ });
92
+ const serviceName = wsdl.services[0]?.name ?? wsdl.metadata.fileName.replace(".wsdl", "");
93
+ const endpointUrl = wsdl.services[0]?.ports[0]?.address ?? "https://siebel.example.com/eai/service";
94
+ const namespace = wsdl.metadata.targetNamespace;
95
+ const testCases = [];
96
+ for (const op of wsdl.operations) {
97
+ const direction = detectDirection(op.name);
98
+ const soapAction = op.soapAction ?? `document/urn:${op.name}`;
99
+ // Resolve input fields
100
+ const inputMsg = findMessageType(op.inputMessage, wsdl.messages);
101
+ const inputFields = resolveFields(inputMsg, wsdl.types);
102
+ // Resolve output fields for validation
103
+ const outputMsg = findMessageType(op.outputMessage, wsdl.messages);
104
+ const outputFields = resolveFields(outputMsg, wsdl.types);
105
+ // Build payload
106
+ const payload = buildXmlPayload(op.name, inputFields, namespace);
107
+ // Build HTTP script
108
+ const httpScript = buildHttpScript(op.name, endpointUrl, soapAction, payload);
109
+ // Expected response fields
110
+ const expectedResponseFields = outputFields.map((f) => f.name);
111
+ testCases.push({
112
+ operationName: op.name,
113
+ direction,
114
+ soapAction,
115
+ requestPayload: payload,
116
+ httpScript,
117
+ expectedResponseFields,
118
+ });
119
+ }
120
+ logger.info("integration-test-gen: complete", {
121
+ service: serviceName,
122
+ testCases: testCases.length,
123
+ });
124
+ return {
125
+ serviceName,
126
+ endpointUrl,
127
+ totalOperations: wsdl.operations.length,
128
+ testCases,
129
+ };
130
+ }
131
+ //# sourceMappingURL=integration-test-gen.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"integration-test-gen.js","sourceRoot":"","sources":["../../../src/core/siebel/integration-test-gen.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,23 @@
1
+ /**
2
+ * LOV Mapper — maps List of Values dependencies from eScript references.
3
+ */
4
+ import type { SiebelObject } from "../../schemas/siebel.schema.js";
5
+ export interface LovDependent {
6
+ object: string;
7
+ method: string;
8
+ value: string;
9
+ }
10
+ export interface LovTypeInfo {
11
+ name: string;
12
+ values: string[];
13
+ dependents: LovDependent[];
14
+ }
15
+ export interface LovMapResult {
16
+ lovTypes: LovTypeInfo[];
17
+ totalLovTypes: number;
18
+ }
19
+ /**
20
+ * Map all LOV references from eScript source code.
21
+ */
22
+ export declare function mapLovDependencies(objects: SiebelObject[]): LovMapResult;
23
+ //# sourceMappingURL=lov-mapper.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"lov-mapper.d.ts","sourceRoot":"","sources":["../../../src/core/siebel/lov-mapper.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,gCAAgC,CAAC;AAEnE,MAAM,WAAW,YAAY;IAC3B,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,MAAM,CAAC;CACf;AAED,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,EAAE,CAAC;IACjB,UAAU,EAAE,YAAY,EAAE,CAAC;CAC5B;AAED,MAAM,WAAW,YAAY;IAC3B,QAAQ,EAAE,WAAW,EAAE,CAAC;IACxB,aAAa,EAAE,MAAM,CAAC;CACvB;AAKD;;GAEG;AACH,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,YAAY,EAAE,GAAG,YAAY,CAsCxE"}
@@ -0,0 +1,42 @@
1
+ /**
2
+ * LOV Mapper — maps List of Values dependencies from eScript references.
3
+ */
4
+ const LOV_PATTERN = /InvokeMethod\s*\(\s*"LookupValue"\s*,\s*"([^"]+)"\s*,\s*"([^"]+)"/g;
5
+ const LOOKUP_VALUE_PATTERN = /LookupValue\s*\(\s*"([^"]+)"\s*,\s*"([^"]+)"/g;
6
+ /**
7
+ * Map all LOV references from eScript source code.
8
+ */
9
+ export function mapLovDependencies(objects) {
10
+ const lovMap = new Map();
11
+ for (const obj of objects) {
12
+ const scripts = obj.children.filter((c) => c.type === "escript");
13
+ for (const script of scripts) {
14
+ const sourceCode = script.properties.find((p) => p.name === "SOURCE_CODE")?.value ?? "";
15
+ const method = script.properties.find((p) => p.name === "METHOD")?.value ?? script.name;
16
+ if (!sourceCode)
17
+ continue;
18
+ for (const pattern of [LOV_PATTERN, LOOKUP_VALUE_PATTERN]) {
19
+ pattern.lastIndex = 0;
20
+ let match;
21
+ while ((match = pattern.exec(sourceCode)) !== null) {
22
+ const lovType = match[1];
23
+ const lovValue = match[2];
24
+ const entry = lovMap.get(lovType) ?? { values: new Set(), dependents: [] };
25
+ entry.values.add(lovValue);
26
+ // Avoid duplicate dependents for same object+method
27
+ if (!entry.dependents.some((d) => d.object === obj.name && d.method === method && d.value === lovValue)) {
28
+ entry.dependents.push({ object: obj.name, method, value: lovValue });
29
+ }
30
+ lovMap.set(lovType, entry);
31
+ }
32
+ }
33
+ }
34
+ }
35
+ const lovTypes = Array.from(lovMap.entries()).map(([name, data]) => ({
36
+ name,
37
+ values: Array.from(data.values),
38
+ dependents: data.dependents,
39
+ }));
40
+ return { lovTypes, totalLovTypes: lovTypes.length };
41
+ }
42
+ //# sourceMappingURL=lov-mapper.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"lov-mapper.js","sourceRoot":"","sources":["../../../src/core/siebel/lov-mapper.ts"],"names":[],"mappings":"AAAA;;GAEG;AAqBH,MAAM,WAAW,GAAG,oEAAoE,CAAC;AACzF,MAAM,oBAAoB,GAAG,+CAA+C,CAAC;AAE7E;;GAEG;AACH,MAAM,UAAU,kBAAkB,CAAC,OAAuB;IACxD,MAAM,MAAM,GAAG,IAAI,GAAG,EAA+D,CAAC;IAEtF,KAAK,MAAM,GAAG,IAAI,OAAO,EAAE,CAAC;QAC1B,MAAM,OAAO,GAAG,GAAG,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,SAAS,CAAC,CAAC;QACjE,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE,CAAC;YAC7B,MAAM,UAAU,GAAG,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,aAAa,CAAC,EAAE,KAAK,IAAI,EAAE,CAAC;YACxF,MAAM,MAAM,GAAG,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,QAAQ,CAAC,EAAE,KAAK,IAAI,MAAM,CAAC,IAAI,CAAC;YACxF,IAAI,CAAC,UAAU;gBAAE,SAAS;YAE1B,KAAK,MAAM,OAAO,IAAI,CAAC,WAAW,EAAE,oBAAoB,CAAC,EAAE,CAAC;gBAC1D,OAAO,CAAC,SAAS,GAAG,CAAC,CAAC;gBACtB,IAAI,KAA6B,CAAC;gBAClC,OAAO,CAAC,KAAK,GAAG,OAAO,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,KAAK,IAAI,EAAE,CAAC;oBACnD,MAAM,OAAO,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;oBACzB,MAAM,QAAQ,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;oBAE1B,MAAM,KAAK,GAAG,MAAM,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,GAAG,EAAE,EAAE,UAAU,EAAE,EAAE,EAAE,CAAC;oBAC3E,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;oBAE3B,oDAAoD;oBACpD,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,KAAK,GAAG,CAAC,IAAI,IAAI,CAAC,CAAC,MAAM,KAAK,MAAM,IAAI,CAAC,CAAC,KAAK,KAAK,QAAQ,CAAC,EAAE,CAAC;wBACxG,KAAK,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,GAAG,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAC,CAAC;oBACvE,CAAC;oBAED,MAAM,CAAC,GAAG,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;gBAC7B,CAAC;YACH,CAAC;QACH,CAAC;IACH,CAAC;IAED,MAAM,QAAQ,GAAkB,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,EAAE,IAAI,CAAC,EAAE,EAAE,CAAC,CAAC;QAClF,IAAI;QACJ,MAAM,EAAE,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC;QAC/B,UAAU,EAAE,IAAI,CAAC,UAAU;KAC5B,CAAC,CAAC,CAAC;IAEJ,OAAO,EAAE,QAAQ,EAAE,aAAa,EAAE,QAAQ,CAAC,MAAM,EAAE,CAAC;AACtD,CAAC"}
@@ -0,0 +1,38 @@
1
+ /**
2
+ * Migration Package Builder — builds deploy packages from modified Siebel objects
3
+ * with transitive dependency resolution, topological ordering, lock conflict
4
+ * detection, and per-environment deploy scripts.
5
+ */
6
+ import type { SiebelObject, SiebelObjectRef, SiebelDependency, SiebelObjectType } from "../../schemas/siebel.schema.js";
7
+ /** Canonical deploy order for Siebel object types */
8
+ export declare const DEPLOY_ORDER: readonly SiebelObjectType[];
9
+ export interface MigrationPackageRequest {
10
+ readonly modifiedObjects: readonly SiebelObject[];
11
+ readonly allObjects: readonly SiebelObject[];
12
+ readonly dependencies: readonly SiebelDependency[];
13
+ readonly currentUser?: string;
14
+ readonly environments?: readonly string[];
15
+ }
16
+ export interface LockConflict {
17
+ readonly objectName: string;
18
+ readonly objectType: SiebelObjectType;
19
+ readonly lockedBy: string;
20
+ }
21
+ export interface DeployScript {
22
+ readonly environment: string;
23
+ readonly commands: readonly string[];
24
+ }
25
+ export interface CircularDepInfo {
26
+ readonly objects: readonly SiebelObjectRef[];
27
+ }
28
+ export interface MigrationPackage {
29
+ readonly objects: readonly SiebelObjectRef[];
30
+ readonly deployOrder: readonly SiebelObjectRef[];
31
+ readonly conflicts: readonly LockConflict[];
32
+ readonly circularDeps: readonly CircularDepInfo[];
33
+ readonly deployScripts: readonly DeployScript[];
34
+ readonly riskLevel: "low" | "medium" | "high" | "critical";
35
+ readonly report: string;
36
+ }
37
+ export declare function buildMigrationPackage(request: MigrationPackageRequest): MigrationPackage;
38
+ //# sourceMappingURL=migration-package.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"migration-package.d.ts","sourceRoot":"","sources":["../../../src/core/siebel/migration-package.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EACV,YAAY,EACZ,eAAe,EACf,gBAAgB,EAChB,gBAAgB,EACjB,MAAM,gCAAgC,CAAC;AAKxC,qDAAqD;AACrD,eAAO,MAAM,YAAY,EAAE,SAAS,gBAAgB,EAuBnD,CAAC;AAIF,MAAM,WAAW,uBAAuB;IACtC,QAAQ,CAAC,eAAe,EAAE,SAAS,YAAY,EAAE,CAAC;IAClD,QAAQ,CAAC,UAAU,EAAE,SAAS,YAAY,EAAE,CAAC;IAC7C,QAAQ,CAAC,YAAY,EAAE,SAAS,gBAAgB,EAAE,CAAC;IACnD,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,CAAC;IAC9B,QAAQ,CAAC,YAAY,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;CAC3C;AAED,MAAM,WAAW,YAAY;IAC3B,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,UAAU,EAAE,gBAAgB,CAAC;IACtC,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;CAC3B;AAED,MAAM,WAAW,YAAY;IAC3B,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,QAAQ,EAAE,SAAS,MAAM,EAAE,CAAC;CACtC;AAED,MAAM,WAAW,eAAe;IAC9B,QAAQ,CAAC,OAAO,EAAE,SAAS,eAAe,EAAE,CAAC;CAC9C;AAED,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,CAAC,OAAO,EAAE,SAAS,eAAe,EAAE,CAAC;IAC7C,QAAQ,CAAC,WAAW,EAAE,SAAS,eAAe,EAAE,CAAC;IACjD,QAAQ,CAAC,SAAS,EAAE,SAAS,YAAY,EAAE,CAAC;IAC5C,QAAQ,CAAC,YAAY,EAAE,SAAS,eAAe,EAAE,CAAC;IAClD,QAAQ,CAAC,aAAa,EAAE,SAAS,YAAY,EAAE,CAAC;IAChD,QAAQ,CAAC,SAAS,EAAE,KAAK,GAAG,QAAQ,GAAG,MAAM,GAAG,UAAU,CAAC;IAC3D,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;CACzB;AA4OD,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,uBAAuB,GAAG,gBAAgB,CA8ExF"}