@robinmordasiewicz/f5xc-api-mcp 3.11.0 → 3.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.
@@ -0,0 +1 @@
1
+ {"version":3,"file":"resolver.d.ts","sourceRoot":"","sources":["../../../src/tools/discovery/resolver.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,369 @@
1
+ /**
2
+ * Interactive Dependency Resolver
3
+ *
4
+ * Generates complete creation plans with all transitive dependencies,
5
+ * step-by-step workflows with tool names and required inputs,
6
+ * and handles oneOf groups with alternative paths.
7
+ */
8
+ import { getResourceDependencies, getPrerequisiteResources, getOneOfGroups, getSubscriptionRequirements, } from "./dependencies.js";
9
+ import { searchTools } from "./search.js";
10
+ import { getToolByName } from "../registry.js";
11
+ import { createResourceKey } from "../../generator/dependency-types.js";
12
+ /**
13
+ * Find the create tool for a resource
14
+ */
15
+ function findCreateTool(domain, resource) {
16
+ // Search for create tool matching this resource
17
+ const results = searchTools(`${resource} create`, {
18
+ domains: [domain],
19
+ operations: ["create"],
20
+ limit: 5,
21
+ });
22
+ if (results.length > 0 && results[0]) {
23
+ return results[0].tool.name;
24
+ }
25
+ // Try alternative naming patterns
26
+ const normalizedResource = resource.replace(/-/g, "_");
27
+ const altResults = searchTools(`${normalizedResource} create`, {
28
+ operations: ["create"],
29
+ limit: 5,
30
+ });
31
+ if (altResults.length > 0 && altResults[0]) {
32
+ return altResults[0].tool.name;
33
+ }
34
+ return null;
35
+ }
36
+ /**
37
+ * Get required input parameters for a tool
38
+ */
39
+ function getRequiredInputs(toolName) {
40
+ const tool = getToolByName(toolName);
41
+ if (!tool) {
42
+ return ["namespace", "name"];
43
+ }
44
+ const required = [];
45
+ // Add path parameters
46
+ for (const param of tool.pathParameters) {
47
+ required.push(param.name);
48
+ }
49
+ // Add required body fields (simplified - just common ones)
50
+ if (tool.requiredParams) {
51
+ required.push(...tool.requiredParams);
52
+ }
53
+ // Always include common required fields
54
+ if (!required.includes("namespace")) {
55
+ required.push("namespace");
56
+ }
57
+ if (!required.includes("name")) {
58
+ required.push("name");
59
+ }
60
+ return [...new Set(required)];
61
+ }
62
+ /**
63
+ * Resolve all transitive dependencies for a resource
64
+ */
65
+ function resolveTransitiveDependencies(domain, resource, existingResources, visited, includeOptional, maxDepth, currentDepth = 0) {
66
+ const key = createResourceKey(domain, resource);
67
+ if (visited.has(key) || currentDepth > maxDepth) {
68
+ return [];
69
+ }
70
+ visited.add(key);
71
+ const prereqs = getPrerequisiteResources(domain, resource);
72
+ const allDeps = [];
73
+ for (const prereq of prereqs) {
74
+ // Skip optional if not requested
75
+ if (!prereq.required && !includeOptional) {
76
+ continue;
77
+ }
78
+ // Skip if already exists
79
+ const prereqKey = createResourceKey(prereq.domain, prereq.resourceType);
80
+ if (existingResources.has(prereqKey)) {
81
+ continue;
82
+ }
83
+ // Recursively resolve this dependency's dependencies
84
+ const transitive = resolveTransitiveDependencies(prereq.domain, prereq.resourceType, existingResources, visited, includeOptional, maxDepth, currentDepth + 1);
85
+ allDeps.push(...transitive);
86
+ allDeps.push(prereq);
87
+ }
88
+ return allDeps;
89
+ }
90
+ /**
91
+ * Topologically sort dependencies
92
+ */
93
+ function topologicalSort(dependencies) {
94
+ // Build adjacency list
95
+ const graph = new Map();
96
+ const inDegree = new Map();
97
+ const resourceMap = new Map();
98
+ for (const dep of dependencies) {
99
+ const key = createResourceKey(dep.domain, dep.resourceType);
100
+ resourceMap.set(key, dep);
101
+ if (!graph.has(key)) {
102
+ graph.set(key, new Set());
103
+ inDegree.set(key, 0);
104
+ }
105
+ }
106
+ // Build edges based on dependencies
107
+ for (const dep of dependencies) {
108
+ const key = createResourceKey(dep.domain, dep.resourceType);
109
+ const prereqs = getPrerequisiteResources(dep.domain, dep.resourceType);
110
+ for (const prereq of prereqs) {
111
+ const prereqKey = createResourceKey(prereq.domain, prereq.resourceType);
112
+ if (graph.has(prereqKey)) {
113
+ graph.get(prereqKey)?.add(key);
114
+ inDegree.set(key, (inDegree.get(key) ?? 0) + 1);
115
+ }
116
+ }
117
+ }
118
+ // Kahn's algorithm
119
+ const queue = [];
120
+ for (const [key, degree] of inDegree) {
121
+ if (degree === 0) {
122
+ queue.push(key);
123
+ }
124
+ }
125
+ const sorted = [];
126
+ while (queue.length > 0) {
127
+ const key = queue.shift();
128
+ const resource = resourceMap.get(key);
129
+ if (resource) {
130
+ sorted.push(resource);
131
+ }
132
+ for (const neighbor of graph.get(key) ?? []) {
133
+ const newDegree = (inDegree.get(neighbor) ?? 1) - 1;
134
+ inDegree.set(neighbor, newDegree);
135
+ if (newDegree === 0) {
136
+ queue.push(neighbor);
137
+ }
138
+ }
139
+ }
140
+ return sorted;
141
+ }
142
+ /**
143
+ * Resolve dependencies and generate a complete creation plan
144
+ */
145
+ export function resolveDependencies(params) {
146
+ const { resource, domain, existingResources = [], includeOptional = false, maxDepth = 10, expandAlternatives = false, } = params;
147
+ const existingSet = new Set(existingResources);
148
+ const visited = new Set();
149
+ const warnings = [];
150
+ // Check if target resource exists in dependency graph
151
+ const deps = getResourceDependencies(domain, resource);
152
+ if (!deps) {
153
+ return {
154
+ success: false,
155
+ error: `Resource '${domain}/${resource}' not found in dependency graph. ` +
156
+ `Try searching for available resources with f5xc-api-search-resources.`,
157
+ };
158
+ }
159
+ // Resolve all transitive dependencies
160
+ const allDeps = resolveTransitiveDependencies(domain, resource, existingSet, visited, includeOptional, maxDepth);
161
+ // Topologically sort dependencies
162
+ const sortedDeps = topologicalSort(allDeps);
163
+ // Build workflow steps
164
+ const steps = [];
165
+ let stepNumber = 1;
166
+ for (const dep of sortedDeps) {
167
+ const toolName = findCreateTool(dep.domain, dep.resourceType);
168
+ if (!toolName) {
169
+ warnings.push(`No create tool found for ${dep.domain}/${dep.resourceType}. ` +
170
+ `This resource may need to be created manually.`);
171
+ continue;
172
+ }
173
+ const prereqs = getPrerequisiteResources(dep.domain, dep.resourceType);
174
+ const dependsOn = prereqs
175
+ .filter((p) => !existingSet.has(createResourceKey(p.domain, p.resourceType)))
176
+ .map((p) => `${p.domain}/${p.resourceType}`);
177
+ const oneOfGroups = getOneOfGroups(dep.domain, dep.resourceType);
178
+ const step = {
179
+ stepNumber,
180
+ action: "create",
181
+ domain: dep.domain,
182
+ resource: dep.resourceType,
183
+ toolName,
184
+ dependsOn,
185
+ optional: !dep.required,
186
+ requiredInputs: getRequiredInputs(toolName),
187
+ };
188
+ if (oneOfGroups.length > 0) {
189
+ step.oneOfChoices = oneOfGroups.map((g) => ({
190
+ field: g.choiceField,
191
+ options: g.options,
192
+ description: g.description,
193
+ }));
194
+ }
195
+ steps.push(step);
196
+ stepNumber++;
197
+ }
198
+ // Add final step for target resource
199
+ const targetToolName = findCreateTool(domain, resource);
200
+ if (targetToolName) {
201
+ const targetPrereqs = getPrerequisiteResources(domain, resource);
202
+ const dependsOn = targetPrereqs
203
+ .filter((p) => !existingSet.has(createResourceKey(p.domain, p.resourceType)))
204
+ .map((p) => `${p.domain}/${p.resourceType}`);
205
+ const oneOfGroups = getOneOfGroups(domain, resource);
206
+ const targetStep = {
207
+ stepNumber,
208
+ action: "create",
209
+ domain,
210
+ resource,
211
+ toolName: targetToolName,
212
+ dependsOn,
213
+ optional: false,
214
+ requiredInputs: getRequiredInputs(targetToolName),
215
+ };
216
+ if (oneOfGroups.length > 0) {
217
+ targetStep.oneOfChoices = oneOfGroups.map((g) => ({
218
+ field: g.choiceField,
219
+ options: g.options,
220
+ description: g.description,
221
+ }));
222
+ }
223
+ steps.push(targetStep);
224
+ }
225
+ else {
226
+ warnings.push(`No create tool found for target resource ${domain}/${resource}.`);
227
+ }
228
+ // Collect subscription requirements
229
+ const subscriptions = [];
230
+ const subs = getSubscriptionRequirements(domain, resource);
231
+ for (const sub of subs) {
232
+ subscriptions.push(`${sub.displayName} (${sub.tier})${sub.required ? " - required" : ""}`);
233
+ }
234
+ // Build alternatives for oneOf choices if requested
235
+ const alternatives = [];
236
+ if (expandAlternatives) {
237
+ const oneOfGroups = getOneOfGroups(domain, resource);
238
+ for (const group of oneOfGroups) {
239
+ for (const option of group.options) {
240
+ alternatives.push({
241
+ choiceField: group.choiceField,
242
+ selectedOption: option,
243
+ steps: [], // Would need more complex logic to fill these
244
+ description: `Alternative using ${option} for ${group.choiceField}`,
245
+ });
246
+ }
247
+ }
248
+ }
249
+ // Determine complexity
250
+ let complexity = "low";
251
+ if (steps.length > 5) {
252
+ complexity = "high";
253
+ }
254
+ else if (steps.length > 2) {
255
+ complexity = "medium";
256
+ }
257
+ const plan = {
258
+ targetResource: resource,
259
+ targetDomain: domain,
260
+ totalSteps: steps.length,
261
+ steps,
262
+ warnings,
263
+ alternatives,
264
+ subscriptions,
265
+ existingResources: existingResources.length > 0 ? existingResources : undefined,
266
+ complexity,
267
+ };
268
+ return {
269
+ success: true,
270
+ plan,
271
+ };
272
+ }
273
+ /**
274
+ * Format a creation plan for human-readable output
275
+ */
276
+ export function formatCreationPlan(plan) {
277
+ const lines = [];
278
+ lines.push(`# Creation Plan for ${plan.targetDomain}/${plan.targetResource}`);
279
+ lines.push("");
280
+ lines.push(`**Complexity**: ${plan.complexity}`);
281
+ lines.push(`**Total Steps**: ${plan.totalSteps}`);
282
+ lines.push("");
283
+ if (plan.subscriptions.length > 0) {
284
+ lines.push("## Required Subscriptions");
285
+ for (const sub of plan.subscriptions) {
286
+ lines.push(`- ${sub}`);
287
+ }
288
+ lines.push("");
289
+ }
290
+ if (plan.existingResources && plan.existingResources.length > 0) {
291
+ lines.push("## Existing Resources (Skipped)");
292
+ for (const res of plan.existingResources) {
293
+ lines.push(`- ${res}`);
294
+ }
295
+ lines.push("");
296
+ }
297
+ lines.push("## Workflow Steps");
298
+ lines.push("");
299
+ for (const step of plan.steps) {
300
+ lines.push(`### Step ${step.stepNumber}: ${step.action} ${step.domain}/${step.resource}`);
301
+ lines.push(`**Tool**: \`${step.toolName}\``);
302
+ lines.push(`**Optional**: ${step.optional ? "Yes" : "No"}`);
303
+ if (step.dependsOn.length > 0) {
304
+ lines.push(`**Depends On**: ${step.dependsOn.join(", ")}`);
305
+ }
306
+ if (step.requiredInputs.length > 0) {
307
+ lines.push(`**Required Inputs**: ${step.requiredInputs.join(", ")}`);
308
+ }
309
+ if (step.oneOfChoices && step.oneOfChoices.length > 0) {
310
+ lines.push("**Mutually Exclusive Choices**:");
311
+ for (const choice of step.oneOfChoices) {
312
+ lines.push(` - \`${choice.field}\`: Choose one of [${choice.options.join(", ")}]`);
313
+ }
314
+ }
315
+ if (step.notes) {
316
+ lines.push(`**Notes**: ${step.notes}`);
317
+ }
318
+ lines.push("");
319
+ }
320
+ if (plan.warnings.length > 0) {
321
+ lines.push("## Warnings");
322
+ for (const warning of plan.warnings) {
323
+ lines.push(`- ⚠️ ${warning}`);
324
+ }
325
+ lines.push("");
326
+ }
327
+ if (plan.alternatives.length > 0) {
328
+ lines.push("## Alternative Paths");
329
+ for (const alt of plan.alternatives) {
330
+ lines.push(`- **${alt.choiceField}**: ${alt.selectedOption}`);
331
+ if (alt.description) {
332
+ lines.push(` ${alt.description}`);
333
+ }
334
+ }
335
+ lines.push("");
336
+ }
337
+ return lines.join("\n");
338
+ }
339
+ /**
340
+ * Generate a compact JSON creation plan for programmatic use
341
+ */
342
+ export function generateCompactPlan(params) {
343
+ const result = resolveDependencies(params);
344
+ if (!result.success || !result.plan) {
345
+ return {
346
+ success: false,
347
+ error: result.error,
348
+ };
349
+ }
350
+ const steps = result.plan.steps.map((step) => {
351
+ const compactStep = {
352
+ tool: step.toolName,
353
+ resource: `${step.domain}/${step.resource}`,
354
+ inputs: step.requiredInputs,
355
+ };
356
+ if (step.oneOfChoices && step.oneOfChoices.length > 0) {
357
+ compactStep.choices = {};
358
+ for (const choice of step.oneOfChoices) {
359
+ compactStep.choices[choice.field] = choice.options;
360
+ }
361
+ }
362
+ return compactStep;
363
+ });
364
+ return {
365
+ success: true,
366
+ steps,
367
+ };
368
+ }
369
+ //# sourceMappingURL=resolver.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"resolver.js","sourceRoot":"","sources":["../../../src/tools/discovery/resolver.ts"],"names":[],"mappings":"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"}
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "version": "1.0.0",
3
- "generatedAt": "2025-12-31T03:45:51.022748+00:00",
3
+ "generatedAt": "2025-12-31T13:53:44.789533+00:00",
4
4
  "totalResources": 801,
5
5
  "dependencies": {
6
6
  "admin_console_and_ui/static-component": {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@robinmordasiewicz/f5xc-api-mcp",
3
- "version": "3.11.0",
3
+ "version": "3.12.0",
4
4
  "description": "F5 Distributed Cloud API MCP Server - Exposes F5XC APIs to AI assistants via Model Context Protocol",
5
5
  "type": "module",
6
6
  "main": "dist/index.js",