@robinmordasiewicz/f5xc-api-mcp 3.0.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.
- package/CHANGELOG.md +74 -0
- package/README.md +234 -0
- package/dist/auth/credential-manager.d.ts +116 -0
- package/dist/auth/credential-manager.d.ts.map +1 -0
- package/dist/auth/credential-manager.js +208 -0
- package/dist/auth/credential-manager.js.map +1 -0
- package/dist/auth/http-client.d.ts +81 -0
- package/dist/auth/http-client.d.ts.map +1 -0
- package/dist/auth/http-client.js +197 -0
- package/dist/auth/http-client.js.map +1 -0
- package/dist/auth/index.d.ts +8 -0
- package/dist/auth/index.d.ts.map +1 -0
- package/dist/auth/index.js +6 -0
- package/dist/auth/index.js.map +1 -0
- package/dist/generator/index.d.ts +7 -0
- package/dist/generator/index.d.ts.map +1 -0
- package/dist/generator/index.js +7 -0
- package/dist/generator/index.js.map +1 -0
- package/dist/generator/naming/acronyms.d.ts +81 -0
- package/dist/generator/naming/acronyms.d.ts.map +1 -0
- package/dist/generator/naming/acronyms.js +253 -0
- package/dist/generator/naming/acronyms.js.map +1 -0
- package/dist/generator/naming/index.d.ts +6 -0
- package/dist/generator/naming/index.d.ts.map +1 -0
- package/dist/generator/naming/index.js +6 -0
- package/dist/generator/naming/index.js.map +1 -0
- package/dist/generator/naming/volterra-mapping.d.ts +102 -0
- package/dist/generator/naming/volterra-mapping.d.ts.map +1 -0
- package/dist/generator/naming/volterra-mapping.js +259 -0
- package/dist/generator/naming/volterra-mapping.js.map +1 -0
- package/dist/generator/openapi-parser.d.ts +339 -0
- package/dist/generator/openapi-parser.d.ts.map +1 -0
- package/dist/generator/openapi-parser.js +463 -0
- package/dist/generator/openapi-parser.js.map +1 -0
- package/dist/generator/tool-generator.d.ts +74 -0
- package/dist/generator/tool-generator.d.ts.map +1 -0
- package/dist/generator/tool-generator.js +387 -0
- package/dist/generator/tool-generator.js.map +1 -0
- package/dist/generator/transformers/index.d.ts +7 -0
- package/dist/generator/transformers/index.d.ts.map +1 -0
- package/dist/generator/transformers/index.js +7 -0
- package/dist/generator/transformers/index.js.map +1 -0
- package/dist/generator/transformers/normalize-examples.d.ts +48 -0
- package/dist/generator/transformers/normalize-examples.d.ts.map +1 -0
- package/dist/generator/transformers/normalize-examples.js +66 -0
- package/dist/generator/transformers/normalize-examples.js.map +1 -0
- package/dist/index.d.ts +21 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +70 -0
- package/dist/index.js.map +1 -0
- package/dist/prompts/index.d.ts +6 -0
- package/dist/prompts/index.d.ts.map +1 -0
- package/dist/prompts/index.js +5 -0
- package/dist/prompts/index.js.map +1 -0
- package/dist/prompts/workflows.d.ts +59 -0
- package/dist/prompts/workflows.d.ts.map +1 -0
- package/dist/prompts/workflows.js +585 -0
- package/dist/prompts/workflows.js.map +1 -0
- package/dist/resources/handlers.d.ts +72 -0
- package/dist/resources/handlers.d.ts.map +1 -0
- package/dist/resources/handlers.js +279 -0
- package/dist/resources/handlers.js.map +1 -0
- package/dist/resources/index.d.ts +8 -0
- package/dist/resources/index.d.ts.map +1 -0
- package/dist/resources/index.js +6 -0
- package/dist/resources/index.js.map +1 -0
- package/dist/resources/templates.d.ts +86 -0
- package/dist/resources/templates.d.ts.map +1 -0
- package/dist/resources/templates.js +248 -0
- package/dist/resources/templates.js.map +1 -0
- package/dist/server.d.ts +78 -0
- package/dist/server.d.ts.map +1 -0
- package/dist/server.js +426 -0
- package/dist/server.js.map +1 -0
- package/dist/tools/discovery/consolidate.d.ts +97 -0
- package/dist/tools/discovery/consolidate.d.ts.map +1 -0
- package/dist/tools/discovery/consolidate.js +200 -0
- package/dist/tools/discovery/consolidate.js.map +1 -0
- package/dist/tools/discovery/describe.d.ts +132 -0
- package/dist/tools/discovery/describe.d.ts.map +1 -0
- package/dist/tools/discovery/describe.js +206 -0
- package/dist/tools/discovery/describe.js.map +1 -0
- package/dist/tools/discovery/execute.d.ts +98 -0
- package/dist/tools/discovery/execute.d.ts.map +1 -0
- package/dist/tools/discovery/execute.js +251 -0
- package/dist/tools/discovery/execute.js.map +1 -0
- package/dist/tools/discovery/index-loader.d.ts +28 -0
- package/dist/tools/discovery/index-loader.d.ts.map +1 -0
- package/dist/tools/discovery/index-loader.js +69 -0
- package/dist/tools/discovery/index-loader.js.map +1 -0
- package/dist/tools/discovery/index.d.ts +185 -0
- package/dist/tools/discovery/index.d.ts.map +1 -0
- package/dist/tools/discovery/index.js +177 -0
- package/dist/tools/discovery/index.js.map +1 -0
- package/dist/tools/discovery/search.d.ts +41 -0
- package/dist/tools/discovery/search.d.ts.map +1 -0
- package/dist/tools/discovery/search.js +155 -0
- package/dist/tools/discovery/search.js.map +1 -0
- package/dist/tools/discovery/types.d.ts +70 -0
- package/dist/tools/discovery/types.d.ts.map +1 -0
- package/dist/tools/discovery/types.js +9 -0
- package/dist/tools/discovery/types.js.map +1 -0
- package/dist/tools/generated/ai_intelligence/index.d.ts +8 -0
- package/dist/tools/generated/ai_intelligence/index.d.ts.map +1 -0
- package/dist/tools/generated/ai_intelligence/index.js +282 -0
- package/dist/tools/generated/ai_intelligence/index.js.map +1 -0
- package/dist/tools/generated/api_security/index.d.ts +8 -0
- package/dist/tools/generated/api_security/index.d.ts.map +1 -0
- package/dist/tools/generated/api_security/index.js +1852 -0
- package/dist/tools/generated/api_security/index.js.map +1 -0
- package/dist/tools/generated/applications/index.d.ts +8 -0
- package/dist/tools/generated/applications/index.d.ts.map +1 -0
- package/dist/tools/generated/applications/index.js +1589 -0
- package/dist/tools/generated/applications/index.js.map +1 -0
- package/dist/tools/generated/bigip/index.d.ts +8 -0
- package/dist/tools/generated/bigip/index.d.ts.map +1 -0
- package/dist/tools/generated/bigip/index.js +1173 -0
- package/dist/tools/generated/bigip/index.js.map +1 -0
- package/dist/tools/generated/billing/index.d.ts +8 -0
- package/dist/tools/generated/billing/index.d.ts.map +1 -0
- package/dist/tools/generated/billing/index.js +759 -0
- package/dist/tools/generated/billing/index.js.map +1 -0
- package/dist/tools/generated/cdn/index.d.ts +8 -0
- package/dist/tools/generated/cdn/index.d.ts.map +1 -0
- package/dist/tools/generated/cdn/index.js +841 -0
- package/dist/tools/generated/cdn/index.js.map +1 -0
- package/dist/tools/generated/config/index.d.ts +8 -0
- package/dist/tools/generated/config/index.d.ts.map +1 -0
- package/dist/tools/generated/config/index.js +316 -0
- package/dist/tools/generated/config/index.js.map +1 -0
- package/dist/tools/generated/identity/index.d.ts +8 -0
- package/dist/tools/generated/identity/index.d.ts.map +1 -0
- package/dist/tools/generated/identity/index.js +5371 -0
- package/dist/tools/generated/identity/index.js.map +1 -0
- package/dist/tools/generated/infrastructure/index.d.ts +8 -0
- package/dist/tools/generated/infrastructure/index.d.ts.map +1 -0
- package/dist/tools/generated/infrastructure/index.js +5342 -0
- package/dist/tools/generated/infrastructure/index.js.map +1 -0
- package/dist/tools/generated/infrastructure_protection/index.d.ts +8 -0
- package/dist/tools/generated/infrastructure_protection/index.d.ts.map +1 -0
- package/dist/tools/generated/infrastructure_protection/index.js +2919 -0
- package/dist/tools/generated/infrastructure_protection/index.js.map +1 -0
- package/dist/tools/generated/integrations/index.d.ts +8 -0
- package/dist/tools/generated/integrations/index.d.ts.map +1 -0
- package/dist/tools/generated/integrations/index.js +1995 -0
- package/dist/tools/generated/integrations/index.js.map +1 -0
- package/dist/tools/generated/load_balancer/index.d.ts +8 -0
- package/dist/tools/generated/load_balancer/index.d.ts.map +1 -0
- package/dist/tools/generated/load_balancer/index.js +2269 -0
- package/dist/tools/generated/load_balancer/index.js.map +1 -0
- package/dist/tools/generated/networking/index.d.ts +8 -0
- package/dist/tools/generated/networking/index.d.ts.map +1 -0
- package/dist/tools/generated/networking/index.js +11289 -0
- package/dist/tools/generated/networking/index.js.map +1 -0
- package/dist/tools/generated/nginx/index.d.ts +8 -0
- package/dist/tools/generated/nginx/index.d.ts.map +1 -0
- package/dist/tools/generated/nginx/index.js +680 -0
- package/dist/tools/generated/nginx/index.js.map +1 -0
- package/dist/tools/generated/observability/index.d.ts +8 -0
- package/dist/tools/generated/observability/index.d.ts.map +1 -0
- package/dist/tools/generated/observability/index.js +6140 -0
- package/dist/tools/generated/observability/index.js.map +1 -0
- package/dist/tools/generated/operations/index.d.ts +8 -0
- package/dist/tools/generated/operations/index.d.ts.map +1 -0
- package/dist/tools/generated/operations/index.js +1759 -0
- package/dist/tools/generated/operations/index.js.map +1 -0
- package/dist/tools/generated/security/index.d.ts +8 -0
- package/dist/tools/generated/security/index.d.ts.map +1 -0
- package/dist/tools/generated/security/index.js +9111 -0
- package/dist/tools/generated/security/index.js.map +1 -0
- package/dist/tools/generated/service_mesh/index.d.ts +8 -0
- package/dist/tools/generated/service_mesh/index.d.ts.map +1 -0
- package/dist/tools/generated/service_mesh/index.js +1628 -0
- package/dist/tools/generated/service_mesh/index.js.map +1 -0
- package/dist/tools/generated/shape_security/index.d.ts +8 -0
- package/dist/tools/generated/shape_security/index.d.ts.map +1 -0
- package/dist/tools/generated/shape_security/index.js +4121 -0
- package/dist/tools/generated/shape_security/index.js.map +1 -0
- package/dist/tools/generated/subscriptions/index.d.ts +8 -0
- package/dist/tools/generated/subscriptions/index.d.ts.map +1 -0
- package/dist/tools/generated/subscriptions/index.js +778 -0
- package/dist/tools/generated/subscriptions/index.js.map +1 -0
- package/dist/tools/generated/tenant_management/index.d.ts +8 -0
- package/dist/tools/generated/tenant_management/index.d.ts.map +1 -0
- package/dist/tools/generated/tenant_management/index.js +2292 -0
- package/dist/tools/generated/tenant_management/index.js.map +1 -0
- package/dist/tools/generated/vpn/index.d.ts +8 -0
- package/dist/tools/generated/vpn/index.d.ts.map +1 -0
- package/dist/tools/generated/vpn/index.js +1183 -0
- package/dist/tools/generated/vpn/index.js.map +1 -0
- package/dist/tools/index.d.ts +7 -0
- package/dist/tools/index.d.ts.map +1 -0
- package/dist/tools/index.js +6 -0
- package/dist/tools/index.js.map +1 -0
- package/dist/tools/registry.d.ts +27 -0
- package/dist/tools/registry.d.ts.map +1 -0
- package/dist/tools/registry.js +83 -0
- package/dist/tools/registry.js.map +1 -0
- package/dist/utils/error-handling.d.ts +109 -0
- package/dist/utils/error-handling.d.ts.map +1 -0
- package/dist/utils/error-handling.js +239 -0
- package/dist/utils/error-handling.js.map +1 -0
- package/dist/utils/index.d.ts +7 -0
- package/dist/utils/index.d.ts.map +1 -0
- package/dist/utils/index.js +6 -0
- package/dist/utils/index.js.map +1 -0
- package/dist/utils/logging.d.ts +75 -0
- package/dist/utils/logging.d.ts.map +1 -0
- package/dist/utils/logging.js +131 -0
- package/dist/utils/logging.js.map +1 -0
- package/manifest.json +143 -0
- package/package.json +95 -0
|
@@ -0,0 +1,177 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Discovery Module - Dynamic Tool Discovery for Token Efficiency
|
|
3
|
+
*
|
|
4
|
+
* This module implements the Speakeasy-style dynamic toolset pattern
|
|
5
|
+
* that reduces token consumption by 95%+ through lazy loading.
|
|
6
|
+
*
|
|
7
|
+
* Instead of loading all 1,400+ tools upfront (~535K tokens), this module
|
|
8
|
+
* exposes three meta-tools that load tool schemas on-demand:
|
|
9
|
+
*
|
|
10
|
+
* 1. search_tools - Find tools matching a natural language query
|
|
11
|
+
* 2. describe_tool - Get full schema for a specific tool
|
|
12
|
+
* 3. execute_tool - Execute a discovered tool
|
|
13
|
+
*
|
|
14
|
+
* Token Impact:
|
|
15
|
+
* - Before: 535,000 tokens loaded at server start
|
|
16
|
+
* - After: ~500 tokens (meta-tools) + ~375 tokens per tool used
|
|
17
|
+
*/
|
|
18
|
+
// Index loader exports
|
|
19
|
+
export { getToolIndex, clearIndexCache, getIndexMetadata, toolExists, getToolEntry, } from "./index-loader.js";
|
|
20
|
+
// Search exports
|
|
21
|
+
export { searchTools, getToolsByDomain, getToolsByResource, getAvailableDomains, getToolCountByDomain, } from "./search.js";
|
|
22
|
+
// Describe exports
|
|
23
|
+
export { describeTool, describeTools, describeToolSafe, describeToolCompact, getFullToolSchema, getOptimizationStats, } from "./describe.js";
|
|
24
|
+
// Execute exports
|
|
25
|
+
export { executeTool, validateExecuteParams } from "./execute.js";
|
|
26
|
+
export { getConsolidatedIndex, clearConsolidatedCache, getConsolidatedResource, getConsolidatedByDomain, searchConsolidatedResources, resolveConsolidatedTool, getConsolidationStats, } from "./consolidate.js";
|
|
27
|
+
/**
|
|
28
|
+
* MCP Tool Definitions for the discovery meta-tools
|
|
29
|
+
*
|
|
30
|
+
* These are the three tools that get registered with the MCP server
|
|
31
|
+
* instead of the 1,400+ individual API tools.
|
|
32
|
+
*/
|
|
33
|
+
export const DISCOVERY_TOOLS = {
|
|
34
|
+
search: {
|
|
35
|
+
name: "f5xc-api-search-tools",
|
|
36
|
+
description: "Search for F5XC API tools using natural language. Returns matching tools with relevance scores. " +
|
|
37
|
+
"Use this to find tools for specific operations like 'create load balancer' or 'list DNS zones'.",
|
|
38
|
+
inputSchema: {
|
|
39
|
+
type: "object",
|
|
40
|
+
properties: {
|
|
41
|
+
query: {
|
|
42
|
+
type: "string",
|
|
43
|
+
description: "Natural language search query (e.g., 'http load balancer', 'create origin pool', 'delete dns zone')",
|
|
44
|
+
},
|
|
45
|
+
limit: {
|
|
46
|
+
type: "number",
|
|
47
|
+
description: "Maximum number of results to return (default: 10, max: 50)",
|
|
48
|
+
default: 10,
|
|
49
|
+
},
|
|
50
|
+
domains: {
|
|
51
|
+
type: "array",
|
|
52
|
+
items: { type: "string" },
|
|
53
|
+
description: "Filter by domain(s): waap, dns, core, network, site, security, appstack",
|
|
54
|
+
},
|
|
55
|
+
operations: {
|
|
56
|
+
type: "array",
|
|
57
|
+
items: { type: "string" },
|
|
58
|
+
description: "Filter by operation type(s): create, get, list, update, delete",
|
|
59
|
+
},
|
|
60
|
+
},
|
|
61
|
+
required: ["query"],
|
|
62
|
+
},
|
|
63
|
+
},
|
|
64
|
+
describe: {
|
|
65
|
+
name: "f5xc-api-describe-tool",
|
|
66
|
+
description: "Get detailed information about a specific F5XC API tool including parameters, request body schema, " +
|
|
67
|
+
"and usage examples. Use search_tools first to find the tool name.",
|
|
68
|
+
inputSchema: {
|
|
69
|
+
type: "object",
|
|
70
|
+
properties: {
|
|
71
|
+
toolName: {
|
|
72
|
+
type: "string",
|
|
73
|
+
description: "The exact tool name (e.g., 'f5xc-api-waap-http-loadbalancer-create')",
|
|
74
|
+
},
|
|
75
|
+
},
|
|
76
|
+
required: ["toolName"],
|
|
77
|
+
},
|
|
78
|
+
},
|
|
79
|
+
execute: {
|
|
80
|
+
name: "f5xc-api-execute-tool",
|
|
81
|
+
description: "Execute an F5XC API tool. In authenticated mode, makes the actual API call. " +
|
|
82
|
+
"In documentation mode, returns CLI equivalents and curl examples.",
|
|
83
|
+
inputSchema: {
|
|
84
|
+
type: "object",
|
|
85
|
+
properties: {
|
|
86
|
+
toolName: {
|
|
87
|
+
type: "string",
|
|
88
|
+
description: "The exact tool name to execute",
|
|
89
|
+
},
|
|
90
|
+
pathParams: {
|
|
91
|
+
type: "object",
|
|
92
|
+
description: "Path parameters (e.g., { namespace: 'default', name: 'example-resource' })",
|
|
93
|
+
additionalProperties: { type: "string" },
|
|
94
|
+
},
|
|
95
|
+
queryParams: {
|
|
96
|
+
type: "object",
|
|
97
|
+
description: "Query parameters for the request",
|
|
98
|
+
additionalProperties: { type: "string" },
|
|
99
|
+
},
|
|
100
|
+
body: {
|
|
101
|
+
type: "object",
|
|
102
|
+
description: "Request body for POST/PUT/PATCH operations",
|
|
103
|
+
},
|
|
104
|
+
},
|
|
105
|
+
required: ["toolName"],
|
|
106
|
+
},
|
|
107
|
+
},
|
|
108
|
+
serverInfo: {
|
|
109
|
+
name: "f5xc-api-server-info",
|
|
110
|
+
description: "Get F5XC API MCP server information including authentication status, available domains, " +
|
|
111
|
+
"and total tool count. Use this to understand server capabilities.",
|
|
112
|
+
inputSchema: {
|
|
113
|
+
type: "object",
|
|
114
|
+
properties: {},
|
|
115
|
+
},
|
|
116
|
+
},
|
|
117
|
+
searchResources: {
|
|
118
|
+
name: "f5xc-api-search-resources",
|
|
119
|
+
description: "Search for F5XC resources (consolidated view). Returns resources with their available CRUD operations. " +
|
|
120
|
+
"More efficient than searching individual tools - one result per resource instead of 5 CRUD tools.",
|
|
121
|
+
inputSchema: {
|
|
122
|
+
type: "object",
|
|
123
|
+
properties: {
|
|
124
|
+
query: {
|
|
125
|
+
type: "string",
|
|
126
|
+
description: "Natural language search query (e.g., 'http load balancer', 'origin pool', 'dns zone')",
|
|
127
|
+
},
|
|
128
|
+
limit: {
|
|
129
|
+
type: "number",
|
|
130
|
+
description: "Maximum number of results to return (default: 10)",
|
|
131
|
+
default: 10,
|
|
132
|
+
},
|
|
133
|
+
domains: {
|
|
134
|
+
type: "array",
|
|
135
|
+
items: { type: "string" },
|
|
136
|
+
description: "Filter by domain(s): waap, dns, core, network, site, security, appstack",
|
|
137
|
+
},
|
|
138
|
+
},
|
|
139
|
+
required: ["query"],
|
|
140
|
+
},
|
|
141
|
+
},
|
|
142
|
+
executeResource: {
|
|
143
|
+
name: "f5xc-api-execute-resource",
|
|
144
|
+
description: "Execute a CRUD operation on a consolidated F5XC resource. Specify the resource name and operation. " +
|
|
145
|
+
"Routes to the correct underlying API tool automatically.",
|
|
146
|
+
inputSchema: {
|
|
147
|
+
type: "object",
|
|
148
|
+
properties: {
|
|
149
|
+
resourceName: {
|
|
150
|
+
type: "string",
|
|
151
|
+
description: "The consolidated resource name (e.g., 'f5xc-api-waap-http-loadbalancer')",
|
|
152
|
+
},
|
|
153
|
+
operation: {
|
|
154
|
+
type: "string",
|
|
155
|
+
enum: ["create", "get", "list", "update", "delete"],
|
|
156
|
+
description: "The CRUD operation to perform",
|
|
157
|
+
},
|
|
158
|
+
pathParams: {
|
|
159
|
+
type: "object",
|
|
160
|
+
description: "Path parameters (e.g., { namespace: 'default', name: 'example-resource' })",
|
|
161
|
+
additionalProperties: { type: "string" },
|
|
162
|
+
},
|
|
163
|
+
queryParams: {
|
|
164
|
+
type: "object",
|
|
165
|
+
description: "Query parameters for the request",
|
|
166
|
+
additionalProperties: { type: "string" },
|
|
167
|
+
},
|
|
168
|
+
body: {
|
|
169
|
+
type: "object",
|
|
170
|
+
description: "Request body for create/update operations",
|
|
171
|
+
},
|
|
172
|
+
},
|
|
173
|
+
required: ["resourceName", "operation"],
|
|
174
|
+
},
|
|
175
|
+
},
|
|
176
|
+
};
|
|
177
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/tools/discovery/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Tool Search Implementation
|
|
3
|
+
*
|
|
4
|
+
* Provides natural language search across the tool index.
|
|
5
|
+
* Uses lightweight text matching for efficient discovery.
|
|
6
|
+
*/
|
|
7
|
+
import type { ToolIndexEntry, SearchResult, SearchOptions } from "./types.js";
|
|
8
|
+
/**
|
|
9
|
+
* Search for tools matching a natural language query
|
|
10
|
+
*
|
|
11
|
+
* @param query - Natural language search query
|
|
12
|
+
* @param options - Search options
|
|
13
|
+
* @returns Ranked list of matching tools
|
|
14
|
+
*
|
|
15
|
+
* @example
|
|
16
|
+
* ```typescript
|
|
17
|
+
* // Find load balancer tools
|
|
18
|
+
* const results = searchTools("http load balancer");
|
|
19
|
+
*
|
|
20
|
+
* // Find create operations in WAAP domain
|
|
21
|
+
* const results = searchTools("create", { domains: ["waap"], operations: ["create"] });
|
|
22
|
+
* ```
|
|
23
|
+
*/
|
|
24
|
+
export declare function searchTools(query: string, options?: SearchOptions): SearchResult[];
|
|
25
|
+
/**
|
|
26
|
+
* Get tools by exact domain
|
|
27
|
+
*/
|
|
28
|
+
export declare function getToolsByDomain(domain: string): ToolIndexEntry[];
|
|
29
|
+
/**
|
|
30
|
+
* Get tools by resource name
|
|
31
|
+
*/
|
|
32
|
+
export declare function getToolsByResource(resource: string): ToolIndexEntry[];
|
|
33
|
+
/**
|
|
34
|
+
* Get all available domains
|
|
35
|
+
*/
|
|
36
|
+
export declare function getAvailableDomains(): string[];
|
|
37
|
+
/**
|
|
38
|
+
* Get tool count by domain
|
|
39
|
+
*/
|
|
40
|
+
export declare function getToolCountByDomain(): Record<string, number>;
|
|
41
|
+
//# sourceMappingURL=search.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"search.d.ts","sourceRoot":"","sources":["../../../src/tools/discovery/search.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,cAAc,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAgG9E;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,WAAW,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,GAAE,aAAkB,GAAG,YAAY,EAAE,CAkCtF;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,MAAM,GAAG,cAAc,EAAE,CAGjE;AAED;;GAEG;AACH,wBAAgB,kBAAkB,CAAC,QAAQ,EAAE,MAAM,GAAG,cAAc,EAAE,CAIrE;AAED;;GAEG;AACH,wBAAgB,mBAAmB,IAAI,MAAM,EAAE,CAG9C;AAED;;GAEG;AACH,wBAAgB,oBAAoB,IAAI,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAG7D"}
|
|
@@ -0,0 +1,155 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Tool Search Implementation
|
|
3
|
+
*
|
|
4
|
+
* Provides natural language search across the tool index.
|
|
5
|
+
* Uses lightweight text matching for efficient discovery.
|
|
6
|
+
*/
|
|
7
|
+
import { getToolIndex } from "./index-loader.js";
|
|
8
|
+
/**
|
|
9
|
+
* Normalize text for search matching
|
|
10
|
+
*/
|
|
11
|
+
function normalizeText(text) {
|
|
12
|
+
return text
|
|
13
|
+
.toLowerCase()
|
|
14
|
+
.replace(/[-_]/g, " ")
|
|
15
|
+
.replace(/[^a-z0-9\s]/g, "")
|
|
16
|
+
.trim();
|
|
17
|
+
}
|
|
18
|
+
/**
|
|
19
|
+
* Tokenize text into searchable terms
|
|
20
|
+
*/
|
|
21
|
+
function tokenize(text) {
|
|
22
|
+
return normalizeText(text)
|
|
23
|
+
.split(/\s+/)
|
|
24
|
+
.filter((term) => term.length > 1);
|
|
25
|
+
}
|
|
26
|
+
/**
|
|
27
|
+
* Calculate relevance score between query and tool
|
|
28
|
+
*/
|
|
29
|
+
function calculateScore(query, tool) {
|
|
30
|
+
const queryTerms = tokenize(query);
|
|
31
|
+
const matchedTerms = [];
|
|
32
|
+
if (queryTerms.length === 0) {
|
|
33
|
+
return { score: 0, matchedTerms };
|
|
34
|
+
}
|
|
35
|
+
// Build searchable text from tool
|
|
36
|
+
const toolText = [tool.name, tool.domain, tool.resource, tool.operation, tool.summary].join(" ");
|
|
37
|
+
const normalizedToolText = normalizeText(toolText);
|
|
38
|
+
const toolTerms = new Set(tokenize(toolText));
|
|
39
|
+
let matchCount = 0;
|
|
40
|
+
for (const queryTerm of queryTerms) {
|
|
41
|
+
// Exact term match
|
|
42
|
+
if (toolTerms.has(queryTerm)) {
|
|
43
|
+
matchCount += 1;
|
|
44
|
+
matchedTerms.push(queryTerm);
|
|
45
|
+
continue;
|
|
46
|
+
}
|
|
47
|
+
// Partial match (query term contained in tool text)
|
|
48
|
+
if (normalizedToolText.includes(queryTerm)) {
|
|
49
|
+
matchCount += 0.7;
|
|
50
|
+
matchedTerms.push(queryTerm);
|
|
51
|
+
continue;
|
|
52
|
+
}
|
|
53
|
+
// Check if any tool term starts with query term (prefix match)
|
|
54
|
+
for (const toolTerm of toolTerms) {
|
|
55
|
+
if (toolTerm.startsWith(queryTerm)) {
|
|
56
|
+
matchCount += 0.5;
|
|
57
|
+
matchedTerms.push(queryTerm);
|
|
58
|
+
break;
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
// Boost scores for specific matches
|
|
63
|
+
let score = matchCount / queryTerms.length;
|
|
64
|
+
// Boost for domain match
|
|
65
|
+
if (normalizeText(tool.domain).includes(normalizeText(query.split(" ")[0] || ""))) {
|
|
66
|
+
score *= 1.2;
|
|
67
|
+
}
|
|
68
|
+
// Boost for operation match
|
|
69
|
+
const operationTerms = ["create", "get", "list", "update", "delete", "patch"];
|
|
70
|
+
for (const opTerm of operationTerms) {
|
|
71
|
+
if (query.toLowerCase().includes(opTerm) && tool.operation === opTerm) {
|
|
72
|
+
score *= 1.3;
|
|
73
|
+
break;
|
|
74
|
+
}
|
|
75
|
+
}
|
|
76
|
+
// Boost for resource match
|
|
77
|
+
if (normalizeText(tool.resource).includes(normalizeText(query))) {
|
|
78
|
+
score *= 1.4;
|
|
79
|
+
}
|
|
80
|
+
// Cap score at 1.0
|
|
81
|
+
return { score: Math.min(score, 1), matchedTerms: [...new Set(matchedTerms)] };
|
|
82
|
+
}
|
|
83
|
+
/**
|
|
84
|
+
* Search for tools matching a natural language query
|
|
85
|
+
*
|
|
86
|
+
* @param query - Natural language search query
|
|
87
|
+
* @param options - Search options
|
|
88
|
+
* @returns Ranked list of matching tools
|
|
89
|
+
*
|
|
90
|
+
* @example
|
|
91
|
+
* ```typescript
|
|
92
|
+
* // Find load balancer tools
|
|
93
|
+
* const results = searchTools("http load balancer");
|
|
94
|
+
*
|
|
95
|
+
* // Find create operations in WAAP domain
|
|
96
|
+
* const results = searchTools("create", { domains: ["waap"], operations: ["create"] });
|
|
97
|
+
* ```
|
|
98
|
+
*/
|
|
99
|
+
export function searchTools(query, options = {}) {
|
|
100
|
+
const { limit = 10, domains, operations, minScore = 0.1 } = options;
|
|
101
|
+
const index = getToolIndex();
|
|
102
|
+
let tools = index.tools;
|
|
103
|
+
// Apply domain filter
|
|
104
|
+
if (domains && domains.length > 0) {
|
|
105
|
+
const domainSet = new Set(domains.map((d) => d.toLowerCase()));
|
|
106
|
+
tools = tools.filter((t) => domainSet.has(t.domain.toLowerCase()));
|
|
107
|
+
}
|
|
108
|
+
// Apply operation filter
|
|
109
|
+
if (operations && operations.length > 0) {
|
|
110
|
+
const opSet = new Set(operations.map((o) => o.toLowerCase()));
|
|
111
|
+
tools = tools.filter((t) => opSet.has(t.operation.toLowerCase()));
|
|
112
|
+
}
|
|
113
|
+
// Score and rank tools
|
|
114
|
+
const results = [];
|
|
115
|
+
for (const tool of tools) {
|
|
116
|
+
const { score, matchedTerms } = calculateScore(query, tool);
|
|
117
|
+
if (score >= minScore) {
|
|
118
|
+
results.push({ tool, score, matchedTerms });
|
|
119
|
+
}
|
|
120
|
+
}
|
|
121
|
+
// Sort by score descending
|
|
122
|
+
results.sort((a, b) => b.score - a.score);
|
|
123
|
+
// Return top results
|
|
124
|
+
return results.slice(0, limit);
|
|
125
|
+
}
|
|
126
|
+
/**
|
|
127
|
+
* Get tools by exact domain
|
|
128
|
+
*/
|
|
129
|
+
export function getToolsByDomain(domain) {
|
|
130
|
+
const index = getToolIndex();
|
|
131
|
+
return index.tools.filter((t) => t.domain.toLowerCase() === domain.toLowerCase());
|
|
132
|
+
}
|
|
133
|
+
/**
|
|
134
|
+
* Get tools by resource name
|
|
135
|
+
*/
|
|
136
|
+
export function getToolsByResource(resource) {
|
|
137
|
+
const index = getToolIndex();
|
|
138
|
+
const normalizedResource = normalizeText(resource);
|
|
139
|
+
return index.tools.filter((t) => normalizeText(t.resource).includes(normalizedResource));
|
|
140
|
+
}
|
|
141
|
+
/**
|
|
142
|
+
* Get all available domains
|
|
143
|
+
*/
|
|
144
|
+
export function getAvailableDomains() {
|
|
145
|
+
const index = getToolIndex();
|
|
146
|
+
return Object.keys(index.metadata.domains);
|
|
147
|
+
}
|
|
148
|
+
/**
|
|
149
|
+
* Get tool count by domain
|
|
150
|
+
*/
|
|
151
|
+
export function getToolCountByDomain() {
|
|
152
|
+
const index = getToolIndex();
|
|
153
|
+
return { ...index.metadata.domains };
|
|
154
|
+
}
|
|
155
|
+
//# sourceMappingURL=search.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"search.js","sourceRoot":"","sources":["../../../src/tools/discovery/search.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Discovery Module Type Definitions
|
|
3
|
+
*
|
|
4
|
+
* Lightweight types for the dynamic tool discovery system.
|
|
5
|
+
* These types are designed to minimize token usage while
|
|
6
|
+
* preserving essential information for tool discovery.
|
|
7
|
+
*/
|
|
8
|
+
/**
|
|
9
|
+
* Lightweight tool index entry (~50 tokens vs ~375 for full ParsedOperation)
|
|
10
|
+
* Contains only the minimum information needed for search/discovery.
|
|
11
|
+
*/
|
|
12
|
+
export interface ToolIndexEntry {
|
|
13
|
+
/** Tool name (e.g., "f5xc-api-waap-http-loadbalancer-create") */
|
|
14
|
+
name: string;
|
|
15
|
+
/** Domain category (e.g., "waap", "dns", "core") */
|
|
16
|
+
domain: string;
|
|
17
|
+
/** Resource type (e.g., "http-loadbalancer") */
|
|
18
|
+
resource: string;
|
|
19
|
+
/** Operation type (e.g., "create", "get", "list", "update", "delete") */
|
|
20
|
+
operation: string;
|
|
21
|
+
/** Brief summary for search matching */
|
|
22
|
+
summary: string;
|
|
23
|
+
}
|
|
24
|
+
/**
|
|
25
|
+
* Search result with relevance scoring
|
|
26
|
+
*/
|
|
27
|
+
export interface SearchResult {
|
|
28
|
+
/** The matching tool entry */
|
|
29
|
+
tool: ToolIndexEntry;
|
|
30
|
+
/** Relevance score (0-1) */
|
|
31
|
+
score: number;
|
|
32
|
+
/** Matched terms for highlighting */
|
|
33
|
+
matchedTerms: string[];
|
|
34
|
+
}
|
|
35
|
+
/**
|
|
36
|
+
* Search options for customizing tool discovery
|
|
37
|
+
*/
|
|
38
|
+
export interface SearchOptions {
|
|
39
|
+
/** Maximum number of results to return (default: 10) */
|
|
40
|
+
limit?: number;
|
|
41
|
+
/** Filter by domain(s) */
|
|
42
|
+
domains?: string[];
|
|
43
|
+
/** Filter by operation type(s) */
|
|
44
|
+
operations?: string[];
|
|
45
|
+
/** Minimum relevance score threshold (default: 0.1) */
|
|
46
|
+
minScore?: number;
|
|
47
|
+
}
|
|
48
|
+
/**
|
|
49
|
+
* Tool index metadata for the entire index
|
|
50
|
+
*/
|
|
51
|
+
export interface ToolIndexMetadata {
|
|
52
|
+
/** Total number of tools indexed */
|
|
53
|
+
totalTools: number;
|
|
54
|
+
/** Available domains with tool counts */
|
|
55
|
+
domains: Record<string, number>;
|
|
56
|
+
/** Index generation timestamp */
|
|
57
|
+
generatedAt: string;
|
|
58
|
+
/** Version of the index format */
|
|
59
|
+
version: string;
|
|
60
|
+
}
|
|
61
|
+
/**
|
|
62
|
+
* Complete tool index structure
|
|
63
|
+
*/
|
|
64
|
+
export interface ToolIndex {
|
|
65
|
+
/** Index metadata */
|
|
66
|
+
metadata: ToolIndexMetadata;
|
|
67
|
+
/** All tool entries */
|
|
68
|
+
tools: ToolIndexEntry[];
|
|
69
|
+
}
|
|
70
|
+
//# sourceMappingURL=types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/tools/discovery/types.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH;;;GAGG;AACH,MAAM,WAAW,cAAc;IAC7B,iEAAiE;IACjE,IAAI,EAAE,MAAM,CAAC;IACb,oDAAoD;IACpD,MAAM,EAAE,MAAM,CAAC;IACf,gDAAgD;IAChD,QAAQ,EAAE,MAAM,CAAC;IACjB,yEAAyE;IACzE,SAAS,EAAE,MAAM,CAAC;IAClB,wCAAwC;IACxC,OAAO,EAAE,MAAM,CAAC;CACjB;AAED;;GAEG;AACH,MAAM,WAAW,YAAY;IAC3B,8BAA8B;IAC9B,IAAI,EAAE,cAAc,CAAC;IACrB,4BAA4B;IAC5B,KAAK,EAAE,MAAM,CAAC;IACd,qCAAqC;IACrC,YAAY,EAAE,MAAM,EAAE,CAAC;CACxB;AAED;;GAEG;AACH,MAAM,WAAW,aAAa;IAC5B,wDAAwD;IACxD,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,0BAA0B;IAC1B,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;IACnB,kCAAkC;IAClC,UAAU,CAAC,EAAE,MAAM,EAAE,CAAC;IACtB,uDAAuD;IACvD,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED;;GAEG;AACH,MAAM,WAAW,iBAAiB;IAChC,oCAAoC;IACpC,UAAU,EAAE,MAAM,CAAC;IACnB,yCAAyC;IACzC,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAChC,iCAAiC;IACjC,WAAW,EAAE,MAAM,CAAC;IACpB,kCAAkC;IAClC,OAAO,EAAE,MAAM,CAAC;CACjB;AAED;;GAEG;AACH,MAAM,WAAW,SAAS;IACxB,qBAAqB;IACrB,QAAQ,EAAE,iBAAiB,CAAC;IAC5B,uBAAuB;IACvB,KAAK,EAAE,cAAc,EAAE,CAAC;CACzB"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Discovery Module Type Definitions
|
|
3
|
+
*
|
|
4
|
+
* Lightweight types for the dynamic tool discovery system.
|
|
5
|
+
* These types are designed to minimize token usage while
|
|
6
|
+
* preserving essential information for tool discovery.
|
|
7
|
+
*/
|
|
8
|
+
export {};
|
|
9
|
+
//# sourceMappingURL=types.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/tools/discovery/types.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Generated tool definitions for ai_intelligence domain
|
|
3
|
+
* DO NOT EDIT - This file is auto-generated by scripts/generate.ts
|
|
4
|
+
*/
|
|
5
|
+
import type { ParsedOperation } from "../../../generator/openapi-parser.js";
|
|
6
|
+
export declare const ai_intelligenceTools: ParsedOperation[];
|
|
7
|
+
export default ai_intelligenceTools;
|
|
8
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/tools/generated/ai_intelligence/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,sCAAsC,CAAC;AAE5E,eAAO,MAAM,oBAAoB,EAAE,eAAe,EAqRjD,CAAC;AAEF,eAAe,oBAAoB,CAAC"}
|