@rtc-agent/component 0.2.7-rc.4 → 0.2.8-rc.1

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 (235) hide show
  1. package/README.md +109 -13
  2. package/dist/.generated/locales/en-US.d.ts +55 -7
  3. package/dist/.generated/locales/en-US.d.ts.map +1 -1
  4. package/dist/assets/{shared-worker-BQv441O7.js → shared-worker-CXyjL7E6.js} +210 -210
  5. package/dist/components/activity-bar/rtc-activity-bar.d.ts +23 -21
  6. package/dist/components/activity-bar/rtc-activity-bar.d.ts.map +1 -1
  7. package/dist/components/activity-bar/rtc-activity-bar.styles.d.ts +2 -2
  8. package/dist/components/chat-layout/rtc-chat-layout.d.ts +87 -80
  9. package/dist/components/chat-layout/rtc-chat-layout.d.ts.map +1 -1
  10. package/dist/components/chat-layout/rtc-chat-layout.styles.d.ts +5 -5
  11. package/dist/components/content-area/rtc-error-message.d.ts +1 -1
  12. package/dist/components/content-area/rtc-message-more-menu.d.ts +4 -4
  13. package/dist/components/content-area/rtc-message-more-menu.d.ts.map +1 -1
  14. package/dist/components/content-area/rtc-message.d.ts +82 -76
  15. package/dist/components/content-area/rtc-message.d.ts.map +1 -1
  16. package/dist/components/content-area/rtc-message.styles.d.ts.map +1 -1
  17. package/dist/components/content-area/rtc-toolcall-card.d.ts +10 -5
  18. package/dist/components/content-area/rtc-toolcall-card.d.ts.map +1 -1
  19. package/dist/components/content-area/rtc-toolcall-card.styles.d.ts.map +1 -1
  20. package/dist/components/content-area/rtc-toolcall-reply.d.ts +12 -0
  21. package/dist/components/content-area/rtc-toolcall-reply.d.ts.map +1 -1
  22. package/dist/components/content-area/rtc-toolcall-reply.styles.d.ts.map +1 -1
  23. package/dist/components/content-area/rtc-user-message.d.ts +10 -10
  24. package/dist/components/drawer/rtc-drawer.d.ts +29 -27
  25. package/dist/components/drawer/rtc-drawer.d.ts.map +1 -1
  26. package/dist/components/drawer/rtc-drawer.styles.d.ts +9 -9
  27. package/dist/components/editor-area/rtc-editor-area.d.ts +29 -29
  28. package/dist/components/editor-area/rtc-editor-area.d.ts.map +1 -1
  29. package/dist/components/editor-area/rtc-editor-area.styles.d.ts +3 -3
  30. package/dist/components/editor-area/rtc-editor-tab.d.ts +27 -27
  31. package/dist/components/editor-area/rtc-editor-tab.d.ts.map +1 -1
  32. package/dist/components/editor-area/rtc-editor-tab.styles.d.ts +3 -3
  33. package/dist/components/editor-area/rtc-editor-toolbar.d.ts +19 -19
  34. package/dist/components/editor-area/rtc-editor-toolbar.d.ts.map +1 -1
  35. package/dist/components/editor-area/rtc-editor-toolbar.styles.d.ts +3 -3
  36. package/dist/components/file-explorer/rtc-file-explorer.d.ts +28 -28
  37. package/dist/components/file-explorer/rtc-file-explorer.d.ts.map +1 -1
  38. package/dist/components/file-explorer/rtc-file-explorer.styles.d.ts +3 -3
  39. package/dist/components/file-explorer/rtc-file-tree-item.d.ts +19 -19
  40. package/dist/components/file-explorer/rtc-file-tree-item.d.ts.map +1 -1
  41. package/dist/components/file-explorer/rtc-file-tree-item.styles.d.ts +3 -3
  42. package/dist/components/function-console/rtc-function-console.d.ts +32 -0
  43. package/dist/components/function-console/rtc-function-console.d.ts.map +1 -0
  44. package/dist/components/function-console/rtc-function-console.styles.d.ts +8 -0
  45. package/dist/components/function-console/rtc-function-console.styles.d.ts.map +1 -0
  46. package/dist/components/function-debugger/rtc-function-debugger.d.ts +39 -0
  47. package/dist/components/function-debugger/rtc-function-debugger.d.ts.map +1 -0
  48. package/dist/components/function-debugger/rtc-function-debugger.styles.d.ts +8 -0
  49. package/dist/components/function-debugger/rtc-function-debugger.styles.d.ts.map +1 -0
  50. package/dist/components/function-history/rtc-function-history.d.ts +49 -0
  51. package/dist/components/function-history/rtc-function-history.d.ts.map +1 -0
  52. package/dist/components/function-history/rtc-function-history.styles.d.ts +8 -0
  53. package/dist/components/function-history/rtc-function-history.styles.d.ts.map +1 -0
  54. package/dist/components/function-params/rtc-function-params.d.ts +29 -0
  55. package/dist/components/function-params/rtc-function-params.d.ts.map +1 -0
  56. package/dist/components/function-params/rtc-function-params.styles.d.ts +8 -0
  57. package/dist/components/function-params/rtc-function-params.styles.d.ts.map +1 -0
  58. package/dist/components/function-tree/rtc-function-tree.d.ts +59 -0
  59. package/dist/components/function-tree/rtc-function-tree.d.ts.map +1 -0
  60. package/dist/components/function-tree/rtc-function-tree.styles.d.ts +2 -0
  61. package/dist/components/function-tree/rtc-function-tree.styles.d.ts.map +1 -0
  62. package/dist/components/functions-layout/rtc-functions-layout.d.ts +45 -0
  63. package/dist/components/functions-layout/rtc-functions-layout.d.ts.map +1 -0
  64. package/dist/components/functions-layout/rtc-functions-layout.styles.d.ts +8 -0
  65. package/dist/components/functions-layout/rtc-functions-layout.styles.d.ts.map +1 -0
  66. package/dist/components/input-area/rtc-input-area.d.ts +15 -15
  67. package/dist/components/input-area/rtc-input-area.d.ts.map +1 -1
  68. package/dist/components/login/rtc-login-page.d.ts +8 -8
  69. package/dist/components/markdown-editor/rtc-markdown-editor.d.ts +23 -19
  70. package/dist/components/markdown-editor/rtc-markdown-editor.d.ts.map +1 -1
  71. package/dist/components/overlay/rtc-command-panel.d.ts.map +1 -1
  72. package/dist/components/overlay/rtc-export-dialog.d.ts +59 -0
  73. package/dist/components/overlay/rtc-export-dialog.d.ts.map +1 -0
  74. package/dist/components/overlay/rtc-export-dialog.styles.d.ts +11 -0
  75. package/dist/components/overlay/rtc-export-dialog.styles.d.ts.map +1 -0
  76. package/dist/components/overlay/rtc-scenario-panel.d.ts +1 -1
  77. package/dist/components/overlay/rtc-scenario-panel.d.ts.map +1 -1
  78. package/dist/components/overlay/rtc-session-panel.d.ts +1 -1
  79. package/dist/components/overlay/rtc-session-panel.d.ts.map +1 -1
  80. package/dist/components/overlay/rtc-toast.d.ts +8 -8
  81. package/dist/components/rtc-agent/helpers/bus-handler.d.ts +32 -1
  82. package/dist/components/rtc-agent/helpers/bus-handler.d.ts.map +1 -1
  83. package/dist/components/rtc-agent/helpers/command-handler.d.ts +8 -0
  84. package/dist/components/rtc-agent/helpers/command-handler.d.ts.map +1 -1
  85. package/dist/components/rtc-agent/helpers/connection-setup.d.ts +5 -8
  86. package/dist/components/rtc-agent/helpers/connection-setup.d.ts.map +1 -1
  87. package/dist/components/rtc-agent/helpers/dialog-helpers.d.ts +12 -0
  88. package/dist/components/rtc-agent/helpers/dialog-helpers.d.ts.map +1 -1
  89. package/dist/components/rtc-agent/helpers/session-loader.d.ts +2 -0
  90. package/dist/components/rtc-agent/helpers/session-loader.d.ts.map +1 -1
  91. package/dist/components/rtc-agent/helpers/vfs-operations.d.ts +22 -3
  92. package/dist/components/rtc-agent/helpers/vfs-operations.d.ts.map +1 -1
  93. package/dist/components/rtc-agent/rtc-agent.d.ts +22 -47
  94. package/dist/components/rtc-agent/rtc-agent.d.ts.map +1 -1
  95. package/dist/components/session-tree/rtc-session-tab-bar.d.ts +8 -8
  96. package/dist/components/session-tree/rtc-session-tab-bar.d.ts.map +1 -1
  97. package/dist/components/session-tree/rtc-session-tab-bar.styles.d.ts +5 -5
  98. package/dist/components/session-tree/rtc-session-tab.d.ts +6 -6
  99. package/dist/components/session-tree/rtc-session-tab.d.ts.map +1 -1
  100. package/dist/components/session-tree/rtc-session-tab.styles.d.ts +6 -6
  101. package/dist/components/session-tree/rtc-session-tree-item.d.ts +10 -10
  102. package/dist/components/session-tree/rtc-session-tree-item.d.ts.map +1 -1
  103. package/dist/components/session-tree/rtc-session-tree-item.styles.d.ts +6 -6
  104. package/dist/components/session-tree/rtc-session-tree.d.ts +15 -15
  105. package/dist/components/session-tree/rtc-session-tree.d.ts.map +1 -1
  106. package/dist/components/session-tree/rtc-session-tree.styles.d.ts +5 -5
  107. package/dist/components/settings-layout/rtc-settings-layout.d.ts +23 -23
  108. package/dist/components/settings-layout/rtc-settings-layout.d.ts.map +1 -1
  109. package/dist/components/settings-layout/rtc-settings-layout.styles.d.ts +3 -3
  110. package/dist/components/settings-layout/rtc-settings-nav.d.ts +17 -17
  111. package/dist/components/settings-layout/rtc-settings-nav.d.ts.map +1 -1
  112. package/dist/components/settings-layout/rtc-settings-nav.styles.d.ts +2 -2
  113. package/dist/components/status-bar/rtc-status-bar.d.ts +10 -10
  114. package/dist/components/status-bar/rtc-status-bar.d.ts.map +1 -1
  115. package/dist/components/status-bar/rtc-status-bar.styles.d.ts +5 -5
  116. package/dist/components/title-bar/rtc-title-bar.d.ts +4 -4
  117. package/dist/components/title-bar/rtc-title-bar.d.ts.map +1 -1
  118. package/dist/components/token-usage/rtc-token-usage.d.ts +21 -21
  119. package/dist/components/token-usage/rtc-token-usage.d.ts.map +1 -1
  120. package/dist/config/auth.d.ts +12 -6
  121. package/dist/config/auth.d.ts.map +1 -1
  122. package/dist/contexts/activity.d.ts +13 -13
  123. package/dist/contexts/activity.d.ts.map +1 -1
  124. package/dist/contexts/auth.d.ts +5 -4
  125. package/dist/contexts/auth.d.ts.map +1 -1
  126. package/dist/contexts/editor.d.ts +13 -13
  127. package/dist/contexts/editor.d.ts.map +1 -1
  128. package/dist/contexts/file-explorer.d.ts +15 -15
  129. package/dist/contexts/file-explorer.d.ts.map +1 -1
  130. package/dist/contexts/function-debug.d.ts +52 -0
  131. package/dist/contexts/function-debug.d.ts.map +1 -0
  132. package/dist/contexts/functions.d.ts +43 -0
  133. package/dist/contexts/functions.d.ts.map +1 -0
  134. package/dist/contexts/message.d.ts +3 -3
  135. package/dist/contexts/notification.d.ts +4 -4
  136. package/dist/contexts/notification.d.ts.map +1 -1
  137. package/dist/contexts/settings.d.ts +2 -2
  138. package/dist/contexts/skill.d.ts +5 -5
  139. package/dist/contexts/skill.d.ts.map +1 -1
  140. package/dist/contexts/turn-count.d.ts +7 -7
  141. package/dist/controllers/activity.controller.d.ts +11 -11
  142. package/dist/controllers/activity.controller.d.ts.map +1 -1
  143. package/dist/controllers/auth.controller.d.ts +5 -0
  144. package/dist/controllers/auth.controller.d.ts.map +1 -1
  145. package/dist/controllers/editor-area.controller.d.ts +42 -41
  146. package/dist/controllers/editor-area.controller.d.ts.map +1 -1
  147. package/dist/controllers/editor.controller.d.ts +3 -3
  148. package/dist/controllers/event-binding.controller.d.ts +204 -0
  149. package/dist/controllers/event-binding.controller.d.ts.map +1 -0
  150. package/dist/controllers/file-explorer.controller.d.ts +6 -6
  151. package/dist/controllers/function-debug.controller.d.ts +67 -0
  152. package/dist/controllers/function-debug.controller.d.ts.map +1 -0
  153. package/dist/controllers/functions.controller.d.ts +31 -0
  154. package/dist/controllers/functions.controller.d.ts.map +1 -0
  155. package/dist/controllers/message.controller.d.ts +11 -1
  156. package/dist/controllers/message.controller.d.ts.map +1 -1
  157. package/dist/controllers/notification.controller.d.ts +34 -30
  158. package/dist/controllers/notification.controller.d.ts.map +1 -1
  159. package/dist/controllers/persistence.controller.d.ts +31 -14
  160. package/dist/controllers/persistence.controller.d.ts.map +1 -1
  161. package/dist/controllers/session-tab.controller.d.ts +32 -29
  162. package/dist/controllers/session-tab.controller.d.ts.map +1 -1
  163. package/dist/controllers/session-tree.controller.d.ts +10 -10
  164. package/dist/controllers/session-tree.controller.d.ts.map +1 -1
  165. package/dist/controllers/session.controller.d.ts +6 -6
  166. package/dist/controllers/settings.controller.d.ts +1 -1
  167. package/dist/controllers/skill.controller.d.ts +21 -21
  168. package/dist/controllers/skill.controller.d.ts.map +1 -1
  169. package/dist/controllers/status-bar.controller.d.ts +11 -11
  170. package/dist/controllers/toast.controller.d.ts.map +1 -1
  171. package/dist/controllers/tool-call.controller.d.ts +4 -4
  172. package/dist/controllers/window-interaction.controller.d.ts +14 -12
  173. package/dist/controllers/window-interaction.controller.d.ts.map +1 -1
  174. package/dist/controllers/window-state.controller.d.ts +5 -5
  175. package/dist/controllers/window-state.controller.d.ts.map +1 -1
  176. package/dist/core/builtin-system-group.d.ts +26 -19
  177. package/dist/core/builtin-system-group.d.ts.map +1 -1
  178. package/dist/core/event-bus.d.ts +31 -31
  179. package/dist/core/function-registry.d.ts +82 -71
  180. package/dist/core/function-registry.d.ts.map +1 -1
  181. package/dist/core/i18n.d.ts +2 -2
  182. package/dist/core/locale-controller.d.ts +2 -2
  183. package/dist/core/markdown-generator.d.ts +20 -10
  184. package/dist/core/markdown-generator.d.ts.map +1 -1
  185. package/dist/core/ready.d.ts +9 -9
  186. package/dist/core/scenario-loader.d.ts +29 -25
  187. package/dist/core/scenario-loader.d.ts.map +1 -1
  188. package/dist/elements.d.ts +6 -6
  189. package/dist/{en-US-BK61Z8gy.js → en-US-9e1nrE9Q.js} +56 -8
  190. package/dist/factory.d.ts.map +1 -1
  191. package/dist/{highlight-languages-8EK0uwTA.js → highlight-languages-BcRFTMSx.js} +1 -1
  192. package/dist/icons/logo.d.ts +5 -5
  193. package/dist/{index-Bd4j91y1.js → index-CEn11pPK.js} +26829 -22588
  194. package/dist/index.d.ts +17 -15
  195. package/dist/index.d.ts.map +1 -1
  196. package/dist/index.js +39 -36
  197. package/dist/index.umd.js +3303 -1120
  198. package/dist/master-lock.d.ts +27 -27
  199. package/dist/master-lock.d.ts.map +1 -1
  200. package/dist/stats.html +1 -1
  201. package/dist/types/activity-bar-config.d.ts +14 -14
  202. package/dist/types/activity-bar-config.d.ts.map +1 -1
  203. package/dist/types/agent-config.d.ts +18 -18
  204. package/dist/types/agent-config.d.ts.map +1 -1
  205. package/dist/types/events.d.ts +75 -19
  206. package/dist/types/events.d.ts.map +1 -1
  207. package/dist/types/factory.d.ts +13 -5
  208. package/dist/types/factory.d.ts.map +1 -1
  209. package/dist/types/functions-debug.d.ts +48 -0
  210. package/dist/types/functions-debug.d.ts.map +1 -0
  211. package/dist/types/index.d.ts +97 -102
  212. package/dist/types/index.d.ts.map +1 -1
  213. package/dist/types/skill.d.ts +95 -83
  214. package/dist/types/skill.d.ts.map +1 -1
  215. package/dist/types/window-config.d.ts +37 -37
  216. package/dist/types/window-config.d.ts.map +1 -1
  217. package/dist/utils/clipboard.d.ts +6 -6
  218. package/dist/utils/command-parser.d.ts +9 -9
  219. package/dist/utils/command-parser.d.ts.map +1 -1
  220. package/dist/utils/highlight-languages.d.ts +3 -3
  221. package/dist/utils/relative-time.d.ts +7 -7
  222. package/dist/utils/session-exporter.d.ts +65 -0
  223. package/dist/utils/session-exporter.d.ts.map +1 -0
  224. package/dist/utils/skeleton-tracker.d.ts +56 -56
  225. package/dist/utils/skeleton-tracker.d.ts.map +1 -1
  226. package/dist/utils/visibility-manager.d.ts +42 -42
  227. package/dist/utils/visibility-manager.d.ts.map +1 -1
  228. package/dist/validation/index.d.ts +16 -16
  229. package/dist/validation/index.d.ts.map +1 -1
  230. package/dist/validation/openapi-to-zod.d.ts +5 -5
  231. package/dist/validation/zod-to-openapi.d.ts +24 -14
  232. package/dist/validation/zod-to-openapi.d.ts.map +1 -1
  233. package/dist/worker-bridge.d.ts +11 -0
  234. package/dist/worker-bridge.d.ts.map +1 -1
  235. package/package.json +5 -5
@@ -0,0 +1,204 @@
1
+ /**
2
+ * Event Binding Controller
3
+ *
4
+ * Centralizes all DOM event listener bindings for <rtc-agent>. This controller
5
+ * manages the lifecycle of 30+ event handlers, ensuring proper cleanup and
6
+ * reducing the root component's size by ~300 lines.
7
+ *
8
+ * ## Architecture
9
+ *
10
+ * The controller receives dependencies via constructor injection (all controllers
11
+ * and callbacks needed by event handlers) and provides:
12
+ * - Bound handler references (arrow functions stored as instance fields)
13
+ * - `bindEvents(element)` to attach all listeners in connectedCallback
14
+ * - `unbindEvents(element)` to detach all listeners in disconnectedCallback
15
+ *
16
+ * ## Event Categories
17
+ *
18
+ * - Window control: minimize, maximize, restore
19
+ * - Authentication: login requested, logout
20
+ * - Session management: new session, delete, rename
21
+ * - Message handling: input submit, stop, resend, fork
22
+ * - Toast notifications: requested, close
23
+ * - Slash commands: command requested
24
+ * - VS Code layout: activity change, file select, folder toggle
25
+ * - Editor area: save, tab close/select, content change, view mode, cursor, restore
26
+ * - Chat layout: session select, tab activate/close
27
+ * - UI interactions: keydown, wheel, drawer close, file explorer refresh
28
+ *
29
+ * @module EventBindingController
30
+ */
31
+ import type { ReactiveController, ReactiveControllerHost } from 'lit';
32
+ import type { WindowStateController } from './window-state.controller.js';
33
+ import type { AuthController } from './auth.controller.js';
34
+ import type { SessionController } from './session.controller.js';
35
+ import type { MessageController } from './message.controller.js';
36
+ import type { ToolCallController } from './tool-call.controller.js';
37
+ import type { WindowInteractionController } from './window-interaction.controller.js';
38
+ import type { PersistenceController } from './persistence.controller.js';
39
+ import type { SkillController } from './skill.controller.js';
40
+ import type { ToastController } from './toast.controller.js';
41
+ import type { ForkController } from './fork.controller.js';
42
+ import type { ActivityController } from './activity.controller.js';
43
+ import type { FileExplorerController } from './file-explorer.controller.js';
44
+ import type { EditorAreaController } from './editor-area.controller.js';
45
+ import type { StatusBarController } from './status-bar.controller.js';
46
+ import type { SessionTreeController } from './session-tree.controller.js';
47
+ import type { SessionTabController } from './session-tab.controller.js';
48
+ import type { SettingsController } from './settings.controller.js';
49
+ import type { NotificationController } from './notification.controller.js';
50
+ import type { Logger } from '@rtc-agent/client';
51
+ /**
52
+ * Dependencies required by EventBindingController.
53
+ *
54
+ * All controllers and callbacks needed by event handlers are injected here.
55
+ * This avoids circular dependencies and keeps the controller decoupled from
56
+ * the root component's internal state.
57
+ */
58
+ export interface EventBindingDeps {
59
+ windowState: WindowStateController;
60
+ auth: AuthController;
61
+ session: SessionController;
62
+ message: MessageController;
63
+ toolCall: ToolCallController;
64
+ interaction: WindowInteractionController;
65
+ persistence: PersistenceController;
66
+ skill: SkillController;
67
+ toast: ToastController;
68
+ fork: ForkController;
69
+ activity: ActivityController;
70
+ fileExplorer: FileExplorerController;
71
+ editorArea: EditorAreaController;
72
+ statusBar: StatusBarController;
73
+ sessionTree: SessionTreeController;
74
+ sessionTab: SessionTabController;
75
+ settings: SettingsController;
76
+ notification: NotificationController;
77
+ autoSaveTimers: Map<string, ReturnType<typeof setTimeout>>;
78
+ getRtcProcessor: () => any;
79
+ setRtcProcessor: (value: any) => void;
80
+ getUnsubConnection: () => (() => void) | undefined;
81
+ setUnsubConnection: (value: (() => void) | undefined) => void;
82
+ getConnectGeneration: () => number;
83
+ bumpConnectGeneration: () => void;
84
+ getConnecting: () => Promise<void> | undefined;
85
+ setConnecting: (value: Promise<void> | undefined) => void;
86
+ fileTreeLoaded: () => boolean;
87
+ setFileTreeLoaded: (value: boolean) => void;
88
+ initialSessionLoadDone: () => boolean;
89
+ setInitialSessionLoadDone: (value: boolean) => void;
90
+ loadFileTree: () => Promise<void>;
91
+ loadFolderChildren: (path: string) => Promise<void>;
92
+ handleFileOpen: (path: string) => Promise<void>;
93
+ handleEditorSave: (path: string) => Promise<void>;
94
+ handleRestoreDefault: (path: string) => Promise<{
95
+ success: boolean;
96
+ error?: string;
97
+ }>;
98
+ loadSessions: () => Promise<void>;
99
+ handleCommand: (name: string, args?: string) => Promise<void>;
100
+ beforeMessageSend: (detail: {
101
+ message: {
102
+ content: string;
103
+ metadata?: Record<string, unknown>;
104
+ };
105
+ }) => Promise<boolean>;
106
+ showRestoreConfirmDialog: (path: string, root: ShadowRoot) => Promise<boolean>;
107
+ handleLoginRequested: (event: Event) => void;
108
+ dispatchClearActiveInput: () => void;
109
+ getShadowRoot: () => ShadowRoot;
110
+ findScrollableParent: (el: Element) => Element | null;
111
+ scheduleAutoSave: (filePath: string) => void;
112
+ log: Logger;
113
+ }
114
+ /**
115
+ * EventBindingController centralizes all DOM event listener management.
116
+ *
117
+ * Reduces rtc-agent.ts size by ~300 lines by extracting:
118
+ * - 30+ bound handler declarations (arrow functions as class fields)
119
+ * - Event listener attachment in connectedCallback
120
+ * - Event listener removal in disconnectedCallback
121
+ *
122
+ * @example
123
+ * ```typescript
124
+ * // In rtc-agent.ts connectedCallback:
125
+ * this._eventBindings = new EventBindingController(this, deps);
126
+ * this._eventBindings.bindEvents(this);
127
+ *
128
+ * // In disconnectedCallback:
129
+ * this._eventBindings.unbindEvents(this);
130
+ * ```
131
+ */
132
+ export declare class EventBindingController implements ReactiveController {
133
+ host: ReactiveControllerHost;
134
+ private deps;
135
+ private _boundOnMinimize;
136
+ private _boundOnMaximize;
137
+ private _boundOnRestore;
138
+ private _boundOnLoginRequested;
139
+ private _boundOnLogout;
140
+ private _boundOnNewSession;
141
+ private _boundOnSessionDeleteRequested;
142
+ private _boundOnSessionRenameConfirmed;
143
+ private _boundOnInputSubmit;
144
+ private _boundOnForkInitiated;
145
+ private _boundOnStopRequested;
146
+ private _boundOnResendMessage;
147
+ private _boundOnToastRequested;
148
+ private _boundOnToastClose;
149
+ private _boundOnCommandRequested;
150
+ private _boundOnActivityChange;
151
+ private _boundOnFileSelect;
152
+ private _boundOnFolderToggle;
153
+ private _boundOnFileExplorerRefresh;
154
+ private _boundOnEditorAreaSave;
155
+ private _boundOnEditorAreaTabClose;
156
+ private _boundOnEditorAreaTabSelect;
157
+ private _boundOnEditorAreaContentChange;
158
+ private _boundOnEditorAreaViewModeChange;
159
+ private _boundOnEditorAreaCursorMove;
160
+ private _boundOnEditorAreaRestoreDefault;
161
+ private _boundOnChatLayoutSessionSelect;
162
+ private _boundOnChatLayoutTabActivate;
163
+ private _boundOnChatLayoutTabClose;
164
+ private _boundOnKeydown;
165
+ private _boundOnWheel;
166
+ private _boundOnDrawerClose;
167
+ constructor(host: ReactiveControllerHost, deps: EventBindingDeps);
168
+ hostConnected(): void;
169
+ hostDisconnected(): void;
170
+ /**
171
+ * Initialize all bound event handlers.
172
+ *
173
+ * Each handler is an arrow function that captures `this` and delegates
174
+ * to the appropriate controller or callback. Handlers are stored as
175
+ * instance fields so they can be removed in unbindEvents.
176
+ */
177
+ private _initializeHandlers;
178
+ /**
179
+ * Bind all event listeners to the specified element.
180
+ *
181
+ * Call this in connectedCallback after controllers are initialized.
182
+ *
183
+ * @param element The element to attach listeners to (typically `this` in rtc-agent.ts)
184
+ */
185
+ bindEvents(element: Element): void;
186
+ /**
187
+ * Unbind all event listeners from the specified element.
188
+ *
189
+ * Call this in disconnectedCallback to prevent memory leaks.
190
+ *
191
+ * @param element The element to detach listeners from (typically `this` in rtc-agent.ts)
192
+ */
193
+ unbindEvents(element: Element): void;
194
+ /**
195
+ * Get handler references for use in templates.
196
+ *
197
+ * Some handlers are used directly in templates (e.g., `@click=${handler}`).
198
+ * This getter provides access to those handlers.
199
+ */
200
+ get handlers(): {
201
+ onLoginRequested: (event: Event) => void;
202
+ };
203
+ }
204
+ //# sourceMappingURL=event-binding.controller.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"event-binding.controller.d.ts","sourceRoot":"","sources":["../../src/controllers/event-binding.controller.ts"],"names":[],"mappings":"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"}
@@ -1,10 +1,10 @@
1
1
  /**
2
2
  * File Explorer Controller
3
3
  *
4
- * 管理文件树状态:展开/折叠、选中、加载状态。
4
+ * Manages file tree state: expand/collapse, selection, loading state.
5
5
  *
6
- * 状态存储在 Controller 内部(expandedPaths, loadingPaths),
7
- * 而非 FileNode 对象上,便于批量操作(expandAll/collapseAll)。
6
+ * State is stored inside the Controller (expandedPaths, loadingPaths),
7
+ * rather than on FileNode objects, for easier batch operations (expandAll/collapseAll).
8
8
  *
9
9
  * Provided by: <rtc-agent> (root)
10
10
  */
@@ -30,12 +30,12 @@ export declare class FileExplorerController implements ReactiveController {
30
30
  private _updateChildren;
31
31
  private _reset;
32
32
  /**
33
- * 递归收集所有文件夹路径
33
+ * Recursively collect all folder paths
34
34
  */
35
35
  private _collectFolderPaths;
36
36
  /**
37
- * 递归更新指定路径节点的子项
38
- * 返回新的根节点(不可变更新)
37
+ * Recursively update children of the node at the given path
38
+ * Returns new root node (immutable update)
39
39
  */
40
40
  private _updateNodeChildren;
41
41
  }
@@ -0,0 +1,67 @@
1
+ /**
2
+ * Function Debug Controller
3
+ *
4
+ * Manages the function debugger state: selected function, params, logs, history.
5
+ * Handles function execution with log capture and history persistence via IndexedDB.
6
+ *
7
+ * Consumed by: <rtc-function-tree>, <rtc-function-debugger>, <rtc-function-params>,
8
+ * <rtc-function-console>, <rtc-function-history>
9
+ * Provided by: <rtc-agent> (root)
10
+ */
11
+ import type { ReactiveController, ReactiveControllerHost } from 'lit';
12
+ import type { FunctionRegistry } from '../core/function-registry.js';
13
+ import { type FunctionDebugActions, type FunctionDebugContextValue } from '../contexts/function-debug.js';
14
+ import type { WorkerBridge } from '../worker-bridge.js';
15
+ export declare class FunctionDebugController implements ReactiveController {
16
+ host: ReactiveControllerHost;
17
+ private _registry;
18
+ private _workerBridge;
19
+ private _state;
20
+ /** Cursor cache for efficient pagination: page -> cursor */
21
+ private _cursorCache;
22
+ readonly actions: FunctionDebugActions;
23
+ get value(): FunctionDebugContextValue;
24
+ constructor(host: ReactiveControllerHost);
25
+ hostConnected(): void;
26
+ hostDisconnected(): void;
27
+ /**
28
+ * Set the function registry
29
+ *
30
+ * Called by <rtc-agent> when the registry is available.
31
+ */
32
+ setRegistry(registry: FunctionRegistry | null): void;
33
+ /**
34
+ * Set the worker bridge for IndexedDB access
35
+ *
36
+ * Called by <rtc-agent> when the worker bridge is available.
37
+ * Automatically loads the first page of history when bridge becomes available.
38
+ */
39
+ set workerBridge(bridge: WorkerBridge | null);
40
+ get workerBridge(): WorkerBridge | null;
41
+ private _selectFunction;
42
+ private _updateParams;
43
+ /**
44
+ * Execute the currently selected function
45
+ *
46
+ * @param clearLogs - Whether to clear logs before execution (default: true)
47
+ */
48
+ private _execute;
49
+ /** Execute from a history item: restore params and re-run (append logs, don't clear) */
50
+ private _executeFromHistory;
51
+ /** Load a history item's params and logs to the current view (without executing) */
52
+ private _loadFromHistory;
53
+ private _clearLogs;
54
+ private _clearHistory;
55
+ private _addLog;
56
+ private _addToHistory;
57
+ private _loadHistoryPage;
58
+ private _setHistoryFilter;
59
+ /**
60
+ * Generate default parameter values from function definition
61
+ *
62
+ * Reuses `getExampleValue` from markdown-generator to produce
63
+ * meaningful defaults from OpenAPI schema (example > default > type-based).
64
+ */
65
+ private _generateDefaultParams;
66
+ }
67
+ //# sourceMappingURL=function-debug.controller.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"function-debug.controller.d.ts","sourceRoot":"","sources":["../../src/controllers/function-debug.controller.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AACH,OAAO,KAAK,EAAC,kBAAkB,EAAE,sBAAsB,EAAC,MAAM,KAAK,CAAC;AACpE,OAAO,KAAK,EAAC,gBAAgB,EAAC,MAAM,8BAA8B,CAAC;AAEnE,OAAO,EAEH,KAAK,oBAAoB,EACzB,KAAK,yBAAyB,EACjC,MAAM,+BAA+B,CAAC;AAQvC,OAAO,KAAK,EAAC,YAAY,EAAC,MAAM,qBAAqB,CAAC;AAStD,qBAAa,uBAAwB,YAAW,kBAAkB;IAC9D,IAAI,EAAE,sBAAsB,CAAC;IAE7B,OAAO,CAAC,SAAS,CAAiC;IAClD,OAAO,CAAC,aAAa,CAA6B;IAClD,OAAO,CAAC,MAAM,CAAyD;IACvE,4DAA4D;IAC5D,OAAO,CAAC,YAAY,CAAyC;IAE7D,QAAQ,CAAC,OAAO,EAAE,oBAAoB,CAAC;IAEvC,IAAI,KAAK,IAAI,yBAAyB,CAErC;gBAEW,IAAI,EAAE,sBAAsB;IAgBxC,aAAa;IAIb,gBAAgB;IAEhB;;;;OAIG;IACH,WAAW,CAAC,QAAQ,EAAE,gBAAgB,GAAG,IAAI;IAI7C;;;;;OAKG;IACH,IAAI,YAAY,CAAC,MAAM,EAAE,YAAY,GAAG,IAAI,EAQ3C;IAED,IAAI,YAAY,IAAI,YAAY,GAAG,IAAI,CAEtC;IAID,OAAO,CAAC,eAAe;IAiBvB,OAAO,CAAC,aAAa;IAKrB;;;;OAIG;YACW,QAAQ;IA6EtB,wFAAwF;YAC1E,mBAAmB;IAqBjC,oFAAoF;IACpF,OAAO,CAAC,gBAAgB;IAiBxB,OAAO,CAAC,UAAU;YAKJ,aAAa;IA6B3B,OAAO,CAAC,OAAO;YAgBD,aAAa;YAeb,gBAAgB;YA+EhB,iBAAiB;IAc/B;;;;;OAKG;IACH,OAAO,CAAC,sBAAsB;CAmBjC"}
@@ -0,0 +1,31 @@
1
+ /**
2
+ * Functions Controller
3
+ *
4
+ * Manages the function registry state and provides it via Lit Context.
5
+ *
6
+ * Consumed by: <rtc-function-tree>, <rtc-functions-layout>
7
+ * Provided by: <rtc-agent> (root)
8
+ */
9
+ import type { ReactiveController, ReactiveControllerHost } from 'lit';
10
+ import type { FunctionRegistry } from '../core/function-registry.js';
11
+ import { type FunctionsActions, type FunctionsContextValue } from '../contexts/functions.js';
12
+ export declare class FunctionsController implements ReactiveController {
13
+ host: ReactiveControllerHost;
14
+ private _registry;
15
+ private _state;
16
+ readonly actions: FunctionsActions;
17
+ get value(): FunctionsContextValue;
18
+ constructor(host: ReactiveControllerHost);
19
+ hostConnected(): void;
20
+ hostDisconnected(): void;
21
+ /**
22
+ * Set the function registry
23
+ *
24
+ * Called by <rtc-agent> when the registry is available.
25
+ * Triggers a refresh of the function list.
26
+ */
27
+ setRegistry(registry: FunctionRegistry | null): void;
28
+ /** Refresh function list from registry */
29
+ private _refresh;
30
+ }
31
+ //# sourceMappingURL=functions.controller.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"functions.controller.d.ts","sourceRoot":"","sources":["../../src/controllers/functions.controller.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AACH,OAAO,KAAK,EAAC,kBAAkB,EAAE,sBAAsB,EAAC,MAAM,KAAK,CAAC;AACpE,OAAO,KAAK,EAAC,gBAAgB,EAAC,MAAM,8BAA8B,CAAC;AACnE,OAAO,EAA+C,KAAK,gBAAgB,EAAE,KAAK,qBAAqB,EAAC,MAAM,0BAA0B,CAAC;AAKzI,qBAAa,mBAAoB,YAAW,kBAAkB;IAC1D,IAAI,EAAE,sBAAsB,CAAC;IAE7B,OAAO,CAAC,SAAS,CAAiC;IAClD,OAAO,CAAC,MAAM,CAAgD;IAE9D,QAAQ,CAAC,OAAO,EAAE,gBAAgB,CAAC;IAEnC,IAAI,KAAK,IAAI,qBAAqB,CAEjC;gBAEW,IAAI,EAAE,sBAAsB;IAQxC,aAAa;IACb,gBAAgB;IAEhB;;;;;OAKG;IACH,WAAW,CAAC,QAAQ,EAAE,gBAAgB,GAAG,IAAI;IAU7C,0CAA0C;IAC1C,OAAO,CAAC,QAAQ;CAiBnB"}
@@ -12,7 +12,7 @@
12
12
  * Consumed by: `<rtc-content-area>`, `<rtc-message-list>`, `<rtc-input-area>`
13
13
  */
14
14
  import type { ReactiveController, ReactiveControllerHost } from 'lit';
15
- import type { MessageActions } from '../types/index.js';
15
+ import type { Message, MessageActions } from '../types/index.js';
16
16
  import type { MessageContextValue } from '../contexts/message.js';
17
17
  import type { PersistenceLayer } from '@rtc-agent/persistence';
18
18
  import type { SessionController } from './session.controller.js';
@@ -78,6 +78,16 @@ export declare class MessageController implements ReactiveController {
78
78
  * Called by rtc-message-list when virtual scroll needs to load newer messages.
79
79
  */
80
80
  loadNewerForSession(sessionId: string): Promise<void>;
81
+ /**
82
+ * Load all messages for a session from persistence (for export/commands).
83
+ *
84
+ * Unlike the paginated UI methods, this loads the complete message history
85
+ * without pagination limits. Use sparingly — for large sessions this loads
86
+ * all messages into memory.
87
+ *
88
+ * Returns empty array if persistence is not available or session has no messages.
89
+ */
90
+ loadAllMessages(sessionId: string): Promise<Message[]>;
81
91
  /**
82
92
  * Evict a session from the repository cache.
83
93
  * Called when a tab is closed to free memory.
@@ -1 +1 @@
1
- {"version":3,"file":"message.controller.d.ts","sourceRoot":"","sources":["../../src/controllers/message.controller.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AACH,OAAO,KAAK,EAAC,kBAAkB,EAAE,sBAAsB,EAAC,MAAM,KAAK,CAAC;AACpE,OAAO,KAAK,EAAwB,cAAc,EAA2B,MAAM,mBAAmB,CAAC;AACvG,OAAO,KAAK,EAAC,mBAAmB,EAAC,MAAM,wBAAwB,CAAC;AAChE,OAAO,KAAK,EAAC,gBAAgB,EAAe,MAAM,wBAAwB,CAAC;AAC3E,OAAO,KAAK,EAAC,iBAAiB,EAAC,MAAM,yBAAyB,CAAC;AAE/D,OAAO,EAAC,iBAAiB,EAAoB,MAAM,0BAA0B,CAAC;AAK9E,qBAAa,iBAAkB,YAAW,kBAAkB;IACxD,IAAI,EAAE,sBAAsB,GAAG,WAAW,CAAC;IAE3C,oDAAoD;IACpD,OAAO,CAAC,WAAW,CAAC,CAAoB;IAExC,yEAAyE;IACzE,OAAO,CAAC,YAAY,CAAC,CAAmB;IAExC,0EAA0E;IAC1E,OAAO,CAAC,kBAAkB,CAAC,CAAoB;IAE/C;;;;OAIG;IACH,OAAO,CAAC,oBAAoB,CAAoC;IAEhE,QAAQ,CAAC,OAAO,EAAE,cAAc,CAAC;IAEjC,+DAA+D;IAC/D,IAAI,WAAW,CAAC,KAAK,EAAE,gBAAgB,EAmCtC;IAED;;;OAGG;IACH,OAAO,CAAC,YAAY;IAKpB;;;;;;OAMG;IACH,OAAO,CAAC,kBAAkB;IAI1B,4DAA4D;IAC5D,IAAI,UAAU,IAAI,iBAAiB,CAKlC;IAED,sEAAsE;IACtE,IAAI,iBAAiB,CAAC,UAAU,EAAE,iBAAiB,EAElD;IAED,IAAI,KAAK,IAAI,mBAAmB,CAoB/B;gBAEW,IAAI,EAAE,sBAAsB,GAAG,WAAW;IAgBtD,aAAa;IACb,gBAAgB;IAOhB;;;;;;OAMG;IACH,uBAAuB,CAAC,OAAO,EAAE,MAAM;IAkBvC;;;OAGG;IACG,oBAAoB,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAU5D;;;OAGG;IACG,kBAAkB,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAM1D;;;OAGG;IACG,mBAAmB,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAM3D;;;OAGG;IACH,YAAY,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI;IAIrC;;;;;;;;;;OAUG;IACG,oBAAoB,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAwC3D;;;OAGG;IACH,OAAO,CAAC,eAAe;IAsBvB;;;;;OAKG;IACG,MAAM,CAAC,QAAQ,CAAC,EAAE,MAAM;IAsB9B;;;;;;;;;;OAUG;IACH,OAAO,CAAC,cAAc;IA2BtB;;;;;;;;;;;OAWG;IACH,OAAO,CAAC,gBAAgB;YAgBV,YAAY;IAkE1B;;OAEG;YACW,cAAc;IAiC5B;;;;;;OAMG;YACW,YAAY;YAoDZ,aAAa;IA6F3B;;;;;;;;;;OAUG;IACH,OAAO,CAAC,cAAc;IAUtB;;;;;OAKG;IACG,qBAAqB,CAAC,SAAS,EAAE,MAAM,EAAE,KAAK,SAAM,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC;IAkB9E;;;;;;;OAOG;IACH,OAAO,CAAC,uBAAuB;IA2B/B,OAAO,CAAC,iBAAiB;IA4BzB,OAAO,CAAC,oBAAoB;IAsB5B,OAAO,CAAC,oBAAoB;IAgB5B,OAAO,CAAC,cAAc;CAgBzB"}
1
+ {"version":3,"file":"message.controller.d.ts","sourceRoot":"","sources":["../../src/controllers/message.controller.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AACH,OAAO,KAAK,EAAC,kBAAkB,EAAE,sBAAsB,EAAC,MAAM,KAAK,CAAC;AACpE,OAAO,KAAK,EAAC,OAAO,EAAgB,cAAc,EAA2B,MAAM,mBAAmB,CAAC;AACvG,OAAO,KAAK,EAAC,mBAAmB,EAAC,MAAM,wBAAwB,CAAC;AAChE,OAAO,KAAK,EAAC,gBAAgB,EAAe,MAAM,wBAAwB,CAAC;AAC3E,OAAO,KAAK,EAAC,iBAAiB,EAAC,MAAM,yBAAyB,CAAC;AAE/D,OAAO,EAAC,iBAAiB,EAAoB,MAAM,0BAA0B,CAAC;AAK9E,qBAAa,iBAAkB,YAAW,kBAAkB;IACxD,IAAI,EAAE,sBAAsB,GAAG,WAAW,CAAC;IAE3C,oDAAoD;IACpD,OAAO,CAAC,WAAW,CAAC,CAAoB;IAExC,yEAAyE;IACzE,OAAO,CAAC,YAAY,CAAC,CAAmB;IAExC,0EAA0E;IAC1E,OAAO,CAAC,kBAAkB,CAAC,CAAoB;IAE/C;;;;OAIG;IACH,OAAO,CAAC,oBAAoB,CAAoC;IAEhE,QAAQ,CAAC,OAAO,EAAE,cAAc,CAAC;IAEjC,+DAA+D;IAC/D,IAAI,WAAW,CAAC,KAAK,EAAE,gBAAgB,EAmCtC;IAED;;;OAGG;IACH,OAAO,CAAC,YAAY;IAKpB;;;;;;OAMG;IACH,OAAO,CAAC,kBAAkB;IAI1B,4DAA4D;IAC5D,IAAI,UAAU,IAAI,iBAAiB,CAKlC;IAED,sEAAsE;IACtE,IAAI,iBAAiB,CAAC,UAAU,EAAE,iBAAiB,EAElD;IAED,IAAI,KAAK,IAAI,mBAAmB,CAoB/B;gBAEW,IAAI,EAAE,sBAAsB,GAAG,WAAW;IAgBtD,aAAa;IACb,gBAAgB;IAOhB;;;;;;OAMG;IACH,uBAAuB,CAAC,OAAO,EAAE,MAAM;IAkBvC;;;OAGG;IACG,oBAAoB,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAU5D;;;OAGG;IACG,kBAAkB,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAM1D;;;OAGG;IACG,mBAAmB,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAM3D;;;;;;;;OAQG;IACG,eAAe,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,EAAE,CAAC;IAgB5D;;;OAGG;IACH,YAAY,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI;IAIrC;;;;;;;;;;OAUG;IACG,oBAAoB,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAiD3D;;;OAGG;IACH,OAAO,CAAC,eAAe;IAsBvB;;;;;OAKG;IACG,MAAM,CAAC,QAAQ,CAAC,EAAE,MAAM;IAsB9B;;;;;;;;;;OAUG;IACH,OAAO,CAAC,cAAc;IA2BtB;;;;;;;;;;;OAWG;IACH,OAAO,CAAC,gBAAgB;YAgBV,YAAY;IAkE1B;;OAEG;YACW,cAAc;IAiC5B;;;;;;OAMG;YACW,YAAY;YAoDZ,aAAa;IA6F3B;;;;;;;;;;OAUG;IACH,OAAO,CAAC,cAAc;IAUtB;;;;;OAKG;IACG,qBAAqB,CAAC,SAAS,EAAE,MAAM,EAAE,KAAK,SAAM,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC;IAkB9E;;;;;;;OAOG;IACH,OAAO,CAAC,uBAAuB;IA2B/B,OAAO,CAAC,iBAAiB;IA4BzB,OAAO,CAAC,oBAAoB;IAsB5B,OAAO,CAAC,oBAAoB;IAgB5B,OAAO,CAAC,cAAc;CAgBzB"}
@@ -1,18 +1,19 @@
1
1
  /**
2
2
  * Notification Controller
3
3
  *
4
- * 轻量级通知系统:监听 UIUpdateBus 的新消息事件,根据焦点检测逻辑
5
- * 触发声音提示、Toast 通知和最小化图标动画。
4
+ * Lightweight notification system: listens for new message events via UIUpdateBus,
5
+ * triggers sound alerts, toast notifications, and minimized icon animations
6
+ * based on focus detection logic.
6
7
  *
7
- * 架构:
8
- * - 订阅 UIUpdateBus 的 'message' 事件(按 entity 过滤)
9
- * - 通过 PersistenceLayer 查询消息所属 session
10
- * - 焦点检测:当前 session 收到消息不通知,其他 session 才通知
11
- * - 通知展示:正常模式 → Toast,最小化模式 → 图标动画
8
+ * Architecture:
9
+ * - Subscribes to UIUpdateBus 'message' events (filtered by entity)
10
+ * - Queries the message's session via PersistenceLayer
11
+ * - Focus detection: no notification for the current session; notify for other sessions
12
+ * - Notification display: normal mode → Toast, minimized mode → icon animation
12
13
  *
13
14
  * Corresponds to: `NotificationContext` (defined in `contexts/notification.ts`).
14
15
  * Provided by: `<rtc-agent>` (root)
15
- * Consumed by: 需要感知未读通知的组件
16
+ * Consumed by: Components that need to be aware of unread notifications
16
17
  */
17
18
  import type { ReactiveController, ReactiveControllerHost } from 'lit';
18
19
  import type { NotificationContextValue, NotificationActions } from '../contexts/notification.js';
@@ -35,63 +36,66 @@ export declare class NotificationController implements ReactiveController {
35
36
  get value(): NotificationContextValue;
36
37
  private _busUnsubscribe?;
37
38
  private _sounds;
38
- /** 延迟加载音效的定时器(非关键音效,组件卸载时需清理) */
39
+ /** Timer for deferred sound loading (non-critical sounds, cleaned up on unmount) */
39
40
  private _deferredSoundTimer?;
40
- /** requestIdleCallback 返回的句柄,hostDisconnected 时用于取消尚未触发的 idle 回调。 */
41
+ /** Handle returned by requestIdleCallback, used in hostDisconnected to cancel untriggered idle callbacks. */
41
42
  private _idleCallbackId?;
42
- /** 通知节流:防止快速连续通知导致 UI 卡顿 */
43
+ /** Notification throttle: prevent UI jank from rapid successive notifications */
43
44
  private _lastNotifyTime;
44
45
  private static readonly NOTIFY_THROTTLE_MS;
45
46
  /** Fallback delay (ms) when `requestIdleCallback` is available but hasn't fired yet. */
46
47
  private static readonly IDLE_FALLBACK_DELAY_MS;
47
48
  /** Delay (ms) for deferred sound loading when `requestIdleCallback` is not available. */
48
49
  private static readonly DEFERRED_SOUND_DELAY_MS;
50
+ /** AbortController for async operations, aborted on hostDisconnected to prevent stale operations */
51
+ private _abortController;
49
52
  constructor(host: ReactiveControllerHost & HTMLElement);
50
53
  hostConnected(): void;
51
54
  hostDisconnected(): void;
52
55
  /**
53
- * 预加载提示音
56
+ * Preload notification sounds
54
57
  *
55
- * 关键音效(message)立即加载;非关键音效延迟加载以优化首屏性能。
56
- * 加载失败时降级处理:不影响 Toast 和动画功能。
58
+ * Critical sounds (message) load immediately; non-critical sounds load deferred
59
+ * to optimize first-paint performance. Load failures degrade gracefully:
60
+ * Toast and animation features are unaffected.
57
61
  *
58
- * 注意:音效文件路径在构建时应确保存在,运行时加载失败会降级处理。
62
+ * Note: sound file paths should be verified at build time; runtime load failures degrade gracefully.
59
63
  */
60
64
  private _preloadSounds;
61
65
  private _loadSound;
62
66
  private _playSound;
63
67
  /**
64
- * 订阅 UIUpdateBus 的新消息事件
68
+ * Subscribe to new message events from UIUpdateBus
65
69
  *
66
- * 使用按 entity 过滤的订阅模式(参考 rtc-input-area 用法)。
67
- * 仅监听 content 字段的 created 事件(消息内容首次写入时触发)。
70
+ * Uses entity-filtered subscription pattern (see rtc-input-area usage).
71
+ * Only listens for 'created' events on the content field (triggered on first message write).
68
72
  */
69
73
  private _subscribeToMessages;
70
74
  private _handleNewMessage;
71
75
  /**
72
- * 判断是否应该触发通知
76
+ * Determine whether a notification should be triggered
73
77
  *
74
- * 场景:
75
- * - 用户在 session A 看消息,session B 收到新消息 → 通知
76
- * - 用户在 session A 看消息,session A 收到新消息 → 不通知
77
- * - 用户没在看任何 session → 通知所有新消息
78
- * - 用户禁用通知 → 所有消息都不通知
78
+ * Scenarios:
79
+ * - User is viewing session A, session B receives a new message → notify
80
+ * - User is viewing session A, session A receives a new message → do not notify
81
+ * - User is not viewing any session → notify for all new messages
82
+ * - User has disabled notifications → no notifications for any messages
79
83
  */
80
84
  private _shouldNotify;
81
85
  private _triggerNotification;
82
86
  private _showToast;
83
87
  /**
84
- * 跳转到目标 session 并清除通知状态
88
+ * Navigate to the target session and clear notification state
85
89
  *
86
- * 流程:切换 session → 标记已读 → 派发 rtc-notification-click 事件
90
+ * Flow: switch session → mark as read → dispatch rtc-notification-click event
87
91
  */
88
92
  private _navigateToSession;
89
93
  /**
90
- * 触发最小化图标脉冲动画
94
+ * Trigger minimized icon pulse animation
91
95
  *
92
- * 通过 host 元素设置 data-notification 属性,
93
- * CSS 通过 `:host([data-notification])` 选择器触发动画。
94
- * 动画会一直持续,直到用户展开窗口或点击 bubble。
96
+ * Sets the data-notification attribute on the host element;
97
+ * CSS triggers animation via the `:host([data-notification])` selector.
98
+ * Animation persists until the user expands the window or clicks the bubble.
95
99
  */
96
100
  private _animateMinimizeIcon;
97
101
  private _clearAnimation;
@@ -1 +1 @@
1
- {"version":3,"file":"notification.controller.d.ts","sourceRoot":"","sources":["../../src/controllers/notification.controller.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AACH,OAAO,KAAK,EAAC,kBAAkB,EAAE,sBAAsB,EAAC,MAAM,KAAK,CAAC;AAEpE,OAAO,KAAK,EAAC,wBAAwB,EAAqB,mBAAmB,EAAC,MAAM,6BAA6B,CAAC;AAElH,OAAO,KAAK,EAAC,iBAAiB,EAAC,MAAM,yBAAyB,CAAC;AAC/D,OAAO,KAAK,EAAC,iBAAiB,EAAC,MAAM,yBAAyB,CAAC;AAC/D,OAAO,KAAK,EAAC,eAAe,EAAC,MAAM,uBAAuB,CAAC;AAC3D,OAAO,KAAK,EAAC,kBAAkB,EAAC,MAAM,0BAA0B,CAAC;AACjE,OAAO,KAAK,EAAC,qBAAqB,EAAC,MAAM,8BAA8B,CAAC;AACxE,OAAO,KAAK,EAAC,gBAAgB,EAAC,MAAM,wBAAwB,CAAC;AAiB7D,qBAAa,sBAAuB,YAAW,kBAAkB;IAC7D,IAAI,EAAE,sBAAsB,GAAG,WAAW,CAAC;IAG3C,iBAAiB,CAAC,EAAE,iBAAiB,CAAC;IACtC,iBAAiB,CAAC,EAAE,iBAAiB,CAAC;IACtC,eAAe,CAAC,EAAE,eAAe,CAAC;IAClC,qBAAqB,CAAC,EAAE,qBAAqB,CAAC;IAC9C,kBAAkB,CAAC,EAAE,kBAAkB,CAAC;IACxC,WAAW,CAAC,EAAE,gBAAgB,CAAC;IAG/B,OAAO,CAAC,MAAM,CAAsD;IAEpE,QAAQ,CAAC,OAAO,EAAE,mBAAmB,CAAC;IAEtC,IAAI,KAAK,IAAI,wBAAwB,CAEpC;IAGD,OAAO,CAAC,eAAe,CAAC,CAAa;IACrC,OAAO,CAAC,OAAO,CAAuC;IACtD,iCAAiC;IACjC,OAAO,CAAC,mBAAmB,CAAC,CAAgC;IAC5D,qEAAqE;IACrE,OAAO,CAAC,eAAe,CAAC,CAAS;IACjC,4BAA4B;IAC5B,OAAO,CAAC,eAAe,CAAK;IAC5B,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,kBAAkB,CAAO;IACjD,wFAAwF;IACxF,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,sBAAsB,CAAQ;IACtD,yFAAyF;IACzF,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,uBAAuB,CAAO;gBAE1C,IAAI,EAAE,sBAAsB,GAAG,WAAW;IAWtD,aAAa,IAAI,IAAI;IAKrB,gBAAgB,IAAI,IAAI;IAiBxB;;;;;;;OAOG;IACH,OAAO,CAAC,cAAc;IAuDtB,OAAO,CAAC,UAAU;IAuBlB,OAAO,CAAC,UAAU;IAqBlB;;;;;OAKG;IACH,OAAO,CAAC,oBAAoB;YAad,iBAAiB;IA4B/B;;;;;;;;OAQG;IACH,OAAO,CAAC,aAAa;IAmBrB,OAAO,CAAC,oBAAoB;IA0B5B,OAAO,CAAC,UAAU;IA0BlB;;;;OAIG;IACH,OAAO,CAAC,kBAAkB;IAe1B;;;;;;OAMG;IACH,OAAO,CAAC,oBAAoB;IAK5B,OAAO,CAAC,eAAe;IAMvB,OAAO,CAAC,WAAW;IAMnB,OAAO,CAAC,SAAS;CAKpB"}
1
+ {"version":3,"file":"notification.controller.d.ts","sourceRoot":"","sources":["../../src/controllers/notification.controller.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AACH,OAAO,KAAK,EAAC,kBAAkB,EAAE,sBAAsB,EAAC,MAAM,KAAK,CAAC;AAEpE,OAAO,KAAK,EAAC,wBAAwB,EAAqB,mBAAmB,EAAC,MAAM,6BAA6B,CAAC;AAElH,OAAO,KAAK,EAAC,iBAAiB,EAAC,MAAM,yBAAyB,CAAC;AAC/D,OAAO,KAAK,EAAC,iBAAiB,EAAC,MAAM,yBAAyB,CAAC;AAC/D,OAAO,KAAK,EAAC,eAAe,EAAC,MAAM,uBAAuB,CAAC;AAC3D,OAAO,KAAK,EAAC,kBAAkB,EAAC,MAAM,0BAA0B,CAAC;AACjE,OAAO,KAAK,EAAC,qBAAqB,EAAC,MAAM,8BAA8B,CAAC;AACxE,OAAO,KAAK,EAAC,gBAAgB,EAAC,MAAM,wBAAwB,CAAC;AAkB7D,qBAAa,sBAAuB,YAAW,kBAAkB;IAC7D,IAAI,EAAE,sBAAsB,GAAG,WAAW,CAAC;IAG3C,iBAAiB,CAAC,EAAE,iBAAiB,CAAC;IACtC,iBAAiB,CAAC,EAAE,iBAAiB,CAAC;IACtC,eAAe,CAAC,EAAE,eAAe,CAAC;IAClC,qBAAqB,CAAC,EAAE,qBAAqB,CAAC;IAC9C,kBAAkB,CAAC,EAAE,kBAAkB,CAAC;IACxC,WAAW,CAAC,EAAE,gBAAgB,CAAC;IAG/B,OAAO,CAAC,MAAM,CAAsD;IAEpE,QAAQ,CAAC,OAAO,EAAE,mBAAmB,CAAC;IAEtC,IAAI,KAAK,IAAI,wBAAwB,CAEpC;IAGD,OAAO,CAAC,eAAe,CAAC,CAAa;IACrC,OAAO,CAAC,OAAO,CAAuC;IACtD,oFAAoF;IACpF,OAAO,CAAC,mBAAmB,CAAC,CAAgC;IAC5D,6GAA6G;IAC7G,OAAO,CAAC,eAAe,CAAC,CAAS;IACjC,iFAAiF;IACjF,OAAO,CAAC,eAAe,CAAK;IAC5B,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,kBAAkB,CAAO;IACjD,wFAAwF;IACxF,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,sBAAsB,CAAQ;IACtD,yFAAyF;IACzF,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,uBAAuB,CAAO;IACtD,oGAAoG;IACpG,OAAO,CAAC,gBAAgB,CAAyB;gBAErC,IAAI,EAAE,sBAAsB,GAAG,WAAW;IAWtD,aAAa,IAAI,IAAI;IAKrB,gBAAgB,IAAI,IAAI;IAoBxB;;;;;;;;OAQG;IACH,OAAO,CAAC,cAAc;IAuDtB,OAAO,CAAC,UAAU;IAuBlB,OAAO,CAAC,UAAU;IAqBlB;;;;;OAKG;IACH,OAAO,CAAC,oBAAoB;YAad,iBAAiB;IAyC/B;;;;;;;;OAQG;IACH,OAAO,CAAC,aAAa;IAmBrB,OAAO,CAAC,oBAAoB;IA0B5B,OAAO,CAAC,UAAU;IA0BlB;;;;OAIG;IACH,OAAO,CAAC,kBAAkB;IAe1B;;;;;;OAMG;IACH,OAAO,CAAC,oBAAoB;IAK5B,OAAO,CAAC,eAAe;IAMvB,OAAO,CAAC,WAAW;IAMnB,OAAO,CAAC,SAAS;CAKpB"}
@@ -33,6 +33,21 @@ export declare class PersistenceController implements ReactiveController {
33
33
  * Cleared on success (layer is set) or failure (so a retry can proceed).
34
34
  */
35
35
  private _connecting?;
36
+ /**
37
+ * Connection generation counter for race-condition prevention.
38
+ *
39
+ * When disconnect() clears `_connecting` while the underlying Promise is still
40
+ * in-flight, a subsequent connect() can set a new `_connecting`. When the OLD
41
+ * Promise finally resolves, its `finally` block would wrongly clear the NEW
42
+ * `_connecting`, leaving the new connection attempt invisible to the concurrency
43
+ * guard — leading to duplicate connection attempts and inconsistent state.
44
+ *
45
+ * Fix: each connection attempt captures the current generation; in `finally`,
46
+ * we only clear `_connecting` if the generation still matches. Any code path
47
+ * that invalidates an in-flight connection (disconnect) bumps the generation
48
+ * instead of just clearing `_connecting`, so stale Promises self-inhibit.
49
+ */
50
+ private _connectGeneration;
36
51
  private static readonly MAX_CONNECT_RETRIES;
37
52
  private static readonly CONNECT_RETRY_DELAY_MS;
38
53
  constructor(host: {
@@ -61,9 +76,9 @@ export declare class PersistenceController implements ReactiveController {
61
76
  /**
62
77
  * Get the MasterLock instance.
63
78
  *
64
- * MasterLock 封装 Web Locks API,用于 Master Tab 选举。
65
- * 每个 Tab 各自持有一个 MasterLock,自己判断是否为 Master。
66
- * 只有 Master Tab 的 RtcProcessor 会执行 RTC 工具调用。
79
+ * MasterLock wraps the Web Locks API for Master Tab election.
80
+ * Each Tab holds its own MasterLock and determines whether it is the Master.
81
+ * Only the Master Tab's RtcProcessor will execute RTC tool calls.
67
82
  *
68
83
  * @see docs/shared-worker-proposal.md §4.3
69
84
  */
@@ -87,41 +102,43 @@ export declare class PersistenceController implements ReactiveController {
87
102
  * The WorkerPersistenceAdapter wraps the Comlink proxy, presenting a
88
103
  * PersistenceLayer-compatible interface to the rest of the application.
89
104
  *
90
- * 支持重试:如果 Worker 初始化或连接失败,会自动重试。
105
+ * Supports retries: if Worker initialization or connection fails, it will automatically retry.
91
106
  */
92
107
  private _connectWorker;
93
108
  /**
94
- * 单次连接尝试
109
+ * Single connection attempt
95
110
  */
96
111
  private _connectWorkerOnce;
97
112
  /**
98
- * 清理失败的连接
113
+ * Clean up a failed connection
99
114
  */
100
115
  private _cleanupFailedConnection;
101
116
  /**
102
- * 延迟指定毫秒数
117
+ * Delay for the specified number of milliseconds
103
118
  */
104
119
  private _delay;
105
120
  /**
106
121
  * Disconnect and tear down the PersistenceLayer.
107
122
  *
108
- * - 先 reset offset,再 close layer
109
- * - 额外释放 MasterLock + 销毁 WorkerBridge
123
+ * - Increment the generation counter to invalidate the finally block of any old _connecting promise
124
+ * - Clear the _connecting promise to allow a new connection attempt
125
+ * - Reset offset first, then close the layer
126
+ * - Additionally release the MasterLock and destroy the WorkerBridge
110
127
  *
111
128
  * Call this on logout or when auth is lost.
112
129
  */
113
130
  disconnect(): Promise<void>;
114
131
  /**
115
- * 获取当前连接状态
132
+ * Get the current connection state.
116
133
  *
117
- * 通过 WorkerBridge 获取连接状态。
134
+ * Retrieves the connection state via WorkerBridge.
118
135
  */
119
136
  getConnectionState(): Promise<ConnectionState>;
120
137
  /**
121
- * 监听连接状态变更
138
+ * Listen for connection state changes.
122
139
  *
123
- * 监听 WorkerBridge 广播的连接状态变更事件。
124
- * 返回取消监听的函数。
140
+ * Subscribes to connection state change events broadcast by WorkerBridge.
141
+ * Returns a function that unsubscribes the listener.
125
142
  */
126
143
  onConnectionStateChange(listener: (event: ConnectionStateEvent) => void): () => void;
127
144
  }
@@ -1 +1 @@
1
- {"version":3,"file":"persistence.controller.d.ts","sourceRoot":"","sources":["../../src/controllers/persistence.controller.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AACH,OAAO,KAAK,EAAC,kBAAkB,EAAC,MAAM,KAAK,CAAC;AAE5C,OAAO,EACH,KAAK,gBAAgB,EAMxB,MAAM,wBAAwB,CAAC;AAEhC,OAAO,KAAK,EAAC,eAAe,EAAE,oBAAoB,EAAC,MAAM,mBAAmB,CAAC;AAG7E,OAAO,KAAK,EAAC,cAAc,EAAC,MAAM,sBAAsB,CAAC;AAKzD,OAAO,EAAC,YAAY,EAAC,MAAM,qBAAqB,CAAC;AACjD,OAAO,EAAC,UAAU,EAAC,MAAM,mBAAmB,CAAC;AAwM7C,qBAAa,qBAAsB,YAAW,kBAAkB;IAC5D,OAAO,CAAC,MAAM,CAAC,CAAmB;IAClC,OAAO,CAAC,KAAK,CAAiB;IAC9B,OAAO,CAAC,aAAa,CAAC,CAAe;IACrC,OAAO,CAAC,WAAW,CAAC,CAAa;IACjC,OAAO,CAAC,qBAAqB,CAAC,CAAS;IACvC,OAAO,CAAC,UAAU,CAAC,CAAS;IAE5B;;;;;OAKG;IACH,OAAO,CAAC,WAAW,CAAC,CAAgB;IAEpC,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,mBAAmB,CAAK;IAChD,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,sBAAsB,CAAQ;gBAGlD,IAAI,EAAE;QAAC,aAAa,CAAC,CAAC,EAAE,kBAAkB,GAAG,IAAI,CAAA;KAAC,EAClD,IAAI,EAAE,cAAc;IAMxB,wEAAwE;IACxE,IAAI,YAAY,CAAC,KAAK,EAAE,MAAM,GAAG,SAAS,EAEzC;IAED;;;;;;;;OAQG;IACH,IAAI,SAAS,CAAC,KAAK,EAAE,MAAM,GAAG,SAAS,EAEtC;IAED,qEAAqE;IACrE,IAAI,KAAK,IAAI,gBAAgB,GAAG,SAAS,CAExC;IAED,kDAAkD;IAClD,IAAI,WAAW,IAAI,OAAO,CAEzB;IAED;;OAEG;IACH,IAAI,YAAY,IAAI,YAAY,GAAG,SAAS,CAE3C;IAED;;;;;;;;OAQG;IACH,IAAI,UAAU,IAAI,UAAU,GAAG,SAAS,CAEvC;IAED,aAAa;IAIb,gBAAgB;IAIhB;;;;;;;;;OASG;IACG,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;IAyC9B;;;;;;;OAOG;YACW,cAAc;IA2B5B;;OAEG;YACW,kBAAkB;IAiDhC;;OAEG;YACW,wBAAwB;IAYtC;;OAEG;IACH,OAAO,CAAC,MAAM;IAId;;;;;;;OAOG;IACG,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;IA4BjC;;;;OAIG;IACG,kBAAkB,IAAI,OAAO,CAAC,eAAe,CAAC;IAOpD;;;;;OAKG;IACH,uBAAuB,CAAC,QAAQ,EAAE,CAAC,KAAK,EAAE,oBAAoB,KAAK,IAAI,GAAG,MAAM,IAAI;CAOvF"}
1
+ {"version":3,"file":"persistence.controller.d.ts","sourceRoot":"","sources":["../../src/controllers/persistence.controller.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AACH,OAAO,KAAK,EAAC,kBAAkB,EAAC,MAAM,KAAK,CAAC;AAE5C,OAAO,EACH,KAAK,gBAAgB,EAMxB,MAAM,wBAAwB,CAAC;AAEhC,OAAO,KAAK,EAAC,eAAe,EAAE,oBAAoB,EAAC,MAAM,mBAAmB,CAAC;AAG7E,OAAO,KAAK,EAAC,cAAc,EAAC,MAAM,sBAAsB,CAAC;AAKzD,OAAO,EAAC,YAAY,EAAC,MAAM,qBAAqB,CAAC;AACjD,OAAO,EAAC,UAAU,EAAC,MAAM,mBAAmB,CAAC;AAwM7C,qBAAa,qBAAsB,YAAW,kBAAkB;IAC5D,OAAO,CAAC,MAAM,CAAC,CAAmB;IAClC,OAAO,CAAC,KAAK,CAAiB;IAC9B,OAAO,CAAC,aAAa,CAAC,CAAe;IACrC,OAAO,CAAC,WAAW,CAAC,CAAa;IACjC,OAAO,CAAC,qBAAqB,CAAC,CAAS;IACvC,OAAO,CAAC,UAAU,CAAC,CAAS;IAE5B;;;;;OAKG;IACH,OAAO,CAAC,WAAW,CAAC,CAAgB;IAEpC;;;;;;;;;;;;;OAaG;IACH,OAAO,CAAC,kBAAkB,CAAK;IAE/B,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,mBAAmB,CAAK;IAChD,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,sBAAsB,CAAQ;gBAGlD,IAAI,EAAE;QAAC,aAAa,CAAC,CAAC,EAAE,kBAAkB,GAAG,IAAI,CAAA;KAAC,EAClD,IAAI,EAAE,cAAc;IAMxB,wEAAwE;IACxE,IAAI,YAAY,CAAC,KAAK,EAAE,MAAM,GAAG,SAAS,EAEzC;IAED;;;;;;;;OAQG;IACH,IAAI,SAAS,CAAC,KAAK,EAAE,MAAM,GAAG,SAAS,EAEtC;IAED,qEAAqE;IACrE,IAAI,KAAK,IAAI,gBAAgB,GAAG,SAAS,CAExC;IAED,kDAAkD;IAClD,IAAI,WAAW,IAAI,OAAO,CAEzB;IAED;;OAEG;IACH,IAAI,YAAY,IAAI,YAAY,GAAG,SAAS,CAE3C;IAED;;;;;;;;OAQG;IACH,IAAI,UAAU,IAAI,UAAU,GAAG,SAAS,CAEvC;IAED,aAAa;IAIb,gBAAgB;IAIhB;;;;;;;;;OASG;IACG,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;IA6D9B;;;;;;;OAOG;YACW,cAAc;IA2B5B;;OAEG;YACW,kBAAkB;IA2FhC;;OAEG;YACW,wBAAwB;IAYtC;;OAEG;IACH,OAAO,CAAC,MAAM;IAId;;;;;;;;;OASG;IACG,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;IAyEjC;;;;OAIG;IACG,kBAAkB,IAAI,OAAO,CAAC,eAAe,CAAC;IAOpD;;;;;OAKG;IACH,uBAAuB,CAAC,QAAQ,EAAE,CAAC,KAAK,EAAE,oBAAoB,KAAK,IAAI,GAAG,MAAM,IAAI;CAOvF"}