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.
Files changed (314) hide show
  1. {praisonai_code-0.0.2 → praisonai_code-0.0.4}/PKG-INFO +30 -23
  2. {praisonai_code-0.0.2 → praisonai_code-0.0.4}/README.md +30 -23
  3. {praisonai_code-0.0.2 → praisonai_code-0.0.4}/praisonai_code/cli/app.py +51 -9
  4. {praisonai_code-0.0.2 → praisonai_code-0.0.4}/praisonai_code.egg-info/PKG-INFO +30 -23
  5. {praisonai_code-0.0.2 → praisonai_code-0.0.4}/pyproject.toml +1 -1
  6. {praisonai_code-0.0.2 → praisonai_code-0.0.4}/praisonai_code/__init__.py +0 -0
  7. {praisonai_code-0.0.2 → praisonai_code-0.0.4}/praisonai_code/cli/__init__.py +0 -0
  8. {praisonai_code-0.0.2 → praisonai_code-0.0.4}/praisonai_code/cli/_forward_shim.py +0 -0
  9. {praisonai_code-0.0.2 → praisonai_code-0.0.4}/praisonai_code/cli/_paths.py +0 -0
  10. {praisonai_code-0.0.2 → praisonai_code-0.0.4}/praisonai_code/cli/_warnings.py +0 -0
  11. {praisonai_code-0.0.2 → praisonai_code-0.0.4}/praisonai_code/cli/approval_backend.py +0 -0
  12. {praisonai_code-0.0.2 → praisonai_code-0.0.4}/praisonai_code/cli/branding.py +0 -0
  13. {praisonai_code-0.0.2 → praisonai_code-0.0.4}/praisonai_code/cli/commands/__init__.py +0 -0
  14. {praisonai_code-0.0.2 → praisonai_code-0.0.4}/praisonai_code/cli/commands/acp.py +0 -0
  15. {praisonai_code-0.0.2 → praisonai_code-0.0.4}/praisonai_code/cli/commands/agent.py +0 -0
  16. {praisonai_code-0.0.2 → praisonai_code-0.0.4}/praisonai_code/cli/commands/agents.py +0 -0
  17. {praisonai_code-0.0.2 → praisonai_code-0.0.4}/praisonai_code/cli/commands/app.py +0 -0
  18. {praisonai_code-0.0.2 → praisonai_code-0.0.4}/praisonai_code/cli/commands/attach.py +0 -0
  19. {praisonai_code-0.0.2 → praisonai_code-0.0.4}/praisonai_code/cli/commands/audit.py +0 -0
  20. {praisonai_code-0.0.2 → praisonai_code-0.0.4}/praisonai_code/cli/commands/auth.py +0 -0
  21. {praisonai_code-0.0.2 → praisonai_code-0.0.4}/praisonai_code/cli/commands/batch.py +0 -0
  22. {praisonai_code-0.0.2 → praisonai_code-0.0.4}/praisonai_code/cli/commands/benchmark.py +0 -0
  23. {praisonai_code-0.0.2 → praisonai_code-0.0.4}/praisonai_code/cli/commands/browser.py +0 -0
  24. {praisonai_code-0.0.2 → praisonai_code-0.0.4}/praisonai_code/cli/commands/call.py +0 -0
  25. {praisonai_code-0.0.2 → praisonai_code-0.0.4}/praisonai_code/cli/commands/chat.py +0 -0
  26. {praisonai_code-0.0.2 → praisonai_code-0.0.4}/praisonai_code/cli/commands/checkpoint.py +0 -0
  27. {praisonai_code-0.0.2 → praisonai_code-0.0.4}/praisonai_code/cli/commands/code.py +0 -0
  28. {praisonai_code-0.0.2 → praisonai_code-0.0.4}/praisonai_code/cli/commands/command.py +0 -0
  29. {praisonai_code-0.0.2 → praisonai_code-0.0.4}/praisonai_code/cli/commands/commit.py +0 -0
  30. {praisonai_code-0.0.2 → praisonai_code-0.0.4}/praisonai_code/cli/commands/completion.py +0 -0
  31. {praisonai_code-0.0.2 → praisonai_code-0.0.4}/praisonai_code/cli/commands/config.py +0 -0
  32. {praisonai_code-0.0.2 → praisonai_code-0.0.4}/praisonai_code/cli/commands/context.py +0 -0
  33. {praisonai_code-0.0.2 → praisonai_code-0.0.4}/praisonai_code/cli/commands/daemon.py +0 -0
  34. {praisonai_code-0.0.2 → praisonai_code-0.0.4}/praisonai_code/cli/commands/debug.py +0 -0
  35. {praisonai_code-0.0.2 → praisonai_code-0.0.4}/praisonai_code/cli/commands/deploy.py +0 -0
  36. {praisonai_code-0.0.2 → praisonai_code-0.0.4}/praisonai_code/cli/commands/diag.py +0 -0
  37. {praisonai_code-0.0.2 → praisonai_code-0.0.4}/praisonai_code/cli/commands/docs.py +0 -0
  38. {praisonai_code-0.0.2 → praisonai_code-0.0.4}/praisonai_code/cli/commands/doctor.py +0 -0
  39. {praisonai_code-0.0.2 → praisonai_code-0.0.4}/praisonai_code/cli/commands/endpoints.py +0 -0
  40. {praisonai_code-0.0.2 → praisonai_code-0.0.4}/praisonai_code/cli/commands/environment.py +0 -0
  41. {praisonai_code-0.0.2 → praisonai_code-0.0.4}/praisonai_code/cli/commands/eval.py +0 -0
  42. {praisonai_code-0.0.2 → praisonai_code-0.0.4}/praisonai_code/cli/commands/examples.py +0 -0
  43. {praisonai_code-0.0.2 → praisonai_code-0.0.4}/praisonai_code/cli/commands/flow.py +0 -0
  44. {praisonai_code-0.0.2 → praisonai_code-0.0.4}/praisonai_code/cli/commands/github.py +0 -0
  45. {praisonai_code-0.0.2 → praisonai_code-0.0.4}/praisonai_code/cli/commands/hooks.py +0 -0
  46. {praisonai_code-0.0.2 → praisonai_code-0.0.4}/praisonai_code/cli/commands/init.py +0 -0
  47. {praisonai_code-0.0.2 → praisonai_code-0.0.4}/praisonai_code/cli/commands/knowledge.py +0 -0
  48. {praisonai_code-0.0.2 → praisonai_code-0.0.4}/praisonai_code/cli/commands/langextract.py +0 -0
  49. {praisonai_code-0.0.2 → praisonai_code-0.0.4}/praisonai_code/cli/commands/langfuse.py +0 -0
  50. {praisonai_code-0.0.2 → praisonai_code-0.0.4}/praisonai_code/cli/commands/loop.py +0 -0
  51. {praisonai_code-0.0.2 → praisonai_code-0.0.4}/praisonai_code/cli/commands/lsp.py +0 -0
  52. {praisonai_code-0.0.2 → praisonai_code-0.0.4}/praisonai_code/cli/commands/managed.py +0 -0
  53. {praisonai_code-0.0.2 → praisonai_code-0.0.4}/praisonai_code/cli/commands/mcp.py +0 -0
  54. {praisonai_code-0.0.2 → praisonai_code-0.0.4}/praisonai_code/cli/commands/memory.py +0 -0
  55. {praisonai_code-0.0.2 → praisonai_code-0.0.4}/praisonai_code/cli/commands/models.py +0 -0
  56. {praisonai_code-0.0.2 → praisonai_code-0.0.4}/praisonai_code/cli/commands/n8n.py +0 -0
  57. {praisonai_code-0.0.2 → praisonai_code-0.0.4}/praisonai_code/cli/commands/obs.py +0 -0
  58. {praisonai_code-0.0.2 → praisonai_code-0.0.4}/praisonai_code/cli/commands/package.py +0 -0
  59. {praisonai_code-0.0.2 → praisonai_code-0.0.4}/praisonai_code/cli/commands/paths.py +0 -0
  60. {praisonai_code-0.0.2 → praisonai_code-0.0.4}/praisonai_code/cli/commands/permissions.py +0 -0
  61. {praisonai_code-0.0.2 → praisonai_code-0.0.4}/praisonai_code/cli/commands/plugins.py +0 -0
  62. {praisonai_code-0.0.2 → praisonai_code-0.0.4}/praisonai_code/cli/commands/port.py +0 -0
  63. {praisonai_code-0.0.2 → praisonai_code-0.0.4}/praisonai_code/cli/commands/profile.py +0 -0
  64. {praisonai_code-0.0.2 → praisonai_code-0.0.4}/praisonai_code/cli/commands/publish.py +0 -0
  65. {praisonai_code-0.0.2 → praisonai_code-0.0.4}/praisonai_code/cli/commands/rag.py +0 -0
  66. {praisonai_code-0.0.2 → praisonai_code-0.0.4}/praisonai_code/cli/commands/realtime.py +0 -0
  67. {praisonai_code-0.0.2 → praisonai_code-0.0.4}/praisonai_code/cli/commands/recipe.py +0 -0
  68. {praisonai_code-0.0.2 → praisonai_code-0.0.4}/praisonai_code/cli/commands/registry.py +0 -0
  69. {praisonai_code-0.0.2 → praisonai_code-0.0.4}/praisonai_code/cli/commands/replay.py +0 -0
  70. {praisonai_code-0.0.2 → praisonai_code-0.0.4}/praisonai_code/cli/commands/research.py +0 -0
  71. {praisonai_code-0.0.2 → praisonai_code-0.0.4}/praisonai_code/cli/commands/retrieval.py +0 -0
  72. {praisonai_code-0.0.2 → praisonai_code-0.0.4}/praisonai_code/cli/commands/rules.py +0 -0
  73. {praisonai_code-0.0.2 → praisonai_code-0.0.4}/praisonai_code/cli/commands/run.py +0 -0
  74. {praisonai_code-0.0.2 → praisonai_code-0.0.4}/praisonai_code/cli/commands/sandbox.py +0 -0
  75. {praisonai_code-0.0.2 → praisonai_code-0.0.4}/praisonai_code/cli/commands/schedule.py +0 -0
  76. {praisonai_code-0.0.2 → praisonai_code-0.0.4}/praisonai_code/cli/commands/serve.py +0 -0
  77. {praisonai_code-0.0.2 → praisonai_code-0.0.4}/praisonai_code/cli/commands/session.py +0 -0
  78. {praisonai_code-0.0.2 → praisonai_code-0.0.4}/praisonai_code/cli/commands/setup.py +0 -0
  79. {praisonai_code-0.0.2 → praisonai_code-0.0.4}/praisonai_code/cli/commands/skills.py +0 -0
  80. {praisonai_code-0.0.2 → praisonai_code-0.0.4}/praisonai_code/cli/commands/standardise.py +0 -0
  81. {praisonai_code-0.0.2 → praisonai_code-0.0.4}/praisonai_code/cli/commands/templates.py +0 -0
  82. {praisonai_code-0.0.2 → praisonai_code-0.0.4}/praisonai_code/cli/commands/test.py +0 -0
  83. {praisonai_code-0.0.2 → praisonai_code-0.0.4}/praisonai_code/cli/commands/todo.py +0 -0
  84. {praisonai_code-0.0.2 → praisonai_code-0.0.4}/praisonai_code/cli/commands/tools.py +0 -0
  85. {praisonai_code-0.0.2 → praisonai_code-0.0.4}/praisonai_code/cli/commands/traces.py +0 -0
  86. {praisonai_code-0.0.2 → praisonai_code-0.0.4}/praisonai_code/cli/commands/tracker.py +0 -0
  87. {praisonai_code-0.0.2 → praisonai_code-0.0.4}/praisonai_code/cli/commands/train.py +0 -0
  88. {praisonai_code-0.0.2 → praisonai_code-0.0.4}/praisonai_code/cli/commands/ui.py +0 -0
  89. {praisonai_code-0.0.2 → praisonai_code-0.0.4}/praisonai_code/cli/commands/up.py +0 -0
  90. {praisonai_code-0.0.2 → praisonai_code-0.0.4}/praisonai_code/cli/commands/validate.py +0 -0
  91. {praisonai_code-0.0.2 → praisonai_code-0.0.4}/praisonai_code/cli/commands/version.py +0 -0
  92. {praisonai_code-0.0.2 → praisonai_code-0.0.4}/praisonai_code/cli/commands/workflow.py +0 -0
  93. {praisonai_code-0.0.2 → praisonai_code-0.0.4}/praisonai_code/cli/config_loader.py +0 -0
  94. {praisonai_code-0.0.2 → praisonai_code-0.0.4}/praisonai_code/cli/configuration/__init__.py +0 -0
  95. {praisonai_code-0.0.2 → praisonai_code-0.0.4}/praisonai_code/cli/configuration/config.schema.json +0 -0
  96. {praisonai_code-0.0.2 → praisonai_code-0.0.4}/praisonai_code/cli/configuration/credentials.py +0 -0
  97. {praisonai_code-0.0.2 → praisonai_code-0.0.4}/praisonai_code/cli/configuration/loader.py +0 -0
  98. {praisonai_code-0.0.2 → praisonai_code-0.0.4}/praisonai_code/cli/configuration/model_resolver.py +0 -0
  99. {praisonai_code-0.0.2 → praisonai_code-0.0.4}/praisonai_code/cli/configuration/oauth.py +0 -0
  100. {praisonai_code-0.0.2 → praisonai_code-0.0.4}/praisonai_code/cli/configuration/paths.py +0 -0
  101. {praisonai_code-0.0.2 → praisonai_code-0.0.4}/praisonai_code/cli/configuration/resolver.py +0 -0
  102. {praisonai_code-0.0.2 → praisonai_code-0.0.4}/praisonai_code/cli/configuration/schema.py +0 -0
  103. {praisonai_code-0.0.2 → praisonai_code-0.0.4}/praisonai_code/cli/execution/__init__.py +0 -0
  104. {praisonai_code-0.0.2 → praisonai_code-0.0.4}/praisonai_code/cli/execution/core.py +0 -0
  105. {praisonai_code-0.0.2 → praisonai_code-0.0.4}/praisonai_code/cli/execution/profiler.py +0 -0
  106. {praisonai_code-0.0.2 → praisonai_code-0.0.4}/praisonai_code/cli/execution/request.py +0 -0
  107. {praisonai_code-0.0.2 → praisonai_code-0.0.4}/praisonai_code/cli/execution/result.py +0 -0
  108. {praisonai_code-0.0.2 → praisonai_code-0.0.4}/praisonai_code/cli/fallback_schema.py +0 -0
  109. {praisonai_code-0.0.2 → praisonai_code-0.0.4}/praisonai_code/cli/features/__init__.py +0 -0
  110. {praisonai_code-0.0.2 → praisonai_code-0.0.4}/praisonai_code/cli/features/_endpoint_registry.py +0 -0
  111. {praisonai_code-0.0.2 → praisonai_code-0.0.4}/praisonai_code/cli/features/_search_registry.py +0 -0
  112. {praisonai_code-0.0.2 → praisonai_code-0.0.4}/praisonai_code/cli/features/acp.py +0 -0
  113. {praisonai_code-0.0.2 → praisonai_code-0.0.4}/praisonai_code/cli/features/action_orchestrator.py +0 -0
  114. {praisonai_code-0.0.2 → praisonai_code-0.0.4}/praisonai_code/cli/features/agent_scheduler.py +0 -0
  115. {praisonai_code-0.0.2 → praisonai_code-0.0.4}/praisonai_code/cli/features/agent_tools.py +0 -0
  116. {praisonai_code-0.0.2 → praisonai_code-0.0.4}/praisonai_code/cli/features/agents.py +0 -0
  117. {praisonai_code-0.0.2 → praisonai_code-0.0.4}/praisonai_code/cli/features/at_mentions.py +0 -0
  118. {praisonai_code-0.0.2 → praisonai_code-0.0.4}/praisonai_code/cli/features/audit_cli.py +0 -0
  119. {praisonai_code-0.0.2 → praisonai_code-0.0.4}/praisonai_code/cli/features/auto_memory.py +0 -0
  120. {praisonai_code-0.0.2 → praisonai_code-0.0.4}/praisonai_code/cli/features/auto_mode.py +0 -0
  121. {praisonai_code-0.0.2 → praisonai_code-0.0.4}/praisonai_code/cli/features/autonomy_mode.py +0 -0
  122. {praisonai_code-0.0.2 → praisonai_code-0.0.4}/praisonai_code/cli/features/background.py +0 -0
  123. {praisonai_code-0.0.2 → praisonai_code-0.0.4}/praisonai_code/cli/features/base.py +0 -0
  124. {praisonai_code-0.0.2 → praisonai_code-0.0.4}/praisonai_code/cli/features/benchmark.py +0 -0
  125. {praisonai_code-0.0.2 → praisonai_code-0.0.4}/praisonai_code/cli/features/capabilities.py +0 -0
  126. {praisonai_code-0.0.2 → praisonai_code-0.0.4}/praisonai_code/cli/features/checkpoints.py +0 -0
  127. {praisonai_code-0.0.2 → praisonai_code-0.0.4}/praisonai_code/cli/features/cli_profiler.py +0 -0
  128. {praisonai_code-0.0.2 → praisonai_code-0.0.4}/praisonai_code/cli/features/code_intelligence.py +0 -0
  129. {praisonai_code-0.0.2 → praisonai_code-0.0.4}/praisonai_code/cli/features/compaction.py +0 -0
  130. {praisonai_code-0.0.2 → praisonai_code-0.0.4}/praisonai_code/cli/features/compare.py +0 -0
  131. {praisonai_code-0.0.2 → praisonai_code-0.0.4}/praisonai_code/cli/features/config_hierarchy.py +0 -0
  132. {praisonai_code-0.0.2 → praisonai_code-0.0.4}/praisonai_code/cli/features/context_manager.py +0 -0
  133. {praisonai_code-0.0.2 → praisonai_code-0.0.4}/praisonai_code/cli/features/cost_tracker.py +0 -0
  134. {praisonai_code-0.0.2 → praisonai_code-0.0.4}/praisonai_code/cli/features/csv_test_runner.py +0 -0
  135. {praisonai_code-0.0.2 → praisonai_code-0.0.4}/praisonai_code/cli/features/custom_definitions.py +0 -0
  136. {praisonai_code-0.0.2 → praisonai_code-0.0.4}/praisonai_code/cli/features/debug.py +0 -0
  137. {praisonai_code-0.0.2 → praisonai_code-0.0.4}/praisonai_code/cli/features/deploy.py +0 -0
  138. {praisonai_code-0.0.2 → praisonai_code-0.0.4}/praisonai_code/cli/features/diag.py +0 -0
  139. {praisonai_code-0.0.2 → praisonai_code-0.0.4}/praisonai_code/cli/features/display_jsonl.py +0 -0
  140. {praisonai_code-0.0.2 → praisonai_code-0.0.4}/praisonai_code/cli/features/doctor/__init__.py +0 -0
  141. {praisonai_code-0.0.2 → praisonai_code-0.0.4}/praisonai_code/cli/features/doctor/checks/__init__.py +0 -0
  142. {praisonai_code-0.0.2 → praisonai_code-0.0.4}/praisonai_code/cli/features/doctor/checks/acp_checks.py +0 -0
  143. {praisonai_code-0.0.2 → praisonai_code-0.0.4}/praisonai_code/cli/features/doctor/checks/bot_checks.py +0 -0
  144. {praisonai_code-0.0.2 → praisonai_code-0.0.4}/praisonai_code/cli/features/doctor/checks/config_checks.py +0 -0
  145. {praisonai_code-0.0.2 → praisonai_code-0.0.4}/praisonai_code/cli/features/doctor/checks/db_checks.py +0 -0
  146. {praisonai_code-0.0.2 → praisonai_code-0.0.4}/praisonai_code/cli/features/doctor/checks/env_checks.py +0 -0
  147. {praisonai_code-0.0.2 → praisonai_code-0.0.4}/praisonai_code/cli/features/doctor/checks/gateway_checks.py +0 -0
  148. {praisonai_code-0.0.2 → praisonai_code-0.0.4}/praisonai_code/cli/features/doctor/checks/lsp_checks.py +0 -0
  149. {praisonai_code-0.0.2 → praisonai_code-0.0.4}/praisonai_code/cli/features/doctor/checks/mcp_checks.py +0 -0
  150. {praisonai_code-0.0.2 → praisonai_code-0.0.4}/praisonai_code/cli/features/doctor/checks/memory_checks.py +0 -0
  151. {praisonai_code-0.0.2 → praisonai_code-0.0.4}/praisonai_code/cli/features/doctor/checks/network_checks.py +0 -0
  152. {praisonai_code-0.0.2 → praisonai_code-0.0.4}/praisonai_code/cli/features/doctor/checks/obs_checks.py +0 -0
  153. {praisonai_code-0.0.2 → praisonai_code-0.0.4}/praisonai_code/cli/features/doctor/checks/packaging_checks.py +0 -0
  154. {praisonai_code-0.0.2 → praisonai_code-0.0.4}/praisonai_code/cli/features/doctor/checks/performance_checks.py +0 -0
  155. {praisonai_code-0.0.2 → praisonai_code-0.0.4}/praisonai_code/cli/features/doctor/checks/permissions_checks.py +0 -0
  156. {praisonai_code-0.0.2 → praisonai_code-0.0.4}/praisonai_code/cli/features/doctor/checks/runtime_checks.py +0 -0
  157. {praisonai_code-0.0.2 → praisonai_code-0.0.4}/praisonai_code/cli/features/doctor/checks/runtime_migration_checks.py +0 -0
  158. {praisonai_code-0.0.2 → praisonai_code-0.0.4}/praisonai_code/cli/features/doctor/checks/selftest_checks.py +0 -0
  159. {praisonai_code-0.0.2 → praisonai_code-0.0.4}/praisonai_code/cli/features/doctor/checks/serve_checks.py +0 -0
  160. {praisonai_code-0.0.2 → praisonai_code-0.0.4}/praisonai_code/cli/features/doctor/checks/skills_checks.py +0 -0
  161. {praisonai_code-0.0.2 → praisonai_code-0.0.4}/praisonai_code/cli/features/doctor/checks/tools_checks.py +0 -0
  162. {praisonai_code-0.0.2 → praisonai_code-0.0.4}/praisonai_code/cli/features/doctor/engine.py +0 -0
  163. {praisonai_code-0.0.2 → praisonai_code-0.0.4}/praisonai_code/cli/features/doctor/formatters.py +0 -0
  164. {praisonai_code-0.0.2 → praisonai_code-0.0.4}/praisonai_code/cli/features/doctor/handler.py +0 -0
  165. {praisonai_code-0.0.2 → praisonai_code-0.0.4}/praisonai_code/cli/features/doctor/models.py +0 -0
  166. {praisonai_code-0.0.2 → praisonai_code-0.0.4}/praisonai_code/cli/features/doctor/registry.py +0 -0
  167. {praisonai_code-0.0.2 → praisonai_code-0.0.4}/praisonai_code/cli/features/endpoints.py +0 -0
  168. {praisonai_code-0.0.2 → praisonai_code-0.0.4}/praisonai_code/cli/features/eval.py +0 -0
  169. {praisonai_code-0.0.2 → praisonai_code-0.0.4}/praisonai_code/cli/features/examples.py +0 -0
  170. {praisonai_code-0.0.2 → praisonai_code-0.0.4}/praisonai_code/cli/features/external_agents.py +0 -0
  171. {praisonai_code-0.0.2 → praisonai_code-0.0.4}/praisonai_code/cli/features/fast_context.py +0 -0
  172. {praisonai_code-0.0.2 → praisonai_code-0.0.4}/praisonai_code/cli/features/file_history.py +0 -0
  173. {praisonai_code-0.0.2 → praisonai_code-0.0.4}/praisonai_code/cli/features/flow_display.py +0 -0
  174. {praisonai_code-0.0.2 → praisonai_code-0.0.4}/praisonai_code/cli/features/git_attribution.py +0 -0
  175. {praisonai_code-0.0.2 → praisonai_code-0.0.4}/praisonai_code/cli/features/git_integration.py +0 -0
  176. {praisonai_code-0.0.2 → praisonai_code-0.0.4}/praisonai_code/cli/features/guardrail.py +0 -0
  177. {praisonai_code-0.0.2 → praisonai_code-0.0.4}/praisonai_code/cli/features/handoff.py +0 -0
  178. {praisonai_code-0.0.2 → praisonai_code-0.0.4}/praisonai_code/cli/features/hooks.py +0 -0
  179. {praisonai_code-0.0.2 → praisonai_code-0.0.4}/praisonai_code/cli/features/hybrid_workflow.py +0 -0
  180. {praisonai_code-0.0.2 → praisonai_code-0.0.4}/praisonai_code/cli/features/image.py +0 -0
  181. {praisonai_code-0.0.2 → praisonai_code-0.0.4}/praisonai_code/cli/features/interactive_core_headless.py +0 -0
  182. {praisonai_code-0.0.2 → praisonai_code-0.0.4}/praisonai_code/cli/features/interactive_runtime.py +0 -0
  183. {praisonai_code-0.0.2 → praisonai_code-0.0.4}/praisonai_code/cli/features/interactive_test_harness.py +0 -0
  184. {praisonai_code-0.0.2 → praisonai_code-0.0.4}/praisonai_code/cli/features/interactive_tools.py +0 -0
  185. {praisonai_code-0.0.2 → praisonai_code-0.0.4}/praisonai_code/cli/features/interactive_tui.py +0 -0
  186. {praisonai_code-0.0.2 → praisonai_code-0.0.4}/praisonai_code/cli/features/job_workflow.py +0 -0
  187. {praisonai_code-0.0.2 → praisonai_code-0.0.4}/praisonai_code/cli/features/jobs.py +0 -0
  188. {praisonai_code-0.0.2 → praisonai_code-0.0.4}/praisonai_code/cli/features/knowledge.py +0 -0
  189. {praisonai_code-0.0.2 → praisonai_code-0.0.4}/praisonai_code/cli/features/knowledge_cli.py +0 -0
  190. {praisonai_code-0.0.2 → praisonai_code-0.0.4}/praisonai_code/cli/features/lite.py +0 -0
  191. {praisonai_code-0.0.2 → praisonai_code-0.0.4}/praisonai_code/cli/features/logs.py +0 -0
  192. {praisonai_code-0.0.2 → praisonai_code-0.0.4}/praisonai_code/cli/features/lsp_cli.py +0 -0
  193. {praisonai_code-0.0.2 → praisonai_code-0.0.4}/praisonai_code/cli/features/lsp_diagnostics.py +0 -0
  194. {praisonai_code-0.0.2 → praisonai_code-0.0.4}/praisonai_code/cli/features/mcp.py +0 -0
  195. {praisonai_code-0.0.2 → praisonai_code-0.0.4}/praisonai_code/cli/features/message_queue.py +0 -0
  196. {praisonai_code-0.0.2 → praisonai_code-0.0.4}/praisonai_code/cli/features/metrics.py +0 -0
  197. {praisonai_code-0.0.2 → praisonai_code-0.0.4}/praisonai_code/cli/features/migrate.py +0 -0
  198. {praisonai_code-0.0.2 → praisonai_code-0.0.4}/praisonai_code/cli/features/migration_flow.py +0 -0
  199. {praisonai_code-0.0.2 → praisonai_code-0.0.4}/praisonai_code/cli/features/migration_spec.py +0 -0
  200. {praisonai_code-0.0.2 → praisonai_code-0.0.4}/praisonai_code/cli/features/n8n.py +0 -0
  201. {praisonai_code-0.0.2 → praisonai_code-0.0.4}/praisonai_code/cli/features/observability.py +0 -0
  202. {praisonai_code-0.0.2 → praisonai_code-0.0.4}/praisonai_code/cli/features/ollama.py +0 -0
  203. {praisonai_code-0.0.2 → praisonai_code-0.0.4}/praisonai_code/cli/features/output_modes.py +0 -0
  204. {praisonai_code-0.0.2 → praisonai_code-0.0.4}/praisonai_code/cli/features/output_style.py +0 -0
  205. {praisonai_code-0.0.2 → praisonai_code-0.0.4}/praisonai_code/cli/features/package.py +0 -0
  206. {praisonai_code-0.0.2 → praisonai_code-0.0.4}/praisonai_code/cli/features/performance.py +0 -0
  207. {praisonai_code-0.0.2 → praisonai_code-0.0.4}/praisonai_code/cli/features/persistence.py +0 -0
  208. {praisonai_code-0.0.2 → praisonai_code-0.0.4}/praisonai_code/cli/features/profiler/__init__.py +0 -0
  209. {praisonai_code-0.0.2 → praisonai_code-0.0.4}/praisonai_code/cli/features/profiler/core.py +0 -0
  210. {praisonai_code-0.0.2 → praisonai_code-0.0.4}/praisonai_code/cli/features/profiler/optimizations.py +0 -0
  211. {praisonai_code-0.0.2 → praisonai_code-0.0.4}/praisonai_code/cli/features/profiler/suite.py +0 -0
  212. {praisonai_code-0.0.2 → praisonai_code-0.0.4}/praisonai_code/cli/features/queue/__init__.py +0 -0
  213. {praisonai_code-0.0.2 → praisonai_code-0.0.4}/praisonai_code/cli/features/queue/manager.py +0 -0
  214. {praisonai_code-0.0.2 → praisonai_code-0.0.4}/praisonai_code/cli/features/queue/models.py +0 -0
  215. {praisonai_code-0.0.2 → praisonai_code-0.0.4}/praisonai_code/cli/features/queue/persistence.py +0 -0
  216. {praisonai_code-0.0.2 → praisonai_code-0.0.4}/praisonai_code/cli/features/queue/scheduler.py +0 -0
  217. {praisonai_code-0.0.2 → praisonai_code-0.0.4}/praisonai_code/cli/features/queue/worker.py +0 -0
  218. {praisonai_code-0.0.2 → praisonai_code-0.0.4}/praisonai_code/cli/features/recipe.py +0 -0
  219. {praisonai_code-0.0.2 → praisonai_code-0.0.4}/praisonai_code/cli/features/recipe_creator.py +0 -0
  220. {praisonai_code-0.0.2 → praisonai_code-0.0.4}/praisonai_code/cli/features/recipe_optimizer.py +0 -0
  221. {praisonai_code-0.0.2 → praisonai_code-0.0.4}/praisonai_code/cli/features/recipe_prompts.py +0 -0
  222. {praisonai_code-0.0.2 → praisonai_code-0.0.4}/praisonai_code/cli/features/registry.py +0 -0
  223. {praisonai_code-0.0.2 → praisonai_code-0.0.4}/praisonai_code/cli/features/repo_map.py +0 -0
  224. {praisonai_code-0.0.2 → praisonai_code-0.0.4}/praisonai_code/cli/features/router.py +0 -0
  225. {praisonai_code-0.0.2 → praisonai_code-0.0.4}/praisonai_code/cli/features/safe_shell.py +0 -0
  226. {praisonai_code-0.0.2 → praisonai_code-0.0.4}/praisonai_code/cli/features/sandbox_cli.py +0 -0
  227. {praisonai_code-0.0.2 → praisonai_code-0.0.4}/praisonai_code/cli/features/sandbox_executor.py +0 -0
  228. {praisonai_code-0.0.2 → praisonai_code-0.0.4}/praisonai_code/cli/features/sdk_knowledge.py +0 -0
  229. {praisonai_code-0.0.2 → praisonai_code-0.0.4}/praisonai_code/cli/features/session.py +0 -0
  230. {praisonai_code-0.0.2 → praisonai_code-0.0.4}/praisonai_code/cli/features/session_checkpoints.py +0 -0
  231. {praisonai_code-0.0.2 → praisonai_code-0.0.4}/praisonai_code/cli/features/setup/__init__.py +0 -0
  232. {praisonai_code-0.0.2 → praisonai_code-0.0.4}/praisonai_code/cli/features/setup/handler.py +0 -0
  233. {praisonai_code-0.0.2 → praisonai_code-0.0.4}/praisonai_code/cli/features/setup/templates.py +0 -0
  234. {praisonai_code-0.0.2 → praisonai_code-0.0.4}/praisonai_code/cli/features/skills.py +0 -0
  235. {praisonai_code-0.0.2 → praisonai_code-0.0.4}/praisonai_code/cli/features/slash_commands.py +0 -0
  236. {praisonai_code-0.0.2 → praisonai_code-0.0.4}/praisonai_code/cli/features/telemetry.py +0 -0
  237. {praisonai_code-0.0.2 → praisonai_code-0.0.4}/praisonai_code/cli/features/templates.py +0 -0
  238. {praisonai_code-0.0.2 → praisonai_code-0.0.4}/praisonai_code/cli/features/thinking.py +0 -0
  239. {praisonai_code-0.0.2 → praisonai_code-0.0.4}/praisonai_code/cli/features/todo.py +0 -0
  240. {praisonai_code-0.0.2 → praisonai_code-0.0.4}/praisonai_code/cli/features/tools.py +0 -0
  241. {praisonai_code-0.0.2 → praisonai_code-0.0.4}/praisonai_code/cli/features/tui/__init__.py +0 -0
  242. {praisonai_code-0.0.2 → praisonai_code-0.0.4}/praisonai_code/cli/features/tui/app.py +0 -0
  243. {praisonai_code-0.0.2 → praisonai_code-0.0.4}/praisonai_code/cli/features/tui/cli.py +0 -0
  244. {praisonai_code-0.0.2 → praisonai_code-0.0.4}/praisonai_code/cli/features/tui/config.py +0 -0
  245. {praisonai_code-0.0.2 → praisonai_code-0.0.4}/praisonai_code/cli/features/tui/debug.py +0 -0
  246. {praisonai_code-0.0.2 → praisonai_code-0.0.4}/praisonai_code/cli/features/tui/events.py +0 -0
  247. {praisonai_code-0.0.2 → praisonai_code-0.0.4}/praisonai_code/cli/features/tui/mock_provider.py +0 -0
  248. {praisonai_code-0.0.2 → praisonai_code-0.0.4}/praisonai_code/cli/features/tui/orchestrator.py +0 -0
  249. {praisonai_code-0.0.2 → praisonai_code-0.0.4}/praisonai_code/cli/features/tui/screens/__init__.py +0 -0
  250. {praisonai_code-0.0.2 → praisonai_code-0.0.4}/praisonai_code/cli/features/tui/screens/help.py +0 -0
  251. {praisonai_code-0.0.2 → praisonai_code-0.0.4}/praisonai_code/cli/features/tui/screens/main.py +0 -0
  252. {praisonai_code-0.0.2 → praisonai_code-0.0.4}/praisonai_code/cli/features/tui/screens/queue.py +0 -0
  253. {praisonai_code-0.0.2 → praisonai_code-0.0.4}/praisonai_code/cli/features/tui/screens/session.py +0 -0
  254. {praisonai_code-0.0.2 → praisonai_code-0.0.4}/praisonai_code/cli/features/tui/screens/settings.py +0 -0
  255. {praisonai_code-0.0.2 → praisonai_code-0.0.4}/praisonai_code/cli/features/tui/session_store.py +0 -0
  256. {praisonai_code-0.0.2 → praisonai_code-0.0.4}/praisonai_code/cli/features/tui/widgets/__init__.py +0 -0
  257. {praisonai_code-0.0.2 → praisonai_code-0.0.4}/praisonai_code/cli/features/tui/widgets/chat.py +0 -0
  258. {praisonai_code-0.0.2 → praisonai_code-0.0.4}/praisonai_code/cli/features/tui/widgets/command_popup.py +0 -0
  259. {praisonai_code-0.0.2 → praisonai_code-0.0.4}/praisonai_code/cli/features/tui/widgets/composer.py +0 -0
  260. {praisonai_code-0.0.2 → praisonai_code-0.0.4}/praisonai_code/cli/features/tui/widgets/file_popup.py +0 -0
  261. {praisonai_code-0.0.2 → praisonai_code-0.0.4}/praisonai_code/cli/features/tui/widgets/queue_panel.py +0 -0
  262. {praisonai_code-0.0.2 → praisonai_code-0.0.4}/praisonai_code/cli/features/tui/widgets/status.py +0 -0
  263. {praisonai_code-0.0.2 → praisonai_code-0.0.4}/praisonai_code/cli/features/tui/widgets/tool_panel.py +0 -0
  264. {praisonai_code-0.0.2 → praisonai_code-0.0.4}/praisonai_code/cli/features/wizard.py +0 -0
  265. {praisonai_code-0.0.2 → praisonai_code-0.0.4}/praisonai_code/cli/features/workflow.py +0 -0
  266. {praisonai_code-0.0.2 → praisonai_code-0.0.4}/praisonai_code/cli/features/yaml_utils.py +0 -0
  267. {praisonai_code-0.0.2 → praisonai_code-0.0.4}/praisonai_code/cli/interactive/__init__.py +0 -0
  268. {praisonai_code-0.0.2 → praisonai_code-0.0.4}/praisonai_code/cli/interactive/async_tui.py +0 -0
  269. {praisonai_code-0.0.2 → praisonai_code-0.0.4}/praisonai_code/cli/interactive/config.py +0 -0
  270. {praisonai_code-0.0.2 → praisonai_code-0.0.4}/praisonai_code/cli/interactive/core.py +0 -0
  271. {praisonai_code-0.0.2 → praisonai_code-0.0.4}/praisonai_code/cli/interactive/events.py +0 -0
  272. {praisonai_code-0.0.2 → praisonai_code-0.0.4}/praisonai_code/cli/interactive/frontends/__init__.py +0 -0
  273. {praisonai_code-0.0.2 → praisonai_code-0.0.4}/praisonai_code/cli/interactive/frontends/rich_frontend.py +0 -0
  274. {praisonai_code-0.0.2 → praisonai_code-0.0.4}/praisonai_code/cli/interactive/frontends/textual_frontend.py +0 -0
  275. {praisonai_code-0.0.2 → praisonai_code-0.0.4}/praisonai_code/cli/interactive/praison_io.py +0 -0
  276. {praisonai_code-0.0.2 → praisonai_code-0.0.4}/praisonai_code/cli/interactive/repl.py +0 -0
  277. {praisonai_code-0.0.2 → praisonai_code-0.0.4}/praisonai_code/cli/interactive/split_tui.py +0 -0
  278. {praisonai_code-0.0.2 → praisonai_code-0.0.4}/praisonai_code/cli/interactive/tui_app.py +0 -0
  279. {praisonai_code-0.0.2 → praisonai_code-0.0.4}/praisonai_code/cli/langfuse_client.py +0 -0
  280. {praisonai_code-0.0.2 → praisonai_code-0.0.4}/praisonai_code/cli/main.py +0 -0
  281. {praisonai_code-0.0.2 → praisonai_code-0.0.4}/praisonai_code/cli/output/__init__.py +0 -0
  282. {praisonai_code-0.0.2 → praisonai_code-0.0.4}/praisonai_code/cli/output/console.py +0 -0
  283. {praisonai_code-0.0.2 → praisonai_code-0.0.4}/praisonai_code/cli/output/event_bridge.py +0 -0
  284. {praisonai_code-0.0.2 → praisonai_code-0.0.4}/praisonai_code/cli/schedule_cli.py +0 -0
  285. {praisonai_code-0.0.2 → praisonai_code-0.0.4}/praisonai_code/cli/schema_provider.py +0 -0
  286. {praisonai_code-0.0.2 → praisonai_code-0.0.4}/praisonai_code/cli/session/__init__.py +0 -0
  287. {praisonai_code-0.0.2 → praisonai_code-0.0.4}/praisonai_code/cli/session/resume.py +0 -0
  288. {praisonai_code-0.0.2 → praisonai_code-0.0.4}/praisonai_code/cli/session/unified.py +0 -0
  289. {praisonai_code-0.0.2 → praisonai_code-0.0.4}/praisonai_code/cli/state/__init__.py +0 -0
  290. {praisonai_code-0.0.2 → praisonai_code-0.0.4}/praisonai_code/cli/state/identifiers.py +0 -0
  291. {praisonai_code-0.0.2 → praisonai_code-0.0.4}/praisonai_code/cli/state/project_sessions.py +0 -0
  292. {praisonai_code-0.0.2 → praisonai_code-0.0.4}/praisonai_code/cli/state/sessions.py +0 -0
  293. {praisonai_code-0.0.2 → praisonai_code-0.0.4}/praisonai_code/cli/ui/__init__.py +0 -0
  294. {praisonai_code-0.0.2 → praisonai_code-0.0.4}/praisonai_code/cli/ui/config.py +0 -0
  295. {praisonai_code-0.0.2 → praisonai_code-0.0.4}/praisonai_code/cli/ui/events.py +0 -0
  296. {praisonai_code-0.0.2 → praisonai_code-0.0.4}/praisonai_code/cli/ui/mg_backend.py +0 -0
  297. {praisonai_code-0.0.2 → praisonai_code-0.0.4}/praisonai_code/cli/ui/plain.py +0 -0
  298. {praisonai_code-0.0.2 → praisonai_code-0.0.4}/praisonai_code/cli/ui/rich_backend.py +0 -0
  299. {praisonai_code-0.0.2 → praisonai_code-0.0.4}/praisonai_code/cli/unified_schema.py +0 -0
  300. {praisonai_code-0.0.2 → praisonai_code-0.0.4}/praisonai_code/cli/utils/env_utils.py +0 -0
  301. {praisonai_code-0.0.2 → praisonai_code-0.0.4}/praisonai_code/cli/utils/project.py +0 -0
  302. {praisonai_code-0.0.2 → praisonai_code-0.0.4}/praisonai_code/cli_backends/__init__.py +0 -0
  303. {praisonai_code-0.0.2 → praisonai_code-0.0.4}/praisonai_code/cli_backends/claude.py +0 -0
  304. {praisonai_code-0.0.2 → praisonai_code-0.0.4}/praisonai_code/cli_backends/registry.py +0 -0
  305. {praisonai_code-0.0.2 → praisonai_code-0.0.4}/praisonai_code/runtime/__init__.py +0 -0
  306. {praisonai_code-0.0.2 → praisonai_code-0.0.4}/praisonai_code/runtime/__main__.py +0 -0
  307. {praisonai_code-0.0.2 → praisonai_code-0.0.4}/praisonai_code/runtime/client.py +0 -0
  308. {praisonai_code-0.0.2 → praisonai_code-0.0.4}/praisonai_code/runtime/descriptor.py +0 -0
  309. {praisonai_code-0.0.2 → praisonai_code-0.0.4}/praisonai_code/runtime/server.py +0 -0
  310. {praisonai_code-0.0.2 → praisonai_code-0.0.4}/praisonai_code.egg-info/SOURCES.txt +0 -0
  311. {praisonai_code-0.0.2 → praisonai_code-0.0.4}/praisonai_code.egg-info/dependency_links.txt +0 -0
  312. {praisonai_code-0.0.2 → praisonai_code-0.0.4}/praisonai_code.egg-info/requires.txt +0 -0
  313. {praisonai_code-0.0.2 → praisonai_code-0.0.4}/praisonai_code.egg-info/top_level.txt +0 -0
  314. {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.2
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
- Migration in progress. `runtime/` and `cli_backends/` have moved into
34
- `praisonai_code` (step C1); the remaining terminal-agent modules follow
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
- > **Migration note (C1):** `cli_backends/registry.py` still imports
62
- > `PluginRegistry` from the `praisonai` main package (same "keep main-package
63
- > import" pattern as `runtime/descriptor.py`'s `from praisonai.version`).
64
- > `praisonai-code` is wired via an editable path dependency and `praisonai` is
65
- > always present at runtime during migration, so this residual back-import is a
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 (development)
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` is **not** published standalone to PyPI during migration;
81
- `praisonai` remains the user-facing install.
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
- Migration in progress. `runtime/` and `cli_backends/` have moved into
12
- `praisonai_code` (step C1); the remaining terminal-agent modules follow
13
- incrementally in steps C2–C6 (see issue #2512):
14
-
15
- | Step | Scope |
16
- |------|-------|
17
- | C0 | Scaffold |
18
- | C1 | `runtime/` + `cli_backends/` |
19
- | C2 | `interactive/`, `execution/`, `ui/`, `output/`, `state/` |
20
- | C3 | Agentic commands |
21
- | C4 | Agentic features |
22
- | C5 | `main.py`, `app.py`, config/session/utils + shims |
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
- > **Migration note (C1):** `cli_backends/registry.py` still imports
40
- > `PluginRegistry` from the `praisonai` main package (same "keep main-package
41
- > import" pattern as `runtime/descriptor.py`'s `from praisonai.version`).
42
- > `praisonai-code` is wired via an editable path dependency and `praisonai` is
43
- > always present at runtime during migration, so this residual back-import is a
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 (development)
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` is **not** published standalone to PyPI during migration;
59
- `praisonai` remains the user-facing install.
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
- # Moltbot-inspired commands
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
- commands.update(_LAZY_COMMANDS.keys())
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
- module = importlib.import_module(module_path, __package__)
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.2
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
- Migration in progress. `runtime/` and `cli_backends/` have moved into
34
- `praisonai_code` (step C1); the remaining terminal-agent modules follow
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
- > **Migration note (C1):** `cli_backends/registry.py` still imports
62
- > `PluginRegistry` from the `praisonai` main package (same "keep main-package
63
- > import" pattern as `runtime/descriptor.py`'s `from praisonai.version`).
64
- > `praisonai-code` is wired via an editable path dependency and `praisonai` is
65
- > always present at runtime during migration, so this residual back-import is a
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 (development)
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` is **not** published standalone to PyPI during migration;
81
- `praisonai` remains the user-facing install.
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.2"
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"}