reverse-api-engineer 0.3.1__tar.gz → 0.3.2__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.
Files changed (118) hide show
  1. {reverse_api_engineer-0.3.1 → reverse_api_engineer-0.3.2}/CHANGELOG.md +13 -0
  2. {reverse_api_engineer-0.3.1 → reverse_api_engineer-0.3.2}/PKG-INFO +12 -8
  3. {reverse_api_engineer-0.3.1 → reverse_api_engineer-0.3.2}/README.md +11 -7
  4. reverse_api_engineer-0.3.2/assets/reverse-api-banner.svg +84 -0
  5. {reverse_api_engineer-0.3.1 → reverse_api_engineer-0.3.2}/pyproject.toml +1 -1
  6. {reverse_api_engineer-0.3.1 → reverse_api_engineer-0.3.2}/src/reverse_api/cli.py +6 -0
  7. {reverse_api_engineer-0.3.1 → reverse_api_engineer-0.3.2}/src/reverse_api/utils.py +24 -0
  8. reverse_api_engineer-0.3.1/assets/reverse-api-banner.svg +0 -87
  9. {reverse_api_engineer-0.3.1 → reverse_api_engineer-0.3.2}/.claude/settings.local.json +0 -0
  10. {reverse_api_engineer-0.3.1 → reverse_api_engineer-0.3.2}/.claude-plugin/marketplace.json +0 -0
  11. {reverse_api_engineer-0.3.1 → reverse_api_engineer-0.3.2}/.gitignore +0 -0
  12. {reverse_api_engineer-0.3.1 → reverse_api_engineer-0.3.2}/.python-version +0 -0
  13. {reverse_api_engineer-0.3.1 → reverse_api_engineer-0.3.2}/CLAUDE.md +0 -0
  14. {reverse_api_engineer-0.3.1 → reverse_api_engineer-0.3.2}/CONTRIBUTING.md +0 -0
  15. {reverse_api_engineer-0.3.1 → reverse_api_engineer-0.3.2}/INTERVIEW.md +0 -0
  16. {reverse_api_engineer-0.3.1 → reverse_api_engineer-0.3.2}/LICENSE +0 -0
  17. {reverse_api_engineer-0.3.1 → reverse_api_engineer-0.3.2}/RELEASING.md +0 -0
  18. {reverse_api_engineer-0.3.1 → reverse_api_engineer-0.3.2}/TEST_UI_README.md +0 -0
  19. {reverse_api_engineer-0.3.1 → reverse_api_engineer-0.3.2}/assets/reverse-api-engineer.gif +0 -0
  20. {reverse_api_engineer-0.3.1 → reverse_api_engineer-0.3.2}/assets/reverse-api-logo.svg +0 -0
  21. {reverse_api_engineer-0.3.1 → reverse_api_engineer-0.3.2}/chrome-extension/.claude/settings.local.json +0 -0
  22. {reverse_api_engineer-0.3.1 → reverse_api_engineer-0.3.2}/chrome-extension/package-lock.json +0 -0
  23. {reverse_api_engineer-0.3.1 → reverse_api_engineer-0.3.2}/chrome-extension/package.json +0 -0
  24. {reverse_api_engineer-0.3.1 → reverse_api_engineer-0.3.2}/chrome-extension/postcss.config.js +0 -0
  25. {reverse_api_engineer-0.3.1 → reverse_api_engineer-0.3.2}/chrome-extension/public/_locales/en/messages.json +0 -0
  26. {reverse_api_engineer-0.3.1 → reverse_api_engineer-0.3.2}/chrome-extension/public/icons/icon-128.png +0 -0
  27. {reverse_api_engineer-0.3.1 → reverse_api_engineer-0.3.2}/chrome-extension/public/icons/icon-16.png +0 -0
  28. {reverse_api_engineer-0.3.1 → reverse_api_engineer-0.3.2}/chrome-extension/public/icons/icon-32.png +0 -0
  29. {reverse_api_engineer-0.3.1 → reverse_api_engineer-0.3.2}/chrome-extension/public/icons/icon-48.png +0 -0
  30. {reverse_api_engineer-0.3.1 → reverse_api_engineer-0.3.2}/chrome-extension/public/manifest.json +0 -0
  31. {reverse_api_engineer-0.3.1 → reverse_api_engineer-0.3.2}/chrome-extension/src/background/service-worker.ts +0 -0
  32. {reverse_api_engineer-0.3.1 → reverse_api_engineer-0.3.2}/chrome-extension/src/components/agent-action.tsx +0 -0
  33. {reverse_api_engineer-0.3.1 → reverse_api_engineer-0.3.2}/chrome-extension/src/components/chat-input.tsx +0 -0
  34. {reverse_api_engineer-0.3.1 → reverse_api_engineer-0.3.2}/chrome-extension/src/components/markdown-renderer.tsx +0 -0
  35. {reverse_api_engineer-0.3.1 → reverse_api_engineer-0.3.2}/chrome-extension/src/components/plan.tsx +0 -0
  36. {reverse_api_engineer-0.3.1 → reverse_api_engineer-0.3.2}/chrome-extension/src/components/terminal.tsx +0 -0
  37. {reverse_api_engineer-0.3.1 → reverse_api_engineer-0.3.2}/chrome-extension/src/index.css +0 -0
  38. {reverse_api_engineer-0.3.1 → reverse_api_engineer-0.3.2}/chrome-extension/src/shared/capture.ts +0 -0
  39. {reverse_api_engineer-0.3.1 → reverse_api_engineer-0.3.2}/chrome-extension/src/shared/native-host.ts +0 -0
  40. {reverse_api_engineer-0.3.1 → reverse_api_engineer-0.3.2}/chrome-extension/src/shared/storage.ts +0 -0
  41. {reverse_api_engineer-0.3.1 → reverse_api_engineer-0.3.2}/chrome-extension/src/shared/types.ts +0 -0
  42. {reverse_api_engineer-0.3.1 → reverse_api_engineer-0.3.2}/chrome-extension/src/sidepanel/index.html +0 -0
  43. {reverse_api_engineer-0.3.1 → reverse_api_engineer-0.3.2}/chrome-extension/src/sidepanel/main.tsx +0 -0
  44. {reverse_api_engineer-0.3.1 → reverse_api_engineer-0.3.2}/chrome-extension/src/sidepanel/side-panel.tsx +0 -0
  45. {reverse_api_engineer-0.3.1 → reverse_api_engineer-0.3.2}/chrome-extension/src/vite-env.d.ts +0 -0
  46. {reverse_api_engineer-0.3.1 → reverse_api_engineer-0.3.2}/chrome-extension/tailwind.config.js +0 -0
  47. {reverse_api_engineer-0.3.1 → reverse_api_engineer-0.3.2}/chrome-extension/tsconfig.json +0 -0
  48. {reverse_api_engineer-0.3.1 → reverse_api_engineer-0.3.2}/chrome-extension/vite.config.ts +0 -0
  49. {reverse_api_engineer-0.3.1 → reverse_api_engineer-0.3.2}/examples/apple/INDEX.md +0 -0
  50. {reverse_api_engineer-0.3.1 → reverse_api_engineer-0.3.2}/examples/apple/QUICKSTART.md +0 -0
  51. {reverse_api_engineer-0.3.1 → reverse_api_engineer-0.3.2}/examples/apple/README.md +0 -0
  52. {reverse_api_engineer-0.3.1 → reverse_api_engineer-0.3.2}/examples/apple/SUMMARY.md +0 -0
  53. {reverse_api_engineer-0.3.1 → reverse_api_engineer-0.3.2}/examples/apple/api_client.py +0 -0
  54. {reverse_api_engineer-0.3.1 → reverse_api_engineer-0.3.2}/examples/apple/extract_job_fields.py +0 -0
  55. {reverse_api_engineer-0.3.1 → reverse_api_engineer-0.3.2}/examples/apple/main.py +0 -0
  56. {reverse_api_engineer-0.3.1 → reverse_api_engineer-0.3.2}/examples/apple/quick_example.py +0 -0
  57. {reverse_api_engineer-0.3.1 → reverse_api_engineer-0.3.2}/examples/apple/requirements.txt +0 -0
  58. {reverse_api_engineer-0.3.1 → reverse_api_engineer-0.3.2}/examples/ashby/API_SUMMARY.txt +0 -0
  59. {reverse_api_engineer-0.3.1 → reverse_api_engineer-0.3.2}/examples/ashby/QUICKSTART.md +0 -0
  60. {reverse_api_engineer-0.3.1 → reverse_api_engineer-0.3.2}/examples/ashby/README.md +0 -0
  61. {reverse_api_engineer-0.3.1 → reverse_api_engineer-0.3.2}/examples/ashby/api_client.py +0 -0
  62. {reverse_api_engineer-0.3.1 → reverse_api_engineer-0.3.2}/examples/ashby/example_usage.py +0 -0
  63. {reverse_api_engineer-0.3.1 → reverse_api_engineer-0.3.2}/examples/ashby/requirements.txt +0 -0
  64. {reverse_api_engineer-0.3.1 → reverse_api_engineer-0.3.2}/examples/autoscout24/README.md +0 -0
  65. {reverse_api_engineer-0.3.1 → reverse_api_engineer-0.3.2}/examples/autoscout24/SUMMARY.md +0 -0
  66. {reverse_api_engineer-0.3.1 → reverse_api_engineer-0.3.2}/examples/autoscout24/api_client.py +0 -0
  67. {reverse_api_engineer-0.3.1 → reverse_api_engineer-0.3.2}/examples/ikea/README.md +0 -0
  68. {reverse_api_engineer-0.3.1 → reverse_api_engineer-0.3.2}/examples/ikea/api_client.py +0 -0
  69. {reverse_api_engineer-0.3.1 → reverse_api_engineer-0.3.2}/examples/uber/API_ANALYSIS_SUMMARY.md +0 -0
  70. {reverse_api_engineer-0.3.1 → reverse_api_engineer-0.3.2}/examples/uber/README.md +0 -0
  71. {reverse_api_engineer-0.3.1 → reverse_api_engineer-0.3.2}/examples/uber/api_client.py +0 -0
  72. {reverse_api_engineer-0.3.1 → reverse_api_engineer-0.3.2}/examples/uber/example_fetch_all_jobs.py +0 -0
  73. {reverse_api_engineer-0.3.1 → reverse_api_engineer-0.3.2}/examples/uber/quick_start.py +0 -0
  74. {reverse_api_engineer-0.3.1 → reverse_api_engineer-0.3.2}/examples/uber/requirements.txt +0 -0
  75. {reverse_api_engineer-0.3.1 → reverse_api_engineer-0.3.2}/llm-docs/OPENCODE_API_SUMMARY.md +0 -0
  76. {reverse_api_engineer-0.3.1 → reverse_api_engineer-0.3.2}/llm-docs/claude-agent-sdk/QUICKSTART.md +0 -0
  77. {reverse_api_engineer-0.3.1 → reverse_api_engineer-0.3.2}/llm-docs/claude-agent-sdk/TODO_LIST.md +0 -0
  78. {reverse_api_engineer-0.3.1 → reverse_api_engineer-0.3.2}/llm-docs/claude-agent-sdk/TOOLS.md +0 -0
  79. {reverse_api_engineer-0.3.1 → reverse_api_engineer-0.3.2}/llm-docs/opencode-api.json +0 -0
  80. {reverse_api_engineer-0.3.1 → reverse_api_engineer-0.3.2}/plugins/reverse-api-engineer/.claude-plugin/plugin.json +0 -0
  81. {reverse_api_engineer-0.3.1 → reverse_api_engineer-0.3.2}/plugins/reverse-api-engineer/CHANGELOG.md +0 -0
  82. {reverse_api_engineer-0.3.1 → reverse_api_engineer-0.3.2}/plugins/reverse-api-engineer/LICENSE +0 -0
  83. {reverse_api_engineer-0.3.1 → reverse_api_engineer-0.3.2}/plugins/reverse-api-engineer/README.md +0 -0
  84. {reverse_api_engineer-0.3.1 → reverse_api_engineer-0.3.2}/plugins/reverse-api-engineer/agents/api-reverse-engineer.md +0 -0
  85. {reverse_api_engineer-0.3.1 → reverse_api_engineer-0.3.2}/plugins/reverse-api-engineer/commands/agent.md +0 -0
  86. {reverse_api_engineer-0.3.1 → reverse_api_engineer-0.3.2}/plugins/reverse-api-engineer/commands/capture.md +0 -0
  87. {reverse_api_engineer-0.3.1 → reverse_api_engineer-0.3.2}/plugins/reverse-api-engineer/commands/engineer.md +0 -0
  88. {reverse_api_engineer-0.3.1 → reverse_api_engineer-0.3.2}/plugins/reverse-api-engineer/commands/manual.md +0 -0
  89. {reverse_api_engineer-0.3.1 → reverse_api_engineer-0.3.2}/plugins/reverse-api-engineer/skills/reverse-engineering-api/CHANGELOG.md +0 -0
  90. {reverse_api_engineer-0.3.1 → reverse_api_engineer-0.3.2}/plugins/reverse-api-engineer/skills/reverse-engineering-api/LICENSE +0 -0
  91. {reverse_api_engineer-0.3.1 → reverse_api_engineer-0.3.2}/plugins/reverse-api-engineer/skills/reverse-engineering-api/SKILL.md +0 -0
  92. {reverse_api_engineer-0.3.1 → reverse_api_engineer-0.3.2}/plugins/reverse-api-engineer/skills/reverse-engineering-api/references/AUTH_PATTERNS.md +0 -0
  93. {reverse_api_engineer-0.3.1 → reverse_api_engineer-0.3.2}/plugins/reverse-api-engineer/skills/reverse-engineering-api/references/HAR_ANALYSIS.md +0 -0
  94. {reverse_api_engineer-0.3.1 → reverse_api_engineer-0.3.2}/plugins/reverse-api-engineer/skills/reverse-engineering-api/scripts/har_analyze.py +0 -0
  95. {reverse_api_engineer-0.3.1 → reverse_api_engineer-0.3.2}/plugins/reverse-api-engineer/skills/reverse-engineering-api/scripts/har_filter.py +0 -0
  96. {reverse_api_engineer-0.3.1 → reverse_api_engineer-0.3.2}/plugins/reverse-api-engineer/skills/reverse-engineering-api/scripts/har_utils.py +0 -0
  97. {reverse_api_engineer-0.3.1 → reverse_api_engineer-0.3.2}/plugins/reverse-api-engineer/skills/reverse-engineering-api/scripts/har_validate.py +0 -0
  98. {reverse_api_engineer-0.3.1 → reverse_api_engineer-0.3.2}/plugins/reverse-api-engineer/skills/reverse-engineering-api/templates/api_client.py +0 -0
  99. {reverse_api_engineer-0.3.1 → reverse_api_engineer-0.3.2}/scripts/clean_build.sh +0 -0
  100. {reverse_api_engineer-0.3.1 → reverse_api_engineer-0.3.2}/src/reverse_api/__init__.py +0 -0
  101. {reverse_api_engineer-0.3.1 → reverse_api_engineer-0.3.2}/src/reverse_api/action_recorder.py +0 -0
  102. {reverse_api_engineer-0.3.1 → reverse_api_engineer-0.3.2}/src/reverse_api/auto_engineer.py +0 -0
  103. {reverse_api_engineer-0.3.1 → reverse_api_engineer-0.3.2}/src/reverse_api/base_engineer.py +0 -0
  104. {reverse_api_engineer-0.3.1 → reverse_api_engineer-0.3.2}/src/reverse_api/browser.py +0 -0
  105. {reverse_api_engineer-0.3.1 → reverse_api_engineer-0.3.2}/src/reverse_api/collector.py +0 -0
  106. {reverse_api_engineer-0.3.1 → reverse_api_engineer-0.3.2}/src/reverse_api/collector_ui.py +0 -0
  107. {reverse_api_engineer-0.3.1 → reverse_api_engineer-0.3.2}/src/reverse_api/config.py +0 -0
  108. {reverse_api_engineer-0.3.1 → reverse_api_engineer-0.3.2}/src/reverse_api/engineer.py +0 -0
  109. {reverse_api_engineer-0.3.1 → reverse_api_engineer-0.3.2}/src/reverse_api/messages.py +0 -0
  110. {reverse_api_engineer-0.3.1 → reverse_api_engineer-0.3.2}/src/reverse_api/native_host.py +0 -0
  111. {reverse_api_engineer-0.3.1 → reverse_api_engineer-0.3.2}/src/reverse_api/opencode_engineer.py +0 -0
  112. {reverse_api_engineer-0.3.1 → reverse_api_engineer-0.3.2}/src/reverse_api/opencode_ui.py +0 -0
  113. {reverse_api_engineer-0.3.1 → reverse_api_engineer-0.3.2}/src/reverse_api/playwright_codegen.py +0 -0
  114. {reverse_api_engineer-0.3.1 → reverse_api_engineer-0.3.2}/src/reverse_api/pricing.py +0 -0
  115. {reverse_api_engineer-0.3.1 → reverse_api_engineer-0.3.2}/src/reverse_api/session.py +0 -0
  116. {reverse_api_engineer-0.3.1 → reverse_api_engineer-0.3.2}/src/reverse_api/sync.py +0 -0
  117. {reverse_api_engineer-0.3.1 → reverse_api_engineer-0.3.2}/src/reverse_api/tui.py +0 -0
  118. {reverse_api_engineer-0.3.1 → reverse_api_engineer-0.3.2}/uv.lock +0 -0
@@ -5,6 +5,19 @@ All notable changes to this project will be documented in this file.
5
5
  The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
6
6
  and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
7
7
 
8
+ ## [0.3.2] - 2026-01-15
9
+
10
+ ### Added
11
+ - **Update Notifications**: CLI now checks for newer versions on startup and displays update prompt
12
+
13
+ ### Changed
14
+ - **README Improvements**: Redesigned badge styling with flat-square style and centered layout
15
+ - **Banner Redesign**: Modernized SVG banner with centered content and improved visual hierarchy
16
+ - **Font Compatibility**: Fixed banner fonts for better GitHub rendering support
17
+
18
+ ### Fixed
19
+ - **Banner Display**: Corrected package name display and font rendering in GitHub
20
+
8
21
  ## [0.3.1] - 2026-01-15
9
22
 
10
23
  ### Added
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: reverse-api-engineer
3
- Version: 0.3.1
3
+ Version: 0.3.2
4
4
  Summary: A tool to capture browser traffic for API reverse engineering
5
5
  Project-URL: Homepage, https://github.com/kalil0321/reverse-api-engineer
6
6
  Project-URL: Repository, https://github.com/kalil0321/reverse-api-engineer
@@ -42,16 +42,20 @@ Description-Content-Type: text/markdown
42
42
 
43
43
  <div align="center">
44
44
  <img src="https://raw.githubusercontent.com/kalil0321/reverse-api-engineer/main/assets/reverse-api-banner.svg" alt="Reverse API Engineer Banner">
45
+ <br><br>
46
+ <a href="https://pypi.org/project/reverse-api-engineer/"><img src="https://img.shields.io/pypi/v/reverse-api-engineer?style=flat-square&color=red" alt="PyPI"></a>
47
+ <a href="https://www.python.org/downloads/"><img src="https://img.shields.io/badge/python-3.11+-red?style=flat-square" alt="Python"></a>
48
+ <a href="https://opensource.org/licenses/MIT"><img src="https://img.shields.io/badge/license-MIT-red?style=flat-square" alt="License"></a>
45
49
  </div>
46
50
 
47
- ![PyPI](https://img.shields.io/pypi/v/reverse-api-engineer)
48
- [![Python 3.11+](https://img.shields.io/badge/python-3.11+-red.svg)](https://www.python.org/downloads/)
49
- [![License: MIT](https://img.shields.io/badge/License-MIT-red.svg)](https://opensource.org/licenses/MIT)
50
- [![PyPI Downloads](https://static.pepy.tech/personalized-badge/reverse-api-engineer?period=total&units=INTERNATIONAL_SYSTEM&left_color=BLACK&right_color=RED&left_text=downloads)](https://pepy.tech/projects/reverse-api-engineer)
51
+ <p align="center">
52
+ CLI tool that captures browser traffic and automatically generates production-ready Python API clients.<br>
53
+ No more manual reverse engineering—just browse, capture, and get clean API code.
54
+ </p>
51
55
 
52
- CLI tool that captures browser traffic and automatically generates production-ready Python API clients. No more manual reverse engineering—just browse, capture, and get clean API code.
53
-
54
- ![Reverse API Engineer Demo](https://raw.githubusercontent.com/kalil0321/reverse-api-engineer/main/assets/reverse-api-engineer.gif)
56
+ <p align="center">
57
+ <img src="https://raw.githubusercontent.com/kalil0321/reverse-api-engineer/main/assets/reverse-api-engineer.gif" alt="Reverse API Engineer Demo">
58
+ </p>
55
59
 
56
60
  ## Table of Contents
57
61
 
@@ -1,15 +1,19 @@
1
1
  <div align="center">
2
2
  <img src="https://raw.githubusercontent.com/kalil0321/reverse-api-engineer/main/assets/reverse-api-banner.svg" alt="Reverse API Engineer Banner">
3
+ <br><br>
4
+ <a href="https://pypi.org/project/reverse-api-engineer/"><img src="https://img.shields.io/pypi/v/reverse-api-engineer?style=flat-square&color=red" alt="PyPI"></a>
5
+ <a href="https://www.python.org/downloads/"><img src="https://img.shields.io/badge/python-3.11+-red?style=flat-square" alt="Python"></a>
6
+ <a href="https://opensource.org/licenses/MIT"><img src="https://img.shields.io/badge/license-MIT-red?style=flat-square" alt="License"></a>
3
7
  </div>
4
8
 
5
- ![PyPI](https://img.shields.io/pypi/v/reverse-api-engineer)
6
- [![Python 3.11+](https://img.shields.io/badge/python-3.11+-red.svg)](https://www.python.org/downloads/)
7
- [![License: MIT](https://img.shields.io/badge/License-MIT-red.svg)](https://opensource.org/licenses/MIT)
8
- [![PyPI Downloads](https://static.pepy.tech/personalized-badge/reverse-api-engineer?period=total&units=INTERNATIONAL_SYSTEM&left_color=BLACK&right_color=RED&left_text=downloads)](https://pepy.tech/projects/reverse-api-engineer)
9
+ <p align="center">
10
+ CLI tool that captures browser traffic and automatically generates production-ready Python API clients.<br>
11
+ No more manual reverse engineering—just browse, capture, and get clean API code.
12
+ </p>
9
13
 
10
- CLI tool that captures browser traffic and automatically generates production-ready Python API clients. No more manual reverse engineering—just browse, capture, and get clean API code.
11
-
12
- ![Reverse API Engineer Demo](https://raw.githubusercontent.com/kalil0321/reverse-api-engineer/main/assets/reverse-api-engineer.gif)
14
+ <p align="center">
15
+ <img src="https://raw.githubusercontent.com/kalil0321/reverse-api-engineer/main/assets/reverse-api-engineer.gif" alt="Reverse API Engineer Demo">
16
+ </p>
13
17
 
14
18
  ## Table of Contents
15
19
 
@@ -0,0 +1,84 @@
1
+ <svg width="1200" height="300" viewBox="0 0 1200 300" xmlns="http://www.w3.org/2000/svg">
2
+ <defs>
3
+ <linearGradient id="bgGrad" x1="0%" y1="0%" x2="100%" y2="100%">
4
+ <stop offset="0%" style="stop-color:#0d0d0d;stop-opacity:1" />
5
+ <stop offset="100%" style="stop-color:#1a1a1a;stop-opacity:1" />
6
+ </linearGradient>
7
+ <linearGradient id="accentGrad" x1="0%" y1="0%" x2="100%" y2="0%">
8
+ <stop offset="0%" style="stop-color:#ef4444;stop-opacity:1" />
9
+ <stop offset="100%" style="stop-color:#dc2626;stop-opacity:1" />
10
+ </linearGradient>
11
+ </defs>
12
+
13
+ <!-- Background -->
14
+ <rect width="1200" height="300" fill="url(#bgGrad)"/>
15
+
16
+ <!-- Subtle grid pattern -->
17
+ <g opacity="0.02">
18
+ <line x1="0" y1="75" x2="1200" y2="75" stroke="#fff" stroke-width="1"/>
19
+ <line x1="0" y1="150" x2="1200" y2="150" stroke="#fff" stroke-width="1"/>
20
+ <line x1="0" y1="225" x2="1200" y2="225" stroke="#fff" stroke-width="1"/>
21
+ </g>
22
+
23
+ <!-- Centered content group -->
24
+ <g transform="translate(600, 150)">
25
+ <!-- Logo -->
26
+ <g transform="translate(-380, 0) scale(0.55)">
27
+ <!-- Left brace -->
28
+ <path d="M -30 -90
29
+ Q -50 -90 -60 -80
30
+ Q -70 -70 -70 -50
31
+ L -70 -15
32
+ Q -70 -5 -80 -5
33
+ L -90 -5
34
+ L -90 5
35
+ L -80 5
36
+ Q -70 5 -70 15
37
+ L -70 50
38
+ Q -70 70 -60 80
39
+ Q -50 90 -30 90"
40
+ fill="none"
41
+ stroke="#ffffff"
42
+ stroke-width="10"
43
+ stroke-linecap="round"
44
+ stroke-linejoin="round"/>
45
+
46
+ <!-- Right brace -->
47
+ <path d="M 30 -90
48
+ Q 50 -90 60 -80
49
+ Q 70 -70 70 -50
50
+ L 70 -15
51
+ Q 70 -5 80 -5
52
+ L 90 -5
53
+ L 90 5
54
+ L 80 5
55
+ Q 70 5 70 15
56
+ L 70 50
57
+ Q 70 70 60 80
58
+ Q 50 90 30 90"
59
+ fill="none"
60
+ stroke="#ffffff"
61
+ stroke-width="10"
62
+ stroke-linecap="round"
63
+ stroke-linejoin="round"/>
64
+
65
+ <!-- Center dots -->
66
+ <circle cx="-15" cy="0" r="5" fill="#ef4444"/>
67
+ <circle cx="0" cy="0" r="5" fill="#ef4444"/>
68
+ <circle cx="15" cy="0" r="5" fill="#ef4444"/>
69
+ </g>
70
+
71
+ <!-- Title text -->
72
+ <text x="30" y="-10" font-family="monospace" font-size="52" font-weight="600" fill="#ffffff" text-anchor="middle" letter-spacing="-1">
73
+ reverse-api-engineer
74
+ </text>
75
+
76
+ <!-- Tagline -->
77
+ <text x="30" y="35" font-family="sans-serif" font-size="18" fill="#888888" text-anchor="middle" letter-spacing="2">
78
+ CAPTURE · ANALYZE · GENERATE
79
+ </text>
80
+ </g>
81
+
82
+ <!-- Accent line -->
83
+ <rect x="0" y="298" width="1200" height="2" fill="url(#accentGrad)"/>
84
+ </svg>
@@ -1,6 +1,6 @@
1
1
  [project]
2
2
  name = "reverse-api-engineer"
3
- version = "0.3.1"
3
+ version = "0.3.2"
4
4
  description = "A tool to capture browser traffic for API reverse engineering"
5
5
  readme = "README.md"
6
6
  requires-python = ">=3.11"
@@ -32,6 +32,7 @@ from .tui import (
32
32
  get_model_choices,
33
33
  )
34
34
  from .utils import (
35
+ check_for_updates,
35
36
  generate_folder_name,
36
37
  generate_run_id,
37
38
  get_actions_path,
@@ -363,6 +364,11 @@ def repl_loop():
363
364
  console.print(" [dim]shift+tab to cycle modes: manual | engineer | agent | collector[/dim]")
364
365
  display_footer(console)
365
366
 
367
+ # Check for updates
368
+ if update_msg := check_for_updates():
369
+ console.print(f" [yellow]{update_msg}[/yellow]")
370
+ console.print()
371
+
366
372
  current_mode = "manual"
367
373
 
368
374
  while True:
@@ -6,6 +6,30 @@ import uuid
6
6
  from datetime import datetime
7
7
  from pathlib import Path
8
8
 
9
+ import httpx
10
+
11
+ from . import __version__
12
+
13
+
14
+ def check_for_updates() -> str | None:
15
+ """Check PyPI for newer version.
16
+
17
+ Returns:
18
+ Update message if newer version available, None otherwise.
19
+ """
20
+ try:
21
+ response = httpx.get(
22
+ "https://pypi.org/pypi/reverse-api-engineer/json",
23
+ timeout=2.0,
24
+ )
25
+ if response.status_code == 200:
26
+ latest = response.json()["info"]["version"]
27
+ if latest != __version__:
28
+ return f"update available: {__version__} → {latest} (pip install -U reverse-api-engineer)"
29
+ except Exception:
30
+ pass
31
+ return None
32
+
9
33
 
10
34
  def generate_folder_name(prompt: str, sdk: str = None, session_id: str = None) -> str:
11
35
  """Generate a clean folder name from a prompt.
@@ -1,87 +0,0 @@
1
- <svg width="1200" height="300" viewBox="0 0 1200 300" xmlns="http://www.w3.org/2000/svg">
2
- <defs>
3
- <linearGradient id="bgGrad" x1="0%" y1="0%" x2="100%" y2="0%">
4
- <stop offset="0%" style="stop-color:#0a0a0a;stop-opacity:1" />
5
- <stop offset="50%" style="stop-color:#1a1a1a;stop-opacity:1" />
6
- <stop offset="100%" style="stop-color:#0a0a0a;stop-opacity:1" />
7
- </linearGradient>
8
- </defs>
9
-
10
- <!-- Background -->
11
- <rect width="1200" height="300" fill="url(#bgGrad)"/>
12
-
13
- <!-- Subtle grid pattern -->
14
- <g opacity="0.03">
15
- <line x1="0" y1="50" x2="1200" y2="50" stroke="#fff" stroke-width="1"/>
16
- <line x1="0" y1="100" x2="1200" y2="100" stroke="#fff" stroke-width="1"/>
17
- <line x1="0" y1="150" x2="1200" y2="150" stroke="#fff" stroke-width="1"/>
18
- <line x1="0" y1="200" x2="1200" y2="200" stroke="#fff" stroke-width="1"/>
19
- <line x1="0" y1="250" x2="1200" y2="250" stroke="#fff" stroke-width="1"/>
20
- </g>
21
-
22
- <!-- Logo on the left -->
23
- <g transform="translate(150, 150) scale(0.7)">
24
- <!-- Left brace -->
25
- <path d="M -30 -90
26
- Q -50 -90 -60 -80
27
- Q -70 -70 -70 -50
28
- L -70 -15
29
- Q -70 -5 -80 -5
30
- L -90 -5
31
- L -90 5
32
- L -80 5
33
- Q -70 5 -70 15
34
- L -70 50
35
- Q -70 70 -60 80
36
- Q -50 90 -30 90"
37
- fill="none"
38
- stroke="#ffffff"
39
- stroke-width="10"
40
- stroke-linecap="round"
41
- stroke-linejoin="round"/>
42
-
43
- <!-- Right brace -->
44
- <path d="M 30 -90
45
- Q 50 -90 60 -80
46
- Q 70 -70 70 -50
47
- L 70 -15
48
- Q 70 -5 80 -5
49
- L 90 -5
50
- L 90 5
51
- L 80 5
52
- Q 70 5 70 15
53
- L 70 50
54
- Q 70 70 60 80
55
- Q 50 90 30 90"
56
- fill="none"
57
- stroke="#ffffff"
58
- stroke-width="10"
59
- stroke-linecap="round"
60
- stroke-linejoin="round"/>
61
-
62
- <!-- Center dots -->
63
- <circle cx="-15" cy="0" r="4" fill="#ef4444"/>
64
- <circle cx="0" cy="0" r="4" fill="#ef4444"/>
65
- <circle cx="15" cy="0" r="4" fill="#ef4444"/>
66
- </g>
67
-
68
- <!-- Text -->
69
- <text x="280" y="165" font-family="'SF Mono', 'Monaco', 'Inconsolata', monospace" font-size="72" font-weight="700" fill="#ffffff" letter-spacing="-2">
70
- reverse-api
71
- </text>
72
-
73
- <!-- Tagline -->
74
- <text x="280" y="200" font-family="'SF Mono', 'Monaco', 'Inconsolata', monospace" font-size="20" fill="#ef4444" letter-spacing="1">
75
- REVERSE ENGINEER ANY API
76
- </text>
77
-
78
- <!-- Decorative code elements -->
79
- <g opacity="0.2">
80
- <text x="950" y="80" font-family="monospace" font-size="14" fill="#ef4444">&lt;/&gt;</text>
81
- <text x="1050" y="240" font-family="monospace" font-size="14" fill="#ffffff">{}</text>
82
- <text x="50" y="260" font-family="monospace" font-size="12" fill="#ef4444">0x</text>
83
- </g>
84
-
85
- <!-- Subtle scan line effect -->
86
- <line x1="0" y1="150" x2="1200" y2="150" stroke="#ef4444" stroke-width="1" opacity="0.1"/>
87
- </svg>