vibesurf 0.1.18__tar.gz → 0.1.19__tar.gz

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 (111) hide show
  1. {vibesurf-0.1.18 → vibesurf-0.1.19}/PKG-INFO +2 -2
  2. {vibesurf-0.1.18 → vibesurf-0.1.19}/pyproject.toml +1 -1
  3. {vibesurf-0.1.18 → vibesurf-0.1.19}/vibe_surf/_version.py +3 -3
  4. {vibesurf-0.1.18 → vibesurf-0.1.19}/vibe_surf/chrome_extension/sidepanel.html +17 -0
  5. {vibesurf-0.1.18 → vibesurf-0.1.19}/vibe_surf/chrome_extension/styles/layout.css +55 -0
  6. {vibesurf-0.1.18 → vibesurf-0.1.19}/vibe_surf/tools/file_system.py +8 -0
  7. {vibesurf-0.1.18 → vibesurf-0.1.19}/vibesurf.egg-info/PKG-INFO +2 -2
  8. {vibesurf-0.1.18 → vibesurf-0.1.19}/vibesurf.egg-info/requires.txt +1 -1
  9. {vibesurf-0.1.18 → vibesurf-0.1.19}/.env.example +0 -0
  10. {vibesurf-0.1.18 → vibesurf-0.1.19}/.github/workflows/publish.yml +0 -0
  11. {vibesurf-0.1.18 → vibesurf-0.1.19}/.gitignore +0 -0
  12. {vibesurf-0.1.18 → vibesurf-0.1.19}/.python-version +0 -0
  13. {vibesurf-0.1.18 → vibesurf-0.1.19}/LICENSE +0 -0
  14. {vibesurf-0.1.18 → vibesurf-0.1.19}/MANIFEST.in +0 -0
  15. {vibesurf-0.1.18 → vibesurf-0.1.19}/README.md +0 -0
  16. {vibesurf-0.1.18 → vibesurf-0.1.19}/docs/EXECUTABLE_BUILD.md +0 -0
  17. {vibesurf-0.1.18 → vibesurf-0.1.19}/docs/PYPI_SETUP.md +0 -0
  18. {vibesurf-0.1.18 → vibesurf-0.1.19}/scripts/build-local.bat +0 -0
  19. {vibesurf-0.1.18 → vibesurf-0.1.19}/scripts/build-local.sh +0 -0
  20. {vibesurf-0.1.18 → vibesurf-0.1.19}/setup.cfg +0 -0
  21. {vibesurf-0.1.18 → vibesurf-0.1.19}/tests/test_agents.py +0 -0
  22. {vibesurf-0.1.18 → vibesurf-0.1.19}/tests/test_backend_api.py +0 -0
  23. {vibesurf-0.1.18 → vibesurf-0.1.19}/tests/test_browser.py +0 -0
  24. {vibesurf-0.1.18 → vibesurf-0.1.19}/tests/test_tools.py +0 -0
  25. {vibesurf-0.1.18 → vibesurf-0.1.19}/vibe_surf/__init__.py +0 -0
  26. {vibesurf-0.1.18 → vibesurf-0.1.19}/vibe_surf/agents/__init__.py +0 -0
  27. {vibesurf-0.1.18 → vibesurf-0.1.19}/vibe_surf/agents/browser_use_agent.py +0 -0
  28. {vibesurf-0.1.18 → vibesurf-0.1.19}/vibe_surf/agents/prompts/__init__.py +0 -0
  29. {vibesurf-0.1.18 → vibesurf-0.1.19}/vibe_surf/agents/prompts/report_writer_prompt.py +0 -0
  30. {vibesurf-0.1.18 → vibesurf-0.1.19}/vibe_surf/agents/prompts/vibe_surf_prompt.py +0 -0
  31. {vibesurf-0.1.18 → vibesurf-0.1.19}/vibe_surf/agents/report_writer_agent.py +0 -0
  32. {vibesurf-0.1.18 → vibesurf-0.1.19}/vibe_surf/agents/vibe_surf_agent.py +0 -0
  33. {vibesurf-0.1.18 → vibesurf-0.1.19}/vibe_surf/agents/views.py +0 -0
  34. {vibesurf-0.1.18 → vibesurf-0.1.19}/vibe_surf/backend/__init__.py +0 -0
  35. {vibesurf-0.1.18 → vibesurf-0.1.19}/vibe_surf/backend/api/__init__.py +0 -0
  36. {vibesurf-0.1.18 → vibesurf-0.1.19}/vibe_surf/backend/api/activity.py +0 -0
  37. {vibesurf-0.1.18 → vibesurf-0.1.19}/vibe_surf/backend/api/browser.py +0 -0
  38. {vibesurf-0.1.18 → vibesurf-0.1.19}/vibe_surf/backend/api/config.py +0 -0
  39. {vibesurf-0.1.18 → vibesurf-0.1.19}/vibe_surf/backend/api/files.py +0 -0
  40. {vibesurf-0.1.18 → vibesurf-0.1.19}/vibe_surf/backend/api/models.py +0 -0
  41. {vibesurf-0.1.18 → vibesurf-0.1.19}/vibe_surf/backend/api/task.py +0 -0
  42. {vibesurf-0.1.18 → vibesurf-0.1.19}/vibe_surf/backend/database/__init__.py +0 -0
  43. {vibesurf-0.1.18 → vibesurf-0.1.19}/vibe_surf/backend/database/manager.py +0 -0
  44. {vibesurf-0.1.18 → vibesurf-0.1.19}/vibe_surf/backend/database/migrations/v001_initial_schema.sql +0 -0
  45. {vibesurf-0.1.18 → vibesurf-0.1.19}/vibe_surf/backend/database/migrations/v002_add_agent_mode.sql +0 -0
  46. {vibesurf-0.1.18 → vibesurf-0.1.19}/vibe_surf/backend/database/models.py +0 -0
  47. {vibesurf-0.1.18 → vibesurf-0.1.19}/vibe_surf/backend/database/queries.py +0 -0
  48. {vibesurf-0.1.18 → vibesurf-0.1.19}/vibe_surf/backend/database/schemas.py +0 -0
  49. {vibesurf-0.1.18 → vibesurf-0.1.19}/vibe_surf/backend/llm_config.py +0 -0
  50. {vibesurf-0.1.18 → vibesurf-0.1.19}/vibe_surf/backend/main.py +0 -0
  51. {vibesurf-0.1.18 → vibesurf-0.1.19}/vibe_surf/backend/shared_state.py +0 -0
  52. {vibesurf-0.1.18 → vibesurf-0.1.19}/vibe_surf/backend/utils/__init__.py +0 -0
  53. {vibesurf-0.1.18 → vibesurf-0.1.19}/vibe_surf/backend/utils/encryption.py +0 -0
  54. {vibesurf-0.1.18 → vibesurf-0.1.19}/vibe_surf/backend/utils/llm_factory.py +0 -0
  55. {vibesurf-0.1.18 → vibesurf-0.1.19}/vibe_surf/browser/__init__.py +0 -0
  56. {vibesurf-0.1.18 → vibesurf-0.1.19}/vibe_surf/browser/agen_browser_profile.py +0 -0
  57. {vibesurf-0.1.18 → vibesurf-0.1.19}/vibe_surf/browser/agent_browser_session.py +0 -0
  58. {vibesurf-0.1.18 → vibesurf-0.1.19}/vibe_surf/browser/browser_manager.py +0 -0
  59. {vibesurf-0.1.18 → vibesurf-0.1.19}/vibe_surf/browser/utils.py +0 -0
  60. {vibesurf-0.1.18 → vibesurf-0.1.19}/vibe_surf/browser/watchdogs/__init__.py +0 -0
  61. {vibesurf-0.1.18 → vibesurf-0.1.19}/vibe_surf/browser/watchdogs/action_watchdog.py +0 -0
  62. {vibesurf-0.1.18 → vibesurf-0.1.19}/vibe_surf/browser/watchdogs/dom_watchdog.py +0 -0
  63. {vibesurf-0.1.18 → vibesurf-0.1.19}/vibe_surf/chrome_extension/background.js +0 -0
  64. {vibesurf-0.1.18 → vibesurf-0.1.19}/vibe_surf/chrome_extension/config.js +0 -0
  65. {vibesurf-0.1.18 → vibesurf-0.1.19}/vibe_surf/chrome_extension/content.js +0 -0
  66. {vibesurf-0.1.18 → vibesurf-0.1.19}/vibe_surf/chrome_extension/dev-reload.js +0 -0
  67. {vibesurf-0.1.18 → vibesurf-0.1.19}/vibe_surf/chrome_extension/icons/convert-svg.js +0 -0
  68. {vibesurf-0.1.18 → vibesurf-0.1.19}/vibe_surf/chrome_extension/icons/logo-preview.html +0 -0
  69. {vibesurf-0.1.18 → vibesurf-0.1.19}/vibe_surf/chrome_extension/icons/logo.icns +0 -0
  70. {vibesurf-0.1.18 → vibesurf-0.1.19}/vibe_surf/chrome_extension/icons/logo.png +0 -0
  71. {vibesurf-0.1.18 → vibesurf-0.1.19}/vibe_surf/chrome_extension/manifest.json +0 -0
  72. {vibesurf-0.1.18 → vibesurf-0.1.19}/vibe_surf/chrome_extension/popup.html +0 -0
  73. {vibesurf-0.1.18 → vibesurf-0.1.19}/vibe_surf/chrome_extension/scripts/api-client.js +0 -0
  74. {vibesurf-0.1.18 → vibesurf-0.1.19}/vibe_surf/chrome_extension/scripts/file-manager.js +0 -0
  75. {vibesurf-0.1.18 → vibesurf-0.1.19}/vibe_surf/chrome_extension/scripts/history-manager.js +0 -0
  76. {vibesurf-0.1.18 → vibesurf-0.1.19}/vibe_surf/chrome_extension/scripts/main.js +0 -0
  77. {vibesurf-0.1.18 → vibesurf-0.1.19}/vibe_surf/chrome_extension/scripts/markdown-it.min.js +0 -0
  78. {vibesurf-0.1.18 → vibesurf-0.1.19}/vibe_surf/chrome_extension/scripts/modal-manager.js +0 -0
  79. {vibesurf-0.1.18 → vibesurf-0.1.19}/vibe_surf/chrome_extension/scripts/session-manager.js +0 -0
  80. {vibesurf-0.1.18 → vibesurf-0.1.19}/vibe_surf/chrome_extension/scripts/settings-manager.js +0 -0
  81. {vibesurf-0.1.18 → vibesurf-0.1.19}/vibe_surf/chrome_extension/scripts/ui-manager.js +0 -0
  82. {vibesurf-0.1.18 → vibesurf-0.1.19}/vibe_surf/chrome_extension/styles/activity.css +0 -0
  83. {vibesurf-0.1.18 → vibesurf-0.1.19}/vibe_surf/chrome_extension/styles/animations.css +0 -0
  84. {vibesurf-0.1.18 → vibesurf-0.1.19}/vibe_surf/chrome_extension/styles/base.css +0 -0
  85. {vibesurf-0.1.18 → vibesurf-0.1.19}/vibe_surf/chrome_extension/styles/components.css +0 -0
  86. {vibesurf-0.1.18 → vibesurf-0.1.19}/vibe_surf/chrome_extension/styles/history-modal.css +0 -0
  87. {vibesurf-0.1.18 → vibesurf-0.1.19}/vibe_surf/chrome_extension/styles/input.css +0 -0
  88. {vibesurf-0.1.18 → vibesurf-0.1.19}/vibe_surf/chrome_extension/styles/responsive.css +0 -0
  89. {vibesurf-0.1.18 → vibesurf-0.1.19}/vibe_surf/chrome_extension/styles/settings-environment.css +0 -0
  90. {vibesurf-0.1.18 → vibesurf-0.1.19}/vibe_surf/chrome_extension/styles/settings-forms.css +0 -0
  91. {vibesurf-0.1.18 → vibesurf-0.1.19}/vibe_surf/chrome_extension/styles/settings-modal.css +0 -0
  92. {vibesurf-0.1.18 → vibesurf-0.1.19}/vibe_surf/chrome_extension/styles/settings-profiles.css +0 -0
  93. {vibesurf-0.1.18 → vibesurf-0.1.19}/vibe_surf/chrome_extension/styles/settings-responsive.css +0 -0
  94. {vibesurf-0.1.18 → vibesurf-0.1.19}/vibe_surf/chrome_extension/styles/settings-utilities.css +0 -0
  95. {vibesurf-0.1.18 → vibesurf-0.1.19}/vibe_surf/chrome_extension/styles/variables.css +0 -0
  96. {vibesurf-0.1.18 → vibesurf-0.1.19}/vibe_surf/cli.py +0 -0
  97. {vibesurf-0.1.18 → vibesurf-0.1.19}/vibe_surf/common.py +0 -0
  98. {vibesurf-0.1.18 → vibesurf-0.1.19}/vibe_surf/llm/__init__.py +0 -0
  99. {vibesurf-0.1.18 → vibesurf-0.1.19}/vibe_surf/llm/openai_compatible.py +0 -0
  100. {vibesurf-0.1.18 → vibesurf-0.1.19}/vibe_surf/logger.py +0 -0
  101. {vibesurf-0.1.18 → vibesurf-0.1.19}/vibe_surf/tools/__init__.py +0 -0
  102. {vibesurf-0.1.18 → vibesurf-0.1.19}/vibe_surf/tools/browser_use_tools.py +0 -0
  103. {vibesurf-0.1.18 → vibesurf-0.1.19}/vibe_surf/tools/mcp_client.py +0 -0
  104. {vibesurf-0.1.18 → vibesurf-0.1.19}/vibe_surf/tools/report_writer_tools.py +0 -0
  105. {vibesurf-0.1.18 → vibesurf-0.1.19}/vibe_surf/tools/vibesurf_tools.py +0 -0
  106. {vibesurf-0.1.18 → vibesurf-0.1.19}/vibe_surf/tools/views.py +0 -0
  107. {vibesurf-0.1.18 → vibesurf-0.1.19}/vibesurf.egg-info/SOURCES.txt +0 -0
  108. {vibesurf-0.1.18 → vibesurf-0.1.19}/vibesurf.egg-info/dependency_links.txt +0 -0
  109. {vibesurf-0.1.18 → vibesurf-0.1.19}/vibesurf.egg-info/entry_points.txt +0 -0
  110. {vibesurf-0.1.18 → vibesurf-0.1.19}/vibesurf.egg-info/top_level.txt +0 -0
  111. {vibesurf-0.1.18 → vibesurf-0.1.19}/vibesurf.spec +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: vibesurf
3
- Version: 0.1.18
3
+ Version: 0.1.19
4
4
  Summary: VibeSurf: A powerful browser assistant for vibe surfing
5
5
  Author: Shao Warm
6
6
  License: Apache-2.0
@@ -37,7 +37,7 @@ Requires-Dist: aiosqlite>=0.21.0
37
37
  Requires-Dist: rich>=13.0.0
38
38
  Requires-Dist: greenlet>=3.2.4
39
39
  Requires-Dist: getmac>=0.9.5
40
- Requires-Dist: browser-use==0.7.7
40
+ Requires-Dist: browser-use==0.7.8
41
41
  Requires-Dist: markdown-pdf>=1.9
42
42
  Requires-Dist: nanoid>=2.0.0
43
43
  Requires-Dist: markdownify>=1.2.0
@@ -38,7 +38,7 @@ dependencies = [
38
38
  "rich>=13.0.0",
39
39
  "greenlet>=3.2.4",
40
40
  "getmac>=0.9.5",
41
- "browser-use==0.7.7",
41
+ "browser-use==0.7.8",
42
42
  "markdown-pdf>=1.9",
43
43
  "nanoid>=2.0.0",
44
44
  "markdownify>=1.2.0",
@@ -28,7 +28,7 @@ version_tuple: VERSION_TUPLE
28
28
  commit_id: COMMIT_ID
29
29
  __commit_id__: COMMIT_ID
30
30
 
31
- __version__ = version = '0.1.18'
32
- __version_tuple__ = version_tuple = (0, 1, 18)
31
+ __version__ = version = '0.1.19'
32
+ __version_tuple__ = version_tuple = (0, 1, 19)
33
33
 
34
- __commit_id__ = commit_id = 'g51b12c120'
34
+ __commit_id__ = commit_id = 'g8114c4119'
@@ -36,6 +36,23 @@
36
36
  <div class="logo-brand">
37
37
  <img src="icons/logo.png" alt="VibeSurf" class="logo-image">
38
38
  <span class="logo-text">VibeSurf</span>
39
+ <div class="social-links">
40
+ <a href="https://github.com/vvincent1234/VibeSurf" class="social-link" title="GitHub" data-platform="github" target="_blank" rel="noopener noreferrer">
41
+ <svg width="16" height="16" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg">
42
+ <path d="M12 0C5.374 0 0 5.373 0 12c0 5.302 3.438 9.8 8.207 11.387.599.111.793-.261.793-.577v-2.234c-3.338.726-4.033-1.416-4.033-1.416-.546-1.387-1.333-1.756-1.333-1.756-1.089-.745.083-.729.083-.729 1.205.084 1.839 1.237 1.839 1.237 1.07 1.834 2.807 1.304 3.492.997.107-.775.418-1.305.762-1.604-2.665-.305-5.467-1.334-5.467-5.931 0-1.311.469-2.381 1.236-3.221-.124-.303-.535-1.524.117-3.176 0 0 1.008-.322 3.301 1.23A11.509 11.509 0 0112 5.803c1.02.005 2.047.138 3.006.404 2.291-1.552 3.297-1.23 3.297-1.23.653 1.653.242 2.874.118 3.176.77.84 1.235 1.911 1.235 3.221 0 4.609-2.807 5.624-5.479 5.921.43.372.823 1.102.823 2.222v3.293c0 .319.192.694.801.576C20.566 21.797 24 17.3 24 12c0-6.627-5.373-12-12-12z" fill="currentColor"/>
43
+ </svg>
44
+ </a>
45
+ <a href="https://discord.gg/WSeRwW2M" class="social-link" title="Discord" data-platform="discord" target="_blank" rel="noopener noreferrer">
46
+ <svg width="16" height="16" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg">
47
+ <path d="M20.317 4.37a19.791 19.791 0 00-4.885-1.515.074.074 0 00-.079.037c-.21.375-.444.864-.608 1.25a18.27 18.27 0 00-5.487 0 12.64 12.64 0 00-.617-1.25.077.077 0 00-.079-.037A19.736 19.736 0 003.677 4.37a.07.07 0 00-.032.027C.533 9.046-.32 13.58.099 18.057a.082.082 0 00.031.057 19.9 19.9 0 005.993 3.03.078.078 0 00.084-.028c.462-.63.874-1.295 1.226-1.994a.076.076 0 00-.041-.106 13.107 13.107 0 01-1.872-.892.077.077 0 01-.008-.128 10.2 10.2 0 00.372-.292.074.074 0 01.077-.01c3.928 1.793 8.18 1.793 12.062 0a.074.074 0 01.078.01c.12.098.246.198.373.292a.077.077 0 01-.006.127 12.299 12.299 0 01-1.873.892.077.077 0 00-.041.107c.36.698.772 1.362 1.225 1.993a.076.076 0 00.084.028 19.839 19.839 0 006.002-3.03.077.077 0 00.032-.054c.5-5.177-.838-9.674-3.549-13.66a.061.061 0 00-.031-.03zM8.02 15.33c-1.183 0-2.157-1.085-2.157-2.419 0-1.333.956-2.419 2.157-2.419 1.21 0 2.176 1.096 2.157 2.42 0 1.333-.956 2.418-2.157 2.418zm7.975 0c-1.183 0-2.157-1.085-2.157-2.419 0-1.333.955-2.419 2.157-2.419 1.21 0 2.176 1.096 2.157 2.42 0 1.333-.946 2.418-2.157 2.418z" fill="currentColor"/>
48
+ </svg>
49
+ </a>
50
+ <a href="https://x.com/warmshao" class="social-link" title="X (Twitter)" data-platform="x" target="_blank" rel="noopener noreferrer">
51
+ <svg width="16" height="16" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg">
52
+ <path d="M18.244 2.25h3.308l-7.227 8.26 8.502 11.24H16.17l-5.214-6.817L4.99 21.75H1.68l7.73-8.835L1.254 2.25H8.08l4.713 6.231zm-1.161 17.52h1.833L7.084 4.126H5.117z" fill="currentColor"/>
53
+ </svg>
54
+ </a>
55
+ </div>
39
56
  </div>
40
57
  <div class="session-info">
41
58
  <span class="session-label">Session:</span>
@@ -43,6 +43,61 @@
43
43
  font-weight: var(--font-weight-semibold);
44
44
  }
45
45
 
46
+ /* Social Links */
47
+ .social-links {
48
+ display: flex;
49
+ align-items: center;
50
+ gap: var(--spacing-xs);
51
+ margin-left: var(--spacing-sm);
52
+ }
53
+
54
+ .social-link {
55
+ display: flex;
56
+ align-items: center;
57
+ justify-content: center;
58
+ width: 20px;
59
+ height: 20px;
60
+ border-radius: var(--radius-sm);
61
+ color: var(--text-muted);
62
+ text-decoration: none;
63
+ transition: all var(--transition-fast);
64
+ opacity: 0.7;
65
+ }
66
+
67
+ .social-link:hover {
68
+ color: var(--text-secondary);
69
+ background-color: var(--bg-hover);
70
+ opacity: 1;
71
+ transform: scale(1.1);
72
+ }
73
+
74
+ .social-link:active {
75
+ transform: scale(0.95);
76
+ }
77
+
78
+ .social-link[data-platform="github"]:hover {
79
+ color: #333;
80
+ }
81
+
82
+ .social-link[data-platform="discord"]:hover {
83
+ color: #5865F2;
84
+ }
85
+
86
+ .social-link[data-platform="x"]:hover {
87
+ color: #000;
88
+ }
89
+
90
+ /* Dark mode adjustments for social links */
91
+ @media (prefers-color-scheme: dark) {
92
+ .social-link[data-platform="github"]:hover {
93
+ color: #f0f6fc;
94
+ }
95
+
96
+ .social-link[data-platform="x"]:hover {
97
+ color: #fff;
98
+ }
99
+ }
100
+
46
101
  .logo-image {
47
102
  width: 24px;
48
103
  height: 24px;
@@ -311,6 +311,14 @@ class CustomFileSystem(FileSystem):
311
311
  except Exception as e:
312
312
  return f"Error: Could not write to file '{full_filename}'. {str(e)}"
313
313
 
314
+ async def save_extracted_content(self, content: str) -> str:
315
+ """Save extracted content to a numbered file"""
316
+ initial_filename = f'extracted_content_{self.extracted_content_count}'
317
+ extracted_filename = f'{initial_filename}.md'
318
+ await self.write_file(initial_filename, content)
319
+ self.extracted_content_count += 1
320
+ return f'Extracted content saved to file {extracted_filename} successfully.'
321
+
314
322
  async def list_directory(self, directory_path: str = "") -> str:
315
323
  """List contents of a directory within the file system (data_dir only)"""
316
324
  try:
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: vibesurf
3
- Version: 0.1.18
3
+ Version: 0.1.19
4
4
  Summary: VibeSurf: A powerful browser assistant for vibe surfing
5
5
  Author: Shao Warm
6
6
  License: Apache-2.0
@@ -37,7 +37,7 @@ Requires-Dist: aiosqlite>=0.21.0
37
37
  Requires-Dist: rich>=13.0.0
38
38
  Requires-Dist: greenlet>=3.2.4
39
39
  Requires-Dist: getmac>=0.9.5
40
- Requires-Dist: browser-use==0.7.7
40
+ Requires-Dist: browser-use==0.7.8
41
41
  Requires-Dist: markdown-pdf>=1.9
42
42
  Requires-Dist: nanoid>=2.0.0
43
43
  Requires-Dist: markdownify>=1.2.0
@@ -19,7 +19,7 @@ aiosqlite>=0.21.0
19
19
  rich>=13.0.0
20
20
  greenlet>=3.2.4
21
21
  getmac>=0.9.5
22
- browser-use==0.7.7
22
+ browser-use==0.7.8
23
23
  markdown-pdf>=1.9
24
24
  nanoid>=2.0.0
25
25
  markdownify>=1.2.0
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes