open-swarm 0.1.1745274976__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 (295) 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.1745274976.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.1745274976.dist-info/METADATA +0 -874
  44. open_swarm-0.1.1745274976.dist-info/RECORD +0 -318
  45. open_swarm-0.1.1745274976.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 -97
  81. swarm/blueprints/geese/blueprint_geese.py +0 -803
  82. swarm/blueprints/geese/geese_cli.py +0 -102
  83. swarm/blueprints/jeeves/README.md +0 -41
  84. swarm/blueprints/jeeves/blueprint_jeeves.py +0 -722
  85. swarm/blueprints/jeeves/jeeves_cli.py +0 -55
  86. swarm/blueprints/jeeves/metadata.json +0 -24
  87. swarm/blueprints/mcp_demo/blueprint_mcp_demo.py +0 -473
  88. swarm/blueprints/messenger/templates/messenger/messenger.html +0 -46
  89. swarm/blueprints/mission_improbable/blueprint_mission_improbable.py +0 -423
  90. swarm/blueprints/monkai_magic/blueprint_monkai_magic.py +0 -340
  91. swarm/blueprints/nebula_shellz/blueprint_nebula_shellz.py +0 -265
  92. swarm/blueprints/omniplex/blueprint_omniplex.py +0 -298
  93. swarm/blueprints/poets/blueprint_poets.py +0 -546
  94. swarm/blueprints/poets/poets_cli.py +0 -23
  95. swarm/blueprints/rue_code/README.md +0 -8
  96. swarm/blueprints/rue_code/blueprint_rue_code.py +0 -448
  97. swarm/blueprints/rue_code/rue_code_cli.py +0 -43
  98. swarm/blueprints/stewie/apps.py +0 -12
  99. swarm/blueprints/stewie/blueprint_family_ties.py +0 -349
  100. swarm/blueprints/stewie/models.py +0 -19
  101. swarm/blueprints/stewie/serializers.py +0 -10
  102. swarm/blueprints/stewie/settings.py +0 -17
  103. swarm/blueprints/stewie/urls.py +0 -11
  104. swarm/blueprints/stewie/views.py +0 -26
  105. swarm/blueprints/suggestion/blueprint_suggestion.py +0 -222
  106. swarm/blueprints/whinge_surf/README.md +0 -22
  107. swarm/blueprints/whinge_surf/__init__.py +0 -1
  108. swarm/blueprints/whinge_surf/blueprint_whinge_surf.py +0 -565
  109. swarm/blueprints/whinge_surf/whinge_surf_cli.py +0 -99
  110. swarm/blueprints/whiskeytango_foxtrot/__init__.py +0 -0
  111. swarm/blueprints/whiskeytango_foxtrot/apps.py +0 -11
  112. swarm/blueprints/whiskeytango_foxtrot/blueprint_whiskeytango_foxtrot.py +0 -339
  113. swarm/blueprints/zeus/__init__.py +0 -2
  114. swarm/blueprints/zeus/apps.py +0 -4
  115. swarm/blueprints/zeus/blueprint_zeus.py +0 -270
  116. swarm/blueprints/zeus/zeus_cli.py +0 -13
  117. swarm/cli/async_input.py +0 -65
  118. swarm/cli/async_input_demo.py +0 -32
  119. swarm/core/blueprint_base.py +0 -769
  120. swarm/core/blueprint_discovery.py +0 -125
  121. swarm/core/blueprint_runner.py +0 -59
  122. swarm/core/blueprint_ux.py +0 -109
  123. swarm/core/build_launchers.py +0 -15
  124. swarm/core/cli/__init__.py +0 -1
  125. swarm/core/cli/commands/__init__.py +0 -1
  126. swarm/core/cli/commands/blueprint_management.py +0 -7
  127. swarm/core/cli/interactive_shell.py +0 -14
  128. swarm/core/cli/main.py +0 -50
  129. swarm/core/cli/utils/__init__.py +0 -1
  130. swarm/core/cli/utils/discover_commands.py +0 -18
  131. swarm/core/config_loader.py +0 -122
  132. swarm/core/output_utils.py +0 -193
  133. swarm/core/session_logger.py +0 -42
  134. swarm/core/slash_commands.py +0 -89
  135. swarm/core/swarm_api.py +0 -68
  136. swarm/core/swarm_cli.py +0 -216
  137. swarm/core/utils/__init__.py +0 -0
  138. swarm/extensions/blueprint/cli_handler.py +0 -197
  139. swarm/extensions/blueprint/runnable_blueprint.py +0 -42
  140. swarm/extensions/cli/utils/__init__.py +0 -1
  141. swarm/extensions/cli/utils/async_input.py +0 -46
  142. swarm/extensions/cli/utils/prompt_user.py +0 -3
  143. swarm/management/__init__.py +0 -0
  144. swarm/management/commands/__init__.py +0 -0
  145. swarm/management/commands/runserver.py +0 -58
  146. swarm/middleware.py +0 -65
  147. swarm/permissions.py +0 -38
  148. swarm/static/contrib/fonts/fontawesome-webfont.ttf +0 -7
  149. swarm/static/contrib/fonts/fontawesome-webfont.woff +0 -7
  150. swarm/static/contrib/fonts/fontawesome-webfont.woff2 +0 -7
  151. swarm/static/contrib/markedjs/marked.min.js +0 -6
  152. swarm/static/contrib/tabler-icons/adjustments-horizontal.svg +0 -27
  153. swarm/static/contrib/tabler-icons/alert-triangle.svg +0 -21
  154. swarm/static/contrib/tabler-icons/archive.svg +0 -21
  155. swarm/static/contrib/tabler-icons/artboard.svg +0 -27
  156. swarm/static/contrib/tabler-icons/automatic-gearbox.svg +0 -23
  157. swarm/static/contrib/tabler-icons/box-multiple.svg +0 -19
  158. swarm/static/contrib/tabler-icons/carambola.svg +0 -19
  159. swarm/static/contrib/tabler-icons/copy.svg +0 -20
  160. swarm/static/contrib/tabler-icons/download.svg +0 -21
  161. swarm/static/contrib/tabler-icons/edit.svg +0 -21
  162. swarm/static/contrib/tabler-icons/filled/carambola.svg +0 -13
  163. swarm/static/contrib/tabler-icons/filled/paint.svg +0 -13
  164. swarm/static/contrib/tabler-icons/headset.svg +0 -22
  165. swarm/static/contrib/tabler-icons/layout-sidebar-left-collapse.svg +0 -21
  166. swarm/static/contrib/tabler-icons/layout-sidebar-left-expand.svg +0 -21
  167. swarm/static/contrib/tabler-icons/layout-sidebar-right-collapse.svg +0 -21
  168. swarm/static/contrib/tabler-icons/layout-sidebar-right-expand.svg +0 -21
  169. swarm/static/contrib/tabler-icons/message-chatbot.svg +0 -22
  170. swarm/static/contrib/tabler-icons/message-star.svg +0 -22
  171. swarm/static/contrib/tabler-icons/message-x.svg +0 -23
  172. swarm/static/contrib/tabler-icons/message.svg +0 -21
  173. swarm/static/contrib/tabler-icons/paperclip.svg +0 -18
  174. swarm/static/contrib/tabler-icons/playlist-add.svg +0 -22
  175. swarm/static/contrib/tabler-icons/robot.svg +0 -26
  176. swarm/static/contrib/tabler-icons/search.svg +0 -19
  177. swarm/static/contrib/tabler-icons/settings.svg +0 -20
  178. swarm/static/contrib/tabler-icons/thumb-down.svg +0 -19
  179. swarm/static/contrib/tabler-icons/thumb-up.svg +0 -19
  180. swarm/static/css/dropdown.css +0 -22
  181. swarm/static/htmx/htmx.min.js +0 -0
  182. swarm/static/js/dropdown.js +0 -23
  183. swarm/static/rest_mode/css/base.css +0 -470
  184. swarm/static/rest_mode/css/chat-history.css +0 -286
  185. swarm/static/rest_mode/css/chat.css +0 -251
  186. swarm/static/rest_mode/css/chatbot.css +0 -74
  187. swarm/static/rest_mode/css/chatgpt.css +0 -62
  188. swarm/static/rest_mode/css/colors/corporate.css +0 -74
  189. swarm/static/rest_mode/css/colors/pastel.css +0 -81
  190. swarm/static/rest_mode/css/colors/tropical.css +0 -82
  191. swarm/static/rest_mode/css/general.css +0 -142
  192. swarm/static/rest_mode/css/layout.css +0 -167
  193. swarm/static/rest_mode/css/layouts/messenger-layout.css +0 -17
  194. swarm/static/rest_mode/css/layouts/minimalist-layout.css +0 -57
  195. swarm/static/rest_mode/css/layouts/mobile-layout.css +0 -8
  196. swarm/static/rest_mode/css/messages.css +0 -84
  197. swarm/static/rest_mode/css/messenger.css +0 -135
  198. swarm/static/rest_mode/css/settings.css +0 -91
  199. swarm/static/rest_mode/css/simple.css +0 -44
  200. swarm/static/rest_mode/css/slack.css +0 -58
  201. swarm/static/rest_mode/css/style.css +0 -156
  202. swarm/static/rest_mode/css/theme.css +0 -30
  203. swarm/static/rest_mode/css/toast.css +0 -40
  204. swarm/static/rest_mode/js/auth.js +0 -9
  205. swarm/static/rest_mode/js/blueprint.js +0 -41
  206. swarm/static/rest_mode/js/blueprintUtils.js +0 -12
  207. swarm/static/rest_mode/js/chatLogic.js +0 -79
  208. swarm/static/rest_mode/js/debug.js +0 -63
  209. swarm/static/rest_mode/js/events.js +0 -98
  210. swarm/static/rest_mode/js/main.js +0 -19
  211. swarm/static/rest_mode/js/messages.js +0 -264
  212. swarm/static/rest_mode/js/messengerLogic.js +0 -355
  213. swarm/static/rest_mode/js/modules/apiService.js +0 -84
  214. swarm/static/rest_mode/js/modules/blueprintManager.js +0 -162
  215. swarm/static/rest_mode/js/modules/chatHistory.js +0 -110
  216. swarm/static/rest_mode/js/modules/debugLogger.js +0 -14
  217. swarm/static/rest_mode/js/modules/eventHandlers.js +0 -107
  218. swarm/static/rest_mode/js/modules/messageProcessor.js +0 -120
  219. swarm/static/rest_mode/js/modules/state.js +0 -7
  220. swarm/static/rest_mode/js/modules/userInteractions.js +0 -29
  221. swarm/static/rest_mode/js/modules/validation.js +0 -23
  222. swarm/static/rest_mode/js/rendering.js +0 -119
  223. swarm/static/rest_mode/js/settings.js +0 -130
  224. swarm/static/rest_mode/js/sidebar.js +0 -94
  225. swarm/static/rest_mode/js/simpleLogic.js +0 -37
  226. swarm/static/rest_mode/js/slackLogic.js +0 -66
  227. swarm/static/rest_mode/js/splash.js +0 -76
  228. swarm/static/rest_mode/js/theme.js +0 -111
  229. swarm/static/rest_mode/js/toast.js +0 -36
  230. swarm/static/rest_mode/js/ui.js +0 -265
  231. swarm/static/rest_mode/js/validation.js +0 -57
  232. swarm/static/rest_mode/svg/animated_spinner.svg +0 -12
  233. swarm/static/rest_mode/svg/arrow_down.svg +0 -5
  234. swarm/static/rest_mode/svg/arrow_left.svg +0 -5
  235. swarm/static/rest_mode/svg/arrow_right.svg +0 -5
  236. swarm/static/rest_mode/svg/arrow_up.svg +0 -5
  237. swarm/static/rest_mode/svg/attach.svg +0 -8
  238. swarm/static/rest_mode/svg/avatar.svg +0 -7
  239. swarm/static/rest_mode/svg/canvas.svg +0 -6
  240. swarm/static/rest_mode/svg/chat_history.svg +0 -4
  241. swarm/static/rest_mode/svg/close.svg +0 -5
  242. swarm/static/rest_mode/svg/copy.svg +0 -4
  243. swarm/static/rest_mode/svg/dark_mode.svg +0 -3
  244. swarm/static/rest_mode/svg/edit.svg +0 -5
  245. swarm/static/rest_mode/svg/layout.svg +0 -9
  246. swarm/static/rest_mode/svg/logo.svg +0 -29
  247. swarm/static/rest_mode/svg/logout.svg +0 -5
  248. swarm/static/rest_mode/svg/mobile.svg +0 -5
  249. swarm/static/rest_mode/svg/new_chat.svg +0 -4
  250. swarm/static/rest_mode/svg/not_visible.svg +0 -5
  251. swarm/static/rest_mode/svg/plus.svg +0 -7
  252. swarm/static/rest_mode/svg/run_code.svg +0 -6
  253. swarm/static/rest_mode/svg/save.svg +0 -4
  254. swarm/static/rest_mode/svg/search.svg +0 -6
  255. swarm/static/rest_mode/svg/settings.svg +0 -4
  256. swarm/static/rest_mode/svg/speaker.svg +0 -5
  257. swarm/static/rest_mode/svg/stop.svg +0 -6
  258. swarm/static/rest_mode/svg/thumbs_down.svg +0 -3
  259. swarm/static/rest_mode/svg/thumbs_up.svg +0 -3
  260. swarm/static/rest_mode/svg/toggle_off.svg +0 -6
  261. swarm/static/rest_mode/svg/toggle_on.svg +0 -6
  262. swarm/static/rest_mode/svg/trash.svg +0 -10
  263. swarm/static/rest_mode/svg/undo.svg +0 -3
  264. swarm/static/rest_mode/svg/visible.svg +0 -8
  265. swarm/static/rest_mode/svg/voice.svg +0 -10
  266. swarm/templates/account/login.html +0 -22
  267. swarm/templates/account/signup.html +0 -32
  268. swarm/templates/base.html +0 -30
  269. swarm/templates/chat.html +0 -43
  270. swarm/templates/index.html +0 -35
  271. swarm/templates/rest_mode/components/chat_sidebar.html +0 -55
  272. swarm/templates/rest_mode/components/header.html +0 -45
  273. swarm/templates/rest_mode/components/main_chat_pane.html +0 -41
  274. swarm/templates/rest_mode/components/settings_dialog.html +0 -97
  275. swarm/templates/rest_mode/components/splash_screen.html +0 -7
  276. swarm/templates/rest_mode/components/top_bar.html +0 -28
  277. swarm/templates/rest_mode/message_ui.html +0 -50
  278. swarm/templates/rest_mode/slackbot.html +0 -30
  279. swarm/templates/simple_blueprint_page.html +0 -24
  280. swarm/templates/websocket_partials/final_system_message.html +0 -3
  281. swarm/templates/websocket_partials/system_message.html +0 -4
  282. swarm/templates/websocket_partials/user_message.html +0 -5
  283. swarm/utils/ansi_box.py +0 -34
  284. swarm/utils/disable_tracing.py +0 -38
  285. swarm/utils/log_utils.py +0 -63
  286. swarm/utils/openai_patch.py +0 -33
  287. swarm/ux/ansi_box.py +0 -43
  288. swarm/ux/spinner.py +0 -53
  289. {open_swarm-0.1.1745274976.dist-info → open_swarm-0.1.1748636259.dist-info}/licenses/LICENSE +0 -0
  290. /swarm/{core → extensions/blueprint}/blueprint_utils.py +0 -0
  291. /swarm/{core → extensions/blueprint}/common_utils.py +0 -0
  292. /swarm/{core → extensions/config}/setup_wizard.py +0 -0
  293. /swarm/{blueprints/rue_code → extensions/config/utils}/__init__.py +0 -0
  294. /swarm/{core → extensions/config}/utils/logger.py +0 -0
  295. /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
- }