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.
- {reverse_api_engineer-0.3.1 → reverse_api_engineer-0.3.2}/CHANGELOG.md +13 -0
- {reverse_api_engineer-0.3.1 → reverse_api_engineer-0.3.2}/PKG-INFO +12 -8
- {reverse_api_engineer-0.3.1 → reverse_api_engineer-0.3.2}/README.md +11 -7
- reverse_api_engineer-0.3.2/assets/reverse-api-banner.svg +84 -0
- {reverse_api_engineer-0.3.1 → reverse_api_engineer-0.3.2}/pyproject.toml +1 -1
- {reverse_api_engineer-0.3.1 → reverse_api_engineer-0.3.2}/src/reverse_api/cli.py +6 -0
- {reverse_api_engineer-0.3.1 → reverse_api_engineer-0.3.2}/src/reverse_api/utils.py +24 -0
- reverse_api_engineer-0.3.1/assets/reverse-api-banner.svg +0 -87
- {reverse_api_engineer-0.3.1 → reverse_api_engineer-0.3.2}/.claude/settings.local.json +0 -0
- {reverse_api_engineer-0.3.1 → reverse_api_engineer-0.3.2}/.claude-plugin/marketplace.json +0 -0
- {reverse_api_engineer-0.3.1 → reverse_api_engineer-0.3.2}/.gitignore +0 -0
- {reverse_api_engineer-0.3.1 → reverse_api_engineer-0.3.2}/.python-version +0 -0
- {reverse_api_engineer-0.3.1 → reverse_api_engineer-0.3.2}/CLAUDE.md +0 -0
- {reverse_api_engineer-0.3.1 → reverse_api_engineer-0.3.2}/CONTRIBUTING.md +0 -0
- {reverse_api_engineer-0.3.1 → reverse_api_engineer-0.3.2}/INTERVIEW.md +0 -0
- {reverse_api_engineer-0.3.1 → reverse_api_engineer-0.3.2}/LICENSE +0 -0
- {reverse_api_engineer-0.3.1 → reverse_api_engineer-0.3.2}/RELEASING.md +0 -0
- {reverse_api_engineer-0.3.1 → reverse_api_engineer-0.3.2}/TEST_UI_README.md +0 -0
- {reverse_api_engineer-0.3.1 → reverse_api_engineer-0.3.2}/assets/reverse-api-engineer.gif +0 -0
- {reverse_api_engineer-0.3.1 → reverse_api_engineer-0.3.2}/assets/reverse-api-logo.svg +0 -0
- {reverse_api_engineer-0.3.1 → reverse_api_engineer-0.3.2}/chrome-extension/.claude/settings.local.json +0 -0
- {reverse_api_engineer-0.3.1 → reverse_api_engineer-0.3.2}/chrome-extension/package-lock.json +0 -0
- {reverse_api_engineer-0.3.1 → reverse_api_engineer-0.3.2}/chrome-extension/package.json +0 -0
- {reverse_api_engineer-0.3.1 → reverse_api_engineer-0.3.2}/chrome-extension/postcss.config.js +0 -0
- {reverse_api_engineer-0.3.1 → reverse_api_engineer-0.3.2}/chrome-extension/public/_locales/en/messages.json +0 -0
- {reverse_api_engineer-0.3.1 → reverse_api_engineer-0.3.2}/chrome-extension/public/icons/icon-128.png +0 -0
- {reverse_api_engineer-0.3.1 → reverse_api_engineer-0.3.2}/chrome-extension/public/icons/icon-16.png +0 -0
- {reverse_api_engineer-0.3.1 → reverse_api_engineer-0.3.2}/chrome-extension/public/icons/icon-32.png +0 -0
- {reverse_api_engineer-0.3.1 → reverse_api_engineer-0.3.2}/chrome-extension/public/icons/icon-48.png +0 -0
- {reverse_api_engineer-0.3.1 → reverse_api_engineer-0.3.2}/chrome-extension/public/manifest.json +0 -0
- {reverse_api_engineer-0.3.1 → reverse_api_engineer-0.3.2}/chrome-extension/src/background/service-worker.ts +0 -0
- {reverse_api_engineer-0.3.1 → reverse_api_engineer-0.3.2}/chrome-extension/src/components/agent-action.tsx +0 -0
- {reverse_api_engineer-0.3.1 → reverse_api_engineer-0.3.2}/chrome-extension/src/components/chat-input.tsx +0 -0
- {reverse_api_engineer-0.3.1 → reverse_api_engineer-0.3.2}/chrome-extension/src/components/markdown-renderer.tsx +0 -0
- {reverse_api_engineer-0.3.1 → reverse_api_engineer-0.3.2}/chrome-extension/src/components/plan.tsx +0 -0
- {reverse_api_engineer-0.3.1 → reverse_api_engineer-0.3.2}/chrome-extension/src/components/terminal.tsx +0 -0
- {reverse_api_engineer-0.3.1 → reverse_api_engineer-0.3.2}/chrome-extension/src/index.css +0 -0
- {reverse_api_engineer-0.3.1 → reverse_api_engineer-0.3.2}/chrome-extension/src/shared/capture.ts +0 -0
- {reverse_api_engineer-0.3.1 → reverse_api_engineer-0.3.2}/chrome-extension/src/shared/native-host.ts +0 -0
- {reverse_api_engineer-0.3.1 → reverse_api_engineer-0.3.2}/chrome-extension/src/shared/storage.ts +0 -0
- {reverse_api_engineer-0.3.1 → reverse_api_engineer-0.3.2}/chrome-extension/src/shared/types.ts +0 -0
- {reverse_api_engineer-0.3.1 → reverse_api_engineer-0.3.2}/chrome-extension/src/sidepanel/index.html +0 -0
- {reverse_api_engineer-0.3.1 → reverse_api_engineer-0.3.2}/chrome-extension/src/sidepanel/main.tsx +0 -0
- {reverse_api_engineer-0.3.1 → reverse_api_engineer-0.3.2}/chrome-extension/src/sidepanel/side-panel.tsx +0 -0
- {reverse_api_engineer-0.3.1 → reverse_api_engineer-0.3.2}/chrome-extension/src/vite-env.d.ts +0 -0
- {reverse_api_engineer-0.3.1 → reverse_api_engineer-0.3.2}/chrome-extension/tailwind.config.js +0 -0
- {reverse_api_engineer-0.3.1 → reverse_api_engineer-0.3.2}/chrome-extension/tsconfig.json +0 -0
- {reverse_api_engineer-0.3.1 → reverse_api_engineer-0.3.2}/chrome-extension/vite.config.ts +0 -0
- {reverse_api_engineer-0.3.1 → reverse_api_engineer-0.3.2}/examples/apple/INDEX.md +0 -0
- {reverse_api_engineer-0.3.1 → reverse_api_engineer-0.3.2}/examples/apple/QUICKSTART.md +0 -0
- {reverse_api_engineer-0.3.1 → reverse_api_engineer-0.3.2}/examples/apple/README.md +0 -0
- {reverse_api_engineer-0.3.1 → reverse_api_engineer-0.3.2}/examples/apple/SUMMARY.md +0 -0
- {reverse_api_engineer-0.3.1 → reverse_api_engineer-0.3.2}/examples/apple/api_client.py +0 -0
- {reverse_api_engineer-0.3.1 → reverse_api_engineer-0.3.2}/examples/apple/extract_job_fields.py +0 -0
- {reverse_api_engineer-0.3.1 → reverse_api_engineer-0.3.2}/examples/apple/main.py +0 -0
- {reverse_api_engineer-0.3.1 → reverse_api_engineer-0.3.2}/examples/apple/quick_example.py +0 -0
- {reverse_api_engineer-0.3.1 → reverse_api_engineer-0.3.2}/examples/apple/requirements.txt +0 -0
- {reverse_api_engineer-0.3.1 → reverse_api_engineer-0.3.2}/examples/ashby/API_SUMMARY.txt +0 -0
- {reverse_api_engineer-0.3.1 → reverse_api_engineer-0.3.2}/examples/ashby/QUICKSTART.md +0 -0
- {reverse_api_engineer-0.3.1 → reverse_api_engineer-0.3.2}/examples/ashby/README.md +0 -0
- {reverse_api_engineer-0.3.1 → reverse_api_engineer-0.3.2}/examples/ashby/api_client.py +0 -0
- {reverse_api_engineer-0.3.1 → reverse_api_engineer-0.3.2}/examples/ashby/example_usage.py +0 -0
- {reverse_api_engineer-0.3.1 → reverse_api_engineer-0.3.2}/examples/ashby/requirements.txt +0 -0
- {reverse_api_engineer-0.3.1 → reverse_api_engineer-0.3.2}/examples/autoscout24/README.md +0 -0
- {reverse_api_engineer-0.3.1 → reverse_api_engineer-0.3.2}/examples/autoscout24/SUMMARY.md +0 -0
- {reverse_api_engineer-0.3.1 → reverse_api_engineer-0.3.2}/examples/autoscout24/api_client.py +0 -0
- {reverse_api_engineer-0.3.1 → reverse_api_engineer-0.3.2}/examples/ikea/README.md +0 -0
- {reverse_api_engineer-0.3.1 → reverse_api_engineer-0.3.2}/examples/ikea/api_client.py +0 -0
- {reverse_api_engineer-0.3.1 → reverse_api_engineer-0.3.2}/examples/uber/API_ANALYSIS_SUMMARY.md +0 -0
- {reverse_api_engineer-0.3.1 → reverse_api_engineer-0.3.2}/examples/uber/README.md +0 -0
- {reverse_api_engineer-0.3.1 → reverse_api_engineer-0.3.2}/examples/uber/api_client.py +0 -0
- {reverse_api_engineer-0.3.1 → reverse_api_engineer-0.3.2}/examples/uber/example_fetch_all_jobs.py +0 -0
- {reverse_api_engineer-0.3.1 → reverse_api_engineer-0.3.2}/examples/uber/quick_start.py +0 -0
- {reverse_api_engineer-0.3.1 → reverse_api_engineer-0.3.2}/examples/uber/requirements.txt +0 -0
- {reverse_api_engineer-0.3.1 → reverse_api_engineer-0.3.2}/llm-docs/OPENCODE_API_SUMMARY.md +0 -0
- {reverse_api_engineer-0.3.1 → reverse_api_engineer-0.3.2}/llm-docs/claude-agent-sdk/QUICKSTART.md +0 -0
- {reverse_api_engineer-0.3.1 → reverse_api_engineer-0.3.2}/llm-docs/claude-agent-sdk/TODO_LIST.md +0 -0
- {reverse_api_engineer-0.3.1 → reverse_api_engineer-0.3.2}/llm-docs/claude-agent-sdk/TOOLS.md +0 -0
- {reverse_api_engineer-0.3.1 → reverse_api_engineer-0.3.2}/llm-docs/opencode-api.json +0 -0
- {reverse_api_engineer-0.3.1 → reverse_api_engineer-0.3.2}/plugins/reverse-api-engineer/.claude-plugin/plugin.json +0 -0
- {reverse_api_engineer-0.3.1 → reverse_api_engineer-0.3.2}/plugins/reverse-api-engineer/CHANGELOG.md +0 -0
- {reverse_api_engineer-0.3.1 → reverse_api_engineer-0.3.2}/plugins/reverse-api-engineer/LICENSE +0 -0
- {reverse_api_engineer-0.3.1 → reverse_api_engineer-0.3.2}/plugins/reverse-api-engineer/README.md +0 -0
- {reverse_api_engineer-0.3.1 → reverse_api_engineer-0.3.2}/plugins/reverse-api-engineer/agents/api-reverse-engineer.md +0 -0
- {reverse_api_engineer-0.3.1 → reverse_api_engineer-0.3.2}/plugins/reverse-api-engineer/commands/agent.md +0 -0
- {reverse_api_engineer-0.3.1 → reverse_api_engineer-0.3.2}/plugins/reverse-api-engineer/commands/capture.md +0 -0
- {reverse_api_engineer-0.3.1 → reverse_api_engineer-0.3.2}/plugins/reverse-api-engineer/commands/engineer.md +0 -0
- {reverse_api_engineer-0.3.1 → reverse_api_engineer-0.3.2}/plugins/reverse-api-engineer/commands/manual.md +0 -0
- {reverse_api_engineer-0.3.1 → reverse_api_engineer-0.3.2}/plugins/reverse-api-engineer/skills/reverse-engineering-api/CHANGELOG.md +0 -0
- {reverse_api_engineer-0.3.1 → reverse_api_engineer-0.3.2}/plugins/reverse-api-engineer/skills/reverse-engineering-api/LICENSE +0 -0
- {reverse_api_engineer-0.3.1 → reverse_api_engineer-0.3.2}/plugins/reverse-api-engineer/skills/reverse-engineering-api/SKILL.md +0 -0
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {reverse_api_engineer-0.3.1 → reverse_api_engineer-0.3.2}/scripts/clean_build.sh +0 -0
- {reverse_api_engineer-0.3.1 → reverse_api_engineer-0.3.2}/src/reverse_api/__init__.py +0 -0
- {reverse_api_engineer-0.3.1 → reverse_api_engineer-0.3.2}/src/reverse_api/action_recorder.py +0 -0
- {reverse_api_engineer-0.3.1 → reverse_api_engineer-0.3.2}/src/reverse_api/auto_engineer.py +0 -0
- {reverse_api_engineer-0.3.1 → reverse_api_engineer-0.3.2}/src/reverse_api/base_engineer.py +0 -0
- {reverse_api_engineer-0.3.1 → reverse_api_engineer-0.3.2}/src/reverse_api/browser.py +0 -0
- {reverse_api_engineer-0.3.1 → reverse_api_engineer-0.3.2}/src/reverse_api/collector.py +0 -0
- {reverse_api_engineer-0.3.1 → reverse_api_engineer-0.3.2}/src/reverse_api/collector_ui.py +0 -0
- {reverse_api_engineer-0.3.1 → reverse_api_engineer-0.3.2}/src/reverse_api/config.py +0 -0
- {reverse_api_engineer-0.3.1 → reverse_api_engineer-0.3.2}/src/reverse_api/engineer.py +0 -0
- {reverse_api_engineer-0.3.1 → reverse_api_engineer-0.3.2}/src/reverse_api/messages.py +0 -0
- {reverse_api_engineer-0.3.1 → reverse_api_engineer-0.3.2}/src/reverse_api/native_host.py +0 -0
- {reverse_api_engineer-0.3.1 → reverse_api_engineer-0.3.2}/src/reverse_api/opencode_engineer.py +0 -0
- {reverse_api_engineer-0.3.1 → reverse_api_engineer-0.3.2}/src/reverse_api/opencode_ui.py +0 -0
- {reverse_api_engineer-0.3.1 → reverse_api_engineer-0.3.2}/src/reverse_api/playwright_codegen.py +0 -0
- {reverse_api_engineer-0.3.1 → reverse_api_engineer-0.3.2}/src/reverse_api/pricing.py +0 -0
- {reverse_api_engineer-0.3.1 → reverse_api_engineer-0.3.2}/src/reverse_api/session.py +0 -0
- {reverse_api_engineer-0.3.1 → reverse_api_engineer-0.3.2}/src/reverse_api/sync.py +0 -0
- {reverse_api_engineer-0.3.1 → reverse_api_engineer-0.3.2}/src/reverse_api/tui.py +0 -0
- {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.
|
|
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
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
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
|
-
|
|
53
|
-
|
|
54
|
-
|
|
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
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
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
|
-
|
|
11
|
-
|
|
12
|
-
|
|
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>
|
|
@@ -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"></></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>
|
|
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
|
{reverse_api_engineer-0.3.1 → reverse_api_engineer-0.3.2}/chrome-extension/package-lock.json
RENAMED
|
File without changes
|
|
File without changes
|
{reverse_api_engineer-0.3.1 → reverse_api_engineer-0.3.2}/chrome-extension/postcss.config.js
RENAMED
|
File without changes
|
|
File without changes
|
{reverse_api_engineer-0.3.1 → reverse_api_engineer-0.3.2}/chrome-extension/public/icons/icon-128.png
RENAMED
|
File without changes
|
{reverse_api_engineer-0.3.1 → reverse_api_engineer-0.3.2}/chrome-extension/public/icons/icon-16.png
RENAMED
|
File without changes
|
{reverse_api_engineer-0.3.1 → reverse_api_engineer-0.3.2}/chrome-extension/public/icons/icon-32.png
RENAMED
|
File without changes
|
{reverse_api_engineer-0.3.1 → reverse_api_engineer-0.3.2}/chrome-extension/public/icons/icon-48.png
RENAMED
|
File without changes
|
{reverse_api_engineer-0.3.1 → reverse_api_engineer-0.3.2}/chrome-extension/public/manifest.json
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{reverse_api_engineer-0.3.1 → reverse_api_engineer-0.3.2}/chrome-extension/src/components/plan.tsx
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{reverse_api_engineer-0.3.1 → reverse_api_engineer-0.3.2}/chrome-extension/src/shared/capture.ts
RENAMED
|
File without changes
|
{reverse_api_engineer-0.3.1 → reverse_api_engineer-0.3.2}/chrome-extension/src/shared/native-host.ts
RENAMED
|
File without changes
|
{reverse_api_engineer-0.3.1 → reverse_api_engineer-0.3.2}/chrome-extension/src/shared/storage.ts
RENAMED
|
File without changes
|
{reverse_api_engineer-0.3.1 → reverse_api_engineer-0.3.2}/chrome-extension/src/shared/types.ts
RENAMED
|
File without changes
|
{reverse_api_engineer-0.3.1 → reverse_api_engineer-0.3.2}/chrome-extension/src/sidepanel/index.html
RENAMED
|
File without changes
|
{reverse_api_engineer-0.3.1 → reverse_api_engineer-0.3.2}/chrome-extension/src/sidepanel/main.tsx
RENAMED
|
File without changes
|
|
File without changes
|
{reverse_api_engineer-0.3.1 → reverse_api_engineer-0.3.2}/chrome-extension/src/vite-env.d.ts
RENAMED
|
File without changes
|
{reverse_api_engineer-0.3.1 → reverse_api_engineer-0.3.2}/chrome-extension/tailwind.config.js
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{reverse_api_engineer-0.3.1 → reverse_api_engineer-0.3.2}/examples/apple/extract_job_fields.py
RENAMED
|
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
|
{reverse_api_engineer-0.3.1 → reverse_api_engineer-0.3.2}/examples/autoscout24/api_client.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{reverse_api_engineer-0.3.1 → reverse_api_engineer-0.3.2}/examples/uber/API_ANALYSIS_SUMMARY.md
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{reverse_api_engineer-0.3.1 → reverse_api_engineer-0.3.2}/examples/uber/example_fetch_all_jobs.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{reverse_api_engineer-0.3.1 → reverse_api_engineer-0.3.2}/llm-docs/claude-agent-sdk/QUICKSTART.md
RENAMED
|
File without changes
|
{reverse_api_engineer-0.3.1 → reverse_api_engineer-0.3.2}/llm-docs/claude-agent-sdk/TODO_LIST.md
RENAMED
|
File without changes
|
{reverse_api_engineer-0.3.1 → reverse_api_engineer-0.3.2}/llm-docs/claude-agent-sdk/TOOLS.md
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{reverse_api_engineer-0.3.1 → reverse_api_engineer-0.3.2}/plugins/reverse-api-engineer/CHANGELOG.md
RENAMED
|
File without changes
|
{reverse_api_engineer-0.3.1 → reverse_api_engineer-0.3.2}/plugins/reverse-api-engineer/LICENSE
RENAMED
|
File without changes
|
{reverse_api_engineer-0.3.1 → reverse_api_engineer-0.3.2}/plugins/reverse-api-engineer/README.md
RENAMED
|
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
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{reverse_api_engineer-0.3.1 → reverse_api_engineer-0.3.2}/src/reverse_api/action_recorder.py
RENAMED
|
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
|
{reverse_api_engineer-0.3.1 → reverse_api_engineer-0.3.2}/src/reverse_api/opencode_engineer.py
RENAMED
|
File without changes
|
|
File without changes
|
{reverse_api_engineer-0.3.1 → reverse_api_engineer-0.3.2}/src/reverse_api/playwright_codegen.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|