mcli-framework 7.8.4__tar.gz → 7.8.5__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.

Potentially problematic release.


This version of mcli-framework might be problematic. Click here for more details.

Files changed (334) hide show
  1. {mcli_framework-7.8.4 → mcli_framework-7.8.5}/PKG-INFO +1 -1
  2. {mcli_framework-7.8.4 → mcli_framework-7.8.5}/pyproject.toml +1 -1
  3. {mcli_framework-7.8.4 → mcli_framework-7.8.5}/src/mcli/app/main.py +5 -21
  4. mcli_framework-7.8.5/src/mcli/app/model_cmd.py +66 -0
  5. {mcli_framework-7.8.4 → mcli_framework-7.8.5}/src/mcli_framework.egg-info/PKG-INFO +1 -1
  6. {mcli_framework-7.8.4 → mcli_framework-7.8.5}/src/mcli_framework.egg-info/SOURCES.txt +0 -3
  7. {mcli_framework-7.8.4 → mcli_framework-7.8.5}/tests/e2e/test_new_user_workflow.py +15 -12
  8. {mcli_framework-7.8.4 → mcli_framework-7.8.5}/tests/integration/test_module_imports.py +4 -3
  9. mcli_framework-7.8.4/src/mcli/app/chat_cmd.py +0 -42
  10. mcli_framework-7.8.4/src/mcli/app/model_cmd.py +0 -481
  11. mcli_framework-7.8.4/src/mcli/test/test_cmd.py +0 -20
  12. mcli_framework-7.8.4/tests/cli/test_chat_cmd.py +0 -113
  13. {mcli_framework-7.8.4 → mcli_framework-7.8.5}/.github/dependabot.yml +0 -0
  14. {mcli_framework-7.8.4 → mcli_framework-7.8.5}/.github/workflows/build.yml +0 -0
  15. {mcli_framework-7.8.4 → mcli_framework-7.8.5}/.github/workflows/ci.yml +0 -0
  16. {mcli_framework-7.8.4 → mcli_framework-7.8.5}/.github/workflows/ml-pipeline.yml +0 -0
  17. {mcli_framework-7.8.4 → mcli_framework-7.8.5}/.github/workflows/publish-self-hosted.yml +0 -0
  18. {mcli_framework-7.8.4 → mcli_framework-7.8.5}/.github/workflows/publish.yml +0 -0
  19. {mcli_framework-7.8.4 → mcli_framework-7.8.5}/.github/workflows/release.yml +0 -0
  20. {mcli_framework-7.8.4 → mcli_framework-7.8.5}/.github/workflows/security.yml +0 -0
  21. {mcli_framework-7.8.4 → mcli_framework-7.8.5}/.github/workflows/test.yml +0 -0
  22. {mcli_framework-7.8.4 → mcli_framework-7.8.5}/LICENSE +0 -0
  23. {mcli_framework-7.8.4 → mcli_framework-7.8.5}/MANIFEST.in +0 -0
  24. {mcli_framework-7.8.4 → mcli_framework-7.8.5}/README.md +0 -0
  25. {mcli_framework-7.8.4 → mcli_framework-7.8.5}/mcli_rust/Cargo.toml +0 -0
  26. {mcli_framework-7.8.4 → mcli_framework-7.8.5}/mcli_rust/src/command_parser.rs +0 -0
  27. {mcli_framework-7.8.4 → mcli_framework-7.8.5}/mcli_rust/src/file_watcher.rs +0 -0
  28. {mcli_framework-7.8.4 → mcli_framework-7.8.5}/mcli_rust/src/lib.rs +0 -0
  29. {mcli_framework-7.8.4 → mcli_framework-7.8.5}/mcli_rust/src/process_manager.rs +0 -0
  30. {mcli_framework-7.8.4 → mcli_framework-7.8.5}/mcli_rust/src/tfidf.rs +0 -0
  31. {mcli_framework-7.8.4 → mcli_framework-7.8.5}/setup.cfg +0 -0
  32. {mcli_framework-7.8.4 → mcli_framework-7.8.5}/src/mcli/app/commands_cmd.py +0 -0
  33. {mcli_framework-7.8.4 → mcli_framework-7.8.5}/src/mcli/app/completion_helpers.py +0 -0
  34. {mcli_framework-7.8.4 → mcli_framework-7.8.5}/src/mcli/app/model/model.py +0 -0
  35. {mcli_framework-7.8.4 → mcli_framework-7.8.5}/src/mcli/app/video/video.py +0 -0
  36. {mcli_framework-7.8.4 → mcli_framework-7.8.5}/src/mcli/chat/chat.py +0 -0
  37. {mcli_framework-7.8.4 → mcli_framework-7.8.5}/src/mcli/chat/command_rag.py +0 -0
  38. {mcli_framework-7.8.4 → mcli_framework-7.8.5}/src/mcli/chat/enhanced_chat.py +0 -0
  39. {mcli_framework-7.8.4 → mcli_framework-7.8.5}/src/mcli/chat/system_controller.py +0 -0
  40. {mcli_framework-7.8.4 → mcli_framework-7.8.5}/src/mcli/chat/system_integration.py +0 -0
  41. {mcli_framework-7.8.4 → mcli_framework-7.8.5}/src/mcli/cli.py +0 -0
  42. {mcli_framework-7.8.4 → mcli_framework-7.8.5}/src/mcli/config.toml +0 -0
  43. {mcli_framework-7.8.4 → mcli_framework-7.8.5}/src/mcli/lib/api/api.py +0 -0
  44. {mcli_framework-7.8.4 → mcli_framework-7.8.5}/src/mcli/lib/api/daemon_client.py +0 -0
  45. {mcli_framework-7.8.4 → mcli_framework-7.8.5}/src/mcli/lib/api/daemon_client_local.py +0 -0
  46. {mcli_framework-7.8.4 → mcli_framework-7.8.5}/src/mcli/lib/api/daemon_decorator.py +0 -0
  47. {mcli_framework-7.8.4 → mcli_framework-7.8.5}/src/mcli/lib/api/mcli_decorators.py +0 -0
  48. {mcli_framework-7.8.4 → mcli_framework-7.8.5}/src/mcli/lib/auth/auth.py +0 -0
  49. {mcli_framework-7.8.4 → mcli_framework-7.8.5}/src/mcli/lib/auth/aws_manager.py +0 -0
  50. {mcli_framework-7.8.4 → mcli_framework-7.8.5}/src/mcli/lib/auth/azure_manager.py +0 -0
  51. {mcli_framework-7.8.4 → mcli_framework-7.8.5}/src/mcli/lib/auth/credential_manager.py +0 -0
  52. {mcli_framework-7.8.4 → mcli_framework-7.8.5}/src/mcli/lib/auth/gcp_manager.py +0 -0
  53. {mcli_framework-7.8.4 → mcli_framework-7.8.5}/src/mcli/lib/auth/key_manager.py +0 -0
  54. {mcli_framework-7.8.4 → mcli_framework-7.8.5}/src/mcli/lib/auth/mcli_manager.py +0 -0
  55. {mcli_framework-7.8.4 → mcli_framework-7.8.5}/src/mcli/lib/auth/token_manager.py +0 -0
  56. {mcli_framework-7.8.4 → mcli_framework-7.8.5}/src/mcli/lib/auth/token_util.py +0 -0
  57. {mcli_framework-7.8.4 → mcli_framework-7.8.5}/src/mcli/lib/config/config.py +0 -0
  58. {mcli_framework-7.8.4 → mcli_framework-7.8.5}/src/mcli/lib/custom_commands.py +0 -0
  59. {mcli_framework-7.8.4 → mcli_framework-7.8.5}/src/mcli/lib/discovery/__init__.py +0 -0
  60. {mcli_framework-7.8.4 → mcli_framework-7.8.5}/src/mcli/lib/discovery/command_discovery.py +0 -0
  61. {mcli_framework-7.8.4 → mcli_framework-7.8.5}/src/mcli/lib/erd/erd.py +0 -0
  62. {mcli_framework-7.8.4 → mcli_framework-7.8.5}/src/mcli/lib/erd/generate_graph.py +0 -0
  63. {mcli_framework-7.8.4 → mcli_framework-7.8.5}/src/mcli/lib/files/files.py +0 -0
  64. {mcli_framework-7.8.4 → mcli_framework-7.8.5}/src/mcli/lib/fs/fs.py +0 -0
  65. {mcli_framework-7.8.4 → mcli_framework-7.8.5}/src/mcli/lib/lib.py +0 -0
  66. {mcli_framework-7.8.4 → mcli_framework-7.8.5}/src/mcli/lib/logger/logger.py +0 -0
  67. {mcli_framework-7.8.4 → mcli_framework-7.8.5}/src/mcli/lib/paths.py +0 -0
  68. {mcli_framework-7.8.4 → mcli_framework-7.8.5}/src/mcli/lib/performance/optimizer.py +0 -0
  69. {mcli_framework-7.8.4 → mcli_framework-7.8.5}/src/mcli/lib/performance/rust_bridge.py +0 -0
  70. {mcli_framework-7.8.4 → mcli_framework-7.8.5}/src/mcli/lib/performance/uvloop_config.py +0 -0
  71. {mcli_framework-7.8.4 → mcli_framework-7.8.5}/src/mcli/lib/pickles/pickles.py +0 -0
  72. {mcli_framework-7.8.4 → mcli_framework-7.8.5}/src/mcli/lib/search/cached_vectorizer.py +0 -0
  73. {mcli_framework-7.8.4 → mcli_framework-7.8.5}/src/mcli/lib/services/data_pipeline.py +0 -0
  74. {mcli_framework-7.8.4 → mcli_framework-7.8.5}/src/mcli/lib/services/lsh_client.py +0 -0
  75. {mcli_framework-7.8.4 → mcli_framework-7.8.5}/src/mcli/lib/services/redis_service.py +0 -0
  76. {mcli_framework-7.8.4 → mcli_framework-7.8.5}/src/mcli/lib/shell/shell.py +0 -0
  77. {mcli_framework-7.8.4 → mcli_framework-7.8.5}/src/mcli/lib/toml/toml.py +0 -0
  78. {mcli_framework-7.8.4 → mcli_framework-7.8.5}/src/mcli/lib/ui/styling.py +0 -0
  79. {mcli_framework-7.8.4 → mcli_framework-7.8.5}/src/mcli/lib/ui/visual_effects.py +0 -0
  80. {mcli_framework-7.8.4 → mcli_framework-7.8.5}/src/mcli/lib/watcher/watcher.py +0 -0
  81. {mcli_framework-7.8.4 → mcli_framework-7.8.5}/src/mcli/ml/api/app.py +0 -0
  82. {mcli_framework-7.8.4 → mcli_framework-7.8.5}/src/mcli/ml/api/middleware.py +0 -0
  83. {mcli_framework-7.8.4 → mcli_framework-7.8.5}/src/mcli/ml/api/routers/admin_router.py +0 -0
  84. {mcli_framework-7.8.4 → mcli_framework-7.8.5}/src/mcli/ml/api/routers/auth_router.py +0 -0
  85. {mcli_framework-7.8.4 → mcli_framework-7.8.5}/src/mcli/ml/api/routers/backtest_router.py +0 -0
  86. {mcli_framework-7.8.4 → mcli_framework-7.8.5}/src/mcli/ml/api/routers/data_router.py +0 -0
  87. {mcli_framework-7.8.4 → mcli_framework-7.8.5}/src/mcli/ml/api/routers/model_router.py +0 -0
  88. {mcli_framework-7.8.4 → mcli_framework-7.8.5}/src/mcli/ml/api/routers/monitoring_router.py +0 -0
  89. {mcli_framework-7.8.4 → mcli_framework-7.8.5}/src/mcli/ml/api/routers/portfolio_router.py +0 -0
  90. {mcli_framework-7.8.4 → mcli_framework-7.8.5}/src/mcli/ml/api/routers/prediction_router.py +0 -0
  91. {mcli_framework-7.8.4 → mcli_framework-7.8.5}/src/mcli/ml/api/routers/trade_router.py +0 -0
  92. {mcli_framework-7.8.4 → mcli_framework-7.8.5}/src/mcli/ml/api/routers/websocket_router.py +0 -0
  93. {mcli_framework-7.8.4 → mcli_framework-7.8.5}/src/mcli/ml/api/schemas.py +0 -0
  94. {mcli_framework-7.8.4 → mcli_framework-7.8.5}/src/mcli/ml/auth/auth_manager.py +0 -0
  95. {mcli_framework-7.8.4 → mcli_framework-7.8.5}/src/mcli/ml/auth/models.py +0 -0
  96. {mcli_framework-7.8.4 → mcli_framework-7.8.5}/src/mcli/ml/auth/permissions.py +0 -0
  97. {mcli_framework-7.8.4 → mcli_framework-7.8.5}/src/mcli/ml/backtesting/backtest_engine.py +0 -0
  98. {mcli_framework-7.8.4 → mcli_framework-7.8.5}/src/mcli/ml/backtesting/performance_metrics.py +0 -0
  99. {mcli_framework-7.8.4 → mcli_framework-7.8.5}/src/mcli/ml/cache.py +0 -0
  100. {mcli_framework-7.8.4 → mcli_framework-7.8.5}/src/mcli/ml/cli/main.py +0 -0
  101. {mcli_framework-7.8.4 → mcli_framework-7.8.5}/src/mcli/ml/config/settings.py +0 -0
  102. {mcli_framework-7.8.4 → mcli_framework-7.8.5}/src/mcli/ml/configs/dvc_config.py +0 -0
  103. {mcli_framework-7.8.4 → mcli_framework-7.8.5}/src/mcli/ml/configs/mlflow_config.py +0 -0
  104. {mcli_framework-7.8.4 → mcli_framework-7.8.5}/src/mcli/ml/configs/mlops_manager.py +0 -0
  105. {mcli_framework-7.8.4 → mcli_framework-7.8.5}/src/mcli/ml/dashboard/app.py +0 -0
  106. {mcli_framework-7.8.4 → mcli_framework-7.8.5}/src/mcli/ml/dashboard/app_integrated.py +0 -0
  107. {mcli_framework-7.8.4 → mcli_framework-7.8.5}/src/mcli/ml/dashboard/app_supabase.py +0 -0
  108. {mcli_framework-7.8.4 → mcli_framework-7.8.5}/src/mcli/ml/dashboard/app_training.py +0 -0
  109. {mcli_framework-7.8.4 → mcli_framework-7.8.5}/src/mcli/ml/dashboard/cli.py +0 -0
  110. {mcli_framework-7.8.4 → mcli_framework-7.8.5}/src/mcli/ml/dashboard/common.py +0 -0
  111. {mcli_framework-7.8.4 → mcli_framework-7.8.5}/src/mcli/ml/dashboard/components/charts.py +0 -0
  112. {mcli_framework-7.8.4 → mcli_framework-7.8.5}/src/mcli/ml/dashboard/components/metrics.py +0 -0
  113. {mcli_framework-7.8.4 → mcli_framework-7.8.5}/src/mcli/ml/dashboard/components/tables.py +0 -0
  114. {mcli_framework-7.8.4 → mcli_framework-7.8.5}/src/mcli/ml/dashboard/overview.py +0 -0
  115. {mcli_framework-7.8.4 → mcli_framework-7.8.5}/src/mcli/ml/dashboard/pages/cicd.py +0 -0
  116. {mcli_framework-7.8.4 → mcli_framework-7.8.5}/src/mcli/ml/dashboard/pages/debug_dependencies.py +0 -0
  117. {mcli_framework-7.8.4 → mcli_framework-7.8.5}/src/mcli/ml/dashboard/pages/gravity_viz.py +0 -0
  118. {mcli_framework-7.8.4 → mcli_framework-7.8.5}/src/mcli/ml/dashboard/pages/monte_carlo_predictions.py +0 -0
  119. {mcli_framework-7.8.4 → mcli_framework-7.8.5}/src/mcli/ml/dashboard/pages/predictions_enhanced.py +0 -0
  120. {mcli_framework-7.8.4 → mcli_framework-7.8.5}/src/mcli/ml/dashboard/pages/scrapers_and_logs.py +0 -0
  121. {mcli_framework-7.8.4 → mcli_framework-7.8.5}/src/mcli/ml/dashboard/pages/test_portfolio.py +0 -0
  122. {mcli_framework-7.8.4 → mcli_framework-7.8.5}/src/mcli/ml/dashboard/pages/trading.py +0 -0
  123. {mcli_framework-7.8.4 → mcli_framework-7.8.5}/src/mcli/ml/dashboard/pages/workflows.py +0 -0
  124. {mcli_framework-7.8.4 → mcli_framework-7.8.5}/src/mcli/ml/dashboard/streamlit_extras_utils.py +0 -0
  125. {mcli_framework-7.8.4 → mcli_framework-7.8.5}/src/mcli/ml/dashboard/styles.py +0 -0
  126. {mcli_framework-7.8.4 → mcli_framework-7.8.5}/src/mcli/ml/dashboard/utils.py +0 -0
  127. {mcli_framework-7.8.4 → mcli_framework-7.8.5}/src/mcli/ml/dashboard/warning_suppression.py +0 -0
  128. {mcli_framework-7.8.4 → mcli_framework-7.8.5}/src/mcli/ml/data_ingestion/api_connectors.py +0 -0
  129. {mcli_framework-7.8.4 → mcli_framework-7.8.5}/src/mcli/ml/data_ingestion/data_pipeline.py +0 -0
  130. {mcli_framework-7.8.4 → mcli_framework-7.8.5}/src/mcli/ml/data_ingestion/stream_processor.py +0 -0
  131. {mcli_framework-7.8.4 → mcli_framework-7.8.5}/src/mcli/ml/database/migrations/env.py +0 -0
  132. {mcli_framework-7.8.4 → mcli_framework-7.8.5}/src/mcli/ml/database/models.py +0 -0
  133. {mcli_framework-7.8.4 → mcli_framework-7.8.5}/src/mcli/ml/database/session.py +0 -0
  134. {mcli_framework-7.8.4 → mcli_framework-7.8.5}/src/mcli/ml/experimentation/ab_testing.py +0 -0
  135. {mcli_framework-7.8.4 → mcli_framework-7.8.5}/src/mcli/ml/features/ensemble_features.py +0 -0
  136. {mcli_framework-7.8.4 → mcli_framework-7.8.5}/src/mcli/ml/features/political_features.py +0 -0
  137. {mcli_framework-7.8.4 → mcli_framework-7.8.5}/src/mcli/ml/features/recommendation_engine.py +0 -0
  138. {mcli_framework-7.8.4 → mcli_framework-7.8.5}/src/mcli/ml/features/stock_features.py +0 -0
  139. {mcli_framework-7.8.4 → mcli_framework-7.8.5}/src/mcli/ml/features/test_feature_engineering.py +0 -0
  140. {mcli_framework-7.8.4 → mcli_framework-7.8.5}/src/mcli/ml/logging.py +0 -0
  141. {mcli_framework-7.8.4 → mcli_framework-7.8.5}/src/mcli/ml/mlops/data_versioning.py +0 -0
  142. {mcli_framework-7.8.4 → mcli_framework-7.8.5}/src/mcli/ml/mlops/experiment_tracker.py +0 -0
  143. {mcli_framework-7.8.4 → mcli_framework-7.8.5}/src/mcli/ml/mlops/model_serving.py +0 -0
  144. {mcli_framework-7.8.4 → mcli_framework-7.8.5}/src/mcli/ml/mlops/pipeline_orchestrator.py +0 -0
  145. {mcli_framework-7.8.4 → mcli_framework-7.8.5}/src/mcli/ml/models/base_models.py +0 -0
  146. {mcli_framework-7.8.4 → mcli_framework-7.8.5}/src/mcli/ml/models/ensemble_models.py +0 -0
  147. {mcli_framework-7.8.4 → mcli_framework-7.8.5}/src/mcli/ml/models/recommendation_models.py +0 -0
  148. {mcli_framework-7.8.4 → mcli_framework-7.8.5}/src/mcli/ml/models/test_models.py +0 -0
  149. {mcli_framework-7.8.4 → mcli_framework-7.8.5}/src/mcli/ml/monitoring/drift_detection.py +0 -0
  150. {mcli_framework-7.8.4 → mcli_framework-7.8.5}/src/mcli/ml/monitoring/metrics.py +0 -0
  151. {mcli_framework-7.8.4 → mcli_framework-7.8.5}/src/mcli/ml/optimization/portfolio_optimizer.py +0 -0
  152. {mcli_framework-7.8.4 → mcli_framework-7.8.5}/src/mcli/ml/predictions/monte_carlo.py +0 -0
  153. {mcli_framework-7.8.4 → mcli_framework-7.8.5}/src/mcli/ml/predictions/prediction_engine.py +0 -0
  154. {mcli_framework-7.8.4 → mcli_framework-7.8.5}/src/mcli/ml/preprocessing/data_cleaners.py +0 -0
  155. {mcli_framework-7.8.4 → mcli_framework-7.8.5}/src/mcli/ml/preprocessing/feature_extractors.py +0 -0
  156. {mcli_framework-7.8.4 → mcli_framework-7.8.5}/src/mcli/ml/preprocessing/ml_pipeline.py +0 -0
  157. {mcli_framework-7.8.4 → mcli_framework-7.8.5}/src/mcli/ml/preprocessing/politician_trading_preprocessor.py +0 -0
  158. {mcli_framework-7.8.4 → mcli_framework-7.8.5}/src/mcli/ml/preprocessing/test_preprocessing.py +0 -0
  159. {mcli_framework-7.8.4 → mcli_framework-7.8.5}/src/mcli/ml/scripts/populate_sample_data.py +0 -0
  160. {mcli_framework-7.8.4 → mcli_framework-7.8.5}/src/mcli/ml/tasks.py +0 -0
  161. {mcli_framework-7.8.4 → mcli_framework-7.8.5}/src/mcli/ml/tests/test_integration.py +0 -0
  162. {mcli_framework-7.8.4 → mcli_framework-7.8.5}/src/mcli/ml/tests/test_training_dashboard.py +0 -0
  163. {mcli_framework-7.8.4 → mcli_framework-7.8.5}/src/mcli/ml/trading/alpaca_client.py +0 -0
  164. {mcli_framework-7.8.4 → mcli_framework-7.8.5}/src/mcli/ml/trading/migrations.py +0 -0
  165. {mcli_framework-7.8.4 → mcli_framework-7.8.5}/src/mcli/ml/trading/models.py +0 -0
  166. {mcli_framework-7.8.4 → mcli_framework-7.8.5}/src/mcli/ml/trading/paper_trading.py +0 -0
  167. {mcli_framework-7.8.4 → mcli_framework-7.8.5}/src/mcli/ml/trading/risk_management.py +0 -0
  168. {mcli_framework-7.8.4 → mcli_framework-7.8.5}/src/mcli/ml/trading/trading_service.py +0 -0
  169. {mcli_framework-7.8.4 → mcli_framework-7.8.5}/src/mcli/ml/training/train_model.py +0 -0
  170. {mcli_framework-7.8.4 → mcli_framework-7.8.5}/src/mcli/mygroup/test_cmd.py +0 -0
  171. {mcli_framework-7.8.4 → mcli_framework-7.8.5}/src/mcli/public/oi/oi.py +0 -0
  172. {mcli_framework-7.8.4 → mcli_framework-7.8.5}/src/mcli/public/public.py +0 -0
  173. {mcli_framework-7.8.4 → mcli_framework-7.8.5}/src/mcli/self/completion_cmd.py +0 -0
  174. {mcli_framework-7.8.4 → mcli_framework-7.8.5}/src/mcli/self/logs_cmd.py +0 -0
  175. {mcli_framework-7.8.4 → mcli_framework-7.8.5}/src/mcli/self/redis_cmd.py +0 -0
  176. {mcli_framework-7.8.4 → mcli_framework-7.8.5}/src/mcli/self/self_cmd.py +0 -0
  177. {mcli_framework-7.8.4 → mcli_framework-7.8.5}/src/mcli/self/store_cmd.py +0 -0
  178. {mcli_framework-7.8.4 → mcli_framework-7.8.5}/src/mcli/self/test_cmd.py +0 -0
  179. {mcli_framework-7.8.4 → mcli_framework-7.8.5}/src/mcli/self/visual_cmd.py +0 -0
  180. {mcli_framework-7.8.4 → mcli_framework-7.8.5}/src/mcli/workflow/daemon/async_command_database.py +0 -0
  181. {mcli_framework-7.8.4 → mcli_framework-7.8.5}/src/mcli/workflow/daemon/async_process_manager.py +0 -0
  182. {mcli_framework-7.8.4 → mcli_framework-7.8.5}/src/mcli/workflow/daemon/client.py +0 -0
  183. {mcli_framework-7.8.4 → mcli_framework-7.8.5}/src/mcli/workflow/daemon/daemon.py +0 -0
  184. {mcli_framework-7.8.4 → mcli_framework-7.8.5}/src/mcli/workflow/daemon/daemon_api.py +0 -0
  185. {mcli_framework-7.8.4 → mcli_framework-7.8.5}/src/mcli/workflow/daemon/enhanced_daemon.py +0 -0
  186. {mcli_framework-7.8.4 → mcli_framework-7.8.5}/src/mcli/workflow/daemon/process_cli.py +0 -0
  187. {mcli_framework-7.8.4 → mcli_framework-7.8.5}/src/mcli/workflow/daemon/process_manager.py +0 -0
  188. {mcli_framework-7.8.4 → mcli_framework-7.8.5}/src/mcli/workflow/daemon/test_daemon.py +0 -0
  189. {mcli_framework-7.8.4 → mcli_framework-7.8.5}/src/mcli/workflow/dashboard/dashboard_cmd.py +0 -0
  190. {mcli_framework-7.8.4 → mcli_framework-7.8.5}/src/mcli/workflow/docker/docker.py +0 -0
  191. {mcli_framework-7.8.4 → mcli_framework-7.8.5}/src/mcli/workflow/gcloud/config.toml +0 -0
  192. {mcli_framework-7.8.4 → mcli_framework-7.8.5}/src/mcli/workflow/gcloud/gcloud.py +0 -0
  193. {mcli_framework-7.8.4 → mcli_framework-7.8.5}/src/mcli/workflow/git_commit/ai_service.py +0 -0
  194. {mcli_framework-7.8.4 → mcli_framework-7.8.5}/src/mcli/workflow/lsh_integration.py +0 -0
  195. {mcli_framework-7.8.4 → mcli_framework-7.8.5}/src/mcli/workflow/model_service/client.py +0 -0
  196. {mcli_framework-7.8.4 → mcli_framework-7.8.5}/src/mcli/workflow/model_service/download_and_run_efficient_models.py +0 -0
  197. {mcli_framework-7.8.4 → mcli_framework-7.8.5}/src/mcli/workflow/model_service/lightweight_embedder.py +0 -0
  198. {mcli_framework-7.8.4 → mcli_framework-7.8.5}/src/mcli/workflow/model_service/lightweight_model_server.py +0 -0
  199. {mcli_framework-7.8.4 → mcli_framework-7.8.5}/src/mcli/workflow/model_service/lightweight_test.py +0 -0
  200. {mcli_framework-7.8.4 → mcli_framework-7.8.5}/src/mcli/workflow/model_service/model_service.py +0 -0
  201. {mcli_framework-7.8.4 → mcli_framework-7.8.5}/src/mcli/workflow/model_service/ollama_efficient_runner.py +0 -0
  202. {mcli_framework-7.8.4 → mcli_framework-7.8.5}/src/mcli/workflow/model_service/openai_adapter.py +0 -0
  203. {mcli_framework-7.8.4 → mcli_framework-7.8.5}/src/mcli/workflow/model_service/pdf_processor.py +0 -0
  204. {mcli_framework-7.8.4 → mcli_framework-7.8.5}/src/mcli/workflow/model_service/test_efficient_runner.py +0 -0
  205. {mcli_framework-7.8.4 → mcli_framework-7.8.5}/src/mcli/workflow/model_service/test_example.py +0 -0
  206. {mcli_framework-7.8.4 → mcli_framework-7.8.5}/src/mcli/workflow/model_service/test_integration.py +0 -0
  207. {mcli_framework-7.8.4 → mcli_framework-7.8.5}/src/mcli/workflow/model_service/test_new_features.py +0 -0
  208. {mcli_framework-7.8.4 → mcli_framework-7.8.5}/src/mcli/workflow/openai/openai.py +0 -0
  209. {mcli_framework-7.8.4 → mcli_framework-7.8.5}/src/mcli/workflow/politician_trading/config.py +0 -0
  210. {mcli_framework-7.8.4 → mcli_framework-7.8.5}/src/mcli/workflow/politician_trading/connectivity.py +0 -0
  211. {mcli_framework-7.8.4 → mcli_framework-7.8.5}/src/mcli/workflow/politician_trading/data_sources.py +0 -0
  212. {mcli_framework-7.8.4 → mcli_framework-7.8.5}/src/mcli/workflow/politician_trading/database.py +0 -0
  213. {mcli_framework-7.8.4 → mcli_framework-7.8.5}/src/mcli/workflow/politician_trading/demo.py +0 -0
  214. {mcli_framework-7.8.4 → mcli_framework-7.8.5}/src/mcli/workflow/politician_trading/models.py +0 -0
  215. {mcli_framework-7.8.4 → mcli_framework-7.8.5}/src/mcli/workflow/politician_trading/monitoring.py +0 -0
  216. {mcli_framework-7.8.4 → mcli_framework-7.8.5}/src/mcli/workflow/politician_trading/scrapers.py +0 -0
  217. {mcli_framework-7.8.4 → mcli_framework-7.8.5}/src/mcli/workflow/politician_trading/scrapers_california.py +0 -0
  218. {mcli_framework-7.8.4 → mcli_framework-7.8.5}/src/mcli/workflow/politician_trading/scrapers_corporate_registry.py +0 -0
  219. {mcli_framework-7.8.4 → mcli_framework-7.8.5}/src/mcli/workflow/politician_trading/scrapers_eu.py +0 -0
  220. {mcli_framework-7.8.4 → mcli_framework-7.8.5}/src/mcli/workflow/politician_trading/scrapers_free_sources.py +0 -0
  221. {mcli_framework-7.8.4 → mcli_framework-7.8.5}/src/mcli/workflow/politician_trading/scrapers_third_party.py +0 -0
  222. {mcli_framework-7.8.4 → mcli_framework-7.8.5}/src/mcli/workflow/politician_trading/scrapers_uk.py +0 -0
  223. {mcli_framework-7.8.4 → mcli_framework-7.8.5}/src/mcli/workflow/politician_trading/scrapers_us_states.py +0 -0
  224. {mcli_framework-7.8.4 → mcli_framework-7.8.5}/src/mcli/workflow/politician_trading/seed_database.py +0 -0
  225. {mcli_framework-7.8.4 → mcli_framework-7.8.5}/src/mcli/workflow/politician_trading/supabase_functions.py +0 -0
  226. {mcli_framework-7.8.4 → mcli_framework-7.8.5}/src/mcli/workflow/politician_trading/workflow.py +0 -0
  227. {mcli_framework-7.8.4 → mcli_framework-7.8.5}/src/mcli/workflow/registry/registry.py +0 -0
  228. {mcli_framework-7.8.4 → mcli_framework-7.8.5}/src/mcli/workflow/repo/repo.py +0 -0
  229. {mcli_framework-7.8.4 → mcli_framework-7.8.5}/src/mcli/workflow/scheduler/cron_parser.py +0 -0
  230. {mcli_framework-7.8.4 → mcli_framework-7.8.5}/src/mcli/workflow/scheduler/job.py +0 -0
  231. {mcli_framework-7.8.4 → mcli_framework-7.8.5}/src/mcli/workflow/scheduler/monitor.py +0 -0
  232. {mcli_framework-7.8.4 → mcli_framework-7.8.5}/src/mcli/workflow/scheduler/persistence.py +0 -0
  233. {mcli_framework-7.8.4 → mcli_framework-7.8.5}/src/mcli/workflow/scheduler/scheduler.py +0 -0
  234. {mcli_framework-7.8.4 → mcli_framework-7.8.5}/src/mcli/workflow/sync/test_cmd.py +0 -0
  235. {mcli_framework-7.8.4 → mcli_framework-7.8.5}/src/mcli/workflow/wakatime/wakatime.py +0 -0
  236. {mcli_framework-7.8.4 → mcli_framework-7.8.5}/src/mcli/workflow/workflow.py +0 -0
  237. {mcli_framework-7.8.4 → mcli_framework-7.8.5}/src/mcli_framework.egg-info/dependency_links.txt +0 -0
  238. {mcli_framework-7.8.4 → mcli_framework-7.8.5}/src/mcli_framework.egg-info/entry_points.txt +0 -0
  239. {mcli_framework-7.8.4 → mcli_framework-7.8.5}/src/mcli_framework.egg-info/requires.txt +0 -0
  240. {mcli_framework-7.8.4 → mcli_framework-7.8.5}/src/mcli_framework.egg-info/top_level.txt +0 -0
  241. {mcli_framework-7.8.4 → mcli_framework-7.8.5}/tests/cli/test_all_commands.py +0 -0
  242. {mcli_framework-7.8.4 → mcli_framework-7.8.5}/tests/cli/test_app_logs_cmd.py +0 -0
  243. {mcli_framework-7.8.4 → mcli_framework-7.8.5}/tests/cli/test_app_redis_cmd.py +0 -0
  244. {mcli_framework-7.8.4 → mcli_framework-7.8.5}/tests/cli/test_logs_cmd.py +0 -0
  245. {mcli_framework-7.8.4 → mcli_framework-7.8.5}/tests/cli/test_main_app.py +0 -0
  246. {mcli_framework-7.8.4 → mcli_framework-7.8.5}/tests/cli/test_model_cmd.py +0 -0
  247. {mcli_framework-7.8.4 → mcli_framework-7.8.5}/tests/cli/test_self_cmd.py +0 -0
  248. {mcli_framework-7.8.4 → mcli_framework-7.8.5}/tests/cli/test_self_cmd_commands.py +0 -0
  249. {mcli_framework-7.8.4 → mcli_framework-7.8.5}/tests/cli/test_self_cmd_plugins.py +0 -0
  250. {mcli_framework-7.8.4 → mcli_framework-7.8.5}/tests/cli/test_self_cmd_utilities.py +0 -0
  251. {mcli_framework-7.8.4 → mcli_framework-7.8.5}/tests/cli/test_workflow_file.py +0 -0
  252. {mcli_framework-7.8.4 → mcli_framework-7.8.5}/tests/cli/test_workflow_gcloud.py +0 -0
  253. {mcli_framework-7.8.4 → mcli_framework-7.8.5}/tests/cli/test_workflow_registry.py +0 -0
  254. {mcli_framework-7.8.4 → mcli_framework-7.8.5}/tests/conftest.py +0 -0
  255. {mcli_framework-7.8.4 → mcli_framework-7.8.5}/tests/demo_generate_graph.py +0 -0
  256. {mcli_framework-7.8.4 → mcli_framework-7.8.5}/tests/demo_hierarchical_transform.py +0 -0
  257. {mcli_framework-7.8.4 → mcli_framework-7.8.5}/tests/e2e/test_complete_workflows.py +0 -0
  258. {mcli_framework-7.8.4 → mcli_framework-7.8.5}/tests/e2e/test_model_workflow.py +0 -0
  259. {mcli_framework-7.8.4 → mcli_framework-7.8.5}/tests/e2e/test_update_workflow.py +0 -0
  260. {mcli_framework-7.8.4 → mcli_framework-7.8.5}/tests/fixtures/chat_fixtures.py +0 -0
  261. {mcli_framework-7.8.4 → mcli_framework-7.8.5}/tests/fixtures/cli_fixtures.py +0 -0
  262. {mcli_framework-7.8.4 → mcli_framework-7.8.5}/tests/fixtures/data_fixtures.py +0 -0
  263. {mcli_framework-7.8.4 → mcli_framework-7.8.5}/tests/fixtures/db_fixtures.py +0 -0
  264. {mcli_framework-7.8.4 → mcli_framework-7.8.5}/tests/fixtures/model_fixtures.py +0 -0
  265. {mcli_framework-7.8.4 → mcli_framework-7.8.5}/tests/integration/test_agent.py +0 -0
  266. {mcli_framework-7.8.4 → mcli_framework-7.8.5}/tests/integration/test_california_scraper.py +0 -0
  267. {mcli_framework-7.8.4 → mcli_framework-7.8.5}/tests/integration/test_chat_client.py +0 -0
  268. {mcli_framework-7.8.4 → mcli_framework-7.8.5}/tests/integration/test_chat_system.py +0 -0
  269. {mcli_framework-7.8.4 → mcli_framework-7.8.5}/tests/integration/test_congress_scraper.py +0 -0
  270. {mcli_framework-7.8.4 → mcli_framework-7.8.5}/tests/integration/test_daemon_client.py +0 -0
  271. {mcli_framework-7.8.4 → mcli_framework-7.8.5}/tests/integration/test_daemon_server.py +0 -0
  272. {mcli_framework-7.8.4 → mcli_framework-7.8.5}/tests/integration/test_e2e_dashboard_lsh_supabase.py +0 -0
  273. {mcli_framework-7.8.4 → mcli_framework-7.8.5}/tests/integration/test_flask_webapp.py +0 -0
  274. {mcli_framework-7.8.4 → mcli_framework-7.8.5}/tests/integration/test_gcloud_services.py +0 -0
  275. {mcli_framework-7.8.4 → mcli_framework-7.8.5}/tests/integration/test_lsh_client.py +0 -0
  276. {mcli_framework-7.8.4 → mcli_framework-7.8.5}/tests/integration/test_lsh_service.py +0 -0
  277. {mcli_framework-7.8.4 → mcli_framework-7.8.5}/tests/integration/test_ml_auth.py +0 -0
  278. {mcli_framework-7.8.4 → mcli_framework-7.8.5}/tests/integration/test_ml_data_pipeline.py +0 -0
  279. {mcli_framework-7.8.4 → mcli_framework-7.8.5}/tests/integration/test_ml_models.py +0 -0
  280. {mcli_framework-7.8.4 → mcli_framework-7.8.5}/tests/integration/test_ml_pipeline.py +0 -0
  281. {mcli_framework-7.8.4 → mcli_framework-7.8.5}/tests/integration/test_oi_service.py +0 -0
  282. {mcli_framework-7.8.4 → mcli_framework-7.8.5}/tests/integration/test_politician_trading.py +0 -0
  283. {mcli_framework-7.8.4 → mcli_framework-7.8.5}/tests/integration/test_repo_operations.py +0 -0
  284. {mcli_framework-7.8.4 → mcli_framework-7.8.5}/tests/integration/test_scheduler_integration.py +0 -0
  285. {mcli_framework-7.8.4 → mcli_framework-7.8.5}/tests/integration/test_service_registry.py +0 -0
  286. {mcli_framework-7.8.4 → mcli_framework-7.8.5}/tests/integration/test_supabase_live_connection.py +0 -0
  287. {mcli_framework-7.8.4 → mcli_framework-7.8.5}/tests/integration/test_uk_scraper.py +0 -0
  288. {mcli_framework-7.8.4 → mcli_framework-7.8.5}/tests/integration/test_us_states_scraper.py +0 -0
  289. {mcli_framework-7.8.4 → mcli_framework-7.8.5}/tests/integration/test_video_processing.py +0 -0
  290. {mcli_framework-7.8.4 → mcli_framework-7.8.5}/tests/integration/test_wakatime_api.py +0 -0
  291. {mcli_framework-7.8.4 → mcli_framework-7.8.5}/tests/integration/test_webapp_full.py +0 -0
  292. {mcli_framework-7.8.4 → mcli_framework-7.8.5}/tests/integration/test_workflow.py +0 -0
  293. {mcli_framework-7.8.4 → mcli_framework-7.8.5}/tests/integration/test_workflow_commands.py +0 -0
  294. {mcli_framework-7.8.4 → mcli_framework-7.8.5}/tests/run_tests.py +0 -0
  295. {mcli_framework-7.8.4 → mcli_framework-7.8.5}/tests/test_harness.py +0 -0
  296. {mcli_framework-7.8.4 → mcli_framework-7.8.5}/tests/test_openai_adapter.py +0 -0
  297. {mcli_framework-7.8.4 → mcli_framework-7.8.5}/tests/unit/test_api_utils.py +0 -0
  298. {mcli_framework-7.8.4 → mcli_framework-7.8.5}/tests/unit/test_async_process_manager.py +0 -0
  299. {mcli_framework-7.8.4 → mcli_framework-7.8.5}/tests/unit/test_auth_modules.py +0 -0
  300. {mcli_framework-7.8.4 → mcli_framework-7.8.5}/tests/unit/test_bug_fixes.py +0 -0
  301. {mcli_framework-7.8.4 → mcli_framework-7.8.5}/tests/unit/test_config.py +0 -0
  302. {mcli_framework-7.8.4 → mcli_framework-7.8.5}/tests/unit/test_custom_commands.py +0 -0
  303. {mcli_framework-7.8.4 → mcli_framework-7.8.5}/tests/unit/test_daemon_api.py +0 -0
  304. {mcli_framework-7.8.4 → mcli_framework-7.8.5}/tests/unit/test_dashboard_components.py +0 -0
  305. {mcli_framework-7.8.4 → mcli_framework-7.8.5}/tests/unit/test_dashboard_functions.py +0 -0
  306. {mcli_framework-7.8.4 → mcli_framework-7.8.5}/tests/unit/test_dashboard_pages.py +0 -0
  307. {mcli_framework-7.8.4 → mcli_framework-7.8.5}/tests/unit/test_dependencies.py +0 -0
  308. {mcli_framework-7.8.4 → mcli_framework-7.8.5}/tests/unit/test_emulator_workflow.py +0 -0
  309. {mcli_framework-7.8.4 → mcli_framework-7.8.5}/tests/unit/test_erd_generation.py +0 -0
  310. {mcli_framework-7.8.4 → mcli_framework-7.8.5}/tests/unit/test_erd_generic.py +0 -0
  311. {mcli_framework-7.8.4 → mcli_framework-7.8.5}/tests/unit/test_erd_imports.py +0 -0
  312. {mcli_framework-7.8.4 → mcli_framework-7.8.5}/tests/unit/test_git_commit_workflow.py +0 -0
  313. {mcli_framework-7.8.4 → mcli_framework-7.8.5}/tests/unit/test_lib_auth.py +0 -0
  314. {mcli_framework-7.8.4 → mcli_framework-7.8.5}/tests/unit/test_lib_files.py +0 -0
  315. {mcli_framework-7.8.4 → mcli_framework-7.8.5}/tests/unit/test_lib_utils.py +0 -0
  316. {mcli_framework-7.8.4 → mcli_framework-7.8.5}/tests/unit/test_logger.py +0 -0
  317. {mcli_framework-7.8.4 → mcli_framework-7.8.5}/tests/unit/test_ml_preprocessing.py +0 -0
  318. {mcli_framework-7.8.4 → mcli_framework-7.8.5}/tests/unit/test_paths.py +0 -0
  319. {mcli_framework-7.8.4 → mcli_framework-7.8.5}/tests/unit/test_pdf_compress.py +0 -0
  320. {mcli_framework-7.8.4 → mcli_framework-7.8.5}/tests/unit/test_prediction_engine.py +0 -0
  321. {mcli_framework-7.8.4 → mcli_framework-7.8.5}/tests/unit/test_regression.py +0 -0
  322. {mcli_framework-7.8.4 → mcli_framework-7.8.5}/tests/unit/test_scheduler.py +0 -0
  323. {mcli_framework-7.8.4 → mcli_framework-7.8.5}/tests/unit/test_scheduler_cron_parser.py +0 -0
  324. {mcli_framework-7.8.4 → mcli_framework-7.8.5}/tests/unit/test_scheduler_job.py +0 -0
  325. {mcli_framework-7.8.4 → mcli_framework-7.8.5}/tests/unit/test_scheduler_monitor.py +0 -0
  326. {mcli_framework-7.8.4 → mcli_framework-7.8.5}/tests/unit/test_scheduler_persistence.py +0 -0
  327. {mcli_framework-7.8.4 → mcli_framework-7.8.5}/tests/unit/test_self_update.py +0 -0
  328. {mcli_framework-7.8.4 → mcli_framework-7.8.5}/tests/unit/test_store_cmd.py +0 -0
  329. {mcli_framework-7.8.4 → mcli_framework-7.8.5}/tests/unit/test_supabase_connection.py +0 -0
  330. {mcli_framework-7.8.4 → mcli_framework-7.8.5}/tests/unit/test_supabase_pagination.py +0 -0
  331. {mcli_framework-7.8.4 → mcli_framework-7.8.5}/tests/unit/test_toml_utils.py +0 -0
  332. {mcli_framework-7.8.4 → mcli_framework-7.8.5}/tests/unit/test_trading_imports.py +0 -0
  333. {mcli_framework-7.8.4 → mcli_framework-7.8.5}/tests/unit/test_ui_rich.py +0 -0
  334. {mcli_framework-7.8.4 → mcli_framework-7.8.5}/tests/unit/test_uv_compat.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: mcli-framework
3
- Version: 7.8.4
3
+ Version: 7.8.5
4
4
  Summary: Portable workflow framework - transform any script into a versioned, schedulable command. Store in ~/.mcli/commands/, version with lockfile, run as daemon or cron job.
5
5
  Author-email: Luis Fernandez de la Vara <luis@lefv.io>
6
6
  Maintainer-email: Luis Fernandez de la Vara <luis@lefv.io>
@@ -1,6 +1,6 @@
1
1
  [project]
2
2
  name = "mcli-framework"
3
- version = "7.8.4"
3
+ version = "7.8.5"
4
4
  description = "Portable workflow framework - transform any script into a versioned, schedulable command. Store in ~/.mcli/commands/, version with lockfile, run as daemon or cron job."
5
5
  readme = "README.md"
6
6
  requires-python = ">=3.9"
@@ -12,8 +12,6 @@ from typing import List, Optional
12
12
  import click
13
13
  import tomli
14
14
 
15
- # Import chat command group
16
- from mcli.app.chat_cmd import chat
17
15
  from mcli.lib.logger.logger import disable_runtime_tracing, enable_runtime_tracing, get_logger
18
16
  from mcli.lib.ui.styling import info, success
19
17
 
@@ -346,15 +344,6 @@ def _add_lazy_commands(app: click.Group):
346
344
  except Exception as e:
347
345
  logger.debug(f"Could not load self commands: {e}")
348
346
 
349
- # Test group - load immediately for testing commands
350
- try:
351
- from mcli.test.test_cmd import test_group
352
-
353
- app.add_command(test_group, name="test")
354
- logger.debug("Added test group commands")
355
- except Exception as e:
356
- logger.debug(f"Could not load test commands: {e}")
357
-
358
347
  # Add workflow with completion-aware lazy loading
359
348
  try:
360
349
  from mcli.app.completion_helpers import create_completion_aware_lazy_group
@@ -377,16 +366,11 @@ def _add_lazy_commands(app: click.Group):
377
366
  app.add_command(workflow_group, name="workflow")
378
367
 
379
368
  # Lazy load other heavy commands that are used less frequently
380
- lazy_commands = {
381
- "chat": {
382
- "import_path": "mcli.app.chat_cmd.chat",
383
- "help": "Start an interactive chat session with the MCLI Chat Assistant.",
384
- },
385
- "model": {
386
- "import_path": "mcli.app.model_cmd.model",
387
- "help": "Model management commands for offline and online model usage",
388
- },
389
- }
369
+ # NOTE: chat and model commands have been removed
370
+ # - chat: removed from core commands
371
+ # - model: moved to ~/.mcli/commands workflow
372
+ # - test: removed from core commands
373
+ lazy_commands = {}
390
374
 
391
375
  for cmd_name, cmd_info in lazy_commands.items():
392
376
  # Skip workflow since we already added it with completion support
@@ -0,0 +1,66 @@
1
+ """
2
+ Model command stub - redirects to workflow command in ~/.mcli/commands/model.json
3
+
4
+ This stub exists for backwards compatibility with tests and imports.
5
+ The actual model command implementation is now in ~/.mcli/commands/model.json
6
+ """
7
+
8
+ import sys
9
+ from pathlib import Path
10
+
11
+ # Try to load the model command from the workflow system
12
+ try:
13
+ from mcli.lib.custom_commands import load_command_from_file
14
+
15
+ # Load model command from ~/.mcli/commands/model.json
16
+ model_json_path = Path.home() / ".mcli" / "commands" / "model.json"
17
+
18
+ if model_json_path.exists():
19
+ # Load the command from the JSON file
20
+ import json
21
+
22
+ with open(model_json_path, "r") as f:
23
+ command_data = json.load(f)
24
+
25
+ # Execute the code to get the app (model command group)
26
+ code = command_data.get("code", "")
27
+ namespace = {}
28
+ exec(code, namespace)
29
+
30
+ # Extract the app (model command group) and individual commands
31
+ app = namespace.get("app")
32
+ if app:
33
+ # The model group command
34
+ model = app
35
+
36
+ # Extract individual subcommands from the model group
37
+ if hasattr(model, "commands"):
38
+ commands = model.commands
39
+ list = commands.get("list")
40
+ download = commands.get("download")
41
+ start = commands.get("start")
42
+ recommend = commands.get("recommend")
43
+ status = commands.get("status")
44
+ stop = commands.get("stop")
45
+ pull = commands.get("pull")
46
+ delete = commands.get("delete")
47
+ else:
48
+ # Fallback if commands aren't available
49
+ list = download = start = recommend = status = stop = pull = delete = None
50
+ else:
51
+ # If app is not found, create empty placeholders
52
+ model = list = download = start = recommend = status = stop = pull = delete = None
53
+ else:
54
+ # If the JSON file doesn't exist, create empty placeholders
55
+ print(f"Warning: {model_json_path} not found", file=sys.stderr)
56
+ model = list = download = start = recommend = status = stop = pull = delete = None
57
+
58
+ except Exception as e:
59
+ print(f"Error loading model command from workflow: {e}", file=sys.stderr)
60
+ import traceback
61
+
62
+ traceback.print_exc()
63
+ model = list = download = start = recommend = status = stop = pull = delete = None
64
+
65
+ # Export the commands for backwards compatibility
66
+ __all__ = ["model", "list", "download", "start", "recommend", "status", "stop", "pull", "delete"]
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: mcli-framework
3
- Version: 7.8.4
3
+ Version: 7.8.5
4
4
  Summary: Portable workflow framework - transform any script into a versioned, schedulable command. Store in ~/.mcli/commands/, version with lockfile, run as daemon or cron job.
5
5
  Author-email: Luis Fernandez de la Vara <luis@lefv.io>
6
6
  Maintainer-email: Luis Fernandez de la Vara <luis@lefv.io>
@@ -20,7 +20,6 @@ mcli_rust/src/process_manager.rs
20
20
  mcli_rust/src/tfidf.rs
21
21
  src/mcli/cli.py
22
22
  src/mcli/config.toml
23
- src/mcli/app/chat_cmd.py
24
23
  src/mcli/app/commands_cmd.py
25
24
  src/mcli/app/completion_helpers.py
26
25
  src/mcli/app/main.py
@@ -169,7 +168,6 @@ src/mcli/self/self_cmd.py
169
168
  src/mcli/self/store_cmd.py
170
169
  src/mcli/self/test_cmd.py
171
170
  src/mcli/self/visual_cmd.py
172
- src/mcli/test/test_cmd.py
173
171
  src/mcli/workflow/lsh_integration.py
174
172
  src/mcli/workflow/workflow.py
175
173
  src/mcli/workflow/daemon/async_command_database.py
@@ -242,7 +240,6 @@ tests/test_openai_adapter.py
242
240
  tests/cli/test_all_commands.py
243
241
  tests/cli/test_app_logs_cmd.py
244
242
  tests/cli/test_app_redis_cmd.py
245
- tests/cli/test_chat_cmd.py
246
243
  tests/cli/test_logs_cmd.py
247
244
  tests/cli/test_main_app.py
248
245
  tests/cli/test_model_cmd.py
@@ -16,9 +16,9 @@ def test_new_user_complete_workflow():
16
16
  1. Check available self commands
17
17
  2. Run mcli self logs (should work even with no logs)
18
18
  3. Check for updates
19
- 4. View help for model commands
19
+ 4. View help for model commands (now a workflow command)
20
20
  """
21
- from mcli.app.model_cmd import model
21
+ from mcli.app.main import create_app
22
22
  from mcli.self.self_cmd import self_app
23
23
 
24
24
  runner = CliRunner()
@@ -39,8 +39,9 @@ def test_new_user_complete_workflow():
39
39
  assert result.exit_code == 0
40
40
  assert "--check" in result.output
41
41
 
42
- # Step 4: View help for model command
43
- result = runner.invoke(model, ["--help"])
42
+ # Step 4: View help for model command (now loaded as workflow command)
43
+ app = create_app()
44
+ result = runner.invoke(app, ["model", "--help"])
44
45
  assert result.exit_code == 0
45
46
  assert "list" in result.output or "start" in result.output
46
47
 
@@ -73,26 +74,27 @@ def test_new_user_discovers_features():
73
74
  @pytest.mark.e2e
74
75
  def test_new_user_model_exploration():
75
76
  """
76
- Test new user exploring model commands
77
+ Test new user exploring model commands (now a workflow command)
77
78
  """
78
- from mcli.app.model_cmd import model
79
+ from mcli.app.main import create_app
79
80
 
80
81
  runner = CliRunner()
82
+ app = create_app()
81
83
 
82
84
  # View model help
83
- result = runner.invoke(model, ["--help"])
85
+ result = runner.invoke(app, ["model", "--help"])
84
86
  assert result.exit_code == 0
85
87
 
86
88
  # View list help
87
- result = runner.invoke(model, ["list", "--help"])
89
+ result = runner.invoke(app, ["model", "list", "--help"])
88
90
  assert result.exit_code == 0
89
91
 
90
92
  # View recommend help
91
- result = runner.invoke(model, ["recommend", "--help"])
93
+ result = runner.invoke(app, ["model", "recommend", "--help"])
92
94
  assert result.exit_code == 0
93
95
 
94
96
  # View start help
95
- result = runner.invoke(model, ["start", "--help"])
97
+ result = runner.invoke(app, ["model", "start", "--help"])
96
98
  assert result.exit_code == 0
97
99
  assert "port" in result.output.lower()
98
100
 
@@ -122,13 +124,14 @@ def test_new_user_error_handling():
122
124
  """
123
125
  Test that new users get helpful error messages
124
126
  """
125
- from mcli.app.model_cmd import model
127
+ from mcli.app.main import create_app
126
128
  from mcli.self.self_cmd import self_app
127
129
 
128
130
  runner = CliRunner()
131
+ app = create_app()
129
132
 
130
133
  # Invalid command for model
131
- result = runner.invoke(model, ["nonexistent-command"])
134
+ result = runner.invoke(app, ["model", "nonexistent-command"])
132
135
  # Should fail gracefully
133
136
  assert result.exit_code != 0
134
137
 
@@ -41,10 +41,11 @@ class TestModuleImports:
41
41
 
42
42
  def test_import_app_modules(self):
43
43
  """Test importing app modules"""
44
- from mcli.app import chat_cmd, model_cmd
44
+ # Note: chat_cmd and model_cmd have been removed from core commands
45
+ # They are now available as workflow commands in ~/.mcli/commands/
46
+ from mcli.app import main
45
47
 
46
- assert chat_cmd is not None
47
- assert model_cmd is not None
48
+ assert main is not None
48
49
 
49
50
  @pytest.mark.skip(reason="Requires complex dependencies")
50
51
  def test_import_ml_preprocessing(self):
@@ -1,42 +0,0 @@
1
- import click
2
-
3
- from mcli.chat.chat import ChatClient
4
- from mcli.chat.enhanced_chat import EnhancedChatClient
5
-
6
-
7
- @click.command()
8
- @click.option(
9
- "--remote", is_flag=True, help="Use remote online models instead of local lightweight models"
10
- )
11
- @click.option("--model", "-m", help="Specific model to use (overrides default behavior)")
12
- @click.option(
13
- "--enhanced",
14
- is_flag=True,
15
- default=True,
16
- help="Use enhanced chat with RAG-based command search (default: enabled)",
17
- )
18
- @click.option("--classic", is_flag=True, help="Use classic chat interface without command search")
19
- def chat(remote: bool, model: str, enhanced: bool, classic: bool):
20
- """Start an interactive chat session with the MCLI Chat Assistant.
21
-
22
- 🤖 Enhanced Mode (Default):
23
- - Self-referential command discovery and suggestions
24
- - RAG-based semantic search of available MCLI commands
25
- - Intelligent intent analysis and contextual recommendations
26
- - Real-time system status awareness
27
-
28
- 💬 Classic Mode:
29
- - Traditional chat interface
30
- - Basic system integration
31
-
32
- By default, uses lightweight local models for privacy and speed.
33
- Use --remote to connect to online models like OpenAI or Anthropic.
34
- """
35
- # Choose chat client based on options
36
- if classic:
37
- client = ChatClient(use_remote=remote, model_override=model)
38
- client.start_interactive_session()
39
- else:
40
- # Use enhanced client by default
41
- client = EnhancedChatClient(use_remote=remote, model_override=model)
42
- client.start_interactive_session()