mcli-framework 7.10.1__tar.gz → 7.11.0__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.
- {mcli_framework-7.10.1 → mcli_framework-7.11.0}/.github/dependabot.yml +20 -22
- {mcli_framework-7.10.1 → mcli_framework-7.11.0}/.github/workflows/ci.yml +48 -6
- mcli_framework-7.11.0/.github/workflows/codeql.yml +43 -0
- mcli_framework-7.11.0/.github/workflows/main_mcli.yml +76 -0
- {mcli_framework-7.10.1 → mcli_framework-7.11.0}/PKG-INFO +86 -55
- {mcli_framework-7.10.1 → mcli_framework-7.11.0}/README.md +85 -54
- {mcli_framework-7.10.1 → mcli_framework-7.11.0}/pyproject.toml +37 -1
- {mcli_framework-7.10.1 → mcli_framework-7.11.0}/src/mcli/app/commands_cmd.py +150 -58
- {mcli_framework-7.10.1 → mcli_framework-7.11.0}/src/mcli/app/main.py +21 -27
- {mcli_framework-7.10.1 → mcli_framework-7.11.0}/src/mcli/lib/custom_commands.py +62 -12
- mcli_framework-7.11.0/src/mcli/lib/optional_deps.py +240 -0
- mcli_framework-7.11.0/src/mcli/lib/paths.py +218 -0
- mcli_framework-7.11.0/src/mcli/self/migrate_cmd.py +261 -0
- {mcli_framework-7.10.1 → mcli_framework-7.11.0}/src/mcli/self/self_cmd.py +8 -0
- {mcli_framework-7.10.1 → mcli_framework-7.11.0}/src/mcli/workflow/git_commit/ai_service.py +13 -2
- mcli_framework-7.11.0/src/mcli/workflow/notebook/converter.py +375 -0
- mcli_framework-7.11.0/src/mcli/workflow/notebook/notebook_cmd.py +441 -0
- mcli_framework-7.11.0/src/mcli/workflow/notebook/schema.py +402 -0
- mcli_framework-7.11.0/src/mcli/workflow/notebook/validator.py +313 -0
- mcli_framework-7.11.0/src/mcli/workflow/secrets/secrets_cmd.py +192 -0
- mcli_framework-7.11.0/src/mcli/workflow/workflow.py +48 -0
- {mcli_framework-7.10.1 → mcli_framework-7.11.0}/src/mcli_framework.egg-info/PKG-INFO +86 -55
- {mcli_framework-7.10.1 → mcli_framework-7.11.0}/src/mcli_framework.egg-info/SOURCES.txt +13 -27
- {mcli_framework-7.10.1 → mcli_framework-7.11.0}/tests/cli/test_app_redis_cmd.py +1 -0
- {mcli_framework-7.10.1 → mcli_framework-7.11.0}/tests/cli/test_model_cmd.py +3 -0
- {mcli_framework-7.10.1 → mcli_framework-7.11.0}/tests/cli/test_workflow_file.py +3 -0
- {mcli_framework-7.10.1 → mcli_framework-7.11.0}/tests/cli/test_workflow_registry.py +3 -0
- {mcli_framework-7.10.1 → mcli_framework-7.11.0}/tests/e2e/test_model_workflow.py +3 -0
- {mcli_framework-7.10.1 → mcli_framework-7.11.0}/tests/e2e/test_new_user_workflow.py +3 -0
- {mcli_framework-7.10.1 → mcli_framework-7.11.0}/tests/integration/test_chat_client.py +3 -0
- {mcli_framework-7.10.1 → mcli_framework-7.11.0}/tests/integration/test_lsh_client.py +3 -0
- {mcli_framework-7.10.1 → mcli_framework-7.11.0}/tests/integration/test_ml_auth.py +3 -0
- {mcli_framework-7.10.1 → mcli_framework-7.11.0}/tests/integration/test_ml_models.py +4 -0
- {mcli_framework-7.10.1 → mcli_framework-7.11.0}/tests/integration/test_module_imports.py +3 -3
- {mcli_framework-7.10.1 → mcli_framework-7.11.0}/tests/unit/test_async_process_manager.py +5 -0
- {mcli_framework-7.10.1 → mcli_framework-7.11.0}/tests/unit/test_custom_commands.py +6 -0
- mcli_framework-7.11.0/tests/unit/test_custom_commands_filtering.py +164 -0
- {mcli_framework-7.10.1 → mcli_framework-7.11.0}/tests/unit/test_dashboard_functions.py +5 -0
- {mcli_framework-7.10.1 → mcli_framework-7.11.0}/tests/unit/test_dashboard_pages.py +1 -0
- mcli_framework-7.11.0/tests/unit/test_optional_deps.py +211 -0
- mcli_framework-7.11.0/tests/unit/workflow/test_notebook.py +443 -0
- mcli_framework-7.10.1/src/mcli/lib/paths.py +0 -94
- mcli_framework-7.10.1/src/mcli/ml/features/political_features.py +0 -677
- mcli_framework-7.10.1/src/mcli/ml/preprocessing/politician_trading_preprocessor.py +0 -570
- mcli_framework-7.10.1/src/mcli/workflow/politician_trading/config.py +0 -134
- mcli_framework-7.10.1/src/mcli/workflow/politician_trading/connectivity.py +0 -492
- mcli_framework-7.10.1/src/mcli/workflow/politician_trading/data_sources.py +0 -654
- mcli_framework-7.10.1/src/mcli/workflow/politician_trading/database.py +0 -412
- mcli_framework-7.10.1/src/mcli/workflow/politician_trading/demo.py +0 -249
- mcli_framework-7.10.1/src/mcli/workflow/politician_trading/models.py +0 -327
- mcli_framework-7.10.1/src/mcli/workflow/politician_trading/monitoring.py +0 -413
- mcli_framework-7.10.1/src/mcli/workflow/politician_trading/scrapers.py +0 -1074
- mcli_framework-7.10.1/src/mcli/workflow/politician_trading/scrapers_california.py +0 -434
- mcli_framework-7.10.1/src/mcli/workflow/politician_trading/scrapers_corporate_registry.py +0 -797
- mcli_framework-7.10.1/src/mcli/workflow/politician_trading/scrapers_eu.py +0 -376
- mcli_framework-7.10.1/src/mcli/workflow/politician_trading/scrapers_free_sources.py +0 -509
- mcli_framework-7.10.1/src/mcli/workflow/politician_trading/scrapers_third_party.py +0 -373
- mcli_framework-7.10.1/src/mcli/workflow/politician_trading/scrapers_uk.py +0 -378
- mcli_framework-7.10.1/src/mcli/workflow/politician_trading/scrapers_us_states.py +0 -471
- mcli_framework-7.10.1/src/mcli/workflow/politician_trading/seed_database.py +0 -520
- mcli_framework-7.10.1/src/mcli/workflow/politician_trading/supabase_functions.py +0 -354
- mcli_framework-7.10.1/src/mcli/workflow/politician_trading/workflow.py +0 -879
- mcli_framework-7.10.1/src/mcli/workflow/workflow.py +0 -18
- mcli_framework-7.10.1/tests/integration/test_california_scraper.py +0 -86
- mcli_framework-7.10.1/tests/integration/test_congress_scraper.py +0 -90
- mcli_framework-7.10.1/tests/integration/test_daemon_client.py +0 -356
- mcli_framework-7.10.1/tests/integration/test_politician_trading.py +0 -358
- mcli_framework-7.10.1/tests/integration/test_uk_scraper.py +0 -86
- mcli_framework-7.10.1/tests/integration/test_us_states_scraper.py +0 -95
- {mcli_framework-7.10.1 → mcli_framework-7.11.0}/.github/workflows/build.yml +0 -0
- {mcli_framework-7.10.1 → mcli_framework-7.11.0}/.github/workflows/ml-pipeline.yml +0 -0
- {mcli_framework-7.10.1 → mcli_framework-7.11.0}/.github/workflows/publish-self-hosted.yml +0 -0
- {mcli_framework-7.10.1 → mcli_framework-7.11.0}/.github/workflows/publish.yml +0 -0
- {mcli_framework-7.10.1 → mcli_framework-7.11.0}/.github/workflows/release.yml +0 -0
- {mcli_framework-7.10.1 → mcli_framework-7.11.0}/.github/workflows/security.yml +0 -0
- {mcli_framework-7.10.1 → mcli_framework-7.11.0}/.github/workflows/test.yml +0 -0
- {mcli_framework-7.10.1 → mcli_framework-7.11.0}/LICENSE +0 -0
- {mcli_framework-7.10.1 → mcli_framework-7.11.0}/MANIFEST.in +0 -0
- {mcli_framework-7.10.1 → mcli_framework-7.11.0}/mcli_rust/Cargo.toml +0 -0
- {mcli_framework-7.10.1 → mcli_framework-7.11.0}/mcli_rust/src/command_parser.rs +0 -0
- {mcli_framework-7.10.1 → mcli_framework-7.11.0}/mcli_rust/src/file_watcher.rs +0 -0
- {mcli_framework-7.10.1 → mcli_framework-7.11.0}/mcli_rust/src/lib.rs +0 -0
- {mcli_framework-7.10.1 → mcli_framework-7.11.0}/mcli_rust/src/process_manager.rs +0 -0
- {mcli_framework-7.10.1 → mcli_framework-7.11.0}/mcli_rust/src/tfidf.rs +0 -0
- {mcli_framework-7.10.1 → mcli_framework-7.11.0}/setup.cfg +0 -0
- {mcli_framework-7.10.1 → mcli_framework-7.11.0}/src/mcli/app/completion_helpers.py +0 -0
- {mcli_framework-7.10.1 → mcli_framework-7.11.0}/src/mcli/app/model/model.py +0 -0
- {mcli_framework-7.10.1 → mcli_framework-7.11.0}/src/mcli/app/model_cmd.py +0 -0
- {mcli_framework-7.10.1 → mcli_framework-7.11.0}/src/mcli/app/video/video.py +0 -0
- {mcli_framework-7.10.1 → mcli_framework-7.11.0}/src/mcli/chat/chat.py +0 -0
- {mcli_framework-7.10.1 → mcli_framework-7.11.0}/src/mcli/chat/command_rag.py +0 -0
- {mcli_framework-7.10.1 → mcli_framework-7.11.0}/src/mcli/chat/enhanced_chat.py +0 -0
- {mcli_framework-7.10.1 → mcli_framework-7.11.0}/src/mcli/chat/system_controller.py +0 -0
- {mcli_framework-7.10.1 → mcli_framework-7.11.0}/src/mcli/chat/system_integration.py +0 -0
- {mcli_framework-7.10.1 → mcli_framework-7.11.0}/src/mcli/cli.py +0 -0
- {mcli_framework-7.10.1 → mcli_framework-7.11.0}/src/mcli/config.toml +0 -0
- {mcli_framework-7.10.1 → mcli_framework-7.11.0}/src/mcli/lib/api/api.py +0 -0
- {mcli_framework-7.10.1 → mcli_framework-7.11.0}/src/mcli/lib/api/daemon_client.py +0 -0
- {mcli_framework-7.10.1 → mcli_framework-7.11.0}/src/mcli/lib/api/daemon_client_local.py +0 -0
- {mcli_framework-7.10.1 → mcli_framework-7.11.0}/src/mcli/lib/api/daemon_decorator.py +0 -0
- {mcli_framework-7.10.1 → mcli_framework-7.11.0}/src/mcli/lib/api/mcli_decorators.py +0 -0
- {mcli_framework-7.10.1 → mcli_framework-7.11.0}/src/mcli/lib/auth/auth.py +0 -0
- {mcli_framework-7.10.1 → mcli_framework-7.11.0}/src/mcli/lib/auth/aws_manager.py +0 -0
- {mcli_framework-7.10.1 → mcli_framework-7.11.0}/src/mcli/lib/auth/azure_manager.py +0 -0
- {mcli_framework-7.10.1 → mcli_framework-7.11.0}/src/mcli/lib/auth/credential_manager.py +0 -0
- {mcli_framework-7.10.1 → mcli_framework-7.11.0}/src/mcli/lib/auth/gcp_manager.py +0 -0
- {mcli_framework-7.10.1 → mcli_framework-7.11.0}/src/mcli/lib/auth/key_manager.py +0 -0
- {mcli_framework-7.10.1 → mcli_framework-7.11.0}/src/mcli/lib/auth/mcli_manager.py +0 -0
- {mcli_framework-7.10.1 → mcli_framework-7.11.0}/src/mcli/lib/auth/token_manager.py +0 -0
- {mcli_framework-7.10.1 → mcli_framework-7.11.0}/src/mcli/lib/auth/token_util.py +0 -0
- {mcli_framework-7.10.1 → mcli_framework-7.11.0}/src/mcli/lib/config/config.py +0 -0
- {mcli_framework-7.10.1 → mcli_framework-7.11.0}/src/mcli/lib/discovery/__init__.py +0 -0
- {mcli_framework-7.10.1 → mcli_framework-7.11.0}/src/mcli/lib/discovery/command_discovery.py +0 -0
- {mcli_framework-7.10.1 → mcli_framework-7.11.0}/src/mcli/lib/erd/erd.py +0 -0
- {mcli_framework-7.10.1 → mcli_framework-7.11.0}/src/mcli/lib/erd/generate_graph.py +0 -0
- {mcli_framework-7.10.1 → mcli_framework-7.11.0}/src/mcli/lib/files/files.py +0 -0
- {mcli_framework-7.10.1 → mcli_framework-7.11.0}/src/mcli/lib/fs/fs.py +0 -0
- {mcli_framework-7.10.1 → mcli_framework-7.11.0}/src/mcli/lib/lib.py +0 -0
- {mcli_framework-7.10.1 → mcli_framework-7.11.0}/src/mcli/lib/logger/logger.py +0 -0
- {mcli_framework-7.10.1 → mcli_framework-7.11.0}/src/mcli/lib/performance/optimizer.py +0 -0
- {mcli_framework-7.10.1 → mcli_framework-7.11.0}/src/mcli/lib/performance/rust_bridge.py +0 -0
- {mcli_framework-7.10.1 → mcli_framework-7.11.0}/src/mcli/lib/performance/uvloop_config.py +0 -0
- {mcli_framework-7.10.1 → mcli_framework-7.11.0}/src/mcli/lib/pickles/pickles.py +0 -0
- {mcli_framework-7.10.1 → mcli_framework-7.11.0}/src/mcli/lib/search/cached_vectorizer.py +0 -0
- {mcli_framework-7.10.1 → mcli_framework-7.11.0}/src/mcli/lib/secrets/commands.py +0 -0
- {mcli_framework-7.10.1 → mcli_framework-7.11.0}/src/mcli/lib/secrets/manager.py +0 -0
- {mcli_framework-7.10.1 → mcli_framework-7.11.0}/src/mcli/lib/secrets/repl.py +0 -0
- {mcli_framework-7.10.1 → mcli_framework-7.11.0}/src/mcli/lib/secrets/store.py +0 -0
- {mcli_framework-7.10.1 → mcli_framework-7.11.0}/src/mcli/lib/services/data_pipeline.py +0 -0
- {mcli_framework-7.10.1 → mcli_framework-7.11.0}/src/mcli/lib/services/lsh_client.py +0 -0
- {mcli_framework-7.10.1 → mcli_framework-7.11.0}/src/mcli/lib/services/redis_service.py +0 -0
- {mcli_framework-7.10.1 → mcli_framework-7.11.0}/src/mcli/lib/shell/shell.py +0 -0
- {mcli_framework-7.10.1 → mcli_framework-7.11.0}/src/mcli/lib/toml/toml.py +0 -0
- {mcli_framework-7.10.1 → mcli_framework-7.11.0}/src/mcli/lib/ui/styling.py +0 -0
- {mcli_framework-7.10.1 → mcli_framework-7.11.0}/src/mcli/lib/ui/visual_effects.py +0 -0
- {mcli_framework-7.10.1 → mcli_framework-7.11.0}/src/mcli/lib/watcher/watcher.py +0 -0
- {mcli_framework-7.10.1 → mcli_framework-7.11.0}/src/mcli/ml/api/app.py +0 -0
- {mcli_framework-7.10.1 → mcli_framework-7.11.0}/src/mcli/ml/api/middleware.py +0 -0
- {mcli_framework-7.10.1 → mcli_framework-7.11.0}/src/mcli/ml/api/routers/admin_router.py +0 -0
- {mcli_framework-7.10.1 → mcli_framework-7.11.0}/src/mcli/ml/api/routers/auth_router.py +0 -0
- {mcli_framework-7.10.1 → mcli_framework-7.11.0}/src/mcli/ml/api/routers/backtest_router.py +0 -0
- {mcli_framework-7.10.1 → mcli_framework-7.11.0}/src/mcli/ml/api/routers/data_router.py +0 -0
- {mcli_framework-7.10.1 → mcli_framework-7.11.0}/src/mcli/ml/api/routers/model_router.py +0 -0
- {mcli_framework-7.10.1 → mcli_framework-7.11.0}/src/mcli/ml/api/routers/monitoring_router.py +0 -0
- {mcli_framework-7.10.1 → mcli_framework-7.11.0}/src/mcli/ml/api/routers/portfolio_router.py +0 -0
- {mcli_framework-7.10.1 → mcli_framework-7.11.0}/src/mcli/ml/api/routers/prediction_router.py +0 -0
- {mcli_framework-7.10.1 → mcli_framework-7.11.0}/src/mcli/ml/api/routers/trade_router.py +0 -0
- {mcli_framework-7.10.1 → mcli_framework-7.11.0}/src/mcli/ml/api/routers/websocket_router.py +0 -0
- {mcli_framework-7.10.1 → mcli_framework-7.11.0}/src/mcli/ml/api/schemas.py +0 -0
- {mcli_framework-7.10.1 → mcli_framework-7.11.0}/src/mcli/ml/auth/auth_manager.py +0 -0
- {mcli_framework-7.10.1 → mcli_framework-7.11.0}/src/mcli/ml/auth/models.py +0 -0
- {mcli_framework-7.10.1 → mcli_framework-7.11.0}/src/mcli/ml/auth/permissions.py +0 -0
- {mcli_framework-7.10.1 → mcli_framework-7.11.0}/src/mcli/ml/backtesting/backtest_engine.py +0 -0
- {mcli_framework-7.10.1 → mcli_framework-7.11.0}/src/mcli/ml/backtesting/performance_metrics.py +0 -0
- {mcli_framework-7.10.1 → mcli_framework-7.11.0}/src/mcli/ml/backtesting/run.py +0 -0
- {mcli_framework-7.10.1 → mcli_framework-7.11.0}/src/mcli/ml/cache.py +0 -0
- {mcli_framework-7.10.1 → mcli_framework-7.11.0}/src/mcli/ml/cli/main.py +0 -0
- {mcli_framework-7.10.1 → mcli_framework-7.11.0}/src/mcli/ml/config/settings.py +0 -0
- {mcli_framework-7.10.1 → mcli_framework-7.11.0}/src/mcli/ml/configs/dvc_config.py +0 -0
- {mcli_framework-7.10.1 → mcli_framework-7.11.0}/src/mcli/ml/configs/mlflow_config.py +0 -0
- {mcli_framework-7.10.1 → mcli_framework-7.11.0}/src/mcli/ml/configs/mlops_manager.py +0 -0
- {mcli_framework-7.10.1 → mcli_framework-7.11.0}/src/mcli/ml/dashboard/app.py +0 -0
- {mcli_framework-7.10.1 → mcli_framework-7.11.0}/src/mcli/ml/dashboard/app_integrated.py +0 -0
- {mcli_framework-7.10.1 → mcli_framework-7.11.0}/src/mcli/ml/dashboard/app_supabase.py +0 -0
- {mcli_framework-7.10.1 → mcli_framework-7.11.0}/src/mcli/ml/dashboard/app_training.py +0 -0
- {mcli_framework-7.10.1 → mcli_framework-7.11.0}/src/mcli/ml/dashboard/cli.py +0 -0
- {mcli_framework-7.10.1 → mcli_framework-7.11.0}/src/mcli/ml/dashboard/common.py +0 -0
- {mcli_framework-7.10.1 → mcli_framework-7.11.0}/src/mcli/ml/dashboard/components/charts.py +0 -0
- {mcli_framework-7.10.1 → mcli_framework-7.11.0}/src/mcli/ml/dashboard/components/metrics.py +0 -0
- {mcli_framework-7.10.1 → mcli_framework-7.11.0}/src/mcli/ml/dashboard/components/tables.py +0 -0
- {mcli_framework-7.10.1 → mcli_framework-7.11.0}/src/mcli/ml/dashboard/overview.py +0 -0
- {mcli_framework-7.10.1 → mcli_framework-7.11.0}/src/mcli/ml/dashboard/pages/cicd.py +0 -0
- {mcli_framework-7.10.1 → mcli_framework-7.11.0}/src/mcli/ml/dashboard/pages/debug_dependencies.py +0 -0
- {mcli_framework-7.10.1 → mcli_framework-7.11.0}/src/mcli/ml/dashboard/pages/gravity_viz.py +0 -0
- {mcli_framework-7.10.1 → mcli_framework-7.11.0}/src/mcli/ml/dashboard/pages/monte_carlo_predictions.py +0 -0
- {mcli_framework-7.10.1 → mcli_framework-7.11.0}/src/mcli/ml/dashboard/pages/predictions_enhanced.py +0 -0
- {mcli_framework-7.10.1 → mcli_framework-7.11.0}/src/mcli/ml/dashboard/pages/scrapers_and_logs.py +0 -0
- {mcli_framework-7.10.1 → mcli_framework-7.11.0}/src/mcli/ml/dashboard/pages/test_portfolio.py +0 -0
- {mcli_framework-7.10.1 → mcli_framework-7.11.0}/src/mcli/ml/dashboard/pages/trading.py +0 -0
- {mcli_framework-7.10.1 → mcli_framework-7.11.0}/src/mcli/ml/dashboard/pages/workflows.py +0 -0
- {mcli_framework-7.10.1 → mcli_framework-7.11.0}/src/mcli/ml/dashboard/streamlit_extras_utils.py +0 -0
- {mcli_framework-7.10.1 → mcli_framework-7.11.0}/src/mcli/ml/dashboard/styles.py +0 -0
- {mcli_framework-7.10.1 → mcli_framework-7.11.0}/src/mcli/ml/dashboard/utils.py +0 -0
- {mcli_framework-7.10.1 → mcli_framework-7.11.0}/src/mcli/ml/dashboard/warning_suppression.py +0 -0
- {mcli_framework-7.10.1 → mcli_framework-7.11.0}/src/mcli/ml/data_ingestion/api_connectors.py +0 -0
- {mcli_framework-7.10.1 → mcli_framework-7.11.0}/src/mcli/ml/data_ingestion/data_pipeline.py +0 -0
- {mcli_framework-7.10.1 → mcli_framework-7.11.0}/src/mcli/ml/data_ingestion/stream_processor.py +0 -0
- {mcli_framework-7.10.1 → mcli_framework-7.11.0}/src/mcli/ml/database/migrations/env.py +0 -0
- {mcli_framework-7.10.1 → mcli_framework-7.11.0}/src/mcli/ml/database/models.py +0 -0
- {mcli_framework-7.10.1 → mcli_framework-7.11.0}/src/mcli/ml/database/session.py +0 -0
- {mcli_framework-7.10.1 → mcli_framework-7.11.0}/src/mcli/ml/experimentation/ab_testing.py +0 -0
- {mcli_framework-7.10.1 → mcli_framework-7.11.0}/src/mcli/ml/features/ensemble_features.py +0 -0
- {mcli_framework-7.10.1 → mcli_framework-7.11.0}/src/mcli/ml/features/recommendation_engine.py +0 -0
- {mcli_framework-7.10.1 → mcli_framework-7.11.0}/src/mcli/ml/features/stock_features.py +0 -0
- {mcli_framework-7.10.1 → mcli_framework-7.11.0}/src/mcli/ml/features/test_feature_engineering.py +0 -0
- {mcli_framework-7.10.1 → mcli_framework-7.11.0}/src/mcli/ml/logging.py +0 -0
- {mcli_framework-7.10.1 → mcli_framework-7.11.0}/src/mcli/ml/mlops/data_versioning.py +0 -0
- {mcli_framework-7.10.1 → mcli_framework-7.11.0}/src/mcli/ml/mlops/experiment_tracker.py +0 -0
- {mcli_framework-7.10.1 → mcli_framework-7.11.0}/src/mcli/ml/mlops/model_serving.py +0 -0
- {mcli_framework-7.10.1 → mcli_framework-7.11.0}/src/mcli/ml/mlops/pipeline_orchestrator.py +0 -0
- {mcli_framework-7.10.1 → mcli_framework-7.11.0}/src/mcli/ml/models/base_models.py +0 -0
- {mcli_framework-7.10.1 → mcli_framework-7.11.0}/src/mcli/ml/models/ensemble_models.py +0 -0
- {mcli_framework-7.10.1 → mcli_framework-7.11.0}/src/mcli/ml/models/recommendation_models.py +0 -0
- {mcli_framework-7.10.1 → mcli_framework-7.11.0}/src/mcli/ml/models/test_models.py +0 -0
- {mcli_framework-7.10.1 → mcli_framework-7.11.0}/src/mcli/ml/monitoring/drift_detection.py +0 -0
- {mcli_framework-7.10.1 → mcli_framework-7.11.0}/src/mcli/ml/monitoring/metrics.py +0 -0
- {mcli_framework-7.10.1 → mcli_framework-7.11.0}/src/mcli/ml/optimization/optimize.py +0 -0
- {mcli_framework-7.10.1 → mcli_framework-7.11.0}/src/mcli/ml/optimization/portfolio_optimizer.py +0 -0
- {mcli_framework-7.10.1 → mcli_framework-7.11.0}/src/mcli/ml/predictions/monte_carlo.py +0 -0
- {mcli_framework-7.10.1 → mcli_framework-7.11.0}/src/mcli/ml/predictions/prediction_engine.py +0 -0
- {mcli_framework-7.10.1 → mcli_framework-7.11.0}/src/mcli/ml/preprocessing/data_cleaners.py +0 -0
- {mcli_framework-7.10.1 → mcli_framework-7.11.0}/src/mcli/ml/preprocessing/feature_extractors.py +0 -0
- {mcli_framework-7.10.1 → mcli_framework-7.11.0}/src/mcli/ml/preprocessing/ml_pipeline.py +0 -0
- {mcli_framework-7.10.1 → mcli_framework-7.11.0}/src/mcli/ml/preprocessing/test_preprocessing.py +0 -0
- {mcli_framework-7.10.1 → mcli_framework-7.11.0}/src/mcli/ml/scripts/populate_sample_data.py +0 -0
- {mcli_framework-7.10.1 → mcli_framework-7.11.0}/src/mcli/ml/serving/serve.py +0 -0
- {mcli_framework-7.10.1 → mcli_framework-7.11.0}/src/mcli/ml/tasks.py +0 -0
- {mcli_framework-7.10.1 → mcli_framework-7.11.0}/src/mcli/ml/tests/test_integration.py +0 -0
- {mcli_framework-7.10.1 → mcli_framework-7.11.0}/src/mcli/ml/tests/test_training_dashboard.py +0 -0
- {mcli_framework-7.10.1 → mcli_framework-7.11.0}/src/mcli/ml/trading/alpaca_client.py +0 -0
- {mcli_framework-7.10.1 → mcli_framework-7.11.0}/src/mcli/ml/trading/migrations.py +0 -0
- {mcli_framework-7.10.1 → mcli_framework-7.11.0}/src/mcli/ml/trading/models.py +0 -0
- {mcli_framework-7.10.1 → mcli_framework-7.11.0}/src/mcli/ml/trading/paper_trading.py +0 -0
- {mcli_framework-7.10.1 → mcli_framework-7.11.0}/src/mcli/ml/trading/risk_management.py +0 -0
- {mcli_framework-7.10.1 → mcli_framework-7.11.0}/src/mcli/ml/trading/trading_service.py +0 -0
- {mcli_framework-7.10.1 → mcli_framework-7.11.0}/src/mcli/ml/training/train.py +0 -0
- {mcli_framework-7.10.1 → mcli_framework-7.11.0}/src/mcli/ml/training/train_model.py +0 -0
- {mcli_framework-7.10.1 → mcli_framework-7.11.0}/src/mcli/mygroup/test_cmd.py +0 -0
- {mcli_framework-7.10.1 → mcli_framework-7.11.0}/src/mcli/public/oi/oi.py +0 -0
- {mcli_framework-7.10.1 → mcli_framework-7.11.0}/src/mcli/public/public.py +0 -0
- {mcli_framework-7.10.1 → mcli_framework-7.11.0}/src/mcli/self/completion_cmd.py +0 -0
- {mcli_framework-7.10.1 → mcli_framework-7.11.0}/src/mcli/self/logs_cmd.py +0 -0
- {mcli_framework-7.10.1 → mcli_framework-7.11.0}/src/mcli/self/redis_cmd.py +0 -0
- {mcli_framework-7.10.1 → mcli_framework-7.11.0}/src/mcli/self/store_cmd.py +0 -0
- {mcli_framework-7.10.1 → mcli_framework-7.11.0}/src/mcli/self/test_cmd.py +0 -0
- {mcli_framework-7.10.1 → mcli_framework-7.11.0}/src/mcli/self/visual_cmd.py +0 -0
- {mcli_framework-7.10.1 → mcli_framework-7.11.0}/src/mcli/self/zsh_cmd.py +0 -0
- {mcli_framework-7.10.1 → mcli_framework-7.11.0}/src/mcli/workflow/daemon/async_command_database.py +0 -0
- {mcli_framework-7.10.1 → mcli_framework-7.11.0}/src/mcli/workflow/daemon/async_process_manager.py +0 -0
- {mcli_framework-7.10.1 → mcli_framework-7.11.0}/src/mcli/workflow/daemon/client.py +0 -0
- {mcli_framework-7.10.1 → mcli_framework-7.11.0}/src/mcli/workflow/daemon/daemon.py +0 -0
- {mcli_framework-7.10.1 → mcli_framework-7.11.0}/src/mcli/workflow/daemon/daemon_api.py +0 -0
- {mcli_framework-7.10.1 → mcli_framework-7.11.0}/src/mcli/workflow/daemon/enhanced_daemon.py +0 -0
- {mcli_framework-7.10.1 → mcli_framework-7.11.0}/src/mcli/workflow/daemon/process_cli.py +0 -0
- {mcli_framework-7.10.1 → mcli_framework-7.11.0}/src/mcli/workflow/daemon/process_manager.py +0 -0
- {mcli_framework-7.10.1 → mcli_framework-7.11.0}/src/mcli/workflow/daemon/test_daemon.py +0 -0
- {mcli_framework-7.10.1 → mcli_framework-7.11.0}/src/mcli/workflow/dashboard/dashboard_cmd.py +0 -0
- {mcli_framework-7.10.1 → mcli_framework-7.11.0}/src/mcli/workflow/doc_convert.py +0 -0
- {mcli_framework-7.10.1 → mcli_framework-7.11.0}/src/mcli/workflow/docker/docker.py +0 -0
- {mcli_framework-7.10.1 → mcli_framework-7.11.0}/src/mcli/workflow/gcloud/config.toml +0 -0
- {mcli_framework-7.10.1 → mcli_framework-7.11.0}/src/mcli/workflow/gcloud/gcloud.py +0 -0
- {mcli_framework-7.10.1 → mcli_framework-7.11.0}/src/mcli/workflow/lsh_integration.py +0 -0
- {mcli_framework-7.10.1 → mcli_framework-7.11.0}/src/mcli/workflow/model_service/client.py +0 -0
- {mcli_framework-7.10.1 → mcli_framework-7.11.0}/src/mcli/workflow/model_service/download_and_run_efficient_models.py +0 -0
- {mcli_framework-7.10.1 → mcli_framework-7.11.0}/src/mcli/workflow/model_service/lightweight_embedder.py +0 -0
- {mcli_framework-7.10.1 → mcli_framework-7.11.0}/src/mcli/workflow/model_service/lightweight_model_server.py +0 -0
- {mcli_framework-7.10.1 → mcli_framework-7.11.0}/src/mcli/workflow/model_service/lightweight_test.py +0 -0
- {mcli_framework-7.10.1 → mcli_framework-7.11.0}/src/mcli/workflow/model_service/model_service.py +0 -0
- {mcli_framework-7.10.1 → mcli_framework-7.11.0}/src/mcli/workflow/model_service/ollama_efficient_runner.py +0 -0
- {mcli_framework-7.10.1 → mcli_framework-7.11.0}/src/mcli/workflow/model_service/openai_adapter.py +0 -0
- {mcli_framework-7.10.1 → mcli_framework-7.11.0}/src/mcli/workflow/model_service/pdf_processor.py +0 -0
- {mcli_framework-7.10.1 → mcli_framework-7.11.0}/src/mcli/workflow/model_service/test_efficient_runner.py +0 -0
- {mcli_framework-7.10.1 → mcli_framework-7.11.0}/src/mcli/workflow/model_service/test_example.py +0 -0
- {mcli_framework-7.10.1 → mcli_framework-7.11.0}/src/mcli/workflow/model_service/test_integration.py +0 -0
- {mcli_framework-7.10.1 → mcli_framework-7.11.0}/src/mcli/workflow/model_service/test_new_features.py +0 -0
- {mcli_framework-7.10.1 → mcli_framework-7.11.0}/src/mcli/workflow/openai/openai.py +0 -0
- {mcli_framework-7.10.1 → mcli_framework-7.11.0}/src/mcli/workflow/registry/registry.py +0 -0
- {mcli_framework-7.10.1 → mcli_framework-7.11.0}/src/mcli/workflow/repo/repo.py +0 -0
- {mcli_framework-7.10.1 → mcli_framework-7.11.0}/src/mcli/workflow/scheduler/cron_parser.py +0 -0
- {mcli_framework-7.10.1 → mcli_framework-7.11.0}/src/mcli/workflow/scheduler/job.py +0 -0
- {mcli_framework-7.10.1 → mcli_framework-7.11.0}/src/mcli/workflow/scheduler/monitor.py +0 -0
- {mcli_framework-7.10.1 → mcli_framework-7.11.0}/src/mcli/workflow/scheduler/persistence.py +0 -0
- {mcli_framework-7.10.1 → mcli_framework-7.11.0}/src/mcli/workflow/scheduler/scheduler.py +0 -0
- {mcli_framework-7.10.1 → mcli_framework-7.11.0}/src/mcli/workflow/sync/test_cmd.py +0 -0
- {mcli_framework-7.10.1 → mcli_framework-7.11.0}/src/mcli/workflow/wakatime/wakatime.py +0 -0
- {mcli_framework-7.10.1 → mcli_framework-7.11.0}/src/mcli_framework.egg-info/dependency_links.txt +0 -0
- {mcli_framework-7.10.1 → mcli_framework-7.11.0}/src/mcli_framework.egg-info/entry_points.txt +0 -0
- {mcli_framework-7.10.1 → mcli_framework-7.11.0}/src/mcli_framework.egg-info/requires.txt +0 -0
- {mcli_framework-7.10.1 → mcli_framework-7.11.0}/src/mcli_framework.egg-info/top_level.txt +0 -0
- {mcli_framework-7.10.1 → mcli_framework-7.11.0}/tests/cli/test_all_commands.py +0 -0
- {mcli_framework-7.10.1 → mcli_framework-7.11.0}/tests/cli/test_app_logs_cmd.py +0 -0
- {mcli_framework-7.10.1 → mcli_framework-7.11.0}/tests/cli/test_logs_cmd.py +0 -0
- {mcli_framework-7.10.1 → mcli_framework-7.11.0}/tests/cli/test_main_app.py +0 -0
- {mcli_framework-7.10.1 → mcli_framework-7.11.0}/tests/cli/test_self_cmd.py +0 -0
- {mcli_framework-7.10.1 → mcli_framework-7.11.0}/tests/cli/test_self_cmd_commands.py +0 -0
- {mcli_framework-7.10.1 → mcli_framework-7.11.0}/tests/cli/test_self_cmd_plugins.py +0 -0
- {mcli_framework-7.10.1 → mcli_framework-7.11.0}/tests/cli/test_self_cmd_utilities.py +0 -0
- {mcli_framework-7.10.1 → mcli_framework-7.11.0}/tests/cli/test_workflow_gcloud.py +0 -0
- {mcli_framework-7.10.1 → mcli_framework-7.11.0}/tests/conftest.py +0 -0
- {mcli_framework-7.10.1 → mcli_framework-7.11.0}/tests/demo_generate_graph.py +0 -0
- {mcli_framework-7.10.1 → mcli_framework-7.11.0}/tests/demo_hierarchical_transform.py +0 -0
- {mcli_framework-7.10.1 → mcli_framework-7.11.0}/tests/e2e/test_complete_workflows.py +0 -0
- {mcli_framework-7.10.1 → mcli_framework-7.11.0}/tests/e2e/test_update_workflow.py +0 -0
- {mcli_framework-7.10.1 → mcli_framework-7.11.0}/tests/fixtures/chat_fixtures.py +0 -0
- {mcli_framework-7.10.1 → mcli_framework-7.11.0}/tests/fixtures/cli_fixtures.py +0 -0
- {mcli_framework-7.10.1 → mcli_framework-7.11.0}/tests/fixtures/data_fixtures.py +0 -0
- {mcli_framework-7.10.1 → mcli_framework-7.11.0}/tests/fixtures/db_fixtures.py +0 -0
- {mcli_framework-7.10.1 → mcli_framework-7.11.0}/tests/fixtures/model_fixtures.py +0 -0
- {mcli_framework-7.10.1 → mcli_framework-7.11.0}/tests/integration/test_agent.py +0 -0
- {mcli_framework-7.10.1 → mcli_framework-7.11.0}/tests/integration/test_chat_system.py +0 -0
- {mcli_framework-7.10.1 → mcli_framework-7.11.0}/tests/integration/test_daemon_server.py +0 -0
- {mcli_framework-7.10.1 → mcli_framework-7.11.0}/tests/integration/test_e2e_dashboard_lsh_supabase.py +0 -0
- {mcli_framework-7.10.1 → mcli_framework-7.11.0}/tests/integration/test_flask_webapp.py +0 -0
- {mcli_framework-7.10.1 → mcli_framework-7.11.0}/tests/integration/test_gcloud_services.py +0 -0
- {mcli_framework-7.10.1 → mcli_framework-7.11.0}/tests/integration/test_lsh_service.py +0 -0
- {mcli_framework-7.10.1 → mcli_framework-7.11.0}/tests/integration/test_ml_data_pipeline.py +0 -0
- {mcli_framework-7.10.1 → mcli_framework-7.11.0}/tests/integration/test_ml_pipeline.py +0 -0
- {mcli_framework-7.10.1 → mcli_framework-7.11.0}/tests/integration/test_oi_service.py +0 -0
- {mcli_framework-7.10.1 → mcli_framework-7.11.0}/tests/integration/test_repo_operations.py +0 -0
- {mcli_framework-7.10.1 → mcli_framework-7.11.0}/tests/integration/test_scheduler_integration.py +0 -0
- {mcli_framework-7.10.1 → mcli_framework-7.11.0}/tests/integration/test_service_registry.py +0 -0
- {mcli_framework-7.10.1 → mcli_framework-7.11.0}/tests/integration/test_supabase_live_connection.py +0 -0
- {mcli_framework-7.10.1 → mcli_framework-7.11.0}/tests/integration/test_video_processing.py +0 -0
- {mcli_framework-7.10.1 → mcli_framework-7.11.0}/tests/integration/test_wakatime_api.py +0 -0
- {mcli_framework-7.10.1 → mcli_framework-7.11.0}/tests/integration/test_webapp_full.py +0 -0
- {mcli_framework-7.10.1 → mcli_framework-7.11.0}/tests/integration/test_workflow.py +0 -0
- {mcli_framework-7.10.1 → mcli_framework-7.11.0}/tests/integration/test_workflow_commands.py +0 -0
- {mcli_framework-7.10.1 → mcli_framework-7.11.0}/tests/run_tests.py +0 -0
- {mcli_framework-7.10.1 → mcli_framework-7.11.0}/tests/test_harness.py +0 -0
- {mcli_framework-7.10.1 → mcli_framework-7.11.0}/tests/test_openai_adapter.py +0 -0
- {mcli_framework-7.10.1 → mcli_framework-7.11.0}/tests/unit/test_api_utils.py +0 -0
- {mcli_framework-7.10.1 → mcli_framework-7.11.0}/tests/unit/test_auth_modules.py +0 -0
- {mcli_framework-7.10.1 → mcli_framework-7.11.0}/tests/unit/test_bug_fixes.py +0 -0
- {mcli_framework-7.10.1 → mcli_framework-7.11.0}/tests/unit/test_config.py +0 -0
- {mcli_framework-7.10.1 → mcli_framework-7.11.0}/tests/unit/test_daemon_api.py +0 -0
- {mcli_framework-7.10.1 → mcli_framework-7.11.0}/tests/unit/test_dashboard_components.py +0 -0
- {mcli_framework-7.10.1 → mcli_framework-7.11.0}/tests/unit/test_dependencies.py +0 -0
- {mcli_framework-7.10.1 → mcli_framework-7.11.0}/tests/unit/test_doc_convert_workflow.py +0 -0
- {mcli_framework-7.10.1 → mcli_framework-7.11.0}/tests/unit/test_emulator_workflow.py +0 -0
- {mcli_framework-7.10.1 → mcli_framework-7.11.0}/tests/unit/test_erd_generation.py +0 -0
- {mcli_framework-7.10.1 → mcli_framework-7.11.0}/tests/unit/test_erd_generic.py +0 -0
- {mcli_framework-7.10.1 → mcli_framework-7.11.0}/tests/unit/test_erd_imports.py +0 -0
- {mcli_framework-7.10.1 → mcli_framework-7.11.0}/tests/unit/test_git_commit_workflow.py +0 -0
- {mcli_framework-7.10.1 → mcli_framework-7.11.0}/tests/unit/test_lib_auth.py +0 -0
- {mcli_framework-7.10.1 → mcli_framework-7.11.0}/tests/unit/test_lib_files.py +0 -0
- {mcli_framework-7.10.1 → mcli_framework-7.11.0}/tests/unit/test_lib_utils.py +0 -0
- {mcli_framework-7.10.1 → mcli_framework-7.11.0}/tests/unit/test_logger.py +0 -0
- {mcli_framework-7.10.1 → mcli_framework-7.11.0}/tests/unit/test_ml_preprocessing.py +0 -0
- {mcli_framework-7.10.1 → mcli_framework-7.11.0}/tests/unit/test_paths.py +0 -0
- {mcli_framework-7.10.1 → mcli_framework-7.11.0}/tests/unit/test_pdf_compress.py +0 -0
- {mcli_framework-7.10.1 → mcli_framework-7.11.0}/tests/unit/test_prediction_engine.py +0 -0
- {mcli_framework-7.10.1 → mcli_framework-7.11.0}/tests/unit/test_regression.py +0 -0
- {mcli_framework-7.10.1 → mcli_framework-7.11.0}/tests/unit/test_scheduler.py +0 -0
- {mcli_framework-7.10.1 → mcli_framework-7.11.0}/tests/unit/test_scheduler_cron_parser.py +0 -0
- {mcli_framework-7.10.1 → mcli_framework-7.11.0}/tests/unit/test_scheduler_job.py +0 -0
- {mcli_framework-7.10.1 → mcli_framework-7.11.0}/tests/unit/test_scheduler_monitor.py +0 -0
- {mcli_framework-7.10.1 → mcli_framework-7.11.0}/tests/unit/test_scheduler_persistence.py +0 -0
- {mcli_framework-7.10.1 → mcli_framework-7.11.0}/tests/unit/test_self_update.py +0 -0
- {mcli_framework-7.10.1 → mcli_framework-7.11.0}/tests/unit/test_store_cmd.py +0 -0
- {mcli_framework-7.10.1 → mcli_framework-7.11.0}/tests/unit/test_supabase_connection.py +0 -0
- {mcli_framework-7.10.1 → mcli_framework-7.11.0}/tests/unit/test_supabase_pagination.py +0 -0
- {mcli_framework-7.10.1 → mcli_framework-7.11.0}/tests/unit/test_toml_utils.py +0 -0
- {mcli_framework-7.10.1 → mcli_framework-7.11.0}/tests/unit/test_trading_imports.py +0 -0
- {mcli_framework-7.10.1 → mcli_framework-7.11.0}/tests/unit/test_ui_rich.py +0 -0
- {mcli_framework-7.10.1 → mcli_framework-7.11.0}/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
|
|
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
|
|
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.
|
|
3
|
+
Version: 7.11.0
|
|
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
|
+
[](https://codecov.io/gh/gwicho38/mcli)
|
|
164
|
+
[](https://github.com/gwicho38/mcli/actions)
|
|
165
|
+
[](https://www.python.org/downloads/)
|
|
166
|
+
[](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/)
|
|
183
|
+
[](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
|
|
@@ -199,20 +233,20 @@ def app(message):
|
|
|
199
233
|
EOF
|
|
200
234
|
|
|
201
235
|
# Import as workflow
|
|
202
|
-
mcli
|
|
236
|
+
mcli workflow import-script my_task.py --name my-task
|
|
203
237
|
|
|
204
238
|
# Run it
|
|
205
|
-
mcli
|
|
239
|
+
mcli workflowss my-task --message "Hi"
|
|
206
240
|
```
|
|
207
241
|
|
|
208
242
|
#### Method 2: Interactive Creation
|
|
209
243
|
|
|
210
244
|
```bash
|
|
211
245
|
# Create workflow interactively
|
|
212
|
-
mcli
|
|
246
|
+
mcli workflow add my-task
|
|
213
247
|
|
|
214
248
|
# Edit in your $EDITOR, then run
|
|
215
|
-
mcli
|
|
249
|
+
mcli workflowss my-task
|
|
216
250
|
```
|
|
217
251
|
|
|
218
252
|
## 📦 Workflow System Features
|
|
@@ -223,29 +257,28 @@ Multiple ways to create workflows:
|
|
|
223
257
|
|
|
224
258
|
```bash
|
|
225
259
|
# Import from existing Python script
|
|
226
|
-
mcli
|
|
227
|
-
|
|
260
|
+
mcli workflow import-script script.py --name my-workflow
|
|
228
261
|
# Create new workflow interactively
|
|
229
|
-
mcli
|
|
262
|
+
mcli workflow add my-workflow --group workflow --description "Does something useful"
|
|
230
263
|
|
|
231
264
|
# List all workflows
|
|
232
|
-
mcli
|
|
265
|
+
mcli workflow list-custom
|
|
233
266
|
```
|
|
234
267
|
|
|
235
268
|
### 2. **Edit & Manage Workflows**
|
|
236
269
|
|
|
237
270
|
```bash
|
|
238
271
|
# Edit workflow in $EDITOR
|
|
239
|
-
mcli
|
|
272
|
+
mcli workflow edit my-workflow
|
|
240
273
|
|
|
241
274
|
# Show workflow details
|
|
242
|
-
mcli
|
|
275
|
+
mcli workflow info my-workflow
|
|
243
276
|
|
|
244
277
|
# Search workflows
|
|
245
|
-
mcli
|
|
278
|
+
mcli workflow search "pdf"
|
|
246
279
|
|
|
247
280
|
# Remove workflow
|
|
248
|
-
mcli
|
|
281
|
+
mcli workflow remove my-workflow
|
|
249
282
|
```
|
|
250
283
|
|
|
251
284
|
### 3. **Export & Import (Portability)**
|
|
@@ -254,13 +287,13 @@ Share workflows across machines or with your team:
|
|
|
254
287
|
|
|
255
288
|
```bash
|
|
256
289
|
# Export all workflows to JSON
|
|
257
|
-
mcli
|
|
290
|
+
mcli workflow export my-workflows.json
|
|
258
291
|
|
|
259
292
|
# Import on another machine
|
|
260
|
-
mcli
|
|
293
|
+
mcli workflow import my-workflows.json
|
|
261
294
|
|
|
262
295
|
# Export single workflow to Python script
|
|
263
|
-
mcli
|
|
296
|
+
mcli workflow export-script my-workflow --output my_workflow.py
|
|
264
297
|
```
|
|
265
298
|
|
|
266
299
|
Your workflows are just JSON files in `~/.mcli/commands/`:
|
|
@@ -279,10 +312,10 @@ MCLI automatically maintains a lockfile for reproducibility:
|
|
|
279
312
|
|
|
280
313
|
```bash
|
|
281
314
|
# Update lockfile with current workflow versions
|
|
282
|
-
mcli
|
|
315
|
+
mcli workflow update-lockfile
|
|
283
316
|
|
|
284
317
|
# Verify workflows match lockfile
|
|
285
|
-
mcli
|
|
318
|
+
mcli workflow verify
|
|
286
319
|
```
|
|
287
320
|
|
|
288
321
|
Example `commands.lock.json`:
|
|
@@ -312,7 +345,7 @@ git commit -m "Update workflows"
|
|
|
312
345
|
|
|
313
346
|
# On another machine
|
|
314
347
|
git pull
|
|
315
|
-
mcli
|
|
348
|
+
mcli workflow verify # Ensures consistency
|
|
316
349
|
```
|
|
317
350
|
|
|
318
351
|
### 5. **Run as Daemon or Scheduled Task**
|
|
@@ -323,29 +356,29 @@ Workflows aren't coupled to the engine - run them however you want:
|
|
|
323
356
|
|
|
324
357
|
```bash
|
|
325
358
|
# Start workflow as background daemon
|
|
326
|
-
mcli
|
|
359
|
+
mcli workflows daemon start my-task-daemon --workflow my-task
|
|
327
360
|
|
|
328
361
|
# Check daemon status
|
|
329
|
-
mcli
|
|
362
|
+
mcli workflows daemon status
|
|
330
363
|
|
|
331
364
|
# Stop daemon
|
|
332
|
-
mcli
|
|
365
|
+
mcli workflows daemon stop my-task-daemon
|
|
333
366
|
```
|
|
334
367
|
|
|
335
368
|
#### As Scheduled Task:
|
|
336
369
|
|
|
337
370
|
```bash
|
|
338
371
|
# Schedule workflow to run every hour
|
|
339
|
-
mcli
|
|
372
|
+
mcli workflows scheduler add \
|
|
340
373
|
--name hourly-sync \
|
|
341
374
|
--schedule "0 * * * *" \
|
|
342
375
|
--workflow my-task
|
|
343
376
|
|
|
344
377
|
# List scheduled workflows
|
|
345
|
-
mcli
|
|
378
|
+
mcli workflows scheduler list
|
|
346
379
|
|
|
347
380
|
# View logs
|
|
348
|
-
mcli
|
|
381
|
+
mcli workflows scheduler logs hourly-sync
|
|
349
382
|
```
|
|
350
383
|
|
|
351
384
|
## 🎨 Real-World Workflow Examples
|
|
@@ -354,12 +387,11 @@ mcli workflow scheduler logs hourly-sync
|
|
|
354
387
|
|
|
355
388
|
```bash
|
|
356
389
|
# Create PDF processing workflow
|
|
357
|
-
mcli
|
|
358
|
-
|
|
390
|
+
mcli workflow import-script pdf_tool.py --name pdf
|
|
359
391
|
# Use it
|
|
360
|
-
mcli
|
|
361
|
-
mcli
|
|
362
|
-
mcli
|
|
392
|
+
mcli workflows pdf extract ~/Documents/report.pdf
|
|
393
|
+
mcli workflows pdf compress ~/Documents/*.pdf --output compressed/
|
|
394
|
+
mcli workflows pdf split large.pdf --pages 10
|
|
363
395
|
```
|
|
364
396
|
|
|
365
397
|
### Example 2: Data Sync Workflow
|
|
@@ -389,13 +421,12 @@ def status():
|
|
|
389
421
|
click.echo("Checking sync status...")
|
|
390
422
|
EOF
|
|
391
423
|
|
|
392
|
-
mcli
|
|
393
|
-
|
|
424
|
+
mcli workflow import-script sync.py --name sync
|
|
394
425
|
# Run manually
|
|
395
|
-
mcli
|
|
426
|
+
mcli workflows sync backup ~/data remote:backup
|
|
396
427
|
|
|
397
428
|
# Or schedule it
|
|
398
|
-
mcli
|
|
429
|
+
mcli workflows scheduler add \
|
|
399
430
|
--name nightly-backup \
|
|
400
431
|
--schedule "0 2 * * *" \
|
|
401
432
|
--workflow "sync backup ~/data remote:backup"
|
|
@@ -405,13 +436,12 @@ mcli workflow scheduler add \
|
|
|
405
436
|
|
|
406
437
|
```bash
|
|
407
438
|
# Already included as built-in workflow
|
|
408
|
-
mcli
|
|
439
|
+
mcli workflows git-commit
|
|
409
440
|
|
|
410
441
|
# Or create your own variant
|
|
411
|
-
mcli
|
|
442
|
+
mcli workflow export-script git-commit --output my_git_helper.py
|
|
412
443
|
# Edit my_git_helper.py to customize
|
|
413
|
-
mcli
|
|
414
|
-
```
|
|
444
|
+
mcli workflow import-script my_git_helper.py --name my-git```
|
|
415
445
|
|
|
416
446
|
## 🔧 Workflow Structure
|
|
417
447
|
|
|
@@ -437,7 +467,7 @@ Each workflow is a JSON file with this structure:
|
|
|
437
467
|
MCLI comes with powerful built-in workflows:
|
|
438
468
|
|
|
439
469
|
```bash
|
|
440
|
-
mcli
|
|
470
|
+
mcli workflows --help
|
|
441
471
|
```
|
|
442
472
|
|
|
443
473
|
Available workflows:
|
|
@@ -450,7 +480,7 @@ Available workflows:
|
|
|
450
480
|
- **redis** - Redis cache management
|
|
451
481
|
- **videos** - Video processing and overlay removal
|
|
452
482
|
- **sync** - Multi-cloud synchronization
|
|
453
|
-
- **politician-trading** -
|
|
483
|
+
- **politician-trading** - Now available as standalone package: [politician-trading-tracker](https://github.com/gwicho38/politician-trading-tracker)
|
|
454
484
|
|
|
455
485
|
## 💡 Why MCLI?
|
|
456
486
|
|
|
@@ -481,8 +511,8 @@ You write scripts. They work. Then:
|
|
|
481
511
|
mcli self completion install
|
|
482
512
|
|
|
483
513
|
# Now use tab completion
|
|
484
|
-
mcli
|
|
485
|
-
mcli
|
|
514
|
+
mcli workflows <TAB> # Shows all workflows
|
|
515
|
+
mcli workflows pdf <TAB> # Shows pdf subcommands
|
|
486
516
|
```
|
|
487
517
|
|
|
488
518
|
### AI Chat Integration
|
|
@@ -528,10 +558,13 @@ make wheel
|
|
|
528
558
|
|
|
529
559
|
## 📖 Documentation
|
|
530
560
|
|
|
531
|
-
-
|
|
561
|
+
- **📚 Documentation Index**: [Complete Documentation Index](docs/INDEX.md) - All docs organized by category
|
|
562
|
+
- **Installation**: See [Installation Guide](docs/setup/INSTALL.md)
|
|
532
563
|
- **Workflows**: Full workflow documentation (this README)
|
|
533
564
|
- **Shell Completion**: See [Shell Completion Guide](docs/features/SHELL_COMPLETION.md)
|
|
565
|
+
- **Testing**: See [Testing Guide](docs/development/TESTING.md)
|
|
534
566
|
- **Contributing**: See [Contributing Guide](CONTRIBUTING.md)
|
|
567
|
+
- **Release Notes**: See [Latest Release (7.10.2)](docs/releases/7.10.2.md)
|
|
535
568
|
|
|
536
569
|
## 🎯 Common Use Cases
|
|
537
570
|
|
|
@@ -539,21 +572,20 @@ make wheel
|
|
|
539
572
|
|
|
540
573
|
```bash
|
|
541
574
|
# Create your daily automation
|
|
542
|
-
mcli
|
|
543
|
-
|
|
544
|
-
mcli workflow scheduler add --name daily --schedule "0 9 * * *" --workflow daily-tasks
|
|
575
|
+
mcli workflow add daily-tasks# Add your tasks in $EDITOR
|
|
576
|
+
mcli workflows scheduler add --name daily --schedule "0 9 * * *" --workflow daily-tasks
|
|
545
577
|
```
|
|
546
578
|
|
|
547
579
|
### Use Case 2: Team Workflow Sharing
|
|
548
580
|
|
|
549
581
|
```bash
|
|
550
582
|
# On your machine
|
|
551
|
-
mcli
|
|
583
|
+
mcli workflow export team-workflows.json
|
|
552
584
|
|
|
553
585
|
# Share file with team
|
|
554
586
|
# On teammate's machine
|
|
555
|
-
mcli
|
|
556
|
-
mcli
|
|
587
|
+
mcli workflow import team-workflows.json
|
|
588
|
+
mcli workflow verify # Ensure consistency
|
|
557
589
|
```
|
|
558
590
|
|
|
559
591
|
### Use Case 3: CI/CD Integration
|
|
@@ -561,9 +593,9 @@ mcli commands verify # Ensure consistency
|
|
|
561
593
|
```bash
|
|
562
594
|
# In your CI pipeline
|
|
563
595
|
- pip install mcli-framework
|
|
564
|
-
- mcli
|
|
565
|
-
- mcli
|
|
566
|
-
- mcli
|
|
596
|
+
- mcli workflow import ci-workflows.json
|
|
597
|
+
- mcli workflows build-and-test
|
|
598
|
+
- mcli workflows deploy --env production
|
|
567
599
|
```
|
|
568
600
|
|
|
569
601
|
## 📦 Dependencies
|
|
@@ -593,7 +625,7 @@ We welcome contributions! Especially workflow examples.
|
|
|
593
625
|
1. Fork the repository
|
|
594
626
|
2. Create feature branch: `git checkout -b feature/awesome-workflow`
|
|
595
627
|
3. Create your workflow
|
|
596
|
-
4. Export it: `mcli
|
|
628
|
+
4. Export it: `mcli workflow export my-workflow.json`
|
|
597
629
|
5. Submit PR with workflow JSON
|
|
598
630
|
|
|
599
631
|
## 📄 License
|
|
@@ -612,5 +644,4 @@ MIT License - see [LICENSE](LICENSE) for details.
|
|
|
612
644
|
|
|
613
645
|
```bash
|
|
614
646
|
pip install mcli-framework
|
|
615
|
-
mcli
|
|
616
|
-
```
|
|
647
|
+
mcli workflow add my-first-workflow```
|