mcli-framework 7.19.8__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.
- mcli_framework-7.19.8/.github/dependabot.yml +49 -0
- mcli_framework-7.19.8/.github/dependency-review-config.yml +17 -0
- mcli_framework-7.19.8/.github/workflows/build.yml +102 -0
- mcli_framework-7.19.8/.github/workflows/ci.yml +309 -0
- mcli_framework-7.19.8/.github/workflows/codeql.yml +43 -0
- mcli_framework-7.19.8/.github/workflows/main_mcli.yml +76 -0
- mcli_framework-7.19.8/.github/workflows/publish-self-hosted.yml +244 -0
- mcli_framework-7.19.8/.github/workflows/publish.yml +189 -0
- mcli_framework-7.19.8/.github/workflows/release.yml +91 -0
- mcli_framework-7.19.8/.github/workflows/security.yml +115 -0
- mcli_framework-7.19.8/.github/workflows/test.yml +154 -0
- mcli_framework-7.19.8/LICENSE +21 -0
- mcli_framework-7.19.8/MANIFEST.in +41 -0
- mcli_framework-7.19.8/PKG-INFO +853 -0
- mcli_framework-7.19.8/README.md +662 -0
- mcli_framework-7.19.8/mcli_rust/Cargo.toml +27 -0
- mcli_framework-7.19.8/mcli_rust/src/command_parser.rs +463 -0
- mcli_framework-7.19.8/mcli_rust/src/file_watcher.rs +312 -0
- mcli_framework-7.19.8/mcli_rust/src/lib.rs +20 -0
- mcli_framework-7.19.8/mcli_rust/src/process_manager.rs +464 -0
- mcli_framework-7.19.8/mcli_rust/src/tfidf.rs +271 -0
- mcli_framework-7.19.8/pyproject.toml +475 -0
- mcli_framework-7.19.8/setup.cfg +150 -0
- mcli_framework-7.19.8/src/mcli/app/commands_cmd.py +1805 -0
- mcli_framework-7.19.8/src/mcli/app/completion_helpers.py +205 -0
- mcli_framework-7.19.8/src/mcli/app/create_cmd.py +438 -0
- mcli_framework-7.19.8/src/mcli/app/edit_cmd.py +118 -0
- mcli_framework-7.19.8/src/mcli/app/init_cmd.py +391 -0
- mcli_framework-7.19.8/src/mcli/app/lock_cmd.py +428 -0
- mcli_framework-7.19.8/src/mcli/app/main.py +576 -0
- mcli_framework-7.19.8/src/mcli/app/model/model.py +1055 -0
- mcli_framework-7.19.8/src/mcli/app/model_cmd.py +67 -0
- mcli_framework-7.19.8/src/mcli/app/new_cmd.py +438 -0
- mcli_framework-7.19.8/src/mcli/app/remove_cmd.py +60 -0
- mcli_framework-7.19.8/src/mcli/app/rm_cmd.py +57 -0
- mcli_framework-7.19.8/src/mcli/app/sync_cmd.py +87 -0
- mcli_framework-7.19.8/src/mcli/app/video/video.py +1101 -0
- mcli_framework-7.19.8/src/mcli/chat/chat.py +2392 -0
- mcli_framework-7.19.8/src/mcli/chat/command_rag.py +510 -0
- mcli_framework-7.19.8/src/mcli/chat/enhanced_chat.py +643 -0
- mcli_framework-7.19.8/src/mcli/chat/system_controller.py +1010 -0
- mcli_framework-7.19.8/src/mcli/chat/system_integration.py +1015 -0
- mcli_framework-7.19.8/src/mcli/cli.py +24 -0
- mcli_framework-7.19.8/src/mcli/config.toml +20 -0
- mcli_framework-7.19.8/src/mcli/lib/api/api.py +581 -0
- mcli_framework-7.19.8/src/mcli/lib/api/daemon_client.py +202 -0
- mcli_framework-7.19.8/src/mcli/lib/api/daemon_client_local.py +42 -0
- mcli_framework-7.19.8/src/mcli/lib/api/daemon_decorator.py +217 -0
- mcli_framework-7.19.8/src/mcli/lib/api/mcli_decorators.py +1028 -0
- mcli_framework-7.19.8/src/mcli/lib/auth/auth.py +84 -0
- mcli_framework-7.19.8/src/mcli/lib/auth/aws_manager.py +30 -0
- mcli_framework-7.19.8/src/mcli/lib/auth/azure_manager.py +36 -0
- mcli_framework-7.19.8/src/mcli/lib/auth/credential_manager.py +261 -0
- mcli_framework-7.19.8/src/mcli/lib/auth/gcp_manager.py +40 -0
- mcli_framework-7.19.8/src/mcli/lib/auth/key_manager.py +117 -0
- mcli_framework-7.19.8/src/mcli/lib/auth/mcli_manager.py +88 -0
- mcli_framework-7.19.8/src/mcli/lib/auth/token_manager.py +75 -0
- mcli_framework-7.19.8/src/mcli/lib/auth/token_util.py +1011 -0
- mcli_framework-7.19.8/src/mcli/lib/config/config.py +46 -0
- mcli_framework-7.19.8/src/mcli/lib/constants/__init__.py +72 -0
- mcli_framework-7.19.8/src/mcli/lib/constants/commands.py +136 -0
- mcli_framework-7.19.8/src/mcli/lib/constants/defaults.py +124 -0
- mcli_framework-7.19.8/src/mcli/lib/constants/env.py +66 -0
- mcli_framework-7.19.8/src/mcli/lib/constants/messages.py +96 -0
- mcli_framework-7.19.8/src/mcli/lib/constants/paths.py +78 -0
- mcli_framework-7.19.8/src/mcli/lib/custom_commands.py +698 -0
- mcli_framework-7.19.8/src/mcli/lib/discovery/__init__.py +1 -0
- mcli_framework-7.19.8/src/mcli/lib/discovery/command_discovery.py +274 -0
- mcli_framework-7.19.8/src/mcli/lib/erd/erd.py +1345 -0
- mcli_framework-7.19.8/src/mcli/lib/erd/generate_graph.py +453 -0
- mcli_framework-7.19.8/src/mcli/lib/files/files.py +76 -0
- mcli_framework-7.19.8/src/mcli/lib/folder_workflows.py +538 -0
- mcli_framework-7.19.8/src/mcli/lib/fs/fs.py +108 -0
- mcli_framework-7.19.8/src/mcli/lib/ipfs_sync.py +315 -0
- mcli_framework-7.19.8/src/mcli/lib/lib.py +35 -0
- mcli_framework-7.19.8/src/mcli/lib/logger/logger.py +606 -0
- mcli_framework-7.19.8/src/mcli/lib/makefile_workflows.py +249 -0
- mcli_framework-7.19.8/src/mcli/lib/optional_deps.py +238 -0
- mcli_framework-7.19.8/src/mcli/lib/packagejson_workflows.py +206 -0
- mcli_framework-7.19.8/src/mcli/lib/paths.py +222 -0
- mcli_framework-7.19.8/src/mcli/lib/performance/optimizer.py +407 -0
- mcli_framework-7.19.8/src/mcli/lib/performance/rust_bridge.py +497 -0
- mcli_framework-7.19.8/src/mcli/lib/performance/uvloop_config.py +153 -0
- mcli_framework-7.19.8/src/mcli/lib/pickles/pickles.py +48 -0
- mcli_framework-7.19.8/src/mcli/lib/script_sync.py +500 -0
- mcli_framework-7.19.8/src/mcli/lib/script_watcher.py +257 -0
- mcli_framework-7.19.8/src/mcli/lib/search/cached_vectorizer.py +480 -0
- mcli_framework-7.19.8/src/mcli/lib/secrets/commands.py +183 -0
- mcli_framework-7.19.8/src/mcli/lib/secrets/manager.py +212 -0
- mcli_framework-7.19.8/src/mcli/lib/secrets/repl.py +296 -0
- mcli_framework-7.19.8/src/mcli/lib/secrets/store.py +245 -0
- mcli_framework-7.19.8/src/mcli/lib/services/data_pipeline.py +467 -0
- mcli_framework-7.19.8/src/mcli/lib/services/lsh_client.py +450 -0
- mcli_framework-7.19.8/src/mcli/lib/services/redis_service.py +387 -0
- mcli_framework-7.19.8/src/mcli/lib/shell/shell.py +137 -0
- mcli_framework-7.19.8/src/mcli/lib/toml/toml.py +33 -0
- mcli_framework-7.19.8/src/mcli/lib/ui/styling.py +46 -0
- mcli_framework-7.19.8/src/mcli/lib/ui/visual_effects.py +626 -0
- mcli_framework-7.19.8/src/mcli/lib/watcher/watcher.py +184 -0
- mcli_framework-7.19.8/src/mcli/ml/api/app.py +202 -0
- mcli_framework-7.19.8/src/mcli/ml/api/middleware.py +216 -0
- mcli_framework-7.19.8/src/mcli/ml/api/routers/admin_router.py +14 -0
- mcli_framework-7.19.8/src/mcli/ml/api/routers/auth_router.py +219 -0
- mcli_framework-7.19.8/src/mcli/ml/api/routers/backtest_router.py +14 -0
- mcli_framework-7.19.8/src/mcli/ml/api/routers/data_router.py +14 -0
- mcli_framework-7.19.8/src/mcli/ml/api/routers/model_router.py +262 -0
- mcli_framework-7.19.8/src/mcli/ml/api/routers/monitoring_router.py +14 -0
- mcli_framework-7.19.8/src/mcli/ml/api/routers/portfolio_router.py +14 -0
- mcli_framework-7.19.8/src/mcli/ml/api/routers/prediction_router.py +263 -0
- mcli_framework-7.19.8/src/mcli/ml/api/routers/trade_router.py +16 -0
- mcli_framework-7.19.8/src/mcli/ml/api/routers/websocket_router.py +78 -0
- mcli_framework-7.19.8/src/mcli/ml/api/schemas.py +72 -0
- mcli_framework-7.19.8/src/mcli/ml/auth/auth_manager.py +394 -0
- mcli_framework-7.19.8/src/mcli/ml/auth/models.py +169 -0
- mcli_framework-7.19.8/src/mcli/ml/auth/permissions.py +295 -0
- mcli_framework-7.19.8/src/mcli/ml/backtesting/backtest_engine.py +522 -0
- mcli_framework-7.19.8/src/mcli/ml/backtesting/performance_metrics.py +425 -0
- mcli_framework-7.19.8/src/mcli/ml/backtesting/run.py +55 -0
- mcli_framework-7.19.8/src/mcli/ml/cache.py +393 -0
- mcli_framework-7.19.8/src/mcli/ml/cli/main.py +409 -0
- mcli_framework-7.19.8/src/mcli/ml/config/settings.py +410 -0
- mcli_framework-7.19.8/src/mcli/ml/configs/dvc_config.py +229 -0
- mcli_framework-7.19.8/src/mcli/ml/configs/mlflow_config.py +130 -0
- mcli_framework-7.19.8/src/mcli/ml/configs/mlops_manager.py +291 -0
- mcli_framework-7.19.8/src/mcli/ml/dashboard/app.py +481 -0
- mcli_framework-7.19.8/src/mcli/ml/dashboard/app_integrated.py +3031 -0
- mcli_framework-7.19.8/src/mcli/ml/dashboard/app_supabase.py +651 -0
- mcli_framework-7.19.8/src/mcli/ml/dashboard/app_training.py +613 -0
- mcli_framework-7.19.8/src/mcli/ml/dashboard/cli.py +60 -0
- mcli_framework-7.19.8/src/mcli/ml/dashboard/common.py +166 -0
- mcli_framework-7.19.8/src/mcli/ml/dashboard/components/charts.py +219 -0
- mcli_framework-7.19.8/src/mcli/ml/dashboard/components/metrics.py +105 -0
- mcli_framework-7.19.8/src/mcli/ml/dashboard/components/tables.py +223 -0
- mcli_framework-7.19.8/src/mcli/ml/dashboard/overview.py +402 -0
- mcli_framework-7.19.8/src/mcli/ml/dashboard/pages/cicd.py +426 -0
- mcli_framework-7.19.8/src/mcli/ml/dashboard/pages/debug_dependencies.py +413 -0
- mcli_framework-7.19.8/src/mcli/ml/dashboard/pages/gravity_viz.py +844 -0
- mcli_framework-7.19.8/src/mcli/ml/dashboard/pages/monte_carlo_predictions.py +550 -0
- mcli_framework-7.19.8/src/mcli/ml/dashboard/pages/predictions_enhanced.py +1020 -0
- mcli_framework-7.19.8/src/mcli/ml/dashboard/pages/scrapers_and_logs.py +1100 -0
- mcli_framework-7.19.8/src/mcli/ml/dashboard/pages/test_portfolio.py +452 -0
- mcli_framework-7.19.8/src/mcli/ml/dashboard/pages/trading.py +835 -0
- mcli_framework-7.19.8/src/mcli/ml/dashboard/pages/workflows.py +568 -0
- mcli_framework-7.19.8/src/mcli/ml/dashboard/streamlit_extras_utils.py +288 -0
- mcli_framework-7.19.8/src/mcli/ml/dashboard/styles.py +55 -0
- mcli_framework-7.19.8/src/mcli/ml/dashboard/utils.py +192 -0
- mcli_framework-7.19.8/src/mcli/ml/dashboard/warning_suppression.py +36 -0
- mcli_framework-7.19.8/src/mcli/ml/data_ingestion/api_connectors.py +466 -0
- mcli_framework-7.19.8/src/mcli/ml/data_ingestion/data_pipeline.py +559 -0
- mcli_framework-7.19.8/src/mcli/ml/data_ingestion/stream_processor.py +501 -0
- mcli_framework-7.19.8/src/mcli/ml/database/migrations/env.py +95 -0
- mcli_framework-7.19.8/src/mcli/ml/database/models.py +698 -0
- mcli_framework-7.19.8/src/mcli/ml/database/session.py +365 -0
- mcli_framework-7.19.8/src/mcli/ml/experimentation/ab_testing.py +894 -0
- mcli_framework-7.19.8/src/mcli/ml/features/ensemble_features.py +603 -0
- mcli_framework-7.19.8/src/mcli/ml/features/recommendation_engine.py +810 -0
- mcli_framework-7.19.8/src/mcli/ml/features/stock_features.py +571 -0
- mcli_framework-7.19.8/src/mcli/ml/features/test_feature_engineering.py +346 -0
- mcli_framework-7.19.8/src/mcli/ml/logging.py +80 -0
- mcli_framework-7.19.8/src/mcli/ml/mlops/data_versioning.py +510 -0
- mcli_framework-7.19.8/src/mcli/ml/mlops/experiment_tracker.py +385 -0
- mcli_framework-7.19.8/src/mcli/ml/mlops/model_serving.py +475 -0
- mcli_framework-7.19.8/src/mcli/ml/mlops/pipeline_orchestrator.py +658 -0
- mcli_framework-7.19.8/src/mcli/ml/models/base_models.py +325 -0
- mcli_framework-7.19.8/src/mcli/ml/models/ensemble_models.py +677 -0
- mcli_framework-7.19.8/src/mcli/ml/models/recommendation_models.py +475 -0
- mcli_framework-7.19.8/src/mcli/ml/models/test_models.py +489 -0
- mcli_framework-7.19.8/src/mcli/ml/monitoring/drift_detection.py +693 -0
- mcli_framework-7.19.8/src/mcli/ml/monitoring/metrics.py +33 -0
- mcli_framework-7.19.8/src/mcli/ml/optimization/optimize.py +52 -0
- mcli_framework-7.19.8/src/mcli/ml/optimization/portfolio_optimizer.py +872 -0
- mcli_framework-7.19.8/src/mcli/ml/predictions/monte_carlo.py +416 -0
- mcli_framework-7.19.8/src/mcli/ml/predictions/prediction_engine.py +235 -0
- mcli_framework-7.19.8/src/mcli/ml/preprocessing/data_cleaners.py +451 -0
- mcli_framework-7.19.8/src/mcli/ml/preprocessing/feature_extractors.py +489 -0
- mcli_framework-7.19.8/src/mcli/ml/preprocessing/ml_pipeline.py +383 -0
- mcli_framework-7.19.8/src/mcli/ml/preprocessing/test_preprocessing.py +293 -0
- mcli_framework-7.19.8/src/mcli/ml/scripts/populate_sample_data.py +216 -0
- mcli_framework-7.19.8/src/mcli/ml/serving/serve.py +49 -0
- mcli_framework-7.19.8/src/mcli/ml/tasks.py +399 -0
- mcli_framework-7.19.8/src/mcli/ml/tests/test_integration.py +438 -0
- mcli_framework-7.19.8/src/mcli/ml/tests/test_training_dashboard.py +414 -0
- mcli_framework-7.19.8/src/mcli/ml/trading/alpaca_client.py +416 -0
- mcli_framework-7.19.8/src/mcli/ml/trading/migrations.py +200 -0
- mcli_framework-7.19.8/src/mcli/ml/trading/models.py +434 -0
- mcli_framework-7.19.8/src/mcli/ml/trading/paper_trading.py +347 -0
- mcli_framework-7.19.8/src/mcli/ml/trading/risk_management.py +390 -0
- mcli_framework-7.19.8/src/mcli/ml/trading/trading_service.py +522 -0
- mcli_framework-7.19.8/src/mcli/ml/training/train.py +79 -0
- mcli_framework-7.19.8/src/mcli/ml/training/train_model.py +567 -0
- mcli_framework-7.19.8/src/mcli/mygroup/test_cmd.py +2 -0
- mcli_framework-7.19.8/src/mcli/public/oi/oi.py +14 -0
- mcli_framework-7.19.8/src/mcli/public/public.py +4 -0
- mcli_framework-7.19.8/src/mcli/self/completion_cmd.py +222 -0
- mcli_framework-7.19.8/src/mcli/self/logs_cmd.py +446 -0
- mcli_framework-7.19.8/src/mcli/self/migrate_cmd.py +466 -0
- mcli_framework-7.19.8/src/mcli/self/redis_cmd.py +268 -0
- mcli_framework-7.19.8/src/mcli/self/self_cmd.py +1104 -0
- mcli_framework-7.19.8/src/mcli/self/store_cmd.py +422 -0
- mcli_framework-7.19.8/src/mcli/self/test_cmd.py +2 -0
- mcli_framework-7.19.8/src/mcli/self/visual_cmd.py +298 -0
- mcli_framework-7.19.8/src/mcli/self/zsh_cmd.py +257 -0
- mcli_framework-7.19.8/src/mcli/workflow/daemon/async_command_database.py +680 -0
- mcli_framework-7.19.8/src/mcli/workflow/daemon/async_process_manager.py +589 -0
- mcli_framework-7.19.8/src/mcli/workflow/daemon/client.py +524 -0
- mcli_framework-7.19.8/src/mcli/workflow/daemon/daemon.py +921 -0
- mcli_framework-7.19.8/src/mcli/workflow/daemon/daemon_api.py +59 -0
- mcli_framework-7.19.8/src/mcli/workflow/daemon/enhanced_daemon.py +562 -0
- mcli_framework-7.19.8/src/mcli/workflow/daemon/process_cli.py +243 -0
- mcli_framework-7.19.8/src/mcli/workflow/daemon/process_manager.py +436 -0
- mcli_framework-7.19.8/src/mcli/workflow/daemon/test_daemon.py +274 -0
- mcli_framework-7.19.8/src/mcli/workflow/dashboard/dashboard_cmd.py +179 -0
- mcli_framework-7.19.8/src/mcli/workflow/doc_convert.py +762 -0
- mcli_framework-7.19.8/src/mcli/workflow/docker/docker.py +0 -0
- mcli_framework-7.19.8/src/mcli/workflow/gcloud/config.toml +21 -0
- mcli_framework-7.19.8/src/mcli/workflow/gcloud/gcloud.py +61 -0
- mcli_framework-7.19.8/src/mcli/workflow/git_commit/ai_service.py +338 -0
- mcli_framework-7.19.8/src/mcli/workflow/lsh_integration.py +341 -0
- mcli_framework-7.19.8/src/mcli/workflow/model_service/client.py +589 -0
- mcli_framework-7.19.8/src/mcli/workflow/model_service/download_and_run_efficient_models.py +284 -0
- mcli_framework-7.19.8/src/mcli/workflow/model_service/lightweight_embedder.py +387 -0
- mcli_framework-7.19.8/src/mcli/workflow/model_service/lightweight_model_server.py +745 -0
- mcli_framework-7.19.8/src/mcli/workflow/model_service/lightweight_test.py +238 -0
- mcli_framework-7.19.8/src/mcli/workflow/model_service/model_service.py +1944 -0
- mcli_framework-7.19.8/src/mcli/workflow/model_service/ollama_efficient_runner.py +421 -0
- mcli_framework-7.19.8/src/mcli/workflow/model_service/openai_adapter.py +347 -0
- mcli_framework-7.19.8/src/mcli/workflow/model_service/pdf_processor.py +381 -0
- mcli_framework-7.19.8/src/mcli/workflow/model_service/test_efficient_runner.py +230 -0
- mcli_framework-7.19.8/src/mcli/workflow/model_service/test_example.py +313 -0
- mcli_framework-7.19.8/src/mcli/workflow/model_service/test_integration.py +129 -0
- mcli_framework-7.19.8/src/mcli/workflow/model_service/test_new_features.py +148 -0
- mcli_framework-7.19.8/src/mcli/workflow/notebook/command_loader.py +248 -0
- mcli_framework-7.19.8/src/mcli/workflow/notebook/converter.py +375 -0
- mcli_framework-7.19.8/src/mcli/workflow/notebook/executor.py +277 -0
- mcli_framework-7.19.8/src/mcli/workflow/notebook/notebook_cmd.py +522 -0
- mcli_framework-7.19.8/src/mcli/workflow/notebook/schema.py +411 -0
- mcli_framework-7.19.8/src/mcli/workflow/notebook/validator.py +317 -0
- mcli_framework-7.19.8/src/mcli/workflow/openai/openai.py +98 -0
- mcli_framework-7.19.8/src/mcli/workflow/registry/registry.py +183 -0
- mcli_framework-7.19.8/src/mcli/workflow/repo/repo.py +222 -0
- mcli_framework-7.19.8/src/mcli/workflow/scheduler/cron_parser.py +235 -0
- mcli_framework-7.19.8/src/mcli/workflow/scheduler/job.py +182 -0
- mcli_framework-7.19.8/src/mcli/workflow/scheduler/monitor.py +139 -0
- mcli_framework-7.19.8/src/mcli/workflow/scheduler/persistence.py +323 -0
- mcli_framework-7.19.8/src/mcli/workflow/scheduler/scheduler.py +678 -0
- mcli_framework-7.19.8/src/mcli/workflow/secrets/secrets_cmd.py +191 -0
- mcli_framework-7.19.8/src/mcli/workflow/sync/test_cmd.py +313 -0
- mcli_framework-7.19.8/src/mcli/workflow/sync_cmd.py +446 -0
- mcli_framework-7.19.8/src/mcli/workflow/wakatime/wakatime.py +10 -0
- mcli_framework-7.19.8/src/mcli/workflow/workflow.py +473 -0
- mcli_framework-7.19.8/src/mcli_framework.egg-info/PKG-INFO +853 -0
- mcli_framework-7.19.8/src/mcli_framework.egg-info/SOURCES.txt +354 -0
- mcli_framework-7.19.8/src/mcli_framework.egg-info/dependency_links.txt +1 -0
- mcli_framework-7.19.8/src/mcli_framework.egg-info/entry_points.txt +7 -0
- mcli_framework-7.19.8/src/mcli_framework.egg-info/requires.txt +167 -0
- mcli_framework-7.19.8/src/mcli_framework.egg-info/top_level.txt +1 -0
- mcli_framework-7.19.8/tests/cli/test_all_commands.py +7 -0
- mcli_framework-7.19.8/tests/cli/test_app_logs_cmd.py +208 -0
- mcli_framework-7.19.8/tests/cli/test_app_redis_cmd.py +272 -0
- mcli_framework-7.19.8/tests/cli/test_logs_cmd.py +287 -0
- mcli_framework-7.19.8/tests/cli/test_main_app.py +36 -0
- mcli_framework-7.19.8/tests/cli/test_model_cmd.py +621 -0
- mcli_framework-7.19.8/tests/cli/test_self_cmd.py +778 -0
- mcli_framework-7.19.8/tests/cli/test_self_cmd_plugins.py +267 -0
- mcli_framework-7.19.8/tests/cli/test_self_cmd_utilities.py +227 -0
- mcli_framework-7.19.8/tests/cli/test_workflow_creation_commands.py +133 -0
- mcli_framework-7.19.8/tests/cli/test_workflow_file.py +139 -0
- mcli_framework-7.19.8/tests/cli/test_workflow_gcloud.py +122 -0
- mcli_framework-7.19.8/tests/cli/test_workflow_registry.py +233 -0
- mcli_framework-7.19.8/tests/conftest.py +148 -0
- mcli_framework-7.19.8/tests/demo_generate_graph.py +79 -0
- mcli_framework-7.19.8/tests/demo_hierarchical_transform.py +412 -0
- mcli_framework-7.19.8/tests/e2e/test_complete_workflows.py +420 -0
- mcli_framework-7.19.8/tests/e2e/test_model_workflow.py +155 -0
- mcli_framework-7.19.8/tests/e2e/test_new_user_workflow.py +144 -0
- mcli_framework-7.19.8/tests/e2e/test_update_workflow.py +195 -0
- mcli_framework-7.19.8/tests/fixtures/chat_fixtures.py +83 -0
- mcli_framework-7.19.8/tests/fixtures/cli_fixtures.py +93 -0
- mcli_framework-7.19.8/tests/fixtures/data_fixtures.py +97 -0
- mcli_framework-7.19.8/tests/fixtures/db_fixtures.py +100 -0
- mcli_framework-7.19.8/tests/fixtures/model_fixtures.py +66 -0
- mcli_framework-7.19.8/tests/integration/test_agent.py +113 -0
- mcli_framework-7.19.8/tests/integration/test_chat_client.py +310 -0
- mcli_framework-7.19.8/tests/integration/test_chat_system.py +144 -0
- mcli_framework-7.19.8/tests/integration/test_daemon_server.py +754 -0
- mcli_framework-7.19.8/tests/integration/test_direct_file_execution.py +250 -0
- mcli_framework-7.19.8/tests/integration/test_e2e_dashboard_lsh_supabase.py +694 -0
- mcli_framework-7.19.8/tests/integration/test_flask_webapp.py +7 -0
- mcli_framework-7.19.8/tests/integration/test_folder_workflows_integration.py +436 -0
- mcli_framework-7.19.8/tests/integration/test_gcloud_services.py +58 -0
- mcli_framework-7.19.8/tests/integration/test_ml_auth.py +374 -0
- mcli_framework-7.19.8/tests/integration/test_ml_data_pipeline.py +642 -0
- mcli_framework-7.19.8/tests/integration/test_ml_models.py +323 -0
- mcli_framework-7.19.8/tests/integration/test_ml_pipeline.py +446 -0
- mcli_framework-7.19.8/tests/integration/test_module_imports.py +145 -0
- mcli_framework-7.19.8/tests/integration/test_notebook_workflows.py +500 -0
- mcli_framework-7.19.8/tests/integration/test_oi_service.py +10 -0
- mcli_framework-7.19.8/tests/integration/test_repo_operations.py +77 -0
- mcli_framework-7.19.8/tests/integration/test_scheduler_integration.py +484 -0
- mcli_framework-7.19.8/tests/integration/test_service_registry.py +141 -0
- mcli_framework-7.19.8/tests/integration/test_supabase_live_connection.py +216 -0
- mcli_framework-7.19.8/tests/integration/test_video_processing.py +60 -0
- mcli_framework-7.19.8/tests/integration/test_wakatime_api.py +10 -0
- mcli_framework-7.19.8/tests/integration/test_webapp_full.py +7 -0
- mcli_framework-7.19.8/tests/integration/test_workflow.py +7 -0
- mcli_framework-7.19.8/tests/integration/test_workflow_commands.py +7 -0
- mcli_framework-7.19.8/tests/run_tests.py +84 -0
- mcli_framework-7.19.8/tests/test_harness.py +186 -0
- mcli_framework-7.19.8/tests/test_openai_adapter.py +242 -0
- mcli_framework-7.19.8/tests/unit/test_api_utils.py +100 -0
- mcli_framework-7.19.8/tests/unit/test_async_process_manager.py +575 -0
- mcli_framework-7.19.8/tests/unit/test_auth_modules.py +326 -0
- mcli_framework-7.19.8/tests/unit/test_bug_fixes.py +38 -0
- mcli_framework-7.19.8/tests/unit/test_config.py +100 -0
- mcli_framework-7.19.8/tests/unit/test_custom_commands.py +338 -0
- mcli_framework-7.19.8/tests/unit/test_custom_commands_filtering.py +164 -0
- mcli_framework-7.19.8/tests/unit/test_daemon_api.py +268 -0
- mcli_framework-7.19.8/tests/unit/test_dashboard_components.py +451 -0
- mcli_framework-7.19.8/tests/unit/test_dashboard_functions.py +275 -0
- mcli_framework-7.19.8/tests/unit/test_dashboard_pages.py +524 -0
- mcli_framework-7.19.8/tests/unit/test_dependencies.py +108 -0
- mcli_framework-7.19.8/tests/unit/test_doc_convert_workflow.py +261 -0
- mcli_framework-7.19.8/tests/unit/test_emulator_workflow.py +619 -0
- mcli_framework-7.19.8/tests/unit/test_erd_generation.py +1365 -0
- mcli_framework-7.19.8/tests/unit/test_erd_generic.py +254 -0
- mcli_framework-7.19.8/tests/unit/test_erd_imports.py +21 -0
- mcli_framework-7.19.8/tests/unit/test_folder_workflows.py +403 -0
- mcli_framework-7.19.8/tests/unit/test_git_commit_workflow.py +328 -0
- mcli_framework-7.19.8/tests/unit/test_lib_auth.py +10 -0
- mcli_framework-7.19.8/tests/unit/test_lib_files.py +46 -0
- mcli_framework-7.19.8/tests/unit/test_lib_utils.py +9 -0
- mcli_framework-7.19.8/tests/unit/test_logger.py +216 -0
- mcli_framework-7.19.8/tests/unit/test_ml_preprocessing.py +167 -0
- mcli_framework-7.19.8/tests/unit/test_notebook_command_loader.py +379 -0
- mcli_framework-7.19.8/tests/unit/test_notebook_executor.py +239 -0
- mcli_framework-7.19.8/tests/unit/test_optional_deps.py +211 -0
- mcli_framework-7.19.8/tests/unit/test_paths.py +202 -0
- mcli_framework-7.19.8/tests/unit/test_pdf_compress.py +259 -0
- mcli_framework-7.19.8/tests/unit/test_prediction_engine.py +550 -0
- mcli_framework-7.19.8/tests/unit/test_regression.py +129 -0
- mcli_framework-7.19.8/tests/unit/test_scheduler.py +441 -0
- mcli_framework-7.19.8/tests/unit/test_scheduler_cron_parser.py +511 -0
- mcli_framework-7.19.8/tests/unit/test_scheduler_job.py +507 -0
- mcli_framework-7.19.8/tests/unit/test_scheduler_monitor.py +511 -0
- mcli_framework-7.19.8/tests/unit/test_scheduler_persistence.py +711 -0
- mcli_framework-7.19.8/tests/unit/test_self_update.py +200 -0
- mcli_framework-7.19.8/tests/unit/test_store_cmd.py +445 -0
- mcli_framework-7.19.8/tests/unit/test_supabase_connection.py +287 -0
- mcli_framework-7.19.8/tests/unit/test_supabase_pagination.py +235 -0
- mcli_framework-7.19.8/tests/unit/test_toml_utils.py +194 -0
- mcli_framework-7.19.8/tests/unit/test_trading_imports.py +125 -0
- mcli_framework-7.19.8/tests/unit/test_ui_rich.py +22 -0
- mcli_framework-7.19.8/tests/unit/test_uv_compat.py +217 -0
- mcli_framework-7.19.8/tests/unit/test_workflow_file_completion.py +222 -0
- mcli_framework-7.19.8/tests/unit/workflow/test_notebook.py +443 -0
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
version: 2
|
|
2
|
+
updates:
|
|
3
|
+
# Python dependencies
|
|
4
|
+
- package-ecosystem: "pip"
|
|
5
|
+
directory: "/"
|
|
6
|
+
schedule:
|
|
7
|
+
interval: "weekly"
|
|
8
|
+
day: "monday"
|
|
9
|
+
open-pull-requests-limit: 10
|
|
10
|
+
reviewers:
|
|
11
|
+
- "gwicho38"
|
|
12
|
+
labels:
|
|
13
|
+
- "dependencies"
|
|
14
|
+
- "python"
|
|
15
|
+
commit-message:
|
|
16
|
+
prefix: "chore"
|
|
17
|
+
include: "scope"
|
|
18
|
+
|
|
19
|
+
# GitHub Actions
|
|
20
|
+
- package-ecosystem: "github-actions"
|
|
21
|
+
directory: "/"
|
|
22
|
+
schedule:
|
|
23
|
+
interval: "weekly"
|
|
24
|
+
day: "monday"
|
|
25
|
+
open-pull-requests-limit: 5
|
|
26
|
+
reviewers:
|
|
27
|
+
- "gwicho38"
|
|
28
|
+
labels:
|
|
29
|
+
- "dependencies"
|
|
30
|
+
- "github-actions"
|
|
31
|
+
commit-message:
|
|
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"
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
# Dependency Review configuration
|
|
2
|
+
# https://docs.github.com/en/code-security/supply-chain-security/understanding-your-software-supply-chain/configuring-dependency-review
|
|
3
|
+
|
|
4
|
+
# Fail only on high/critical vulnerabilities
|
|
5
|
+
fail-on-severity: high
|
|
6
|
+
|
|
7
|
+
# Allow specific licenses commonly used in npm packages
|
|
8
|
+
allow-licenses:
|
|
9
|
+
- MIT
|
|
10
|
+
- Apache-2.0
|
|
11
|
+
- BSD-2-Clause
|
|
12
|
+
- BSD-3-Clause
|
|
13
|
+
- ISC
|
|
14
|
+
- 0BSD
|
|
15
|
+
|
|
16
|
+
# Comment on PRs with dependency changes
|
|
17
|
+
comment-summary-in-pr: on-failure
|
|
@@ -0,0 +1,102 @@
|
|
|
1
|
+
name: Build and Package
|
|
2
|
+
|
|
3
|
+
on:
|
|
4
|
+
push:
|
|
5
|
+
branches: [ main ]
|
|
6
|
+
pull_request:
|
|
7
|
+
branches: [ main ]
|
|
8
|
+
workflow_dispatch:
|
|
9
|
+
inputs:
|
|
10
|
+
debug:
|
|
11
|
+
description: 'Enable debug mode'
|
|
12
|
+
required: false
|
|
13
|
+
default: false
|
|
14
|
+
type: boolean
|
|
15
|
+
|
|
16
|
+
env:
|
|
17
|
+
PYTHON_VERSION: '3.11'
|
|
18
|
+
UV_VERSION: 'latest'
|
|
19
|
+
|
|
20
|
+
jobs:
|
|
21
|
+
build:
|
|
22
|
+
name: Build Package
|
|
23
|
+
strategy:
|
|
24
|
+
matrix:
|
|
25
|
+
platform: [ubuntu-latest, macos-latest]
|
|
26
|
+
|
|
27
|
+
runs-on: ${{ matrix.platform }}
|
|
28
|
+
|
|
29
|
+
steps:
|
|
30
|
+
- name: Checkout code
|
|
31
|
+
uses: actions/checkout@v4
|
|
32
|
+
|
|
33
|
+
- name: Set up Python
|
|
34
|
+
uses: actions/setup-python@v4
|
|
35
|
+
with:
|
|
36
|
+
python-version: ${{ env.PYTHON_VERSION }}
|
|
37
|
+
|
|
38
|
+
- name: Install UV
|
|
39
|
+
run: |
|
|
40
|
+
if [[ "${{ matrix.platform }}" == "ubuntu-latest" ]]; then
|
|
41
|
+
curl -LsSf https://astral.sh/uv/install.sh | sh
|
|
42
|
+
echo "$HOME/.cargo/bin" >> $GITHUB_PATH
|
|
43
|
+
elif [[ "${{ matrix.platform }}" == "macos-latest" ]]; then
|
|
44
|
+
curl -LsSf https://astral.sh/uv/install.sh | sh
|
|
45
|
+
echo "$HOME/.cargo/bin" >> $GITHUB_PATH
|
|
46
|
+
fi
|
|
47
|
+
|
|
48
|
+
- name: Set up environment
|
|
49
|
+
run: |
|
|
50
|
+
if command -v uv >/dev/null 2>&1; then
|
|
51
|
+
make setup
|
|
52
|
+
else
|
|
53
|
+
python -m pip install --upgrade pip build
|
|
54
|
+
pip install -e .
|
|
55
|
+
fi
|
|
56
|
+
|
|
57
|
+
- name: Build wheel
|
|
58
|
+
run: |
|
|
59
|
+
if command -v uv >/dev/null 2>&1; then
|
|
60
|
+
make wheel
|
|
61
|
+
else
|
|
62
|
+
python -m build --wheel
|
|
63
|
+
fi
|
|
64
|
+
|
|
65
|
+
- name: Test basic functionality
|
|
66
|
+
run: |
|
|
67
|
+
if command -v uv >/dev/null 2>&1; then
|
|
68
|
+
make test
|
|
69
|
+
else
|
|
70
|
+
python -c "import mcli; print('✅ Package imports successfully')"
|
|
71
|
+
python -m mcli --help
|
|
72
|
+
fi
|
|
73
|
+
|
|
74
|
+
- name: Upload wheel artifact
|
|
75
|
+
uses: actions/upload-artifact@v4
|
|
76
|
+
with:
|
|
77
|
+
name: mcli-wheel-${{ matrix.platform }}
|
|
78
|
+
path: dist/*.whl
|
|
79
|
+
retention-days: 30
|
|
80
|
+
|
|
81
|
+
|
|
82
|
+
build-summary:
|
|
83
|
+
name: Build Summary
|
|
84
|
+
needs: build
|
|
85
|
+
runs-on: ubuntu-latest
|
|
86
|
+
if: always()
|
|
87
|
+
|
|
88
|
+
steps:
|
|
89
|
+
- name: Build Status Summary
|
|
90
|
+
run: |
|
|
91
|
+
echo "## Build Results" >> $GITHUB_STEP_SUMMARY
|
|
92
|
+
echo "| Platform | Status |" >> $GITHUB_STEP_SUMMARY
|
|
93
|
+
echo "|----------|--------|" >> $GITHUB_STEP_SUMMARY
|
|
94
|
+
echo "| Ubuntu | ${{ needs.build.result }} |" >> $GITHUB_STEP_SUMMARY
|
|
95
|
+
echo "| macOS | ${{ needs.build.result }} |" >> $GITHUB_STEP_SUMMARY
|
|
96
|
+
echo "| Windows | ${{ needs.build.result }} |" >> $GITHUB_STEP_SUMMARY
|
|
97
|
+
|
|
98
|
+
if [ "${{ needs.build.result }}" = "success" ]; then
|
|
99
|
+
echo "✅ All builds completed successfully!" >> $GITHUB_STEP_SUMMARY
|
|
100
|
+
else
|
|
101
|
+
echo "❌ Some builds failed. Check the logs for details." >> $GITHUB_STEP_SUMMARY
|
|
102
|
+
fi
|
|
@@ -0,0 +1,309 @@
|
|
|
1
|
+
name: CI/CD Pipeline
|
|
2
|
+
|
|
3
|
+
on:
|
|
4
|
+
push:
|
|
5
|
+
branches: [ main, develop ]
|
|
6
|
+
pull_request:
|
|
7
|
+
branches: [ main ]
|
|
8
|
+
workflow_dispatch:
|
|
9
|
+
|
|
10
|
+
env:
|
|
11
|
+
PYTHON_VERSION: "3.11"
|
|
12
|
+
|
|
13
|
+
jobs:
|
|
14
|
+
lint-and-format:
|
|
15
|
+
name: Lint and Format Check
|
|
16
|
+
runs-on: ubuntu-latest
|
|
17
|
+
|
|
18
|
+
steps:
|
|
19
|
+
- name: Checkout code
|
|
20
|
+
uses: actions/checkout@v4
|
|
21
|
+
|
|
22
|
+
- name: Set up Python
|
|
23
|
+
uses: actions/setup-python@v4
|
|
24
|
+
with:
|
|
25
|
+
python-version: ${{ env.PYTHON_VERSION }}
|
|
26
|
+
|
|
27
|
+
- name: Install dependencies
|
|
28
|
+
run: |
|
|
29
|
+
python -m pip install --upgrade pip
|
|
30
|
+
pip install black isort mypy
|
|
31
|
+
pip install -e .[dev]
|
|
32
|
+
|
|
33
|
+
- name: Check code formatting with Black
|
|
34
|
+
run: black --check --diff src/
|
|
35
|
+
|
|
36
|
+
- name: Check import sorting with isort
|
|
37
|
+
run: isort --check-only --diff src/
|
|
38
|
+
|
|
39
|
+
- name: Check for hardcoded strings
|
|
40
|
+
run: python tools/lint_hardcoded_strings.py --check-all --json
|
|
41
|
+
continue-on-error: true # Non-blocking until codebase refactoring is complete (13k+ violations)
|
|
42
|
+
|
|
43
|
+
- name: Type checking with mypy
|
|
44
|
+
run: mypy src/ --ignore-missing-imports
|
|
45
|
+
continue-on-error: true # Non-blocking due to type errors in notebook schema
|
|
46
|
+
|
|
47
|
+
test-rust:
|
|
48
|
+
name: Test Rust Extensions
|
|
49
|
+
runs-on: ${{ matrix.os }}
|
|
50
|
+
continue-on-error: true # Non-blocking: macOS has LLVM version mismatch, tests pass on Ubuntu
|
|
51
|
+
strategy:
|
|
52
|
+
fail-fast: false
|
|
53
|
+
matrix:
|
|
54
|
+
os: [ubuntu-latest, macos-latest]
|
|
55
|
+
|
|
56
|
+
steps:
|
|
57
|
+
- name: Checkout code
|
|
58
|
+
uses: actions/checkout@v4
|
|
59
|
+
|
|
60
|
+
- name: Set up Rust
|
|
61
|
+
uses: dtolnay/rust-toolchain@stable
|
|
62
|
+
with:
|
|
63
|
+
components: rustfmt, clippy
|
|
64
|
+
|
|
65
|
+
- name: Rust format check
|
|
66
|
+
run: |
|
|
67
|
+
cd mcli_rust
|
|
68
|
+
cargo fmt --all -- --check
|
|
69
|
+
|
|
70
|
+
- name: Rust clippy
|
|
71
|
+
run: |
|
|
72
|
+
cd mcli_rust
|
|
73
|
+
cargo clippy -- -D warnings || cargo clippy || echo "Warning: Clippy found issues, continuing"
|
|
74
|
+
continue-on-error: ${{ matrix.os == 'macos-latest' }}
|
|
75
|
+
|
|
76
|
+
- name: Rust tests
|
|
77
|
+
run: |
|
|
78
|
+
cd mcli_rust
|
|
79
|
+
cargo test
|
|
80
|
+
|
|
81
|
+
test-python:
|
|
82
|
+
name: Test Python Package
|
|
83
|
+
runs-on: ${{ matrix.os }}
|
|
84
|
+
continue-on-error: true # Non-blocking: Some tests have import errors (email-validator) - fixing in progress
|
|
85
|
+
strategy:
|
|
86
|
+
fail-fast: false
|
|
87
|
+
matrix:
|
|
88
|
+
os: [ubuntu-latest, macos-latest]
|
|
89
|
+
python-version: ["3.9", "3.10", "3.11", "3.12"]
|
|
90
|
+
|
|
91
|
+
steps:
|
|
92
|
+
- name: Checkout code
|
|
93
|
+
uses: actions/checkout@v4
|
|
94
|
+
|
|
95
|
+
- name: Set up Python
|
|
96
|
+
uses: actions/setup-python@v4
|
|
97
|
+
with:
|
|
98
|
+
python-version: ${{ matrix.python-version }}
|
|
99
|
+
|
|
100
|
+
- name: Install system dependencies (Ubuntu)
|
|
101
|
+
if: matrix.os == 'ubuntu-latest'
|
|
102
|
+
run: |
|
|
103
|
+
sudo apt-get update
|
|
104
|
+
sudo apt-get install -y build-essential libpq-dev
|
|
105
|
+
|
|
106
|
+
- name: Install system dependencies (macOS)
|
|
107
|
+
if: matrix.os == 'macos-latest'
|
|
108
|
+
run: |
|
|
109
|
+
brew install postgresql@16
|
|
110
|
+
|
|
111
|
+
- name: Set up Rust (for building extensions)
|
|
112
|
+
uses: dtolnay/rust-toolchain@stable
|
|
113
|
+
|
|
114
|
+
- name: Install Python dependencies
|
|
115
|
+
run: |
|
|
116
|
+
python -m pip install --upgrade pip
|
|
117
|
+
pip install maturin
|
|
118
|
+
pip install -e .[dev]
|
|
119
|
+
|
|
120
|
+
- name: Build Rust extensions
|
|
121
|
+
run: |
|
|
122
|
+
cd mcli_rust
|
|
123
|
+
maturin develop --release || maturin develop || echo "Warning: Rust extension build failed, continuing without extensions"
|
|
124
|
+
continue-on-error: ${{ matrix.python-version == '3.12' || matrix.python-version == '3.9' }}
|
|
125
|
+
|
|
126
|
+
- name: Run Python tests with coverage
|
|
127
|
+
run: |
|
|
128
|
+
pytest tests/ -v --tb=short --cov=src/mcli --cov-report=xml --cov-report=term-missing
|
|
129
|
+
|
|
130
|
+
- name: Upload coverage to Codecov
|
|
131
|
+
uses: codecov/codecov-action@v4
|
|
132
|
+
if: matrix.os == 'ubuntu-latest' && matrix.python-version == '3.11'
|
|
133
|
+
with:
|
|
134
|
+
file: ./coverage.xml
|
|
135
|
+
flags: unittests
|
|
136
|
+
name: codecov-umbrella
|
|
137
|
+
fail_ci_if_error: false
|
|
138
|
+
|
|
139
|
+
- name: Test CLI functionality
|
|
140
|
+
run: |
|
|
141
|
+
mcli version
|
|
142
|
+
mcli --help
|
|
143
|
+
mcli self --help
|
|
144
|
+
mcli visual --help
|
|
145
|
+
|
|
146
|
+
integration-test:
|
|
147
|
+
name: Integration Tests
|
|
148
|
+
runs-on: ubuntu-latest
|
|
149
|
+
continue-on-error: true # Non-blocking: Rust-Python integration has known issues on CI
|
|
150
|
+
if: always() # Run even if test-python or test-rust fail
|
|
151
|
+
needs: [test-python, test-rust]
|
|
152
|
+
|
|
153
|
+
steps:
|
|
154
|
+
- name: Checkout code
|
|
155
|
+
uses: actions/checkout@v4
|
|
156
|
+
|
|
157
|
+
- name: Set up Python
|
|
158
|
+
uses: actions/setup-python@v4
|
|
159
|
+
with:
|
|
160
|
+
python-version: ${{ env.PYTHON_VERSION }}
|
|
161
|
+
|
|
162
|
+
- name: Set up Rust
|
|
163
|
+
uses: dtolnay/rust-toolchain@stable
|
|
164
|
+
|
|
165
|
+
- name: Install dependencies
|
|
166
|
+
run: |
|
|
167
|
+
python -m pip install --upgrade pip
|
|
168
|
+
pip install maturin
|
|
169
|
+
pip install -e .[dev]
|
|
170
|
+
|
|
171
|
+
- name: Build Rust extensions
|
|
172
|
+
run: |
|
|
173
|
+
cd mcli_rust
|
|
174
|
+
maturin develop --release || maturin develop || echo "Warning: Rust extension build failed"
|
|
175
|
+
continue-on-error: true
|
|
176
|
+
|
|
177
|
+
- name: Test Rust-Python integration
|
|
178
|
+
run: |
|
|
179
|
+
python -c "
|
|
180
|
+
import mcli_rust
|
|
181
|
+
print('✅ Rust extensions imported successfully')
|
|
182
|
+
|
|
183
|
+
# Test TF-IDF
|
|
184
|
+
vectorizer = mcli_rust.TfIdfVectorizer()
|
|
185
|
+
docs = ['hello world', 'rust is fast', 'python integration']
|
|
186
|
+
vectors = vectorizer.fit_transform(docs)
|
|
187
|
+
print(f'✅ TF-IDF: Generated {len(vectors)} vectors')
|
|
188
|
+
|
|
189
|
+
# Test File Watcher
|
|
190
|
+
watcher = mcli_rust.FileWatcher()
|
|
191
|
+
print('✅ File Watcher: Created successfully')
|
|
192
|
+
|
|
193
|
+
# Test Command Matcher
|
|
194
|
+
matcher = mcli_rust.CommandMatcher()
|
|
195
|
+
print('✅ Command Matcher: Created successfully')
|
|
196
|
+
|
|
197
|
+
# Test Process Manager
|
|
198
|
+
manager = mcli_rust.ProcessManager()
|
|
199
|
+
print('✅ Process Manager: Created successfully')
|
|
200
|
+
|
|
201
|
+
print('🎉 All Rust extensions working!')
|
|
202
|
+
"
|
|
203
|
+
|
|
204
|
+
- name: Test performance monitoring
|
|
205
|
+
run: |
|
|
206
|
+
mcli self performance --detailed
|
|
207
|
+
|
|
208
|
+
- name: Test visual effects
|
|
209
|
+
run: |
|
|
210
|
+
mcli visual message --style success "Integration tests passed!"
|
|
211
|
+
mcli visual spinner --spinner-type rust --duration 2 --message "Testing spinner..."
|
|
212
|
+
|
|
213
|
+
security-scan:
|
|
214
|
+
name: Security Scan
|
|
215
|
+
runs-on: ubuntu-latest
|
|
216
|
+
continue-on-error: true # Non-blocking due to occasional GitHub Actions infrastructure issues
|
|
217
|
+
|
|
218
|
+
steps:
|
|
219
|
+
- name: Checkout code
|
|
220
|
+
uses: actions/checkout@v4
|
|
221
|
+
|
|
222
|
+
- name: Set up Python
|
|
223
|
+
uses: actions/setup-python@v4
|
|
224
|
+
with:
|
|
225
|
+
python-version: ${{ env.PYTHON_VERSION }}
|
|
226
|
+
|
|
227
|
+
- name: Install security tools
|
|
228
|
+
run: |
|
|
229
|
+
python -m pip install --upgrade pip
|
|
230
|
+
pip install bandit safety
|
|
231
|
+
|
|
232
|
+
- name: Run Bandit security linter
|
|
233
|
+
run: |
|
|
234
|
+
bandit -r src/ -f json -o bandit-report.json || true
|
|
235
|
+
bandit -r src/ -ll
|
|
236
|
+
continue-on-error: true
|
|
237
|
+
|
|
238
|
+
- name: Run Safety dependency check
|
|
239
|
+
run: |
|
|
240
|
+
safety check --json > safety-report.json || true
|
|
241
|
+
safety check
|
|
242
|
+
continue-on-error: true
|
|
243
|
+
|
|
244
|
+
- name: Run Trivy vulnerability scanner
|
|
245
|
+
uses: aquasecurity/trivy-action@master
|
|
246
|
+
with:
|
|
247
|
+
scan-type: 'fs'
|
|
248
|
+
scan-ref: '.'
|
|
249
|
+
format: 'sarif'
|
|
250
|
+
output: 'trivy-results.sarif'
|
|
251
|
+
severity: 'CRITICAL,HIGH'
|
|
252
|
+
|
|
253
|
+
- name: Upload Trivy scan results
|
|
254
|
+
uses: github/codeql-action/upload-sarif@v3
|
|
255
|
+
if: always()
|
|
256
|
+
continue-on-error: true
|
|
257
|
+
with:
|
|
258
|
+
sarif_file: 'trivy-results.sarif'
|
|
259
|
+
|
|
260
|
+
- name: Upload security reports
|
|
261
|
+
uses: actions/upload-artifact@v4
|
|
262
|
+
if: always()
|
|
263
|
+
with:
|
|
264
|
+
name: security-reports
|
|
265
|
+
path: |
|
|
266
|
+
bandit-report.json
|
|
267
|
+
safety-report.json
|
|
268
|
+
retention-days: 30
|
|
269
|
+
|
|
270
|
+
build-package:
|
|
271
|
+
name: Build Distribution Package
|
|
272
|
+
runs-on: ubuntu-latest
|
|
273
|
+
if: always() # Run even if tests fail
|
|
274
|
+
needs: [lint-and-format, test-python, test-rust, integration-test]
|
|
275
|
+
|
|
276
|
+
steps:
|
|
277
|
+
- name: Checkout code
|
|
278
|
+
uses: actions/checkout@v4
|
|
279
|
+
|
|
280
|
+
- name: Set up Python
|
|
281
|
+
uses: actions/setup-python@v4
|
|
282
|
+
with:
|
|
283
|
+
python-version: ${{ env.PYTHON_VERSION }}
|
|
284
|
+
|
|
285
|
+
- name: Set up Rust
|
|
286
|
+
uses: dtolnay/rust-toolchain@stable
|
|
287
|
+
|
|
288
|
+
- name: Install build dependencies
|
|
289
|
+
run: |
|
|
290
|
+
python -m pip install --upgrade pip
|
|
291
|
+
pip install build maturin
|
|
292
|
+
|
|
293
|
+
- name: Build Rust extensions
|
|
294
|
+
run: |
|
|
295
|
+
cd mcli_rust
|
|
296
|
+
maturin build --release
|
|
297
|
+
|
|
298
|
+
- name: Build Python package
|
|
299
|
+
run: |
|
|
300
|
+
python -m build
|
|
301
|
+
|
|
302
|
+
- name: Upload build artifacts
|
|
303
|
+
uses: actions/upload-artifact@v4
|
|
304
|
+
with:
|
|
305
|
+
name: dist-packages
|
|
306
|
+
path: |
|
|
307
|
+
dist/
|
|
308
|
+
mcli_rust/target/wheels/
|
|
309
|
+
retention-days: 7
|
|
@@ -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.13'
|
|
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
|
+
|