@supernal/interface 1.0.4 → 1.0.7
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/cjs/src/ai/AIInterface.js +183 -0
- package/dist/cjs/src/ai/AIInterface.js.map +1 -0
- package/dist/cjs/src/ai/ParameterExtractor.js +140 -0
- package/dist/cjs/src/ai/ParameterExtractor.js.map +1 -0
- package/dist/cjs/src/ai/SuggestionEngine.js +157 -0
- package/dist/cjs/src/ai/SuggestionEngine.js.map +1 -0
- package/dist/cjs/src/ai/ToolMatcher.js +20 -1
- package/dist/cjs/src/ai/ToolMatcher.js.map +1 -1
- package/dist/cjs/src/ai/index.js +5 -7
- package/dist/cjs/src/ai/index.js.map +1 -1
- package/dist/cjs/src/background/registry/ToolRegistry.js +28 -3
- package/dist/cjs/src/background/registry/ToolRegistry.js.map +1 -1
- package/dist/cjs/src/browser.js +9 -1
- package/dist/cjs/src/browser.js.map +1 -1
- package/dist/cjs/src/decorators/ToolHelpers.js +3 -3
- package/dist/cjs/src/decorators/ToolHelpers.js.map +1 -1
- package/dist/cjs/src/index.js +3 -1
- package/dist/cjs/src/index.js.map +1 -1
- package/dist/esm/src/ai/AIInterface.d.ts +79 -0
- package/dist/esm/src/ai/AIInterface.d.ts.map +1 -0
- package/dist/esm/src/ai/AIInterface.js +179 -0
- package/dist/esm/src/ai/AIInterface.js.map +1 -0
- package/dist/esm/src/ai/ParameterExtractor.d.ts +50 -0
- package/dist/esm/src/ai/ParameterExtractor.d.ts.map +1 -0
- package/dist/esm/src/ai/ParameterExtractor.js +136 -0
- package/dist/esm/src/ai/ParameterExtractor.js.map +1 -0
- package/dist/esm/src/ai/SuggestionEngine.d.ts +43 -0
- package/dist/esm/src/ai/SuggestionEngine.d.ts.map +1 -0
- package/dist/esm/src/ai/SuggestionEngine.js +153 -0
- package/dist/esm/src/ai/SuggestionEngine.js.map +1 -0
- package/dist/esm/src/ai/ToolMatcher.js +20 -1
- package/dist/esm/src/ai/ToolMatcher.js.map +1 -1
- package/dist/esm/src/ai/index.d.ts +5 -3
- package/dist/esm/src/ai/index.d.ts.map +1 -1
- package/dist/esm/src/ai/index.js +5 -7
- package/dist/esm/src/ai/index.js.map +1 -1
- package/dist/esm/src/background/registry/ToolRegistry.d.ts.map +1 -1
- package/dist/esm/src/background/registry/ToolRegistry.js +28 -3
- package/dist/esm/src/background/registry/ToolRegistry.js.map +1 -1
- package/dist/esm/src/browser.d.ts +3 -0
- package/dist/esm/src/browser.d.ts.map +1 -1
- package/dist/esm/src/browser.js +4 -0
- package/dist/esm/src/browser.js.map +1 -1
- package/dist/esm/src/decorators/ToolHelpers.js +3 -3
- package/dist/esm/src/decorators/ToolHelpers.js.map +1 -1
- package/dist/esm/src/index.d.ts +1 -0
- package/dist/esm/src/index.d.ts.map +1 -1
- package/dist/esm/src/index.js +1 -0
- package/dist/esm/src/index.js.map +1 -1
- package/package.json +1 -1
|
@@ -0,0 +1,183 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Generic AI Interface for Tool Command Processing
|
|
4
|
+
*
|
|
5
|
+
* Uses core abstractions:
|
|
6
|
+
* - ToolMatcher (pluggable matching strategies)
|
|
7
|
+
* - ParameterExtractor (declarative parameter extraction)
|
|
8
|
+
* - ToolExecutor (universal execution engine)
|
|
9
|
+
* - SuggestionEngine ("Did You Mean?" system)
|
|
10
|
+
*
|
|
11
|
+
* NO HARDCODED ROUTES - everything is inferred from NavigationGraph
|
|
12
|
+
*/
|
|
13
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
14
|
+
exports.AIInterface = void 0;
|
|
15
|
+
const ToolRegistry_1 = require("../background/registry/ToolRegistry");
|
|
16
|
+
const NavigationGraph_1 = require("../background/navigation/NavigationGraph");
|
|
17
|
+
const ToolMatcher_1 = require("./ToolMatcher");
|
|
18
|
+
const ParameterExtractor_1 = require("./ParameterExtractor");
|
|
19
|
+
const ToolExecutor_1 = require("./ToolExecutor");
|
|
20
|
+
const SuggestionEngine_1 = require("./SuggestionEngine");
|
|
21
|
+
/**
|
|
22
|
+
* Generic AI Interface - works for ANY app with ZERO configuration
|
|
23
|
+
* Container detection is INFERRED from NavigationGraph
|
|
24
|
+
*
|
|
25
|
+
* Supports pluggable matching strategies via ToolMatcher.
|
|
26
|
+
* For LLM-based matching, see @supernalintelligence/interface-enterprise
|
|
27
|
+
*/
|
|
28
|
+
class AIInterface {
|
|
29
|
+
constructor() {
|
|
30
|
+
// Initialize core abstractions
|
|
31
|
+
this.matcher = new ToolMatcher_1.ToolMatcher();
|
|
32
|
+
this.paramExtractor = new ParameterExtractor_1.ParameterExtractor();
|
|
33
|
+
this.executor = new ToolExecutor_1.ToolExecutor();
|
|
34
|
+
this.suggestionEngine = new SuggestionEngine_1.SuggestionEngine();
|
|
35
|
+
}
|
|
36
|
+
/**
|
|
37
|
+
* Register a custom matcher strategy (for BYOK LLM integration)
|
|
38
|
+
* @param strategy Custom matching strategy
|
|
39
|
+
*/
|
|
40
|
+
registerMatcherStrategy(strategy) {
|
|
41
|
+
this.matcher.registerStrategy(strategy);
|
|
42
|
+
}
|
|
43
|
+
/**
|
|
44
|
+
* Get current container - INFERRED from NavigationGraph
|
|
45
|
+
* NO HARDCODED ROUTE MAPPINGS
|
|
46
|
+
*/
|
|
47
|
+
getCurrentContext() {
|
|
48
|
+
if (typeof window === 'undefined') {
|
|
49
|
+
return {
|
|
50
|
+
currentContainer: 'unknown',
|
|
51
|
+
currentPage: 'unknown'
|
|
52
|
+
};
|
|
53
|
+
}
|
|
54
|
+
// Use the context set by useContainer() hook, NOT route inference
|
|
55
|
+
// This ensures the context matches what the page component registered
|
|
56
|
+
const graph = NavigationGraph_1.NavigationGraph.getInstance();
|
|
57
|
+
const currentContainer = graph.getCurrentContext() || 'unknown';
|
|
58
|
+
return {
|
|
59
|
+
currentContainer,
|
|
60
|
+
currentPage: currentContainer
|
|
61
|
+
};
|
|
62
|
+
}
|
|
63
|
+
/**
|
|
64
|
+
* Find matching tools using ToolMatcher
|
|
65
|
+
*/
|
|
66
|
+
async findToolsForCommand(query) {
|
|
67
|
+
console.log(`🔍 [AI] Finding tools for: "${query}"`);
|
|
68
|
+
// Get all available tools
|
|
69
|
+
const toolsMap = ToolRegistry_1.ToolRegistry.getAllTools();
|
|
70
|
+
const allTools = Array.from(toolsMap.values());
|
|
71
|
+
const context = this.getCurrentContext();
|
|
72
|
+
console.log(`📍 [AI] Current context:`, context);
|
|
73
|
+
// Filter tools by current container
|
|
74
|
+
// Priority: 1) Scoped to current container, 2) Global (no containerId), 3) Global navigation
|
|
75
|
+
const scopedTools = allTools.filter(tool => tool.containerId === context.currentContainer);
|
|
76
|
+
const globalTools = allTools.filter(tool => !tool.containerId);
|
|
77
|
+
const navigationTools = allTools.filter(tool => tool.containerId !== context.currentContainer && tool.category === 'navigation');
|
|
78
|
+
console.log(`📦 [AI] Scoped tools: ${scopedTools.length}, Global tools: ${globalTools.length}, Navigation tools: ${navigationTools.length}`);
|
|
79
|
+
// Combine: scoped first, then global, then navigation
|
|
80
|
+
const contextTools = [...scopedTools, ...globalTools, ...navigationTools];
|
|
81
|
+
console.log(`📦 [AI] Total filtered to ${contextTools.length} tools for context: ${context.currentContainer}`);
|
|
82
|
+
// Use ToolMatcher to find matches
|
|
83
|
+
const matches = await this.matcher.findMatches(query, contextTools, context, 5);
|
|
84
|
+
// Convert to AICommand format
|
|
85
|
+
const commands = matches.map(match => ({
|
|
86
|
+
query,
|
|
87
|
+
tool: match.tool,
|
|
88
|
+
confidence: match.confidence,
|
|
89
|
+
requiresApproval: match.tool.dangerLevel === 'dangerous' || match.tool.dangerLevel === 'destructive',
|
|
90
|
+
parameters: match.parameters || []
|
|
91
|
+
}));
|
|
92
|
+
console.log(`✅ [AI] Found ${commands.length} matching tools:`, commands.map(c => `${c.tool?.name} (${Math.round((c.confidence || 0) * 100)}%)`));
|
|
93
|
+
return commands;
|
|
94
|
+
}
|
|
95
|
+
/**
|
|
96
|
+
* Execute a command using ToolExecutor
|
|
97
|
+
*/
|
|
98
|
+
async executeCommand(commands, useFirstMatch = true) {
|
|
99
|
+
if (commands.length === 0) {
|
|
100
|
+
// Use SuggestionEngine for helpful response
|
|
101
|
+
const toolsMap = ToolRegistry_1.ToolRegistry.getAllTools();
|
|
102
|
+
const allTools = Array.from(toolsMap.values());
|
|
103
|
+
const context = this.getCurrentContext();
|
|
104
|
+
// Get available commands for current context
|
|
105
|
+
const contextTools = allTools.filter(t => t.aiEnabled &&
|
|
106
|
+
(!t.containerId || t.containerId === context.currentContainer || t.category === 'navigation'));
|
|
107
|
+
const examples = contextTools.flatMap(t => t.examples || []).slice(0, 5);
|
|
108
|
+
return {
|
|
109
|
+
success: false,
|
|
110
|
+
message: `❓ No matching command found.\n\n💡 Try:\n${examples.map(ex => `• "${ex}"`).join('\n')}`,
|
|
111
|
+
timestamp: new Date().toISOString()
|
|
112
|
+
};
|
|
113
|
+
}
|
|
114
|
+
const command = commands[0]; // Use highest confidence match
|
|
115
|
+
if (!command.tool) {
|
|
116
|
+
return {
|
|
117
|
+
success: false,
|
|
118
|
+
message: `❌ No tool found for command`,
|
|
119
|
+
timestamp: new Date().toISOString()
|
|
120
|
+
};
|
|
121
|
+
}
|
|
122
|
+
console.log(`🎯 [AI] Executing: ${command.tool.name}`);
|
|
123
|
+
// Extract parameters using ParameterExtractor
|
|
124
|
+
const extraction = await this.paramExtractor.extract(command.query, command.tool);
|
|
125
|
+
const parameters = extraction.parameters.length > 0 ? extraction.parameters : command.parameters;
|
|
126
|
+
console.log(`📋 [AI] Parameters:`, parameters);
|
|
127
|
+
// Execute using ToolExecutor
|
|
128
|
+
try {
|
|
129
|
+
const result = await this.executor.execute(command.tool, parameters || []);
|
|
130
|
+
return {
|
|
131
|
+
success: result.success,
|
|
132
|
+
message: result.success ? `✅ ${result.message}` : `❌ ${result.message}`,
|
|
133
|
+
executedTool: command.tool.name,
|
|
134
|
+
timestamp: new Date().toISOString()
|
|
135
|
+
};
|
|
136
|
+
}
|
|
137
|
+
catch (error) {
|
|
138
|
+
const errorMsg = error instanceof Error ? error.message : String(error);
|
|
139
|
+
return {
|
|
140
|
+
success: false,
|
|
141
|
+
message: `❌ ${errorMsg}`,
|
|
142
|
+
timestamp: new Date().toISOString()
|
|
143
|
+
};
|
|
144
|
+
}
|
|
145
|
+
}
|
|
146
|
+
/**
|
|
147
|
+
* CONVENIENCE: Process a text query end-to-end
|
|
148
|
+
*/
|
|
149
|
+
async processQuery(query) {
|
|
150
|
+
const commands = await this.findToolsForCommand(query);
|
|
151
|
+
return this.executeCommand(commands, true);
|
|
152
|
+
}
|
|
153
|
+
/**
|
|
154
|
+
* Get all available commands for help/autocomplete
|
|
155
|
+
*/
|
|
156
|
+
getAvailableCommands() {
|
|
157
|
+
const toolsMap = ToolRegistry_1.ToolRegistry.getAllTools();
|
|
158
|
+
const allTools = Array.from(toolsMap.values());
|
|
159
|
+
const context = this.getCurrentContext();
|
|
160
|
+
// Filter by current context
|
|
161
|
+
const contextTools = allTools.filter(tool => !tool.containerId ||
|
|
162
|
+
tool.containerId === context.currentContainer ||
|
|
163
|
+
tool.category === 'navigation');
|
|
164
|
+
// Extract examples
|
|
165
|
+
const commands = [];
|
|
166
|
+
for (const tool of contextTools) {
|
|
167
|
+
const examples = tool.examples || [];
|
|
168
|
+
commands.push(...examples);
|
|
169
|
+
}
|
|
170
|
+
return commands;
|
|
171
|
+
}
|
|
172
|
+
/**
|
|
173
|
+
* Get suggestions for incomplete query (autocomplete)
|
|
174
|
+
*/
|
|
175
|
+
async getSuggestions(partialQuery) {
|
|
176
|
+
const toolsMap = ToolRegistry_1.ToolRegistry.getAllTools();
|
|
177
|
+
const allTools = Array.from(toolsMap.values());
|
|
178
|
+
const suggestions = this.suggestionEngine.getSuggestions(partialQuery, allTools, 5);
|
|
179
|
+
return suggestions.map(s => s.text);
|
|
180
|
+
}
|
|
181
|
+
}
|
|
182
|
+
exports.AIInterface = AIInterface;
|
|
183
|
+
//# sourceMappingURL=AIInterface.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"AIInterface.js","sourceRoot":"","sources":["../../../../src/ai/AIInterface.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,140 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* ParameterExtractor - Extract parameters from natural language queries
|
|
4
|
+
*
|
|
5
|
+
* Supports multiple extraction strategies:
|
|
6
|
+
* - Pattern-based (using tool examples)
|
|
7
|
+
* - Entity extraction (dates, numbers, names)
|
|
8
|
+
* - LLM-based extraction (structured JSON)
|
|
9
|
+
*/
|
|
10
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
11
|
+
exports.ParameterExtractor = void 0;
|
|
12
|
+
/**
|
|
13
|
+
* Main ParameterExtractor orchestrator
|
|
14
|
+
*/
|
|
15
|
+
class ParameterExtractor {
|
|
16
|
+
constructor() {
|
|
17
|
+
this.strategies = [];
|
|
18
|
+
// Register default strategies
|
|
19
|
+
this.registerStrategy(new PatternExtractor());
|
|
20
|
+
this.registerStrategy(new EntityExtractor());
|
|
21
|
+
}
|
|
22
|
+
/**
|
|
23
|
+
* Register a new extraction strategy
|
|
24
|
+
*/
|
|
25
|
+
registerStrategy(strategy) {
|
|
26
|
+
this.strategies.push(strategy);
|
|
27
|
+
this.strategies.sort((a, b) => b.priority - a.priority);
|
|
28
|
+
}
|
|
29
|
+
/**
|
|
30
|
+
* Extract parameters from query for a specific tool
|
|
31
|
+
*/
|
|
32
|
+
async extract(query, tool) {
|
|
33
|
+
// Try each strategy in priority order
|
|
34
|
+
for (const strategy of this.strategies) {
|
|
35
|
+
try {
|
|
36
|
+
const result = await strategy.extract(query, tool);
|
|
37
|
+
if (result && result.confidence >= 60) {
|
|
38
|
+
console.log(`✅ [ParamExtract] Used strategy: ${strategy.name}`, result);
|
|
39
|
+
return result;
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
catch (error) {
|
|
43
|
+
console.warn(`[ParamExtract] Strategy ${strategy.name} failed:`, error);
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
// No successful extraction
|
|
47
|
+
return {
|
|
48
|
+
parameters: [],
|
|
49
|
+
confidence: 0,
|
|
50
|
+
reasoning: 'No extraction strategy succeeded'
|
|
51
|
+
};
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
exports.ParameterExtractor = ParameterExtractor;
|
|
55
|
+
/**
|
|
56
|
+
* Pattern-based extraction using tool examples
|
|
57
|
+
*/
|
|
58
|
+
class PatternExtractor {
|
|
59
|
+
constructor() {
|
|
60
|
+
this.name = 'pattern';
|
|
61
|
+
this.priority = 80;
|
|
62
|
+
}
|
|
63
|
+
async extract(query, tool) {
|
|
64
|
+
const examples = tool.examples || [];
|
|
65
|
+
if (examples.length === 0) {
|
|
66
|
+
return null;
|
|
67
|
+
}
|
|
68
|
+
const lowerQuery = query.toLowerCase().trim();
|
|
69
|
+
// Try to match each example pattern
|
|
70
|
+
for (const example of examples) {
|
|
71
|
+
const pattern = example.toLowerCase();
|
|
72
|
+
// Check if query starts with the pattern
|
|
73
|
+
if (lowerQuery.startsWith(pattern)) {
|
|
74
|
+
// Extract trailing text as parameter
|
|
75
|
+
const trailing = query.substring(example.length).trim();
|
|
76
|
+
if (trailing) {
|
|
77
|
+
console.log(`🔍 [PatternExtract] Matched: "${example}" → param: "${trailing}"`);
|
|
78
|
+
return {
|
|
79
|
+
parameters: [trailing],
|
|
80
|
+
confidence: 90,
|
|
81
|
+
reasoning: `Matched pattern: "${example}"`
|
|
82
|
+
};
|
|
83
|
+
}
|
|
84
|
+
}
|
|
85
|
+
// Check if pattern contains a placeholder (e.g., "open blog {title}")
|
|
86
|
+
const placeholderMatch = pattern.match(/\{(\w+)\}/);
|
|
87
|
+
if (placeholderMatch) {
|
|
88
|
+
// Create a regex from the pattern
|
|
89
|
+
const regexPattern = pattern.replace(/\{(\w+)\}/g, '(.+?)');
|
|
90
|
+
const regex = new RegExp(`^${regexPattern}$`, 'i');
|
|
91
|
+
const match = lowerQuery.match(regex);
|
|
92
|
+
if (match && match[1]) {
|
|
93
|
+
console.log(`🔍 [PatternExtract] Placeholder match: "${example}" → param: "${match[1]}"`);
|
|
94
|
+
return {
|
|
95
|
+
parameters: [match[1].trim()],
|
|
96
|
+
confidence: 95,
|
|
97
|
+
reasoning: `Matched placeholder in: "${example}"`
|
|
98
|
+
};
|
|
99
|
+
}
|
|
100
|
+
}
|
|
101
|
+
}
|
|
102
|
+
return null;
|
|
103
|
+
}
|
|
104
|
+
}
|
|
105
|
+
/**
|
|
106
|
+
* Entity extraction for common types (numbers, dates, etc.)
|
|
107
|
+
*/
|
|
108
|
+
class EntityExtractor {
|
|
109
|
+
constructor() {
|
|
110
|
+
this.name = 'entity';
|
|
111
|
+
this.priority = 60;
|
|
112
|
+
}
|
|
113
|
+
async extract(query, tool) {
|
|
114
|
+
const parameters = [];
|
|
115
|
+
// Extract numbers
|
|
116
|
+
const numberMatch = query.match(/\d+/);
|
|
117
|
+
if (numberMatch) {
|
|
118
|
+
parameters.push(parseInt(numberMatch[0], 10));
|
|
119
|
+
}
|
|
120
|
+
// Extract quoted strings
|
|
121
|
+
const quotedMatch = query.match(/"([^"]+)"/);
|
|
122
|
+
if (quotedMatch) {
|
|
123
|
+
parameters.push(quotedMatch[1]);
|
|
124
|
+
}
|
|
125
|
+
// Extract common entities (colors, themes, etc.)
|
|
126
|
+
const colorMatch = query.match(/\b(red|blue|green|dark|light|black|white)\b/i);
|
|
127
|
+
if (colorMatch) {
|
|
128
|
+
parameters.push(colorMatch[1].toLowerCase());
|
|
129
|
+
}
|
|
130
|
+
if (parameters.length > 0) {
|
|
131
|
+
return {
|
|
132
|
+
parameters,
|
|
133
|
+
confidence: 70,
|
|
134
|
+
reasoning: `Extracted ${parameters.length} entities`
|
|
135
|
+
};
|
|
136
|
+
}
|
|
137
|
+
return null;
|
|
138
|
+
}
|
|
139
|
+
}
|
|
140
|
+
//# sourceMappingURL=ParameterExtractor.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ParameterExtractor.js","sourceRoot":"","sources":["../../../../src/ai/ParameterExtractor.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,157 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* SuggestionEngine - "Did You Mean?" system for invalid queries
|
|
4
|
+
*
|
|
5
|
+
* Provides helpful suggestions when user queries don't match any tools:
|
|
6
|
+
* - Typo detection (Levenshtein distance)
|
|
7
|
+
* - Similar command suggestions
|
|
8
|
+
* - Available command list
|
|
9
|
+
*/
|
|
10
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
11
|
+
exports.SuggestionEngine = void 0;
|
|
12
|
+
/**
|
|
13
|
+
* SuggestionEngine for generating "Did You Mean?" prompts
|
|
14
|
+
*/
|
|
15
|
+
class SuggestionEngine {
|
|
16
|
+
/**
|
|
17
|
+
* Generate suggestions for an invalid/ambiguous query
|
|
18
|
+
* @param query User's query
|
|
19
|
+
* @param tools Available tools
|
|
20
|
+
* @param maxSuggestions Maximum number of suggestions to return
|
|
21
|
+
*/
|
|
22
|
+
getSuggestions(query, tools, maxSuggestions = 5) {
|
|
23
|
+
const suggestions = [];
|
|
24
|
+
const lowerQuery = query.toLowerCase().trim();
|
|
25
|
+
// 1. Check for typos (Levenshtein distance ≤ 3)
|
|
26
|
+
for (const tool of tools) {
|
|
27
|
+
const examples = tool.examples || [];
|
|
28
|
+
const allPhrases = [tool.name, ...examples];
|
|
29
|
+
for (const phrase of allPhrases) {
|
|
30
|
+
const distance = this.levenshtein(lowerQuery, phrase.toLowerCase());
|
|
31
|
+
if (distance <= 3 && distance > 0) {
|
|
32
|
+
const confidence = Math.round((1 - distance / Math.max(lowerQuery.length, phrase.length)) * 100);
|
|
33
|
+
suggestions.push({
|
|
34
|
+
text: phrase,
|
|
35
|
+
confidence,
|
|
36
|
+
type: 'typo',
|
|
37
|
+
tool
|
|
38
|
+
});
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
// 2. Find similar commands (keyword overlap)
|
|
43
|
+
const queryWords = lowerQuery.split(/\s+/);
|
|
44
|
+
for (const tool of tools) {
|
|
45
|
+
const examples = tool.examples || [];
|
|
46
|
+
const toolWords = [
|
|
47
|
+
...tool.name.toLowerCase().split(/\s+/),
|
|
48
|
+
...(tool.description?.toLowerCase().split(/\s+/) || []),
|
|
49
|
+
...examples.flatMap((e) => e.toLowerCase().split(/\s+/))
|
|
50
|
+
];
|
|
51
|
+
const overlap = queryWords.filter(w => toolWords.includes(w)).length;
|
|
52
|
+
if (overlap > 0) {
|
|
53
|
+
const confidence = Math.round((overlap / queryWords.length) * 100);
|
|
54
|
+
// Use first example if available, otherwise tool name
|
|
55
|
+
const text = examples[0] || tool.name;
|
|
56
|
+
suggestions.push({
|
|
57
|
+
text,
|
|
58
|
+
confidence,
|
|
59
|
+
type: 'similar',
|
|
60
|
+
tool
|
|
61
|
+
});
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
// 3. Category-based suggestions
|
|
65
|
+
const categoryMatch = this.matchCategory(lowerQuery);
|
|
66
|
+
if (categoryMatch) {
|
|
67
|
+
const categoryTools = tools.filter(t => t.category === categoryMatch);
|
|
68
|
+
for (const tool of categoryTools.slice(0, 3)) {
|
|
69
|
+
const examples = tool.examples || [];
|
|
70
|
+
const text = examples[0] || tool.name;
|
|
71
|
+
suggestions.push({
|
|
72
|
+
text,
|
|
73
|
+
confidence: 60,
|
|
74
|
+
type: 'category',
|
|
75
|
+
tool
|
|
76
|
+
});
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
// Sort by confidence and deduplicate
|
|
80
|
+
const sorted = suggestions
|
|
81
|
+
.sort((a, b) => b.confidence - a.confidence)
|
|
82
|
+
.filter((s, i, arr) =>
|
|
83
|
+
// Remove duplicates (same text)
|
|
84
|
+
i === arr.findIndex(other => other.text === s.text))
|
|
85
|
+
.slice(0, maxSuggestions);
|
|
86
|
+
return sorted;
|
|
87
|
+
}
|
|
88
|
+
/**
|
|
89
|
+
* Format suggestions into a user-friendly message
|
|
90
|
+
*/
|
|
91
|
+
formatSuggestions(suggestions) {
|
|
92
|
+
if (suggestions.length === 0) {
|
|
93
|
+
return 'No suggestions available. Try typing "help" to see all commands.';
|
|
94
|
+
}
|
|
95
|
+
const typos = suggestions.filter(s => s.type === 'typo');
|
|
96
|
+
const similar = suggestions.filter(s => s.type === 'similar' || s.type === 'category');
|
|
97
|
+
let message = '';
|
|
98
|
+
if (typos.length > 0) {
|
|
99
|
+
message += '❓ Did you mean?\n';
|
|
100
|
+
for (const typo of typos.slice(0, 3)) {
|
|
101
|
+
message += ` • "${typo.text}"\n`;
|
|
102
|
+
}
|
|
103
|
+
}
|
|
104
|
+
if (similar.length > 0) {
|
|
105
|
+
if (message)
|
|
106
|
+
message += '\n';
|
|
107
|
+
message += '💡 Similar commands:\n';
|
|
108
|
+
for (const sim of similar.slice(0, 3)) {
|
|
109
|
+
message += ` • "${sim.text}"\n`;
|
|
110
|
+
}
|
|
111
|
+
}
|
|
112
|
+
return message.trim();
|
|
113
|
+
}
|
|
114
|
+
/**
|
|
115
|
+
* Match query to a category
|
|
116
|
+
*/
|
|
117
|
+
matchCategory(query) {
|
|
118
|
+
const categories = {
|
|
119
|
+
'navigation': ['go', 'open', 'navigate', 'show', 'view', 'page'],
|
|
120
|
+
'theme': ['theme', 'color', 'dark', 'light', 'appearance'],
|
|
121
|
+
'data': ['load', 'fetch', 'get', 'data', 'retrieve'],
|
|
122
|
+
'form': ['submit', 'save', 'form', 'input', 'enter'],
|
|
123
|
+
'state': ['set', 'change', 'update', 'modify', 'status']
|
|
124
|
+
};
|
|
125
|
+
for (const [category, keywords] of Object.entries(categories)) {
|
|
126
|
+
if (keywords.some(kw => query.includes(kw))) {
|
|
127
|
+
return category;
|
|
128
|
+
}
|
|
129
|
+
}
|
|
130
|
+
return null;
|
|
131
|
+
}
|
|
132
|
+
/**
|
|
133
|
+
* Calculate Levenshtein distance between two strings
|
|
134
|
+
*/
|
|
135
|
+
levenshtein(a, b) {
|
|
136
|
+
const matrix = [];
|
|
137
|
+
for (let i = 0; i <= b.length; i++) {
|
|
138
|
+
matrix[i] = [i];
|
|
139
|
+
}
|
|
140
|
+
for (let j = 0; j <= a.length; j++) {
|
|
141
|
+
matrix[0][j] = j;
|
|
142
|
+
}
|
|
143
|
+
for (let i = 1; i <= b.length; i++) {
|
|
144
|
+
for (let j = 1; j <= a.length; j++) {
|
|
145
|
+
if (b.charAt(i - 1) === a.charAt(j - 1)) {
|
|
146
|
+
matrix[i][j] = matrix[i - 1][j - 1];
|
|
147
|
+
}
|
|
148
|
+
else {
|
|
149
|
+
matrix[i][j] = Math.min(matrix[i - 1][j - 1] + 1, matrix[i][j - 1] + 1, matrix[i - 1][j] + 1);
|
|
150
|
+
}
|
|
151
|
+
}
|
|
152
|
+
}
|
|
153
|
+
return matrix[b.length][a.length];
|
|
154
|
+
}
|
|
155
|
+
}
|
|
156
|
+
exports.SuggestionEngine = SuggestionEngine;
|
|
157
|
+
//# sourceMappingURL=SuggestionEngine.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"SuggestionEngine.js","sourceRoot":"","sources":["../../../../src/ai/SuggestionEngine.ts"],"names":[],"mappings":";AAAA;;;;;;;GAOG;;;AAcH;;GAEG;AACH,MAAa,gBAAgB;IAC3B;;;;;OAKG;IACH,cAAc,CACZ,KAAa,EACb,KAAqB,EACrB,iBAAyB,CAAC;QAE1B,MAAM,WAAW,GAAiB,EAAE,CAAC;QACrC,MAAM,UAAU,GAAG,KAAK,CAAC,WAAW,EAAE,CAAC,IAAI,EAAE,CAAC;QAE9C,gDAAgD;QAChD,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;YACzB,MAAM,QAAQ,GAAI,IAAY,CAAC,QAAQ,IAAI,EAAE,CAAC;YAC9C,MAAM,UAAU,GAAG,CAAC,IAAI,CAAC,IAAI,EAAE,GAAG,QAAQ,CAAC,CAAC;YAE5C,KAAK,MAAM,MAAM,IAAI,UAAU,EAAE,CAAC;gBAChC,MAAM,QAAQ,GAAG,IAAI,CAAC,WAAW,CAAC,UAAU,EAAE,MAAM,CAAC,WAAW,EAAE,CAAC,CAAC;gBAEpE,IAAI,QAAQ,IAAI,CAAC,IAAI,QAAQ,GAAG,CAAC,EAAE,CAAC;oBAClC,MAAM,UAAU,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,QAAQ,GAAG,IAAI,CAAC,GAAG,CAAC,UAAU,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC;oBAEjG,WAAW,CAAC,IAAI,CAAC;wBACf,IAAI,EAAE,MAAM;wBACZ,UAAU;wBACV,IAAI,EAAE,MAAM;wBACZ,IAAI;qBACL,CAAC,CAAC;gBACL,CAAC;YACH,CAAC;QACH,CAAC;QAED,6CAA6C;QAC7C,MAAM,UAAU,GAAG,UAAU,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;QAC3C,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;YACzB,MAAM,QAAQ,GAAI,IAAY,CAAC,QAAQ,IAAI,EAAE,CAAC;YAC9C,MAAM,SAAS,GAAG;gBAChB,GAAG,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC;gBACvC,GAAG,CAAC,IAAI,CAAC,WAAW,EAAE,WAAW,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC;gBACvD,GAAG,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAS,EAAE,EAAE,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;aACjE,CAAC;YAEF,MAAM,OAAO,GAAG,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC;YACrE,IAAI,OAAO,GAAG,CAAC,EAAE,CAAC;gBAChB,MAAM,UAAU,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,OAAO,GAAG,UAAU,CAAC,MAAM,CAAC,GAAG,GAAG,CAAC,CAAC;gBAEnE,sDAAsD;gBACtD,MAAM,IAAI,GAAG,QAAQ,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC;gBAEtC,WAAW,CAAC,IAAI,CAAC;oBACf,IAAI;oBACJ,UAAU;oBACV,IAAI,EAAE,SAAS;oBACf,IAAI;iBACL,CAAC,CAAC;YACL,CAAC;QACH,CAAC;QAED,gCAAgC;QAChC,MAAM,aAAa,GAAG,IAAI,CAAC,aAAa,CAAC,UAAU,CAAC,CAAC;QACrD,IAAI,aAAa,EAAE,CAAC;YAClB,MAAM,aAAa,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,QAAQ,KAAK,aAAa,CAAC,CAAC;YACtE,KAAK,MAAM,IAAI,IAAI,aAAa,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC;gBAC7C,MAAM,QAAQ,GAAI,IAAY,CAAC,QAAQ,IAAI,EAAE,CAAC;gBAC9C,MAAM,IAAI,GAAG,QAAQ,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC;gBAEtC,WAAW,CAAC,IAAI,CAAC;oBACf,IAAI;oBACJ,UAAU,EAAE,EAAE;oBACd,IAAI,EAAE,UAAU;oBAChB,IAAI;iBACL,CAAC,CAAC;YACL,CAAC;QACH,CAAC;QAED,qCAAqC;QACrC,MAAM,MAAM,GAAG,WAAW;aACvB,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,UAAU,GAAG,CAAC,CAAC,UAAU,CAAC;aAC3C,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,GAAG,EAAE,EAAE;QACpB,gCAAgC;QAChC,CAAC,KAAK,GAAG,CAAC,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,CAAC,IAAI,KAAK,CAAC,CAAC,IAAI,CAAC,CACpD;aACA,KAAK,CAAC,CAAC,EAAE,cAAc,CAAC,CAAC;QAE5B,OAAO,MAAM,CAAC;IAChB,CAAC;IAED;;OAEG;IACH,iBAAiB,CAAC,WAAyB;QACzC,IAAI,WAAW,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC7B,OAAO,kEAAkE,CAAC;QAC5E,CAAC;QAED,MAAM,KAAK,GAAG,WAAW,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,MAAM,CAAC,CAAC;QACzD,MAAM,OAAO,GAAG,WAAW,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,SAAS,IAAI,CAAC,CAAC,IAAI,KAAK,UAAU,CAAC,CAAC;QAEvF,IAAI,OAAO,GAAG,EAAE,CAAC;QAEjB,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACrB,OAAO,IAAI,mBAAmB,CAAC;YAC/B,KAAK,MAAM,IAAI,IAAI,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC;gBACrC,OAAO,IAAI,QAAQ,IAAI,CAAC,IAAI,KAAK,CAAC;YACpC,CAAC;QACH,CAAC;QAED,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACvB,IAAI,OAAO;gBAAE,OAAO,IAAI,IAAI,CAAC;YAC7B,OAAO,IAAI,wBAAwB,CAAC;YACpC,KAAK,MAAM,GAAG,IAAI,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC;gBACtC,OAAO,IAAI,QAAQ,GAAG,CAAC,IAAI,KAAK,CAAC;YACnC,CAAC;QACH,CAAC;QAED,OAAO,OAAO,CAAC,IAAI,EAAE,CAAC;IACxB,CAAC;IAED;;OAEG;IACK,aAAa,CAAC,KAAa;QACjC,MAAM,UAAU,GAA6B;YAC3C,YAAY,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC;YAChE,OAAO,EAAE,CAAC,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,YAAY,CAAC;YAC1D,MAAM,EAAE,CAAC,MAAM,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,UAAU,CAAC;YACpD,MAAM,EAAE,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,CAAC;YACpD,OAAO,EAAE,CAAC,KAAK,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,CAAC;SACzD,CAAC;QAEF,KAAK,MAAM,CAAC,QAAQ,EAAE,QAAQ,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,UAAU,CAAC,EAAE,CAAC;YAC9D,IAAI,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC;gBAC5C,OAAO,QAAQ,CAAC;YAClB,CAAC;QACH,CAAC;QAED,OAAO,IAAI,CAAC;IACd,CAAC;IAED;;OAEG;IACK,WAAW,CAAC,CAAS,EAAE,CAAS;QACtC,MAAM,MAAM,GAAe,EAAE,CAAC;QAE9B,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;YACnC,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;QAED,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;YACnC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;QACnB,CAAC;QAED,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;YACnC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;gBACnC,IAAI,CAAC,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC;oBACxC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;gBACtC,CAAC;qBAAM,CAAC;oBACN,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,CACrB,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,EACxB,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,EACpB,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CACrB,CAAC;gBACJ,CAAC;YACH,CAAC;QACH,CAAC;QAED,OAAO,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC;IACpC,CAAC;CACF;AA7KD,4CA6KC"}
|
|
@@ -141,11 +141,30 @@ class FuzzyMatcher {
|
|
|
141
141
|
// Check examples similarity
|
|
142
142
|
const examples = tool.examples || [];
|
|
143
143
|
for (const example of examples) {
|
|
144
|
-
|
|
144
|
+
// Remove placeholders like {query}, {title} for better matching
|
|
145
|
+
const exampleNormalized = example.toLowerCase().replace(/\{[^}]+\}/g, '').trim();
|
|
146
|
+
// Check if query matches the pattern without the placeholder
|
|
147
|
+
const exampleScore = this.similarity(lowerQuery, exampleNormalized);
|
|
145
148
|
if (exampleScore > bestScore) {
|
|
146
149
|
bestScore = exampleScore;
|
|
147
150
|
bestMatch = example;
|
|
148
151
|
}
|
|
152
|
+
// Also check if query has extra words that could be the placeholder value
|
|
153
|
+
// E.g., "open your users" should match "open {query}"
|
|
154
|
+
const queryWords = lowerQuery.split(/\s+/);
|
|
155
|
+
const patternWords = exampleNormalized.split(/\s+/).filter((w) => w.length > 0);
|
|
156
|
+
// If query starts with the same words as the pattern, it's likely a match with parameter
|
|
157
|
+
if (patternWords.length > 0 && queryWords.length >= patternWords.length) {
|
|
158
|
+
const matchesPattern = patternWords.every((word, i) => queryWords[i] && queryWords[i].includes(word));
|
|
159
|
+
if (matchesPattern) {
|
|
160
|
+
// Boost score for parameter-based patterns
|
|
161
|
+
const paramScore = 0.85 + (patternWords.length / queryWords.length * 0.10);
|
|
162
|
+
if (paramScore > bestScore) {
|
|
163
|
+
bestScore = paramScore;
|
|
164
|
+
bestMatch = `${example} (pattern match with parameter)`;
|
|
165
|
+
}
|
|
166
|
+
}
|
|
167
|
+
}
|
|
149
168
|
}
|
|
150
169
|
// Check keyword overlap
|
|
151
170
|
const keywords = tool.description?.toLowerCase().split(/\s+/) || [];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ToolMatcher.js","sourceRoot":"","sources":["../../../../src/ai/ToolMatcher.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"ToolMatcher.js","sourceRoot":"","sources":["../../../../src/ai/ToolMatcher.ts"],"names":[],"mappings":"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"}
|
package/dist/cjs/src/ai/index.js
CHANGED
|
@@ -1,9 +1,8 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
/**
|
|
3
|
-
* AI Command Interface - Core exports
|
|
3
|
+
* AI Command Interface - Core exports
|
|
4
4
|
*
|
|
5
|
-
*
|
|
6
|
-
* ParameterExtractor, SuggestionEngine) available in enterprise edition.
|
|
5
|
+
* Re-exports all open-source AI abstractions
|
|
7
6
|
*/
|
|
8
7
|
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
9
8
|
if (k2 === undefined) k2 = k;
|
|
@@ -20,10 +19,9 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
|
20
19
|
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
21
20
|
};
|
|
22
21
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
22
|
+
__exportStar(require("./AIInterface"), exports);
|
|
23
23
|
__exportStar(require("./ToolMatcher"), exports);
|
|
24
|
+
__exportStar(require("./ParameterExtractor"), exports);
|
|
24
25
|
__exportStar(require("./ToolExecutor"), exports);
|
|
25
|
-
|
|
26
|
-
// export * from './ParameterExtractor';
|
|
27
|
-
// export * from './LLMProvider';
|
|
28
|
-
// export * from './SuggestionEngine';
|
|
26
|
+
__exportStar(require("./SuggestionEngine"), exports);
|
|
29
27
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/ai/index.ts"],"names":[],"mappings":";AAAA
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/ai/index.ts"],"names":[],"mappings":";AAAA;;;;GAIG;;;;;;;;;;;;;;;;AAEH,gDAA8B;AAC9B,gDAA8B;AAC9B,uDAAqC;AACrC,iDAA+B;AAC/B,qDAAmC"}
|