reverse-api-engineer 0.2.10__tar.gz → 0.3.1__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.2.10 → reverse_api_engineer-0.3.1}/.claude/settings.local.json +13 -1
- {reverse_api_engineer-0.2.10 → reverse_api_engineer-0.3.1}/.gitignore +7 -0
- {reverse_api_engineer-0.2.10 → reverse_api_engineer-0.3.1}/CHANGELOG.md +44 -0
- {reverse_api_engineer-0.2.10 → reverse_api_engineer-0.3.1}/PKG-INFO +198 -42
- {reverse_api_engineer-0.2.10 → reverse_api_engineer-0.3.1}/README.md +193 -41
- reverse_api_engineer-0.3.1/TEST_UI_README.md +194 -0
- reverse_api_engineer-0.3.1/chrome-extension/.claude/settings.local.json +7 -0
- reverse_api_engineer-0.3.1/chrome-extension/package-lock.json +4703 -0
- reverse_api_engineer-0.3.1/chrome-extension/package.json +33 -0
- reverse_api_engineer-0.3.1/chrome-extension/postcss.config.js +6 -0
- reverse_api_engineer-0.3.1/chrome-extension/public/_locales/en/messages.json +10 -0
- reverse_api_engineer-0.3.1/chrome-extension/public/icons/icon-128.png +0 -0
- reverse_api_engineer-0.3.1/chrome-extension/public/icons/icon-16.png +0 -0
- reverse_api_engineer-0.3.1/chrome-extension/public/icons/icon-32.png +0 -0
- reverse_api_engineer-0.3.1/chrome-extension/public/icons/icon-48.png +0 -0
- reverse_api_engineer-0.3.1/chrome-extension/public/manifest.json +39 -0
- reverse_api_engineer-0.3.1/chrome-extension/src/background/service-worker.ts +197 -0
- reverse_api_engineer-0.3.1/chrome-extension/src/components/agent-action.tsx +123 -0
- reverse_api_engineer-0.3.1/chrome-extension/src/components/chat-input.tsx +76 -0
- reverse_api_engineer-0.3.1/chrome-extension/src/components/markdown-renderer.tsx +88 -0
- reverse_api_engineer-0.3.1/chrome-extension/src/components/plan.tsx +92 -0
- reverse_api_engineer-0.3.1/chrome-extension/src/components/terminal.tsx +63 -0
- reverse_api_engineer-0.3.1/chrome-extension/src/index.css +96 -0
- reverse_api_engineer-0.3.1/chrome-extension/src/shared/capture.ts +445 -0
- reverse_api_engineer-0.3.1/chrome-extension/src/shared/native-host.ts +163 -0
- reverse_api_engineer-0.3.1/chrome-extension/src/shared/storage.ts +75 -0
- reverse_api_engineer-0.3.1/chrome-extension/src/shared/types.ts +41 -0
- reverse_api_engineer-0.3.1/chrome-extension/src/sidepanel/index.html +12 -0
- reverse_api_engineer-0.3.1/chrome-extension/src/sidepanel/main.tsx +10 -0
- reverse_api_engineer-0.3.1/chrome-extension/src/sidepanel/side-panel.tsx +371 -0
- reverse_api_engineer-0.3.1/chrome-extension/src/vite-env.d.ts +1 -0
- reverse_api_engineer-0.3.1/chrome-extension/tailwind.config.js +28 -0
- reverse_api_engineer-0.3.1/chrome-extension/tsconfig.json +20 -0
- reverse_api_engineer-0.3.1/chrome-extension/vite.config.ts +83 -0
- reverse_api_engineer-0.3.1/examples/autoscout24/README.md +336 -0
- reverse_api_engineer-0.3.1/examples/autoscout24/SUMMARY.md +192 -0
- reverse_api_engineer-0.3.1/examples/autoscout24/api_client.py +509 -0
- {reverse_api_engineer-0.2.10 → reverse_api_engineer-0.3.1}/plugins/reverse-api-engineer/commands/agent.md +120 -17
- reverse_api_engineer-0.3.1/plugins/reverse-api-engineer/commands/capture.md +191 -0
- {reverse_api_engineer-0.2.10 → reverse_api_engineer-0.3.1}/plugins/reverse-api-engineer/commands/engineer.md +115 -23
- {reverse_api_engineer-0.2.10 → reverse_api_engineer-0.3.1}/plugins/reverse-api-engineer/commands/manual.md +119 -21
- {reverse_api_engineer-0.2.10 → reverse_api_engineer-0.3.1}/plugins/reverse-api-engineer/skills/reverse-engineering-api/SKILL.md +76 -0
- reverse_api_engineer-0.3.1/plugins/reverse-api-engineer/skills/reverse-engineering-api/scripts/har_analyze.py +554 -0
- reverse_api_engineer-0.3.1/plugins/reverse-api-engineer/skills/reverse-engineering-api/scripts/har_filter.py +438 -0
- reverse_api_engineer-0.3.1/plugins/reverse-api-engineer/skills/reverse-engineering-api/scripts/har_utils.py +405 -0
- reverse_api_engineer-0.3.1/plugins/reverse-api-engineer/skills/reverse-engineering-api/scripts/har_validate.py +457 -0
- {reverse_api_engineer-0.2.10 → reverse_api_engineer-0.3.1}/pyproject.toml +6 -1
- reverse_api_engineer-0.3.1/src/reverse_api/action_recorder.py +51 -0
- {reverse_api_engineer-0.2.10 → reverse_api_engineer-0.3.1}/src/reverse_api/auto_engineer.py +163 -138
- reverse_api_engineer-0.3.1/src/reverse_api/base_engineer.py +429 -0
- {reverse_api_engineer-0.2.10 → reverse_api_engineer-0.3.1}/src/reverse_api/browser.py +217 -35
- {reverse_api_engineer-0.2.10 → reverse_api_engineer-0.3.1}/src/reverse_api/cli.py +365 -48
- reverse_api_engineer-0.3.1/src/reverse_api/collector.py +318 -0
- reverse_api_engineer-0.3.1/src/reverse_api/collector_ui.py +106 -0
- {reverse_api_engineer-0.2.10 → reverse_api_engineer-0.3.1}/src/reverse_api/config.py +6 -4
- {reverse_api_engineer-0.2.10 → reverse_api_engineer-0.3.1}/src/reverse_api/engineer.py +149 -34
- {reverse_api_engineer-0.2.10 → reverse_api_engineer-0.3.1}/src/reverse_api/messages.py +1 -3
- reverse_api_engineer-0.3.1/src/reverse_api/native_host.py +771 -0
- {reverse_api_engineer-0.2.10 → reverse_api_engineer-0.3.1}/src/reverse_api/opencode_engineer.py +142 -76
- {reverse_api_engineer-0.2.10 → reverse_api_engineer-0.3.1}/src/reverse_api/opencode_ui.py +10 -8
- reverse_api_engineer-0.3.1/src/reverse_api/playwright_codegen.py +130 -0
- {reverse_api_engineer-0.2.10 → reverse_api_engineer-0.3.1}/src/reverse_api/pricing.py +1 -2
- {reverse_api_engineer-0.2.10 → reverse_api_engineer-0.3.1}/src/reverse_api/session.py +1 -0
- {reverse_api_engineer-0.2.10 → reverse_api_engineer-0.3.1}/src/reverse_api/sync.py +2 -6
- {reverse_api_engineer-0.2.10 → reverse_api_engineer-0.3.1}/src/reverse_api/tui.py +8 -18
- {reverse_api_engineer-0.2.10 → reverse_api_engineer-0.3.1}/src/reverse_api/utils.py +242 -13
- {reverse_api_engineer-0.2.10 → reverse_api_engineer-0.3.1}/uv.lock +125 -2
- reverse_api_engineer-0.2.10/llm-docs/building-skill/OVERVIEW.md +0 -130
- reverse_api_engineer-0.2.10/llm-docs/building-skill/SPECS.md +0 -262
- reverse_api_engineer-0.2.10/llm-docs/building-skill/WHAT-ARE-SKILLS.md +0 -82
- reverse_api_engineer-0.2.10/llm-docs/crawler/DOCS.md +0 -6
- reverse_api_engineer-0.2.10/src/reverse_api/base_engineer.py +0 -229
- reverse_api_engineer-0.2.10/src/reverse_api/tools/crawler.py +0 -417
- reverse_api_engineer-0.2.10/src/reverse_api/tools/firecrawl_out_join_com.json +0 -4908
- reverse_api_engineer-0.2.10/src/reverse_api/tools/mapper.py +0 -407
- reverse_api_engineer-0.2.10/src/reverse_api/tools/mapping_.json +0 -160
- reverse_api_engineer-0.2.10/src/reverse_api/tools/sitemap.py +0 -301
- {reverse_api_engineer-0.2.10 → reverse_api_engineer-0.3.1}/.claude-plugin/marketplace.json +0 -0
- {reverse_api_engineer-0.2.10 → reverse_api_engineer-0.3.1}/.python-version +0 -0
- {reverse_api_engineer-0.2.10 → reverse_api_engineer-0.3.1}/CLAUDE.md +0 -0
- {reverse_api_engineer-0.2.10 → reverse_api_engineer-0.3.1}/CONTRIBUTING.md +0 -0
- {reverse_api_engineer-0.2.10 → reverse_api_engineer-0.3.1}/INTERVIEW.md +0 -0
- {reverse_api_engineer-0.2.10 → reverse_api_engineer-0.3.1}/LICENSE +0 -0
- {reverse_api_engineer-0.2.10 → reverse_api_engineer-0.3.1}/RELEASING.md +0 -0
- {reverse_api_engineer-0.2.10 → reverse_api_engineer-0.3.1}/assets/reverse-api-banner.svg +0 -0
- {reverse_api_engineer-0.2.10 → reverse_api_engineer-0.3.1}/assets/reverse-api-engineer.gif +0 -0
- {reverse_api_engineer-0.2.10 → reverse_api_engineer-0.3.1}/assets/reverse-api-logo.svg +0 -0
- {reverse_api_engineer-0.2.10 → reverse_api_engineer-0.3.1}/examples/apple/INDEX.md +0 -0
- {reverse_api_engineer-0.2.10 → reverse_api_engineer-0.3.1}/examples/apple/QUICKSTART.md +0 -0
- {reverse_api_engineer-0.2.10 → reverse_api_engineer-0.3.1}/examples/apple/README.md +0 -0
- {reverse_api_engineer-0.2.10 → reverse_api_engineer-0.3.1}/examples/apple/SUMMARY.md +0 -0
- {reverse_api_engineer-0.2.10 → reverse_api_engineer-0.3.1}/examples/apple/api_client.py +0 -0
- {reverse_api_engineer-0.2.10 → reverse_api_engineer-0.3.1}/examples/apple/extract_job_fields.py +0 -0
- {reverse_api_engineer-0.2.10 → reverse_api_engineer-0.3.1}/examples/apple/main.py +0 -0
- {reverse_api_engineer-0.2.10 → reverse_api_engineer-0.3.1}/examples/apple/quick_example.py +0 -0
- {reverse_api_engineer-0.2.10 → reverse_api_engineer-0.3.1}/examples/apple/requirements.txt +0 -0
- {reverse_api_engineer-0.2.10 → reverse_api_engineer-0.3.1}/examples/ashby/API_SUMMARY.txt +0 -0
- {reverse_api_engineer-0.2.10 → reverse_api_engineer-0.3.1}/examples/ashby/QUICKSTART.md +0 -0
- {reverse_api_engineer-0.2.10 → reverse_api_engineer-0.3.1}/examples/ashby/README.md +0 -0
- {reverse_api_engineer-0.2.10 → reverse_api_engineer-0.3.1}/examples/ashby/api_client.py +0 -0
- {reverse_api_engineer-0.2.10 → reverse_api_engineer-0.3.1}/examples/ashby/example_usage.py +0 -0
- {reverse_api_engineer-0.2.10 → reverse_api_engineer-0.3.1}/examples/ashby/requirements.txt +0 -0
- {reverse_api_engineer-0.2.10 → reverse_api_engineer-0.3.1}/examples/ikea/README.md +0 -0
- {reverse_api_engineer-0.2.10 → reverse_api_engineer-0.3.1}/examples/ikea/api_client.py +0 -0
- {reverse_api_engineer-0.2.10 → reverse_api_engineer-0.3.1}/examples/uber/API_ANALYSIS_SUMMARY.md +0 -0
- {reverse_api_engineer-0.2.10 → reverse_api_engineer-0.3.1}/examples/uber/README.md +0 -0
- {reverse_api_engineer-0.2.10 → reverse_api_engineer-0.3.1}/examples/uber/api_client.py +0 -0
- {reverse_api_engineer-0.2.10 → reverse_api_engineer-0.3.1}/examples/uber/example_fetch_all_jobs.py +0 -0
- {reverse_api_engineer-0.2.10 → reverse_api_engineer-0.3.1}/examples/uber/quick_start.py +0 -0
- {reverse_api_engineer-0.2.10 → reverse_api_engineer-0.3.1}/examples/uber/requirements.txt +0 -0
- {reverse_api_engineer-0.2.10 → reverse_api_engineer-0.3.1}/llm-docs/OPENCODE_API_SUMMARY.md +0 -0
- {reverse_api_engineer-0.2.10 → reverse_api_engineer-0.3.1}/llm-docs/claude-agent-sdk/QUICKSTART.md +0 -0
- {reverse_api_engineer-0.2.10 → reverse_api_engineer-0.3.1}/llm-docs/claude-agent-sdk/TODO_LIST.md +0 -0
- {reverse_api_engineer-0.2.10 → reverse_api_engineer-0.3.1}/llm-docs/claude-agent-sdk/TOOLS.md +0 -0
- {reverse_api_engineer-0.2.10 → reverse_api_engineer-0.3.1}/llm-docs/opencode-api.json +0 -0
- {reverse_api_engineer-0.2.10 → reverse_api_engineer-0.3.1}/plugins/reverse-api-engineer/.claude-plugin/plugin.json +0 -0
- {reverse_api_engineer-0.2.10 → reverse_api_engineer-0.3.1}/plugins/reverse-api-engineer/CHANGELOG.md +0 -0
- {reverse_api_engineer-0.2.10 → reverse_api_engineer-0.3.1}/plugins/reverse-api-engineer/LICENSE +0 -0
- {reverse_api_engineer-0.2.10 → reverse_api_engineer-0.3.1}/plugins/reverse-api-engineer/README.md +0 -0
- {reverse_api_engineer-0.2.10 → reverse_api_engineer-0.3.1}/plugins/reverse-api-engineer/agents/api-reverse-engineer.md +0 -0
- {reverse_api_engineer-0.2.10 → reverse_api_engineer-0.3.1}/plugins/reverse-api-engineer/skills/reverse-engineering-api/CHANGELOG.md +0 -0
- {reverse_api_engineer-0.2.10 → reverse_api_engineer-0.3.1}/plugins/reverse-api-engineer/skills/reverse-engineering-api/LICENSE +0 -0
- {reverse_api_engineer-0.2.10 → reverse_api_engineer-0.3.1}/plugins/reverse-api-engineer/skills/reverse-engineering-api/references/AUTH_PATTERNS.md +0 -0
- {reverse_api_engineer-0.2.10 → reverse_api_engineer-0.3.1}/plugins/reverse-api-engineer/skills/reverse-engineering-api/references/HAR_ANALYSIS.md +0 -0
- {reverse_api_engineer-0.2.10 → reverse_api_engineer-0.3.1}/plugins/reverse-api-engineer/skills/reverse-engineering-api/templates/api_client.py +0 -0
- {reverse_api_engineer-0.2.10 → reverse_api_engineer-0.3.1}/scripts/clean_build.sh +0 -0
- {reverse_api_engineer-0.2.10 → reverse_api_engineer-0.3.1}/src/reverse_api/__init__.py +0 -0
|
@@ -70,7 +70,19 @@
|
|
|
70
70
|
"mcp__plugin_reverse-api-engineer_rae-playwright-mcp__browser_snapshot",
|
|
71
71
|
"mcp__plugin_reverse-api-engineer_rae-playwright-mcp__browser_run_code",
|
|
72
72
|
"mcp__plugin_reverse-api-engineer_rae-playwright-mcp__browser_network_requests",
|
|
73
|
-
"Skill(reverse-api-engineer:reverse-engineering-api)"
|
|
73
|
+
"Skill(reverse-api-engineer:reverse-engineering-api)",
|
|
74
|
+
"Bash(uv run python:*)",
|
|
75
|
+
"Bash(wc:*)",
|
|
76
|
+
"Bash(python har_filter.py:*)",
|
|
77
|
+
"Bash(python har_analyze.py:*)",
|
|
78
|
+
"Bash(python har_validate.py:*)",
|
|
79
|
+
"Bash(git checkout:*)",
|
|
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)"
|
|
74
86
|
]
|
|
75
87
|
}
|
|
76
88
|
}
|
|
@@ -5,6 +5,50 @@ 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.1] - 2026-01-15
|
|
9
|
+
|
|
10
|
+
### Added
|
|
11
|
+
- **Chrome Extension (WIP)**: Beta support for capturing browser traffic via Chrome extension
|
|
12
|
+
- Alternative to Playwright browser for HAR capture
|
|
13
|
+
- Works with existing browser sessions
|
|
14
|
+
- Note: This feature is work in progress and may have limitations
|
|
15
|
+
|
|
16
|
+
### Fixed
|
|
17
|
+
- **OpenCode Server**: Fixed error formatting and connection handling
|
|
18
|
+
- **Process Title**: Added process title for better identification in system monitors
|
|
19
|
+
- **Auth Error Handling**: Improved handling of authentication failures
|
|
20
|
+
|
|
21
|
+
## [0.3.0] - 2026-01-10
|
|
22
|
+
|
|
23
|
+
### Added
|
|
24
|
+
- **Collector Mode**: New AI-powered web data collection mode using Claude Agent SDK
|
|
25
|
+
- Natural language prompts to collect structured data from any website
|
|
26
|
+
- Automatic export to JSON and CSV formats
|
|
27
|
+
- Generates README with collection metadata and schema
|
|
28
|
+
- Uses WebFetch, WebSearch, and file tools for autonomous collection
|
|
29
|
+
- **Playwright Codegen**: Generate automation scripts from recorded browser actions
|
|
30
|
+
- Captures clicks, fills, key presses, and navigations
|
|
31
|
+
- Produces stealth-enabled Playwright scripts with proper escaping
|
|
32
|
+
- Deduplicates redundant fill actions and navigations
|
|
33
|
+
- **@docs Tag**: Generate OpenAPI specifications from HAR files
|
|
34
|
+
- Standalone usage: `@docs` to generate from latest run
|
|
35
|
+
- With run ID: `@docs run_id` to generate from specific run
|
|
36
|
+
- **@record-only Tag**: Record HAR files without reverse engineering step
|
|
37
|
+
- **AskUserQuestion Tool**: Interactive prompts during engineering sessions
|
|
38
|
+
- **JS/TS Client Generation**: Support for generating JavaScript/TypeScript API clients
|
|
39
|
+
|
|
40
|
+
### Changed
|
|
41
|
+
- **Improved HAR Filtering**: Better path-based filtering for skip patterns
|
|
42
|
+
- **Enhanced Price Computation**: Fixed pricing for OpenCode provider
|
|
43
|
+
- **Centralized Run Resolution**: Refactored latest run parsing logic
|
|
44
|
+
|
|
45
|
+
### Fixed
|
|
46
|
+
- **Selector Escaping**: Fixed attribute selector escaping for special characters in `name`, `data-testid`, `aria-label`, and `placeholder` values
|
|
47
|
+
- **Null Checks in Codegen**: Added validation for `action.selector` and `action.value` to prevent crashes
|
|
48
|
+
- **CSV Export**: Fixed DictWriter error when items have inconsistent keys
|
|
49
|
+
- **HAR Validation**: Validate HAR file exists when using @docs tag
|
|
50
|
+
- **Path Normalization**: Fixed path handling in various utilities
|
|
51
|
+
|
|
8
52
|
## [0.2.10] - 2026-01-03
|
|
9
53
|
|
|
10
54
|
### Added
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: reverse-api-engineer
|
|
3
|
-
Version: 0.
|
|
3
|
+
Version: 0.3.1
|
|
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,9 +29,13 @@ 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'
|
|
36
|
+
Provides-Extra: collector
|
|
37
|
+
Requires-Dist: beautifulsoup4>=4.12.0; extra == 'collector'
|
|
38
|
+
Requires-Dist: markdownify>=0.12.0; extra == 'collector'
|
|
35
39
|
Provides-Extra: pricing
|
|
36
40
|
Requires-Dist: litellm>=1.0.0; extra == 'pricing'
|
|
37
41
|
Description-Content-Type: text/markdown
|
|
@@ -41,8 +45,9 @@ Description-Content-Type: text/markdown
|
|
|
41
45
|
</div>
|
|
42
46
|
|
|
43
47
|

|
|
44
|
-
[](https://www.python.org/downloads/)
|
|
49
|
+
[](https://opensource.org/licenses/MIT)
|
|
50
|
+
[](https://pepy.tech/projects/reverse-api-engineer)
|
|
46
51
|
|
|
47
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.
|
|
48
53
|
|
|
@@ -57,13 +62,15 @@ CLI tool that captures browser traffic and automatically generates production-re
|
|
|
57
62
|
- [Manual Mode](#manual-mode)
|
|
58
63
|
- [Engineer Mode](#engineer-mode)
|
|
59
64
|
- [Agent Mode](#agent-mode)
|
|
65
|
+
- [Collector Mode](#collector-mode)
|
|
66
|
+
- [Tags](#tags)
|
|
60
67
|
- [Configuration](#-configuration)
|
|
61
68
|
- [Model Selection](#model-selection)
|
|
62
|
-
- [💸 Free Models with Antigravity](#free-model-options-with-antigravity)
|
|
63
69
|
- [Agent Configuration](#agent-configuration)
|
|
64
70
|
- [SDK Selection](#sdk-selection)
|
|
65
71
|
- [CLI Commands](#-cli-commands)
|
|
66
72
|
- [Claude Code Plugin](#-claude-code-plugin)
|
|
73
|
+
- [Chrome Extension](#-chrome-extension)
|
|
67
74
|
- [Examples](#-examples)
|
|
68
75
|
- [Development](#-development)
|
|
69
76
|
- [Contributing](#-contributing)
|
|
@@ -74,11 +81,13 @@ CLI tool that captures browser traffic and automatically generates production-re
|
|
|
74
81
|
- 🤖 **Autonomous Agent Mode**: Fully automated browser interaction using AI agents (auto mode with MCP, browser-use, stagehand)
|
|
75
82
|
- 📊 **HAR Recording**: Captures all network traffic in HTTP Archive format
|
|
76
83
|
- 🧠 **AI-Powered Generation**: Uses Claude 4.5 to analyze traffic and generate clean Python code
|
|
84
|
+
- 🔍 **Collector Mode**: Data collection with automatic JSON/CSV export
|
|
77
85
|
- 🔌 **Multi-SDK Support**: Native integration with Claude and OpenCode SDKs
|
|
78
86
|
- 💻 **Interactive CLI**: Minimalist terminal interface with mode cycling (Shift+Tab)
|
|
79
87
|
- 📦 **Production Ready**: Generated scripts include error handling, type hints, and documentation
|
|
80
88
|
- 💾 **Session History**: All runs saved locally with full message logs
|
|
81
89
|
- 💰 **Cost Tracking**: Detailed token usage and cost estimation with cache support
|
|
90
|
+
- 🏷️ **Tag System**: Powerful tags for fine-grained control (@record-only, @codegen, @docs, @id)
|
|
82
91
|
|
|
83
92
|
### Limitations
|
|
84
93
|
|
|
@@ -138,10 +147,11 @@ Launch the interactive CLI:
|
|
|
138
147
|
reverse-api-engineer
|
|
139
148
|
```
|
|
140
149
|
|
|
141
|
-
The CLI has
|
|
150
|
+
The CLI has four modes (cycle with **Shift+Tab**):
|
|
142
151
|
- **manual**: Browser capture + AI generation
|
|
143
152
|
- **engineer**: Re-process existing captures
|
|
144
153
|
- **agent**: Autonomous AI browser agent (default: auto mode with MCP-based browser + real-time reverse engineering)
|
|
154
|
+
- **collector**: AI-powered web data collection (very minimalist version for now)
|
|
145
155
|
|
|
146
156
|
Example workflow:
|
|
147
157
|
```bash
|
|
@@ -200,19 +210,88 @@ Fully automated browser interaction using AI agents:
|
|
|
200
210
|
|
|
201
211
|
Change agent provider in `/settings` → "agent provider".
|
|
202
212
|
|
|
213
|
+
### Collector Mode
|
|
214
|
+
|
|
215
|
+
Web data collection using Claude Agent SDK:
|
|
216
|
+
|
|
217
|
+
1. Start CLI and switch to collector mode (Shift+Tab)
|
|
218
|
+
2. Enter a natural language prompt describing the data to collect (e.g., "Find 3 JS frameworks")
|
|
219
|
+
3. The agent uses WebFetch, WebSearch, and file tools to autonomously collect structured data
|
|
220
|
+
4. Data is automatically exported to JSON and CSV formats
|
|
221
|
+
|
|
222
|
+
**Output locations:**
|
|
223
|
+
- `~/.reverse-api/runs/collected/{folder_name}/` (permanent storage)
|
|
224
|
+
- `./collected/{folder_name}/` (local copy with readable name)
|
|
225
|
+
|
|
226
|
+
**Output files:**
|
|
227
|
+
- `items.json` - Collected data in JSON format
|
|
228
|
+
- `items.csv` - Collected data in CSV format
|
|
229
|
+
- `README.md` - Collection metadata and schema documentation
|
|
230
|
+
|
|
231
|
+
**Model Configuration:**
|
|
232
|
+
Collector mode uses the `collector_model` setting (default: `claude-sonnet-4-5`). This can be configured in `~/.reverse-api/config.json`.
|
|
233
|
+
|
|
234
|
+
Example workflow:
|
|
235
|
+
```bash
|
|
236
|
+
$ reverse-api-engineer
|
|
237
|
+
> Find 3 JS frameworks
|
|
238
|
+
|
|
239
|
+
# Agent autonomously searches and collects data
|
|
240
|
+
# Data saved to: ./collected/js_frameworks/
|
|
241
|
+
```
|
|
242
|
+
|
|
243
|
+
## 🏷️ Tags
|
|
244
|
+
|
|
245
|
+
Tags provide additional control and functionality within each mode:
|
|
246
|
+
|
|
247
|
+
### Manual/Agent Mode Tags
|
|
248
|
+
|
|
249
|
+
- **`@record-only`** - Record HAR file only, skip reverse engineering step
|
|
250
|
+
- Example: `@record-only navigate checkout flow`
|
|
251
|
+
- Useful when you want to capture traffic for later analysis
|
|
252
|
+
|
|
253
|
+
- **`@codegen`** - Record browser actions and generate Playwright automation script
|
|
254
|
+
- Example: `@codegen navigate to google`
|
|
255
|
+
- Captures clicks, fills, and navigations to create a reusable Playwright script
|
|
256
|
+
|
|
257
|
+
### Engineer Mode Tags
|
|
258
|
+
|
|
259
|
+
- **`@id <run_id>`** - Switch context to a specific run ID
|
|
260
|
+
- Example: `@id abc123`
|
|
261
|
+
- Loads a previous capture session for re-engineering
|
|
262
|
+
|
|
263
|
+
- **`@id <run_id> <prompt>`** - Run engineer on a specific run with instructions
|
|
264
|
+
- Example: `@id abc123 extract user profile`
|
|
265
|
+
- Re-processes a capture with new instructions
|
|
266
|
+
|
|
267
|
+
- **`@id <run_id> --fresh <prompt>`** - Start fresh (ignore previous scripts)
|
|
268
|
+
- Example: `@id abc123 --fresh restart analysis`
|
|
269
|
+
- Generates new code from scratch, ignoring previous implementations
|
|
270
|
+
|
|
271
|
+
- **`@docs`** - Generate API documentation (OpenAPI spec) for the latest run
|
|
272
|
+
- Example: `@docs`
|
|
273
|
+
- Creates OpenAPI specification from captured traffic
|
|
274
|
+
|
|
275
|
+
- **`@id <run_id> @docs`** - Generate API documentation for a specific run
|
|
276
|
+
- Example: `@id abc123 @docs`
|
|
277
|
+
- Creates OpenAPI specification for a specific capture session
|
|
278
|
+
|
|
203
279
|
## 🔧 Configuration
|
|
204
280
|
|
|
205
281
|
Settings stored in `~/.reverse-api/config.json`:
|
|
206
282
|
```json
|
|
207
283
|
{
|
|
284
|
+
"agent_provider": "auto",
|
|
285
|
+
"browser_use_model": "bu-llm",
|
|
208
286
|
"claude_code_model": "claude-sonnet-4-5",
|
|
209
|
-
"
|
|
287
|
+
"collector_model": "claude-sonnet-4-5",
|
|
210
288
|
"opencode_model": "claude-sonnet-4-5",
|
|
289
|
+
"opencode_provider": "anthropic",
|
|
290
|
+
"output_dir": null,
|
|
291
|
+
"output_language": "python",
|
|
292
|
+
"real_time_sync": true,
|
|
211
293
|
"sdk": "claude",
|
|
212
|
-
"
|
|
213
|
-
"browser_use_model": "bu-llm",
|
|
214
|
-
"stagehand_model": "openai/computer-use-preview-2025-03-11",
|
|
215
|
-
"output_dir": null
|
|
294
|
+
"stagehand_model": "openai/computer-use-preview-2025-03-11"
|
|
216
295
|
}
|
|
217
296
|
```
|
|
218
297
|
|
|
@@ -228,31 +307,7 @@ Change in `/settings` or via CLI:
|
|
|
228
307
|
reverse-api-engineer manual --model claude-sonnet-4-5
|
|
229
308
|
```
|
|
230
309
|
|
|
231
|
-
If you use Opencode, look at the [models](https://models.dev).
|
|
232
|
-
|
|
233
|
-
### Free Model Options with Antigravity
|
|
234
|
-
|
|
235
|
-
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.
|
|
236
|
-
|
|
237
|
-
**Setup:**
|
|
238
|
-
1. Follow the [Antigravity setup instructions](https://github.com/NoeFabris/opencode-antigravity-auth)
|
|
239
|
-
2. In `/settings`, configure:
|
|
240
|
-
- **SDK**: Set to `opencode` (required for Antigravity)
|
|
241
|
-
- **opencode provider**: Set to `google`
|
|
242
|
-
- **opencode model**: Set to `gemini-3-flash` (or any available Antigravity model)
|
|
243
|
-
|
|
244
|
-
**Available Antigravity Models:**
|
|
245
|
-
- `gemini-3-pro-low` - Gemini 3 Pro Low (Antigravity)
|
|
246
|
-
- `gemini-3-pro-high` - Gemini 3 Pro High (Antigravity)
|
|
247
|
-
- `gemini-3-flash` - Gemini 3 Flash (Antigravity) (recommended)
|
|
248
|
-
- `claude-sonnet-4-5` - Claude Sonnet 4.5 (Antigravity)
|
|
249
|
-
- `claude-sonnet-4-5-thinking-low` - Claude Sonnet 4.5 Thinking Low (Antigravity)
|
|
250
|
-
- `claude-sonnet-4-5-thinking-medium` - Claude Sonnet 4.5 Thinking Medium (Antigravity)
|
|
251
|
-
- `claude-sonnet-4-5-thinking-high` - Claude Sonnet 4.5 Thinking High (Antigravity)
|
|
252
|
-
- `claude-opus-4-5-thinking-low` - Claude Opus 4.5 Thinking Low (Antigravity)
|
|
253
|
-
- `claude-opus-4-5-thinking-medium` - Claude Opus 4.5 Thinking Medium (Antigravity)
|
|
254
|
-
- `claude-opus-4-5-thinking-high` - Claude Opus 4.5 Thinking High (Antigravity)
|
|
255
|
-
- `gpt-oss-120b-medium` - GPT-OSS 120B Medium (Antigravity)
|
|
310
|
+
If you use Opencode, look at the [models](https://models.dev).
|
|
256
311
|
|
|
257
312
|
### Agent Configuration
|
|
258
313
|
|
|
@@ -293,6 +348,35 @@ Change in `/settings` → "agent provider" and "agent model"
|
|
|
293
348
|
|
|
294
349
|
Change in `/settings` or edit `config.json` directly.
|
|
295
350
|
|
|
351
|
+
### Output Language
|
|
352
|
+
|
|
353
|
+
Control the programming language of generated API clients:
|
|
354
|
+
- **python** (default): Generate Python API clients
|
|
355
|
+
- **javascript**: Generate JavaScript API clients
|
|
356
|
+
- **typescript**: Generate TypeScript API clients
|
|
357
|
+
|
|
358
|
+
Change in `/settings` → "Output Language" or edit `config.json`:
|
|
359
|
+
```json
|
|
360
|
+
{
|
|
361
|
+
"output_language": "typescript"
|
|
362
|
+
}
|
|
363
|
+
```
|
|
364
|
+
|
|
365
|
+
### Real-time Sync
|
|
366
|
+
|
|
367
|
+
Enable or disable real-time file synchronization during engineering sessions:
|
|
368
|
+
- **Enabled** (default): Files are synced to disk as they're generated
|
|
369
|
+
- **Disabled**: Files are written only at the end of the session
|
|
370
|
+
|
|
371
|
+
When enabled, you can see files appear in real-time as the AI generates them. This is useful for monitoring progress and debugging.
|
|
372
|
+
|
|
373
|
+
Change in `/settings` → "Real-time Sync" or edit `config.json`:
|
|
374
|
+
```json
|
|
375
|
+
{
|
|
376
|
+
"real_time_sync": false
|
|
377
|
+
}
|
|
378
|
+
```
|
|
379
|
+
|
|
296
380
|
## 💻 CLI Commands
|
|
297
381
|
|
|
298
382
|
Use these slash commands while in the CLI:
|
|
@@ -314,6 +398,84 @@ claude # Open REPL
|
|
|
314
398
|
|
|
315
399
|
See [plugin documentation](plugins/reverse-api-engineer/README.md) for commands, agents, skills, and usage examples.
|
|
316
400
|
|
|
401
|
+
## 🌐 Chrome Extension
|
|
402
|
+
|
|
403
|
+
**⚠️ Work in Progress**
|
|
404
|
+
|
|
405
|
+
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.
|
|
406
|
+
|
|
407
|
+
**Features:**
|
|
408
|
+
- **HAR Capture**: Record network traffic using Chrome's Debugger API
|
|
409
|
+
- **Side Panel UI**: Interactive interface for managing captures and chatting with the AI agent
|
|
410
|
+
- **Native Host Integration**: Communicates with the reverse-api-engineer CLI tool
|
|
411
|
+
|
|
412
|
+
### Local Development Setup
|
|
413
|
+
|
|
414
|
+
To run the Chrome extension locally for development:
|
|
415
|
+
|
|
416
|
+
**Prerequisites:**
|
|
417
|
+
- Node.js and npm installed
|
|
418
|
+
- Chrome browser
|
|
419
|
+
- reverse-api-engineer CLI installed and native host configured
|
|
420
|
+
|
|
421
|
+
**Setup Steps:**
|
|
422
|
+
|
|
423
|
+
1. **Clone the repository:**
|
|
424
|
+
```bash
|
|
425
|
+
git clone https://github.com/kalil0321/reverse-api-engineer.git
|
|
426
|
+
cd reverse-api-engineer
|
|
427
|
+
```
|
|
428
|
+
|
|
429
|
+
2. **Navigate to the extension directory:**
|
|
430
|
+
```bash
|
|
431
|
+
cd chrome-extension
|
|
432
|
+
```
|
|
433
|
+
|
|
434
|
+
3. **Install dependencies:**
|
|
435
|
+
```bash
|
|
436
|
+
npm install
|
|
437
|
+
```
|
|
438
|
+
|
|
439
|
+
4. **Build the extension:**
|
|
440
|
+
```bash
|
|
441
|
+
npm run build
|
|
442
|
+
```
|
|
443
|
+
This creates a `dist` directory with the compiled extension.
|
|
444
|
+
|
|
445
|
+
5. **Load the extension in Chrome:**
|
|
446
|
+
- Open Chrome and navigate to `chrome://extensions/`
|
|
447
|
+
- Enable "Developer mode" (toggle in the top-right corner)
|
|
448
|
+
- Click "Load unpacked"
|
|
449
|
+
- Select the `chrome-extension/dist` directory
|
|
450
|
+
- The extension should now appear in your extensions list
|
|
451
|
+
|
|
452
|
+
6. **Configure Native Host:**
|
|
453
|
+
- Ensure the native host is installed:
|
|
454
|
+
```bash
|
|
455
|
+
reverse-api-engineer install-host
|
|
456
|
+
```
|
|
457
|
+
- The extension communicates with the CLI via native messaging
|
|
458
|
+
|
|
459
|
+
**Development Workflow:**
|
|
460
|
+
|
|
461
|
+
- **Watch mode** (auto-rebuild on changes):
|
|
462
|
+
```bash
|
|
463
|
+
npm run dev
|
|
464
|
+
```
|
|
465
|
+
After rebuilding, reload the extension in Chrome (`chrome://extensions/` → click the reload icon).
|
|
466
|
+
|
|
467
|
+
- **Production build:**
|
|
468
|
+
```bash
|
|
469
|
+
npm run build
|
|
470
|
+
```
|
|
471
|
+
|
|
472
|
+
- **Type checking:**
|
|
473
|
+
```bash
|
|
474
|
+
npm run typecheck
|
|
475
|
+
```
|
|
476
|
+
|
|
477
|
+
**Status:** The extension is currently under active development. Some features may be incomplete or subject to change.
|
|
478
|
+
|
|
317
479
|
## 💡 Examples
|
|
318
480
|
|
|
319
481
|
### Example: Reverse Engineering a Job Board API
|
|
@@ -349,7 +511,7 @@ cd reverse-api-engineer
|
|
|
349
511
|
uv sync
|
|
350
512
|
```
|
|
351
513
|
|
|
352
|
-
### Run
|
|
514
|
+
### Run
|
|
353
515
|
```bash
|
|
354
516
|
uv run reverse-api-engineer
|
|
355
517
|
```
|
|
@@ -359,12 +521,6 @@ uv run reverse-api-engineer
|
|
|
359
521
|
./scripts/clean_build.sh
|
|
360
522
|
```
|
|
361
523
|
|
|
362
|
-
## 🗺️ Roadmap
|
|
363
|
-
|
|
364
|
-
- ✅ **Claude SDK** - Integration with Claude Code
|
|
365
|
-
- ✅ **OpenCode SDK** - Integration with OpenCode
|
|
366
|
-
- 🔄 **Codex SDK** - Codex SDK support
|
|
367
|
-
|
|
368
524
|
## 🔐 Requirements
|
|
369
525
|
|
|
370
526
|
- Python 3.11+
|