@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
package/src/index.tsx CHANGED
@@ -1,13 +1,20 @@
1
- export * from "./hooks";
2
-
3
- export * from "./tabs-layout/tabs-layout";
4
- export { activeTabId, activeTabs, TabState, updateActiveTabTitle, closeCurrentTab, goToTabPath } from "./tabs-layout/tabs-state";
5
- export { mainContentPath } from "./globals";
6
- export * from "./components/voice-indicator";
7
1
  export * from "./components/chat-overlay";
8
- export * from "./components/sortable-list";
9
- export * from "./components/tabs";
10
2
  export * from "./components/inverse-lazy-list";
3
+ export type { IEditorEffects, IMarkdownEditorProps } from "./components/markdown-editor/editor";
4
+ export { MarkdownEditor } from "./components/markdown-editor/editor";
11
5
  export * from "./components/markdown-editor/editor-inline";
12
- export * from "./components/markdown-editor/editor";
13
- export * from "./components/markdown-with-mentions";
6
+ export * from "./components/markdown-with-mentions";
7
+ export * from "./components/sortable-list";
8
+ export * from "./components/tabs";
9
+ export * from "./components/voice-indicator";
10
+ export { mainContentPath } from "./globals";
11
+ export * from "./hooks";
12
+ export * from "./tabs-layout/tabs-layout";
13
+ export {
14
+ activeTabId,
15
+ activeTabs,
16
+ closeCurrentTab,
17
+ goToTabPath,
18
+ TabState,
19
+ updateActiveTabTitle,
20
+ } from "./tabs-layout/tabs-state";
@@ -1,4 +1,13 @@
1
- import { Assistants, IMentionData, PeerTypes, rpcClientCalls, Tools, Users, Workflows } from "@peers-app/peers-sdk";
1
+ import {
2
+ Assistants,
3
+ type IMentionData,
4
+ PeerTypes,
5
+ rpcClientCalls,
6
+ Tools,
7
+ Users,
8
+ Workflows,
9
+ } from "@peers-app/peers-sdk";
10
+
2
11
  // import { MENTIONS_MAX_RESULTS } from "../client/components/markdown-editor/mentions-plugin";
3
12
 
4
13
  const MENTIONS_MAX_RESULTS = 10;
@@ -10,101 +19,146 @@ export interface IMentionConfig {
10
19
  query: (text: string) => Promise<IMentionData[]>;
11
20
  getById: (id: string) => Promise<IMentionData | undefined>;
12
21
  picture?: (data: IMentionData) => JSX.Element;
13
- onClick?: ((data: IMentionData) => void);
22
+ onClick?: (data: IMentionData) => void;
14
23
  }
15
24
 
16
25
  export const toolMentionConfig: IMentionConfig = {
17
- kind: 'tool',
18
- iconClass: 'bi bi-tools',
19
- styleClass: 'mention-tool',
26
+ kind: "tool",
27
+ iconClass: "bi bi-tools",
28
+ styleClass: "mention-tool",
20
29
  query: async (search: string) => {
21
- const results = await Tools().list({ name: { $matchWords: search } }, { pageSize: MENTIONS_MAX_RESULTS });
22
- return results.map(p => ({
23
- kind: 'tool',
30
+ const results = await Tools().list(
31
+ { name: { $matchWords: search } },
32
+ { pageSize: MENTIONS_MAX_RESULTS },
33
+ );
34
+ return results.map((p) => ({
35
+ kind: "tool",
24
36
  id: p.toolId,
25
- name: p.name
37
+ name: p.name,
26
38
  }));
27
39
  },
28
- getById: id => Tools().get(id).then(item => item && {
29
- kind: 'tool',
30
- id: item.toolId,
31
- name: item.name
32
- })
40
+ getById: (id) =>
41
+ Tools()
42
+ .get(id)
43
+ .then(
44
+ (item) =>
45
+ item && {
46
+ kind: "tool",
47
+ id: item.toolId,
48
+ name: item.name,
49
+ },
50
+ ),
33
51
  };
34
52
 
35
53
  export const userMentionConfig: IMentionConfig = {
36
- kind: 'user',
37
- iconClass: 'bi-person-fill',
38
- styleClass: 'mention-user',
54
+ kind: "user",
55
+ iconClass: "bi-person-fill",
56
+ styleClass: "mention-user",
39
57
  query: async (search: string) => {
40
- return Users().list({ name: { $matchWords: search } }, { pageSize: MENTIONS_MAX_RESULTS })
41
- .then((users) => users.map((user) => ({
42
- kind: 'user',
43
- id: user.userId,
44
- name: user.name,
45
- })));
58
+ return Users()
59
+ .list({ name: { $matchWords: search } }, { pageSize: MENTIONS_MAX_RESULTS })
60
+ .then((users) =>
61
+ users.map((user) => ({
62
+ kind: "user",
63
+ id: user.userId,
64
+ name: user.name,
65
+ })),
66
+ );
46
67
  },
47
- getById: id => Users().get(id).then(item => item && {
48
- kind: 'user',
49
- id: item.userId,
50
- name: item.name
51
- }),
68
+ getById: (id) =>
69
+ Users()
70
+ .get(id)
71
+ .then(
72
+ (item) =>
73
+ item && {
74
+ kind: "user",
75
+ id: item.userId,
76
+ name: item.name,
77
+ },
78
+ ),
52
79
  };
53
80
 
54
81
  export const assistantMentionConfig: IMentionConfig = {
55
- kind: 'assistant',
56
- iconClass: 'bi bi-person-fill-gear',
57
- styleClass: 'mention-assistant',
82
+ kind: "assistant",
83
+ iconClass: "bi bi-person-fill-gear",
84
+ styleClass: "mention-assistant",
58
85
  query: async (search: string) => {
59
- return Assistants().list({ name: { $matchWords: search } }, { pageSize: MENTIONS_MAX_RESULTS })
60
- .then((assistants) => assistants.map((assistant) => ({
61
- kind: 'assistant' as const,
62
- id: assistant.assistantId,
63
- name: assistant.name,
64
- })));
86
+ return Assistants()
87
+ .list({ name: { $matchWords: search } }, { pageSize: MENTIONS_MAX_RESULTS })
88
+ .then((assistants) =>
89
+ assistants.map((assistant) => ({
90
+ kind: "assistant" as const,
91
+ id: assistant.assistantId,
92
+ name: assistant.name,
93
+ })),
94
+ );
65
95
  },
66
- getById: id => Assistants().get(id).then(item => item && {
67
- kind: 'assistant',
68
- id: item.assistantId,
69
- name: item.name
70
- }),
96
+ getById: (id) =>
97
+ Assistants()
98
+ .get(id)
99
+ .then(
100
+ (item) =>
101
+ item && {
102
+ kind: "assistant",
103
+ id: item.assistantId,
104
+ name: item.name,
105
+ },
106
+ ),
71
107
  };
72
108
 
73
109
  export const workflowMentionConfig: IMentionConfig = {
74
- kind: 'workflow',
75
- iconClass: 'bi bi-database-fill-gear',
76
- styleClass: 'mention-workflow',
110
+ kind: "workflow",
111
+ iconClass: "bi bi-database-fill-gear",
112
+ styleClass: "mention-workflow",
77
113
  query: async (search: string) => {
78
- return Workflows().list({ name: { $matchWords: search } }, { pageSize: MENTIONS_MAX_RESULTS })
79
- .then((workflows) => workflows.map((workflow) => ({
80
- kind: 'workflow' as const,
81
- id: workflow.workflowId,
82
- name: workflow.name,
83
- })));
114
+ return Workflows()
115
+ .list({ name: { $matchWords: search } }, { pageSize: MENTIONS_MAX_RESULTS })
116
+ .then((workflows) =>
117
+ workflows.map((workflow) => ({
118
+ kind: "workflow" as const,
119
+ id: workflow.workflowId,
120
+ name: workflow.name,
121
+ })),
122
+ );
84
123
  },
85
- getById: id => Workflows().get(id).then(item => item && {
86
- kind: 'workflow',
87
- id: item.workflowId,
88
- name: item.name
89
- }),
124
+ getById: (id) =>
125
+ Workflows()
126
+ .get(id)
127
+ .then(
128
+ (item) =>
129
+ item && {
130
+ kind: "workflow",
131
+ id: item.workflowId,
132
+ name: item.name,
133
+ },
134
+ ),
90
135
  };
91
136
 
92
137
  export const valueTypeMentionConfig: IMentionConfig = {
93
- kind: 'type',
94
- iconClass: 'bi bi-code-square',
138
+ kind: "type",
139
+ iconClass: "bi bi-code-square",
95
140
  query: async (search: string) => {
96
- const results = await PeerTypes().list({ name: { $matchWords: search } }, { pageSize: MENTIONS_MAX_RESULTS });
97
- return results.map(item => ({
98
- kind: 'type',
141
+ const results = await PeerTypes().list(
142
+ { name: { $matchWords: search } },
143
+ { pageSize: MENTIONS_MAX_RESULTS },
144
+ );
145
+ return results.map((item) => ({
146
+ kind: "type",
99
147
  id: item.peerTypeId,
100
- name: item.name
148
+ name: item.name,
101
149
  }));
102
150
  },
103
- getById: id => PeerTypes().get(id).then(item => item && {
104
- kind: 'type',
105
- id: item.peerTypeId,
106
- name: item.name
107
- }),
151
+ getById: (id) =>
152
+ PeerTypes()
153
+ .get(id)
154
+ .then(
155
+ (item) =>
156
+ item && {
157
+ kind: "type",
158
+ id: item.peerTypeId,
159
+ name: item.name,
160
+ },
161
+ ),
108
162
  onClick(data) {
109
163
  rpcClientCalls.setClientPath(`peer-types/${data.id}`);
110
164
  },
@@ -124,4 +178,4 @@ export const mentionConfigs = [
124
178
  assistantMentionConfig,
125
179
  workflowMentionConfig,
126
180
  valueTypeMentionConfig,
127
- ];
181
+ ];
@@ -1,5 +1,10 @@
1
- import { IAssistant, IDoc, IOSchemaType, Observable, Tools } from "@peers-app/peers-sdk";
2
- import React from "react";
1
+ import {
2
+ type IAssistant,
3
+ type IDoc,
4
+ IOSchemaType,
5
+ type Observable,
6
+ Tools,
7
+ } from "@peers-app/peers-sdk";
3
8
  import { IOSchemaValues } from "../../components/io-schema-values";
4
9
  import { LoadingIndicator } from "../../components/loading-indicator";
5
10
  import { useObservable, usePromise } from "../../hooks";
@@ -17,8 +22,8 @@ export const AssistantConfig = (props: { assistant: IDoc<IAssistant> }) => {
17
22
 
18
23
  if (assistantRunnerTool === null) {
19
24
  return (
20
- <div>
21
- <div className='mt-2'>
25
+ <div>
26
+ <div className="mt-2">
22
27
  <small>Assistant Runner Tool:</small>
23
28
  <AssistantRunnersDropdown selectedToolId={assistant.qs.assistantRunnerToolId} />
24
29
  </div>
@@ -26,30 +31,30 @@ export const AssistantConfig = (props: { assistant: IDoc<IAssistant> }) => {
26
31
  );
27
32
  }
28
33
 
29
- assistantRunnerTool.configSchema = assistantRunnerTool.configSchema ?? {
34
+ assistantRunnerTool.configSchema = assistantRunnerTool.configSchema ?? {
30
35
  type: IOSchemaType.complex,
31
- fields: []
36
+ fields: [],
32
37
  };
33
38
 
34
39
  return (
35
40
  <div>
36
-
37
- <div className='mt-2'>
41
+ <div className="mt-2">
38
42
  <small>Assistant Runner Tool:</small>
39
43
  <AssistantRunnersDropdown selectedToolId={assistant.qs.assistantRunnerToolId} />
40
44
  </div>
41
45
 
42
- <IOSchemaValues ioSchema={assistantRunnerTool.configSchema} values={assistant.assistantRunnerConfig} q={assistant.q} />
43
-
46
+ <IOSchemaValues
47
+ ioSchema={assistantRunnerTool.configSchema}
48
+ values={assistant.assistantRunnerConfig}
49
+ q={assistant.q}
50
+ />
44
51
  </div>
45
52
  );
46
53
  };
47
54
 
48
-
49
55
  const AssistantRunnersDropdown = (props: { selectedToolId: Observable<string> }) => {
50
-
51
56
  const [selectedToolId] = useObservable(props.selectedToolId);
52
-
57
+
53
58
  const modelTools = usePromise(async () => {
54
59
  const modelTools = await Tools().list({ isAssistantRunner: true });
55
60
  return modelTools;
@@ -61,20 +66,25 @@ const AssistantRunnersDropdown = (props: { selectedToolId: Observable<string> })
61
66
 
62
67
  return (
63
68
  <div className="dropdown">
64
- <button className="btn btn-secondary dropdown-toggle" type="button" data-bs-toggle="dropdown" aria-expanded="false">
65
- {modelTools.find(tool => tool.toolId === selectedToolId)?.name ?? 'Select Tool'}
69
+ <button
70
+ className="btn btn-secondary dropdown-toggle"
71
+ type="button"
72
+ data-bs-toggle="dropdown"
73
+ aria-expanded="false"
74
+ >
75
+ {modelTools.find((tool) => tool.toolId === selectedToolId)?.name ?? "Select Tool"}
66
76
  </button>
67
77
  <ul className="dropdown-menu">
68
- {modelTools.map(tool => {
78
+ {modelTools.map((tool) => {
69
79
  return (
70
80
  <li key={tool.toolId} onClick={() => props.selectedToolId(tool.toolId)}>
71
81
  {/* <button className="dropdown-item" type="button">Action</button> */}
72
82
  {/* <MarkdownWithMentions content={tool.name} /> */}
73
83
  <span className="dropdown-item">{tool.name}</span>
74
84
  </li>
75
- )
85
+ );
76
86
  })}
77
87
  </ul>
78
88
  </div>
79
89
  );
80
- }
90
+ };
@@ -1,29 +1,34 @@
1
- import { Assistants, groupPrimaryAssistantVar, userPrimaryAssistantVar } from "@peers-app/peers-sdk";
2
- import React from 'react';
3
- import { Input } from '../../components/input';
4
- import { LoadingIndicator } from '../../components/loading-indicator';
5
- import { SaveButton } from '../../components/save-button';
6
- import { Tabs } from '../../components/tabs';
7
- import { useObservable, usePromise } from '../../hooks';
8
- import { updateActiveTabTitle } from '../../tabs-layout/tabs-state';
9
- import { AssistantConfig } from './assistant-config';
10
- import { AssistantInfo } from './assistant-info';
11
- import { AssistantTools } from './assistant-tools';
12
-
1
+ import {
2
+ Assistants,
3
+ groupPrimaryAssistantVar,
4
+ userPrimaryAssistantVar,
5
+ } from "@peers-app/peers-sdk";
6
+ import { Input } from "../../components/input";
7
+ import { LoadingIndicator } from "../../components/loading-indicator";
8
+ import { SaveButton } from "../../components/save-button";
9
+ import { Tabs } from "../../components/tabs";
10
+ import { useObservable, usePromise } from "../../hooks";
11
+ import { updateActiveTabTitle } from "../../tabs-layout/tabs-state";
12
+ import { AssistantConfig } from "./assistant-config";
13
+ import { AssistantInfo } from "./assistant-info";
14
+ import { AssistantTools } from "./assistant-tools";
13
15
 
14
16
  export const AssistantDetails = (props: { assistantId: string }) => {
15
-
16
17
  const [userAssistantId] = useObservable(userPrimaryAssistantVar);
17
18
  const [groupAssistantId] = useObservable(groupPrimaryAssistantVar);
18
19
 
19
- const assistant = usePromise((async () => {
20
- const assistant = await Assistants().get(props.assistantId);
21
- if (!assistant) {
22
- return null;
23
- }
24
- updateActiveTabTitle(assistant.name || "Assistant");
25
- return Assistants().initDoc(assistant);
26
- }), undefined, [props.assistantId]);
20
+ const assistant = usePromise(
21
+ async () => {
22
+ const assistant = await Assistants().get(props.assistantId);
23
+ if (!assistant) {
24
+ return null;
25
+ }
26
+ updateActiveTabTitle(assistant.name || "Assistant");
27
+ return Assistants().initDoc(assistant);
28
+ },
29
+ undefined,
30
+ [props.assistantId],
31
+ );
27
32
 
28
33
  if (assistant === null) {
29
34
  return <div>Assistant not found with id of {props.assistantId}</div>;
@@ -34,8 +39,7 @@ export const AssistantDetails = (props: { assistantId: string }) => {
34
39
  }
35
40
 
36
41
  return (
37
- <div className='container-fluid p-3'>
38
-
42
+ <div className="container-fluid p-3">
39
43
  <div className="d-flex">
40
44
  <div>
41
45
  <h4>
@@ -44,20 +48,16 @@ export const AssistantDetails = (props: { assistantId: string }) => {
44
48
  </div>
45
49
  <div className="flex-grow-1">
46
50
  <h4>
47
- <Input
51
+ <Input
48
52
  key={assistant.assistantId}
49
- className='border border-0'
50
- style={{ width: '100%', outline: 'none', backgroundColor: 'transparent' }}
53
+ className="border border-0"
54
+ style={{ width: "100%", outline: "none", backgroundColor: "transparent" }}
51
55
  value={assistant.qs.name}
52
56
  />
53
57
  </h4>
54
58
  </div>
55
59
  <div className="">
56
-
57
- <SaveButton
58
- key={assistant.assistantId}
59
- doc={assistant}
60
- />
60
+ <SaveButton key={assistant.assistantId} doc={assistant} />
61
61
  </div>
62
62
  </div>
63
63
 
@@ -65,7 +65,7 @@ export const AssistantDetails = (props: { assistantId: string }) => {
65
65
  key={assistant.assistantId}
66
66
  tabs={[
67
67
  {
68
- name: 'Info',
68
+ name: "Info",
69
69
  content: (
70
70
  <AssistantInfo
71
71
  assistant={assistant}
@@ -80,11 +80,10 @@ export const AssistantDetails = (props: { assistantId: string }) => {
80
80
  />
81
81
  ),
82
82
  },
83
- { name: 'Config', content: <AssistantConfig assistant={assistant} /> },
84
- { name: 'Tools', content: <AssistantTools assistant={assistant} />, },
83
+ { name: "Config", content: <AssistantConfig assistant={assistant} /> },
84
+ { name: "Tools", content: <AssistantTools assistant={assistant} /> },
85
85
  ]}
86
86
  />
87
-
88
87
  </div>
89
88
  );
90
- }
89
+ };
@@ -1,5 +1,4 @@
1
- import { IAssistant, IDoc } from "@peers-app/peers-sdk";
2
- import React from "react";
1
+ import type { IAssistant, IDoc, Observable } from "@peers-app/peers-sdk";
3
2
  import { Input } from "../../components/input";
4
3
  import { MarkdownEditorInline } from "../../components/markdown-editor/editor-inline";
5
4
 
@@ -12,11 +11,16 @@ interface AssistantInfoProps {
12
11
  }
13
12
 
14
13
  export const AssistantInfo = (props: AssistantInfoProps) => {
15
- const { assistant, isPrimaryAssistant, isGroupPrimaryAssistant, onSetPrimary, onSetGroupPrimary } = props;
14
+ const {
15
+ assistant,
16
+ isPrimaryAssistant,
17
+ isGroupPrimaryAssistant,
18
+ onSetPrimary,
19
+ onSetGroupPrimary,
20
+ } = props;
16
21
 
17
22
  return (
18
23
  <div>
19
-
20
24
  <small>Name:</small>
21
25
  <Input
22
26
  value={assistant.qs.name}
@@ -26,7 +30,9 @@ export const AssistantInfo = (props: AssistantInfoProps) => {
26
30
  />
27
31
 
28
32
  <div>
29
- <label htmlFor="isPrimary" className="form-label small mt-2 me-2">My Default Assistant:</label>
33
+ <label htmlFor="isPrimary" className="form-label small mt-2 me-2">
34
+ My Default Assistant:
35
+ </label>
30
36
  <input
31
37
  type="checkbox"
32
38
  id="isPrimary"
@@ -36,7 +42,9 @@ export const AssistantInfo = (props: AssistantInfoProps) => {
36
42
  </div>
37
43
 
38
44
  <div>
39
- <label htmlFor="isGroupPrimary" className="form-label small mt-2 me-2">Group Default Assistant:</label>
45
+ <label htmlFor="isGroupPrimary" className="form-label small mt-2 me-2">
46
+ Group Default Assistant:
47
+ </label>
40
48
  <input
41
49
  type="checkbox"
42
50
  id="isGroupPrimary"
@@ -45,13 +53,10 @@ export const AssistantInfo = (props: AssistantInfoProps) => {
45
53
  />
46
54
  </div>
47
55
 
48
- <div className='mt-2'>
56
+ <div className="mt-2">
49
57
  <small>Description:</small>
50
- <MarkdownEditorInline
51
- value={assistant.qs.description as any}
52
- />
58
+ <MarkdownEditorInline value={assistant.qs.description as Observable<string>} />
53
59
  </div>
54
-
55
60
  </div>
56
61
  );
57
62
  };
@@ -1,15 +1,21 @@
1
- import { Assistants, IAssistant, ICursorIterable, newid, observable } from "@peers-app/peers-sdk";
2
- import React, { useEffect, useState } from 'react';
1
+ import {
2
+ Assistants,
3
+ type IAssistant,
4
+ type ICursorIterable,
5
+ newid,
6
+ observable,
7
+ } from "@peers-app/peers-sdk";
8
+ import type React from "react";
9
+ import { useEffect, useState } from "react";
3
10
  import { Input } from "../../components/input";
4
11
  import { LazyList } from "../../components/lazy-list";
5
- import { LoadingIndicator } from '../../components/loading-indicator';
6
- import { MarkdownWithMentions } from '../../components/markdown-with-mentions';
7
- import { isDesktop, mainContentPath } from '../../globals';
12
+ import { LoadingIndicator } from "../../components/loading-indicator";
13
+ import { MarkdownWithMentions } from "../../components/markdown-with-mentions";
14
+ import { isDesktop, mainContentPath } from "../../globals";
8
15
  import { useObservable } from "../../hooks";
9
16
 
10
-
11
17
  export const AssistantList = () => {
12
- const [searchTextObs] = useState(() => observable(''));
18
+ const [searchTextObs] = useState(() => observable(""));
13
19
  const [searchText] = useObservable(searchTextObs);
14
20
 
15
21
  const [cursorObs] = useState(() => observable<ICursorIterable<IAssistant> | undefined>());
@@ -19,9 +25,12 @@ export const AssistantList = () => {
19
25
  let cursor: ICursorIterable<IAssistant>;
20
26
  const _searchText = searchText.trim();
21
27
  if (_searchText) {
22
- cursor = await Assistants().cursor({ name: { $matchWords: _searchText } }, { sortBy: ['-updatedAt'] });
28
+ cursor = await Assistants().cursor(
29
+ { name: { $matchWords: _searchText } },
30
+ { sortBy: ["-updatedAt"] },
31
+ );
23
32
  } else {
24
- cursor = await Assistants().cursor(undefined, { sortBy: ['-updatedAt'] });
33
+ cursor = await Assistants().cursor(undefined, { sortBy: ["-updatedAt"] });
25
34
  }
26
35
 
27
36
  cursorObs(cursor);
@@ -35,12 +44,12 @@ export const AssistantList = () => {
35
44
  cursorId(newid());
36
45
  });
37
46
  return () => sub.dispose();
38
- }, [searchText]);
47
+ }, [cursorId, cursorObs, searchTextObs.subscribe]);
39
48
 
40
49
  async function searchSubmit(evt: React.KeyboardEvent<HTMLInputElement>) {
41
50
  if (evt.key !== "Enter") return;
42
51
  if (!searchText.trim()) return;
43
- let assistantName = searchText.trim();
52
+ const assistantName = searchText.trim();
44
53
  const assistant = await Assistants().initRecord({
45
54
  name: assistantName,
46
55
  });
@@ -49,10 +58,10 @@ export const AssistantList = () => {
49
58
  }
50
59
 
51
60
  async function loadMore(loadedRecords: IAssistant[]): Promise<IAssistant[]> {
52
- let moreMatches: IAssistant[] = [];
53
- let cursor = cursorObs() || await newCursor();
61
+ const moreMatches: IAssistant[] = [];
62
+ const cursor = cursorObs() || (await newCursor());
54
63
  for await (const assistant of cursor) {
55
- if (loadedRecords.find(a => a.assistantId === assistant.assistantId)) continue;
64
+ if (loadedRecords.find((a) => a.assistantId === assistant.assistantId)) continue;
56
65
  moreMatches.push(assistant);
57
66
  if (searchText.length && moreMatches.length > 5) break;
58
67
  if (moreMatches.length >= 50) break;
@@ -64,14 +73,14 @@ export const AssistantList = () => {
64
73
  }
65
74
 
66
75
  return (
67
- <div className='container-fluid'>
68
- <Input
69
- value={searchTextObs}
70
- className="form-control"
71
- style={{ marginBottom: "10px" }}
76
+ <div className="container-fluid">
77
+ <Input
78
+ value={searchTextObs}
79
+ className="form-control"
80
+ style={{ marginBottom: "10px" }}
72
81
  placeholder="Search or create new assistant"
73
- autoFocus={isDesktop() ? true : false}
74
- onKeyUp={evt => searchSubmit(evt)}
82
+ autoFocus={!!isDesktop()}
83
+ onKeyUp={(evt) => searchSubmit(evt)}
75
84
  />
76
85
 
77
86
  <div className="peers-list-container">
@@ -80,23 +89,17 @@ export const AssistantList = () => {
80
89
  loadMore={loadMore}
81
90
  scrollThreshold={0.6}
82
91
  renderItems={(assistants) => {
83
- return assistants.map(assistant => {
92
+ return assistants.map((assistant) => {
84
93
  return (
85
- <div
86
- key={assistant.assistantId}
87
- className='container-fluid pb-4'
88
- >
94
+ <div key={assistant.assistantId} className="container-fluid pb-4">
89
95
  <i className="bi bi-person-fill-gear"></i>&nbsp;
90
- <a href={`#assistants/${assistant.assistantId}`}>
91
- {assistant.name}
92
- </a>
93
- <div style={{ paddingLeft: '20px' }}>
94
- <MarkdownWithMentions content={assistant.description ?? ''} />
96
+ <a href={`#assistants/${assistant.assistantId}`}>{assistant.name}</a>
97
+ <div style={{ paddingLeft: "20px" }}>
98
+ <MarkdownWithMentions content={assistant.description ?? ""} />
95
99
  </div>
96
-
97
100
  </div>
98
- )
99
- })
101
+ );
102
+ });
100
103
  }}
101
104
  loadingIndicator={
102
105
  <div className="d-flex justify-content-center" style={{ height: 200 }}>