guideai-app 0.2.5 → 0.2.6

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 (64) hide show
  1. package/GuideAI.js +1 -1
  2. package/GuideAI.js.map +1 -1
  3. package/README.md +39 -1
  4. package/dist/GuideAI.js +1 -1
  5. package/dist/GuideAI.js.map +1 -1
  6. package/dist/components/TextInput.d.ts +8 -0
  7. package/dist/components/TranscriptBox.d.ts +17 -0
  8. package/dist/index.d.ts +2 -0
  9. package/dist/metric/event-listner.d.ts +113 -0
  10. package/dist/metric/index.d.ts +4 -0
  11. package/dist/metric/metadata-tracker.d.ts +33 -0
  12. package/dist/styles/GuideAI.styles.d.ts +1 -1
  13. package/dist/types/GuideAI.types.d.ts +18 -0
  14. package/dist/types/metadata.types.d.ts +46 -0
  15. package/dist/utils/api.d.ts +4 -0
  16. package/dist/utils/messageStorage.d.ts +1 -1
  17. package/metadata-tracking-example.md +324 -0
  18. package/package.json +1 -1
  19. package/text-input-usage.md +321 -0
  20. package/transcript-toggle-usage.md +267 -0
  21. package/dist/GuideAI.js.LICENSE.txt +0 -16
  22. package/dist/components/Styles.d.ts +0 -3
  23. package/dist/components/Styles.js +0 -6
  24. package/dist/components/Styles.js.map +0 -1
  25. package/dist/hooks/useConversation.d.ts +0 -11
  26. package/dist/hooks/useConversation.js +0 -286
  27. package/dist/hooks/useConversation.js.map +0 -1
  28. package/dist/hooks/useRecording.d.ts +0 -12
  29. package/dist/hooks/useRecording.js +0 -362
  30. package/dist/hooks/useRecording.js.map +0 -1
  31. package/dist/index.esm.js +0 -1
  32. package/dist/index.esm.js.map +0 -1
  33. package/dist/index.js +0 -1
  34. package/dist/index.js.map +0 -1
  35. package/dist/messageStorageUtils.d.ts +0 -26
  36. package/dist/types/index.d.ts +0 -20
  37. package/dist/types/index.js +0 -2
  38. package/dist/types/index.js.map +0 -1
  39. package/dist/types/workflow.d.ts +0 -24
  40. package/dist/types.d.ts +0 -1
  41. package/dist/types.js +0 -2
  42. package/dist/types.js.map +0 -1
  43. package/dist/utils/api-services.d.ts +0 -5
  44. package/dist/utils/api-services.js +0 -203
  45. package/dist/utils/api-services.js.map +0 -1
  46. package/dist/utils/dom-interaction.d.ts +0 -2
  47. package/dist/utils/dom-interaction.js +0 -195
  48. package/dist/utils/dom-interaction.js.map +0 -1
  49. package/dist/utils/dom.d.ts +0 -1
  50. package/dist/utils/messageStorageUtils.d.ts +0 -26
  51. package/dist/utils/react-hooks.d.ts +0 -9
  52. package/dist/utils/react-hooks.js +0 -19
  53. package/dist/utils/react-hooks.js.map +0 -1
  54. package/dist/utils/storage.d.ts +0 -14
  55. package/dist/utils/storage.js +0 -27
  56. package/dist/utils/storage.js.map +0 -1
  57. package/dist/utils/webrtc.d.ts +0 -3
  58. package/dist/utils/webrtc.js +0 -135
  59. package/dist/utils/webrtc.js.map +0 -1
  60. package/dist/utils/workflowUtils.d.ts +0 -17
  61. package/dist/utils/workflowValidator.d.ts +0 -17
  62. package/dist/workflows/certificateWorkflow.d.ts +0 -7
  63. package/dist/workflows/index.d.ts +0 -6
  64. package/todo.md +0 -2
@@ -1,24 +0,0 @@
1
- export interface WorkflowOption {
2
- selectors: string[];
3
- message?: string;
4
- next_step?: string;
5
- }
6
- export interface WorkflowStep {
7
- id: string;
8
- prompt: string;
9
- options: {
10
- [response: string]: WorkflowOption;
11
- };
12
- }
13
- export interface Workflow {
14
- id: string;
15
- name: string;
16
- trigger_phrases: string[];
17
- steps: WorkflowStep[];
18
- }
19
- export interface WorkflowState {
20
- activeWorkflow: Workflow | null;
21
- currentStepId: string | null;
22
- stepHistory: string[];
23
- context: Record<string, any>;
24
- }
package/dist/types.d.ts DELETED
@@ -1 +0,0 @@
1
- export type RecordingStatus = 'idle' | 'recording' | 'processing' | 'playing' | 'initializing';
package/dist/types.js DELETED
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=types.js.map
package/dist/types.js.map DELETED
@@ -1 +0,0 @@
1
- {"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":""}
@@ -1,5 +0,0 @@
1
- export declare const DEFAULT_PROMPT = "you are Guide AI.\n Your role is to answer any question directly and succinctly that a user has. NEVER DIRECTLY MENTION THE SCREENSHOT, but use its information as much as possible to target your responses.\n If nothing is asked, then your goal is to generally assist them.\n IMPORTANT: NEVER answer in more than 10 words. Always be concise and limit answers to 1 sentence maximum. Be simple and as short as possible.\n Your job is to help them get it done through asking more and more targeted specific questions.";
2
- export declare const geminiFlash: (prompt: string) => Promise<any>;
3
- export declare const createNewConversation: (organizationKey: string) => Promise<string | null>;
4
- export declare const logMessage: (conversationId: string, content: string, sender: "GUIDEAI" | "HUMAN") => Promise<void>;
5
- export declare const fetchEphemeralToken: (organizationKey: string) => Promise<string | null>;
@@ -1,203 +0,0 @@
1
- var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
2
- function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
3
- return new (P || (P = Promise))(function (resolve, reject) {
4
- function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
5
- function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
6
- function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
7
- step((generator = generator.apply(thisArg, _arguments || [])).next());
8
- });
9
- };
10
- var __generator = (this && this.__generator) || function (thisArg, body) {
11
- var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g = Object.create((typeof Iterator === "function" ? Iterator : Object).prototype);
12
- return g.next = verb(0), g["throw"] = verb(1), g["return"] = verb(2), typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
13
- function verb(n) { return function (v) { return step([n, v]); }; }
14
- function step(op) {
15
- if (f) throw new TypeError("Generator is already executing.");
16
- while (g && (g = 0, op[0] && (_ = 0)), _) try {
17
- if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
18
- if (y = 0, t) op = [op[0] & 2, t.value];
19
- switch (op[0]) {
20
- case 0: case 1: t = op; break;
21
- case 4: _.label++; return { value: op[1], done: false };
22
- case 5: _.label++; y = op[1]; op = [0]; continue;
23
- case 7: op = _.ops.pop(); _.trys.pop(); continue;
24
- default:
25
- if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
26
- if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
27
- if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
28
- if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
29
- if (t[2]) _.ops.pop();
30
- _.trys.pop(); continue;
31
- }
32
- op = body.call(thisArg, _);
33
- } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
34
- if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
35
- }
36
- };
37
- export var DEFAULT_PROMPT = "you are Guide AI.\n Your role is to answer any question directly and succinctly that a user has. NEVER DIRECTLY MENTION THE SCREENSHOT, but use its information as much as possible to target your responses.\n If nothing is asked, then your goal is to generally assist them.\n IMPORTANT: NEVER answer in more than 10 words. Always be concise and limit answers to 1 sentence maximum. Be simple and as short as possible.\n Your job is to help them get it done through asking more and more targeted specific questions.";
38
- export var geminiFlash = function (prompt) { return __awaiter(void 0, void 0, void 0, function () {
39
- var response, responseJson, content, responseText;
40
- return __generator(this, function (_a) {
41
- switch (_a.label) {
42
- case 0: return [4 /*yield*/, fetch("https://generativelanguage.googleapis.com/v1beta/models/gemini-2.0-flash:generateContent?key=AIzaSyBiFyzjYVupLyk8BdmfWzBL1GbzX8OUdPc", {
43
- method: 'POST',
44
- headers: {
45
- 'Content-Type': 'application/json'
46
- },
47
- body: JSON.stringify({
48
- contents: [
49
- {
50
- parts: [
51
- {
52
- text: prompt
53
- }
54
- ]
55
- }
56
- ]
57
- })
58
- })];
59
- case 1:
60
- response = _a.sent();
61
- return [4 /*yield*/, response.json()];
62
- case 2:
63
- responseJson = _a.sent();
64
- content = responseJson.candidates[0].content;
65
- responseText = content.parts[0].text;
66
- return [2 /*return*/, responseText];
67
- }
68
- });
69
- }); };
70
- export var createNewConversation = function (organizationKey) { return __awaiter(void 0, void 0, void 0, function () {
71
- var now, response, conversation, error_1;
72
- return __generator(this, function (_a) {
73
- switch (_a.label) {
74
- case 0:
75
- _a.trys.push([0, 3, , 4]);
76
- now = new Date();
77
- return [4 /*yield*/, fetch('https://www.getguide.ai/api/conversations', {
78
- method: 'POST',
79
- headers: {
80
- 'Content-Type': 'application/json',
81
- },
82
- body: JSON.stringify({
83
- id: crypto.randomUUID(),
84
- userId: 'anonymous',
85
- date: now.toISOString().split('T')[0],
86
- time: now.toTimeString().split(' ')[0],
87
- messages: [],
88
- organization: organizationKey
89
- })
90
- })];
91
- case 1:
92
- response = _a.sent();
93
- return [4 /*yield*/, response.json()];
94
- case 2:
95
- conversation = _a.sent();
96
- console.log('Conversation created:', conversation);
97
- return [2 /*return*/, conversation.id];
98
- case 3:
99
- error_1 = _a.sent();
100
- console.error('Error creating conversation:', error_1);
101
- return [2 /*return*/, null];
102
- case 4: return [2 /*return*/];
103
- }
104
- });
105
- }); };
106
- export var logMessage = function (conversationId, content, sender) { return __awaiter(void 0, void 0, void 0, function () {
107
- var response, error_2;
108
- return __generator(this, function (_a) {
109
- switch (_a.label) {
110
- case 0:
111
- if (!conversationId)
112
- return [2 /*return*/];
113
- _a.label = 1;
114
- case 1:
115
- _a.trys.push([1, 3, , 4]);
116
- return [4 /*yield*/, fetch("https://www.getguide.ai/api/conversations/".concat(conversationId, "/messages"), {
117
- method: 'POST',
118
- headers: {
119
- 'Content-Type': 'application/json'
120
- },
121
- body: JSON.stringify({ content: content, sender: sender })
122
- })];
123
- case 2:
124
- response = _a.sent();
125
- if (!response.ok) {
126
- throw new Error("Failed to log message: ".concat(response.status, " ").concat(response.statusText));
127
- }
128
- return [3 /*break*/, 4];
129
- case 3:
130
- error_2 = _a.sent();
131
- console.error('Error logging message:', error_2);
132
- return [3 /*break*/, 4];
133
- case 4: return [2 /*return*/];
134
- }
135
- });
136
- }); };
137
- export var fetchEphemeralToken = function (organizationKey) { return __awaiter(void 0, void 0, void 0, function () {
138
- var promptToUse, promptResponse, promptData, promptError_1, tokenEndpoint, response, errorText, data, error_3;
139
- return __generator(this, function (_a) {
140
- switch (_a.label) {
141
- case 0:
142
- _a.trys.push([0, 12, , 13]);
143
- promptToUse = DEFAULT_PROMPT;
144
- if (!organizationKey) return [3 /*break*/, 7];
145
- _a.label = 1;
146
- case 1:
147
- _a.trys.push([1, 6, , 7]);
148
- return [4 /*yield*/, fetch("https://www.getguide.ai/api/prompts/".concat(organizationKey))];
149
- case 2:
150
- promptResponse = _a.sent();
151
- if (!promptResponse.ok) return [3 /*break*/, 4];
152
- return [4 /*yield*/, promptResponse.json()];
153
- case 3:
154
- promptData = _a.sent();
155
- promptToUse = promptData.prompt || DEFAULT_PROMPT;
156
- return [3 /*break*/, 5];
157
- case 4:
158
- if (promptResponse.status !== 404) {
159
- console.error("Failed to fetch prompt: ".concat(promptResponse.statusText));
160
- }
161
- _a.label = 5;
162
- case 5: return [3 /*break*/, 7];
163
- case 6:
164
- promptError_1 = _a.sent();
165
- console.error('Error fetching prompt:', promptError_1);
166
- return [3 /*break*/, 7];
167
- case 7:
168
- tokenEndpoint = 'https://www.getguide.ai/api/realtime';
169
- return [4 /*yield*/, fetch(tokenEndpoint, {
170
- method: 'POST',
171
- headers: {
172
- 'Content-Type': 'application/json',
173
- },
174
- body: JSON.stringify({
175
- prompt: promptToUse,
176
- })
177
- })];
178
- case 8:
179
- response = _a.sent();
180
- if (!!response.ok) return [3 /*break*/, 10];
181
- return [4 /*yield*/, response.text().catch(function () { return 'No error details available'; })];
182
- case 9:
183
- errorText = _a.sent();
184
- console.error("Token fetch failed with status ".concat(response.status, ":"), errorText);
185
- throw new Error("Failed to fetch token: ".concat(response.status, " - ").concat(errorText));
186
- case 10: return [4 /*yield*/, response.json()];
187
- case 11:
188
- data = _a.sent();
189
- // Check token structure
190
- if (!data.client_secret || !data.client_secret.value) {
191
- console.error('Invalid token structure received:', JSON.stringify(data));
192
- throw new Error('Invalid token structure received from server');
193
- }
194
- return [2 /*return*/, data.client_secret.value];
195
- case 12:
196
- error_3 = _a.sent();
197
- console.error('Error fetching ephemeral token:', error_3);
198
- return [2 /*return*/, null];
199
- case 13: return [2 /*return*/];
200
- }
201
- });
202
- }); };
203
- //# sourceMappingURL=api-services.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"api-services.js","sourceRoot":"","sources":["../../src/utils/api-services.ts"],"names":[],"mappings":"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"}
@@ -1,2 +0,0 @@
1
- export declare const clickElement: (element: Element, rect: DOMRect) => Promise<void>;
2
- export declare const highlightElement: (selector: string | string[], logMessageFn?: (message: string, sender: "GUIDEAI" | "HUMAN") => void) => Promise<boolean>;
@@ -1,195 +0,0 @@
1
- var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
2
- function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
3
- return new (P || (P = Promise))(function (resolve, reject) {
4
- function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
5
- function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
6
- function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
7
- step((generator = generator.apply(thisArg, _arguments || [])).next());
8
- });
9
- };
10
- var __generator = (this && this.__generator) || function (thisArg, body) {
11
- var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g = Object.create((typeof Iterator === "function" ? Iterator : Object).prototype);
12
- return g.next = verb(0), g["throw"] = verb(1), g["return"] = verb(2), typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
13
- function verb(n) { return function (v) { return step([n, v]); }; }
14
- function step(op) {
15
- if (f) throw new TypeError("Generator is already executing.");
16
- while (g && (g = 0, op[0] && (_ = 0)), _) try {
17
- if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
18
- if (y = 0, t) op = [op[0] & 2, t.value];
19
- switch (op[0]) {
20
- case 0: case 1: t = op; break;
21
- case 4: _.label++; return { value: op[1], done: false };
22
- case 5: _.label++; y = op[1]; op = [0]; continue;
23
- case 7: op = _.ops.pop(); _.trys.pop(); continue;
24
- default:
25
- if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
26
- if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
27
- if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
28
- if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
29
- if (t[2]) _.ops.pop();
30
- _.trys.pop(); continue;
31
- }
32
- op = body.call(thisArg, _);
33
- } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
34
- if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
35
- }
36
- };
37
- export var clickElement = function (element, rect) { return __awaiter(void 0, void 0, void 0, function () {
38
- return __generator(this, function (_a) {
39
- return [2 /*return*/, new Promise(function (resolve) {
40
- setTimeout(function () {
41
- var clickEffectContainer = document.createElement('div');
42
- clickEffectContainer.style.cssText = "\n position: fixed;\n left: ".concat(rect.left + rect.width / 2, "px;\n top: ").concat(rect.top + rect.height / 2, "px;\n width: 60px;\n height: 60px;\n z-index: 1000;\n pointer-events: none;\n transform: translate(-50%, -50%);\n ");
43
- document.body.appendChild(clickEffectContainer);
44
- for (var j = 0; j < 3; j++) {
45
- var clickRipple = document.createElement('div');
46
- clickRipple.style.cssText = "\n position: absolute;\n left: 50%;\n top: 50%;\n width: 40px;\n height: 40px;\n border: 2px solid rgba(0, 102, 255, ".concat(0.7 - (j * 0.2), ");\n border-radius: 50%;\n transform: translate(-50%, -50%) scale(0);\n opacity: 1;\n animation: click-ripple-animation 0.8s ease-out ").concat(j * 0.15, "s forwards;\n box-shadow: 0 0 8px rgba(0, 102, 255, 0.4);\n ");
47
- clickEffectContainer.appendChild(clickRipple);
48
- }
49
- var clickDot = document.createElement('div');
50
- clickDot.style.cssText = "\n position: absolute;\n left: 50%;\n top: 50%;\n width: 12px;\n height: 12px;\n background: rgba(0, 102, 255, 0.9);\n border-radius: 50%;\n transform: translate(-50%, -50%) scale(0);\n animation: click-dot-animation 0.4s ease-out forwards;\n box-shadow: 0 0 5px rgba(0, 102, 255, 0.8);\n ";
51
- clickEffectContainer.appendChild(clickDot);
52
- var clickEvent = new MouseEvent('click', {
53
- view: window,
54
- bubbles: true,
55
- cancelable: true,
56
- });
57
- // Check for clickable subelements (links, buttons, inputs)
58
- var clickableElements = element.querySelectorAll('a, button, input[type="button"], input[type="submit"]');
59
- var clickableElement = clickableElements.length > 0 ? clickableElements[0] : element;
60
- console.log('Clicking element:', clickableElement);
61
- clickableElement.dispatchEvent(clickEvent);
62
- var originalBoxShadow = clickableElement.style.boxShadow;
63
- var originalTransition = clickableElement.style.transition;
64
- var originalZIndex = clickableElement.style.zIndex;
65
- clickableElement.style.transition = 'all 0.3s ease-out';
66
- clickableElement.style.boxShadow = '0 0 0 2px rgba(0, 102, 255, 0.5), 0 0 10px rgba(0, 102, 255, 0.3)';
67
- clickableElement.style.zIndex = '999';
68
- setTimeout(function () {
69
- clickableElement.style.boxShadow = originalBoxShadow;
70
- clickableElement.style.transition = originalTransition;
71
- clickableElement.style.zIndex = originalZIndex;
72
- clickEffectContainer.remove();
73
- resolve();
74
- }, 1000);
75
- }, 1500);
76
- })];
77
- });
78
- }); };
79
- export var highlightElement = function (selector, logMessageFn) { return __awaiter(void 0, void 0, void 0, function () {
80
- var isHighlighting, selectors, cursorElement, _loop_1, i, state_1, error_1;
81
- return __generator(this, function (_a) {
82
- switch (_a.label) {
83
- case 0:
84
- isHighlighting = false;
85
- if (isHighlighting)
86
- return [2 /*return*/, false];
87
- selectors = Array.isArray(selector) ? selector : [selector];
88
- if (selectors.length === 0)
89
- return [2 /*return*/, false];
90
- console.log('Moving cursor to elements:', selectors);
91
- cursorElement = null;
92
- _a.label = 1;
93
- case 1:
94
- _a.trys.push([1, 6, , 7]);
95
- isHighlighting = true;
96
- _loop_1 = function (i) {
97
- var currentSelector, element, node, rect, blueCursorSvg, viewportWidth, viewportHeight;
98
- return __generator(this, function (_b) {
99
- switch (_b.label) {
100
- case 0:
101
- currentSelector = selectors[i];
102
- if (!(i > 0)) return [3 /*break*/, 2];
103
- return [4 /*yield*/, new Promise(function (resolve) { return setTimeout(resolve, 1000); })];
104
- case 1:
105
- _b.sent();
106
- _b.label = 2;
107
- case 2:
108
- element = void 0;
109
- if (currentSelector.startsWith('//')) {
110
- node = document.evaluate(currentSelector, document, null, XPathResult.FIRST_ORDERED_NODE_TYPE, null).singleNodeValue;
111
- if (!(node instanceof Element)) {
112
- console.log('XPath returned a non-Element node:', currentSelector);
113
- console.log(node);
114
- if (logMessageFn) {
115
- logMessageFn('XPath returned a non-Element node: ' + currentSelector, 'GUIDEAI');
116
- }
117
- return [2 /*return*/, "break"];
118
- }
119
- element = node;
120
- }
121
- else {
122
- element = document.querySelector(currentSelector);
123
- }
124
- if (!element) {
125
- console.log('Element not found:', currentSelector);
126
- if (logMessageFn) {
127
- logMessageFn('Element not found: ' + currentSelector, 'GUIDEAI');
128
- }
129
- return [2 /*return*/, "break"];
130
- }
131
- rect = element.getBoundingClientRect();
132
- // Create cursor if it's the first element, or reuse existing cursor
133
- if (!cursorElement) {
134
- cursorElement = document.createElement('div');
135
- cursorElement.id = 'guide-ai-cursor';
136
- blueCursorSvg = "\n <svg width=\"100%\" height=\"100%\" viewBox=\"0 0 24 24\" xmlns=\"http://www.w3.org/2000/svg\">\n <path fill=\"#0066ff\" d=\"M7,2l12,11.2l-5.8,0.5l3.3,7.3l-2.2,1l-3.2-7.4L7,18.5V2\" />\n </svg>\n ";
137
- cursorElement.innerHTML = blueCursorSvg;
138
- cursorElement.style.cssText = "\n position: fixed;\n width: 64px;\n height: 64px;\n pointer-events: none;\n z-index: 9999;\n transition: all 0.8s ease-in-out;\n transform: translate(-50%, 0);\n filter: drop-shadow(0 0 4px rgba(0, 102, 255, 0.8));\n ";
139
- document.body.appendChild(cursorElement);
140
- viewportWidth = window.innerWidth;
141
- viewportHeight = window.innerHeight;
142
- cursorElement.style.left = "".concat(viewportWidth / 2, "px");
143
- cursorElement.style.top = "".concat(viewportHeight / 2, "px");
144
- }
145
- // Force reflow to ensure transition works
146
- cursorElement.offsetHeight;
147
- return [4 /*yield*/, new Promise(function (resolve) {
148
- setTimeout(function () {
149
- cursorElement.style.left = "".concat(rect.left + rect.width / 2, "px");
150
- cursorElement.style.top = "".concat(rect.top + rect.height / 2 - 10, "px");
151
- setTimeout(function () {
152
- cursorElement.style.animation = 'cursor-jiggle 0.5s ease-in-out infinite';
153
- resolve();
154
- }, 800);
155
- }, 100);
156
- })];
157
- case 3:
158
- _b.sent();
159
- return [4 /*yield*/, clickElement(element, rect)];
160
- case 4:
161
- _b.sent();
162
- return [2 /*return*/];
163
- }
164
- });
165
- };
166
- i = 0;
167
- _a.label = 2;
168
- case 2:
169
- if (!(i < selectors.length)) return [3 /*break*/, 5];
170
- return [5 /*yield**/, _loop_1(i)];
171
- case 3:
172
- state_1 = _a.sent();
173
- if (state_1 === "break")
174
- return [3 /*break*/, 5];
175
- _a.label = 4;
176
- case 4:
177
- i++;
178
- return [3 /*break*/, 2];
179
- case 5:
180
- setTimeout(function () {
181
- cursorElement === null || cursorElement === void 0 ? void 0 : cursorElement.remove();
182
- isHighlighting = false;
183
- }, 1000);
184
- return [2 /*return*/, true];
185
- case 6:
186
- error_1 = _a.sent();
187
- console.error('Error moving cursor:', error_1);
188
- cursorElement === null || cursorElement === void 0 ? void 0 : cursorElement.remove();
189
- isHighlighting = false;
190
- return [2 /*return*/, false];
191
- case 7: return [2 /*return*/];
192
- }
193
- });
194
- }); };
195
- //# sourceMappingURL=dom-interaction.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"dom-interaction.js","sourceRoot":"","sources":["../../src/utils/dom-interaction.ts"],"names":[],"mappings":"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"}
@@ -1 +0,0 @@
1
- export declare const highlightElement: (selector: string | string[], isHighlighting: boolean, setIsHighlighting: (highlighting: boolean) => void, logMessage: (content: string, sender: "GUIDEAI" | "HUMAN") => void) => Promise<boolean>;
@@ -1,26 +0,0 @@
1
- export interface StoredMessage {
2
- content: string;
3
- sender: 'GUIDEAI' | 'HUMAN';
4
- timestamp: number;
5
- }
6
- export interface StoredConversation {
7
- conversationId: string;
8
- messages: StoredMessage[];
9
- timestamp: number;
10
- organizationKey: string;
11
- }
12
- export declare const CONVERSATION_STORAGE_KEY = "guideai_conversation";
13
- export declare const CONVERSATION_EXPIRY_MINUTES = 30;
14
- export declare const MAX_STORED_MESSAGES = 50;
15
- export declare const isLocalStorageAvailable: () => boolean;
16
- export declare const isConversationExpired: (conversation: StoredConversation) => boolean;
17
- export declare const saveConversationToStorage: (conversation: StoredConversation) => void;
18
- export declare const loadConversationFromStorage: () => StoredConversation | null;
19
- export declare const clearConversationStorage: () => void;
20
- export declare const addMessageToStorage: (message: StoredMessage, conversationId: string, organizationKey: string) => void;
21
- export declare const checkForStoredConversation: (currentOrganizationKey: string) => {
22
- shouldRestore: boolean;
23
- conversationId: string | null;
24
- messages: StoredMessage[] | null;
25
- };
26
- export declare const formatConversationContext: (messages: StoredMessage[], maxMessages?: number) => string;
@@ -1,9 +0,0 @@
1
- import React from 'react';
2
- export type UseStateHook = typeof React.useState;
3
- export type UseEffectHook = typeof React.useEffect;
4
- export type UseRefHook = typeof React.useRef;
5
- export declare const getReactHooks: () => {
6
- useState: UseStateHook;
7
- useEffect: UseEffectHook;
8
- useRef: UseRefHook;
9
- };
@@ -1,19 +0,0 @@
1
- import React from 'react';
2
- // Get React hooks safely, avoiding duplicate React issues
3
- export var getReactHooks = function () {
4
- // Try to use the React instance from window if available (for react-scripts)
5
- if (typeof window !== 'undefined' && window.React) {
6
- return {
7
- useState: window.React.useState,
8
- useEffect: window.React.useEffect,
9
- useRef: window.React.useRef
10
- };
11
- }
12
- // Otherwise use the imported React
13
- return {
14
- useState: React.useState,
15
- useEffect: React.useEffect,
16
- useRef: React.useRef
17
- };
18
- };
19
- //# sourceMappingURL=react-hooks.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"react-hooks.js","sourceRoot":"","sources":["../../src/utils/react-hooks.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAO1B,0DAA0D;AAC1D,MAAM,CAAC,IAAM,aAAa,GAAG;IAC3B,6EAA6E;IAC7E,IAAI,OAAO,MAAM,KAAK,WAAW,IAAK,MAAc,CAAC,KAAK,EAAE,CAAC;QAC3D,OAAO;YACL,QAAQ,EAAG,MAAc,CAAC,KAAK,CAAC,QAAwB;YACxD,SAAS,EAAG,MAAc,CAAC,KAAK,CAAC,SAA0B;YAC3D,MAAM,EAAG,MAAc,CAAC,KAAK,CAAC,MAAoB;SACnD,CAAC;IACJ,CAAC;IACD,mCAAmC;IACnC,OAAO;QACL,QAAQ,EAAE,KAAK,CAAC,QAAQ;QACxB,SAAS,EAAE,KAAK,CAAC,SAAS;QAC1B,MAAM,EAAE,KAAK,CAAC,MAAM;KACrB,CAAC;AACJ,CAAC,CAAC"}
@@ -1,14 +0,0 @@
1
- export declare const STORAGE_PREFIX = "guideAI_";
2
- export declare const STORAGE_KEYS: {
3
- CONVERSATION_ITEMS: string;
4
- CONVERSATION_ID: string;
5
- HAS_INTERACTED: string;
6
- LAST_ACTIVITY: string;
7
- MIC_PERMISSION_GRANTED: string;
8
- CONVERSATION_ACTIVE: string;
9
- EPHEMERAL_TOKEN: string;
10
- TOKEN_TIMESTAMP: string;
11
- };
12
- export declare const saveToStorage: (key: string, value: any) => void;
13
- export declare const getFromStorage: <T>(key: string, defaultValue: T) => T;
14
- export declare const isTokenValid: () => boolean;
@@ -1,27 +0,0 @@
1
- // Storage keys and helpers
2
- export var STORAGE_PREFIX = 'guideAI_';
3
- export var STORAGE_KEYS = {
4
- CONVERSATION_ITEMS: "".concat(STORAGE_PREFIX, "conversationItems"),
5
- CONVERSATION_ID: "".concat(STORAGE_PREFIX, "conversationId"),
6
- HAS_INTERACTED: "".concat(STORAGE_PREFIX, "hasInteracted"),
7
- LAST_ACTIVITY: "".concat(STORAGE_PREFIX, "lastActivity"),
8
- };
9
- export var saveToStorage = function (key, value) {
10
- try {
11
- localStorage.setItem(key, JSON.stringify(value));
12
- }
13
- catch (e) {
14
- console.error("Failed to save ".concat(key, " to localStorage:"), e);
15
- }
16
- };
17
- export var getFromStorage = function (key, defaultValue) {
18
- try {
19
- var item = localStorage.getItem(key);
20
- return item ? JSON.parse(item) : defaultValue;
21
- }
22
- catch (e) {
23
- console.error("Failed to get ".concat(key, " from localStorage:"), e);
24
- return defaultValue;
25
- }
26
- };
27
- //# sourceMappingURL=storage.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"storage.js","sourceRoot":"","sources":["../../src/utils/storage.ts"],"names":[],"mappings":"AAAA,2BAA2B;AAC3B,MAAM,CAAC,IAAM,cAAc,GAAG,UAAU,CAAC;AACzC,MAAM,CAAC,IAAM,YAAY,GAAG;IAC1B,kBAAkB,EAAE,UAAG,cAAc,sBAAmB;IACxD,eAAe,EAAE,UAAG,cAAc,mBAAgB;IAClD,cAAc,EAAE,UAAG,cAAc,kBAAe;IAChD,aAAa,EAAE,UAAG,cAAc,iBAAc;CAC/C,CAAC;AAEF,MAAM,CAAC,IAAM,aAAa,GAAG,UAAC,GAAW,EAAE,KAAU;IACnD,IAAI,CAAC;QACH,YAAY,CAAC,OAAO,CAAC,GAAG,EAAE,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC;IACnD,CAAC;IAAC,OAAO,CAAC,EAAE,CAAC;QACX,OAAO,CAAC,KAAK,CAAC,yBAAkB,GAAG,sBAAmB,EAAE,CAAC,CAAC,CAAC;IAC7D,CAAC;AACH,CAAC,CAAC;AAEF,MAAM,CAAC,IAAM,cAAc,GAAG,UAAK,GAAW,EAAE,YAAe;IAC7D,IAAI,CAAC;QACH,IAAM,IAAI,GAAG,YAAY,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;QACvC,OAAO,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC;IAChD,CAAC;IAAC,OAAO,CAAC,EAAE,CAAC;QACX,OAAO,CAAC,KAAK,CAAC,wBAAiB,GAAG,wBAAqB,EAAE,CAAC,CAAC,CAAC;QAC5D,OAAO,YAAY,CAAC;IACtB,CAAC;AACH,CAAC,CAAC"}
@@ -1,3 +0,0 @@
1
- import React from 'react';
2
- export declare const initializeWebRTC: (audioStream: MediaStream, token: string, audioElementRef: React.RefObject<HTMLAudioElement>, peerConnectionRef: React.MutableRefObject<RTCPeerConnection | null>, dataChannelRef: React.MutableRefObject<RTCDataChannel | null>, onMessage: (message: any) => void, onOpen?: () => void) => Promise<boolean>;
3
- export declare const sendMessage: (dataChannel: RTCDataChannel | null, message: any) => boolean;