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,584 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Headless Session Manager for Gateway Type 3
|
|
4
|
+
* Manages multi-turn inference sessions without UI for remote DevOps automation
|
|
5
|
+
*
|
|
6
|
+
* Purpose:
|
|
7
|
+
* - Enable Type 1 web chat/API to remotely execute inference sessions on Type 3
|
|
8
|
+
* - Execute MCP tools (bash, file operations) for DevOps tasks
|
|
9
|
+
* - Support streaming responses back to Type 1
|
|
10
|
+
* - Manage session state and conversation history
|
|
11
|
+
*/
|
|
12
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
13
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
14
|
+
};
|
|
15
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
16
|
+
exports.HeadlessSessionManager = void 0;
|
|
17
|
+
const uuid_1 = require("uuid");
|
|
18
|
+
const axios_1 = __importDefault(require("axios"));
|
|
19
|
+
const events_1 = require("events");
|
|
20
|
+
const core_tools_1 = require("./core-tools");
|
|
21
|
+
const web_tools_1 = require("./web-tools");
|
|
22
|
+
const devops_tools_1 = require("./devops-tools");
|
|
23
|
+
const debug_utils_1 = require("./debug-utils");
|
|
24
|
+
// ============= HEADLESS SESSION MANAGER =============
|
|
25
|
+
class HeadlessSessionManager extends events_1.EventEmitter {
|
|
26
|
+
constructor(config) {
|
|
27
|
+
super();
|
|
28
|
+
this.sessions = new Map();
|
|
29
|
+
// Default configuration
|
|
30
|
+
this.DEFAULT_MAX_TURNS = 50;
|
|
31
|
+
this.DEFAULT_TIMEOUT = 30 * 60 * 1000; // 30 minutes
|
|
32
|
+
this.MAX_TOOL_OUTPUT_LENGTH = 10000;
|
|
33
|
+
this.gatewayId = config.gatewayId;
|
|
34
|
+
this.vault = config.vault;
|
|
35
|
+
this.marketplaceUrl = config.marketplaceUrl.replace('ws://', 'http://').replace('wss://', 'https://');
|
|
36
|
+
this.apiKey = config.apiKey;
|
|
37
|
+
// Initialize tool managers
|
|
38
|
+
this.coreTools = core_tools_1.CoreTools.getInstance();
|
|
39
|
+
this.webTools = web_tools_1.WebTools.getInstance();
|
|
40
|
+
this.devOpsTools = devops_tools_1.DevOpsTools.getInstance(this.marketplaceUrl, this.apiKey);
|
|
41
|
+
}
|
|
42
|
+
/**
|
|
43
|
+
* Get all available tools (for tool discovery)
|
|
44
|
+
*/
|
|
45
|
+
getAvailableTools() {
|
|
46
|
+
const coreToolDefs = this.coreTools.getTools().map(tool => ({
|
|
47
|
+
type: 'function',
|
|
48
|
+
function: {
|
|
49
|
+
name: tool.name,
|
|
50
|
+
description: tool.description,
|
|
51
|
+
parameters: tool.inputSchema
|
|
52
|
+
}
|
|
53
|
+
}));
|
|
54
|
+
const webToolDefs = this.webTools.getTools().map(tool => ({
|
|
55
|
+
type: 'function',
|
|
56
|
+
function: {
|
|
57
|
+
name: tool.name,
|
|
58
|
+
description: tool.description,
|
|
59
|
+
parameters: tool.inputSchema
|
|
60
|
+
}
|
|
61
|
+
}));
|
|
62
|
+
// DevOps tools are already in the correct format from devops-tools.ts
|
|
63
|
+
const devOpsToolDefs = this.devOpsTools.getTools();
|
|
64
|
+
return [...coreToolDefs, ...webToolDefs, ...devOpsToolDefs];
|
|
65
|
+
}
|
|
66
|
+
/**
|
|
67
|
+
* Start a new headless session
|
|
68
|
+
*/
|
|
69
|
+
async startSession(config) {
|
|
70
|
+
const sessionId = config.sessionId || (0, uuid_1.v4)();
|
|
71
|
+
console.log(`[HeadlessSession] Starting session ${sessionId} for user ${config.userId}`);
|
|
72
|
+
// Build system prompt
|
|
73
|
+
const systemPrompt = config.systemPrompt || this.buildDefaultSystemPrompt();
|
|
74
|
+
// Initialize session state
|
|
75
|
+
const session = {
|
|
76
|
+
sessionId,
|
|
77
|
+
gatewayId: this.gatewayId,
|
|
78
|
+
userId: config.userId,
|
|
79
|
+
organizationId: config.organizationId,
|
|
80
|
+
templateId: config.templateId,
|
|
81
|
+
status: 'active',
|
|
82
|
+
messages: [
|
|
83
|
+
{
|
|
84
|
+
role: 'system',
|
|
85
|
+
content: systemPrompt,
|
|
86
|
+
timestamp: new Date().toISOString()
|
|
87
|
+
}
|
|
88
|
+
],
|
|
89
|
+
modelId: config.modelId || 'default',
|
|
90
|
+
connectionId: config.connectionId || '',
|
|
91
|
+
startedAt: new Date(),
|
|
92
|
+
lastActivityAt: new Date(),
|
|
93
|
+
totalTokens: 0,
|
|
94
|
+
toolCallsCount: 0,
|
|
95
|
+
disabledTools: new Set(config.disabledTools || []) // Set of disabled tools
|
|
96
|
+
};
|
|
97
|
+
console.log(`[HeadlessSession] Session created with disabledTools: [${Array.from(session.disabledTools).join(', ')}]`);
|
|
98
|
+
// Add initial message if provided
|
|
99
|
+
// NOTE: initialMessage is the assistant's greeting/prompt to the user,
|
|
100
|
+
// NOT a user message. It should be role: 'assistant'
|
|
101
|
+
if (config.initialMessage) {
|
|
102
|
+
session.messages.push({
|
|
103
|
+
role: 'assistant',
|
|
104
|
+
content: config.initialMessage,
|
|
105
|
+
timestamp: new Date().toISOString()
|
|
106
|
+
});
|
|
107
|
+
}
|
|
108
|
+
// Store session
|
|
109
|
+
this.sessions.set(sessionId, session);
|
|
110
|
+
// Set session timeout
|
|
111
|
+
const timeout = config.timeout || this.DEFAULT_TIMEOUT;
|
|
112
|
+
setTimeout(() => {
|
|
113
|
+
this.checkSessionTimeout(sessionId);
|
|
114
|
+
}, timeout);
|
|
115
|
+
// Emit session started event
|
|
116
|
+
this.emit('session_started', { sessionId, userId: config.userId });
|
|
117
|
+
// NOTE: initialMessage is already added to session.messages as an assistant greeting.
|
|
118
|
+
// The caller should NOT call processMessage for the initial message.
|
|
119
|
+
// The user's first actual message will trigger the LLM.
|
|
120
|
+
return session;
|
|
121
|
+
}
|
|
122
|
+
/**
|
|
123
|
+
* Process a message in an existing session
|
|
124
|
+
* Handles multi-turn tool calling loop
|
|
125
|
+
* @param modelId - Optional model ID to use for this specific message (overrides session default)
|
|
126
|
+
*/
|
|
127
|
+
async processMessage(sessionId, message, onChunk, modelId) {
|
|
128
|
+
const session = this.sessions.get(sessionId);
|
|
129
|
+
if (!session) {
|
|
130
|
+
return {
|
|
131
|
+
sessionId,
|
|
132
|
+
status: 'failed',
|
|
133
|
+
isComplete: true,
|
|
134
|
+
error: 'Session not found'
|
|
135
|
+
};
|
|
136
|
+
}
|
|
137
|
+
if (session.status !== 'active') {
|
|
138
|
+
return {
|
|
139
|
+
sessionId,
|
|
140
|
+
status: session.status,
|
|
141
|
+
isComplete: true,
|
|
142
|
+
error: `Session is ${session.status}`
|
|
143
|
+
};
|
|
144
|
+
}
|
|
145
|
+
// If a per-message modelId is provided, temporarily override the session's modelId
|
|
146
|
+
const originalModelId = session.modelId;
|
|
147
|
+
if (modelId) {
|
|
148
|
+
session.modelId = modelId;
|
|
149
|
+
console.log(`[HeadlessSession] Using per-message model: ${modelId} (session default: ${originalModelId})`);
|
|
150
|
+
}
|
|
151
|
+
// Add user message
|
|
152
|
+
session.messages.push({
|
|
153
|
+
role: 'user',
|
|
154
|
+
content: message,
|
|
155
|
+
timestamp: new Date().toISOString()
|
|
156
|
+
});
|
|
157
|
+
session.lastActivityAt = new Date();
|
|
158
|
+
try {
|
|
159
|
+
// Multi-turn tool calling loop
|
|
160
|
+
const maxTurns = this.DEFAULT_MAX_TURNS;
|
|
161
|
+
let turnCount = 0;
|
|
162
|
+
let toolResults = [];
|
|
163
|
+
let toolCalls = []; // Collect tool calls for UI display
|
|
164
|
+
let requestIds = []; // Collect request IDs from LLM calls
|
|
165
|
+
// Track per-message usage (aggregated across all turns)
|
|
166
|
+
let messageUsage = {
|
|
167
|
+
promptTokens: 0,
|
|
168
|
+
completionTokens: 0,
|
|
169
|
+
totalTokens: 0
|
|
170
|
+
};
|
|
171
|
+
while (turnCount < maxTurns) {
|
|
172
|
+
turnCount++;
|
|
173
|
+
console.log(`[HeadlessSession] Turn ${turnCount} for session ${sessionId} with model ${session.modelId}`);
|
|
174
|
+
// Call LLM
|
|
175
|
+
const llmResponse = await this.callLLM(session, onChunk);
|
|
176
|
+
const response = llmResponse.data;
|
|
177
|
+
// Collect request ID if present
|
|
178
|
+
if (llmResponse.requestId) {
|
|
179
|
+
requestIds.push(llmResponse.requestId);
|
|
180
|
+
}
|
|
181
|
+
// Update token count
|
|
182
|
+
session.totalTokens += response.usage?.total_tokens || 0;
|
|
183
|
+
// Track per-message usage
|
|
184
|
+
if (response.usage) {
|
|
185
|
+
messageUsage.promptTokens += response.usage.prompt_tokens || 0;
|
|
186
|
+
messageUsage.completionTokens += response.usage.completion_tokens || 0;
|
|
187
|
+
messageUsage.totalTokens += response.usage.total_tokens || 0;
|
|
188
|
+
console.log(`[HeadlessSession] Token usage: prompt=${response.usage.prompt_tokens}, completion=${response.usage.completion_tokens}, total=${response.usage.total_tokens}`);
|
|
189
|
+
}
|
|
190
|
+
else {
|
|
191
|
+
console.log(`[HeadlessSession] No usage data in LLM response`);
|
|
192
|
+
}
|
|
193
|
+
const assistantMessage = response.choices?.[0]?.message;
|
|
194
|
+
if (!assistantMessage) {
|
|
195
|
+
throw new Error('No response from LLM');
|
|
196
|
+
}
|
|
197
|
+
// Add assistant message to history
|
|
198
|
+
session.messages.push({
|
|
199
|
+
role: 'assistant',
|
|
200
|
+
content: assistantMessage.content || '',
|
|
201
|
+
timestamp: new Date().toISOString(),
|
|
202
|
+
tool_calls: assistantMessage.tool_calls
|
|
203
|
+
});
|
|
204
|
+
// Check if there are tool calls
|
|
205
|
+
if (assistantMessage.tool_calls && assistantMessage.tool_calls.length > 0) {
|
|
206
|
+
// Collect tool calls for UI display
|
|
207
|
+
toolCalls.push(...assistantMessage.tool_calls);
|
|
208
|
+
// Execute tools
|
|
209
|
+
for (const toolCall of assistantMessage.tool_calls) {
|
|
210
|
+
const result = await this.executeTool(toolCall);
|
|
211
|
+
toolResults.push(result);
|
|
212
|
+
session.toolCallsCount++;
|
|
213
|
+
// Emit tool result
|
|
214
|
+
if (onChunk) {
|
|
215
|
+
onChunk({
|
|
216
|
+
type: 'tool_result',
|
|
217
|
+
toolResult: result,
|
|
218
|
+
sessionId,
|
|
219
|
+
timestamp: new Date().toISOString()
|
|
220
|
+
});
|
|
221
|
+
}
|
|
222
|
+
// Add tool result to messages
|
|
223
|
+
session.messages.push({
|
|
224
|
+
role: 'tool',
|
|
225
|
+
content: result.success ?
|
|
226
|
+
(result.output || 'Tool executed successfully') :
|
|
227
|
+
(result.error || 'Tool execution failed'),
|
|
228
|
+
timestamp: new Date().toISOString(),
|
|
229
|
+
tool_call_id: toolCall.id,
|
|
230
|
+
name: toolCall.function.name
|
|
231
|
+
});
|
|
232
|
+
}
|
|
233
|
+
// Continue loop to get next LLM response
|
|
234
|
+
continue;
|
|
235
|
+
}
|
|
236
|
+
// No tool calls - response is complete
|
|
237
|
+
if (onChunk) {
|
|
238
|
+
onChunk({
|
|
239
|
+
type: 'done',
|
|
240
|
+
sessionId,
|
|
241
|
+
timestamp: new Date().toISOString()
|
|
242
|
+
});
|
|
243
|
+
}
|
|
244
|
+
return {
|
|
245
|
+
sessionId,
|
|
246
|
+
status: 'active',
|
|
247
|
+
message: {
|
|
248
|
+
role: 'assistant',
|
|
249
|
+
content: assistantMessage.content || '',
|
|
250
|
+
timestamp: new Date().toISOString()
|
|
251
|
+
},
|
|
252
|
+
toolResults,
|
|
253
|
+
toolCalls: toolCalls.length > 0 ? toolCalls : undefined,
|
|
254
|
+
isComplete: true,
|
|
255
|
+
requestIds: requestIds.length > 0 ? requestIds : undefined,
|
|
256
|
+
usage: messageUsage.totalTokens > 0 ? messageUsage : undefined
|
|
257
|
+
};
|
|
258
|
+
}
|
|
259
|
+
// Max turns reached
|
|
260
|
+
console.warn(`[HeadlessSession] Max turns (${maxTurns}) reached for session ${sessionId}`);
|
|
261
|
+
return {
|
|
262
|
+
sessionId,
|
|
263
|
+
status: 'active',
|
|
264
|
+
toolResults,
|
|
265
|
+
toolCalls: toolCalls.length > 0 ? toolCalls : undefined,
|
|
266
|
+
isComplete: true,
|
|
267
|
+
error: 'Maximum conversation turns reached',
|
|
268
|
+
usage: messageUsage.totalTokens > 0 ? messageUsage : undefined,
|
|
269
|
+
requestIds: requestIds.length > 0 ? requestIds : undefined
|
|
270
|
+
};
|
|
271
|
+
}
|
|
272
|
+
catch (error) {
|
|
273
|
+
console.error(`[HeadlessSession] Error processing message:`, error.message);
|
|
274
|
+
session.status = 'failed';
|
|
275
|
+
session.errorMessage = error.message;
|
|
276
|
+
return {
|
|
277
|
+
sessionId,
|
|
278
|
+
status: 'failed',
|
|
279
|
+
isComplete: true,
|
|
280
|
+
error: error.message
|
|
281
|
+
};
|
|
282
|
+
}
|
|
283
|
+
}
|
|
284
|
+
/**
|
|
285
|
+
* Cancel an active session
|
|
286
|
+
*/
|
|
287
|
+
async cancelSession(sessionId) {
|
|
288
|
+
const session = this.sessions.get(sessionId);
|
|
289
|
+
if (!session) {
|
|
290
|
+
return false;
|
|
291
|
+
}
|
|
292
|
+
session.status = 'cancelled';
|
|
293
|
+
session.completedAt = new Date();
|
|
294
|
+
this.emit('session_cancelled', { sessionId });
|
|
295
|
+
console.log(`[HeadlessSession] Session ${sessionId} cancelled`);
|
|
296
|
+
return true;
|
|
297
|
+
}
|
|
298
|
+
/**
|
|
299
|
+
* Get session state
|
|
300
|
+
*/
|
|
301
|
+
getSession(sessionId) {
|
|
302
|
+
return this.sessions.get(sessionId);
|
|
303
|
+
}
|
|
304
|
+
/**
|
|
305
|
+
* Get all active sessions
|
|
306
|
+
*/
|
|
307
|
+
getActiveSessions() {
|
|
308
|
+
return Array.from(this.sessions.values())
|
|
309
|
+
.filter(s => s.status === 'active');
|
|
310
|
+
}
|
|
311
|
+
/**
|
|
312
|
+
* Complete a session
|
|
313
|
+
*/
|
|
314
|
+
completeSession(sessionId) {
|
|
315
|
+
const session = this.sessions.get(sessionId);
|
|
316
|
+
if (!session || session.status !== 'active') {
|
|
317
|
+
return false;
|
|
318
|
+
}
|
|
319
|
+
session.status = 'completed';
|
|
320
|
+
session.completedAt = new Date();
|
|
321
|
+
this.emit('session_completed', { sessionId });
|
|
322
|
+
console.log(`[HeadlessSession] Session ${sessionId} completed`);
|
|
323
|
+
return true;
|
|
324
|
+
}
|
|
325
|
+
// ============= PRIVATE METHODS =============
|
|
326
|
+
/**
|
|
327
|
+
* Build default system prompt for DevOps automation
|
|
328
|
+
*/
|
|
329
|
+
buildDefaultSystemPrompt() {
|
|
330
|
+
return `You are a DevOps automation assistant running on a Type 3 Gateway.
|
|
331
|
+
|
|
332
|
+
You have access to the following tools for system operations:
|
|
333
|
+
|
|
334
|
+
CORE TOOLS (File System):
|
|
335
|
+
- core.read: Read files from the filesystem
|
|
336
|
+
- core.write: Write new files or overwrite existing ones
|
|
337
|
+
- core.edit: Perform exact string replacements in files
|
|
338
|
+
- core.glob: Find files using glob patterns
|
|
339
|
+
- core.grep: Search file contents using regex patterns
|
|
340
|
+
|
|
341
|
+
EXECUTION TOOLS:
|
|
342
|
+
- exec.bash: Execute bash commands in a persistent shell
|
|
343
|
+
- exec.bash_output: Retrieve output from background processes
|
|
344
|
+
- exec.kill_shell: Terminate background processes
|
|
345
|
+
|
|
346
|
+
WEB TOOLS:
|
|
347
|
+
- web.search: Search the web for information
|
|
348
|
+
- web.fetch: Fetch and process web content
|
|
349
|
+
|
|
350
|
+
GUIDELINES:
|
|
351
|
+
1. Always explain what you're about to do before executing commands
|
|
352
|
+
2. For destructive operations (delete, overwrite), confirm first
|
|
353
|
+
3. Report progress after each major step
|
|
354
|
+
4. If errors occur, analyze them and suggest fixes
|
|
355
|
+
5. Use appropriate error handling in scripts
|
|
356
|
+
6. Create backups before modifying critical files
|
|
357
|
+
|
|
358
|
+
When executing tasks:
|
|
359
|
+
- Break down complex tasks into steps
|
|
360
|
+
- Verify prerequisites before proceeding
|
|
361
|
+
- Test changes before declaring success
|
|
362
|
+
- Provide clear status updates
|
|
363
|
+
|
|
364
|
+
You are operating in headless mode - all interactions are through this chat interface.`;
|
|
365
|
+
}
|
|
366
|
+
/**
|
|
367
|
+
* Call LLM via marketplace API
|
|
368
|
+
* Returns both the response data and the request ID for logging
|
|
369
|
+
*/
|
|
370
|
+
async callLLM(session, onChunk) {
|
|
371
|
+
// Build messages for API call
|
|
372
|
+
const messages = session.messages.map(m => {
|
|
373
|
+
const msg = { role: m.role, content: m.content };
|
|
374
|
+
if (m.tool_calls)
|
|
375
|
+
msg.tool_calls = m.tool_calls;
|
|
376
|
+
if (m.tool_call_id)
|
|
377
|
+
msg.tool_call_id = m.tool_call_id;
|
|
378
|
+
if (m.name)
|
|
379
|
+
msg.name = m.name;
|
|
380
|
+
return msg;
|
|
381
|
+
});
|
|
382
|
+
// Get available tools, filtering out disabled ones
|
|
383
|
+
const allTools = this.getAvailableTools();
|
|
384
|
+
const tools = allTools.filter(t => !session.disabledTools.has(t.function.name));
|
|
385
|
+
console.log(`[HeadlessSession] LLM call - All tools: ${allTools.length}, Enabled: ${tools.length}, Disabled: [${Array.from(session.disabledTools).join(', ')}]`);
|
|
386
|
+
// Make API call to marketplace
|
|
387
|
+
const url = `${this.marketplaceUrl}/v1/chat/completions`;
|
|
388
|
+
(0, debug_utils_1.debugLog)(`[HeadlessSession] Calling LLM at ${url}`);
|
|
389
|
+
(0, debug_utils_1.debugLog)(`[HeadlessSession] Messages: ${messages.length}, Tools: ${tools.length}/${allTools.length} (disabled: ${session.disabledTools.size})`);
|
|
390
|
+
try {
|
|
391
|
+
// Build request body - only include tools if any are enabled
|
|
392
|
+
const requestBody = {
|
|
393
|
+
model: session.modelId,
|
|
394
|
+
messages,
|
|
395
|
+
stream: false // For simplicity, non-streaming in headless mode
|
|
396
|
+
};
|
|
397
|
+
// Only add tools to request if there are enabled tools
|
|
398
|
+
if (tools.length > 0) {
|
|
399
|
+
requestBody.tools = tools;
|
|
400
|
+
}
|
|
401
|
+
const response = await axios_1.default.post(url, requestBody, {
|
|
402
|
+
headers: {
|
|
403
|
+
'Authorization': `Bearer ${this.apiKey}`,
|
|
404
|
+
'Content-Type': 'application/json',
|
|
405
|
+
// Pass original user ID for request log attribution
|
|
406
|
+
// This allows Gateway Type 1 to log the request under the actual user
|
|
407
|
+
// who initiated the DevOps session, not the gateway's API key owner
|
|
408
|
+
'X-On-Behalf-Of-User': session.userId,
|
|
409
|
+
// Pass session ID for request log linking
|
|
410
|
+
// This allows request_logs to be linked to inference_sessions for message counting
|
|
411
|
+
'X-Session-Id': session.sessionId
|
|
412
|
+
},
|
|
413
|
+
timeout: 120000 // 2 minute timeout
|
|
414
|
+
});
|
|
415
|
+
// Extract request ID from response headers for request log linking
|
|
416
|
+
const requestId = response.headers['x-request-id'];
|
|
417
|
+
if (requestId) {
|
|
418
|
+
(0, debug_utils_1.debugLog)(`[HeadlessSession] Captured request ID: ${requestId}`);
|
|
419
|
+
}
|
|
420
|
+
return { data: response.data, requestId };
|
|
421
|
+
}
|
|
422
|
+
catch (error) {
|
|
423
|
+
console.error(`[HeadlessSession] LLM call failed:`, error.message);
|
|
424
|
+
if (error.response) {
|
|
425
|
+
console.error(`[HeadlessSession] Response:`, error.response.data);
|
|
426
|
+
}
|
|
427
|
+
throw error;
|
|
428
|
+
}
|
|
429
|
+
}
|
|
430
|
+
/**
|
|
431
|
+
* Execute a tool call
|
|
432
|
+
*/
|
|
433
|
+
async executeTool(toolCall) {
|
|
434
|
+
const startTime = Date.now();
|
|
435
|
+
const toolName = toolCall.function.name;
|
|
436
|
+
console.log(`[HeadlessSession] Executing tool: ${toolName}`);
|
|
437
|
+
try {
|
|
438
|
+
// Parse arguments
|
|
439
|
+
let args;
|
|
440
|
+
try {
|
|
441
|
+
args = JSON.parse(toolCall.function.arguments);
|
|
442
|
+
}
|
|
443
|
+
catch {
|
|
444
|
+
args = {};
|
|
445
|
+
}
|
|
446
|
+
let result;
|
|
447
|
+
// Route to appropriate tool handler
|
|
448
|
+
if (toolName.startsWith('core.') || toolName.startsWith('exec.')) {
|
|
449
|
+
result = await this.coreTools.executeTool(toolName, args);
|
|
450
|
+
}
|
|
451
|
+
else if (toolName.startsWith('web.')) {
|
|
452
|
+
result = await this.webTools.executeTool(toolName, args);
|
|
453
|
+
}
|
|
454
|
+
else if (toolName.startsWith('devops.')) {
|
|
455
|
+
// DevOps tools return DevOpsToolResult which has same structure as ToolResult
|
|
456
|
+
const devOpsResult = await this.devOpsTools.executeTool(toolName, args);
|
|
457
|
+
result = {
|
|
458
|
+
success: devOpsResult.success,
|
|
459
|
+
output: devOpsResult.output,
|
|
460
|
+
error: devOpsResult.error
|
|
461
|
+
};
|
|
462
|
+
}
|
|
463
|
+
else {
|
|
464
|
+
return {
|
|
465
|
+
toolName,
|
|
466
|
+
success: false,
|
|
467
|
+
error: `Unknown tool: ${toolName}`,
|
|
468
|
+
duration: Date.now() - startTime
|
|
469
|
+
};
|
|
470
|
+
}
|
|
471
|
+
// Truncate output if too long
|
|
472
|
+
let output = result.output || '';
|
|
473
|
+
if (output.length > this.MAX_TOOL_OUTPUT_LENGTH) {
|
|
474
|
+
output = output.substring(0, this.MAX_TOOL_OUTPUT_LENGTH) +
|
|
475
|
+
`\n\n[Output truncated - ${output.length} characters total]`;
|
|
476
|
+
}
|
|
477
|
+
return {
|
|
478
|
+
toolName,
|
|
479
|
+
success: result.success,
|
|
480
|
+
output: result.success ? output : undefined,
|
|
481
|
+
error: result.error,
|
|
482
|
+
duration: Date.now() - startTime
|
|
483
|
+
};
|
|
484
|
+
}
|
|
485
|
+
catch (error) {
|
|
486
|
+
console.error(`[HeadlessSession] Tool execution error:`, error.message);
|
|
487
|
+
return {
|
|
488
|
+
toolName,
|
|
489
|
+
success: false,
|
|
490
|
+
error: error.message,
|
|
491
|
+
duration: Date.now() - startTime
|
|
492
|
+
};
|
|
493
|
+
}
|
|
494
|
+
}
|
|
495
|
+
/**
|
|
496
|
+
* Check and handle session timeout
|
|
497
|
+
*/
|
|
498
|
+
checkSessionTimeout(sessionId) {
|
|
499
|
+
const session = this.sessions.get(sessionId);
|
|
500
|
+
if (!session || session.status !== 'active') {
|
|
501
|
+
return;
|
|
502
|
+
}
|
|
503
|
+
const now = new Date();
|
|
504
|
+
const lastActivity = session.lastActivityAt;
|
|
505
|
+
const inactiveMs = now.getTime() - lastActivity.getTime();
|
|
506
|
+
if (inactiveMs > this.DEFAULT_TIMEOUT) {
|
|
507
|
+
console.log(`[HeadlessSession] Session ${sessionId} timed out after ${Math.floor(inactiveMs / 1000)}s of inactivity`);
|
|
508
|
+
session.status = 'timeout';
|
|
509
|
+
session.completedAt = now;
|
|
510
|
+
this.emit('session_timeout', { sessionId });
|
|
511
|
+
}
|
|
512
|
+
}
|
|
513
|
+
/**
|
|
514
|
+
* Cleanup old sessions (called periodically)
|
|
515
|
+
*/
|
|
516
|
+
cleanupOldSessions(maxAgeMs = 24 * 60 * 60 * 1000) {
|
|
517
|
+
const now = Date.now();
|
|
518
|
+
let cleaned = 0;
|
|
519
|
+
for (const [sessionId, session] of this.sessions.entries()) {
|
|
520
|
+
const age = now - session.startedAt.getTime();
|
|
521
|
+
if (age > maxAgeMs && session.status !== 'active') {
|
|
522
|
+
this.sessions.delete(sessionId);
|
|
523
|
+
cleaned++;
|
|
524
|
+
}
|
|
525
|
+
}
|
|
526
|
+
if (cleaned > 0) {
|
|
527
|
+
console.log(`[HeadlessSession] Cleaned up ${cleaned} old sessions`);
|
|
528
|
+
}
|
|
529
|
+
return cleaned;
|
|
530
|
+
}
|
|
531
|
+
/**
|
|
532
|
+
* Export session for persistence
|
|
533
|
+
*/
|
|
534
|
+
exportSession(sessionId) {
|
|
535
|
+
const session = this.sessions.get(sessionId);
|
|
536
|
+
if (!session)
|
|
537
|
+
return null;
|
|
538
|
+
return {
|
|
539
|
+
id: session.sessionId,
|
|
540
|
+
gateway_id: session.gatewayId,
|
|
541
|
+
user_id: session.userId,
|
|
542
|
+
organization_id: session.organizationId,
|
|
543
|
+
template_id: session.templateId,
|
|
544
|
+
status: session.status,
|
|
545
|
+
messages: session.messages,
|
|
546
|
+
model_used: session.modelId,
|
|
547
|
+
total_tokens: session.totalTokens,
|
|
548
|
+
tool_calls_count: session.toolCallsCount,
|
|
549
|
+
error_message: session.errorMessage,
|
|
550
|
+
started_at: session.startedAt.toISOString(),
|
|
551
|
+
last_activity_at: session.lastActivityAt.toISOString(),
|
|
552
|
+
completed_at: session.completedAt?.toISOString()
|
|
553
|
+
};
|
|
554
|
+
}
|
|
555
|
+
}
|
|
556
|
+
exports.HeadlessSessionManager = HeadlessSessionManager;
|
|
557
|
+
/**
|
|
558
|
+
* Usage Example:
|
|
559
|
+
*
|
|
560
|
+
* const sessionManager = new HeadlessSessionManager({
|
|
561
|
+
* gatewayId: 'gw3-local-001',
|
|
562
|
+
* vault: localVault,
|
|
563
|
+
* marketplaceUrl: 'http://localhost:8081',
|
|
564
|
+
* apiKey: 'sk-test-inference-key'
|
|
565
|
+
* });
|
|
566
|
+
*
|
|
567
|
+
* // Start a session
|
|
568
|
+
* const session = await sessionManager.startSession({
|
|
569
|
+
* userId: 'user-123',
|
|
570
|
+
* systemPrompt: 'You are a DevOps assistant...',
|
|
571
|
+
* initialMessage: 'Install vLLM on this system'
|
|
572
|
+
* });
|
|
573
|
+
*
|
|
574
|
+
* // Process messages
|
|
575
|
+
* const response = await sessionManager.processMessage(
|
|
576
|
+
* session.sessionId,
|
|
577
|
+
* 'Check the GPU status first',
|
|
578
|
+
* (chunk) => console.log('Chunk:', chunk)
|
|
579
|
+
* );
|
|
580
|
+
*
|
|
581
|
+
* // Complete session
|
|
582
|
+
* sessionManager.completeSession(session.sessionId);
|
|
583
|
+
*/
|
|
584
|
+
//# sourceMappingURL=headless-session.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"headless-session.js","sourceRoot":"","sources":["../headless-session.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index-server.d.ts","sourceRoot":"","sources":["../index-server.ts"],"names":[],"mappings":"AAyIA,OAAO,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAC;AACtD,OAAO,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAC3C,OAAO,EAAE,WAAW,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAC"}
|