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.
- open_swarm-0.1.1748636259.dist-info/METADATA +188 -0
- open_swarm-0.1.1748636259.dist-info/RECORD +82 -0
- {open_swarm-0.1.1745274976.dist-info → open_swarm-0.1.1748636259.dist-info}/WHEEL +2 -1
- open_swarm-0.1.1748636259.dist-info/entry_points.txt +3 -0
- open_swarm-0.1.1748636259.dist-info/top_level.txt +1 -0
- swarm/agent/agent.py +49 -0
- swarm/auth.py +48 -113
- swarm/consumers.py +0 -19
- swarm/extensions/blueprint/__init__.py +16 -30
- swarm/{core → extensions/blueprint}/agent_utils.py +1 -1
- swarm/extensions/blueprint/blueprint_base.py +458 -0
- swarm/extensions/blueprint/blueprint_discovery.py +112 -0
- swarm/extensions/blueprint/output_utils.py +95 -0
- swarm/{core → extensions/blueprint}/spinner.py +21 -30
- swarm/extensions/cli/cli_args.py +0 -6
- swarm/extensions/cli/commands/blueprint_management.py +9 -47
- swarm/extensions/cli/commands/config_management.py +6 -5
- swarm/extensions/cli/commands/edit_config.py +7 -16
- swarm/extensions/cli/commands/list_blueprints.py +1 -1
- swarm/extensions/cli/commands/validate_env.py +4 -11
- swarm/extensions/cli/commands/validate_envvars.py +6 -6
- swarm/extensions/cli/interactive_shell.py +2 -16
- swarm/extensions/config/config_loader.py +201 -107
- swarm/{core → extensions/config}/config_manager.py +38 -50
- swarm/{core → extensions/config}/server_config.py +0 -32
- swarm/extensions/launchers/build_launchers.py +14 -0
- swarm/{core → extensions/launchers}/build_swarm_wrapper.py +0 -0
- swarm/extensions/launchers/swarm_api.py +64 -8
- swarm/extensions/launchers/swarm_cli.py +300 -8
- swarm/llm/chat_completion.py +195 -0
- swarm/serializers.py +5 -96
- swarm/settings.py +111 -99
- swarm/urls.py +74 -57
- swarm/utils/context_utils.py +4 -10
- swarm/utils/general_utils.py +0 -21
- swarm/utils/redact.py +36 -23
- swarm/views/api_views.py +39 -48
- swarm/views/chat_views.py +70 -237
- swarm/views/core_views.py +87 -80
- swarm/views/model_views.py +121 -64
- swarm/views/utils.py +441 -65
- swarm/views/web_views.py +2 -2
- open_swarm-0.1.1745274976.dist-info/METADATA +0 -874
- open_swarm-0.1.1745274976.dist-info/RECORD +0 -318
- open_swarm-0.1.1745274976.dist-info/entry_points.txt +0 -4
- swarm/blueprints/README.md +0 -68
- swarm/blueprints/blueprint_audit_status.json +0 -27
- swarm/blueprints/chatbot/README.md +0 -40
- swarm/blueprints/chatbot/blueprint_chatbot.py +0 -471
- swarm/blueprints/chatbot/metadata.json +0 -23
- swarm/blueprints/chatbot/templates/chatbot/chatbot.html +0 -33
- swarm/blueprints/chucks_angels/README.md +0 -11
- swarm/blueprints/chucks_angels/blueprint_chucks_angels.py +0 -7
- swarm/blueprints/chucks_angels/test_basic.py +0 -3
- swarm/blueprints/codey/CODEY.md +0 -15
- swarm/blueprints/codey/README.md +0 -115
- swarm/blueprints/codey/blueprint_codey.py +0 -1072
- swarm/blueprints/codey/codey_cli.py +0 -373
- swarm/blueprints/codey/instructions.md +0 -17
- swarm/blueprints/codey/metadata.json +0 -23
- swarm/blueprints/common/operation_box_utils.py +0 -83
- swarm/blueprints/digitalbutlers/README.md +0 -11
- swarm/blueprints/digitalbutlers/__init__.py +0 -1
- swarm/blueprints/digitalbutlers/blueprint_digitalbutlers.py +0 -7
- swarm/blueprints/digitalbutlers/test_basic.py +0 -3
- swarm/blueprints/divine_code/README.md +0 -3
- swarm/blueprints/divine_code/__init__.py +0 -10
- swarm/blueprints/divine_code/apps.py +0 -11
- swarm/blueprints/divine_code/blueprint_divine_code.py +0 -270
- swarm/blueprints/django_chat/apps.py +0 -6
- swarm/blueprints/django_chat/blueprint_django_chat.py +0 -268
- swarm/blueprints/django_chat/templates/django_chat/django_chat_webpage.html +0 -37
- swarm/blueprints/django_chat/urls.py +0 -8
- swarm/blueprints/django_chat/views.py +0 -32
- swarm/blueprints/echocraft/blueprint_echocraft.py +0 -384
- swarm/blueprints/flock/README.md +0 -11
- swarm/blueprints/flock/__init__.py +0 -8
- swarm/blueprints/flock/blueprint_flock.py +0 -7
- swarm/blueprints/flock/test_basic.py +0 -3
- swarm/blueprints/geese/README.md +0 -97
- swarm/blueprints/geese/blueprint_geese.py +0 -803
- swarm/blueprints/geese/geese_cli.py +0 -102
- swarm/blueprints/jeeves/README.md +0 -41
- swarm/blueprints/jeeves/blueprint_jeeves.py +0 -722
- swarm/blueprints/jeeves/jeeves_cli.py +0 -55
- swarm/blueprints/jeeves/metadata.json +0 -24
- swarm/blueprints/mcp_demo/blueprint_mcp_demo.py +0 -473
- swarm/blueprints/messenger/templates/messenger/messenger.html +0 -46
- swarm/blueprints/mission_improbable/blueprint_mission_improbable.py +0 -423
- swarm/blueprints/monkai_magic/blueprint_monkai_magic.py +0 -340
- swarm/blueprints/nebula_shellz/blueprint_nebula_shellz.py +0 -265
- swarm/blueprints/omniplex/blueprint_omniplex.py +0 -298
- swarm/blueprints/poets/blueprint_poets.py +0 -546
- swarm/blueprints/poets/poets_cli.py +0 -23
- swarm/blueprints/rue_code/README.md +0 -8
- swarm/blueprints/rue_code/blueprint_rue_code.py +0 -448
- swarm/blueprints/rue_code/rue_code_cli.py +0 -43
- swarm/blueprints/stewie/apps.py +0 -12
- swarm/blueprints/stewie/blueprint_family_ties.py +0 -349
- swarm/blueprints/stewie/models.py +0 -19
- swarm/blueprints/stewie/serializers.py +0 -10
- swarm/blueprints/stewie/settings.py +0 -17
- swarm/blueprints/stewie/urls.py +0 -11
- swarm/blueprints/stewie/views.py +0 -26
- swarm/blueprints/suggestion/blueprint_suggestion.py +0 -222
- swarm/blueprints/whinge_surf/README.md +0 -22
- swarm/blueprints/whinge_surf/__init__.py +0 -1
- swarm/blueprints/whinge_surf/blueprint_whinge_surf.py +0 -565
- swarm/blueprints/whinge_surf/whinge_surf_cli.py +0 -99
- swarm/blueprints/whiskeytango_foxtrot/__init__.py +0 -0
- swarm/blueprints/whiskeytango_foxtrot/apps.py +0 -11
- swarm/blueprints/whiskeytango_foxtrot/blueprint_whiskeytango_foxtrot.py +0 -339
- swarm/blueprints/zeus/__init__.py +0 -2
- swarm/blueprints/zeus/apps.py +0 -4
- swarm/blueprints/zeus/blueprint_zeus.py +0 -270
- swarm/blueprints/zeus/zeus_cli.py +0 -13
- swarm/cli/async_input.py +0 -65
- swarm/cli/async_input_demo.py +0 -32
- swarm/core/blueprint_base.py +0 -769
- swarm/core/blueprint_discovery.py +0 -125
- swarm/core/blueprint_runner.py +0 -59
- swarm/core/blueprint_ux.py +0 -109
- swarm/core/build_launchers.py +0 -15
- swarm/core/cli/__init__.py +0 -1
- swarm/core/cli/commands/__init__.py +0 -1
- swarm/core/cli/commands/blueprint_management.py +0 -7
- swarm/core/cli/interactive_shell.py +0 -14
- swarm/core/cli/main.py +0 -50
- swarm/core/cli/utils/__init__.py +0 -1
- swarm/core/cli/utils/discover_commands.py +0 -18
- swarm/core/config_loader.py +0 -122
- swarm/core/output_utils.py +0 -193
- swarm/core/session_logger.py +0 -42
- swarm/core/slash_commands.py +0 -89
- swarm/core/swarm_api.py +0 -68
- swarm/core/swarm_cli.py +0 -216
- swarm/core/utils/__init__.py +0 -0
- swarm/extensions/blueprint/cli_handler.py +0 -197
- swarm/extensions/blueprint/runnable_blueprint.py +0 -42
- swarm/extensions/cli/utils/__init__.py +0 -1
- swarm/extensions/cli/utils/async_input.py +0 -46
- swarm/extensions/cli/utils/prompt_user.py +0 -3
- swarm/management/__init__.py +0 -0
- swarm/management/commands/__init__.py +0 -0
- swarm/management/commands/runserver.py +0 -58
- swarm/middleware.py +0 -65
- swarm/permissions.py +0 -38
- swarm/static/contrib/fonts/fontawesome-webfont.ttf +0 -7
- swarm/static/contrib/fonts/fontawesome-webfont.woff +0 -7
- swarm/static/contrib/fonts/fontawesome-webfont.woff2 +0 -7
- swarm/static/contrib/markedjs/marked.min.js +0 -6
- swarm/static/contrib/tabler-icons/adjustments-horizontal.svg +0 -27
- swarm/static/contrib/tabler-icons/alert-triangle.svg +0 -21
- swarm/static/contrib/tabler-icons/archive.svg +0 -21
- swarm/static/contrib/tabler-icons/artboard.svg +0 -27
- swarm/static/contrib/tabler-icons/automatic-gearbox.svg +0 -23
- swarm/static/contrib/tabler-icons/box-multiple.svg +0 -19
- swarm/static/contrib/tabler-icons/carambola.svg +0 -19
- swarm/static/contrib/tabler-icons/copy.svg +0 -20
- swarm/static/contrib/tabler-icons/download.svg +0 -21
- swarm/static/contrib/tabler-icons/edit.svg +0 -21
- swarm/static/contrib/tabler-icons/filled/carambola.svg +0 -13
- swarm/static/contrib/tabler-icons/filled/paint.svg +0 -13
- swarm/static/contrib/tabler-icons/headset.svg +0 -22
- swarm/static/contrib/tabler-icons/layout-sidebar-left-collapse.svg +0 -21
- swarm/static/contrib/tabler-icons/layout-sidebar-left-expand.svg +0 -21
- swarm/static/contrib/tabler-icons/layout-sidebar-right-collapse.svg +0 -21
- swarm/static/contrib/tabler-icons/layout-sidebar-right-expand.svg +0 -21
- swarm/static/contrib/tabler-icons/message-chatbot.svg +0 -22
- swarm/static/contrib/tabler-icons/message-star.svg +0 -22
- swarm/static/contrib/tabler-icons/message-x.svg +0 -23
- swarm/static/contrib/tabler-icons/message.svg +0 -21
- swarm/static/contrib/tabler-icons/paperclip.svg +0 -18
- swarm/static/contrib/tabler-icons/playlist-add.svg +0 -22
- swarm/static/contrib/tabler-icons/robot.svg +0 -26
- swarm/static/contrib/tabler-icons/search.svg +0 -19
- swarm/static/contrib/tabler-icons/settings.svg +0 -20
- swarm/static/contrib/tabler-icons/thumb-down.svg +0 -19
- swarm/static/contrib/tabler-icons/thumb-up.svg +0 -19
- swarm/static/css/dropdown.css +0 -22
- swarm/static/htmx/htmx.min.js +0 -0
- swarm/static/js/dropdown.js +0 -23
- swarm/static/rest_mode/css/base.css +0 -470
- swarm/static/rest_mode/css/chat-history.css +0 -286
- swarm/static/rest_mode/css/chat.css +0 -251
- swarm/static/rest_mode/css/chatbot.css +0 -74
- swarm/static/rest_mode/css/chatgpt.css +0 -62
- swarm/static/rest_mode/css/colors/corporate.css +0 -74
- swarm/static/rest_mode/css/colors/pastel.css +0 -81
- swarm/static/rest_mode/css/colors/tropical.css +0 -82
- swarm/static/rest_mode/css/general.css +0 -142
- swarm/static/rest_mode/css/layout.css +0 -167
- swarm/static/rest_mode/css/layouts/messenger-layout.css +0 -17
- swarm/static/rest_mode/css/layouts/minimalist-layout.css +0 -57
- swarm/static/rest_mode/css/layouts/mobile-layout.css +0 -8
- swarm/static/rest_mode/css/messages.css +0 -84
- swarm/static/rest_mode/css/messenger.css +0 -135
- swarm/static/rest_mode/css/settings.css +0 -91
- swarm/static/rest_mode/css/simple.css +0 -44
- swarm/static/rest_mode/css/slack.css +0 -58
- swarm/static/rest_mode/css/style.css +0 -156
- swarm/static/rest_mode/css/theme.css +0 -30
- swarm/static/rest_mode/css/toast.css +0 -40
- swarm/static/rest_mode/js/auth.js +0 -9
- swarm/static/rest_mode/js/blueprint.js +0 -41
- swarm/static/rest_mode/js/blueprintUtils.js +0 -12
- swarm/static/rest_mode/js/chatLogic.js +0 -79
- swarm/static/rest_mode/js/debug.js +0 -63
- swarm/static/rest_mode/js/events.js +0 -98
- swarm/static/rest_mode/js/main.js +0 -19
- swarm/static/rest_mode/js/messages.js +0 -264
- swarm/static/rest_mode/js/messengerLogic.js +0 -355
- swarm/static/rest_mode/js/modules/apiService.js +0 -84
- swarm/static/rest_mode/js/modules/blueprintManager.js +0 -162
- swarm/static/rest_mode/js/modules/chatHistory.js +0 -110
- swarm/static/rest_mode/js/modules/debugLogger.js +0 -14
- swarm/static/rest_mode/js/modules/eventHandlers.js +0 -107
- swarm/static/rest_mode/js/modules/messageProcessor.js +0 -120
- swarm/static/rest_mode/js/modules/state.js +0 -7
- swarm/static/rest_mode/js/modules/userInteractions.js +0 -29
- swarm/static/rest_mode/js/modules/validation.js +0 -23
- swarm/static/rest_mode/js/rendering.js +0 -119
- swarm/static/rest_mode/js/settings.js +0 -130
- swarm/static/rest_mode/js/sidebar.js +0 -94
- swarm/static/rest_mode/js/simpleLogic.js +0 -37
- swarm/static/rest_mode/js/slackLogic.js +0 -66
- swarm/static/rest_mode/js/splash.js +0 -76
- swarm/static/rest_mode/js/theme.js +0 -111
- swarm/static/rest_mode/js/toast.js +0 -36
- swarm/static/rest_mode/js/ui.js +0 -265
- swarm/static/rest_mode/js/validation.js +0 -57
- swarm/static/rest_mode/svg/animated_spinner.svg +0 -12
- swarm/static/rest_mode/svg/arrow_down.svg +0 -5
- swarm/static/rest_mode/svg/arrow_left.svg +0 -5
- swarm/static/rest_mode/svg/arrow_right.svg +0 -5
- swarm/static/rest_mode/svg/arrow_up.svg +0 -5
- swarm/static/rest_mode/svg/attach.svg +0 -8
- swarm/static/rest_mode/svg/avatar.svg +0 -7
- swarm/static/rest_mode/svg/canvas.svg +0 -6
- swarm/static/rest_mode/svg/chat_history.svg +0 -4
- swarm/static/rest_mode/svg/close.svg +0 -5
- swarm/static/rest_mode/svg/copy.svg +0 -4
- swarm/static/rest_mode/svg/dark_mode.svg +0 -3
- swarm/static/rest_mode/svg/edit.svg +0 -5
- swarm/static/rest_mode/svg/layout.svg +0 -9
- swarm/static/rest_mode/svg/logo.svg +0 -29
- swarm/static/rest_mode/svg/logout.svg +0 -5
- swarm/static/rest_mode/svg/mobile.svg +0 -5
- swarm/static/rest_mode/svg/new_chat.svg +0 -4
- swarm/static/rest_mode/svg/not_visible.svg +0 -5
- swarm/static/rest_mode/svg/plus.svg +0 -7
- swarm/static/rest_mode/svg/run_code.svg +0 -6
- swarm/static/rest_mode/svg/save.svg +0 -4
- swarm/static/rest_mode/svg/search.svg +0 -6
- swarm/static/rest_mode/svg/settings.svg +0 -4
- swarm/static/rest_mode/svg/speaker.svg +0 -5
- swarm/static/rest_mode/svg/stop.svg +0 -6
- swarm/static/rest_mode/svg/thumbs_down.svg +0 -3
- swarm/static/rest_mode/svg/thumbs_up.svg +0 -3
- swarm/static/rest_mode/svg/toggle_off.svg +0 -6
- swarm/static/rest_mode/svg/toggle_on.svg +0 -6
- swarm/static/rest_mode/svg/trash.svg +0 -10
- swarm/static/rest_mode/svg/undo.svg +0 -3
- swarm/static/rest_mode/svg/visible.svg +0 -8
- swarm/static/rest_mode/svg/voice.svg +0 -10
- swarm/templates/account/login.html +0 -22
- swarm/templates/account/signup.html +0 -32
- swarm/templates/base.html +0 -30
- swarm/templates/chat.html +0 -43
- swarm/templates/index.html +0 -35
- swarm/templates/rest_mode/components/chat_sidebar.html +0 -55
- swarm/templates/rest_mode/components/header.html +0 -45
- swarm/templates/rest_mode/components/main_chat_pane.html +0 -41
- swarm/templates/rest_mode/components/settings_dialog.html +0 -97
- swarm/templates/rest_mode/components/splash_screen.html +0 -7
- swarm/templates/rest_mode/components/top_bar.html +0 -28
- swarm/templates/rest_mode/message_ui.html +0 -50
- swarm/templates/rest_mode/slackbot.html +0 -30
- swarm/templates/simple_blueprint_page.html +0 -24
- swarm/templates/websocket_partials/final_system_message.html +0 -3
- swarm/templates/websocket_partials/system_message.html +0 -4
- swarm/templates/websocket_partials/user_message.html +0 -5
- swarm/utils/ansi_box.py +0 -34
- swarm/utils/disable_tracing.py +0 -38
- swarm/utils/log_utils.py +0 -63
- swarm/utils/openai_patch.py +0 -33
- swarm/ux/ansi_box.py +0 -43
- swarm/ux/spinner.py +0 -53
- {open_swarm-0.1.1745274976.dist-info → open_swarm-0.1.1748636259.dist-info}/licenses/LICENSE +0 -0
- /swarm/{core → extensions/blueprint}/blueprint_utils.py +0 -0
- /swarm/{core → extensions/blueprint}/common_utils.py +0 -0
- /swarm/{core → extensions/config}/setup_wizard.py +0 -0
- /swarm/{blueprints/rue_code → extensions/config/utils}/__init__.py +0 -0
- /swarm/{core → extensions/config}/utils/logger.py +0 -0
- /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,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
|
-
});
|