guideai-app 0.5.4-2 → 0.5.4-8
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/README.md +105 -1
- package/dist/GuideAI.d.ts +2 -5
- package/dist/GuideAI.js +1 -1
- package/dist/GuideAI.js.LICENSE.txt +2 -17
- package/dist/buddy/buddyPropTools.d.ts +188 -0
- package/dist/buddy/buddyStore.d.ts +88 -0
- package/dist/buddy/buddyTools.d.ts +6 -0
- package/dist/buddy/types.d.ts +56 -0
- package/dist/components/DeveloperTools.d.ts +5 -3
- package/dist/components/Microphone.d.ts +17 -2
- package/dist/components/PlaybackLockDebugOverlayRoot.d.ts +1 -1
- package/dist/components/SessionRatingPopup.d.ts +16 -0
- package/dist/components/SubtitleInputBar.d.ts +23 -0
- package/dist/components/SubtitleSettingsMenu.d.ts +9 -0
- package/dist/components/TranscriptBox.d.ts +16 -12
- package/dist/components/TranscriptMessages.d.ts +8 -1
- package/dist/components/TranscriptNextStepBar.d.ts +34 -0
- package/dist/components/TranscriptSessionMicLevels.d.ts +8 -0
- package/dist/components/TranscriptStudioChrome.d.ts +8 -7
- package/dist/components/TranscriptTextInput.d.ts +4 -12
- package/dist/components/TranscriptToolbar.d.ts +3 -1
- package/dist/components/TranscriptWorkflowDrawer.d.ts +5 -7
- package/dist/contexts/GuideAIThemeContext.d.ts +13 -0
- package/dist/devtools/DeveloperToolsShell.d.ts +1 -1
- package/dist/devtools/TranscriptDeveloperToolsMenuItems.d.ts +45 -0
- package/dist/devtools/TranscriptUiDevtoolsPanel.d.ts +10 -0
- package/dist/devtools/adminToolDiagnostics/AdminToolDiagnosticsPanel.d.ts +1 -1
- package/dist/devtools/developerToolPanelId.d.ts +1 -1
- package/dist/devtools/devtoolsAdminPortalLinks.d.ts +11 -0
- package/dist/devtools/devtoolsAuth/DevtoolsAuthContext.d.ts +14 -0
- package/dist/devtools/devtoolsAuth/DevtoolsLoginModal.d.ts +13 -0
- package/dist/devtools/devtoolsAuth/devtoolsAccessTrigger.d.ts +9 -0
- package/dist/devtools/devtoolsAuth/devtoolsAdminApi.d.ts +13 -0
- package/dist/devtools/devtoolsAuth/devtoolsLoginModalStyles.d.ts +1 -0
- package/dist/devtools/devtoolsAuth/devtoolsPortalLogin.d.ts +15 -0
- package/dist/devtools/devtoolsAuth/devtoolsSessionStorage.d.ts +4 -0
- package/dist/devtools/devtoolsAuth/index.d.ts +9 -0
- package/dist/devtools/devtoolsAuth/types.d.ts +21 -0
- package/dist/devtools/devtoolsAuth/useDevtoolsAccess.d.ts +33 -0
- package/dist/devtools/devtoolsThemePreference.d.ts +3 -0
- package/dist/devtools/excavator/ExcavatorPanel.d.ts +17 -0
- package/dist/devtools/excavator/excavatorPanelStyles.d.ts +5 -0
- package/dist/devtools/excavator/excavatorSse.d.ts +6 -0
- package/dist/devtools/learn/LearnCaptureChrome.stub.d.ts +3 -0
- package/dist/devtools/learn/LearnModePanel.d.ts +18 -0
- package/dist/devtools/learn/LearnModePanel.stub.d.ts +3 -0
- package/dist/devtools/learn/LearnOrchestrationHost.d.ts +52 -0
- package/dist/devtools/learn/injectLearnModeStyles.d.ts +2 -0
- package/dist/devtools/learn/learnCaptureChrome.d.ts +33 -0
- package/dist/devtools/learn/learnCaptureLayout.d.ts +26 -0
- package/dist/devtools/learn/learnCaptureToolbar.d.ts +27 -0
- package/dist/devtools/learn/learnClarifyKickoff.d.ts +6 -0
- package/dist/devtools/learn/learnLiteTranscript.d.ts +22 -0
- package/dist/devtools/learn/learnModeStyles.d.ts +5 -0
- package/dist/devtools/learn/learnModeTypes.d.ts +5 -0
- package/dist/devtools/learn/learnOrchestrationStub.d.ts +5 -0
- package/dist/devtools/learn/learnPanelSyncFieldsEqual.d.ts +3 -0
- package/dist/devtools/learn/learnRealtimeSession.d.ts +10 -0
- package/dist/devtools/learn/learnRefBag.d.ts +41 -0
- package/dist/devtools/learn/learnSessionStorage.d.ts +23 -0
- package/dist/devtools/learn/learnWebRTCInit.d.ts +20 -0
- package/dist/devtools/learn/learnWorkspaceContext.d.ts +5 -0
- package/dist/devtools/learn/loadLearnOrchestration.d.ts +10 -0
- package/dist/devtools/learn/useLearnCaptureDuration.d.ts +4 -0
- package/dist/devtools/learn/useLearnClickCapture.d.ts +9 -0
- package/dist/devtools/learn/useLearnMode.d.ts +47 -0
- package/dist/devtools/learn/useLearnMode.stub.d.ts +3 -0
- package/dist/devtools/panelLayout.d.ts +6 -0
- package/dist/devtools/silentMessages/silentMessageDebug.d.ts +86 -0
- package/dist/devtools/silentMessages/useSilentMessageDebug.d.ts +18 -0
- package/dist/devtools/transcriptDevtoolsMenuProps.d.ts +33 -0
- package/dist/devtools/transcriptMoreMenu/DeveloperToolsAdminPortalFlyout.d.ts +20 -0
- package/dist/devtools/transcriptMoreMenu/DeveloperToolsLoggerFlyout.d.ts +16 -0
- package/dist/devtools/transcriptMoreMenu/DeveloperToolsMicPresetFlyout.d.ts +22 -0
- package/dist/devtools/transcriptMoreMenu/ThemePresetSwatch.d.ts +8 -0
- package/dist/devtools/transcriptMoreMenu/TranscriptDeveloperToolsMenuItems.d.ts +25 -0
- package/dist/devtools/transcriptMoreMenu/TranscriptDeveloperToolsThemeFlyout.d.ts +13 -0
- package/dist/devtools/transcriptMoreMenu/TranscriptMoreMenuDevtools.d.ts +27 -0
- package/dist/devtools/transcriptMoreMenu/devtoolsFlyoutTypes.d.ts +1 -0
- package/dist/devtools/transcriptMoreMenu/index.d.ts +2 -0
- package/dist/devtools/transcriptMoreMenu/readWindowGuideAILogger.d.ts +12 -0
- package/dist/devtools/transcriptMoreMenu/useTranscriptMoreMenuDebugFlyouts.d.ts +24 -0
- package/dist/devtools/useDraggableDialog.d.ts +8 -1
- package/dist/devtools/useGuideDeveloperTools.d.ts +16 -7
- package/dist/devtools/useGuideDevtoolsIntegration.d.ts +56 -0
- package/dist/devtools/workflowTester/WorkflowTesterPanel.d.ts +4 -28
- package/dist/devtools/workflowTester/WorkflowTesterPanel.stub.d.ts +3 -0
- package/dist/devtools/workflowTester/index.d.ts +1 -2
- package/dist/devtools/workflowTester/useWorkflowSimulationController.d.ts +12 -0
- package/dist/devtools/workflowTester/useWorkflowSimulationRun.d.ts +47 -0
- package/dist/devtools/workflowTester/workflowSimulationController.d.ts +31 -0
- package/dist/devtools/workflowTester/workflowSimulationDevtoolsApi.d.ts +51 -0
- package/dist/devtools/workflowTester/workflowSimulationFinishRun.d.ts +4 -0
- package/dist/devtools/workflowTester/workflowSimulationRunner.d.ts +46 -0
- package/dist/devtools/workflowTester/workflowSimulationRunnerAi.d.ts +20 -0
- package/dist/devtools/workflowTester/workflowSimulationSessionRestore.d.ts +21 -0
- package/dist/devtools/workflowTester/workflowSimulationTurnState.d.ts +20 -0
- package/dist/devtools/workflowTester/workflowSimulationTypes.d.ts +28 -0
- package/dist/devtools/workflowTester/workflowSimulationWaits.d.ts +55 -0
- package/dist/devtools/workflowTester/workflowTesterPanel.types.d.ts +25 -0
- package/dist/devtools/workflowTester/workflowTesterRunSessionStorage.d.ts +43 -0
- package/dist/devtools/workflowTester/workflowTesterWorkspaceBridge.d.ts +4 -2
- package/dist/hooks/useConversationSession.d.ts +16 -2
- package/dist/hooks/useGuideAIMutePipeline.d.ts +1 -0
- package/dist/hooks/useGuideAIThemeState.d.ts +6 -0
- package/dist/hooks/useHiddenRealtimeSteers.d.ts +3 -1
- package/dist/hooks/useLauncherTabDrag.d.ts +23 -0
- package/dist/hooks/useMicMute.d.ts +1 -0
- package/dist/hooks/useSessionRating.d.ts +21 -0
- package/dist/hooks/useSubtitleAppearancePrefs.d.ts +5 -0
- package/dist/hooks/useThemePortalProps.d.ts +4 -0
- package/dist/hooks/useTranscriptChrome.d.ts +7 -2
- package/dist/hooks/useTranscriptDisplayMode.d.ts +6 -0
- package/dist/hooks/useTranscriptPanelDragResize.d.ts +47 -0
- package/dist/hooks/useWebRTC.d.ts +9 -0
- package/dist/hooks/useWidgetWorkflowSession.d.ts +2 -0
- package/dist/hooks/useWorkflowTesterOverlay.d.ts +10 -10
- package/dist/hooks/useWorkspaceCatalog.d.ts +1 -0
- package/dist/index.d.ts +4 -1
- package/dist/lib/workspaceEmbedIcons.d.ts +0 -1
- package/dist/playwrightBuddyHarness.d.ts +12 -0
- package/dist/playwrightBuddyHarness.js +1766 -0
- package/dist/playwrightSimulationHarness.d.ts +16 -0
- package/dist/playwrightSimulationHarness.js +1 -0
- package/dist/playwrightToolHarness.d.ts +6 -2
- package/dist/playwrightToolHarness.js +1 -1
- package/dist/sessionRating.defaults.d.ts +4 -0
- package/dist/sessionRatingPrompts.d.ts +1 -0
- package/dist/staticContext/collectContext.d.ts +24 -13
- package/dist/staticContext/collectors/domSignals.d.ts +29 -0
- package/dist/staticContext/collectors/jqueryUi.d.ts +7 -0
- package/dist/staticContext/collectors/visibility.d.ts +6 -0
- package/dist/staticContext/hostPageFrameworkProbe.d.ts +21 -0
- package/dist/staticContext/index.d.ts +3 -2
- package/dist/staticContext/types.d.ts +112 -4
- package/dist/staticContext/useStaticContext.d.ts +5 -3
- package/dist/stubs/workspaces.d.ts +2 -2
- package/dist/styles/GuideAI.styles.d.ts +5 -1
- package/dist/styles/guideAIStylesTabLauncher.d.ts +7 -0
- package/dist/styles/guideAIThemeTokens.d.ts +5 -0
- package/dist/styles/guideaiTestsiteWidgetTheme.d.ts +6 -0
- package/dist/themes/buildThemeCss.d.ts +8 -0
- package/dist/themes/guideAIThemeIds.d.ts +5 -0
- package/dist/themes/presetThemes.d.ts +9 -0
- package/dist/themes/syncGuideAITheme.d.ts +2 -0
- package/dist/themes/themeTokens.types.d.ts +37 -0
- package/dist/types/GuideAI.types.d.ts +43 -4
- package/dist/utils/api.d.ts +39 -0
- package/dist/utils/api.learn.d.ts +18 -0
- package/dist/utils/conversationContextSwitch.d.ts +41 -0
- package/dist/utils/conversationManager.d.ts +39 -2
- package/dist/utils/dataChannel.d.ts +15 -0
- package/dist/utils/dataChannelHelpers.d.ts +26 -6
- package/dist/utils/guideaiMirroredStorageKeys.d.ts +35 -0
- package/dist/utils/lastSystemToolCall.d.ts +2 -1
- package/dist/utils/localStorageHelper.d.ts +52 -32
- package/dist/utils/localStorageThrottle.d.ts +6 -0
- package/dist/utils/messageStorage.d.ts +20 -7
- package/dist/utils/parseWorkspaceSlugList.d.ts +13 -0
- package/dist/utils/pathIncludesAnyRef.d.ts +12 -0
- package/dist/utils/resolveCatalogWorkspaceSlug.d.ts +11 -0
- package/dist/utils/sessionRatingThrottle.d.ts +3 -0
- package/dist/utils/sessionStorageJson.d.ts +3 -0
- package/dist/utils/themeRegistry.d.ts +14 -0
- package/dist/utils/tools/clickElement.d.ts +6 -0
- package/dist/utils/tools/cursorStyles.d.ts +17 -0
- package/dist/utils/tools/descriptionToHighlightSelector.d.ts +1 -1
- package/dist/utils/tools/docToForm.d.ts +2 -2
- package/dist/utils/tools/elementInteractions.d.ts +35 -1
- package/dist/utils/tools/elementToBestInteractionSelector.d.ts +8 -0
- package/dist/utils/tools/fillField.d.ts +1 -1
- package/dist/utils/tools/hover.d.ts +6 -0
- package/dist/utils/tools/selectWorkspace.d.ts +45 -0
- package/dist/utils/tools/toolRegistry.d.ts +5 -1
- package/dist/utils/tools/workspaceToolBridge.d.ts +22 -0
- package/dist/utils/transcriptDisplayModePref.d.ts +4 -0
- package/dist/utils/transcriptFloatGeometry.d.ts +78 -0
- package/dist/utils/transcriptSubtitleUiPref.d.ts +5 -0
- package/dist/utils/webrtcConnection.d.ts +7 -0
- package/dist/utils/widgetBearerStorage.d.ts +2 -2
- package/dist/utils/widgetWorkspaces.d.ts +0 -2
- package/dist/utils/workflowProgressSync.d.ts +65 -0
- package/dist/utils/workflowSteer.d.ts +10 -0
- package/dist/utils/workspaceCatalog.d.ts +20 -3
- package/dist/utils/workspaceCatalogFatal.d.ts +4 -0
- package/dist/visualContext/defaultProvider.d.ts +4 -10
- package/dist/visualContext/screenshotEncoding.d.ts +37 -0
- package/dist/visualContext/useVisualContext.d.ts +2 -1
- package/dist/visualContext/visualContextCaptureLock.d.ts +17 -0
- package/package.json +2 -2
|
@@ -0,0 +1,1766 @@
|
|
|
1
|
+
/******/ (() => { // webpackBootstrap
|
|
2
|
+
/******/ "use strict";
|
|
3
|
+
/******/ var __webpack_modules__ = ({
|
|
4
|
+
|
|
5
|
+
/***/ 983
|
|
6
|
+
/*!*************************************!*\
|
|
7
|
+
!*** ./src/buddy/buddyPropTools.ts ***!
|
|
8
|
+
\*************************************/
|
|
9
|
+
(__unused_webpack_module, exports, __webpack_require__) {
|
|
10
|
+
|
|
11
|
+
|
|
12
|
+
var __assign = (this && this.__assign) || function () {
|
|
13
|
+
__assign = Object.assign || function(t) {
|
|
14
|
+
for (var s, i = 1, n = arguments.length; i < n; i++) {
|
|
15
|
+
s = arguments[i];
|
|
16
|
+
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
|
|
17
|
+
t[p] = s[p];
|
|
18
|
+
}
|
|
19
|
+
return t;
|
|
20
|
+
};
|
|
21
|
+
return __assign.apply(this, arguments);
|
|
22
|
+
};
|
|
23
|
+
Object.defineProperty(exports, "__esModule", ({ value: true }));
|
|
24
|
+
exports.buddyPropTools = exports.BUDDY_TOOL_NAMES = void 0;
|
|
25
|
+
var buddyTools_1 = __webpack_require__(/*! ./buddyTools */ 552);
|
|
26
|
+
var actionProperty = {
|
|
27
|
+
type: 'string',
|
|
28
|
+
description: 'Operation to perform. See tool description for valid values.',
|
|
29
|
+
};
|
|
30
|
+
var userIdProperty = {
|
|
31
|
+
type: 'string',
|
|
32
|
+
description: 'Optional user scope override. Defaults to the signed-in widget user.',
|
|
33
|
+
};
|
|
34
|
+
exports.BUDDY_TOOL_NAMES = [
|
|
35
|
+
'buddyTaskList',
|
|
36
|
+
'buddyResearch',
|
|
37
|
+
'buddyQuickie',
|
|
38
|
+
'buddyMemory',
|
|
39
|
+
];
|
|
40
|
+
exports.buddyPropTools = {
|
|
41
|
+
buddyTaskList: {
|
|
42
|
+
description: 'Manage the user task queue for everyday work. Actions: add (enqueue), list (optionally filter by status), getNext (current or next pending task), complete, update, remove.',
|
|
43
|
+
parameters: {
|
|
44
|
+
type: 'object',
|
|
45
|
+
properties: {
|
|
46
|
+
action: __assign(__assign({}, actionProperty), { enum: ['add', 'list', 'getNext', 'complete', 'update', 'remove'] }),
|
|
47
|
+
userId: userIdProperty,
|
|
48
|
+
title: { type: 'string', description: 'Task title (add/update).' },
|
|
49
|
+
description: { type: 'string', description: 'Task details (add/update).' },
|
|
50
|
+
taskId: { type: 'string', description: 'Task id (complete/update/remove).' },
|
|
51
|
+
status: {
|
|
52
|
+
type: 'string',
|
|
53
|
+
enum: ['pending', 'in_progress', 'completed', 'cancelled'],
|
|
54
|
+
description: 'Task status filter or update value.',
|
|
55
|
+
},
|
|
56
|
+
priority: {
|
|
57
|
+
type: 'string',
|
|
58
|
+
enum: ['low', 'normal', 'high'],
|
|
59
|
+
description: 'Task priority (add/update).',
|
|
60
|
+
},
|
|
61
|
+
},
|
|
62
|
+
required: ['action'],
|
|
63
|
+
},
|
|
64
|
+
execute: buddyTools_1.executeBuddyTaskList,
|
|
65
|
+
},
|
|
66
|
+
buddyResearch: {
|
|
67
|
+
description: 'Capture and retrieve research notes linked to everyday tasks. Actions: add, list (search by query or taskId), get (by noteId).',
|
|
68
|
+
parameters: {
|
|
69
|
+
type: 'object',
|
|
70
|
+
properties: {
|
|
71
|
+
action: __assign(__assign({}, actionProperty), { enum: ['add', 'list', 'get'] }),
|
|
72
|
+
userId: userIdProperty,
|
|
73
|
+
title: { type: 'string', description: 'Research title (add).' },
|
|
74
|
+
content: { type: 'string', description: 'Research body (add).' },
|
|
75
|
+
sources: {
|
|
76
|
+
type: 'array',
|
|
77
|
+
items: { type: 'string' },
|
|
78
|
+
description: 'URLs or citations (add).',
|
|
79
|
+
},
|
|
80
|
+
tags: {
|
|
81
|
+
type: 'array',
|
|
82
|
+
items: { type: 'string' },
|
|
83
|
+
description: 'Tags for retrieval (add).',
|
|
84
|
+
},
|
|
85
|
+
taskId: {
|
|
86
|
+
type: 'string',
|
|
87
|
+
description: 'Optional linked task id (add/list filter).',
|
|
88
|
+
},
|
|
89
|
+
noteId: { type: 'string', description: 'Research note id (get).' },
|
|
90
|
+
query: { type: 'string', description: 'Search text (list).' },
|
|
91
|
+
},
|
|
92
|
+
required: ['action'],
|
|
93
|
+
},
|
|
94
|
+
execute: buddyTools_1.executeBuddyResearch,
|
|
95
|
+
},
|
|
96
|
+
buddyQuickie: {
|
|
97
|
+
description: 'Save and replay small everyday automations (like Excel macros) from observed workflows. Actions: save, list, get, run, delete. A quickie is a named sequence of instruction or tool steps.',
|
|
98
|
+
parameters: {
|
|
99
|
+
type: 'object',
|
|
100
|
+
properties: {
|
|
101
|
+
action: __assign(__assign({}, actionProperty), { enum: ['save', 'list', 'get', 'run', 'delete'] }),
|
|
102
|
+
userId: userIdProperty,
|
|
103
|
+
quickieId: { type: 'string', description: 'Quickie id (get/run/delete/update).' },
|
|
104
|
+
name: { type: 'string', description: 'Short macro name (save).' },
|
|
105
|
+
description: {
|
|
106
|
+
type: 'string',
|
|
107
|
+
description: 'What this automation does (save).',
|
|
108
|
+
},
|
|
109
|
+
trigger: {
|
|
110
|
+
type: 'string',
|
|
111
|
+
description: 'When the user usually runs this (save), e.g. "every morning".',
|
|
112
|
+
},
|
|
113
|
+
steps: {
|
|
114
|
+
type: 'array',
|
|
115
|
+
description: 'Ordered steps. Each item: { kind: "instruction" | "tool", content: string }.',
|
|
116
|
+
items: {
|
|
117
|
+
type: 'object',
|
|
118
|
+
properties: {
|
|
119
|
+
kind: { type: 'string', enum: ['instruction', 'tool'] },
|
|
120
|
+
content: { type: 'string' },
|
|
121
|
+
},
|
|
122
|
+
required: ['kind', 'content'],
|
|
123
|
+
},
|
|
124
|
+
},
|
|
125
|
+
tags: {
|
|
126
|
+
type: 'array',
|
|
127
|
+
items: { type: 'string' },
|
|
128
|
+
description: 'Optional labels (save).',
|
|
129
|
+
},
|
|
130
|
+
},
|
|
131
|
+
required: ['action'],
|
|
132
|
+
},
|
|
133
|
+
execute: buddyTools_1.executeBuddyQuickie,
|
|
134
|
+
},
|
|
135
|
+
buddyMemory: {
|
|
136
|
+
description: 'Remember how the user organizes tasks, research, quickies, and their work style. Actions: get (full memory), search, setNote (key/value), appendOrganization, appendWorkStyle.',
|
|
137
|
+
parameters: {
|
|
138
|
+
type: 'object',
|
|
139
|
+
properties: {
|
|
140
|
+
action: __assign(__assign({}, actionProperty), { enum: ['get', 'search', 'setNote', 'appendOrganization', 'appendWorkStyle'] }),
|
|
141
|
+
userId: userIdProperty,
|
|
142
|
+
key: { type: 'string', description: 'Note key (setNote).' },
|
|
143
|
+
value: {
|
|
144
|
+
type: 'string',
|
|
145
|
+
description: 'Note value or list entry (setNote/append*).',
|
|
146
|
+
},
|
|
147
|
+
query: { type: 'string', description: 'Search filter (search).' },
|
|
148
|
+
},
|
|
149
|
+
required: ['action'],
|
|
150
|
+
},
|
|
151
|
+
execute: buddyTools_1.executeBuddyMemory,
|
|
152
|
+
},
|
|
153
|
+
};
|
|
154
|
+
|
|
155
|
+
|
|
156
|
+
/***/ },
|
|
157
|
+
|
|
158
|
+
/***/ 302
|
|
159
|
+
/*!*********************************!*\
|
|
160
|
+
!*** ./src/buddy/buddyStore.ts ***!
|
|
161
|
+
\*********************************/
|
|
162
|
+
(__unused_webpack_module, exports, __webpack_require__) {
|
|
163
|
+
|
|
164
|
+
|
|
165
|
+
var __assign = (this && this.__assign) || function () {
|
|
166
|
+
__assign = Object.assign || function(t) {
|
|
167
|
+
for (var s, i = 1, n = arguments.length; i < n; i++) {
|
|
168
|
+
s = arguments[i];
|
|
169
|
+
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
|
|
170
|
+
t[p] = s[p];
|
|
171
|
+
}
|
|
172
|
+
return t;
|
|
173
|
+
};
|
|
174
|
+
return __assign.apply(this, arguments);
|
|
175
|
+
};
|
|
176
|
+
var __spreadArray = (this && this.__spreadArray) || function (to, from, pack) {
|
|
177
|
+
if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {
|
|
178
|
+
if (ar || !(i in from)) {
|
|
179
|
+
if (!ar) ar = Array.prototype.slice.call(from, 0, i);
|
|
180
|
+
ar[i] = from[i];
|
|
181
|
+
}
|
|
182
|
+
}
|
|
183
|
+
return to.concat(ar || Array.prototype.slice.call(from));
|
|
184
|
+
};
|
|
185
|
+
Object.defineProperty(exports, "__esModule", ({ value: true }));
|
|
186
|
+
exports.BUDDY_STATE_CHANGED_EVENT = void 0;
|
|
187
|
+
exports.resolveBuddyUserId = resolveBuddyUserId;
|
|
188
|
+
exports.readBuddyState = readBuddyState;
|
|
189
|
+
exports.writeBuddyState = writeBuddyState;
|
|
190
|
+
exports.addBuddyTask = addBuddyTask;
|
|
191
|
+
exports.listBuddyTasks = listBuddyTasks;
|
|
192
|
+
exports.getNextBuddyTask = getNextBuddyTask;
|
|
193
|
+
exports.updateBuddyTask = updateBuddyTask;
|
|
194
|
+
exports.completeBuddyTask = completeBuddyTask;
|
|
195
|
+
exports.removeBuddyTask = removeBuddyTask;
|
|
196
|
+
exports.addResearchNote = addResearchNote;
|
|
197
|
+
exports.listResearchNotes = listResearchNotes;
|
|
198
|
+
exports.getResearchNote = getResearchNote;
|
|
199
|
+
exports.saveQuickie = saveQuickie;
|
|
200
|
+
exports.listQuickies = listQuickies;
|
|
201
|
+
exports.getQuickie = getQuickie;
|
|
202
|
+
exports.runQuickie = runQuickie;
|
|
203
|
+
exports.deleteQuickie = deleteQuickie;
|
|
204
|
+
exports.getBuddyMemory = getBuddyMemory;
|
|
205
|
+
exports.setBuddyMemoryNote = setBuddyMemoryNote;
|
|
206
|
+
exports.appendBuddyMemoryList = appendBuddyMemoryList;
|
|
207
|
+
exports.searchBuddyMemory = searchBuddyMemory;
|
|
208
|
+
exports.clearBuddyState = clearBuddyState;
|
|
209
|
+
var types_1 = __webpack_require__(/*! ./types */ 958);
|
|
210
|
+
var localStorageHelper_1 = __webpack_require__(/*! ../utils/localStorageHelper */ 640);
|
|
211
|
+
var localStorageHelper_2 = __webpack_require__(/*! ../utils/localStorageHelper */ 640);
|
|
212
|
+
exports.BUDDY_STATE_CHANGED_EVENT = 'guideai_buddy_state_changed';
|
|
213
|
+
var BUDDY_STORAGE_PREFIX = 'guideAI_buddy_state_';
|
|
214
|
+
function storageKeyForUser(userId) {
|
|
215
|
+
return "".concat(BUDDY_STORAGE_PREFIX).concat(userId);
|
|
216
|
+
}
|
|
217
|
+
function newId(prefix) {
|
|
218
|
+
if (typeof crypto !== 'undefined' && typeof crypto.randomUUID === 'function') {
|
|
219
|
+
return "".concat(prefix, "_").concat(crypto.randomUUID());
|
|
220
|
+
}
|
|
221
|
+
return "".concat(prefix, "_").concat(Date.now(), "_").concat(Math.random().toString(36).slice(2, 9));
|
|
222
|
+
}
|
|
223
|
+
function nowIso() {
|
|
224
|
+
return new Date().toISOString();
|
|
225
|
+
}
|
|
226
|
+
function emitBuddyStateChanged(userId) {
|
|
227
|
+
if (typeof window === 'undefined')
|
|
228
|
+
return;
|
|
229
|
+
try {
|
|
230
|
+
window.dispatchEvent(new CustomEvent(exports.BUDDY_STATE_CHANGED_EVENT, { detail: { userId: userId } }));
|
|
231
|
+
}
|
|
232
|
+
catch (_a) {
|
|
233
|
+
/* ignore */
|
|
234
|
+
}
|
|
235
|
+
}
|
|
236
|
+
function emptyState(userId) {
|
|
237
|
+
return {
|
|
238
|
+
version: types_1.BUDDY_STATE_VERSION,
|
|
239
|
+
userId: userId,
|
|
240
|
+
tasks: [],
|
|
241
|
+
research: [],
|
|
242
|
+
quickies: [],
|
|
243
|
+
memory: __assign(__assign({}, types_1.EMPTY_BUDDY_MEMORY), { updatedAt: nowIso() }),
|
|
244
|
+
};
|
|
245
|
+
}
|
|
246
|
+
function parseState(raw, userId) {
|
|
247
|
+
var _a, _b, _c, _d;
|
|
248
|
+
try {
|
|
249
|
+
var parsed = JSON.parse(raw);
|
|
250
|
+
if (parsed.version !== types_1.BUDDY_STATE_VERSION)
|
|
251
|
+
return emptyState(userId);
|
|
252
|
+
return {
|
|
253
|
+
version: types_1.BUDDY_STATE_VERSION,
|
|
254
|
+
userId: userId,
|
|
255
|
+
tasks: Array.isArray(parsed.tasks) ? parsed.tasks : [],
|
|
256
|
+
research: Array.isArray(parsed.research) ? parsed.research : [],
|
|
257
|
+
quickies: Array.isArray(parsed.quickies) ? parsed.quickies : [],
|
|
258
|
+
memory: {
|
|
259
|
+
organization: Array.isArray((_a = parsed.memory) === null || _a === void 0 ? void 0 : _a.organization)
|
|
260
|
+
? parsed.memory.organization.filter(function (v) { return typeof v === 'string'; })
|
|
261
|
+
: [],
|
|
262
|
+
workStyle: Array.isArray((_b = parsed.memory) === null || _b === void 0 ? void 0 : _b.workStyle)
|
|
263
|
+
? parsed.memory.workStyle.filter(function (v) { return typeof v === 'string'; })
|
|
264
|
+
: [],
|
|
265
|
+
notes: ((_c = parsed.memory) === null || _c === void 0 ? void 0 : _c.notes) && typeof parsed.memory.notes === 'object'
|
|
266
|
+
? Object.fromEntries(Object.entries(parsed.memory.notes).filter(function (_a) {
|
|
267
|
+
var k = _a[0], v = _a[1];
|
|
268
|
+
return typeof k === 'string' && typeof v === 'string';
|
|
269
|
+
}))
|
|
270
|
+
: {},
|
|
271
|
+
updatedAt: typeof ((_d = parsed.memory) === null || _d === void 0 ? void 0 : _d.updatedAt) === 'string' ? parsed.memory.updatedAt : nowIso(),
|
|
272
|
+
},
|
|
273
|
+
};
|
|
274
|
+
}
|
|
275
|
+
catch (_e) {
|
|
276
|
+
return emptyState(userId);
|
|
277
|
+
}
|
|
278
|
+
}
|
|
279
|
+
function resolveBuddyUserId(override) {
|
|
280
|
+
var trimmed = override === null || override === void 0 ? void 0 : override.trim();
|
|
281
|
+
if (trimmed)
|
|
282
|
+
return trimmed;
|
|
283
|
+
return (0, localStorageHelper_1.resolveWidgetEndUserId)();
|
|
284
|
+
}
|
|
285
|
+
function readBuddyState(userId) {
|
|
286
|
+
var id = resolveBuddyUserId(userId);
|
|
287
|
+
var raw = (0, localStorageHelper_2.safeReadLocal)(storageKeyForUser(id));
|
|
288
|
+
if (!raw)
|
|
289
|
+
return emptyState(id);
|
|
290
|
+
return parseState(raw, id);
|
|
291
|
+
}
|
|
292
|
+
function writeBuddyState(state) {
|
|
293
|
+
var next = __assign(__assign({}, state), { userId: state.userId.trim() || (0, localStorageHelper_1.resolveWidgetEndUserId)() });
|
|
294
|
+
(0, localStorageHelper_2.safeWriteLocal)(storageKeyForUser(next.userId), JSON.stringify(next));
|
|
295
|
+
emitBuddyStateChanged(next.userId);
|
|
296
|
+
return next;
|
|
297
|
+
}
|
|
298
|
+
function withState(userId, mutate) {
|
|
299
|
+
var current = readBuddyState(userId);
|
|
300
|
+
var _a = mutate(current), state = _a.state, result = _a.result;
|
|
301
|
+
writeBuddyState(state);
|
|
302
|
+
return result;
|
|
303
|
+
}
|
|
304
|
+
var TASK_STATUS_ORDER = {
|
|
305
|
+
in_progress: 0,
|
|
306
|
+
pending: 1,
|
|
307
|
+
completed: 2,
|
|
308
|
+
cancelled: 3,
|
|
309
|
+
};
|
|
310
|
+
var TASK_PRIORITY_ORDER = {
|
|
311
|
+
high: 0,
|
|
312
|
+
normal: 1,
|
|
313
|
+
low: 2,
|
|
314
|
+
};
|
|
315
|
+
function sortTasks(tasks) {
|
|
316
|
+
return __spreadArray([], tasks, true).sort(function (a, b) {
|
|
317
|
+
var statusDiff = TASK_STATUS_ORDER[a.status] - TASK_STATUS_ORDER[b.status];
|
|
318
|
+
if (statusDiff !== 0)
|
|
319
|
+
return statusDiff;
|
|
320
|
+
var priorityDiff = TASK_PRIORITY_ORDER[a.priority] - TASK_PRIORITY_ORDER[b.priority];
|
|
321
|
+
if (priorityDiff !== 0)
|
|
322
|
+
return priorityDiff;
|
|
323
|
+
return a.createdAt.localeCompare(b.createdAt);
|
|
324
|
+
});
|
|
325
|
+
}
|
|
326
|
+
function addBuddyTask(input) {
|
|
327
|
+
var title = input.title.trim();
|
|
328
|
+
if (!title)
|
|
329
|
+
throw new Error('Task title is required');
|
|
330
|
+
return withState(input.userId, function (state) {
|
|
331
|
+
var _a, _b, _c;
|
|
332
|
+
var ts = nowIso();
|
|
333
|
+
var task = {
|
|
334
|
+
id: newId('task'),
|
|
335
|
+
title: title,
|
|
336
|
+
description: ((_a = input.description) === null || _a === void 0 ? void 0 : _a.trim()) || undefined,
|
|
337
|
+
status: (_b = input.status) !== null && _b !== void 0 ? _b : 'pending',
|
|
338
|
+
priority: (_c = input.priority) !== null && _c !== void 0 ? _c : 'normal',
|
|
339
|
+
createdAt: ts,
|
|
340
|
+
updatedAt: ts,
|
|
341
|
+
};
|
|
342
|
+
return {
|
|
343
|
+
state: __assign(__assign({}, state), { tasks: sortTasks(__spreadArray(__spreadArray([], state.tasks, true), [task], false)) }),
|
|
344
|
+
result: task,
|
|
345
|
+
};
|
|
346
|
+
});
|
|
347
|
+
}
|
|
348
|
+
function listBuddyTasks(input) {
|
|
349
|
+
var tasks = sortTasks(readBuddyState(input === null || input === void 0 ? void 0 : input.userId).tasks);
|
|
350
|
+
if (!(input === null || input === void 0 ? void 0 : input.status))
|
|
351
|
+
return tasks;
|
|
352
|
+
return tasks.filter(function (t) { return t.status === input.status; });
|
|
353
|
+
}
|
|
354
|
+
function getNextBuddyTask(userId) {
|
|
355
|
+
var _a;
|
|
356
|
+
var tasks = listBuddyTasks({ status: 'in_progress', userId: userId });
|
|
357
|
+
if (tasks.length > 0)
|
|
358
|
+
return tasks[0];
|
|
359
|
+
var pending = listBuddyTasks({ status: 'pending', userId: userId });
|
|
360
|
+
return (_a = pending[0]) !== null && _a !== void 0 ? _a : null;
|
|
361
|
+
}
|
|
362
|
+
function updateBuddyTask(input) {
|
|
363
|
+
return withState(input.userId, function (state) {
|
|
364
|
+
var _a, _b, _c, _d;
|
|
365
|
+
var idx = state.tasks.findIndex(function (t) { return t.id === input.taskId; });
|
|
366
|
+
if (idx < 0)
|
|
367
|
+
throw new Error("Task not found: ".concat(input.taskId));
|
|
368
|
+
var existing = state.tasks[idx];
|
|
369
|
+
var ts = nowIso();
|
|
370
|
+
var nextStatus = (_a = input.status) !== null && _a !== void 0 ? _a : existing.status;
|
|
371
|
+
var completedAt = existing.completedAt;
|
|
372
|
+
if (nextStatus === 'completed') {
|
|
373
|
+
completedAt = existing.status === 'completed' ? ((_b = existing.completedAt) !== null && _b !== void 0 ? _b : ts) : ts;
|
|
374
|
+
}
|
|
375
|
+
else if (input.status !== undefined) {
|
|
376
|
+
completedAt = undefined;
|
|
377
|
+
}
|
|
378
|
+
var updated = __assign(__assign({}, existing), { title: ((_c = input.title) === null || _c === void 0 ? void 0 : _c.trim()) || existing.title, description: input.description !== undefined
|
|
379
|
+
? input.description.trim() || undefined
|
|
380
|
+
: existing.description, status: nextStatus, priority: (_d = input.priority) !== null && _d !== void 0 ? _d : existing.priority, updatedAt: ts, completedAt: completedAt });
|
|
381
|
+
var tasks = __spreadArray([], state.tasks, true);
|
|
382
|
+
tasks[idx] = updated;
|
|
383
|
+
return { state: __assign(__assign({}, state), { tasks: sortTasks(tasks) }), result: updated };
|
|
384
|
+
});
|
|
385
|
+
}
|
|
386
|
+
function completeBuddyTask(input) {
|
|
387
|
+
return updateBuddyTask(__assign(__assign({}, input), { status: 'completed' }));
|
|
388
|
+
}
|
|
389
|
+
function removeBuddyTask(input) {
|
|
390
|
+
return withState(input.userId, function (state) {
|
|
391
|
+
var nextTasks = state.tasks.filter(function (t) { return t.id !== input.taskId; });
|
|
392
|
+
if (nextTasks.length === state.tasks.length) {
|
|
393
|
+
throw new Error("Task not found: ".concat(input.taskId));
|
|
394
|
+
}
|
|
395
|
+
return { state: __assign(__assign({}, state), { tasks: nextTasks }), result: true };
|
|
396
|
+
});
|
|
397
|
+
}
|
|
398
|
+
function addResearchNote(input) {
|
|
399
|
+
var title = input.title.trim();
|
|
400
|
+
var content = input.content.trim();
|
|
401
|
+
if (!title)
|
|
402
|
+
throw new Error('Research title is required');
|
|
403
|
+
if (!content)
|
|
404
|
+
throw new Error('Research content is required');
|
|
405
|
+
return withState(input.userId, function (state) {
|
|
406
|
+
var _a, _b, _c;
|
|
407
|
+
var ts = nowIso();
|
|
408
|
+
var note = {
|
|
409
|
+
id: newId('research'),
|
|
410
|
+
title: title,
|
|
411
|
+
content: content,
|
|
412
|
+
sources: (_a = input.sources) === null || _a === void 0 ? void 0 : _a.map(function (s) { return s.trim(); }).filter(Boolean),
|
|
413
|
+
tags: (_b = input.tags) === null || _b === void 0 ? void 0 : _b.map(function (s) { return s.trim(); }).filter(Boolean),
|
|
414
|
+
taskId: ((_c = input.taskId) === null || _c === void 0 ? void 0 : _c.trim()) || undefined,
|
|
415
|
+
createdAt: ts,
|
|
416
|
+
updatedAt: ts,
|
|
417
|
+
};
|
|
418
|
+
return {
|
|
419
|
+
state: __assign(__assign({}, state), { research: __spreadArray([note], state.research, true) }),
|
|
420
|
+
result: note,
|
|
421
|
+
};
|
|
422
|
+
});
|
|
423
|
+
}
|
|
424
|
+
function listResearchNotes(input) {
|
|
425
|
+
var _a;
|
|
426
|
+
var notes = readBuddyState(input === null || input === void 0 ? void 0 : input.userId).research;
|
|
427
|
+
if (input === null || input === void 0 ? void 0 : input.taskId) {
|
|
428
|
+
notes = notes.filter(function (n) { return n.taskId === input.taskId; });
|
|
429
|
+
}
|
|
430
|
+
var query = (_a = input === null || input === void 0 ? void 0 : input.query) === null || _a === void 0 ? void 0 : _a.trim().toLowerCase();
|
|
431
|
+
if (query) {
|
|
432
|
+
notes = notes.filter(function (n) {
|
|
433
|
+
var _a;
|
|
434
|
+
return n.title.toLowerCase().includes(query) ||
|
|
435
|
+
n.content.toLowerCase().includes(query) ||
|
|
436
|
+
((_a = n.tags) !== null && _a !== void 0 ? _a : []).some(function (t) { return t.toLowerCase().includes(query); });
|
|
437
|
+
});
|
|
438
|
+
}
|
|
439
|
+
return notes;
|
|
440
|
+
}
|
|
441
|
+
function getResearchNote(input) {
|
|
442
|
+
var note = readBuddyState(input.userId).research.find(function (n) { return n.id === input.noteId; });
|
|
443
|
+
if (!note)
|
|
444
|
+
throw new Error("Research note not found: ".concat(input.noteId));
|
|
445
|
+
return note;
|
|
446
|
+
}
|
|
447
|
+
function saveQuickie(input) {
|
|
448
|
+
var name = input.name.trim();
|
|
449
|
+
if (!name)
|
|
450
|
+
throw new Error('Quickie name is required');
|
|
451
|
+
if (!input.steps.length)
|
|
452
|
+
throw new Error('Quickie must have at least one step');
|
|
453
|
+
return withState(input.userId, function (state) {
|
|
454
|
+
var _a, _b, _c, _d;
|
|
455
|
+
var ts = nowIso();
|
|
456
|
+
var existingIdx = input.quickieId
|
|
457
|
+
? state.quickies.findIndex(function (q) { return q.id === input.quickieId; })
|
|
458
|
+
: -1;
|
|
459
|
+
var quickie = existingIdx >= 0
|
|
460
|
+
? __assign(__assign({}, state.quickies[existingIdx]), { name: name, description: input.description.trim(), trigger: ((_a = input.trigger) === null || _a === void 0 ? void 0 : _a.trim()) || undefined, steps: input.steps, tags: (_b = input.tags) === null || _b === void 0 ? void 0 : _b.map(function (t) { return t.trim(); }).filter(Boolean), updatedAt: ts }) : {
|
|
461
|
+
id: newId('quickie'),
|
|
462
|
+
name: name,
|
|
463
|
+
description: input.description.trim(),
|
|
464
|
+
trigger: ((_c = input.trigger) === null || _c === void 0 ? void 0 : _c.trim()) || undefined,
|
|
465
|
+
steps: input.steps,
|
|
466
|
+
tags: (_d = input.tags) === null || _d === void 0 ? void 0 : _d.map(function (t) { return t.trim(); }).filter(Boolean),
|
|
467
|
+
usageCount: 0,
|
|
468
|
+
createdAt: ts,
|
|
469
|
+
updatedAt: ts,
|
|
470
|
+
};
|
|
471
|
+
var quickies = existingIdx >= 0
|
|
472
|
+
? state.quickies.map(function (q, i) { return (i === existingIdx ? quickie : q); })
|
|
473
|
+
: __spreadArray([quickie], state.quickies, true);
|
|
474
|
+
return { state: __assign(__assign({}, state), { quickies: quickies }), result: quickie };
|
|
475
|
+
});
|
|
476
|
+
}
|
|
477
|
+
function listQuickies(userId) {
|
|
478
|
+
return readBuddyState(userId).quickies;
|
|
479
|
+
}
|
|
480
|
+
function getQuickie(input) {
|
|
481
|
+
var quickie = readBuddyState(input.userId).quickies.find(function (q) { return q.id === input.quickieId; });
|
|
482
|
+
if (!quickie)
|
|
483
|
+
throw new Error("Quickie not found: ".concat(input.quickieId));
|
|
484
|
+
return quickie;
|
|
485
|
+
}
|
|
486
|
+
function runQuickie(input) {
|
|
487
|
+
return withState(input.userId, function (state) {
|
|
488
|
+
var idx = state.quickies.findIndex(function (q) { return q.id === input.quickieId; });
|
|
489
|
+
if (idx < 0)
|
|
490
|
+
throw new Error("Quickie not found: ".concat(input.quickieId));
|
|
491
|
+
var ts = nowIso();
|
|
492
|
+
var quickie = __assign(__assign({}, state.quickies[idx]), { usageCount: state.quickies[idx].usageCount + 1, lastUsedAt: ts, updatedAt: ts });
|
|
493
|
+
var quickies = state.quickies.map(function (q, i) { return (i === idx ? quickie : q); });
|
|
494
|
+
return { state: __assign(__assign({}, state), { quickies: quickies }), result: quickie };
|
|
495
|
+
});
|
|
496
|
+
}
|
|
497
|
+
function deleteQuickie(input) {
|
|
498
|
+
return withState(input.userId, function (state) {
|
|
499
|
+
var next = state.quickies.filter(function (q) { return q.id !== input.quickieId; });
|
|
500
|
+
if (next.length === state.quickies.length) {
|
|
501
|
+
throw new Error("Quickie not found: ".concat(input.quickieId));
|
|
502
|
+
}
|
|
503
|
+
return { state: __assign(__assign({}, state), { quickies: next }), result: true };
|
|
504
|
+
});
|
|
505
|
+
}
|
|
506
|
+
function getBuddyMemory(userId) {
|
|
507
|
+
return readBuddyState(userId).memory;
|
|
508
|
+
}
|
|
509
|
+
function setBuddyMemoryNote(input) {
|
|
510
|
+
var key = input.key.trim();
|
|
511
|
+
if (!key)
|
|
512
|
+
throw new Error('Memory key is required');
|
|
513
|
+
return withState(input.userId, function (state) {
|
|
514
|
+
var _a;
|
|
515
|
+
var ts = nowIso();
|
|
516
|
+
var memory = __assign(__assign({}, state.memory), { notes: __assign(__assign({}, state.memory.notes), (_a = {}, _a[key] = input.value.trim(), _a)), updatedAt: ts });
|
|
517
|
+
return { state: __assign(__assign({}, state), { memory: memory }), result: memory };
|
|
518
|
+
});
|
|
519
|
+
}
|
|
520
|
+
function appendBuddyMemoryList(input) {
|
|
521
|
+
var value = input.value.trim();
|
|
522
|
+
if (!value)
|
|
523
|
+
throw new Error('Memory value is required');
|
|
524
|
+
return withState(input.userId, function (state) {
|
|
525
|
+
var _a;
|
|
526
|
+
var ts = nowIso();
|
|
527
|
+
var list = state.memory[input.category];
|
|
528
|
+
if (list.includes(value)) {
|
|
529
|
+
return { state: state, result: state.memory };
|
|
530
|
+
}
|
|
531
|
+
var memory = __assign(__assign({}, state.memory), (_a = {}, _a[input.category] = __spreadArray(__spreadArray([], list, true), [value], false), _a.updatedAt = ts, _a));
|
|
532
|
+
return { state: __assign(__assign({}, state), { memory: memory }), result: memory };
|
|
533
|
+
});
|
|
534
|
+
}
|
|
535
|
+
function searchBuddyMemory(input) {
|
|
536
|
+
var _a;
|
|
537
|
+
var memory = getBuddyMemory(input.userId);
|
|
538
|
+
var query = (_a = input.query) === null || _a === void 0 ? void 0 : _a.trim().toLowerCase();
|
|
539
|
+
if (!query)
|
|
540
|
+
return memory;
|
|
541
|
+
return __assign(__assign({}, memory), { organization: memory.organization.filter(function (v) { return v.toLowerCase().includes(query); }), workStyle: memory.workStyle.filter(function (v) { return v.toLowerCase().includes(query); }), notes: Object.fromEntries(Object.entries(memory.notes).filter(function (_a) {
|
|
542
|
+
var k = _a[0], v = _a[1];
|
|
543
|
+
return k.toLowerCase().includes(query) || v.toLowerCase().includes(query);
|
|
544
|
+
})) });
|
|
545
|
+
}
|
|
546
|
+
function clearBuddyState(userId) {
|
|
547
|
+
var id = resolveBuddyUserId(userId);
|
|
548
|
+
var state = emptyState(id);
|
|
549
|
+
writeBuddyState(state);
|
|
550
|
+
return state;
|
|
551
|
+
}
|
|
552
|
+
|
|
553
|
+
|
|
554
|
+
/***/ },
|
|
555
|
+
|
|
556
|
+
/***/ 552
|
|
557
|
+
/*!*********************************!*\
|
|
558
|
+
!*** ./src/buddy/buddyTools.ts ***!
|
|
559
|
+
\*********************************/
|
|
560
|
+
(__unused_webpack_module, exports, __webpack_require__) {
|
|
561
|
+
|
|
562
|
+
|
|
563
|
+
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
564
|
+
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
565
|
+
return new (P || (P = Promise))(function (resolve, reject) {
|
|
566
|
+
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
567
|
+
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
568
|
+
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
569
|
+
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
570
|
+
});
|
|
571
|
+
};
|
|
572
|
+
var __generator = (this && this.__generator) || function (thisArg, body) {
|
|
573
|
+
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);
|
|
574
|
+
return g.next = verb(0), g["throw"] = verb(1), g["return"] = verb(2), typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
|
|
575
|
+
function verb(n) { return function (v) { return step([n, v]); }; }
|
|
576
|
+
function step(op) {
|
|
577
|
+
if (f) throw new TypeError("Generator is already executing.");
|
|
578
|
+
while (g && (g = 0, op[0] && (_ = 0)), _) try {
|
|
579
|
+
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;
|
|
580
|
+
if (y = 0, t) op = [op[0] & 2, t.value];
|
|
581
|
+
switch (op[0]) {
|
|
582
|
+
case 0: case 1: t = op; break;
|
|
583
|
+
case 4: _.label++; return { value: op[1], done: false };
|
|
584
|
+
case 5: _.label++; y = op[1]; op = [0]; continue;
|
|
585
|
+
case 7: op = _.ops.pop(); _.trys.pop(); continue;
|
|
586
|
+
default:
|
|
587
|
+
if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
|
|
588
|
+
if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
|
|
589
|
+
if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
|
|
590
|
+
if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
|
|
591
|
+
if (t[2]) _.ops.pop();
|
|
592
|
+
_.trys.pop(); continue;
|
|
593
|
+
}
|
|
594
|
+
op = body.call(thisArg, _);
|
|
595
|
+
} catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
|
|
596
|
+
if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
|
|
597
|
+
}
|
|
598
|
+
};
|
|
599
|
+
Object.defineProperty(exports, "__esModule", ({ value: true }));
|
|
600
|
+
exports.executeBuddyTaskList = executeBuddyTaskList;
|
|
601
|
+
exports.executeBuddyResearch = executeBuddyResearch;
|
|
602
|
+
exports.executeBuddyQuickie = executeBuddyQuickie;
|
|
603
|
+
exports.executeBuddyMemory = executeBuddyMemory;
|
|
604
|
+
var buddyStore_1 = __webpack_require__(/*! ./buddyStore */ 302);
|
|
605
|
+
function asString(value) {
|
|
606
|
+
return typeof value === 'string' ? value : undefined;
|
|
607
|
+
}
|
|
608
|
+
function asStringArray(value) {
|
|
609
|
+
if (!Array.isArray(value))
|
|
610
|
+
return undefined;
|
|
611
|
+
return value.filter(function (v) { return typeof v === 'string'; });
|
|
612
|
+
}
|
|
613
|
+
function parseQuickieSteps(value) {
|
|
614
|
+
if (!Array.isArray(value))
|
|
615
|
+
return [];
|
|
616
|
+
return value
|
|
617
|
+
.map(function (step) {
|
|
618
|
+
if (!step || typeof step !== 'object')
|
|
619
|
+
return null;
|
|
620
|
+
var kind = step.kind;
|
|
621
|
+
var content = step.content;
|
|
622
|
+
if ((kind !== 'instruction' && kind !== 'tool') || typeof content !== 'string') {
|
|
623
|
+
return null;
|
|
624
|
+
}
|
|
625
|
+
return { kind: kind, content: content.trim() };
|
|
626
|
+
})
|
|
627
|
+
.filter(function (s) { return !!s && s.content.length > 0; });
|
|
628
|
+
}
|
|
629
|
+
function parseTaskStatus(value) {
|
|
630
|
+
if (value === 'pending' ||
|
|
631
|
+
value === 'in_progress' ||
|
|
632
|
+
value === 'completed' ||
|
|
633
|
+
value === 'cancelled') {
|
|
634
|
+
return value;
|
|
635
|
+
}
|
|
636
|
+
return undefined;
|
|
637
|
+
}
|
|
638
|
+
function parseTaskPriority(value) {
|
|
639
|
+
if (value === 'low' || value === 'normal' || value === 'high')
|
|
640
|
+
return value;
|
|
641
|
+
return undefined;
|
|
642
|
+
}
|
|
643
|
+
function executeBuddyTaskList(args) {
|
|
644
|
+
return __awaiter(this, void 0, void 0, function () {
|
|
645
|
+
var action, userId;
|
|
646
|
+
var _a, _b, _c, _d;
|
|
647
|
+
return __generator(this, function (_e) {
|
|
648
|
+
action = asString(args.action);
|
|
649
|
+
userId = asString(args.userId);
|
|
650
|
+
switch (action) {
|
|
651
|
+
case 'add':
|
|
652
|
+
return [2 /*return*/, (0, buddyStore_1.addBuddyTask)({
|
|
653
|
+
userId: userId,
|
|
654
|
+
title: (_a = asString(args.title)) !== null && _a !== void 0 ? _a : '',
|
|
655
|
+
description: asString(args.description),
|
|
656
|
+
priority: parseTaskPriority(args.priority),
|
|
657
|
+
status: parseTaskStatus(args.status),
|
|
658
|
+
})];
|
|
659
|
+
case 'list':
|
|
660
|
+
return [2 /*return*/, (0, buddyStore_1.listBuddyTasks)({ userId: userId, status: parseTaskStatus(args.status) })];
|
|
661
|
+
case 'getNext':
|
|
662
|
+
return [2 /*return*/, (0, buddyStore_1.getNextBuddyTask)(userId)];
|
|
663
|
+
case 'complete':
|
|
664
|
+
return [2 /*return*/, (0, buddyStore_1.completeBuddyTask)({
|
|
665
|
+
userId: userId,
|
|
666
|
+
taskId: (_b = asString(args.taskId)) !== null && _b !== void 0 ? _b : '',
|
|
667
|
+
})];
|
|
668
|
+
case 'update':
|
|
669
|
+
return [2 /*return*/, (0, buddyStore_1.updateBuddyTask)({
|
|
670
|
+
userId: userId,
|
|
671
|
+
taskId: (_c = asString(args.taskId)) !== null && _c !== void 0 ? _c : '',
|
|
672
|
+
title: asString(args.title),
|
|
673
|
+
description: asString(args.description),
|
|
674
|
+
status: parseTaskStatus(args.status),
|
|
675
|
+
priority: parseTaskPriority(args.priority),
|
|
676
|
+
})];
|
|
677
|
+
case 'remove':
|
|
678
|
+
return [2 /*return*/, (0, buddyStore_1.removeBuddyTask)({
|
|
679
|
+
userId: userId,
|
|
680
|
+
taskId: (_d = asString(args.taskId)) !== null && _d !== void 0 ? _d : '',
|
|
681
|
+
})];
|
|
682
|
+
default:
|
|
683
|
+
throw new Error("buddyTaskList: unknown action \"".concat(action, "\". Use add, list, getNext, complete, update, or remove."));
|
|
684
|
+
}
|
|
685
|
+
return [2 /*return*/];
|
|
686
|
+
});
|
|
687
|
+
});
|
|
688
|
+
}
|
|
689
|
+
function executeBuddyResearch(args) {
|
|
690
|
+
return __awaiter(this, void 0, void 0, function () {
|
|
691
|
+
var action, userId;
|
|
692
|
+
var _a, _b, _c;
|
|
693
|
+
return __generator(this, function (_d) {
|
|
694
|
+
action = asString(args.action);
|
|
695
|
+
userId = asString(args.userId);
|
|
696
|
+
switch (action) {
|
|
697
|
+
case 'add':
|
|
698
|
+
return [2 /*return*/, (0, buddyStore_1.addResearchNote)({
|
|
699
|
+
userId: userId,
|
|
700
|
+
title: (_a = asString(args.title)) !== null && _a !== void 0 ? _a : '',
|
|
701
|
+
content: (_b = asString(args.content)) !== null && _b !== void 0 ? _b : '',
|
|
702
|
+
sources: asStringArray(args.sources),
|
|
703
|
+
tags: asStringArray(args.tags),
|
|
704
|
+
taskId: asString(args.taskId),
|
|
705
|
+
})];
|
|
706
|
+
case 'list':
|
|
707
|
+
return [2 /*return*/, (0, buddyStore_1.listResearchNotes)({
|
|
708
|
+
userId: userId,
|
|
709
|
+
query: asString(args.query),
|
|
710
|
+
taskId: asString(args.taskId),
|
|
711
|
+
})];
|
|
712
|
+
case 'get':
|
|
713
|
+
return [2 /*return*/, (0, buddyStore_1.getResearchNote)({
|
|
714
|
+
userId: userId,
|
|
715
|
+
noteId: (_c = asString(args.noteId)) !== null && _c !== void 0 ? _c : '',
|
|
716
|
+
})];
|
|
717
|
+
default:
|
|
718
|
+
throw new Error("buddyResearch: unknown action \"".concat(action, "\". Use add, list, or get."));
|
|
719
|
+
}
|
|
720
|
+
return [2 /*return*/];
|
|
721
|
+
});
|
|
722
|
+
});
|
|
723
|
+
}
|
|
724
|
+
function executeBuddyQuickie(args) {
|
|
725
|
+
return __awaiter(this, void 0, void 0, function () {
|
|
726
|
+
var action, userId, quickie;
|
|
727
|
+
var _a, _b, _c, _d, _e;
|
|
728
|
+
return __generator(this, function (_f) {
|
|
729
|
+
action = asString(args.action);
|
|
730
|
+
userId = asString(args.userId);
|
|
731
|
+
switch (action) {
|
|
732
|
+
case 'save':
|
|
733
|
+
return [2 /*return*/, (0, buddyStore_1.saveQuickie)({
|
|
734
|
+
userId: userId,
|
|
735
|
+
quickieId: asString(args.quickieId),
|
|
736
|
+
name: (_a = asString(args.name)) !== null && _a !== void 0 ? _a : '',
|
|
737
|
+
description: (_b = asString(args.description)) !== null && _b !== void 0 ? _b : '',
|
|
738
|
+
trigger: asString(args.trigger),
|
|
739
|
+
steps: parseQuickieSteps(args.steps),
|
|
740
|
+
tags: asStringArray(args.tags),
|
|
741
|
+
})];
|
|
742
|
+
case 'list':
|
|
743
|
+
return [2 /*return*/, (0, buddyStore_1.listQuickies)(userId)];
|
|
744
|
+
case 'get':
|
|
745
|
+
return [2 /*return*/, (0, buddyStore_1.getQuickie)({
|
|
746
|
+
userId: userId,
|
|
747
|
+
quickieId: (_c = asString(args.quickieId)) !== null && _c !== void 0 ? _c : '',
|
|
748
|
+
})];
|
|
749
|
+
case 'run': {
|
|
750
|
+
quickie = (0, buddyStore_1.runQuickie)({
|
|
751
|
+
userId: userId,
|
|
752
|
+
quickieId: (_d = asString(args.quickieId)) !== null && _d !== void 0 ? _d : '',
|
|
753
|
+
});
|
|
754
|
+
return [2 /*return*/, {
|
|
755
|
+
quickie: quickie,
|
|
756
|
+
message: 'Execute each step in order. Tool steps are JSON like {"tool":"fillField","args":{...}}; instruction steps are natural-language guidance.',
|
|
757
|
+
}];
|
|
758
|
+
}
|
|
759
|
+
case 'delete':
|
|
760
|
+
return [2 /*return*/, (0, buddyStore_1.deleteQuickie)({
|
|
761
|
+
userId: userId,
|
|
762
|
+
quickieId: (_e = asString(args.quickieId)) !== null && _e !== void 0 ? _e : '',
|
|
763
|
+
})];
|
|
764
|
+
default:
|
|
765
|
+
throw new Error("buddyQuickie: unknown action \"".concat(action, "\". Use save, list, get, run, or delete."));
|
|
766
|
+
}
|
|
767
|
+
return [2 /*return*/];
|
|
768
|
+
});
|
|
769
|
+
});
|
|
770
|
+
}
|
|
771
|
+
function executeBuddyMemory(args) {
|
|
772
|
+
return __awaiter(this, void 0, void 0, function () {
|
|
773
|
+
var action, userId;
|
|
774
|
+
var _a, _b, _c, _d;
|
|
775
|
+
return __generator(this, function (_e) {
|
|
776
|
+
action = asString(args.action);
|
|
777
|
+
userId = asString(args.userId);
|
|
778
|
+
switch (action) {
|
|
779
|
+
case 'get':
|
|
780
|
+
return [2 /*return*/, (0, buddyStore_1.getBuddyMemory)(userId)];
|
|
781
|
+
case 'search':
|
|
782
|
+
return [2 /*return*/, (0, buddyStore_1.searchBuddyMemory)({ userId: userId, query: asString(args.query) })];
|
|
783
|
+
case 'setNote':
|
|
784
|
+
return [2 /*return*/, (0, buddyStore_1.setBuddyMemoryNote)({
|
|
785
|
+
userId: userId,
|
|
786
|
+
key: (_a = asString(args.key)) !== null && _a !== void 0 ? _a : '',
|
|
787
|
+
value: (_b = asString(args.value)) !== null && _b !== void 0 ? _b : '',
|
|
788
|
+
})];
|
|
789
|
+
case 'appendOrganization':
|
|
790
|
+
return [2 /*return*/, (0, buddyStore_1.appendBuddyMemoryList)({
|
|
791
|
+
userId: userId,
|
|
792
|
+
category: 'organization',
|
|
793
|
+
value: (_c = asString(args.value)) !== null && _c !== void 0 ? _c : '',
|
|
794
|
+
})];
|
|
795
|
+
case 'appendWorkStyle':
|
|
796
|
+
return [2 /*return*/, (0, buddyStore_1.appendBuddyMemoryList)({
|
|
797
|
+
userId: userId,
|
|
798
|
+
category: 'workStyle',
|
|
799
|
+
value: (_d = asString(args.value)) !== null && _d !== void 0 ? _d : '',
|
|
800
|
+
})];
|
|
801
|
+
default:
|
|
802
|
+
throw new Error("buddyMemory: unknown action \"".concat(action, "\". Use get, search, setNote, appendOrganization, or appendWorkStyle."));
|
|
803
|
+
}
|
|
804
|
+
return [2 /*return*/];
|
|
805
|
+
});
|
|
806
|
+
});
|
|
807
|
+
}
|
|
808
|
+
|
|
809
|
+
|
|
810
|
+
/***/ },
|
|
811
|
+
|
|
812
|
+
/***/ 958
|
|
813
|
+
/*!****************************!*\
|
|
814
|
+
!*** ./src/buddy/types.ts ***!
|
|
815
|
+
\****************************/
|
|
816
|
+
(__unused_webpack_module, exports) {
|
|
817
|
+
|
|
818
|
+
|
|
819
|
+
Object.defineProperty(exports, "__esModule", ({ value: true }));
|
|
820
|
+
exports.EMPTY_BUDDY_MEMORY = exports.BUDDY_STATE_VERSION = void 0;
|
|
821
|
+
exports.BUDDY_STATE_VERSION = 1;
|
|
822
|
+
exports.EMPTY_BUDDY_MEMORY = {
|
|
823
|
+
organization: [],
|
|
824
|
+
workStyle: [],
|
|
825
|
+
notes: {},
|
|
826
|
+
updatedAt: new Date(0).toISOString(),
|
|
827
|
+
};
|
|
828
|
+
|
|
829
|
+
|
|
830
|
+
/***/ },
|
|
831
|
+
|
|
832
|
+
/***/ 737
|
|
833
|
+
/*!***************************************!*\
|
|
834
|
+
!*** ./src/playwrightBuddyHarness.ts ***!
|
|
835
|
+
\***************************************/
|
|
836
|
+
(__unused_webpack_module, exports, __webpack_require__) {
|
|
837
|
+
|
|
838
|
+
|
|
839
|
+
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
840
|
+
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
841
|
+
return new (P || (P = Promise))(function (resolve, reject) {
|
|
842
|
+
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
843
|
+
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
844
|
+
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
845
|
+
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
846
|
+
});
|
|
847
|
+
};
|
|
848
|
+
var __generator = (this && this.__generator) || function (thisArg, body) {
|
|
849
|
+
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);
|
|
850
|
+
return g.next = verb(0), g["throw"] = verb(1), g["return"] = verb(2), typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
|
|
851
|
+
function verb(n) { return function (v) { return step([n, v]); }; }
|
|
852
|
+
function step(op) {
|
|
853
|
+
if (f) throw new TypeError("Generator is already executing.");
|
|
854
|
+
while (g && (g = 0, op[0] && (_ = 0)), _) try {
|
|
855
|
+
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;
|
|
856
|
+
if (y = 0, t) op = [op[0] & 2, t.value];
|
|
857
|
+
switch (op[0]) {
|
|
858
|
+
case 0: case 1: t = op; break;
|
|
859
|
+
case 4: _.label++; return { value: op[1], done: false };
|
|
860
|
+
case 5: _.label++; y = op[1]; op = [0]; continue;
|
|
861
|
+
case 7: op = _.ops.pop(); _.trys.pop(); continue;
|
|
862
|
+
default:
|
|
863
|
+
if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
|
|
864
|
+
if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
|
|
865
|
+
if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
|
|
866
|
+
if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
|
|
867
|
+
if (t[2]) _.ops.pop();
|
|
868
|
+
_.trys.pop(); continue;
|
|
869
|
+
}
|
|
870
|
+
op = body.call(thisArg, _);
|
|
871
|
+
} catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
|
|
872
|
+
if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
|
|
873
|
+
}
|
|
874
|
+
};
|
|
875
|
+
Object.defineProperty(exports, "__esModule", ({ value: true }));
|
|
876
|
+
/**
|
|
877
|
+
* Browser bundle entry for Playwright: exposes buddy productivity tools on window
|
|
878
|
+
* so E2E tests run against real localStorage in a page context.
|
|
879
|
+
*/
|
|
880
|
+
var buddyPropTools_1 = __webpack_require__(/*! ./buddy/buddyPropTools */ 983);
|
|
881
|
+
var buddyStore_1 = __webpack_require__(/*! ./buddy/buddyStore */ 302);
|
|
882
|
+
var toolMap = buddyPropTools_1.buddyPropTools;
|
|
883
|
+
window.__GUIDEAI_BUDDY__ = {
|
|
884
|
+
toolNames: Object.keys(buddyPropTools_1.buddyPropTools),
|
|
885
|
+
executeTool: function (name, argsJson) { return __awaiter(void 0, void 0, void 0, function () {
|
|
886
|
+
var tool, parsed;
|
|
887
|
+
return __generator(this, function (_a) {
|
|
888
|
+
tool = toolMap[name];
|
|
889
|
+
if (!tool)
|
|
890
|
+
throw new Error("Unknown buddy tool: ".concat(name));
|
|
891
|
+
try {
|
|
892
|
+
parsed = argsJson ? JSON.parse(argsJson) : {};
|
|
893
|
+
}
|
|
894
|
+
catch (_b) {
|
|
895
|
+
throw new Error("Invalid JSON args for ".concat(name));
|
|
896
|
+
}
|
|
897
|
+
return [2 /*return*/, tool.execute(parsed)];
|
|
898
|
+
});
|
|
899
|
+
}); },
|
|
900
|
+
readState: function (userId) { return (0, buddyStore_1.readBuddyState)(userId); },
|
|
901
|
+
clearState: function (userId) { return (0, buddyStore_1.clearBuddyState)(userId); },
|
|
902
|
+
};
|
|
903
|
+
|
|
904
|
+
|
|
905
|
+
/***/ },
|
|
906
|
+
|
|
907
|
+
/***/ 485
|
|
908
|
+
/*!*************************************************!*\
|
|
909
|
+
!*** ./src/utils/guideaiMirroredStorageKeys.ts ***!
|
|
910
|
+
\*************************************************/
|
|
911
|
+
(__unused_webpack_module, exports) {
|
|
912
|
+
|
|
913
|
+
|
|
914
|
+
/**
|
|
915
|
+
* Canonical GuideAI localStorage key strings.
|
|
916
|
+
* Imported by guide-ai-package helpers and the Chrome extension (UMD does not export STORAGE_KEYS).
|
|
917
|
+
*/
|
|
918
|
+
var __spreadArray = (this && this.__spreadArray) || function (to, from, pack) {
|
|
919
|
+
if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {
|
|
920
|
+
if (ar || !(i in from)) {
|
|
921
|
+
if (!ar) ar = Array.prototype.slice.call(from, 0, i);
|
|
922
|
+
ar[i] = from[i];
|
|
923
|
+
}
|
|
924
|
+
}
|
|
925
|
+
return to.concat(ar || Array.prototype.slice.call(from));
|
|
926
|
+
};
|
|
927
|
+
Object.defineProperty(exports, "__esModule", ({ value: true }));
|
|
928
|
+
exports.GUIDEAI_MIRRORED_STORAGE_KEYS = exports.GUIDEAI_STORAGE_KEYS = exports.WIDGET_BEARER_TOKEN_STORAGE_KEY = void 0;
|
|
929
|
+
/** Widget Bearer JWT — mirrored; not part of transcript prefs. */
|
|
930
|
+
exports.WIDGET_BEARER_TOKEN_STORAGE_KEY = 'guideai_widgetBearerToken';
|
|
931
|
+
exports.GUIDEAI_STORAGE_KEYS = {
|
|
932
|
+
USER_UUID: 'guideAI_userUUID',
|
|
933
|
+
/** Persisted widget profile username (email or stable id); mirrored by the Chrome extension. */
|
|
934
|
+
WIDGET_PROFILE_USERNAME: 'guideAI_widgetProfileUsername',
|
|
935
|
+
SESSION_ID: 'guideAI_sessionId',
|
|
936
|
+
CONVERSATION: 'guideAI_conversation',
|
|
937
|
+
HAS_INTERACTED: 'guideAI_hasInteracted',
|
|
938
|
+
IS_MUTED: 'guideAI_isMuted',
|
|
939
|
+
/** Mute assistant TTS / remote audio (WebRTC playback); not the user microphone. */
|
|
940
|
+
ASSISTANT_PLAYBACK_MUTED: 'guideAI_assistantPlaybackMuted',
|
|
941
|
+
LOGGER_ENABLED: 'guideAI_loggerEnabled',
|
|
942
|
+
AUDIO_CONFIG: 'guideAI_audioConfig',
|
|
943
|
+
/** UI microphone preset selector (Precise vs Noisy). */
|
|
944
|
+
MIC_PRESET: 'guideAI_micPreset',
|
|
945
|
+
/** Developer tools shell: playback interrupt lock panel visibility (default off). */
|
|
946
|
+
PLAYBACK_LOCK_DEBUG_OVERLAY: 'guideAI_playbackLockDebugOverlay',
|
|
947
|
+
/** Developer tools shell: workflow tester tab overlay visibility (default off). */
|
|
948
|
+
WORKFLOW_TESTER_OVERLAY: 'guideAI_workflowTesterOverlay',
|
|
949
|
+
/** Last dragged position of the floating developer tools shell (`{ left, top }` JSON). */
|
|
950
|
+
DEVTOOLS_SHELL_POSITION: 'guideAI_devtoolsShellPosition',
|
|
951
|
+
/** Last dragged position of learn mode capture focus chrome (`{ left, top }` JSON). */
|
|
952
|
+
LEARN_CAPTURE_POSITION: 'guideAI_learnCapturePosition',
|
|
953
|
+
};
|
|
954
|
+
/**
|
|
955
|
+
* Keys mirrored from the widget to extension localStorage via `guideai_storage_write`.
|
|
956
|
+
*/
|
|
957
|
+
exports.GUIDEAI_MIRRORED_STORAGE_KEYS = __spreadArray(__spreadArray([], Object.values(exports.GUIDEAI_STORAGE_KEYS), true), [
|
|
958
|
+
exports.WIDGET_BEARER_TOKEN_STORAGE_KEY,
|
|
959
|
+
], false);
|
|
960
|
+
|
|
961
|
+
|
|
962
|
+
/***/ },
|
|
963
|
+
|
|
964
|
+
/***/ 640
|
|
965
|
+
/*!*****************************************!*\
|
|
966
|
+
!*** ./src/utils/localStorageHelper.ts ***!
|
|
967
|
+
\*****************************************/
|
|
968
|
+
(__unused_webpack_module, exports, __webpack_require__) {
|
|
969
|
+
|
|
970
|
+
|
|
971
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
972
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
973
|
+
};
|
|
974
|
+
Object.defineProperty(exports, "__esModule", ({ value: true }));
|
|
975
|
+
exports.STORAGE_KEYS = exports.clearTranscriptWorkflowPrefs = exports.setTranscriptWorkflowWorkspaceState = exports.getTranscriptWorkflowWorkspaceState = exports.setLastWorkspaceSlugPref = exports.getLastWorkspaceSlugPref = exports.setTranscriptPanelDockedPref = exports.getTranscriptPanelDockedPref = exports.clearTranscriptFloatGeometryPref = exports.setTranscriptFloatGeometryPref = exports.getTranscriptFloatGeometryPref = exports.setTranscriptDrawerWidthPref = exports.getTranscriptDrawerWidthPref = exports.TRANSCRIPT_DRAWER_WIDTH_MAX_PX = exports.TRANSCRIPT_DRAWER_WIDTH_MIN_PX = exports.TRANSCRIPT_DRAWER_WIDTH_PX = exports.setLearnCapturePosition = exports.getLearnCapturePosition = exports.setDevtoolsShellPosition = exports.getDevtoolsShellPosition = exports.setWorkflowTesterOverlayVisible = exports.setPlaybackLockDebugOverlayVisible = exports.setMicPreset = exports.getMicPreset = exports.setAudioConfig = exports.getAudioConfig = exports.setLoggerEnabled = exports.getLoggerEnabled = exports.setAssistantPlaybackMuted = exports.getAssistantPlaybackMuted = exports.setIsMuted = exports.getIsMuted = exports.setHasInteracted = exports.getHasInteracted = exports.setSessionId = exports.getSessionId = exports.getWidgetProfileUsername = exports.getUserUUID = exports.isLocalStorageAvailable = void 0;
|
|
976
|
+
exports.emitStorageWrite = emitStorageWrite;
|
|
977
|
+
exports.safeReadLocal = safeReadLocal;
|
|
978
|
+
exports.safeWriteLocal = safeWriteLocal;
|
|
979
|
+
exports.safeRemoveLocal = safeRemoveLocal;
|
|
980
|
+
exports.writeMirroredLocal = writeMirroredLocal;
|
|
981
|
+
exports.resolveWidgetEndUserId = resolveWidgetEndUserId;
|
|
982
|
+
var logger_1 = __importDefault(__webpack_require__(/*! ./logger */ 628));
|
|
983
|
+
var guideaiMirroredStorageKeys_1 = __webpack_require__(/*! ./guideaiMirroredStorageKeys */ 485);
|
|
984
|
+
/**
|
|
985
|
+
* Centralized localStorage helper
|
|
986
|
+
* Tracks all localStorage keys used in the application
|
|
987
|
+
*/
|
|
988
|
+
var STORAGE_KEYS = guideaiMirroredStorageKeys_1.GUIDEAI_STORAGE_KEYS;
|
|
989
|
+
exports.STORAGE_KEYS = STORAGE_KEYS;
|
|
990
|
+
/**
|
|
991
|
+
* Emit a custom event when localStorage is written, so the Chrome extension
|
|
992
|
+
* content script can mirror writes from the isolated GuideAI component.
|
|
993
|
+
* Exported for bespoke flows (for example conversation save + quota handling).
|
|
994
|
+
*/
|
|
995
|
+
function emitStorageWrite(key, value) {
|
|
996
|
+
if (typeof window === 'undefined')
|
|
997
|
+
return;
|
|
998
|
+
try {
|
|
999
|
+
window.dispatchEvent(new CustomEvent('guideai_storage_write', { detail: { key: key, value: value } }));
|
|
1000
|
+
}
|
|
1001
|
+
catch (error) {
|
|
1002
|
+
logger_1.default.warn('LocalStorageHelper', 'Failed to emit storage write event', error);
|
|
1003
|
+
}
|
|
1004
|
+
}
|
|
1005
|
+
/**
|
|
1006
|
+
* Check if localStorage is available
|
|
1007
|
+
*/
|
|
1008
|
+
var isLocalStorageAvailable = function () {
|
|
1009
|
+
try {
|
|
1010
|
+
if (typeof window === 'undefined')
|
|
1011
|
+
return false;
|
|
1012
|
+
var testKey = '__storage_test__';
|
|
1013
|
+
localStorage.setItem(testKey, testKey);
|
|
1014
|
+
localStorage.removeItem(testKey);
|
|
1015
|
+
return true;
|
|
1016
|
+
}
|
|
1017
|
+
catch (_e) {
|
|
1018
|
+
return false;
|
|
1019
|
+
}
|
|
1020
|
+
};
|
|
1021
|
+
exports.isLocalStorageAvailable = isLocalStorageAvailable;
|
|
1022
|
+
/**
|
|
1023
|
+
* Return `localStorage.getItem(key)` or `null` if localStorage is unavailable / throws
|
|
1024
|
+
* (SSR, private mode, quota errors). Prefer this over an ad-hoc `typeof localStorage` check.
|
|
1025
|
+
*/
|
|
1026
|
+
function safeReadLocal(key) {
|
|
1027
|
+
if (typeof localStorage === 'undefined')
|
|
1028
|
+
return null;
|
|
1029
|
+
try {
|
|
1030
|
+
return localStorage.getItem(key);
|
|
1031
|
+
}
|
|
1032
|
+
catch (_a) {
|
|
1033
|
+
return null;
|
|
1034
|
+
}
|
|
1035
|
+
}
|
|
1036
|
+
/**
|
|
1037
|
+
* Best-effort `localStorage.setItem(key, value)`. Silently no-ops if localStorage is unavailable.
|
|
1038
|
+
* Does NOT emit the `guideai_storage_write` event — use the typed setters in this file for keys
|
|
1039
|
+
* the Chrome extension needs to mirror.
|
|
1040
|
+
*/
|
|
1041
|
+
function safeWriteLocal(key, value) {
|
|
1042
|
+
if (typeof localStorage === 'undefined')
|
|
1043
|
+
return;
|
|
1044
|
+
try {
|
|
1045
|
+
localStorage.setItem(key, value);
|
|
1046
|
+
}
|
|
1047
|
+
catch (_a) {
|
|
1048
|
+
/* ignore */
|
|
1049
|
+
}
|
|
1050
|
+
}
|
|
1051
|
+
/** Best-effort removeItem. No-ops if localStorage is unavailable. */
|
|
1052
|
+
function safeRemoveLocal(key) {
|
|
1053
|
+
if (typeof localStorage === 'undefined')
|
|
1054
|
+
return;
|
|
1055
|
+
try {
|
|
1056
|
+
localStorage.removeItem(key);
|
|
1057
|
+
}
|
|
1058
|
+
catch (_a) {
|
|
1059
|
+
/* ignore */
|
|
1060
|
+
}
|
|
1061
|
+
}
|
|
1062
|
+
/**
|
|
1063
|
+
* setItem(key, value) if value is a string; removeItem(key) if value is null.
|
|
1064
|
+
* Emits the guideai_storage_write event for the final state (value or '').
|
|
1065
|
+
*
|
|
1066
|
+
* Use for keys the Chrome extension mirrors. Callers that need emit-on-set-only
|
|
1067
|
+
* can pass `{ emitOnClear: false }`.
|
|
1068
|
+
*/
|
|
1069
|
+
function writeMirroredLocal(key, value, options) {
|
|
1070
|
+
if (options === void 0) { options = {}; }
|
|
1071
|
+
var _a = options.emitOnClear, emitOnClear = _a === void 0 ? true : _a;
|
|
1072
|
+
if (typeof localStorage === 'undefined')
|
|
1073
|
+
return;
|
|
1074
|
+
try {
|
|
1075
|
+
if (value === null) {
|
|
1076
|
+
localStorage.removeItem(key);
|
|
1077
|
+
if (emitOnClear)
|
|
1078
|
+
emitStorageWrite(key, '');
|
|
1079
|
+
}
|
|
1080
|
+
else {
|
|
1081
|
+
localStorage.setItem(key, value);
|
|
1082
|
+
emitStorageWrite(key, value);
|
|
1083
|
+
}
|
|
1084
|
+
}
|
|
1085
|
+
catch (_b) {
|
|
1086
|
+
/* ignore */
|
|
1087
|
+
}
|
|
1088
|
+
}
|
|
1089
|
+
var getBooleanPref = function (key) { return safeReadLocal(key) === 'true'; };
|
|
1090
|
+
var setBooleanPref = function (key, value) {
|
|
1091
|
+
writeMirroredLocal(key, value ? 'true' : null, { emitOnClear: false });
|
|
1092
|
+
};
|
|
1093
|
+
/**
|
|
1094
|
+
* Generate a UUID v4
|
|
1095
|
+
*/
|
|
1096
|
+
var generateUUID = function () {
|
|
1097
|
+
return 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, function (c) {
|
|
1098
|
+
var r = (Math.random() * 16) | 0;
|
|
1099
|
+
var v = c === 'x' ? r : (r & 0x3) | 0x8;
|
|
1100
|
+
return v.toString(16);
|
|
1101
|
+
});
|
|
1102
|
+
};
|
|
1103
|
+
/**
|
|
1104
|
+
* Get or create user UUID
|
|
1105
|
+
* Creates a new UUID if one doesn't exist
|
|
1106
|
+
*/
|
|
1107
|
+
var getUserUUID = function () {
|
|
1108
|
+
var existing = safeReadLocal(STORAGE_KEYS.USER_UUID);
|
|
1109
|
+
if (existing)
|
|
1110
|
+
return existing;
|
|
1111
|
+
var uuid = generateUUID();
|
|
1112
|
+
writeMirroredLocal(STORAGE_KEYS.USER_UUID, uuid);
|
|
1113
|
+
return uuid;
|
|
1114
|
+
};
|
|
1115
|
+
exports.getUserUUID = getUserUUID;
|
|
1116
|
+
/** Trimmed profile username from localStorage, or null if unset / blank. */
|
|
1117
|
+
var getWidgetProfileUsername = function () {
|
|
1118
|
+
var raw = safeReadLocal(STORAGE_KEYS.WIDGET_PROFILE_USERNAME);
|
|
1119
|
+
var t = typeof raw === 'string' ? raw.trim() : '';
|
|
1120
|
+
return t.length > 0 ? t : null;
|
|
1121
|
+
};
|
|
1122
|
+
exports.getWidgetProfileUsername = getWidgetProfileUsername;
|
|
1123
|
+
/**
|
|
1124
|
+
* Canonical end-user id for widget HTTP payloads (`user` on `/initialize`, `userId`
|
|
1125
|
+
* on `/widget/session`, `user` on logged messages): persisted **`guideAI_widgetProfileUsername`**
|
|
1126
|
+
* when present in localStorage (hosts should set **`STORAGE_KEYS.WIDGET_PROFILE_USERNAME`** and emit
|
|
1127
|
+
* **`guideai_storage_write`** for Chrome extension mirroring — see package README), otherwise the
|
|
1128
|
+
* stable anonymous id from {@link getUserUUID}. Host **`getUserInfo`** (GuideAI prop) also persists here.
|
|
1129
|
+
*/
|
|
1130
|
+
function resolveWidgetEndUserId() {
|
|
1131
|
+
var profile = (0, exports.getWidgetProfileUsername)();
|
|
1132
|
+
if (profile)
|
|
1133
|
+
return profile;
|
|
1134
|
+
return (0, exports.getUserUUID)();
|
|
1135
|
+
}
|
|
1136
|
+
/**
|
|
1137
|
+
* Get session ID (active OpenAI session)
|
|
1138
|
+
*/
|
|
1139
|
+
var getSessionId = function () { return safeReadLocal(STORAGE_KEYS.SESSION_ID); };
|
|
1140
|
+
exports.getSessionId = getSessionId;
|
|
1141
|
+
/**
|
|
1142
|
+
* Set session ID
|
|
1143
|
+
*/
|
|
1144
|
+
var setSessionId = function (sessionId) {
|
|
1145
|
+
var key = STORAGE_KEYS.SESSION_ID;
|
|
1146
|
+
if (sessionId === null) {
|
|
1147
|
+
safeRemoveLocal(key);
|
|
1148
|
+
}
|
|
1149
|
+
else {
|
|
1150
|
+
safeWriteLocal(key, sessionId);
|
|
1151
|
+
}
|
|
1152
|
+
};
|
|
1153
|
+
exports.setSessionId = setSessionId;
|
|
1154
|
+
/**
|
|
1155
|
+
* Get has interacted flag
|
|
1156
|
+
*/
|
|
1157
|
+
var getHasInteracted = function () { return getBooleanPref(STORAGE_KEYS.HAS_INTERACTED); };
|
|
1158
|
+
exports.getHasInteracted = getHasInteracted;
|
|
1159
|
+
/**
|
|
1160
|
+
* Set has interacted flag
|
|
1161
|
+
*/
|
|
1162
|
+
var setHasInteracted = function (value) {
|
|
1163
|
+
setBooleanPref(STORAGE_KEYS.HAS_INTERACTED, value);
|
|
1164
|
+
};
|
|
1165
|
+
exports.setHasInteracted = setHasInteracted;
|
|
1166
|
+
/**
|
|
1167
|
+
* Get is muted flag
|
|
1168
|
+
*/
|
|
1169
|
+
var getIsMuted = function () { return getBooleanPref(STORAGE_KEYS.IS_MUTED); };
|
|
1170
|
+
exports.getIsMuted = getIsMuted;
|
|
1171
|
+
/**
|
|
1172
|
+
* Set is muted flag
|
|
1173
|
+
*/
|
|
1174
|
+
var setIsMuted = function (value) {
|
|
1175
|
+
setBooleanPref(STORAGE_KEYS.IS_MUTED, value);
|
|
1176
|
+
};
|
|
1177
|
+
exports.setIsMuted = setIsMuted;
|
|
1178
|
+
var getAssistantPlaybackMuted = function () {
|
|
1179
|
+
return getBooleanPref(STORAGE_KEYS.ASSISTANT_PLAYBACK_MUTED);
|
|
1180
|
+
};
|
|
1181
|
+
exports.getAssistantPlaybackMuted = getAssistantPlaybackMuted;
|
|
1182
|
+
var setAssistantPlaybackMuted = function (value) {
|
|
1183
|
+
setBooleanPref(STORAGE_KEYS.ASSISTANT_PLAYBACK_MUTED, value);
|
|
1184
|
+
};
|
|
1185
|
+
exports.setAssistantPlaybackMuted = setAssistantPlaybackMuted;
|
|
1186
|
+
/**
|
|
1187
|
+
* Get logger enabled flag (used by Logger to persist enable state)
|
|
1188
|
+
*/
|
|
1189
|
+
var getLoggerEnabled = function () { return getBooleanPref(STORAGE_KEYS.LOGGER_ENABLED); };
|
|
1190
|
+
exports.getLoggerEnabled = getLoggerEnabled;
|
|
1191
|
+
/**
|
|
1192
|
+
* Set logger enabled flag
|
|
1193
|
+
*/
|
|
1194
|
+
var setLoggerEnabled = function (value) {
|
|
1195
|
+
setBooleanPref(STORAGE_KEYS.LOGGER_ENABLED, value);
|
|
1196
|
+
};
|
|
1197
|
+
exports.setLoggerEnabled = setLoggerEnabled;
|
|
1198
|
+
/**
|
|
1199
|
+
* Get stored audio configuration
|
|
1200
|
+
*/
|
|
1201
|
+
var getAudioConfig = function () {
|
|
1202
|
+
var raw = safeReadLocal(STORAGE_KEYS.AUDIO_CONFIG);
|
|
1203
|
+
if (!raw)
|
|
1204
|
+
return null;
|
|
1205
|
+
try {
|
|
1206
|
+
return JSON.parse(raw);
|
|
1207
|
+
}
|
|
1208
|
+
catch (error) {
|
|
1209
|
+
logger_1.default.error('LocalStorageHelper', 'Error parsing audio config:', error);
|
|
1210
|
+
return null;
|
|
1211
|
+
}
|
|
1212
|
+
};
|
|
1213
|
+
exports.getAudioConfig = getAudioConfig;
|
|
1214
|
+
/**
|
|
1215
|
+
* Save audio configuration
|
|
1216
|
+
*/
|
|
1217
|
+
var setAudioConfig = function (value) {
|
|
1218
|
+
writeMirroredLocal(STORAGE_KEYS.AUDIO_CONFIG, value ? JSON.stringify(value) : null, {
|
|
1219
|
+
emitOnClear: false,
|
|
1220
|
+
});
|
|
1221
|
+
};
|
|
1222
|
+
exports.setAudioConfig = setAudioConfig;
|
|
1223
|
+
/** Default mic preset is Precise. */
|
|
1224
|
+
var getMicPreset = function () {
|
|
1225
|
+
var v = safeReadLocal(STORAGE_KEYS.MIC_PRESET);
|
|
1226
|
+
return v === 'noisy' ? 'noisy' : 'precise';
|
|
1227
|
+
};
|
|
1228
|
+
exports.getMicPreset = getMicPreset;
|
|
1229
|
+
var setMicPreset = function (preset) {
|
|
1230
|
+
writeMirroredLocal(STORAGE_KEYS.MIC_PRESET, preset === 'precise' ? null : preset);
|
|
1231
|
+
};
|
|
1232
|
+
exports.setMicPreset = setMicPreset;
|
|
1233
|
+
/** Mirrored flag for playback-lock debug tab (developer tools shell / extension). */
|
|
1234
|
+
var setPlaybackLockDebugOverlayVisible = function (visible) {
|
|
1235
|
+
writeMirroredLocal(STORAGE_KEYS.PLAYBACK_LOCK_DEBUG_OVERLAY, visible ? 'true' : null);
|
|
1236
|
+
};
|
|
1237
|
+
exports.setPlaybackLockDebugOverlayVisible = setPlaybackLockDebugOverlayVisible;
|
|
1238
|
+
/** Mirrored flag for workflow tester tab (developer tools shell / extension). */
|
|
1239
|
+
var setWorkflowTesterOverlayVisible = function (visible) {
|
|
1240
|
+
writeMirroredLocal(STORAGE_KEYS.WORKFLOW_TESTER_OVERLAY, visible ? 'true' : null);
|
|
1241
|
+
};
|
|
1242
|
+
exports.setWorkflowTesterOverlayVisible = setWorkflowTesterOverlayVisible;
|
|
1243
|
+
var getDevtoolsShellPosition = function () {
|
|
1244
|
+
var raw = safeReadLocal(STORAGE_KEYS.DEVTOOLS_SHELL_POSITION);
|
|
1245
|
+
if (!raw)
|
|
1246
|
+
return null;
|
|
1247
|
+
try {
|
|
1248
|
+
var parsed = JSON.parse(raw);
|
|
1249
|
+
if (typeof parsed.left !== 'number' || typeof parsed.top !== 'number')
|
|
1250
|
+
return null;
|
|
1251
|
+
if (!Number.isFinite(parsed.left) || !Number.isFinite(parsed.top))
|
|
1252
|
+
return null;
|
|
1253
|
+
return { left: parsed.left, top: parsed.top };
|
|
1254
|
+
}
|
|
1255
|
+
catch (_a) {
|
|
1256
|
+
return null;
|
|
1257
|
+
}
|
|
1258
|
+
};
|
|
1259
|
+
exports.getDevtoolsShellPosition = getDevtoolsShellPosition;
|
|
1260
|
+
var setDevtoolsShellPosition = function (position) {
|
|
1261
|
+
writeMirroredLocal(STORAGE_KEYS.DEVTOOLS_SHELL_POSITION, JSON.stringify({ left: position.left, top: position.top }));
|
|
1262
|
+
};
|
|
1263
|
+
exports.setDevtoolsShellPosition = setDevtoolsShellPosition;
|
|
1264
|
+
var getLearnCapturePosition = function () {
|
|
1265
|
+
var raw = safeReadLocal(STORAGE_KEYS.LEARN_CAPTURE_POSITION);
|
|
1266
|
+
if (!raw)
|
|
1267
|
+
return null;
|
|
1268
|
+
try {
|
|
1269
|
+
var parsed = JSON.parse(raw);
|
|
1270
|
+
if (typeof parsed.left !== 'number' || typeof parsed.top !== 'number')
|
|
1271
|
+
return null;
|
|
1272
|
+
if (!Number.isFinite(parsed.left) || !Number.isFinite(parsed.top))
|
|
1273
|
+
return null;
|
|
1274
|
+
return { left: parsed.left, top: parsed.top };
|
|
1275
|
+
}
|
|
1276
|
+
catch (_a) {
|
|
1277
|
+
return null;
|
|
1278
|
+
}
|
|
1279
|
+
};
|
|
1280
|
+
exports.getLearnCapturePosition = getLearnCapturePosition;
|
|
1281
|
+
var setLearnCapturePosition = function (position) {
|
|
1282
|
+
writeMirroredLocal(STORAGE_KEYS.LEARN_CAPTURE_POSITION, JSON.stringify({ left: position.left, top: position.top }));
|
|
1283
|
+
};
|
|
1284
|
+
exports.setLearnCapturePosition = setLearnCapturePosition;
|
|
1285
|
+
/** Default docked drawer width (px). */
|
|
1286
|
+
exports.TRANSCRIPT_DRAWER_WIDTH_PX = 420;
|
|
1287
|
+
exports.TRANSCRIPT_DRAWER_WIDTH_MIN_PX = 260;
|
|
1288
|
+
exports.TRANSCRIPT_DRAWER_WIDTH_MAX_PX = 720;
|
|
1289
|
+
var transcriptDrawerPrefStorageKey = function (widgetKey) {
|
|
1290
|
+
return "guideAI_transcriptDrawerPref:".concat(widgetKey);
|
|
1291
|
+
};
|
|
1292
|
+
var transcriptDrawerWidthStorageKey = function (widgetKey) {
|
|
1293
|
+
return "guideAI_transcriptDrawerWidth:".concat(widgetKey);
|
|
1294
|
+
};
|
|
1295
|
+
function clampDrawerWidthPx(n) {
|
|
1296
|
+
if (!Number.isFinite(n))
|
|
1297
|
+
return exports.TRANSCRIPT_DRAWER_WIDTH_PX;
|
|
1298
|
+
return Math.round(Math.min(exports.TRANSCRIPT_DRAWER_WIDTH_MAX_PX, Math.max(exports.TRANSCRIPT_DRAWER_WIDTH_MIN_PX, n)));
|
|
1299
|
+
}
|
|
1300
|
+
/** User-resizable docked drawer width (px), per widget key. */
|
|
1301
|
+
var getTranscriptDrawerWidthPref = function (widgetKey) {
|
|
1302
|
+
var raw = safeReadLocal(transcriptDrawerWidthStorageKey(widgetKey));
|
|
1303
|
+
if (raw == null || raw === '')
|
|
1304
|
+
return exports.TRANSCRIPT_DRAWER_WIDTH_PX;
|
|
1305
|
+
return clampDrawerWidthPx(parseInt(raw, 10));
|
|
1306
|
+
};
|
|
1307
|
+
exports.getTranscriptDrawerWidthPref = getTranscriptDrawerWidthPref;
|
|
1308
|
+
var setTranscriptDrawerWidthPref = function (widgetKey, widthPx) {
|
|
1309
|
+
var key = transcriptDrawerWidthStorageKey(widgetKey);
|
|
1310
|
+
writeMirroredLocal(key, String(clampDrawerWidthPx(widthPx)));
|
|
1311
|
+
};
|
|
1312
|
+
exports.setTranscriptDrawerWidthPref = setTranscriptDrawerWidthPref;
|
|
1313
|
+
var transcriptFloatGeometryStorageKey = function (widgetKey) {
|
|
1314
|
+
return "guideAI_transcriptFloatGeometry:".concat(widgetKey);
|
|
1315
|
+
};
|
|
1316
|
+
var FLOAT_WIDTH_MIN_PX = 240;
|
|
1317
|
+
var FLOAT_WIDTH_MAX_PX = 560;
|
|
1318
|
+
var FLOAT_CORE_H_MIN_PX = 180;
|
|
1319
|
+
var FLOAT_CORE_H_MAX_PX = 560;
|
|
1320
|
+
function clampFloatDimension(n, min, max) {
|
|
1321
|
+
return Math.round(Math.min(max, Math.max(min, n)));
|
|
1322
|
+
}
|
|
1323
|
+
var getTranscriptFloatGeometryPref = function (widgetKey) {
|
|
1324
|
+
var raw = safeReadLocal(transcriptFloatGeometryStorageKey(widgetKey));
|
|
1325
|
+
if (!raw)
|
|
1326
|
+
return null;
|
|
1327
|
+
try {
|
|
1328
|
+
var parsed = JSON.parse(raw);
|
|
1329
|
+
var left = parsed.left, bottom = parsed.bottom, width = parsed.width, coreH = parsed.coreH;
|
|
1330
|
+
if (typeof left !== 'number' ||
|
|
1331
|
+
typeof bottom !== 'number' ||
|
|
1332
|
+
typeof width !== 'number' ||
|
|
1333
|
+
typeof coreH !== 'number' ||
|
|
1334
|
+
!Number.isFinite(left) ||
|
|
1335
|
+
!Number.isFinite(bottom) ||
|
|
1336
|
+
!Number.isFinite(width) ||
|
|
1337
|
+
!Number.isFinite(coreH)) {
|
|
1338
|
+
return null;
|
|
1339
|
+
}
|
|
1340
|
+
return {
|
|
1341
|
+
left: Math.round(left),
|
|
1342
|
+
bottom: Math.round(bottom),
|
|
1343
|
+
width: clampFloatDimension(width, FLOAT_WIDTH_MIN_PX, FLOAT_WIDTH_MAX_PX),
|
|
1344
|
+
coreH: clampFloatDimension(coreH, FLOAT_CORE_H_MIN_PX, FLOAT_CORE_H_MAX_PX),
|
|
1345
|
+
};
|
|
1346
|
+
}
|
|
1347
|
+
catch (_a) {
|
|
1348
|
+
return null;
|
|
1349
|
+
}
|
|
1350
|
+
};
|
|
1351
|
+
exports.getTranscriptFloatGeometryPref = getTranscriptFloatGeometryPref;
|
|
1352
|
+
var setTranscriptFloatGeometryPref = function (widgetKey, geometry) {
|
|
1353
|
+
var key = transcriptFloatGeometryStorageKey(widgetKey);
|
|
1354
|
+
writeMirroredLocal(key, JSON.stringify({
|
|
1355
|
+
left: Math.round(geometry.left),
|
|
1356
|
+
bottom: Math.round(geometry.bottom),
|
|
1357
|
+
width: clampFloatDimension(geometry.width, FLOAT_WIDTH_MIN_PX, FLOAT_WIDTH_MAX_PX),
|
|
1358
|
+
coreH: clampFloatDimension(geometry.coreH, FLOAT_CORE_H_MIN_PX, FLOAT_CORE_H_MAX_PX),
|
|
1359
|
+
}));
|
|
1360
|
+
};
|
|
1361
|
+
exports.setTranscriptFloatGeometryPref = setTranscriptFloatGeometryPref;
|
|
1362
|
+
var clearTranscriptFloatGeometryPref = function (widgetKey) {
|
|
1363
|
+
writeMirroredLocal(transcriptFloatGeometryStorageKey(widgetKey), null);
|
|
1364
|
+
};
|
|
1365
|
+
exports.clearTranscriptFloatGeometryPref = clearTranscriptFloatGeometryPref;
|
|
1366
|
+
/**
|
|
1367
|
+
* Whether the user prefers the docked transcript panel when the transcript is visible (per widget key).
|
|
1368
|
+
* Storage key remains `guideAI_transcriptDrawerPref:*` for backward compatibility.
|
|
1369
|
+
*/
|
|
1370
|
+
var getTranscriptPanelDockedPref = function (widgetKey) {
|
|
1371
|
+
return safeReadLocal(transcriptDrawerPrefStorageKey(widgetKey)) === '1';
|
|
1372
|
+
};
|
|
1373
|
+
exports.getTranscriptPanelDockedPref = getTranscriptPanelDockedPref;
|
|
1374
|
+
var setTranscriptPanelDockedPref = function (widgetKey, docked) {
|
|
1375
|
+
var key = transcriptDrawerPrefStorageKey(widgetKey);
|
|
1376
|
+
writeMirroredLocal(key, docked ? '1' : '0');
|
|
1377
|
+
};
|
|
1378
|
+
exports.setTranscriptPanelDockedPref = setTranscriptPanelDockedPref;
|
|
1379
|
+
/**
|
|
1380
|
+
* Last workspace slug the user selected in the in-widget transcript selector, scoped per
|
|
1381
|
+
* conversation/widget key. Used to keep the selection sticky across page reloads. Cleared
|
|
1382
|
+
* when the conversation ends (see `useConversationSession.endConversationSession`) so a
|
|
1383
|
+
* brand-new thread falls back to the host-default workspace resolution.
|
|
1384
|
+
*
|
|
1385
|
+
* The persisted slug is only re-applied when it still appears in the freshly fetched
|
|
1386
|
+
* workspace catalog; consumers must validate before using.
|
|
1387
|
+
*/
|
|
1388
|
+
var lastWorkspaceSlugStorageKey = function (widgetKey) { return "guideAI_lastWorkspaceSlug:".concat(widgetKey); };
|
|
1389
|
+
var getLastWorkspaceSlugPref = function (widgetKey) {
|
|
1390
|
+
var raw = safeReadLocal(lastWorkspaceSlugStorageKey(widgetKey));
|
|
1391
|
+
var trimmed = typeof raw === 'string' ? raw.trim() : '';
|
|
1392
|
+
return trimmed.length > 0 ? trimmed : null;
|
|
1393
|
+
};
|
|
1394
|
+
exports.getLastWorkspaceSlugPref = getLastWorkspaceSlugPref;
|
|
1395
|
+
var setLastWorkspaceSlugPref = function (widgetKey, slug) {
|
|
1396
|
+
var key = lastWorkspaceSlugStorageKey(widgetKey);
|
|
1397
|
+
var trimmed = typeof slug === 'string' ? slug.trim() : '';
|
|
1398
|
+
writeMirroredLocal(key, trimmed.length > 0 ? trimmed : null);
|
|
1399
|
+
};
|
|
1400
|
+
exports.setLastWorkspaceSlugPref = setLastWorkspaceSlugPref;
|
|
1401
|
+
var transcriptWorkflowStateStorageKey = function (conversationKey) {
|
|
1402
|
+
return "guideAI_transcriptWorkflowState:".concat(conversationKey);
|
|
1403
|
+
};
|
|
1404
|
+
function readTranscriptWorkflowStateBlob(conversationKey) {
|
|
1405
|
+
var raw = safeReadLocal(transcriptWorkflowStateStorageKey(conversationKey));
|
|
1406
|
+
if (!raw)
|
|
1407
|
+
return {};
|
|
1408
|
+
try {
|
|
1409
|
+
var parsed = JSON.parse(raw);
|
|
1410
|
+
return parsed && typeof parsed === 'object' ? parsed : {};
|
|
1411
|
+
}
|
|
1412
|
+
catch (_a) {
|
|
1413
|
+
return {};
|
|
1414
|
+
}
|
|
1415
|
+
}
|
|
1416
|
+
var getTranscriptWorkflowWorkspaceState = function (conversationKey, workspaceSlug) {
|
|
1417
|
+
var slug = workspaceSlug.trim();
|
|
1418
|
+
if (!slug)
|
|
1419
|
+
return null;
|
|
1420
|
+
var blob = readTranscriptWorkflowStateBlob(conversationKey);
|
|
1421
|
+
var row = blob[slug];
|
|
1422
|
+
if (!row || typeof row !== 'object')
|
|
1423
|
+
return null;
|
|
1424
|
+
var id = typeof row.sessionWorkflowId === 'string' ? row.sessionWorkflowId.trim() : '';
|
|
1425
|
+
return {
|
|
1426
|
+
sessionWorkflowId: id.length > 0 ? id : null,
|
|
1427
|
+
activeWorkflowTitle: typeof row.activeWorkflowTitle === 'string' ? row.activeWorkflowTitle : null,
|
|
1428
|
+
workflowChecked: row.workflowChecked && typeof row.workflowChecked === 'object'
|
|
1429
|
+
? row.workflowChecked
|
|
1430
|
+
: undefined,
|
|
1431
|
+
rollupWorkflows: row.rollupWorkflows === true,
|
|
1432
|
+
};
|
|
1433
|
+
};
|
|
1434
|
+
exports.getTranscriptWorkflowWorkspaceState = getTranscriptWorkflowWorkspaceState;
|
|
1435
|
+
var setTranscriptWorkflowWorkspaceState = function (conversationKey, workspaceSlug, state) {
|
|
1436
|
+
var slug = workspaceSlug.trim();
|
|
1437
|
+
if (!slug)
|
|
1438
|
+
return;
|
|
1439
|
+
var key = transcriptWorkflowStateStorageKey(conversationKey);
|
|
1440
|
+
var blob = readTranscriptWorkflowStateBlob(conversationKey);
|
|
1441
|
+
if (state == null) {
|
|
1442
|
+
delete blob[slug];
|
|
1443
|
+
}
|
|
1444
|
+
else {
|
|
1445
|
+
var id = typeof state.sessionWorkflowId === 'string' ? state.sessionWorkflowId.trim() : '';
|
|
1446
|
+
blob[slug] = {
|
|
1447
|
+
sessionWorkflowId: id.length > 0 ? id : null,
|
|
1448
|
+
activeWorkflowTitle: typeof state.activeWorkflowTitle === 'string' ? state.activeWorkflowTitle : null,
|
|
1449
|
+
workflowChecked: state.workflowChecked,
|
|
1450
|
+
rollupWorkflows: state.rollupWorkflows === true,
|
|
1451
|
+
};
|
|
1452
|
+
}
|
|
1453
|
+
var hasAny = Object.keys(blob).length > 0;
|
|
1454
|
+
writeMirroredLocal(key, hasAny ? JSON.stringify(blob) : null);
|
|
1455
|
+
};
|
|
1456
|
+
exports.setTranscriptWorkflowWorkspaceState = setTranscriptWorkflowWorkspaceState;
|
|
1457
|
+
/** Cleared when the conversation ends (same scope as last workspace slug). */
|
|
1458
|
+
var clearTranscriptWorkflowPrefs = function (conversationKey) {
|
|
1459
|
+
writeMirroredLocal(transcriptWorkflowStateStorageKey(conversationKey), null);
|
|
1460
|
+
};
|
|
1461
|
+
exports.clearTranscriptWorkflowPrefs = clearTranscriptWorkflowPrefs;
|
|
1462
|
+
|
|
1463
|
+
|
|
1464
|
+
/***/ },
|
|
1465
|
+
|
|
1466
|
+
/***/ 628
|
|
1467
|
+
/*!*****************************!*\
|
|
1468
|
+
!*** ./src/utils/logger.ts ***!
|
|
1469
|
+
\*****************************/
|
|
1470
|
+
(__unused_webpack_module, exports, __webpack_require__) {
|
|
1471
|
+
|
|
1472
|
+
|
|
1473
|
+
var __assign = (this && this.__assign) || function () {
|
|
1474
|
+
__assign = Object.assign || function(t) {
|
|
1475
|
+
for (var s, i = 1, n = arguments.length; i < n; i++) {
|
|
1476
|
+
s = arguments[i];
|
|
1477
|
+
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
|
|
1478
|
+
t[p] = s[p];
|
|
1479
|
+
}
|
|
1480
|
+
return t;
|
|
1481
|
+
};
|
|
1482
|
+
return __assign.apply(this, arguments);
|
|
1483
|
+
};
|
|
1484
|
+
Object.defineProperty(exports, "__esModule", ({ value: true }));
|
|
1485
|
+
exports.LOGGER_UI_COMPONENTS = void 0;
|
|
1486
|
+
/**
|
|
1487
|
+
* Standardized logging utility for GuideAI package
|
|
1488
|
+
* Provides consistent formatting and development gating across all components
|
|
1489
|
+
*/
|
|
1490
|
+
var localStorageHelper_1 = __webpack_require__(/*! ./localStorageHelper */ 640);
|
|
1491
|
+
var LOG_LEVEL = 'log';
|
|
1492
|
+
var LEVELS = ['log', 'info', 'warn', 'error'];
|
|
1493
|
+
function shouldLog(requestedLevel) {
|
|
1494
|
+
var currentIndex = LEVELS.indexOf(LOG_LEVEL);
|
|
1495
|
+
var requestedIndex = LEVELS.indexOf(requestedLevel);
|
|
1496
|
+
return requestedIndex >= currentIndex;
|
|
1497
|
+
}
|
|
1498
|
+
/** Ordered list for debug UI and default flag initialization. */
|
|
1499
|
+
exports.LOGGER_UI_COMPONENTS = [
|
|
1500
|
+
'GuideAI',
|
|
1501
|
+
'API',
|
|
1502
|
+
'TranscriptBox',
|
|
1503
|
+
'Onboarding',
|
|
1504
|
+
'VisualContext',
|
|
1505
|
+
'StaticContext',
|
|
1506
|
+
'MessageStorage',
|
|
1507
|
+
'DataChannel',
|
|
1508
|
+
'ConversationManager',
|
|
1509
|
+
'LocalStorageHelper',
|
|
1510
|
+
'WebRTCConnection',
|
|
1511
|
+
'ToolCall',
|
|
1512
|
+
];
|
|
1513
|
+
var ON_BY_DEFAULT = {
|
|
1514
|
+
DataChannel: true,
|
|
1515
|
+
LocalStorageHelper: true,
|
|
1516
|
+
WebRTCConnection: true,
|
|
1517
|
+
};
|
|
1518
|
+
var logging_enabled = Object.fromEntries(exports.LOGGER_UI_COMPONENTS.map(function (k) { return [k, Boolean(ON_BY_DEFAULT[k])]; }));
|
|
1519
|
+
// Manual override flag for console-based logging control
|
|
1520
|
+
var manualLoggingEnabled = false;
|
|
1521
|
+
var Logger = /** @class */ (function () {
|
|
1522
|
+
function Logger() {
|
|
1523
|
+
}
|
|
1524
|
+
Logger.formatMessage = function (component, action) {
|
|
1525
|
+
return "[GuideAI:".concat(component, "] ").concat(action);
|
|
1526
|
+
};
|
|
1527
|
+
Logger.checkLoggingEnabled = function (component, requestedLevel) {
|
|
1528
|
+
// Check manual override first, then fall back to development mode check
|
|
1529
|
+
var isManuallyEnabled = manualLoggingEnabled && logging_enabled[component] && shouldLog(requestedLevel);
|
|
1530
|
+
var isDevModeEnabled = true &&
|
|
1531
|
+
logging_enabled[component] &&
|
|
1532
|
+
shouldLog(requestedLevel);
|
|
1533
|
+
return isManuallyEnabled || isDevModeEnabled;
|
|
1534
|
+
};
|
|
1535
|
+
/**
|
|
1536
|
+
* Initialize logger and attach to window for console access
|
|
1537
|
+
* Call Logger.init() from browser console to enable logging.
|
|
1538
|
+
* Restores persisted enabled state from localStorage if previously enabled.
|
|
1539
|
+
*/
|
|
1540
|
+
Logger.init = function () {
|
|
1541
|
+
if (typeof window !== 'undefined') {
|
|
1542
|
+
var win = window;
|
|
1543
|
+
if (!win.GuideAI)
|
|
1544
|
+
win.GuideAI = {};
|
|
1545
|
+
win.GuideAI.logger = Logger;
|
|
1546
|
+
if ((0, localStorageHelper_1.getLoggerEnabled)()) {
|
|
1547
|
+
manualLoggingEnabled = true;
|
|
1548
|
+
console.log('[GuideAI Logger] Initialized with logging enabled (restored from previous session).');
|
|
1549
|
+
}
|
|
1550
|
+
else {
|
|
1551
|
+
console.log('[GuideAI Logger] Initialized. Use GuideAI.logger.enable() to start logging.');
|
|
1552
|
+
}
|
|
1553
|
+
}
|
|
1554
|
+
};
|
|
1555
|
+
/**
|
|
1556
|
+
* Enable logging from console, or for a specific component.
|
|
1557
|
+
* Usage: GuideAI.logger.enable() or GuideAI.logger.enable('API')
|
|
1558
|
+
*/
|
|
1559
|
+
Logger.enable = function (component) {
|
|
1560
|
+
if (component !== undefined) {
|
|
1561
|
+
manualLoggingEnabled = true;
|
|
1562
|
+
logging_enabled[component] = true;
|
|
1563
|
+
console.log("[GuideAI Logger] ".concat(component, " logging enabled"));
|
|
1564
|
+
}
|
|
1565
|
+
else {
|
|
1566
|
+
manualLoggingEnabled = true;
|
|
1567
|
+
(0, localStorageHelper_1.setLoggerEnabled)(true);
|
|
1568
|
+
console.log('[GuideAI Logger] Logging enabled');
|
|
1569
|
+
}
|
|
1570
|
+
};
|
|
1571
|
+
/**
|
|
1572
|
+
* Disable logging from console, or for a specific component.
|
|
1573
|
+
* Usage: GuideAI.logger.disable() or GuideAI.logger.disable('API')
|
|
1574
|
+
*/
|
|
1575
|
+
Logger.disable = function (component) {
|
|
1576
|
+
if (component !== undefined) {
|
|
1577
|
+
logging_enabled[component] = false;
|
|
1578
|
+
console.log("[GuideAI Logger] ".concat(component, " logging disabled"));
|
|
1579
|
+
}
|
|
1580
|
+
else {
|
|
1581
|
+
manualLoggingEnabled = false;
|
|
1582
|
+
(0, localStorageHelper_1.setLoggerEnabled)(false);
|
|
1583
|
+
console.log('[GuideAI Logger] Logging disabled');
|
|
1584
|
+
}
|
|
1585
|
+
};
|
|
1586
|
+
/**
|
|
1587
|
+
* Enable or disable logging for a specific component
|
|
1588
|
+
* Usage: GuideAI.logger.setComponentEnabled('API', true)
|
|
1589
|
+
*/
|
|
1590
|
+
Logger.setComponentEnabled = function (component, enabled) {
|
|
1591
|
+
logging_enabled[component] = enabled;
|
|
1592
|
+
console.log("[GuideAI Logger] ".concat(component, " logging ").concat(enabled ? 'enabled' : 'disabled'));
|
|
1593
|
+
};
|
|
1594
|
+
/**
|
|
1595
|
+
* Get current logging status
|
|
1596
|
+
* Usage: GuideAI.logger.getStatus()
|
|
1597
|
+
*/
|
|
1598
|
+
Logger.getStatus = function () {
|
|
1599
|
+
return {
|
|
1600
|
+
manualEnabled: manualLoggingEnabled,
|
|
1601
|
+
components: __assign({}, logging_enabled),
|
|
1602
|
+
};
|
|
1603
|
+
};
|
|
1604
|
+
/**
|
|
1605
|
+
* Disable logging for all components
|
|
1606
|
+
* Usage: GuideAI.logger.disableAllComponents()
|
|
1607
|
+
*/
|
|
1608
|
+
Logger.disableAllComponents = function () {
|
|
1609
|
+
exports.LOGGER_UI_COMPONENTS.forEach(function (component) {
|
|
1610
|
+
logging_enabled[component] = false;
|
|
1611
|
+
});
|
|
1612
|
+
console.log('[GuideAI Logger] All components disabled');
|
|
1613
|
+
};
|
|
1614
|
+
/**
|
|
1615
|
+
* Enable logging for all components
|
|
1616
|
+
* Usage: GuideAI.logger.enableAllComponents()
|
|
1617
|
+
*/
|
|
1618
|
+
Logger.enableAllComponents = function () {
|
|
1619
|
+
exports.LOGGER_UI_COMPONENTS.forEach(function (component) {
|
|
1620
|
+
logging_enabled[component] = true;
|
|
1621
|
+
});
|
|
1622
|
+
console.log('[GuideAI Logger] All components enabled');
|
|
1623
|
+
};
|
|
1624
|
+
/**
|
|
1625
|
+
* Standard info logging - only in development
|
|
1626
|
+
*/
|
|
1627
|
+
Logger.info = function (component, action, data) {
|
|
1628
|
+
if (this.checkLoggingEnabled(component, 'info')) {
|
|
1629
|
+
if (data !== undefined) {
|
|
1630
|
+
console.info(this.formatMessage(component, action), data);
|
|
1631
|
+
}
|
|
1632
|
+
else {
|
|
1633
|
+
console.info(this.formatMessage(component, action));
|
|
1634
|
+
}
|
|
1635
|
+
}
|
|
1636
|
+
};
|
|
1637
|
+
/**
|
|
1638
|
+
* Standard info logging - only in development
|
|
1639
|
+
*/
|
|
1640
|
+
Logger.log = function (component, action, data) {
|
|
1641
|
+
if (this.checkLoggingEnabled(component, 'log')) {
|
|
1642
|
+
if (data !== undefined) {
|
|
1643
|
+
console.log(this.formatMessage(component, action), data);
|
|
1644
|
+
}
|
|
1645
|
+
else {
|
|
1646
|
+
console.log(this.formatMessage(component, action));
|
|
1647
|
+
}
|
|
1648
|
+
}
|
|
1649
|
+
};
|
|
1650
|
+
/**
|
|
1651
|
+
* Warning logging - always shown
|
|
1652
|
+
*/
|
|
1653
|
+
Logger.warn = function (component, action, data) {
|
|
1654
|
+
if (this.checkLoggingEnabled(component, 'warn')) {
|
|
1655
|
+
if (data !== undefined) {
|
|
1656
|
+
console.warn(this.formatMessage(component, action), data);
|
|
1657
|
+
}
|
|
1658
|
+
else {
|
|
1659
|
+
console.warn(this.formatMessage(component, action));
|
|
1660
|
+
}
|
|
1661
|
+
}
|
|
1662
|
+
};
|
|
1663
|
+
/**
|
|
1664
|
+
* Error logging - always shown
|
|
1665
|
+
*/
|
|
1666
|
+
Logger.error = function (component, action, error) {
|
|
1667
|
+
if (this.checkLoggingEnabled(component, 'error')) {
|
|
1668
|
+
if (error !== undefined) {
|
|
1669
|
+
console.error(this.formatMessage(component, action), error);
|
|
1670
|
+
}
|
|
1671
|
+
else {
|
|
1672
|
+
console.error(this.formatMessage(component, action));
|
|
1673
|
+
}
|
|
1674
|
+
}
|
|
1675
|
+
};
|
|
1676
|
+
/**
|
|
1677
|
+
* API call logging with method and endpoint
|
|
1678
|
+
*/
|
|
1679
|
+
Logger.apiCall = function (method, endpoint, data) {
|
|
1680
|
+
if (this.checkLoggingEnabled('API', 'log')) {
|
|
1681
|
+
var action = "".concat(method, " ").concat(endpoint);
|
|
1682
|
+
if (data !== undefined) {
|
|
1683
|
+
console.log(this.formatMessage('API', action), data);
|
|
1684
|
+
}
|
|
1685
|
+
else {
|
|
1686
|
+
console.log(this.formatMessage('API', action));
|
|
1687
|
+
}
|
|
1688
|
+
}
|
|
1689
|
+
};
|
|
1690
|
+
/**
|
|
1691
|
+
* API response logging
|
|
1692
|
+
*/
|
|
1693
|
+
Logger.apiResponse = function (method, endpoint, success, data) {
|
|
1694
|
+
if (this.checkLoggingEnabled('API', 'log')) {
|
|
1695
|
+
var status_1 = success ? '✅ SUCCESS' : '❌ FAILED';
|
|
1696
|
+
var action = "".concat(method, " ").concat(endpoint, " ").concat(status_1);
|
|
1697
|
+
if (data !== undefined) {
|
|
1698
|
+
console.log(this.formatMessage('API', action), data);
|
|
1699
|
+
}
|
|
1700
|
+
else {
|
|
1701
|
+
console.log(this.formatMessage('API', action));
|
|
1702
|
+
}
|
|
1703
|
+
}
|
|
1704
|
+
};
|
|
1705
|
+
/**
|
|
1706
|
+
* Conversation flow tracking
|
|
1707
|
+
*/
|
|
1708
|
+
Logger.conversation = function (action, data) {
|
|
1709
|
+
if (this.checkLoggingEnabled('GuideAI', 'log')) {
|
|
1710
|
+
if (data !== undefined) {
|
|
1711
|
+
console.log(this.formatMessage('GuideAI', action), data);
|
|
1712
|
+
}
|
|
1713
|
+
else {
|
|
1714
|
+
console.log(this.formatMessage('GuideAI', action));
|
|
1715
|
+
}
|
|
1716
|
+
}
|
|
1717
|
+
};
|
|
1718
|
+
return Logger;
|
|
1719
|
+
}());
|
|
1720
|
+
exports["default"] = Logger;
|
|
1721
|
+
|
|
1722
|
+
|
|
1723
|
+
/***/ }
|
|
1724
|
+
|
|
1725
|
+
/******/ });
|
|
1726
|
+
/************************************************************************/
|
|
1727
|
+
/******/ // The module cache
|
|
1728
|
+
/******/ var __webpack_module_cache__ = {};
|
|
1729
|
+
/******/
|
|
1730
|
+
/******/ // The require function
|
|
1731
|
+
/******/ function __webpack_require__(moduleId) {
|
|
1732
|
+
/******/ // Check if module is in cache
|
|
1733
|
+
/******/ var cachedModule = __webpack_module_cache__[moduleId];
|
|
1734
|
+
/******/ if (cachedModule !== undefined) {
|
|
1735
|
+
/******/ return cachedModule.exports;
|
|
1736
|
+
/******/ }
|
|
1737
|
+
/******/ // Create a new module (and put it into the cache)
|
|
1738
|
+
/******/ var module = __webpack_module_cache__[moduleId] = {
|
|
1739
|
+
/******/ // no module.id needed
|
|
1740
|
+
/******/ // no module.loaded needed
|
|
1741
|
+
/******/ exports: {}
|
|
1742
|
+
/******/ };
|
|
1743
|
+
/******/
|
|
1744
|
+
/******/ // Execute the module function
|
|
1745
|
+
/******/ if (!(moduleId in __webpack_modules__)) {
|
|
1746
|
+
/******/ delete __webpack_module_cache__[moduleId];
|
|
1747
|
+
/******/ var e = new Error("Cannot find module '" + moduleId + "'");
|
|
1748
|
+
/******/ e.code = 'MODULE_NOT_FOUND';
|
|
1749
|
+
/******/ throw e;
|
|
1750
|
+
/******/ }
|
|
1751
|
+
/******/ __webpack_modules__[moduleId].call(module.exports, module, module.exports, __webpack_require__);
|
|
1752
|
+
/******/
|
|
1753
|
+
/******/ // Return the exports of the module
|
|
1754
|
+
/******/ return module.exports;
|
|
1755
|
+
/******/ }
|
|
1756
|
+
/******/
|
|
1757
|
+
/************************************************************************/
|
|
1758
|
+
/******/
|
|
1759
|
+
/******/ // startup
|
|
1760
|
+
/******/ // Load entry module and return exports
|
|
1761
|
+
/******/ // This entry module is referenced by other modules so it can't be inlined
|
|
1762
|
+
/******/ var __webpack_exports__ = __webpack_require__(737);
|
|
1763
|
+
/******/
|
|
1764
|
+
/******/ })()
|
|
1765
|
+
;
|
|
1766
|
+
//# sourceMappingURL=playwrightBuddyHarness.js.map
|