open-swarm 0.1.1745275181__py3-none-any.whl → 0.1.1748636259__py3-none-any.whl

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 (296) hide show
  1. open_swarm-0.1.1748636259.dist-info/METADATA +188 -0
  2. open_swarm-0.1.1748636259.dist-info/RECORD +82 -0
  3. {open_swarm-0.1.1745275181.dist-info → open_swarm-0.1.1748636259.dist-info}/WHEEL +2 -1
  4. open_swarm-0.1.1748636259.dist-info/entry_points.txt +3 -0
  5. open_swarm-0.1.1748636259.dist-info/top_level.txt +1 -0
  6. swarm/agent/agent.py +49 -0
  7. swarm/auth.py +48 -113
  8. swarm/consumers.py +0 -19
  9. swarm/extensions/blueprint/__init__.py +16 -30
  10. swarm/{core → extensions/blueprint}/agent_utils.py +1 -1
  11. swarm/extensions/blueprint/blueprint_base.py +458 -0
  12. swarm/extensions/blueprint/blueprint_discovery.py +112 -0
  13. swarm/extensions/blueprint/output_utils.py +95 -0
  14. swarm/{core → extensions/blueprint}/spinner.py +21 -30
  15. swarm/extensions/cli/cli_args.py +0 -6
  16. swarm/extensions/cli/commands/blueprint_management.py +9 -47
  17. swarm/extensions/cli/commands/config_management.py +6 -5
  18. swarm/extensions/cli/commands/edit_config.py +7 -16
  19. swarm/extensions/cli/commands/list_blueprints.py +1 -1
  20. swarm/extensions/cli/commands/validate_env.py +4 -11
  21. swarm/extensions/cli/commands/validate_envvars.py +6 -6
  22. swarm/extensions/cli/interactive_shell.py +2 -16
  23. swarm/extensions/config/config_loader.py +201 -107
  24. swarm/{core → extensions/config}/config_manager.py +38 -50
  25. swarm/{core → extensions/config}/server_config.py +0 -32
  26. swarm/extensions/launchers/build_launchers.py +14 -0
  27. swarm/{core → extensions/launchers}/build_swarm_wrapper.py +0 -0
  28. swarm/extensions/launchers/swarm_api.py +64 -8
  29. swarm/extensions/launchers/swarm_cli.py +300 -8
  30. swarm/llm/chat_completion.py +195 -0
  31. swarm/serializers.py +5 -96
  32. swarm/settings.py +111 -99
  33. swarm/urls.py +74 -57
  34. swarm/utils/context_utils.py +4 -10
  35. swarm/utils/general_utils.py +0 -21
  36. swarm/utils/redact.py +36 -23
  37. swarm/views/api_views.py +39 -48
  38. swarm/views/chat_views.py +70 -237
  39. swarm/views/core_views.py +87 -80
  40. swarm/views/model_views.py +121 -64
  41. swarm/views/utils.py +441 -65
  42. swarm/views/web_views.py +2 -2
  43. open_swarm-0.1.1745275181.dist-info/METADATA +0 -874
  44. open_swarm-0.1.1745275181.dist-info/RECORD +0 -319
  45. open_swarm-0.1.1745275181.dist-info/entry_points.txt +0 -4
  46. swarm/blueprints/README.md +0 -68
  47. swarm/blueprints/blueprint_audit_status.json +0 -27
  48. swarm/blueprints/chatbot/README.md +0 -40
  49. swarm/blueprints/chatbot/blueprint_chatbot.py +0 -471
  50. swarm/blueprints/chatbot/metadata.json +0 -23
  51. swarm/blueprints/chatbot/templates/chatbot/chatbot.html +0 -33
  52. swarm/blueprints/chucks_angels/README.md +0 -11
  53. swarm/blueprints/chucks_angels/blueprint_chucks_angels.py +0 -7
  54. swarm/blueprints/chucks_angels/test_basic.py +0 -3
  55. swarm/blueprints/codey/CODEY.md +0 -15
  56. swarm/blueprints/codey/README.md +0 -115
  57. swarm/blueprints/codey/blueprint_codey.py +0 -1072
  58. swarm/blueprints/codey/codey_cli.py +0 -373
  59. swarm/blueprints/codey/instructions.md +0 -17
  60. swarm/blueprints/codey/metadata.json +0 -23
  61. swarm/blueprints/common/operation_box_utils.py +0 -83
  62. swarm/blueprints/digitalbutlers/README.md +0 -11
  63. swarm/blueprints/digitalbutlers/__init__.py +0 -1
  64. swarm/blueprints/digitalbutlers/blueprint_digitalbutlers.py +0 -7
  65. swarm/blueprints/digitalbutlers/test_basic.py +0 -3
  66. swarm/blueprints/divine_code/README.md +0 -3
  67. swarm/blueprints/divine_code/__init__.py +0 -10
  68. swarm/blueprints/divine_code/apps.py +0 -11
  69. swarm/blueprints/divine_code/blueprint_divine_code.py +0 -270
  70. swarm/blueprints/django_chat/apps.py +0 -6
  71. swarm/blueprints/django_chat/blueprint_django_chat.py +0 -268
  72. swarm/blueprints/django_chat/templates/django_chat/django_chat_webpage.html +0 -37
  73. swarm/blueprints/django_chat/urls.py +0 -8
  74. swarm/blueprints/django_chat/views.py +0 -32
  75. swarm/blueprints/echocraft/blueprint_echocraft.py +0 -384
  76. swarm/blueprints/flock/README.md +0 -11
  77. swarm/blueprints/flock/__init__.py +0 -8
  78. swarm/blueprints/flock/blueprint_flock.py +0 -7
  79. swarm/blueprints/flock/test_basic.py +0 -3
  80. swarm/blueprints/geese/README.md +0 -10
  81. swarm/blueprints/geese/__init__.py +0 -8
  82. swarm/blueprints/geese/blueprint_geese.py +0 -384
  83. swarm/blueprints/geese/geese_cli.py +0 -102
  84. swarm/blueprints/jeeves/README.md +0 -41
  85. swarm/blueprints/jeeves/blueprint_jeeves.py +0 -722
  86. swarm/blueprints/jeeves/jeeves_cli.py +0 -55
  87. swarm/blueprints/jeeves/metadata.json +0 -24
  88. swarm/blueprints/mcp_demo/blueprint_mcp_demo.py +0 -473
  89. swarm/blueprints/messenger/templates/messenger/messenger.html +0 -46
  90. swarm/blueprints/mission_improbable/blueprint_mission_improbable.py +0 -423
  91. swarm/blueprints/monkai_magic/blueprint_monkai_magic.py +0 -340
  92. swarm/blueprints/nebula_shellz/blueprint_nebula_shellz.py +0 -265
  93. swarm/blueprints/omniplex/blueprint_omniplex.py +0 -298
  94. swarm/blueprints/poets/blueprint_poets.py +0 -546
  95. swarm/blueprints/poets/poets_cli.py +0 -23
  96. swarm/blueprints/rue_code/README.md +0 -8
  97. swarm/blueprints/rue_code/blueprint_rue_code.py +0 -448
  98. swarm/blueprints/rue_code/rue_code_cli.py +0 -43
  99. swarm/blueprints/stewie/apps.py +0 -12
  100. swarm/blueprints/stewie/blueprint_family_ties.py +0 -349
  101. swarm/blueprints/stewie/models.py +0 -19
  102. swarm/blueprints/stewie/serializers.py +0 -10
  103. swarm/blueprints/stewie/settings.py +0 -17
  104. swarm/blueprints/stewie/urls.py +0 -11
  105. swarm/blueprints/stewie/views.py +0 -26
  106. swarm/blueprints/suggestion/blueprint_suggestion.py +0 -222
  107. swarm/blueprints/whinge_surf/README.md +0 -22
  108. swarm/blueprints/whinge_surf/__init__.py +0 -1
  109. swarm/blueprints/whinge_surf/blueprint_whinge_surf.py +0 -565
  110. swarm/blueprints/whinge_surf/whinge_surf_cli.py +0 -99
  111. swarm/blueprints/whiskeytango_foxtrot/__init__.py +0 -0
  112. swarm/blueprints/whiskeytango_foxtrot/apps.py +0 -11
  113. swarm/blueprints/whiskeytango_foxtrot/blueprint_whiskeytango_foxtrot.py +0 -339
  114. swarm/blueprints/zeus/__init__.py +0 -2
  115. swarm/blueprints/zeus/apps.py +0 -4
  116. swarm/blueprints/zeus/blueprint_zeus.py +0 -270
  117. swarm/blueprints/zeus/zeus_cli.py +0 -13
  118. swarm/cli/async_input.py +0 -65
  119. swarm/cli/async_input_demo.py +0 -32
  120. swarm/core/blueprint_base.py +0 -769
  121. swarm/core/blueprint_discovery.py +0 -125
  122. swarm/core/blueprint_runner.py +0 -59
  123. swarm/core/blueprint_ux.py +0 -109
  124. swarm/core/build_launchers.py +0 -15
  125. swarm/core/cli/__init__.py +0 -1
  126. swarm/core/cli/commands/__init__.py +0 -1
  127. swarm/core/cli/commands/blueprint_management.py +0 -7
  128. swarm/core/cli/interactive_shell.py +0 -14
  129. swarm/core/cli/main.py +0 -50
  130. swarm/core/cli/utils/__init__.py +0 -1
  131. swarm/core/cli/utils/discover_commands.py +0 -18
  132. swarm/core/config_loader.py +0 -122
  133. swarm/core/output_utils.py +0 -193
  134. swarm/core/session_logger.py +0 -42
  135. swarm/core/slash_commands.py +0 -89
  136. swarm/core/swarm_api.py +0 -68
  137. swarm/core/swarm_cli.py +0 -216
  138. swarm/core/utils/__init__.py +0 -0
  139. swarm/extensions/blueprint/cli_handler.py +0 -197
  140. swarm/extensions/blueprint/runnable_blueprint.py +0 -42
  141. swarm/extensions/cli/utils/__init__.py +0 -1
  142. swarm/extensions/cli/utils/async_input.py +0 -46
  143. swarm/extensions/cli/utils/prompt_user.py +0 -3
  144. swarm/management/__init__.py +0 -0
  145. swarm/management/commands/__init__.py +0 -0
  146. swarm/management/commands/runserver.py +0 -58
  147. swarm/middleware.py +0 -65
  148. swarm/permissions.py +0 -38
  149. swarm/static/contrib/fonts/fontawesome-webfont.ttf +0 -7
  150. swarm/static/contrib/fonts/fontawesome-webfont.woff +0 -7
  151. swarm/static/contrib/fonts/fontawesome-webfont.woff2 +0 -7
  152. swarm/static/contrib/markedjs/marked.min.js +0 -6
  153. swarm/static/contrib/tabler-icons/adjustments-horizontal.svg +0 -27
  154. swarm/static/contrib/tabler-icons/alert-triangle.svg +0 -21
  155. swarm/static/contrib/tabler-icons/archive.svg +0 -21
  156. swarm/static/contrib/tabler-icons/artboard.svg +0 -27
  157. swarm/static/contrib/tabler-icons/automatic-gearbox.svg +0 -23
  158. swarm/static/contrib/tabler-icons/box-multiple.svg +0 -19
  159. swarm/static/contrib/tabler-icons/carambola.svg +0 -19
  160. swarm/static/contrib/tabler-icons/copy.svg +0 -20
  161. swarm/static/contrib/tabler-icons/download.svg +0 -21
  162. swarm/static/contrib/tabler-icons/edit.svg +0 -21
  163. swarm/static/contrib/tabler-icons/filled/carambola.svg +0 -13
  164. swarm/static/contrib/tabler-icons/filled/paint.svg +0 -13
  165. swarm/static/contrib/tabler-icons/headset.svg +0 -22
  166. swarm/static/contrib/tabler-icons/layout-sidebar-left-collapse.svg +0 -21
  167. swarm/static/contrib/tabler-icons/layout-sidebar-left-expand.svg +0 -21
  168. swarm/static/contrib/tabler-icons/layout-sidebar-right-collapse.svg +0 -21
  169. swarm/static/contrib/tabler-icons/layout-sidebar-right-expand.svg +0 -21
  170. swarm/static/contrib/tabler-icons/message-chatbot.svg +0 -22
  171. swarm/static/contrib/tabler-icons/message-star.svg +0 -22
  172. swarm/static/contrib/tabler-icons/message-x.svg +0 -23
  173. swarm/static/contrib/tabler-icons/message.svg +0 -21
  174. swarm/static/contrib/tabler-icons/paperclip.svg +0 -18
  175. swarm/static/contrib/tabler-icons/playlist-add.svg +0 -22
  176. swarm/static/contrib/tabler-icons/robot.svg +0 -26
  177. swarm/static/contrib/tabler-icons/search.svg +0 -19
  178. swarm/static/contrib/tabler-icons/settings.svg +0 -20
  179. swarm/static/contrib/tabler-icons/thumb-down.svg +0 -19
  180. swarm/static/contrib/tabler-icons/thumb-up.svg +0 -19
  181. swarm/static/css/dropdown.css +0 -22
  182. swarm/static/htmx/htmx.min.js +0 -0
  183. swarm/static/js/dropdown.js +0 -23
  184. swarm/static/rest_mode/css/base.css +0 -470
  185. swarm/static/rest_mode/css/chat-history.css +0 -286
  186. swarm/static/rest_mode/css/chat.css +0 -251
  187. swarm/static/rest_mode/css/chatbot.css +0 -74
  188. swarm/static/rest_mode/css/chatgpt.css +0 -62
  189. swarm/static/rest_mode/css/colors/corporate.css +0 -74
  190. swarm/static/rest_mode/css/colors/pastel.css +0 -81
  191. swarm/static/rest_mode/css/colors/tropical.css +0 -82
  192. swarm/static/rest_mode/css/general.css +0 -142
  193. swarm/static/rest_mode/css/layout.css +0 -167
  194. swarm/static/rest_mode/css/layouts/messenger-layout.css +0 -17
  195. swarm/static/rest_mode/css/layouts/minimalist-layout.css +0 -57
  196. swarm/static/rest_mode/css/layouts/mobile-layout.css +0 -8
  197. swarm/static/rest_mode/css/messages.css +0 -84
  198. swarm/static/rest_mode/css/messenger.css +0 -135
  199. swarm/static/rest_mode/css/settings.css +0 -91
  200. swarm/static/rest_mode/css/simple.css +0 -44
  201. swarm/static/rest_mode/css/slack.css +0 -58
  202. swarm/static/rest_mode/css/style.css +0 -156
  203. swarm/static/rest_mode/css/theme.css +0 -30
  204. swarm/static/rest_mode/css/toast.css +0 -40
  205. swarm/static/rest_mode/js/auth.js +0 -9
  206. swarm/static/rest_mode/js/blueprint.js +0 -41
  207. swarm/static/rest_mode/js/blueprintUtils.js +0 -12
  208. swarm/static/rest_mode/js/chatLogic.js +0 -79
  209. swarm/static/rest_mode/js/debug.js +0 -63
  210. swarm/static/rest_mode/js/events.js +0 -98
  211. swarm/static/rest_mode/js/main.js +0 -19
  212. swarm/static/rest_mode/js/messages.js +0 -264
  213. swarm/static/rest_mode/js/messengerLogic.js +0 -355
  214. swarm/static/rest_mode/js/modules/apiService.js +0 -84
  215. swarm/static/rest_mode/js/modules/blueprintManager.js +0 -162
  216. swarm/static/rest_mode/js/modules/chatHistory.js +0 -110
  217. swarm/static/rest_mode/js/modules/debugLogger.js +0 -14
  218. swarm/static/rest_mode/js/modules/eventHandlers.js +0 -107
  219. swarm/static/rest_mode/js/modules/messageProcessor.js +0 -120
  220. swarm/static/rest_mode/js/modules/state.js +0 -7
  221. swarm/static/rest_mode/js/modules/userInteractions.js +0 -29
  222. swarm/static/rest_mode/js/modules/validation.js +0 -23
  223. swarm/static/rest_mode/js/rendering.js +0 -119
  224. swarm/static/rest_mode/js/settings.js +0 -130
  225. swarm/static/rest_mode/js/sidebar.js +0 -94
  226. swarm/static/rest_mode/js/simpleLogic.js +0 -37
  227. swarm/static/rest_mode/js/slackLogic.js +0 -66
  228. swarm/static/rest_mode/js/splash.js +0 -76
  229. swarm/static/rest_mode/js/theme.js +0 -111
  230. swarm/static/rest_mode/js/toast.js +0 -36
  231. swarm/static/rest_mode/js/ui.js +0 -265
  232. swarm/static/rest_mode/js/validation.js +0 -57
  233. swarm/static/rest_mode/svg/animated_spinner.svg +0 -12
  234. swarm/static/rest_mode/svg/arrow_down.svg +0 -5
  235. swarm/static/rest_mode/svg/arrow_left.svg +0 -5
  236. swarm/static/rest_mode/svg/arrow_right.svg +0 -5
  237. swarm/static/rest_mode/svg/arrow_up.svg +0 -5
  238. swarm/static/rest_mode/svg/attach.svg +0 -8
  239. swarm/static/rest_mode/svg/avatar.svg +0 -7
  240. swarm/static/rest_mode/svg/canvas.svg +0 -6
  241. swarm/static/rest_mode/svg/chat_history.svg +0 -4
  242. swarm/static/rest_mode/svg/close.svg +0 -5
  243. swarm/static/rest_mode/svg/copy.svg +0 -4
  244. swarm/static/rest_mode/svg/dark_mode.svg +0 -3
  245. swarm/static/rest_mode/svg/edit.svg +0 -5
  246. swarm/static/rest_mode/svg/layout.svg +0 -9
  247. swarm/static/rest_mode/svg/logo.svg +0 -29
  248. swarm/static/rest_mode/svg/logout.svg +0 -5
  249. swarm/static/rest_mode/svg/mobile.svg +0 -5
  250. swarm/static/rest_mode/svg/new_chat.svg +0 -4
  251. swarm/static/rest_mode/svg/not_visible.svg +0 -5
  252. swarm/static/rest_mode/svg/plus.svg +0 -7
  253. swarm/static/rest_mode/svg/run_code.svg +0 -6
  254. swarm/static/rest_mode/svg/save.svg +0 -4
  255. swarm/static/rest_mode/svg/search.svg +0 -6
  256. swarm/static/rest_mode/svg/settings.svg +0 -4
  257. swarm/static/rest_mode/svg/speaker.svg +0 -5
  258. swarm/static/rest_mode/svg/stop.svg +0 -6
  259. swarm/static/rest_mode/svg/thumbs_down.svg +0 -3
  260. swarm/static/rest_mode/svg/thumbs_up.svg +0 -3
  261. swarm/static/rest_mode/svg/toggle_off.svg +0 -6
  262. swarm/static/rest_mode/svg/toggle_on.svg +0 -6
  263. swarm/static/rest_mode/svg/trash.svg +0 -10
  264. swarm/static/rest_mode/svg/undo.svg +0 -3
  265. swarm/static/rest_mode/svg/visible.svg +0 -8
  266. swarm/static/rest_mode/svg/voice.svg +0 -10
  267. swarm/templates/account/login.html +0 -22
  268. swarm/templates/account/signup.html +0 -32
  269. swarm/templates/base.html +0 -30
  270. swarm/templates/chat.html +0 -43
  271. swarm/templates/index.html +0 -35
  272. swarm/templates/rest_mode/components/chat_sidebar.html +0 -55
  273. swarm/templates/rest_mode/components/header.html +0 -45
  274. swarm/templates/rest_mode/components/main_chat_pane.html +0 -41
  275. swarm/templates/rest_mode/components/settings_dialog.html +0 -97
  276. swarm/templates/rest_mode/components/splash_screen.html +0 -7
  277. swarm/templates/rest_mode/components/top_bar.html +0 -28
  278. swarm/templates/rest_mode/message_ui.html +0 -50
  279. swarm/templates/rest_mode/slackbot.html +0 -30
  280. swarm/templates/simple_blueprint_page.html +0 -24
  281. swarm/templates/websocket_partials/final_system_message.html +0 -3
  282. swarm/templates/websocket_partials/system_message.html +0 -4
  283. swarm/templates/websocket_partials/user_message.html +0 -5
  284. swarm/utils/ansi_box.py +0 -34
  285. swarm/utils/disable_tracing.py +0 -38
  286. swarm/utils/log_utils.py +0 -63
  287. swarm/utils/openai_patch.py +0 -33
  288. swarm/ux/ansi_box.py +0 -43
  289. swarm/ux/spinner.py +0 -53
  290. {open_swarm-0.1.1745275181.dist-info → open_swarm-0.1.1748636259.dist-info}/licenses/LICENSE +0 -0
  291. /swarm/{core → extensions/blueprint}/blueprint_utils.py +0 -0
  292. /swarm/{core → extensions/blueprint}/common_utils.py +0 -0
  293. /swarm/{core → extensions/config}/setup_wizard.py +0 -0
  294. /swarm/{blueprints/rue_code → extensions/config/utils}/__init__.py +0 -0
  295. /swarm/{core → extensions/config}/utils/logger.py +0 -0
  296. /swarm/{core → extensions/launchers}/swarm_wrapper.py +0 -0
@@ -1,63 +0,0 @@
1
- // src/swarm/static/rest_mode/js/debug.js
2
-
3
- import { showToast } from './toast.js';
4
- import { chatHistory } from './modules/state.js';
5
- import { contextVariables } from './modules/state.js';
6
- export { debugLog } from './modules/debugLogger.js';
7
-
8
- /**
9
- * Toggles the Debug pane.
10
- * Displays raw messages and key info from the most recent message.
11
- */
12
- export function toggleDebugPane() {
13
- const debugPane = document.getElementById("debugPane");
14
- if (!debugPane) return;
15
-
16
- if (debugPane.style.display === "block") {
17
- debugPane.style.display = "none";
18
- showToast("🐞 Debug pane hidden.", "info");
19
- } else {
20
- debugPane.style.display = "block";
21
- showToast("🐞 Debug pane shown.", "info");
22
- renderRelevantDebugInfo();
23
- }
24
- }
25
-
26
- /**
27
- * Handles Tech Support Button Click Inside Debug Pane
28
- */
29
- export function handleTechSupport() {
30
- showToast("🛠️ Tech Support feature coming soon!", "info");
31
- }
32
-
33
- /**
34
- * Renders relevant debug information from the most recent message in chatHistory.
35
- */
36
- function renderRelevantDebugInfo() {
37
- const debugContent = document.getElementById("debugContent");
38
- if (!debugContent) return;
39
-
40
- if (chatHistory.length === 0) {
41
- debugContent.innerHTML = "<p>No messages yet.</p>";
42
- return;
43
- }
44
-
45
- const latestMessage = chatHistory[chatHistory.length - 1];
46
- const { role, content, sender, metadata } = latestMessage;
47
-
48
- debugContent.innerHTML = `
49
- <p><strong>Role:</strong> ${role}</p>
50
- <p><strong>Sender:</strong> ${sender}</p>
51
- <p><strong>Content:</strong> ${content || "No content provided."}</p>
52
- <p><strong>Metadata:</strong> <pre>${JSON.stringify(metadata || {}, null, 2)}</pre></p>
53
- `;
54
-
55
- if (contextVariables.active_agent_name) {
56
- const activeAgentElement = document.createElement("div");
57
- activeAgentElement.className = "debug-active-agent";
58
- activeAgentElement.innerHTML = `<strong>Active Agent:</strong> ${contextVariables.active_agent_name}`;
59
- debugContent.appendChild(activeAgentElement);
60
- }
61
-
62
- debugContent.scrollTop = debugContent.scrollHeight;
63
- }
@@ -1,98 +0,0 @@
1
- // src/swarm/static/rest_mode/js/events.js
2
-
3
- import { toggleSidebar } from './sidebar.js';
4
- import { handleChatHistoryClick } from './modules/chatHistory.js';
5
- import { deleteChat } from './modules/apiService.js';
6
- import { handleUpload, handleVoiceRecord } from './modules/userInteractions.js';
7
- import { fetchBlueprintMetadata } from './modules/apiService.js';
8
- import { handleSubmit } from './modules/messageProcessor.js';
9
- import { toggleDebugPane, handleTechSupport } from './debug.js';
10
- import { showToast } from './toast.js';
11
- import { handleLogout } from './auth.js';
12
- import { debugLog } from './modules/debugLogger.js';
13
-
14
- /**
15
- * Handles "Search" button click.
16
- */
17
- function handleSearch() {
18
- showToast("🔍 Search feature is under development.", "info");
19
- }
20
-
21
- /**
22
- * Handles "New Chat" button click.
23
- */
24
- function handleNewChat() {
25
- showToast("📝 Starting a new chat...", "info");
26
- // Implement new chat functionality as needed
27
- }
28
-
29
- /**
30
- * Attaches event listeners to chat history items.
31
- */
32
- function setupChatHistoryListeners() {
33
- const chatHistoryItems = document.querySelectorAll('.chat-history-pane li');
34
- chatHistoryItems.forEach((item) => {
35
- item.addEventListener('click', () => handleChatHistoryClick(item));
36
-
37
- const trashCan = item.querySelector('.trash-can');
38
- if (trashCan) {
39
- trashCan.addEventListener('click', (e) => {
40
- e.stopPropagation();
41
- deleteChat(item);
42
- });
43
- }
44
- });
45
- }
46
-
47
- /**
48
- * Attaches event listeners to main application buttons and elements.
49
- */
50
- function setupGlobalEventListeners() {
51
- // Sidebar toggles
52
- document.getElementById("settingsToggleButton")?.addEventListener('click', () => toggleSidebar('options', true));
53
- document.getElementById("optionsSidebarHideBtn")?.addEventListener('click', () => toggleSidebar('options', false));
54
- document.getElementById("chatHistoryToggleButton")?.addEventListener('click', () => toggleSidebar('left', true));
55
- document.getElementById("leftSidebarHideBtn")?.addEventListener('click', () => toggleSidebar('left', false));
56
-
57
- // Top buttons
58
- // document.getElementById("searchButton")?.addEventListener('click', handleSearch);
59
- document.getElementById("newChatButton")?.addEventListener('click', handleNewChat);
60
-
61
- // Functional buttons
62
- document.getElementById("logoutButton")?.addEventListener('click', handleLogout);
63
- document.getElementById("uploadButton")?.addEventListener('click', handleUpload);
64
- document.getElementById("voiceRecordButton")?.addEventListener('click', handleVoiceRecord);
65
- document.getElementById("submitButton")?.addEventListener("click", handleSubmit);
66
-
67
- // User input submission with Enter key
68
- const userInput = document.getElementById("userInput");
69
- userInput?.addEventListener("keypress", (e) => {
70
- if (e.key === "Enter") {
71
- e.preventDefault();
72
- handleSubmit();
73
- }
74
- });
75
-
76
- // Debug pane toggles
77
- document.getElementById("debugButton")?.addEventListener('click', toggleDebugPane);
78
- document.getElementById("techSupportButtonInsideDebug")?.addEventListener('click', handleTechSupport);
79
- }
80
-
81
- /**
82
- * Sets up all event listeners for the application.
83
- */
84
- export function setupEventListeners() {
85
- setupGlobalEventListeners();
86
- setupChatHistoryListeners();
87
- debugLog('All event listeners have been set up.');
88
- }
89
-
90
- /**
91
- * Initialize the application.
92
- */
93
- export function initializeApplication() {
94
- debugLog('[DEBUG] Initializing application...');
95
- fetchBlueprintMetadata(); // Fetch blueprint metadata and display it
96
- setupEventListeners(); // Set up event listeners
97
- debugLog('[DEBUG] Application initialized.');
98
- }
@@ -1,19 +0,0 @@
1
- // main.js - Main application entry point
2
-
3
- import { initializeSplashScreen } from './splash.js';
4
- import { initializeUI } from './ui.js';
5
- import { debugLog } from './settings.js';
6
-
7
- document.addEventListener('DOMContentLoaded', () => {
8
- debugLog("DOM Content Loaded. Initializing application...");
9
-
10
- try {
11
- initializeSplashScreen();
12
- debugLog("Splash screen initialization complete.");
13
-
14
- initializeUI();
15
- debugLog("UI initialization complete.");
16
- } catch (error) {
17
- debugLog(`Initialization failed: ${error.message}`, "error");
18
- }
19
- });
@@ -1,264 +0,0 @@
1
- import { debugLog } from './debug.js';
2
- import { enableSlidingToolbar } from './ui.js';
3
- // import { marked } from '../../contrib/markedjs/marked.min.js';
4
- import { marked } from "https://cdn.jsdelivr.net/npm/marked/lib/marked.esm.js";
5
-
6
- let quickPrompts = ["What is Open-Swarm?", "Explain the architecture.", "How do I set up a new blueprint?"];
7
-
8
- export function renderMessage(role, content, sender, metadata) {
9
- debugLog('Rendering message...', { role, content, sender, metadata });
10
-
11
- const messageContainer = document.getElementById('messageHistory');
12
- if (!messageContainer) {
13
- debugLog('Message container not found.');
14
- return;
15
- }
16
-
17
- let messageContent = content.content || content.text || '';
18
-
19
- // 🛑 Ignore empty messages immediately
20
- if (!messageContent.trim()) {
21
- debugLog('Skipping empty message.');
22
- return;
23
- }
24
-
25
- // 🔄 Detect assistant handoff JSON
26
- let isHandoff = false;
27
- try {
28
- const parsedContent = JSON.parse(messageContent);
29
- if (parsedContent.assistant && typeof parsedContent.assistant === 'string') {
30
- messageContent = `<em>🔄 Handoff to <strong>${parsedContent.assistant}</strong></em>`;
31
- role = 'system';
32
- isHandoff = true;
33
- }
34
- } catch (e) {
35
- // Not a JSON object, proceed
36
- }
37
-
38
- if (!isHandoff) {
39
- messageContent = `<strong>${sender}:</strong> ${marked.parse(messageContent)}`;
40
- }
41
-
42
- // ❌ Prevent rendering assistant messages with "No content"
43
- if (role === "assistant" && messageContent.includes("<p>No content</p>")) {
44
- debugLog("Skipping assistant message with 'No content'.");
45
- return; // 🛑 Stop execution here
46
- }
47
-
48
- // ✅ Create the message
49
- const messageDiv = document.createElement('div');
50
- messageDiv.className = `message ${role}`;
51
-
52
- messageDiv.innerHTML = `
53
- <div class="message-text">${messageContent}</div>
54
- <div class="message-toolbar">
55
- <button class="toolbar-btn" aria-label="Copy Message">
56
- <img src="/static/rest_mode/svg/copy.svg" alt="Copy Icon" class="icon-svg" />
57
- </button>
58
- <button class="toolbar-btn" aria-label="Delete Message">
59
- <img src="/static/rest_mode/svg/trash.svg" alt="Trash Icon" class="icon-svg" />
60
- </button>
61
- </div>
62
- `;
63
-
64
- messageContainer.appendChild(messageDiv);
65
- debugLog('Message rendered successfully.');
66
- }
67
-
68
- /**
69
- * Appends a raw message object into the chat UI.
70
- */
71
- let isAppendingMessage = false; // Prevent duplicate appending
72
-
73
- export function appendRawMessage(role, content, sender, metadata) {
74
- if (isAppendingMessage) {
75
- debugLog('Duplicate appendRawMessage call detected. Skipping execution.', { role, content, sender, metadata });
76
- return;
77
- }
78
-
79
- isAppendingMessage = true; // Set the flag
80
- debugLog('Appending raw message...', { role, content, sender, metadata });
81
-
82
- renderMessage(role, content, sender, metadata);
83
-
84
- const messageContainer = document.getElementById('messageHistory');
85
- if (messageContainer) {
86
- messageContainer.scrollTop = messageContainer.scrollHeight;
87
- debugLog('Scrolled to the bottom of the message history.');
88
- }
89
-
90
- isAppendingMessage = false; // Reset the flag
91
- }
92
-
93
-
94
-
95
- /**
96
- * Renders quick prompts in the UI.
97
- */
98
- export function renderQuickPrompts() {
99
- const quickPromptsContainer = document.getElementById('quickPrompts');
100
- if (!quickPromptsContainer) {
101
- debugLog('Quick prompts container not found.');
102
- return;
103
- }
104
-
105
- quickPromptsContainer.innerHTML = quickPrompts
106
- .map(
107
- (prompt, index) => `
108
- <button class="quick-prompt-button" data-index="${index}">
109
- ${prompt}
110
- </button>`
111
- )
112
- .join('');
113
-
114
- document.querySelectorAll('.quick-prompt-button').forEach((button) =>
115
- button.addEventListener('click', (e) => handleQuickPromptSelection(e))
116
- );
117
- debugLog('Quick prompts rendered successfully.');
118
- }
119
-
120
- /**
121
- * Handles quick prompt selection.
122
- */
123
- function handleQuickPromptSelection(event) {
124
- const promptIndex = event.target.getAttribute('data-index');
125
- const promptText = quickPrompts[promptIndex];
126
-
127
- appendRawMessage('user', { content: promptText }, 'User', {});
128
- clearQuickPrompts();
129
- }
130
-
131
- /**
132
- * Clears all quick prompts from the UI.
133
- */
134
- function clearQuickPrompts() {
135
- const quickPromptsContainer = document.getElementById('quickPrompts');
136
- if (quickPromptsContainer) {
137
- quickPromptsContainer.innerHTML = '';
138
- debugLog('Quick prompts cleared.');
139
- }
140
- }
141
-
142
- /**
143
- * Allows adding a new quick prompt dynamically.
144
- */
145
- export function addQuickPrompt(prompt) {
146
- quickPrompts.push(prompt);
147
- renderQuickPrompts();
148
- debugLog('Quick prompt added.', { prompt });
149
- }
150
-
151
- /**
152
- * Removes a quick prompt by index.
153
- */
154
- export function removeQuickPrompt(index) {
155
- if (index < 0 || index >= quickPrompts.length) {
156
- debugLog('Invalid quick prompt index.', { index });
157
- return;
158
- }
159
- quickPrompts.splice(index, 1);
160
- renderQuickPrompts();
161
- debugLog('Quick prompt removed.', { index });
162
- }
163
-
164
- /**
165
- * Clears all messages from the chat history UI.
166
- */
167
- export function clearMessages() {
168
- debugLog('Clearing all messages from the chat history.');
169
-
170
- const messageContainer = document.getElementById('messageHistory');
171
- if (messageContainer) {
172
- messageContainer.innerHTML = '';
173
- debugLog('Chat history cleared successfully.');
174
- }
175
- }
176
-
177
- /**
178
- * Attaches toolbar actions to a message element.
179
- */
180
- function attachToolbarActions(messageDiv) {
181
- const persistentMessage = document.getElementById("persistentMessage");
182
-
183
- messageDiv.addEventListener("click", (event) => {
184
- const target = event.target.closest('button');
185
- if (!target) return;
186
-
187
- const action = target.getAttribute('aria-label');
188
-
189
- switch (action) {
190
- case 'Thumbs Up':
191
- debugLog('Thumbs up clicked.');
192
- break;
193
- case 'Thumbs Down':
194
- debugLog('Thumbs down clicked.');
195
- break;
196
- case 'Append to Persistent Message':
197
- appendToPersistentMessage(messageDiv, persistentMessage);
198
- break;
199
- case 'Edit Message':
200
- editMessage(messageDiv);
201
- break;
202
- case 'Copy Message':
203
- copyMessageToClipboard(messageDiv);
204
- break;
205
- case 'Delete Message':
206
- deleteMessage(messageDiv);
207
- break;
208
- }
209
- });
210
- }
211
-
212
- /**
213
- * Appends the content of a message to the persistent message area.
214
- */
215
- function appendToPersistentMessage(messageDiv, persistentMessageElement) {
216
- if (!persistentMessageElement) {
217
- console.error("Persistent message element not found (firstUserMessage).");
218
- return;
219
- }
220
-
221
- const content = messageDiv.querySelector('span')?.innerText || "No content";
222
- const persistentMessageContent = persistentMessageElement.querySelector('.message span');
223
-
224
- if (persistentMessageContent) {
225
- persistentMessageContent.innerText = content;
226
- debugLog('Message appended to persistent message area.', { content });
227
- } else {
228
- console.error("Persistent message content element not found.");
229
- }
230
- }
231
-
232
- /**
233
- * Allows the user to edit a message.
234
- */
235
- function editMessage(messageDiv) {
236
- const span = messageDiv.querySelector('span');
237
- const content = span.innerText;
238
- const newContent = prompt('Edit your message:', content);
239
- if (newContent !== null) {
240
- span.innerText = newContent;
241
- debugLog('Message edited successfully.', { newContent });
242
- }
243
- }
244
-
245
- /**
246
- * Copies a message's content to the clipboard.
247
- */
248
- function copyMessageToClipboard(messageDiv) {
249
- const content = messageDiv.querySelector('span').innerText;
250
- navigator.clipboard.writeText(content).then(() => {
251
- alert('Message copied to clipboard!');
252
- debugLog('Message copied to clipboard.', { content });
253
- });
254
- }
255
-
256
- /**
257
- * Deletes a message from the chat history.
258
- */
259
- function deleteMessage(messageDiv) {
260
- if (confirm('Are you sure you want to delete this message?')) {
261
- messageDiv.remove();
262
- debugLog('Message deleted successfully.');
263
- }
264
- }