mcli-framework 7.10.0__tar.gz → 7.10.2__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 (351) hide show
  1. {mcli_framework-7.10.0 → mcli_framework-7.10.2}/.github/dependabot.yml +20 -22
  2. {mcli_framework-7.10.0 → mcli_framework-7.10.2}/.github/workflows/ci.yml +48 -6
  3. mcli_framework-7.10.2/.github/workflows/codeql.yml +43 -0
  4. mcli_framework-7.10.2/.github/workflows/main_mcli.yml +76 -0
  5. {mcli_framework-7.10.0 → mcli_framework-7.10.2}/PKG-INFO +37 -3
  6. {mcli_framework-7.10.0 → mcli_framework-7.10.2}/README.md +36 -2
  7. {mcli_framework-7.10.0 → mcli_framework-7.10.2}/pyproject.toml +37 -1
  8. {mcli_framework-7.10.0 → mcli_framework-7.10.2}/src/mcli/lib/custom_commands.py +10 -0
  9. mcli_framework-7.10.2/src/mcli/lib/optional_deps.py +240 -0
  10. {mcli_framework-7.10.0 → mcli_framework-7.10.2}/src/mcli/ml/backtesting/run.py +5 -3
  11. {mcli_framework-7.10.0 → mcli_framework-7.10.2}/src/mcli/ml/models/ensemble_models.py +1 -0
  12. {mcli_framework-7.10.0 → mcli_framework-7.10.2}/src/mcli/ml/models/recommendation_models.py +1 -0
  13. {mcli_framework-7.10.0 → mcli_framework-7.10.2}/src/mcli/ml/optimization/optimize.py +6 -4
  14. {mcli_framework-7.10.0 → mcli_framework-7.10.2}/src/mcli/ml/serving/serve.py +2 -2
  15. {mcli_framework-7.10.0 → mcli_framework-7.10.2}/src/mcli/ml/training/train.py +14 -7
  16. {mcli_framework-7.10.0 → mcli_framework-7.10.2}/src/mcli/self/completion_cmd.py +2 -2
  17. {mcli_framework-7.10.0 → mcli_framework-7.10.2}/src/mcli/workflow/doc_convert.py +82 -112
  18. {mcli_framework-7.10.0 → mcli_framework-7.10.2}/src/mcli/workflow/git_commit/ai_service.py +13 -2
  19. mcli_framework-7.10.2/src/mcli/workflow/notebook/converter.py +375 -0
  20. mcli_framework-7.10.2/src/mcli/workflow/notebook/notebook_cmd.py +441 -0
  21. mcli_framework-7.10.2/src/mcli/workflow/notebook/schema.py +402 -0
  22. mcli_framework-7.10.2/src/mcli/workflow/notebook/validator.py +313 -0
  23. {mcli_framework-7.10.0 → mcli_framework-7.10.2}/src/mcli/workflow/workflow.py +14 -0
  24. {mcli_framework-7.10.0 → mcli_framework-7.10.2}/src/mcli_framework.egg-info/PKG-INFO +37 -3
  25. {mcli_framework-7.10.0 → mcli_framework-7.10.2}/src/mcli_framework.egg-info/SOURCES.txt +11 -27
  26. {mcli_framework-7.10.0 → mcli_framework-7.10.2}/tests/cli/test_app_redis_cmd.py +1 -0
  27. {mcli_framework-7.10.0 → mcli_framework-7.10.2}/tests/cli/test_model_cmd.py +3 -0
  28. {mcli_framework-7.10.0 → mcli_framework-7.10.2}/tests/cli/test_workflow_file.py +3 -0
  29. {mcli_framework-7.10.0 → mcli_framework-7.10.2}/tests/cli/test_workflow_registry.py +3 -0
  30. {mcli_framework-7.10.0 → mcli_framework-7.10.2}/tests/e2e/test_model_workflow.py +3 -0
  31. {mcli_framework-7.10.0 → mcli_framework-7.10.2}/tests/e2e/test_new_user_workflow.py +3 -0
  32. {mcli_framework-7.10.0 → mcli_framework-7.10.2}/tests/integration/test_chat_client.py +3 -0
  33. {mcli_framework-7.10.0 → mcli_framework-7.10.2}/tests/integration/test_lsh_client.py +3 -0
  34. {mcli_framework-7.10.0 → mcli_framework-7.10.2}/tests/integration/test_ml_auth.py +3 -0
  35. {mcli_framework-7.10.0 → mcli_framework-7.10.2}/tests/integration/test_ml_models.py +4 -0
  36. {mcli_framework-7.10.0 → mcli_framework-7.10.2}/tests/integration/test_module_imports.py +3 -3
  37. {mcli_framework-7.10.0 → mcli_framework-7.10.2}/tests/unit/test_async_process_manager.py +5 -0
  38. {mcli_framework-7.10.0 → mcli_framework-7.10.2}/tests/unit/test_custom_commands.py +6 -0
  39. mcli_framework-7.10.2/tests/unit/test_custom_commands_filtering.py +164 -0
  40. {mcli_framework-7.10.0 → mcli_framework-7.10.2}/tests/unit/test_dashboard_functions.py +5 -0
  41. {mcli_framework-7.10.0 → mcli_framework-7.10.2}/tests/unit/test_dashboard_pages.py +1 -0
  42. {mcli_framework-7.10.0 → mcli_framework-7.10.2}/tests/unit/test_doc_convert_workflow.py +1 -3
  43. mcli_framework-7.10.2/tests/unit/test_optional_deps.py +211 -0
  44. mcli_framework-7.10.2/tests/unit/workflow/test_notebook.py +443 -0
  45. mcli_framework-7.10.0/src/mcli/ml/features/political_features.py +0 -677
  46. mcli_framework-7.10.0/src/mcli/ml/preprocessing/politician_trading_preprocessor.py +0 -570
  47. mcli_framework-7.10.0/src/mcli/workflow/politician_trading/config.py +0 -134
  48. mcli_framework-7.10.0/src/mcli/workflow/politician_trading/connectivity.py +0 -492
  49. mcli_framework-7.10.0/src/mcli/workflow/politician_trading/data_sources.py +0 -654
  50. mcli_framework-7.10.0/src/mcli/workflow/politician_trading/database.py +0 -412
  51. mcli_framework-7.10.0/src/mcli/workflow/politician_trading/demo.py +0 -249
  52. mcli_framework-7.10.0/src/mcli/workflow/politician_trading/models.py +0 -327
  53. mcli_framework-7.10.0/src/mcli/workflow/politician_trading/monitoring.py +0 -413
  54. mcli_framework-7.10.0/src/mcli/workflow/politician_trading/scrapers.py +0 -1074
  55. mcli_framework-7.10.0/src/mcli/workflow/politician_trading/scrapers_california.py +0 -434
  56. mcli_framework-7.10.0/src/mcli/workflow/politician_trading/scrapers_corporate_registry.py +0 -797
  57. mcli_framework-7.10.0/src/mcli/workflow/politician_trading/scrapers_eu.py +0 -376
  58. mcli_framework-7.10.0/src/mcli/workflow/politician_trading/scrapers_free_sources.py +0 -509
  59. mcli_framework-7.10.0/src/mcli/workflow/politician_trading/scrapers_third_party.py +0 -373
  60. mcli_framework-7.10.0/src/mcli/workflow/politician_trading/scrapers_uk.py +0 -378
  61. mcli_framework-7.10.0/src/mcli/workflow/politician_trading/scrapers_us_states.py +0 -471
  62. mcli_framework-7.10.0/src/mcli/workflow/politician_trading/seed_database.py +0 -520
  63. mcli_framework-7.10.0/src/mcli/workflow/politician_trading/supabase_functions.py +0 -354
  64. mcli_framework-7.10.0/src/mcli/workflow/politician_trading/workflow.py +0 -879
  65. mcli_framework-7.10.0/tests/integration/test_california_scraper.py +0 -86
  66. mcli_framework-7.10.0/tests/integration/test_congress_scraper.py +0 -90
  67. mcli_framework-7.10.0/tests/integration/test_daemon_client.py +0 -356
  68. mcli_framework-7.10.0/tests/integration/test_politician_trading.py +0 -358
  69. mcli_framework-7.10.0/tests/integration/test_uk_scraper.py +0 -86
  70. mcli_framework-7.10.0/tests/integration/test_us_states_scraper.py +0 -95
  71. {mcli_framework-7.10.0 → mcli_framework-7.10.2}/.github/workflows/build.yml +0 -0
  72. {mcli_framework-7.10.0 → mcli_framework-7.10.2}/.github/workflows/ml-pipeline.yml +0 -0
  73. {mcli_framework-7.10.0 → mcli_framework-7.10.2}/.github/workflows/publish-self-hosted.yml +0 -0
  74. {mcli_framework-7.10.0 → mcli_framework-7.10.2}/.github/workflows/publish.yml +0 -0
  75. {mcli_framework-7.10.0 → mcli_framework-7.10.2}/.github/workflows/release.yml +0 -0
  76. {mcli_framework-7.10.0 → mcli_framework-7.10.2}/.github/workflows/security.yml +0 -0
  77. {mcli_framework-7.10.0 → mcli_framework-7.10.2}/.github/workflows/test.yml +0 -0
  78. {mcli_framework-7.10.0 → mcli_framework-7.10.2}/LICENSE +0 -0
  79. {mcli_framework-7.10.0 → mcli_framework-7.10.2}/MANIFEST.in +0 -0
  80. {mcli_framework-7.10.0 → mcli_framework-7.10.2}/mcli_rust/Cargo.toml +0 -0
  81. {mcli_framework-7.10.0 → mcli_framework-7.10.2}/mcli_rust/src/command_parser.rs +0 -0
  82. {mcli_framework-7.10.0 → mcli_framework-7.10.2}/mcli_rust/src/file_watcher.rs +0 -0
  83. {mcli_framework-7.10.0 → mcli_framework-7.10.2}/mcli_rust/src/lib.rs +0 -0
  84. {mcli_framework-7.10.0 → mcli_framework-7.10.2}/mcli_rust/src/process_manager.rs +0 -0
  85. {mcli_framework-7.10.0 → mcli_framework-7.10.2}/mcli_rust/src/tfidf.rs +0 -0
  86. {mcli_framework-7.10.0 → mcli_framework-7.10.2}/setup.cfg +0 -0
  87. {mcli_framework-7.10.0 → mcli_framework-7.10.2}/src/mcli/app/commands_cmd.py +0 -0
  88. {mcli_framework-7.10.0 → mcli_framework-7.10.2}/src/mcli/app/completion_helpers.py +0 -0
  89. {mcli_framework-7.10.0 → mcli_framework-7.10.2}/src/mcli/app/main.py +0 -0
  90. {mcli_framework-7.10.0 → mcli_framework-7.10.2}/src/mcli/app/model/model.py +0 -0
  91. {mcli_framework-7.10.0 → mcli_framework-7.10.2}/src/mcli/app/model_cmd.py +0 -0
  92. {mcli_framework-7.10.0 → mcli_framework-7.10.2}/src/mcli/app/video/video.py +0 -0
  93. {mcli_framework-7.10.0 → mcli_framework-7.10.2}/src/mcli/chat/chat.py +0 -0
  94. {mcli_framework-7.10.0 → mcli_framework-7.10.2}/src/mcli/chat/command_rag.py +0 -0
  95. {mcli_framework-7.10.0 → mcli_framework-7.10.2}/src/mcli/chat/enhanced_chat.py +0 -0
  96. {mcli_framework-7.10.0 → mcli_framework-7.10.2}/src/mcli/chat/system_controller.py +0 -0
  97. {mcli_framework-7.10.0 → mcli_framework-7.10.2}/src/mcli/chat/system_integration.py +0 -0
  98. {mcli_framework-7.10.0 → mcli_framework-7.10.2}/src/mcli/cli.py +0 -0
  99. {mcli_framework-7.10.0 → mcli_framework-7.10.2}/src/mcli/config.toml +0 -0
  100. {mcli_framework-7.10.0 → mcli_framework-7.10.2}/src/mcli/lib/api/api.py +0 -0
  101. {mcli_framework-7.10.0 → mcli_framework-7.10.2}/src/mcli/lib/api/daemon_client.py +0 -0
  102. {mcli_framework-7.10.0 → mcli_framework-7.10.2}/src/mcli/lib/api/daemon_client_local.py +0 -0
  103. {mcli_framework-7.10.0 → mcli_framework-7.10.2}/src/mcli/lib/api/daemon_decorator.py +0 -0
  104. {mcli_framework-7.10.0 → mcli_framework-7.10.2}/src/mcli/lib/api/mcli_decorators.py +0 -0
  105. {mcli_framework-7.10.0 → mcli_framework-7.10.2}/src/mcli/lib/auth/auth.py +0 -0
  106. {mcli_framework-7.10.0 → mcli_framework-7.10.2}/src/mcli/lib/auth/aws_manager.py +0 -0
  107. {mcli_framework-7.10.0 → mcli_framework-7.10.2}/src/mcli/lib/auth/azure_manager.py +0 -0
  108. {mcli_framework-7.10.0 → mcli_framework-7.10.2}/src/mcli/lib/auth/credential_manager.py +0 -0
  109. {mcli_framework-7.10.0 → mcli_framework-7.10.2}/src/mcli/lib/auth/gcp_manager.py +0 -0
  110. {mcli_framework-7.10.0 → mcli_framework-7.10.2}/src/mcli/lib/auth/key_manager.py +0 -0
  111. {mcli_framework-7.10.0 → mcli_framework-7.10.2}/src/mcli/lib/auth/mcli_manager.py +0 -0
  112. {mcli_framework-7.10.0 → mcli_framework-7.10.2}/src/mcli/lib/auth/token_manager.py +0 -0
  113. {mcli_framework-7.10.0 → mcli_framework-7.10.2}/src/mcli/lib/auth/token_util.py +0 -0
  114. {mcli_framework-7.10.0 → mcli_framework-7.10.2}/src/mcli/lib/config/config.py +0 -0
  115. {mcli_framework-7.10.0 → mcli_framework-7.10.2}/src/mcli/lib/discovery/__init__.py +0 -0
  116. {mcli_framework-7.10.0 → mcli_framework-7.10.2}/src/mcli/lib/discovery/command_discovery.py +0 -0
  117. {mcli_framework-7.10.0 → mcli_framework-7.10.2}/src/mcli/lib/erd/erd.py +0 -0
  118. {mcli_framework-7.10.0 → mcli_framework-7.10.2}/src/mcli/lib/erd/generate_graph.py +0 -0
  119. {mcli_framework-7.10.0 → mcli_framework-7.10.2}/src/mcli/lib/files/files.py +0 -0
  120. {mcli_framework-7.10.0 → mcli_framework-7.10.2}/src/mcli/lib/fs/fs.py +0 -0
  121. {mcli_framework-7.10.0 → mcli_framework-7.10.2}/src/mcli/lib/lib.py +0 -0
  122. {mcli_framework-7.10.0 → mcli_framework-7.10.2}/src/mcli/lib/logger/logger.py +0 -0
  123. {mcli_framework-7.10.0 → mcli_framework-7.10.2}/src/mcli/lib/paths.py +0 -0
  124. {mcli_framework-7.10.0 → mcli_framework-7.10.2}/src/mcli/lib/performance/optimizer.py +0 -0
  125. {mcli_framework-7.10.0 → mcli_framework-7.10.2}/src/mcli/lib/performance/rust_bridge.py +0 -0
  126. {mcli_framework-7.10.0 → mcli_framework-7.10.2}/src/mcli/lib/performance/uvloop_config.py +0 -0
  127. {mcli_framework-7.10.0 → mcli_framework-7.10.2}/src/mcli/lib/pickles/pickles.py +0 -0
  128. {mcli_framework-7.10.0 → mcli_framework-7.10.2}/src/mcli/lib/search/cached_vectorizer.py +0 -0
  129. {mcli_framework-7.10.0 → mcli_framework-7.10.2}/src/mcli/lib/secrets/commands.py +0 -0
  130. {mcli_framework-7.10.0 → mcli_framework-7.10.2}/src/mcli/lib/secrets/manager.py +0 -0
  131. {mcli_framework-7.10.0 → mcli_framework-7.10.2}/src/mcli/lib/secrets/repl.py +0 -0
  132. {mcli_framework-7.10.0 → mcli_framework-7.10.2}/src/mcli/lib/secrets/store.py +0 -0
  133. {mcli_framework-7.10.0 → mcli_framework-7.10.2}/src/mcli/lib/services/data_pipeline.py +0 -0
  134. {mcli_framework-7.10.0 → mcli_framework-7.10.2}/src/mcli/lib/services/lsh_client.py +0 -0
  135. {mcli_framework-7.10.0 → mcli_framework-7.10.2}/src/mcli/lib/services/redis_service.py +0 -0
  136. {mcli_framework-7.10.0 → mcli_framework-7.10.2}/src/mcli/lib/shell/shell.py +0 -0
  137. {mcli_framework-7.10.0 → mcli_framework-7.10.2}/src/mcli/lib/toml/toml.py +0 -0
  138. {mcli_framework-7.10.0 → mcli_framework-7.10.2}/src/mcli/lib/ui/styling.py +0 -0
  139. {mcli_framework-7.10.0 → mcli_framework-7.10.2}/src/mcli/lib/ui/visual_effects.py +0 -0
  140. {mcli_framework-7.10.0 → mcli_framework-7.10.2}/src/mcli/lib/watcher/watcher.py +0 -0
  141. {mcli_framework-7.10.0 → mcli_framework-7.10.2}/src/mcli/ml/api/app.py +0 -0
  142. {mcli_framework-7.10.0 → mcli_framework-7.10.2}/src/mcli/ml/api/middleware.py +0 -0
  143. {mcli_framework-7.10.0 → mcli_framework-7.10.2}/src/mcli/ml/api/routers/admin_router.py +0 -0
  144. {mcli_framework-7.10.0 → mcli_framework-7.10.2}/src/mcli/ml/api/routers/auth_router.py +0 -0
  145. {mcli_framework-7.10.0 → mcli_framework-7.10.2}/src/mcli/ml/api/routers/backtest_router.py +0 -0
  146. {mcli_framework-7.10.0 → mcli_framework-7.10.2}/src/mcli/ml/api/routers/data_router.py +0 -0
  147. {mcli_framework-7.10.0 → mcli_framework-7.10.2}/src/mcli/ml/api/routers/model_router.py +0 -0
  148. {mcli_framework-7.10.0 → mcli_framework-7.10.2}/src/mcli/ml/api/routers/monitoring_router.py +0 -0
  149. {mcli_framework-7.10.0 → mcli_framework-7.10.2}/src/mcli/ml/api/routers/portfolio_router.py +0 -0
  150. {mcli_framework-7.10.0 → mcli_framework-7.10.2}/src/mcli/ml/api/routers/prediction_router.py +0 -0
  151. {mcli_framework-7.10.0 → mcli_framework-7.10.2}/src/mcli/ml/api/routers/trade_router.py +0 -0
  152. {mcli_framework-7.10.0 → mcli_framework-7.10.2}/src/mcli/ml/api/routers/websocket_router.py +0 -0
  153. {mcli_framework-7.10.0 → mcli_framework-7.10.2}/src/mcli/ml/api/schemas.py +0 -0
  154. {mcli_framework-7.10.0 → mcli_framework-7.10.2}/src/mcli/ml/auth/auth_manager.py +0 -0
  155. {mcli_framework-7.10.0 → mcli_framework-7.10.2}/src/mcli/ml/auth/models.py +0 -0
  156. {mcli_framework-7.10.0 → mcli_framework-7.10.2}/src/mcli/ml/auth/permissions.py +0 -0
  157. {mcli_framework-7.10.0 → mcli_framework-7.10.2}/src/mcli/ml/backtesting/backtest_engine.py +0 -0
  158. {mcli_framework-7.10.0 → mcli_framework-7.10.2}/src/mcli/ml/backtesting/performance_metrics.py +0 -0
  159. {mcli_framework-7.10.0 → mcli_framework-7.10.2}/src/mcli/ml/cache.py +0 -0
  160. {mcli_framework-7.10.0 → mcli_framework-7.10.2}/src/mcli/ml/cli/main.py +0 -0
  161. {mcli_framework-7.10.0 → mcli_framework-7.10.2}/src/mcli/ml/config/settings.py +0 -0
  162. {mcli_framework-7.10.0 → mcli_framework-7.10.2}/src/mcli/ml/configs/dvc_config.py +0 -0
  163. {mcli_framework-7.10.0 → mcli_framework-7.10.2}/src/mcli/ml/configs/mlflow_config.py +0 -0
  164. {mcli_framework-7.10.0 → mcli_framework-7.10.2}/src/mcli/ml/configs/mlops_manager.py +0 -0
  165. {mcli_framework-7.10.0 → mcli_framework-7.10.2}/src/mcli/ml/dashboard/app.py +0 -0
  166. {mcli_framework-7.10.0 → mcli_framework-7.10.2}/src/mcli/ml/dashboard/app_integrated.py +0 -0
  167. {mcli_framework-7.10.0 → mcli_framework-7.10.2}/src/mcli/ml/dashboard/app_supabase.py +0 -0
  168. {mcli_framework-7.10.0 → mcli_framework-7.10.2}/src/mcli/ml/dashboard/app_training.py +0 -0
  169. {mcli_framework-7.10.0 → mcli_framework-7.10.2}/src/mcli/ml/dashboard/cli.py +0 -0
  170. {mcli_framework-7.10.0 → mcli_framework-7.10.2}/src/mcli/ml/dashboard/common.py +0 -0
  171. {mcli_framework-7.10.0 → mcli_framework-7.10.2}/src/mcli/ml/dashboard/components/charts.py +0 -0
  172. {mcli_framework-7.10.0 → mcli_framework-7.10.2}/src/mcli/ml/dashboard/components/metrics.py +0 -0
  173. {mcli_framework-7.10.0 → mcli_framework-7.10.2}/src/mcli/ml/dashboard/components/tables.py +0 -0
  174. {mcli_framework-7.10.0 → mcli_framework-7.10.2}/src/mcli/ml/dashboard/overview.py +0 -0
  175. {mcli_framework-7.10.0 → mcli_framework-7.10.2}/src/mcli/ml/dashboard/pages/cicd.py +0 -0
  176. {mcli_framework-7.10.0 → mcli_framework-7.10.2}/src/mcli/ml/dashboard/pages/debug_dependencies.py +0 -0
  177. {mcli_framework-7.10.0 → mcli_framework-7.10.2}/src/mcli/ml/dashboard/pages/gravity_viz.py +0 -0
  178. {mcli_framework-7.10.0 → mcli_framework-7.10.2}/src/mcli/ml/dashboard/pages/monte_carlo_predictions.py +0 -0
  179. {mcli_framework-7.10.0 → mcli_framework-7.10.2}/src/mcli/ml/dashboard/pages/predictions_enhanced.py +0 -0
  180. {mcli_framework-7.10.0 → mcli_framework-7.10.2}/src/mcli/ml/dashboard/pages/scrapers_and_logs.py +0 -0
  181. {mcli_framework-7.10.0 → mcli_framework-7.10.2}/src/mcli/ml/dashboard/pages/test_portfolio.py +0 -0
  182. {mcli_framework-7.10.0 → mcli_framework-7.10.2}/src/mcli/ml/dashboard/pages/trading.py +0 -0
  183. {mcli_framework-7.10.0 → mcli_framework-7.10.2}/src/mcli/ml/dashboard/pages/workflows.py +0 -0
  184. {mcli_framework-7.10.0 → mcli_framework-7.10.2}/src/mcli/ml/dashboard/streamlit_extras_utils.py +0 -0
  185. {mcli_framework-7.10.0 → mcli_framework-7.10.2}/src/mcli/ml/dashboard/styles.py +0 -0
  186. {mcli_framework-7.10.0 → mcli_framework-7.10.2}/src/mcli/ml/dashboard/utils.py +0 -0
  187. {mcli_framework-7.10.0 → mcli_framework-7.10.2}/src/mcli/ml/dashboard/warning_suppression.py +0 -0
  188. {mcli_framework-7.10.0 → mcli_framework-7.10.2}/src/mcli/ml/data_ingestion/api_connectors.py +0 -0
  189. {mcli_framework-7.10.0 → mcli_framework-7.10.2}/src/mcli/ml/data_ingestion/data_pipeline.py +0 -0
  190. {mcli_framework-7.10.0 → mcli_framework-7.10.2}/src/mcli/ml/data_ingestion/stream_processor.py +0 -0
  191. {mcli_framework-7.10.0 → mcli_framework-7.10.2}/src/mcli/ml/database/migrations/env.py +0 -0
  192. {mcli_framework-7.10.0 → mcli_framework-7.10.2}/src/mcli/ml/database/models.py +0 -0
  193. {mcli_framework-7.10.0 → mcli_framework-7.10.2}/src/mcli/ml/database/session.py +0 -0
  194. {mcli_framework-7.10.0 → mcli_framework-7.10.2}/src/mcli/ml/experimentation/ab_testing.py +0 -0
  195. {mcli_framework-7.10.0 → mcli_framework-7.10.2}/src/mcli/ml/features/ensemble_features.py +0 -0
  196. {mcli_framework-7.10.0 → mcli_framework-7.10.2}/src/mcli/ml/features/recommendation_engine.py +0 -0
  197. {mcli_framework-7.10.0 → mcli_framework-7.10.2}/src/mcli/ml/features/stock_features.py +0 -0
  198. {mcli_framework-7.10.0 → mcli_framework-7.10.2}/src/mcli/ml/features/test_feature_engineering.py +0 -0
  199. {mcli_framework-7.10.0 → mcli_framework-7.10.2}/src/mcli/ml/logging.py +0 -0
  200. {mcli_framework-7.10.0 → mcli_framework-7.10.2}/src/mcli/ml/mlops/data_versioning.py +0 -0
  201. {mcli_framework-7.10.0 → mcli_framework-7.10.2}/src/mcli/ml/mlops/experiment_tracker.py +0 -0
  202. {mcli_framework-7.10.0 → mcli_framework-7.10.2}/src/mcli/ml/mlops/model_serving.py +0 -0
  203. {mcli_framework-7.10.0 → mcli_framework-7.10.2}/src/mcli/ml/mlops/pipeline_orchestrator.py +0 -0
  204. {mcli_framework-7.10.0 → mcli_framework-7.10.2}/src/mcli/ml/models/base_models.py +0 -0
  205. {mcli_framework-7.10.0 → mcli_framework-7.10.2}/src/mcli/ml/models/test_models.py +0 -0
  206. {mcli_framework-7.10.0 → mcli_framework-7.10.2}/src/mcli/ml/monitoring/drift_detection.py +0 -0
  207. {mcli_framework-7.10.0 → mcli_framework-7.10.2}/src/mcli/ml/monitoring/metrics.py +0 -0
  208. {mcli_framework-7.10.0 → mcli_framework-7.10.2}/src/mcli/ml/optimization/portfolio_optimizer.py +0 -0
  209. {mcli_framework-7.10.0 → mcli_framework-7.10.2}/src/mcli/ml/predictions/monte_carlo.py +0 -0
  210. {mcli_framework-7.10.0 → mcli_framework-7.10.2}/src/mcli/ml/predictions/prediction_engine.py +0 -0
  211. {mcli_framework-7.10.0 → mcli_framework-7.10.2}/src/mcli/ml/preprocessing/data_cleaners.py +0 -0
  212. {mcli_framework-7.10.0 → mcli_framework-7.10.2}/src/mcli/ml/preprocessing/feature_extractors.py +0 -0
  213. {mcli_framework-7.10.0 → mcli_framework-7.10.2}/src/mcli/ml/preprocessing/ml_pipeline.py +0 -0
  214. {mcli_framework-7.10.0 → mcli_framework-7.10.2}/src/mcli/ml/preprocessing/test_preprocessing.py +0 -0
  215. {mcli_framework-7.10.0 → mcli_framework-7.10.2}/src/mcli/ml/scripts/populate_sample_data.py +0 -0
  216. {mcli_framework-7.10.0 → mcli_framework-7.10.2}/src/mcli/ml/tasks.py +0 -0
  217. {mcli_framework-7.10.0 → mcli_framework-7.10.2}/src/mcli/ml/tests/test_integration.py +0 -0
  218. {mcli_framework-7.10.0 → mcli_framework-7.10.2}/src/mcli/ml/tests/test_training_dashboard.py +0 -0
  219. {mcli_framework-7.10.0 → mcli_framework-7.10.2}/src/mcli/ml/trading/alpaca_client.py +0 -0
  220. {mcli_framework-7.10.0 → mcli_framework-7.10.2}/src/mcli/ml/trading/migrations.py +0 -0
  221. {mcli_framework-7.10.0 → mcli_framework-7.10.2}/src/mcli/ml/trading/models.py +0 -0
  222. {mcli_framework-7.10.0 → mcli_framework-7.10.2}/src/mcli/ml/trading/paper_trading.py +0 -0
  223. {mcli_framework-7.10.0 → mcli_framework-7.10.2}/src/mcli/ml/trading/risk_management.py +0 -0
  224. {mcli_framework-7.10.0 → mcli_framework-7.10.2}/src/mcli/ml/trading/trading_service.py +0 -0
  225. {mcli_framework-7.10.0 → mcli_framework-7.10.2}/src/mcli/ml/training/train_model.py +0 -0
  226. {mcli_framework-7.10.0 → mcli_framework-7.10.2}/src/mcli/mygroup/test_cmd.py +0 -0
  227. {mcli_framework-7.10.0 → mcli_framework-7.10.2}/src/mcli/public/oi/oi.py +0 -0
  228. {mcli_framework-7.10.0 → mcli_framework-7.10.2}/src/mcli/public/public.py +0 -0
  229. {mcli_framework-7.10.0 → mcli_framework-7.10.2}/src/mcli/self/logs_cmd.py +0 -0
  230. {mcli_framework-7.10.0 → mcli_framework-7.10.2}/src/mcli/self/redis_cmd.py +0 -0
  231. {mcli_framework-7.10.0 → mcli_framework-7.10.2}/src/mcli/self/self_cmd.py +0 -0
  232. {mcli_framework-7.10.0 → mcli_framework-7.10.2}/src/mcli/self/store_cmd.py +0 -0
  233. {mcli_framework-7.10.0 → mcli_framework-7.10.2}/src/mcli/self/test_cmd.py +0 -0
  234. {mcli_framework-7.10.0 → mcli_framework-7.10.2}/src/mcli/self/visual_cmd.py +0 -0
  235. {mcli_framework-7.10.0 → mcli_framework-7.10.2}/src/mcli/self/zsh_cmd.py +0 -0
  236. {mcli_framework-7.10.0 → mcli_framework-7.10.2}/src/mcli/workflow/daemon/async_command_database.py +0 -0
  237. {mcli_framework-7.10.0 → mcli_framework-7.10.2}/src/mcli/workflow/daemon/async_process_manager.py +0 -0
  238. {mcli_framework-7.10.0 → mcli_framework-7.10.2}/src/mcli/workflow/daemon/client.py +0 -0
  239. {mcli_framework-7.10.0 → mcli_framework-7.10.2}/src/mcli/workflow/daemon/daemon.py +0 -0
  240. {mcli_framework-7.10.0 → mcli_framework-7.10.2}/src/mcli/workflow/daemon/daemon_api.py +0 -0
  241. {mcli_framework-7.10.0 → mcli_framework-7.10.2}/src/mcli/workflow/daemon/enhanced_daemon.py +0 -0
  242. {mcli_framework-7.10.0 → mcli_framework-7.10.2}/src/mcli/workflow/daemon/process_cli.py +0 -0
  243. {mcli_framework-7.10.0 → mcli_framework-7.10.2}/src/mcli/workflow/daemon/process_manager.py +0 -0
  244. {mcli_framework-7.10.0 → mcli_framework-7.10.2}/src/mcli/workflow/daemon/test_daemon.py +0 -0
  245. {mcli_framework-7.10.0 → mcli_framework-7.10.2}/src/mcli/workflow/dashboard/dashboard_cmd.py +0 -0
  246. {mcli_framework-7.10.0 → mcli_framework-7.10.2}/src/mcli/workflow/docker/docker.py +0 -0
  247. {mcli_framework-7.10.0 → mcli_framework-7.10.2}/src/mcli/workflow/gcloud/config.toml +0 -0
  248. {mcli_framework-7.10.0 → mcli_framework-7.10.2}/src/mcli/workflow/gcloud/gcloud.py +0 -0
  249. {mcli_framework-7.10.0 → mcli_framework-7.10.2}/src/mcli/workflow/lsh_integration.py +0 -0
  250. {mcli_framework-7.10.0 → mcli_framework-7.10.2}/src/mcli/workflow/model_service/client.py +0 -0
  251. {mcli_framework-7.10.0 → mcli_framework-7.10.2}/src/mcli/workflow/model_service/download_and_run_efficient_models.py +0 -0
  252. {mcli_framework-7.10.0 → mcli_framework-7.10.2}/src/mcli/workflow/model_service/lightweight_embedder.py +0 -0
  253. {mcli_framework-7.10.0 → mcli_framework-7.10.2}/src/mcli/workflow/model_service/lightweight_model_server.py +0 -0
  254. {mcli_framework-7.10.0 → mcli_framework-7.10.2}/src/mcli/workflow/model_service/lightweight_test.py +0 -0
  255. {mcli_framework-7.10.0 → mcli_framework-7.10.2}/src/mcli/workflow/model_service/model_service.py +0 -0
  256. {mcli_framework-7.10.0 → mcli_framework-7.10.2}/src/mcli/workflow/model_service/ollama_efficient_runner.py +0 -0
  257. {mcli_framework-7.10.0 → mcli_framework-7.10.2}/src/mcli/workflow/model_service/openai_adapter.py +0 -0
  258. {mcli_framework-7.10.0 → mcli_framework-7.10.2}/src/mcli/workflow/model_service/pdf_processor.py +0 -0
  259. {mcli_framework-7.10.0 → mcli_framework-7.10.2}/src/mcli/workflow/model_service/test_efficient_runner.py +0 -0
  260. {mcli_framework-7.10.0 → mcli_framework-7.10.2}/src/mcli/workflow/model_service/test_example.py +0 -0
  261. {mcli_framework-7.10.0 → mcli_framework-7.10.2}/src/mcli/workflow/model_service/test_integration.py +0 -0
  262. {mcli_framework-7.10.0 → mcli_framework-7.10.2}/src/mcli/workflow/model_service/test_new_features.py +0 -0
  263. {mcli_framework-7.10.0 → mcli_framework-7.10.2}/src/mcli/workflow/openai/openai.py +0 -0
  264. {mcli_framework-7.10.0 → mcli_framework-7.10.2}/src/mcli/workflow/registry/registry.py +0 -0
  265. {mcli_framework-7.10.0 → mcli_framework-7.10.2}/src/mcli/workflow/repo/repo.py +0 -0
  266. {mcli_framework-7.10.0 → mcli_framework-7.10.2}/src/mcli/workflow/scheduler/cron_parser.py +0 -0
  267. {mcli_framework-7.10.0 → mcli_framework-7.10.2}/src/mcli/workflow/scheduler/job.py +0 -0
  268. {mcli_framework-7.10.0 → mcli_framework-7.10.2}/src/mcli/workflow/scheduler/monitor.py +0 -0
  269. {mcli_framework-7.10.0 → mcli_framework-7.10.2}/src/mcli/workflow/scheduler/persistence.py +0 -0
  270. {mcli_framework-7.10.0 → mcli_framework-7.10.2}/src/mcli/workflow/scheduler/scheduler.py +0 -0
  271. {mcli_framework-7.10.0 → mcli_framework-7.10.2}/src/mcli/workflow/sync/test_cmd.py +0 -0
  272. {mcli_framework-7.10.0 → mcli_framework-7.10.2}/src/mcli/workflow/wakatime/wakatime.py +0 -0
  273. {mcli_framework-7.10.0 → mcli_framework-7.10.2}/src/mcli_framework.egg-info/dependency_links.txt +0 -0
  274. {mcli_framework-7.10.0 → mcli_framework-7.10.2}/src/mcli_framework.egg-info/entry_points.txt +0 -0
  275. {mcli_framework-7.10.0 → mcli_framework-7.10.2}/src/mcli_framework.egg-info/requires.txt +0 -0
  276. {mcli_framework-7.10.0 → mcli_framework-7.10.2}/src/mcli_framework.egg-info/top_level.txt +0 -0
  277. {mcli_framework-7.10.0 → mcli_framework-7.10.2}/tests/cli/test_all_commands.py +0 -0
  278. {mcli_framework-7.10.0 → mcli_framework-7.10.2}/tests/cli/test_app_logs_cmd.py +0 -0
  279. {mcli_framework-7.10.0 → mcli_framework-7.10.2}/tests/cli/test_logs_cmd.py +0 -0
  280. {mcli_framework-7.10.0 → mcli_framework-7.10.2}/tests/cli/test_main_app.py +0 -0
  281. {mcli_framework-7.10.0 → mcli_framework-7.10.2}/tests/cli/test_self_cmd.py +0 -0
  282. {mcli_framework-7.10.0 → mcli_framework-7.10.2}/tests/cli/test_self_cmd_commands.py +0 -0
  283. {mcli_framework-7.10.0 → mcli_framework-7.10.2}/tests/cli/test_self_cmd_plugins.py +0 -0
  284. {mcli_framework-7.10.0 → mcli_framework-7.10.2}/tests/cli/test_self_cmd_utilities.py +0 -0
  285. {mcli_framework-7.10.0 → mcli_framework-7.10.2}/tests/cli/test_workflow_gcloud.py +0 -0
  286. {mcli_framework-7.10.0 → mcli_framework-7.10.2}/tests/conftest.py +0 -0
  287. {mcli_framework-7.10.0 → mcli_framework-7.10.2}/tests/demo_generate_graph.py +0 -0
  288. {mcli_framework-7.10.0 → mcli_framework-7.10.2}/tests/demo_hierarchical_transform.py +0 -0
  289. {mcli_framework-7.10.0 → mcli_framework-7.10.2}/tests/e2e/test_complete_workflows.py +0 -0
  290. {mcli_framework-7.10.0 → mcli_framework-7.10.2}/tests/e2e/test_update_workflow.py +0 -0
  291. {mcli_framework-7.10.0 → mcli_framework-7.10.2}/tests/fixtures/chat_fixtures.py +0 -0
  292. {mcli_framework-7.10.0 → mcli_framework-7.10.2}/tests/fixtures/cli_fixtures.py +0 -0
  293. {mcli_framework-7.10.0 → mcli_framework-7.10.2}/tests/fixtures/data_fixtures.py +0 -0
  294. {mcli_framework-7.10.0 → mcli_framework-7.10.2}/tests/fixtures/db_fixtures.py +0 -0
  295. {mcli_framework-7.10.0 → mcli_framework-7.10.2}/tests/fixtures/model_fixtures.py +0 -0
  296. {mcli_framework-7.10.0 → mcli_framework-7.10.2}/tests/integration/test_agent.py +0 -0
  297. {mcli_framework-7.10.0 → mcli_framework-7.10.2}/tests/integration/test_chat_system.py +0 -0
  298. {mcli_framework-7.10.0 → mcli_framework-7.10.2}/tests/integration/test_daemon_server.py +0 -0
  299. {mcli_framework-7.10.0 → mcli_framework-7.10.2}/tests/integration/test_e2e_dashboard_lsh_supabase.py +0 -0
  300. {mcli_framework-7.10.0 → mcli_framework-7.10.2}/tests/integration/test_flask_webapp.py +0 -0
  301. {mcli_framework-7.10.0 → mcli_framework-7.10.2}/tests/integration/test_gcloud_services.py +0 -0
  302. {mcli_framework-7.10.0 → mcli_framework-7.10.2}/tests/integration/test_lsh_service.py +0 -0
  303. {mcli_framework-7.10.0 → mcli_framework-7.10.2}/tests/integration/test_ml_data_pipeline.py +0 -0
  304. {mcli_framework-7.10.0 → mcli_framework-7.10.2}/tests/integration/test_ml_pipeline.py +0 -0
  305. {mcli_framework-7.10.0 → mcli_framework-7.10.2}/tests/integration/test_oi_service.py +0 -0
  306. {mcli_framework-7.10.0 → mcli_framework-7.10.2}/tests/integration/test_repo_operations.py +0 -0
  307. {mcli_framework-7.10.0 → mcli_framework-7.10.2}/tests/integration/test_scheduler_integration.py +0 -0
  308. {mcli_framework-7.10.0 → mcli_framework-7.10.2}/tests/integration/test_service_registry.py +0 -0
  309. {mcli_framework-7.10.0 → mcli_framework-7.10.2}/tests/integration/test_supabase_live_connection.py +0 -0
  310. {mcli_framework-7.10.0 → mcli_framework-7.10.2}/tests/integration/test_video_processing.py +0 -0
  311. {mcli_framework-7.10.0 → mcli_framework-7.10.2}/tests/integration/test_wakatime_api.py +0 -0
  312. {mcli_framework-7.10.0 → mcli_framework-7.10.2}/tests/integration/test_webapp_full.py +0 -0
  313. {mcli_framework-7.10.0 → mcli_framework-7.10.2}/tests/integration/test_workflow.py +0 -0
  314. {mcli_framework-7.10.0 → mcli_framework-7.10.2}/tests/integration/test_workflow_commands.py +0 -0
  315. {mcli_framework-7.10.0 → mcli_framework-7.10.2}/tests/run_tests.py +0 -0
  316. {mcli_framework-7.10.0 → mcli_framework-7.10.2}/tests/test_harness.py +0 -0
  317. {mcli_framework-7.10.0 → mcli_framework-7.10.2}/tests/test_openai_adapter.py +0 -0
  318. {mcli_framework-7.10.0 → mcli_framework-7.10.2}/tests/unit/test_api_utils.py +0 -0
  319. {mcli_framework-7.10.0 → mcli_framework-7.10.2}/tests/unit/test_auth_modules.py +0 -0
  320. {mcli_framework-7.10.0 → mcli_framework-7.10.2}/tests/unit/test_bug_fixes.py +0 -0
  321. {mcli_framework-7.10.0 → mcli_framework-7.10.2}/tests/unit/test_config.py +0 -0
  322. {mcli_framework-7.10.0 → mcli_framework-7.10.2}/tests/unit/test_daemon_api.py +0 -0
  323. {mcli_framework-7.10.0 → mcli_framework-7.10.2}/tests/unit/test_dashboard_components.py +0 -0
  324. {mcli_framework-7.10.0 → mcli_framework-7.10.2}/tests/unit/test_dependencies.py +0 -0
  325. {mcli_framework-7.10.0 → mcli_framework-7.10.2}/tests/unit/test_emulator_workflow.py +0 -0
  326. {mcli_framework-7.10.0 → mcli_framework-7.10.2}/tests/unit/test_erd_generation.py +0 -0
  327. {mcli_framework-7.10.0 → mcli_framework-7.10.2}/tests/unit/test_erd_generic.py +0 -0
  328. {mcli_framework-7.10.0 → mcli_framework-7.10.2}/tests/unit/test_erd_imports.py +0 -0
  329. {mcli_framework-7.10.0 → mcli_framework-7.10.2}/tests/unit/test_git_commit_workflow.py +0 -0
  330. {mcli_framework-7.10.0 → mcli_framework-7.10.2}/tests/unit/test_lib_auth.py +0 -0
  331. {mcli_framework-7.10.0 → mcli_framework-7.10.2}/tests/unit/test_lib_files.py +0 -0
  332. {mcli_framework-7.10.0 → mcli_framework-7.10.2}/tests/unit/test_lib_utils.py +0 -0
  333. {mcli_framework-7.10.0 → mcli_framework-7.10.2}/tests/unit/test_logger.py +0 -0
  334. {mcli_framework-7.10.0 → mcli_framework-7.10.2}/tests/unit/test_ml_preprocessing.py +0 -0
  335. {mcli_framework-7.10.0 → mcli_framework-7.10.2}/tests/unit/test_paths.py +0 -0
  336. {mcli_framework-7.10.0 → mcli_framework-7.10.2}/tests/unit/test_pdf_compress.py +0 -0
  337. {mcli_framework-7.10.0 → mcli_framework-7.10.2}/tests/unit/test_prediction_engine.py +0 -0
  338. {mcli_framework-7.10.0 → mcli_framework-7.10.2}/tests/unit/test_regression.py +0 -0
  339. {mcli_framework-7.10.0 → mcli_framework-7.10.2}/tests/unit/test_scheduler.py +0 -0
  340. {mcli_framework-7.10.0 → mcli_framework-7.10.2}/tests/unit/test_scheduler_cron_parser.py +0 -0
  341. {mcli_framework-7.10.0 → mcli_framework-7.10.2}/tests/unit/test_scheduler_job.py +0 -0
  342. {mcli_framework-7.10.0 → mcli_framework-7.10.2}/tests/unit/test_scheduler_monitor.py +0 -0
  343. {mcli_framework-7.10.0 → mcli_framework-7.10.2}/tests/unit/test_scheduler_persistence.py +0 -0
  344. {mcli_framework-7.10.0 → mcli_framework-7.10.2}/tests/unit/test_self_update.py +0 -0
  345. {mcli_framework-7.10.0 → mcli_framework-7.10.2}/tests/unit/test_store_cmd.py +0 -0
  346. {mcli_framework-7.10.0 → mcli_framework-7.10.2}/tests/unit/test_supabase_connection.py +0 -0
  347. {mcli_framework-7.10.0 → mcli_framework-7.10.2}/tests/unit/test_supabase_pagination.py +0 -0
  348. {mcli_framework-7.10.0 → mcli_framework-7.10.2}/tests/unit/test_toml_utils.py +0 -0
  349. {mcli_framework-7.10.0 → mcli_framework-7.10.2}/tests/unit/test_trading_imports.py +0 -0
  350. {mcli_framework-7.10.0 → mcli_framework-7.10.2}/tests/unit/test_ui_rich.py +0 -0
  351. {mcli_framework-7.10.0 → mcli_framework-7.10.2}/tests/unit/test_uv_compat.py +0 -0
@@ -1,6 +1,3 @@
1
- # Dependabot configuration for automated dependency updates
2
- # https://docs.github.com/en/code-security/dependabot
3
-
4
1
  version: 2
5
2
  updates:
6
3
  # Python dependencies
@@ -16,31 +13,15 @@ updates:
16
13
  - "dependencies"
17
14
  - "python"
18
15
  commit-message:
19
- prefix: "chore(deps)"
16
+ prefix: "chore"
20
17
  include: "scope"
21
- # Group minor and patch updates
22
- groups:
23
- development-dependencies:
24
- patterns:
25
- - "pytest*"
26
- - "black"
27
- - "isort"
28
- - "mypy"
29
- - "flake8*"
30
- update-types:
31
- - "minor"
32
- - "patch"
33
- production-dependencies:
34
- patterns:
35
- - "*"
36
- update-types:
37
- - "patch"
38
18
 
39
19
  # GitHub Actions
40
20
  - package-ecosystem: "github-actions"
41
21
  directory: "/"
42
22
  schedule:
43
23
  interval: "weekly"
24
+ day: "monday"
44
25
  open-pull-requests-limit: 5
45
26
  reviewers:
46
27
  - "gwicho38"
@@ -48,4 +29,21 @@ updates:
48
29
  - "dependencies"
49
30
  - "github-actions"
50
31
  commit-message:
51
- prefix: "chore(ci)"
32
+ prefix: "chore"
33
+ include: "scope"
34
+
35
+ # Docker
36
+ - package-ecosystem: "docker"
37
+ directory: "/"
38
+ schedule:
39
+ interval: "weekly"
40
+ day: "monday"
41
+ open-pull-requests-limit: 5
42
+ reviewers:
43
+ - "gwicho38"
44
+ labels:
45
+ - "dependencies"
46
+ - "docker"
47
+ commit-message:
48
+ prefix: "chore"
49
+ include: "scope"
@@ -113,10 +113,19 @@ jobs:
113
113
  cd mcli_rust
114
114
  maturin develop
115
115
 
116
- - name: Run Python tests
116
+ - name: Run Python tests with coverage
117
117
  run: |
118
- pytest tests/ -v --tb=short
119
-
118
+ pytest tests/ -v --tb=short --cov=src/mcli --cov-report=xml --cov-report=term-missing
119
+
120
+ - name: Upload coverage to Codecov
121
+ uses: codecov/codecov-action@v4
122
+ if: matrix.os == 'ubuntu-latest' && matrix.python-version == '3.11'
123
+ with:
124
+ file: ./coverage.xml
125
+ flags: unittests
126
+ name: codecov-umbrella
127
+ fail_ci_if_error: false
128
+
120
129
  - name: Test CLI functionality
121
130
  run: |
122
131
  mcli version
@@ -191,11 +200,33 @@ jobs:
191
200
  security-scan:
192
201
  name: Security Scan
193
202
  runs-on: ubuntu-latest
194
-
203
+
195
204
  steps:
196
205
  - name: Checkout code
197
206
  uses: actions/checkout@v4
198
-
207
+
208
+ - name: Set up Python
209
+ uses: actions/setup-python@v4
210
+ with:
211
+ python-version: ${{ env.PYTHON_VERSION }}
212
+
213
+ - name: Install security tools
214
+ run: |
215
+ python -m pip install --upgrade pip
216
+ pip install bandit safety
217
+
218
+ - name: Run Bandit security linter
219
+ run: |
220
+ bandit -r src/ -f json -o bandit-report.json || true
221
+ bandit -r src/ -ll
222
+ continue-on-error: true
223
+
224
+ - name: Run Safety dependency check
225
+ run: |
226
+ safety check --json > safety-report.json || true
227
+ safety check
228
+ continue-on-error: true
229
+
199
230
  - name: Run Trivy vulnerability scanner
200
231
  uses: aquasecurity/trivy-action@master
201
232
  with:
@@ -203,7 +234,8 @@ jobs:
203
234
  scan-ref: '.'
204
235
  format: 'sarif'
205
236
  output: 'trivy-results.sarif'
206
-
237
+ severity: 'CRITICAL,HIGH'
238
+
207
239
  - name: Upload Trivy scan results
208
240
  uses: github/codeql-action/upload-sarif@v3
209
241
  if: always()
@@ -211,6 +243,16 @@ jobs:
211
243
  with:
212
244
  sarif_file: 'trivy-results.sarif'
213
245
 
246
+ - name: Upload security reports
247
+ uses: actions/upload-artifact@v3
248
+ if: always()
249
+ with:
250
+ name: security-reports
251
+ path: |
252
+ bandit-report.json
253
+ safety-report.json
254
+ retention-days: 30
255
+
214
256
  build-package:
215
257
  name: Build Distribution Package
216
258
  runs-on: ubuntu-latest
@@ -0,0 +1,43 @@
1
+ name: CodeQL Security Analysis
2
+
3
+ on:
4
+ push:
5
+ branches: [ main, develop ]
6
+ pull_request:
7
+ branches: [ main ]
8
+ schedule:
9
+ # Run at 00:00 every Sunday
10
+ - cron: '0 0 * * 0'
11
+ workflow_dispatch:
12
+
13
+ jobs:
14
+ analyze:
15
+ name: Analyze Code with CodeQL
16
+ runs-on: ubuntu-latest
17
+ permissions:
18
+ actions: read
19
+ contents: read
20
+ security-events: write
21
+
22
+ strategy:
23
+ fail-fast: false
24
+ matrix:
25
+ language: [ 'python' ]
26
+
27
+ steps:
28
+ - name: Checkout repository
29
+ uses: actions/checkout@v4
30
+
31
+ - name: Initialize CodeQL
32
+ uses: github/codeql-action/init@v3
33
+ with:
34
+ languages: ${{ matrix.language }}
35
+ queries: +security-and-quality
36
+
37
+ - name: Autobuild
38
+ uses: github/codeql-action/autobuild@v3
39
+
40
+ - name: Perform CodeQL Analysis
41
+ uses: github/codeql-action/analyze@v3
42
+ with:
43
+ category: "/language:${{ matrix.language }}"
@@ -0,0 +1,76 @@
1
+ # Docs for the Azure Web Apps Deploy action: https://github.com/Azure/webapps-deploy
2
+ # More GitHub Actions for Azure: https://github.com/Azure/actions
3
+ # More info on Python, GitHub Actions, and Azure App Service: https://aka.ms/python-webapps-actions
4
+
5
+ name: Build and deploy Python app to Azure Web App - mcli
6
+
7
+ on:
8
+ push:
9
+ branches:
10
+ - main
11
+ workflow_dispatch:
12
+
13
+ jobs:
14
+ build:
15
+ runs-on: ubuntu-latest
16
+ permissions:
17
+ contents: read #This is required for actions/checkout
18
+
19
+ steps:
20
+ - uses: actions/checkout@v4
21
+
22
+ - name: Set up Python version
23
+ uses: actions/setup-python@v5
24
+ with:
25
+ python-version: '3.x'
26
+
27
+ # 🛠️ Local Build Section (Optional)
28
+ # The following section in your workflow is designed to catch build issues early on the client side, before deployment. This can be helpful for debugging and validation. However, if this step significantly increases deployment time and early detection is not critical for your workflow, you may remove this section to streamline the deployment process.
29
+ - name: Create and Start virtual environment and Install dependencies
30
+ run: |
31
+ python -m venv antenv
32
+ source antenv/bin/activate
33
+ pip install -r requirements.txt
34
+
35
+ # By default, when you enable GitHub CI/CD integration through the Azure portal, the platform automatically sets the SCM_DO_BUILD_DURING_DEPLOYMENT application setting to true. This triggers the use of Oryx, a build engine that handles application compilation and dependency installation (e.g., pip install) directly on the platform during deployment. Hence, we exclude the antenv virtual environment directory from the deployment artifact to reduce the payload size.
36
+ - name: Upload artifact for deployment jobs
37
+ uses: actions/upload-artifact@v4
38
+ with:
39
+ name: python-app
40
+ path: |
41
+ .
42
+ !antenv/
43
+
44
+ # 🚫 Opting Out of Oryx Build
45
+ # If you prefer to disable the Oryx build process during deployment, follow these steps:
46
+ # 1. Remove the SCM_DO_BUILD_DURING_DEPLOYMENT app setting from your Azure App Service Environment variables.
47
+ # 2. Refer to sample workflows for alternative deployment strategies: https://github.com/Azure/actions-workflow-samples/tree/master/AppService
48
+
49
+
50
+ deploy:
51
+ runs-on: ubuntu-latest
52
+ needs: build
53
+ permissions:
54
+ id-token: write #This is required for requesting the JWT
55
+ contents: read #This is required for actions/checkout
56
+
57
+ steps:
58
+ - name: Download artifact from build job
59
+ uses: actions/download-artifact@v4
60
+ with:
61
+ name: python-app
62
+
63
+ - name: Login to Azure
64
+ uses: azure/login@v2
65
+ with:
66
+ client-id: ${{ secrets.AZUREAPPSERVICE_CLIENTID_83BA9E673F8446BE82F742FB6394A06F }}
67
+ tenant-id: ${{ secrets.AZUREAPPSERVICE_TENANTID_6D1336E8E2224AF899A4E08410F7A172 }}
68
+ subscription-id: ${{ secrets.AZUREAPPSERVICE_SUBSCRIPTIONID_921B80061CBE4DF0B9BCF8E87DA28876 }}
69
+
70
+ - name: 'Deploy to Azure Web App'
71
+ uses: azure/webapps-deploy@v3
72
+ id: deploy-to-webapp
73
+ with:
74
+ app-name: 'mcli'
75
+ slot-name: 'Production'
76
+
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: mcli-framework
3
- Version: 7.10.0
3
+ Version: 7.10.2
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>
@@ -160,6 +160,11 @@ Dynamic: license-file
160
160
 
161
161
  # MCLI - Portable Workflow Framework
162
162
 
163
+ [![codecov](https://codecov.io/gh/gwicho38/mcli/branch/main/graph/badge.svg)](https://codecov.io/gh/gwicho38/mcli)
164
+ [![Tests](https://github.com/gwicho38/mcli/workflows/CI%2FCD%20Pipeline/badge.svg)](https://github.com/gwicho38/mcli/actions)
165
+ [![Python Version](https://img.shields.io/badge/python-3.9%20%7C%203.10%20%7C%203.11%20%7C%203.12-blue)](https://www.python.org/downloads/)
166
+ [![License](https://img.shields.io/badge/license-MIT-green.svg)](LICENSE)
167
+
163
168
  **Transform any script into a versioned, portable, schedulable workflow command.**
164
169
 
165
170
  MCLI is a modular CLI framework that lets you write scripts once and run them anywhere - as interactive commands, scheduled jobs, or background daemons. Your workflows live in `~/.mcli/commands/`, are versioned via lockfile, and completely decoupled from the engine source code.
@@ -170,6 +175,35 @@ Write a script. Store it. Version it. Run it anywhere. Schedule it. Share it.
170
175
 
171
176
  No coupling to the engine. No vendor lock-in. Just portable workflows that work.
172
177
 
178
+ ## 🚀 Visual Workflow Editing
179
+
180
+ Edit your workflow JSON files like Jupyter notebooks with our VSCode extension!
181
+
182
+ [![VSCode Extension](https://img.shields.io/badge/VSCode-Extension-blue?logo=visualstudiocode)](vscode-extension/)
183
+ [![Visual Editing](https://img.shields.io/badge/workflows-visual%20editing-brightgreen)](vscode-extension/)
184
+
185
+ **Features:**
186
+ - 📝 Cell-based editing (Jupyter-like interface)
187
+ - ⚡ Live code execution (Python, Shell, Bash, Zsh, Fish)
188
+ - 🎯 Monaco editor with IntelliSense
189
+ - 📊 Rich markdown documentation cells
190
+ - 💾 Files stay as `.json` (git-friendly)
191
+
192
+ **Quick Install:**
193
+ ```bash
194
+ # From VSCode Marketplace (pending publication)
195
+ code --install-extension gwicho38.mcli-framework
196
+
197
+ # Or install from VSIX
198
+ code --install-extension vscode-extension/mcli-framework-1.0.0.vsix
199
+ ```
200
+
201
+ **Learn More:**
202
+ - [Extension README](vscode-extension/README.md) - Features and usage
203
+ - [Visual Editing Guide](README-VISUAL-EDITING.md) - Quick start
204
+ - [Installation Guide](vscode-extension/INSTALL.md) - Detailed setup
205
+ - [Workflow Notebooks Docs](docs/workflow-notebooks.md) - Complete guide
206
+
173
207
  ## ⚡ Quick Start
174
208
 
175
209
  ### Installation
@@ -450,7 +484,7 @@ Available workflows:
450
484
  - **redis** - Redis cache management
451
485
  - **videos** - Video processing and overlay removal
452
486
  - **sync** - Multi-cloud synchronization
453
- - **politician-trading** - Financial data collection (specialized)
487
+ - **politician-trading** - Now available as standalone package: [politician-trading-tracker](https://github.com/gwicho38/politician-trading-tracker)
454
488
 
455
489
  ## 💡 Why MCLI?
456
490
 
@@ -478,7 +512,7 @@ You write scripts. They work. Then:
478
512
 
479
513
  ```bash
480
514
  # Install completion for your shell
481
- mcli completion install
515
+ mcli self completion install
482
516
 
483
517
  # Now use tab completion
484
518
  mcli workflow <TAB> # Shows all workflows
@@ -1,5 +1,10 @@
1
1
  # MCLI - Portable Workflow Framework
2
2
 
3
+ [![codecov](https://codecov.io/gh/gwicho38/mcli/branch/main/graph/badge.svg)](https://codecov.io/gh/gwicho38/mcli)
4
+ [![Tests](https://github.com/gwicho38/mcli/workflows/CI%2FCD%20Pipeline/badge.svg)](https://github.com/gwicho38/mcli/actions)
5
+ [![Python Version](https://img.shields.io/badge/python-3.9%20%7C%203.10%20%7C%203.11%20%7C%203.12-blue)](https://www.python.org/downloads/)
6
+ [![License](https://img.shields.io/badge/license-MIT-green.svg)](LICENSE)
7
+
3
8
  **Transform any script into a versioned, portable, schedulable workflow command.**
4
9
 
5
10
  MCLI is a modular CLI framework that lets you write scripts once and run them anywhere - as interactive commands, scheduled jobs, or background daemons. Your workflows live in `~/.mcli/commands/`, are versioned via lockfile, and completely decoupled from the engine source code.
@@ -10,6 +15,35 @@ Write a script. Store it. Version it. Run it anywhere. Schedule it. Share it.
10
15
 
11
16
  No coupling to the engine. No vendor lock-in. Just portable workflows that work.
12
17
 
18
+ ## 🚀 Visual Workflow Editing
19
+
20
+ Edit your workflow JSON files like Jupyter notebooks with our VSCode extension!
21
+
22
+ [![VSCode Extension](https://img.shields.io/badge/VSCode-Extension-blue?logo=visualstudiocode)](vscode-extension/)
23
+ [![Visual Editing](https://img.shields.io/badge/workflows-visual%20editing-brightgreen)](vscode-extension/)
24
+
25
+ **Features:**
26
+ - 📝 Cell-based editing (Jupyter-like interface)
27
+ - ⚡ Live code execution (Python, Shell, Bash, Zsh, Fish)
28
+ - 🎯 Monaco editor with IntelliSense
29
+ - 📊 Rich markdown documentation cells
30
+ - 💾 Files stay as `.json` (git-friendly)
31
+
32
+ **Quick Install:**
33
+ ```bash
34
+ # From VSCode Marketplace (pending publication)
35
+ code --install-extension gwicho38.mcli-framework
36
+
37
+ # Or install from VSIX
38
+ code --install-extension vscode-extension/mcli-framework-1.0.0.vsix
39
+ ```
40
+
41
+ **Learn More:**
42
+ - [Extension README](vscode-extension/README.md) - Features and usage
43
+ - [Visual Editing Guide](README-VISUAL-EDITING.md) - Quick start
44
+ - [Installation Guide](vscode-extension/INSTALL.md) - Detailed setup
45
+ - [Workflow Notebooks Docs](docs/workflow-notebooks.md) - Complete guide
46
+
13
47
  ## ⚡ Quick Start
14
48
 
15
49
  ### Installation
@@ -290,7 +324,7 @@ Available workflows:
290
324
  - **redis** - Redis cache management
291
325
  - **videos** - Video processing and overlay removal
292
326
  - **sync** - Multi-cloud synchronization
293
- - **politician-trading** - Financial data collection (specialized)
327
+ - **politician-trading** - Now available as standalone package: [politician-trading-tracker](https://github.com/gwicho38/politician-trading-tracker)
294
328
 
295
329
  ## 💡 Why MCLI?
296
330
 
@@ -318,7 +352,7 @@ You write scripts. They work. Then:
318
352
 
319
353
  ```bash
320
354
  # Install completion for your shell
321
- mcli completion install
355
+ mcli self completion install
322
356
 
323
357
  # Now use tab completion
324
358
  mcli workflow <TAB> # Shows all workflows
@@ -1,6 +1,6 @@
1
1
  [project]
2
2
  name = "mcli-framework"
3
- version = "7.10.0"
3
+ version = "7.10.2"
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"
@@ -253,6 +253,8 @@ ignore_missing_imports = true
253
253
  mypy_path = "src"
254
254
  namespace_packages = true
255
255
  explicit_package_bases = true
256
+ follow_imports = "normal"
257
+ follow_imports_for_stubs = true
256
258
 
257
259
  # Output
258
260
  show_error_codes = true
@@ -260,6 +262,24 @@ show_column_numbers = true
260
262
  show_error_context = true
261
263
  color_output = true
262
264
  error_summary = true
265
+ pretty = true
266
+
267
+ # Error reporting
268
+ show_traceback = true
269
+ raise_exceptions = false
270
+
271
+ # Incremental mode
272
+ incremental = true
273
+ cache_dir = ".mypy_cache"
274
+
275
+ # Strict options for core modules (enable gradually)
276
+ # disallow_any_unimported = false
277
+ # disallow_any_expr = false
278
+ # disallow_any_decorated = false
279
+ # disallow_any_explicit = false
280
+ # disallow_subclassing_any = false
281
+ # strict_optional = true
282
+ # warn_incomplete_stub = true
263
283
 
264
284
  # Per-module options
265
285
  [[tool.mypy.overrides]]
@@ -278,6 +298,19 @@ module = [
278
298
  ]
279
299
  warn_return_any = false
280
300
 
301
+ # Ignore missing imports for optional dependencies
302
+ [[tool.mypy.overrides]]
303
+ module = [
304
+ "ollama.*",
305
+ "streamlit.*",
306
+ "torch.*",
307
+ "transformers.*",
308
+ "mlflow.*",
309
+ "plotly.*",
310
+ "supabase.*",
311
+ ]
312
+ ignore_missing_imports = true
313
+
281
314
  [build-system]
282
315
  requires = ["setuptools>=65.0.0", "wheel>=0.40.0"]
283
316
  build-backend = "setuptools.build_meta"
@@ -287,6 +320,7 @@ dev = [
287
320
  "black>=25.1.0",
288
321
  "isort>=5.13.2",
289
322
  "mypy>=1.16.1",
323
+ "pylint>=3.0.0",
290
324
  "pytest>=8.4.1",
291
325
  "pytest-cov>=4.1.0",
292
326
  "pre-commit>=3.6.0",
@@ -342,6 +376,8 @@ show_missing = true
342
376
  precision = 2
343
377
  skip_covered = false
344
378
  skip_empty = false
379
+ # Fail if coverage is below threshold
380
+ fail_under = 30.0
345
381
 
346
382
  [tool.coverage.html]
347
383
  directory = "htmlcov"
@@ -107,15 +107,25 @@ class CustomCommandManager:
107
107
  """
108
108
  Load all custom commands from the commands directory.
109
109
 
110
+ Automatically filters out test commands (starting with 'test_' or 'test-')
111
+ unless MCLI_INCLUDE_TEST_COMMANDS=true is set.
112
+
110
113
  Returns:
111
114
  List of command data dictionaries
112
115
  """
113
116
  commands = []
117
+ include_test = os.environ.get('MCLI_INCLUDE_TEST_COMMANDS', 'false').lower() == 'true'
118
+
114
119
  for command_file in self.commands_dir.glob("*.json"):
115
120
  # Skip the lockfile
116
121
  if command_file.name == "commands.lock.json":
117
122
  continue
118
123
 
124
+ # Skip test commands unless explicitly included
125
+ if not include_test and command_file.stem.startswith(('test_', 'test-')):
126
+ logger.debug(f"Skipping test command: {command_file.name}")
127
+ continue
128
+
119
129
  command_data = self.load_command(command_file)
120
130
  if command_data:
121
131
  commands.append(command_data)