praisonai-code package migration
Where the agentic terminal CLI lives during the incremental C0–C6 extraction from the praisonai wrapper.
praisonai-code is a new sibling package that will host the agentic terminal CLI, extracted incrementally from the praisonai wrapper without breaking any existing install or import path.
from praisonaiagents import Agent
agent = Agent(
name="CLI Assistant",
instructions="Answer prompts from the terminal CLI.",
)
agent.start("Say hello from praisonai run")The user keeps using pip install praisonai; the extracted praisonai-code package powers the same CLI entry points.
Quick Start
- Nothing changes for users
bash pip install praisonai praisonai "say hello" - Optional: install praisonai-code for development
From the PraisonAI monorepo root:
bash pip install -e src/praisonai-code python -c "import praisonai_code; print(praisonai_code.__version__)"
How It Works
Dependency flow is one-way: praisonai → praisonai-code → praisonaiagents. The praisonai-code package never declares a dependency on praisonai, which avoids a PyPI cycle. Bot, gateway, and daemon code moved to praisonai-bot in C9.
| Layer | Package | Role | |||
|---|---|---|---|---|---|
| SDK | praisonaiagents | Agents, tools, memory, workflows | |||
| Terminal CLI | praisonai-code | `run –output actions | json | stream | stream-json, warm runtime, CLI backends. Default run “…” is fully standalone; chat / code` open their resident interactive TUI standalone (PR #3818) and gain the richer legacy dispatch when the wrapper is installed — see the standalone-limits table. |
| User install | praisonai | pip install praisonai, PEP 562 shims (bots/gateway/daemon moved to praisonai-bot in C9) |
Where should I work?
Roadmap
| Step | Scope | Files | Status |
|---|---|---|---|
| C0 | Scaffold (this PR) | 5 | ✅ PR #2539 |
| C1 | runtime/ + cli_backends/ | 8 | ⏳ |
| C2 | interactive/, execution/, ui/, output/, state/ | 30 | ⏳ |
| C3 | 80 agentic commands (9 bot-channel commands stay in main) | 80 | ⏳ |
| C4 | 158 agentic features (5 bot-channel features stay in main) | 158 | ⏳ |
| C5 | main.py, app.py, config/session/utils + PEP 562 shims | 26 | ⏳ |
| C6 | Integration gate (smoke tests, import graph assertions, real agentic run) | — | ⏳ |
Tracking issue: PraisonAI#2512.
Compatibility guarantees
pip install praisonairemains the only user-facing install.praisonai-codeis not published to PyPI standalone during migration.- Existing import paths keep working — PEP 562 shims at old
praisonai.*paths land as code moves in C1–C5.from praisonai.cli.main import PraisonAIcontinues unchanged (154+ tests depend on it). - Console entry unchanged —
praisonai = "praisonai.__main__:main". - One-way dependencies —
praisonai→praisonai-code→praisonaiagents;praisonai-codenever depends onpraisonai. - Scope split —
praisonai-codecovers the agentic terminal product;bots/,gateway/, anddaemon/moved topraisonai-botin C9 (see praisonai-bot Migration).praisonai-codehosts thechat,code, andrunentry points: defaultrun "…"and every--outputtext mode run in-process (PR #2853 for--output *, PR #5687 for defaultrun "…");--imageis the one text-mode feature that still routes through the wrapper’s visionImageHandler.chat/codeopen their resident interactive TUI standalone (PR #3818). The wrapper adds the richer legacy dispatch forcode, gateway, and channel bots.
Best Practices
Do not import praisonai_code in library code (during migration)
Application and library code should keep using import praisonai and from praisonaiagents import Agent. Direct praisonai_code imports are for contributors working inside the monorepo until the public surface is explicitly documented after C5.
Bot-channel modules moved to praisonai-bot (C9)
As of C9, the following CLI commands and features live in praisonai-bot, not praisonai-code: gateway, bot, onboard, pairing, identity, kanban, mint_link, claw. The praisonai.bots, praisonai.gateway, and praisonai.daemon paths remain as alias_package shims. See praisonai-bot Migration.
New agentic CLI features go into praisonai_code.cli.* (after C5)
Once C5 lands the layout, new terminal-agent commands and features belong under praisonai_code.cli., with shims left at the old praisonai.cli. paths for compatibility.
PEP 562 shims are load-bearing
Removing shims would break 154+ tests and every from praisonai.cli.main import PraisonAI importer. Shim removal is tracked as a 5.0.0-track breaking change on issue #2512.