@ggakila/agentx-framework 0.1.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 +107 -0
- package/LICENSE +21 -0
- package/README.md +335 -0
- package/dist/agent/Agent.d.ts +110 -0
- package/dist/agent/Agent.d.ts.map +1 -0
- package/dist/agent/Agent.js +291 -0
- package/dist/agent/Agent.js.map +1 -0
- package/dist/agent/index.d.ts +5 -0
- package/dist/agent/index.d.ts.map +1 -0
- package/dist/agent/index.js +11 -0
- package/dist/agent/index.js.map +1 -0
- package/dist/cli/CLI.d.ts +74 -0
- package/dist/cli/CLI.d.ts.map +1 -0
- package/dist/cli/CLI.js +255 -0
- package/dist/cli/CLI.js.map +1 -0
- package/dist/cli/InteractiveSetup.d.ts +104 -0
- package/dist/cli/InteractiveSetup.d.ts.map +1 -0
- package/dist/cli/InteractiveSetup.js +2225 -0
- package/dist/cli/InteractiveSetup.js.map +1 -0
- package/dist/cli/bin.d.ts +7 -0
- package/dist/cli/bin.d.ts.map +1 -0
- package/dist/cli/bin.js +35 -0
- package/dist/cli/bin.js.map +1 -0
- package/dist/cli/commands/ProjectCommands.d.ts +23 -0
- package/dist/cli/commands/ProjectCommands.d.ts.map +1 -0
- package/dist/cli/commands/ProjectCommands.js +504 -0
- package/dist/cli/commands/ProjectCommands.js.map +1 -0
- package/dist/cli/index.d.ts +7 -0
- package/dist/cli/index.d.ts.map +1 -0
- package/dist/cli/index.js +21 -0
- package/dist/cli/index.js.map +1 -0
- package/dist/credential/CredentialManager.d.ts +112 -0
- package/dist/credential/CredentialManager.d.ts.map +1 -0
- package/dist/credential/CredentialManager.js +343 -0
- package/dist/credential/CredentialManager.js.map +1 -0
- package/dist/credential/OAuth2Manager.d.ts +206 -0
- package/dist/credential/OAuth2Manager.d.ts.map +1 -0
- package/dist/credential/OAuth2Manager.js +463 -0
- package/dist/credential/OAuth2Manager.js.map +1 -0
- package/dist/credential/index.d.ts +6 -0
- package/dist/credential/index.d.ts.map +1 -0
- package/dist/credential/index.js +16 -0
- package/dist/credential/index.js.map +1 -0
- package/dist/error/ErrorHandler.d.ts +74 -0
- package/dist/error/ErrorHandler.d.ts.map +1 -0
- package/dist/error/ErrorHandler.js +279 -0
- package/dist/error/ErrorHandler.js.map +1 -0
- package/dist/index.d.ts +30 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +100 -0
- package/dist/index.js.map +1 -0
- package/dist/integrations/DatabaseTool.d.ts +149 -0
- package/dist/integrations/DatabaseTool.d.ts.map +1 -0
- package/dist/integrations/DatabaseTool.js +900 -0
- package/dist/integrations/DatabaseTool.js.map +1 -0
- package/dist/integrations/EmailTool.d.ts +142 -0
- package/dist/integrations/EmailTool.d.ts.map +1 -0
- package/dist/integrations/EmailTool.js +259 -0
- package/dist/integrations/EmailTool.js.map +1 -0
- package/dist/integrations/FileSystemTool.d.ts +153 -0
- package/dist/integrations/FileSystemTool.d.ts.map +1 -0
- package/dist/integrations/FileSystemTool.js +835 -0
- package/dist/integrations/FileSystemTool.js.map +1 -0
- package/dist/integrations/GoogleWorkspaceTool.d.ts +125 -0
- package/dist/integrations/GoogleWorkspaceTool.d.ts.map +1 -0
- package/dist/integrations/GoogleWorkspaceTool.js +765 -0
- package/dist/integrations/GoogleWorkspaceTool.js.map +1 -0
- package/dist/integrations/HttpTool.d.ts +55 -0
- package/dist/integrations/HttpTool.d.ts.map +1 -0
- package/dist/integrations/HttpTool.js +209 -0
- package/dist/integrations/HttpTool.js.map +1 -0
- package/dist/integrations/MessagingTool.d.ts +136 -0
- package/dist/integrations/MessagingTool.d.ts.map +1 -0
- package/dist/integrations/MessagingTool.js +503 -0
- package/dist/integrations/MessagingTool.js.map +1 -0
- package/dist/integrations/SchedulerTool.d.ts +147 -0
- package/dist/integrations/SchedulerTool.d.ts.map +1 -0
- package/dist/integrations/SchedulerTool.js +471 -0
- package/dist/integrations/SchedulerTool.js.map +1 -0
- package/dist/integrations/WebhookTool.d.ts +97 -0
- package/dist/integrations/WebhookTool.d.ts.map +1 -0
- package/dist/integrations/WebhookTool.js +351 -0
- package/dist/integrations/WebhookTool.js.map +1 -0
- package/dist/integrations/index.d.ts +13 -0
- package/dist/integrations/index.d.ts.map +1 -0
- package/dist/integrations/index.js +60 -0
- package/dist/integrations/index.js.map +1 -0
- package/dist/llm/LLMProvider.d.ts +83 -0
- package/dist/llm/LLMProvider.d.ts.map +1 -0
- package/dist/llm/LLMProvider.js +370 -0
- package/dist/llm/LLMProvider.js.map +1 -0
- package/dist/llm/index.d.ts +5 -0
- package/dist/llm/index.d.ts.map +1 -0
- package/dist/llm/index.js +14 -0
- package/dist/llm/index.js.map +1 -0
- package/dist/payment/PaymentProvider.d.ts +157 -0
- package/dist/payment/PaymentProvider.d.ts.map +1 -0
- package/dist/payment/PaymentProvider.js +525 -0
- package/dist/payment/PaymentProvider.js.map +1 -0
- package/dist/payment/index.d.ts +5 -0
- package/dist/payment/index.d.ts.map +1 -0
- package/dist/payment/index.js +16 -0
- package/dist/payment/index.js.map +1 -0
- package/dist/plugin/PluginManager.d.ts +156 -0
- package/dist/plugin/PluginManager.d.ts.map +1 -0
- package/dist/plugin/PluginManager.js +288 -0
- package/dist/plugin/PluginManager.js.map +1 -0
- package/dist/plugin/index.d.ts +5 -0
- package/dist/plugin/index.d.ts.map +1 -0
- package/dist/plugin/index.js +10 -0
- package/dist/plugin/index.js.map +1 -0
- package/dist/runtime/AgentXRuntime.d.ts +90 -0
- package/dist/runtime/AgentXRuntime.d.ts.map +1 -0
- package/dist/runtime/AgentXRuntime.js +469 -0
- package/dist/runtime/AgentXRuntime.js.map +1 -0
- package/dist/security/SecurityManager.d.ts +245 -0
- package/dist/security/SecurityManager.d.ts.map +1 -0
- package/dist/security/SecurityManager.js +512 -0
- package/dist/security/SecurityManager.js.map +1 -0
- package/dist/security/index.d.ts +5 -0
- package/dist/security/index.d.ts.map +1 -0
- package/dist/security/index.js +14 -0
- package/dist/security/index.js.map +1 -0
- package/dist/tool/ToolRegistry.d.ts +58 -0
- package/dist/tool/ToolRegistry.d.ts.map +1 -0
- package/dist/tool/ToolRegistry.js +173 -0
- package/dist/tool/ToolRegistry.js.map +1 -0
- package/dist/tool/ToolValidator.d.ts +41 -0
- package/dist/tool/ToolValidator.d.ts.map +1 -0
- package/dist/tool/ToolValidator.js +158 -0
- package/dist/tool/ToolValidator.js.map +1 -0
- package/dist/tool/index.d.ts +6 -0
- package/dist/tool/index.d.ts.map +1 -0
- package/dist/tool/index.js +11 -0
- package/dist/tool/index.js.map +1 -0
- package/dist/transport/BaseTransport.d.ts +66 -0
- package/dist/transport/BaseTransport.d.ts.map +1 -0
- package/dist/transport/BaseTransport.js +103 -0
- package/dist/transport/BaseTransport.js.map +1 -0
- package/dist/transport/HttpTransport.d.ts +41 -0
- package/dist/transport/HttpTransport.d.ts.map +1 -0
- package/dist/transport/HttpTransport.js +160 -0
- package/dist/transport/HttpTransport.js.map +1 -0
- package/dist/transport/LocalTransport.d.ts +40 -0
- package/dist/transport/LocalTransport.d.ts.map +1 -0
- package/dist/transport/LocalTransport.js +157 -0
- package/dist/transport/LocalTransport.js.map +1 -0
- package/dist/transport/QueueTransport.d.ts +63 -0
- package/dist/transport/QueueTransport.d.ts.map +1 -0
- package/dist/transport/QueueTransport.js +194 -0
- package/dist/transport/QueueTransport.js.map +1 -0
- package/dist/transport/StdioTransport.d.ts +51 -0
- package/dist/transport/StdioTransport.d.ts.map +1 -0
- package/dist/transport/StdioTransport.js +216 -0
- package/dist/transport/StdioTransport.js.map +1 -0
- package/dist/transport/TransportFactory.d.ts +35 -0
- package/dist/transport/TransportFactory.d.ts.map +1 -0
- package/dist/transport/TransportFactory.js +100 -0
- package/dist/transport/TransportFactory.js.map +1 -0
- package/dist/transport/index.d.ts +10 -0
- package/dist/transport/index.d.ts.map +1 -0
- package/dist/transport/index.js +19 -0
- package/dist/transport/index.js.map +1 -0
- package/dist/types/agent.d.ts +66 -0
- package/dist/types/agent.d.ts.map +1 -0
- package/dist/types/agent.js +3 -0
- package/dist/types/agent.js.map +1 -0
- package/dist/types/config.d.ts +60 -0
- package/dist/types/config.d.ts.map +1 -0
- package/dist/types/config.js +6 -0
- package/dist/types/config.js.map +1 -0
- package/dist/types/credential.d.ts +38 -0
- package/dist/types/credential.d.ts.map +1 -0
- package/dist/types/credential.js +3 -0
- package/dist/types/credential.js.map +1 -0
- package/dist/types/error.d.ts +136 -0
- package/dist/types/error.d.ts.map +1 -0
- package/dist/types/error.js +223 -0
- package/dist/types/error.js.map +1 -0
- package/dist/types/index.d.ts +10 -0
- package/dist/types/index.d.ts.map +1 -0
- package/dist/types/index.js +27 -0
- package/dist/types/index.js.map +1 -0
- package/dist/types/llm.d.ts +43 -0
- package/dist/types/llm.d.ts.map +1 -0
- package/dist/types/llm.js +3 -0
- package/dist/types/llm.js.map +1 -0
- package/dist/types/payment.d.ts +129 -0
- package/dist/types/payment.d.ts.map +1 -0
- package/dist/types/payment.js +6 -0
- package/dist/types/payment.js.map +1 -0
- package/dist/types/runtime.d.ts +31 -0
- package/dist/types/runtime.d.ts.map +1 -0
- package/dist/types/runtime.js +3 -0
- package/dist/types/runtime.js.map +1 -0
- package/dist/types/tool.d.ts +72 -0
- package/dist/types/tool.d.ts.map +1 -0
- package/dist/types/tool.js +3 -0
- package/dist/types/tool.js.map +1 -0
- package/dist/types/transport.d.ts +53 -0
- package/dist/types/transport.d.ts.map +1 -0
- package/dist/types/transport.js +3 -0
- package/dist/types/transport.js.map +1 -0
- package/dist/types/workflow.d.ts +72 -0
- package/dist/types/workflow.d.ts.map +1 -0
- package/dist/types/workflow.js +6 -0
- package/dist/types/workflow.js.map +1 -0
- package/dist/utils/factory.d.ts +14 -0
- package/dist/utils/factory.d.ts.map +1 -0
- package/dist/utils/factory.js +146 -0
- package/dist/utils/factory.js.map +1 -0
- package/dist/workflow/StateManager.d.ts +93 -0
- package/dist/workflow/StateManager.d.ts.map +1 -0
- package/dist/workflow/StateManager.js +223 -0
- package/dist/workflow/StateManager.js.map +1 -0
- package/dist/workflow/WorkflowDefinition.d.ts +49 -0
- package/dist/workflow/WorkflowDefinition.d.ts.map +1 -0
- package/dist/workflow/WorkflowDefinition.js +264 -0
- package/dist/workflow/WorkflowDefinition.js.map +1 -0
- package/dist/workflow/WorkflowExecutor.d.ts +42 -0
- package/dist/workflow/WorkflowExecutor.d.ts.map +1 -0
- package/dist/workflow/WorkflowExecutor.js +372 -0
- package/dist/workflow/WorkflowExecutor.js.map +1 -0
- package/dist/workflow/index.d.ts +7 -0
- package/dist/workflow/index.d.ts.map +1 -0
- package/dist/workflow/index.js +17 -0
- package/dist/workflow/index.js.map +1 -0
- package/package.json +122 -0
|
@@ -0,0 +1,173 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Tool Registry Implementation
|
|
4
|
+
*/
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.ToolRegistry = void 0;
|
|
7
|
+
const events_1 = require("events");
|
|
8
|
+
const error_1 = require("../types/error");
|
|
9
|
+
const ToolValidator_1 = require("./ToolValidator");
|
|
10
|
+
class ToolRegistry extends events_1.EventEmitter {
|
|
11
|
+
tools = new Map();
|
|
12
|
+
validator;
|
|
13
|
+
logger;
|
|
14
|
+
constructor(logger) {
|
|
15
|
+
super();
|
|
16
|
+
this.validator = new ToolValidator_1.ToolValidator();
|
|
17
|
+
this.logger = logger;
|
|
18
|
+
}
|
|
19
|
+
/**
|
|
20
|
+
* Register a new tool
|
|
21
|
+
*/
|
|
22
|
+
async register(spec, transport) {
|
|
23
|
+
// Validate the tool spec
|
|
24
|
+
this.validator.validateToolSpec(spec);
|
|
25
|
+
// Check for duplicate registration
|
|
26
|
+
if (this.tools.has(spec.name)) {
|
|
27
|
+
throw new error_1.ValidationError(`Tool already registered: ${spec.name}`, error_1.ErrorCodes.INVALID_INPUT);
|
|
28
|
+
}
|
|
29
|
+
// Create registered tool entry
|
|
30
|
+
const registeredTool = {
|
|
31
|
+
spec,
|
|
32
|
+
transport,
|
|
33
|
+
registeredAt: new Date(),
|
|
34
|
+
usageCount: 0,
|
|
35
|
+
healthStatus: 'unknown',
|
|
36
|
+
};
|
|
37
|
+
// Check tool health
|
|
38
|
+
try {
|
|
39
|
+
const isHealthy = await transport.healthCheck();
|
|
40
|
+
registeredTool.healthStatus = isHealthy ? 'healthy' : 'unhealthy';
|
|
41
|
+
}
|
|
42
|
+
catch (error) {
|
|
43
|
+
this.logger.warn(`Health check failed for tool: ${spec.name}`, { error });
|
|
44
|
+
registeredTool.healthStatus = 'unhealthy';
|
|
45
|
+
}
|
|
46
|
+
// Store the tool
|
|
47
|
+
this.tools.set(spec.name, registeredTool);
|
|
48
|
+
this.logger.info(`Tool registered: ${spec.name}`, {
|
|
49
|
+
version: spec.version,
|
|
50
|
+
category: spec.metadata?.category,
|
|
51
|
+
healthStatus: registeredTool.healthStatus,
|
|
52
|
+
});
|
|
53
|
+
this.emit('tool:registered', registeredTool);
|
|
54
|
+
}
|
|
55
|
+
/**
|
|
56
|
+
* Unregister a tool
|
|
57
|
+
*/
|
|
58
|
+
async unregister(name) {
|
|
59
|
+
const tool = this.tools.get(name);
|
|
60
|
+
if (!tool) {
|
|
61
|
+
throw new error_1.ValidationError(`Tool not found: ${name}`, error_1.ErrorCodes.INVALID_INPUT);
|
|
62
|
+
}
|
|
63
|
+
// Shutdown the transport
|
|
64
|
+
try {
|
|
65
|
+
await tool.transport.shutdown();
|
|
66
|
+
}
|
|
67
|
+
catch (error) {
|
|
68
|
+
this.logger.warn(`Error shutting down transport for tool: ${name}`, { error });
|
|
69
|
+
}
|
|
70
|
+
// Remove from registry
|
|
71
|
+
this.tools.delete(name);
|
|
72
|
+
this.logger.info(`Tool unregistered: ${name}`);
|
|
73
|
+
this.emit('tool:unregistered', { name });
|
|
74
|
+
}
|
|
75
|
+
/**
|
|
76
|
+
* Get a registered tool by name
|
|
77
|
+
*/
|
|
78
|
+
async get(name) {
|
|
79
|
+
return this.tools.get(name) || null;
|
|
80
|
+
}
|
|
81
|
+
/**
|
|
82
|
+
* List all registered tools
|
|
83
|
+
*/
|
|
84
|
+
async list() {
|
|
85
|
+
return Array.from(this.tools.values());
|
|
86
|
+
}
|
|
87
|
+
/**
|
|
88
|
+
* Search for tools matching a query
|
|
89
|
+
*/
|
|
90
|
+
async search(query) {
|
|
91
|
+
let results = Array.from(this.tools.values());
|
|
92
|
+
// Filter by name (partial match)
|
|
93
|
+
if (query.name) {
|
|
94
|
+
const nameLower = query.name.toLowerCase();
|
|
95
|
+
results = results.filter(tool => tool.spec.name.toLowerCase().includes(nameLower));
|
|
96
|
+
}
|
|
97
|
+
// Filter by version
|
|
98
|
+
if (query.version) {
|
|
99
|
+
results = results.filter(tool => tool.spec.version === query.version);
|
|
100
|
+
}
|
|
101
|
+
// Filter by category
|
|
102
|
+
if (query.category) {
|
|
103
|
+
const categoryLower = query.category.toLowerCase();
|
|
104
|
+
results = results.filter(tool => tool.spec.metadata?.category?.toLowerCase() === categoryLower);
|
|
105
|
+
}
|
|
106
|
+
// Filter by tags (any match)
|
|
107
|
+
if (query.tags && query.tags.length > 0) {
|
|
108
|
+
const queryTags = query.tags.map(t => t.toLowerCase());
|
|
109
|
+
results = results.filter(tool => {
|
|
110
|
+
const toolTags = tool.spec.metadata?.tags?.map(t => t.toLowerCase()) || [];
|
|
111
|
+
return queryTags.some(tag => toolTags.includes(tag));
|
|
112
|
+
});
|
|
113
|
+
}
|
|
114
|
+
return results;
|
|
115
|
+
}
|
|
116
|
+
/**
|
|
117
|
+
* Update tool usage statistics
|
|
118
|
+
*/
|
|
119
|
+
recordUsage(name) {
|
|
120
|
+
const tool = this.tools.get(name);
|
|
121
|
+
if (tool) {
|
|
122
|
+
tool.usageCount++;
|
|
123
|
+
tool.lastUsed = new Date();
|
|
124
|
+
}
|
|
125
|
+
}
|
|
126
|
+
/**
|
|
127
|
+
* Update tool health status
|
|
128
|
+
*/
|
|
129
|
+
async updateHealthStatus(name) {
|
|
130
|
+
const tool = this.tools.get(name);
|
|
131
|
+
if (!tool) {
|
|
132
|
+
return;
|
|
133
|
+
}
|
|
134
|
+
try {
|
|
135
|
+
const isHealthy = await tool.transport.healthCheck();
|
|
136
|
+
tool.healthStatus = isHealthy ? 'healthy' : 'unhealthy';
|
|
137
|
+
}
|
|
138
|
+
catch (error) {
|
|
139
|
+
tool.healthStatus = 'unhealthy';
|
|
140
|
+
this.logger.warn(`Health check failed for tool: ${name}`, { error });
|
|
141
|
+
}
|
|
142
|
+
}
|
|
143
|
+
/**
|
|
144
|
+
* Get tools by health status
|
|
145
|
+
*/
|
|
146
|
+
getByHealthStatus(status) {
|
|
147
|
+
return Array.from(this.tools.values()).filter(tool => tool.healthStatus === status);
|
|
148
|
+
}
|
|
149
|
+
/**
|
|
150
|
+
* Get tool statistics
|
|
151
|
+
*/
|
|
152
|
+
getStatistics() {
|
|
153
|
+
const tools = Array.from(this.tools.values());
|
|
154
|
+
return {
|
|
155
|
+
totalTools: tools.length,
|
|
156
|
+
healthyTools: tools.filter(t => t.healthStatus === 'healthy').length,
|
|
157
|
+
unhealthyTools: tools.filter(t => t.healthStatus === 'unhealthy').length,
|
|
158
|
+
unknownTools: tools.filter(t => t.healthStatus === 'unknown').length,
|
|
159
|
+
totalUsage: tools.reduce((sum, t) => sum + t.usageCount, 0),
|
|
160
|
+
categoryCounts: this.getCategoryCounts(tools),
|
|
161
|
+
};
|
|
162
|
+
}
|
|
163
|
+
getCategoryCounts(tools) {
|
|
164
|
+
const counts = {};
|
|
165
|
+
for (const tool of tools) {
|
|
166
|
+
const category = tool.spec.metadata?.category || 'uncategorized';
|
|
167
|
+
counts[category] = (counts[category] || 0) + 1;
|
|
168
|
+
}
|
|
169
|
+
return counts;
|
|
170
|
+
}
|
|
171
|
+
}
|
|
172
|
+
exports.ToolRegistry = ToolRegistry;
|
|
173
|
+
//# sourceMappingURL=ToolRegistry.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ToolRegistry.js","sourceRoot":"","sources":["../../src/tool/ToolRegistry.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Tool Specification Validator
|
|
3
|
+
*/
|
|
4
|
+
import { ToolSpec, ToolMetadata } from '../types/tool';
|
|
5
|
+
export declare class ToolValidator {
|
|
6
|
+
private ajv;
|
|
7
|
+
constructor();
|
|
8
|
+
/**
|
|
9
|
+
* Validate a complete tool specification
|
|
10
|
+
*/
|
|
11
|
+
validateToolSpec(spec: ToolSpec): void;
|
|
12
|
+
/**
|
|
13
|
+
* Validate tool input against its schema
|
|
14
|
+
*/
|
|
15
|
+
validateToolInput(input: unknown, spec: ToolSpec): void;
|
|
16
|
+
/**
|
|
17
|
+
* Validate tool output against its schema
|
|
18
|
+
*/
|
|
19
|
+
validateToolOutput(output: unknown, spec: ToolSpec): void;
|
|
20
|
+
/**
|
|
21
|
+
* Validate required fields are present
|
|
22
|
+
*/
|
|
23
|
+
private validateRequiredFields;
|
|
24
|
+
/**
|
|
25
|
+
* Validate semantic correctness of fields
|
|
26
|
+
*/
|
|
27
|
+
private validateSemantics;
|
|
28
|
+
/**
|
|
29
|
+
* Validate a JSON Schema
|
|
30
|
+
*/
|
|
31
|
+
private validateJsonSchema;
|
|
32
|
+
/**
|
|
33
|
+
* Validate tool metadata
|
|
34
|
+
*/
|
|
35
|
+
validateMetadata(metadata: ToolMetadata): void;
|
|
36
|
+
/**
|
|
37
|
+
* Create a valid tool spec with defaults
|
|
38
|
+
*/
|
|
39
|
+
static createToolSpec(name: string, version: string, options?: Partial<Omit<ToolSpec, 'name' | 'version'>>): ToolSpec;
|
|
40
|
+
}
|
|
41
|
+
//# sourceMappingURL=ToolValidator.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ToolValidator.d.ts","sourceRoot":"","sources":["../../src/tool/ToolValidator.ts"],"names":[],"mappings":"AAAA;;GAEG;AAIH,OAAO,EAAE,QAAQ,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAGvD,qBAAa,aAAa;IACxB,OAAO,CAAC,GAAG,CAAM;;IAUjB;;OAEG;IACH,gBAAgB,CAAC,IAAI,EAAE,QAAQ,GAAG,IAAI;IAsBtC;;OAEG;IACH,iBAAiB,CAAC,KAAK,EAAE,OAAO,EAAE,IAAI,EAAE,QAAQ,GAAG,IAAI;IAgBvD;;OAEG;IACH,kBAAkB,CAAC,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE,QAAQ,GAAG,IAAI;IAgBzD;;OAEG;IACH,OAAO,CAAC,sBAAsB;IAgB9B;;OAEG;IACH,OAAO,CAAC,iBAAiB;IA0BzB;;OAEG;IACH,OAAO,CAAC,kBAAkB;IAW1B;;OAEG;IACH,gBAAgB,CAAC,QAAQ,EAAE,YAAY,GAAG,IAAI;IA6D9C;;OAEG;IACH,MAAM,CAAC,cAAc,CACnB,IAAI,EAAE,MAAM,EACZ,OAAO,EAAE,MAAM,EACf,OAAO,CAAC,EAAE,OAAO,CAAC,IAAI,CAAC,QAAQ,EAAE,MAAM,GAAG,SAAS,CAAC,CAAC,GACpD,QAAQ;CAUZ"}
|
|
@@ -0,0 +1,158 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Tool Specification Validator
|
|
4
|
+
*/
|
|
5
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
6
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
7
|
+
};
|
|
8
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
9
|
+
exports.ToolValidator = void 0;
|
|
10
|
+
const ajv_1 = __importDefault(require("ajv"));
|
|
11
|
+
const error_1 = require("../types/error");
|
|
12
|
+
class ToolValidator {
|
|
13
|
+
ajv;
|
|
14
|
+
constructor() {
|
|
15
|
+
this.ajv = new ajv_1.default({
|
|
16
|
+
allErrors: true,
|
|
17
|
+
strict: false,
|
|
18
|
+
validateFormats: false,
|
|
19
|
+
});
|
|
20
|
+
}
|
|
21
|
+
/**
|
|
22
|
+
* Validate a complete tool specification
|
|
23
|
+
*/
|
|
24
|
+
validateToolSpec(spec) {
|
|
25
|
+
// Validate required fields
|
|
26
|
+
this.validateRequiredFields(spec);
|
|
27
|
+
// Validate field formats
|
|
28
|
+
this.validateSemantics(spec);
|
|
29
|
+
// Validate schemas if present
|
|
30
|
+
if (spec.inputSchema) {
|
|
31
|
+
this.validateJsonSchema(spec.inputSchema, 'inputSchema');
|
|
32
|
+
}
|
|
33
|
+
if (spec.outputSchema) {
|
|
34
|
+
this.validateJsonSchema(spec.outputSchema, 'outputSchema');
|
|
35
|
+
}
|
|
36
|
+
// Validate metadata if present
|
|
37
|
+
if (spec.metadata) {
|
|
38
|
+
this.validateMetadata(spec.metadata);
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
/**
|
|
42
|
+
* Validate tool input against its schema
|
|
43
|
+
*/
|
|
44
|
+
validateToolInput(input, spec) {
|
|
45
|
+
if (!spec.inputSchema) {
|
|
46
|
+
return; // No schema to validate against
|
|
47
|
+
}
|
|
48
|
+
const validate = this.ajv.compile(spec.inputSchema);
|
|
49
|
+
if (!validate(input)) {
|
|
50
|
+
const errors = this.ajv.errorsText(validate.errors);
|
|
51
|
+
throw new error_1.ValidationError(`Invalid tool input: ${errors}`, error_1.ErrorCodes.INVALID_INPUT);
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
/**
|
|
55
|
+
* Validate tool output against its schema
|
|
56
|
+
*/
|
|
57
|
+
validateToolOutput(output, spec) {
|
|
58
|
+
if (!spec.outputSchema) {
|
|
59
|
+
return; // No schema to validate against
|
|
60
|
+
}
|
|
61
|
+
const validate = this.ajv.compile(spec.outputSchema);
|
|
62
|
+
if (!validate(output)) {
|
|
63
|
+
const errors = this.ajv.errorsText(validate.errors);
|
|
64
|
+
throw new error_1.ValidationError(`Invalid tool output: ${errors}`, error_1.ErrorCodes.INVALID_INPUT);
|
|
65
|
+
}
|
|
66
|
+
}
|
|
67
|
+
/**
|
|
68
|
+
* Validate required fields are present
|
|
69
|
+
*/
|
|
70
|
+
validateRequiredFields(spec) {
|
|
71
|
+
if (!spec.name) {
|
|
72
|
+
throw new error_1.ValidationError('Tool name is required', error_1.ErrorCodes.MISSING_REQUIRED_FIELD);
|
|
73
|
+
}
|
|
74
|
+
if (!spec.version) {
|
|
75
|
+
throw new error_1.ValidationError('Tool version is required', error_1.ErrorCodes.MISSING_REQUIRED_FIELD);
|
|
76
|
+
}
|
|
77
|
+
}
|
|
78
|
+
/**
|
|
79
|
+
* Validate semantic correctness of fields
|
|
80
|
+
*/
|
|
81
|
+
validateSemantics(spec) {
|
|
82
|
+
// Validate name format
|
|
83
|
+
if (!/^[a-zA-Z][a-zA-Z0-9_-]*$/.test(spec.name)) {
|
|
84
|
+
throw new error_1.ValidationError('Tool name must start with a letter and contain only letters, numbers, underscores, and hyphens', error_1.ErrorCodes.INVALID_FORMAT);
|
|
85
|
+
}
|
|
86
|
+
// Validate version format (semantic versioning with optional prerelease)
|
|
87
|
+
if (!/^\d+\.\d+\.\d+(-[a-zA-Z0-9-]+(\.[a-zA-Z0-9-]+)*)?(\+[a-zA-Z0-9-]+(\.[a-zA-Z0-9-]+)*)?$/.test(spec.version)) {
|
|
88
|
+
throw new error_1.ValidationError('Tool version must follow semantic versioning (e.g., 1.0.0)', error_1.ErrorCodes.INVALID_FORMAT);
|
|
89
|
+
}
|
|
90
|
+
// Validate description length if present
|
|
91
|
+
if (spec.description && spec.description.length > 1000) {
|
|
92
|
+
throw new error_1.ValidationError('Tool description must be 1000 characters or less', error_1.ErrorCodes.INVALID_FORMAT);
|
|
93
|
+
}
|
|
94
|
+
}
|
|
95
|
+
/**
|
|
96
|
+
* Validate a JSON Schema
|
|
97
|
+
*/
|
|
98
|
+
validateJsonSchema(schema, fieldName) {
|
|
99
|
+
try {
|
|
100
|
+
this.ajv.compile(schema);
|
|
101
|
+
}
|
|
102
|
+
catch (error) {
|
|
103
|
+
throw new error_1.ValidationError(`Invalid JSON Schema in ${fieldName}: ${error.message}`, error_1.ErrorCodes.INVALID_SCHEMA);
|
|
104
|
+
}
|
|
105
|
+
}
|
|
106
|
+
/**
|
|
107
|
+
* Validate tool metadata
|
|
108
|
+
*/
|
|
109
|
+
validateMetadata(metadata) {
|
|
110
|
+
// Validate category
|
|
111
|
+
if (!metadata.category) {
|
|
112
|
+
throw new error_1.ValidationError('Tool metadata must include a category', error_1.ErrorCodes.MISSING_REQUIRED_FIELD);
|
|
113
|
+
}
|
|
114
|
+
if (!/^[a-z][a-z0-9_-]*$/.test(metadata.category)) {
|
|
115
|
+
throw new error_1.ValidationError('Tool category must be lowercase and start with a letter', error_1.ErrorCodes.INVALID_FORMAT);
|
|
116
|
+
}
|
|
117
|
+
// Validate tags
|
|
118
|
+
if (!metadata.tags || !Array.isArray(metadata.tags)) {
|
|
119
|
+
throw new error_1.ValidationError('Tool metadata must include tags array', error_1.ErrorCodes.MISSING_REQUIRED_FIELD);
|
|
120
|
+
}
|
|
121
|
+
if (metadata.tags.length === 0) {
|
|
122
|
+
throw new error_1.ValidationError('Tool metadata must include at least one tag', error_1.ErrorCodes.INVALID_INPUT);
|
|
123
|
+
}
|
|
124
|
+
for (const tag of metadata.tags) {
|
|
125
|
+
if (!/^[a-z][a-z0-9_-]*$/.test(tag)) {
|
|
126
|
+
throw new error_1.ValidationError(`Invalid tag format: ${tag}. Tags must be lowercase and start with a letter`, error_1.ErrorCodes.INVALID_FORMAT);
|
|
127
|
+
}
|
|
128
|
+
}
|
|
129
|
+
// Validate author if present
|
|
130
|
+
if (metadata.author && metadata.author.length > 100) {
|
|
131
|
+
throw new error_1.ValidationError('Tool author must be 100 characters or less', error_1.ErrorCodes.INVALID_FORMAT);
|
|
132
|
+
}
|
|
133
|
+
// Validate documentation URL if present
|
|
134
|
+
if (metadata.documentation) {
|
|
135
|
+
try {
|
|
136
|
+
new URL(metadata.documentation);
|
|
137
|
+
}
|
|
138
|
+
catch {
|
|
139
|
+
throw new error_1.ValidationError('Tool documentation must be a valid URL', error_1.ErrorCodes.INVALID_FORMAT);
|
|
140
|
+
}
|
|
141
|
+
}
|
|
142
|
+
}
|
|
143
|
+
/**
|
|
144
|
+
* Create a valid tool spec with defaults
|
|
145
|
+
*/
|
|
146
|
+
static createToolSpec(name, version, options) {
|
|
147
|
+
return {
|
|
148
|
+
name,
|
|
149
|
+
version,
|
|
150
|
+
description: options?.description,
|
|
151
|
+
inputSchema: options?.inputSchema,
|
|
152
|
+
outputSchema: options?.outputSchema,
|
|
153
|
+
metadata: options?.metadata,
|
|
154
|
+
};
|
|
155
|
+
}
|
|
156
|
+
}
|
|
157
|
+
exports.ToolValidator = ToolValidator;
|
|
158
|
+
//# sourceMappingURL=ToolValidator.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ToolValidator.js","sourceRoot":"","sources":["../../src/tool/ToolValidator.ts"],"names":[],"mappings":";AAAA;;GAEG;;;;;;AAEH,8CAAsB;AAGtB,0CAA6D;AAE7D,MAAa,aAAa;IAChB,GAAG,CAAM;IAEjB;QACE,IAAI,CAAC,GAAG,GAAG,IAAI,aAAG,CAAC;YACjB,SAAS,EAAE,IAAI;YACf,MAAM,EAAE,KAAK;YACb,eAAe,EAAE,KAAK;SACvB,CAAC,CAAC;IACL,CAAC;IAED;;OAEG;IACH,gBAAgB,CAAC,IAAc;QAC7B,2BAA2B;QAC3B,IAAI,CAAC,sBAAsB,CAAC,IAAI,CAAC,CAAC;QAElC,yBAAyB;QACzB,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,CAAC;QAE7B,8BAA8B;QAC9B,IAAI,IAAI,CAAC,WAAW,EAAE,CAAC;YACrB,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,WAAW,EAAE,aAAa,CAAC,CAAC;QAC3D,CAAC;QAED,IAAI,IAAI,CAAC,YAAY,EAAE,CAAC;YACtB,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,YAAY,EAAE,cAAc,CAAC,CAAC;QAC7D,CAAC;QAED,+BAA+B;QAC/B,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;YAClB,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QACvC,CAAC;IACH,CAAC;IAED;;OAEG;IACH,iBAAiB,CAAC,KAAc,EAAE,IAAc;QAC9C,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC;YACtB,OAAO,CAAC,gCAAgC;QAC1C,CAAC;QAED,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC,WAAqB,CAAC,CAAC;QAE9D,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC;YACrB,MAAM,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,UAAU,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;YACpD,MAAM,IAAI,uBAAe,CACvB,uBAAuB,MAAM,EAAE,EAC/B,kBAAU,CAAC,aAAa,CACzB,CAAC;QACJ,CAAC;IACH,CAAC;IAED;;OAEG;IACH,kBAAkB,CAAC,MAAe,EAAE,IAAc;QAChD,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,CAAC;YACvB,OAAO,CAAC,gCAAgC;QAC1C,CAAC;QAED,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC,YAAsB,CAAC,CAAC;QAE/D,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC;YACtB,MAAM,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,UAAU,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;YACpD,MAAM,IAAI,uBAAe,CACvB,wBAAwB,MAAM,EAAE,EAChC,kBAAU,CAAC,aAAa,CACzB,CAAC;QACJ,CAAC;IACH,CAAC;IAED;;OAEG;IACK,sBAAsB,CAAC,IAAc;QAC3C,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;YACf,MAAM,IAAI,uBAAe,CACvB,uBAAuB,EACvB,kBAAU,CAAC,sBAAsB,CAClC,CAAC;QACJ,CAAC;QAED,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC;YAClB,MAAM,IAAI,uBAAe,CACvB,0BAA0B,EAC1B,kBAAU,CAAC,sBAAsB,CAClC,CAAC;QACJ,CAAC;IACH,CAAC;IAED;;OAEG;IACK,iBAAiB,CAAC,IAAc;QACtC,uBAAuB;QACvB,IAAI,CAAC,0BAA0B,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;YAChD,MAAM,IAAI,uBAAe,CACvB,gGAAgG,EAChG,kBAAU,CAAC,cAAc,CAC1B,CAAC;QACJ,CAAC;QAED,yEAAyE;QACzE,IAAI,CAAC,wFAAwF,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC;YACjH,MAAM,IAAI,uBAAe,CACvB,4DAA4D,EAC5D,kBAAU,CAAC,cAAc,CAC1B,CAAC;QACJ,CAAC;QAED,yCAAyC;QACzC,IAAI,IAAI,CAAC,WAAW,IAAI,IAAI,CAAC,WAAW,CAAC,MAAM,GAAG,IAAI,EAAE,CAAC;YACvD,MAAM,IAAI,uBAAe,CACvB,kDAAkD,EAClD,kBAAU,CAAC,cAAc,CAC1B,CAAC;QACJ,CAAC;IACH,CAAC;IAED;;OAEG;IACK,kBAAkB,CAAC,MAAmB,EAAE,SAAiB;QAC/D,IAAI,CAAC;YACH,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,MAAgB,CAAC,CAAC;QACrC,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,IAAI,uBAAe,CACvB,0BAA0B,SAAS,KAAM,KAAe,CAAC,OAAO,EAAE,EAClE,kBAAU,CAAC,cAAc,CAC1B,CAAC;QACJ,CAAC;IACH,CAAC;IAED;;OAEG;IACH,gBAAgB,CAAC,QAAsB;QACrC,oBAAoB;QACpB,IAAI,CAAC,QAAQ,CAAC,QAAQ,EAAE,CAAC;YACvB,MAAM,IAAI,uBAAe,CACvB,uCAAuC,EACvC,kBAAU,CAAC,sBAAsB,CAClC,CAAC;QACJ,CAAC;QAED,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC;YAClD,MAAM,IAAI,uBAAe,CACvB,yDAAyD,EACzD,kBAAU,CAAC,cAAc,CAC1B,CAAC;QACJ,CAAC;QAED,gBAAgB;QAChB,IAAI,CAAC,QAAQ,CAAC,IAAI,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC;YACpD,MAAM,IAAI,uBAAe,CACvB,uCAAuC,EACvC,kBAAU,CAAC,sBAAsB,CAClC,CAAC;QACJ,CAAC;QAED,IAAI,QAAQ,CAAC,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC/B,MAAM,IAAI,uBAAe,CACvB,6CAA6C,EAC7C,kBAAU,CAAC,aAAa,CACzB,CAAC;QACJ,CAAC;QAED,KAAK,MAAM,GAAG,IAAI,QAAQ,CAAC,IAAI,EAAE,CAAC;YAChC,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC;gBACpC,MAAM,IAAI,uBAAe,CACvB,uBAAuB,GAAG,kDAAkD,EAC5E,kBAAU,CAAC,cAAc,CAC1B,CAAC;YACJ,CAAC;QACH,CAAC;QAED,6BAA6B;QAC7B,IAAI,QAAQ,CAAC,MAAM,IAAI,QAAQ,CAAC,MAAM,CAAC,MAAM,GAAG,GAAG,EAAE,CAAC;YACpD,MAAM,IAAI,uBAAe,CACvB,4CAA4C,EAC5C,kBAAU,CAAC,cAAc,CAC1B,CAAC;QACJ,CAAC;QAED,wCAAwC;QACxC,IAAI,QAAQ,CAAC,aAAa,EAAE,CAAC;YAC3B,IAAI,CAAC;gBACH,IAAI,GAAG,CAAC,QAAQ,CAAC,aAAa,CAAC,CAAC;YAClC,CAAC;YAAC,MAAM,CAAC;gBACP,MAAM,IAAI,uBAAe,CACvB,wCAAwC,EACxC,kBAAU,CAAC,cAAc,CAC1B,CAAC;YACJ,CAAC;QACH,CAAC;IACH,CAAC;IAED;;OAEG;IACH,MAAM,CAAC,cAAc,CACnB,IAAY,EACZ,OAAe,EACf,OAAqD;QAErD,OAAO;YACL,IAAI;YACJ,OAAO;YACP,WAAW,EAAE,OAAO,EAAE,WAAW;YACjC,WAAW,EAAE,OAAO,EAAE,WAAW;YACjC,YAAY,EAAE,OAAO,EAAE,YAAY;YACnC,QAAQ,EAAE,OAAO,EAAE,QAAQ;SAC5B,CAAC;IACJ,CAAC;CACF;AAzND,sCAyNC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/tool/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAChD,OAAO,EAAE,YAAY,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAC"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Tool System Exports
|
|
4
|
+
*/
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.ToolRegistry = exports.ToolValidator = void 0;
|
|
7
|
+
var ToolValidator_1 = require("./ToolValidator");
|
|
8
|
+
Object.defineProperty(exports, "ToolValidator", { enumerable: true, get: function () { return ToolValidator_1.ToolValidator; } });
|
|
9
|
+
var ToolRegistry_1 = require("./ToolRegistry");
|
|
10
|
+
Object.defineProperty(exports, "ToolRegistry", { enumerable: true, get: function () { return ToolRegistry_1.ToolRegistry; } });
|
|
11
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/tool/index.ts"],"names":[],"mappings":";AAAA;;GAEG;;;AAEH,iDAAgD;AAAvC,8GAAA,aAAa,OAAA;AACtB,+CAAiE;AAAxD,4GAAA,YAAY,OAAA"}
|
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Base Transport Implementation
|
|
3
|
+
*/
|
|
4
|
+
import { EventEmitter } from 'events';
|
|
5
|
+
import { Transport, TransportConfig } from '../types/transport';
|
|
6
|
+
import { ToolSpec, ToolContext, ToolResult, Logger } from '../types/tool';
|
|
7
|
+
export declare abstract class BaseTransport extends EventEmitter implements Transport {
|
|
8
|
+
abstract name: string;
|
|
9
|
+
protected config: TransportConfig;
|
|
10
|
+
protected logger: Logger;
|
|
11
|
+
protected isInitialized: boolean;
|
|
12
|
+
protected tools: Map<string, ToolSpec>;
|
|
13
|
+
/**
|
|
14
|
+
* Initialize the transport with configuration
|
|
15
|
+
*/
|
|
16
|
+
initialize(config: TransportConfig): Promise<void>;
|
|
17
|
+
/**
|
|
18
|
+
* Set the logger for this transport
|
|
19
|
+
*/
|
|
20
|
+
setLogger(logger: Logger): void;
|
|
21
|
+
/**
|
|
22
|
+
* Execute a tool through this transport
|
|
23
|
+
*/
|
|
24
|
+
abstract execute(tool: string, input: unknown, context: ToolContext): Promise<ToolResult>;
|
|
25
|
+
/**
|
|
26
|
+
* List all tools available through this transport
|
|
27
|
+
*/
|
|
28
|
+
listTools(): Promise<ToolSpec[]>;
|
|
29
|
+
/**
|
|
30
|
+
* Check if the transport is healthy
|
|
31
|
+
*/
|
|
32
|
+
abstract healthCheck(): Promise<boolean>;
|
|
33
|
+
/**
|
|
34
|
+
* Shutdown the transport
|
|
35
|
+
*/
|
|
36
|
+
shutdown(): Promise<void>;
|
|
37
|
+
/**
|
|
38
|
+
* Ensure the transport is initialized
|
|
39
|
+
*/
|
|
40
|
+
protected ensureInitialized(): void;
|
|
41
|
+
/**
|
|
42
|
+
* Register a tool with this transport
|
|
43
|
+
*/
|
|
44
|
+
registerTool(spec: ToolSpec): void;
|
|
45
|
+
/**
|
|
46
|
+
* Unregister a tool from this transport
|
|
47
|
+
*/
|
|
48
|
+
unregisterTool(name: string): void;
|
|
49
|
+
/**
|
|
50
|
+
* Get a tool by name
|
|
51
|
+
*/
|
|
52
|
+
getTool(name: string): ToolSpec | undefined;
|
|
53
|
+
/**
|
|
54
|
+
* Create a successful result
|
|
55
|
+
*/
|
|
56
|
+
protected createSuccessResult(data: unknown, metadata?: Record<string, unknown>): ToolResult;
|
|
57
|
+
/**
|
|
58
|
+
* Create an error result
|
|
59
|
+
*/
|
|
60
|
+
protected createErrorResult(error: string, metadata?: Record<string, unknown>): ToolResult;
|
|
61
|
+
/**
|
|
62
|
+
* Log execution details
|
|
63
|
+
*/
|
|
64
|
+
protected logExecution(tool: string, context: ToolContext, result: ToolResult): void;
|
|
65
|
+
}
|
|
66
|
+
//# sourceMappingURL=BaseTransport.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"BaseTransport.d.ts","sourceRoot":"","sources":["../../src/transport/BaseTransport.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,YAAY,EAAE,MAAM,QAAQ,CAAC;AACtC,OAAO,EAAE,SAAS,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AAChE,OAAO,EAAE,QAAQ,EAAE,WAAW,EAAE,UAAU,EAAE,MAAM,EAAE,MAAM,eAAe,CAAC;AAG1E,8BAAsB,aAAc,SAAQ,YAAa,YAAW,SAAS;IAC3E,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,SAAS,CAAC,MAAM,EAAG,eAAe,CAAC;IACnC,SAAS,CAAC,MAAM,EAAG,MAAM,CAAC;IAC1B,SAAS,CAAC,aAAa,EAAE,OAAO,CAAS;IACzC,SAAS,CAAC,KAAK,EAAE,GAAG,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAa;IAEnD;;OAEG;IACG,UAAU,CAAC,MAAM,EAAE,eAAe,GAAG,OAAO,CAAC,IAAI,CAAC;IAMxD;;OAEG;IACH,SAAS,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI;IAI/B;;OAEG;IACH,QAAQ,CAAC,OAAO,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,OAAO,EAAE,WAAW,GAAG,OAAO,CAAC,UAAU,CAAC;IAEzF;;OAEG;IACG,SAAS,IAAI,OAAO,CAAC,QAAQ,EAAE,CAAC;IAItC;;OAEG;IACH,QAAQ,CAAC,WAAW,IAAI,OAAO,CAAC,OAAO,CAAC;IAExC;;OAEG;IACG,QAAQ,IAAI,OAAO,CAAC,IAAI,CAAC;IAM/B;;OAEG;IACH,SAAS,CAAC,iBAAiB,IAAI,IAAI;IASnC;;OAEG;IACH,YAAY,CAAC,IAAI,EAAE,QAAQ,GAAG,IAAI;IAIlC;;OAEG;IACH,cAAc,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI;IAIlC;;OAEG;IACH,OAAO,CAAC,IAAI,EAAE,MAAM,GAAG,QAAQ,GAAG,SAAS;IAI3C;;OAEG;IACH,SAAS,CAAC,mBAAmB,CAAC,IAAI,EAAE,OAAO,EAAE,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,UAAU;IAQ5F;;OAEG;IACH,SAAS,CAAC,iBAAiB,CAAC,KAAK,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,UAAU;IAQ1F;;OAEG;IACH,SAAS,CAAC,YAAY,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,WAAW,EAAE,MAAM,EAAE,UAAU,GAAG,IAAI;CAUrF"}
|
|
@@ -0,0 +1,103 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Base Transport Implementation
|
|
4
|
+
*/
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.BaseTransport = void 0;
|
|
7
|
+
const events_1 = require("events");
|
|
8
|
+
const error_1 = require("../types/error");
|
|
9
|
+
class BaseTransport extends events_1.EventEmitter {
|
|
10
|
+
config;
|
|
11
|
+
logger;
|
|
12
|
+
isInitialized = false;
|
|
13
|
+
tools = new Map();
|
|
14
|
+
/**
|
|
15
|
+
* Initialize the transport with configuration
|
|
16
|
+
*/
|
|
17
|
+
async initialize(config) {
|
|
18
|
+
this.config = config;
|
|
19
|
+
this.isInitialized = true;
|
|
20
|
+
this.emit('initialized');
|
|
21
|
+
}
|
|
22
|
+
/**
|
|
23
|
+
* Set the logger for this transport
|
|
24
|
+
*/
|
|
25
|
+
setLogger(logger) {
|
|
26
|
+
this.logger = logger;
|
|
27
|
+
}
|
|
28
|
+
/**
|
|
29
|
+
* List all tools available through this transport
|
|
30
|
+
*/
|
|
31
|
+
async listTools() {
|
|
32
|
+
return Array.from(this.tools.values());
|
|
33
|
+
}
|
|
34
|
+
/**
|
|
35
|
+
* Shutdown the transport
|
|
36
|
+
*/
|
|
37
|
+
async shutdown() {
|
|
38
|
+
this.isInitialized = false;
|
|
39
|
+
this.tools.clear();
|
|
40
|
+
this.emit('shutdown');
|
|
41
|
+
}
|
|
42
|
+
/**
|
|
43
|
+
* Ensure the transport is initialized
|
|
44
|
+
*/
|
|
45
|
+
ensureInitialized() {
|
|
46
|
+
if (!this.isInitialized) {
|
|
47
|
+
throw new error_1.TransportError('Transport is not initialized', error_1.ErrorCodes.CONNECTION_FAILED);
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
/**
|
|
51
|
+
* Register a tool with this transport
|
|
52
|
+
*/
|
|
53
|
+
registerTool(spec) {
|
|
54
|
+
this.tools.set(spec.name, spec);
|
|
55
|
+
}
|
|
56
|
+
/**
|
|
57
|
+
* Unregister a tool from this transport
|
|
58
|
+
*/
|
|
59
|
+
unregisterTool(name) {
|
|
60
|
+
this.tools.delete(name);
|
|
61
|
+
}
|
|
62
|
+
/**
|
|
63
|
+
* Get a tool by name
|
|
64
|
+
*/
|
|
65
|
+
getTool(name) {
|
|
66
|
+
return this.tools.get(name);
|
|
67
|
+
}
|
|
68
|
+
/**
|
|
69
|
+
* Create a successful result
|
|
70
|
+
*/
|
|
71
|
+
createSuccessResult(data, metadata) {
|
|
72
|
+
return {
|
|
73
|
+
success: true,
|
|
74
|
+
data,
|
|
75
|
+
metadata,
|
|
76
|
+
};
|
|
77
|
+
}
|
|
78
|
+
/**
|
|
79
|
+
* Create an error result
|
|
80
|
+
*/
|
|
81
|
+
createErrorResult(error, metadata) {
|
|
82
|
+
return {
|
|
83
|
+
success: false,
|
|
84
|
+
error,
|
|
85
|
+
metadata,
|
|
86
|
+
};
|
|
87
|
+
}
|
|
88
|
+
/**
|
|
89
|
+
* Log execution details
|
|
90
|
+
*/
|
|
91
|
+
logExecution(tool, context, result) {
|
|
92
|
+
if (this.logger) {
|
|
93
|
+
this.logger.debug(`Tool execution: ${tool}`, {
|
|
94
|
+
executionId: context.executionId,
|
|
95
|
+
workflowId: context.workflowId,
|
|
96
|
+
stepId: context.stepId,
|
|
97
|
+
success: result.success,
|
|
98
|
+
});
|
|
99
|
+
}
|
|
100
|
+
}
|
|
101
|
+
}
|
|
102
|
+
exports.BaseTransport = BaseTransport;
|
|
103
|
+
//# sourceMappingURL=BaseTransport.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"BaseTransport.js","sourceRoot":"","sources":["../../src/transport/BaseTransport.ts"],"names":[],"mappings":";AAAA;;GAEG;;;AAEH,mCAAsC;AAGtC,0CAA4D;AAE5D,MAAsB,aAAc,SAAQ,qBAAY;IAE5C,MAAM,CAAmB;IACzB,MAAM,CAAU;IAChB,aAAa,GAAY,KAAK,CAAC;IAC/B,KAAK,GAA0B,IAAI,GAAG,EAAE,CAAC;IAEnD;;OAEG;IACH,KAAK,CAAC,UAAU,CAAC,MAAuB;QACtC,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QACrB,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC;QAC1B,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;IAC3B,CAAC;IAED;;OAEG;IACH,SAAS,CAAC,MAAc;QACtB,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;IACvB,CAAC;IAOD;;OAEG;IACH,KAAK,CAAC,SAAS;QACb,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC,CAAC;IACzC,CAAC;IAOD;;OAEG;IACH,KAAK,CAAC,QAAQ;QACZ,IAAI,CAAC,aAAa,GAAG,KAAK,CAAC;QAC3B,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC;QACnB,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;IACxB,CAAC;IAED;;OAEG;IACO,iBAAiB;QACzB,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE,CAAC;YACxB,MAAM,IAAI,sBAAc,CACtB,8BAA8B,EAC9B,kBAAU,CAAC,iBAAiB,CAC7B,CAAC;QACJ,CAAC;IACH,CAAC;IAED;;OAEG;IACH,YAAY,CAAC,IAAc;QACzB,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;IAClC,CAAC;IAED;;OAEG;IACH,cAAc,CAAC,IAAY;QACzB,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;IAC1B,CAAC;IAED;;OAEG;IACH,OAAO,CAAC,IAAY;QAClB,OAAO,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;IAC9B,CAAC;IAED;;OAEG;IACO,mBAAmB,CAAC,IAAa,EAAE,QAAkC;QAC7E,OAAO;YACL,OAAO,EAAE,IAAI;YACb,IAAI;YACJ,QAAQ;SACT,CAAC;IACJ,CAAC;IAED;;OAEG;IACO,iBAAiB,CAAC,KAAa,EAAE,QAAkC;QAC3E,OAAO;YACL,OAAO,EAAE,KAAK;YACd,KAAK;YACL,QAAQ;SACT,CAAC;IACJ,CAAC;IAED;;OAEG;IACO,YAAY,CAAC,IAAY,EAAE,OAAoB,EAAE,MAAkB;QAC3E,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC;YAChB,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,mBAAmB,IAAI,EAAE,EAAE;gBAC3C,WAAW,EAAE,OAAO,CAAC,WAAW;gBAChC,UAAU,EAAE,OAAO,CAAC,UAAU;gBAC9B,MAAM,EAAE,OAAO,CAAC,MAAM;gBACtB,OAAO,EAAE,MAAM,CAAC,OAAO;aACxB,CAAC,CAAC;QACL,CAAC;IACH,CAAC;CACF;AArHD,sCAqHC"}
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* HTTP Transport Implementation
|
|
3
|
+
* Executes tools via REST API calls
|
|
4
|
+
*/
|
|
5
|
+
import { BaseTransport } from './BaseTransport';
|
|
6
|
+
import { HttpTransportConfig, AuthConfig } from '../types/transport';
|
|
7
|
+
import { ToolSpec, ToolContext, ToolResult } from '../types/tool';
|
|
8
|
+
export declare class HttpTransport extends BaseTransport {
|
|
9
|
+
name: string;
|
|
10
|
+
private client;
|
|
11
|
+
private httpConfig;
|
|
12
|
+
/**
|
|
13
|
+
* Initialize the HTTP transport
|
|
14
|
+
*/
|
|
15
|
+
initialize(config: HttpTransportConfig): Promise<void>;
|
|
16
|
+
/**
|
|
17
|
+
* Build headers based on authentication config
|
|
18
|
+
*/
|
|
19
|
+
private buildHeaders;
|
|
20
|
+
/**
|
|
21
|
+
* Setup retry interceptor
|
|
22
|
+
*/
|
|
23
|
+
private setupRetryInterceptor;
|
|
24
|
+
/**
|
|
25
|
+
* Execute a tool via HTTP
|
|
26
|
+
*/
|
|
27
|
+
execute(tool: string, input: unknown, context: ToolContext): Promise<ToolResult>;
|
|
28
|
+
/**
|
|
29
|
+
* List tools from the remote server
|
|
30
|
+
*/
|
|
31
|
+
listTools(): Promise<ToolSpec[]>;
|
|
32
|
+
/**
|
|
33
|
+
* Health check for HTTP transport
|
|
34
|
+
*/
|
|
35
|
+
healthCheck(): Promise<boolean>;
|
|
36
|
+
/**
|
|
37
|
+
* Update authentication
|
|
38
|
+
*/
|
|
39
|
+
updateAuthentication(auth: AuthConfig): void;
|
|
40
|
+
}
|
|
41
|
+
//# sourceMappingURL=HttpTransport.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"HttpTransport.d.ts","sourceRoot":"","sources":["../../src/transport/HttpTransport.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAGH,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAChD,OAAO,EAAE,mBAAmB,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AACrE,OAAO,EAAE,QAAQ,EAAE,WAAW,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAGlE,qBAAa,aAAc,SAAQ,aAAa;IAC9C,IAAI,SAAU;IACd,OAAO,CAAC,MAAM,CAAiB;IAC/B,OAAO,CAAC,UAAU,CAAuB;IAEzC;;OAEG;IACG,UAAU,CAAC,MAAM,EAAE,mBAAmB,GAAG,OAAO,CAAC,IAAI,CAAC;IAe5D;;OAEG;IACH,OAAO,CAAC,YAAY;IA2BpB;;OAEG;IACH,OAAO,CAAC,qBAAqB;IA8B7B;;OAEG;IACG,OAAO,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,OAAO,EAAE,WAAW,GAAG,OAAO,CAAC,UAAU,CAAC;IA8CtF;;OAEG;IACG,SAAS,IAAI,OAAO,CAAC,QAAQ,EAAE,CAAC;IActC;;OAEG;IACG,WAAW,IAAI,OAAO,CAAC,OAAO,CAAC;IAarC;;OAEG;IACH,oBAAoB,CAAC,IAAI,EAAE,UAAU,GAAG,IAAI;CAM7C"}
|