vibesurf 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.

Potentially problematic release.


This version of vibesurf might be problematic. Click here for more details.

Files changed (70) hide show
  1. vibe_surf/__init__.py +12 -0
  2. vibe_surf/_version.py +34 -0
  3. vibe_surf/agents/__init__.py +0 -0
  4. vibe_surf/agents/browser_use_agent.py +1106 -0
  5. vibe_surf/agents/prompts/__init__.py +1 -0
  6. vibe_surf/agents/prompts/vibe_surf_prompt.py +176 -0
  7. vibe_surf/agents/report_writer_agent.py +360 -0
  8. vibe_surf/agents/vibe_surf_agent.py +1632 -0
  9. vibe_surf/backend/__init__.py +0 -0
  10. vibe_surf/backend/api/__init__.py +3 -0
  11. vibe_surf/backend/api/activity.py +243 -0
  12. vibe_surf/backend/api/config.py +740 -0
  13. vibe_surf/backend/api/files.py +322 -0
  14. vibe_surf/backend/api/models.py +257 -0
  15. vibe_surf/backend/api/task.py +300 -0
  16. vibe_surf/backend/database/__init__.py +13 -0
  17. vibe_surf/backend/database/manager.py +129 -0
  18. vibe_surf/backend/database/models.py +164 -0
  19. vibe_surf/backend/database/queries.py +922 -0
  20. vibe_surf/backend/database/schemas.py +100 -0
  21. vibe_surf/backend/llm_config.py +182 -0
  22. vibe_surf/backend/main.py +137 -0
  23. vibe_surf/backend/migrations/__init__.py +16 -0
  24. vibe_surf/backend/migrations/init_db.py +303 -0
  25. vibe_surf/backend/migrations/seed_data.py +236 -0
  26. vibe_surf/backend/shared_state.py +601 -0
  27. vibe_surf/backend/utils/__init__.py +7 -0
  28. vibe_surf/backend/utils/encryption.py +164 -0
  29. vibe_surf/backend/utils/llm_factory.py +225 -0
  30. vibe_surf/browser/__init__.py +8 -0
  31. vibe_surf/browser/agen_browser_profile.py +130 -0
  32. vibe_surf/browser/agent_browser_session.py +416 -0
  33. vibe_surf/browser/browser_manager.py +296 -0
  34. vibe_surf/browser/utils.py +790 -0
  35. vibe_surf/browser/watchdogs/__init__.py +0 -0
  36. vibe_surf/browser/watchdogs/action_watchdog.py +291 -0
  37. vibe_surf/browser/watchdogs/dom_watchdog.py +954 -0
  38. vibe_surf/chrome_extension/background.js +558 -0
  39. vibe_surf/chrome_extension/config.js +48 -0
  40. vibe_surf/chrome_extension/content.js +284 -0
  41. vibe_surf/chrome_extension/dev-reload.js +47 -0
  42. vibe_surf/chrome_extension/icons/convert-svg.js +33 -0
  43. vibe_surf/chrome_extension/icons/logo-preview.html +187 -0
  44. vibe_surf/chrome_extension/icons/logo.png +0 -0
  45. vibe_surf/chrome_extension/manifest.json +53 -0
  46. vibe_surf/chrome_extension/popup.html +134 -0
  47. vibe_surf/chrome_extension/scripts/api-client.js +473 -0
  48. vibe_surf/chrome_extension/scripts/main.js +491 -0
  49. vibe_surf/chrome_extension/scripts/markdown-it.min.js +3 -0
  50. vibe_surf/chrome_extension/scripts/session-manager.js +599 -0
  51. vibe_surf/chrome_extension/scripts/ui-manager.js +3687 -0
  52. vibe_surf/chrome_extension/sidepanel.html +347 -0
  53. vibe_surf/chrome_extension/styles/animations.css +471 -0
  54. vibe_surf/chrome_extension/styles/components.css +670 -0
  55. vibe_surf/chrome_extension/styles/main.css +2307 -0
  56. vibe_surf/chrome_extension/styles/settings.css +1100 -0
  57. vibe_surf/cli.py +357 -0
  58. vibe_surf/controller/__init__.py +0 -0
  59. vibe_surf/controller/file_system.py +53 -0
  60. vibe_surf/controller/mcp_client.py +68 -0
  61. vibe_surf/controller/vibesurf_controller.py +616 -0
  62. vibe_surf/controller/views.py +37 -0
  63. vibe_surf/llm/__init__.py +21 -0
  64. vibe_surf/llm/openai_compatible.py +237 -0
  65. vibesurf-0.1.0.dist-info/METADATA +97 -0
  66. vibesurf-0.1.0.dist-info/RECORD +70 -0
  67. vibesurf-0.1.0.dist-info/WHEEL +5 -0
  68. vibesurf-0.1.0.dist-info/entry_points.txt +2 -0
  69. vibesurf-0.1.0.dist-info/licenses/LICENSE +201 -0
  70. vibesurf-0.1.0.dist-info/top_level.txt +1 -0
@@ -0,0 +1,471 @@
1
+ /* Animations CSS - Transitions, Keyframes, and Interactive States */
2
+
3
+ /* Fade Animations */
4
+ .fade-in {
5
+ animation: fadeIn var(--transition-normal) ease-out;
6
+ }
7
+
8
+ .fade-out {
9
+ animation: fadeOut var(--transition-normal) ease-out;
10
+ }
11
+
12
+ @keyframes fadeIn {
13
+ from {
14
+ opacity: 0;
15
+ transform: translateY(10px);
16
+ }
17
+ to {
18
+ opacity: 1;
19
+ transform: translateY(0);
20
+ }
21
+ }
22
+
23
+ @keyframes fadeOut {
24
+ from {
25
+ opacity: 1;
26
+ transform: translateY(0);
27
+ }
28
+ to {
29
+ opacity: 0;
30
+ transform: translateY(-10px);
31
+ }
32
+ }
33
+
34
+ /* Slide Animations */
35
+ .slide-in-right {
36
+ animation: slideInRight var(--transition-normal) ease-out;
37
+ }
38
+
39
+ .slide-in-left {
40
+ animation: slideInLeft var(--transition-normal) ease-out;
41
+ }
42
+
43
+ .slide-in-up {
44
+ animation: slideInUp var(--transition-normal) ease-out;
45
+ }
46
+
47
+ .slide-in-down {
48
+ animation: slideInDown var(--transition-normal) ease-out;
49
+ }
50
+
51
+ @keyframes slideInRight {
52
+ from {
53
+ opacity: 0;
54
+ transform: translateX(20px);
55
+ }
56
+ to {
57
+ opacity: 1;
58
+ transform: translateX(0);
59
+ }
60
+ }
61
+
62
+ @keyframes slideInLeft {
63
+ from {
64
+ opacity: 0;
65
+ transform: translateX(-20px);
66
+ }
67
+ to {
68
+ opacity: 1;
69
+ transform: translateX(0);
70
+ }
71
+ }
72
+
73
+ @keyframes slideInUp {
74
+ from {
75
+ opacity: 0;
76
+ transform: translateY(20px);
77
+ }
78
+ to {
79
+ opacity: 1;
80
+ transform: translateY(0);
81
+ }
82
+ }
83
+
84
+ @keyframes slideInDown {
85
+ from {
86
+ opacity: 0;
87
+ transform: translateY(-20px);
88
+ }
89
+ to {
90
+ opacity: 1;
91
+ transform: translateY(0);
92
+ }
93
+ }
94
+
95
+ /* Scale Animations */
96
+ .scale-in {
97
+ animation: scaleIn var(--transition-normal) ease-out;
98
+ }
99
+
100
+ .scale-out {
101
+ animation: scaleOut var(--transition-normal) ease-out;
102
+ }
103
+
104
+ @keyframes scaleIn {
105
+ from {
106
+ opacity: 0;
107
+ transform: scale(0.95);
108
+ }
109
+ to {
110
+ opacity: 1;
111
+ transform: scale(1);
112
+ }
113
+ }
114
+
115
+ @keyframes scaleOut {
116
+ from {
117
+ opacity: 1;
118
+ transform: scale(1);
119
+ }
120
+ to {
121
+ opacity: 0;
122
+ transform: scale(0.95);
123
+ }
124
+ }
125
+
126
+ /* Loading Animations */
127
+ .loading-dots {
128
+ animation: loadingDots 1.5s infinite ease-in-out;
129
+ }
130
+
131
+ .loading-dots::after {
132
+ content: '';
133
+ animation: loadingDotsAfter 1.5s infinite ease-in-out;
134
+ }
135
+
136
+ @keyframes loadingDots {
137
+ 0%, 20% {
138
+ content: '.';
139
+ }
140
+ 40% {
141
+ content: '..';
142
+ }
143
+ 60%, 100% {
144
+ content: '...';
145
+ }
146
+ }
147
+
148
+ /* Bounce Animation */
149
+ .bounce {
150
+ animation: bounce 0.6s ease-in-out;
151
+ }
152
+
153
+ @keyframes bounce {
154
+ 0%, 20%, 60%, 100% {
155
+ transform: translateY(0);
156
+ }
157
+ 40% {
158
+ transform: translateY(-10px);
159
+ }
160
+ 80% {
161
+ transform: translateY(-5px);
162
+ }
163
+ }
164
+
165
+ /* Shake Animation */
166
+ .shake {
167
+ animation: shake 0.5s ease-in-out;
168
+ }
169
+
170
+ @keyframes shake {
171
+ 0%, 100% {
172
+ transform: translateX(0);
173
+ }
174
+ 10%, 30%, 50%, 70%, 90% {
175
+ transform: translateX(-3px);
176
+ }
177
+ 20%, 40%, 60%, 80% {
178
+ transform: translateX(3px);
179
+ }
180
+ }
181
+
182
+ /* Typing Animation */
183
+ .typing-indicator {
184
+ display: inline-flex;
185
+ align-items: center;
186
+ gap: 2px;
187
+ }
188
+
189
+ .typing-dot {
190
+ width: 4px;
191
+ height: 4px;
192
+ border-radius: 50%;
193
+ background-color: var(--text-muted);
194
+ animation: typingDot 1.5s infinite ease-in-out;
195
+ }
196
+
197
+ .typing-dot:nth-child(1) {
198
+ animation-delay: 0s;
199
+ }
200
+
201
+ .typing-dot:nth-child(2) {
202
+ animation-delay: 0.2s;
203
+ }
204
+
205
+ .typing-dot:nth-child(3) {
206
+ animation-delay: 0.4s;
207
+ }
208
+
209
+ @keyframes typingDot {
210
+ 0%, 60%, 100% {
211
+ opacity: 0.3;
212
+ transform: scale(0.8);
213
+ }
214
+ 30% {
215
+ opacity: 1;
216
+ transform: scale(1);
217
+ }
218
+ }
219
+
220
+ /* Progress Bar Animation */
221
+ .progress-bar {
222
+ width: 100%;
223
+ height: 4px;
224
+ background-color: var(--bg-tertiary);
225
+ border-radius: 2px;
226
+ overflow: hidden;
227
+ position: relative;
228
+ }
229
+
230
+ .progress-bar-fill {
231
+ height: 100%;
232
+ background-color: var(--primary-color);
233
+ border-radius: 2px;
234
+ transition: width var(--transition-slow) ease-out;
235
+ }
236
+
237
+ .progress-bar-indeterminate {
238
+ position: relative;
239
+ background-color: var(--bg-tertiary);
240
+ overflow: hidden;
241
+ }
242
+
243
+ .progress-bar-indeterminate::before {
244
+ content: '';
245
+ position: absolute;
246
+ top: 0;
247
+ left: -100%;
248
+ width: 100%;
249
+ height: 100%;
250
+ background-color: var(--primary-color);
251
+ animation: progressIndeterminate 2s infinite linear;
252
+ }
253
+
254
+ @keyframes progressIndeterminate {
255
+ 0% {
256
+ left: -100%;
257
+ }
258
+ 100% {
259
+ left: 100%;
260
+ }
261
+ }
262
+
263
+ /* Hover Effects */
264
+ .hover-lift {
265
+ transition: all var(--transition-fast);
266
+ }
267
+
268
+ .hover-lift:hover {
269
+ transform: translateY(-2px);
270
+ box-shadow: var(--shadow-md);
271
+ }
272
+
273
+ .hover-scale {
274
+ transition: transform var(--transition-fast);
275
+ }
276
+
277
+ .hover-scale:hover {
278
+ transform: scale(1.02);
279
+ }
280
+
281
+ .hover-glow {
282
+ transition: box-shadow var(--transition-fast);
283
+ }
284
+
285
+ .hover-glow:hover {
286
+ box-shadow: 0 0 20px rgba(0, 122, 204, 0.3);
287
+ }
288
+
289
+ /* Focus Effects */
290
+ .focus-ring {
291
+ transition: all var(--transition-fast);
292
+ }
293
+
294
+ .focus-ring:focus {
295
+ outline: none;
296
+ box-shadow: 0 0 0 3px rgba(0, 122, 204, 0.1);
297
+ }
298
+
299
+ .focus-ring:focus-visible {
300
+ box-shadow: 0 0 0 3px rgba(0, 122, 204, 0.3);
301
+ }
302
+
303
+ /* State Transitions */
304
+ .state-transition {
305
+ transition: all var(--transition-normal);
306
+ }
307
+
308
+ /* Smooth scroll */
309
+ .smooth-scroll {
310
+ scroll-behavior: smooth;
311
+ }
312
+
313
+ /* Text animations */
314
+ .text-shimmer {
315
+ background: linear-gradient(
316
+ 90deg,
317
+ var(--text-muted) 0%,
318
+ var(--text-primary) 50%,
319
+ var(--text-muted) 100%
320
+ );
321
+ background-size: 200% 100%;
322
+ background-clip: text;
323
+ -webkit-background-clip: text;
324
+ -webkit-text-fill-color: transparent;
325
+ animation: shimmer 2s infinite ease-in-out;
326
+ }
327
+
328
+ @keyframes shimmer {
329
+ 0% {
330
+ background-position: -200% 0;
331
+ }
332
+ 100% {
333
+ background-position: 200% 0;
334
+ }
335
+ }
336
+
337
+ /* Ripple Effect */
338
+ .ripple {
339
+ position: relative;
340
+ overflow: hidden;
341
+ }
342
+
343
+ .ripple::before {
344
+ content: '';
345
+ position: absolute;
346
+ top: 50%;
347
+ left: 50%;
348
+ width: 0;
349
+ height: 0;
350
+ border-radius: 50%;
351
+ background-color: rgba(255, 255, 255, 0.5);
352
+ transform: translate(-50%, -50%);
353
+ transition: width 0.6s, height 0.6s;
354
+ }
355
+
356
+ .ripple:active::before {
357
+ width: 300px;
358
+ height: 300px;
359
+ }
360
+
361
+ /* Breathing animation for active states */
362
+ .breathing {
363
+ animation: breathing 3s infinite ease-in-out;
364
+ }
365
+
366
+ @keyframes breathing {
367
+ 0%, 100% {
368
+ opacity: 0.8;
369
+ }
370
+ 50% {
371
+ opacity: 1;
372
+ }
373
+ }
374
+
375
+ /* Slide animation for panels */
376
+ .slide-panel-enter {
377
+ transform: translateX(100%);
378
+ opacity: 0;
379
+ }
380
+
381
+ .slide-panel-enter-active {
382
+ transform: translateX(0);
383
+ opacity: 1;
384
+ transition: all var(--transition-slow) ease-out;
385
+ }
386
+
387
+ .slide-panel-exit {
388
+ transform: translateX(0);
389
+ opacity: 1;
390
+ }
391
+
392
+ .slide-panel-exit-active {
393
+ transform: translateX(100%);
394
+ opacity: 0;
395
+ transition: all var(--transition-slow) ease-in;
396
+ }
397
+
398
+ /* Stagger animation for list items */
399
+ .stagger-item {
400
+ opacity: 0;
401
+ transform: translateY(20px);
402
+ animation: staggerIn var(--transition-normal) ease-out forwards;
403
+ }
404
+
405
+ .stagger-item:nth-child(1) { animation-delay: 0ms; }
406
+ .stagger-item:nth-child(2) { animation-delay: 50ms; }
407
+ .stagger-item:nth-child(3) { animation-delay: 100ms; }
408
+ .stagger-item:nth-child(4) { animation-delay: 150ms; }
409
+ .stagger-item:nth-child(5) { animation-delay: 200ms; }
410
+ .stagger-item:nth-child(n+6) { animation-delay: 250ms; }
411
+
412
+ @keyframes staggerIn {
413
+ to {
414
+ opacity: 1;
415
+ transform: translateY(0);
416
+ }
417
+ }
418
+
419
+ /* Loading skeleton animation */
420
+ .skeleton {
421
+ background: linear-gradient(
422
+ 90deg,
423
+ var(--bg-secondary) 25%,
424
+ var(--bg-tertiary) 50%,
425
+ var(--bg-secondary) 75%
426
+ );
427
+ background-size: 200% 100%;
428
+ animation: skeleton 1.5s infinite ease-in-out;
429
+ border-radius: var(--radius-sm);
430
+ }
431
+
432
+ @keyframes skeleton {
433
+ 0% {
434
+ background-position: -200% 0;
435
+ }
436
+ 100% {
437
+ background-position: 200% 0;
438
+ }
439
+ }
440
+
441
+ /* Micro-interactions */
442
+ .micro-bounce {
443
+ transition: transform 0.1s ease-out;
444
+ }
445
+
446
+ .micro-bounce:active {
447
+ transform: scale(0.98);
448
+ }
449
+
450
+ .micro-rotate {
451
+ transition: transform var(--transition-fast);
452
+ }
453
+
454
+ .micro-rotate:hover {
455
+ transform: rotate(5deg);
456
+ }
457
+
458
+ /* Reduced motion preferences */
459
+ @media (prefers-reduced-motion: reduce) {
460
+ *,
461
+ *::before,
462
+ *::after {
463
+ animation-duration: 0.01ms !important;
464
+ animation-iteration-count: 1 !important;
465
+ transition-duration: 0.01ms !important;
466
+ }
467
+
468
+ .smooth-scroll {
469
+ scroll-behavior: auto;
470
+ }
471
+ }