@supernal/interface 1.0.8 → 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.
Files changed (159) hide show
  1. package/dist/cjs/src/adapters/copilotkit/CopilotKitAdapter.js +3 -5
  2. package/dist/cjs/src/adapters/copilotkit/CopilotKitAdapter.js.map +1 -1
  3. package/dist/cjs/src/adapters/index.js +3 -4
  4. package/dist/cjs/src/adapters/index.js.map +1 -1
  5. package/dist/cjs/src/ai/AIInterface.js +111 -61
  6. package/dist/cjs/src/ai/AIInterface.js.map +1 -1
  7. package/dist/cjs/src/ai/ToolExecutor.js +36 -1
  8. package/dist/cjs/src/ai/ToolExecutor.js.map +1 -1
  9. package/dist/cjs/src/ai/ToolMatcher.js +6 -0
  10. package/dist/cjs/src/ai/ToolMatcher.js.map +1 -1
  11. package/dist/cjs/src/background/architecture/ArchitectureInitializer.js +13 -2
  12. package/dist/cjs/src/background/architecture/ArchitectureInitializer.js.map +1 -1
  13. package/dist/cjs/src/background/architecture/Containers.js +72 -2
  14. package/dist/cjs/src/background/architecture/Containers.js.map +1 -1
  15. package/dist/cjs/src/background/architecture/index.js +2 -1
  16. package/dist/cjs/src/background/architecture/index.js.map +1 -1
  17. package/dist/cjs/src/background/location/LocationContext.js +19 -2
  18. package/dist/cjs/src/background/location/LocationContext.js.map +1 -1
  19. package/dist/cjs/src/background/navigation/NavigationGraph.js +7 -0
  20. package/dist/cjs/src/background/navigation/NavigationGraph.js.map +1 -1
  21. package/dist/cjs/src/background/registry/ComponentRegistry.js +0 -2
  22. package/dist/cjs/src/background/registry/ComponentRegistry.js.map +1 -1
  23. package/dist/cjs/src/background/registry/ToolRegistry.js +83 -123
  24. package/dist/cjs/src/background/registry/ToolRegistry.js.map +1 -1
  25. package/dist/cjs/src/browser.js +7 -1
  26. package/dist/cjs/src/browser.js.map +1 -1
  27. package/dist/cjs/src/decorators/Component.js +4 -5
  28. package/dist/cjs/src/decorators/Component.js.map +1 -1
  29. package/dist/cjs/src/decorators/Tool.js +1 -6
  30. package/dist/cjs/src/decorators/Tool.js.map +1 -1
  31. package/dist/cjs/src/decorators/ToolHelpers.js +1 -3
  32. package/dist/cjs/src/decorators/ToolHelpers.js.map +1 -1
  33. package/dist/cjs/src/decorators/ToolPreset.js +14 -14
  34. package/dist/cjs/src/decorators/ToolPreset.js.map +1 -1
  35. package/dist/cjs/src/decorators/ToolProvider.js +30 -20
  36. package/dist/cjs/src/decorators/ToolProvider.js.map +1 -1
  37. package/dist/cjs/src/decorators/index.js +8 -13
  38. package/dist/cjs/src/decorators/index.js.map +1 -1
  39. package/dist/cjs/src/exposure/ExposureCollector.js +27 -0
  40. package/dist/cjs/src/exposure/ExposureCollector.js.map +1 -1
  41. package/dist/cjs/src/index.js +6 -9
  42. package/dist/cjs/src/index.js.map +1 -1
  43. package/dist/cjs/src/mcp/server.js +12 -14
  44. package/dist/cjs/src/mcp/server.js.map +1 -1
  45. package/dist/cjs/src/react/hooks/useChatWithContext.js +4 -10
  46. package/dist/cjs/src/react/hooks/useChatWithContext.js.map +1 -1
  47. package/dist/cjs/src/types/ComponentState.js.map +1 -1
  48. package/dist/esm/src/adapters/copilotkit/CopilotKitAdapter.d.ts.map +1 -1
  49. package/dist/esm/src/adapters/copilotkit/CopilotKitAdapter.js +3 -5
  50. package/dist/esm/src/adapters/copilotkit/CopilotKitAdapter.js.map +1 -1
  51. package/dist/esm/src/adapters/index.d.ts +0 -2
  52. package/dist/esm/src/adapters/index.d.ts.map +1 -1
  53. package/dist/esm/src/adapters/index.js +2 -1
  54. package/dist/esm/src/adapters/index.js.map +1 -1
  55. package/dist/esm/src/adapters/types/index.d.ts +0 -2
  56. package/dist/esm/src/adapters/types/index.d.ts.map +1 -1
  57. package/dist/esm/src/ai/AIInterface.d.ts +5 -1
  58. package/dist/esm/src/ai/AIInterface.d.ts.map +1 -1
  59. package/dist/esm/src/ai/AIInterface.js +111 -61
  60. package/dist/esm/src/ai/AIInterface.js.map +1 -1
  61. package/dist/esm/src/ai/ToolExecutor.js +36 -1
  62. package/dist/esm/src/ai/ToolExecutor.js.map +1 -1
  63. package/dist/esm/src/ai/ToolMatcher.d.ts +1 -0
  64. package/dist/esm/src/ai/ToolMatcher.d.ts.map +1 -1
  65. package/dist/esm/src/ai/ToolMatcher.js +6 -0
  66. package/dist/esm/src/ai/ToolMatcher.js.map +1 -1
  67. package/dist/esm/src/background/architecture/ArchitectureInitializer.d.ts +1 -1
  68. package/dist/esm/src/background/architecture/ArchitectureInitializer.d.ts.map +1 -1
  69. package/dist/esm/src/background/architecture/ArchitectureInitializer.js +13 -2
  70. package/dist/esm/src/background/architecture/ArchitectureInitializer.js.map +1 -1
  71. package/dist/esm/src/background/architecture/Containers.d.ts +35 -2
  72. package/dist/esm/src/background/architecture/Containers.d.ts.map +1 -1
  73. package/dist/esm/src/background/architecture/Containers.js +70 -2
  74. package/dist/esm/src/background/architecture/Containers.js.map +1 -1
  75. package/dist/esm/src/background/architecture/index.d.ts +1 -1
  76. package/dist/esm/src/background/architecture/index.d.ts.map +1 -1
  77. package/dist/esm/src/background/architecture/index.js +1 -1
  78. package/dist/esm/src/background/architecture/index.js.map +1 -1
  79. package/dist/esm/src/background/location/LocationContext.d.ts +3 -2
  80. package/dist/esm/src/background/location/LocationContext.d.ts.map +1 -1
  81. package/dist/esm/src/background/location/LocationContext.js +19 -2
  82. package/dist/esm/src/background/location/LocationContext.js.map +1 -1
  83. package/dist/esm/src/background/navigation/NavigationGraph.d.ts +5 -0
  84. package/dist/esm/src/background/navigation/NavigationGraph.d.ts.map +1 -1
  85. package/dist/esm/src/background/navigation/NavigationGraph.js +7 -0
  86. package/dist/esm/src/background/navigation/NavigationGraph.js.map +1 -1
  87. package/dist/esm/src/background/registry/ComponentRegistry.d.ts +0 -4
  88. package/dist/esm/src/background/registry/ComponentRegistry.d.ts.map +1 -1
  89. package/dist/esm/src/background/registry/ComponentRegistry.js +0 -2
  90. package/dist/esm/src/background/registry/ComponentRegistry.js.map +1 -1
  91. package/dist/esm/src/background/registry/ToolRegistry.d.ts +24 -38
  92. package/dist/esm/src/background/registry/ToolRegistry.d.ts.map +1 -1
  93. package/dist/esm/src/background/registry/ToolRegistry.js +81 -121
  94. package/dist/esm/src/background/registry/ToolRegistry.js.map +1 -1
  95. package/dist/esm/src/browser.d.ts +3 -1
  96. package/dist/esm/src/browser.d.ts.map +1 -1
  97. package/dist/esm/src/browser.js +3 -1
  98. package/dist/esm/src/browser.js.map +1 -1
  99. package/dist/esm/src/decorators/Component.d.ts +1 -8
  100. package/dist/esm/src/decorators/Component.d.ts.map +1 -1
  101. package/dist/esm/src/decorators/Component.js +4 -5
  102. package/dist/esm/src/decorators/Component.js.map +1 -1
  103. package/dist/esm/src/decorators/Tool.d.ts +1 -6
  104. package/dist/esm/src/decorators/Tool.d.ts.map +1 -1
  105. package/dist/esm/src/decorators/Tool.js +1 -6
  106. package/dist/esm/src/decorators/Tool.js.map +1 -1
  107. package/dist/esm/src/decorators/ToolHelpers.d.ts.map +1 -1
  108. package/dist/esm/src/decorators/ToolHelpers.js +1 -3
  109. package/dist/esm/src/decorators/ToolHelpers.js.map +1 -1
  110. package/dist/esm/src/decorators/ToolPreset.d.ts +12 -9
  111. package/dist/esm/src/decorators/ToolPreset.d.ts.map +1 -1
  112. package/dist/esm/src/decorators/ToolPreset.js +13 -13
  113. package/dist/esm/src/decorators/ToolPreset.js.map +1 -1
  114. package/dist/esm/src/decorators/ToolProvider.d.ts +5 -21
  115. package/dist/esm/src/decorators/ToolProvider.d.ts.map +1 -1
  116. package/dist/esm/src/decorators/ToolProvider.js +30 -19
  117. package/dist/esm/src/decorators/ToolProvider.js.map +1 -1
  118. package/dist/esm/src/decorators/index.d.ts +6 -12
  119. package/dist/esm/src/decorators/index.d.ts.map +1 -1
  120. package/dist/esm/src/decorators/index.js +7 -12
  121. package/dist/esm/src/decorators/index.js.map +1 -1
  122. package/dist/esm/src/exposure/ExposureCollector.d.ts +8 -0
  123. package/dist/esm/src/exposure/ExposureCollector.d.ts.map +1 -1
  124. package/dist/esm/src/exposure/ExposureCollector.js +27 -0
  125. package/dist/esm/src/exposure/ExposureCollector.js.map +1 -1
  126. package/dist/esm/src/index.d.ts +5 -6
  127. package/dist/esm/src/index.d.ts.map +1 -1
  128. package/dist/esm/src/index.js +5 -6
  129. package/dist/esm/src/index.js.map +1 -1
  130. package/dist/esm/src/mcp/server.d.ts +1 -1
  131. package/dist/esm/src/mcp/server.d.ts.map +1 -1
  132. package/dist/esm/src/mcp/server.js +12 -14
  133. package/dist/esm/src/mcp/server.js.map +1 -1
  134. package/dist/esm/src/react/hooks/useChatWithContext.d.ts +0 -2
  135. package/dist/esm/src/react/hooks/useChatWithContext.d.ts.map +1 -1
  136. package/dist/esm/src/react/hooks/useChatWithContext.js +4 -10
  137. package/dist/esm/src/react/hooks/useChatWithContext.js.map +1 -1
  138. package/dist/esm/src/types/ComponentState.d.ts +0 -4
  139. package/dist/esm/src/types/ComponentState.d.ts.map +1 -1
  140. package/dist/esm/src/types/ComponentState.js.map +1 -1
  141. package/package.json +4 -3
  142. package/dist/cjs/src/adapters/native/NativeAdapter.js +0 -268
  143. package/dist/cjs/src/adapters/native/NativeAdapter.js.map +0 -1
  144. package/dist/cjs/src/adapters/native/index.js +0 -10
  145. package/dist/cjs/src/adapters/native/index.js.map +0 -1
  146. package/dist/cjs/src/ui/react/chat/ChatBubble.js +0 -221
  147. package/dist/cjs/src/ui/react/chat/ChatBubble.js.map +0 -1
  148. package/dist/esm/src/adapters/native/NativeAdapter.d.ts +0 -47
  149. package/dist/esm/src/adapters/native/NativeAdapter.d.ts.map +0 -1
  150. package/dist/esm/src/adapters/native/NativeAdapter.js +0 -230
  151. package/dist/esm/src/adapters/native/NativeAdapter.js.map +0 -1
  152. package/dist/esm/src/adapters/native/index.d.ts +0 -6
  153. package/dist/esm/src/adapters/native/index.d.ts.map +0 -1
  154. package/dist/esm/src/adapters/native/index.js +0 -5
  155. package/dist/esm/src/adapters/native/index.js.map +0 -1
  156. package/dist/esm/src/ui/react/chat/ChatBubble.d.ts +0 -27
  157. package/dist/esm/src/ui/react/chat/ChatBubble.d.ts.map +0 -1
  158. package/dist/esm/src/ui/react/chat/ChatBubble.js +0 -184
  159. 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":";AAAA;;;;;;;GAOG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAEH,+CAA2D;AAC3D,6DAA0D;AAE1D,2DAA2D;AAC3D,MAAM,SAAS,GAAG;IAChB,MAAM,EAAE,uBAAU,CAAC,gBAAgB;IACnC,KAAK,EAAE,uBAAU,CAAC,SAAS;IAC3B,UAAU,EAAE,uBAAU,CAAC,cAAc;IACrC,WAAW,EAAE,uBAAU,CAAC,eAAe;CACxC,CAAC;AAEF,2EAA2E;AAC3E,MAAM,YAAY,GAAG,GAAG,EAAE,CAAC,CAAC;IAC1B,aAAa,EAAE,CAAC,QAAkD,EAAE,EAAE,GAAE,CAAC;CAC1E,CAAC,CAAC;AAmBI,MAAM,UAAU,GAA8B,CAAC,EACpD,QAAQ,EACR,aAAa,EACb,WAAW,EACX,aAAa,GAAG,OAAO,EACvB,KAAK,GAAG,MAAM,GACf,EAAE,EAAE;IACH,MAAM,iBAAiB,GAAG,GAAG,aAAa,UAAU,CAAC;IACrD,gGAAgG;IAChG,MAAM,CAAC,UAAU,EAAE,aAAa,CAAC,GAAG,IAAA,gBAAQ,EAAC,IAAI,CAAC,CAAC;IACnD,MAAM,CAAC,UAAU,EAAE,aAAa,CAAC,GAAG,IAAA,gBAAQ,EAAC,EAAE,CAAC,CAAC;IACjD,MAAM,CAAC,oBAAoB,EAAE,uBAAuB,CAAC,GAAG,IAAA,gBAAQ,EAAC,CAAC,CAAC,CAAC;IACpE,MAAM,CAAC,WAAW,EAAE,cAAc,CAAC,GAAG,IAAA,gBAAQ,EAAC,QAAQ,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC;IACtE,MAAM,cAAc,GAAG,IAAA,cAAM,EAAiB,IAAI,CAAC,CAAC;IACpD,MAAM,QAAQ,GAAG,IAAA,cAAM,EAAmB,IAAI,CAAC,CAAC;IAEhD,wDAAwD;IACxD,IAAA,iBAAS,EAAC,GAAG,EAAE;QACb,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,YAAY,CAAC,OAAO,CAAC,iBAAiB,CAAC,CAAC;YACvD,IAAI,MAAM,KAAK,IAAI,EAAE,CAAC;gBACpB,aAAa,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC;YACpC,CAAC;QACH,CAAC;QAAC,MAAM,CAAC;YACP,qBAAqB;QACvB,CAAC;IACH,CAAC,EAAE,EAAE,CAAC,CAAC;IAEP,mCAAmC;IACnC,MAAM,EAAE,aAAa,EAAE,GAAG,YAAY,EAAE,CAAC;IAEzC,IAAA,iBAAS,EAAC,GAAG,EAAE;QACb,aAAa,CAAC,CAAC,IAAY,EAAE,MAAM,GAAG,KAAK,EAAE,EAAE;YAC7C,aAAa,CAAC,IAAI,CAAC,CAAC;YACpB,IAAI,CAAC,UAAU,EAAE,CAAC;gBAChB,aAAa,CAAC,IAAI,CAAC,CAAC;YACtB,CAAC;YACD,qCAAqC;YACrC,UAAU,CAAC,GAAG,EAAE;gBACd,QAAQ,CAAC,OAAO,EAAE,KAAK,EAAE,CAAC;gBAC1B,IAAI,MAAM,EAAE,CAAC;oBACX,aAAa,CAAC,IAAI,CAAC,CAAC;oBACpB,aAAa,CAAC,EAAE,CAAC,CAAC;gBACpB,CAAC;YACH,CAAC,EAAE,GAAG,CAAC,CAAC;QACV,CAAC,CAAC,CAAC;IACL,CAAC,EAAE,CAAC,aAAa,EAAE,aAAa,EAAE,UAAU,CAAC,CAAC,CAAC;IAE/C,wBAAwB;IACxB,MAAM,WAAW,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,QAAQ,CAAC,MAAM,GAAG,oBAAoB,CAAC,CAAC;IACxE,MAAM,SAAS,GAAG,WAAW,GAAG,CAAC,IAAI,CAAC,UAAU,CAAC;IAEjD,IAAA,iBAAS,EAAC,GAAG,EAAE;QACb,IAAI,UAAU,EAAE,CAAC;YACf,iDAAiD;YACjD,cAAc,CAAC,OAAO,EAAE,cAAc,CAAC,EAAE,QAAQ,EAAE,MAAM,EAAE,CAAC,CAAC;YAC7D,kDAAkD;YAClD,uBAAuB,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;YACzC,iCAAiC;YACjC,IAAI,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBACxB,cAAc,CAAC,KAAK,CAAC,CAAC;YACxB,CAAC;YACD,iCAAiC;YACjC,QAAQ,CAAC,OAAO,EAAE,KAAK,EAAE,CAAC;QAC5B,CAAC;IACH,CAAC,EAAE,CAAC,QAAQ,EAAE,UAAU,CAAC,CAAC,CAAC;IAE3B,sBAAsB;IACtB,IAAA,iBAAS,EAAC,GAAG,EAAE;QACb,IAAI,UAAU,EAAE,CAAC;YACf,QAAQ,CAAC,OAAO,EAAE,KAAK,EAAE,CAAC;QAC5B,CAAC;IACH,CAAC,EAAE,CAAC,UAAU,CAAC,CAAC,CAAC;IAEjB,6CAA6C;IAC7C,IAAA,iBAAS,EAAC,GAAG,EAAE;QACb,MAAM,aAAa,GAAG,CAAC,CAAgB,EAAE,EAAE;YACzC,IAAI,CAAC,CAAC,CAAC,OAAO,IAAI,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,GAAG,KAAK,GAAG,EAAE,CAAC;gBAC9C,CAAC,CAAC,cAAc,EAAE,CAAC;gBACnB,IAAI,CAAC,UAAU,EAAE,CAAC;oBAChB,aAAa,CAAC,IAAI,CAAC,CAAC;gBACtB,CAAC;gBACD,QAAQ,CAAC,OAAO,EAAE,KAAK,EAAE,CAAC;YAC5B,CAAC;QACH,CAAC,CAAC;QAEF,MAAM,CAAC,gBAAgB,CAAC,SAAS,EAAE,aAAa,CAAC,CAAC;QAClD,OAAO,GAAG,EAAE,CAAC,MAAM,CAAC,mBAAmB,CAAC,SAAS,EAAE,aAAa,CAAC,CAAC;IACpE,CAAC,EAAE,CAAC,UAAU,CAAC,CAAC,CAAC;IAEjB,MAAM,UAAU,GAAG,CAAC,CAAkB,EAAE,EAAE;QACxC,CAAC,CAAC,cAAc,EAAE,CAAC;QACnB,IAAI,CAAC,UAAU,CAAC,IAAI,EAAE;YAAE,OAAO;QAE/B,aAAa,CAAC,UAAU,CAAC,IAAI,EAAE,CAAC,CAAC;QACjC,aAAa,CAAC,EAAE,CAAC,CAAC;QAClB,+BAA+B;QAC/B,UAAU,CAAC,GAAG,EAAE,CAAC,QAAQ,CAAC,OAAO,EAAE,KAAK,EAAE,EAAE,CAAC,CAAC,CAAC;IACjD,CAAC,CAAC;IAEF,MAAM,YAAY,GAAG,GAAG,EAAE;QACxB,MAAM,gBAAgB,GAAG,CAAC,UAAU,CAAC;QACrC,aAAa,CAAC,gBAAgB,CAAC,CAAC;QAChC,6CAA6C;QAC7C,IAAI,CAAC;YACH,YAAY,CAAC,OAAO,CAAC,iBAAiB,EAAE,IAAI,CAAC,SAAS,CAAC,gBAAgB,CAAC,CAAC,CAAC;QAC5E,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO,CAAC,KAAK,CAAC,qCAAqC,EAAE,KAAK,CAAC,CAAC;QAC9D,CAAC;IACH,CAAC,CAAC;IAEF,OAAO,CACL;QAEE,uCAAK,SAAS,EAAC,oDAAoD;YAEhE,UAAU,IAAI,CACb,uCAAK,SAAS,EAAC,+LAA+L;gBAE5M,uCAAK,SAAS,EAAC,+HAA+H;oBAC5I,uCAAK,SAAS,EAAC,0CAA0C;wBACvD,uCAAK,SAAS,EAAC,UAAU;4BACvB,uCAAK,SAAS,EAAC,qHAAqH;gCAClI,wCAAM,SAAS,EAAC,iCAAiC,mBAAU,CACvD;4BACN,uCAAK,SAAS,EAAC,mGAAmG,GAAO,CACrH;wBACN;4BACE,sCAAI,SAAS,EAAC,8CAA8C,IAAE,KAAK,CAAM;4BACzE,qCAAG,SAAS,EAAC,uCAAuC,wDAEhD,CACA,CACF;oBACN,uCAAK,SAAS,EAAC,6BAA6B;wBACzC,WAAW,IAAI,CACd,0CACE,OAAO,EAAE,WAAW,EACpB,SAAS,EAAC,yDAAyD,EACnE,KAAK,EAAC,YAAY,iBACL,SAAS,CAAC,WAAW;4BAElC,uCAAK,SAAS,EAAC,SAAS,EAAC,IAAI,EAAC,MAAM,EAAC,MAAM,EAAC,cAAc,EAAC,OAAO,EAAC,WAAW;gCAC5E,wCAAM,aAAa,EAAC,OAAO,EAAC,cAAc,EAAC,OAAO,EAAC,WAAW,EAAE,CAAC,EAAE,CAAC,EAAC,8HAA8H,GAAG,CAClM,CACC,CACV;wBACD,0CACE,OAAO,EAAE,YAAY,EACrB,SAAS,EAAC,yDAAyD,EACnE,KAAK,EAAC,eAAe;4BAErB,uCAAK,SAAS,EAAC,SAAS,EAAC,IAAI,EAAC,MAAM,EAAC,MAAM,EAAC,cAAc,EAAC,OAAO,EAAC,WAAW;gCAC5E,wCAAM,aAAa,EAAC,OAAO,EAAC,cAAc,EAAC,OAAO,EAAC,WAAW,EAAE,CAAC,EAAE,CAAC,EAAC,gBAAgB,GAAG,CACpF,CACC,CACL,CACF;gBAGN,uCAAK,SAAS,EAAC,6CAA6C;oBAEzD,WAAW,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC,IAAI,CACvC,uCAAK,SAAS,EAAC,+FAA+F;wBAC5G,sCAAI,SAAS,EAAC,iDAAiD,0CAE1D;wBACL,qCAAG,SAAS,EAAC,4BAA4B;;4BACjC,4DAA4B;;4BACsB,2DAA2B;yHAEjF;wBACJ,uCAAK,SAAS,EAAC,yDAAyD;4BACtE,qCAAG,SAAS,EAAC,wCAAwC,0BAEjD;4BACJ,uCAAK,SAAS,EAAC,WAAW,IACvB;gCACC,EAAE,IAAI,EAAE,eAAe,EAAE,IAAI,EAAE,2BAA2B,EAAE;gCAC5D,EAAE,IAAI,EAAE,0BAA0B,EAAE,IAAI,EAAE,yBAAyB,EAAE;gCACrE,EAAE,IAAI,EAAE,gBAAgB,EAAE,IAAI,EAAE,sBAAsB,EAAE;6BACzD,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,CAAC,CAClB,0CACE,GAAG,EAAE,GAAG,EACR,OAAO,EAAE,GAAG,EAAE;oCACZ,aAAa,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;oCACxB,cAAc,CAAC,KAAK,CAAC,CAAC;oCACtB,UAAU,CAAC,GAAG,EAAE,CAAC,QAAQ,CAAC,OAAO,EAAE,KAAK,EAAE,EAAE,CAAC,CAAC,CAAC;gCACjD,CAAC,EACD,SAAS,EAAC,+EAA+E;gCAEzF,uCAAK,SAAS,EAAC,2DAA2D;;oCACtE,GAAG,CAAC,IAAI;yCACN;gCACN,uCAAK,SAAS,EAAC,uCAAuC,IACnD,GAAG,CAAC,IAAI,CACL,CACC,CACV,CAAC,CACE,CACF;wBACN,qCAAG,SAAS,EAAC,8BAA8B,0DAEvC,CACA,CACP;oBAGA,QAAQ,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,CACzB,uCAAK,GAAG,EAAE,OAAO,CAAC,EAAE,EAAE,SAAS,EAAC,eAAe;wBAC7C,uCACE,SAAS,EAAE,gFACT,OAAO,CAAC,IAAI,KAAK,MAAM;gCACrB,CAAC,CAAC,gCAAgC;gCAClC,CAAC,CAAC,OAAO,CAAC,IAAI,KAAK,IAAI;oCACvB,CAAC,CAAC,2BAA2B;oCAC7B,CAAC,CAAC,uCACN,EAAE,iBACW,gBAAgB,OAAO,CAAC,IAAI,EAAE,IAE1C,OAAO,CAAC,IAAI,CACT;wBACN,uCAAK,SAAS,EAAC,iCAAiC,IAC7C,OAAO,MAAM,KAAK,WAAW,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,kBAAkB,EAAE,CAAC,CAAC,CAAC,EAAE,CAClF,CACF,CACP,CAAC;oBACF,uCAAK,GAAG,EAAE,cAAc,GAAI,CACxB;gBAGN,wCAAM,QAAQ,EAAE,UAAU,EAAE,SAAS,EAAC,qCAAqC;oBACzE,uCAAK,SAAS,EAAC,gBAAgB;wBAC7B,yCACE,GAAG,EAAE,QAAQ,EACb,IAAI,EAAC,MAAM,EACX,KAAK,EAAE,UAAU,EACjB,QAAQ,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,aAAa,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EAC9C,WAAW,EAAC,2BAA2B,EACvC,SAAS,EAAC,+IAA+I,iBAC5I,SAAS,CAAC,KAAK,GAC5B;wBACF,0CACE,IAAI,EAAC,QAAQ,EACb,QAAQ,EAAE,CAAC,UAAU,CAAC,IAAI,EAAE,EAC5B,SAAS,EAAC,iKAAiK,iBAC9J,SAAS,CAAC,UAAU,cAG1B,CACL;oBACN,uCAAK,SAAS,EAAC,4CAA4C;wBACzD,sDAAsB;mFAClB,CACD,CACH,CACP;YAGD,0CACE,OAAO,EAAE,YAAY,EACrB,SAAS,EAAC,kLAAkL,iBAC/K,SAAS,CAAC,MAAM,EAC7B,KAAK,EAAE,UAAU,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,cAAc,IAEnD,UAAU,CAAC,CAAC,CAAC,CACZ,uCAAK,SAAS,EAAC,uBAAuB,EAAC,IAAI,EAAC,MAAM,EAAC,MAAM,EAAC,cAAc,EAAC,OAAO,EAAC,WAAW;gBAC1F,wCAAM,aAAa,EAAC,OAAO,EAAC,cAAc,EAAC,OAAO,EAAC,WAAW,EAAE,CAAC,EAAE,CAAC,EAAC,gBAAgB,GAAG,CACpF,CACP,CAAC,CAAC,CAAC,CACF,uCAAK,SAAS,EAAC,uBAAuB,EAAC,IAAI,EAAC,MAAM,EAAC,MAAM,EAAC,cAAc,EAAC,OAAO,EAAC,WAAW;gBAC1F,wCAAM,aAAa,EAAC,OAAO,EAAC,cAAc,EAAC,OAAO,EAAC,WAAW,EAAE,CAAC,EAAE,CAAC,EAAC,+JAA+J,GAAG,CACnO,CACP,CACM;YAGR,SAAS,IAAI,CACZ,uCAAK,SAAS,EAAC,uHAAuH,iBAAa,kBAAkB;gBACnK,wCAAM,SAAS,EAAC,8BAA8B,IAAE,WAAW,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,WAAW,CAAQ,CACxF,CACP,CACG,CACL,CACJ,CAAC;AACJ,CAAC,CAAC;AA7RW,QAAA,UAAU,cA6RrB"}
@@ -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"}