@supernal/interface 1.0.7 → 1.0.9
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/adapters/copilotkit/CopilotKitAdapter.js +3 -5
- package/dist/cjs/src/adapters/copilotkit/CopilotKitAdapter.js.map +1 -1
- package/dist/cjs/src/adapters/index.js +3 -4
- package/dist/cjs/src/adapters/index.js.map +1 -1
- package/dist/cjs/src/ai/AIInterface.js +111 -61
- package/dist/cjs/src/ai/AIInterface.js.map +1 -1
- package/dist/cjs/src/ai/ToolExecutor.js +36 -1
- package/dist/cjs/src/ai/ToolExecutor.js.map +1 -1
- package/dist/cjs/src/ai/ToolMatcher.js +6 -0
- package/dist/cjs/src/ai/ToolMatcher.js.map +1 -1
- package/dist/cjs/src/background/architecture/ArchitectureInitializer.js +13 -2
- package/dist/cjs/src/background/architecture/ArchitectureInitializer.js.map +1 -1
- package/dist/cjs/src/background/architecture/Containers.js +72 -2
- package/dist/cjs/src/background/architecture/Containers.js.map +1 -1
- package/dist/cjs/src/background/architecture/index.js +2 -1
- package/dist/cjs/src/background/architecture/index.js.map +1 -1
- package/dist/cjs/src/background/location/LocationContext.js +19 -2
- package/dist/cjs/src/background/location/LocationContext.js.map +1 -1
- package/dist/cjs/src/background/navigation/NavigationGraph.js +7 -0
- package/dist/cjs/src/background/navigation/NavigationGraph.js.map +1 -1
- package/dist/cjs/src/background/registry/ComponentRegistry.js +0 -2
- package/dist/cjs/src/background/registry/ComponentRegistry.js.map +1 -1
- package/dist/cjs/src/background/registry/ToolRegistry.js +83 -123
- package/dist/cjs/src/background/registry/ToolRegistry.js.map +1 -1
- package/dist/cjs/src/browser.js +7 -1
- package/dist/cjs/src/browser.js.map +1 -1
- package/dist/cjs/src/decorators/Component.js +4 -5
- package/dist/cjs/src/decorators/Component.js.map +1 -1
- package/dist/cjs/src/decorators/Tool.js +1 -6
- package/dist/cjs/src/decorators/Tool.js.map +1 -1
- package/dist/cjs/src/decorators/ToolHelpers.js +1 -3
- package/dist/cjs/src/decorators/ToolHelpers.js.map +1 -1
- package/dist/cjs/src/decorators/ToolPreset.js +14 -14
- package/dist/cjs/src/decorators/ToolPreset.js.map +1 -1
- package/dist/cjs/src/decorators/ToolProvider.js +30 -20
- package/dist/cjs/src/decorators/ToolProvider.js.map +1 -1
- package/dist/cjs/src/decorators/index.js +8 -13
- package/dist/cjs/src/decorators/index.js.map +1 -1
- package/dist/cjs/src/exposure/ExposureCollector.js +27 -0
- package/dist/cjs/src/exposure/ExposureCollector.js.map +1 -1
- package/dist/cjs/src/index.js +6 -9
- package/dist/cjs/src/index.js.map +1 -1
- package/dist/cjs/src/mcp/server.js +12 -14
- package/dist/cjs/src/mcp/server.js.map +1 -1
- package/dist/cjs/src/react/hooks/useChatWithContext.js +4 -10
- package/dist/cjs/src/react/hooks/useChatWithContext.js.map +1 -1
- package/dist/cjs/src/types/ComponentState.js.map +1 -1
- package/dist/esm/src/adapters/copilotkit/CopilotKitAdapter.d.ts.map +1 -1
- package/dist/esm/src/adapters/copilotkit/CopilotKitAdapter.js +3 -5
- package/dist/esm/src/adapters/copilotkit/CopilotKitAdapter.js.map +1 -1
- package/dist/esm/src/adapters/index.d.ts +0 -2
- package/dist/esm/src/adapters/index.d.ts.map +1 -1
- package/dist/esm/src/adapters/index.js +2 -1
- package/dist/esm/src/adapters/index.js.map +1 -1
- package/dist/esm/src/adapters/types/index.d.ts +0 -2
- package/dist/esm/src/adapters/types/index.d.ts.map +1 -1
- package/dist/esm/src/ai/AIInterface.d.ts +5 -1
- package/dist/esm/src/ai/AIInterface.d.ts.map +1 -1
- package/dist/esm/src/ai/AIInterface.js +111 -61
- package/dist/esm/src/ai/AIInterface.js.map +1 -1
- package/dist/esm/src/ai/ToolExecutor.js +36 -1
- package/dist/esm/src/ai/ToolExecutor.js.map +1 -1
- package/dist/esm/src/ai/ToolMatcher.d.ts +1 -0
- package/dist/esm/src/ai/ToolMatcher.d.ts.map +1 -1
- package/dist/esm/src/ai/ToolMatcher.js +6 -0
- package/dist/esm/src/ai/ToolMatcher.js.map +1 -1
- package/dist/esm/src/background/architecture/ArchitectureInitializer.d.ts +1 -1
- package/dist/esm/src/background/architecture/ArchitectureInitializer.d.ts.map +1 -1
- package/dist/esm/src/background/architecture/ArchitectureInitializer.js +13 -2
- package/dist/esm/src/background/architecture/ArchitectureInitializer.js.map +1 -1
- package/dist/esm/src/background/architecture/Containers.d.ts +35 -2
- package/dist/esm/src/background/architecture/Containers.d.ts.map +1 -1
- package/dist/esm/src/background/architecture/Containers.js +70 -2
- package/dist/esm/src/background/architecture/Containers.js.map +1 -1
- package/dist/esm/src/background/architecture/index.d.ts +1 -1
- package/dist/esm/src/background/architecture/index.d.ts.map +1 -1
- package/dist/esm/src/background/architecture/index.js +1 -1
- package/dist/esm/src/background/architecture/index.js.map +1 -1
- package/dist/esm/src/background/location/LocationContext.d.ts +3 -2
- package/dist/esm/src/background/location/LocationContext.d.ts.map +1 -1
- package/dist/esm/src/background/location/LocationContext.js +19 -2
- package/dist/esm/src/background/location/LocationContext.js.map +1 -1
- package/dist/esm/src/background/navigation/NavigationGraph.d.ts +5 -0
- package/dist/esm/src/background/navigation/NavigationGraph.d.ts.map +1 -1
- package/dist/esm/src/background/navigation/NavigationGraph.js +7 -0
- package/dist/esm/src/background/navigation/NavigationGraph.js.map +1 -1
- package/dist/esm/src/background/registry/ComponentRegistry.d.ts +0 -4
- package/dist/esm/src/background/registry/ComponentRegistry.d.ts.map +1 -1
- package/dist/esm/src/background/registry/ComponentRegistry.js +0 -2
- package/dist/esm/src/background/registry/ComponentRegistry.js.map +1 -1
- package/dist/esm/src/background/registry/ToolRegistry.d.ts +24 -38
- package/dist/esm/src/background/registry/ToolRegistry.d.ts.map +1 -1
- package/dist/esm/src/background/registry/ToolRegistry.js +81 -121
- package/dist/esm/src/background/registry/ToolRegistry.js.map +1 -1
- package/dist/esm/src/browser.d.ts +3 -1
- package/dist/esm/src/browser.d.ts.map +1 -1
- package/dist/esm/src/browser.js +3 -1
- package/dist/esm/src/browser.js.map +1 -1
- package/dist/esm/src/decorators/Component.d.ts +1 -8
- package/dist/esm/src/decorators/Component.d.ts.map +1 -1
- package/dist/esm/src/decorators/Component.js +4 -5
- package/dist/esm/src/decorators/Component.js.map +1 -1
- package/dist/esm/src/decorators/Tool.d.ts +1 -6
- package/dist/esm/src/decorators/Tool.d.ts.map +1 -1
- package/dist/esm/src/decorators/Tool.js +1 -6
- package/dist/esm/src/decorators/Tool.js.map +1 -1
- package/dist/esm/src/decorators/ToolHelpers.d.ts.map +1 -1
- package/dist/esm/src/decorators/ToolHelpers.js +1 -3
- package/dist/esm/src/decorators/ToolHelpers.js.map +1 -1
- package/dist/esm/src/decorators/ToolPreset.d.ts +12 -9
- package/dist/esm/src/decorators/ToolPreset.d.ts.map +1 -1
- package/dist/esm/src/decorators/ToolPreset.js +13 -13
- package/dist/esm/src/decorators/ToolPreset.js.map +1 -1
- package/dist/esm/src/decorators/ToolProvider.d.ts +5 -21
- package/dist/esm/src/decorators/ToolProvider.d.ts.map +1 -1
- package/dist/esm/src/decorators/ToolProvider.js +30 -19
- package/dist/esm/src/decorators/ToolProvider.js.map +1 -1
- package/dist/esm/src/decorators/index.d.ts +6 -12
- package/dist/esm/src/decorators/index.d.ts.map +1 -1
- package/dist/esm/src/decorators/index.js +7 -12
- package/dist/esm/src/decorators/index.js.map +1 -1
- package/dist/esm/src/exposure/ExposureCollector.d.ts +8 -0
- package/dist/esm/src/exposure/ExposureCollector.d.ts.map +1 -1
- package/dist/esm/src/exposure/ExposureCollector.js +27 -0
- package/dist/esm/src/exposure/ExposureCollector.js.map +1 -1
- package/dist/esm/src/index.d.ts +5 -6
- package/dist/esm/src/index.d.ts.map +1 -1
- package/dist/esm/src/index.js +5 -6
- package/dist/esm/src/index.js.map +1 -1
- package/dist/esm/src/mcp/server.d.ts +1 -1
- package/dist/esm/src/mcp/server.d.ts.map +1 -1
- package/dist/esm/src/mcp/server.js +12 -14
- package/dist/esm/src/mcp/server.js.map +1 -1
- package/dist/esm/src/react/hooks/useChatWithContext.d.ts +0 -2
- package/dist/esm/src/react/hooks/useChatWithContext.d.ts.map +1 -1
- package/dist/esm/src/react/hooks/useChatWithContext.js +4 -10
- package/dist/esm/src/react/hooks/useChatWithContext.js.map +1 -1
- package/dist/esm/src/types/ComponentState.d.ts +0 -4
- package/dist/esm/src/types/ComponentState.d.ts.map +1 -1
- package/dist/esm/src/types/ComponentState.js.map +1 -1
- package/package.json +22 -21
- package/dist/cjs/src/adapters/native/NativeAdapter.js +0 -268
- package/dist/cjs/src/adapters/native/NativeAdapter.js.map +0 -1
- package/dist/cjs/src/adapters/native/index.js +0 -10
- package/dist/cjs/src/adapters/native/index.js.map +0 -1
- package/dist/cjs/src/ui/react/chat/ChatBubble.js +0 -221
- package/dist/cjs/src/ui/react/chat/ChatBubble.js.map +0 -1
- package/dist/esm/src/adapters/native/NativeAdapter.d.ts +0 -47
- package/dist/esm/src/adapters/native/NativeAdapter.d.ts.map +0 -1
- package/dist/esm/src/adapters/native/NativeAdapter.js +0 -230
- package/dist/esm/src/adapters/native/NativeAdapter.js.map +0 -1
- package/dist/esm/src/adapters/native/index.d.ts +0 -6
- package/dist/esm/src/adapters/native/index.d.ts.map +0 -1
- package/dist/esm/src/adapters/native/index.js +0 -5
- package/dist/esm/src/adapters/native/index.js.map +0 -1
- package/dist/esm/src/ui/react/chat/ChatBubble.d.ts +0 -27
- package/dist/esm/src/ui/react/chat/ChatBubble.d.ts.map +0 -1
- package/dist/esm/src/ui/react/chat/ChatBubble.js +0 -184
- package/dist/esm/src/ui/react/chat/ChatBubble.js.map +0 -1
|
@@ -1,268 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
/**
|
|
3
|
-
* Native Adapter
|
|
4
|
-
*
|
|
5
|
-
* Implements ChatUIAdapter using our built-in ChatBubble component.
|
|
6
|
-
* Zero external dependencies - works out of the box.
|
|
7
|
-
*
|
|
8
|
-
* This adapter provides:
|
|
9
|
-
* - Lightweight chat UI
|
|
10
|
-
* - Direct tool execution via ToolRegistry
|
|
11
|
-
* - No LLM required (uses pattern matching)
|
|
12
|
-
*/
|
|
13
|
-
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
14
|
-
if (k2 === undefined) k2 = k;
|
|
15
|
-
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
16
|
-
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
17
|
-
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
18
|
-
}
|
|
19
|
-
Object.defineProperty(o, k2, desc);
|
|
20
|
-
}) : (function(o, m, k, k2) {
|
|
21
|
-
if (k2 === undefined) k2 = k;
|
|
22
|
-
o[k2] = m[k];
|
|
23
|
-
}));
|
|
24
|
-
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
25
|
-
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
26
|
-
}) : function(o, v) {
|
|
27
|
-
o["default"] = v;
|
|
28
|
-
});
|
|
29
|
-
var __importStar = (this && this.__importStar) || (function () {
|
|
30
|
-
var ownKeys = function(o) {
|
|
31
|
-
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
32
|
-
var ar = [];
|
|
33
|
-
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
34
|
-
return ar;
|
|
35
|
-
};
|
|
36
|
-
return ownKeys(o);
|
|
37
|
-
};
|
|
38
|
-
return function (mod) {
|
|
39
|
-
if (mod && mod.__esModule) return mod;
|
|
40
|
-
var result = {};
|
|
41
|
-
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
42
|
-
__setModuleDefault(result, mod);
|
|
43
|
-
return result;
|
|
44
|
-
};
|
|
45
|
-
})();
|
|
46
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
47
|
-
exports.NativeAdapter = void 0;
|
|
48
|
-
exports.createNativeAdapter = createNativeAdapter;
|
|
49
|
-
const react_1 = __importStar(require("react"));
|
|
50
|
-
const ChatBubble_1 = require("../../ui/react/chat/ChatBubble");
|
|
51
|
-
/**
|
|
52
|
-
* Native Adapter Implementation
|
|
53
|
-
*/
|
|
54
|
-
class NativeAdapter {
|
|
55
|
-
constructor(config = {}) {
|
|
56
|
-
this.name = 'native';
|
|
57
|
-
this.tools = [];
|
|
58
|
-
this.readables = [];
|
|
59
|
-
this.executionCallbacks = [];
|
|
60
|
-
this.config = {
|
|
61
|
-
usePatternMatching: true,
|
|
62
|
-
...config,
|
|
63
|
-
};
|
|
64
|
-
}
|
|
65
|
-
async initialize() {
|
|
66
|
-
// Native adapter doesn't need initialization
|
|
67
|
-
}
|
|
68
|
-
registerTools(tools) {
|
|
69
|
-
this.tools = tools;
|
|
70
|
-
}
|
|
71
|
-
registerReadables(readables) {
|
|
72
|
-
this.readables = readables;
|
|
73
|
-
}
|
|
74
|
-
onToolExecution(callback) {
|
|
75
|
-
this.executionCallbacks.push(callback);
|
|
76
|
-
return () => {
|
|
77
|
-
this.executionCallbacks = this.executionCallbacks.filter(cb => cb !== callback);
|
|
78
|
-
};
|
|
79
|
-
}
|
|
80
|
-
notifyExecution(execution) {
|
|
81
|
-
this.executionCallbacks.forEach(cb => {
|
|
82
|
-
try {
|
|
83
|
-
cb(execution);
|
|
84
|
-
}
|
|
85
|
-
catch {
|
|
86
|
-
// Ignore callback errors
|
|
87
|
-
}
|
|
88
|
-
});
|
|
89
|
-
}
|
|
90
|
-
isReady() {
|
|
91
|
-
return true; // Always ready
|
|
92
|
-
}
|
|
93
|
-
dispose() {
|
|
94
|
-
this.executionCallbacks = [];
|
|
95
|
-
this.tools = [];
|
|
96
|
-
this.readables = [];
|
|
97
|
-
}
|
|
98
|
-
render(props) {
|
|
99
|
-
return (react_1.default.createElement(NativeChatWrapper, { adapter: this, tools: this.tools, config: this.config, ...props }));
|
|
100
|
-
}
|
|
101
|
-
}
|
|
102
|
-
exports.NativeAdapter = NativeAdapter;
|
|
103
|
-
function NativeChatWrapper({ adapter, tools, config: _config, ...props }) {
|
|
104
|
-
// Suppress unused props warning for spreading
|
|
105
|
-
void props;
|
|
106
|
-
const [messages, setMessages] = (0, react_1.useState)([]);
|
|
107
|
-
const toolsRef = (0, react_1.useRef)(tools);
|
|
108
|
-
// Keep tools ref updated
|
|
109
|
-
(0, react_1.useEffect)(() => {
|
|
110
|
-
toolsRef.current = tools;
|
|
111
|
-
}, [tools]);
|
|
112
|
-
/**
|
|
113
|
-
* Find matching tool using pattern matching
|
|
114
|
-
*/
|
|
115
|
-
const findMatchingTool = (0, react_1.useCallback)((query) => {
|
|
116
|
-
const lowerQuery = query.toLowerCase().trim();
|
|
117
|
-
let bestTool = null;
|
|
118
|
-
let bestScore = 0;
|
|
119
|
-
const params = [];
|
|
120
|
-
for (const tool of toolsRef.current) {
|
|
121
|
-
let score = 0;
|
|
122
|
-
// Check examples
|
|
123
|
-
if (tool.examples && Array.isArray(tool.examples)) {
|
|
124
|
-
for (const example of tool.examples) {
|
|
125
|
-
if (typeof example !== 'string')
|
|
126
|
-
continue;
|
|
127
|
-
const exampleLower = example.toLowerCase();
|
|
128
|
-
// Exact match
|
|
129
|
-
if (exampleLower === lowerQuery) {
|
|
130
|
-
score += 20;
|
|
131
|
-
}
|
|
132
|
-
// Query starts with example pattern
|
|
133
|
-
else if (lowerQuery.startsWith(exampleLower.replace(/\{[^}]+\}/g, '').trim())) {
|
|
134
|
-
score += 15;
|
|
135
|
-
// Extract parameter from trailing text
|
|
136
|
-
const pattern = exampleLower.replace(/\{[^}]+\}/g, '').trim();
|
|
137
|
-
const trailing = query.substring(pattern.length).trim();
|
|
138
|
-
if (trailing) {
|
|
139
|
-
params.push(trailing);
|
|
140
|
-
}
|
|
141
|
-
}
|
|
142
|
-
// Partial match
|
|
143
|
-
else if (exampleLower.includes(lowerQuery) || lowerQuery.includes(exampleLower)) {
|
|
144
|
-
score += 5;
|
|
145
|
-
}
|
|
146
|
-
}
|
|
147
|
-
}
|
|
148
|
-
// Check method name
|
|
149
|
-
if (tool.methodName) {
|
|
150
|
-
const methodLower = tool.methodName.toLowerCase();
|
|
151
|
-
if (lowerQuery.includes(methodLower)) {
|
|
152
|
-
score += 3;
|
|
153
|
-
}
|
|
154
|
-
}
|
|
155
|
-
if (score > bestScore) {
|
|
156
|
-
bestScore = score;
|
|
157
|
-
bestTool = tool;
|
|
158
|
-
}
|
|
159
|
-
}
|
|
160
|
-
return { tool: bestTool, params };
|
|
161
|
-
}, []);
|
|
162
|
-
/**
|
|
163
|
-
* Execute a tool
|
|
164
|
-
*/
|
|
165
|
-
const executeTool = (0, react_1.useCallback)(async (tool, params) => {
|
|
166
|
-
const start = Date.now();
|
|
167
|
-
try {
|
|
168
|
-
let result;
|
|
169
|
-
if (tool.method) {
|
|
170
|
-
result = await tool.method(...params);
|
|
171
|
-
}
|
|
172
|
-
else if (tool.instance && tool.methodName) {
|
|
173
|
-
result = await tool.instance[tool.methodName](...params);
|
|
174
|
-
}
|
|
175
|
-
else {
|
|
176
|
-
throw new Error(`Tool ${tool.name} has no executable method`);
|
|
177
|
-
}
|
|
178
|
-
const execution = {
|
|
179
|
-
toolId: tool.toolId,
|
|
180
|
-
toolName: tool.name || tool.methodName || 'unknown',
|
|
181
|
-
args: params.reduce((acc, p, i) => ({ ...acc, [`arg${i}`]: p }), {}),
|
|
182
|
-
result,
|
|
183
|
-
success: true,
|
|
184
|
-
timestamp: new Date(),
|
|
185
|
-
duration: Date.now() - start,
|
|
186
|
-
containerId: tool.containerId,
|
|
187
|
-
dangerLevel: tool.dangerLevel,
|
|
188
|
-
approvalRequired: tool.requiresApproval,
|
|
189
|
-
};
|
|
190
|
-
adapter.notifyExecution(execution);
|
|
191
|
-
// Extract message from result
|
|
192
|
-
if (typeof result === 'object' && result !== null && 'message' in result) {
|
|
193
|
-
return { success: true, message: result.message };
|
|
194
|
-
}
|
|
195
|
-
return { success: true, message: `✅ Executed ${tool.name}` };
|
|
196
|
-
}
|
|
197
|
-
catch (error) {
|
|
198
|
-
const execution = {
|
|
199
|
-
toolId: tool.toolId,
|
|
200
|
-
toolName: tool.name || tool.methodName || 'unknown',
|
|
201
|
-
args: params.reduce((acc, p, i) => ({ ...acc, [`arg${i}`]: p }), {}),
|
|
202
|
-
result: null,
|
|
203
|
-
success: false,
|
|
204
|
-
error: error instanceof Error ? error : new Error(String(error)),
|
|
205
|
-
timestamp: new Date(),
|
|
206
|
-
duration: Date.now() - start,
|
|
207
|
-
containerId: tool.containerId,
|
|
208
|
-
dangerLevel: tool.dangerLevel,
|
|
209
|
-
approvalRequired: tool.requiresApproval,
|
|
210
|
-
};
|
|
211
|
-
adapter.notifyExecution(execution);
|
|
212
|
-
return {
|
|
213
|
-
success: false,
|
|
214
|
-
message: `❌ Error: ${error instanceof Error ? error.message : String(error)}`
|
|
215
|
-
};
|
|
216
|
-
}
|
|
217
|
-
}, [adapter]);
|
|
218
|
-
/**
|
|
219
|
-
* Handle user message
|
|
220
|
-
*/
|
|
221
|
-
const handleSendMessage = (0, react_1.useCallback)(async (text) => {
|
|
222
|
-
// Add user message
|
|
223
|
-
const userMessage = {
|
|
224
|
-
id: `user-${Date.now()}`,
|
|
225
|
-
text,
|
|
226
|
-
type: 'user',
|
|
227
|
-
timestamp: new Date().toISOString(),
|
|
228
|
-
};
|
|
229
|
-
setMessages(prev => [...prev, userMessage]);
|
|
230
|
-
// Find and execute tool
|
|
231
|
-
const { tool, params } = findMatchingTool(text);
|
|
232
|
-
if (!tool) {
|
|
233
|
-
// No matching tool
|
|
234
|
-
const systemMessage = {
|
|
235
|
-
id: `system-${Date.now()}`,
|
|
236
|
-
text: `❓ No matching command found. Try: ${toolsRef.current.slice(0, 3).flatMap(t => t.examples?.slice(0, 1) || []).join(', ')}`,
|
|
237
|
-
type: 'system',
|
|
238
|
-
timestamp: new Date().toISOString(),
|
|
239
|
-
};
|
|
240
|
-
setMessages(prev => [...prev, systemMessage]);
|
|
241
|
-
return;
|
|
242
|
-
}
|
|
243
|
-
// Execute tool
|
|
244
|
-
const result = await executeTool(tool, params);
|
|
245
|
-
// Add response message
|
|
246
|
-
const responseMessage = {
|
|
247
|
-
id: `ai-${Date.now()}`,
|
|
248
|
-
text: result.message,
|
|
249
|
-
type: result.success ? 'ai' : 'system',
|
|
250
|
-
timestamp: new Date().toISOString(),
|
|
251
|
-
};
|
|
252
|
-
setMessages(prev => [...prev, responseMessage]);
|
|
253
|
-
}, [findMatchingTool, executeTool]);
|
|
254
|
-
/**
|
|
255
|
-
* Clear chat
|
|
256
|
-
*/
|
|
257
|
-
const handleClearChat = (0, react_1.useCallback)(() => {
|
|
258
|
-
setMessages([]);
|
|
259
|
-
}, []);
|
|
260
|
-
return (react_1.default.createElement(ChatBubble_1.ChatBubble, { messages: messages, onSendMessage: handleSendMessage, onClearChat: handleClearChat }));
|
|
261
|
-
}
|
|
262
|
-
/**
|
|
263
|
-
* Factory function for creating Native adapter
|
|
264
|
-
*/
|
|
265
|
-
function createNativeAdapter(config) {
|
|
266
|
-
return new NativeAdapter(config);
|
|
267
|
-
}
|
|
268
|
-
//# sourceMappingURL=NativeAdapter.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"NativeAdapter.js","sourceRoot":"","sources":["../../../../../src/adapters/native/NativeAdapter.tsx"],"names":[],"mappings":"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"}
|
|
@@ -1,10 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
/**
|
|
3
|
-
* Native Adapter Exports
|
|
4
|
-
*/
|
|
5
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
-
exports.createNativeAdapter = exports.NativeAdapter = void 0;
|
|
7
|
-
var NativeAdapter_1 = require("./NativeAdapter");
|
|
8
|
-
Object.defineProperty(exports, "NativeAdapter", { enumerable: true, get: function () { return NativeAdapter_1.NativeAdapter; } });
|
|
9
|
-
Object.defineProperty(exports, "createNativeAdapter", { enumerable: true, get: function () { return NativeAdapter_1.createNativeAdapter; } });
|
|
10
|
-
//# sourceMappingURL=index.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../src/adapters/native/index.ts"],"names":[],"mappings":";AAAA;;GAEG;;;AAEH,iDAAqE;AAA5D,8GAAA,aAAa,OAAA;AAAE,oHAAA,mBAAmB,OAAA"}
|
|
@@ -1,221 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
/**
|
|
3
|
-
* Persistent Chat Bubble Component
|
|
4
|
-
*
|
|
5
|
-
* Fixed position chat bubble in lower right corner that:
|
|
6
|
-
* - Appears on every page
|
|
7
|
-
* - Expands/collapses without blocking content
|
|
8
|
-
* - Provides AI interface for tool execution
|
|
9
|
-
*/
|
|
10
|
-
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
11
|
-
if (k2 === undefined) k2 = k;
|
|
12
|
-
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
13
|
-
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
14
|
-
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
15
|
-
}
|
|
16
|
-
Object.defineProperty(o, k2, desc);
|
|
17
|
-
}) : (function(o, m, k, k2) {
|
|
18
|
-
if (k2 === undefined) k2 = k;
|
|
19
|
-
o[k2] = m[k];
|
|
20
|
-
}));
|
|
21
|
-
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
22
|
-
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
23
|
-
}) : function(o, v) {
|
|
24
|
-
o["default"] = v;
|
|
25
|
-
});
|
|
26
|
-
var __importStar = (this && this.__importStar) || (function () {
|
|
27
|
-
var ownKeys = function(o) {
|
|
28
|
-
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
29
|
-
var ar = [];
|
|
30
|
-
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
31
|
-
return ar;
|
|
32
|
-
};
|
|
33
|
-
return ownKeys(o);
|
|
34
|
-
};
|
|
35
|
-
return function (mod) {
|
|
36
|
-
if (mod && mod.__esModule) return mod;
|
|
37
|
-
var result = {};
|
|
38
|
-
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
39
|
-
__setModuleDefault(result, mod);
|
|
40
|
-
return result;
|
|
41
|
-
};
|
|
42
|
-
})();
|
|
43
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
44
|
-
exports.ChatBubble = void 0;
|
|
45
|
-
const react_1 = __importStar(require("react"));
|
|
46
|
-
const Components_1 = require("../../../../names/Components");
|
|
47
|
-
// Chat component names (use the flat Components namespace)
|
|
48
|
-
const ChatNames = {
|
|
49
|
-
bubble: Components_1.Components.ChatToggleButton,
|
|
50
|
-
input: Components_1.Components.ChatInput,
|
|
51
|
-
sendButton: Components_1.Components.ChatSendButton,
|
|
52
|
-
clearButton: Components_1.Components.ChatClearButton,
|
|
53
|
-
};
|
|
54
|
-
// Mock useChatInput for now - this should be injected via props or context
|
|
55
|
-
const useChatInput = () => ({
|
|
56
|
-
registerInput: (callback) => { }
|
|
57
|
-
});
|
|
58
|
-
const ChatBubble = ({ messages, onSendMessage, onClearChat, storagePrefix = 'chat-', title = 'Chat', }) => {
|
|
59
|
-
const CHAT_EXPANDED_KEY = `${storagePrefix}expanded`;
|
|
60
|
-
// Initialize with default value (true) for both server and client to prevent hydration mismatch
|
|
61
|
-
const [isExpanded, setIsExpanded] = (0, react_1.useState)(true);
|
|
62
|
-
const [inputValue, setInputValue] = (0, react_1.useState)('');
|
|
63
|
-
const [lastReadMessageCount, setLastReadMessageCount] = (0, react_1.useState)(0);
|
|
64
|
-
const [showWelcome, setShowWelcome] = (0, react_1.useState)(messages.length === 0);
|
|
65
|
-
const messagesEndRef = (0, react_1.useRef)(null);
|
|
66
|
-
const inputRef = (0, react_1.useRef)(null);
|
|
67
|
-
// Load expanded state from localStorage after hydration
|
|
68
|
-
(0, react_1.useEffect)(() => {
|
|
69
|
-
try {
|
|
70
|
-
const stored = localStorage.getItem(CHAT_EXPANDED_KEY);
|
|
71
|
-
if (stored !== null) {
|
|
72
|
-
setIsExpanded(JSON.parse(stored));
|
|
73
|
-
}
|
|
74
|
-
}
|
|
75
|
-
catch {
|
|
76
|
-
// Keep default value
|
|
77
|
-
}
|
|
78
|
-
}, []);
|
|
79
|
-
// Register with chat input context
|
|
80
|
-
const { registerInput } = useChatInput();
|
|
81
|
-
(0, react_1.useEffect)(() => {
|
|
82
|
-
registerInput((text, submit = false) => {
|
|
83
|
-
setInputValue(text);
|
|
84
|
-
if (!isExpanded) {
|
|
85
|
-
setIsExpanded(true);
|
|
86
|
-
}
|
|
87
|
-
// Auto-focus and submit if requested
|
|
88
|
-
setTimeout(() => {
|
|
89
|
-
inputRef.current?.focus();
|
|
90
|
-
if (submit) {
|
|
91
|
-
onSendMessage(text);
|
|
92
|
-
setInputValue('');
|
|
93
|
-
}
|
|
94
|
-
}, 100);
|
|
95
|
-
});
|
|
96
|
-
}, [registerInput, onSendMessage, isExpanded]);
|
|
97
|
-
// Track unread messages
|
|
98
|
-
const unreadCount = Math.max(0, messages.length - lastReadMessageCount);
|
|
99
|
-
const hasUnread = unreadCount > 0 && !isExpanded;
|
|
100
|
-
(0, react_1.useEffect)(() => {
|
|
101
|
-
if (isExpanded) {
|
|
102
|
-
// Position at bottom without scrolling animation
|
|
103
|
-
messagesEndRef.current?.scrollIntoView({ behavior: 'auto' });
|
|
104
|
-
// Mark all messages as read when chat is expanded
|
|
105
|
-
setLastReadMessageCount(messages.length);
|
|
106
|
-
// Hide welcome if messages exist
|
|
107
|
-
if (messages.length > 0) {
|
|
108
|
-
setShowWelcome(false);
|
|
109
|
-
}
|
|
110
|
-
// Auto-focus input when expanded
|
|
111
|
-
inputRef.current?.focus();
|
|
112
|
-
}
|
|
113
|
-
}, [messages, isExpanded]);
|
|
114
|
-
// Auto-focus on mount
|
|
115
|
-
(0, react_1.useEffect)(() => {
|
|
116
|
-
if (isExpanded) {
|
|
117
|
-
inputRef.current?.focus();
|
|
118
|
-
}
|
|
119
|
-
}, [isExpanded]);
|
|
120
|
-
// Command+/ keyboard shortcut to focus input
|
|
121
|
-
(0, react_1.useEffect)(() => {
|
|
122
|
-
const handleKeyDown = (e) => {
|
|
123
|
-
if ((e.metaKey || e.ctrlKey) && e.key === '/') {
|
|
124
|
-
e.preventDefault();
|
|
125
|
-
if (!isExpanded) {
|
|
126
|
-
setIsExpanded(true);
|
|
127
|
-
}
|
|
128
|
-
inputRef.current?.focus();
|
|
129
|
-
}
|
|
130
|
-
};
|
|
131
|
-
window.addEventListener('keydown', handleKeyDown);
|
|
132
|
-
return () => window.removeEventListener('keydown', handleKeyDown);
|
|
133
|
-
}, [isExpanded]);
|
|
134
|
-
const handleSend = (e) => {
|
|
135
|
-
e.preventDefault();
|
|
136
|
-
if (!inputValue.trim())
|
|
137
|
-
return;
|
|
138
|
-
onSendMessage(inputValue.trim());
|
|
139
|
-
setInputValue('');
|
|
140
|
-
// Re-focus input after sending
|
|
141
|
-
setTimeout(() => inputRef.current?.focus(), 0);
|
|
142
|
-
};
|
|
143
|
-
const handleToggle = () => {
|
|
144
|
-
const newExpandedState = !isExpanded;
|
|
145
|
-
setIsExpanded(newExpandedState);
|
|
146
|
-
// Persist the expanded state to localStorage
|
|
147
|
-
try {
|
|
148
|
-
localStorage.setItem(CHAT_EXPANDED_KEY, JSON.stringify(newExpandedState));
|
|
149
|
-
}
|
|
150
|
-
catch (error) {
|
|
151
|
-
console.error('Failed to save chat expanded state:', error);
|
|
152
|
-
}
|
|
153
|
-
};
|
|
154
|
-
return (react_1.default.createElement(react_1.default.Fragment, null,
|
|
155
|
-
react_1.default.createElement("div", { className: "fixed bottom-4 right-4 sm:bottom-6 sm:right-6 z-50" },
|
|
156
|
-
isExpanded && (react_1.default.createElement("div", { className: "absolute bottom-16 right-0 w-[calc(100vw-2rem)] sm:w-[500px] lg:w-[600px] h-[calc(100vh-10rem)] sm:h-[600px] lg:h-[700px] bg-white rounded-lg shadow-2xl border border-gray-200 flex flex-col" },
|
|
157
|
-
react_1.default.createElement("div", { className: "flex items-center justify-between p-3 sm:p-4 border-b border-gray-200 bg-gradient-to-r from-blue-50 to-purple-50 rounded-t-lg" },
|
|
158
|
-
react_1.default.createElement("div", { className: "flex items-center space-x-2 sm:space-x-3" },
|
|
159
|
-
react_1.default.createElement("div", { className: "relative" },
|
|
160
|
-
react_1.default.createElement("div", { className: "w-8 h-8 sm:w-10 sm:h-10 bg-gradient-to-br from-blue-500 to-purple-600 rounded-full flex items-center justify-center" },
|
|
161
|
-
react_1.default.createElement("span", { className: "text-white text-base sm:text-lg" }, "\uD83E\uDD16")),
|
|
162
|
-
react_1.default.createElement("div", { className: "absolute -bottom-1 -right-1 w-3 h-3 sm:w-4 sm:h-4 bg-green-500 rounded-full border-2 border-white" })),
|
|
163
|
-
react_1.default.createElement("div", null,
|
|
164
|
-
react_1.default.createElement("h3", { className: "font-bold text-gray-900 text-sm sm:text-base" }, title),
|
|
165
|
-
react_1.default.createElement("p", { className: "text-xs text-gray-600 hidden sm:block" }, "I'm a TOOL system AI can use to control this site"))),
|
|
166
|
-
react_1.default.createElement("div", { className: "flex items-center space-x-1" },
|
|
167
|
-
onClearChat && (react_1.default.createElement("button", { onClick: onClearChat, className: "p-1 text-gray-400 hover:text-gray-600 transition-colors", title: "Clear chat", "data-testid": ChatNames.clearButton },
|
|
168
|
-
react_1.default.createElement("svg", { className: "w-4 h-4", fill: "none", stroke: "currentColor", viewBox: "0 0 24 24" },
|
|
169
|
-
react_1.default.createElement("path", { strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: 2, d: "M19 7l-.867 12.142A2 2 0 0116.138 21H7.862a2 2 0 01-1.995-1.858L5 7m5 4v6m4-6v6m1-10V4a1 1 0 00-1-1h-4a1 1 0 00-1 1v3M4 7h16" })))),
|
|
170
|
-
react_1.default.createElement("button", { onClick: handleToggle, className: "p-1 text-gray-400 hover:text-gray-600 transition-colors", title: "Minimize chat" },
|
|
171
|
-
react_1.default.createElement("svg", { className: "w-4 h-4", fill: "none", stroke: "currentColor", viewBox: "0 0 24 24" },
|
|
172
|
-
react_1.default.createElement("path", { strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: 2, d: "M19 9l-7 7-7-7" }))))),
|
|
173
|
-
react_1.default.createElement("div", { className: "flex-1 overflow-y-auto p-3 sm:p-4 space-y-3" },
|
|
174
|
-
showWelcome && messages.length === 0 && (react_1.default.createElement("div", { className: "bg-gradient-to-br from-blue-50 to-purple-50 p-3 sm:p-4 rounded-lg border border-blue-200 mb-4" },
|
|
175
|
-
react_1.default.createElement("h4", { className: "font-bold text-gray-900 mb-2 text-xs sm:text-sm" }, "\uD83D\uDC4B Welcome! I'm NOT an AI"),
|
|
176
|
-
react_1.default.createElement("p", { className: "text-xs text-gray-700 mb-3" },
|
|
177
|
-
"I'm a ",
|
|
178
|
-
react_1.default.createElement("strong", null, "tool system"),
|
|
179
|
-
" that AI assistants (like Claude, GPT) can use to navigate and control this site. This enables ",
|
|
180
|
-
react_1.default.createElement("strong", null, "agentic UX"),
|
|
181
|
-
" \u2014 instead of clicking around, you tell an AI what you want, and it uses me to do it."),
|
|
182
|
-
react_1.default.createElement("div", { className: "bg-white p-2 sm:p-3 rounded border border-gray-200 mb-3" },
|
|
183
|
-
react_1.default.createElement("p", { className: "text-xs font-medium text-gray-900 mb-2" }, "Try these commands:"),
|
|
184
|
-
react_1.default.createElement("div", { className: "space-y-1" }, [
|
|
185
|
-
{ text: 'open the docs', desc: 'Navigate to documentation' },
|
|
186
|
-
{ text: 'show me the story system', desc: 'View story system guide' },
|
|
187
|
-
{ text: 'go to examples', desc: 'Browse code examples' },
|
|
188
|
-
].map((cmd, idx) => (react_1.default.createElement("button", { key: idx, onClick: () => {
|
|
189
|
-
setInputValue(cmd.text);
|
|
190
|
-
setShowWelcome(false);
|
|
191
|
-
setTimeout(() => inputRef.current?.focus(), 0);
|
|
192
|
-
}, className: "w-full text-left px-2 py-1.5 rounded hover:bg-blue-50 transition-colors group" },
|
|
193
|
-
react_1.default.createElement("div", { className: "text-xs font-mono text-blue-700 group-hover:text-blue-900" },
|
|
194
|
-
"\"",
|
|
195
|
-
cmd.text,
|
|
196
|
-
"\""),
|
|
197
|
-
react_1.default.createElement("div", { className: "text-xs text-gray-500 hidden sm:block" }, cmd.desc)))))),
|
|
198
|
-
react_1.default.createElement("p", { className: "text-xs text-gray-600 italic" }, "Type a command or click a suggestion above to start"))),
|
|
199
|
-
messages.map((message) => (react_1.default.createElement("div", { key: message.id, className: "flex flex-col" },
|
|
200
|
-
react_1.default.createElement("div", { className: `inline-block px-3 py-2 rounded-lg max-w-[85%] sm:max-w-xs text-xs sm:text-sm ${message.type === 'user'
|
|
201
|
-
? 'bg-blue-600 text-white ml-auto'
|
|
202
|
-
: message.type === 'ai'
|
|
203
|
-
? 'bg-gray-200 text-gray-800'
|
|
204
|
-
: 'bg-yellow-100 text-yellow-800 text-xs'}`, "data-testid": `chat-message-${message.type}` }, message.text),
|
|
205
|
-
react_1.default.createElement("div", { className: "text-xs text-gray-400 mt-1 px-1" }, typeof window !== 'undefined' ? new Date(message.timestamp).toLocaleTimeString() : '')))),
|
|
206
|
-
react_1.default.createElement("div", { ref: messagesEndRef })),
|
|
207
|
-
react_1.default.createElement("form", { onSubmit: handleSend, className: "p-3 sm:p-4 border-t border-gray-200" },
|
|
208
|
-
react_1.default.createElement("div", { className: "flex space-x-2" },
|
|
209
|
-
react_1.default.createElement("input", { ref: inputRef, type: "text", value: inputValue, onChange: (e) => setInputValue(e.target.value), placeholder: "Try: toggle notifications", className: "flex-1 px-3 py-2 text-xs sm:text-sm border border-gray-300 rounded-lg focus:ring-2 focus:ring-blue-500 focus:border-transparent text-gray-800", "data-testid": ChatNames.input }),
|
|
210
|
-
react_1.default.createElement("button", { type: "submit", disabled: !inputValue.trim(), className: "px-3 py-2 bg-blue-600 text-white rounded-lg hover:bg-blue-700 disabled:bg-gray-300 disabled:cursor-not-allowed transition-colors text-xs sm:text-sm font-medium", "data-testid": ChatNames.sendButton }, "Execute")),
|
|
211
|
-
react_1.default.createElement("div", { className: "mt-2 text-xs text-gray-500 hidden sm:block" },
|
|
212
|
-
react_1.default.createElement("strong", null, "Demo:"),
|
|
213
|
-
" Commands execute @Tool methods and update widgets above")))),
|
|
214
|
-
react_1.default.createElement("button", { onClick: handleToggle, className: "absolute bottom-0 right-0 w-12 h-12 sm:w-14 sm:h-14 bg-blue-600 hover:bg-blue-700 text-white rounded-full shadow-lg transition-all duration-200 flex items-center justify-center", "data-testid": ChatNames.bubble, title: isExpanded ? 'Minimize chat' : 'Open AI chat' }, isExpanded ? (react_1.default.createElement("svg", { className: "w-5 h-5 sm:w-6 sm:h-6", fill: "none", stroke: "currentColor", viewBox: "0 0 24 24" },
|
|
215
|
-
react_1.default.createElement("path", { strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: 2, d: "M19 9l-7 7-7-7" }))) : (react_1.default.createElement("svg", { className: "w-5 h-5 sm:w-6 sm:h-6", fill: "none", stroke: "currentColor", viewBox: "0 0 24 24" },
|
|
216
|
-
react_1.default.createElement("path", { strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: 2, d: "M8 12h.01M12 12h.01M16 12h.01M21 12c0 4.418-4.03 8-9 8a9.863 9.863 0 01-4.255-.949L3 20l1.395-3.72C3.512 15.042 3 13.574 3 12c0-4.418 4.03-8 9-8s9 3.582 9 8z" })))),
|
|
217
|
-
hasUnread && (react_1.default.createElement("div", { className: "absolute -top-1 -right-1 w-4 h-4 sm:w-5 sm:h-5 bg-red-500 rounded-full flex items-center justify-center animate-pulse", "data-testid": "unread-indicator" },
|
|
218
|
-
react_1.default.createElement("span", { className: "text-xs text-white font-bold" }, unreadCount > 9 ? '9+' : unreadCount))))));
|
|
219
|
-
};
|
|
220
|
-
exports.ChatBubble = ChatBubble;
|
|
221
|
-
//# sourceMappingURL=ChatBubble.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"ChatBubble.js","sourceRoot":"","sources":["../../../../../../src/ui/react/chat/ChatBubble.tsx"],"names":[],"mappings":"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"}
|
|
@@ -1,47 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Native Adapter
|
|
3
|
-
*
|
|
4
|
-
* Implements ChatUIAdapter using our built-in ChatBubble component.
|
|
5
|
-
* Zero external dependencies - works out of the box.
|
|
6
|
-
*
|
|
7
|
-
* This adapter provides:
|
|
8
|
-
* - Lightweight chat UI
|
|
9
|
-
* - Direct tool execution via ToolRegistry
|
|
10
|
-
* - No LLM required (uses pattern matching)
|
|
11
|
-
*/
|
|
12
|
-
import React from 'react';
|
|
13
|
-
import type { ChatUIAdapter, ChatUIProps, ReadableState, ToolExecutionCallback } from '../types';
|
|
14
|
-
import type { ToolMetadata } from '../../decorators/Tool';
|
|
15
|
-
/**
|
|
16
|
-
* Configuration for Native adapter
|
|
17
|
-
*/
|
|
18
|
-
export interface NativeAdapterConfig {
|
|
19
|
-
/** Default system message shown on first load */
|
|
20
|
-
welcomeMessage?: string;
|
|
21
|
-
/** Whether to use pattern matching for tool execution */
|
|
22
|
-
usePatternMatching?: boolean;
|
|
23
|
-
}
|
|
24
|
-
/**
|
|
25
|
-
* Native Adapter Implementation
|
|
26
|
-
*/
|
|
27
|
-
export declare class NativeAdapter implements ChatUIAdapter {
|
|
28
|
-
readonly name = "native";
|
|
29
|
-
private tools;
|
|
30
|
-
private readables;
|
|
31
|
-
private executionCallbacks;
|
|
32
|
-
private config;
|
|
33
|
-
constructor(config?: NativeAdapterConfig);
|
|
34
|
-
initialize(): Promise<void>;
|
|
35
|
-
registerTools(tools: ToolMetadata[]): void;
|
|
36
|
-
registerReadables(readables: ReadableState[]): void;
|
|
37
|
-
onToolExecution(callback: ToolExecutionCallback): () => void;
|
|
38
|
-
private notifyExecution;
|
|
39
|
-
isReady(): boolean;
|
|
40
|
-
dispose(): void;
|
|
41
|
-
render(props: ChatUIProps): React.ReactNode;
|
|
42
|
-
}
|
|
43
|
-
/**
|
|
44
|
-
* Factory function for creating Native adapter
|
|
45
|
-
*/
|
|
46
|
-
export declare function createNativeAdapter(config?: NativeAdapterConfig): NativeAdapter;
|
|
47
|
-
//# sourceMappingURL=NativeAdapter.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"NativeAdapter.d.ts","sourceRoot":"","sources":["../../../../../src/adapters/native/NativeAdapter.tsx"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,KAAmD,MAAM,OAAO,CAAC;AACxE,OAAO,KAAK,EACV,aAAa,EACb,WAAW,EACX,aAAa,EAEb,qBAAqB,EACtB,MAAM,UAAU,CAAC;AAClB,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AAa1D;;GAEG;AACH,MAAM,WAAW,mBAAmB;IAClC,iDAAiD;IACjD,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,yDAAyD;IACzD,kBAAkB,CAAC,EAAE,OAAO,CAAC;CAC9B;AAED;;GAEG;AACH,qBAAa,aAAc,YAAW,aAAa;IACjD,QAAQ,CAAC,IAAI,YAAY;IAEzB,OAAO,CAAC,KAAK,CAAsB;IACnC,OAAO,CAAC,SAAS,CAAuB;IACxC,OAAO,CAAC,kBAAkB,CAA+B;IACzD,OAAO,CAAC,MAAM,CAAsB;gBAExB,MAAM,GAAE,mBAAwB;IAOtC,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;IAIjC,aAAa,CAAC,KAAK,EAAE,YAAY,EAAE,GAAG,IAAI;IAI1C,iBAAiB,CAAC,SAAS,EAAE,aAAa,EAAE,GAAG,IAAI;IAInD,eAAe,CAAC,QAAQ,EAAE,qBAAqB,GAAG,MAAM,IAAI;IAO5D,OAAO,CAAC,eAAe;IAUvB,OAAO,IAAI,OAAO;IAIlB,OAAO,IAAI,IAAI;IAMf,MAAM,CAAC,KAAK,EAAE,WAAW,GAAG,KAAK,CAAC,SAAS;CAU5C;AAyMD;;GAEG;AACH,wBAAgB,mBAAmB,CAAC,MAAM,CAAC,EAAE,mBAAmB,GAAG,aAAa,CAE/E"}
|