reverse-api-engineer 0.3.0__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.0 → reverse_api_engineer-0.3.2}/.claude/settings.local.json +6 -1
- {reverse_api_engineer-0.3.0 → reverse_api_engineer-0.3.2}/.gitignore +5 -1
- {reverse_api_engineer-0.3.0 → reverse_api_engineer-0.3.2}/CHANGELOG.md +57 -0
- {reverse_api_engineer-0.3.0 → reverse_api_engineer-0.3.2}/PKG-INFO +203 -47
- {reverse_api_engineer-0.3.0 → reverse_api_engineer-0.3.2}/README.md +201 -46
- reverse_api_engineer-0.3.2/assets/reverse-api-banner.svg +84 -0
- reverse_api_engineer-0.3.2/chrome-extension/.claude/settings.local.json +7 -0
- reverse_api_engineer-0.3.2/chrome-extension/package-lock.json +4703 -0
- reverse_api_engineer-0.3.2/chrome-extension/package.json +33 -0
- reverse_api_engineer-0.3.2/chrome-extension/postcss.config.js +6 -0
- reverse_api_engineer-0.3.2/chrome-extension/public/_locales/en/messages.json +10 -0
- reverse_api_engineer-0.3.2/chrome-extension/public/icons/icon-128.png +0 -0
- reverse_api_engineer-0.3.2/chrome-extension/public/icons/icon-16.png +0 -0
- reverse_api_engineer-0.3.2/chrome-extension/public/icons/icon-32.png +0 -0
- reverse_api_engineer-0.3.2/chrome-extension/public/icons/icon-48.png +0 -0
- reverse_api_engineer-0.3.2/chrome-extension/public/manifest.json +39 -0
- reverse_api_engineer-0.3.2/chrome-extension/src/background/service-worker.ts +197 -0
- reverse_api_engineer-0.3.2/chrome-extension/src/components/agent-action.tsx +123 -0
- reverse_api_engineer-0.3.2/chrome-extension/src/components/chat-input.tsx +76 -0
- reverse_api_engineer-0.3.2/chrome-extension/src/components/markdown-renderer.tsx +88 -0
- reverse_api_engineer-0.3.2/chrome-extension/src/components/plan.tsx +92 -0
- reverse_api_engineer-0.3.2/chrome-extension/src/components/terminal.tsx +63 -0
- reverse_api_engineer-0.3.2/chrome-extension/src/index.css +96 -0
- reverse_api_engineer-0.3.2/chrome-extension/src/shared/capture.ts +445 -0
- reverse_api_engineer-0.3.2/chrome-extension/src/shared/native-host.ts +163 -0
- reverse_api_engineer-0.3.2/chrome-extension/src/shared/storage.ts +75 -0
- reverse_api_engineer-0.3.2/chrome-extension/src/shared/types.ts +41 -0
- reverse_api_engineer-0.3.2/chrome-extension/src/sidepanel/index.html +12 -0
- reverse_api_engineer-0.3.2/chrome-extension/src/sidepanel/main.tsx +10 -0
- reverse_api_engineer-0.3.2/chrome-extension/src/sidepanel/side-panel.tsx +371 -0
- reverse_api_engineer-0.3.2/chrome-extension/src/vite-env.d.ts +1 -0
- reverse_api_engineer-0.3.2/chrome-extension/tailwind.config.js +28 -0
- reverse_api_engineer-0.3.2/chrome-extension/tsconfig.json +20 -0
- reverse_api_engineer-0.3.2/chrome-extension/vite.config.ts +83 -0
- {reverse_api_engineer-0.3.0 → reverse_api_engineer-0.3.2}/pyproject.toml +2 -1
- {reverse_api_engineer-0.3.0 → reverse_api_engineer-0.3.2}/src/reverse_api/auto_engineer.py +32 -5
- {reverse_api_engineer-0.3.0 → reverse_api_engineer-0.3.2}/src/reverse_api/cli.py +69 -30
- {reverse_api_engineer-0.3.0 → reverse_api_engineer-0.3.2}/src/reverse_api/config.py +1 -1
- reverse_api_engineer-0.3.2/src/reverse_api/native_host.py +771 -0
- {reverse_api_engineer-0.3.0 → reverse_api_engineer-0.3.2}/src/reverse_api/opencode_engineer.py +124 -10
- {reverse_api_engineer-0.3.0 → reverse_api_engineer-0.3.2}/src/reverse_api/opencode_ui.py +8 -2
- {reverse_api_engineer-0.3.0 → reverse_api_engineer-0.3.2}/src/reverse_api/utils.py +136 -4
- {reverse_api_engineer-0.3.0 → reverse_api_engineer-0.3.2}/uv.lock +74 -1
- reverse_api_engineer-0.3.0/assets/reverse-api-banner.svg +0 -87
- {reverse_api_engineer-0.3.0 → reverse_api_engineer-0.3.2}/.claude-plugin/marketplace.json +0 -0
- {reverse_api_engineer-0.3.0 → reverse_api_engineer-0.3.2}/.python-version +0 -0
- {reverse_api_engineer-0.3.0 → reverse_api_engineer-0.3.2}/CLAUDE.md +0 -0
- {reverse_api_engineer-0.3.0 → reverse_api_engineer-0.3.2}/CONTRIBUTING.md +0 -0
- {reverse_api_engineer-0.3.0 → reverse_api_engineer-0.3.2}/INTERVIEW.md +0 -0
- {reverse_api_engineer-0.3.0 → reverse_api_engineer-0.3.2}/LICENSE +0 -0
- {reverse_api_engineer-0.3.0 → reverse_api_engineer-0.3.2}/RELEASING.md +0 -0
- {reverse_api_engineer-0.3.0 → reverse_api_engineer-0.3.2}/TEST_UI_README.md +0 -0
- {reverse_api_engineer-0.3.0 → reverse_api_engineer-0.3.2}/assets/reverse-api-engineer.gif +0 -0
- {reverse_api_engineer-0.3.0 → reverse_api_engineer-0.3.2}/assets/reverse-api-logo.svg +0 -0
- {reverse_api_engineer-0.3.0 → reverse_api_engineer-0.3.2}/examples/apple/INDEX.md +0 -0
- {reverse_api_engineer-0.3.0 → reverse_api_engineer-0.3.2}/examples/apple/QUICKSTART.md +0 -0
- {reverse_api_engineer-0.3.0 → reverse_api_engineer-0.3.2}/examples/apple/README.md +0 -0
- {reverse_api_engineer-0.3.0 → reverse_api_engineer-0.3.2}/examples/apple/SUMMARY.md +0 -0
- {reverse_api_engineer-0.3.0 → reverse_api_engineer-0.3.2}/examples/apple/api_client.py +0 -0
- {reverse_api_engineer-0.3.0 → reverse_api_engineer-0.3.2}/examples/apple/extract_job_fields.py +0 -0
- {reverse_api_engineer-0.3.0 → reverse_api_engineer-0.3.2}/examples/apple/main.py +0 -0
- {reverse_api_engineer-0.3.0 → reverse_api_engineer-0.3.2}/examples/apple/quick_example.py +0 -0
- {reverse_api_engineer-0.3.0 → reverse_api_engineer-0.3.2}/examples/apple/requirements.txt +0 -0
- {reverse_api_engineer-0.3.0 → reverse_api_engineer-0.3.2}/examples/ashby/API_SUMMARY.txt +0 -0
- {reverse_api_engineer-0.3.0 → reverse_api_engineer-0.3.2}/examples/ashby/QUICKSTART.md +0 -0
- {reverse_api_engineer-0.3.0 → reverse_api_engineer-0.3.2}/examples/ashby/README.md +0 -0
- {reverse_api_engineer-0.3.0 → reverse_api_engineer-0.3.2}/examples/ashby/api_client.py +0 -0
- {reverse_api_engineer-0.3.0 → reverse_api_engineer-0.3.2}/examples/ashby/example_usage.py +0 -0
- {reverse_api_engineer-0.3.0 → reverse_api_engineer-0.3.2}/examples/ashby/requirements.txt +0 -0
- {reverse_api_engineer-0.3.0 → reverse_api_engineer-0.3.2}/examples/autoscout24/README.md +0 -0
- {reverse_api_engineer-0.3.0 → reverse_api_engineer-0.3.2}/examples/autoscout24/SUMMARY.md +0 -0
- {reverse_api_engineer-0.3.0 → reverse_api_engineer-0.3.2}/examples/autoscout24/api_client.py +0 -0
- {reverse_api_engineer-0.3.0 → reverse_api_engineer-0.3.2}/examples/ikea/README.md +0 -0
- {reverse_api_engineer-0.3.0 → reverse_api_engineer-0.3.2}/examples/ikea/api_client.py +0 -0
- {reverse_api_engineer-0.3.0 → reverse_api_engineer-0.3.2}/examples/uber/API_ANALYSIS_SUMMARY.md +0 -0
- {reverse_api_engineer-0.3.0 → reverse_api_engineer-0.3.2}/examples/uber/README.md +0 -0
- {reverse_api_engineer-0.3.0 → reverse_api_engineer-0.3.2}/examples/uber/api_client.py +0 -0
- {reverse_api_engineer-0.3.0 → reverse_api_engineer-0.3.2}/examples/uber/example_fetch_all_jobs.py +0 -0
- {reverse_api_engineer-0.3.0 → reverse_api_engineer-0.3.2}/examples/uber/quick_start.py +0 -0
- {reverse_api_engineer-0.3.0 → reverse_api_engineer-0.3.2}/examples/uber/requirements.txt +0 -0
- {reverse_api_engineer-0.3.0 → reverse_api_engineer-0.3.2}/llm-docs/OPENCODE_API_SUMMARY.md +0 -0
- {reverse_api_engineer-0.3.0 → reverse_api_engineer-0.3.2}/llm-docs/claude-agent-sdk/QUICKSTART.md +0 -0
- {reverse_api_engineer-0.3.0 → reverse_api_engineer-0.3.2}/llm-docs/claude-agent-sdk/TODO_LIST.md +0 -0
- {reverse_api_engineer-0.3.0 → reverse_api_engineer-0.3.2}/llm-docs/claude-agent-sdk/TOOLS.md +0 -0
- {reverse_api_engineer-0.3.0 → reverse_api_engineer-0.3.2}/llm-docs/opencode-api.json +0 -0
- {reverse_api_engineer-0.3.0 → reverse_api_engineer-0.3.2}/plugins/reverse-api-engineer/.claude-plugin/plugin.json +0 -0
- {reverse_api_engineer-0.3.0 → reverse_api_engineer-0.3.2}/plugins/reverse-api-engineer/CHANGELOG.md +0 -0
- {reverse_api_engineer-0.3.0 → reverse_api_engineer-0.3.2}/plugins/reverse-api-engineer/LICENSE +0 -0
- {reverse_api_engineer-0.3.0 → reverse_api_engineer-0.3.2}/plugins/reverse-api-engineer/README.md +0 -0
- {reverse_api_engineer-0.3.0 → reverse_api_engineer-0.3.2}/plugins/reverse-api-engineer/agents/api-reverse-engineer.md +0 -0
- {reverse_api_engineer-0.3.0 → reverse_api_engineer-0.3.2}/plugins/reverse-api-engineer/commands/agent.md +0 -0
- {reverse_api_engineer-0.3.0 → reverse_api_engineer-0.3.2}/plugins/reverse-api-engineer/commands/capture.md +0 -0
- {reverse_api_engineer-0.3.0 → reverse_api_engineer-0.3.2}/plugins/reverse-api-engineer/commands/engineer.md +0 -0
- {reverse_api_engineer-0.3.0 → reverse_api_engineer-0.3.2}/plugins/reverse-api-engineer/commands/manual.md +0 -0
- {reverse_api_engineer-0.3.0 → reverse_api_engineer-0.3.2}/plugins/reverse-api-engineer/skills/reverse-engineering-api/CHANGELOG.md +0 -0
- {reverse_api_engineer-0.3.0 → reverse_api_engineer-0.3.2}/plugins/reverse-api-engineer/skills/reverse-engineering-api/LICENSE +0 -0
- {reverse_api_engineer-0.3.0 → reverse_api_engineer-0.3.2}/plugins/reverse-api-engineer/skills/reverse-engineering-api/SKILL.md +0 -0
- {reverse_api_engineer-0.3.0 → 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.0 → 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.0 → 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.0 → 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.0 → 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.0 → 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.0 → 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.0 → reverse_api_engineer-0.3.2}/scripts/clean_build.sh +0 -0
- {reverse_api_engineer-0.3.0 → reverse_api_engineer-0.3.2}/src/reverse_api/__init__.py +0 -0
- {reverse_api_engineer-0.3.0 → reverse_api_engineer-0.3.2}/src/reverse_api/action_recorder.py +0 -0
- {reverse_api_engineer-0.3.0 → reverse_api_engineer-0.3.2}/src/reverse_api/base_engineer.py +0 -0
- {reverse_api_engineer-0.3.0 → reverse_api_engineer-0.3.2}/src/reverse_api/browser.py +0 -0
- {reverse_api_engineer-0.3.0 → reverse_api_engineer-0.3.2}/src/reverse_api/collector.py +0 -0
- {reverse_api_engineer-0.3.0 → reverse_api_engineer-0.3.2}/src/reverse_api/collector_ui.py +0 -0
- {reverse_api_engineer-0.3.0 → reverse_api_engineer-0.3.2}/src/reverse_api/engineer.py +0 -0
- {reverse_api_engineer-0.3.0 → reverse_api_engineer-0.3.2}/src/reverse_api/messages.py +0 -0
- {reverse_api_engineer-0.3.0 → reverse_api_engineer-0.3.2}/src/reverse_api/playwright_codegen.py +0 -0
- {reverse_api_engineer-0.3.0 → reverse_api_engineer-0.3.2}/src/reverse_api/pricing.py +0 -0
- {reverse_api_engineer-0.3.0 → reverse_api_engineer-0.3.2}/src/reverse_api/session.py +0 -0
- {reverse_api_engineer-0.3.0 → reverse_api_engineer-0.3.2}/src/reverse_api/sync.py +0 -0
- {reverse_api_engineer-0.3.0 → reverse_api_engineer-0.3.2}/src/reverse_api/tui.py +0 -0
|
@@ -77,7 +77,12 @@
|
|
|
77
77
|
"Bash(python har_analyze.py:*)",
|
|
78
78
|
"Bash(python har_validate.py:*)",
|
|
79
79
|
"Bash(git checkout:*)",
|
|
80
|
-
"WebFetch(domain:docs.firecrawl.dev)"
|
|
80
|
+
"WebFetch(domain:docs.firecrawl.dev)",
|
|
81
|
+
"Bash(./generate-icons.sh:*)",
|
|
82
|
+
"Bash(uv run:*)",
|
|
83
|
+
"Bash(/Users/kalilbouzigues/.reverse-api/native-host.py:*)",
|
|
84
|
+
"Bash(timeout 2 /Users/kalilbouzigues/.reverse-api/native-host.py:*)",
|
|
85
|
+
"Bash(./diagnose.sh)"
|
|
81
86
|
]
|
|
82
87
|
}
|
|
83
88
|
}
|
|
@@ -5,6 +5,63 @@ 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
|
+
|
|
21
|
+
## [0.3.1] - 2026-01-15
|
|
22
|
+
|
|
23
|
+
### Added
|
|
24
|
+
- **Chrome Extension (WIP)**: Beta support for capturing browser traffic via Chrome extension
|
|
25
|
+
- Alternative to Playwright browser for HAR capture
|
|
26
|
+
- Works with existing browser sessions
|
|
27
|
+
- Note: This feature is work in progress and may have limitations
|
|
28
|
+
|
|
29
|
+
### Fixed
|
|
30
|
+
- **OpenCode Server**: Fixed error formatting and connection handling
|
|
31
|
+
- **Process Title**: Added process title for better identification in system monitors
|
|
32
|
+
- **Auth Error Handling**: Improved handling of authentication failures
|
|
33
|
+
|
|
34
|
+
## [0.3.0] - 2026-01-10
|
|
35
|
+
|
|
36
|
+
### Added
|
|
37
|
+
- **Collector Mode**: New AI-powered web data collection mode using Claude Agent SDK
|
|
38
|
+
- Natural language prompts to collect structured data from any website
|
|
39
|
+
- Automatic export to JSON and CSV formats
|
|
40
|
+
- Generates README with collection metadata and schema
|
|
41
|
+
- Uses WebFetch, WebSearch, and file tools for autonomous collection
|
|
42
|
+
- **Playwright Codegen**: Generate automation scripts from recorded browser actions
|
|
43
|
+
- Captures clicks, fills, key presses, and navigations
|
|
44
|
+
- Produces stealth-enabled Playwright scripts with proper escaping
|
|
45
|
+
- Deduplicates redundant fill actions and navigations
|
|
46
|
+
- **@docs Tag**: Generate OpenAPI specifications from HAR files
|
|
47
|
+
- Standalone usage: `@docs` to generate from latest run
|
|
48
|
+
- With run ID: `@docs run_id` to generate from specific run
|
|
49
|
+
- **@record-only Tag**: Record HAR files without reverse engineering step
|
|
50
|
+
- **AskUserQuestion Tool**: Interactive prompts during engineering sessions
|
|
51
|
+
- **JS/TS Client Generation**: Support for generating JavaScript/TypeScript API clients
|
|
52
|
+
|
|
53
|
+
### Changed
|
|
54
|
+
- **Improved HAR Filtering**: Better path-based filtering for skip patterns
|
|
55
|
+
- **Enhanced Price Computation**: Fixed pricing for OpenCode provider
|
|
56
|
+
- **Centralized Run Resolution**: Refactored latest run parsing logic
|
|
57
|
+
|
|
58
|
+
### Fixed
|
|
59
|
+
- **Selector Escaping**: Fixed attribute selector escaping for special characters in `name`, `data-testid`, `aria-label`, and `placeholder` values
|
|
60
|
+
- **Null Checks in Codegen**: Added validation for `action.selector` and `action.value` to prevent crashes
|
|
61
|
+
- **CSV Export**: Fixed DictWriter error when items have inconsistent keys
|
|
62
|
+
- **HAR Validation**: Validate HAR file exists when using @docs tag
|
|
63
|
+
- **Path Normalization**: Fixed path handling in various utilities
|
|
64
|
+
|
|
8
65
|
## [0.2.10] - 2026-01-03
|
|
9
66
|
|
|
10
67
|
### 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
|
|
@@ -29,6 +29,7 @@ Requires-Dist: playwright>=1.40.0
|
|
|
29
29
|
Requires-Dist: questionary>=2.0.0
|
|
30
30
|
Requires-Dist: requests>=2.32.5
|
|
31
31
|
Requires-Dist: rich>=13.0.0
|
|
32
|
+
Requires-Dist: setproctitle>=1.3.0
|
|
32
33
|
Requires-Dist: watchdog>=3.0.0
|
|
33
34
|
Provides-Extra: agent
|
|
34
35
|
Requires-Dist: stagehand; extra == 'agent'
|
|
@@ -41,16 +42,20 @@ Description-Content-Type: text/markdown
|
|
|
41
42
|
|
|
42
43
|
<div align="center">
|
|
43
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>
|
|
44
49
|
</div>
|
|
45
50
|
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
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>
|
|
50
55
|
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
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>
|
|
54
59
|
|
|
55
60
|
## Table of Contents
|
|
56
61
|
|
|
@@ -61,13 +66,15 @@ CLI tool that captures browser traffic and automatically generates production-re
|
|
|
61
66
|
- [Manual Mode](#manual-mode)
|
|
62
67
|
- [Engineer Mode](#engineer-mode)
|
|
63
68
|
- [Agent Mode](#agent-mode)
|
|
69
|
+
- [Collector Mode](#collector-mode)
|
|
70
|
+
- [Tags](#tags)
|
|
64
71
|
- [Configuration](#-configuration)
|
|
65
72
|
- [Model Selection](#model-selection)
|
|
66
|
-
- [💸 Free Models with Antigravity](#free-model-options-with-antigravity)
|
|
67
73
|
- [Agent Configuration](#agent-configuration)
|
|
68
74
|
- [SDK Selection](#sdk-selection)
|
|
69
75
|
- [CLI Commands](#-cli-commands)
|
|
70
76
|
- [Claude Code Plugin](#-claude-code-plugin)
|
|
77
|
+
- [Chrome Extension](#-chrome-extension)
|
|
71
78
|
- [Examples](#-examples)
|
|
72
79
|
- [Development](#-development)
|
|
73
80
|
- [Contributing](#-contributing)
|
|
@@ -78,11 +85,13 @@ CLI tool that captures browser traffic and automatically generates production-re
|
|
|
78
85
|
- 🤖 **Autonomous Agent Mode**: Fully automated browser interaction using AI agents (auto mode with MCP, browser-use, stagehand)
|
|
79
86
|
- 📊 **HAR Recording**: Captures all network traffic in HTTP Archive format
|
|
80
87
|
- 🧠 **AI-Powered Generation**: Uses Claude 4.5 to analyze traffic and generate clean Python code
|
|
88
|
+
- 🔍 **Collector Mode**: Data collection with automatic JSON/CSV export
|
|
81
89
|
- 🔌 **Multi-SDK Support**: Native integration with Claude and OpenCode SDKs
|
|
82
90
|
- 💻 **Interactive CLI**: Minimalist terminal interface with mode cycling (Shift+Tab)
|
|
83
91
|
- 📦 **Production Ready**: Generated scripts include error handling, type hints, and documentation
|
|
84
92
|
- 💾 **Session History**: All runs saved locally with full message logs
|
|
85
93
|
- 💰 **Cost Tracking**: Detailed token usage and cost estimation with cache support
|
|
94
|
+
- 🏷️ **Tag System**: Powerful tags for fine-grained control (@record-only, @codegen, @docs, @id)
|
|
86
95
|
|
|
87
96
|
### Limitations
|
|
88
97
|
|
|
@@ -142,10 +151,11 @@ Launch the interactive CLI:
|
|
|
142
151
|
reverse-api-engineer
|
|
143
152
|
```
|
|
144
153
|
|
|
145
|
-
The CLI has
|
|
154
|
+
The CLI has four modes (cycle with **Shift+Tab**):
|
|
146
155
|
- **manual**: Browser capture + AI generation
|
|
147
156
|
- **engineer**: Re-process existing captures
|
|
148
157
|
- **agent**: Autonomous AI browser agent (default: auto mode with MCP-based browser + real-time reverse engineering)
|
|
158
|
+
- **collector**: AI-powered web data collection (very minimalist version for now)
|
|
149
159
|
|
|
150
160
|
Example workflow:
|
|
151
161
|
```bash
|
|
@@ -204,19 +214,88 @@ Fully automated browser interaction using AI agents:
|
|
|
204
214
|
|
|
205
215
|
Change agent provider in `/settings` → "agent provider".
|
|
206
216
|
|
|
217
|
+
### Collector Mode
|
|
218
|
+
|
|
219
|
+
Web data collection using Claude Agent SDK:
|
|
220
|
+
|
|
221
|
+
1. Start CLI and switch to collector mode (Shift+Tab)
|
|
222
|
+
2. Enter a natural language prompt describing the data to collect (e.g., "Find 3 JS frameworks")
|
|
223
|
+
3. The agent uses WebFetch, WebSearch, and file tools to autonomously collect structured data
|
|
224
|
+
4. Data is automatically exported to JSON and CSV formats
|
|
225
|
+
|
|
226
|
+
**Output locations:**
|
|
227
|
+
- `~/.reverse-api/runs/collected/{folder_name}/` (permanent storage)
|
|
228
|
+
- `./collected/{folder_name}/` (local copy with readable name)
|
|
229
|
+
|
|
230
|
+
**Output files:**
|
|
231
|
+
- `items.json` - Collected data in JSON format
|
|
232
|
+
- `items.csv` - Collected data in CSV format
|
|
233
|
+
- `README.md` - Collection metadata and schema documentation
|
|
234
|
+
|
|
235
|
+
**Model Configuration:**
|
|
236
|
+
Collector mode uses the `collector_model` setting (default: `claude-sonnet-4-5`). This can be configured in `~/.reverse-api/config.json`.
|
|
237
|
+
|
|
238
|
+
Example workflow:
|
|
239
|
+
```bash
|
|
240
|
+
$ reverse-api-engineer
|
|
241
|
+
> Find 3 JS frameworks
|
|
242
|
+
|
|
243
|
+
# Agent autonomously searches and collects data
|
|
244
|
+
# Data saved to: ./collected/js_frameworks/
|
|
245
|
+
```
|
|
246
|
+
|
|
247
|
+
## 🏷️ Tags
|
|
248
|
+
|
|
249
|
+
Tags provide additional control and functionality within each mode:
|
|
250
|
+
|
|
251
|
+
### Manual/Agent Mode Tags
|
|
252
|
+
|
|
253
|
+
- **`@record-only`** - Record HAR file only, skip reverse engineering step
|
|
254
|
+
- Example: `@record-only navigate checkout flow`
|
|
255
|
+
- Useful when you want to capture traffic for later analysis
|
|
256
|
+
|
|
257
|
+
- **`@codegen`** - Record browser actions and generate Playwright automation script
|
|
258
|
+
- Example: `@codegen navigate to google`
|
|
259
|
+
- Captures clicks, fills, and navigations to create a reusable Playwright script
|
|
260
|
+
|
|
261
|
+
### Engineer Mode Tags
|
|
262
|
+
|
|
263
|
+
- **`@id <run_id>`** - Switch context to a specific run ID
|
|
264
|
+
- Example: `@id abc123`
|
|
265
|
+
- Loads a previous capture session for re-engineering
|
|
266
|
+
|
|
267
|
+
- **`@id <run_id> <prompt>`** - Run engineer on a specific run with instructions
|
|
268
|
+
- Example: `@id abc123 extract user profile`
|
|
269
|
+
- Re-processes a capture with new instructions
|
|
270
|
+
|
|
271
|
+
- **`@id <run_id> --fresh <prompt>`** - Start fresh (ignore previous scripts)
|
|
272
|
+
- Example: `@id abc123 --fresh restart analysis`
|
|
273
|
+
- Generates new code from scratch, ignoring previous implementations
|
|
274
|
+
|
|
275
|
+
- **`@docs`** - Generate API documentation (OpenAPI spec) for the latest run
|
|
276
|
+
- Example: `@docs`
|
|
277
|
+
- Creates OpenAPI specification from captured traffic
|
|
278
|
+
|
|
279
|
+
- **`@id <run_id> @docs`** - Generate API documentation for a specific run
|
|
280
|
+
- Example: `@id abc123 @docs`
|
|
281
|
+
- Creates OpenAPI specification for a specific capture session
|
|
282
|
+
|
|
207
283
|
## 🔧 Configuration
|
|
208
284
|
|
|
209
285
|
Settings stored in `~/.reverse-api/config.json`:
|
|
210
286
|
```json
|
|
211
287
|
{
|
|
288
|
+
"agent_provider": "auto",
|
|
289
|
+
"browser_use_model": "bu-llm",
|
|
212
290
|
"claude_code_model": "claude-sonnet-4-5",
|
|
213
|
-
"
|
|
291
|
+
"collector_model": "claude-sonnet-4-5",
|
|
214
292
|
"opencode_model": "claude-sonnet-4-5",
|
|
293
|
+
"opencode_provider": "anthropic",
|
|
294
|
+
"output_dir": null,
|
|
295
|
+
"output_language": "python",
|
|
296
|
+
"real_time_sync": true,
|
|
215
297
|
"sdk": "claude",
|
|
216
|
-
"
|
|
217
|
-
"browser_use_model": "bu-llm",
|
|
218
|
-
"stagehand_model": "openai/computer-use-preview-2025-03-11",
|
|
219
|
-
"output_dir": null
|
|
298
|
+
"stagehand_model": "openai/computer-use-preview-2025-03-11"
|
|
220
299
|
}
|
|
221
300
|
```
|
|
222
301
|
|
|
@@ -232,31 +311,7 @@ Change in `/settings` or via CLI:
|
|
|
232
311
|
reverse-api-engineer manual --model claude-sonnet-4-5
|
|
233
312
|
```
|
|
234
313
|
|
|
235
|
-
If you use Opencode, look at the [models](https://models.dev).
|
|
236
|
-
|
|
237
|
-
### Free Model Options with Antigravity
|
|
238
|
-
|
|
239
|
-
You can use free models via [Antigravity](https://github.com/NoeFabris/opencode-antigravity-auth) for API generation. See [available models](https://github.com/NoeFabris/opencode-antigravity-auth#available-models) for the full list.
|
|
240
|
-
|
|
241
|
-
**Setup:**
|
|
242
|
-
1. Follow the [Antigravity setup instructions](https://github.com/NoeFabris/opencode-antigravity-auth)
|
|
243
|
-
2. In `/settings`, configure:
|
|
244
|
-
- **SDK**: Set to `opencode` (required for Antigravity)
|
|
245
|
-
- **opencode provider**: Set to `google`
|
|
246
|
-
- **opencode model**: Set to `gemini-3-flash` (or any available Antigravity model)
|
|
247
|
-
|
|
248
|
-
**Available Antigravity Models:**
|
|
249
|
-
- `gemini-3-pro-low` - Gemini 3 Pro Low (Antigravity)
|
|
250
|
-
- `gemini-3-pro-high` - Gemini 3 Pro High (Antigravity)
|
|
251
|
-
- `gemini-3-flash` - Gemini 3 Flash (Antigravity) (recommended)
|
|
252
|
-
- `claude-sonnet-4-5` - Claude Sonnet 4.5 (Antigravity)
|
|
253
|
-
- `claude-sonnet-4-5-thinking-low` - Claude Sonnet 4.5 Thinking Low (Antigravity)
|
|
254
|
-
- `claude-sonnet-4-5-thinking-medium` - Claude Sonnet 4.5 Thinking Medium (Antigravity)
|
|
255
|
-
- `claude-sonnet-4-5-thinking-high` - Claude Sonnet 4.5 Thinking High (Antigravity)
|
|
256
|
-
- `claude-opus-4-5-thinking-low` - Claude Opus 4.5 Thinking Low (Antigravity)
|
|
257
|
-
- `claude-opus-4-5-thinking-medium` - Claude Opus 4.5 Thinking Medium (Antigravity)
|
|
258
|
-
- `claude-opus-4-5-thinking-high` - Claude Opus 4.5 Thinking High (Antigravity)
|
|
259
|
-
- `gpt-oss-120b-medium` - GPT-OSS 120B Medium (Antigravity)
|
|
314
|
+
If you use Opencode, look at the [models](https://models.dev).
|
|
260
315
|
|
|
261
316
|
### Agent Configuration
|
|
262
317
|
|
|
@@ -297,6 +352,35 @@ Change in `/settings` → "agent provider" and "agent model"
|
|
|
297
352
|
|
|
298
353
|
Change in `/settings` or edit `config.json` directly.
|
|
299
354
|
|
|
355
|
+
### Output Language
|
|
356
|
+
|
|
357
|
+
Control the programming language of generated API clients:
|
|
358
|
+
- **python** (default): Generate Python API clients
|
|
359
|
+
- **javascript**: Generate JavaScript API clients
|
|
360
|
+
- **typescript**: Generate TypeScript API clients
|
|
361
|
+
|
|
362
|
+
Change in `/settings` → "Output Language" or edit `config.json`:
|
|
363
|
+
```json
|
|
364
|
+
{
|
|
365
|
+
"output_language": "typescript"
|
|
366
|
+
}
|
|
367
|
+
```
|
|
368
|
+
|
|
369
|
+
### Real-time Sync
|
|
370
|
+
|
|
371
|
+
Enable or disable real-time file synchronization during engineering sessions:
|
|
372
|
+
- **Enabled** (default): Files are synced to disk as they're generated
|
|
373
|
+
- **Disabled**: Files are written only at the end of the session
|
|
374
|
+
|
|
375
|
+
When enabled, you can see files appear in real-time as the AI generates them. This is useful for monitoring progress and debugging.
|
|
376
|
+
|
|
377
|
+
Change in `/settings` → "Real-time Sync" or edit `config.json`:
|
|
378
|
+
```json
|
|
379
|
+
{
|
|
380
|
+
"real_time_sync": false
|
|
381
|
+
}
|
|
382
|
+
```
|
|
383
|
+
|
|
300
384
|
## 💻 CLI Commands
|
|
301
385
|
|
|
302
386
|
Use these slash commands while in the CLI:
|
|
@@ -318,6 +402,84 @@ claude # Open REPL
|
|
|
318
402
|
|
|
319
403
|
See [plugin documentation](plugins/reverse-api-engineer/README.md) for commands, agents, skills, and usage examples.
|
|
320
404
|
|
|
405
|
+
## 🌐 Chrome Extension
|
|
406
|
+
|
|
407
|
+
**⚠️ Work in Progress**
|
|
408
|
+
|
|
409
|
+
A Chrome extension that provides browser-native integration with reverse-api-engineer. The extension allows you to capture browser traffic directly from Chrome and interact with the reverse engineering process through a side panel interface.
|
|
410
|
+
|
|
411
|
+
**Features:**
|
|
412
|
+
- **HAR Capture**: Record network traffic using Chrome's Debugger API
|
|
413
|
+
- **Side Panel UI**: Interactive interface for managing captures and chatting with the AI agent
|
|
414
|
+
- **Native Host Integration**: Communicates with the reverse-api-engineer CLI tool
|
|
415
|
+
|
|
416
|
+
### Local Development Setup
|
|
417
|
+
|
|
418
|
+
To run the Chrome extension locally for development:
|
|
419
|
+
|
|
420
|
+
**Prerequisites:**
|
|
421
|
+
- Node.js and npm installed
|
|
422
|
+
- Chrome browser
|
|
423
|
+
- reverse-api-engineer CLI installed and native host configured
|
|
424
|
+
|
|
425
|
+
**Setup Steps:**
|
|
426
|
+
|
|
427
|
+
1. **Clone the repository:**
|
|
428
|
+
```bash
|
|
429
|
+
git clone https://github.com/kalil0321/reverse-api-engineer.git
|
|
430
|
+
cd reverse-api-engineer
|
|
431
|
+
```
|
|
432
|
+
|
|
433
|
+
2. **Navigate to the extension directory:**
|
|
434
|
+
```bash
|
|
435
|
+
cd chrome-extension
|
|
436
|
+
```
|
|
437
|
+
|
|
438
|
+
3. **Install dependencies:**
|
|
439
|
+
```bash
|
|
440
|
+
npm install
|
|
441
|
+
```
|
|
442
|
+
|
|
443
|
+
4. **Build the extension:**
|
|
444
|
+
```bash
|
|
445
|
+
npm run build
|
|
446
|
+
```
|
|
447
|
+
This creates a `dist` directory with the compiled extension.
|
|
448
|
+
|
|
449
|
+
5. **Load the extension in Chrome:**
|
|
450
|
+
- Open Chrome and navigate to `chrome://extensions/`
|
|
451
|
+
- Enable "Developer mode" (toggle in the top-right corner)
|
|
452
|
+
- Click "Load unpacked"
|
|
453
|
+
- Select the `chrome-extension/dist` directory
|
|
454
|
+
- The extension should now appear in your extensions list
|
|
455
|
+
|
|
456
|
+
6. **Configure Native Host:**
|
|
457
|
+
- Ensure the native host is installed:
|
|
458
|
+
```bash
|
|
459
|
+
reverse-api-engineer install-host
|
|
460
|
+
```
|
|
461
|
+
- The extension communicates with the CLI via native messaging
|
|
462
|
+
|
|
463
|
+
**Development Workflow:**
|
|
464
|
+
|
|
465
|
+
- **Watch mode** (auto-rebuild on changes):
|
|
466
|
+
```bash
|
|
467
|
+
npm run dev
|
|
468
|
+
```
|
|
469
|
+
After rebuilding, reload the extension in Chrome (`chrome://extensions/` → click the reload icon).
|
|
470
|
+
|
|
471
|
+
- **Production build:**
|
|
472
|
+
```bash
|
|
473
|
+
npm run build
|
|
474
|
+
```
|
|
475
|
+
|
|
476
|
+
- **Type checking:**
|
|
477
|
+
```bash
|
|
478
|
+
npm run typecheck
|
|
479
|
+
```
|
|
480
|
+
|
|
481
|
+
**Status:** The extension is currently under active development. Some features may be incomplete or subject to change.
|
|
482
|
+
|
|
321
483
|
## 💡 Examples
|
|
322
484
|
|
|
323
485
|
### Example: Reverse Engineering a Job Board API
|
|
@@ -353,7 +515,7 @@ cd reverse-api-engineer
|
|
|
353
515
|
uv sync
|
|
354
516
|
```
|
|
355
517
|
|
|
356
|
-
### Run
|
|
518
|
+
### Run
|
|
357
519
|
```bash
|
|
358
520
|
uv run reverse-api-engineer
|
|
359
521
|
```
|
|
@@ -363,12 +525,6 @@ uv run reverse-api-engineer
|
|
|
363
525
|
./scripts/clean_build.sh
|
|
364
526
|
```
|
|
365
527
|
|
|
366
|
-
## 🗺️ Roadmap
|
|
367
|
-
|
|
368
|
-
- ✅ **Claude SDK** - Integration with Claude Code
|
|
369
|
-
- ✅ **OpenCode SDK** - Integration with OpenCode
|
|
370
|
-
- 🔄 **Codex SDK** - Codex SDK support
|
|
371
|
-
|
|
372
528
|
## 🔐 Requirements
|
|
373
529
|
|
|
374
530
|
- Python 3.11+
|