langmart-gateway-type3 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/.env.example +29 -0
- package/README.md +480 -0
- package/dist/bash-tools.d.ts +56 -0
- package/dist/bash-tools.d.ts.map +1 -0
- package/dist/bash-tools.js +188 -0
- package/dist/bash-tools.js.map +1 -0
- package/dist/core-tools.d.ts +94 -0
- package/dist/core-tools.d.ts.map +1 -0
- package/dist/core-tools.js +694 -0
- package/dist/core-tools.js.map +1 -0
- package/dist/debug-utils.d.ts +22 -0
- package/dist/debug-utils.d.ts.map +1 -0
- package/dist/debug-utils.js +37 -0
- package/dist/debug-utils.js.map +1 -0
- package/dist/devops-tools.d.ts +147 -0
- package/dist/devops-tools.d.ts.map +1 -0
- package/dist/devops-tools.js +718 -0
- package/dist/devops-tools.js.map +1 -0
- package/dist/gateway-config.d.ts +56 -0
- package/dist/gateway-config.d.ts.map +1 -0
- package/dist/gateway-config.js +198 -0
- package/dist/gateway-config.js.map +1 -0
- package/dist/gateway-mode.d.ts +58 -0
- package/dist/gateway-mode.d.ts.map +1 -0
- package/dist/gateway-mode.js +240 -0
- package/dist/gateway-mode.js.map +1 -0
- package/dist/gateway-server.d.ts +208 -0
- package/dist/gateway-server.d.ts.map +1 -0
- package/dist/gateway-server.js +1811 -0
- package/dist/gateway-server.js.map +1 -0
- package/dist/headless-session.d.ts +192 -0
- package/dist/headless-session.d.ts.map +1 -0
- package/dist/headless-session.js +584 -0
- package/dist/headless-session.js.map +1 -0
- package/dist/index-server.d.ts +4 -0
- package/dist/index-server.d.ts.map +1 -0
- package/dist/index-server.js +129 -0
- package/dist/index-server.js.map +1 -0
- package/dist/index.d.ts +6 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +101 -0
- package/dist/index.js.map +1 -0
- package/dist/key-vault.d.ts +102 -0
- package/dist/key-vault.d.ts.map +1 -0
- package/dist/key-vault.js +365 -0
- package/dist/key-vault.js.map +1 -0
- package/dist/local-vault.d.ts +195 -0
- package/dist/local-vault.d.ts.map +1 -0
- package/dist/local-vault.js +571 -0
- package/dist/local-vault.js.map +1 -0
- package/dist/marketplace-tools.d.ts +104 -0
- package/dist/marketplace-tools.d.ts.map +1 -0
- package/dist/marketplace-tools.js +2846 -0
- package/dist/marketplace-tools.js.map +1 -0
- package/dist/mcp-manager.d.ts +114 -0
- package/dist/mcp-manager.d.ts.map +1 -0
- package/dist/mcp-manager.js +338 -0
- package/dist/mcp-manager.js.map +1 -0
- package/dist/web-tools.d.ts +86 -0
- package/dist/web-tools.d.ts.map +1 -0
- package/dist/web-tools.js +431 -0
- package/dist/web-tools.js.map +1 -0
- package/dist/websocket-handler.d.ts +131 -0
- package/dist/websocket-handler.d.ts.map +1 -0
- package/dist/websocket-handler.js +596 -0
- package/dist/websocket-handler.js.map +1 -0
- package/dist/welcome-pages.d.ts +6 -0
- package/dist/welcome-pages.d.ts.map +1 -0
- package/dist/welcome-pages.js +200 -0
- package/dist/welcome-pages.js.map +1 -0
- package/package.json +168 -0
- package/scripts/install-remote.sh +282 -0
- package/scripts/start.sh +85 -0
- package/scripts/status.sh +79 -0
- package/scripts/stop.sh +67 -0
|
@@ -0,0 +1,208 @@
|
|
|
1
|
+
import { EventEmitter } from 'events';
|
|
2
|
+
import { GatewayMode } from './gateway-mode';
|
|
3
|
+
/**
|
|
4
|
+
* Type 3 Gateway Server
|
|
5
|
+
* Seller-managed gateway deployed on seller's infrastructure
|
|
6
|
+
*
|
|
7
|
+
* Key Differences from Type 2:
|
|
8
|
+
* - Uses local vault for provider credentials (NOT central database)
|
|
9
|
+
* - Seller manages their own API keys
|
|
10
|
+
* - More privacy and control for sellers
|
|
11
|
+
*
|
|
12
|
+
* Similarities to Type 2:
|
|
13
|
+
* - Same WebSocket communication protocol with Type 1
|
|
14
|
+
* - Same request/response format
|
|
15
|
+
* - Same registration and heartbeat mechanisms
|
|
16
|
+
*/
|
|
17
|
+
export declare class Type3GatewayServer extends EventEmitter {
|
|
18
|
+
private wss;
|
|
19
|
+
private marketplaceWs;
|
|
20
|
+
private nodeId;
|
|
21
|
+
private instanceId;
|
|
22
|
+
private vault;
|
|
23
|
+
private activeRequests;
|
|
24
|
+
private healthCheckInterval;
|
|
25
|
+
private currentVersion;
|
|
26
|
+
private port;
|
|
27
|
+
private marketplaceUrl;
|
|
28
|
+
private marketplaceApiUrl;
|
|
29
|
+
private managementApp;
|
|
30
|
+
private managementServer;
|
|
31
|
+
private metrics;
|
|
32
|
+
private apiKey;
|
|
33
|
+
private isAuthenticated;
|
|
34
|
+
private currentUser;
|
|
35
|
+
private reconnectInterval;
|
|
36
|
+
private reconnectAttempts;
|
|
37
|
+
private maxReconnectAttempts;
|
|
38
|
+
private reconnectDelay;
|
|
39
|
+
private isShuttingDown;
|
|
40
|
+
private headlessSessionManager;
|
|
41
|
+
private readonly gatewayMode;
|
|
42
|
+
private readonly enableRemoteLLMSession;
|
|
43
|
+
private readonly enableLLMRouting;
|
|
44
|
+
constructor(config: {
|
|
45
|
+
port: number;
|
|
46
|
+
marketplaceUrl?: string;
|
|
47
|
+
instanceId?: string;
|
|
48
|
+
apiKey?: string;
|
|
49
|
+
vaultPath?: string;
|
|
50
|
+
vaultPassword?: string;
|
|
51
|
+
configPath?: string;
|
|
52
|
+
mode?: GatewayMode;
|
|
53
|
+
enableRemoteLLMSession?: boolean;
|
|
54
|
+
enableLLMRouting?: boolean;
|
|
55
|
+
});
|
|
56
|
+
/**
|
|
57
|
+
* Start the Type 3 gateway server
|
|
58
|
+
*/
|
|
59
|
+
start(): Promise<void>;
|
|
60
|
+
/**
|
|
61
|
+
* Initialize the headless session manager for remote DevOps automation
|
|
62
|
+
*/
|
|
63
|
+
private initializeHeadlessSessionManager;
|
|
64
|
+
/**
|
|
65
|
+
* Setup management REST API endpoints for CLI
|
|
66
|
+
*/
|
|
67
|
+
private setupManagementEndpoints;
|
|
68
|
+
/**
|
|
69
|
+
* Start management REST API server
|
|
70
|
+
*/
|
|
71
|
+
private startManagementServer;
|
|
72
|
+
/**
|
|
73
|
+
* Format uptime in human-readable format
|
|
74
|
+
*/
|
|
75
|
+
private formatUptime;
|
|
76
|
+
/**
|
|
77
|
+
* Connect to marketplace control plane
|
|
78
|
+
*/
|
|
79
|
+
private connectToMarketplace;
|
|
80
|
+
/**
|
|
81
|
+
* Load API credentials from local vault
|
|
82
|
+
* KEY DIFFERENCE from Type 2: Reads from local vault instead of receiving from Type 1
|
|
83
|
+
*/
|
|
84
|
+
private loadCredentials;
|
|
85
|
+
/**
|
|
86
|
+
* Initialize vault from environment variables using connection_id from database
|
|
87
|
+
*/
|
|
88
|
+
private initializeVaultFromEnvironment;
|
|
89
|
+
/**
|
|
90
|
+
* Register gateway with marketplace
|
|
91
|
+
* Includes tool discovery for remote DevOps sessions (if enabled)
|
|
92
|
+
*/
|
|
93
|
+
private registerGateway;
|
|
94
|
+
/**
|
|
95
|
+
* Handle messages from marketplace control plane
|
|
96
|
+
*/
|
|
97
|
+
private handleMarketplaceMessage;
|
|
98
|
+
/**
|
|
99
|
+
* Handle inference request forwarded from Gateway Type 1
|
|
100
|
+
*/
|
|
101
|
+
private handleForwardedInferenceRequest;
|
|
102
|
+
/**
|
|
103
|
+
* Forward request to provider API (non-streaming)
|
|
104
|
+
*/
|
|
105
|
+
private forwardToProvider;
|
|
106
|
+
/**
|
|
107
|
+
* Forward streaming request to provider
|
|
108
|
+
*/
|
|
109
|
+
private forwardToProviderStreaming;
|
|
110
|
+
/**
|
|
111
|
+
* Get provider-specific headers
|
|
112
|
+
*/
|
|
113
|
+
private getProviderHeaders;
|
|
114
|
+
/**
|
|
115
|
+
* Generic HTTP request forwarder
|
|
116
|
+
* Type 3 is ONLY a forwarder - it makes HTTP calls and returns RAW responses
|
|
117
|
+
* Type 1 does all business logic, translation, and storage
|
|
118
|
+
*
|
|
119
|
+
* Message format:
|
|
120
|
+
* {
|
|
121
|
+
* event: 'http_request',
|
|
122
|
+
* requestId: 'uuid',
|
|
123
|
+
* connection_id: 'uuid',
|
|
124
|
+
* method: 'GET' | 'POST' | etc,
|
|
125
|
+
* url: 'http://localhost:11434/api/tags',
|
|
126
|
+
* headers: { ... },
|
|
127
|
+
* body: { ... } (optional)
|
|
128
|
+
* }
|
|
129
|
+
*/
|
|
130
|
+
private handleHttpRequest;
|
|
131
|
+
/**
|
|
132
|
+
* Send health status to marketplace
|
|
133
|
+
*/
|
|
134
|
+
private sendHealthStatus;
|
|
135
|
+
/**
|
|
136
|
+
* Determine health status
|
|
137
|
+
*/
|
|
138
|
+
private determineHealthStatus;
|
|
139
|
+
/**
|
|
140
|
+
* Report rate limits
|
|
141
|
+
*/
|
|
142
|
+
private reportRateLimits;
|
|
143
|
+
/**
|
|
144
|
+
* Start health monitoring
|
|
145
|
+
*/
|
|
146
|
+
private startHealthMonitoring;
|
|
147
|
+
/**
|
|
148
|
+
* Handle marketplace disconnection
|
|
149
|
+
*/
|
|
150
|
+
private handleMarketplaceDisconnection;
|
|
151
|
+
/**
|
|
152
|
+
* Get CPU usage
|
|
153
|
+
*/
|
|
154
|
+
private getCpuUsage;
|
|
155
|
+
/**
|
|
156
|
+
* Get test URL for provider
|
|
157
|
+
* Uses /v1/models endpoint for OpenAI-compatible providers
|
|
158
|
+
*/
|
|
159
|
+
private getTestUrl;
|
|
160
|
+
/**
|
|
161
|
+
* Handle session start request from Type 1
|
|
162
|
+
*/
|
|
163
|
+
private handleSessionStart;
|
|
164
|
+
/**
|
|
165
|
+
* Handle session message from Type 1
|
|
166
|
+
*/
|
|
167
|
+
private handleSessionMessage;
|
|
168
|
+
/**
|
|
169
|
+
* Internal method to process session messages with streaming
|
|
170
|
+
* @param modelId - Optional model ID to use for this specific message (overrides session default)
|
|
171
|
+
*/
|
|
172
|
+
private processSessionMessageInternal;
|
|
173
|
+
/**
|
|
174
|
+
* Handle session cancel request from Type 1
|
|
175
|
+
*/
|
|
176
|
+
private handleSessionCancel;
|
|
177
|
+
/**
|
|
178
|
+
* Handle tool discovery request from Type 1
|
|
179
|
+
*/
|
|
180
|
+
private handleGetTools;
|
|
181
|
+
/**
|
|
182
|
+
* Send session error to Type 1
|
|
183
|
+
*/
|
|
184
|
+
private sendSessionError;
|
|
185
|
+
/**
|
|
186
|
+
* Send inference error response to Type 1
|
|
187
|
+
*/
|
|
188
|
+
private sendErrorResponse;
|
|
189
|
+
/**
|
|
190
|
+
* Handle execute_script request from Type 1
|
|
191
|
+
* Executes a remote server script via SSH
|
|
192
|
+
*
|
|
193
|
+
* SECURITY: This handler includes fixes for:
|
|
194
|
+
* - #1: No hardcoded encryption key fallback
|
|
195
|
+
* - #2/#3: Parameter name/value validation and shell escaping
|
|
196
|
+
* - #4: Working directory path validation
|
|
197
|
+
*/
|
|
198
|
+
private handleExecuteScript;
|
|
199
|
+
/**
|
|
200
|
+
* Send script execution error to Type 1
|
|
201
|
+
*/
|
|
202
|
+
private sendScriptError;
|
|
203
|
+
/**
|
|
204
|
+
* Graceful shutdown
|
|
205
|
+
*/
|
|
206
|
+
gracefulShutdown(): Promise<void>;
|
|
207
|
+
}
|
|
208
|
+
//# sourceMappingURL=gateway-server.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"gateway-server.d.ts","sourceRoot":"","sources":["../gateway-server.ts"],"names":[],"mappings":"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"}
|