atlas-chat 0.1.0__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 (250) hide show
  1. atlas/__init__.py +40 -0
  2. atlas/application/__init__.py +7 -0
  3. atlas/application/chat/__init__.py +7 -0
  4. atlas/application/chat/agent/__init__.py +10 -0
  5. atlas/application/chat/agent/act_loop.py +179 -0
  6. atlas/application/chat/agent/factory.py +142 -0
  7. atlas/application/chat/agent/protocols.py +46 -0
  8. atlas/application/chat/agent/react_loop.py +338 -0
  9. atlas/application/chat/agent/think_act_loop.py +171 -0
  10. atlas/application/chat/approval_manager.py +151 -0
  11. atlas/application/chat/elicitation_manager.py +191 -0
  12. atlas/application/chat/events/__init__.py +1 -0
  13. atlas/application/chat/events/agent_event_relay.py +112 -0
  14. atlas/application/chat/modes/__init__.py +1 -0
  15. atlas/application/chat/modes/agent.py +125 -0
  16. atlas/application/chat/modes/plain.py +74 -0
  17. atlas/application/chat/modes/rag.py +81 -0
  18. atlas/application/chat/modes/tools.py +179 -0
  19. atlas/application/chat/orchestrator.py +213 -0
  20. atlas/application/chat/policies/__init__.py +1 -0
  21. atlas/application/chat/policies/tool_authorization.py +99 -0
  22. atlas/application/chat/preprocessors/__init__.py +1 -0
  23. atlas/application/chat/preprocessors/message_builder.py +92 -0
  24. atlas/application/chat/preprocessors/prompt_override_service.py +104 -0
  25. atlas/application/chat/service.py +454 -0
  26. atlas/application/chat/utilities/__init__.py +6 -0
  27. atlas/application/chat/utilities/error_handler.py +367 -0
  28. atlas/application/chat/utilities/event_notifier.py +546 -0
  29. atlas/application/chat/utilities/file_processor.py +613 -0
  30. atlas/application/chat/utilities/tool_executor.py +789 -0
  31. atlas/atlas_chat_cli.py +347 -0
  32. atlas/atlas_client.py +238 -0
  33. atlas/core/__init__.py +0 -0
  34. atlas/core/auth.py +205 -0
  35. atlas/core/authorization_manager.py +27 -0
  36. atlas/core/capabilities.py +123 -0
  37. atlas/core/compliance.py +215 -0
  38. atlas/core/domain_whitelist.py +147 -0
  39. atlas/core/domain_whitelist_middleware.py +82 -0
  40. atlas/core/http_client.py +28 -0
  41. atlas/core/log_sanitizer.py +102 -0
  42. atlas/core/metrics_logger.py +59 -0
  43. atlas/core/middleware.py +131 -0
  44. atlas/core/otel_config.py +242 -0
  45. atlas/core/prompt_risk.py +200 -0
  46. atlas/core/rate_limit.py +0 -0
  47. atlas/core/rate_limit_middleware.py +64 -0
  48. atlas/core/security_headers_middleware.py +51 -0
  49. atlas/domain/__init__.py +37 -0
  50. atlas/domain/chat/__init__.py +1 -0
  51. atlas/domain/chat/dtos.py +85 -0
  52. atlas/domain/errors.py +96 -0
  53. atlas/domain/messages/__init__.py +12 -0
  54. atlas/domain/messages/models.py +160 -0
  55. atlas/domain/rag_mcp_service.py +664 -0
  56. atlas/domain/sessions/__init__.py +7 -0
  57. atlas/domain/sessions/models.py +36 -0
  58. atlas/domain/unified_rag_service.py +371 -0
  59. atlas/infrastructure/__init__.py +10 -0
  60. atlas/infrastructure/app_factory.py +135 -0
  61. atlas/infrastructure/events/__init__.py +1 -0
  62. atlas/infrastructure/events/cli_event_publisher.py +140 -0
  63. atlas/infrastructure/events/websocket_publisher.py +140 -0
  64. atlas/infrastructure/sessions/in_memory_repository.py +56 -0
  65. atlas/infrastructure/transport/__init__.py +7 -0
  66. atlas/infrastructure/transport/websocket_connection_adapter.py +33 -0
  67. atlas/init_cli.py +226 -0
  68. atlas/interfaces/__init__.py +15 -0
  69. atlas/interfaces/events.py +134 -0
  70. atlas/interfaces/llm.py +54 -0
  71. atlas/interfaces/rag.py +40 -0
  72. atlas/interfaces/sessions.py +75 -0
  73. atlas/interfaces/tools.py +57 -0
  74. atlas/interfaces/transport.py +24 -0
  75. atlas/main.py +564 -0
  76. atlas/mcp/api_key_demo/README.md +76 -0
  77. atlas/mcp/api_key_demo/main.py +172 -0
  78. atlas/mcp/api_key_demo/run.sh +56 -0
  79. atlas/mcp/basictable/main.py +147 -0
  80. atlas/mcp/calculator/main.py +149 -0
  81. atlas/mcp/code-executor/execution_engine.py +98 -0
  82. atlas/mcp/code-executor/execution_environment.py +95 -0
  83. atlas/mcp/code-executor/main.py +528 -0
  84. atlas/mcp/code-executor/result_processing.py +276 -0
  85. atlas/mcp/code-executor/script_generation.py +195 -0
  86. atlas/mcp/code-executor/security_checker.py +140 -0
  87. atlas/mcp/corporate_cars/main.py +437 -0
  88. atlas/mcp/csv_reporter/main.py +545 -0
  89. atlas/mcp/duckduckgo/main.py +182 -0
  90. atlas/mcp/elicitation_demo/README.md +171 -0
  91. atlas/mcp/elicitation_demo/main.py +262 -0
  92. atlas/mcp/env-demo/README.md +158 -0
  93. atlas/mcp/env-demo/main.py +199 -0
  94. atlas/mcp/file_size_test/main.py +284 -0
  95. atlas/mcp/filesystem/main.py +348 -0
  96. atlas/mcp/image_demo/main.py +113 -0
  97. atlas/mcp/image_demo/requirements.txt +4 -0
  98. atlas/mcp/logging_demo/README.md +72 -0
  99. atlas/mcp/logging_demo/main.py +103 -0
  100. atlas/mcp/many_tools_demo/main.py +50 -0
  101. atlas/mcp/order_database/__init__.py +0 -0
  102. atlas/mcp/order_database/main.py +369 -0
  103. atlas/mcp/order_database/signal_data.csv +1001 -0
  104. atlas/mcp/pdfbasic/main.py +394 -0
  105. atlas/mcp/pptx_generator/main.py +760 -0
  106. atlas/mcp/pptx_generator/requirements.txt +13 -0
  107. atlas/mcp/pptx_generator/run_test.sh +1 -0
  108. atlas/mcp/pptx_generator/test_pptx_generator_security.py +169 -0
  109. atlas/mcp/progress_demo/main.py +167 -0
  110. atlas/mcp/progress_updates_demo/QUICKSTART.md +273 -0
  111. atlas/mcp/progress_updates_demo/README.md +120 -0
  112. atlas/mcp/progress_updates_demo/main.py +497 -0
  113. atlas/mcp/prompts/main.py +222 -0
  114. atlas/mcp/public_demo/main.py +189 -0
  115. atlas/mcp/sampling_demo/README.md +169 -0
  116. atlas/mcp/sampling_demo/main.py +234 -0
  117. atlas/mcp/thinking/main.py +77 -0
  118. atlas/mcp/tool_planner/main.py +240 -0
  119. atlas/mcp/ui-demo/badmesh.png +0 -0
  120. atlas/mcp/ui-demo/main.py +383 -0
  121. atlas/mcp/ui-demo/templates/button_demo.html +32 -0
  122. atlas/mcp/ui-demo/templates/data_visualization.html +32 -0
  123. atlas/mcp/ui-demo/templates/form_demo.html +28 -0
  124. atlas/mcp/username-override-demo/README.md +320 -0
  125. atlas/mcp/username-override-demo/main.py +308 -0
  126. atlas/modules/__init__.py +0 -0
  127. atlas/modules/config/__init__.py +34 -0
  128. atlas/modules/config/cli.py +231 -0
  129. atlas/modules/config/config_manager.py +1096 -0
  130. atlas/modules/file_storage/__init__.py +22 -0
  131. atlas/modules/file_storage/cli.py +330 -0
  132. atlas/modules/file_storage/content_extractor.py +290 -0
  133. atlas/modules/file_storage/manager.py +295 -0
  134. atlas/modules/file_storage/mock_s3_client.py +402 -0
  135. atlas/modules/file_storage/s3_client.py +417 -0
  136. atlas/modules/llm/__init__.py +19 -0
  137. atlas/modules/llm/caller.py +287 -0
  138. atlas/modules/llm/litellm_caller.py +675 -0
  139. atlas/modules/llm/models.py +19 -0
  140. atlas/modules/mcp_tools/__init__.py +17 -0
  141. atlas/modules/mcp_tools/client.py +2123 -0
  142. atlas/modules/mcp_tools/token_storage.py +556 -0
  143. atlas/modules/prompts/prompt_provider.py +130 -0
  144. atlas/modules/rag/__init__.py +24 -0
  145. atlas/modules/rag/atlas_rag_client.py +336 -0
  146. atlas/modules/rag/client.py +129 -0
  147. atlas/routes/admin_routes.py +865 -0
  148. atlas/routes/config_routes.py +484 -0
  149. atlas/routes/feedback_routes.py +361 -0
  150. atlas/routes/files_routes.py +274 -0
  151. atlas/routes/health_routes.py +40 -0
  152. atlas/routes/mcp_auth_routes.py +223 -0
  153. atlas/server_cli.py +164 -0
  154. atlas/tests/conftest.py +20 -0
  155. atlas/tests/integration/test_mcp_auth_integration.py +152 -0
  156. atlas/tests/manual_test_sampling.py +87 -0
  157. atlas/tests/modules/mcp_tools/test_client_auth.py +226 -0
  158. atlas/tests/modules/mcp_tools/test_client_env.py +191 -0
  159. atlas/tests/test_admin_mcp_server_management_routes.py +141 -0
  160. atlas/tests/test_agent_roa.py +135 -0
  161. atlas/tests/test_app_factory_smoke.py +47 -0
  162. atlas/tests/test_approval_manager.py +439 -0
  163. atlas/tests/test_atlas_client.py +188 -0
  164. atlas/tests/test_atlas_rag_client.py +447 -0
  165. atlas/tests/test_atlas_rag_integration.py +224 -0
  166. atlas/tests/test_attach_file_flow.py +287 -0
  167. atlas/tests/test_auth_utils.py +165 -0
  168. atlas/tests/test_backend_public_url.py +185 -0
  169. atlas/tests/test_banner_logging.py +287 -0
  170. atlas/tests/test_capability_tokens_and_injection.py +203 -0
  171. atlas/tests/test_compliance_level.py +54 -0
  172. atlas/tests/test_compliance_manager.py +253 -0
  173. atlas/tests/test_config_manager.py +617 -0
  174. atlas/tests/test_config_manager_paths.py +12 -0
  175. atlas/tests/test_core_auth.py +18 -0
  176. atlas/tests/test_core_utils.py +190 -0
  177. atlas/tests/test_docker_env_sync.py +202 -0
  178. atlas/tests/test_domain_errors.py +329 -0
  179. atlas/tests/test_domain_whitelist.py +359 -0
  180. atlas/tests/test_elicitation_manager.py +408 -0
  181. atlas/tests/test_elicitation_routing.py +296 -0
  182. atlas/tests/test_env_demo_server.py +88 -0
  183. atlas/tests/test_error_classification.py +113 -0
  184. atlas/tests/test_error_flow_integration.py +116 -0
  185. atlas/tests/test_feedback_routes.py +333 -0
  186. atlas/tests/test_file_content_extraction.py +1134 -0
  187. atlas/tests/test_file_extraction_routes.py +158 -0
  188. atlas/tests/test_file_library.py +107 -0
  189. atlas/tests/test_file_manager_unit.py +18 -0
  190. atlas/tests/test_health_route.py +49 -0
  191. atlas/tests/test_http_client_stub.py +8 -0
  192. atlas/tests/test_imports_smoke.py +30 -0
  193. atlas/tests/test_interfaces_llm_response.py +9 -0
  194. atlas/tests/test_issue_access_denied_fix.py +136 -0
  195. atlas/tests/test_llm_env_expansion.py +836 -0
  196. atlas/tests/test_log_level_sensitive_data.py +285 -0
  197. atlas/tests/test_mcp_auth_routes.py +341 -0
  198. atlas/tests/test_mcp_client_auth.py +331 -0
  199. atlas/tests/test_mcp_data_injection.py +270 -0
  200. atlas/tests/test_mcp_get_authorized_servers.py +95 -0
  201. atlas/tests/test_mcp_hot_reload.py +512 -0
  202. atlas/tests/test_mcp_image_content.py +424 -0
  203. atlas/tests/test_mcp_logging.py +172 -0
  204. atlas/tests/test_mcp_progress_updates.py +313 -0
  205. atlas/tests/test_mcp_prompt_override_system_prompt.py +102 -0
  206. atlas/tests/test_mcp_prompts_server.py +39 -0
  207. atlas/tests/test_mcp_tool_result_parsing.py +296 -0
  208. atlas/tests/test_metrics_logger.py +56 -0
  209. atlas/tests/test_middleware_auth.py +379 -0
  210. atlas/tests/test_prompt_risk_and_acl.py +141 -0
  211. atlas/tests/test_rag_mcp_aggregator.py +204 -0
  212. atlas/tests/test_rag_mcp_service.py +224 -0
  213. atlas/tests/test_rate_limit_middleware.py +45 -0
  214. atlas/tests/test_routes_config_smoke.py +60 -0
  215. atlas/tests/test_routes_files_download_token.py +41 -0
  216. atlas/tests/test_routes_files_health.py +18 -0
  217. atlas/tests/test_runtime_imports.py +53 -0
  218. atlas/tests/test_sampling_integration.py +482 -0
  219. atlas/tests/test_security_admin_routes.py +61 -0
  220. atlas/tests/test_security_capability_tokens.py +65 -0
  221. atlas/tests/test_security_file_stats_scope.py +21 -0
  222. atlas/tests/test_security_header_injection.py +191 -0
  223. atlas/tests/test_security_headers_and_filename.py +63 -0
  224. atlas/tests/test_shared_session_repository.py +101 -0
  225. atlas/tests/test_system_prompt_loading.py +181 -0
  226. atlas/tests/test_token_storage.py +505 -0
  227. atlas/tests/test_tool_approval_config.py +93 -0
  228. atlas/tests/test_tool_approval_utils.py +356 -0
  229. atlas/tests/test_tool_authorization_group_filtering.py +223 -0
  230. atlas/tests/test_tool_details_in_config.py +108 -0
  231. atlas/tests/test_tool_planner.py +300 -0
  232. atlas/tests/test_unified_rag_service.py +398 -0
  233. atlas/tests/test_username_override_in_approval.py +258 -0
  234. atlas/tests/test_websocket_auth_header.py +168 -0
  235. atlas/version.py +6 -0
  236. atlas_chat-0.1.0.data/data/.env.example +253 -0
  237. atlas_chat-0.1.0.data/data/config/defaults/compliance-levels.json +44 -0
  238. atlas_chat-0.1.0.data/data/config/defaults/domain-whitelist.json +123 -0
  239. atlas_chat-0.1.0.data/data/config/defaults/file-extractors.json +74 -0
  240. atlas_chat-0.1.0.data/data/config/defaults/help-config.json +198 -0
  241. atlas_chat-0.1.0.data/data/config/defaults/llmconfig-buggy.yml +11 -0
  242. atlas_chat-0.1.0.data/data/config/defaults/llmconfig.yml +19 -0
  243. atlas_chat-0.1.0.data/data/config/defaults/mcp.json +138 -0
  244. atlas_chat-0.1.0.data/data/config/defaults/rag-sources.json +17 -0
  245. atlas_chat-0.1.0.data/data/config/defaults/splash-config.json +16 -0
  246. atlas_chat-0.1.0.dist-info/METADATA +236 -0
  247. atlas_chat-0.1.0.dist-info/RECORD +250 -0
  248. atlas_chat-0.1.0.dist-info/WHEEL +5 -0
  249. atlas_chat-0.1.0.dist-info/entry_points.txt +4 -0
  250. atlas_chat-0.1.0.dist-info/top_level.txt +1 -0
@@ -0,0 +1,198 @@
1
+ {
2
+ "title": "Help & Documentation",
3
+ "sections": [
4
+ {
5
+ "id": "quick-start",
6
+ "type": "section",
7
+ "title": "Quick Start",
8
+ "icon": "zap",
9
+ "iconColor": "blue-400",
10
+ "description": "Welcome to the Chat UI! This application provides an advanced chat interface with AI models, enhanced by powerful tools and data sources.",
11
+ "layout": "cards-grid",
12
+ "cards": [
13
+ {
14
+ "title": "Start a New Chat",
15
+ "content": "Click \"New Chat\" button or press Ctrl+Alt+N",
16
+ "hasKeyboard": true,
17
+ "keyboardShortcut": "Ctrl+Alt+N"
18
+ },
19
+ {
20
+ "title": "Access Tools",
21
+ "content": "Click the Settings icon in the header to open the tools panel",
22
+ "hasIcon": true,
23
+ "iconName": "settings"
24
+ }
25
+ ]
26
+ },
27
+ {
28
+ "id": "core-features",
29
+ "type": "section",
30
+ "title": "Core Features",
31
+ "icon": "message-square",
32
+ "iconColor": "green-400",
33
+ "layout": "feature-list",
34
+ "features": [
35
+ {
36
+ "title": "RAG (Retrieval-Augmented Generation)",
37
+ "icon": "database",
38
+ "iconColor": "blue-400",
39
+ "borderColor": "blue-400",
40
+ "description": "Connect your chats to external data sources for enhanced, context-aware responses.",
41
+ "bullets": [
42
+ "Click the menu icon to open data sources panel",
43
+ "Select which documents/databases to include in your conversation",
44
+ "Toggle \"RAG Only\" mode to query only your documents without LLM processing",
45
+ "View source attribution to see which documents informed the response"
46
+ ]
47
+ },
48
+ {
49
+ "title": "Tools & MCP Servers",
50
+ "icon": "settings",
51
+ "iconColor": "green-400",
52
+ "borderColor": "green-400",
53
+ "description": "Extend AI capabilities with specialized tools through Model Context Protocol (MCP) servers.",
54
+ "bullets": [
55
+ "Click the Settings icon to view available tools",
56
+ "Built-in tools include file operations, calculations, and UI demos",
57
+ "Tools can create interactive content in the Canvas panel",
58
+ "Select specific tools in the marketplace for personalized experience"
59
+ ]
60
+ },
61
+ {
62
+ "title": "MCP Store/Marketplace",
63
+ "icon": "store",
64
+ "iconColor": "purple-400",
65
+ "borderColor": "purple-400",
66
+ "description": "Browse and select MCP servers that provide different capabilities.",
67
+ "bullets": [
68
+ "Navigate to /marketplace to browse available servers",
69
+ "Select which MCP servers you want to use in your chats",
70
+ "Each server provides specific tools and functionalities",
71
+ "Your selections are saved and persist across sessions"
72
+ ]
73
+ }
74
+ ]
75
+ },
76
+ {
77
+ "id": "tips-best-practices",
78
+ "type": "section",
79
+ "title": "Tips & Best Practices",
80
+ "icon": "alert-triangle",
81
+ "iconColor": "yellow-400",
82
+ "layout": "tip-cards",
83
+ "tips": [
84
+ {
85
+ "title": "Starting Fresh Conversations",
86
+ "content": "For best results, start a new chat session when switching to a completely different topic. This prevents context confusion and ensures cleaner responses."
87
+ },
88
+ {
89
+ "title": "Handling Errors",
90
+ "content": "If you encounter errors or unexpected behavior, restart your chat session using the \"New Chat\" button. This clears the conversation history and resets the context."
91
+ },
92
+ {
93
+ "title": "Keyboard Shortcuts",
94
+ "content": "Learn these helpful shortcuts to improve your workflow.",
95
+ "shortcuts": [
96
+ {"key": "Ctrl+Alt+N", "description": "Start new chat"},
97
+ {"key": "Enter", "description": "Send message"},
98
+ {"key": "Shift+Enter", "description": "New line in message"}
99
+ ]
100
+ }
101
+ ]
102
+ },
103
+ {
104
+ "id": "technical-docs",
105
+ "type": "section",
106
+ "title": "Technical Documentation",
107
+ "icon": "code",
108
+ "iconColor": "orange-400",
109
+ "layout": "technical",
110
+ "subsections": [
111
+ {
112
+ "title": "Building Your Own MCP Server",
113
+ "borderColor": "orange-400",
114
+ "description": "Create custom tools and functionality by developing your own MCP servers.",
115
+ "content": [
116
+ {
117
+ "type": "subsection",
118
+ "title": "Special Return Types",
119
+ "bullets": [
120
+ {"code": "returned_files", "description": "Return files for Canvas rendering (HTML, images, PDFs, text)"},
121
+ {"code": "file_path", "description": "Reference files for download/display"},
122
+ {"code": "content", "description": "Standard text response"},
123
+ {"code": "success", "description": "Boolean indicating operation success"}
124
+ ]
125
+ },
126
+ {
127
+ "type": "code-example",
128
+ "title": "Returned Files Example",
129
+ "language": "json",
130
+ "code": "{\n \"content\": \"Created interactive chart\",\n \"returned_files\": [{\n \"filename\": \"chart.html\",\n \"content_base64\": \"PGRpdj5Zb3VyIEhUTUwgaGVyZTwvZGl2Pg==\"\n }],\n \"success\": true\n}"
131
+ }
132
+ ]
133
+ },
134
+ {
135
+ "title": "UI Modification & Custom Prompts",
136
+ "borderColor": "cyan-400",
137
+ "description": "Advanced customization options for developers.",
138
+ "bullets": [
139
+ "MCP servers can return files (HTML, images, PDFs, text) that render in the Canvas panel",
140
+ "All HTML is sanitized for security using DOMPurify",
141
+ "JavaScript is supported for interactive elements",
142
+ "Use custom prompts to modify AI behavior",
143
+ "Create specialized tools for domain-specific tasks"
144
+ ]
145
+ },
146
+ {
147
+ "title": "Development Resources",
148
+ "type": "resource-card",
149
+ "resources": [
150
+ {"file": "docs/mcp-development.md", "description": "Comprehensive MCP development guide"},
151
+ {"file": "docs/advanced-features.md", "description": "Advanced features and examples"},
152
+ {"file": "docs/configuration.md", "description": "Configuration options"},
153
+ {"file": "backend/mcp/", "description": "Example MCP server implementations"}
154
+ ]
155
+ }
156
+ ]
157
+ },
158
+ {
159
+ "id": "agent-mode",
160
+ "type": "section",
161
+ "title": "Agent Mode",
162
+ "icon": "bot",
163
+ "iconColor": "gradient",
164
+ "gradientFrom": "blue-400",
165
+ "gradientTo": "purple-600",
166
+ "layout": "simple",
167
+ "description": "Agent mode enables multi-step reasoning where the AI breaks down complex tasks into manageable steps.",
168
+ "features": [
169
+ "Step-by-step task breakdown and execution",
170
+ "Visual progress tracking",
171
+ "Integration with MCP tools during reasoning",
172
+ "Ability to interrupt the reasoning process"
173
+ ],
174
+ "note": "Agent mode availability depends on your configuration. Check with your administrator if this feature is not visible."
175
+ },
176
+ {
177
+ "id": "support",
178
+ "type": "section",
179
+ "title": "Need More Help?",
180
+ "icon": "file-text",
181
+ "iconColor": "gray-400",
182
+ "layout": "support-cards",
183
+ "description": "For additional information and detailed guides:",
184
+ "cards": [
185
+ {
186
+ "title": "Documentation",
187
+ "content": "Check the docs/ folder for comprehensive guides on setup, configuration, and development.",
188
+ "code": "docs/"
189
+ },
190
+ {
191
+ "title": "Configuration",
192
+ "content": "Refer to .env.example and configuration documentation for customization options.",
193
+ "code": ".env.example"
194
+ }
195
+ ]
196
+ }
197
+ ]
198
+ }
@@ -0,0 +1,11 @@
1
+ models:
2
+ mock-llm-rate-limited:
3
+ model_url: "http://127.0.0.1:8002/v1"
4
+ model_name: "openai/mock-model"
5
+ api_key: "dummy-key" # Not used by mock server
6
+ description: "Mock LLM server with rate limiting and error simulation for testing"
7
+ compliance_level: "Internal"
8
+ # Extra configuration for this mock server
9
+ max_retries: 3
10
+ retry_delay: 1.0
11
+ timeout_seconds: 30
@@ -0,0 +1,19 @@
1
+ models:
2
+ gpt-4.1:
3
+ model_url: "https://api.openai.com/v1/chat/completions"
4
+ model_name: "gpt-4.1"
5
+ api_key: "${OPENAI_API_KEY}"
6
+ compliance_level: "External"
7
+ gpt-4.1-nano:
8
+ model_url: "https://api.openai.com/v1/chat/completions"
9
+ model_name: "gpt-4.1-nano"
10
+ api_key: "${OPENAI_API_KEY}"
11
+ compliance_level: "External"
12
+ openrouter-gpt-4o:
13
+ model_url: "https://openrouter.ai/api/v1/chat/completions"
14
+ model_name: "openai/gpt-oss-120b"
15
+ api_key: "${OPENROUTER_API_KEY}"
16
+ description: "OpenRouter openai oss-120b"
17
+ compliance_level: "External"
18
+ extra_headers:
19
+ X-Title: "chat-11"
@@ -0,0 +1,138 @@
1
+ {
2
+ "calculator": {
3
+ "command": [
4
+ "python",
5
+ "mcp/calculator/main.py"
6
+ ],
7
+ "cwd": "atlas",
8
+ "groups": [
9
+ "users"
10
+ ],
11
+ "description": "Evaluate mathematical expressions, perform calculations with basic arithmetic, trigonometry, and logarithms",
12
+ "author": "Chat UI Team",
13
+ "short_description": "Mathematical calculator",
14
+ "help_email": "support@chatui.example.com",
15
+ "compliance_level": "Public"
16
+ },
17
+ "thinking": {
18
+ "command": [
19
+ "python",
20
+ "mcp/thinking/main.py"
21
+ ],
22
+ "cwd": "atlas",
23
+ "groups": [
24
+ "users"
25
+ ],
26
+ "description": "Structured thinking and problem analysis tool",
27
+ "author": "Chat UI Team",
28
+ "short_description": "Structured problem analysis",
29
+ "help_email": "support@chatui.example.com",
30
+ "compliance_level": "Public"
31
+ },
32
+ "pdfbasic": {
33
+ "command": [
34
+ "python",
35
+ "mcp/pdfbasic/main.py"
36
+ ],
37
+ "cwd": "atlas",
38
+ "groups": [
39
+ "users"
40
+ ],
41
+ "description": "Extract and analyze text content from PDF documents, search within PDFs, and summarize content",
42
+ "author": "Chat UI Team",
43
+ "short_description": "PDF text extraction and analysis",
44
+ "help_email": "support@chatui.example.com",
45
+ "compliance_level": "SOC2"
46
+ },
47
+ "ui-demo": {
48
+ "command": [
49
+ "python",
50
+ "mcp/ui-demo/main.py"
51
+ ],
52
+ "cwd": "atlas",
53
+ "groups": [
54
+ "users"
55
+ ],
56
+ "description": "Demo server showcasing custom UI modification capabilities",
57
+ "author": "Chat UI Team",
58
+ "short_description": "UI customization demo",
59
+ "help_email": "support@chatui.example.com",
60
+ "compliance_level": "Public"
61
+ },
62
+ "code-executor": {
63
+ "command": [
64
+ "python",
65
+ "mcp/code-executor/main.py"
66
+ ],
67
+ "cwd": "atlas",
68
+ "groups": [
69
+ "users"
70
+ ],
71
+ "description": "Execute Python, JavaScript, and other code snippets in a secure sandboxed environment with safety validation",
72
+ "author": "Chat UI Team",
73
+ "short_description": "Secure code execution sandbox",
74
+ "help_email": "support@chatui.example.com",
75
+ "compliance_level": "SOC2"
76
+ },
77
+ "prompts": {
78
+ "command": [
79
+ "python",
80
+ "mcp/prompts/main.py"
81
+ ],
82
+ "cwd": "atlas",
83
+ "groups": [
84
+ "users"
85
+ ],
86
+ "description": "Specialized system prompts for AI behavior modification",
87
+ "author": "Chat UI Team",
88
+ "short_description": "AI behavior prompts",
89
+ "help_email": "support@chatui.example.com",
90
+ "compliance_level": "Public"
91
+ },
92
+ "env-demo": {
93
+ "command": [
94
+ "python",
95
+ "mcp/env-demo/main.py"
96
+ ],
97
+ "cwd": "atlas",
98
+ "env": {
99
+ "CLOUD_PROFILE": "demo-profile",
100
+ "CLOUD_REGION": "us-west-2",
101
+ "DEBUG_MODE": "true",
102
+ "ENVIRONMENT": "development",
103
+ "API_KEY": "${DEMO_API_KEY}"
104
+ },
105
+ "groups": [
106
+ "users"
107
+ ],
108
+ "description": "Demonstrates environment variable passing to MCP servers. Shows how to configure servers with env vars in mcp.json using both literal values and ${VAR} substitution.",
109
+ "author": "Chat UI Team",
110
+ "short_description": "Environment variable demonstration",
111
+ "help_email": "support@chatui.example.com",
112
+ "compliance_level": "Public"
113
+ },
114
+ "external-api-example": {
115
+ "url": "http://127.0.0.1:8005/mcp",
116
+ "transport": "http",
117
+ "groups": [
118
+ "users"
119
+ ],
120
+ "description": "Mock HTTP MCP server for testing authentication",
121
+ "auth_token": "${MCP_EXTERNAL_API_TOKEN}"
122
+ },
123
+ "many_tools_demo": {
124
+ "command": [
125
+ "python",
126
+ "mcp/many_tools_demo/main.py"
127
+ ],
128
+ "cwd": "atlas",
129
+ "groups": [
130
+ "users"
131
+ ],
132
+ "description": "Demo server with 64 tools to test UI scalability with large numbers of tools. Includes operations for data, analytics, files, network, system, database, security, and reporting.",
133
+ "author": "Chat UI Team",
134
+ "short_description": "Large tool set demo (64 tools)",
135
+ "help_email": "support@chatui.example.com",
136
+ "compliance_level": "Public"
137
+ }
138
+ }
@@ -0,0 +1,17 @@
1
+ {
2
+ "corporate_cars": {
3
+ "type": "mcp",
4
+ "display_name": "Corporate Cars",
5
+ "description": "Fleet RAG server: discover resources and retrieve locations/meta-data for corporate cars in use by employees.",
6
+ "icon": "car",
7
+ "command": [
8
+ "python",
9
+ "mcp/corporate_cars/main.py"
10
+ ],
11
+ "cwd": "atlas",
12
+ "groups": [
13
+ "users"
14
+ ],
15
+ "compliance_level": "SOC2"
16
+ }
17
+ }
@@ -0,0 +1,16 @@
1
+ {
2
+ "enabled": false,
3
+ "title": "Welcome to Chat UI",
4
+ "messages": [
5
+ {
6
+ "type": "text",
7
+ "content": "Welcome! Please review our policies before continuing."
8
+ }
9
+ ],
10
+ "dismissible": true,
11
+ "require_accept": false,
12
+ "dismiss_duration_days": 30,
13
+ "accept_button_text": "Accept",
14
+ "dismiss_button_text": "Dismiss",
15
+ "show_on_every_visit": false
16
+ }
@@ -0,0 +1,236 @@
1
+ Metadata-Version: 2.4
2
+ Name: atlas-chat
3
+ Version: 0.1.0
4
+ Summary: Full-stack LLM chat interface with Model Context Protocol (MCP) integration
5
+ Author: Sandia National Laboratories
6
+ License: MIT
7
+ Project-URL: Homepage, https://github.com/sandialabs/atlas
8
+ Project-URL: Documentation, https://github.com/sandialabs/atlas/tree/main/docs
9
+ Project-URL: Repository, https://github.com/sandialabs/atlas
10
+ Project-URL: Issues, https://github.com/sandialabs/atlas/issues
11
+ Keywords: llm,chat,mcp,ai,anthropic,openai,gemini
12
+ Classifier: Development Status :: 4 - Beta
13
+ Classifier: Intended Audience :: Developers
14
+ Classifier: License :: OSI Approved :: MIT License
15
+ Classifier: Operating System :: OS Independent
16
+ Classifier: Programming Language :: Python :: 3
17
+ Classifier: Programming Language :: Python :: 3.11
18
+ Classifier: Programming Language :: Python :: 3.12
19
+ Classifier: Topic :: Scientific/Engineering :: Artificial Intelligence
20
+ Requires-Python: >=3.11
21
+ Description-Content-Type: text/markdown
22
+ Requires-Dist: beautifulsoup4
23
+ Requires-Dist: boto3>=1.34.0
24
+ Requires-Dist: bs4
25
+ Requires-Dist: cryptography
26
+ Requires-Dist: duckduckgo-search
27
+ Requires-Dist: fastapi
28
+ Requires-Dist: fastmcp>=2.10.0
29
+ Requires-Dist: httpx
30
+ Requires-Dist: litellm
31
+ Requires-Dist: matplotlib
32
+ Requires-Dist: numpy
33
+ Requires-Dist: openpyxl
34
+ Requires-Dist: opentelemetry-api
35
+ Requires-Dist: opentelemetry-exporter-otlp
36
+ Requires-Dist: opentelemetry-instrumentation-fastapi
37
+ Requires-Dist: opentelemetry-instrumentation-httpx
38
+ Requires-Dist: opentelemetry-instrumentation-logging
39
+ Requires-Dist: opentelemetry-sdk
40
+ Requires-Dist: pandas
41
+ Requires-Dist: pydantic
42
+ Requires-Dist: PyJWT
43
+ Requires-Dist: PyPDF2
44
+ Requires-Dist: python-dotenv
45
+ Requires-Dist: python-multipart
46
+ Requires-Dist: python-pptx
47
+ Requires-Dist: pyyaml
48
+ Requires-Dist: reportlab
49
+ Requires-Dist: requests
50
+ Requires-Dist: scikit-learn
51
+ Requires-Dist: scipy
52
+ Requires-Dist: seaborn
53
+ Requires-Dist: uvicorn[standard]
54
+ Requires-Dist: websockets
55
+ Provides-Extra: dev
56
+ Requires-Dist: pytest; extra == "dev"
57
+ Requires-Dist: pytest-asyncio; extra == "dev"
58
+ Requires-Dist: pytest-mock; extra == "dev"
59
+ Requires-Dist: ruff; extra == "dev"
60
+
61
+ # Atlas UI 3
62
+
63
+ [![CI/CD Pipeline](https://github.com/sandialabs/atlas-ui-3/actions/workflows/ci.yml/badge.svg)](https://github.com/sandialabs/atlas-ui-3/actions/workflows/ci.yml)
64
+ [![Security Checks](https://github.com/sandialabs/atlas-ui-3/actions/workflows/security.yml/badge.svg)](https://github.com/sandialabs/atlas-ui-3/actions/workflows/security.yml)
65
+ [![Docker Image](https://ghcr-badge.egpl.dev/sandialabs/atlas-ui-3/latest_tag?trim=major&label=latest)](https://github.com/sandialabs/atlas-ui-3/pkgs/container/atlas-ui-3)
66
+ [![PyPI version](https://badge.fury.io/py/atlas-chat.svg)](https://badge.fury.io/py/atlas-chat)
67
+ ![Python 3.11+](https://img.shields.io/badge/python-3.11+-blue.svg)
68
+ ![React 19](https://img.shields.io/badge/react-19.2-blue.svg)
69
+ ![License MIT](https://img.shields.io/badge/license-MIT-blue.svg)
70
+
71
+ Atlas UI 3 is a secure chat application with MCP (Model Context Protocol) integration, developed by Sandia National Laboratories -- a U.S. Department of Energy national laboratory -- to support U.S. Government customers.
72
+
73
+
74
+
75
+ ![Screenshot](docs/readme_img/screenshot-11-6-2025image.png)
76
+
77
+ ## About the Project
78
+
79
+ **Atlas UI 3** is a full-stack LLM chat interface that supports multiple AI models, including those from OpenAI, Anthropic, and Google. Its core feature is the integration with the Model Context Protocol (MCP), which allows the AI assistant to connect to external tools and data sources, enabling complex, real-time workflows.
80
+
81
+ ### Features
82
+
83
+ * **Multi-LLM Support**: Connect to various LLM providers.
84
+ * **MCP Integration**: Extend the AI's capabilities with custom tools.
85
+ * **RAG Support**: Enhance responses with Retrieval-Augmented Generation.
86
+ * **Secure and Configurable**: Features group-based access control, compliance levels, and a tool approval system.
87
+ * **Modern Stack**: Built with React 19, FastAPI, and WebSockets.
88
+ * **Python Package**: Install and use as a library or CLI tool.
89
+
90
+ ## Installation
91
+
92
+ ### Install from PyPI (Recommended for Users)
93
+
94
+ ```bash
95
+ # Install the package
96
+ pip install atlas-chat
97
+
98
+ # Or with uv (faster)
99
+ uv pip install atlas-chat
100
+ ```
101
+
102
+ ### CLI Usage
103
+
104
+ After installation, three CLI tools are available:
105
+
106
+ ```bash
107
+ # Set up configuration (run this first!)
108
+ atlas-init # Creates .env and config/ in current directory
109
+ atlas-init --minimal # Creates just a minimal .env file
110
+
111
+ # Chat with an LLM
112
+ atlas-chat "Hello, how are you?" --model gpt-4o
113
+ atlas-chat "Use the search tool" --tools server_tool1
114
+ atlas-chat --list-tools
115
+
116
+ # Start the server
117
+ atlas-server --port 8000
118
+ atlas-server --env /path/to/.env --config-folder /path/to/config
119
+ ```
120
+
121
+ ### Python API Usage
122
+
123
+ ```python
124
+ from atlas import AtlasClient, ChatResult
125
+
126
+ # Async usage
127
+ client = AtlasClient()
128
+ result = await client.chat("Hello, how are you?")
129
+ print(result.message)
130
+
131
+ # With options
132
+ result = await client.chat(
133
+ "Analyze this data",
134
+ model="gpt-4o",
135
+ selected_tools=["calculator", "search"],
136
+ agent_mode=True
137
+ )
138
+
139
+ # Sync wrapper
140
+ result = client.chat_sync("Hello!")
141
+ ```
142
+
143
+ ## Quick Start (Development)
144
+
145
+ ### Prerequisites
146
+
147
+ ```bash
148
+ # Install uv package manager (one-time)
149
+ curl -LsSf https://astral.sh/uv/install.sh | sh
150
+
151
+ # Create virtual environment and install dependencies
152
+ uv venv && source .venv/bin/activate
153
+ uv pip install -r requirements.txt
154
+ ```
155
+
156
+ ### Development Installation (Editable Mode)
157
+
158
+ For development, install the package in **editable mode**. This creates a link from your Python environment to your local source code, so any changes you make to the code are immediately available without reinstalling.
159
+
160
+ ```bash
161
+ # Install in editable mode with uv (recommended)
162
+ uv pip install -e .
163
+
164
+ # Or with pip
165
+ pip install -e .
166
+ ```
167
+
168
+ **What editable mode gives you:**
169
+ - Edit any Python file in `atlas/` and changes take effect immediately
170
+ - CLI commands (`atlas-chat`, `atlas-server`) use your local code
171
+ - Import `from atlas import AtlasClient` in scripts and get your local version
172
+ - No need to reinstall after making changes
173
+
174
+ **Example workflow:**
175
+ ```bash
176
+ # Install once in editable mode
177
+ uv pip install -e .
178
+
179
+ # Edit code
180
+ vim atlas/atlas_client.py
181
+
182
+ # Run immediately with your changes - no reinstall needed
183
+ atlas-chat "test my changes"
184
+ python my_script.py # uses updated AtlasClient
185
+ ```
186
+
187
+ **Alternative: PYTHONPATH (if you can't use editable install)**
188
+ ```bash
189
+ # Set PYTHONPATH manually when running
190
+ PYTHONPATH=/path/to/atlas-ui-3 python atlas/main.py
191
+ ```
192
+
193
+ ### Running the Application
194
+
195
+ **Linux/macOS:**
196
+ ```bash
197
+ bash agent_start.sh
198
+ ```
199
+
200
+ **Windows:**
201
+ ```powershell
202
+ .\ps_agent_start.ps1
203
+ ```
204
+
205
+ **Note for Windows users**: If you encounter frontend build errors related to Rollup dependencies, delete `frontend/package-lock.json` and `frontend/node_modules`, then run the script again.
206
+
207
+ Both scripts automatically detect and work with Docker or Podman. The `agent_start.sh` script builds the frontend, starts necessary services, and launches the backend server.
208
+
209
+ ## Documentation
210
+
211
+ We have created a set of comprehensive guides to help you get the most out of Atlas UI 3.
212
+
213
+ * **[Getting Started](./docs/getting-started/installation.md)**: The perfect starting point for all users. This guide covers how to get the application running with Docker or on your local machine.
214
+
215
+ * **[Administrator's Guide](./docs/admin/README.md)**: For those who will deploy and manage the application. This guide details configuration, security settings, access control, and other operational topics.
216
+
217
+ * **[Developer's Guide](./docs/developer/README.md)**: For developers who want to contribute to the project. It provides an overview of the architecture and instructions for creating new MCP servers.
218
+
219
+ ## Container Images
220
+
221
+ Pre-built container images are available at `quay.io/agarlan-snl/atlas-ui-3:latest` (pushes automatically from main branch).
222
+
223
+ ## For AI Agent Contributors
224
+
225
+ If you are an AI agent working on this repository, please refer to the following documents for the most current and concise guidance:
226
+
227
+ * **[CLAUDE.md](./CLAUDE.md)**: Detailed architecture, workflows, and conventions.
228
+ * **[GEMINI.md](./GEMINI.md)**: Gemini-specific instructions.
229
+ * **[.github/copilot-instructions.md](./.github/copilot-instructions.md)**: A compact guide for getting productive quickly.
230
+
231
+ ## License
232
+
233
+ Copyright 2025 National Technology & Engineering Solutions of Sandia, LLC (NTESS). Under the terms of Contract DE-NA0003525 with NTESS, the U.S. Government retains certain rights in this software
234
+
235
+ MIT License
236
+