You are working on the PraisonAI project.
- Follow the existing code style and conventions
- Be concise and helpful in responses
- Test implementation thoroughly
- Ensure backward compatibility with existing APIs
- Follow protocol-driven design across the nine Python PyPI packages plus the TypeScript SDK: core protocols in
praisonaiagents/, agentic terminal CLI inpraisonai-code/, bots/gateway inpraisonai-bot/, LLM fine-tuning + agent training inpraisonai-train/, browser automation inpraisonai-browser/, MCP server host inpraisonai-mcp/, sandbox backends inpraisonai-sandbox/, deployment inpraisonai-deploy/, integrations/serve/dashboard in thepraisonai/wrapper, TypeScript/JavaScript SDK insrc/praisonai-ts/(npm: praisonai) - TypeScript review routing: For TS/JS issues and PRs, read
src/praisonai-ts/AGENTS.md(not just this file). Canonical source issrc/praisonai-ts/in this monorepo; MervinPraison/praisonai-js is the npm mirror only (sync: monorepo β praisonai-js via workflow Sync to praisonai-js). Do not implement TS fixes in praisonai-js for PraisonAI issues. - Preserve old
praisonai.*import paths via shims when moving code between packages (see Β§2.3 insrc/praisonai-agents/AGENTS.md; shim helpers insrc/praisonai/praisonai/cli/_shim.py) - Package boundaries and dependency rules:
ARCHITECTURE.mdΒ§2 (Tier 2 packages must never PyPI-depend on the wrapper; cross-tier access goes through lazy_*_bridgemodules) - Boundary manifests:
src/praisonai/tests/PRAISONAI_BOT_MANIFEST.md(C9),src/praisonai/tests/PRAISONAI_TRAIN_MANIFEST.md(C10),src/praisonai/tests/PRAISONAI_BROWSER_MANIFEST.md(C11),src/praisonai/tests/PRAISONAI_MCP_MANIFEST.md(C12),src/praisonai/tests/PRAISONAI_SANDBOX_MANIFEST.md(C13),src/praisonai/tests/PRAISONAI_DEPLOY_MANIFEST.md(C14) - When reviewing a PR or an issue, evaluate whether the change addresses a framework concern or a user goal, and design its surface (params, naming, defaults) accordingly
- The aim of this package is to stay lightweight and powerful. Do a critical review at each stage β when triaging an issue, when planning a fix, and when reviewing/implementing a PR. Reject scope creep for the sake of adding features: if a capability already exists (e.g. via existing Agent params like
instructions/backstory/tools/hooks/memory), prefer it over a new API surface. A change must genuinely strengthen the SDK (simpler, more robust, more user-friendly) β do not add knobs, params, modules, or exports that have no live consumer or that merely duplicate existing behaviour.
| Area | Where to implement | AGENTS.md to read | Tests |
|---|---|---|---|
| Python core SDK | src/praisonai-agents/praisonaiagents/ |
src/praisonai-agents/AGENTS.md |
pytest in src/praisonai-agents/tests/ |
| Python wrapper / CLI | src/praisonai/, src/praisonai-code/, etc. |
src/praisonai-agents/AGENTS.md |
pytest under src/praisonai/tests/ |
| TypeScript / JavaScript SDK | src/praisonai-ts/ |
src/praisonai-ts/AGENTS.md |
cd src/praisonai-ts && npm run build && npm test |
| Agent-callable tools | PraisonAI-Tools | β | repo tests |
| Lifecycle plugins | PraisonAI-Plugins | β | repo tests |
| Documentation | PraisonAIDocs | β | nav-check |
| npm mirror (read-only for fixes) | praisonai-js | mirror of src/praisonai-ts/AGENTS.md |
CI on praisonai-js |