dtSpark 1.0.4__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 (96) hide show
  1. dtSpark/__init__.py +0 -0
  2. dtSpark/_description.txt +1 -0
  3. dtSpark/_full_name.txt +1 -0
  4. dtSpark/_licence.txt +21 -0
  5. dtSpark/_metadata.yaml +6 -0
  6. dtSpark/_name.txt +1 -0
  7. dtSpark/_version.txt +1 -0
  8. dtSpark/aws/__init__.py +7 -0
  9. dtSpark/aws/authentication.py +296 -0
  10. dtSpark/aws/bedrock.py +578 -0
  11. dtSpark/aws/costs.py +318 -0
  12. dtSpark/aws/pricing.py +580 -0
  13. dtSpark/cli_interface.py +2645 -0
  14. dtSpark/conversation_manager.py +3050 -0
  15. dtSpark/core/__init__.py +12 -0
  16. dtSpark/core/application.py +3355 -0
  17. dtSpark/core/context_compaction.py +735 -0
  18. dtSpark/daemon/__init__.py +104 -0
  19. dtSpark/daemon/__main__.py +10 -0
  20. dtSpark/daemon/action_monitor.py +213 -0
  21. dtSpark/daemon/daemon_app.py +730 -0
  22. dtSpark/daemon/daemon_manager.py +289 -0
  23. dtSpark/daemon/execution_coordinator.py +194 -0
  24. dtSpark/daemon/pid_file.py +169 -0
  25. dtSpark/database/__init__.py +482 -0
  26. dtSpark/database/autonomous_actions.py +1191 -0
  27. dtSpark/database/backends.py +329 -0
  28. dtSpark/database/connection.py +122 -0
  29. dtSpark/database/conversations.py +520 -0
  30. dtSpark/database/credential_prompt.py +218 -0
  31. dtSpark/database/files.py +205 -0
  32. dtSpark/database/mcp_ops.py +355 -0
  33. dtSpark/database/messages.py +161 -0
  34. dtSpark/database/schema.py +673 -0
  35. dtSpark/database/tool_permissions.py +186 -0
  36. dtSpark/database/usage.py +167 -0
  37. dtSpark/files/__init__.py +4 -0
  38. dtSpark/files/manager.py +322 -0
  39. dtSpark/launch.py +39 -0
  40. dtSpark/limits/__init__.py +10 -0
  41. dtSpark/limits/costs.py +296 -0
  42. dtSpark/limits/tokens.py +342 -0
  43. dtSpark/llm/__init__.py +17 -0
  44. dtSpark/llm/anthropic_direct.py +446 -0
  45. dtSpark/llm/base.py +146 -0
  46. dtSpark/llm/context_limits.py +438 -0
  47. dtSpark/llm/manager.py +177 -0
  48. dtSpark/llm/ollama.py +578 -0
  49. dtSpark/mcp_integration/__init__.py +5 -0
  50. dtSpark/mcp_integration/manager.py +653 -0
  51. dtSpark/mcp_integration/tool_selector.py +225 -0
  52. dtSpark/resources/config.yaml.template +631 -0
  53. dtSpark/safety/__init__.py +22 -0
  54. dtSpark/safety/llm_service.py +111 -0
  55. dtSpark/safety/patterns.py +229 -0
  56. dtSpark/safety/prompt_inspector.py +442 -0
  57. dtSpark/safety/violation_logger.py +346 -0
  58. dtSpark/scheduler/__init__.py +20 -0
  59. dtSpark/scheduler/creation_tools.py +599 -0
  60. dtSpark/scheduler/execution_queue.py +159 -0
  61. dtSpark/scheduler/executor.py +1152 -0
  62. dtSpark/scheduler/manager.py +395 -0
  63. dtSpark/tools/__init__.py +4 -0
  64. dtSpark/tools/builtin.py +833 -0
  65. dtSpark/web/__init__.py +20 -0
  66. dtSpark/web/auth.py +152 -0
  67. dtSpark/web/dependencies.py +37 -0
  68. dtSpark/web/endpoints/__init__.py +17 -0
  69. dtSpark/web/endpoints/autonomous_actions.py +1125 -0
  70. dtSpark/web/endpoints/chat.py +621 -0
  71. dtSpark/web/endpoints/conversations.py +353 -0
  72. dtSpark/web/endpoints/main_menu.py +547 -0
  73. dtSpark/web/endpoints/streaming.py +421 -0
  74. dtSpark/web/server.py +578 -0
  75. dtSpark/web/session.py +167 -0
  76. dtSpark/web/ssl_utils.py +195 -0
  77. dtSpark/web/static/css/dark-theme.css +427 -0
  78. dtSpark/web/static/js/actions.js +1101 -0
  79. dtSpark/web/static/js/chat.js +614 -0
  80. dtSpark/web/static/js/main.js +496 -0
  81. dtSpark/web/static/js/sse-client.js +242 -0
  82. dtSpark/web/templates/actions.html +408 -0
  83. dtSpark/web/templates/base.html +93 -0
  84. dtSpark/web/templates/chat.html +814 -0
  85. dtSpark/web/templates/conversations.html +350 -0
  86. dtSpark/web/templates/goodbye.html +81 -0
  87. dtSpark/web/templates/login.html +90 -0
  88. dtSpark/web/templates/main_menu.html +983 -0
  89. dtSpark/web/templates/new_conversation.html +191 -0
  90. dtSpark/web/web_interface.py +137 -0
  91. dtspark-1.0.4.dist-info/METADATA +187 -0
  92. dtspark-1.0.4.dist-info/RECORD +96 -0
  93. dtspark-1.0.4.dist-info/WHEEL +5 -0
  94. dtspark-1.0.4.dist-info/entry_points.txt +3 -0
  95. dtspark-1.0.4.dist-info/licenses/LICENSE +21 -0
  96. dtspark-1.0.4.dist-info/top_level.txt +1 -0
@@ -0,0 +1,427 @@
1
+ /**
2
+ * Custom dark theme CSS for Spark web interface
3
+ *
4
+ * Enhances Bootstrap 5 dark theme with custom colours and styling
5
+ */
6
+
7
+ :root {
8
+ --spark-cyan: #00bcd4;
9
+ --spark-green: #4caf50;
10
+ --spark-dark-bg: #1a1a1a;
11
+ --spark-card-bg: #2a2a2a;
12
+ --spark-border-color: #404040;
13
+ }
14
+
15
+ body {
16
+ background-color: var(--spark-dark-bg);
17
+ color: #e0e0e0;
18
+ }
19
+
20
+ /* Cards */
21
+ .card {
22
+ background-color: var(--spark-card-bg);
23
+ border-color: var(--spark-border-color);
24
+ }
25
+
26
+ .card-header {
27
+ border-bottom-color: var(--spark-border-color);
28
+ }
29
+
30
+ /* List groups */
31
+ .list-group-item {
32
+ background-color: var(--spark-card-bg);
33
+ border-color: var(--spark-border-color);
34
+ color: #e0e0e0;
35
+ }
36
+
37
+ .list-group-item-action:hover {
38
+ background-color: #353535;
39
+ }
40
+
41
+ /* Forms */
42
+ .form-control,
43
+ .form-select {
44
+ background-color: #2a2a2a;
45
+ border-color: var(--spark-border-color);
46
+ color: #e0e0e0;
47
+ }
48
+
49
+ .form-control:focus,
50
+ .form-select:focus {
51
+ background-color: #2a2a2a;
52
+ border-color: var(--spark-cyan);
53
+ color: #e0e0e0;
54
+ box-shadow: 0 0 0 0.25rem rgba(0, 188, 212, 0.25);
55
+ }
56
+
57
+ /* Chat messages */
58
+ .chat-message {
59
+ margin-bottom: 1rem;
60
+ padding: 0.75rem 1rem;
61
+ border-radius: 0.5rem;
62
+ }
63
+
64
+ .chat-message.user {
65
+ background: linear-gradient(135deg, #667eea 0%, #764ba2 100%);
66
+ margin-left: 20%;
67
+ }
68
+
69
+ .chat-message.assistant {
70
+ background-color: #3a3a3a;
71
+ margin-right: 20%;
72
+ }
73
+
74
+ .chat-message.system {
75
+ background-color: #2a4a2a;
76
+ font-style: italic;
77
+ text-align: center;
78
+ }
79
+
80
+ .chat-message .message-header {
81
+ font-size: 0.85rem;
82
+ opacity: 0.8;
83
+ margin-bottom: 0.5rem;
84
+ }
85
+
86
+ .chat-message .message-content {
87
+ word-wrap: break-word;
88
+ }
89
+
90
+ .chat-message .message-content code {
91
+ background-color: rgba(0, 0, 0, 0.3);
92
+ padding: 0.2rem 0.4rem;
93
+ border-radius: 0.25rem;
94
+ }
95
+
96
+ .chat-message .message-content pre {
97
+ background-color: rgba(0, 0, 0, 0.5);
98
+ padding: 1rem;
99
+ border-radius: 0.5rem;
100
+ overflow-x: auto;
101
+ }
102
+
103
+ /* Tool calls */
104
+ .tool-call {
105
+ background-color: #2a3a4a;
106
+ padding: 0.75rem;
107
+ margin: 0.5rem 0;
108
+ border-radius: 0.25rem;
109
+ }
110
+
111
+ .tool-result {
112
+ background-color: #3a3a2a;
113
+ padding: 0.75rem;
114
+ margin: 0.5rem 0;
115
+ border-radius: 0.25rem;
116
+ }
117
+
118
+ /* Rollup summary */
119
+ .chat-message.rollup-summary {
120
+ background-color: #2a4a3a;
121
+ font-style: italic;
122
+ margin: 1rem 0;
123
+ }
124
+
125
+ /* Buttons */
126
+ .btn-primary {
127
+ background-color: var(--spark-cyan);
128
+ border-color: var(--spark-cyan);
129
+ color: #000;
130
+ }
131
+
132
+ .btn-primary:hover {
133
+ background-color: #00a5bb;
134
+ border-color: #00a5bb;
135
+ }
136
+
137
+ .btn-success {
138
+ background-color: var(--spark-green);
139
+ border-color: var(--spark-green);
140
+ }
141
+
142
+ .btn-success:hover {
143
+ background-color: #45a049;
144
+ border-color: #45a049;
145
+ }
146
+
147
+ /* Navbar */
148
+ .navbar-dark {
149
+ background-color: #1a1a1a !important;
150
+ border-bottom: 1px solid var(--spark-border-color);
151
+ }
152
+
153
+ /* Footer */
154
+ .footer {
155
+ border-top: 1px solid var(--spark-border-color);
156
+ }
157
+
158
+ /* Spinners */
159
+ .spinner-border {
160
+ color: var(--spark-cyan);
161
+ }
162
+
163
+ /* Animations */
164
+ @keyframes spin {
165
+ from {
166
+ transform: rotate(0deg);
167
+ }
168
+ to {
169
+ transform: rotate(360deg);
170
+ }
171
+ }
172
+
173
+ .spin {
174
+ animation: spin 1s linear infinite;
175
+ }
176
+
177
+ /* Scrollbar customisation */
178
+ ::-webkit-scrollbar {
179
+ width: 10px;
180
+ height: 10px;
181
+ }
182
+
183
+ ::-webkit-scrollbar-track {
184
+ background: var(--spark-dark-bg);
185
+ }
186
+
187
+ ::-webkit-scrollbar-thumb {
188
+ background: var(--spark-border-color);
189
+ border-radius: 5px;
190
+ }
191
+
192
+ ::-webkit-scrollbar-thumb:hover {
193
+ background: #505050;
194
+ }
195
+
196
+ /* Code blocks in markdown */
197
+ .markdown-content pre {
198
+ background-color: rgba(0, 0, 0, 0.5);
199
+ padding: 1rem;
200
+ border-radius: 0.5rem;
201
+ overflow-x: auto;
202
+ }
203
+
204
+ .markdown-content code {
205
+ background-color: rgba(0, 0, 0, 0.3);
206
+ padding: 0.2rem 0.4rem;
207
+ border-radius: 0.25rem;
208
+ }
209
+
210
+ /* Alerts */
211
+ .alert-info {
212
+ background-color: #1a3a4a;
213
+ border-color: var(--spark-cyan);
214
+ color: #e0e0e0;
215
+ }
216
+
217
+ .alert-warning {
218
+ background-color: #4a3a1a;
219
+ border-color: #ffa726;
220
+ color: #e0e0e0;
221
+ }
222
+
223
+ .alert-danger {
224
+ background-color: #4a1a1a;
225
+ border-color: #f44336;
226
+ color: #e0e0e0;
227
+ }
228
+
229
+ .alert-success {
230
+ background-color: #1a4a1a;
231
+ border-color: var(--spark-green);
232
+ color: #e0e0e0;
233
+ }
234
+
235
+ /* Modal */
236
+ .modal-content {
237
+ background-color: var(--spark-card-bg);
238
+ border-color: var(--spark-border-color);
239
+ }
240
+
241
+ .modal-header,
242
+ .modal-footer {
243
+ border-color: var(--spark-border-color);
244
+ }
245
+
246
+ /* Copy icon button */
247
+ .copy-icon-btn {
248
+ color: rgba(255, 255, 255, 0.5);
249
+ opacity: 0.6;
250
+ transition: opacity 0.2s, color 0.2s;
251
+ text-decoration: none;
252
+ }
253
+
254
+ .copy-icon-btn:hover {
255
+ color: var(--spark-cyan);
256
+ opacity: 1;
257
+ }
258
+
259
+ .copy-icon-btn:focus {
260
+ box-shadow: none;
261
+ }
262
+
263
+ .chat-message.user .copy-icon-btn {
264
+ color: rgba(255, 255, 255, 0.7);
265
+ }
266
+
267
+ .chat-message.user .copy-icon-btn:hover {
268
+ color: #fff;
269
+ }
270
+
271
+ /* Mermaid diagram styling */
272
+ .mermaid-container {
273
+ margin: 1rem 0;
274
+ overflow-x: auto;
275
+ }
276
+
277
+ .mermaid-diagram {
278
+ background-color: #1a1a1a;
279
+ padding: 1rem;
280
+ border-radius: 0.5rem;
281
+ text-align: center;
282
+ position: relative;
283
+ }
284
+
285
+ .mermaid-diagram svg {
286
+ max-width: 100%;
287
+ height: auto;
288
+ }
289
+
290
+ .mermaid-svg-container {
291
+ display: inline-block;
292
+ }
293
+
294
+ /* Diagram copy button */
295
+ .diagram-copy-btn {
296
+ position: absolute;
297
+ top: 0.5rem;
298
+ right: 0.5rem;
299
+ background-color: rgba(42, 42, 42, 0.8);
300
+ border: 1px solid var(--spark-border-color);
301
+ color: rgba(255, 255, 255, 0.6);
302
+ padding: 0.25rem 0.5rem;
303
+ opacity: 0;
304
+ transition: opacity 0.2s, background-color 0.2s, color 0.2s;
305
+ z-index: 10;
306
+ }
307
+
308
+ .mermaid-diagram:hover .diagram-copy-btn {
309
+ opacity: 1;
310
+ }
311
+
312
+ .diagram-copy-btn:hover {
313
+ background-color: var(--spark-card-bg);
314
+ color: var(--spark-cyan);
315
+ border-color: var(--spark-cyan);
316
+ }
317
+
318
+ .diagram-copy-btn:focus {
319
+ box-shadow: 0 0 0 0.2rem rgba(0, 188, 212, 0.25);
320
+ }
321
+
322
+ .mermaid-error {
323
+ background-color: rgba(244, 67, 54, 0.1);
324
+ border: 1px solid #f44336;
325
+ border-radius: 0.5rem;
326
+ padding: 1rem;
327
+ color: #ff8a80;
328
+ }
329
+
330
+ .mermaid-error .text-danger {
331
+ display: block;
332
+ margin-bottom: 0.5rem;
333
+ font-weight: bold;
334
+ }
335
+
336
+ /* Highlight.js code block styling */
337
+ .chat-message .message-content pre code.hljs {
338
+ background-color: transparent;
339
+ padding: 0;
340
+ }
341
+
342
+ .chat-message .message-content pre {
343
+ background-color: #0d1117;
344
+ border: 1px solid #30363d;
345
+ border-radius: 0.5rem;
346
+ padding: 1rem;
347
+ overflow-x: auto;
348
+ }
349
+
350
+ .chat-message .message-content code:not(.hljs) {
351
+ background-color: rgba(110, 118, 129, 0.3);
352
+ padding: 0.2rem 0.4rem;
353
+ border-radius: 0.25rem;
354
+ font-size: 0.875em;
355
+ }
356
+
357
+ /* Markdown content styling */
358
+ .markdown-content pre {
359
+ background-color: #0d1117;
360
+ border: 1px solid #30363d;
361
+ border-radius: 0.5rem;
362
+ padding: 1rem;
363
+ overflow-x: auto;
364
+ margin: 1rem 0;
365
+ }
366
+
367
+ .markdown-content pre code {
368
+ background-color: transparent;
369
+ padding: 0;
370
+ border-radius: 0;
371
+ }
372
+
373
+ .markdown-content code {
374
+ background-color: rgba(110, 118, 129, 0.3);
375
+ padding: 0.2rem 0.4rem;
376
+ border-radius: 0.25rem;
377
+ font-size: 0.875em;
378
+ }
379
+
380
+ .markdown-content blockquote {
381
+ border-left: 4px solid var(--spark-cyan);
382
+ padding-left: 1rem;
383
+ margin-left: 0;
384
+ color: #9e9e9e;
385
+ }
386
+
387
+ .markdown-content table {
388
+ width: 100%;
389
+ border-collapse: collapse;
390
+ margin: 1rem 0;
391
+ }
392
+
393
+ .markdown-content th,
394
+ .markdown-content td {
395
+ border: 1px solid var(--spark-border-color);
396
+ padding: 0.5rem;
397
+ }
398
+
399
+ .markdown-content th {
400
+ background-color: #2a2a2a;
401
+ }
402
+
403
+ .markdown-content hr {
404
+ border: none;
405
+ border-top: 1px solid var(--spark-border-color);
406
+ margin: 1.5rem 0;
407
+ }
408
+
409
+ /* AI Creation Chat Interface */
410
+ #aiChatMessages {
411
+ background-color: var(--spark-dark-bg) !important;
412
+ border-color: var(--spark-border-color) !important;
413
+ }
414
+
415
+ #aiChatMessages .bg-white {
416
+ background-color: var(--spark-card-bg) !important;
417
+ border-color: var(--spark-border-color) !important;
418
+ color: #e0e0e0;
419
+ }
420
+
421
+ #aiChatMessages .bg-primary {
422
+ background: linear-gradient(135deg, #667eea 0%, #764ba2 100%) !important;
423
+ }
424
+
425
+ #aiTypingIndicator {
426
+ color: #9e9e9e;
427
+ }