frontend-perception-engine 0.1.1__tar.gz → 0.1.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 (57) hide show
  1. {frontend_perception_engine-0.1.1 → frontend_perception_engine-0.1.2}/PKG-INFO +1 -1
  2. {frontend_perception_engine-0.1.1 → frontend_perception_engine-0.1.2}/pyproject.toml +1 -1
  3. {frontend_perception_engine-0.1.1 → frontend_perception_engine-0.1.2}/src/frontend_perception_engine.egg-info/PKG-INFO +1 -1
  4. {frontend_perception_engine-0.1.1 → frontend_perception_engine-0.1.2}/src/navigation/cli/install.py +49 -15
  5. {frontend_perception_engine-0.1.1 → frontend_perception_engine-0.1.2}/README.md +0 -0
  6. {frontend_perception_engine-0.1.1 → frontend_perception_engine-0.1.2}/setup.cfg +0 -0
  7. {frontend_perception_engine-0.1.1 → frontend_perception_engine-0.1.2}/src/frontend_perception_engine.egg-info/SOURCES.txt +0 -0
  8. {frontend_perception_engine-0.1.1 → frontend_perception_engine-0.1.2}/src/frontend_perception_engine.egg-info/dependency_links.txt +0 -0
  9. {frontend_perception_engine-0.1.1 → frontend_perception_engine-0.1.2}/src/frontend_perception_engine.egg-info/entry_points.txt +0 -0
  10. {frontend_perception_engine-0.1.1 → frontend_perception_engine-0.1.2}/src/frontend_perception_engine.egg-info/requires.txt +0 -0
  11. {frontend_perception_engine-0.1.1 → frontend_perception_engine-0.1.2}/src/frontend_perception_engine.egg-info/top_level.txt +0 -0
  12. {frontend_perception_engine-0.1.1 → frontend_perception_engine-0.1.2}/src/navigation/__init__.py +0 -0
  13. {frontend_perception_engine-0.1.1 → frontend_perception_engine-0.1.2}/src/navigation/browser_use/__init__.py +0 -0
  14. {frontend_perception_engine-0.1.1 → frontend_perception_engine-0.1.2}/src/navigation/browser_use/agent_runner.py +0 -0
  15. {frontend_perception_engine-0.1.1 → frontend_perception_engine-0.1.2}/src/navigation/browser_use/hints.py +0 -0
  16. {frontend_perception_engine-0.1.1 → frontend_perception_engine-0.1.2}/src/navigation/browser_use/integration.py +0 -0
  17. {frontend_perception_engine-0.1.1 → frontend_perception_engine-0.1.2}/src/navigation/browser_use/llm.py +0 -0
  18. {frontend_perception_engine-0.1.1 → frontend_perception_engine-0.1.2}/src/navigation/cli/__init__.py +0 -0
  19. {frontend_perception_engine-0.1.1 → frontend_perception_engine-0.1.2}/src/navigation/codeGraph/__init__.py +0 -0
  20. {frontend_perception_engine-0.1.1 → frontend_perception_engine-0.1.2}/src/navigation/codeGraph/crg_impl.py +0 -0
  21. {frontend_perception_engine-0.1.1 → frontend_perception_engine-0.1.2}/src/navigation/codeGraph/factory.py +0 -0
  22. {frontend_perception_engine-0.1.1 → frontend_perception_engine-0.1.2}/src/navigation/codeGraph/interface.py +0 -0
  23. {frontend_perception_engine-0.1.1 → frontend_perception_engine-0.1.2}/src/navigation/codeGraph/null_impl.py +0 -0
  24. {frontend_perception_engine-0.1.1 → frontend_perception_engine-0.1.2}/src/navigation/mcp/__init__.py +0 -0
  25. {frontend_perception_engine-0.1.1 → frontend_perception_engine-0.1.2}/src/navigation/mcp/__main__.py +0 -0
  26. {frontend_perception_engine-0.1.1 → frontend_perception_engine-0.1.2}/src/navigation/mcp/diff.py +0 -0
  27. {frontend_perception_engine-0.1.1 → frontend_perception_engine-0.1.2}/src/navigation/mcp/envelope.py +0 -0
  28. {frontend_perception_engine-0.1.1 → frontend_perception_engine-0.1.2}/src/navigation/mcp/handlers.py +0 -0
  29. {frontend_perception_engine-0.1.1 → frontend_perception_engine-0.1.2}/src/navigation/mcp/instructions.py +0 -0
  30. {frontend_perception_engine-0.1.1 → frontend_perception_engine-0.1.2}/src/navigation/mcp/resources.py +0 -0
  31. {frontend_perception_engine-0.1.1 → frontend_perception_engine-0.1.2}/src/navigation/mcp/scan_registry.py +0 -0
  32. {frontend_perception_engine-0.1.1 → frontend_perception_engine-0.1.2}/src/navigation/mcp/server.py +0 -0
  33. {frontend_perception_engine-0.1.1 → frontend_perception_engine-0.1.2}/src/navigation/mcp/session_store.py +0 -0
  34. {frontend_perception_engine-0.1.1 → frontend_perception_engine-0.1.2}/src/navigation/mcp/tools.py +0 -0
  35. {frontend_perception_engine-0.1.1 → frontend_perception_engine-0.1.2}/src/navigation/perception/__init__.py +0 -0
  36. {frontend_perception_engine-0.1.1 → frontend_perception_engine-0.1.2}/src/navigation/perception/artifacts.py +0 -0
  37. {frontend_perception_engine-0.1.1 → frontend_perception_engine-0.1.2}/src/navigation/perception/auth_gate.py +0 -0
  38. {frontend_perception_engine-0.1.1 → frontend_perception_engine-0.1.2}/src/navigation/perception/budget.py +0 -0
  39. {frontend_perception_engine-0.1.1 → frontend_perception_engine-0.1.2}/src/navigation/perception/cdp_hub.py +0 -0
  40. {frontend_perception_engine-0.1.1 → frontend_perception_engine-0.1.2}/src/navigation/perception/dev_insights.py +0 -0
  41. {frontend_perception_engine-0.1.1 → frontend_perception_engine-0.1.2}/src/navigation/perception/exploration.py +0 -0
  42. {frontend_perception_engine-0.1.1 → frontend_perception_engine-0.1.2}/src/navigation/perception/feature_flags.py +0 -0
  43. {frontend_perception_engine-0.1.1 → frontend_perception_engine-0.1.2}/src/navigation/perception/file_upload.py +0 -0
  44. {frontend_perception_engine-0.1.1 → frontend_perception_engine-0.1.2}/src/navigation/perception/flow_graph.py +0 -0
  45. {frontend_perception_engine-0.1.1 → frontend_perception_engine-0.1.2}/src/navigation/perception/form_probe.py +0 -0
  46. {frontend_perception_engine-0.1.1 → frontend_perception_engine-0.1.2}/src/navigation/perception/iframe_context.py +0 -0
  47. {frontend_perception_engine-0.1.1 → frontend_perception_engine-0.1.2}/src/navigation/perception/observation.py +0 -0
  48. {frontend_perception_engine-0.1.1 → frontend_perception_engine-0.1.2}/src/navigation/perception/preflight.py +0 -0
  49. {frontend_perception_engine-0.1.1 → frontend_perception_engine-0.1.2}/src/navigation/perception/rich_editors.py +0 -0
  50. {frontend_perception_engine-0.1.1 → frontend_perception_engine-0.1.2}/src/navigation/perception/route_guards.py +0 -0
  51. {frontend_perception_engine-0.1.1 → frontend_perception_engine-0.1.2}/src/navigation/perception/runner.py +0 -0
  52. {frontend_perception_engine-0.1.1 → frontend_perception_engine-0.1.2}/src/navigation/perception/scan.py +0 -0
  53. {frontend_perception_engine-0.1.1 → frontend_perception_engine-0.1.2}/src/navigation/perception/scripted_actions.py +0 -0
  54. {frontend_perception_engine-0.1.1 → frontend_perception_engine-0.1.2}/src/navigation/perception/state_manager.py +0 -0
  55. {frontend_perception_engine-0.1.1 → frontend_perception_engine-0.1.2}/src/navigation/perception/verification.py +0 -0
  56. {frontend_perception_engine-0.1.1 → frontend_perception_engine-0.1.2}/src/navigation/perception/virtual_scroll.py +0 -0
  57. {frontend_perception_engine-0.1.1 → frontend_perception_engine-0.1.2}/src/navigation/perception/websocket_observer.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: frontend-perception-engine
3
- Version: 0.1.1
3
+ Version: 0.1.2
4
4
  Summary: Frontend perception engine with optional CRG-powered navigation hints for Browser Use.
5
5
  Requires-Python: >=3.10
6
6
  Description-Content-Type: text/markdown
@@ -1,6 +1,6 @@
1
1
  [project]
2
2
  name = "frontend-perception-engine"
3
- version = "0.1.1"
3
+ version = "0.1.2"
4
4
  description = "Frontend perception engine with optional CRG-powered navigation hints for Browser Use."
5
5
  readme = "README.md"
6
6
  requires-python = ">=3.10"
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: frontend-perception-engine
3
- Version: 0.1.1
3
+ Version: 0.1.2
4
4
  Summary: Frontend perception engine with optional CRG-powered navigation hints for Browser Use.
5
5
  Requires-Python: >=3.10
6
6
  Description-Content-Type: text/markdown
@@ -45,22 +45,47 @@ class _Spinner:
45
45
  time.sleep(0.1)
46
46
 
47
47
 
48
- def _build_pip_command(*, upgrade: bool, editable: str | None) -> list[str]:
49
- cmd = [
50
- sys.executable,
51
- '-m',
52
- 'pip',
53
- 'install',
54
- '-q',
55
- '--disable-pip-version-check',
56
- ]
57
- if upgrade:
58
- cmd.append('--upgrade')
48
+ def _pip_available() -> bool:
49
+ result = subprocess.run(
50
+ [sys.executable, '-m', 'pip', '--version'],
51
+ capture_output=True,
52
+ )
53
+ return result.returncode == 0
54
+
55
+
56
+ def _build_install_command(*, upgrade: bool, editable: str | None) -> list[str]:
57
+ target: list[str]
59
58
  if editable is not None:
60
- cmd.extend(['-e', editable])
59
+ target = ['-e', editable]
61
60
  else:
62
- cmd.append(PACKAGE_NAME)
63
- return cmd
61
+ target = [PACKAGE_NAME]
62
+
63
+ if _pip_available():
64
+ cmd = [
65
+ sys.executable,
66
+ '-m',
67
+ 'pip',
68
+ 'install',
69
+ '-q',
70
+ '--disable-pip-version-check',
71
+ ]
72
+ if upgrade:
73
+ cmd.append('--upgrade')
74
+ cmd.extend(target)
75
+ return cmd
76
+
77
+ uv = shutil.which('uv')
78
+ if uv is not None:
79
+ cmd = [uv, 'pip', 'install', '-q']
80
+ if upgrade:
81
+ cmd.append('--upgrade')
82
+ cmd.extend(target)
83
+ return cmd
84
+
85
+ raise SystemExit(
86
+ 'No installer available. Install pip or uv, or use:\n'
87
+ ' uvx --from frontend-perception-engine frontend-perception-mcp\n',
88
+ )
64
89
 
65
90
 
66
91
  def _build_browser_install_command() -> list[str]:
@@ -151,7 +176,16 @@ def main(argv: Sequence[str] | None = None) -> None:
151
176
  editable_path = None
152
177
  label = 'Installing frontend-perception-engine'
153
178
 
154
- _run_quiet(_build_pip_command(upgrade=args.upgrade, editable=editable_path), label=label)
179
+ if (
180
+ not args.upgrade
181
+ and editable_path is None
182
+ and _installed_version() is not None
183
+ and not _pip_available()
184
+ ):
185
+ _print_success(with_browser=False)
186
+ return
187
+
188
+ _run_quiet(_build_install_command(upgrade=args.upgrade, editable=editable_path), label=label)
155
189
 
156
190
  if args.with_browser:
157
191
  browser_cmd = _build_browser_install_command()