open-swarm 0.1.1745275181__py3-none-any.whl → 0.1.1748636295__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 (307) hide show
  1. open_swarm-0.1.1748636295.dist-info/METADATA +257 -0
  2. open_swarm-0.1.1748636295.dist-info/RECORD +89 -0
  3. {open_swarm-0.1.1745275181.dist-info → open_swarm-0.1.1748636295.dist-info}/WHEEL +2 -1
  4. open_swarm-0.1.1748636295.dist-info/entry_points.txt +3 -0
  5. open_swarm-0.1.1748636295.dist-info/top_level.txt +1 -0
  6. swarm/__init__.py +2 -0
  7. swarm/agent/agent.py +49 -0
  8. swarm/auth.py +48 -113
  9. swarm/consumers.py +0 -19
  10. swarm/core.py +411 -0
  11. swarm/extensions/blueprint/__init__.py +16 -30
  12. swarm/extensions/blueprint/agent_utils.py +45 -0
  13. swarm/extensions/blueprint/blueprint_base.py +562 -0
  14. swarm/extensions/blueprint/blueprint_discovery.py +112 -0
  15. swarm/extensions/blueprint/django_utils.py +79 -181
  16. swarm/extensions/blueprint/interactive_mode.py +72 -67
  17. swarm/extensions/blueprint/output_utils.py +82 -0
  18. swarm/{core → extensions/blueprint}/spinner.py +21 -30
  19. swarm/extensions/cli/cli_args.py +0 -6
  20. swarm/extensions/cli/commands/blueprint_management.py +9 -47
  21. swarm/extensions/cli/commands/config_management.py +6 -5
  22. swarm/extensions/cli/commands/edit_config.py +7 -16
  23. swarm/extensions/cli/commands/list_blueprints.py +1 -1
  24. swarm/extensions/cli/commands/validate_env.py +4 -11
  25. swarm/extensions/cli/commands/validate_envvars.py +6 -6
  26. swarm/extensions/cli/interactive_shell.py +2 -16
  27. swarm/extensions/config/config_loader.py +345 -107
  28. swarm/{core → extensions/config}/config_manager.py +38 -50
  29. swarm/{core → extensions/config}/server_config.py +0 -32
  30. swarm/extensions/launchers/build_launchers.py +14 -0
  31. swarm/{core → extensions/launchers}/build_swarm_wrapper.py +0 -0
  32. swarm/extensions/launchers/swarm_api.py +64 -8
  33. swarm/extensions/launchers/swarm_cli.py +300 -8
  34. swarm/extensions/mcp/__init__.py +1 -0
  35. swarm/extensions/mcp/cache_utils.py +32 -0
  36. swarm/extensions/mcp/mcp_client.py +233 -0
  37. swarm/extensions/mcp/mcp_tool_provider.py +135 -0
  38. swarm/extensions/mcp/mcp_utils.py +260 -0
  39. swarm/llm/chat_completion.py +166 -0
  40. swarm/serializers.py +5 -96
  41. swarm/settings.py +133 -85
  42. swarm/types.py +91 -0
  43. swarm/urls.py +74 -57
  44. swarm/utils/context_utils.py +4 -10
  45. swarm/utils/general_utils.py +0 -21
  46. swarm/utils/redact.py +36 -23
  47. swarm/views/api_views.py +39 -48
  48. swarm/views/chat_views.py +76 -236
  49. swarm/views/core_views.py +87 -80
  50. swarm/views/model_views.py +121 -64
  51. swarm/views/utils.py +439 -65
  52. swarm/views/web_views.py +2 -2
  53. open_swarm-0.1.1745275181.dist-info/METADATA +0 -874
  54. open_swarm-0.1.1745275181.dist-info/RECORD +0 -319
  55. open_swarm-0.1.1745275181.dist-info/entry_points.txt +0 -4
  56. swarm/blueprints/README.md +0 -68
  57. swarm/blueprints/blueprint_audit_status.json +0 -27
  58. swarm/blueprints/chatbot/README.md +0 -40
  59. swarm/blueprints/chatbot/blueprint_chatbot.py +0 -471
  60. swarm/blueprints/chatbot/metadata.json +0 -23
  61. swarm/blueprints/chatbot/templates/chatbot/chatbot.html +0 -33
  62. swarm/blueprints/chucks_angels/README.md +0 -11
  63. swarm/blueprints/chucks_angels/blueprint_chucks_angels.py +0 -7
  64. swarm/blueprints/chucks_angels/test_basic.py +0 -3
  65. swarm/blueprints/codey/CODEY.md +0 -15
  66. swarm/blueprints/codey/README.md +0 -115
  67. swarm/blueprints/codey/blueprint_codey.py +0 -1072
  68. swarm/blueprints/codey/codey_cli.py +0 -373
  69. swarm/blueprints/codey/instructions.md +0 -17
  70. swarm/blueprints/codey/metadata.json +0 -23
  71. swarm/blueprints/common/operation_box_utils.py +0 -83
  72. swarm/blueprints/digitalbutlers/README.md +0 -11
  73. swarm/blueprints/digitalbutlers/__init__.py +0 -1
  74. swarm/blueprints/digitalbutlers/blueprint_digitalbutlers.py +0 -7
  75. swarm/blueprints/digitalbutlers/test_basic.py +0 -3
  76. swarm/blueprints/divine_code/README.md +0 -3
  77. swarm/blueprints/divine_code/__init__.py +0 -10
  78. swarm/blueprints/divine_code/apps.py +0 -11
  79. swarm/blueprints/divine_code/blueprint_divine_code.py +0 -270
  80. swarm/blueprints/django_chat/apps.py +0 -6
  81. swarm/blueprints/django_chat/blueprint_django_chat.py +0 -268
  82. swarm/blueprints/django_chat/templates/django_chat/django_chat_webpage.html +0 -37
  83. swarm/blueprints/django_chat/urls.py +0 -8
  84. swarm/blueprints/django_chat/views.py +0 -32
  85. swarm/blueprints/echocraft/blueprint_echocraft.py +0 -384
  86. swarm/blueprints/flock/README.md +0 -11
  87. swarm/blueprints/flock/__init__.py +0 -8
  88. swarm/blueprints/flock/blueprint_flock.py +0 -7
  89. swarm/blueprints/flock/test_basic.py +0 -3
  90. swarm/blueprints/geese/README.md +0 -10
  91. swarm/blueprints/geese/__init__.py +0 -8
  92. swarm/blueprints/geese/blueprint_geese.py +0 -384
  93. swarm/blueprints/geese/geese_cli.py +0 -102
  94. swarm/blueprints/jeeves/README.md +0 -41
  95. swarm/blueprints/jeeves/blueprint_jeeves.py +0 -722
  96. swarm/blueprints/jeeves/jeeves_cli.py +0 -55
  97. swarm/blueprints/jeeves/metadata.json +0 -24
  98. swarm/blueprints/mcp_demo/blueprint_mcp_demo.py +0 -473
  99. swarm/blueprints/messenger/templates/messenger/messenger.html +0 -46
  100. swarm/blueprints/mission_improbable/blueprint_mission_improbable.py +0 -423
  101. swarm/blueprints/monkai_magic/blueprint_monkai_magic.py +0 -340
  102. swarm/blueprints/nebula_shellz/blueprint_nebula_shellz.py +0 -265
  103. swarm/blueprints/omniplex/blueprint_omniplex.py +0 -298
  104. swarm/blueprints/poets/blueprint_poets.py +0 -546
  105. swarm/blueprints/poets/poets_cli.py +0 -23
  106. swarm/blueprints/rue_code/README.md +0 -8
  107. swarm/blueprints/rue_code/blueprint_rue_code.py +0 -448
  108. swarm/blueprints/rue_code/rue_code_cli.py +0 -43
  109. swarm/blueprints/stewie/apps.py +0 -12
  110. swarm/blueprints/stewie/blueprint_family_ties.py +0 -349
  111. swarm/blueprints/stewie/models.py +0 -19
  112. swarm/blueprints/stewie/serializers.py +0 -10
  113. swarm/blueprints/stewie/settings.py +0 -17
  114. swarm/blueprints/stewie/urls.py +0 -11
  115. swarm/blueprints/stewie/views.py +0 -26
  116. swarm/blueprints/suggestion/blueprint_suggestion.py +0 -222
  117. swarm/blueprints/whinge_surf/README.md +0 -22
  118. swarm/blueprints/whinge_surf/__init__.py +0 -1
  119. swarm/blueprints/whinge_surf/blueprint_whinge_surf.py +0 -565
  120. swarm/blueprints/whinge_surf/whinge_surf_cli.py +0 -99
  121. swarm/blueprints/whiskeytango_foxtrot/__init__.py +0 -0
  122. swarm/blueprints/whiskeytango_foxtrot/apps.py +0 -11
  123. swarm/blueprints/whiskeytango_foxtrot/blueprint_whiskeytango_foxtrot.py +0 -339
  124. swarm/blueprints/zeus/__init__.py +0 -2
  125. swarm/blueprints/zeus/apps.py +0 -4
  126. swarm/blueprints/zeus/blueprint_zeus.py +0 -270
  127. swarm/blueprints/zeus/zeus_cli.py +0 -13
  128. swarm/cli/async_input.py +0 -65
  129. swarm/cli/async_input_demo.py +0 -32
  130. swarm/core/agent_utils.py +0 -21
  131. swarm/core/blueprint_base.py +0 -769
  132. swarm/core/blueprint_discovery.py +0 -125
  133. swarm/core/blueprint_runner.py +0 -59
  134. swarm/core/blueprint_ux.py +0 -109
  135. swarm/core/build_launchers.py +0 -15
  136. swarm/core/cli/__init__.py +0 -1
  137. swarm/core/cli/commands/__init__.py +0 -1
  138. swarm/core/cli/commands/blueprint_management.py +0 -7
  139. swarm/core/cli/interactive_shell.py +0 -14
  140. swarm/core/cli/main.py +0 -50
  141. swarm/core/cli/utils/__init__.py +0 -1
  142. swarm/core/cli/utils/discover_commands.py +0 -18
  143. swarm/core/config_loader.py +0 -122
  144. swarm/core/output_utils.py +0 -193
  145. swarm/core/session_logger.py +0 -42
  146. swarm/core/slash_commands.py +0 -89
  147. swarm/core/swarm_api.py +0 -68
  148. swarm/core/swarm_cli.py +0 -216
  149. swarm/core/utils/__init__.py +0 -0
  150. swarm/extensions/blueprint/cli_handler.py +0 -197
  151. swarm/extensions/blueprint/runnable_blueprint.py +0 -42
  152. swarm/extensions/cli/utils/__init__.py +0 -1
  153. swarm/extensions/cli/utils/async_input.py +0 -46
  154. swarm/extensions/cli/utils/prompt_user.py +0 -3
  155. swarm/management/__init__.py +0 -0
  156. swarm/management/commands/__init__.py +0 -0
  157. swarm/management/commands/runserver.py +0 -58
  158. swarm/middleware.py +0 -65
  159. swarm/permissions.py +0 -38
  160. swarm/static/contrib/fonts/fontawesome-webfont.ttf +0 -7
  161. swarm/static/contrib/fonts/fontawesome-webfont.woff +0 -7
  162. swarm/static/contrib/fonts/fontawesome-webfont.woff2 +0 -7
  163. swarm/static/contrib/markedjs/marked.min.js +0 -6
  164. swarm/static/contrib/tabler-icons/adjustments-horizontal.svg +0 -27
  165. swarm/static/contrib/tabler-icons/alert-triangle.svg +0 -21
  166. swarm/static/contrib/tabler-icons/archive.svg +0 -21
  167. swarm/static/contrib/tabler-icons/artboard.svg +0 -27
  168. swarm/static/contrib/tabler-icons/automatic-gearbox.svg +0 -23
  169. swarm/static/contrib/tabler-icons/box-multiple.svg +0 -19
  170. swarm/static/contrib/tabler-icons/carambola.svg +0 -19
  171. swarm/static/contrib/tabler-icons/copy.svg +0 -20
  172. swarm/static/contrib/tabler-icons/download.svg +0 -21
  173. swarm/static/contrib/tabler-icons/edit.svg +0 -21
  174. swarm/static/contrib/tabler-icons/filled/carambola.svg +0 -13
  175. swarm/static/contrib/tabler-icons/filled/paint.svg +0 -13
  176. swarm/static/contrib/tabler-icons/headset.svg +0 -22
  177. swarm/static/contrib/tabler-icons/layout-sidebar-left-collapse.svg +0 -21
  178. swarm/static/contrib/tabler-icons/layout-sidebar-left-expand.svg +0 -21
  179. swarm/static/contrib/tabler-icons/layout-sidebar-right-collapse.svg +0 -21
  180. swarm/static/contrib/tabler-icons/layout-sidebar-right-expand.svg +0 -21
  181. swarm/static/contrib/tabler-icons/message-chatbot.svg +0 -22
  182. swarm/static/contrib/tabler-icons/message-star.svg +0 -22
  183. swarm/static/contrib/tabler-icons/message-x.svg +0 -23
  184. swarm/static/contrib/tabler-icons/message.svg +0 -21
  185. swarm/static/contrib/tabler-icons/paperclip.svg +0 -18
  186. swarm/static/contrib/tabler-icons/playlist-add.svg +0 -22
  187. swarm/static/contrib/tabler-icons/robot.svg +0 -26
  188. swarm/static/contrib/tabler-icons/search.svg +0 -19
  189. swarm/static/contrib/tabler-icons/settings.svg +0 -20
  190. swarm/static/contrib/tabler-icons/thumb-down.svg +0 -19
  191. swarm/static/contrib/tabler-icons/thumb-up.svg +0 -19
  192. swarm/static/css/dropdown.css +0 -22
  193. swarm/static/htmx/htmx.min.js +0 -0
  194. swarm/static/js/dropdown.js +0 -23
  195. swarm/static/rest_mode/css/base.css +0 -470
  196. swarm/static/rest_mode/css/chat-history.css +0 -286
  197. swarm/static/rest_mode/css/chat.css +0 -251
  198. swarm/static/rest_mode/css/chatbot.css +0 -74
  199. swarm/static/rest_mode/css/chatgpt.css +0 -62
  200. swarm/static/rest_mode/css/colors/corporate.css +0 -74
  201. swarm/static/rest_mode/css/colors/pastel.css +0 -81
  202. swarm/static/rest_mode/css/colors/tropical.css +0 -82
  203. swarm/static/rest_mode/css/general.css +0 -142
  204. swarm/static/rest_mode/css/layout.css +0 -167
  205. swarm/static/rest_mode/css/layouts/messenger-layout.css +0 -17
  206. swarm/static/rest_mode/css/layouts/minimalist-layout.css +0 -57
  207. swarm/static/rest_mode/css/layouts/mobile-layout.css +0 -8
  208. swarm/static/rest_mode/css/messages.css +0 -84
  209. swarm/static/rest_mode/css/messenger.css +0 -135
  210. swarm/static/rest_mode/css/settings.css +0 -91
  211. swarm/static/rest_mode/css/simple.css +0 -44
  212. swarm/static/rest_mode/css/slack.css +0 -58
  213. swarm/static/rest_mode/css/style.css +0 -156
  214. swarm/static/rest_mode/css/theme.css +0 -30
  215. swarm/static/rest_mode/css/toast.css +0 -40
  216. swarm/static/rest_mode/js/auth.js +0 -9
  217. swarm/static/rest_mode/js/blueprint.js +0 -41
  218. swarm/static/rest_mode/js/blueprintUtils.js +0 -12
  219. swarm/static/rest_mode/js/chatLogic.js +0 -79
  220. swarm/static/rest_mode/js/debug.js +0 -63
  221. swarm/static/rest_mode/js/events.js +0 -98
  222. swarm/static/rest_mode/js/main.js +0 -19
  223. swarm/static/rest_mode/js/messages.js +0 -264
  224. swarm/static/rest_mode/js/messengerLogic.js +0 -355
  225. swarm/static/rest_mode/js/modules/apiService.js +0 -84
  226. swarm/static/rest_mode/js/modules/blueprintManager.js +0 -162
  227. swarm/static/rest_mode/js/modules/chatHistory.js +0 -110
  228. swarm/static/rest_mode/js/modules/debugLogger.js +0 -14
  229. swarm/static/rest_mode/js/modules/eventHandlers.js +0 -107
  230. swarm/static/rest_mode/js/modules/messageProcessor.js +0 -120
  231. swarm/static/rest_mode/js/modules/state.js +0 -7
  232. swarm/static/rest_mode/js/modules/userInteractions.js +0 -29
  233. swarm/static/rest_mode/js/modules/validation.js +0 -23
  234. swarm/static/rest_mode/js/rendering.js +0 -119
  235. swarm/static/rest_mode/js/settings.js +0 -130
  236. swarm/static/rest_mode/js/sidebar.js +0 -94
  237. swarm/static/rest_mode/js/simpleLogic.js +0 -37
  238. swarm/static/rest_mode/js/slackLogic.js +0 -66
  239. swarm/static/rest_mode/js/splash.js +0 -76
  240. swarm/static/rest_mode/js/theme.js +0 -111
  241. swarm/static/rest_mode/js/toast.js +0 -36
  242. swarm/static/rest_mode/js/ui.js +0 -265
  243. swarm/static/rest_mode/js/validation.js +0 -57
  244. swarm/static/rest_mode/svg/animated_spinner.svg +0 -12
  245. swarm/static/rest_mode/svg/arrow_down.svg +0 -5
  246. swarm/static/rest_mode/svg/arrow_left.svg +0 -5
  247. swarm/static/rest_mode/svg/arrow_right.svg +0 -5
  248. swarm/static/rest_mode/svg/arrow_up.svg +0 -5
  249. swarm/static/rest_mode/svg/attach.svg +0 -8
  250. swarm/static/rest_mode/svg/avatar.svg +0 -7
  251. swarm/static/rest_mode/svg/canvas.svg +0 -6
  252. swarm/static/rest_mode/svg/chat_history.svg +0 -4
  253. swarm/static/rest_mode/svg/close.svg +0 -5
  254. swarm/static/rest_mode/svg/copy.svg +0 -4
  255. swarm/static/rest_mode/svg/dark_mode.svg +0 -3
  256. swarm/static/rest_mode/svg/edit.svg +0 -5
  257. swarm/static/rest_mode/svg/layout.svg +0 -9
  258. swarm/static/rest_mode/svg/logo.svg +0 -29
  259. swarm/static/rest_mode/svg/logout.svg +0 -5
  260. swarm/static/rest_mode/svg/mobile.svg +0 -5
  261. swarm/static/rest_mode/svg/new_chat.svg +0 -4
  262. swarm/static/rest_mode/svg/not_visible.svg +0 -5
  263. swarm/static/rest_mode/svg/plus.svg +0 -7
  264. swarm/static/rest_mode/svg/run_code.svg +0 -6
  265. swarm/static/rest_mode/svg/save.svg +0 -4
  266. swarm/static/rest_mode/svg/search.svg +0 -6
  267. swarm/static/rest_mode/svg/settings.svg +0 -4
  268. swarm/static/rest_mode/svg/speaker.svg +0 -5
  269. swarm/static/rest_mode/svg/stop.svg +0 -6
  270. swarm/static/rest_mode/svg/thumbs_down.svg +0 -3
  271. swarm/static/rest_mode/svg/thumbs_up.svg +0 -3
  272. swarm/static/rest_mode/svg/toggle_off.svg +0 -6
  273. swarm/static/rest_mode/svg/toggle_on.svg +0 -6
  274. swarm/static/rest_mode/svg/trash.svg +0 -10
  275. swarm/static/rest_mode/svg/undo.svg +0 -3
  276. swarm/static/rest_mode/svg/visible.svg +0 -8
  277. swarm/static/rest_mode/svg/voice.svg +0 -10
  278. swarm/templates/account/login.html +0 -22
  279. swarm/templates/account/signup.html +0 -32
  280. swarm/templates/base.html +0 -30
  281. swarm/templates/chat.html +0 -43
  282. swarm/templates/index.html +0 -35
  283. swarm/templates/rest_mode/components/chat_sidebar.html +0 -55
  284. swarm/templates/rest_mode/components/header.html +0 -45
  285. swarm/templates/rest_mode/components/main_chat_pane.html +0 -41
  286. swarm/templates/rest_mode/components/settings_dialog.html +0 -97
  287. swarm/templates/rest_mode/components/splash_screen.html +0 -7
  288. swarm/templates/rest_mode/components/top_bar.html +0 -28
  289. swarm/templates/rest_mode/message_ui.html +0 -50
  290. swarm/templates/rest_mode/slackbot.html +0 -30
  291. swarm/templates/simple_blueprint_page.html +0 -24
  292. swarm/templates/websocket_partials/final_system_message.html +0 -3
  293. swarm/templates/websocket_partials/system_message.html +0 -4
  294. swarm/templates/websocket_partials/user_message.html +0 -5
  295. swarm/utils/ansi_box.py +0 -34
  296. swarm/utils/disable_tracing.py +0 -38
  297. swarm/utils/log_utils.py +0 -63
  298. swarm/utils/openai_patch.py +0 -33
  299. swarm/ux/ansi_box.py +0 -43
  300. swarm/ux/spinner.py +0 -53
  301. {open_swarm-0.1.1745275181.dist-info → open_swarm-0.1.1748636295.dist-info}/licenses/LICENSE +0 -0
  302. /swarm/{core → extensions/blueprint}/blueprint_utils.py +0 -0
  303. /swarm/{core → extensions/blueprint}/common_utils.py +0 -0
  304. /swarm/{core → extensions/config}/setup_wizard.py +0 -0
  305. /swarm/{blueprints/rue_code → extensions/config/utils}/__init__.py +0 -0
  306. /swarm/{core → extensions/config}/utils/logger.py +0 -0
  307. /swarm/{core → extensions/launchers}/swarm_wrapper.py +0 -0
@@ -1,135 +0,0 @@
1
- .container[data-theme-layout="messenger-layout"] {
2
- display: flex;
3
- height: 100vh;
4
- }
5
-
6
- .chat-history-pane {
7
- width: 250px;
8
- background: #361A42; /* Slack light sidebar purple */
9
- color: #FFFFFF; /* White text */
10
- padding: 10px;
11
- display: flex;
12
- flex-direction: column;
13
- }
14
-
15
- .chat-history-header {
16
- display: flex;
17
- align-items: center;
18
- justify-content: flex-start;
19
- padding: 10px 15px;
20
- background: #361A42; /* Match sidebar */
21
- border-bottom: 1px solid #4A2A55; /* Subtle purple border */
22
- }
23
-
24
- .chat-history-header > div {
25
- display: flex;
26
- flex-direction: row; /* Force horizontal */
27
- align-items: center;
28
- justify-content: flex-start;
29
- gap: 10px;
30
- flex-wrap: nowrap;
31
- width: 100%;
32
- }
33
-
34
- .chat-history-header .input-button {
35
- background: none;
36
- border: none;
37
- cursor: pointer;
38
- padding: 8px;
39
- display: flex;
40
- align-items: center;
41
- justify-content: center;
42
- transition: background-color 0.3s, transform 0.2s;
43
- }
44
-
45
- .chat-history-header .input-button:hover {
46
- background-color: rgba(255, 255, 255, 0.1); /* Light hover */
47
- transform: scale(1.05);
48
- }
49
-
50
- .chat-history-header .input-button img {
51
- width: 20px;
52
- height: 20px;
53
- filter: brightness(0) invert(1); /* White icons on purple */
54
- }
55
-
56
- .chat-history-list {
57
- list-style: none;
58
- padding: 0;
59
- flex-grow: 1;
60
- overflow-y: auto;
61
- }
62
-
63
- .chat-history-list li {
64
- padding: 10px;
65
- cursor: pointer;
66
- color: #FFFFFF;
67
- }
68
-
69
- .chat-history-list li:hover {
70
- background: #4A2A55; /* Darker purple hover */
71
- }
72
-
73
- .main-pane {
74
- flex-grow: 1;
75
- display: flex;
76
- flex-direction: column;
77
- background: #F5F5F5; /* Slack light main area */
78
- color: #2E2E2E;
79
- }
80
-
81
- /* Dark Mode Adjustments */
82
- [data-theme-dark="true"] .chat-history-pane {
83
- background: #2E0F36; /* Slack dark sidebar purple */
84
- }
85
-
86
- [data-theme-dark="true"] .chat-history-header {
87
- background: #2E0F36;
88
- border-bottom: 1px solid #3F1A48;
89
- }
90
-
91
- [data-theme-dark="true"] .chat-history-header .input-button:hover {
92
- background-color: rgba(255, 255, 255, 0.2); /* Light hover in dark mode */
93
- }
94
-
95
- [data-theme-dark="true"] .main-pane {
96
- background: #2E2E2E; /* Slack dark main area */
97
- color: #E0E0E0;
98
- }
99
-
100
- .message-container {
101
- flex-grow: 1;
102
- overflow-y: auto;
103
- padding: 20px;
104
- }
105
-
106
- .user-message {
107
- background: #DCF8C6;
108
- padding: 10px;
109
- margin: 5px 0;
110
- border-radius: 5px;
111
- align-self: flex-end;
112
- max-width: 70%;
113
- }
114
-
115
- .assistant-message {
116
- background: #E6E6E6;
117
- padding: 10px;
118
- margin: 5px 0;
119
- border-radius: 5px;
120
- align-self: flex-start;
121
- max-width: 70%;
122
- }
123
-
124
- .error-message {
125
- background: #F8D7DA;
126
- color: #721C24;
127
- padding: 10px;
128
- margin: 5px 0;
129
- border-radius: 5px;
130
- }
131
-
132
- .send-container {
133
- padding: 10px;
134
- border-top: 1px solid #ddd;
135
- }
@@ -1,91 +0,0 @@
1
- /* Full-Screen Settings Pane */
2
- .settings-dialog {
3
- position: fixed;
4
- top: 10%; /* Leave 10% margin from the top */
5
- left: 10%; /* Leave 10% margin from the left */
6
- width: 80%; /* Take up 80% of the viewport width */
7
- height: 80%; /* Take up 80% of the viewport height */
8
- background-color: var(--bg-primary); /* Match app's primary background color */
9
- border-radius: 8px; /* Slightly rounded corners */
10
- box-shadow: 0 4px 10px rgba(0, 0, 0, 0.3); /* Subtle shadow for pop-out effect */
11
- z-index: 1000; /* Higher than other elements */
12
- overflow-y: auto; /* Scroll if content overflows */
13
- padding: 20px;
14
- display: none; /* Initially hidden */
15
- }
16
-
17
- /* Visible settings pane */
18
- .settings-pane.visible {
19
- display: block; /* Make visible when toggled */
20
- }
21
-
22
- /* Overlay to dim the background */
23
- .settings-overlay {
24
- position: fixed;
25
- top: 0;
26
- left: 0;
27
- width: 100vw; /* Full viewport width */
28
- height: 100vh; /* Full viewport height */
29
- background-color: rgba(0, 0, 0, 0.5); /* Semi-transparent black */
30
- z-index: 999; /* Just below the settings pane */
31
- display: none; /* Initially hidden */
32
- }
33
-
34
- /* Show overlay when settings are active */
35
- .settings-overlay.visible {
36
- display: block;
37
- }
38
-
39
- /* Shaded Container for Settings Sections */
40
- .settings-container-section {
41
- margin-bottom: 15px;
42
- padding: 10px;
43
- border-radius: 8px;
44
- border: 1px solid var(--border-primary, #ccc);
45
- }
46
-
47
- /* Collapsible Sections */
48
- .collapsible-toggle {
49
- cursor: pointer;
50
- font-weight: bold;
51
- margin-bottom: 5px;
52
- display: flex;
53
- justify-content: space-between;
54
- align-items: center;
55
- }
56
-
57
- .collapsible-content.hidden {
58
- display: none;
59
- }
60
-
61
- /* Inline Toggle Alignment */
62
- .toggle-title, .nested-toggle {
63
- display: flex;
64
- align-items: center; /* Align items vertically */
65
- justify-content: space-between; /* Push toggle to the right */
66
- padding: 5px 0; /* Add vertical spacing */
67
- }
68
-
69
- .toggle-title label, .nested-toggle label {
70
- font-weight: bold;
71
- color: var(--text-primary, #333); /* Default text color */
72
- flex: 1; /* Take up available space */
73
- margin-right: 10px; /* Add space between label and toggle */
74
- }
75
-
76
- /* SVG Toggles */
77
- .svg-toggle {
78
- width: 40px; /* Adjust toggle size */
79
- height: 20px;
80
- cursor: pointer;
81
- }
82
-
83
- .svg-toggle img {
84
- width: 100%;
85
- height: auto;
86
- }
87
-
88
- .svg-toggle.disabled {
89
- opacity: 0.5;
90
- pointer-events: none;
91
- }
@@ -1,44 +0,0 @@
1
- .container[data-theme-layout="simple-layout"] {
2
- display: flex;
3
- height: 100vh;
4
- justify-content: center;
5
- align-items: center;
6
- }
7
- .main-pane {
8
- width: 80%;
9
- max-width: 800px;
10
- display: flex;
11
- flex-direction: column;
12
- }
13
- .message-container {
14
- flex-grow: 1;
15
- overflow-y: auto;
16
- padding: 20px;
17
- }
18
- .user-message {
19
- background: #DCF8C6;
20
- padding: 10px;
21
- margin: 5px 0;
22
- border-radius: 5px;
23
- align-self: flex-end;
24
- max-width: 70%;
25
- }
26
- .assistant-message {
27
- background: #E6E6E6;
28
- padding: 10px;
29
- margin: 5px 0;
30
- border-radius: 5px;
31
- align-self: flex-start;
32
- max-width: 70%;
33
- }
34
- .error-message {
35
- background: #F8D7DA;
36
- color: #721C24;
37
- padding: 10px;
38
- margin: 5px 0;
39
- border-radius: 5px;
40
- }
41
- .send-container {
42
- padding: 10px;
43
- border-top: 1px solid #ddd;
44
- }
@@ -1,58 +0,0 @@
1
- .container[data-theme-layout="slack-layout"] {
2
- display: flex;
3
- height: 100vh;
4
- }
5
- .channel-pane {
6
- width: 250px;
7
- background: #3F0E40;
8
- color: white;
9
- padding: 10px;
10
- }
11
- .channel-list {
12
- list-style: none;
13
- padding: 0;
14
- }
15
- .channel-list li {
16
- padding: 10px;
17
- cursor: pointer;
18
- }
19
- .channel-list li:hover {
20
- background: #522653;
21
- }
22
- .main-pane {
23
- flex-grow: 1;
24
- display: flex;
25
- flex-direction: column;
26
- }
27
- .message-container {
28
- flex-grow: 1;
29
- overflow-y: auto;
30
- padding: 20px;
31
- }
32
- .user-message {
33
- background: #DCF8C6;
34
- padding: 10px;
35
- margin: 5px 0;
36
- border-radius: 5px;
37
- align-self: flex-end;
38
- max-width: 70%;
39
- }
40
- .assistant-message {
41
- background: #E6E6E6;
42
- padding: 10px;
43
- margin: 5px 0;
44
- border-radius: 5px;
45
- align-self: flex-start;
46
- max-width: 70%;
47
- }
48
- .error-message {
49
- background: #F8D7DA;
50
- color: #721C24;
51
- padding: 10px;
52
- margin: 5px 0;
53
- border-radius: 5px;
54
- }
55
- .send-container {
56
- padding: 10px;
57
- border-top: 1px solid #ddd;
58
- }
@@ -1,156 +0,0 @@
1
- /* style.css - Shared Styles and Modular Imports */
2
-
3
- /* Modular Imports */
4
- @import './layout.css';
5
- @import './theme.css';
6
- @import './toast.css';
7
-
8
- /* Base Styles */
9
- * {
10
- box-sizing: border-box;
11
- margin: 0;
12
- padding: 0;
13
- }
14
-
15
- body {
16
- font-family: Arial, sans-serif;
17
- border-style: solid;
18
- border-width: 0 0 0 0;
19
- background-color: var(--bg-primary);
20
- box-sizing: border-box;
21
- margin: 0 0 0 0;
22
- color: var(--text-primary);
23
- height: 100vh;
24
- justify-content: center;
25
- align-items: center;
26
- transition: background-color var(--transition-duration), color var(--transition-duration);
27
- overflow-x: visible;
28
- overflow-y: visible;
29
- }
30
-
31
- /* Sidebar Reveal Buttons */
32
- .sidebar-reveal-btn {
33
- position: absolute;
34
- top: 10px; /* Adjusted from 20px */
35
- z-index: 1000;
36
- background-color: var(--button-primary);
37
- color: #fff;
38
- border: none;
39
- border-radius: 50%;
40
- width: 40px;
41
- height: 40px;
42
- cursor: pointer;
43
- transition: background-color var(--transition-duration) ease;
44
- font-size: 1em;
45
- display: flex;
46
- align-items: center;
47
- justify-content: center;
48
- opacity: 0.7; /* Dimmed by default */
49
- }
50
-
51
- .sidebar-reveal-btn:hover {
52
- opacity: 1; /* Fully visible on hover */
53
- }
54
-
55
- .sidebar-reveal-btn + .sidebar-reveal-btn {
56
- top: 60px; /* Reduced gap between buttons */
57
- opacity: 0.7;
58
- }
59
-
60
- .sidebar-reveal-btn:hover + .sidebar-reveal-btn {
61
- opacity: 1;
62
- }
63
-
64
- /* Toast Container */
65
- .toast-container {
66
- position: fixed;
67
- top: 20px;
68
- right: 20px;
69
- z-index: 10000;
70
- display: flex;
71
- flex-direction: column;
72
- gap: 10px;
73
- }
74
-
75
- /* Logo Styling */
76
- .chat-logo {
77
- width: 90px;
78
- height: 90px;
79
- display: block;
80
- margin: 0 auto;
81
- }
82
-
83
- .logo-container {
84
- text-align: center;
85
- margin: 20px auto;
86
- }
87
-
88
- /* Form Container Adjustments */
89
- .form-container {
90
- display: flex;
91
- flex-direction: column;
92
- align-items: stretch;
93
- gap: 5px;
94
- width: 100%;
95
- padding: 10px;
96
- border-radius: 8px;
97
- box-sizing: border-box;
98
- }
99
-
100
- /* Input and Submit Button Row */
101
- .send-container {
102
- display: flex;
103
- align-items: stretch;
104
- width: 100%;
105
- margin-bottom: 5px;
106
- position: relative;
107
- border-radius: 20px;
108
- overflow: hidden;
109
- padding: 0; /* Remove extra padding causing gap */
110
- }
111
-
112
- /* Input Field Styling */
113
- .rounded-input {
114
- flex-grow: 1;
115
- border: none;
116
- border-radius: 0;
117
- outline: none;
118
- box-sizing: border-box;
119
- font-size: 18px;
120
- margin: 0;
121
- width: 100%;
122
- color: var(--text-primary);
123
- background-color: var(--bg-secondary);
124
- padding: 10px 15px; /* Ensure padding is consistent */
125
- }
126
-
127
- /* Submit Button Styling */
128
- .half-cut-button {
129
- padding: 0 20px;
130
- background-color: #707070;
131
- color: white;
132
- border: none;
133
- border-radius: 0;
134
- cursor: pointer;
135
- font-size: 16px;
136
- font-weight: bold;
137
- white-space: nowrap;
138
- display: flex;
139
- align-items: center;
140
- justify-content: center;
141
- height: auto;
142
- transition: background-color 0.3s ease;
143
- margin: 0;
144
- }
145
-
146
- .send-container .rounded-input {
147
- border-radius: 20px 0 0 20px;
148
- }
149
-
150
- .send-container .half-cut-button {
151
- border-radius: 0 20px 20px 0;
152
- }
153
-
154
- .half-cut-button:hover {
155
- background-color: #505050;
156
- }
@@ -1,30 +0,0 @@
1
- /* theme.css - Theme Variables and Colors */
2
-
3
- /* Light Mode Variables */
4
- :root {
5
- --bg-primary: #ffffff;
6
- --bg-container: #f0f8ff;
7
- --text-primary: #333333;
8
- --text-secondary: #666666;
9
- --border-color: #d3d3d3;
10
- --button-primary: #87cefa;
11
- --button-hover: #00bfff;
12
- --bg-hover: #e6f7ff; /* Light hover for messages */
13
- --bg-message-other: #f9f9f9; /* Subtle contrast for message toolbars */
14
- --transition-duration: 0.3s;
15
-
16
- --icon-size: 1.5rem; /* Shared size for SVG icons */
17
- }
18
-
19
- /* Dark Mode Variables */
20
- [data-theme-dark="true"] {
21
- --bg-primary: #1a1a1a;
22
- --bg-container: #2a2a2a;
23
- --text-primary: #f0f0f0;
24
- --text-secondary: #bbbbbb;
25
- --border-color: #555555;
26
- --button-primary: #00bfff;
27
- --button-hover: #87cefa;
28
- --bg-hover: #333333; /* Dark hover for messages */
29
- --bg-message-other: #444444; /* Subtle contrast for message toolbars */
30
- }
@@ -1,40 +0,0 @@
1
- #toastContainer {
2
- position: fixed;
3
- top: 20px;
4
- right: 20px;
5
- z-index: 9999;
6
- display: flex;
7
- flex-direction: column;
8
- gap: 10px;
9
- }
10
-
11
- .toast {
12
- padding: 10px 15px;
13
- border-radius: 5px;
14
- color: white;
15
- font-size: 0.9rem;
16
- box-shadow: 0 2px 5px rgba(0, 0, 0, 0.2);
17
- opacity: 1;
18
- transition: opacity 0.5s ease-out;
19
- }
20
-
21
- .toast.info {
22
- background-color: #007bff; /* Blue for info */
23
- }
24
-
25
- .toast.success {
26
- background-color: #28a745; /* Green for success */
27
- }
28
-
29
- .toast.error {
30
- background-color: #dc3545; /* Red for error */
31
- }
32
-
33
- .toast.warning {
34
- background-color: #ffc107; /* Yellow for warning */
35
- }
36
-
37
- /* Fade-out animation */
38
- .toast.fade-out {
39
- opacity: 0;
40
- }
@@ -1,9 +0,0 @@
1
- import { showToast } from './toast.js';
2
-
3
- /**
4
- * Handles user logout.
5
- */
6
- export function handleLogout() {
7
- showToast("🚪 You have been logged out.", "info");
8
- window.location.href = "/login";
9
- }
@@ -1,41 +0,0 @@
1
- import { showToast } from './toast.js';
2
-
3
- const DEBUG_MODE = true;
4
-
5
- /**
6
- * Logs debug messages if debug mode is enabled.
7
- * @param {string} message - The message to log.
8
- * @param {any} data - Additional data to include in the log.
9
- */
10
- function debugLog(message, data = null) {
11
- if (DEBUG_MODE) {
12
- console.log(`[DEBUG] ${message}`, data);
13
- showToast(`${message}`, "info");
14
- }
15
- }
16
-
17
- /**
18
- * Fetches the list of blueprints (models) from the server.
19
- * @returns {Promise<Array>} - A promise resolving to the list of blueprints.
20
- */
21
- export async function fetchBlueprints() {
22
- debugLog("Fetching blueprints from /v1/models/...");
23
- try {
24
- const response = await fetch('/v1/models/');
25
- if (!response.ok) throw new Error(`HTTP Error: ${response.status}`);
26
-
27
- const data = await response.json();
28
- debugLog("Blueprints fetched successfully.", data);
29
-
30
- // Show an info notification
31
- showToast("Blueprints fetched successfully.", "success", 5000);
32
-
33
- return data.data || [];
34
- } catch (error) {
35
- console.error("Error fetching blueprints:", error);
36
- // Show an error notification
37
- showToast("Error fetching blueprints.", "error");
38
- throw error;
39
- }
40
- }
41
-
@@ -1,12 +0,0 @@
1
- export async function fetchBlueprints() {
2
- try {
3
- const response = await fetch('/v1/models/');
4
- if (!response.ok) throw new Error(`HTTP error! Status: ${response.status}`);
5
- const data = await response.json();
6
- console.log('Raw blueprint data:', data);
7
- return data.data.filter(model => model.object === 'model');
8
- } catch (error) {
9
- console.error('Error fetching blueprints:', error);
10
- return [];
11
- }
12
- }
@@ -1,79 +0,0 @@
1
- async function fetchBlueprints() {
2
- const response = await fetch('/v1/models/');
3
- const data = await response.json();
4
- return data.data.filter(model => model.object === 'model');
5
- }
6
-
7
- function populateBlueprintDropdown(blueprints) {
8
- const dropdown = document.getElementById('blueprintDropdown');
9
- dropdown.innerHTML = '<option value="">Select a Blueprint</option>';
10
- blueprints.forEach(bp => {
11
- const option = document.createElement('option');
12
- option.value = bp.id;
13
- option.textContent = bp.title;
14
- dropdown.appendChild(option);
15
- });
16
- }
17
-
18
- let currentBlueprint = null;
19
- let currentMode = 'default';
20
- function switchBlueprint(blueprintId) {
21
- currentBlueprint = blueprintId;
22
- document.getElementById('messageHistory').innerHTML = '';
23
- document.getElementById('blueprintTitle').textContent = blueprintId || 'No Blueprint Selected';
24
- console.log(`Switched to blueprint: ${blueprintId}, mode: ${currentMode}`);
25
- }
26
-
27
- function setMode(mode) {
28
- currentMode = mode;
29
- console.log(`Mode set to: ${mode}`);
30
- }
31
-
32
- async function handleSubmit(event) {
33
- event.preventDefault();
34
- const input = document.getElementById('userInput');
35
- const message = input.value.trim();
36
- if (!message || !currentBlueprint) {
37
- console.log('No message or blueprint selected');
38
- return;
39
- }
40
-
41
- input.value = '';
42
- const history = document.getElementById('messageHistory');
43
- history.innerHTML += `<div class="user-message">${message} (Mode: ${currentMode})</div>`;
44
-
45
- try {
46
- const response = await fetch('/v1/chat/completions/', {
47
- method: 'POST',
48
- headers: {
49
- 'Content-Type': 'application/json',
50
- 'X-CSRFToken': document.querySelector('meta[name="csrf-token"]').content
51
- },
52
- body: JSON.stringify({
53
- model: currentBlueprint,
54
- messages: [{ role: 'user', content: message }],
55
- context_variables: { mode: currentMode }
56
- })
57
- });
58
- const data = await response.json();
59
- history.innerHTML += `<div class="assistant-message">${data.choices[0].message.content}</div>`;
60
- history.scrollTop = history.scrollHeight;
61
- } catch (error) {
62
- history.innerHTML += `<div class="error-message">Error: ${error.message}</div>`;
63
- }
64
- }
65
-
66
- document.addEventListener('DOMContentLoaded', async () => {
67
- const blueprints = await fetchBlueprints();
68
- populateBlueprintDropdown(blueprints);
69
- if (blueprints.length > 0) switchBlueprint(blueprints[0].id);
70
-
71
- document.getElementById('blueprintDropdown').addEventListener('change', (e) => switchBlueprint(e.target.value));
72
- document.querySelectorAll('.mode-button').forEach(button => {
73
- button.addEventListener('click', () => setMode(button.dataset.mode));
74
- });
75
- document.getElementById('sendButton')?.addEventListener('click', handleSubmit);
76
- document.getElementById('userInput').addEventListener('keypress', (e) => {
77
- if (e.key === 'Enter') handleSubmit(e);
78
- });
79
- });