reverse-api-engineer 0.4.0__tar.gz → 0.4.2__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (151) hide show
  1. {reverse_api_engineer-0.4.0 → reverse_api_engineer-0.4.2}/.claude/settings.local.json +9 -1
  2. {reverse_api_engineer-0.4.0 → reverse_api_engineer-0.4.2}/.gitignore +2 -1
  3. {reverse_api_engineer-0.4.0 → reverse_api_engineer-0.4.2}/CHANGELOG.md +28 -0
  4. {reverse_api_engineer-0.4.0 → reverse_api_engineer-0.4.2}/PKG-INFO +23 -50
  5. {reverse_api_engineer-0.4.0 → reverse_api_engineer-0.4.2}/README.md +21 -49
  6. reverse_api_engineer-0.4.2/chrome-extension/components.json +20 -0
  7. {reverse_api_engineer-0.4.0 → reverse_api_engineer-0.4.2}/chrome-extension/package-lock.json +21 -141
  8. {reverse_api_engineer-0.4.0 → reverse_api_engineer-0.4.2}/chrome-extension/package.json +3 -3
  9. {reverse_api_engineer-0.4.0 → reverse_api_engineer-0.4.2}/chrome-extension/public/manifest.json +7 -0
  10. reverse_api_engineer-0.4.2/chrome-extension/src/background/service-worker.ts +628 -0
  11. {reverse_api_engineer-0.4.0 → reverse_api_engineer-0.4.2}/chrome-extension/src/components/agent-action.tsx +25 -4
  12. reverse_api_engineer-0.4.2/chrome-extension/src/components/chat-input.tsx +143 -0
  13. reverse_api_engineer-0.4.2/chrome-extension/src/components/icons.tsx +58 -0
  14. {reverse_api_engineer-0.4.0 → reverse_api_engineer-0.4.2}/chrome-extension/src/components/markdown-renderer.tsx +22 -5
  15. reverse_api_engineer-0.4.2/chrome-extension/src/components/mode-selector.tsx +39 -0
  16. reverse_api_engineer-0.4.2/chrome-extension/src/components/session-selector.tsx +262 -0
  17. {reverse_api_engineer-0.4.0 → reverse_api_engineer-0.4.2}/chrome-extension/src/components/terminal.tsx +10 -10
  18. reverse_api_engineer-0.4.2/chrome-extension/src/components/ui/code-block.tsx +290 -0
  19. reverse_api_engineer-0.4.2/chrome-extension/src/content/codegen-recorder.ts +305 -0
  20. {reverse_api_engineer-0.4.0 → reverse_api_engineer-0.4.2}/chrome-extension/src/index.css +55 -13
  21. {reverse_api_engineer-0.4.0 → reverse_api_engineer-0.4.2}/chrome-extension/src/shared/capture.ts +12 -2
  22. {reverse_api_engineer-0.4.0 → reverse_api_engineer-0.4.2}/chrome-extension/src/shared/native-host.ts +40 -0
  23. reverse_api_engineer-0.4.2/chrome-extension/src/shared/storage.ts +189 -0
  24. reverse_api_engineer-0.4.2/chrome-extension/src/shared/types.ts +96 -0
  25. {reverse_api_engineer-0.4.0 → reverse_api_engineer-0.4.2}/chrome-extension/src/sidepanel/index.html +2 -0
  26. reverse_api_engineer-0.4.2/chrome-extension/src/sidepanel/side-panel.tsx +836 -0
  27. reverse_api_engineer-0.4.2/chrome-extension/tailwind.config.js +128 -0
  28. {reverse_api_engineer-0.4.0 → reverse_api_engineer-0.4.2}/chrome-extension/tsconfig.json +16 -4
  29. {reverse_api_engineer-0.4.0 → reverse_api_engineer-0.4.2}/chrome-extension/vite.config.ts +5 -1
  30. reverse_api_engineer-0.4.2/examples/mintlify/README.md +227 -0
  31. reverse_api_engineer-0.4.2/examples/mintlify/api_client.py +482 -0
  32. {reverse_api_engineer-0.4.0 → reverse_api_engineer-0.4.2}/pyproject.toml +2 -1
  33. {reverse_api_engineer-0.4.0 → reverse_api_engineer-0.4.2}/src/reverse_api/base_engineer.py +112 -12
  34. {reverse_api_engineer-0.4.0 → reverse_api_engineer-0.4.2}/src/reverse_api/cli.py +123 -4
  35. {reverse_api_engineer-0.4.0 → reverse_api_engineer-0.4.2}/src/reverse_api/native_host.py +207 -11
  36. {reverse_api_engineer-0.4.0 → reverse_api_engineer-0.4.2}/src/reverse_api/opencode_engineer.py +96 -2
  37. {reverse_api_engineer-0.4.0 → reverse_api_engineer-0.4.2}/src/reverse_api/opencode_ui.py +15 -2
  38. {reverse_api_engineer-0.4.0 → reverse_api_engineer-0.4.2}/src/reverse_api/utils.py +128 -9
  39. {reverse_api_engineer-0.4.0 → reverse_api_engineer-0.4.2}/tests/test_base_engineer.py +129 -0
  40. {reverse_api_engineer-0.4.0 → reverse_api_engineer-0.4.2}/uv.lock +15 -0
  41. reverse_api_engineer-0.4.0/chrome-extension/src/background/service-worker.ts +0 -197
  42. reverse_api_engineer-0.4.0/chrome-extension/src/components/chat-input.tsx +0 -76
  43. reverse_api_engineer-0.4.0/chrome-extension/src/shared/storage.ts +0 -75
  44. reverse_api_engineer-0.4.0/chrome-extension/src/shared/types.ts +0 -41
  45. reverse_api_engineer-0.4.0/chrome-extension/src/sidepanel/side-panel.tsx +0 -371
  46. reverse_api_engineer-0.4.0/chrome-extension/tailwind.config.js +0 -28
  47. {reverse_api_engineer-0.4.0 → reverse_api_engineer-0.4.2}/.claude-plugin/marketplace.json +0 -0
  48. {reverse_api_engineer-0.4.0 → reverse_api_engineer-0.4.2}/.python-version +0 -0
  49. {reverse_api_engineer-0.4.0 → reverse_api_engineer-0.4.2}/CLAUDE.md +0 -0
  50. {reverse_api_engineer-0.4.0 → reverse_api_engineer-0.4.2}/CONTRIBUTING.md +0 -0
  51. {reverse_api_engineer-0.4.0 → reverse_api_engineer-0.4.2}/INTERVIEW.md +0 -0
  52. {reverse_api_engineer-0.4.0 → reverse_api_engineer-0.4.2}/LICENSE +0 -0
  53. {reverse_api_engineer-0.4.0 → reverse_api_engineer-0.4.2}/PROMPT_STASH.md +0 -0
  54. {reverse_api_engineer-0.4.0 → reverse_api_engineer-0.4.2}/RELEASING.md +0 -0
  55. {reverse_api_engineer-0.4.0 → reverse_api_engineer-0.4.2}/assets/reverse-api-banner.svg +0 -0
  56. {reverse_api_engineer-0.4.0 → reverse_api_engineer-0.4.2}/assets/reverse-api-engineer.gif +0 -0
  57. {reverse_api_engineer-0.4.0 → reverse_api_engineer-0.4.2}/assets/reverse-api-logo.svg +0 -0
  58. {reverse_api_engineer-0.4.0 → reverse_api_engineer-0.4.2}/chrome-extension/.claude/settings.local.json +0 -0
  59. {reverse_api_engineer-0.4.0 → reverse_api_engineer-0.4.2}/chrome-extension/postcss.config.js +0 -0
  60. {reverse_api_engineer-0.4.0 → reverse_api_engineer-0.4.2}/chrome-extension/public/_locales/en/messages.json +0 -0
  61. {reverse_api_engineer-0.4.0 → reverse_api_engineer-0.4.2}/chrome-extension/public/icons/icon-128.png +0 -0
  62. {reverse_api_engineer-0.4.0 → reverse_api_engineer-0.4.2}/chrome-extension/public/icons/icon-16.png +0 -0
  63. {reverse_api_engineer-0.4.0 → reverse_api_engineer-0.4.2}/chrome-extension/public/icons/icon-32.png +0 -0
  64. {reverse_api_engineer-0.4.0 → reverse_api_engineer-0.4.2}/chrome-extension/public/icons/icon-48.png +0 -0
  65. {reverse_api_engineer-0.4.0 → reverse_api_engineer-0.4.2}/chrome-extension/src/components/plan.tsx +0 -0
  66. {reverse_api_engineer-0.4.0 → reverse_api_engineer-0.4.2}/chrome-extension/src/sidepanel/main.tsx +0 -0
  67. {reverse_api_engineer-0.4.0 → reverse_api_engineer-0.4.2}/chrome-extension/src/vite-env.d.ts +0 -0
  68. {reverse_api_engineer-0.4.0 → reverse_api_engineer-0.4.2}/examples/apple/INDEX.md +0 -0
  69. {reverse_api_engineer-0.4.0 → reverse_api_engineer-0.4.2}/examples/apple/QUICKSTART.md +0 -0
  70. {reverse_api_engineer-0.4.0 → reverse_api_engineer-0.4.2}/examples/apple/README.md +0 -0
  71. {reverse_api_engineer-0.4.0 → reverse_api_engineer-0.4.2}/examples/apple/SUMMARY.md +0 -0
  72. {reverse_api_engineer-0.4.0 → reverse_api_engineer-0.4.2}/examples/apple/api_client.py +0 -0
  73. {reverse_api_engineer-0.4.0 → reverse_api_engineer-0.4.2}/examples/apple/extract_job_fields.py +0 -0
  74. {reverse_api_engineer-0.4.0 → reverse_api_engineer-0.4.2}/examples/apple/main.py +0 -0
  75. {reverse_api_engineer-0.4.0 → reverse_api_engineer-0.4.2}/examples/apple/quick_example.py +0 -0
  76. {reverse_api_engineer-0.4.0 → reverse_api_engineer-0.4.2}/examples/apple/requirements.txt +0 -0
  77. {reverse_api_engineer-0.4.0 → reverse_api_engineer-0.4.2}/examples/ashby/API_SUMMARY.txt +0 -0
  78. {reverse_api_engineer-0.4.0 → reverse_api_engineer-0.4.2}/examples/ashby/QUICKSTART.md +0 -0
  79. {reverse_api_engineer-0.4.0 → reverse_api_engineer-0.4.2}/examples/ashby/README.md +0 -0
  80. {reverse_api_engineer-0.4.0 → reverse_api_engineer-0.4.2}/examples/ashby/api_client.py +0 -0
  81. {reverse_api_engineer-0.4.0 → reverse_api_engineer-0.4.2}/examples/ashby/example_usage.py +0 -0
  82. {reverse_api_engineer-0.4.0 → reverse_api_engineer-0.4.2}/examples/ashby/requirements.txt +0 -0
  83. {reverse_api_engineer-0.4.0 → reverse_api_engineer-0.4.2}/examples/autoscout24/README.md +0 -0
  84. {reverse_api_engineer-0.4.0 → reverse_api_engineer-0.4.2}/examples/autoscout24/SUMMARY.md +0 -0
  85. {reverse_api_engineer-0.4.0 → reverse_api_engineer-0.4.2}/examples/autoscout24/api_client.py +0 -0
  86. {reverse_api_engineer-0.4.0 → reverse_api_engineer-0.4.2}/examples/ikea/README.md +0 -0
  87. {reverse_api_engineer-0.4.0 → reverse_api_engineer-0.4.2}/examples/ikea/api_client.py +0 -0
  88. {reverse_api_engineer-0.4.0 → reverse_api_engineer-0.4.2}/examples/uber/API_ANALYSIS_SUMMARY.md +0 -0
  89. {reverse_api_engineer-0.4.0 → reverse_api_engineer-0.4.2}/examples/uber/README.md +0 -0
  90. {reverse_api_engineer-0.4.0 → reverse_api_engineer-0.4.2}/examples/uber/api_client.py +0 -0
  91. {reverse_api_engineer-0.4.0 → reverse_api_engineer-0.4.2}/examples/uber/example_fetch_all_jobs.py +0 -0
  92. {reverse_api_engineer-0.4.0 → reverse_api_engineer-0.4.2}/examples/uber/quick_start.py +0 -0
  93. {reverse_api_engineer-0.4.0 → reverse_api_engineer-0.4.2}/examples/uber/requirements.txt +0 -0
  94. {reverse_api_engineer-0.4.0 → reverse_api_engineer-0.4.2}/llm-docs/OPENCODE_API_SUMMARY.md +0 -0
  95. {reverse_api_engineer-0.4.0 → reverse_api_engineer-0.4.2}/llm-docs/claude-agent-sdk/QUICKSTART.md +0 -0
  96. {reverse_api_engineer-0.4.0 → reverse_api_engineer-0.4.2}/llm-docs/claude-agent-sdk/TODO_LIST.md +0 -0
  97. {reverse_api_engineer-0.4.0 → reverse_api_engineer-0.4.2}/llm-docs/claude-agent-sdk/TOOLS.md +0 -0
  98. {reverse_api_engineer-0.4.0 → reverse_api_engineer-0.4.2}/llm-docs/opencode-api.json +0 -0
  99. {reverse_api_engineer-0.4.0 → reverse_api_engineer-0.4.2}/plugins/reverse-api-engineer/.claude-plugin/plugin.json +0 -0
  100. {reverse_api_engineer-0.4.0 → reverse_api_engineer-0.4.2}/plugins/reverse-api-engineer/CHANGELOG.md +0 -0
  101. {reverse_api_engineer-0.4.0 → reverse_api_engineer-0.4.2}/plugins/reverse-api-engineer/LICENSE +0 -0
  102. {reverse_api_engineer-0.4.0 → reverse_api_engineer-0.4.2}/plugins/reverse-api-engineer/README.md +0 -0
  103. {reverse_api_engineer-0.4.0 → reverse_api_engineer-0.4.2}/plugins/reverse-api-engineer/agents/api-reverse-engineer.md +0 -0
  104. {reverse_api_engineer-0.4.0 → reverse_api_engineer-0.4.2}/plugins/reverse-api-engineer/commands/agent.md +0 -0
  105. {reverse_api_engineer-0.4.0 → reverse_api_engineer-0.4.2}/plugins/reverse-api-engineer/commands/capture.md +0 -0
  106. {reverse_api_engineer-0.4.0 → reverse_api_engineer-0.4.2}/plugins/reverse-api-engineer/commands/engineer.md +0 -0
  107. {reverse_api_engineer-0.4.0 → reverse_api_engineer-0.4.2}/plugins/reverse-api-engineer/commands/manual.md +0 -0
  108. {reverse_api_engineer-0.4.0 → reverse_api_engineer-0.4.2}/plugins/reverse-api-engineer/skills/reverse-engineering-api/CHANGELOG.md +0 -0
  109. {reverse_api_engineer-0.4.0 → reverse_api_engineer-0.4.2}/plugins/reverse-api-engineer/skills/reverse-engineering-api/LICENSE +0 -0
  110. {reverse_api_engineer-0.4.0 → reverse_api_engineer-0.4.2}/plugins/reverse-api-engineer/skills/reverse-engineering-api/SKILL.md +0 -0
  111. {reverse_api_engineer-0.4.0 → reverse_api_engineer-0.4.2}/plugins/reverse-api-engineer/skills/reverse-engineering-api/references/AUTH_PATTERNS.md +0 -0
  112. {reverse_api_engineer-0.4.0 → reverse_api_engineer-0.4.2}/plugins/reverse-api-engineer/skills/reverse-engineering-api/references/HAR_ANALYSIS.md +0 -0
  113. {reverse_api_engineer-0.4.0 → reverse_api_engineer-0.4.2}/plugins/reverse-api-engineer/skills/reverse-engineering-api/scripts/har_analyze.py +0 -0
  114. {reverse_api_engineer-0.4.0 → reverse_api_engineer-0.4.2}/plugins/reverse-api-engineer/skills/reverse-engineering-api/scripts/har_filter.py +0 -0
  115. {reverse_api_engineer-0.4.0 → reverse_api_engineer-0.4.2}/plugins/reverse-api-engineer/skills/reverse-engineering-api/scripts/har_utils.py +0 -0
  116. {reverse_api_engineer-0.4.0 → reverse_api_engineer-0.4.2}/plugins/reverse-api-engineer/skills/reverse-engineering-api/scripts/har_validate.py +0 -0
  117. {reverse_api_engineer-0.4.0 → reverse_api_engineer-0.4.2}/plugins/reverse-api-engineer/skills/reverse-engineering-api/templates/api_client.py +0 -0
  118. {reverse_api_engineer-0.4.0 → reverse_api_engineer-0.4.2}/scripts/clean_build.sh +0 -0
  119. {reverse_api_engineer-0.4.0 → reverse_api_engineer-0.4.2}/src/reverse_api/__init__.py +0 -0
  120. {reverse_api_engineer-0.4.0 → reverse_api_engineer-0.4.2}/src/reverse_api/action_recorder.py +0 -0
  121. {reverse_api_engineer-0.4.0 → reverse_api_engineer-0.4.2}/src/reverse_api/auto_engineer.py +0 -0
  122. {reverse_api_engineer-0.4.0 → reverse_api_engineer-0.4.2}/src/reverse_api/browser.py +0 -0
  123. {reverse_api_engineer-0.4.0 → reverse_api_engineer-0.4.2}/src/reverse_api/collector.py +0 -0
  124. {reverse_api_engineer-0.4.0 → reverse_api_engineer-0.4.2}/src/reverse_api/collector_ui.py +0 -0
  125. {reverse_api_engineer-0.4.0 → reverse_api_engineer-0.4.2}/src/reverse_api/config.py +0 -0
  126. {reverse_api_engineer-0.4.0 → reverse_api_engineer-0.4.2}/src/reverse_api/copilot_engineer.py +0 -0
  127. {reverse_api_engineer-0.4.0 → reverse_api_engineer-0.4.2}/src/reverse_api/engineer.py +0 -0
  128. {reverse_api_engineer-0.4.0 → reverse_api_engineer-0.4.2}/src/reverse_api/messages.py +0 -0
  129. {reverse_api_engineer-0.4.0 → reverse_api_engineer-0.4.2}/src/reverse_api/playwright_codegen.py +0 -0
  130. {reverse_api_engineer-0.4.0 → reverse_api_engineer-0.4.2}/src/reverse_api/pricing.py +0 -0
  131. {reverse_api_engineer-0.4.0 → reverse_api_engineer-0.4.2}/src/reverse_api/session.py +0 -0
  132. {reverse_api_engineer-0.4.0 → reverse_api_engineer-0.4.2}/src/reverse_api/sync.py +0 -0
  133. {reverse_api_engineer-0.4.0 → reverse_api_engineer-0.4.2}/src/reverse_api/tui.py +0 -0
  134. {reverse_api_engineer-0.4.0 → reverse_api_engineer-0.4.2}/tests/__init__.py +0 -0
  135. {reverse_api_engineer-0.4.0 → reverse_api_engineer-0.4.2}/tests/conftest.py +0 -0
  136. {reverse_api_engineer-0.4.0 → reverse_api_engineer-0.4.2}/tests/test_action_recorder.py +0 -0
  137. {reverse_api_engineer-0.4.0 → reverse_api_engineer-0.4.2}/tests/test_auto_engineer.py +0 -0
  138. {reverse_api_engineer-0.4.0 → reverse_api_engineer-0.4.2}/tests/test_collector.py +0 -0
  139. {reverse_api_engineer-0.4.0 → reverse_api_engineer-0.4.2}/tests/test_collector_ui.py +0 -0
  140. {reverse_api_engineer-0.4.0 → reverse_api_engineer-0.4.2}/tests/test_config.py +0 -0
  141. {reverse_api_engineer-0.4.0 → reverse_api_engineer-0.4.2}/tests/test_engineer.py +0 -0
  142. {reverse_api_engineer-0.4.0 → reverse_api_engineer-0.4.2}/tests/test_init.py +0 -0
  143. {reverse_api_engineer-0.4.0 → reverse_api_engineer-0.4.2}/tests/test_messages.py +0 -0
  144. {reverse_api_engineer-0.4.0 → reverse_api_engineer-0.4.2}/tests/test_native_host.py +0 -0
  145. {reverse_api_engineer-0.4.0 → reverse_api_engineer-0.4.2}/tests/test_opencode_engineer.py +0 -0
  146. {reverse_api_engineer-0.4.0 → reverse_api_engineer-0.4.2}/tests/test_opencode_ui.py +0 -0
  147. {reverse_api_engineer-0.4.0 → reverse_api_engineer-0.4.2}/tests/test_pricing.py +0 -0
  148. {reverse_api_engineer-0.4.0 → reverse_api_engineer-0.4.2}/tests/test_session.py +0 -0
  149. {reverse_api_engineer-0.4.0 → reverse_api_engineer-0.4.2}/tests/test_sync.py +0 -0
  150. {reverse_api_engineer-0.4.0 → reverse_api_engineer-0.4.2}/tests/test_tui.py +0 -0
  151. {reverse_api_engineer-0.4.0 → reverse_api_engineer-0.4.2}/tests/test_utils.py +0 -0
@@ -103,7 +103,15 @@
103
103
  "Bash(gh pr:*)",
104
104
  "Bash(python3.11 -c \"import ast; ast.parse\\(open\\('src/reverse_api/base_engineer.py'\\).read\\(\\)\\)\" 2>&1 || echo \"SYNTAX ERROR\")",
105
105
  "Bash(python3.11 -c \"import ast; ast.parse\\(open\\('src/reverse_api/base_engineer.py'\\).read\\(\\)\\)\" 2>&1 && echo \"OK\")",
106
- "Bash(rm -rf dist/ && uv build)"
106
+ "Bash(rm -rf dist/ && uv build)",
107
+ "Bash(git merge:*)",
108
+ "Bash(git stash:*)",
109
+ "Bash(find /Users/kalilbouzigues/Projects/browgents/reverse-api/chrome-extension/src -type f \\\\\\( -name \"*.ts\" -o -name \"*.tsx\" \\\\\\) 2>/dev/null | sort)",
110
+ "Bash(mdfind -name \"d8bd35bbde7ad5ff\" 2>/dev/null | head -10)",
111
+ "Bash(pip show:*)",
112
+ "Bash(npm uninstall:*)",
113
+ "Bash(npx rollup-plugin-visualizer:*)",
114
+ "Bash(git pull:*)"
107
115
  ]
108
116
  }
109
117
  }
@@ -98,4 +98,5 @@ collector_mode_plan.md
98
98
 
99
99
  chrome-extension/node_modules/
100
100
  chrome-extension/dist/
101
- chrome-extension-old
101
+ chrome-extension-old
102
+ debug/
@@ -5,6 +5,34 @@ 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.4.2] - 2026-03-12
9
+
10
+ ### Fixed
11
+ - **Engineer client resolution**: Prefer the active engineer client recorded in session history over config defaults, preventing iterative edits from switching to the wrong file when multiple language clients exist
12
+
13
+ ## [0.4.1] - 2026-03-12
14
+
15
+ ### Added
16
+ - **`show` CLI subcommand**: View details of a specific run by ID
17
+ - **Chrome Extension improvements**: Multi-session support, codegen recording, side panel UX overhaul
18
+ - Session isolation fixes to prevent capture data bleeding across sessions
19
+ - Message persistence across panel reloads and session switches
20
+ - Traffic list with expandable request details and clear button
21
+ - Restricted page detection with user feedback
22
+ - ANSI escape code stripping in terminal output
23
+ - PrismLight language fallback for unregistered languages
24
+ - Bundle size reduced from 1112KB to 436KB (removed shiki, lucide-react, ansi-to-react, @base-ui/react)
25
+ - **Mintlify API client example**
26
+
27
+ ### Changed
28
+ - **Background update check**: Version check now runs in a background thread to avoid blocking CLI startup
29
+
30
+ ### Fixed
31
+ - **Engineer language preservation**: Iterative edits now preserve the original output language instead of resetting
32
+ - **Native host Gatekeeper handling**: Scoped xattr to the actual claude-code package directory
33
+ - **Codegen selector escaping**: Dynamic attribute values now escaped with CSS.escape() to prevent broken selectors
34
+ - **Chrome Extension manifest**: Removed unused `scripting` permission; pinned devicon CDN to v2.16.0
35
+
8
36
  ## [0.4.0] - 2026-03-10
9
37
 
10
38
  ### Added
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: reverse-api-engineer
3
- Version: 0.4.0
3
+ Version: 0.4.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
@@ -30,6 +30,7 @@ Requires-Dist: questionary>=2.0.0
30
30
  Requires-Dist: requests>=2.32.5
31
31
  Requires-Dist: rich>=13.0.0
32
32
  Requires-Dist: setproctitle>=1.3.0
33
+ Requires-Dist: sprites-py>=0.0.1a1
33
34
  Requires-Dist: watchdog>=3.0.0
34
35
  Provides-Extra: agent
35
36
  Requires-Dist: stagehand; extra == 'agent'
@@ -415,72 +416,44 @@ A Chrome extension that provides browser-native integration with reverse-api-eng
415
416
  - **Side Panel UI**: Interactive interface for managing captures and chatting with the AI agent
416
417
  - **Native Host Integration**: Communicates with the reverse-api-engineer CLI tool
417
418
 
418
- ### Local Development Setup
419
-
420
- To run the Chrome extension locally for development:
419
+ ### Setup
421
420
 
422
421
  **Prerequisites:**
423
- - Node.js and npm installed
422
+ - Node.js and npm
424
423
  - Chrome browser
425
- - reverse-api-engineer CLI installed and native host configured
424
+ - reverse-api-engineer CLI installed (`uv tool install reverse-api-engineer`)
425
+ - Claude Code CLI installed (`npm install -g @anthropic-ai/claude-code`)
426
426
 
427
- **Setup Steps:**
427
+ **Steps:**
428
428
 
429
- 1. **Clone the repository:**
430
- ```bash
431
- git clone https://github.com/kalil0321/reverse-api-engineer.git
432
- cd reverse-api-engineer
433
- ```
434
-
435
- 2. **Navigate to the extension directory:**
429
+ 1. **Build the extension:**
436
430
  ```bash
437
431
  cd chrome-extension
432
+ npm install
433
+ npm run build
438
434
  ```
439
435
 
440
- 3. **Install dependencies:**
436
+ 2. **Load in Chrome:**
437
+ - Go to `chrome://extensions/`
438
+ - Enable **Developer mode** (top-right toggle)
439
+ - Click **Load unpacked** and select the `chrome-extension/dist` directory
440
+ - **Copy the extension ID** (32-character string shown under the extension name)
441
+
442
+ 3. **Install the native host** (connects the extension to the CLI):
441
443
  ```bash
442
- npm install
444
+ reverse-api-engineer install-host --extension-id YOUR_EXTENSION_ID
443
445
  ```
444
446
 
445
- 4. **Build the extension:**
447
+ 4. **macOS only** — run this once to approve Claude Code through Gatekeeper:
446
448
  ```bash
447
- npm run build
449
+ claude --version
448
450
  ```
449
- This creates a `dist` directory with the compiled extension.
450
-
451
- 5. **Load the extension in Chrome:**
452
- - Open Chrome and navigate to `chrome://extensions/`
453
- - Enable "Developer mode" (toggle in the top-right corner)
454
- - Click "Load unpacked"
455
- - Select the `chrome-extension/dist` directory
456
- - The extension should now appear in your extensions list
457
-
458
- 6. **Configure Native Host:**
459
- - Ensure the native host is installed:
460
- ```bash
461
- reverse-api-engineer install-host
462
- ```
463
- - The extension communicates with the CLI via native messaging
451
+ If macOS shows a security popup, go to **System Settings > Privacy & Security** and click **Allow Anyway**, then run the command again.
464
452
 
465
453
  **Development Workflow:**
466
454
 
467
- - **Watch mode** (auto-rebuild on changes):
468
- ```bash
469
- npm run dev
470
- ```
471
- After rebuilding, reload the extension in Chrome (`chrome://extensions/` → click the reload icon).
472
-
473
- - **Production build:**
474
- ```bash
475
- npm run build
476
- ```
477
-
478
- - **Type checking:**
479
- ```bash
480
- npm run typecheck
481
- ```
482
-
483
- **Status:** The extension is currently under active development. Some features may be incomplete or subject to change.
455
+ - `npm run dev` — watch mode (auto-rebuild on changes, then reload in `chrome://extensions/`)
456
+ - `npm run build` — production build
484
457
 
485
458
  ## 💡 Examples
486
459
 
@@ -371,72 +371,44 @@ A Chrome extension that provides browser-native integration with reverse-api-eng
371
371
  - **Side Panel UI**: Interactive interface for managing captures and chatting with the AI agent
372
372
  - **Native Host Integration**: Communicates with the reverse-api-engineer CLI tool
373
373
 
374
- ### Local Development Setup
375
-
376
- To run the Chrome extension locally for development:
374
+ ### Setup
377
375
 
378
376
  **Prerequisites:**
379
- - Node.js and npm installed
377
+ - Node.js and npm
380
378
  - Chrome browser
381
- - reverse-api-engineer CLI installed and native host configured
379
+ - reverse-api-engineer CLI installed (`uv tool install reverse-api-engineer`)
380
+ - Claude Code CLI installed (`npm install -g @anthropic-ai/claude-code`)
382
381
 
383
- **Setup Steps:**
382
+ **Steps:**
384
383
 
385
- 1. **Clone the repository:**
386
- ```bash
387
- git clone https://github.com/kalil0321/reverse-api-engineer.git
388
- cd reverse-api-engineer
389
- ```
390
-
391
- 2. **Navigate to the extension directory:**
384
+ 1. **Build the extension:**
392
385
  ```bash
393
386
  cd chrome-extension
387
+ npm install
388
+ npm run build
394
389
  ```
395
390
 
396
- 3. **Install dependencies:**
391
+ 2. **Load in Chrome:**
392
+ - Go to `chrome://extensions/`
393
+ - Enable **Developer mode** (top-right toggle)
394
+ - Click **Load unpacked** and select the `chrome-extension/dist` directory
395
+ - **Copy the extension ID** (32-character string shown under the extension name)
396
+
397
+ 3. **Install the native host** (connects the extension to the CLI):
397
398
  ```bash
398
- npm install
399
+ reverse-api-engineer install-host --extension-id YOUR_EXTENSION_ID
399
400
  ```
400
401
 
401
- 4. **Build the extension:**
402
+ 4. **macOS only** — run this once to approve Claude Code through Gatekeeper:
402
403
  ```bash
403
- npm run build
404
+ claude --version
404
405
  ```
405
- This creates a `dist` directory with the compiled extension.
406
-
407
- 5. **Load the extension in Chrome:**
408
- - Open Chrome and navigate to `chrome://extensions/`
409
- - Enable "Developer mode" (toggle in the top-right corner)
410
- - Click "Load unpacked"
411
- - Select the `chrome-extension/dist` directory
412
- - The extension should now appear in your extensions list
413
-
414
- 6. **Configure Native Host:**
415
- - Ensure the native host is installed:
416
- ```bash
417
- reverse-api-engineer install-host
418
- ```
419
- - The extension communicates with the CLI via native messaging
406
+ If macOS shows a security popup, go to **System Settings > Privacy & Security** and click **Allow Anyway**, then run the command again.
420
407
 
421
408
  **Development Workflow:**
422
409
 
423
- - **Watch mode** (auto-rebuild on changes):
424
- ```bash
425
- npm run dev
426
- ```
427
- After rebuilding, reload the extension in Chrome (`chrome://extensions/` → click the reload icon).
428
-
429
- - **Production build:**
430
- ```bash
431
- npm run build
432
- ```
433
-
434
- - **Type checking:**
435
- ```bash
436
- npm run typecheck
437
- ```
438
-
439
- **Status:** The extension is currently under active development. Some features may be incomplete or subject to change.
410
+ - `npm run dev` — watch mode (auto-rebuild on changes, then reload in `chrome://extensions/`)
411
+ - `npm run build` — production build
440
412
 
441
413
  ## 💡 Examples
442
414
 
@@ -0,0 +1,20 @@
1
+ {
2
+ "$schema": "https://ui.shadcn.com/schema.json",
3
+ "style": "new-york",
4
+ "rsc": false,
5
+ "tsx": true,
6
+ "tailwind": {
7
+ "config": "tailwind.config.js",
8
+ "css": "src/index.css",
9
+ "baseColor": "neutral",
10
+ "cssVariables": true,
11
+ "prefix": ""
12
+ },
13
+ "aliases": {
14
+ "components": "@/components",
15
+ "utils": "@/lib/utils",
16
+ "ui": "@/components/ui",
17
+ "lib": "@/lib",
18
+ "hooks": "@/hooks"
19
+ }
20
+ }
@@ -8,13 +8,13 @@
8
8
  "name": "reverse-api-extension",
9
9
  "version": "0.1.0",
10
10
  "dependencies": {
11
- "@base-ui/react": "^1.0.0",
12
- "ansi-to-react": "^6.1.6",
11
+ "clsx": "^2.1.1",
13
12
  "react": "^18.3.1",
14
13
  "react-dom": "^18.3.1",
15
14
  "react-markdown": "^9.1.0",
16
15
  "react-syntax-highlighter": "^15.6.6",
17
- "remark-gfm": "^4.0.1"
16
+ "remark-gfm": "^4.0.1",
17
+ "tailwind-merge": "^3.4.0"
18
18
  },
19
19
  "devDependencies": {
20
20
  "@types/chrome": "^0.0.287",
@@ -333,60 +333,6 @@
333
333
  "node": ">=6.9.0"
334
334
  }
335
335
  },
336
- "node_modules/@base-ui/react": {
337
- "version": "1.0.0",
338
- "resolved": "https://registry.npmjs.org/@base-ui/react/-/react-1.0.0.tgz",
339
- "integrity": "sha512-4USBWz++DUSLTuIYpbYkSgy1F9ZmNG9S/lXvlUN6qMK0P0RlW+6eQmDUB4DgZ7HVvtXl4pvi4z5J2fv6Z3+9hg==",
340
- "license": "MIT",
341
- "dependencies": {
342
- "@babel/runtime": "^7.28.4",
343
- "@base-ui/utils": "0.2.3",
344
- "@floating-ui/react-dom": "^2.1.6",
345
- "@floating-ui/utils": "^0.2.10",
346
- "reselect": "^5.1.1",
347
- "tabbable": "^6.3.0",
348
- "use-sync-external-store": "^1.6.0"
349
- },
350
- "engines": {
351
- "node": ">=14.0.0"
352
- },
353
- "funding": {
354
- "type": "opencollective",
355
- "url": "https://opencollective.com/mui-org"
356
- },
357
- "peerDependencies": {
358
- "@types/react": "^17 || ^18 || ^19",
359
- "react": "^17 || ^18 || ^19",
360
- "react-dom": "^17 || ^18 || ^19"
361
- },
362
- "peerDependenciesMeta": {
363
- "@types/react": {
364
- "optional": true
365
- }
366
- }
367
- },
368
- "node_modules/@base-ui/utils": {
369
- "version": "0.2.3",
370
- "resolved": "https://registry.npmjs.org/@base-ui/utils/-/utils-0.2.3.tgz",
371
- "integrity": "sha512-/CguQ2PDaOzeVOkllQR8nocJ0FFIDqsWIcURsVmm53QGo8NhFNpePjNlyPIB41luxfOqnG7PU0xicMEw3ls7XQ==",
372
- "license": "MIT",
373
- "dependencies": {
374
- "@babel/runtime": "^7.28.4",
375
- "@floating-ui/utils": "^0.2.10",
376
- "reselect": "^5.1.1",
377
- "use-sync-external-store": "^1.6.0"
378
- },
379
- "peerDependencies": {
380
- "@types/react": "^17 || ^18 || ^19",
381
- "react": "^17 || ^18 || ^19",
382
- "react-dom": "^17 || ^18 || ^19"
383
- },
384
- "peerDependenciesMeta": {
385
- "@types/react": {
386
- "optional": true
387
- }
388
- }
389
- },
390
336
  "node_modules/@esbuild/aix-ppc64": {
391
337
  "version": "0.25.12",
392
338
  "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.25.12.tgz",
@@ -829,44 +775,6 @@
829
775
  "node": ">=18"
830
776
  }
831
777
  },
832
- "node_modules/@floating-ui/core": {
833
- "version": "1.7.3",
834
- "resolved": "https://registry.npmjs.org/@floating-ui/core/-/core-1.7.3.tgz",
835
- "integrity": "sha512-sGnvb5dmrJaKEZ+LDIpguvdX3bDlEllmv4/ClQ9awcmCZrlx5jQyyMWFM5kBI+EyNOCDDiKk8il0zeuX3Zlg/w==",
836
- "license": "MIT",
837
- "dependencies": {
838
- "@floating-ui/utils": "^0.2.10"
839
- }
840
- },
841
- "node_modules/@floating-ui/dom": {
842
- "version": "1.7.4",
843
- "resolved": "https://registry.npmjs.org/@floating-ui/dom/-/dom-1.7.4.tgz",
844
- "integrity": "sha512-OOchDgh4F2CchOX94cRVqhvy7b3AFb+/rQXyswmzmGakRfkMgoWVjfnLWkRirfLEfuD4ysVW16eXzwt3jHIzKA==",
845
- "license": "MIT",
846
- "dependencies": {
847
- "@floating-ui/core": "^1.7.3",
848
- "@floating-ui/utils": "^0.2.10"
849
- }
850
- },
851
- "node_modules/@floating-ui/react-dom": {
852
- "version": "2.1.6",
853
- "resolved": "https://registry.npmjs.org/@floating-ui/react-dom/-/react-dom-2.1.6.tgz",
854
- "integrity": "sha512-4JX6rEatQEvlmgU80wZyq9RT96HZJa88q8hp0pBd+LrczeDI4o6uA2M+uvxngVHo4Ihr8uibXxH6+70zhAFrVw==",
855
- "license": "MIT",
856
- "dependencies": {
857
- "@floating-ui/dom": "^1.7.4"
858
- },
859
- "peerDependencies": {
860
- "react": ">=16.8.0",
861
- "react-dom": ">=16.8.0"
862
- }
863
- },
864
- "node_modules/@floating-ui/utils": {
865
- "version": "0.2.10",
866
- "resolved": "https://registry.npmjs.org/@floating-ui/utils/-/utils-0.2.10.tgz",
867
- "integrity": "sha512-aGTxbpbg8/b5JfU1HXSrbH3wXZuLPJcNEcZQFMxLs3oSzgtVu6nFPkbbGGUvBcUjKV2YyB9Wxxabo+HEH9tcRQ==",
868
- "license": "MIT"
869
- },
870
778
  "node_modules/@jridgewell/gen-mapping": {
871
779
  "version": "0.3.13",
872
780
  "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.13.tgz",
@@ -1511,26 +1419,6 @@
1511
1419
  "vite": "^4.2.0 || ^5.0.0 || ^6.0.0 || ^7.0.0"
1512
1420
  }
1513
1421
  },
1514
- "node_modules/anser": {
1515
- "version": "1.4.10",
1516
- "resolved": "https://registry.npmjs.org/anser/-/anser-1.4.10.tgz",
1517
- "integrity": "sha512-hCv9AqTQ8ycjpSd3upOJd7vFwW1JaoYQ7tpham03GJ1ca8/65rqn0RpaWpItOAd6ylW9wAw6luXYPJIyPFVOww==",
1518
- "license": "MIT"
1519
- },
1520
- "node_modules/ansi-to-react": {
1521
- "version": "6.1.6",
1522
- "resolved": "https://registry.npmjs.org/ansi-to-react/-/ansi-to-react-6.1.6.tgz",
1523
- "integrity": "sha512-+HWn72GKydtupxX9TORBedqOMsJRiKTqaLUKW8txSBZw9iBpzPKLI8KOu4WzwD4R7hSv1zEspobY6LwlWvwZ6Q==",
1524
- "license": "BSD-3-Clause",
1525
- "dependencies": {
1526
- "anser": "^1.4.1",
1527
- "escape-carriage": "^1.3.0"
1528
- },
1529
- "peerDependencies": {
1530
- "react": "^16.3.2 || ^17.0.0",
1531
- "react-dom": "^16.3.2 || ^17.0.0"
1532
- }
1533
- },
1534
1422
  "node_modules/any-promise": {
1535
1423
  "version": "1.3.0",
1536
1424
  "resolved": "https://registry.npmjs.org/any-promise/-/any-promise-1.3.0.tgz",
@@ -1795,6 +1683,15 @@
1795
1683
  "node": ">= 6"
1796
1684
  }
1797
1685
  },
1686
+ "node_modules/clsx": {
1687
+ "version": "2.1.1",
1688
+ "resolved": "https://registry.npmjs.org/clsx/-/clsx-2.1.1.tgz",
1689
+ "integrity": "sha512-eYm0QWBtUrBWZWG0d386OGAw16Z995PiOVo2B7bjWSbHedGl5e0ZWaq65kOGgUSNesEIDkB9ISbTg/JK9dhCZA==",
1690
+ "license": "MIT",
1691
+ "engines": {
1692
+ "node": ">=6"
1693
+ }
1694
+ },
1798
1695
  "node_modules/comma-separated-tokens": {
1799
1696
  "version": "2.0.3",
1800
1697
  "resolved": "https://registry.npmjs.org/comma-separated-tokens/-/comma-separated-tokens-2.0.3.tgz",
@@ -1967,12 +1864,6 @@
1967
1864
  "node": ">=6"
1968
1865
  }
1969
1866
  },
1970
- "node_modules/escape-carriage": {
1971
- "version": "1.3.1",
1972
- "resolved": "https://registry.npmjs.org/escape-carriage/-/escape-carriage-1.3.1.tgz",
1973
- "integrity": "sha512-GwBr6yViW3ttx1kb7/Oh+gKQ1/TrhYwxKqVmg5gS+BK+Qe2KrOa/Vh7w3HPBvgGf0LfcDGoY9I6NHKoA5Hozhw==",
1974
- "license": "MIT"
1975
- },
1976
1867
  "node_modules/escape-string-regexp": {
1977
1868
  "version": "5.0.0",
1978
1869
  "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-5.0.0.tgz",
@@ -4022,12 +3913,6 @@
4022
3913
  "url": "https://opencollective.com/unified"
4023
3914
  }
4024
3915
  },
4025
- "node_modules/reselect": {
4026
- "version": "5.1.1",
4027
- "resolved": "https://registry.npmjs.org/reselect/-/reselect-5.1.1.tgz",
4028
- "integrity": "sha512-K/BG6eIky/SBpzfHZv/dd+9JBFiS4SWV7FIujVyJRux6e45+73RaUHXLmIR1f7WOMaQ0U1km6qwklRQxpJJY0w==",
4029
- "license": "MIT"
4030
- },
4031
3916
  "node_modules/resolve": {
4032
3917
  "version": "1.22.11",
4033
3918
  "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.11.tgz",
@@ -4236,11 +4121,15 @@
4236
4121
  "url": "https://github.com/sponsors/ljharb"
4237
4122
  }
4238
4123
  },
4239
- "node_modules/tabbable": {
4240
- "version": "6.4.0",
4241
- "resolved": "https://registry.npmjs.org/tabbable/-/tabbable-6.4.0.tgz",
4242
- "integrity": "sha512-05PUHKSNE8ou2dwIxTngl4EzcnsCDZGJ/iCLtDflR/SHB/ny14rXc+qU5P4mG9JkusiV7EivzY9Mhm55AzAvCg==",
4243
- "license": "MIT"
4124
+ "node_modules/tailwind-merge": {
4125
+ "version": "3.4.0",
4126
+ "resolved": "https://registry.npmjs.org/tailwind-merge/-/tailwind-merge-3.4.0.tgz",
4127
+ "integrity": "sha512-uSaO4gnW+b3Y2aWoWfFpX62vn2sR3skfhbjsEnaBI81WD1wBLlHZe5sWf0AqjksNdYTbGBEd0UasQMT3SNV15g==",
4128
+ "license": "MIT",
4129
+ "funding": {
4130
+ "type": "github",
4131
+ "url": "https://github.com/sponsors/dcastil"
4132
+ }
4244
4133
  },
4245
4134
  "node_modules/tailwindcss": {
4246
4135
  "version": "3.4.19",
@@ -4523,15 +4412,6 @@
4523
4412
  "browserslist": ">= 4.21.0"
4524
4413
  }
4525
4414
  },
4526
- "node_modules/use-sync-external-store": {
4527
- "version": "1.6.0",
4528
- "resolved": "https://registry.npmjs.org/use-sync-external-store/-/use-sync-external-store-1.6.0.tgz",
4529
- "integrity": "sha512-Pp6GSwGP/NrPIrxVFAIkOQeyw8lFenOHijQWkUTrDvrF4ALqylP2C/KCkeS9dpUM3KvYRQhna5vt7IL95+ZQ9w==",
4530
- "license": "MIT",
4531
- "peerDependencies": {
4532
- "react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0"
4533
- }
4534
- },
4535
4415
  "node_modules/util-deprecate": {
4536
4416
  "version": "1.0.2",
4537
4417
  "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz",
@@ -10,13 +10,13 @@
10
10
  "preview": "vite preview"
11
11
  },
12
12
  "dependencies": {
13
- "@base-ui/react": "^1.0.0",
14
- "ansi-to-react": "^6.1.6",
13
+ "clsx": "^2.1.1",
15
14
  "react": "^18.3.1",
16
15
  "react-dom": "^18.3.1",
17
16
  "react-markdown": "^9.1.0",
18
17
  "react-syntax-highlighter": "^15.6.6",
19
- "remark-gfm": "^4.0.1"
18
+ "remark-gfm": "^4.0.1",
19
+ "tailwind-merge": "^3.4.0"
20
20
  },
21
21
  "devDependencies": {
22
22
  "@types/chrome": "^0.0.287",
@@ -35,5 +35,12 @@
35
35
  },
36
36
  "default_title": "reverse-api-engineer"
37
37
  },
38
+ "content_scripts": [
39
+ {
40
+ "matches": ["<all_urls>"],
41
+ "js": ["content/codegen-recorder.js"],
42
+ "run_at": "document_start"
43
+ }
44
+ ],
38
45
  "default_locale": "en"
39
46
  }