adelie-ai 0.3.5 → 0.3.6
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.
- package/README.md +2 -2
- package/adelie/__init__.py +1 -1
- package/adelie/cli.py +23 -0
- package/adelie/interactive.py +11 -0
- package/adelie/updater.py +10 -10
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -13,7 +13,7 @@
|
|
|
13
13
|
<a href="https://www.npmjs.com/package/adelie-ai"><img src="https://img.shields.io/npm/v/adelie-ai?style=flat-square&logo=npm&color=CB3837" alt="npm version" /></a>
|
|
14
14
|
<img src="https://img.shields.io/badge/python-3.10+-3776AB?style=flat-square&logo=python&logoColor=white" alt="Python" />
|
|
15
15
|
<img src="https://img.shields.io/badge/LLM-Gemini%20│%20Ollama-FF6F00?style=flat-square" alt="LLM" />
|
|
16
|
-
<img src="https://img.shields.io/badge/tests-
|
|
16
|
+
<img src="https://img.shields.io/badge/tests-750%20passing-2EA043?style=flat-square" alt="Tests" />
|
|
17
17
|
<a href="./LICENSE"><img src="https://img.shields.io/badge/license-MIT-blue?style=flat-square" alt="License" /></a>
|
|
18
18
|
</p>
|
|
19
19
|
|
|
@@ -35,7 +35,7 @@
|
|
|
35
35
|
Adelie is an autonomous AI orchestrator that plans, codes, reviews, tests, deploys, and evolves software projects through a coordinated multi-agent loop. It ships as a single CLI (`npm install -g adelie-ai`) and requires only an LLM provider — no cloud backend, no account.
|
|
36
36
|
|
|
37
37
|
```
|
|
38
|
-
(o_ Adelie v0.3.
|
|
38
|
+
(o_ Adelie v0.3.5
|
|
39
39
|
//\ gemini · gemini-2.5-pro
|
|
40
40
|
V_/_ Phase: mid_1 | 🛡️3 📡🟢 🧠12/5
|
|
41
41
|
```
|
package/adelie/__init__.py
CHANGED
package/adelie/cli.py
CHANGED
|
@@ -87,6 +87,8 @@ def main() -> None:
|
|
|
87
87
|
)
|
|
88
88
|
parser.add_argument("-v", "--version", action="version",
|
|
89
89
|
version=f"adelie {__version__}")
|
|
90
|
+
parser.add_argument("--update", action="store_true",
|
|
91
|
+
help="Check npm registry and update Adelie to the latest version")
|
|
90
92
|
subparsers = parser.add_subparsers(dest="command", help="Available commands")
|
|
91
93
|
|
|
92
94
|
# ── help ──────────────────────────────────────────────────────────────────
|
|
@@ -279,6 +281,17 @@ def main() -> None:
|
|
|
279
281
|
# ── Splash screen (no command) ────────────────────────────────────────────
|
|
280
282
|
args = parser.parse_args()
|
|
281
283
|
|
|
284
|
+
if getattr(args, "update", False):
|
|
285
|
+
from adelie.updater import check_for_update, do_update
|
|
286
|
+
console.print("[cyan]🔍 Checking for updates...[/cyan]")
|
|
287
|
+
up = check_for_update(__version__, timeout=4.0)
|
|
288
|
+
if up:
|
|
289
|
+
console.print(f"[bold yellow]🐧 A new version has been found! (v{up['current']} → v{up['latest']})[/bold yellow]")
|
|
290
|
+
sys.exit(do_update())
|
|
291
|
+
else:
|
|
292
|
+
console.print(f"[green]✅ You are already running the latest version! (v{__version__})[/green]")
|
|
293
|
+
sys.exit(0)
|
|
294
|
+
|
|
282
295
|
if not args.command:
|
|
283
296
|
art = Text(_PENGUIN, no_wrap=True)
|
|
284
297
|
info = (
|
|
@@ -289,6 +302,16 @@ def main() -> None:
|
|
|
289
302
|
f" [dim]adelie <command> --help[/dim]\n"
|
|
290
303
|
)
|
|
291
304
|
console.print(Columns([Padding(art, (0, 1)), info]))
|
|
305
|
+
|
|
306
|
+
# Check for updates with a fast 1.0s timeout to avoid blocking startup
|
|
307
|
+
try:
|
|
308
|
+
from adelie.updater import check_for_update, format_update_notice
|
|
309
|
+
up = check_for_update(__version__, timeout=1.0)
|
|
310
|
+
if up:
|
|
311
|
+
console.print(format_update_notice(up["current"], up["latest"]))
|
|
312
|
+
except Exception:
|
|
313
|
+
pass
|
|
314
|
+
|
|
292
315
|
parser.print_help()
|
|
293
316
|
return
|
|
294
317
|
|
package/adelie/interactive.py
CHANGED
|
@@ -229,6 +229,17 @@ class AdelieApp:
|
|
|
229
229
|
workspace=str(cfg.PROJECT_ROOT),
|
|
230
230
|
)
|
|
231
231
|
|
|
232
|
+
# Start async update check in the background
|
|
233
|
+
try:
|
|
234
|
+
from adelie import __version__
|
|
235
|
+
from adelie.updater import check_for_update_async, format_update_notice
|
|
236
|
+
def _update_callback(result):
|
|
237
|
+
if result:
|
|
238
|
+
self._real_console.print(format_update_notice(result["current"], result["latest"]))
|
|
239
|
+
check_for_update_async(__version__, _update_callback)
|
|
240
|
+
except Exception:
|
|
241
|
+
pass
|
|
242
|
+
|
|
232
243
|
# Start dashboard server FIRST (so _setup_logger can reference it)
|
|
233
244
|
self._start_dashboard(cfg)
|
|
234
245
|
|
package/adelie/updater.py
CHANGED
|
@@ -62,11 +62,11 @@ def format_update_notice(current: str, latest: str) -> str:
|
|
|
62
62
|
"""Return a cute, Rich-markup update notification string."""
|
|
63
63
|
return (
|
|
64
64
|
f"\n"
|
|
65
|
-
f" [bold yellow]
|
|
65
|
+
f" [bold yellow]Brrr... 🐧 A new version is available![/bold yellow]\n"
|
|
66
66
|
f" [dim]v{current}[/dim] → [bold cyan]v{latest}[/bold cyan] "
|
|
67
|
-
f"[dim](
|
|
67
|
+
f"[dim](A fresh Adelie penguin is waiting for you)[/dim]\n"
|
|
68
68
|
f"\n"
|
|
69
|
-
f" [bold]adelie --update[/bold]
|
|
69
|
+
f" Run [bold]adelie --update[/bold] to update now ✨\n"
|
|
70
70
|
)
|
|
71
71
|
|
|
72
72
|
|
|
@@ -80,7 +80,7 @@ def do_update() -> int:
|
|
|
80
80
|
from rich.console import Console
|
|
81
81
|
|
|
82
82
|
console = Console()
|
|
83
|
-
console.print("\n[bold cyan]🐧 Adelie
|
|
83
|
+
console.print("\n[bold cyan]🐧 Updating Adelie...[/bold cyan]")
|
|
84
84
|
console.print("[dim]npm install -g adelie-ai@latest[/dim]\n")
|
|
85
85
|
|
|
86
86
|
try:
|
|
@@ -89,13 +89,13 @@ def do_update() -> int:
|
|
|
89
89
|
check=False,
|
|
90
90
|
)
|
|
91
91
|
if result.returncode == 0:
|
|
92
|
-
console.print("\n[bold green]✅
|
|
93
|
-
console.print("[dim]
|
|
92
|
+
console.print("\n[bold green]✅ Update complete! You are now running the cutest version 🐧✨[/bold green]")
|
|
93
|
+
console.print("[dim]Check version: adelie --version[/dim]\n")
|
|
94
94
|
else:
|
|
95
|
-
console.print("\n[bold red]❌
|
|
96
|
-
console.print("[dim]
|
|
95
|
+
console.print("\n[bold red]❌ Update failed.[/bold red]")
|
|
96
|
+
console.print("[dim]Try running: npm install -g adelie-ai@latest[/dim]\n")
|
|
97
97
|
return result.returncode
|
|
98
98
|
except FileNotFoundError:
|
|
99
|
-
console.print("[bold red]❌ npm
|
|
100
|
-
console.print("[dim]Node.js
|
|
99
|
+
console.print("[bold red]❌ npm command not found.[/bold red]")
|
|
100
|
+
console.print("[dim]Please install Node.js and try again: https://nodejs.org[/dim]\n")
|
|
101
101
|
return 1
|