praisonai-code 0.0.2__tar.gz → 0.0.4__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.
- {praisonai_code-0.0.2 → praisonai_code-0.0.4}/PKG-INFO +30 -23
- {praisonai_code-0.0.2 → praisonai_code-0.0.4}/README.md +30 -23
- {praisonai_code-0.0.2 → praisonai_code-0.0.4}/praisonai_code/cli/app.py +51 -9
- {praisonai_code-0.0.2 → praisonai_code-0.0.4}/praisonai_code.egg-info/PKG-INFO +30 -23
- {praisonai_code-0.0.2 → praisonai_code-0.0.4}/pyproject.toml +1 -1
- {praisonai_code-0.0.2 → praisonai_code-0.0.4}/praisonai_code/__init__.py +0 -0
- {praisonai_code-0.0.2 → praisonai_code-0.0.4}/praisonai_code/cli/__init__.py +0 -0
- {praisonai_code-0.0.2 → praisonai_code-0.0.4}/praisonai_code/cli/_forward_shim.py +0 -0
- {praisonai_code-0.0.2 → praisonai_code-0.0.4}/praisonai_code/cli/_paths.py +0 -0
- {praisonai_code-0.0.2 → praisonai_code-0.0.4}/praisonai_code/cli/_warnings.py +0 -0
- {praisonai_code-0.0.2 → praisonai_code-0.0.4}/praisonai_code/cli/approval_backend.py +0 -0
- {praisonai_code-0.0.2 → praisonai_code-0.0.4}/praisonai_code/cli/branding.py +0 -0
- {praisonai_code-0.0.2 → praisonai_code-0.0.4}/praisonai_code/cli/commands/__init__.py +0 -0
- {praisonai_code-0.0.2 → praisonai_code-0.0.4}/praisonai_code/cli/commands/acp.py +0 -0
- {praisonai_code-0.0.2 → praisonai_code-0.0.4}/praisonai_code/cli/commands/agent.py +0 -0
- {praisonai_code-0.0.2 → praisonai_code-0.0.4}/praisonai_code/cli/commands/agents.py +0 -0
- {praisonai_code-0.0.2 → praisonai_code-0.0.4}/praisonai_code/cli/commands/app.py +0 -0
- {praisonai_code-0.0.2 → praisonai_code-0.0.4}/praisonai_code/cli/commands/attach.py +0 -0
- {praisonai_code-0.0.2 → praisonai_code-0.0.4}/praisonai_code/cli/commands/audit.py +0 -0
- {praisonai_code-0.0.2 → praisonai_code-0.0.4}/praisonai_code/cli/commands/auth.py +0 -0
- {praisonai_code-0.0.2 → praisonai_code-0.0.4}/praisonai_code/cli/commands/batch.py +0 -0
- {praisonai_code-0.0.2 → praisonai_code-0.0.4}/praisonai_code/cli/commands/benchmark.py +0 -0
- {praisonai_code-0.0.2 → praisonai_code-0.0.4}/praisonai_code/cli/commands/browser.py +0 -0
- {praisonai_code-0.0.2 → praisonai_code-0.0.4}/praisonai_code/cli/commands/call.py +0 -0
- {praisonai_code-0.0.2 → praisonai_code-0.0.4}/praisonai_code/cli/commands/chat.py +0 -0
- {praisonai_code-0.0.2 → praisonai_code-0.0.4}/praisonai_code/cli/commands/checkpoint.py +0 -0
- {praisonai_code-0.0.2 → praisonai_code-0.0.4}/praisonai_code/cli/commands/code.py +0 -0
- {praisonai_code-0.0.2 → praisonai_code-0.0.4}/praisonai_code/cli/commands/command.py +0 -0
- {praisonai_code-0.0.2 → praisonai_code-0.0.4}/praisonai_code/cli/commands/commit.py +0 -0
- {praisonai_code-0.0.2 → praisonai_code-0.0.4}/praisonai_code/cli/commands/completion.py +0 -0
- {praisonai_code-0.0.2 → praisonai_code-0.0.4}/praisonai_code/cli/commands/config.py +0 -0
- {praisonai_code-0.0.2 → praisonai_code-0.0.4}/praisonai_code/cli/commands/context.py +0 -0
- {praisonai_code-0.0.2 → praisonai_code-0.0.4}/praisonai_code/cli/commands/daemon.py +0 -0
- {praisonai_code-0.0.2 → praisonai_code-0.0.4}/praisonai_code/cli/commands/debug.py +0 -0
- {praisonai_code-0.0.2 → praisonai_code-0.0.4}/praisonai_code/cli/commands/deploy.py +0 -0
- {praisonai_code-0.0.2 → praisonai_code-0.0.4}/praisonai_code/cli/commands/diag.py +0 -0
- {praisonai_code-0.0.2 → praisonai_code-0.0.4}/praisonai_code/cli/commands/docs.py +0 -0
- {praisonai_code-0.0.2 → praisonai_code-0.0.4}/praisonai_code/cli/commands/doctor.py +0 -0
- {praisonai_code-0.0.2 → praisonai_code-0.0.4}/praisonai_code/cli/commands/endpoints.py +0 -0
- {praisonai_code-0.0.2 → praisonai_code-0.0.4}/praisonai_code/cli/commands/environment.py +0 -0
- {praisonai_code-0.0.2 → praisonai_code-0.0.4}/praisonai_code/cli/commands/eval.py +0 -0
- {praisonai_code-0.0.2 → praisonai_code-0.0.4}/praisonai_code/cli/commands/examples.py +0 -0
- {praisonai_code-0.0.2 → praisonai_code-0.0.4}/praisonai_code/cli/commands/flow.py +0 -0
- {praisonai_code-0.0.2 → praisonai_code-0.0.4}/praisonai_code/cli/commands/github.py +0 -0
- {praisonai_code-0.0.2 → praisonai_code-0.0.4}/praisonai_code/cli/commands/hooks.py +0 -0
- {praisonai_code-0.0.2 → praisonai_code-0.0.4}/praisonai_code/cli/commands/init.py +0 -0
- {praisonai_code-0.0.2 → praisonai_code-0.0.4}/praisonai_code/cli/commands/knowledge.py +0 -0
- {praisonai_code-0.0.2 → praisonai_code-0.0.4}/praisonai_code/cli/commands/langextract.py +0 -0
- {praisonai_code-0.0.2 → praisonai_code-0.0.4}/praisonai_code/cli/commands/langfuse.py +0 -0
- {praisonai_code-0.0.2 → praisonai_code-0.0.4}/praisonai_code/cli/commands/loop.py +0 -0
- {praisonai_code-0.0.2 → praisonai_code-0.0.4}/praisonai_code/cli/commands/lsp.py +0 -0
- {praisonai_code-0.0.2 → praisonai_code-0.0.4}/praisonai_code/cli/commands/managed.py +0 -0
- {praisonai_code-0.0.2 → praisonai_code-0.0.4}/praisonai_code/cli/commands/mcp.py +0 -0
- {praisonai_code-0.0.2 → praisonai_code-0.0.4}/praisonai_code/cli/commands/memory.py +0 -0
- {praisonai_code-0.0.2 → praisonai_code-0.0.4}/praisonai_code/cli/commands/models.py +0 -0
- {praisonai_code-0.0.2 → praisonai_code-0.0.4}/praisonai_code/cli/commands/n8n.py +0 -0
- {praisonai_code-0.0.2 → praisonai_code-0.0.4}/praisonai_code/cli/commands/obs.py +0 -0
- {praisonai_code-0.0.2 → praisonai_code-0.0.4}/praisonai_code/cli/commands/package.py +0 -0
- {praisonai_code-0.0.2 → praisonai_code-0.0.4}/praisonai_code/cli/commands/paths.py +0 -0
- {praisonai_code-0.0.2 → praisonai_code-0.0.4}/praisonai_code/cli/commands/permissions.py +0 -0
- {praisonai_code-0.0.2 → praisonai_code-0.0.4}/praisonai_code/cli/commands/plugins.py +0 -0
- {praisonai_code-0.0.2 → praisonai_code-0.0.4}/praisonai_code/cli/commands/port.py +0 -0
- {praisonai_code-0.0.2 → praisonai_code-0.0.4}/praisonai_code/cli/commands/profile.py +0 -0
- {praisonai_code-0.0.2 → praisonai_code-0.0.4}/praisonai_code/cli/commands/publish.py +0 -0
- {praisonai_code-0.0.2 → praisonai_code-0.0.4}/praisonai_code/cli/commands/rag.py +0 -0
- {praisonai_code-0.0.2 → praisonai_code-0.0.4}/praisonai_code/cli/commands/realtime.py +0 -0
- {praisonai_code-0.0.2 → praisonai_code-0.0.4}/praisonai_code/cli/commands/recipe.py +0 -0
- {praisonai_code-0.0.2 → praisonai_code-0.0.4}/praisonai_code/cli/commands/registry.py +0 -0
- {praisonai_code-0.0.2 → praisonai_code-0.0.4}/praisonai_code/cli/commands/replay.py +0 -0
- {praisonai_code-0.0.2 → praisonai_code-0.0.4}/praisonai_code/cli/commands/research.py +0 -0
- {praisonai_code-0.0.2 → praisonai_code-0.0.4}/praisonai_code/cli/commands/retrieval.py +0 -0
- {praisonai_code-0.0.2 → praisonai_code-0.0.4}/praisonai_code/cli/commands/rules.py +0 -0
- {praisonai_code-0.0.2 → praisonai_code-0.0.4}/praisonai_code/cli/commands/run.py +0 -0
- {praisonai_code-0.0.2 → praisonai_code-0.0.4}/praisonai_code/cli/commands/sandbox.py +0 -0
- {praisonai_code-0.0.2 → praisonai_code-0.0.4}/praisonai_code/cli/commands/schedule.py +0 -0
- {praisonai_code-0.0.2 → praisonai_code-0.0.4}/praisonai_code/cli/commands/serve.py +0 -0
- {praisonai_code-0.0.2 → praisonai_code-0.0.4}/praisonai_code/cli/commands/session.py +0 -0
- {praisonai_code-0.0.2 → praisonai_code-0.0.4}/praisonai_code/cli/commands/setup.py +0 -0
- {praisonai_code-0.0.2 → praisonai_code-0.0.4}/praisonai_code/cli/commands/skills.py +0 -0
- {praisonai_code-0.0.2 → praisonai_code-0.0.4}/praisonai_code/cli/commands/standardise.py +0 -0
- {praisonai_code-0.0.2 → praisonai_code-0.0.4}/praisonai_code/cli/commands/templates.py +0 -0
- {praisonai_code-0.0.2 → praisonai_code-0.0.4}/praisonai_code/cli/commands/test.py +0 -0
- {praisonai_code-0.0.2 → praisonai_code-0.0.4}/praisonai_code/cli/commands/todo.py +0 -0
- {praisonai_code-0.0.2 → praisonai_code-0.0.4}/praisonai_code/cli/commands/tools.py +0 -0
- {praisonai_code-0.0.2 → praisonai_code-0.0.4}/praisonai_code/cli/commands/traces.py +0 -0
- {praisonai_code-0.0.2 → praisonai_code-0.0.4}/praisonai_code/cli/commands/tracker.py +0 -0
- {praisonai_code-0.0.2 → praisonai_code-0.0.4}/praisonai_code/cli/commands/train.py +0 -0
- {praisonai_code-0.0.2 → praisonai_code-0.0.4}/praisonai_code/cli/commands/ui.py +0 -0
- {praisonai_code-0.0.2 → praisonai_code-0.0.4}/praisonai_code/cli/commands/up.py +0 -0
- {praisonai_code-0.0.2 → praisonai_code-0.0.4}/praisonai_code/cli/commands/validate.py +0 -0
- {praisonai_code-0.0.2 → praisonai_code-0.0.4}/praisonai_code/cli/commands/version.py +0 -0
- {praisonai_code-0.0.2 → praisonai_code-0.0.4}/praisonai_code/cli/commands/workflow.py +0 -0
- {praisonai_code-0.0.2 → praisonai_code-0.0.4}/praisonai_code/cli/config_loader.py +0 -0
- {praisonai_code-0.0.2 → praisonai_code-0.0.4}/praisonai_code/cli/configuration/__init__.py +0 -0
- {praisonai_code-0.0.2 → praisonai_code-0.0.4}/praisonai_code/cli/configuration/config.schema.json +0 -0
- {praisonai_code-0.0.2 → praisonai_code-0.0.4}/praisonai_code/cli/configuration/credentials.py +0 -0
- {praisonai_code-0.0.2 → praisonai_code-0.0.4}/praisonai_code/cli/configuration/loader.py +0 -0
- {praisonai_code-0.0.2 → praisonai_code-0.0.4}/praisonai_code/cli/configuration/model_resolver.py +0 -0
- {praisonai_code-0.0.2 → praisonai_code-0.0.4}/praisonai_code/cli/configuration/oauth.py +0 -0
- {praisonai_code-0.0.2 → praisonai_code-0.0.4}/praisonai_code/cli/configuration/paths.py +0 -0
- {praisonai_code-0.0.2 → praisonai_code-0.0.4}/praisonai_code/cli/configuration/resolver.py +0 -0
- {praisonai_code-0.0.2 → praisonai_code-0.0.4}/praisonai_code/cli/configuration/schema.py +0 -0
- {praisonai_code-0.0.2 → praisonai_code-0.0.4}/praisonai_code/cli/execution/__init__.py +0 -0
- {praisonai_code-0.0.2 → praisonai_code-0.0.4}/praisonai_code/cli/execution/core.py +0 -0
- {praisonai_code-0.0.2 → praisonai_code-0.0.4}/praisonai_code/cli/execution/profiler.py +0 -0
- {praisonai_code-0.0.2 → praisonai_code-0.0.4}/praisonai_code/cli/execution/request.py +0 -0
- {praisonai_code-0.0.2 → praisonai_code-0.0.4}/praisonai_code/cli/execution/result.py +0 -0
- {praisonai_code-0.0.2 → praisonai_code-0.0.4}/praisonai_code/cli/fallback_schema.py +0 -0
- {praisonai_code-0.0.2 → praisonai_code-0.0.4}/praisonai_code/cli/features/__init__.py +0 -0
- {praisonai_code-0.0.2 → praisonai_code-0.0.4}/praisonai_code/cli/features/_endpoint_registry.py +0 -0
- {praisonai_code-0.0.2 → praisonai_code-0.0.4}/praisonai_code/cli/features/_search_registry.py +0 -0
- {praisonai_code-0.0.2 → praisonai_code-0.0.4}/praisonai_code/cli/features/acp.py +0 -0
- {praisonai_code-0.0.2 → praisonai_code-0.0.4}/praisonai_code/cli/features/action_orchestrator.py +0 -0
- {praisonai_code-0.0.2 → praisonai_code-0.0.4}/praisonai_code/cli/features/agent_scheduler.py +0 -0
- {praisonai_code-0.0.2 → praisonai_code-0.0.4}/praisonai_code/cli/features/agent_tools.py +0 -0
- {praisonai_code-0.0.2 → praisonai_code-0.0.4}/praisonai_code/cli/features/agents.py +0 -0
- {praisonai_code-0.0.2 → praisonai_code-0.0.4}/praisonai_code/cli/features/at_mentions.py +0 -0
- {praisonai_code-0.0.2 → praisonai_code-0.0.4}/praisonai_code/cli/features/audit_cli.py +0 -0
- {praisonai_code-0.0.2 → praisonai_code-0.0.4}/praisonai_code/cli/features/auto_memory.py +0 -0
- {praisonai_code-0.0.2 → praisonai_code-0.0.4}/praisonai_code/cli/features/auto_mode.py +0 -0
- {praisonai_code-0.0.2 → praisonai_code-0.0.4}/praisonai_code/cli/features/autonomy_mode.py +0 -0
- {praisonai_code-0.0.2 → praisonai_code-0.0.4}/praisonai_code/cli/features/background.py +0 -0
- {praisonai_code-0.0.2 → praisonai_code-0.0.4}/praisonai_code/cli/features/base.py +0 -0
- {praisonai_code-0.0.2 → praisonai_code-0.0.4}/praisonai_code/cli/features/benchmark.py +0 -0
- {praisonai_code-0.0.2 → praisonai_code-0.0.4}/praisonai_code/cli/features/capabilities.py +0 -0
- {praisonai_code-0.0.2 → praisonai_code-0.0.4}/praisonai_code/cli/features/checkpoints.py +0 -0
- {praisonai_code-0.0.2 → praisonai_code-0.0.4}/praisonai_code/cli/features/cli_profiler.py +0 -0
- {praisonai_code-0.0.2 → praisonai_code-0.0.4}/praisonai_code/cli/features/code_intelligence.py +0 -0
- {praisonai_code-0.0.2 → praisonai_code-0.0.4}/praisonai_code/cli/features/compaction.py +0 -0
- {praisonai_code-0.0.2 → praisonai_code-0.0.4}/praisonai_code/cli/features/compare.py +0 -0
- {praisonai_code-0.0.2 → praisonai_code-0.0.4}/praisonai_code/cli/features/config_hierarchy.py +0 -0
- {praisonai_code-0.0.2 → praisonai_code-0.0.4}/praisonai_code/cli/features/context_manager.py +0 -0
- {praisonai_code-0.0.2 → praisonai_code-0.0.4}/praisonai_code/cli/features/cost_tracker.py +0 -0
- {praisonai_code-0.0.2 → praisonai_code-0.0.4}/praisonai_code/cli/features/csv_test_runner.py +0 -0
- {praisonai_code-0.0.2 → praisonai_code-0.0.4}/praisonai_code/cli/features/custom_definitions.py +0 -0
- {praisonai_code-0.0.2 → praisonai_code-0.0.4}/praisonai_code/cli/features/debug.py +0 -0
- {praisonai_code-0.0.2 → praisonai_code-0.0.4}/praisonai_code/cli/features/deploy.py +0 -0
- {praisonai_code-0.0.2 → praisonai_code-0.0.4}/praisonai_code/cli/features/diag.py +0 -0
- {praisonai_code-0.0.2 → praisonai_code-0.0.4}/praisonai_code/cli/features/display_jsonl.py +0 -0
- {praisonai_code-0.0.2 → praisonai_code-0.0.4}/praisonai_code/cli/features/doctor/__init__.py +0 -0
- {praisonai_code-0.0.2 → praisonai_code-0.0.4}/praisonai_code/cli/features/doctor/checks/__init__.py +0 -0
- {praisonai_code-0.0.2 → praisonai_code-0.0.4}/praisonai_code/cli/features/doctor/checks/acp_checks.py +0 -0
- {praisonai_code-0.0.2 → praisonai_code-0.0.4}/praisonai_code/cli/features/doctor/checks/bot_checks.py +0 -0
- {praisonai_code-0.0.2 → praisonai_code-0.0.4}/praisonai_code/cli/features/doctor/checks/config_checks.py +0 -0
- {praisonai_code-0.0.2 → praisonai_code-0.0.4}/praisonai_code/cli/features/doctor/checks/db_checks.py +0 -0
- {praisonai_code-0.0.2 → praisonai_code-0.0.4}/praisonai_code/cli/features/doctor/checks/env_checks.py +0 -0
- {praisonai_code-0.0.2 → praisonai_code-0.0.4}/praisonai_code/cli/features/doctor/checks/gateway_checks.py +0 -0
- {praisonai_code-0.0.2 → praisonai_code-0.0.4}/praisonai_code/cli/features/doctor/checks/lsp_checks.py +0 -0
- {praisonai_code-0.0.2 → praisonai_code-0.0.4}/praisonai_code/cli/features/doctor/checks/mcp_checks.py +0 -0
- {praisonai_code-0.0.2 → praisonai_code-0.0.4}/praisonai_code/cli/features/doctor/checks/memory_checks.py +0 -0
- {praisonai_code-0.0.2 → praisonai_code-0.0.4}/praisonai_code/cli/features/doctor/checks/network_checks.py +0 -0
- {praisonai_code-0.0.2 → praisonai_code-0.0.4}/praisonai_code/cli/features/doctor/checks/obs_checks.py +0 -0
- {praisonai_code-0.0.2 → praisonai_code-0.0.4}/praisonai_code/cli/features/doctor/checks/packaging_checks.py +0 -0
- {praisonai_code-0.0.2 → praisonai_code-0.0.4}/praisonai_code/cli/features/doctor/checks/performance_checks.py +0 -0
- {praisonai_code-0.0.2 → praisonai_code-0.0.4}/praisonai_code/cli/features/doctor/checks/permissions_checks.py +0 -0
- {praisonai_code-0.0.2 → praisonai_code-0.0.4}/praisonai_code/cli/features/doctor/checks/runtime_checks.py +0 -0
- {praisonai_code-0.0.2 → praisonai_code-0.0.4}/praisonai_code/cli/features/doctor/checks/runtime_migration_checks.py +0 -0
- {praisonai_code-0.0.2 → praisonai_code-0.0.4}/praisonai_code/cli/features/doctor/checks/selftest_checks.py +0 -0
- {praisonai_code-0.0.2 → praisonai_code-0.0.4}/praisonai_code/cli/features/doctor/checks/serve_checks.py +0 -0
- {praisonai_code-0.0.2 → praisonai_code-0.0.4}/praisonai_code/cli/features/doctor/checks/skills_checks.py +0 -0
- {praisonai_code-0.0.2 → praisonai_code-0.0.4}/praisonai_code/cli/features/doctor/checks/tools_checks.py +0 -0
- {praisonai_code-0.0.2 → praisonai_code-0.0.4}/praisonai_code/cli/features/doctor/engine.py +0 -0
- {praisonai_code-0.0.2 → praisonai_code-0.0.4}/praisonai_code/cli/features/doctor/formatters.py +0 -0
- {praisonai_code-0.0.2 → praisonai_code-0.0.4}/praisonai_code/cli/features/doctor/handler.py +0 -0
- {praisonai_code-0.0.2 → praisonai_code-0.0.4}/praisonai_code/cli/features/doctor/models.py +0 -0
- {praisonai_code-0.0.2 → praisonai_code-0.0.4}/praisonai_code/cli/features/doctor/registry.py +0 -0
- {praisonai_code-0.0.2 → praisonai_code-0.0.4}/praisonai_code/cli/features/endpoints.py +0 -0
- {praisonai_code-0.0.2 → praisonai_code-0.0.4}/praisonai_code/cli/features/eval.py +0 -0
- {praisonai_code-0.0.2 → praisonai_code-0.0.4}/praisonai_code/cli/features/examples.py +0 -0
- {praisonai_code-0.0.2 → praisonai_code-0.0.4}/praisonai_code/cli/features/external_agents.py +0 -0
- {praisonai_code-0.0.2 → praisonai_code-0.0.4}/praisonai_code/cli/features/fast_context.py +0 -0
- {praisonai_code-0.0.2 → praisonai_code-0.0.4}/praisonai_code/cli/features/file_history.py +0 -0
- {praisonai_code-0.0.2 → praisonai_code-0.0.4}/praisonai_code/cli/features/flow_display.py +0 -0
- {praisonai_code-0.0.2 → praisonai_code-0.0.4}/praisonai_code/cli/features/git_attribution.py +0 -0
- {praisonai_code-0.0.2 → praisonai_code-0.0.4}/praisonai_code/cli/features/git_integration.py +0 -0
- {praisonai_code-0.0.2 → praisonai_code-0.0.4}/praisonai_code/cli/features/guardrail.py +0 -0
- {praisonai_code-0.0.2 → praisonai_code-0.0.4}/praisonai_code/cli/features/handoff.py +0 -0
- {praisonai_code-0.0.2 → praisonai_code-0.0.4}/praisonai_code/cli/features/hooks.py +0 -0
- {praisonai_code-0.0.2 → praisonai_code-0.0.4}/praisonai_code/cli/features/hybrid_workflow.py +0 -0
- {praisonai_code-0.0.2 → praisonai_code-0.0.4}/praisonai_code/cli/features/image.py +0 -0
- {praisonai_code-0.0.2 → praisonai_code-0.0.4}/praisonai_code/cli/features/interactive_core_headless.py +0 -0
- {praisonai_code-0.0.2 → praisonai_code-0.0.4}/praisonai_code/cli/features/interactive_runtime.py +0 -0
- {praisonai_code-0.0.2 → praisonai_code-0.0.4}/praisonai_code/cli/features/interactive_test_harness.py +0 -0
- {praisonai_code-0.0.2 → praisonai_code-0.0.4}/praisonai_code/cli/features/interactive_tools.py +0 -0
- {praisonai_code-0.0.2 → praisonai_code-0.0.4}/praisonai_code/cli/features/interactive_tui.py +0 -0
- {praisonai_code-0.0.2 → praisonai_code-0.0.4}/praisonai_code/cli/features/job_workflow.py +0 -0
- {praisonai_code-0.0.2 → praisonai_code-0.0.4}/praisonai_code/cli/features/jobs.py +0 -0
- {praisonai_code-0.0.2 → praisonai_code-0.0.4}/praisonai_code/cli/features/knowledge.py +0 -0
- {praisonai_code-0.0.2 → praisonai_code-0.0.4}/praisonai_code/cli/features/knowledge_cli.py +0 -0
- {praisonai_code-0.0.2 → praisonai_code-0.0.4}/praisonai_code/cli/features/lite.py +0 -0
- {praisonai_code-0.0.2 → praisonai_code-0.0.4}/praisonai_code/cli/features/logs.py +0 -0
- {praisonai_code-0.0.2 → praisonai_code-0.0.4}/praisonai_code/cli/features/lsp_cli.py +0 -0
- {praisonai_code-0.0.2 → praisonai_code-0.0.4}/praisonai_code/cli/features/lsp_diagnostics.py +0 -0
- {praisonai_code-0.0.2 → praisonai_code-0.0.4}/praisonai_code/cli/features/mcp.py +0 -0
- {praisonai_code-0.0.2 → praisonai_code-0.0.4}/praisonai_code/cli/features/message_queue.py +0 -0
- {praisonai_code-0.0.2 → praisonai_code-0.0.4}/praisonai_code/cli/features/metrics.py +0 -0
- {praisonai_code-0.0.2 → praisonai_code-0.0.4}/praisonai_code/cli/features/migrate.py +0 -0
- {praisonai_code-0.0.2 → praisonai_code-0.0.4}/praisonai_code/cli/features/migration_flow.py +0 -0
- {praisonai_code-0.0.2 → praisonai_code-0.0.4}/praisonai_code/cli/features/migration_spec.py +0 -0
- {praisonai_code-0.0.2 → praisonai_code-0.0.4}/praisonai_code/cli/features/n8n.py +0 -0
- {praisonai_code-0.0.2 → praisonai_code-0.0.4}/praisonai_code/cli/features/observability.py +0 -0
- {praisonai_code-0.0.2 → praisonai_code-0.0.4}/praisonai_code/cli/features/ollama.py +0 -0
- {praisonai_code-0.0.2 → praisonai_code-0.0.4}/praisonai_code/cli/features/output_modes.py +0 -0
- {praisonai_code-0.0.2 → praisonai_code-0.0.4}/praisonai_code/cli/features/output_style.py +0 -0
- {praisonai_code-0.0.2 → praisonai_code-0.0.4}/praisonai_code/cli/features/package.py +0 -0
- {praisonai_code-0.0.2 → praisonai_code-0.0.4}/praisonai_code/cli/features/performance.py +0 -0
- {praisonai_code-0.0.2 → praisonai_code-0.0.4}/praisonai_code/cli/features/persistence.py +0 -0
- {praisonai_code-0.0.2 → praisonai_code-0.0.4}/praisonai_code/cli/features/profiler/__init__.py +0 -0
- {praisonai_code-0.0.2 → praisonai_code-0.0.4}/praisonai_code/cli/features/profiler/core.py +0 -0
- {praisonai_code-0.0.2 → praisonai_code-0.0.4}/praisonai_code/cli/features/profiler/optimizations.py +0 -0
- {praisonai_code-0.0.2 → praisonai_code-0.0.4}/praisonai_code/cli/features/profiler/suite.py +0 -0
- {praisonai_code-0.0.2 → praisonai_code-0.0.4}/praisonai_code/cli/features/queue/__init__.py +0 -0
- {praisonai_code-0.0.2 → praisonai_code-0.0.4}/praisonai_code/cli/features/queue/manager.py +0 -0
- {praisonai_code-0.0.2 → praisonai_code-0.0.4}/praisonai_code/cli/features/queue/models.py +0 -0
- {praisonai_code-0.0.2 → praisonai_code-0.0.4}/praisonai_code/cli/features/queue/persistence.py +0 -0
- {praisonai_code-0.0.2 → praisonai_code-0.0.4}/praisonai_code/cli/features/queue/scheduler.py +0 -0
- {praisonai_code-0.0.2 → praisonai_code-0.0.4}/praisonai_code/cli/features/queue/worker.py +0 -0
- {praisonai_code-0.0.2 → praisonai_code-0.0.4}/praisonai_code/cli/features/recipe.py +0 -0
- {praisonai_code-0.0.2 → praisonai_code-0.0.4}/praisonai_code/cli/features/recipe_creator.py +0 -0
- {praisonai_code-0.0.2 → praisonai_code-0.0.4}/praisonai_code/cli/features/recipe_optimizer.py +0 -0
- {praisonai_code-0.0.2 → praisonai_code-0.0.4}/praisonai_code/cli/features/recipe_prompts.py +0 -0
- {praisonai_code-0.0.2 → praisonai_code-0.0.4}/praisonai_code/cli/features/registry.py +0 -0
- {praisonai_code-0.0.2 → praisonai_code-0.0.4}/praisonai_code/cli/features/repo_map.py +0 -0
- {praisonai_code-0.0.2 → praisonai_code-0.0.4}/praisonai_code/cli/features/router.py +0 -0
- {praisonai_code-0.0.2 → praisonai_code-0.0.4}/praisonai_code/cli/features/safe_shell.py +0 -0
- {praisonai_code-0.0.2 → praisonai_code-0.0.4}/praisonai_code/cli/features/sandbox_cli.py +0 -0
- {praisonai_code-0.0.2 → praisonai_code-0.0.4}/praisonai_code/cli/features/sandbox_executor.py +0 -0
- {praisonai_code-0.0.2 → praisonai_code-0.0.4}/praisonai_code/cli/features/sdk_knowledge.py +0 -0
- {praisonai_code-0.0.2 → praisonai_code-0.0.4}/praisonai_code/cli/features/session.py +0 -0
- {praisonai_code-0.0.2 → praisonai_code-0.0.4}/praisonai_code/cli/features/session_checkpoints.py +0 -0
- {praisonai_code-0.0.2 → praisonai_code-0.0.4}/praisonai_code/cli/features/setup/__init__.py +0 -0
- {praisonai_code-0.0.2 → praisonai_code-0.0.4}/praisonai_code/cli/features/setup/handler.py +0 -0
- {praisonai_code-0.0.2 → praisonai_code-0.0.4}/praisonai_code/cli/features/setup/templates.py +0 -0
- {praisonai_code-0.0.2 → praisonai_code-0.0.4}/praisonai_code/cli/features/skills.py +0 -0
- {praisonai_code-0.0.2 → praisonai_code-0.0.4}/praisonai_code/cli/features/slash_commands.py +0 -0
- {praisonai_code-0.0.2 → praisonai_code-0.0.4}/praisonai_code/cli/features/telemetry.py +0 -0
- {praisonai_code-0.0.2 → praisonai_code-0.0.4}/praisonai_code/cli/features/templates.py +0 -0
- {praisonai_code-0.0.2 → praisonai_code-0.0.4}/praisonai_code/cli/features/thinking.py +0 -0
- {praisonai_code-0.0.2 → praisonai_code-0.0.4}/praisonai_code/cli/features/todo.py +0 -0
- {praisonai_code-0.0.2 → praisonai_code-0.0.4}/praisonai_code/cli/features/tools.py +0 -0
- {praisonai_code-0.0.2 → praisonai_code-0.0.4}/praisonai_code/cli/features/tui/__init__.py +0 -0
- {praisonai_code-0.0.2 → praisonai_code-0.0.4}/praisonai_code/cli/features/tui/app.py +0 -0
- {praisonai_code-0.0.2 → praisonai_code-0.0.4}/praisonai_code/cli/features/tui/cli.py +0 -0
- {praisonai_code-0.0.2 → praisonai_code-0.0.4}/praisonai_code/cli/features/tui/config.py +0 -0
- {praisonai_code-0.0.2 → praisonai_code-0.0.4}/praisonai_code/cli/features/tui/debug.py +0 -0
- {praisonai_code-0.0.2 → praisonai_code-0.0.4}/praisonai_code/cli/features/tui/events.py +0 -0
- {praisonai_code-0.0.2 → praisonai_code-0.0.4}/praisonai_code/cli/features/tui/mock_provider.py +0 -0
- {praisonai_code-0.0.2 → praisonai_code-0.0.4}/praisonai_code/cli/features/tui/orchestrator.py +0 -0
- {praisonai_code-0.0.2 → praisonai_code-0.0.4}/praisonai_code/cli/features/tui/screens/__init__.py +0 -0
- {praisonai_code-0.0.2 → praisonai_code-0.0.4}/praisonai_code/cli/features/tui/screens/help.py +0 -0
- {praisonai_code-0.0.2 → praisonai_code-0.0.4}/praisonai_code/cli/features/tui/screens/main.py +0 -0
- {praisonai_code-0.0.2 → praisonai_code-0.0.4}/praisonai_code/cli/features/tui/screens/queue.py +0 -0
- {praisonai_code-0.0.2 → praisonai_code-0.0.4}/praisonai_code/cli/features/tui/screens/session.py +0 -0
- {praisonai_code-0.0.2 → praisonai_code-0.0.4}/praisonai_code/cli/features/tui/screens/settings.py +0 -0
- {praisonai_code-0.0.2 → praisonai_code-0.0.4}/praisonai_code/cli/features/tui/session_store.py +0 -0
- {praisonai_code-0.0.2 → praisonai_code-0.0.4}/praisonai_code/cli/features/tui/widgets/__init__.py +0 -0
- {praisonai_code-0.0.2 → praisonai_code-0.0.4}/praisonai_code/cli/features/tui/widgets/chat.py +0 -0
- {praisonai_code-0.0.2 → praisonai_code-0.0.4}/praisonai_code/cli/features/tui/widgets/command_popup.py +0 -0
- {praisonai_code-0.0.2 → praisonai_code-0.0.4}/praisonai_code/cli/features/tui/widgets/composer.py +0 -0
- {praisonai_code-0.0.2 → praisonai_code-0.0.4}/praisonai_code/cli/features/tui/widgets/file_popup.py +0 -0
- {praisonai_code-0.0.2 → praisonai_code-0.0.4}/praisonai_code/cli/features/tui/widgets/queue_panel.py +0 -0
- {praisonai_code-0.0.2 → praisonai_code-0.0.4}/praisonai_code/cli/features/tui/widgets/status.py +0 -0
- {praisonai_code-0.0.2 → praisonai_code-0.0.4}/praisonai_code/cli/features/tui/widgets/tool_panel.py +0 -0
- {praisonai_code-0.0.2 → praisonai_code-0.0.4}/praisonai_code/cli/features/wizard.py +0 -0
- {praisonai_code-0.0.2 → praisonai_code-0.0.4}/praisonai_code/cli/features/workflow.py +0 -0
- {praisonai_code-0.0.2 → praisonai_code-0.0.4}/praisonai_code/cli/features/yaml_utils.py +0 -0
- {praisonai_code-0.0.2 → praisonai_code-0.0.4}/praisonai_code/cli/interactive/__init__.py +0 -0
- {praisonai_code-0.0.2 → praisonai_code-0.0.4}/praisonai_code/cli/interactive/async_tui.py +0 -0
- {praisonai_code-0.0.2 → praisonai_code-0.0.4}/praisonai_code/cli/interactive/config.py +0 -0
- {praisonai_code-0.0.2 → praisonai_code-0.0.4}/praisonai_code/cli/interactive/core.py +0 -0
- {praisonai_code-0.0.2 → praisonai_code-0.0.4}/praisonai_code/cli/interactive/events.py +0 -0
- {praisonai_code-0.0.2 → praisonai_code-0.0.4}/praisonai_code/cli/interactive/frontends/__init__.py +0 -0
- {praisonai_code-0.0.2 → praisonai_code-0.0.4}/praisonai_code/cli/interactive/frontends/rich_frontend.py +0 -0
- {praisonai_code-0.0.2 → praisonai_code-0.0.4}/praisonai_code/cli/interactive/frontends/textual_frontend.py +0 -0
- {praisonai_code-0.0.2 → praisonai_code-0.0.4}/praisonai_code/cli/interactive/praison_io.py +0 -0
- {praisonai_code-0.0.2 → praisonai_code-0.0.4}/praisonai_code/cli/interactive/repl.py +0 -0
- {praisonai_code-0.0.2 → praisonai_code-0.0.4}/praisonai_code/cli/interactive/split_tui.py +0 -0
- {praisonai_code-0.0.2 → praisonai_code-0.0.4}/praisonai_code/cli/interactive/tui_app.py +0 -0
- {praisonai_code-0.0.2 → praisonai_code-0.0.4}/praisonai_code/cli/langfuse_client.py +0 -0
- {praisonai_code-0.0.2 → praisonai_code-0.0.4}/praisonai_code/cli/main.py +0 -0
- {praisonai_code-0.0.2 → praisonai_code-0.0.4}/praisonai_code/cli/output/__init__.py +0 -0
- {praisonai_code-0.0.2 → praisonai_code-0.0.4}/praisonai_code/cli/output/console.py +0 -0
- {praisonai_code-0.0.2 → praisonai_code-0.0.4}/praisonai_code/cli/output/event_bridge.py +0 -0
- {praisonai_code-0.0.2 → praisonai_code-0.0.4}/praisonai_code/cli/schedule_cli.py +0 -0
- {praisonai_code-0.0.2 → praisonai_code-0.0.4}/praisonai_code/cli/schema_provider.py +0 -0
- {praisonai_code-0.0.2 → praisonai_code-0.0.4}/praisonai_code/cli/session/__init__.py +0 -0
- {praisonai_code-0.0.2 → praisonai_code-0.0.4}/praisonai_code/cli/session/resume.py +0 -0
- {praisonai_code-0.0.2 → praisonai_code-0.0.4}/praisonai_code/cli/session/unified.py +0 -0
- {praisonai_code-0.0.2 → praisonai_code-0.0.4}/praisonai_code/cli/state/__init__.py +0 -0
- {praisonai_code-0.0.2 → praisonai_code-0.0.4}/praisonai_code/cli/state/identifiers.py +0 -0
- {praisonai_code-0.0.2 → praisonai_code-0.0.4}/praisonai_code/cli/state/project_sessions.py +0 -0
- {praisonai_code-0.0.2 → praisonai_code-0.0.4}/praisonai_code/cli/state/sessions.py +0 -0
- {praisonai_code-0.0.2 → praisonai_code-0.0.4}/praisonai_code/cli/ui/__init__.py +0 -0
- {praisonai_code-0.0.2 → praisonai_code-0.0.4}/praisonai_code/cli/ui/config.py +0 -0
- {praisonai_code-0.0.2 → praisonai_code-0.0.4}/praisonai_code/cli/ui/events.py +0 -0
- {praisonai_code-0.0.2 → praisonai_code-0.0.4}/praisonai_code/cli/ui/mg_backend.py +0 -0
- {praisonai_code-0.0.2 → praisonai_code-0.0.4}/praisonai_code/cli/ui/plain.py +0 -0
- {praisonai_code-0.0.2 → praisonai_code-0.0.4}/praisonai_code/cli/ui/rich_backend.py +0 -0
- {praisonai_code-0.0.2 → praisonai_code-0.0.4}/praisonai_code/cli/unified_schema.py +0 -0
- {praisonai_code-0.0.2 → praisonai_code-0.0.4}/praisonai_code/cli/utils/env_utils.py +0 -0
- {praisonai_code-0.0.2 → praisonai_code-0.0.4}/praisonai_code/cli/utils/project.py +0 -0
- {praisonai_code-0.0.2 → praisonai_code-0.0.4}/praisonai_code/cli_backends/__init__.py +0 -0
- {praisonai_code-0.0.2 → praisonai_code-0.0.4}/praisonai_code/cli_backends/claude.py +0 -0
- {praisonai_code-0.0.2 → praisonai_code-0.0.4}/praisonai_code/cli_backends/registry.py +0 -0
- {praisonai_code-0.0.2 → praisonai_code-0.0.4}/praisonai_code/runtime/__init__.py +0 -0
- {praisonai_code-0.0.2 → praisonai_code-0.0.4}/praisonai_code/runtime/__main__.py +0 -0
- {praisonai_code-0.0.2 → praisonai_code-0.0.4}/praisonai_code/runtime/client.py +0 -0
- {praisonai_code-0.0.2 → praisonai_code-0.0.4}/praisonai_code/runtime/descriptor.py +0 -0
- {praisonai_code-0.0.2 → praisonai_code-0.0.4}/praisonai_code/runtime/server.py +0 -0
- {praisonai_code-0.0.2 → praisonai_code-0.0.4}/praisonai_code.egg-info/SOURCES.txt +0 -0
- {praisonai_code-0.0.2 → praisonai_code-0.0.4}/praisonai_code.egg-info/dependency_links.txt +0 -0
- {praisonai_code-0.0.2 → praisonai_code-0.0.4}/praisonai_code.egg-info/requires.txt +0 -0
- {praisonai_code-0.0.2 → praisonai_code-0.0.4}/praisonai_code.egg-info/top_level.txt +0 -0
- {praisonai_code-0.0.2 → praisonai_code-0.0.4}/setup.cfg +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: praisonai-code
|
|
3
|
-
Version: 0.0.
|
|
3
|
+
Version: 0.0.4
|
|
4
4
|
Summary: Agentic terminal CLI for PraisonAI — the terminal-native agent (run, chat, code, runtime, cli backends) extracted from the praisonai wrapper.
|
|
5
5
|
Author: Mervin Praison
|
|
6
6
|
License: MIT
|
|
@@ -30,19 +30,18 @@ Agentic terminal CLI for PraisonAI — the terminal-native agent product
|
|
|
30
30
|
|
|
31
31
|
## Status
|
|
32
32
|
|
|
33
|
-
|
|
34
|
-
`
|
|
35
|
-
incrementally in steps C2–C6 (see issue #2512):
|
|
33
|
+
**C0–C5 complete.** C6 integration gate verified — see
|
|
34
|
+
`src/praisonai/tests/C6_VERIFICATION.md`.
|
|
36
35
|
|
|
37
|
-
| Step | Scope |
|
|
38
|
-
|
|
39
|
-
| C0 | Scaffold |
|
|
40
|
-
| C1 | `runtime/` + `cli_backends/` |
|
|
41
|
-
| C2 | `interactive/`, `execution/`, `ui/`, `output/`, `state/` |
|
|
42
|
-
| C3 | Agentic commands |
|
|
43
|
-
| C4 | Agentic features |
|
|
44
|
-
| C5 | `main.py`, `app.py`, config/session/utils + shims |
|
|
45
|
-
| C6 | Integration gate |
|
|
36
|
+
| Step | Scope | Status |
|
|
37
|
+
|------|-------|--------|
|
|
38
|
+
| C0 | Scaffold | Done |
|
|
39
|
+
| C1 | `runtime/` + `cli_backends/` | Done |
|
|
40
|
+
| C2 | `interactive/`, `execution/`, `ui/`, `output/`, `state/` | Done |
|
|
41
|
+
| C3 | Agentic commands | Done |
|
|
42
|
+
| C4 | Agentic features | Done |
|
|
43
|
+
| C5 | `main.py`, `app.py`, config/session/utils + shims | Done |
|
|
44
|
+
| C6 | Integration gate + sign-off | Done |
|
|
46
45
|
|
|
47
46
|
- `praisonai_code.runtime` — warm local runtime (daemon + thin client).
|
|
48
47
|
- `praisonai_code.cli_backends` — CLI backend implementations (e.g. Claude Code).
|
|
@@ -58,24 +57,32 @@ praisonai-code → depends on praisonaiagents (core SDK)
|
|
|
58
57
|
click, textual, PyYAML, python-dotenv, litellm, mcp, pydantic — see
|
|
59
58
|
`pyproject.toml`). The rules above govern the **inter-package** direction.
|
|
60
59
|
|
|
61
|
-
> **
|
|
62
|
-
>
|
|
63
|
-
>
|
|
64
|
-
>
|
|
65
|
-
>
|
|
66
|
-
> deliberate C1 tradeoff to be removed in a later step — not a standalone-publish
|
|
67
|
-
> guarantee yet.
|
|
60
|
+
> **C7 note:** Some modules still import the `praisonai` wrapper at runtime
|
|
61
|
+
> (~170 files). **Standalone `pip install praisonai-code` without `praisonai`
|
|
62
|
+
> is not fully supported yet.** Use `pip install praisonai` for production.
|
|
63
|
+
> Residual C1 back-imports: `runtime/descriptor.py` → `praisonai.version`;
|
|
64
|
+
> `cli_backends/registry.py` → `praisonai._registry`.
|
|
68
65
|
|
|
69
66
|
Backward compatibility is preserved via PEP 562 shims at the old
|
|
70
67
|
`praisonai.*` import paths, so `pip install praisonai` and
|
|
71
68
|
`from praisonai.cli.main import PraisonAI` keep working unchanged.
|
|
72
69
|
|
|
73
|
-
## Install
|
|
70
|
+
## Install
|
|
71
|
+
|
|
72
|
+
**Recommended (includes wrapper + bots/gateway):**
|
|
73
|
+
|
|
74
|
+
```bash
|
|
75
|
+
pip install praisonai
|
|
76
|
+
```
|
|
77
|
+
|
|
78
|
+
**Development / monorepo:**
|
|
74
79
|
|
|
75
80
|
```bash
|
|
81
|
+
pip install -e src/praisonai-agents
|
|
76
82
|
pip install -e src/praisonai-code
|
|
83
|
+
pip install -e src/praisonai
|
|
77
84
|
python -c "import praisonai_code; print(praisonai_code.__version__)"
|
|
78
85
|
```
|
|
79
86
|
|
|
80
|
-
`praisonai-code`
|
|
81
|
-
|
|
87
|
+
**PyPI:** Published as `praisonai-code` after `praisonaiagents` in the
|
|
88
|
+
three-package release order (see `pypi-release.yml`).
|
|
@@ -8,19 +8,18 @@ Agentic terminal CLI for PraisonAI — the terminal-native agent product
|
|
|
8
8
|
|
|
9
9
|
## Status
|
|
10
10
|
|
|
11
|
-
|
|
12
|
-
`
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
|
18
|
-
|
|
|
19
|
-
|
|
|
20
|
-
|
|
|
21
|
-
|
|
|
22
|
-
|
|
|
23
|
-
| C6 | Integration gate |
|
|
11
|
+
**C0–C5 complete.** C6 integration gate verified — see
|
|
12
|
+
`src/praisonai/tests/C6_VERIFICATION.md`.
|
|
13
|
+
|
|
14
|
+
| Step | Scope | Status |
|
|
15
|
+
|------|-------|--------|
|
|
16
|
+
| C0 | Scaffold | Done |
|
|
17
|
+
| C1 | `runtime/` + `cli_backends/` | Done |
|
|
18
|
+
| C2 | `interactive/`, `execution/`, `ui/`, `output/`, `state/` | Done |
|
|
19
|
+
| C3 | Agentic commands | Done |
|
|
20
|
+
| C4 | Agentic features | Done |
|
|
21
|
+
| C5 | `main.py`, `app.py`, config/session/utils + shims | Done |
|
|
22
|
+
| C6 | Integration gate + sign-off | Done |
|
|
24
23
|
|
|
25
24
|
- `praisonai_code.runtime` — warm local runtime (daemon + thin client).
|
|
26
25
|
- `praisonai_code.cli_backends` — CLI backend implementations (e.g. Claude Code).
|
|
@@ -36,24 +35,32 @@ praisonai-code → depends on praisonaiagents (core SDK)
|
|
|
36
35
|
click, textual, PyYAML, python-dotenv, litellm, mcp, pydantic — see
|
|
37
36
|
`pyproject.toml`). The rules above govern the **inter-package** direction.
|
|
38
37
|
|
|
39
|
-
> **
|
|
40
|
-
>
|
|
41
|
-
>
|
|
42
|
-
>
|
|
43
|
-
>
|
|
44
|
-
> deliberate C1 tradeoff to be removed in a later step — not a standalone-publish
|
|
45
|
-
> guarantee yet.
|
|
38
|
+
> **C7 note:** Some modules still import the `praisonai` wrapper at runtime
|
|
39
|
+
> (~170 files). **Standalone `pip install praisonai-code` without `praisonai`
|
|
40
|
+
> is not fully supported yet.** Use `pip install praisonai` for production.
|
|
41
|
+
> Residual C1 back-imports: `runtime/descriptor.py` → `praisonai.version`;
|
|
42
|
+
> `cli_backends/registry.py` → `praisonai._registry`.
|
|
46
43
|
|
|
47
44
|
Backward compatibility is preserved via PEP 562 shims at the old
|
|
48
45
|
`praisonai.*` import paths, so `pip install praisonai` and
|
|
49
46
|
`from praisonai.cli.main import PraisonAI` keep working unchanged.
|
|
50
47
|
|
|
51
|
-
## Install
|
|
48
|
+
## Install
|
|
49
|
+
|
|
50
|
+
**Recommended (includes wrapper + bots/gateway):**
|
|
51
|
+
|
|
52
|
+
```bash
|
|
53
|
+
pip install praisonai
|
|
54
|
+
```
|
|
55
|
+
|
|
56
|
+
**Development / monorepo:**
|
|
52
57
|
|
|
53
58
|
```bash
|
|
59
|
+
pip install -e src/praisonai-agents
|
|
54
60
|
pip install -e src/praisonai-code
|
|
61
|
+
pip install -e src/praisonai
|
|
55
62
|
python -c "import praisonai_code; print(praisonai_code.__version__)"
|
|
56
63
|
```
|
|
57
64
|
|
|
58
|
-
`praisonai-code`
|
|
59
|
-
|
|
65
|
+
**PyPI:** Published as `praisonai-code` after `praisonaiagents` in the
|
|
66
|
+
three-package release order (see `pypi-release.yml`).
|
|
@@ -135,7 +135,6 @@ _LAZY_COMMANDS: Dict[str, Tuple[str, str, str]] = {
|
|
|
135
135
|
"daemon": (".commands.daemon", "app", "Warm local runtime (keeps MCP/provider clients hot)"),
|
|
136
136
|
"attach": (".commands.attach", "app", "Attach to a live session on the warm runtime"),
|
|
137
137
|
"schedule": (".commands.schedule", "app", "Scheduler management"),
|
|
138
|
-
"kanban": (".commands.kanban", "app", "Kanban task management"),
|
|
139
138
|
"run": (".commands.run", "app", "Run agents"),
|
|
140
139
|
"checkpoint": (".commands.checkpoint", "app", "File-level checkpoint management (save/restore/diff)"),
|
|
141
140
|
"profile": (".commands.profile", "app", "Performance profiling and diagnostics"),
|
|
@@ -184,24 +183,48 @@ _LAZY_COMMANDS: Dict[str, Tuple[str, str, str]] = {
|
|
|
184
183
|
"github": (".commands.github", "app", "GitHub native context tracking and Issue triage"),
|
|
185
184
|
"managed": (".commands.managed", "app", "Managed Agents (Anthropic cloud-hosted backend)"),
|
|
186
185
|
"models": (".commands.models", "app", "List and describe available models"),
|
|
187
|
-
|
|
188
|
-
#
|
|
186
|
+
|
|
187
|
+
# Bot/channel commands — see ``_WRAPPER_COMMANDS`` below. These entries keep
|
|
188
|
+
# relative ``.commands.*`` paths so they are advertised in ``--help``, but
|
|
189
|
+
# ``get_command()`` re-routes them to the absolute ``praisonai.cli.commands.*``
|
|
190
|
+
# path at invocation time (the modules live in the main wrapper).
|
|
189
191
|
"bot": (".commands.bot", "app", "Messaging bots with full agent capabilities"),
|
|
190
192
|
"gateway": (".commands.gateway", "app", "Multi-bot WebSocket gateway server"),
|
|
191
193
|
"pairing": (".commands.pairing", "app", "Manage bot user pairing"),
|
|
192
194
|
"identity": (".commands.identity", "app", "Manage cross-platform user identity links"),
|
|
195
|
+
"kanban": (".commands.kanban", "app", "Kanban task management"),
|
|
196
|
+
"claw": (".commands.claw", "app", "🦞 PraisonAI Dashboard (full UI)"),
|
|
197
|
+
"dashboard": (".commands.dashboard", "app", "🌟 Unified Dashboard (Flow + Claw + UI)"),
|
|
198
|
+
|
|
193
199
|
"browser": (".commands.browser", "app", "Browser control for agent automation"),
|
|
194
200
|
"plugins": (".commands.plugins", "app", "Plugin management and inspection"),
|
|
195
201
|
"sandbox": (".commands.sandbox", "app", "Sandbox container management"),
|
|
196
|
-
"claw": (".commands.claw", "app", "🦞 PraisonAI Dashboard (full UI)"),
|
|
197
202
|
"flow": (".commands.flow", "app", "Visual workflow builder (Langflow)"),
|
|
198
|
-
"dashboard": (".commands.dashboard", "app", "🌟 Unified Dashboard (Flow + Claw + UI)"),
|
|
199
203
|
"langfuse": (".commands.langfuse", "app", "🔍 Langfuse observability platform"),
|
|
200
204
|
"langextract": (".commands.langextract", "app", "🧠 Langextract visual trace layer"),
|
|
201
205
|
"port": (".commands.port", "app", "🔌 Manage port usage and resolve conflicts"),
|
|
202
206
|
"up": (".commands.up", "app", "🚀 Start unified PraisonAI stack (Langfuse + Langflow)"),
|
|
203
207
|
}
|
|
204
208
|
|
|
209
|
+
# Bot/channel commands that intentionally stay in the main ``praisonai``
|
|
210
|
+
# wrapper (they import ``praisonai.bots`` / ``praisonai.gateway``). Their
|
|
211
|
+
# entries remain in ``_LAZY_COMMANDS`` above (so ``--help`` and command
|
|
212
|
+
# discovery advertise them), but ``get_command()`` intercepts these names and
|
|
213
|
+
# imports them via the *absolute* ``praisonai.cli.commands.*`` path — the
|
|
214
|
+
# relative ``.commands.*`` path would resolve to ``praisonai_code`` where the
|
|
215
|
+
# modules do not live. The import happens lazily at invocation time only, so
|
|
216
|
+
# ``praisonai_code`` keeps no static dependency on ``praisonai``.
|
|
217
|
+
_WRAPPER_COMMANDS = frozenset({
|
|
218
|
+
"bot",
|
|
219
|
+
"gateway",
|
|
220
|
+
"pairing",
|
|
221
|
+
"identity",
|
|
222
|
+
"onboard",
|
|
223
|
+
"kanban",
|
|
224
|
+
"dashboard",
|
|
225
|
+
"claw",
|
|
226
|
+
})
|
|
227
|
+
|
|
205
228
|
# Special commands that need custom handling
|
|
206
229
|
_SPECIAL_COMMANDS = {
|
|
207
230
|
"tui": (".features.tui.debug", "create_debug_app", "Interactive TUI and simulation"),
|
|
@@ -209,6 +232,12 @@ _SPECIAL_COMMANDS = {
|
|
|
209
232
|
}
|
|
210
233
|
|
|
211
234
|
|
|
235
|
+
def _wrapper_available() -> bool:
|
|
236
|
+
"""Return True when the ``praisonai`` wrapper package is importable."""
|
|
237
|
+
import importlib.util as _importlib_util
|
|
238
|
+
return _importlib_util.find_spec("praisonai") is not None
|
|
239
|
+
|
|
240
|
+
|
|
212
241
|
class LazyCommandGroup(TyperGroup):
|
|
213
242
|
"""Click Group that lazily loads subcommands from registry."""
|
|
214
243
|
|
|
@@ -217,8 +246,14 @@ class LazyCommandGroup(TyperGroup):
|
|
|
217
246
|
# Start with commands from parent (already registered commands)
|
|
218
247
|
commands = set(super().list_commands(ctx))
|
|
219
248
|
|
|
220
|
-
# Add lazy-loaded commands
|
|
221
|
-
|
|
249
|
+
# Add lazy-loaded commands. Wrapper-only commands are advertised only when
|
|
250
|
+
# the ``praisonai`` wrapper is installed, so a standalone ``praisonai-code``
|
|
251
|
+
# install does not surface commands it cannot resolve.
|
|
252
|
+
wrapper_ok = _wrapper_available()
|
|
253
|
+
commands.update(
|
|
254
|
+
name for name in _LAZY_COMMANDS
|
|
255
|
+
if wrapper_ok or name not in _WRAPPER_COMMANDS
|
|
256
|
+
)
|
|
222
257
|
commands.update(_SPECIAL_COMMANDS.keys())
|
|
223
258
|
|
|
224
259
|
# Add special inline commands
|
|
@@ -243,7 +278,12 @@ class LazyCommandGroup(TyperGroup):
|
|
|
243
278
|
if name in _LAZY_COMMANDS:
|
|
244
279
|
module_path, attr_name, _ = _LAZY_COMMANDS[name]
|
|
245
280
|
try:
|
|
246
|
-
|
|
281
|
+
if name in _WRAPPER_COMMANDS:
|
|
282
|
+
if not _wrapper_available():
|
|
283
|
+
return None
|
|
284
|
+
module = importlib.import_module(f"praisonai.cli.commands.{name}")
|
|
285
|
+
else:
|
|
286
|
+
module = importlib.import_module(module_path, __package__)
|
|
247
287
|
sub_app = getattr(module, attr_name)
|
|
248
288
|
if isinstance(sub_app, click.Command):
|
|
249
289
|
return sub_app
|
|
@@ -251,7 +291,7 @@ class LazyCommandGroup(TyperGroup):
|
|
|
251
291
|
except (ImportError, AttributeError) as e:
|
|
252
292
|
typer.echo(f"Error loading command '{name}': {e}", err=True)
|
|
253
293
|
return None
|
|
254
|
-
|
|
294
|
+
|
|
255
295
|
# Check special commands
|
|
256
296
|
if name in _SPECIAL_COMMANDS:
|
|
257
297
|
module_path, func_name, _ = _SPECIAL_COMMANDS[name]
|
|
@@ -723,6 +763,8 @@ def get_command_names():
|
|
|
723
763
|
commands that are not in ``_LAZY_COMMANDS`` are added explicitly.
|
|
724
764
|
"""
|
|
725
765
|
names = set(_LAZY_COMMANDS.keys())
|
|
766
|
+
# Bot/channel commands are already part of ``_LAZY_COMMANDS`` (re-routed to
|
|
767
|
+
# the main wrapper at invocation time via ``_WRAPPER_COMMANDS``).
|
|
726
768
|
# Special commands with custom handling (tui, queue)
|
|
727
769
|
names.update(_SPECIAL_COMMANDS.keys())
|
|
728
770
|
# Inline special commands handled outside the registries
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: praisonai-code
|
|
3
|
-
Version: 0.0.
|
|
3
|
+
Version: 0.0.4
|
|
4
4
|
Summary: Agentic terminal CLI for PraisonAI — the terminal-native agent (run, chat, code, runtime, cli backends) extracted from the praisonai wrapper.
|
|
5
5
|
Author: Mervin Praison
|
|
6
6
|
License: MIT
|
|
@@ -30,19 +30,18 @@ Agentic terminal CLI for PraisonAI — the terminal-native agent product
|
|
|
30
30
|
|
|
31
31
|
## Status
|
|
32
32
|
|
|
33
|
-
|
|
34
|
-
`
|
|
35
|
-
incrementally in steps C2–C6 (see issue #2512):
|
|
33
|
+
**C0–C5 complete.** C6 integration gate verified — see
|
|
34
|
+
`src/praisonai/tests/C6_VERIFICATION.md`.
|
|
36
35
|
|
|
37
|
-
| Step | Scope |
|
|
38
|
-
|
|
39
|
-
| C0 | Scaffold |
|
|
40
|
-
| C1 | `runtime/` + `cli_backends/` |
|
|
41
|
-
| C2 | `interactive/`, `execution/`, `ui/`, `output/`, `state/` |
|
|
42
|
-
| C3 | Agentic commands |
|
|
43
|
-
| C4 | Agentic features |
|
|
44
|
-
| C5 | `main.py`, `app.py`, config/session/utils + shims |
|
|
45
|
-
| C6 | Integration gate |
|
|
36
|
+
| Step | Scope | Status |
|
|
37
|
+
|------|-------|--------|
|
|
38
|
+
| C0 | Scaffold | Done |
|
|
39
|
+
| C1 | `runtime/` + `cli_backends/` | Done |
|
|
40
|
+
| C2 | `interactive/`, `execution/`, `ui/`, `output/`, `state/` | Done |
|
|
41
|
+
| C3 | Agentic commands | Done |
|
|
42
|
+
| C4 | Agentic features | Done |
|
|
43
|
+
| C5 | `main.py`, `app.py`, config/session/utils + shims | Done |
|
|
44
|
+
| C6 | Integration gate + sign-off | Done |
|
|
46
45
|
|
|
47
46
|
- `praisonai_code.runtime` — warm local runtime (daemon + thin client).
|
|
48
47
|
- `praisonai_code.cli_backends` — CLI backend implementations (e.g. Claude Code).
|
|
@@ -58,24 +57,32 @@ praisonai-code → depends on praisonaiagents (core SDK)
|
|
|
58
57
|
click, textual, PyYAML, python-dotenv, litellm, mcp, pydantic — see
|
|
59
58
|
`pyproject.toml`). The rules above govern the **inter-package** direction.
|
|
60
59
|
|
|
61
|
-
> **
|
|
62
|
-
>
|
|
63
|
-
>
|
|
64
|
-
>
|
|
65
|
-
>
|
|
66
|
-
> deliberate C1 tradeoff to be removed in a later step — not a standalone-publish
|
|
67
|
-
> guarantee yet.
|
|
60
|
+
> **C7 note:** Some modules still import the `praisonai` wrapper at runtime
|
|
61
|
+
> (~170 files). **Standalone `pip install praisonai-code` without `praisonai`
|
|
62
|
+
> is not fully supported yet.** Use `pip install praisonai` for production.
|
|
63
|
+
> Residual C1 back-imports: `runtime/descriptor.py` → `praisonai.version`;
|
|
64
|
+
> `cli_backends/registry.py` → `praisonai._registry`.
|
|
68
65
|
|
|
69
66
|
Backward compatibility is preserved via PEP 562 shims at the old
|
|
70
67
|
`praisonai.*` import paths, so `pip install praisonai` and
|
|
71
68
|
`from praisonai.cli.main import PraisonAI` keep working unchanged.
|
|
72
69
|
|
|
73
|
-
## Install
|
|
70
|
+
## Install
|
|
71
|
+
|
|
72
|
+
**Recommended (includes wrapper + bots/gateway):**
|
|
73
|
+
|
|
74
|
+
```bash
|
|
75
|
+
pip install praisonai
|
|
76
|
+
```
|
|
77
|
+
|
|
78
|
+
**Development / monorepo:**
|
|
74
79
|
|
|
75
80
|
```bash
|
|
81
|
+
pip install -e src/praisonai-agents
|
|
76
82
|
pip install -e src/praisonai-code
|
|
83
|
+
pip install -e src/praisonai
|
|
77
84
|
python -c "import praisonai_code; print(praisonai_code.__version__)"
|
|
78
85
|
```
|
|
79
86
|
|
|
80
|
-
`praisonai-code`
|
|
81
|
-
|
|
87
|
+
**PyPI:** Published as `praisonai-code` after `praisonaiagents` in the
|
|
88
|
+
three-package release order (see `pypi-release.yml`).
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
[project]
|
|
2
2
|
name = "praisonai-code"
|
|
3
|
-
version = "0.0.
|
|
3
|
+
version = "0.0.4"
|
|
4
4
|
description = "Agentic terminal CLI for PraisonAI — the terminal-native agent (run, chat, code, runtime, cli backends) extracted from the praisonai wrapper."
|
|
5
5
|
readme = "README.md"
|
|
6
6
|
license = {text = "MIT"}
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
{praisonai_code-0.0.2 → praisonai_code-0.0.4}/praisonai_code/cli/configuration/config.schema.json
RENAMED
|
File without changes
|
{praisonai_code-0.0.2 → praisonai_code-0.0.4}/praisonai_code/cli/configuration/credentials.py
RENAMED
|
File without changes
|
|
File without changes
|
{praisonai_code-0.0.2 → praisonai_code-0.0.4}/praisonai_code/cli/configuration/model_resolver.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|