proofscan 0.7.5 → 0.8.1
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/dist/cli.js +38 -14
- package/dist/cli.js.map +1 -1
- package/dist/shell/completer.d.ts.map +1 -1
- package/dist/shell/completer.js +39 -4
- package/dist/shell/completer.js.map +1 -1
- package/dist/shell/prompt.d.ts +8 -0
- package/dist/shell/prompt.d.ts.map +1 -1
- package/dist/shell/prompt.js +12 -0
- package/dist/shell/prompt.js.map +1 -1
- package/dist/shell/repl.d.ts.map +1 -1
- package/dist/shell/repl.js +20 -0
- package/dist/shell/repl.js.map +1 -1
- package/dist/shell/tool-commands.d.ts +26 -0
- package/dist/shell/tool-commands.d.ts.map +1 -0
- package/dist/shell/tool-commands.js +422 -0
- package/dist/shell/tool-commands.js.map +1 -0
- package/dist/shell/types.d.ts +5 -0
- package/dist/shell/types.d.ts.map +1 -1
- package/dist/shell/types.js +6 -0
- package/dist/shell/types.js.map +1 -1
- package/dist/tools/adapter.d.ts +105 -0
- package/dist/tools/adapter.d.ts.map +1 -0
- package/dist/tools/adapter.js +326 -0
- package/dist/tools/adapter.js.map +1 -0
- package/package.json +1 -1
|
@@ -0,0 +1,422 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Shell tool commands: tool ls, tool show, send (Phase 4.0)
|
|
3
|
+
*
|
|
4
|
+
* These commands enable direct interaction with MCP server tools from the shell.
|
|
5
|
+
*
|
|
6
|
+
* Commands:
|
|
7
|
+
* - tool ls : List tools available on current connector
|
|
8
|
+
* - tool show <name>: Show tool details (description, input schema)
|
|
9
|
+
* - send <name> : Interactive tool call with argument builder
|
|
10
|
+
*/
|
|
11
|
+
import { printSuccess, printError, printInfo, dimText } from './prompt.js';
|
|
12
|
+
import { ConfigManager } from '../config/index.js';
|
|
13
|
+
import { getConnector, listTools, getTool, callTool, formatInputSchema, } from '../tools/adapter.js';
|
|
14
|
+
/**
|
|
15
|
+
* Handle 'tool' command
|
|
16
|
+
*/
|
|
17
|
+
export async function handleTool(args, context, configPath) {
|
|
18
|
+
if (args.length === 0) {
|
|
19
|
+
printInfo('Usage: tool <subcommand>');
|
|
20
|
+
printInfo(' tool ls List tools on current connector');
|
|
21
|
+
printInfo(' tool show <name> Show tool details');
|
|
22
|
+
return;
|
|
23
|
+
}
|
|
24
|
+
const subcommand = args[0];
|
|
25
|
+
const subArgs = args.slice(1);
|
|
26
|
+
switch (subcommand) {
|
|
27
|
+
case 'ls':
|
|
28
|
+
case 'list':
|
|
29
|
+
await handleToolLs(subArgs, context, configPath);
|
|
30
|
+
break;
|
|
31
|
+
case 'show':
|
|
32
|
+
await handleToolShow(subArgs, context, configPath);
|
|
33
|
+
break;
|
|
34
|
+
default:
|
|
35
|
+
printError(`Unknown subcommand: ${subcommand}`);
|
|
36
|
+
printInfo('Available: ls, show');
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
/**
|
|
40
|
+
* Handle 'tool ls' - list tools on current connector
|
|
41
|
+
*/
|
|
42
|
+
async function handleToolLs(args, context, configPath) {
|
|
43
|
+
const isJson = args.includes('--json');
|
|
44
|
+
// Require connector context
|
|
45
|
+
if (!context.connector) {
|
|
46
|
+
printError('No connector selected');
|
|
47
|
+
printInfo('Use: cd <connector> to select a connector first');
|
|
48
|
+
return;
|
|
49
|
+
}
|
|
50
|
+
const manager = new ConfigManager(configPath);
|
|
51
|
+
const connector = await getConnector(configPath, context.connector);
|
|
52
|
+
if (!connector) {
|
|
53
|
+
printError(`Connector not found: ${context.connector}`);
|
|
54
|
+
return;
|
|
55
|
+
}
|
|
56
|
+
if (!connector.enabled) {
|
|
57
|
+
printError(`Connector is disabled: ${context.connector}`);
|
|
58
|
+
printInfo('Enable it with: pfscan connectors enable --id ' + context.connector);
|
|
59
|
+
return;
|
|
60
|
+
}
|
|
61
|
+
const ctx = {
|
|
62
|
+
connectorId: context.connector,
|
|
63
|
+
configDir: manager.getConfigDir(),
|
|
64
|
+
};
|
|
65
|
+
printInfo('Fetching tools...');
|
|
66
|
+
const result = await listTools(ctx, connector);
|
|
67
|
+
if (result.error) {
|
|
68
|
+
printError(`Failed to list tools: ${result.error}`);
|
|
69
|
+
return;
|
|
70
|
+
}
|
|
71
|
+
if (result.tools.length === 0) {
|
|
72
|
+
printInfo('No tools available on this connector');
|
|
73
|
+
return;
|
|
74
|
+
}
|
|
75
|
+
if (isJson) {
|
|
76
|
+
console.log(JSON.stringify(result.tools, null, 2));
|
|
77
|
+
return;
|
|
78
|
+
}
|
|
79
|
+
// Table format
|
|
80
|
+
const isTTY = process.stdout.isTTY;
|
|
81
|
+
console.log();
|
|
82
|
+
// Calculate column widths
|
|
83
|
+
const maxName = Math.max(12, ...result.tools.map(t => t.name.length));
|
|
84
|
+
// Header
|
|
85
|
+
console.log(dimText('Tool', isTTY).padEnd(isTTY ? maxName + 9 : maxName) + ' ' +
|
|
86
|
+
dimText('Required', isTTY).padEnd(isTTY ? 17 : 8) + ' ' +
|
|
87
|
+
dimText('Description', isTTY));
|
|
88
|
+
console.log(dimText('-'.repeat(maxName + 50), isTTY));
|
|
89
|
+
// Rows
|
|
90
|
+
for (const tool of result.tools) {
|
|
91
|
+
const schema = formatInputSchema(tool.inputSchema);
|
|
92
|
+
const requiredCount = schema.required.length;
|
|
93
|
+
const desc = tool.description
|
|
94
|
+
? truncate(tool.description.split('\n')[0], 40)
|
|
95
|
+
: '-';
|
|
96
|
+
console.log(tool.name.padEnd(maxName) + ' ' +
|
|
97
|
+
String(requiredCount).padEnd(8) + ' ' +
|
|
98
|
+
desc);
|
|
99
|
+
}
|
|
100
|
+
console.log();
|
|
101
|
+
printInfo(`Found ${result.tools.length} tool(s). Use: tool show <name> for details`);
|
|
102
|
+
}
|
|
103
|
+
/**
|
|
104
|
+
* Handle 'tool show' - show tool details
|
|
105
|
+
*/
|
|
106
|
+
async function handleToolShow(args, context, configPath) {
|
|
107
|
+
const isJson = args.includes('--json');
|
|
108
|
+
const toolName = args.find(a => !a.startsWith('-'));
|
|
109
|
+
if (!toolName) {
|
|
110
|
+
printError('Usage: tool show <name>');
|
|
111
|
+
return;
|
|
112
|
+
}
|
|
113
|
+
// Require connector context
|
|
114
|
+
if (!context.connector) {
|
|
115
|
+
printError('No connector selected');
|
|
116
|
+
printInfo('Use: cd <connector> to select a connector first');
|
|
117
|
+
return;
|
|
118
|
+
}
|
|
119
|
+
const manager = new ConfigManager(configPath);
|
|
120
|
+
const connector = await getConnector(configPath, context.connector);
|
|
121
|
+
if (!connector) {
|
|
122
|
+
printError(`Connector not found: ${context.connector}`);
|
|
123
|
+
return;
|
|
124
|
+
}
|
|
125
|
+
const ctx = {
|
|
126
|
+
connectorId: context.connector,
|
|
127
|
+
configDir: manager.getConfigDir(),
|
|
128
|
+
};
|
|
129
|
+
printInfo('Fetching tool info...');
|
|
130
|
+
const result = await getTool(ctx, connector, toolName);
|
|
131
|
+
if (result.error) {
|
|
132
|
+
printError(result.error);
|
|
133
|
+
return;
|
|
134
|
+
}
|
|
135
|
+
if (!result.tool) {
|
|
136
|
+
printError(`Tool not found: ${toolName}`);
|
|
137
|
+
return;
|
|
138
|
+
}
|
|
139
|
+
if (isJson) {
|
|
140
|
+
console.log(JSON.stringify(result.tool, null, 2));
|
|
141
|
+
return;
|
|
142
|
+
}
|
|
143
|
+
// Formatted output
|
|
144
|
+
const tool = result.tool;
|
|
145
|
+
const isTTY = process.stdout.isTTY;
|
|
146
|
+
console.log();
|
|
147
|
+
console.log(dimText('Tool:', isTTY), tool.name);
|
|
148
|
+
console.log();
|
|
149
|
+
if (tool.description) {
|
|
150
|
+
console.log(dimText('Description:', isTTY));
|
|
151
|
+
// Print description with indentation
|
|
152
|
+
for (const line of tool.description.split('\n')) {
|
|
153
|
+
console.log(' ' + line);
|
|
154
|
+
}
|
|
155
|
+
console.log();
|
|
156
|
+
}
|
|
157
|
+
const schema = formatInputSchema(tool.inputSchema);
|
|
158
|
+
if (schema.required.length > 0) {
|
|
159
|
+
console.log(dimText('Required arguments:', isTTY));
|
|
160
|
+
for (const arg of schema.required) {
|
|
161
|
+
const typeStr = arg.type ? ` (${arg.type})` : '';
|
|
162
|
+
console.log(` ${arg.name}${typeStr}`);
|
|
163
|
+
if (arg.description) {
|
|
164
|
+
console.log(` ${arg.description}`);
|
|
165
|
+
}
|
|
166
|
+
}
|
|
167
|
+
console.log();
|
|
168
|
+
}
|
|
169
|
+
if (schema.optional.length > 0) {
|
|
170
|
+
console.log(dimText('Optional arguments:', isTTY));
|
|
171
|
+
for (const arg of schema.optional) {
|
|
172
|
+
const typeStr = arg.type ? ` (${arg.type})` : '';
|
|
173
|
+
const defaultStr = arg.default !== undefined ? ` [default: ${JSON.stringify(arg.default)}]` : '';
|
|
174
|
+
console.log(` ${arg.name}${typeStr}${defaultStr}`);
|
|
175
|
+
if (arg.description) {
|
|
176
|
+
console.log(` ${arg.description}`);
|
|
177
|
+
}
|
|
178
|
+
}
|
|
179
|
+
console.log();
|
|
180
|
+
}
|
|
181
|
+
printInfo(`Run with: send ${toolName}`);
|
|
182
|
+
}
|
|
183
|
+
/**
|
|
184
|
+
* Handle 'send' command - interactive tool call
|
|
185
|
+
*/
|
|
186
|
+
export async function handleSend(args, context, configPath, rl) {
|
|
187
|
+
const isJson = args.includes('--json');
|
|
188
|
+
const isDryRun = args.includes('--dry-run');
|
|
189
|
+
const toolName = args.find(a => !a.startsWith('-'));
|
|
190
|
+
if (!toolName) {
|
|
191
|
+
printError('Usage: send <tool-name>');
|
|
192
|
+
printInfo('Example: send get_stock_info');
|
|
193
|
+
return;
|
|
194
|
+
}
|
|
195
|
+
// Require connector context
|
|
196
|
+
if (!context.connector) {
|
|
197
|
+
printError('No connector selected');
|
|
198
|
+
printInfo('Use: cd <connector> to select a connector first');
|
|
199
|
+
return;
|
|
200
|
+
}
|
|
201
|
+
const manager = new ConfigManager(configPath);
|
|
202
|
+
const connector = await getConnector(configPath, context.connector);
|
|
203
|
+
if (!connector) {
|
|
204
|
+
printError(`Connector not found: ${context.connector}`);
|
|
205
|
+
return;
|
|
206
|
+
}
|
|
207
|
+
const ctx = {
|
|
208
|
+
connectorId: context.connector,
|
|
209
|
+
configDir: manager.getConfigDir(),
|
|
210
|
+
};
|
|
211
|
+
// First, get tool info to build arguments
|
|
212
|
+
printInfo('Fetching tool schema...');
|
|
213
|
+
const toolResult = await getTool(ctx, connector, toolName);
|
|
214
|
+
if (toolResult.error) {
|
|
215
|
+
printError(toolResult.error);
|
|
216
|
+
return;
|
|
217
|
+
}
|
|
218
|
+
if (!toolResult.tool) {
|
|
219
|
+
printError(`Tool not found: ${toolName}`);
|
|
220
|
+
return;
|
|
221
|
+
}
|
|
222
|
+
const tool = toolResult.tool;
|
|
223
|
+
const schema = formatInputSchema(tool.inputSchema);
|
|
224
|
+
// Build arguments interactively
|
|
225
|
+
const builtArgs = {};
|
|
226
|
+
console.log();
|
|
227
|
+
console.log(`Calling: ${toolName}`);
|
|
228
|
+
// Collect required arguments
|
|
229
|
+
if (schema.required.length > 0) {
|
|
230
|
+
console.log();
|
|
231
|
+
printInfo('Required arguments:');
|
|
232
|
+
for (const arg of schema.required) {
|
|
233
|
+
const value = await promptForValue(rl, arg.name, arg.type, arg.description, true);
|
|
234
|
+
if (value === null) {
|
|
235
|
+
printError('Cancelled');
|
|
236
|
+
return;
|
|
237
|
+
}
|
|
238
|
+
builtArgs[arg.name] = parseValue(value, arg.type);
|
|
239
|
+
}
|
|
240
|
+
}
|
|
241
|
+
// Collect optional arguments
|
|
242
|
+
if (schema.optional.length > 0) {
|
|
243
|
+
console.log();
|
|
244
|
+
printInfo('Optional arguments (press Enter to skip):');
|
|
245
|
+
for (const arg of schema.optional) {
|
|
246
|
+
const defaultHint = arg.default !== undefined ? ` [${JSON.stringify(arg.default)}]` : '';
|
|
247
|
+
const value = await promptForValue(rl, arg.name + defaultHint, arg.type, arg.description, false);
|
|
248
|
+
if (value === null) {
|
|
249
|
+
printError('Cancelled');
|
|
250
|
+
return;
|
|
251
|
+
}
|
|
252
|
+
if (value !== '') {
|
|
253
|
+
builtArgs[arg.name] = parseValue(value, arg.type);
|
|
254
|
+
}
|
|
255
|
+
else if (arg.default !== undefined) {
|
|
256
|
+
builtArgs[arg.name] = arg.default;
|
|
257
|
+
}
|
|
258
|
+
}
|
|
259
|
+
}
|
|
260
|
+
console.log();
|
|
261
|
+
// Show what will be sent
|
|
262
|
+
if (isDryRun) {
|
|
263
|
+
printInfo('Dry run - would send:');
|
|
264
|
+
console.log(JSON.stringify({ tool: toolName, arguments: builtArgs }, null, 2));
|
|
265
|
+
return;
|
|
266
|
+
}
|
|
267
|
+
// Execute the call
|
|
268
|
+
printInfo('Sending...');
|
|
269
|
+
const callResult = await callTool(ctx, connector, toolName, builtArgs);
|
|
270
|
+
if (!callResult.success) {
|
|
271
|
+
printError(`Call failed: ${callResult.error}`);
|
|
272
|
+
if (callResult.sessionId) {
|
|
273
|
+
printInfo(`Session: ${callResult.sessionId.slice(0, 8)}`);
|
|
274
|
+
}
|
|
275
|
+
return;
|
|
276
|
+
}
|
|
277
|
+
// Show result
|
|
278
|
+
console.log();
|
|
279
|
+
if (callResult.isError) {
|
|
280
|
+
printError('Tool returned error:');
|
|
281
|
+
}
|
|
282
|
+
else {
|
|
283
|
+
printSuccess('Tool call succeeded:');
|
|
284
|
+
}
|
|
285
|
+
if (isJson) {
|
|
286
|
+
console.log(JSON.stringify(callResult.content, null, 2));
|
|
287
|
+
}
|
|
288
|
+
else {
|
|
289
|
+
// Format content for display
|
|
290
|
+
if (callResult.content && Array.isArray(callResult.content)) {
|
|
291
|
+
for (const item of callResult.content) {
|
|
292
|
+
if (typeof item === 'object' && item !== null) {
|
|
293
|
+
const content = item;
|
|
294
|
+
if (content.type === 'text' && content.text) {
|
|
295
|
+
console.log(content.text);
|
|
296
|
+
}
|
|
297
|
+
else {
|
|
298
|
+
console.log(JSON.stringify(item, null, 2));
|
|
299
|
+
}
|
|
300
|
+
}
|
|
301
|
+
else {
|
|
302
|
+
console.log(String(item));
|
|
303
|
+
}
|
|
304
|
+
}
|
|
305
|
+
}
|
|
306
|
+
else {
|
|
307
|
+
console.log(JSON.stringify(callResult.content, null, 2));
|
|
308
|
+
}
|
|
309
|
+
}
|
|
310
|
+
console.log();
|
|
311
|
+
printInfo(`Session: ${callResult.sessionId.slice(0, 8)}`);
|
|
312
|
+
printInfo('View details: pfscan rpc list --session ' + callResult.sessionId.slice(0, 8));
|
|
313
|
+
}
|
|
314
|
+
/**
|
|
315
|
+
* Prompt for a value from the user
|
|
316
|
+
* Returns null if user presses Ctrl+C
|
|
317
|
+
*/
|
|
318
|
+
async function promptForValue(rl, name, type, description, required) {
|
|
319
|
+
return new Promise((resolve) => {
|
|
320
|
+
const typeHint = type ? ` (${type})` : '';
|
|
321
|
+
const reqHint = required ? ' *' : '';
|
|
322
|
+
const prompt = ` ${name}${typeHint}${reqHint}: `;
|
|
323
|
+
if (description) {
|
|
324
|
+
console.log(` ${dimText(description, process.stdout.isTTY)}`);
|
|
325
|
+
}
|
|
326
|
+
// Temporarily remove listeners to take control
|
|
327
|
+
const lineListeners = rl.listeners('line');
|
|
328
|
+
const closeListeners = rl.listeners('close');
|
|
329
|
+
rl.removeAllListeners('line');
|
|
330
|
+
rl.removeAllListeners('close');
|
|
331
|
+
// Handle Ctrl+C during input
|
|
332
|
+
const sigintHandler = () => {
|
|
333
|
+
resolve(null);
|
|
334
|
+
};
|
|
335
|
+
rl.once('SIGINT', sigintHandler);
|
|
336
|
+
rl.question(prompt, (answer) => {
|
|
337
|
+
// Clean up SIGINT handler
|
|
338
|
+
rl.removeListener('SIGINT', sigintHandler);
|
|
339
|
+
// Restore listeners
|
|
340
|
+
for (const listener of lineListeners) {
|
|
341
|
+
rl.on('line', listener);
|
|
342
|
+
}
|
|
343
|
+
for (const listener of closeListeners) {
|
|
344
|
+
rl.on('close', listener);
|
|
345
|
+
}
|
|
346
|
+
resolve(answer);
|
|
347
|
+
});
|
|
348
|
+
});
|
|
349
|
+
}
|
|
350
|
+
/**
|
|
351
|
+
* Parse a string value to the appropriate type
|
|
352
|
+
*/
|
|
353
|
+
function parseValue(value, type) {
|
|
354
|
+
if (!type)
|
|
355
|
+
return value;
|
|
356
|
+
switch (type) {
|
|
357
|
+
case 'number':
|
|
358
|
+
case 'integer': {
|
|
359
|
+
const num = Number(value);
|
|
360
|
+
// Return original string if conversion results in NaN
|
|
361
|
+
if (Number.isNaN(num))
|
|
362
|
+
return value;
|
|
363
|
+
return num;
|
|
364
|
+
}
|
|
365
|
+
case 'boolean':
|
|
366
|
+
return value.toLowerCase() === 'true' || value === '1';
|
|
367
|
+
case 'array':
|
|
368
|
+
try {
|
|
369
|
+
return JSON.parse(value);
|
|
370
|
+
}
|
|
371
|
+
catch {
|
|
372
|
+
return value.split(',').map(s => s.trim());
|
|
373
|
+
}
|
|
374
|
+
case 'object':
|
|
375
|
+
try {
|
|
376
|
+
return JSON.parse(value);
|
|
377
|
+
}
|
|
378
|
+
catch {
|
|
379
|
+
return value;
|
|
380
|
+
}
|
|
381
|
+
default:
|
|
382
|
+
return value;
|
|
383
|
+
}
|
|
384
|
+
}
|
|
385
|
+
/**
|
|
386
|
+
* Truncate a string to max length
|
|
387
|
+
*/
|
|
388
|
+
function truncate(str, maxLen) {
|
|
389
|
+
if (str.length <= maxLen)
|
|
390
|
+
return str;
|
|
391
|
+
return str.slice(0, maxLen - 3) + '...';
|
|
392
|
+
}
|
|
393
|
+
/**
|
|
394
|
+
* Get tool names for completion
|
|
395
|
+
* Uses caching via the data provider
|
|
396
|
+
*/
|
|
397
|
+
export async function getToolNamesForCompletion(context, configPath) {
|
|
398
|
+
if (!context.connector) {
|
|
399
|
+
return [];
|
|
400
|
+
}
|
|
401
|
+
try {
|
|
402
|
+
const manager = new ConfigManager(configPath);
|
|
403
|
+
const connector = await getConnector(configPath, context.connector);
|
|
404
|
+
if (!connector || !connector.enabled) {
|
|
405
|
+
return [];
|
|
406
|
+
}
|
|
407
|
+
const ctx = {
|
|
408
|
+
connectorId: context.connector,
|
|
409
|
+
configDir: manager.getConfigDir(),
|
|
410
|
+
};
|
|
411
|
+
// Note: This is called on TAB, so we use a shorter timeout
|
|
412
|
+
const result = await listTools(ctx, connector, { timeout: 10 });
|
|
413
|
+
if (result.error) {
|
|
414
|
+
return [];
|
|
415
|
+
}
|
|
416
|
+
return result.tools.map(t => t.name);
|
|
417
|
+
}
|
|
418
|
+
catch {
|
|
419
|
+
return [];
|
|
420
|
+
}
|
|
421
|
+
}
|
|
422
|
+
//# sourceMappingURL=tool-commands.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tool-commands.js","sourceRoot":"","sources":["../../src/shell/tool-commands.ts"],"names":[],"mappings":"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"}
|
package/dist/shell/types.d.ts
CHANGED
|
@@ -57,6 +57,11 @@ export declare const SHELL_BUILTINS: string[];
|
|
|
57
57
|
* Note: 'cd' is an alias for 'cc'
|
|
58
58
|
*/
|
|
59
59
|
export declare const ROUTER_COMMANDS: string[];
|
|
60
|
+
/**
|
|
61
|
+
* Shell-native tool commands (Phase 4.0)
|
|
62
|
+
* These commands interact directly with MCP servers
|
|
63
|
+
*/
|
|
64
|
+
export declare const TOOL_COMMANDS: string[];
|
|
60
65
|
/**
|
|
61
66
|
* Commands blocked in shell mode due to stdin conflicts.
|
|
62
67
|
*
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/shell/types.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH;;GAEG;AACH,MAAM,MAAM,SAAS,GAAG,KAAK,GAAG,KAAK,GAAG,GAAG,CAAC;AAE5C;;GAEG;AACH,MAAM,WAAW,YAAY;IAC3B,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,KAAK,CAAC,EAAE,SAAS,CAAC;IAClB,4CAA4C;IAC5C,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,eAAe,CAAC,EAAE,MAAM,CAAC;CAC1B;AAED;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAC/B,WAAW,EAAE,MAAM,EAAE,CAAC;IACtB,MAAM,EAAE,MAAM,CAAC;CAChB;AAED;;GAEG;AACH,MAAM,WAAW,YAAY;IAC3B,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;IACnB,WAAW,EAAE,MAAM,CAAC;IACpB,MAAM,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,OAAO,EAAE,YAAY,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;CAClE;AAED;;GAEG;AACH,eAAO,MAAM,kBAAkB,UAkB9B,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,mBAAmB,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/shell/types.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH;;GAEG;AACH,MAAM,MAAM,SAAS,GAAG,KAAK,GAAG,KAAK,GAAG,GAAG,CAAC;AAE5C;;GAEG;AACH,MAAM,WAAW,YAAY;IAC3B,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,KAAK,CAAC,EAAE,SAAS,CAAC;IAClB,4CAA4C;IAC5C,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,eAAe,CAAC,EAAE,MAAM,CAAC;CAC1B;AAED;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAC/B,WAAW,EAAE,MAAM,EAAE,CAAC;IACtB,MAAM,EAAE,MAAM,CAAC;CAChB;AAED;;GAEG;AACH,MAAM,WAAW,YAAY;IAC3B,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;IACnB,WAAW,EAAE,MAAM,CAAC;IACpB,MAAM,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,OAAO,EAAE,YAAY,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;CAClE;AAED;;GAEG;AACH,eAAO,MAAM,kBAAkB,UAkB9B,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,mBAAmB,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,CAaxD,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,cAAc,UAM1B,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,eAAe,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,CAsBpD,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,cAAc,UAA2D,CAAC;AAEvF;;;GAGG;AACH,eAAO,MAAM,eAAe,UAAmC,CAAC;AAEhE;;;GAGG;AACH,eAAO,MAAM,aAAa,UAAmB,CAAC;AAE9C;;;;;;;;;GASG;AACH,eAAO,MAAM,gBAAgB,UAAmB,CAAC;AAEjD;;;;;;;GAOG;AACH,eAAO,MAAM,4BAA4B,UASxC,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,wBAAwB,KAAK,CAAC;AAE3C;;;GAGG;AACH,eAAO,MAAM,oBAAoB,MAAM,CAAC;AAExC;;GAEG;AACH,wBAAgB,kBAAkB,IAAI,MAAM,EAAE,CAE7C"}
|
package/dist/shell/types.js
CHANGED
|
@@ -38,6 +38,7 @@ export const COMMAND_SUBCOMMANDS = {
|
|
|
38
38
|
record: ['dry-run'],
|
|
39
39
|
secrets: ['list', 'set', 'edit', 'prune', 'export', 'import'],
|
|
40
40
|
secret: ['list', 'set', 'edit', 'prune', 'export', 'import'],
|
|
41
|
+
tool: ['ls', 'list', 'show'],
|
|
41
42
|
};
|
|
42
43
|
/**
|
|
43
44
|
* Common options for commands
|
|
@@ -84,6 +85,11 @@ export const SHELL_BUILTINS = ['use', 'reset', 'pwd', 'help', 'exit', 'quit', 'c
|
|
|
84
85
|
* Note: 'cd' is an alias for 'cc'
|
|
85
86
|
*/
|
|
86
87
|
export const ROUTER_COMMANDS = ['cc', 'cd', 'ls', 'show', '..'];
|
|
88
|
+
/**
|
|
89
|
+
* Shell-native tool commands (Phase 4.0)
|
|
90
|
+
* These commands interact directly with MCP servers
|
|
91
|
+
*/
|
|
92
|
+
export const TOOL_COMMANDS = ['tool', 'send'];
|
|
87
93
|
/**
|
|
88
94
|
* Commands blocked in shell mode due to stdin conflicts.
|
|
89
95
|
*
|
package/dist/shell/types.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/shell/types.ts"],"names":[],"mappings":"AAAA;;GAEG;AAqCH;;GAEG;AACH,MAAM,CAAC,MAAM,kBAAkB,GAAG;IAChC,MAAM,EAAE,GAAG;IACX,MAAM,EAAE,GAAG;IACX,SAAS,EAAE,GAAG;IACd,MAAM,EAAE,GAAG;IACX,QAAQ,EAAE,IAAI;IACd,SAAS,EAAE,GAAG;IACd,QAAQ,EAAE,GAAG;IACb,YAAY,EAAE,WAAW;IACzB,UAAU;IACV,SAAS;IACT,QAAQ;IACR,KAAK;IACL,SAAS;IACT,aAAa;IACb,QAAQ;IACR,QAAQ;IACR,SAAS,EAAE,QAAQ;CACpB,CAAC;AAEF;;GAEG;AACH,MAAM,CAAC,MAAM,mBAAmB,GAA6B;IAC3D,IAAI,EAAE,CAAC,OAAO,CAAC;IACf,MAAM,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,UAAU,EAAE,SAAS,CAAC;IACjF,UAAU,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,QAAQ,EAAE,SAAS,EAAE,QAAQ,EAAE,QAAQ,CAAC;IAC5E,SAAS,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,QAAQ,EAAE,SAAS,EAAE,QAAQ,EAAE,QAAQ,CAAC;IAC3E,QAAQ,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,CAAC;IACnC,OAAO,EAAE,CAAC,KAAK,EAAE,QAAQ,CAAC;IAC1B,MAAM,EAAE,CAAC,IAAI,EAAE,QAAQ,CAAC;IACxB,GAAG,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC;IACrB,MAAM,EAAE,CAAC,SAAS,CAAC;IACnB,OAAO,EAAE,CAAC,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,QAAQ,EAAE,QAAQ,CAAC;IAC7D,MAAM,EAAE,CAAC,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,QAAQ,EAAE,QAAQ,CAAC;
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/shell/types.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,105 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Tool Adapter for MCP protocol (Phase 4.0)
|
|
3
|
+
*
|
|
4
|
+
* Provides a clean interface for interacting with MCP server tools:
|
|
5
|
+
* - listTools: Get available tools from a connector
|
|
6
|
+
* - getTool: Get detailed tool info including schema
|
|
7
|
+
* - callTool: Execute a tool with arguments
|
|
8
|
+
*
|
|
9
|
+
* Design notes:
|
|
10
|
+
* - Currently MCP-only, but interface is generic for future A2A support
|
|
11
|
+
* - Spawns a fresh MCP server connection for each operation
|
|
12
|
+
* - Records all RPC calls to events.db for observability
|
|
13
|
+
* - Resolves secret refs (dpapi:xxx) before spawning
|
|
14
|
+
*/
|
|
15
|
+
import type { Connector } from '../types/index.js';
|
|
16
|
+
/** Tool information from tools/list */
|
|
17
|
+
export interface ToolInfo {
|
|
18
|
+
name: string;
|
|
19
|
+
description?: string;
|
|
20
|
+
inputSchema?: ToolInputSchema;
|
|
21
|
+
}
|
|
22
|
+
/** JSON Schema for tool input */
|
|
23
|
+
export interface ToolInputSchema {
|
|
24
|
+
type: 'object';
|
|
25
|
+
properties?: Record<string, PropertySchema>;
|
|
26
|
+
required?: string[];
|
|
27
|
+
additionalProperties?: boolean;
|
|
28
|
+
}
|
|
29
|
+
/** Property schema in inputSchema */
|
|
30
|
+
export interface PropertySchema {
|
|
31
|
+
type?: string;
|
|
32
|
+
description?: string;
|
|
33
|
+
enum?: unknown[];
|
|
34
|
+
default?: unknown;
|
|
35
|
+
items?: PropertySchema;
|
|
36
|
+
properties?: Record<string, PropertySchema>;
|
|
37
|
+
required?: string[];
|
|
38
|
+
}
|
|
39
|
+
/** Tool call result */
|
|
40
|
+
export interface ToolCallResult {
|
|
41
|
+
success: boolean;
|
|
42
|
+
content?: unknown[];
|
|
43
|
+
isError?: boolean;
|
|
44
|
+
error?: string;
|
|
45
|
+
/** Session ID for the call (for events.db lookup) */
|
|
46
|
+
sessionId: string;
|
|
47
|
+
}
|
|
48
|
+
/** Context for tool operations */
|
|
49
|
+
export interface ToolContext {
|
|
50
|
+
connectorId: string;
|
|
51
|
+
configDir: string;
|
|
52
|
+
}
|
|
53
|
+
/**
|
|
54
|
+
* Get connector config by ID
|
|
55
|
+
*/
|
|
56
|
+
export declare function getConnector(configPath: string, connectorId: string): Promise<Connector | null>;
|
|
57
|
+
/**
|
|
58
|
+
* List tools available on a connector
|
|
59
|
+
*
|
|
60
|
+
* Spawns MCP server, performs handshake, calls tools/list, then closes.
|
|
61
|
+
* All RPC calls are recorded to events.db.
|
|
62
|
+
*/
|
|
63
|
+
export declare function listTools(ctx: ToolContext, connector: Connector, options?: {
|
|
64
|
+
timeout?: number;
|
|
65
|
+
}): Promise<{
|
|
66
|
+
tools: ToolInfo[];
|
|
67
|
+
sessionId: string;
|
|
68
|
+
error?: string;
|
|
69
|
+
}>;
|
|
70
|
+
/**
|
|
71
|
+
* Get detailed tool information by name
|
|
72
|
+
*/
|
|
73
|
+
export declare function getTool(ctx: ToolContext, connector: Connector, toolName: string, options?: {
|
|
74
|
+
timeout?: number;
|
|
75
|
+
}): Promise<{
|
|
76
|
+
tool: ToolInfo | null;
|
|
77
|
+
sessionId: string;
|
|
78
|
+
error?: string;
|
|
79
|
+
}>;
|
|
80
|
+
/**
|
|
81
|
+
* Call a tool with arguments
|
|
82
|
+
*
|
|
83
|
+
* Spawns MCP server, performs handshake, calls tools/call, then closes.
|
|
84
|
+
* All RPC calls are recorded to events.db.
|
|
85
|
+
*/
|
|
86
|
+
export declare function callTool(ctx: ToolContext, connector: Connector, toolName: string, args: Record<string, unknown>, options?: {
|
|
87
|
+
timeout?: number;
|
|
88
|
+
}): Promise<ToolCallResult>;
|
|
89
|
+
/**
|
|
90
|
+
* Format tool input schema for display
|
|
91
|
+
*/
|
|
92
|
+
export declare function formatInputSchema(schema: ToolInputSchema | undefined): {
|
|
93
|
+
required: Array<{
|
|
94
|
+
name: string;
|
|
95
|
+
type?: string;
|
|
96
|
+
description?: string;
|
|
97
|
+
}>;
|
|
98
|
+
optional: Array<{
|
|
99
|
+
name: string;
|
|
100
|
+
type?: string;
|
|
101
|
+
description?: string;
|
|
102
|
+
default?: unknown;
|
|
103
|
+
}>;
|
|
104
|
+
};
|
|
105
|
+
//# sourceMappingURL=adapter.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"adapter.d.ts","sourceRoot":"","sources":["../../src/tools/adapter.ts"],"names":[],"mappings":"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"}
|