vibesurf 0.1.32__py3-none-any.whl → 0.1.34__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 (34) hide show
  1. vibe_surf/_version.py +2 -2
  2. vibe_surf/agents/browser_use_agent.py +1 -1
  3. vibe_surf/agents/prompts/vibe_surf_prompt.py +6 -0
  4. vibe_surf/agents/report_writer_agent.py +50 -0
  5. vibe_surf/agents/vibe_surf_agent.py +55 -0
  6. vibe_surf/backend/api/composio.py +952 -0
  7. vibe_surf/backend/database/migrations/v005_add_composio_integration.sql +33 -0
  8. vibe_surf/backend/database/migrations/v006_add_credentials_table.sql +26 -0
  9. vibe_surf/backend/database/models.py +53 -1
  10. vibe_surf/backend/database/queries.py +312 -2
  11. vibe_surf/backend/main.py +28 -0
  12. vibe_surf/backend/shared_state.py +123 -9
  13. vibe_surf/chrome_extension/scripts/api-client.js +32 -0
  14. vibe_surf/chrome_extension/scripts/settings-manager.js +954 -1
  15. vibe_surf/chrome_extension/sidepanel.html +190 -0
  16. vibe_surf/chrome_extension/styles/settings-integrations.css +927 -0
  17. vibe_surf/chrome_extension/styles/settings-modal.css +7 -3
  18. vibe_surf/chrome_extension/styles/settings-responsive.css +37 -5
  19. vibe_surf/cli.py +98 -3
  20. vibe_surf/telemetry/__init__.py +60 -0
  21. vibe_surf/telemetry/service.py +112 -0
  22. vibe_surf/telemetry/views.py +156 -0
  23. vibe_surf/tools/composio_client.py +456 -0
  24. vibe_surf/tools/mcp_client.py +21 -2
  25. vibe_surf/tools/vibesurf_tools.py +290 -87
  26. vibe_surf/tools/views.py +16 -0
  27. vibe_surf/tools/website_api/youtube/client.py +35 -13
  28. vibe_surf/utils.py +13 -0
  29. {vibesurf-0.1.32.dist-info → vibesurf-0.1.34.dist-info}/METADATA +11 -9
  30. {vibesurf-0.1.32.dist-info → vibesurf-0.1.34.dist-info}/RECORD +34 -25
  31. {vibesurf-0.1.32.dist-info → vibesurf-0.1.34.dist-info}/WHEEL +0 -0
  32. {vibesurf-0.1.32.dist-info → vibesurf-0.1.34.dist-info}/entry_points.txt +0 -0
  33. {vibesurf-0.1.32.dist-info → vibesurf-0.1.34.dist-info}/licenses/LICENSE +0 -0
  34. {vibesurf-0.1.32.dist-info → vibesurf-0.1.34.dist-info}/top_level.txt +0 -0
@@ -20,6 +20,7 @@
20
20
  <link rel="stylesheet" href="styles/settings-profiles.css">
21
21
  <link rel="stylesheet" href="styles/settings-forms.css">
22
22
  <link rel="stylesheet" href="styles/settings-environment.css">
23
+ <link rel="stylesheet" href="styles/settings-integrations.css">
23
24
  <link rel="stylesheet" href="styles/settings-utilities.css">
24
25
  <link rel="stylesheet" href="styles/settings-responsive.css">
25
26
 
@@ -317,6 +318,12 @@
317
318
  </svg>
318
319
  Voice
319
320
  </button>
321
+ <button class="settings-tab" data-tab="integrations">
322
+ <svg width="16" height="16" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg" style="margin-right: 8px;">
323
+ <path d="M13 2L3 14H12L11 22L21 10H12L13 2Z" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/>
324
+ </svg>
325
+ Integrations
326
+ </button>
320
327
  </div>
321
328
 
322
329
  <!-- Tab Content -->
@@ -430,6 +437,62 @@
430
437
  Add Voice
431
438
  </button>
432
439
  </div>
440
+
441
+ <!-- Integrations Tab -->
442
+ <div id="integrations-tab" class="settings-tab-content">
443
+ <div class="integrations-container">
444
+ <!-- API Key Setup Section -->
445
+ <div id="api-key-setup" class="integrations-section">
446
+ <div class="section-header">
447
+ <h3>Composio Integration</h3>
448
+ <p class="section-description">Connect your Composio account to access external toolkits</p>
449
+ </div>
450
+ <div class="api-key-status">
451
+ <div class="status-indicator" id="composio-status">
452
+ <div class="status-icon">⚠️</div>
453
+ <div class="status-text">
454
+ <div class="status-title">API Key Required</div>
455
+ <div class="status-message">Please configure your Composio API key to continue</div>
456
+ </div>
457
+ <button id="setup-api-key-btn" class="status-btn">Setup</button>
458
+ </div>
459
+ </div>
460
+ </div>
461
+
462
+ <!-- Toolkits Section (hidden initially) -->
463
+ <div id="toolkits-section" class="integrations-section hidden">
464
+ <!-- Search and Filter Bar -->
465
+ <div class="toolkits-controls">
466
+ <div class="search-filter-bar">
467
+ <div class="search-input-container">
468
+ <input type="text" id="toolkit-search" placeholder="Search toolkits..." class="search-input">
469
+ <svg class="search-icon" width="16" height="16" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg">
470
+ <circle cx="11" cy="11" r="8" stroke="currentColor" stroke-width="2"/>
471
+ <path d="M21 21L16.65 16.65" stroke="currentColor" stroke-width="2" stroke-linecap="round"/>
472
+ </svg>
473
+ </div>
474
+ <select id="toolkit-filter" class="filter-select">
475
+ <option value="all">All Toolkits</option>
476
+ <option value="enabled">Enabled Only</option>
477
+ <option value="disabled">Disabled Only</option>
478
+ <option value="connected">Connected Only</option>
479
+ </select>
480
+ </div>
481
+ </div>
482
+
483
+ <!-- Toolkits List -->
484
+ <div id="toolkits-list" class="toolkits-list">
485
+ <!-- Toolkits will be populated here -->
486
+ </div>
487
+
488
+ <!-- Loading State -->
489
+ <div id="toolkits-loading" class="loading-state hidden">
490
+ <div class="loading-spinner"></div>
491
+ <div class="loading-text">Loading toolkits...</div>
492
+ </div>
493
+ </div>
494
+ </div>
495
+ </div>
433
496
  </div>
434
497
  </div>
435
498
  </div>
@@ -457,6 +520,133 @@
457
520
  </div>
458
521
  </div>
459
522
 
523
+ <!-- Composio API Key Setup Modal -->
524
+ <div id="composio-api-key-modal" class="modal hidden">
525
+ <div class="modal-overlay"></div>
526
+ <div class="modal-content composio-modal-content">
527
+ <div class="modal-header">
528
+ <h3>Setup Composio API Key</h3>
529
+ <button class="modal-close">
530
+ <svg width="16" height="16" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg">
531
+ <path d="M6 6L18 18M6 18L18 6" stroke="currentColor" stroke-width="2" stroke-linecap="round"/>
532
+ </svg>
533
+ </button>
534
+ </div>
535
+ <div class="modal-body">
536
+ <div class="api-key-setup-content">
537
+ <div class="form-group">
538
+ <label class="form-label required">Composio API Key</label>
539
+ <div class="api-key-field">
540
+ <input type="password" id="composio-api-key-input" class="form-input api-key-input"
541
+ placeholder="Enter your Composio API key" required>
542
+ <button type="button" class="api-key-toggle" title="Toggle visibility">
543
+ <svg width="16" height="16" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg">
544
+ <path d="M1 12S5 4 12 4S23 12 23 12S19 20 12 20S1 12 1 12Z" stroke="currentColor" stroke-width="2"/>
545
+ <circle cx="12" cy="12" r="3" stroke="currentColor" stroke-width="2"/>
546
+ </svg>
547
+ </button>
548
+ </div>
549
+ <div class="form-help">
550
+ <p>Your Composio API key for accessing external integrations</p>
551
+ <div class="help-link">
552
+ <span>Get your API key from </span>
553
+ <button id="open-composio-link" class="link-btn">
554
+ composio.dev
555
+ <svg width="12" height="12" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg">
556
+ <path d="M18 13V19C18 19.5304 17.7893 20.0391 17.4142 20.4142C17.0391 20.7893 16.5304 21 16 21H5C4.46957 21 3.96086 20.7893 3.58579 20.4142C3.21071 20.0391 3 19.5304 3 19V8C3 7.46957 3.21071 6.96086 3.58579 6.58579C3.96086 6.21071 4.46957 6 5 6H11M15 3H21M21 3V9M21 3L9 15" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/>
557
+ </svg>
558
+ </button>
559
+ <span> (Project Settings → API Keys)</span>
560
+ </div>
561
+ </div>
562
+ </div>
563
+ <div id="api-key-validation" class="validation-feedback hidden">
564
+ <!-- Validation feedback will be shown here -->
565
+ </div>
566
+ </div>
567
+ </div>
568
+ <div class="modal-footer">
569
+ <button type="button" class="form-btn secondary" id="api-key-cancel">Cancel</button>
570
+ <button type="button" class="form-btn primary" id="api-key-confirm">Verify & Save</button>
571
+ </div>
572
+ </div>
573
+ </div>
574
+
575
+ <!-- Tools Management Modal -->
576
+ <div id="tools-management-modal" class="modal hidden">
577
+ <div class="modal-overlay"></div>
578
+ <div class="modal-content tools-modal-content">
579
+ <div class="modal-header">
580
+ <h3 id="tools-modal-title">Manage Tools</h3>
581
+ <button class="modal-close">
582
+ <svg width="16" height="16" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg">
583
+ <path d="M6 6L18 18M6 18L18 6" stroke="currentColor" stroke-width="2" stroke-linecap="round"/>
584
+ </svg>
585
+ </button>
586
+ </div>
587
+ <div class="modal-body">
588
+ <div class="tools-management-content">
589
+ <div class="tools-header">
590
+ <div class="toolkit-info">
591
+ <div id="toolkit-logo" class="toolkit-logo">
592
+ <img src="" alt="" id="toolkit-logo-img">
593
+ </div>
594
+ <div class="toolkit-details">
595
+ <h4 id="toolkit-name">Toolkit Name</h4>
596
+ </div>
597
+ </div>
598
+ </div>
599
+ <div class="tools-list-container">
600
+ <div id="tools-list" class="tools-list">
601
+ <!-- Tools will be populated here -->
602
+ </div>
603
+ <div id="tools-loading" class="loading-state hidden">
604
+ <div class="loading-spinner"></div>
605
+ <div class="loading-text">Loading tools...</div>
606
+ </div>
607
+ </div>
608
+ </div>
609
+ </div>
610
+ <div class="modal-footer">
611
+ <button type="button" class="form-btn secondary" id="tools-cancel">Cancel</button>
612
+ <button type="button" class="form-btn primary" id="tools-save">Save Selection</button>
613
+ </div>
614
+ </div>
615
+ </div>
616
+
617
+ <!-- OAuth Confirmation Modal -->
618
+ <div id="oauth-confirmation-modal" class="modal hidden">
619
+ <div class="modal-overlay"></div>
620
+ <div class="modal-content oauth-modal-content">
621
+ <div class="modal-header">
622
+ <h3>OAuth Authorization Required</h3>
623
+ <button class="modal-close">
624
+ <svg width="16" height="16" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg">
625
+ <path d="M6 6L18 18M6 18L18 6" stroke="currentColor" stroke-width="2" stroke-linecap="round"/>
626
+ </svg>
627
+ </button>
628
+ </div>
629
+ <div class="modal-body">
630
+ <div class="oauth-content">
631
+ <div class="oauth-info">
632
+ <div class="oauth-icon">🔐</div>
633
+ <div class="oauth-text">
634
+ <p>A new browser tab has been opened for OAuth authorization.</p>
635
+ <p>Please complete the authorization process and return here.</p>
636
+ </div>
637
+ </div>
638
+ <div class="oauth-question">
639
+ <p><strong>Have you completed the OAuth authorization?</strong></p>
640
+ </div>
641
+ </div>
642
+ </div>
643
+ <div class="modal-footer">
644
+ <button type="button" class="form-btn secondary" id="oauth-not-completed">Not Yet</button>
645
+ <button type="button" class="form-btn primary" id="oauth-completed">Yes, Completed</button>
646
+ </div>
647
+ </div>
648
+ </div>
649
+
460
650
  <!-- Loading Overlay -->
461
651
  <div id="loading-overlay" class="loading-overlay hidden">
462
652
  <div class="loading-spinner"></div>