adelie-ai 0.2.12 → 0.2.14
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 +104 -22
- package/adelie/__init__.py +1 -2
- package/adelie/commands/_helpers.py +2 -1
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -6,14 +6,14 @@
|
|
|
6
6
|
|
|
7
7
|
<p align="center">
|
|
8
8
|
<strong>Autonomous AI Orchestration System</strong><br/>
|
|
9
|
-
<sub>
|
|
9
|
+
<sub>13 specialized agents · 6-phase lifecycle · zero human intervention</sub>
|
|
10
10
|
</p>
|
|
11
11
|
|
|
12
12
|
<p align="center">
|
|
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-636%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
|
|
|
@@ -23,7 +23,8 @@
|
|
|
23
23
|
<a href="#architecture">Architecture</a> · 
|
|
24
24
|
<a href="#cli">CLI</a> · 
|
|
25
25
|
<a href="#dashboard">Dashboard</a> · 
|
|
26
|
-
<a href="
|
|
26
|
+
<a href="https://ade1ie.github.io/adelie/">Docs</a> · 
|
|
27
|
+
<a href="https://github.com/Ade1ie/adelie/blob/main/CHANGELOG.md">Changelog</a>
|
|
27
28
|
</p>
|
|
28
29
|
|
|
29
30
|
---
|
|
@@ -33,8 +34,8 @@
|
|
|
33
34
|
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.
|
|
34
35
|
|
|
35
36
|
```
|
|
36
|
-
(o_ Adelie v0.2.
|
|
37
|
-
//\
|
|
37
|
+
(o_ Adelie v0.2.12
|
|
38
|
+
//\ gemini · gemini-2.0-flash
|
|
38
39
|
V_/_ Phase: mid_2
|
|
39
40
|
```
|
|
40
41
|
|
|
@@ -49,9 +50,25 @@ Adelie is an autonomous AI orchestrator that plans, codes, reviews, tests, deplo
|
|
|
49
50
|
7. **Tester** runs tests and reports failures
|
|
50
51
|
8. **Runner** builds, installs, deploys
|
|
51
52
|
9. **Monitor** watches system health
|
|
52
|
-
10. **
|
|
53
|
+
10. **Analyst** evaluates trends and growth opportunities
|
|
54
|
+
11. **Inform** generates human-readable project status reports
|
|
55
|
+
12. **Phase gates** decide when to advance the project lifecycle
|
|
53
56
|
|
|
54
|
-
The loop runs continuously at a configurable interval (default 30 s), or once with `adelie run once`.
|
|
57
|
+
The loop runs continuously at a configurable interval (default 30 s), or once with `adelie run --once`.
|
|
58
|
+
|
|
59
|
+
---
|
|
60
|
+
|
|
61
|
+
## What's New in v0.2.12
|
|
62
|
+
|
|
63
|
+
🔒 **Security Hardening** — Shell injection prevention (`&`, `>` blocked), path traversal protection via `Path.resolve()`, staging race condition locks.
|
|
64
|
+
|
|
65
|
+
🧵 **Thread Safety** — `_usage_lock` protects global token counters during parallel agent execution.
|
|
66
|
+
|
|
67
|
+
🪟 **Windows Stability** — Fixed `python3` Microsoft Store stub, venv `activate.bat` wrapper, `cmd /c` resolver, cross-platform path handling.
|
|
68
|
+
|
|
69
|
+
📋 **Changelog** — [Full changelog](https://ade1ie.github.io/adelie/#changelog) now on the docs site with interactive expand/collapse.
|
|
70
|
+
|
|
71
|
+
> See [CHANGELOG.md](./CHANGELOG.md) for complete release history.
|
|
55
72
|
|
|
56
73
|
---
|
|
57
74
|
|
|
@@ -98,16 +115,17 @@ brew install adelie
|
|
|
98
115
|
git clone https://github.com/Ade1ie/adelie.git
|
|
99
116
|
cd adelie
|
|
100
117
|
pip install -r requirements.txt
|
|
101
|
-
python adelie
|
|
118
|
+
python -c "from adelie.cli import main; main()"
|
|
102
119
|
```
|
|
103
120
|
|
|
104
121
|
### Update
|
|
105
122
|
|
|
106
123
|
```bash
|
|
107
|
-
#
|
|
108
|
-
|
|
124
|
+
# Built-in update checker
|
|
125
|
+
adelie --update
|
|
109
126
|
|
|
110
|
-
#
|
|
127
|
+
# or manual
|
|
128
|
+
npm install -g adelie-ai@latest
|
|
111
129
|
|
|
112
130
|
# Homebrew
|
|
113
131
|
brew upgrade adelie
|
|
@@ -136,7 +154,10 @@ adelie config --provider ollama --model gemma3:12b
|
|
|
136
154
|
adelie run --goal "Build a REST API for task management"
|
|
137
155
|
|
|
138
156
|
# Single cycle
|
|
139
|
-
adelie run once --goal "Analyze and document the codebase"
|
|
157
|
+
adelie run --once --goal "Analyze and document the codebase"
|
|
158
|
+
|
|
159
|
+
# Resume a saved workspace
|
|
160
|
+
adelie run ws 1
|
|
140
161
|
```
|
|
141
162
|
|
|
142
163
|
The real-time **dashboard** opens automatically at **http://localhost:5042**.
|
|
@@ -157,8 +178,9 @@ The real-time **dashboard** opens automatically at **http://localhost:5042**.
|
|
|
157
178
|
| **Tester** | Executes tests, collects failures, feeds back to coder | After review |
|
|
158
179
|
| **Runner** | Installs deps, builds, deploys (whitelisted commands) | Mid-phase + |
|
|
159
180
|
| **Monitor** | System health, resource checks, service restarts | Periodic |
|
|
160
|
-
| **Analyst** | Trend analysis, insights, KB synthesis | Periodic |
|
|
181
|
+
| **Analyst** | Trend analysis, market insights, KB synthesis | Periodic |
|
|
161
182
|
| **Research** | Web search → KB for external knowledge | On demand |
|
|
183
|
+
| **Inform** | Human-readable project reports and status summaries | On demand |
|
|
162
184
|
|
|
163
185
|
### 6-Phase Lifecycle
|
|
164
186
|
|
|
@@ -178,6 +200,16 @@ The Coder Manager dispatches tasks across three dependency layers:
|
|
|
178
200
|
|
|
179
201
|
Failed layers trigger targeted retries with reviewer feedback.
|
|
180
202
|
|
|
203
|
+
### Security
|
|
204
|
+
|
|
205
|
+
Adelie enforces multiple security layers:
|
|
206
|
+
|
|
207
|
+
- **Shell injection prevention** — `BLOCKED_CHARS` filter blocks `&`, `>`, `|`, `;`, backticks, and other shell metacharacters in all subprocess commands
|
|
208
|
+
- **Path traversal protection** — `Path.resolve()` verification ensures generated files stay within the staging directory
|
|
209
|
+
- **Staging isolation** — Code is written to `.adelie/staging/` first, verified with `py_compile` / `node --check`, then promoted to project root
|
|
210
|
+
- **Thread-safe operations** — `_usage_lock` and `_staging_lock` prevent race conditions during parallel agent execution
|
|
211
|
+
- **Whitelisted commands** — Runner and Tester only execute pre-approved command patterns
|
|
212
|
+
|
|
181
213
|
---
|
|
182
214
|
|
|
183
215
|
## Architecture
|
|
@@ -192,7 +224,7 @@ Failed layers trigger targeted retries with reviewer feedback.
|
|
|
192
224
|
|
|
193
225
|
Adelie serves a real-time monitoring UI at **`http://localhost:5042`** (auto-starts with `adelie run`).
|
|
194
226
|
|
|
195
|
-
- **Agent grid** — live status of all
|
|
227
|
+
- **Agent grid** — live status of all 13 agents (idle / running / done / error)
|
|
196
228
|
- **Log stream** — real-time SSE-powered log feed with category filtering
|
|
197
229
|
- **Cycle metrics** — tokens, LLM calls, files written, test results, review scores
|
|
198
230
|
- **Phase timeline** — visual progress through the 6-phase lifecycle
|
|
@@ -211,6 +243,7 @@ Built with zero external dependencies — Python `http.server` + SSE + embedded
|
|
|
211
243
|
|
|
212
244
|
```bash
|
|
213
245
|
adelie --version # Show version
|
|
246
|
+
adelie --update # Check for updates
|
|
214
247
|
adelie help # Full command reference
|
|
215
248
|
```
|
|
216
249
|
|
|
@@ -220,13 +253,14 @@ adelie help # Full command reference
|
|
|
220
253
|
adelie init [dir] # Initialize .adelie workspace
|
|
221
254
|
adelie ws # List all workspaces
|
|
222
255
|
adelie ws remove <N> # Remove workspace
|
|
256
|
+
adelie scan # Scan existing codebase → KB
|
|
223
257
|
```
|
|
224
258
|
|
|
225
259
|
### Execution
|
|
226
260
|
|
|
227
261
|
```bash
|
|
228
262
|
adelie run --goal "…" # Start continuous loop
|
|
229
|
-
adelie run once --goal "…"
|
|
263
|
+
adelie run --once --goal "…" # Single cycle
|
|
230
264
|
adelie run ws <N> # Resume workspace #N
|
|
231
265
|
```
|
|
232
266
|
|
|
@@ -235,9 +269,9 @@ adelie run ws <N> # Resume workspace #N
|
|
|
235
269
|
```bash
|
|
236
270
|
adelie config # Show current config
|
|
237
271
|
adelie config --provider ollama # Switch LLM provider
|
|
238
|
-
adelie config --model
|
|
272
|
+
adelie config --model gemma3:12b # Set model
|
|
239
273
|
adelie config --api-key KEY # Set Gemini API key
|
|
240
|
-
adelie config --
|
|
274
|
+
adelie config --plan-mode true # Enable Plan Mode (human approval)
|
|
241
275
|
```
|
|
242
276
|
|
|
243
277
|
### Settings
|
|
@@ -260,6 +294,7 @@ adelie inform # AI-generated project report
|
|
|
260
294
|
adelie phase # Show current phase
|
|
261
295
|
adelie phase set <phase> # Set phase manually
|
|
262
296
|
adelie metrics # Cycle metrics & history
|
|
297
|
+
adelie metrics --agents # Per-agent token usage
|
|
263
298
|
```
|
|
264
299
|
|
|
265
300
|
### Knowledge Base & Project
|
|
@@ -276,6 +311,15 @@ adelie spec load <file> # Load spec (MD/PDF/DOCX) into KB
|
|
|
276
311
|
adelie git # Git status & recent commits
|
|
277
312
|
```
|
|
278
313
|
|
|
314
|
+
### Customization
|
|
315
|
+
|
|
316
|
+
```bash
|
|
317
|
+
adelie prompts # List agent system prompts
|
|
318
|
+
adelie prompts export # Export prompts for editing
|
|
319
|
+
adelie tools # List registered tools
|
|
320
|
+
adelie commands # List custom commands
|
|
321
|
+
```
|
|
322
|
+
|
|
279
323
|
### Integrations
|
|
280
324
|
|
|
281
325
|
```bash
|
|
@@ -288,6 +332,24 @@ adelie ollama run [model] # Interactive chat
|
|
|
288
332
|
|
|
289
333
|
---
|
|
290
334
|
|
|
335
|
+
## Plan Mode
|
|
336
|
+
|
|
337
|
+
Enable Plan Mode for human-in-the-loop control:
|
|
338
|
+
|
|
339
|
+
```bash
|
|
340
|
+
adelie config --plan-mode true
|
|
341
|
+
```
|
|
342
|
+
|
|
343
|
+
When enabled, the Expert AI generates a **plan** before executing code changes. You can review, approve, or reject from the interactive REPL:
|
|
344
|
+
|
|
345
|
+
| Command | Action |
|
|
346
|
+
|:--|:--|
|
|
347
|
+
| `/plan` | View pending plan |
|
|
348
|
+
| `/approve` | Execute the plan |
|
|
349
|
+
| `/reject [reason]` | Reject and provide feedback |
|
|
350
|
+
|
|
351
|
+
---
|
|
352
|
+
|
|
291
353
|
## Configuration
|
|
292
354
|
|
|
293
355
|
### Environment (`.adelie/.env`)
|
|
@@ -352,13 +414,15 @@ Use functional components with TypeScript props…
|
|
|
352
414
|
| 📊 **Dashboard** | Real-time web UI with SSE streaming on port 5042 |
|
|
353
415
|
| 🔄 **Loop Detector** | 5 stuck-pattern types with escalating interventions |
|
|
354
416
|
| ⚡ **Scheduler** | Per-agent frequency control with cooldown/priority |
|
|
417
|
+
| 🔒 **Security** | Shell injection prevention, path traversal protection, staging isolation |
|
|
418
|
+
| 📋 **Plan Mode** | Human-in-the-loop approval for code changes |
|
|
355
419
|
|
|
356
420
|
---
|
|
357
421
|
|
|
358
422
|
## Testing
|
|
359
423
|
|
|
360
424
|
```bash
|
|
361
|
-
python -m pytest tests/ -v #
|
|
425
|
+
python -m pytest tests/ -v # 636 tests
|
|
362
426
|
```
|
|
363
427
|
|
|
364
428
|
---
|
|
@@ -368,13 +432,20 @@ python -m pytest tests/ -v # 197 tests
|
|
|
368
432
|
```
|
|
369
433
|
adelie/
|
|
370
434
|
├── orchestrator.py # Main loop — state machine + phase gates
|
|
371
|
-
├──
|
|
435
|
+
├── commands/ # CLI command modules
|
|
436
|
+
│ ├── workspace.py # init, ws
|
|
437
|
+
│ ├── run.py # run, run once, run ws
|
|
438
|
+
│ ├── config.py # config, settings
|
|
439
|
+
│ ├── monitoring.py # status, phase, metrics, inform
|
|
440
|
+
│ ├── knowledge.py # kb, feedback, goal, research, spec, scan
|
|
441
|
+
│ └── integrations.py # ollama, telegram, git, tools, prompts
|
|
442
|
+
├── cli.py # CLI entry point + argparse routing
|
|
372
443
|
├── config.py # Configuration & env loading
|
|
373
444
|
├── llm_client.py # LLM abstraction (Gemini + Ollama + fallback)
|
|
374
445
|
├── interactive.py # REPL + dashboard integration
|
|
375
446
|
├── dashboard.py # Real-time web server (HTTP + SSE)
|
|
376
447
|
├── dashboard_html.py # Embedded dashboard UI template
|
|
377
|
-
├── agents/ #
|
|
448
|
+
├── agents/ # 12 specialized AI agents
|
|
378
449
|
│ ├── writer_ai.py # Knowledge Base curator
|
|
379
450
|
│ ├── expert_ai.py # Strategic decision maker
|
|
380
451
|
│ ├── coder_ai.py # Code generator
|
|
@@ -385,6 +456,7 @@ adelie/
|
|
|
385
456
|
│ ├── monitor_ai.py # Health monitor
|
|
386
457
|
│ ├── analyst_ai.py # Trend analyzer
|
|
387
458
|
│ ├── research_ai.py # Web researcher
|
|
459
|
+
│ ├── inform_ai.py # Status report generator
|
|
388
460
|
│ └── scanner_ai.py # Initial codebase scanner
|
|
389
461
|
├── kb/ # Knowledge Base (retriever + embeddings)
|
|
390
462
|
├── channels/ # Multichannel providers (Discord, Slack)
|
|
@@ -393,12 +465,13 @@ adelie/
|
|
|
393
465
|
├── sandbox.py # Docker/Seatbelt isolation
|
|
394
466
|
├── gateway.py # REST API gateway
|
|
395
467
|
├── skill_manager.py # Skill registry
|
|
468
|
+
├── env_strategy.py # Runtime environment detection
|
|
469
|
+
├── plan_mode.py # Plan Mode (human approval)
|
|
396
470
|
├── loop_detector.py # Stuck-pattern detection
|
|
397
471
|
├── scheduler.py # Per-agent scheduling
|
|
398
472
|
├── phases.py # Lifecycle phase definitions
|
|
399
473
|
├── hooks.py # Event-driven plugin system
|
|
400
|
-
|
|
401
|
-
└── env_strategy.py # Runtime environment detection
|
|
474
|
+
└── process_supervisor.py # Subprocess management
|
|
402
475
|
```
|
|
403
476
|
|
|
404
477
|
---
|
|
@@ -418,6 +491,15 @@ python -m pytest tests/ -v # Ensure all tests pass
|
|
|
418
491
|
|
|
419
492
|
---
|
|
420
493
|
|
|
494
|
+
## Links
|
|
495
|
+
|
|
496
|
+
- 📖 [Documentation](https://ade1ie.github.io/adelie/) — Full command reference & guides
|
|
497
|
+
- 📋 [Changelog](https://github.com/Ade1ie/adelie/blob/main/CHANGELOG.md) — Release history
|
|
498
|
+
- 📦 [npm](https://www.npmjs.com/package/adelie-ai) — `npm install -g adelie-ai`
|
|
499
|
+
- 🐛 [Issues](https://github.com/Ade1ie/adelie/issues) — Bug reports
|
|
500
|
+
|
|
501
|
+
---
|
|
502
|
+
|
|
421
503
|
## License
|
|
422
504
|
|
|
423
505
|
[MIT](./LICENSE)
|
package/adelie/__init__.py
CHANGED
|
@@ -171,7 +171,8 @@ def _detect_os() -> dict:
|
|
|
171
171
|
osrel = Path("/etc/os-release").read_text()
|
|
172
172
|
for line in osrel.splitlines():
|
|
173
173
|
if line.startswith("PRETTY_NAME="):
|
|
174
|
-
|
|
174
|
+
pretty = line.split("=", 1)[1].strip('"')
|
|
175
|
+
os_name = f"Linux ({pretty})"
|
|
175
176
|
break
|
|
176
177
|
except Exception:
|
|
177
178
|
pass
|