guideai-app 0.5.4-2 → 0.5.4-3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (148) hide show
  1. package/README.md +64 -1
  2. package/dist/GuideAI.d.ts +2 -5
  3. package/dist/GuideAI.js +1 -1
  4. package/dist/GuideAI.js.LICENSE.txt +2 -17
  5. package/dist/components/DeveloperTools.d.ts +5 -3
  6. package/dist/components/Microphone.d.ts +10 -1
  7. package/dist/components/PlaybackLockDebugOverlayRoot.d.ts +1 -1
  8. package/dist/components/SessionRatingPopup.d.ts +16 -0
  9. package/dist/components/SubtitleInputBar.d.ts +23 -0
  10. package/dist/components/SubtitleSettingsMenu.d.ts +9 -0
  11. package/dist/components/TranscriptBox.d.ts +11 -12
  12. package/dist/components/TranscriptSessionMicLevels.d.ts +8 -0
  13. package/dist/components/TranscriptStudioChrome.d.ts +8 -7
  14. package/dist/components/TranscriptTextInput.d.ts +4 -12
  15. package/dist/components/TranscriptToolbar.d.ts +3 -1
  16. package/dist/components/TranscriptWorkflowDrawer.d.ts +5 -7
  17. package/dist/contexts/GuideAIThemeContext.d.ts +13 -0
  18. package/dist/devtools/DeveloperToolsShell.d.ts +1 -1
  19. package/dist/devtools/TranscriptDeveloperToolsMenuItems.d.ts +45 -0
  20. package/dist/devtools/TranscriptUiDevtoolsPanel.d.ts +10 -0
  21. package/dist/devtools/adminToolDiagnostics/AdminToolDiagnosticsPanel.d.ts +1 -1
  22. package/dist/devtools/developerToolPanelId.d.ts +1 -1
  23. package/dist/devtools/devtoolsAdminPortalLinks.d.ts +11 -0
  24. package/dist/devtools/devtoolsAuth/DevtoolsAuthContext.d.ts +14 -0
  25. package/dist/devtools/devtoolsAuth/DevtoolsLoginModal.d.ts +13 -0
  26. package/dist/devtools/devtoolsAuth/devtoolsAccessTrigger.d.ts +9 -0
  27. package/dist/devtools/devtoolsAuth/devtoolsAdminApi.d.ts +13 -0
  28. package/dist/devtools/devtoolsAuth/devtoolsLoginModalStyles.d.ts +1 -0
  29. package/dist/devtools/devtoolsAuth/devtoolsPortalLogin.d.ts +15 -0
  30. package/dist/devtools/devtoolsAuth/devtoolsSessionStorage.d.ts +4 -0
  31. package/dist/devtools/devtoolsAuth/index.d.ts +9 -0
  32. package/dist/devtools/devtoolsAuth/types.d.ts +21 -0
  33. package/dist/devtools/devtoolsAuth/useDevtoolsAccess.d.ts +33 -0
  34. package/dist/devtools/devtoolsThemePreference.d.ts +3 -0
  35. package/dist/devtools/excavator/ExcavatorPanel.d.ts +17 -0
  36. package/dist/devtools/excavator/excavatorPanelStyles.d.ts +5 -0
  37. package/dist/devtools/excavator/excavatorSse.d.ts +6 -0
  38. package/dist/devtools/learn/LearnCaptureChrome.stub.d.ts +3 -0
  39. package/dist/devtools/learn/LearnModePanel.d.ts +18 -0
  40. package/dist/devtools/learn/LearnModePanel.stub.d.ts +3 -0
  41. package/dist/devtools/learn/LearnOrchestrationHost.d.ts +52 -0
  42. package/dist/devtools/learn/injectLearnModeStyles.d.ts +2 -0
  43. package/dist/devtools/learn/learnCaptureChrome.d.ts +33 -0
  44. package/dist/devtools/learn/learnCaptureLayout.d.ts +26 -0
  45. package/dist/devtools/learn/learnCaptureToolbar.d.ts +27 -0
  46. package/dist/devtools/learn/learnClarifyKickoff.d.ts +6 -0
  47. package/dist/devtools/learn/learnLiteTranscript.d.ts +22 -0
  48. package/dist/devtools/learn/learnModeStyles.d.ts +5 -0
  49. package/dist/devtools/learn/learnModeTypes.d.ts +5 -0
  50. package/dist/devtools/learn/learnOrchestrationStub.d.ts +5 -0
  51. package/dist/devtools/learn/learnPanelSyncFieldsEqual.d.ts +3 -0
  52. package/dist/devtools/learn/learnRealtimeSession.d.ts +10 -0
  53. package/dist/devtools/learn/learnRefBag.d.ts +41 -0
  54. package/dist/devtools/learn/learnSessionStorage.d.ts +23 -0
  55. package/dist/devtools/learn/learnWorkspaceContext.d.ts +5 -0
  56. package/dist/devtools/learn/loadLearnOrchestration.d.ts +10 -0
  57. package/dist/devtools/learn/useLearnCaptureDuration.d.ts +4 -0
  58. package/dist/devtools/learn/useLearnClickCapture.d.ts +9 -0
  59. package/dist/devtools/learn/useLearnMode.d.ts +47 -0
  60. package/dist/devtools/learn/useLearnMode.stub.d.ts +3 -0
  61. package/dist/devtools/panelLayout.d.ts +6 -0
  62. package/dist/devtools/transcriptDevtoolsMenuProps.d.ts +28 -0
  63. package/dist/devtools/transcriptMoreMenu/DeveloperToolsAdminPortalFlyout.d.ts +20 -0
  64. package/dist/devtools/transcriptMoreMenu/DeveloperToolsLoggerFlyout.d.ts +16 -0
  65. package/dist/devtools/transcriptMoreMenu/DeveloperToolsMicPresetFlyout.d.ts +22 -0
  66. package/dist/devtools/transcriptMoreMenu/TranscriptDeveloperToolsMenuItems.d.ts +21 -0
  67. package/dist/devtools/transcriptMoreMenu/TranscriptDeveloperToolsThemeFlyout.d.ts +13 -0
  68. package/dist/devtools/transcriptMoreMenu/TranscriptMoreMenuDevtools.d.ts +27 -0
  69. package/dist/devtools/transcriptMoreMenu/devtoolsFlyoutTypes.d.ts +1 -0
  70. package/dist/devtools/transcriptMoreMenu/index.d.ts +2 -0
  71. package/dist/devtools/transcriptMoreMenu/readWindowGuideAILogger.d.ts +12 -0
  72. package/dist/devtools/transcriptMoreMenu/useTranscriptMoreMenuDebugFlyouts.d.ts +24 -0
  73. package/dist/devtools/useDraggableDialog.d.ts +8 -1
  74. package/dist/devtools/useGuideDeveloperTools.d.ts +16 -7
  75. package/dist/devtools/useGuideDevtoolsIntegration.d.ts +51 -0
  76. package/dist/devtools/workflowTester/WorkflowTesterPanel.d.ts +4 -28
  77. package/dist/devtools/workflowTester/WorkflowTesterPanel.stub.d.ts +3 -0
  78. package/dist/devtools/workflowTester/index.d.ts +1 -2
  79. package/dist/devtools/workflowTester/useWorkflowSimulationController.d.ts +12 -0
  80. package/dist/devtools/workflowTester/useWorkflowSimulationRun.d.ts +47 -0
  81. package/dist/devtools/workflowTester/workflowSimulationController.d.ts +31 -0
  82. package/dist/devtools/workflowTester/workflowSimulationDevtoolsApi.d.ts +51 -0
  83. package/dist/devtools/workflowTester/workflowSimulationRunner.d.ts +46 -0
  84. package/dist/devtools/workflowTester/workflowSimulationRunnerAi.d.ts +20 -0
  85. package/dist/devtools/workflowTester/workflowSimulationSessionRestore.d.ts +21 -0
  86. package/dist/devtools/workflowTester/workflowSimulationTurnState.d.ts +20 -0
  87. package/dist/devtools/workflowTester/workflowSimulationTypes.d.ts +26 -0
  88. package/dist/devtools/workflowTester/workflowSimulationWaits.d.ts +55 -0
  89. package/dist/devtools/workflowTester/workflowTesterPanel.types.d.ts +25 -0
  90. package/dist/devtools/workflowTester/workflowTesterRunSessionStorage.d.ts +43 -0
  91. package/dist/devtools/workflowTester/workflowTesterWorkspaceBridge.d.ts +4 -2
  92. package/dist/hooks/useConversationSession.d.ts +14 -2
  93. package/dist/hooks/useGuideAIMutePipeline.d.ts +1 -0
  94. package/dist/hooks/useGuideAIThemeState.d.ts +6 -0
  95. package/dist/hooks/useMicMute.d.ts +1 -0
  96. package/dist/hooks/useSessionRating.d.ts +25 -0
  97. package/dist/hooks/useSubtitleAppearancePrefs.d.ts +5 -0
  98. package/dist/hooks/useThemePortalProps.d.ts +4 -0
  99. package/dist/hooks/useTranscriptChrome.d.ts +7 -2
  100. package/dist/hooks/useTranscriptDisplayMode.d.ts +6 -0
  101. package/dist/hooks/useTranscriptPanelDragResize.d.ts +47 -0
  102. package/dist/hooks/useWebRTC.d.ts +3 -0
  103. package/dist/hooks/useWidgetWorkflowSession.d.ts +2 -0
  104. package/dist/hooks/useWorkflowTesterOverlay.d.ts +7 -0
  105. package/dist/hooks/useWorkspaceCatalog.d.ts +1 -0
  106. package/dist/index.d.ts +4 -1
  107. package/dist/playwrightSimulationHarness.d.ts +16 -0
  108. package/dist/playwrightSimulationHarness.js +1 -0
  109. package/dist/playwrightToolHarness.js +1 -1
  110. package/dist/sessionRating.defaults.d.ts +4 -0
  111. package/dist/sessionRatingPrompts.d.ts +3 -0
  112. package/dist/staticContext/useStaticContext.d.ts +0 -1
  113. package/dist/stubs/workspaces.d.ts +2 -2
  114. package/dist/styles/guideAIThemeTokens.d.ts +5 -0
  115. package/dist/styles/guideaiTestsiteWidgetTheme.d.ts +6 -0
  116. package/dist/themes/buildThemeCss.d.ts +8 -0
  117. package/dist/themes/guideAIThemeIds.d.ts +5 -0
  118. package/dist/themes/presetThemes.d.ts +10 -0
  119. package/dist/themes/syncGuideAITheme.d.ts +2 -0
  120. package/dist/themes/themeTokens.types.d.ts +37 -0
  121. package/dist/types/GuideAI.types.d.ts +22 -3
  122. package/dist/utils/api.d.ts +3 -0
  123. package/dist/utils/api.learn.d.ts +18 -0
  124. package/dist/utils/conversationContextSwitch.d.ts +41 -0
  125. package/dist/utils/conversationManager.d.ts +41 -0
  126. package/dist/utils/dataChannel.d.ts +8 -0
  127. package/dist/utils/dataChannelHelpers.d.ts +10 -0
  128. package/dist/utils/guideaiMirroredStorageKeys.d.ts +33 -0
  129. package/dist/utils/lastSystemToolCall.d.ts +2 -1
  130. package/dist/utils/localStorageHelper.d.ts +46 -21
  131. package/dist/utils/messageStorage.d.ts +0 -7
  132. package/dist/utils/parseWorkspaceSlugList.d.ts +12 -0
  133. package/dist/utils/pathIncludesAnyRef.d.ts +12 -0
  134. package/dist/utils/sessionRatingThrottle.d.ts +3 -0
  135. package/dist/utils/themeRegistry.d.ts +14 -0
  136. package/dist/utils/tools/descriptionToHighlightSelector.d.ts +1 -1
  137. package/dist/utils/tools/docToForm.d.ts +2 -2
  138. package/dist/utils/tools/elementToBestInteractionSelector.d.ts +10 -0
  139. package/dist/utils/transcriptDisplayModePref.d.ts +4 -0
  140. package/dist/utils/transcriptFloatGeometry.d.ts +78 -0
  141. package/dist/utils/transcriptSubtitleUiPref.d.ts +5 -0
  142. package/dist/utils/webrtcConnection.d.ts +5 -0
  143. package/dist/utils/widgetBearerStorage.d.ts +2 -2
  144. package/dist/utils/workspaceCatalog.d.ts +13 -2
  145. package/dist/utils/workspaceCatalogFatal.d.ts +4 -0
  146. package/dist/visualContext/defaultProvider.d.ts +4 -10
  147. package/dist/visualContext/visualContextCaptureLock.d.ts +17 -0
  148. package/package.json +2 -2
@@ -1,24 +1,9 @@
1
1
  /*!
2
- * html2canvas 1.4.1 <https://html2canvas.hertzen.com>
3
- * Copyright (c) 2022 Niklas von Hertzen <https://hertzen.com>
2
+ * html2canvas-pro 2.0.4 <https://yorickshan.github.io/html2canvas-pro/>
3
+ * Copyright (c) 2024-present yorickshan and html2canvas-pro contributors
4
4
  * Released under MIT License
5
5
  */
6
6
 
7
- /*! *****************************************************************************
8
- Copyright (c) Microsoft Corporation.
9
-
10
- Permission to use, copy, modify, and/or distribute this software for any
11
- purpose with or without fee is hereby granted.
12
-
13
- THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH
14
- REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
15
- AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,
16
- INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
17
- LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR
18
- OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
19
- PERFORMANCE OF THIS SOFTWARE.
20
- ***************************************************************************** */
21
-
22
7
  /**
23
8
  * @license lucide-react v0.469.0 - ISC
24
9
  *
@@ -3,7 +3,8 @@ import { type DataChannelManager } from '../utils/dataChannel';
3
3
  import { type VisualContextInspectorProps } from '../devtools/visualContextInspector';
4
4
  import { type PlaybackLockDebugOverlayRootProps } from './PlaybackLockDebugOverlayRoot';
5
5
  import AudioConfigDialog from './AudioConfigDialog';
6
- import { type WorkflowTesterPanelProps } from '../devtools/workflowTester';
6
+ import type { WorkflowTesterPanelProps } from '../devtools/workflowTester';
7
+ import type { LearnModePanelProps } from '../devtools/learn/LearnModePanel';
7
8
  import type { DeveloperToolPanelId } from '../devtools/developerToolPanelId';
8
9
  type AudioConfigForDeveloperTools = Omit<React.ComponentProps<typeof AudioConfigDialog>, 'React' | 'ReactDOM'>;
9
10
  type VisualContextForDeveloperTools = {
@@ -13,7 +14,7 @@ type ToolDiagnosticsForDeveloperTools = {
13
14
  /** @see DataChannelManager — not the WebRTC `RTCDataChannel` from `DataChannelManager#getDataChannel()`. */
14
15
  getDataChannelManager: () => DataChannelManager | null;
15
16
  propToolNames: string[];
16
- debugMoreMenu: boolean;
17
+ developerToolsSectionVisible: boolean;
17
18
  };
18
19
  export type DeveloperToolsShellState = {
19
20
  zIndex: number;
@@ -33,11 +34,12 @@ type DeveloperToolsProps = {
33
34
  audioConfig: AudioConfigForDeveloperTools;
34
35
  visualContext: VisualContextForDeveloperTools;
35
36
  workflowTester: WorkflowTesterPanelProps;
37
+ learn: LearnModePanelProps;
36
38
  shell: DeveloperToolsShellState | null;
37
39
  };
38
40
  /**
39
41
  * Debug / developer-only UI in a **single** draggable shell (icon rail + title select).
40
42
  * Opened from the transcript ⋯ “more” menu. Mount as a sibling to mic + transcript.
41
43
  */
42
- export declare function DeveloperTools({ React: R, ReactDOM, toolDiagnostics: { getDataChannelManager, propToolNames, debugMoreMenu }, playbackLock, audioConfig, visualContext, workflowTester, shell, }: DeveloperToolsProps): React.JSX.Element | null;
44
+ export declare function DeveloperTools({ React: R, ReactDOM, toolDiagnostics: { getDataChannelManager, propToolNames, developerToolsSectionVisible }, playbackLock, audioConfig, visualContext, workflowTester, learn, shell, }: DeveloperToolsProps): React.JSX.Element | null;
43
45
  export {};
@@ -6,6 +6,15 @@ interface MicrophoneProps {
6
6
  showOnboarding: boolean;
7
7
  handleOnboardingComplete: () => void;
8
8
  handleOnboardingClose: () => void;
9
+ sessionRatingVisible: boolean;
10
+ sessionRatingClosing: boolean;
11
+ sessionRatingTitle: string;
12
+ sessionRatingComment: string;
13
+ sessionRatingShowCommentField: boolean;
14
+ onSessionRatingCommentChange: (value: string) => void;
15
+ onSessionRatingTellUsMore: () => void;
16
+ onSessionRating: (stars: number) => void;
17
+ onSessionRatingDismiss: () => void;
9
18
  isConnecting: boolean;
10
19
  connectionMessage?: string | null;
11
20
  status: RecordingStatus;
@@ -17,5 +26,5 @@ interface MicrophoneProps {
17
26
  hasInteracted: boolean;
18
27
  React: typeof import('react');
19
28
  }
20
- declare const Microphone: ({ componentRef, baseStyles, popupPosition, showOnboarding, handleOnboardingComplete, handleOnboardingClose, isConnecting, connectionMessage, status, handleToggleConversation, showTranscript, hasMic, isMuted, hasInteracted, React, }: MicrophoneProps) => import("react").JSX.Element;
29
+ declare const Microphone: ({ componentRef, baseStyles, popupPosition, showOnboarding, handleOnboardingComplete, handleOnboardingClose, sessionRatingVisible, sessionRatingClosing, sessionRatingTitle, sessionRatingComment, sessionRatingShowCommentField, onSessionRatingCommentChange, onSessionRatingTellUsMore, onSessionRating, onSessionRatingDismiss, isConnecting, connectionMessage, status, handleToggleConversation, showTranscript, hasMic, isMuted, hasInteracted, React, }: MicrophoneProps) => import("react").JSX.Element;
21
30
  export default Microphone;
@@ -11,5 +11,5 @@ export interface PlaybackLockDebugOverlayRootProps {
11
11
  playbackInterruptDebug: boolean;
12
12
  embedded?: boolean;
13
13
  }
14
- /** Wires `useProtectedPlayback` + `usePlaybackLockDebugOverlay` into `PlaybackInterruptLockDebugOverlay`. */
14
+ /** Renders `PlaybackInterruptLockDebugOverlay` from shell-provided playback lock / VAD state. */
15
15
  export declare function PlaybackLockDebugOverlayRoot({ zIndex, visible, onClose, micPreset, protectedPlaybackActive, overlayConfig, playbackInterruptDebug, embedded, }: PlaybackLockDebugOverlayRootProps): React.JSX.Element | null;
@@ -0,0 +1,16 @@
1
+ import type { PopupPosition } from '../types/GuideAI.types';
2
+ export type SessionRatingPopupProps = {
3
+ position: PopupPosition;
4
+ isVisible: boolean;
5
+ isClosing: boolean;
6
+ title: string;
7
+ comment: string;
8
+ showCommentField: boolean;
9
+ onCommentChange: (value: string) => void;
10
+ onTellUsMoreClick: () => void;
11
+ onRate: (stars: number) => void;
12
+ onDismiss: () => void;
13
+ React: typeof import('react');
14
+ };
15
+ declare const SessionRatingPopup: ({ position, isVisible, isClosing, title, comment, showCommentField, onCommentChange, onTellUsMoreClick, onRate, onDismiss, React, }: SessionRatingPopupProps) => import("react").JSX.Element | null;
16
+ export default SessionRatingPopup;
@@ -0,0 +1,23 @@
1
+ import type { RecordingStatus } from '../types/GuideAI.types';
2
+ import type { TranscriptDevtoolsMenuProps } from '../devtools/transcriptDevtoolsMenuProps';
3
+ export type SubtitleInputBarProps = {
4
+ textInput?: string;
5
+ setTextInput?: (value: string) => void;
6
+ handleTextSubmit?: () => void;
7
+ handleTextKeyPress?: (event: React.KeyboardEvent<HTMLTextAreaElement>) => void;
8
+ textPlaceholder?: string;
9
+ connectionMessage?: string | null;
10
+ isDataChannelOpen?: boolean;
11
+ isResponseActive?: boolean;
12
+ isConversationActive?: boolean;
13
+ onToggleConversation?: () => void;
14
+ recordingStatus?: RecordingStatus;
15
+ isConnecting?: boolean;
16
+ hasMic?: boolean;
17
+ isMuted?: boolean;
18
+ handleToggleMute?: () => void;
19
+ transcriptDevtools?: TranscriptDevtoolsMenuProps;
20
+ React: typeof import('react');
21
+ };
22
+ /** Compact bottom bar for subtitle mode: mic/session, text input, send, settings. */
23
+ export declare function SubtitleInputBar({ textInput, setTextInput, handleTextSubmit, handleTextKeyPress, textPlaceholder, connectionMessage, isDataChannelOpen, isResponseActive, isConversationActive, onToggleConversation, recordingStatus, isConnecting, hasMic, isMuted, handleToggleMute, transcriptDevtools, React, }: SubtitleInputBarProps): import("react").JSX.Element;
@@ -0,0 +1,9 @@
1
+ import type { TranscriptDevtoolsMenuProps } from '../devtools/transcriptDevtoolsMenuProps';
2
+ export type SubtitleSettingsMenuProps = {
3
+ transcriptDevtools?: TranscriptDevtoolsMenuProps;
4
+ /** `bar` = inline on subtitle input bar; `floating` = fixed bottom-right. */
5
+ variant?: 'bar' | 'floating';
6
+ React: typeof import('react');
7
+ };
8
+ /** Settings control for subtitle mode (developer tools + transcript UI). */
9
+ export declare function SubtitleSettingsMenu({ transcriptDevtools, variant, React, }: SubtitleSettingsMenuProps): import("react").JSX.Element;
@@ -1,7 +1,7 @@
1
1
  import { StoredMessage } from '../utils/messageStorage';
2
2
  import { TranscriptPanelMode, TranscriptPosition, MicButtonPosition, TranscriptSessionMode, RecordingStatus } from '../types/GuideAI.types';
3
3
  import { type StubWorkflowItem, type StubWorkspaceOption } from '../stubs/workspaces';
4
- import type { WorkspaceDataSource } from '../utils/localStorageHelper';
4
+ import type { TranscriptDevtoolsMenuProps } from '../devtools/transcriptDevtoolsMenuProps';
5
5
  import type { MicPresetId } from '../types/audioConfig.types';
6
6
  interface TranscriptBoxProps {
7
7
  allMessages: StoredMessage[];
@@ -34,14 +34,9 @@ interface TranscriptBoxProps {
34
34
  handleResetChat?: () => void;
35
35
  isDataChannelOpen?: boolean;
36
36
  isResponseActive?: boolean;
37
- /** Console: GuideAI.debug.showMoreMenu() extra menu rows for developers. */
38
- debugMoreMenuEnabled?: boolean;
39
- /** Transcript Debug: show/hide unified developer tools. */
40
- developerToolsMenu?: {
41
- shellOpen: boolean;
42
- onToggleShell: () => void;
43
- } | null;
44
- /** Current mic preset (Precise / Noisy); shown in ⋯ flyout when debug menu is on. */
37
+ /** Transcript developer tools menu + embed unlock (toolbar title triple-click). */
38
+ transcriptDevtools?: TranscriptDevtoolsMenuProps;
39
+ /** Current mic preset (Precise / Noisy); shown in ⋯ when developer tools menu is on. */
45
40
  micPreset?: MicPresetId;
46
41
  /** Apply preset from transcript menu: persist, reset stored audio to preset base, live session.update. */
47
42
  onApplyMicPreset?: (preset: MicPresetId) => void;
@@ -55,18 +50,22 @@ interface TranscriptBoxProps {
55
50
  */
56
51
  transcriptPanelMode?: TranscriptPanelMode;
57
52
  onToggleTranscriptPanelMode?: () => void;
53
+ /** Switch float panel to docked (e.g. drag past the right viewport edge). */
54
+ onDockTranscriptPanel?: () => void;
55
+ /** Switch docked panel to float (e.g. drag away from the right edge). */
56
+ onUndockTranscriptPanel?: () => void;
58
57
  transcriptSessionMode?: TranscriptSessionMode;
59
58
  onTranscriptSessionModeChange?: (mode: TranscriptSessionMode) => void;
60
59
  /** Stub list until API-driven; computed once in GuideAI. */
61
60
  workspaceOptions: StubWorkspaceOption[];
62
- /** Debug ⋯: stub vs API workspace data (toggle writes localStorage). */
63
- workspaceDataSource: WorkspaceDataSource;
64
- /** Workflow steps for the current workspace; from stubs or future API. */
61
+ /** Workflow steps for the current workspace from the API catalog. */
65
62
  workspaceWorkflows: StubWorkflowItem[];
66
63
  workflowDrawerOpen?: boolean;
67
64
  onWorkflowDrawerOpenChange: (open: boolean) => void;
68
65
  /** Access-key realtime: notify parent of DB workflow id for next initialize (workspace prompt + this step). Label used for rollup silent steer. */
69
66
  onSessionWorkflowForRealtimeInit?: (workflowId: string | null, workflowLabel?: string) => void;
67
+ /** Namespace for sticky workflow prefs (`guideAI_transcriptWorkflowState`). */
68
+ conversationKey?: string;
70
69
  /** Docked drawer width (px); persisted by parent when `onDrawerWidthChange` is used. */
71
70
  drawerWidthPx?: number;
72
71
  onDrawerWidthChange?: (widthPx: number) => void;
@@ -0,0 +1,8 @@
1
+ import React from 'react';
2
+ export type TranscriptSessionMicLevelsMode = 'standby' | 'live' | 'voice';
3
+ /** Bars around a centerline; inactive modes use index-staggered ripples, voice uses center-out swell delays. */
4
+ export declare function TranscriptSessionMicLevels({ mode }: {
5
+ mode: TranscriptSessionMicLevelsMode;
6
+ }): React.JSX.Element;
7
+ export declare function shouldUseSessionMicLevels(status: import('../types/GuideAI.types').RecordingStatus, isConnecting: boolean, isMuted: boolean, hasMic: boolean): boolean;
8
+ export declare function sessionMicLevelsMode(status: import('../types/GuideAI.types').RecordingStatus): TranscriptSessionMicLevelsMode;
@@ -1,10 +1,14 @@
1
+ import * as React from 'react';
1
2
  import type { TranscriptPanelMode, TranscriptSessionMode } from '../types/GuideAI.types';
2
3
  import type { StubWorkspaceOption } from '../stubs/workspaces';
3
4
  export interface TranscriptStudioChromeProps {
4
- /** First segment of the breadcrumb (workspace display name for the host). */
5
+ /** Current workspace label from catalog (shown when workspace picker is not a menu). */
5
6
  workspaceBreadcrumbLabel: string;
6
- /** Second segment: workflow name shown beside the workspace. */
7
+ /** Active workflow step title (breadcrumb; opens workflow drawer). */
7
8
  workflowStepLabel: string;
9
+ workspaceOptions: StubWorkspaceOption[];
10
+ transcriptSessionMode: TranscriptSessionMode;
11
+ onWorkspaceChange: (mode: TranscriptSessionMode) => void;
8
12
  progressCurrent: number;
9
13
  progressTotal: number;
10
14
  /** 0-based index of the highlighted workflow step (drives segment styling). */
@@ -15,17 +19,14 @@ export interface TranscriptStudioChromeProps {
15
19
  transcriptPanelMode: TranscriptPanelMode;
16
20
  onToggleTranscriptPanelMode: () => void;
17
21
  onEndSession: () => void;
18
- workspaceOptions: StubWorkspaceOption[];
19
- transcriptSessionMode: TranscriptSessionMode;
20
- onWorkspaceChange: (mode: TranscriptSessionMode) => void;
21
22
  React: typeof import('react');
22
- /** Host `ReactDOM.createPortal` — enables portaled workspace menu above clipped chrome. */
23
+ /** Host `ReactDOM.createPortal` — menus port above the clipped float toolbar. */
23
24
  ReactDOM?: {
24
25
  createPortal: (children: import('react').ReactNode, container: Element) => import('react').ReactNode;
25
26
  };
26
27
  }
27
28
  declare const TranscriptStudioChrome: {
28
- ({ workspaceBreadcrumbLabel, workflowStepLabel, progressCurrent, progressTotal, activeStepIndex, allWorkflowStepsComplete, workflowDrawerOpen, onToggleWorkflowDrawer, transcriptPanelMode, onToggleTranscriptPanelMode, onEndSession, workspaceOptions, transcriptSessionMode, onWorkspaceChange, React, ReactDOM, }: TranscriptStudioChromeProps): import("react").JSX.Element;
29
+ ({ workspaceBreadcrumbLabel, workflowStepLabel, workspaceOptions, transcriptSessionMode, onWorkspaceChange, progressCurrent, progressTotal, activeStepIndex, allWorkflowStepsComplete, workflowDrawerOpen, onToggleWorkflowDrawer, transcriptPanelMode, onToggleTranscriptPanelMode, onEndSession, React, ReactDOM, }: TranscriptStudioChromeProps): React.JSX.Element;
29
30
  displayName: string;
30
31
  };
31
32
  export default TranscriptStudioChrome;
@@ -1,7 +1,6 @@
1
- import React from 'react';
2
1
  import type { RecordingStatus, TranscriptPanelMode, TranscriptSessionMode } from '../types/GuideAI.types';
3
2
  import type { StubWorkspaceOption } from '../stubs/workspaces';
4
- import { type WorkspaceDataSource } from '../utils/localStorageHelper';
3
+ import type { TranscriptDevtoolsMenuProps } from '../devtools/transcriptDevtoolsMenuProps';
5
4
  import type { MicPresetId } from '../types/audioConfig.types';
6
5
  interface TranscriptTextInputProps {
7
6
  textInput?: string;
@@ -23,20 +22,13 @@ interface TranscriptTextInputProps {
23
22
  isAssistantPlaybackMuted?: boolean;
24
23
  onToggleAssistantPlaybackMute?: () => void;
25
24
  handleResetChat?: () => void;
26
- /** GuideAI.debug.showMoreMenu() in console */
27
- debugMoreMenuEnabled?: boolean;
28
- /** Transcript ⋯ → Debug: unified developer tools */
29
- developerToolsMenu?: {
30
- shellOpen: boolean;
31
- onToggleShell: () => void;
32
- } | null;
25
+ /** Transcript ⋯ developer tools menu (admin / developer access). */
26
+ transcriptDevtools?: TranscriptDevtoolsMenuProps;
33
27
  /** User mic preset shown in ⋯ menu. */
34
28
  micPreset?: MicPresetId;
35
29
  /** Apply mic preset (persists + updates session config). */
36
30
  onApplyMicPreset?: (preset: MicPresetId) => void;
37
31
  workspaceOptions: StubWorkspaceOption[];
38
- /** Debug ⋯: stub vs API workspace source (toggle writes localStorage). */
39
- workspaceDataSource: WorkspaceDataSource;
40
32
  /**
41
33
  * `docked` (DockedPanel): textarea auto-grows. `float` (FloatPanel): input chrome height is fixed so
42
34
  * the workflow sheet does not change footer layout.
@@ -47,5 +39,5 @@ interface TranscriptTextInputProps {
47
39
  };
48
40
  React: typeof import('react');
49
41
  }
50
- declare const TranscriptTextInput: ({ textInput, setTextInput, handleTextSubmit, handleTextKeyPress, textPlaceholder: _textPlaceholder, connectionMessage, isDataChannelOpen, isResponseActive, sessionMode, onSessionModeChange, recordingStatus, isConnecting, hasMic, isMuted, handleToggleMute, isAssistantPlaybackMuted, onToggleAssistantPlaybackMute, handleResetChat, debugMoreMenuEnabled, developerToolsMenu, micPreset, onApplyMicPreset, workspaceOptions, workspaceDataSource, transcriptPanelMode, ReactDOM, React, }: TranscriptTextInputProps) => React.JSX.Element;
42
+ declare const TranscriptTextInput: ({ textInput, setTextInput, handleTextSubmit, handleTextKeyPress, textPlaceholder: _textPlaceholder, connectionMessage, isDataChannelOpen, isResponseActive, sessionMode, onSessionModeChange, recordingStatus, isConnecting, hasMic, isMuted, handleToggleMute, isAssistantPlaybackMuted, onToggleAssistantPlaybackMute, handleResetChat, transcriptDevtools, micPreset, onApplyMicPreset, workspaceOptions, transcriptPanelMode, ReactDOM, React, }: TranscriptTextInputProps) => import("react").JSX.Element;
51
43
  export default TranscriptTextInput;
@@ -14,10 +14,12 @@ interface TranscriptToolbarProps {
14
14
  onEndSession: () => void;
15
15
  transcriptPanelMode: TranscriptPanelMode;
16
16
  onToggleTranscriptPanelMode: () => void;
17
+ /** Embed only: triple-click workflow title to reveal Developer login in ⋯. */
18
+ onDevtoolsToolbarTitleClick?: () => void;
17
19
  React: typeof import('react');
18
20
  }
19
21
  declare const TranscriptToolbar: {
20
- ({ workflowChecklistEnabled, workflowCheckedCount, workflowTotalCount, displayWorkflowTitle, workflowDrawerOpen, onToggleWorkflowDrawer, onEndSession, transcriptPanelMode, onToggleTranscriptPanelMode, React, }: TranscriptToolbarProps): import("react").JSX.Element;
22
+ ({ workflowChecklistEnabled, workflowCheckedCount, workflowTotalCount, displayWorkflowTitle, workflowDrawerOpen, onToggleWorkflowDrawer, onEndSession, transcriptPanelMode, onToggleTranscriptPanelMode, onDevtoolsToolbarTitleClick, React, }: TranscriptToolbarProps): import("react").JSX.Element;
21
23
  displayName: string;
22
24
  };
23
25
  export default TranscriptToolbar;
@@ -1,5 +1,6 @@
1
1
  import type { TranscriptPanelMode } from '../types/GuideAI.types';
2
2
  import type { StubWorkflowItem } from '../stubs/workspaces';
3
+ import type { TranscriptWorkflowStripGestureHandlers } from '../hooks/useTranscriptPanelDragResize';
3
4
  interface TranscriptWorkflowDrawerProps {
4
5
  open: boolean;
5
6
  onOpenChange: (open: boolean) => void;
@@ -24,16 +25,13 @@ interface TranscriptWorkflowDrawerProps {
24
25
  workspaceDescription: string;
25
26
  workspaceIcon: string;
26
27
  /** Float card only: tap toggles workflow; drag starts parent float-pan (replaces vertical strip drag). */
27
- floatStripGestureHandlers?: {
28
- onPointerDown: (e: import('react').PointerEvent<HTMLButtonElement>) => void;
29
- onPointerMove: (e: import('react').PointerEvent<HTMLButtonElement>) => void;
30
- onPointerUp: (e: import('react').PointerEvent<HTMLButtonElement>) => void;
31
- onPointerCancel: (e: import('react').PointerEvent<HTMLButtonElement>) => void;
32
- };
28
+ floatStripGestureHandlers?: TranscriptWorkflowStripGestureHandlers;
29
+ /** Docked panel only: tap toggles workflow; drag left undocks to float (replaces vertical strip drag). */
30
+ dockStripGestureHandlers?: TranscriptWorkflowStripGestureHandlers;
33
31
  React: typeof import('react');
34
32
  }
35
33
  declare const TranscriptWorkflowDrawer: {
36
- ({ open, onOpenChange, transcriptPanelMode, toolbar, workflowChecked, onToggleWorkflowCheck, workflowChecklistEnabled, workflowConfettiEnabled, onWorkflowActivate, highlightedWorkflowId, workflows, workspaceTitle, workspaceDescription, workspaceIcon, floatStripGestureHandlers, React, }: TranscriptWorkflowDrawerProps): import("react").JSX.Element;
34
+ ({ open, onOpenChange, transcriptPanelMode, toolbar, workflowChecked, onToggleWorkflowCheck, workflowChecklistEnabled, workflowConfettiEnabled, onWorkflowActivate, highlightedWorkflowId, workflows, workspaceTitle, workspaceDescription, workspaceIcon, floatStripGestureHandlers, dockStripGestureHandlers, React, }: TranscriptWorkflowDrawerProps): import("react").JSX.Element;
37
35
  displayName: string;
38
36
  };
39
37
  export default TranscriptWorkflowDrawer;
@@ -0,0 +1,13 @@
1
+ import React from 'react';
2
+ import type { GuideAIThemeId } from '../themes/guideAIThemeIds';
3
+ export type GuideAIThemeContextValue = {
4
+ activeThemeId: GuideAIThemeId | null;
5
+ /** Devtools-only: set preset (saved in localStorage) or package default. */
6
+ setThemeId: (id: GuideAIThemeId | 'default') => void;
7
+ };
8
+ export declare function GuideAIThemeContextProvider({ value, children, }: {
9
+ value: GuideAIThemeContextValue;
10
+ children: React.ReactNode;
11
+ }): React.JSX.Element;
12
+ export declare function useGuideAITheme(): GuideAIThemeContextValue;
13
+ export declare function useGuideAIThemeOptional(): GuideAIThemeContextValue | null;
@@ -17,4 +17,4 @@ export interface DeveloperToolsShellProps {
17
17
  /**
18
18
  * Single floating shell: full-height icon rail (left), header + tool body (right).
19
19
  */
20
- export declare function DeveloperToolsShell({ React: R, ReactDOM, zIndex, open, activeTab, onActiveTabChange, onClose, tabs, children, }: DeveloperToolsShellProps): string | number | boolean | React.JSX.Element | Iterable<React.ReactNode> | null | undefined;
20
+ export declare function DeveloperToolsShell({ React: R, ReactDOM, zIndex, open, activeTab, onActiveTabChange, onClose, tabs, children, }: DeveloperToolsShellProps): string | number | boolean | Iterable<React.ReactNode> | React.JSX.Element | null | undefined;
@@ -0,0 +1,45 @@
1
+ import React from 'react';
2
+ import type { GuideAIEnvironment } from '../types/GuideAI.types';
3
+ import type { DeveloperToolsShellControl } from './transcriptDevtoolsMenuProps';
4
+ export type TranscriptDeveloperToolsMoreMenuItemsProps = {
5
+ sectionVisible: boolean;
6
+ shellControl: DeveloperToolsShellControl;
7
+ loginVisible: boolean;
8
+ onOpenLogin: () => void;
9
+ showLogout: boolean;
10
+ onLogout: () => void;
11
+ onCloseMenu: () => void;
12
+ debugFlyout: null | 'logger' | 'micPreset' | 'adminPortal';
13
+ setDebugFlyout: React.Dispatch<React.SetStateAction<null | 'logger' | 'micPreset' | 'adminPortal'>>;
14
+ loggerFlyoutTriggerRef: React.RefObject<HTMLButtonElement>;
15
+ adminPortalFlyoutTriggerRef: React.RefObject<HTMLButtonElement>;
16
+ getServerConversationId?: () => string | null;
17
+ onOpenTranscriptUiSettings?: () => void;
18
+ };
19
+ /** Developer login + Developer tools rows in transcript ⋯. */
20
+ export declare function TranscriptDeveloperToolsMoreMenuItems({ sectionVisible, shellControl, loginVisible, onOpenLogin, showLogout, onLogout, onCloseMenu, debugFlyout, setDebugFlyout, loggerFlyoutTriggerRef, adminPortalFlyoutTriggerRef, getServerConversationId, onOpenTranscriptUiSettings, }: TranscriptDeveloperToolsMoreMenuItemsProps): React.JSX.Element;
21
+ export type DeveloperToolsLoggerFlyoutProps = {
22
+ open: boolean;
23
+ flyoutStyle: React.CSSProperties | null;
24
+ usePortal: boolean;
25
+ ReactDOM?: {
26
+ createPortal: (children: React.ReactNode, container: Element) => React.ReactNode;
27
+ };
28
+ listRef: React.RefObject<HTMLUListElement>;
29
+ };
30
+ /** Portaled Console debugger submenu (⋯ → Developer tools). */
31
+ export declare function DeveloperToolsLoggerFlyout({ open, flyoutStyle, usePortal, ReactDOM, listRef, }: DeveloperToolsLoggerFlyoutProps): React.ReactNode;
32
+ export type DeveloperToolsAdminPortalFlyoutProps = {
33
+ open: boolean;
34
+ flyoutStyle: React.CSSProperties | null;
35
+ usePortal: boolean;
36
+ ReactDOM?: {
37
+ createPortal: (children: React.ReactNode, container: Element) => React.ReactNode;
38
+ };
39
+ listRef: React.RefObject<HTMLUListElement>;
40
+ getServerConversationId: () => string | null;
41
+ widgetEnvironment?: GuideAIEnvironment;
42
+ onCloseMenu: () => void;
43
+ };
44
+ /** Portaled Open in admin submenu (⋯ → Developer tools). */
45
+ export declare function DeveloperToolsAdminPortalFlyout({ open, flyoutStyle, usePortal, ReactDOM, listRef, getServerConversationId, widgetEnvironment, onCloseMenu, }: DeveloperToolsAdminPortalFlyoutProps): React.ReactNode;
@@ -0,0 +1,10 @@
1
+ import React from 'react';
2
+ import type { TranscriptDisplayMode } from '../types/GuideAI.types';
3
+ export type TranscriptUiDevtoolsPanelProps = {
4
+ transcriptDisplayMode: TranscriptDisplayMode;
5
+ onTranscriptDisplayModeChange: (mode: TranscriptDisplayMode) => void;
6
+ subtitleDarkHighlight: boolean;
7
+ onSubtitleDarkHighlightChange: (enabled: boolean) => void;
8
+ };
9
+ /** Developer tools → Transcript UI tab. */
10
+ export declare function TranscriptUiDevtoolsPanel({ transcriptDisplayMode, onTranscriptDisplayModeChange, subtitleDarkHighlight, onSubtitleDarkHighlightChange, }: TranscriptUiDevtoolsPanelProps): React.JSX.Element;
@@ -20,4 +20,4 @@ export interface AdminToolDiagnosticsPanelProps {
20
20
  */
21
21
  devtoolsShellZIndex?: number;
22
22
  }
23
- export declare const AdminToolDiagnosticsPanel: ({ React: R, ReactDOM, runTool, getToolNames, getSampleArgsJsonForToolName, onClose, embedded, devtoolsShellZIndex, }: AdminToolDiagnosticsPanelProps) => string | number | boolean | React.JSX.Element | Iterable<React.ReactNode> | null | undefined;
23
+ export declare const AdminToolDiagnosticsPanel: ({ React: R, ReactDOM, runTool, getToolNames, getSampleArgsJsonForToolName, onClose, embedded, devtoolsShellZIndex, }: AdminToolDiagnosticsPanelProps) => string | number | boolean | Iterable<React.ReactNode> | React.JSX.Element | null | undefined;
@@ -1,5 +1,5 @@
1
1
  /** Tabs inside the unified transcript Debug → Developer tools shell. */
2
- export type DeveloperToolPanelId = 'audio' | 'playbackLock' | 'visualContext' | 'toolDiagnostics' | 'workflowTester';
2
+ export type DeveloperToolPanelId = 'audio' | 'playbackLock' | 'visualContext' | 'toolDiagnostics' | 'learn' | 'workflowTester';
3
3
  /**
4
4
  * Single source for shell rail order and title `<select>` options (when visual context is on).
5
5
  * {@link useGuideDeveloperTools} filters out `visualContext` when the feature is disabled.
@@ -0,0 +1,11 @@
1
+ import type { GuideAIEnvironment } from '../types/GuideAI.types';
2
+ export type DevtoolsAdminPortalLinkTargets = {
3
+ conversationId: string | null;
4
+ workflowId: string | null;
5
+ };
6
+ export type DevtoolsAdminPortalUrls = {
7
+ conversation: string | null;
8
+ workflow: string | null;
9
+ };
10
+ export declare function getDevtoolsAdminSiteOrigin(environment?: GuideAIEnvironment): string | null;
11
+ export declare function buildDevtoolsAdminPortalUrls(origin: string | null, targets: DevtoolsAdminPortalLinkTargets): DevtoolsAdminPortalUrls;
@@ -0,0 +1,14 @@
1
+ import React from 'react';
2
+ import type { DevtoolsPortalSession } from './types';
3
+ export type DevtoolsAuthContextValue = {
4
+ portalToken: string | null;
5
+ portalUser: DevtoolsPortalSession['user'] | null;
6
+ isAdministrator: boolean;
7
+ };
8
+ export type DevtoolsAuthProviderProps = {
9
+ value: DevtoolsAuthContextValue;
10
+ children: React.ReactNode;
11
+ };
12
+ export declare function DevtoolsAuthProvider({ value, children }: DevtoolsAuthProviderProps): React.JSX.Element;
13
+ /** Portal JWT + user for developer-tools admin API calls. Null when outside the provider. */
14
+ export declare function useDevtoolsAuth(): DevtoolsAuthContextValue | null;
@@ -0,0 +1,13 @@
1
+ import React from 'react';
2
+ import type { GuideAIEnvironment } from '../../types/GuideAI.types';
3
+ export type DevtoolsLoginModalProps = {
4
+ React: typeof import('react');
5
+ ReactDOM?: {
6
+ createPortal: (children: React.ReactNode, container: Element) => React.ReactNode;
7
+ };
8
+ open: boolean;
9
+ environment?: GuideAIEnvironment;
10
+ onClose: () => void;
11
+ onSuccess: () => void;
12
+ };
13
+ export declare function DevtoolsLoginModal({ React: ReactRuntime, ReactDOM, open, environment, onClose, onSuccess, }: DevtoolsLoginModalProps): string | number | boolean | Iterable<React.ReactNode> | React.JSX.Element | null | undefined;
@@ -0,0 +1,9 @@
1
+ /** Hidden chord: Ctrl/Cmd + Shift + Alt + D (physical D key). */
2
+ export declare function isDevtoolsAccessKeyboardShortcut(event: KeyboardEvent): boolean;
3
+ /**
4
+ * Counts rapid presses on the embed unlock target (toolbar workflow title).
5
+ * Uses {@link TRIPLE_CLICK_MS} between first and third press.
6
+ */
7
+ export declare function createTripleClickDetector(onTripleClick: () => void): () => void;
8
+ /** Attach embed unlock keyboard chord on `document` (capture) so it works inside shadow DOM / iframes. */
9
+ export declare function attachDevtoolsAccessKeyboardListener(onMatch: () => void): () => void;
@@ -0,0 +1,13 @@
1
+ import type { GuideAIEnvironment } from '../../types/GuideAI.types';
2
+ export type DevtoolsAdminFetchOptions = {
3
+ token: string;
4
+ environment?: GuideAIEnvironment;
5
+ method?: string;
6
+ body?: unknown;
7
+ headers?: Record<string, string>;
8
+ };
9
+ /**
10
+ * Authenticated fetch for extension-scoped admin APIs. Paths are relative to {@link getApiBaseUrl}
11
+ * (which already ends with `/api`), e.g. `/extension/admin/...` — not `/api/extension/...`.
12
+ */
13
+ export declare function devtoolsAdminFetch(path: string, options: DevtoolsAdminFetchOptions): Promise<Response>;
@@ -0,0 +1 @@
1
+ export declare function devtoolsLoginModalStyles(): string;
@@ -0,0 +1,15 @@
1
+ import type { GuideAIEnvironment } from '../../types/GuideAI.types';
2
+ import type { DevtoolsPortalSession } from './types';
3
+ export declare class DevtoolsPortalLoginError extends Error {
4
+ readonly status: number;
5
+ constructor(status: number, message: string);
6
+ }
7
+ /**
8
+ * Authenticate an administrator against the GuideAI portal (Cognito + AuthUser).
9
+ * Only `ADMINISTRATOR` role may unlock developer tools.
10
+ */
11
+ export declare function loginDevtoolsPortal(input: {
12
+ environment?: GuideAIEnvironment;
13
+ email: string;
14
+ password: string;
15
+ }): Promise<DevtoolsPortalSession>;
@@ -0,0 +1,4 @@
1
+ import type { DevtoolsPortalSession } from './types';
2
+ export declare function readStoredDevtoolsPortalSession(): DevtoolsPortalSession | null;
3
+ export declare function writeStoredDevtoolsPortalSession(session: DevtoolsPortalSession): void;
4
+ export declare function clearStoredDevtoolsPortalSession(): void;
@@ -0,0 +1,9 @@
1
+ export type { DevtoolsPortalSession, DevtoolsPortalUser, ExtensionPortalAuthProp } from './types';
2
+ export { isDevtoolsAdministrator } from './types';
3
+ export { loginDevtoolsPortal, DevtoolsPortalLoginError } from './devtoolsPortalLogin';
4
+ export { readStoredDevtoolsPortalSession, writeStoredDevtoolsPortalSession, clearStoredDevtoolsPortalSession, } from './devtoolsSessionStorage';
5
+ export { devtoolsAdminFetch, type DevtoolsAdminFetchOptions } from './devtoolsAdminApi';
6
+ export { isDevtoolsAccessKeyboardShortcut, createTripleClickDetector, attachDevtoolsAccessKeyboardListener, } from './devtoolsAccessTrigger';
7
+ export { DevtoolsLoginModal } from './DevtoolsLoginModal';
8
+ export { devtoolsLoginModalStyles } from './devtoolsLoginModalStyles';
9
+ export { useDevtoolsAccess, type DevtoolsAccessState, type UseDevtoolsAccessParams, } from './useDevtoolsAccess';
@@ -0,0 +1,21 @@
1
+ /** Portal user snapshot returned by `POST /extension/auth/login`. */
2
+ export type DevtoolsPortalUser = {
3
+ id: string;
4
+ email: string;
5
+ username: string;
6
+ role: string;
7
+ customerId: string | null;
8
+ };
9
+ /** Authenticated administrator session for developer tools (extension portal JWT). */
10
+ export type DevtoolsPortalSession = {
11
+ token: string;
12
+ user: DevtoolsPortalUser;
13
+ expiresAt: string;
14
+ /** `extension` = popup sign-in; `modal` = in-widget admin login. */
15
+ source: 'extension' | 'modal';
16
+ };
17
+ export type ExtensionPortalAuthProp = {
18
+ token: string;
19
+ user: DevtoolsPortalUser;
20
+ } | null;
21
+ export declare function isDevtoolsAdministrator(user: Pick<DevtoolsPortalUser, 'role'> | null | undefined): boolean;
@@ -0,0 +1,33 @@
1
+ import React from 'react';
2
+ import type { ReactHooks } from '../../utils/reactHooks';
3
+ import type { GuideAIEnvironment } from '../../types/GuideAI.types';
4
+ import type { DevtoolsPortalSession, ExtensionPortalAuthProp } from './types';
5
+ export type UseDevtoolsAccessParams = {
6
+ hooks: ReactHooks;
7
+ React: typeof import('react');
8
+ ReactDOM?: {
9
+ createPortal: (children: React.ReactNode, container: Element) => React.ReactNode;
10
+ };
11
+ environment?: GuideAIEnvironment;
12
+ /** Chrome extension popup sign-in (includes portal JWT when connected). */
13
+ extensionPortalAuth?: ExtensionPortalAuthProp;
14
+ };
15
+ export type DevtoolsAccessState = {
16
+ /** Full Developer tools section in transcript ⋯ (extension admin or embed after admin login). */
17
+ showDeveloperToolsMenu: boolean;
18
+ /** Embed only: hidden unlock revealed the Developer login row (not yet signed in). */
19
+ showDevtoolsLoginItem: boolean;
20
+ openDevtoolsLogin: () => void;
21
+ /** Embed only: triple-click transcript workflow title. No-op in extension. */
22
+ onTranscriptToolbarTitleClick: () => void;
23
+ /** Embed only: hidden unlock reveals the Developer login row in ⋯. */
24
+ revealEmbedDeveloperLogin: () => void;
25
+ revokeEmbedDeveloperAccess: () => void;
26
+ logoutDeveloper: () => void;
27
+ /** Embed with modal admin session: show Logout developer in Debug ⋯. */
28
+ showDeveloperLogout: boolean;
29
+ portalToken: string | null;
30
+ portalUser: DevtoolsPortalSession['user'] | null;
31
+ loginModal: React.ReactNode;
32
+ };
33
+ export declare function useDevtoolsAccess({ hooks, React, ReactDOM, environment, extensionPortalAuth, }: UseDevtoolsAccessParams): DevtoolsAccessState;
@@ -0,0 +1,3 @@
1
+ import { type GuideAIThemeId } from '../themes/guideAIThemeIds';
2
+ export declare function readDevtoolsThemePreference(): GuideAIThemeId | null;
3
+ export declare function writeDevtoolsThemePreference(themeId: GuideAIThemeId | null): void;
@@ -0,0 +1,17 @@
1
+ /**
2
+ * GuideAI Excavator — developer tool: browser automation + copilot via the **same Guide AI API base**
3
+ * as the widget (`GET/POST …/api/excavator/…`), or **`excavatorApiBaseUrl`** when the host serves
4
+ * Excavator on a different origin than the widget session. The host implements those routes or proxies
5
+ * Playwright companion; no separate companion URL in the UI.
6
+ *
7
+ * Visual structure matches other dev tools (`guideai-atd-*`). Nested in {@link DeveloperToolsShell}.
8
+ */
9
+ import React from 'react';
10
+ export interface ExcavatorPanelProps {
11
+ zIndex: number;
12
+ visible: boolean;
13
+ onClose: () => void;
14
+ embedded?: boolean;
15
+ }
16
+ declare const ExcavatorPanel: ({ zIndex, visible, onClose, embedded }: ExcavatorPanelProps) => React.JSX.Element | null;
17
+ export default ExcavatorPanel;
@@ -0,0 +1,5 @@
1
+ /**
2
+ * GuideAI Excavator — scoped additions to shared `guideai-atd-*` devtools look
3
+ * (see {@link adminToolDiagnosticsStyles}).
4
+ */
5
+ export declare const excavatorPanelStyles: () => string;