@peers-app/peers-ui 0.14.0 → 0.15.0

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 (438) hide show
  1. package/.github/workflows/publish.yml +8 -5
  2. package/babel.config.js +4 -4
  3. package/biome.json +191 -0
  4. package/dist/command-palette/command-palette-ui.d.ts +1 -2
  5. package/dist/command-palette/command-palette-ui.js +175 -244
  6. package/dist/command-palette/command-palette.js +65 -64
  7. package/dist/components/chat-overlay.d.ts +2 -2
  8. package/dist/components/chat-overlay.js +160 -217
  9. package/dist/components/checkbox.d.ts +5 -4
  10. package/dist/components/checkbox.js +4 -7
  11. package/dist/components/group-switcher.d.ts +1 -2
  12. package/dist/components/group-switcher.js +119 -159
  13. package/dist/components/input-date.d.ts +3 -3
  14. package/dist/components/input-date.js +6 -6
  15. package/dist/components/input-number.d.ts +7 -6
  16. package/dist/components/input-number.js +25 -20
  17. package/dist/components/input.d.ts +5 -4
  18. package/dist/components/input.js +4 -7
  19. package/dist/components/inverse-lazy-list.d.ts +3 -3
  20. package/dist/components/inverse-lazy-list.js +13 -47
  21. package/dist/components/io-schema-values.d.ts +5 -6
  22. package/dist/components/io-schema-values.js +28 -65
  23. package/dist/components/io-schema.d.ts +4 -5
  24. package/dist/components/io-schema.js +42 -79
  25. package/dist/components/lazy-list.d.ts +3 -3
  26. package/dist/components/lazy-list.js +38 -58
  27. package/dist/components/list-screen.d.ts +3 -8
  28. package/dist/components/list-screen.js +28 -23
  29. package/dist/components/loading-indicator.d.ts +1 -2
  30. package/dist/components/loading-indicator.js +2 -6
  31. package/dist/components/markdown-editor/autolink-plugin.js +5 -8
  32. package/dist/components/markdown-editor/editor-inline.d.ts +2 -3
  33. package/dist/components/markdown-editor/editor-inline.js +2 -6
  34. package/dist/components/markdown-editor/editor.d.ts +6 -6
  35. package/dist/components/markdown-editor/editor.js +9 -19
  36. package/dist/components/markdown-editor/markdown-plugin.d.ts +1 -1
  37. package/dist/components/markdown-editor/markdown-plugin.js +20 -21
  38. package/dist/components/markdown-editor/mention-node.d.ts +2 -2
  39. package/dist/components/markdown-editor/mention-node.js +24 -24
  40. package/dist/components/markdown-editor/mentions-plugin.d.ts +2 -2
  41. package/dist/components/markdown-editor/mentions-plugin.js +61 -62
  42. package/dist/components/markdown-editor/theme.js +28 -28
  43. package/dist/components/markdown-editor/toolbar.d.ts +2 -3
  44. package/dist/components/markdown-editor/toolbar.js +32 -49
  45. package/dist/components/markdown-with-mentions.d.ts +1 -1
  46. package/dist/components/markdown-with-mentions.js +43 -43
  47. package/dist/components/message-logs/message-logs.d.ts +1 -2
  48. package/dist/components/message-logs/message-logs.js +91 -116
  49. package/dist/components/messages/avatar.d.ts +3 -4
  50. package/dist/components/messages/avatar.js +37 -46
  51. package/dist/components/messages/channel-message-list.d.ts +5 -6
  52. package/dist/components/messages/channel-message-list.js +34 -34
  53. package/dist/components/messages/channel-view.d.ts +1 -2
  54. package/dist/components/messages/channel-view.js +23 -57
  55. package/dist/components/messages/message-compose.d.ts +3 -4
  56. package/dist/components/messages/message-compose.js +27 -38
  57. package/dist/components/messages/message-display.d.ts +2 -3
  58. package/dist/components/messages/message-display.js +42 -95
  59. package/dist/components/messages/thread-message-list.d.ts +4 -5
  60. package/dist/components/messages/thread-message-list.js +29 -29
  61. package/dist/components/router.d.ts +1 -2
  62. package/dist/components/router.js +58 -66
  63. package/dist/components/save-button.d.ts +3 -3
  64. package/dist/components/save-button.js +23 -33
  65. package/dist/components/sortable-list.d.ts +11 -12
  66. package/dist/components/sortable-list.js +42 -22
  67. package/dist/components/tabs.d.ts +3 -3
  68. package/dist/components/tabs.js +16 -47
  69. package/dist/components/tooltip.d.ts +4 -4
  70. package/dist/components/tooltip.js +4 -9
  71. package/dist/components/trust-level-badge.d.ts +2 -3
  72. package/dist/components/trust-level-badge.js +16 -16
  73. package/dist/components/trust-level-dropdown.d.ts +3 -4
  74. package/dist/components/trust-level-dropdown.js +32 -55
  75. package/dist/components/typeahead.d.ts +3 -3
  76. package/dist/components/typeahead.js +48 -89
  77. package/dist/components/voice-indicator.d.ts +2 -2
  78. package/dist/components/voice-indicator.js +93 -106
  79. package/dist/components/voice-subscribe-events.d.ts +32 -0
  80. package/dist/components/voice-subscribe-events.js +2 -0
  81. package/dist/globals.d.ts +3 -5
  82. package/dist/globals.js +22 -33
  83. package/dist/hooks.d.ts +5 -5
  84. package/dist/hooks.js +22 -12
  85. package/dist/hooks.test.js +129 -145
  86. package/dist/index.d.ts +9 -8
  87. package/dist/index.js +13 -12
  88. package/dist/mention-configs.d.ts +2 -2
  89. package/dist/mention-configs.js +55 -42
  90. package/dist/screens/assistants/assistant-config.d.ts +2 -3
  91. package/dist/screens/assistants/assistant-config.js +9 -22
  92. package/dist/screens/assistants/assistant-details.d.ts +1 -2
  93. package/dist/screens/assistants/assistant-details.js +13 -28
  94. package/dist/screens/assistants/assistant-info.d.ts +2 -3
  95. package/dist/screens/assistants/assistant-info.js +3 -17
  96. package/dist/screens/assistants/assistant-list.d.ts +1 -2
  97. package/dist/screens/assistants/assistant-list.js +15 -56
  98. package/dist/screens/assistants/assistant-tools.d.ts +2 -3
  99. package/dist/screens/assistants/assistant-tools.js +10 -24
  100. package/dist/screens/console-logs/console-logs-list.d.ts +1 -2
  101. package/dist/screens/console-logs/console-logs-list.js +130 -134
  102. package/dist/screens/console-logs/log-display.d.ts +2 -3
  103. package/dist/screens/console-logs/log-display.js +40 -42
  104. package/dist/screens/console-logs/log-filters.d.ts +1 -2
  105. package/dist/screens/console-logs/log-filters.js +2 -24
  106. package/dist/screens/console-logs/mobile-log-card.d.ts +2 -3
  107. package/dist/screens/console-logs/mobile-log-card.js +64 -67
  108. package/dist/screens/console-logs/resizable-table-header.d.ts +1 -2
  109. package/dist/screens/console-logs/resizable-table-header.js +31 -67
  110. package/dist/screens/contacts/contact-details.d.ts +1 -2
  111. package/dist/screens/contacts/contact-details.js +16 -46
  112. package/dist/screens/contacts/contact-list.d.ts +1 -2
  113. package/dist/screens/contacts/contact-list.js +44 -103
  114. package/dist/screens/contacts/index.d.ts +4 -4
  115. package/dist/screens/contacts/index.js +1 -1
  116. package/dist/screens/contacts/user-connect.d.ts +1 -2
  117. package/dist/screens/contacts/user-connect.js +85 -186
  118. package/dist/screens/data-explorer/data-explorer.d.ts +1 -2
  119. package/dist/screens/data-explorer/data-explorer.js +61 -181
  120. package/dist/screens/data-explorer/index.d.ts +2 -2
  121. package/dist/screens/data-explorer/query-executor.d.ts +1 -2
  122. package/dist/screens/data-explorer/query-executor.js +56 -166
  123. package/dist/screens/groups/group-details.d.ts +1 -2
  124. package/dist/screens/groups/group-details.js +27 -122
  125. package/dist/screens/groups/group-invite-listener.d.ts +2 -3
  126. package/dist/screens/groups/group-invite-listener.js +8 -104
  127. package/dist/screens/groups/group-list.d.ts +1 -2
  128. package/dist/screens/groups/group-list.js +56 -133
  129. package/dist/screens/groups/group-members.d.ts +2 -3
  130. package/dist/screens/groups/group-members.js +62 -132
  131. package/dist/screens/groups/index.d.ts +4 -4
  132. package/dist/screens/groups/index.js +1 -1
  133. package/dist/screens/join-group/index.d.ts +2 -2
  134. package/dist/screens/join-group/join-group.d.ts +1 -2
  135. package/dist/screens/join-group/join-group.js +9 -109
  136. package/dist/screens/network-viewer/connection-troubleshooter.d.ts +2 -3
  137. package/dist/screens/network-viewer/connection-troubleshooter.js +89 -193
  138. package/dist/screens/network-viewer/cpu-usage-graph.d.ts +1 -2
  139. package/dist/screens/network-viewer/cpu-usage-graph.js +60 -99
  140. package/dist/screens/network-viewer/device-details-modal.d.ts +1 -2
  141. package/dist/screens/network-viewer/device-details-modal.js +25 -177
  142. package/dist/screens/network-viewer/group-details-modal.d.ts +1 -2
  143. package/dist/screens/network-viewer/group-details-modal.js +31 -142
  144. package/dist/screens/network-viewer/index.d.ts +4 -4
  145. package/dist/screens/network-viewer/index.js +3 -3
  146. package/dist/screens/network-viewer/network-viewer-ipc.d.ts +22 -0
  147. package/dist/screens/network-viewer/network-viewer-ipc.js +6 -0
  148. package/dist/screens/network-viewer/network-viewer.d.ts +1 -2
  149. package/dist/screens/network-viewer/network-viewer.js +91 -296
  150. package/dist/screens/network-viewer/usage-graph.d.ts +1 -2
  151. package/dist/screens/network-viewer/usage-graph.js +78 -110
  152. package/dist/screens/packages/package-details.d.ts +1 -2
  153. package/dist/screens/packages/package-details.js +35 -41
  154. package/dist/screens/packages/package-info.d.ts +2 -2
  155. package/dist/screens/packages/package-info.js +33 -86
  156. package/dist/screens/packages/package-list.d.ts +1 -2
  157. package/dist/screens/packages/package-list.js +42 -106
  158. package/dist/screens/packages/package-new-local.d.ts +1 -2
  159. package/dist/screens/packages/package-new-local.js +13 -19
  160. package/dist/screens/packages/package-versions.d.ts +2 -3
  161. package/dist/screens/packages/package-versions.js +29 -96
  162. package/dist/screens/peer-types/peer-type-details.d.ts +3 -4
  163. package/dist/screens/peer-types/peer-type-details.js +26 -78
  164. package/dist/screens/peer-types/peer-type-list.d.ts +1 -2
  165. package/dist/screens/peer-types/peer-type-list.js +13 -24
  166. package/dist/screens/search/global-search.d.ts +1 -2
  167. package/dist/screens/search/global-search.js +104 -182
  168. package/dist/screens/settings/color-mode-dropdown.d.ts +3 -4
  169. package/dist/screens/settings/color-mode-dropdown.js +18 -37
  170. package/dist/screens/settings/settings-page.d.ts +1 -1
  171. package/dist/screens/settings/settings-page.js +86 -213
  172. package/dist/screens/settings/voice-settings-agent.d.ts +1 -1
  173. package/dist/screens/settings/voice-settings-agent.js +7 -44
  174. package/dist/screens/settings/voice-settings-api-keys.d.ts +2 -2
  175. package/dist/screens/settings/voice-settings-api-keys.js +2 -29
  176. package/dist/screens/settings/voice-settings-output.d.ts +2 -2
  177. package/dist/screens/settings/voice-settings-output.js +2 -40
  178. package/dist/screens/settings/voice-settings-providers.d.ts +2 -2
  179. package/dist/screens/settings/voice-settings-providers.js +2 -19
  180. package/dist/screens/settings/voice-settings-types.d.ts +4 -4
  181. package/dist/screens/settings/voice-settings-types.js +31 -31
  182. package/dist/screens/settings/voice-settings-wake-word.d.ts +2 -2
  183. package/dist/screens/settings/voice-settings-wake-word.js +2 -33
  184. package/dist/screens/settings/voice-settings.d.ts +1 -1
  185. package/dist/screens/settings/voice-settings.js +35 -112
  186. package/dist/screens/setup-user.d.ts +1 -2
  187. package/dist/screens/setup-user.js +38 -116
  188. package/dist/screens/tools/tool-code.d.ts +2 -3
  189. package/dist/screens/tools/tool-code.js +9 -13
  190. package/dist/screens/tools/tool-details.d.ts +1 -2
  191. package/dist/screens/tools/tool-details.js +26 -39
  192. package/dist/screens/tools/tool-info.d.ts +2 -3
  193. package/dist/screens/tools/tool-info.js +9 -48
  194. package/dist/screens/tools/tool-list.d.ts +1 -2
  195. package/dist/screens/tools/tool-list.js +33 -65
  196. package/dist/screens/tools/tool-schema.d.ts +2 -3
  197. package/dist/screens/tools/tool-schema.js +2 -13
  198. package/dist/screens/tools/tool-test-details.d.ts +1 -2
  199. package/dist/screens/tools/tool-test-details.js +12 -28
  200. package/dist/screens/tools/tool-test-list.d.ts +1 -2
  201. package/dist/screens/tools/tool-test-list.js +17 -56
  202. package/dist/screens/variables/variable-details.d.ts +1 -2
  203. package/dist/screens/variables/variable-details.js +19 -86
  204. package/dist/screens/variables/variable-list.d.ts +1 -2
  205. package/dist/screens/variables/variable-list.js +16 -27
  206. package/dist/screens/welcome-modal.d.ts +1 -2
  207. package/dist/screens/welcome-modal.js +44 -111
  208. package/dist/screens/workflows/workflow-details.d.ts +1 -2
  209. package/dist/screens/workflows/workflow-details.js +17 -31
  210. package/dist/screens/workflows/workflow-info.d.ts +2 -3
  211. package/dist/screens/workflows/workflow-info.js +2 -9
  212. package/dist/screens/workflows/workflow-instructions.d.ts +2 -3
  213. package/dist/screens/workflows/workflow-instructions.js +23 -55
  214. package/dist/screens/workflows/workflow-list.d.ts +1 -2
  215. package/dist/screens/workflows/workflow-list.js +23 -62
  216. package/dist/setupTests.d.ts +1 -1
  217. package/dist/setupTests.js +10 -11
  218. package/dist/system-apps/assistants.app.d.ts +1 -1
  219. package/dist/system-apps/assistants.app.js +3 -3
  220. package/dist/system-apps/console-logs.app.d.ts +1 -1
  221. package/dist/system-apps/console-logs.app.js +3 -3
  222. package/dist/system-apps/contacts.app.d.ts +1 -1
  223. package/dist/system-apps/contacts.app.js +4 -4
  224. package/dist/system-apps/data-explorer.app.d.ts +1 -1
  225. package/dist/system-apps/data-explorer.app.js +4 -4
  226. package/dist/system-apps/groups.app.d.ts +1 -1
  227. package/dist/system-apps/groups.app.js +4 -4
  228. package/dist/system-apps/index.d.ts +17 -17
  229. package/dist/system-apps/index.js +52 -52
  230. package/dist/system-apps/join-group.app.d.ts +1 -1
  231. package/dist/system-apps/join-group.app.js +4 -4
  232. package/dist/system-apps/mobile-settings.app.d.ts +1 -1
  233. package/dist/system-apps/mobile-settings.app.js +3 -3
  234. package/dist/system-apps/network-viewer.app.d.ts +1 -1
  235. package/dist/system-apps/network-viewer.app.js +4 -4
  236. package/dist/system-apps/packages.app.d.ts +1 -1
  237. package/dist/system-apps/packages.app.js +3 -3
  238. package/dist/system-apps/search.app.d.ts +1 -1
  239. package/dist/system-apps/search.app.js +4 -4
  240. package/dist/system-apps/settings.app.d.ts +1 -1
  241. package/dist/system-apps/settings.app.js +3 -3
  242. package/dist/system-apps/threads.app.d.ts +1 -1
  243. package/dist/system-apps/threads.app.js +3 -3
  244. package/dist/system-apps/tools.app.d.ts +1 -1
  245. package/dist/system-apps/tools.app.js +3 -3
  246. package/dist/system-apps/types.app.d.ts +1 -1
  247. package/dist/system-apps/types.app.js +3 -3
  248. package/dist/system-apps/variables.app.d.ts +1 -1
  249. package/dist/system-apps/variables.app.js +3 -3
  250. package/dist/system-apps/workflows.app.d.ts +1 -1
  251. package/dist/system-apps/workflows.app.js +3 -3
  252. package/dist/tabs-layout/tabs-layout.d.ts +2 -3
  253. package/dist/tabs-layout/tabs-layout.js +215 -246
  254. package/dist/tabs-layout/tabs-state.d.ts +2 -2
  255. package/dist/tabs-layout/tabs-state.js +73 -61
  256. package/dist/ui-defaults/index.d.ts +2 -2
  257. package/dist/ui-defaults/list-screen.d.ts +2 -3
  258. package/dist/ui-defaults/list-screen.js +33 -37
  259. package/dist/ui-defaults/markdown-field.js +24 -56
  260. package/dist/ui-router/routes-loader.d.ts +1 -1
  261. package/dist/ui-router/routes-loader.js +17 -13
  262. package/dist/ui-router/ui-loader.d.ts +6 -6
  263. package/dist/ui-router/ui-loader.js +172 -268
  264. package/dist/utils.js +49 -39
  265. package/jest.config.js +16 -16
  266. package/package.json +16 -14
  267. package/src/command-palette/command-palette-ui.tsx +261 -237
  268. package/src/command-palette/command-palette.ts +81 -78
  269. package/src/components/chat-overlay.tsx +366 -261
  270. package/src/components/checkbox.tsx +15 -12
  271. package/src/components/group-switcher.tsx +150 -105
  272. package/src/components/input-date.tsx +17 -16
  273. package/src/components/input-number.tsx +47 -31
  274. package/src/components/input.tsx +15 -12
  275. package/src/components/inverse-lazy-list.tsx +14 -13
  276. package/src/components/io-schema-values.tsx +51 -69
  277. package/src/components/io-schema.tsx +94 -69
  278. package/src/components/lazy-list.tsx +51 -34
  279. package/src/components/list-screen.tsx +51 -35
  280. package/src/components/loading-indicator.tsx +2 -4
  281. package/src/components/markdown-editor/autolink-plugin.tsx +4 -11
  282. package/src/components/markdown-editor/editor-inline.tsx +3 -4
  283. package/src/components/markdown-editor/editor.tsx +53 -51
  284. package/src/components/markdown-editor/markdown-plugin.tsx +48 -40
  285. package/src/components/markdown-editor/mention-node.ts +39 -38
  286. package/src/components/markdown-editor/mentions-plugin.tsx +99 -101
  287. package/src/components/markdown-editor/theme.ts +28 -29
  288. package/src/components/markdown-editor/toolbar.tsx +53 -47
  289. package/src/components/markdown-with-mentions.tsx +56 -46
  290. package/src/components/message-logs/message-logs.tsx +225 -165
  291. package/src/components/messages/avatar.tsx +70 -52
  292. package/src/components/messages/channel-message-list.tsx +80 -68
  293. package/src/components/messages/channel-view.tsx +34 -33
  294. package/src/components/messages/message-compose.tsx +84 -67
  295. package/src/components/messages/message-display.tsx +103 -89
  296. package/src/components/messages/thread-message-list.tsx +53 -44
  297. package/src/components/router.tsx +42 -43
  298. package/src/components/save-button.tsx +43 -39
  299. package/src/components/sortable-list.tsx +77 -49
  300. package/src/components/tabs.tsx +31 -31
  301. package/src/components/tooltip.tsx +21 -28
  302. package/src/components/trust-level-badge.tsx +15 -11
  303. package/src/components/trust-level-dropdown.tsx +49 -19
  304. package/src/components/typeahead.tsx +57 -59
  305. package/src/components/voice-indicator.tsx +158 -141
  306. package/src/components/voice-subscribe-events.ts +20 -0
  307. package/src/globals.tsx +42 -40
  308. package/src/hooks.test.tsx +141 -134
  309. package/src/hooks.ts +80 -48
  310. package/src/index.tsx +17 -10
  311. package/src/mention-configs.ts +122 -68
  312. package/src/screens/assistants/assistant-config.tsx +28 -18
  313. package/src/screens/assistants/assistant-details.tsx +35 -36
  314. package/src/screens/assistants/assistant-info.tsx +16 -11
  315. package/src/screens/assistants/assistant-list.tsx +37 -34
  316. package/src/screens/assistants/assistant-tools.tsx +41 -20
  317. package/src/screens/console-logs/console-logs-list.tsx +173 -140
  318. package/src/screens/console-logs/log-display.tsx +65 -38
  319. package/src/screens/console-logs/log-filters.tsx +4 -3
  320. package/src/screens/console-logs/mobile-log-card.tsx +78 -71
  321. package/src/screens/console-logs/resizable-table-header.tsx +29 -21
  322. package/src/screens/contacts/contact-details.tsx +29 -30
  323. package/src/screens/contacts/contact-list.tsx +71 -60
  324. package/src/screens/contacts/index.ts +5 -5
  325. package/src/screens/contacts/user-connect.tsx +177 -171
  326. package/src/screens/data-explorer/data-explorer.tsx +134 -98
  327. package/src/screens/data-explorer/index.ts +2 -3
  328. package/src/screens/data-explorer/query-executor.tsx +90 -80
  329. package/src/screens/groups/group-details.tsx +120 -101
  330. package/src/screens/groups/group-invite-listener.tsx +34 -37
  331. package/src/screens/groups/group-list.tsx +119 -103
  332. package/src/screens/groups/group-members.tsx +225 -164
  333. package/src/screens/groups/index.ts +5 -6
  334. package/src/screens/join-group/index.ts +2 -2
  335. package/src/screens/join-group/join-group.tsx +41 -39
  336. package/src/screens/network-viewer/connection-troubleshooter.tsx +145 -104
  337. package/src/screens/network-viewer/cpu-usage-graph.tsx +39 -43
  338. package/src/screens/network-viewer/device-details-modal.tsx +46 -59
  339. package/src/screens/network-viewer/group-details-modal.tsx +68 -49
  340. package/src/screens/network-viewer/index.ts +4 -5
  341. package/src/screens/network-viewer/network-viewer-ipc.ts +23 -0
  342. package/src/screens/network-viewer/network-viewer.tsx +261 -236
  343. package/src/screens/network-viewer/usage-graph.tsx +57 -49
  344. package/src/screens/packages/package-details.tsx +43 -35
  345. package/src/screens/packages/package-info.tsx +107 -66
  346. package/src/screens/packages/package-list.tsx +175 -98
  347. package/src/screens/packages/package-new-local.tsx +28 -26
  348. package/src/screens/packages/package-versions.tsx +102 -77
  349. package/src/screens/peer-types/peer-type-details.tsx +60 -50
  350. package/src/screens/peer-types/peer-type-list.tsx +20 -30
  351. package/src/screens/search/global-search.tsx +153 -137
  352. package/src/screens/settings/color-mode-dropdown.tsx +52 -35
  353. package/src/screens/settings/settings-page.tsx +215 -141
  354. package/src/screens/settings/voice-settings-agent.tsx +13 -12
  355. package/src/screens/settings/voice-settings-api-keys.tsx +14 -12
  356. package/src/screens/settings/voice-settings-output.tsx +12 -11
  357. package/src/screens/settings/voice-settings-providers.tsx +7 -3
  358. package/src/screens/settings/voice-settings-types.ts +52 -49
  359. package/src/screens/settings/voice-settings-wake-word.tsx +25 -9
  360. package/src/screens/settings/voice-settings.tsx +66 -43
  361. package/src/screens/setup-user.tsx +88 -41
  362. package/src/screens/tools/tool-code.tsx +12 -17
  363. package/src/screens/tools/tool-details.tsx +28 -28
  364. package/src/screens/tools/tool-info.tsx +14 -19
  365. package/src/screens/tools/tool-list.tsx +58 -40
  366. package/src/screens/tools/tool-schema.tsx +16 -9
  367. package/src/screens/tools/tool-test-details.tsx +11 -22
  368. package/src/screens/tools/tool-test-list.tsx +29 -30
  369. package/src/screens/variables/variable-details.tsx +63 -51
  370. package/src/screens/variables/variable-list.tsx +29 -30
  371. package/src/screens/welcome-modal.tsx +68 -48
  372. package/src/screens/workflows/workflow-details.tsx +40 -30
  373. package/src/screens/workflows/workflow-info.tsx +4 -11
  374. package/src/screens/workflows/workflow-instructions.tsx +35 -28
  375. package/src/screens/workflows/workflow-list.tsx +50 -40
  376. package/src/setupTests.ts +14 -13
  377. package/src/system-apps/assistants.app.ts +5 -5
  378. package/src/system-apps/console-logs.app.ts +4 -4
  379. package/src/system-apps/contacts.app.ts +6 -6
  380. package/src/system-apps/data-explorer.app.ts +5 -5
  381. package/src/system-apps/groups.app.ts +6 -6
  382. package/src/system-apps/index.ts +49 -49
  383. package/src/system-apps/join-group.app.ts +5 -5
  384. package/src/system-apps/mobile-settings.app.ts +4 -5
  385. package/src/system-apps/network-viewer.app.ts +5 -5
  386. package/src/system-apps/packages.app.ts +5 -5
  387. package/src/system-apps/search.app.ts +6 -6
  388. package/src/system-apps/settings.app.ts +5 -5
  389. package/src/system-apps/threads.app.ts +5 -5
  390. package/src/system-apps/tools.app.ts +5 -5
  391. package/src/system-apps/types.app.ts +5 -5
  392. package/src/system-apps/variables.app.ts +5 -5
  393. package/src/system-apps/workflows.app.ts +5 -5
  394. package/src/tabs-layout/tabs-layout.tsx +345 -254
  395. package/src/tabs-layout/tabs-state.ts +100 -81
  396. package/src/ui-defaults/index.ts +2 -3
  397. package/src/ui-defaults/list-screen.tsx +45 -40
  398. package/src/ui-defaults/markdown-field.tsx +22 -26
  399. package/src/ui-router/routes-loader.ts +40 -24
  400. package/src/ui-router/ui-loader.tsx +312 -214
  401. package/src/utils.ts +68 -81
  402. package/tsconfig.json +5 -10
  403. package/dist/components/input-datetime.d.ts +0 -7
  404. package/dist/components/input-datetime.js +0 -35
  405. package/dist/components/lazy-sortable-list.d.ts +0 -29
  406. package/dist/components/lazy-sortable-list.js +0 -12
  407. package/dist/components/left-bar.d.ts +0 -5
  408. package/dist/components/left-bar.js +0 -207
  409. package/dist/components/main-content-container.d.ts +0 -2
  410. package/dist/components/main-content-container.js +0 -92
  411. package/dist/components/messages/thread-view.d.ts +0 -6
  412. package/dist/components/messages/thread-view.js +0 -174
  413. package/dist/components/off-canvas.d.ts +0 -13
  414. package/dist/components/off-canvas.js +0 -89
  415. package/dist/components/text-list-editor.tsx/text-list-editor.d.ts +0 -6
  416. package/dist/components/text-list-editor.tsx/text-list-editor.js +0 -13
  417. package/dist/components/top-bar.d.ts +0 -2
  418. package/dist/components/top-bar.js +0 -51
  419. package/dist/components/typeahead/mentions-plugin.d.ts +0 -7
  420. package/dist/components/typeahead/mentions-plugin.js +0 -203
  421. package/dist/components/typeahead/typeahead-editor.d.ts +0 -15
  422. package/dist/components/typeahead/typeahead-editor.js +0 -134
  423. package/dist/components/typeahead/typeahead.d.ts +0 -12
  424. package/dist/components/typeahead/typeahead.js +0 -94
  425. package/dist/screens/profile.d.ts +0 -2
  426. package/dist/screens/profile.js +0 -76
  427. package/src/components/input-datetime.tsx +0 -41
  428. package/src/components/lazy-sortable-list.tsx +0 -51
  429. package/src/components/left-bar.tsx +0 -322
  430. package/src/components/main-content-container.tsx +0 -79
  431. package/src/components/messages/thread-view.tsx +0 -214
  432. package/src/components/off-canvas.tsx +0 -83
  433. package/src/components/text-list-editor.tsx/text-list-editor.tsx +0 -13
  434. package/src/components/top-bar.tsx +0 -119
  435. package/src/components/typeahead/mentions-plugin.tsx +0 -265
  436. package/src/components/typeahead/typeahead-editor.tsx +0 -140
  437. package/src/components/typeahead/typeahead.tsx +0 -77
  438. package/src/screens/profile.tsx +0 -75
@@ -1,78 +1,49 @@
1
1
  "use strict";
2
- var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
- if (k2 === undefined) k2 = k;
4
- var desc = Object.getOwnPropertyDescriptor(m, k);
5
- if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
- desc = { enumerable: true, get: function() { return m[k]; } };
7
- }
8
- Object.defineProperty(o, k2, desc);
9
- }) : (function(o, m, k, k2) {
10
- if (k2 === undefined) k2 = k;
11
- o[k2] = m[k];
12
- }));
13
- var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
- Object.defineProperty(o, "default", { enumerable: true, value: v });
15
- }) : function(o, v) {
16
- o["default"] = v;
17
- });
18
- var __importStar = (this && this.__importStar) || (function () {
19
- var ownKeys = function(o) {
20
- ownKeys = Object.getOwnPropertyNames || function (o) {
21
- var ar = [];
22
- for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
- return ar;
24
- };
25
- return ownKeys(o);
26
- };
27
- return function (mod) {
28
- if (mod && mod.__esModule) return mod;
29
- var result = {};
30
- if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
- __setModuleDefault(result, mod);
32
- return result;
33
- };
34
- })();
35
2
  Object.defineProperty(exports, "__esModule", { value: true });
36
3
  exports.DataExplorerList = DataExplorerList;
37
- const react_1 = __importStar(require("react"));
4
+ const jsx_runtime_1 = require("react/jsx-runtime");
5
+ const react_1 = require("react");
38
6
  const loading_indicator_1 = require("../../components/loading-indicator");
39
- const ui_loader_1 = require("../../ui-router/ui-loader");
40
7
  const globals_1 = require("../../globals");
8
+ const ui_loader_1 = require("../../ui-router/ui-loader");
9
+ function getDataExplorerApi() {
10
+ return window.electronAPI?.dataExplorer;
11
+ }
41
12
  function DataExplorerList() {
42
13
  const [tables, setTables] = (0, react_1.useState)([]);
43
14
  const [loading, setLoading] = (0, react_1.useState)(true);
44
- const [currentContext, setCurrentContext] = (0, react_1.useState)('');
15
+ const [currentContext, setCurrentContext] = (0, react_1.useState)("");
45
16
  const [compacting, setCompacting] = (0, react_1.useState)(false);
46
17
  const formatBytes = (bytes) => {
47
18
  if (bytes === undefined)
48
- return '-';
19
+ return "-";
49
20
  if (bytes === 0)
50
- return '0 B';
21
+ return "0 B";
51
22
  const k = 1024;
52
- const sizes = ['B', 'KB', 'MB', 'GB'];
23
+ const sizes = ["B", "KB", "MB", "GB"];
53
24
  const i = Math.floor(Math.log(bytes) / Math.log(k));
54
- return Math.round(bytes / Math.pow(k, i)) + ' ' + sizes[i];
25
+ return `${Math.round(bytes / k ** i)} ${sizes[i]}`;
55
26
  };
56
27
  const getBytesColorClass = (bytes) => {
57
28
  if (bytes === undefined)
58
- return 'text-secondary';
29
+ return "text-secondary";
59
30
  const kb = 1024;
60
31
  const mb = kb * 1024;
61
32
  if (bytes < 10 * kb)
62
- return 'text-secondary'; // 0 to 10KB: secondary (gray)
33
+ return "text-secondary"; // 0 to 10KB: secondary (gray)
63
34
  if (bytes < 10 * mb)
64
- return 'text-primary'; // 10KB to 10MB: primary (blue)
35
+ return "text-primary"; // 10KB to 10MB: primary (blue)
65
36
  if (bytes < 100 * mb)
66
- return 'text-warning'; // 10MB to 100MB: warning (orange)
67
- return 'text-danger'; // >100MB: danger (red)
37
+ return "text-warning"; // 10MB to 100MB: warning (orange)
38
+ return "text-danger"; // >100MB: danger (red)
68
39
  };
69
- const loadTables = async () => {
40
+ const loadTables = (0, react_1.useCallback)(async () => {
70
41
  try {
71
42
  if (!(0, globals_1.isDesktop)())
72
43
  return;
73
- const api = window.electronAPI?.dataExplorer;
44
+ const api = getDataExplorerApi();
74
45
  if (!api) {
75
- console.warn('Data Explorer API not available');
46
+ console.warn("Data Explorer API not available");
76
47
  return;
77
48
  }
78
49
  // Get current context info
@@ -90,37 +61,37 @@ function DataExplorerList() {
90
61
  setTables(allTablesInfo);
91
62
  }
92
63
  catch (error) {
93
- console.error('Error loading tables:', error);
64
+ console.error("Error loading tables:", error);
94
65
  }
95
66
  finally {
96
67
  setLoading(false);
97
68
  }
98
- };
69
+ }, []);
99
70
  const compactDatabase = async (beforeTimestamp) => {
100
71
  try {
101
72
  setCompacting(true);
102
- const api = window.electronAPI?.dataExplorer;
73
+ const api = getDataExplorerApi();
103
74
  if (!api) {
104
- alert('Data Explorer API not available');
75
+ alert("Data Explorer API not available");
105
76
  return;
106
77
  }
107
78
  const isExtreme = beforeTimestamp !== undefined;
108
79
  if (isExtreme) {
109
- const confirmed = window.confirm('Extreme Compaction will remove ALL change history. This cannot be undone. Continue?');
80
+ const confirmed = window.confirm("Extreme Compaction will remove ALL change history. This cannot be undone. Continue?");
110
81
  if (!confirmed) {
111
82
  setCompacting(false);
112
83
  return;
113
84
  }
114
85
  }
115
86
  await api.compactDatabase(beforeTimestamp);
116
- alert(`Database compacted successfully!${isExtreme ? ' (Extreme mode)' : ''}`);
87
+ alert(`Database compacted successfully!${isExtreme ? " (Extreme mode)" : ""}`);
117
88
  // Reload tables to show updated sizes
118
89
  setLoading(true);
119
90
  await loadTables();
120
91
  }
121
92
  catch (error) {
122
- console.error('Error compacting database:', error);
123
- alert(`Error compacting database: ${error.message || 'Unknown error'}`);
93
+ console.error("Error compacting database:", error);
94
+ alert(`Error compacting database: ${error instanceof Error ? error.message : String(error)}`);
124
95
  }
125
96
  finally {
126
97
  setCompacting(false);
@@ -129,25 +100,25 @@ function DataExplorerList() {
129
100
  const resetChangeTracking = async () => {
130
101
  try {
131
102
  setCompacting(true);
132
- const api = window.electronAPI?.dataExplorer;
103
+ const api = getDataExplorerApi();
133
104
  if (!api) {
134
- alert('Data Explorer API not available');
105
+ alert("Data Explorer API not available");
135
106
  return;
136
107
  }
137
- const confirmed = window.confirm('Reset Change Tracking will clear all change history and rebuild it from scratch. This may take a while. Continue?');
108
+ const confirmed = window.confirm("Reset Change Tracking will clear all change history and rebuild it from scratch. This may take a while. Continue?");
138
109
  if (!confirmed) {
139
110
  setCompacting(false);
140
111
  return;
141
112
  }
142
113
  await api.resetChangeTracking();
143
- alert('Change tracking reset successfully!');
114
+ alert("Change tracking reset successfully!");
144
115
  // Reload tables to show updated sizes
145
116
  setLoading(true);
146
117
  await loadTables();
147
118
  }
148
119
  catch (error) {
149
- console.error('Error resetting change tracking:', error);
150
- alert(`Error resetting change tracking: ${error.message || 'Unknown error'}`);
120
+ console.error("Error resetting change tracking:", error);
121
+ alert(`Error resetting change tracking: ${error instanceof Error ? error.message : String(error)}`);
151
122
  }
152
123
  finally {
153
124
  setCompacting(false);
@@ -155,134 +126,43 @@ function DataExplorerList() {
155
126
  };
156
127
  (0, react_1.useEffect)(() => {
157
128
  loadTables();
158
- }, []);
129
+ }, [loadTables]);
159
130
  if (loading) {
160
- return react_1.default.createElement(loading_indicator_1.LoadingIndicator, null);
131
+ return (0, jsx_runtime_1.jsx)(loading_indicator_1.LoadingIndicator, {});
161
132
  }
162
133
  if (!(0, globals_1.isDesktop)()) {
163
- return (react_1.default.createElement("div", { className: "container-fluid p-4" },
164
- react_1.default.createElement("div", { className: "alert alert-info" }, "Data Explorer is only available in the desktop application.")));
134
+ return ((0, jsx_runtime_1.jsx)("div", { className: "container-fluid p-4", children: (0, jsx_runtime_1.jsx)("div", { className: "alert alert-info", children: "Data Explorer is only available in the desktop application." }) }));
165
135
  }
166
136
  if (!currentContext && tables.length === 0) {
167
- return (react_1.default.createElement("div", { className: "container-fluid p-4" },
168
- react_1.default.createElement("div", { className: "alert alert-warning" }, "Unable to load database information.")));
137
+ return ((0, jsx_runtime_1.jsx)("div", { className: "container-fluid p-4", children: (0, jsx_runtime_1.jsx)("div", { className: "alert alert-warning", children: "Unable to load database information." }) }));
169
138
  }
170
- return (react_1.default.createElement("div", { className: "container-fluid p-4" },
171
- react_1.default.createElement("ul", { className: "nav nav-tabs mb-4" },
172
- react_1.default.createElement("li", { className: "nav-item" },
173
- react_1.default.createElement("a", { className: "nav-link active", href: "#/data-explorer" },
174
- react_1.default.createElement("i", { className: "bi bi-table" }),
175
- " Tables")),
176
- react_1.default.createElement("li", { className: "nav-item" },
177
- react_1.default.createElement("a", { className: "nav-link", href: "#/data-explorer/query" },
178
- react_1.default.createElement("i", { className: "bi bi-terminal" }),
179
- " Query"))),
180
- react_1.default.createElement("div", { className: "d-flex justify-content-between align-items-center mb-4" },
181
- react_1.default.createElement("h2", null, "Data Explorer"),
182
- react_1.default.createElement("div", { className: "d-flex gap-2" },
183
- react_1.default.createElement("div", { className: "btn-group", role: "group" },
184
- react_1.default.createElement("button", { type: "button", className: "btn btn-sm btn-warning", onClick: () => compactDatabase(), disabled: compacting || loading, title: "Compact database (cleanup changes older than 2 weeks)" }, compacting ? (react_1.default.createElement(react_1.default.Fragment, null,
185
- react_1.default.createElement("span", { className: "spinner-border spinner-border-sm me-1", role: "status", "aria-hidden": "true" }),
186
- "Compacting...")) : (react_1.default.createElement(react_1.default.Fragment, null,
187
- react_1.default.createElement("i", { className: "bi bi-disc" }),
188
- " Compact Database"))),
189
- react_1.default.createElement("button", { type: "button", className: "btn btn-sm btn-warning dropdown-toggle dropdown-toggle-split", "data-bs-toggle": "dropdown", "aria-expanded": "false", disabled: compacting || loading, title: "More compaction options" },
190
- react_1.default.createElement("span", { className: "visually-hidden" }, "Toggle Dropdown")),
191
- react_1.default.createElement("ul", { className: "dropdown-menu" },
192
- react_1.default.createElement("li", null,
193
- react_1.default.createElement("a", { className: "dropdown-item", href: "#", onClick: (e) => {
194
- e.preventDefault();
195
- compactDatabase(Date.now());
196
- } },
197
- react_1.default.createElement("i", { className: "bi bi-exclamation-triangle text-danger me-2" }),
198
- "Extreme Compaction",
199
- react_1.default.createElement("div", { className: "small text-muted" }, "Remove ALL change history"))),
200
- react_1.default.createElement("li", null,
201
- react_1.default.createElement("hr", { className: "dropdown-divider" })),
202
- react_1.default.createElement("li", null,
203
- react_1.default.createElement("a", { className: "dropdown-item", href: "#", onClick: (e) => {
204
- e.preventDefault();
205
- resetChangeTracking();
206
- } },
207
- react_1.default.createElement("i", { className: "bi bi-arrow-clockwise text-warning me-2" }),
208
- "Reset Change Tracking",
209
- react_1.default.createElement("div", { className: "small text-muted" }, "Clear and rebuild all change history"))))),
210
- react_1.default.createElement("button", { className: "btn btn-sm btn-primary", onClick: () => {
211
- setLoading(true);
212
- loadTables();
213
- }, disabled: compacting },
214
- react_1.default.createElement("i", { className: "bi bi-arrow-clockwise" }),
215
- " Refresh"))),
216
- react_1.default.createElement("div", { className: "card mb-4" },
217
- react_1.default.createElement("div", { className: "card-body" },
218
- react_1.default.createElement("div", { className: "d-flex justify-content-between align-items-center" },
219
- react_1.default.createElement("div", null,
220
- react_1.default.createElement("h5", { className: "card-title mb-2" }, "Current Data Context"),
221
- react_1.default.createElement("p", { className: "mb-0" }, currentContext)),
222
- react_1.default.createElement("div", { className: "text-end" },
223
- react_1.default.createElement("div", { className: "text-muted small" }, "Total DB Size"),
224
- react_1.default.createElement("div", { className: "fs-4 fw-bold" }, formatBytes(tables.reduce((sum, t) => sum + (t.bytes || 0), 0))))))),
225
- react_1.default.createElement("div", { className: "card mb-4" },
226
- react_1.default.createElement("div", { className: "card-body" },
227
- react_1.default.createElement("h5", { className: "card-title" },
228
- "Registered Tables (",
229
- tables.filter(t => t.isRegistered).length,
230
- ")",
231
- react_1.default.createElement("span", { className: "badge bg-success ms-2" }, "Active")),
232
- react_1.default.createElement("p", { className: "text-muted small" }, "These tables are registered with the TableContainer and actively used by the application."),
233
- tables.filter(t => t.isRegistered).length === 0 ? (react_1.default.createElement("p", { className: "text-muted" }, "No registered tables found")) : (react_1.default.createElement("div", { className: "table-responsive" },
234
- react_1.default.createElement("table", { className: "table table-hover table-sm" },
235
- react_1.default.createElement("thead", null,
236
- react_1.default.createElement("tr", null,
237
- react_1.default.createElement("th", null, "Table Name"),
238
- react_1.default.createElement("th", null, "Table ID"),
239
- react_1.default.createElement("th", { className: "text-end" }, "Row Count"),
240
- react_1.default.createElement("th", { className: "text-end" }, "Bytes"))),
241
- react_1.default.createElement("tbody", null, tables.filter(t => t.isRegistered).map(table => (react_1.default.createElement("tr", { key: table.tableName },
242
- react_1.default.createElement("td", null,
243
- react_1.default.createElement("strong", null, table.tableName)),
244
- react_1.default.createElement("td", null,
245
- react_1.default.createElement("code", { className: "text-muted small" }, table.tableId || 'system')),
246
- react_1.default.createElement("td", { className: "text-end" }, table.rowCount !== undefined ? table.rowCount.toLocaleString() : '-'),
247
- react_1.default.createElement("td", { className: `text-end fw-bold ${getBytesColorClass(table.bytes)}` }, formatBytes(table.bytes))))))))))),
248
- tables.some(t => !t.isRegistered) && (react_1.default.createElement("div", { className: "card" },
249
- react_1.default.createElement("div", { className: "card-body" },
250
- react_1.default.createElement("h5", { className: "card-title" },
251
- "Unregistered Tables (",
252
- tables.filter(t => !t.isRegistered).length,
253
- ")",
254
- react_1.default.createElement("span", { className: "badge bg-warning text-dark ms-2" }, "Raw SQLite")),
255
- react_1.default.createElement("p", { className: "text-muted small" }, "These tables exist in the SQLite database but are not registered with the TableContainer. They may be system tables, change tracking tables, or legacy tables."),
256
- react_1.default.createElement("div", { className: "table-responsive" },
257
- react_1.default.createElement("table", { className: "table table-hover table-sm" },
258
- react_1.default.createElement("thead", null,
259
- react_1.default.createElement("tr", null,
260
- react_1.default.createElement("th", null, "Table Name"),
261
- react_1.default.createElement("th", null, "Type"),
262
- react_1.default.createElement("th", { className: "text-end" }, "Row Count"),
263
- react_1.default.createElement("th", { className: "text-end" }, "Bytes"),
264
- react_1.default.createElement("th", null, "SQL Definition"))),
265
- react_1.default.createElement("tbody", null, tables.filter(t => !t.isRegistered).map(table => (react_1.default.createElement("tr", { key: table.tableName },
266
- react_1.default.createElement("td", null,
267
- react_1.default.createElement("strong", null, table.tableName)),
268
- react_1.default.createElement("td", null,
269
- react_1.default.createElement("span", { className: "badge bg-secondary" }, table.type || 'table')),
270
- react_1.default.createElement("td", { className: "text-end" }, table.rowCount !== undefined ? table.rowCount.toLocaleString() : '-'),
271
- react_1.default.createElement("td", { className: `text-end fw-bold ${getBytesColorClass(table.bytes)}` }, formatBytes(table.bytes)),
272
- react_1.default.createElement("td", null, table.sql ? (react_1.default.createElement("details", null,
273
- react_1.default.createElement("summary", { className: "cursor-pointer text-primary", style: { cursor: 'pointer' } },
274
- react_1.default.createElement("small", null, "View SQL")),
275
- react_1.default.createElement("pre", { className: "mt-2 p-2 bg-body-secondary border rounded", style: { fontSize: '0.75rem', maxHeight: '300px', overflow: 'auto' } },
276
- react_1.default.createElement("code", { className: "text-body" }, table.sql)))) : (react_1.default.createElement("span", { className: "text-muted small" }, "-"))))))))))))));
139
+ return ((0, jsx_runtime_1.jsxs)("div", { className: "container-fluid p-4", children: [(0, jsx_runtime_1.jsxs)("ul", { className: "nav nav-tabs mb-4", children: [(0, jsx_runtime_1.jsx)("li", { className: "nav-item", children: (0, jsx_runtime_1.jsxs)("a", { className: "nav-link active", href: "#/data-explorer", children: [(0, jsx_runtime_1.jsx)("i", { className: "bi bi-table" }), " Tables"] }) }), (0, jsx_runtime_1.jsx)("li", { className: "nav-item", children: (0, jsx_runtime_1.jsxs)("a", { className: "nav-link", href: "#/data-explorer/query", children: [(0, jsx_runtime_1.jsx)("i", { className: "bi bi-terminal" }), " Query"] }) })] }), (0, jsx_runtime_1.jsxs)("div", { className: "d-flex justify-content-between align-items-center mb-4", children: [(0, jsx_runtime_1.jsx)("h2", { children: "Data Explorer" }), (0, jsx_runtime_1.jsxs)("div", { className: "d-flex gap-2", children: [(0, jsx_runtime_1.jsxs)("div", { className: "btn-group", role: "group", children: [(0, jsx_runtime_1.jsx)("button", { type: "button", className: "btn btn-sm btn-warning", onClick: () => compactDatabase(), disabled: compacting || loading, title: "Compact database (cleanup changes older than 2 weeks)", children: compacting ? ((0, jsx_runtime_1.jsxs)(jsx_runtime_1.Fragment, { children: [(0, jsx_runtime_1.jsx)("span", { className: "spinner-border spinner-border-sm me-1", role: "status", "aria-hidden": "true" }), "Compacting..."] })) : ((0, jsx_runtime_1.jsxs)(jsx_runtime_1.Fragment, { children: [(0, jsx_runtime_1.jsx)("i", { className: "bi bi-disc" }), " Compact Database"] })) }), (0, jsx_runtime_1.jsx)("button", { type: "button", className: "btn btn-sm btn-warning dropdown-toggle dropdown-toggle-split", "data-bs-toggle": "dropdown", "aria-expanded": "false", disabled: compacting || loading, title: "More compaction options", children: (0, jsx_runtime_1.jsx)("span", { className: "visually-hidden", children: "Toggle Dropdown" }) }), (0, jsx_runtime_1.jsxs)("ul", { className: "dropdown-menu", children: [(0, jsx_runtime_1.jsx)("li", { children: (0, jsx_runtime_1.jsxs)("a", { className: "dropdown-item", href: "#", onClick: (e) => {
140
+ e.preventDefault();
141
+ compactDatabase(Date.now());
142
+ }, children: [(0, jsx_runtime_1.jsx)("i", { className: "bi bi-exclamation-triangle text-danger me-2" }), "Extreme Compaction", (0, jsx_runtime_1.jsx)("div", { className: "small text-muted", children: "Remove ALL change history" })] }) }), (0, jsx_runtime_1.jsx)("li", { children: (0, jsx_runtime_1.jsx)("hr", { className: "dropdown-divider" }) }), (0, jsx_runtime_1.jsx)("li", { children: (0, jsx_runtime_1.jsxs)("a", { className: "dropdown-item", href: "#", onClick: (e) => {
143
+ e.preventDefault();
144
+ resetChangeTracking();
145
+ }, children: [(0, jsx_runtime_1.jsx)("i", { className: "bi bi-arrow-clockwise text-warning me-2" }), "Reset Change Tracking", (0, jsx_runtime_1.jsx)("div", { className: "small text-muted", children: "Clear and rebuild all change history" })] }) })] })] }), (0, jsx_runtime_1.jsxs)("button", { className: "btn btn-sm btn-primary", onClick: () => {
146
+ setLoading(true);
147
+ loadTables();
148
+ }, disabled: compacting, children: [(0, jsx_runtime_1.jsx)("i", { className: "bi bi-arrow-clockwise" }), " Refresh"] })] })] }), (0, jsx_runtime_1.jsx)("div", { className: "card mb-4", children: (0, jsx_runtime_1.jsx)("div", { className: "card-body", children: (0, jsx_runtime_1.jsxs)("div", { className: "d-flex justify-content-between align-items-center", children: [(0, jsx_runtime_1.jsxs)("div", { children: [(0, jsx_runtime_1.jsx)("h5", { className: "card-title mb-2", children: "Current Data Context" }), (0, jsx_runtime_1.jsx)("p", { className: "mb-0", children: currentContext })] }), (0, jsx_runtime_1.jsxs)("div", { className: "text-end", children: [(0, jsx_runtime_1.jsx)("div", { className: "text-muted small", children: "Total DB Size" }), (0, jsx_runtime_1.jsx)("div", { className: "fs-4 fw-bold", children: formatBytes(tables.reduce((sum, t) => sum + (t.bytes || 0), 0)) })] })] }) }) }), (0, jsx_runtime_1.jsx)("div", { className: "card mb-4", children: (0, jsx_runtime_1.jsxs)("div", { className: "card-body", children: [(0, jsx_runtime_1.jsxs)("h5", { className: "card-title", children: ["Registered Tables (", tables.filter((t) => t.isRegistered).length, ")", (0, jsx_runtime_1.jsx)("span", { className: "badge bg-success ms-2", children: "Active" })] }), (0, jsx_runtime_1.jsx)("p", { className: "text-muted small", children: "These tables are registered with the TableContainer and actively used by the application." }), tables.filter((t) => t.isRegistered).length === 0 ? ((0, jsx_runtime_1.jsx)("p", { className: "text-muted", children: "No registered tables found" })) : ((0, jsx_runtime_1.jsx)("div", { className: "table-responsive", children: (0, jsx_runtime_1.jsxs)("table", { className: "table table-hover table-sm", children: [(0, jsx_runtime_1.jsx)("thead", { children: (0, jsx_runtime_1.jsxs)("tr", { children: [(0, jsx_runtime_1.jsx)("th", { children: "Table Name" }), (0, jsx_runtime_1.jsx)("th", { children: "Table ID" }), (0, jsx_runtime_1.jsx)("th", { className: "text-end", children: "Row Count" }), (0, jsx_runtime_1.jsx)("th", { className: "text-end", children: "Bytes" })] }) }), (0, jsx_runtime_1.jsx)("tbody", { children: tables
149
+ .filter((t) => t.isRegistered)
150
+ .map((table) => ((0, jsx_runtime_1.jsxs)("tr", { children: [(0, jsx_runtime_1.jsx)("td", { children: (0, jsx_runtime_1.jsx)("strong", { children: table.tableName }) }), (0, jsx_runtime_1.jsx)("td", { children: (0, jsx_runtime_1.jsx)("code", { className: "text-muted small", children: table.tableId || "system" }) }), (0, jsx_runtime_1.jsx)("td", { className: "text-end", children: table.rowCount !== undefined ? table.rowCount.toLocaleString() : "-" }), (0, jsx_runtime_1.jsx)("td", { className: `text-end fw-bold ${getBytesColorClass(table.bytes)}`, children: formatBytes(table.bytes) })] }, table.tableName))) })] }) }))] }) }), tables.some((t) => !t.isRegistered) && ((0, jsx_runtime_1.jsx)("div", { className: "card", children: (0, jsx_runtime_1.jsxs)("div", { className: "card-body", children: [(0, jsx_runtime_1.jsxs)("h5", { className: "card-title", children: ["Unregistered Tables (", tables.filter((t) => !t.isRegistered).length, ")", (0, jsx_runtime_1.jsx)("span", { className: "badge bg-warning text-dark ms-2", children: "Raw SQLite" })] }), (0, jsx_runtime_1.jsx)("p", { className: "text-muted small", children: "These tables exist in the SQLite database but are not registered with the TableContainer. They may be system tables, change tracking tables, or legacy tables." }), (0, jsx_runtime_1.jsx)("div", { className: "table-responsive", children: (0, jsx_runtime_1.jsxs)("table", { className: "table table-hover table-sm", children: [(0, jsx_runtime_1.jsx)("thead", { children: (0, jsx_runtime_1.jsxs)("tr", { children: [(0, jsx_runtime_1.jsx)("th", { children: "Table Name" }), (0, jsx_runtime_1.jsx)("th", { children: "Type" }), (0, jsx_runtime_1.jsx)("th", { className: "text-end", children: "Row Count" }), (0, jsx_runtime_1.jsx)("th", { className: "text-end", children: "Bytes" }), (0, jsx_runtime_1.jsx)("th", { children: "SQL Definition" })] }) }), (0, jsx_runtime_1.jsx)("tbody", { children: tables
151
+ .filter((t) => !t.isRegistered)
152
+ .map((table) => ((0, jsx_runtime_1.jsxs)("tr", { children: [(0, jsx_runtime_1.jsx)("td", { children: (0, jsx_runtime_1.jsx)("strong", { children: table.tableName }) }), (0, jsx_runtime_1.jsx)("td", { children: (0, jsx_runtime_1.jsx)("span", { className: "badge bg-secondary", children: table.type || "table" }) }), (0, jsx_runtime_1.jsx)("td", { className: "text-end", children: table.rowCount !== undefined ? table.rowCount.toLocaleString() : "-" }), (0, jsx_runtime_1.jsx)("td", { className: `text-end fw-bold ${getBytesColorClass(table.bytes)}`, children: formatBytes(table.bytes) }), (0, jsx_runtime_1.jsx)("td", { children: table.sql ? ((0, jsx_runtime_1.jsxs)("details", { children: [(0, jsx_runtime_1.jsx)("summary", { className: "cursor-pointer text-primary", style: { cursor: "pointer" }, children: (0, jsx_runtime_1.jsx)("small", { children: "View SQL" }) }), (0, jsx_runtime_1.jsx)("pre", { className: "mt-2 p-2 bg-body-secondary border rounded", style: {
153
+ fontSize: "0.75rem",
154
+ maxHeight: "300px",
155
+ overflow: "auto",
156
+ }, children: (0, jsx_runtime_1.jsx)("code", { className: "text-body", children: table.sql }) })] })) : ((0, jsx_runtime_1.jsx)("span", { className: "text-muted small", children: "-" })) })] }, table.tableName))) })] }) })] }) }))] }));
277
157
  }
278
158
  (0, ui_loader_1.registerInternalPeersUI)({
279
- peersUIId: 'data-explorer-list-ui',
159
+ peersUIId: "data-explorer-list-ui",
280
160
  component: DataExplorerList,
281
161
  routes: [
282
162
  {
283
- isMatch: (_props, context) => context.path === 'data-explorer',
284
- uiCategory: 'screen',
285
- priority: 2
286
- }
287
- ]
163
+ isMatch: (_props, context) => context.path === "data-explorer",
164
+ uiCategory: "screen",
165
+ priority: 2,
166
+ },
167
+ ],
288
168
  });
@@ -1,4 +1,4 @@
1
- import './data-explorer';
2
- import './query-executor';
1
+ import "./data-explorer";
2
+ import "./query-executor";
3
3
  export * from "./data-explorer";
4
4
  export * from "./query-executor";
@@ -1,2 +1 @@
1
- import React from 'react';
2
- export declare function QueryExecutor(): React.JSX.Element;
1
+ export declare function QueryExecutor(): import("react/jsx-runtime").JSX.Element;