@robinmordasiewicz/f5xc-api-mcp 3.5.0 → 3.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 (143) hide show
  1. package/dist/generator/dependency-extractor.d.ts +103 -0
  2. package/dist/generator/dependency-extractor.d.ts.map +1 -0
  3. package/dist/generator/dependency-extractor.js +473 -0
  4. package/dist/generator/dependency-extractor.js.map +1 -0
  5. package/dist/generator/dependency-graph.d.ts +67 -0
  6. package/dist/generator/dependency-graph.d.ts.map +1 -0
  7. package/dist/generator/dependency-graph.js +330 -0
  8. package/dist/generator/dependency-graph.js.map +1 -0
  9. package/dist/generator/dependency-types.d.ts +206 -0
  10. package/dist/generator/dependency-types.d.ts.map +1 -0
  11. package/dist/generator/dependency-types.js +37 -0
  12. package/dist/generator/dependency-types.js.map +1 -0
  13. package/dist/generator/openapi-parser.d.ts +7 -0
  14. package/dist/generator/openapi-parser.d.ts.map +1 -1
  15. package/dist/generator/openapi-parser.js +41 -0
  16. package/dist/generator/openapi-parser.js.map +1 -1
  17. package/dist/generator/tool-generator.d.ts +17 -0
  18. package/dist/generator/tool-generator.d.ts.map +1 -1
  19. package/dist/generator/tool-generator.js +25 -0
  20. package/dist/generator/tool-generator.js.map +1 -1
  21. package/dist/tools/discovery/dependencies.d.ts +113 -0
  22. package/dist/tools/discovery/dependencies.d.ts.map +1 -0
  23. package/dist/tools/discovery/dependencies.js +258 -0
  24. package/dist/tools/discovery/dependencies.js.map +1 -0
  25. package/dist/tools/discovery/index.d.ts +33 -0
  26. package/dist/tools/discovery/index.d.ts.map +1 -1
  27. package/dist/tools/discovery/index.js +43 -0
  28. package/dist/tools/discovery/index.js.map +1 -1
  29. package/dist/tools/generated/admin_console_and_ui/index.d.ts.map +1 -1
  30. package/dist/tools/generated/admin_console_and_ui/index.js +6 -0
  31. package/dist/tools/generated/admin_console_and_ui/index.js.map +1 -1
  32. package/dist/tools/generated/api/index.d.ts.map +1 -1
  33. package/dist/tools/generated/api/index.js +1206 -2
  34. package/dist/tools/generated/api/index.js.map +1 -1
  35. package/dist/tools/generated/authentication/index.d.ts.map +1 -1
  36. package/dist/tools/generated/authentication/index.js +49 -0
  37. package/dist/tools/generated/authentication/index.js.map +1 -1
  38. package/dist/tools/generated/bigip/index.d.ts.map +1 -1
  39. package/dist/tools/generated/bigip/index.js +319 -0
  40. package/dist/tools/generated/bigip/index.js.map +1 -1
  41. package/dist/tools/generated/billing_and_usage/index.d.ts.map +1 -1
  42. package/dist/tools/generated/billing_and_usage/index.js +169 -0
  43. package/dist/tools/generated/billing_and_usage/index.js.map +1 -1
  44. package/dist/tools/generated/blindfold/index.d.ts.map +1 -1
  45. package/dist/tools/generated/blindfold/index.js +328 -0
  46. package/dist/tools/generated/blindfold/index.js.map +1 -1
  47. package/dist/tools/generated/bot_and_threat_defense/index.d.ts.map +1 -1
  48. package/dist/tools/generated/bot_and_threat_defense/index.js +482 -0
  49. package/dist/tools/generated/bot_and_threat_defense/index.js.map +1 -1
  50. package/dist/tools/generated/cdn/index.d.ts.map +1 -1
  51. package/dist/tools/generated/cdn/index.js +347 -0
  52. package/dist/tools/generated/cdn/index.js.map +1 -1
  53. package/dist/tools/generated/ce_management/index.d.ts.map +1 -1
  54. package/dist/tools/generated/ce_management/index.js +375 -0
  55. package/dist/tools/generated/ce_management/index.js.map +1 -1
  56. package/dist/tools/generated/certificates/index.d.ts.map +1 -1
  57. package/dist/tools/generated/certificates/index.js +268 -0
  58. package/dist/tools/generated/certificates/index.js.map +1 -1
  59. package/dist/tools/generated/cloud_infrastructure/index.d.ts.map +1 -1
  60. package/dist/tools/generated/cloud_infrastructure/index.js +374 -0
  61. package/dist/tools/generated/cloud_infrastructure/index.js.map +1 -1
  62. package/dist/tools/generated/container_services/index.d.ts.map +1 -1
  63. package/dist/tools/generated/container_services/index.js +212 -0
  64. package/dist/tools/generated/container_services/index.js.map +1 -1
  65. package/dist/tools/generated/data_and_privacy_security/index.d.ts.map +1 -1
  66. package/dist/tools/generated/data_and_privacy_security/index.js +143 -0
  67. package/dist/tools/generated/data_and_privacy_security/index.js.map +1 -1
  68. package/dist/tools/generated/data_intelligence/index.d.ts.map +1 -1
  69. package/dist/tools/generated/data_intelligence/index.js +105 -0
  70. package/dist/tools/generated/data_intelligence/index.js.map +1 -1
  71. package/dist/tools/generated/ddos/index.d.ts.map +1 -1
  72. package/dist/tools/generated/ddos/index.js +664 -0
  73. package/dist/tools/generated/ddos/index.js.map +1 -1
  74. package/dist/tools/generated/dns/index.d.ts.map +1 -1
  75. package/dist/tools/generated/dns/index.js +492 -0
  76. package/dist/tools/generated/dns/index.js.map +1 -1
  77. package/dist/tools/generated/generative_ai/index.d.ts.map +1 -1
  78. package/dist/tools/generated/generative_ai/index.js +47 -0
  79. package/dist/tools/generated/generative_ai/index.js.map +1 -1
  80. package/dist/tools/generated/managed_kubernetes/index.d.ts.map +1 -1
  81. package/dist/tools/generated/managed_kubernetes/index.js +510 -0
  82. package/dist/tools/generated/managed_kubernetes/index.js.map +1 -1
  83. package/dist/tools/generated/marketplace/index.d.ts.map +1 -1
  84. package/dist/tools/generated/marketplace/index.js +307 -0
  85. package/dist/tools/generated/marketplace/index.js.map +1 -1
  86. package/dist/tools/generated/network/index.d.ts.map +1 -1
  87. package/dist/tools/generated/network/index.js +1292 -0
  88. package/dist/tools/generated/network/index.js.map +1 -1
  89. package/dist/tools/generated/network_security/index.d.ts.map +1 -1
  90. package/dist/tools/generated/network_security/index.js +1819 -9
  91. package/dist/tools/generated/network_security/index.js.map +1 -1
  92. package/dist/tools/generated/nginx_one/index.d.ts.map +1 -1
  93. package/dist/tools/generated/nginx_one/index.js +94 -0
  94. package/dist/tools/generated/nginx_one/index.js.map +1 -1
  95. package/dist/tools/generated/object_storage/index.d.ts.map +1 -1
  96. package/dist/tools/generated/object_storage/index.js +32 -0
  97. package/dist/tools/generated/object_storage/index.js.map +1 -1
  98. package/dist/tools/generated/observability/index.d.ts.map +1 -1
  99. package/dist/tools/generated/observability/index.js +265 -0
  100. package/dist/tools/generated/observability/index.js.map +1 -1
  101. package/dist/tools/generated/rate_limiting/index.d.ts.map +1 -1
  102. package/dist/tools/generated/rate_limiting/index.js +396 -0
  103. package/dist/tools/generated/rate_limiting/index.js.map +1 -1
  104. package/dist/tools/generated/secops_and_incident_response/index.d.ts.map +1 -1
  105. package/dist/tools/generated/secops_and_incident_response/index.js +132 -0
  106. package/dist/tools/generated/secops_and_incident_response/index.js.map +1 -1
  107. package/dist/tools/generated/service_mesh/index.d.ts.map +1 -1
  108. package/dist/tools/generated/service_mesh/index.js +1062 -0
  109. package/dist/tools/generated/service_mesh/index.js.map +1 -1
  110. package/dist/tools/generated/shape/index.d.ts.map +1 -1
  111. package/dist/tools/generated/shape/index.js +917 -0
  112. package/dist/tools/generated/shape/index.js.map +1 -1
  113. package/dist/tools/generated/sites/index.d.ts.map +1 -1
  114. package/dist/tools/generated/sites/index.js +1666 -0
  115. package/dist/tools/generated/sites/index.js.map +1 -1
  116. package/dist/tools/generated/statistics/index.d.ts.map +1 -1
  117. package/dist/tools/generated/statistics/index.js +574 -0
  118. package/dist/tools/generated/statistics/index.js.map +1 -1
  119. package/dist/tools/generated/support/index.d.ts.map +1 -1
  120. package/dist/tools/generated/support/index.js +274 -0
  121. package/dist/tools/generated/support/index.js.map +1 -1
  122. package/dist/tools/generated/telemetry_and_insights/index.d.ts.map +1 -1
  123. package/dist/tools/generated/telemetry_and_insights/index.js +100 -0
  124. package/dist/tools/generated/telemetry_and_insights/index.js.map +1 -1
  125. package/dist/tools/generated/tenant_and_identity/index.d.ts.map +1 -1
  126. package/dist/tools/generated/tenant_and_identity/index.js +1378 -0
  127. package/dist/tools/generated/tenant_and_identity/index.js.map +1 -1
  128. package/dist/tools/generated/threat_campaign/index.d.ts.map +1 -1
  129. package/dist/tools/generated/threat_campaign/index.js +3 -0
  130. package/dist/tools/generated/threat_campaign/index.js.map +1 -1
  131. package/dist/tools/generated/users/index.d.ts.map +1 -1
  132. package/dist/tools/generated/users/index.js +139 -0
  133. package/dist/tools/generated/users/index.js.map +1 -1
  134. package/dist/tools/generated/virtual/index.d.ts.map +1 -1
  135. package/dist/tools/generated/virtual/index.js +1160 -0
  136. package/dist/tools/generated/virtual/index.js.map +1 -1
  137. package/dist/tools/generated/vpm_and_node_management/index.d.ts.map +1 -1
  138. package/dist/tools/generated/vpm_and_node_management/index.js +3 -0
  139. package/dist/tools/generated/vpm_and_node_management/index.js.map +1 -1
  140. package/dist/tools/generated/waf/index.d.ts.map +1 -1
  141. package/dist/tools/generated/waf/index.js +784 -0
  142. package/dist/tools/generated/waf/index.js.map +1 -1
  143. package/package.json +1 -1
@@ -0,0 +1,330 @@
1
+ /**
2
+ * Dependency Graph Builder
3
+ *
4
+ * Builds a complete resource dependency graph from parsed operations,
5
+ * computes reverse dependencies, and provides topological sorting
6
+ * for resource creation order.
7
+ */
8
+ import { createResourceKey, parseResourceKey } from "./dependency-types.js";
9
+ /**
10
+ * Build a complete dependency graph from parsed specifications
11
+ *
12
+ * @param specs - Array of parsed specification files
13
+ * @param options - Graph generation options
14
+ * @returns Complete dependency graph
15
+ */
16
+ export function buildDependencyGraph(specs, options = {}) {
17
+ const opts = {
18
+ detectInlineRefs: true,
19
+ computeCreationOrder: true,
20
+ buildReverseDeps: true,
21
+ maxDepth: 10,
22
+ ...options,
23
+ };
24
+ // Collect all operations from all specs
25
+ const allOperations = [];
26
+ for (const spec of specs) {
27
+ allOperations.push(...spec.operations);
28
+ }
29
+ // Build resource map: domain/resource -> operations
30
+ const resourceMap = new Map();
31
+ for (const op of allOperations) {
32
+ const key = createResourceKey(op.domain, op.resource);
33
+ const existing = resourceMap.get(key) || [];
34
+ existing.push(op);
35
+ resourceMap.set(key, existing);
36
+ }
37
+ // Build dependencies map
38
+ const dependencies = {};
39
+ for (const [resourceKey, operations] of resourceMap) {
40
+ const { domain, resource } = parseResourceKey(resourceKey);
41
+ // Aggregate all dependencies, oneOf groups, and subscriptions from all operations
42
+ const allRefs = [];
43
+ const allOneOfGroups = [];
44
+ const allSubscriptions = [];
45
+ for (const op of operations) {
46
+ allRefs.push(...op.dependencies);
47
+ allOneOfGroups.push(...op.oneOfGroups);
48
+ allSubscriptions.push(...op.subscriptionRequirements);
49
+ }
50
+ // Deduplicate references by resourceType
51
+ const uniqueRefs = deduplicateReferences(allRefs);
52
+ // Deduplicate oneOf groups by choiceField
53
+ const uniqueOneOfGroups = deduplicateOneOfGroups(allOneOfGroups);
54
+ // Deduplicate subscriptions by addonService
55
+ const uniqueSubscriptions = deduplicateSubscriptions(allSubscriptions);
56
+ dependencies[resourceKey] = {
57
+ resource,
58
+ domain,
59
+ requires: uniqueRefs,
60
+ requiredBy: [], // Will be computed by buildReverseDependencies
61
+ oneOfGroups: uniqueOneOfGroups,
62
+ subscriptions: uniqueSubscriptions,
63
+ creationOrder: [], // Will be computed by computeCreationOrder
64
+ };
65
+ }
66
+ // Build reverse dependencies
67
+ const reverseDependencies = {};
68
+ if (opts.buildReverseDeps) {
69
+ buildReverseDependencies(dependencies, reverseDependencies);
70
+ }
71
+ // Compute creation order for each resource
72
+ if (opts.computeCreationOrder) {
73
+ for (const resourceKey of Object.keys(dependencies)) {
74
+ const dep = dependencies[resourceKey];
75
+ if (dep) {
76
+ dep.creationOrder = computeCreationOrder(resourceKey, dependencies, opts.maxDepth);
77
+ }
78
+ }
79
+ }
80
+ // Build addon service map
81
+ const addonServiceMap = {};
82
+ for (const [resourceKey, deps] of Object.entries(dependencies)) {
83
+ for (const sub of deps.subscriptions) {
84
+ const existingList = addonServiceMap[sub.addonService];
85
+ if (!existingList) {
86
+ addonServiceMap[sub.addonService] = [resourceKey];
87
+ }
88
+ else if (!existingList.includes(resourceKey)) {
89
+ existingList.push(resourceKey);
90
+ }
91
+ }
92
+ }
93
+ return {
94
+ version: "1.0.0",
95
+ generatedAt: opts.generatedAt || new Date().toISOString(),
96
+ totalResources: Object.keys(dependencies).length,
97
+ dependencies,
98
+ addonServiceMap,
99
+ reverseDependencies,
100
+ };
101
+ }
102
+ /**
103
+ * Deduplicate resource references by resourceType
104
+ */
105
+ function deduplicateReferences(refs) {
106
+ const seen = new Map();
107
+ for (const ref of refs) {
108
+ const key = `${ref.domain}/${ref.resourceType}`;
109
+ const existing = seen.get(key);
110
+ if (!existing) {
111
+ seen.set(key, ref);
112
+ }
113
+ else {
114
+ // Merge: required takes precedence, inline is combined
115
+ seen.set(key, {
116
+ ...existing,
117
+ required: existing.required || ref.required,
118
+ inline: existing.inline || ref.inline,
119
+ });
120
+ }
121
+ }
122
+ return Array.from(seen.values());
123
+ }
124
+ /**
125
+ * Deduplicate oneOf groups by choiceField
126
+ */
127
+ function deduplicateOneOfGroups(groups) {
128
+ const seen = new Map();
129
+ for (const group of groups) {
130
+ if (!seen.has(group.choiceField)) {
131
+ seen.set(group.choiceField, group);
132
+ }
133
+ // If already seen, keep the first occurrence
134
+ }
135
+ return Array.from(seen.values());
136
+ }
137
+ /**
138
+ * Deduplicate subscriptions by addonService
139
+ */
140
+ function deduplicateSubscriptions(subs) {
141
+ const seen = new Map();
142
+ for (const sub of subs) {
143
+ if (!seen.has(sub.addonService)) {
144
+ seen.set(sub.addonService, sub);
145
+ }
146
+ }
147
+ return Array.from(seen.values());
148
+ }
149
+ /**
150
+ * Build reverse dependency map (requiredBy relationships)
151
+ */
152
+ function buildReverseDependencies(dependencies, reverseDeps) {
153
+ for (const deps of Object.values(dependencies)) {
154
+ for (const ref of deps.requires) {
155
+ const refKey = createResourceKey(ref.domain || "unknown", ref.resourceType);
156
+ if (!reverseDeps[refKey]) {
157
+ reverseDeps[refKey] = [];
158
+ }
159
+ // Add reverse reference
160
+ reverseDeps[refKey].push({
161
+ resourceType: deps.resource,
162
+ domain: deps.domain,
163
+ fieldPath: ref.fieldPath,
164
+ required: ref.required,
165
+ inline: ref.inline,
166
+ });
167
+ // Also update the requiredBy on the target if it exists
168
+ const targetDep = dependencies[refKey];
169
+ if (targetDep) {
170
+ targetDep.requiredBy.push({
171
+ resourceType: deps.resource,
172
+ domain: deps.domain,
173
+ fieldPath: ref.fieldPath,
174
+ required: ref.required,
175
+ inline: ref.inline,
176
+ });
177
+ }
178
+ }
179
+ }
180
+ }
181
+ /**
182
+ * Compute topologically sorted creation order for a resource
183
+ * Uses depth-first search with cycle detection
184
+ *
185
+ * @param resourceKey - The resource to compute creation order for
186
+ * @param dependencies - All resource dependencies
187
+ * @param maxDepth - Maximum depth for traversal
188
+ * @returns Array of resource keys in creation order
189
+ */
190
+ export function computeCreationOrder(resourceKey, dependencies, maxDepth = 10) {
191
+ const order = [];
192
+ const visited = new Set();
193
+ const inProgress = new Set(); // For cycle detection
194
+ function visit(key, depth) {
195
+ if (depth > maxDepth) {
196
+ return; // Prevent infinite recursion
197
+ }
198
+ if (inProgress.has(key)) {
199
+ // Cycle detected, skip
200
+ return;
201
+ }
202
+ if (visited.has(key)) {
203
+ return;
204
+ }
205
+ inProgress.add(key);
206
+ const deps = dependencies[key];
207
+ if (deps) {
208
+ // Visit required dependencies first
209
+ for (const ref of deps.requires) {
210
+ const refKey = createResourceKey(ref.domain || "unknown", ref.resourceType);
211
+ visit(refKey, depth + 1);
212
+ }
213
+ }
214
+ inProgress.delete(key);
215
+ visited.add(key);
216
+ order.push(key);
217
+ }
218
+ visit(resourceKey, 0);
219
+ return order;
220
+ }
221
+ /**
222
+ * Serialize a dependency graph to JSON-compatible format
223
+ */
224
+ export function serializeDependencyGraph(graph) {
225
+ const serialized = {
226
+ version: graph.version,
227
+ generatedAt: graph.generatedAt,
228
+ totalResources: graph.totalResources,
229
+ dependencies: graph.dependencies,
230
+ addonServiceMap: graph.addonServiceMap,
231
+ reverseDependencies: graph.reverseDependencies,
232
+ };
233
+ return JSON.stringify(serialized, null, 2);
234
+ }
235
+ /**
236
+ * Deserialize a dependency graph from JSON
237
+ */
238
+ export function deserializeDependencyGraph(json) {
239
+ const parsed = JSON.parse(json);
240
+ return {
241
+ version: parsed.version,
242
+ generatedAt: parsed.generatedAt,
243
+ totalResources: parsed.totalResources,
244
+ dependencies: parsed.dependencies,
245
+ addonServiceMap: parsed.addonServiceMap,
246
+ reverseDependencies: parsed.reverseDependencies,
247
+ };
248
+ }
249
+ /**
250
+ * Get resources that must be created before a given resource
251
+ *
252
+ * @param resourceKey - The target resource ("domain/resource")
253
+ * @param graph - The dependency graph
254
+ * @returns Array of prerequisite resource keys
255
+ */
256
+ export function getPrerequisites(resourceKey, graph) {
257
+ const deps = graph.dependencies[resourceKey];
258
+ if (!deps) {
259
+ return [];
260
+ }
261
+ return deps.requires.map((ref) => createResourceKey(ref.domain || "unknown", ref.resourceType));
262
+ }
263
+ /**
264
+ * Get resources that depend on a given resource
265
+ *
266
+ * @param resourceKey - The target resource ("domain/resource")
267
+ * @param graph - The dependency graph
268
+ * @returns Array of dependent resource keys
269
+ */
270
+ export function getDependents(resourceKey, graph) {
271
+ const reverseDeps = graph.reverseDependencies[resourceKey];
272
+ if (!reverseDeps) {
273
+ return [];
274
+ }
275
+ return reverseDeps.map((ref) => createResourceKey(ref.domain, ref.resourceType));
276
+ }
277
+ /**
278
+ * Get all resources that require a specific subscription
279
+ *
280
+ * @param addonService - The addon service ID
281
+ * @param graph - The dependency graph
282
+ * @returns Array of resource keys requiring this subscription
283
+ */
284
+ export function getResourcesBySubscription(addonService, graph) {
285
+ return graph.addonServiceMap[addonService] || [];
286
+ }
287
+ /**
288
+ * Validate the dependency graph for cycles
289
+ *
290
+ * @param graph - The dependency graph to validate
291
+ * @returns Array of cycle paths found (empty if no cycles)
292
+ */
293
+ export function validateGraph(graph) {
294
+ const cycles = [];
295
+ const visited = new Set();
296
+ const recStack = new Set();
297
+ const path = [];
298
+ function dfs(key) {
299
+ if (recStack.has(key)) {
300
+ // Found a cycle - extract the cycle from current path
301
+ const cycleStart = path.indexOf(key);
302
+ if (cycleStart >= 0) {
303
+ cycles.push([...path.slice(cycleStart), key]);
304
+ }
305
+ return;
306
+ }
307
+ if (visited.has(key)) {
308
+ return;
309
+ }
310
+ visited.add(key);
311
+ recStack.add(key);
312
+ path.push(key);
313
+ const deps = graph.dependencies[key];
314
+ if (deps) {
315
+ for (const ref of deps.requires) {
316
+ const refKey = createResourceKey(ref.domain || "unknown", ref.resourceType);
317
+ dfs(refKey);
318
+ }
319
+ }
320
+ path.pop();
321
+ recStack.delete(key);
322
+ }
323
+ for (const key of Object.keys(graph.dependencies)) {
324
+ if (!visited.has(key)) {
325
+ dfs(key);
326
+ }
327
+ }
328
+ return cycles;
329
+ }
330
+ //# sourceMappingURL=dependency-graph.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"dependency-graph.js","sourceRoot":"","sources":["../../src/generator/dependency-graph.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAaH,OAAO,EAAE,iBAAiB,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AAE5E;;;;;;GAMG;AACH,MAAM,UAAU,oBAAoB,CAClC,KAAmB,EACnB,UAA2C,EAAE;IAE7C,MAAM,IAAI,GAA2B;QACnC,gBAAgB,EAAE,IAAI;QACtB,oBAAoB,EAAE,IAAI;QAC1B,gBAAgB,EAAE,IAAI;QACtB,QAAQ,EAAE,EAAE;QACZ,GAAG,OAAO;KACX,CAAC;IAEF,wCAAwC;IACxC,MAAM,aAAa,GAAsB,EAAE,CAAC;IAC5C,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACzB,aAAa,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,UAAU,CAAC,CAAC;IACzC,CAAC;IAED,oDAAoD;IACpD,MAAM,WAAW,GAAG,IAAI,GAAG,EAA6B,CAAC;IACzD,KAAK,MAAM,EAAE,IAAI,aAAa,EAAE,CAAC;QAC/B,MAAM,GAAG,GAAG,iBAAiB,CAAC,EAAE,CAAC,MAAM,EAAE,EAAE,CAAC,QAAQ,CAAC,CAAC;QACtD,MAAM,QAAQ,GAAG,WAAW,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC;QAC5C,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QAClB,WAAW,CAAC,GAAG,CAAC,GAAG,EAAE,QAAQ,CAAC,CAAC;IACjC,CAAC;IAED,yBAAyB;IACzB,MAAM,YAAY,GAAyC,EAAE,CAAC;IAE9D,KAAK,MAAM,CAAC,WAAW,EAAE,UAAU,CAAC,IAAI,WAAW,EAAE,CAAC;QACpD,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,GAAG,gBAAgB,CAAC,WAAoC,CAAC,CAAC;QAEpF,kFAAkF;QAClF,MAAM,OAAO,GAAwB,EAAE,CAAC;QACxC,MAAM,cAAc,GAAiB,EAAE,CAAC;QACxC,MAAM,gBAAgB,GAA8B,EAAE,CAAC;QAEvD,KAAK,MAAM,EAAE,IAAI,UAAU,EAAE,CAAC;YAC5B,OAAO,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,YAAY,CAAC,CAAC;YACjC,cAAc,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,WAAW,CAAC,CAAC;YACvC,gBAAgB,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,wBAAwB,CAAC,CAAC;QACxD,CAAC;QAED,yCAAyC;QACzC,MAAM,UAAU,GAAG,qBAAqB,CAAC,OAAO,CAAC,CAAC;QAElD,0CAA0C;QAC1C,MAAM,iBAAiB,GAAG,sBAAsB,CAAC,cAAc,CAAC,CAAC;QAEjE,4CAA4C;QAC5C,MAAM,mBAAmB,GAAG,wBAAwB,CAAC,gBAAgB,CAAC,CAAC;QAEvE,YAAY,CAAC,WAAW,CAAC,GAAG;YAC1B,QAAQ;YACR,MAAM;YACN,QAAQ,EAAE,UAAU;YACpB,UAAU,EAAE,EAAE,EAAE,+CAA+C;YAC/D,WAAW,EAAE,iBAAiB;YAC9B,aAAa,EAAE,mBAAmB;YAClC,aAAa,EAAE,EAAE,EAAE,2CAA2C;SAC/D,CAAC;IACJ,CAAC;IAED,6BAA6B;IAC7B,MAAM,mBAAmB,GAAwC,EAAE,CAAC;IACpE,IAAI,IAAI,CAAC,gBAAgB,EAAE,CAAC;QAC1B,wBAAwB,CAAC,YAAY,EAAE,mBAAmB,CAAC,CAAC;IAC9D,CAAC;IAED,2CAA2C;IAC3C,IAAI,IAAI,CAAC,oBAAoB,EAAE,CAAC;QAC9B,KAAK,MAAM,WAAW,IAAI,MAAM,CAAC,IAAI,CAAC,YAAY,CAAC,EAAE,CAAC;YACpD,MAAM,GAAG,GAAG,YAAY,CAAC,WAAW,CAAC,CAAC;YACtC,IAAI,GAAG,EAAE,CAAC;gBACR,GAAG,CAAC,aAAa,GAAG,oBAAoB,CAAC,WAAW,EAAE,YAAY,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC;YACrF,CAAC;QACH,CAAC;IACH,CAAC;IAED,0BAA0B;IAC1B,MAAM,eAAe,GAA6B,EAAE,CAAC;IACrD,KAAK,MAAM,CAAC,WAAW,EAAE,IAAI,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,YAAY,CAAC,EAAE,CAAC;QAC/D,KAAK,MAAM,GAAG,IAAI,IAAI,CAAC,aAAa,EAAE,CAAC;YACrC,MAAM,YAAY,GAAG,eAAe,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC;YACvD,IAAI,CAAC,YAAY,EAAE,CAAC;gBAClB,eAAe,CAAC,GAAG,CAAC,YAAY,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;YACpD,CAAC;iBAAM,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,WAAW,CAAC,EAAE,CAAC;gBAC/C,YAAY,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;YACjC,CAAC;QACH,CAAC;IACH,CAAC;IAED,OAAO;QACL,OAAO,EAAE,OAAO;QAChB,WAAW,EAAE,IAAI,CAAC,WAAW,IAAI,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;QACzD,cAAc,EAAE,MAAM,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,MAAM;QAChD,YAAY;QACZ,eAAe;QACf,mBAAmB;KACpB,CAAC;AACJ,CAAC;AAED;;GAEG;AACH,SAAS,qBAAqB,CAAC,IAAyB;IACtD,MAAM,IAAI,GAAG,IAAI,GAAG,EAA6B,CAAC;IAElD,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE,CAAC;QACvB,MAAM,GAAG,GAAG,GAAG,GAAG,CAAC,MAAM,IAAI,GAAG,CAAC,YAAY,EAAE,CAAC;QAChD,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QAE/B,IAAI,CAAC,QAAQ,EAAE,CAAC;YACd,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;QACrB,CAAC;aAAM,CAAC;YACN,uDAAuD;YACvD,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE;gBACZ,GAAG,QAAQ;gBACX,QAAQ,EAAE,QAAQ,CAAC,QAAQ,IAAI,GAAG,CAAC,QAAQ;gBAC3C,MAAM,EAAE,QAAQ,CAAC,MAAM,IAAI,GAAG,CAAC,MAAM;aACtC,CAAC,CAAC;QACL,CAAC;IACH,CAAC;IAED,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC;AACnC,CAAC;AAED;;GAEG;AACH,SAAS,sBAAsB,CAAC,MAAoB;IAClD,MAAM,IAAI,GAAG,IAAI,GAAG,EAAsB,CAAC;IAE3C,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;QAC3B,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,WAAW,CAAC,EAAE,CAAC;YACjC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,WAAW,EAAE,KAAK,CAAC,CAAC;QACrC,CAAC;QACD,6CAA6C;IAC/C,CAAC;IAED,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC;AACnC,CAAC;AAED;;GAEG;AACH,SAAS,wBAAwB,CAAC,IAA+B;IAC/D,MAAM,IAAI,GAAG,IAAI,GAAG,EAAmC,CAAC;IAExD,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE,CAAC;QACvB,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,YAAY,CAAC,EAAE,CAAC;YAChC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,YAAY,EAAE,GAAG,CAAC,CAAC;QAClC,CAAC;IACH,CAAC;IAED,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC;AACnC,CAAC;AAED;;GAEG;AACH,SAAS,wBAAwB,CAC/B,YAAkD,EAClD,WAAgD;IAEhD,KAAK,MAAM,IAAI,IAAI,MAAM,CAAC,MAAM,CAAC,YAAY,CAAC,EAAE,CAAC;QAC/C,KAAK,MAAM,GAAG,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;YAChC,MAAM,MAAM,GAAG,iBAAiB,CAAC,GAAG,CAAC,MAAM,IAAI,SAAS,EAAE,GAAG,CAAC,YAAY,CAAC,CAAC;YAE5E,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,EAAE,CAAC;gBACzB,WAAW,CAAC,MAAM,CAAC,GAAG,EAAE,CAAC;YAC3B,CAAC;YAED,wBAAwB;YACxB,WAAW,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC;gBACvB,YAAY,EAAE,IAAI,CAAC,QAAQ;gBAC3B,MAAM,EAAE,IAAI,CAAC,MAAM;gBACnB,SAAS,EAAE,GAAG,CAAC,SAAS;gBACxB,QAAQ,EAAE,GAAG,CAAC,QAAQ;gBACtB,MAAM,EAAE,GAAG,CAAC,MAAM;aACnB,CAAC,CAAC;YAEH,wDAAwD;YACxD,MAAM,SAAS,GAAG,YAAY,CAAC,MAAM,CAAC,CAAC;YACvC,IAAI,SAAS,EAAE,CAAC;gBACd,SAAS,CAAC,UAAU,CAAC,IAAI,CAAC;oBACxB,YAAY,EAAE,IAAI,CAAC,QAAQ;oBAC3B,MAAM,EAAE,IAAI,CAAC,MAAM;oBACnB,SAAS,EAAE,GAAG,CAAC,SAAS;oBACxB,QAAQ,EAAE,GAAG,CAAC,QAAQ;oBACtB,MAAM,EAAE,GAAG,CAAC,MAAM;iBACnB,CAAC,CAAC;YACL,CAAC;QACH,CAAC;IACH,CAAC;AACH,CAAC;AAED;;;;;;;;GAQG;AACH,MAAM,UAAU,oBAAoB,CAClC,WAAmB,EACnB,YAAkD,EAClD,WAAmB,EAAE;IAErB,MAAM,KAAK,GAAa,EAAE,CAAC;IAC3B,MAAM,OAAO,GAAG,IAAI,GAAG,EAAU,CAAC;IAClC,MAAM,UAAU,GAAG,IAAI,GAAG,EAAU,CAAC,CAAC,sBAAsB;IAE5D,SAAS,KAAK,CAAC,GAAW,EAAE,KAAa;QACvC,IAAI,KAAK,GAAG,QAAQ,EAAE,CAAC;YACrB,OAAO,CAAC,6BAA6B;QACvC,CAAC;QAED,IAAI,UAAU,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC;YACxB,uBAAuB;YACvB,OAAO;QACT,CAAC;QAED,IAAI,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC;YACrB,OAAO;QACT,CAAC;QAED,UAAU,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QAEpB,MAAM,IAAI,GAAG,YAAY,CAAC,GAAG,CAAC,CAAC;QAC/B,IAAI,IAAI,EAAE,CAAC;YACT,oCAAoC;YACpC,KAAK,MAAM,GAAG,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;gBAChC,MAAM,MAAM,GAAG,iBAAiB,CAAC,GAAG,CAAC,MAAM,IAAI,SAAS,EAAE,GAAG,CAAC,YAAY,CAAC,CAAC;gBAC5E,KAAK,CAAC,MAAM,EAAE,KAAK,GAAG,CAAC,CAAC,CAAC;YAC3B,CAAC;QACH,CAAC;QAED,UAAU,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;QACvB,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QACjB,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IAClB,CAAC;IAED,KAAK,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC;IACtB,OAAO,KAAK,CAAC;AACf,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,wBAAwB,CAAC,KAAsB;IAC7D,MAAM,UAAU,GAA8B;QAC5C,OAAO,EAAE,KAAK,CAAC,OAAO;QACtB,WAAW,EAAE,KAAK,CAAC,WAAW;QAC9B,cAAc,EAAE,KAAK,CAAC,cAAc;QACpC,YAAY,EAAE,KAAK,CAAC,YAAY;QAChC,eAAe,EAAE,KAAK,CAAC,eAAe;QACtC,mBAAmB,EAAE,KAAK,CAAC,mBAAmB;KAC/C,CAAC;IAEF,OAAO,IAAI,CAAC,SAAS,CAAC,UAAU,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;AAC7C,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,0BAA0B,CAAC,IAAY;IACrD,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAA8B,CAAC;IAE7D,OAAO;QACL,OAAO,EAAE,MAAM,CAAC,OAAO;QACvB,WAAW,EAAE,MAAM,CAAC,WAAW;QAC/B,cAAc,EAAE,MAAM,CAAC,cAAc;QACrC,YAAY,EAAE,MAAM,CAAC,YAAY;QACjC,eAAe,EAAE,MAAM,CAAC,eAAe;QACvC,mBAAmB,EAAE,MAAM,CAAC,mBAAmB;KAChD,CAAC;AACJ,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,gBAAgB,CAAC,WAAmB,EAAE,KAAsB;IAC1E,MAAM,IAAI,GAAG,KAAK,CAAC,YAAY,CAAC,WAAW,CAAC,CAAC;IAC7C,IAAI,CAAC,IAAI,EAAE,CAAC;QACV,OAAO,EAAE,CAAC;IACZ,CAAC;IAED,OAAO,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,iBAAiB,CAAC,GAAG,CAAC,MAAM,IAAI,SAAS,EAAE,GAAG,CAAC,YAAY,CAAC,CAAC,CAAC;AAClG,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,aAAa,CAAC,WAAmB,EAAE,KAAsB;IACvE,MAAM,WAAW,GAAG,KAAK,CAAC,mBAAmB,CAAC,WAAW,CAAC,CAAC;IAC3D,IAAI,CAAC,WAAW,EAAE,CAAC;QACjB,OAAO,EAAE,CAAC;IACZ,CAAC;IAED,OAAO,WAAW,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,iBAAiB,CAAC,GAAG,CAAC,MAAM,EAAE,GAAG,CAAC,YAAY,CAAC,CAAC,CAAC;AACnF,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,0BAA0B,CAAC,YAAoB,EAAE,KAAsB;IACrF,OAAO,KAAK,CAAC,eAAe,CAAC,YAAY,CAAC,IAAI,EAAE,CAAC;AACnD,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,aAAa,CAAC,KAAsB;IAClD,MAAM,MAAM,GAAe,EAAE,CAAC;IAC9B,MAAM,OAAO,GAAG,IAAI,GAAG,EAAU,CAAC;IAClC,MAAM,QAAQ,GAAG,IAAI,GAAG,EAAU,CAAC;IACnC,MAAM,IAAI,GAAa,EAAE,CAAC;IAE1B,SAAS,GAAG,CAAC,GAAW;QACtB,IAAI,QAAQ,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC;YACtB,sDAAsD;YACtD,MAAM,UAAU,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;YACrC,IAAI,UAAU,IAAI,CAAC,EAAE,CAAC;gBACpB,MAAM,CAAC,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC;YAChD,CAAC;YACD,OAAO;QACT,CAAC;QAED,IAAI,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC;YACrB,OAAO;QACT,CAAC;QAED,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QACjB,QAAQ,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QAClB,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QAEf,MAAM,IAAI,GAAG,KAAK,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC;QACrC,IAAI,IAAI,EAAE,CAAC;YACT,KAAK,MAAM,GAAG,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;gBAChC,MAAM,MAAM,GAAG,iBAAiB,CAAC,GAAG,CAAC,MAAM,IAAI,SAAS,EAAE,GAAG,CAAC,YAAY,CAAC,CAAC;gBAC5E,GAAG,CAAC,MAAM,CAAC,CAAC;YACd,CAAC;QACH,CAAC;QAED,IAAI,CAAC,GAAG,EAAE,CAAC;QACX,QAAQ,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;IACvB,CAAC;IAED,KAAK,MAAM,GAAG,IAAI,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,EAAE,CAAC;QAClD,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC;YACtB,GAAG,CAAC,GAAG,CAAC,CAAC;QACX,CAAC;IACH,CAAC;IAED,OAAO,MAAM,CAAC;AAChB,CAAC"}
@@ -0,0 +1,206 @@
1
+ /**
2
+ * Dependency Intelligence Type Definitions
3
+ *
4
+ * Types for resource dependency tracking, oneOf/anyOf field extraction,
5
+ * subscription awareness, and sequencing intelligence.
6
+ *
7
+ * These types enable LLMs to understand resource relationships and
8
+ * execute operations in the correct order.
9
+ */
10
+ /**
11
+ * Represents a reference from one resource to another via $ref patterns
12
+ */
13
+ export interface ResourceReference {
14
+ /** The type of resource being referenced (e.g., "origin_pool") */
15
+ resourceType: string;
16
+ /** The domain the referenced resource belongs to (e.g., "network") */
17
+ domain: string;
18
+ /** The JSON path where this reference appears (e.g., "spec.default_route_pools") */
19
+ fieldPath: string;
20
+ /** Whether this reference is required for the parent resource to function */
21
+ required: boolean;
22
+ /** Whether the reference allows inline definition vs external reference only */
23
+ inline: boolean;
24
+ }
25
+ /**
26
+ * Represents a group of mutually exclusive fields (oneOf/anyOf patterns)
27
+ * Extracted from x-ves-oneof-field-* OpenAPI extensions
28
+ */
29
+ export interface OneOfGroup {
30
+ /** The name of the choice field (e.g., "advertise_choice") */
31
+ choiceField: string;
32
+ /** Available options for this choice (e.g., ["site", "virtual_site", "public_default_vip"]) */
33
+ options: string[];
34
+ /** JSON path where this oneOf group appears */
35
+ fieldPath: string;
36
+ /** Human-readable description of the choice */
37
+ description?: string;
38
+ }
39
+ /**
40
+ * Represents a subscription or addon service requirement
41
+ */
42
+ export interface SubscriptionRequirement {
43
+ /** Internal addon service identifier (e.g., "f5xc_waap_advanced") */
44
+ addonService: string;
45
+ /** Human-readable display name */
46
+ displayName: string;
47
+ /** Subscription tier level (e.g., "advanced", "premium") */
48
+ tier: string;
49
+ /** Whether this subscription is required or optional for the resource */
50
+ required: boolean;
51
+ }
52
+ /**
53
+ * Complete dependency information for a single resource
54
+ */
55
+ export interface ResourceDependencies {
56
+ /** Resource name (e.g., "http-loadbalancer") */
57
+ resource: string;
58
+ /** Domain the resource belongs to (e.g., "virtual") */
59
+ domain: string;
60
+ /** Resources this resource depends on (must exist before creation) */
61
+ requires: ResourceReference[];
62
+ /** Resources that depend on this resource (will break if deleted) */
63
+ requiredBy: ResourceReference[];
64
+ /** Mutually exclusive field groups within this resource */
65
+ oneOfGroups: OneOfGroup[];
66
+ /** Subscription/addon requirements for this resource */
67
+ subscriptions: SubscriptionRequirement[];
68
+ /** Topologically sorted creation order for this resource and its dependencies */
69
+ creationOrder: string[];
70
+ }
71
+ /**
72
+ * Complete dependency graph for the entire API
73
+ */
74
+ export interface DependencyGraph {
75
+ /** Schema version for forwards compatibility */
76
+ version: string;
77
+ /** Timestamp when the graph was generated */
78
+ generatedAt: string;
79
+ /** Total number of resources in the graph */
80
+ totalResources: number;
81
+ /** Map of "domain/resource" -> ResourceDependencies */
82
+ dependencies: Record<string, ResourceDependencies>;
83
+ /** Map of addon service ID -> list of resources requiring it */
84
+ addonServiceMap: Record<string, string[]>;
85
+ /** Reverse dependency lookup: "domain/resource" -> resources that depend on it */
86
+ reverseDependencies: Record<string, ResourceReference[]>;
87
+ }
88
+ /**
89
+ * Serializable version of DependencyGraph for JSON storage
90
+ * Uses Record instead of Map for JSON compatibility
91
+ */
92
+ export interface SerializedDependencyGraph {
93
+ version: string;
94
+ generatedAt: string;
95
+ totalResources: number;
96
+ dependencies: Record<string, ResourceDependencies>;
97
+ addonServiceMap: Record<string, string[]>;
98
+ reverseDependencies: Record<string, ResourceReference[]>;
99
+ }
100
+ /**
101
+ * Result of parsing a $ref string from OpenAPI schema
102
+ */
103
+ export interface ParsedRef {
104
+ /** Full schema path (e.g., "#/components/schemas/origin_poolCreateRequest") */
105
+ fullPath: string;
106
+ /** Extracted schema name (e.g., "origin_poolCreateRequest") */
107
+ schemaName: string;
108
+ /** Inferred resource type (e.g., "origin_pool") */
109
+ resourceType: string | null;
110
+ /** Inferred operation type (e.g., "create", "get", "list") */
111
+ operationType: string | null;
112
+ }
113
+ /**
114
+ * Extracted dependency information from a single operation's schema
115
+ */
116
+ export interface ExtractedDependencies {
117
+ /** Direct resource references found in the schema */
118
+ references: ResourceReference[];
119
+ /** OneOf groups found in the schema */
120
+ oneOfGroups: OneOfGroup[];
121
+ }
122
+ /**
123
+ * Addon service definition extracted from billing specs
124
+ */
125
+ export interface AddonServiceDefinition {
126
+ /** Internal service identifier */
127
+ serviceId: string;
128
+ /** Human-readable name */
129
+ displayName: string;
130
+ /** Service category/tier */
131
+ tier: string;
132
+ /** Description of the service */
133
+ description?: string;
134
+ }
135
+ /**
136
+ * Options for dependency graph generation
137
+ */
138
+ export interface DependencyGraphOptions {
139
+ /** Whether to include inline reference capability detection */
140
+ detectInlineRefs: boolean;
141
+ /** Whether to compute full creation order sequences */
142
+ computeCreationOrder: boolean;
143
+ /** Whether to build reverse dependency map */
144
+ buildReverseDeps: boolean;
145
+ /** Maximum depth for dependency chain traversal */
146
+ maxDepth: number;
147
+ /** Fixed timestamp for deterministic generation (optional) */
148
+ generatedAt?: string;
149
+ }
150
+ /**
151
+ * Default options for dependency graph generation
152
+ */
153
+ export declare const DEFAULT_DEPENDENCY_OPTIONS: DependencyGraphOptions;
154
+ /**
155
+ * Discovery tool response format for dependency queries
156
+ */
157
+ export interface DependencyDiscoveryResponse {
158
+ /** The queried resource */
159
+ resource: string;
160
+ /** The queried domain */
161
+ domain: string;
162
+ /** Human-readable list of prerequisites */
163
+ prerequisites: string[];
164
+ /** Human-readable list of dependent resources */
165
+ dependents: string[];
166
+ /** Mutually exclusive field information */
167
+ mutuallyExclusiveFields: Array<{
168
+ field: string;
169
+ options: string[];
170
+ }>;
171
+ /** Required subscription/addon services */
172
+ subscriptionRequirements: string[];
173
+ /** Recommended creation sequence for this resource */
174
+ creationSequence: string[];
175
+ }
176
+ /**
177
+ * Actions available for the f5xc-api-dependencies discovery tool
178
+ */
179
+ export type DependencyDiscoveryAction = "prerequisites" | "dependents" | "oneOf" | "subscriptions" | "creationOrder" | "full";
180
+ /**
181
+ * Input schema for the f5xc-api-dependencies discovery tool
182
+ */
183
+ export interface DependencyDiscoveryInput {
184
+ /** Resource name to query (e.g., "http-loadbalancer") */
185
+ resource: string;
186
+ /** Domain containing the resource (e.g., "virtual") */
187
+ domain: string;
188
+ /** Type of dependency information to retrieve */
189
+ action: DependencyDiscoveryAction;
190
+ }
191
+ /**
192
+ * Resource key format: "domain/resource"
193
+ */
194
+ export type ResourceKey = `${string}/${string}`;
195
+ /**
196
+ * Helper to create a resource key from domain and resource
197
+ */
198
+ export declare function createResourceKey(domain: string, resource: string): ResourceKey;
199
+ /**
200
+ * Helper to parse a resource key into domain and resource
201
+ */
202
+ export declare function parseResourceKey(key: ResourceKey): {
203
+ domain: string;
204
+ resource: string;
205
+ };
206
+ //# sourceMappingURL=dependency-types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"dependency-types.d.ts","sourceRoot":"","sources":["../../src/generator/dependency-types.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,37 @@
1
+ /**
2
+ * Dependency Intelligence Type Definitions
3
+ *
4
+ * Types for resource dependency tracking, oneOf/anyOf field extraction,
5
+ * subscription awareness, and sequencing intelligence.
6
+ *
7
+ * These types enable LLMs to understand resource relationships and
8
+ * execute operations in the correct order.
9
+ */
10
+ /**
11
+ * Default options for dependency graph generation
12
+ */
13
+ export const DEFAULT_DEPENDENCY_OPTIONS = {
14
+ detectInlineRefs: true,
15
+ computeCreationOrder: true,
16
+ buildReverseDeps: true,
17
+ maxDepth: 10,
18
+ };
19
+ /**
20
+ * Helper to create a resource key from domain and resource
21
+ */
22
+ export function createResourceKey(domain, resource) {
23
+ return `${domain}/${resource}`;
24
+ }
25
+ /**
26
+ * Helper to parse a resource key into domain and resource
27
+ */
28
+ export function parseResourceKey(key) {
29
+ const parts = key.split("/");
30
+ const domain = parts[0] ?? "";
31
+ const resource = parts.slice(1).join("/");
32
+ return {
33
+ domain,
34
+ resource,
35
+ };
36
+ }
37
+ //# sourceMappingURL=dependency-types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"dependency-types.js","sourceRoot":"","sources":["../../src/generator/dependency-types.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAwJH;;GAEG;AACH,MAAM,CAAC,MAAM,0BAA0B,GAA2B;IAChE,gBAAgB,EAAE,IAAI;IACtB,oBAAoB,EAAE,IAAI;IAC1B,gBAAgB,EAAE,IAAI;IACtB,QAAQ,EAAE,EAAE;CACb,CAAC;AAqDF;;GAEG;AACH,MAAM,UAAU,iBAAiB,CAAC,MAAc,EAAE,QAAgB;IAChE,OAAO,GAAG,MAAM,IAAI,QAAQ,EAAiB,CAAC;AAChD,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,gBAAgB,CAAC,GAAgB;IAC/C,MAAM,KAAK,GAAG,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IAC7B,MAAM,MAAM,GAAG,KAAK,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;IAC9B,MAAM,QAAQ,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IAC1C,OAAO;QACL,MAAM;QACN,QAAQ;KACT,CAAC;AACJ,CAAC"}
@@ -5,6 +5,7 @@
5
5
  * operation metadata for MCP tool generation.
6
6
  */
7
7
  import { z } from "zod";
8
+ import type { ResourceReference, OneOfGroup, SubscriptionRequirement } from "./dependency-types.js";
8
9
  /**
9
10
  * OpenAPI Schema Types
10
11
  */
@@ -639,6 +640,12 @@ export interface ParsedOperation {
639
640
  operationMetadata: OperationMetadata | null;
640
641
  /** Curl example from schema x-ves-minimum-configuration */
641
642
  curlExample: string | null;
643
+ /** Resource dependencies extracted from $ref patterns */
644
+ dependencies: ResourceReference[];
645
+ /** Mutually exclusive field groups from x-ves-oneof-field-* */
646
+ oneOfGroups: OneOfGroup[];
647
+ /** Subscription/addon service requirements */
648
+ subscriptionRequirements: SubscriptionRequirement[];
642
649
  }
643
650
  /**
644
651
  * Parsed specification file
@@ -1 +1 @@
1
- {"version":3,"file":"openapi-parser.d.ts","sourceRoot":"","sources":["../../src/generator/openapi-parser.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"openapi-parser.d.ts","sourceRoot":"","sources":["../../src/generator/openapi-parser.ts"],"names":[],"mappings":"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"}