browse-code 0.2.1__tar.gz → 0.2.3__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.
- {browse_code-0.2.1 → browse_code-0.2.3}/PKG-INFO +1 -1
- browse_code-0.2.3/browse_code/__init__.py +1 -0
- {browse_code-0.2.1 → browse_code-0.2.3}/browse_code/cli.py +25 -11
- {browse_code-0.2.1 → browse_code-0.2.3}/browse_code/server.py +38 -0
- {browse_code-0.2.1 → browse_code-0.2.3}/browse_code.egg-info/PKG-INFO +1 -1
- {browse_code-0.2.1 → browse_code-0.2.3}/setup.py +1 -1
- browse_code-0.2.1/browse_code/__init__.py +0 -1
- {browse_code-0.2.1 → browse_code-0.2.3}/README.md +0 -0
- {browse_code-0.2.1 → browse_code-0.2.3}/browse_code/extension/content.js +0 -0
- {browse_code-0.2.1 → browse_code-0.2.3}/browse_code/extension/icon128.png +0 -0
- {browse_code-0.2.1 → browse_code-0.2.3}/browse_code/extension/icon16.png +0 -0
- {browse_code-0.2.1 → browse_code-0.2.3}/browse_code/extension/icon48.png +0 -0
- {browse_code-0.2.1 → browse_code-0.2.3}/browse_code/extension/manifest.json +0 -0
- {browse_code-0.2.1 → browse_code-0.2.3}/browse_code/extension/popup.html +0 -0
- {browse_code-0.2.1 → browse_code-0.2.3}/browse_code/extension/popup.js +0 -0
- {browse_code-0.2.1 → browse_code-0.2.3}/browse_code/extension/spoof.js +0 -0
- {browse_code-0.2.1 → browse_code-0.2.3}/browse_code.egg-info/SOURCES.txt +0 -0
- {browse_code-0.2.1 → browse_code-0.2.3}/browse_code.egg-info/dependency_links.txt +0 -0
- {browse_code-0.2.1 → browse_code-0.2.3}/browse_code.egg-info/entry_points.txt +0 -0
- {browse_code-0.2.1 → browse_code-0.2.3}/browse_code.egg-info/requires.txt +0 -0
- {browse_code-0.2.1 → browse_code-0.2.3}/browse_code.egg-info/top_level.txt +0 -0
- {browse_code-0.2.1 → browse_code-0.2.3}/pyproject.toml +0 -0
- {browse_code-0.2.1 → browse_code-0.2.3}/setup.cfg +0 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
__version__ = "0.2.3"
|
|
@@ -19,14 +19,23 @@ console = Console()
|
|
|
19
19
|
PORT = 5505
|
|
20
20
|
HOST = "127.0.0.1"
|
|
21
21
|
|
|
22
|
-
|
|
23
|
-
██████╗ ██████╗ ██████╗ ██╗ ██╗███████╗███████╗
|
|
24
|
-
██╔══██╗██╔══██╗██╔═══██╗██║ ██║██╔════╝██╔════╝
|
|
25
|
-
██████╔╝██████╔╝██║ ██║██║ █╗ ██║███████╗█████╗
|
|
26
|
-
██╔══██╗██╔══██╗██║ ██║██║███╗██║╚════██║██╔══╝
|
|
27
|
-
██████╔╝██║
|
|
28
|
-
╚═════╝ ╚═╝ ╚═╝ ╚═════╝ ╚══╝╚══╝ ╚══════╝╚══════╝╚═╝
|
|
29
|
-
|
|
22
|
+
ASCII_BROWSE = [
|
|
23
|
+
"██████╗ ██████╗ ██████╗ ██╗ ██╗███████╗███████╗ ",
|
|
24
|
+
"██╔══██╗██╔══██╗██╔═══██╗██║ ██║██╔════╝██╔════╝ ",
|
|
25
|
+
"██████╔╝██████╔╝██║ ██║██║ █╗ ██║███████╗█████╗ ",
|
|
26
|
+
"██╔══██╗██╔══██╗██║ ██║██║███╗██║╚════██║██╔══╝ ",
|
|
27
|
+
"██████╔╝██║ ██║╚██████╔╝╚███╔███╔╝███████║███████╗██╗",
|
|
28
|
+
"╚═════╝ ╚═╝ ╚═╝ ╚═════╝ ╚══╝╚══╝ ╚══════╝╚══════╝╚═╝ "
|
|
29
|
+
]
|
|
30
|
+
|
|
31
|
+
ASCII_CODE = [
|
|
32
|
+
"██████╗ ██████╗ ██████╗ ███████╗",
|
|
33
|
+
"██╔════╝██╔═══██╗██╔══██╗██╔════╝",
|
|
34
|
+
"██║ ██║ ██║██║ ██║█████╗ ",
|
|
35
|
+
"██║ ██║ ██║██║ ██║██╔══╝ ",
|
|
36
|
+
"╚██████╗╚██████╔╝██████╔╝███████╗",
|
|
37
|
+
"╚═════╝ ╚═════╝ ╚═════╝ ╚══════╝"
|
|
38
|
+
]
|
|
30
39
|
|
|
31
40
|
|
|
32
41
|
def get_data_dir():
|
|
@@ -64,7 +73,9 @@ def copy_to_clipboard(text):
|
|
|
64
73
|
|
|
65
74
|
def print_banner():
|
|
66
75
|
"""Print the Browse Code ASCII art banner."""
|
|
67
|
-
console.print(
|
|
76
|
+
console.print()
|
|
77
|
+
for b, c in zip(ASCII_BROWSE, ASCII_CODE):
|
|
78
|
+
console.print(f"[bold green]{b}[/bold green][bold red]{c}[/bold red]")
|
|
68
79
|
|
|
69
80
|
|
|
70
81
|
def setup_extension():
|
|
@@ -82,6 +93,7 @@ def setup_extension():
|
|
|
82
93
|
border_style="green",
|
|
83
94
|
box=box.ROUNDED,
|
|
84
95
|
padding=(1, 2),
|
|
96
|
+
expand=False,
|
|
85
97
|
)
|
|
86
98
|
)
|
|
87
99
|
|
|
@@ -133,6 +145,7 @@ def setup_extension():
|
|
|
133
145
|
border_style="green",
|
|
134
146
|
box=box.ROUNDED,
|
|
135
147
|
padding=(1, 1),
|
|
148
|
+
expand=False,
|
|
136
149
|
)
|
|
137
150
|
)
|
|
138
151
|
console.print()
|
|
@@ -160,13 +173,14 @@ def print_server_header():
|
|
|
160
173
|
console.print(
|
|
161
174
|
Panel(
|
|
162
175
|
info,
|
|
163
|
-
title="[bold green]
|
|
164
|
-
title_align="
|
|
176
|
+
title="[bold green]Agent Bridge Backend[/bold green]",
|
|
177
|
+
title_align="center",
|
|
165
178
|
subtitle="[dim]Press Ctrl+C to stop[/dim]",
|
|
166
179
|
subtitle_align="right",
|
|
167
180
|
border_style="green",
|
|
168
181
|
box=box.ROUNDED,
|
|
169
182
|
padding=(1, 2),
|
|
183
|
+
expand=False,
|
|
170
184
|
)
|
|
171
185
|
)
|
|
172
186
|
console.print()
|
|
@@ -15,9 +15,47 @@ from fastapi import FastAPI, HTTPException, Request
|
|
|
15
15
|
from fastapi.middleware.cors import CORSMiddleware
|
|
16
16
|
from pydantic import BaseModel
|
|
17
17
|
|
|
18
|
+
async def check_extension_connection():
|
|
19
|
+
from pathlib import Path
|
|
20
|
+
try:
|
|
21
|
+
from rich.console import Console
|
|
22
|
+
from rich.panel import Panel
|
|
23
|
+
from rich import box
|
|
24
|
+
console = Console()
|
|
25
|
+
|
|
26
|
+
while True:
|
|
27
|
+
await asyncio.sleep(30) # Check every 30 seconds
|
|
28
|
+
if not is_extension_connected():
|
|
29
|
+
ext_path = str(Path.home() / ".browse_code" / "extension")
|
|
30
|
+
console.print()
|
|
31
|
+
console.print(
|
|
32
|
+
Panel(
|
|
33
|
+
"[bold yellow]Extension Not Connected![/bold yellow]\n\n"
|
|
34
|
+
"The server is running, but the browser extension hasn't connected.\n"
|
|
35
|
+
"To fix this:\n"
|
|
36
|
+
" 1. Ensure the [bold]Browse Code[/bold] extension is installed and enabled.\n"
|
|
37
|
+
" 2. Make sure Chrome is open.\n\n"
|
|
38
|
+
"[dim]If you haven't installed it yet:[/dim]\n"
|
|
39
|
+
" • Open [cyan]chrome://extensions/[/cyan]\n"
|
|
40
|
+
" • Enable [bold]Developer Mode[/bold] (top right)\n"
|
|
41
|
+
" • Click [bold]Load unpacked[/bold] and select this folder:\n"
|
|
42
|
+
f" [green]{ext_path}[/green]",
|
|
43
|
+
title="[bold yellow]Warning[/bold yellow]",
|
|
44
|
+
title_align="left",
|
|
45
|
+
border_style="yellow",
|
|
46
|
+
box=box.ROUNDED,
|
|
47
|
+
padding=(1, 2),
|
|
48
|
+
expand=False
|
|
49
|
+
)
|
|
50
|
+
)
|
|
51
|
+
except asyncio.CancelledError:
|
|
52
|
+
pass
|
|
53
|
+
|
|
18
54
|
@asynccontextmanager
|
|
19
55
|
async def lifespan(app: FastAPI):
|
|
56
|
+
task = asyncio.create_task(check_extension_connection())
|
|
20
57
|
yield
|
|
58
|
+
task.cancel()
|
|
21
59
|
|
|
22
60
|
|
|
23
61
|
app = FastAPI(title="Agent Bridge Backend", lifespan=lifespan)
|
|
@@ -2,7 +2,7 @@ from setuptools import setup, find_packages
|
|
|
2
2
|
|
|
3
3
|
setup(
|
|
4
4
|
name="browse_code",
|
|
5
|
-
version="0.2.
|
|
5
|
+
version="0.2.3",
|
|
6
6
|
description="Turn any AI chatbot into an autonomous coding agent",
|
|
7
7
|
long_description=open("README.md").read(),
|
|
8
8
|
long_description_content_type="text/markdown",
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
__version__ = "0.2.1"
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|