mcli-framework 7.11.0__tar.gz → 7.11.2__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Potentially problematic release.
This version of mcli-framework might be problematic. Click here for more details.
- {mcli_framework-7.11.0 → mcli_framework-7.11.2}/.github/workflows/publish-self-hosted.yml +12 -9
- {mcli_framework-7.11.0 → mcli_framework-7.11.2}/PKG-INFO +19 -1
- {mcli_framework-7.11.0 → mcli_framework-7.11.2}/README.md +18 -0
- {mcli_framework-7.11.0 → mcli_framework-7.11.2}/pyproject.toml +1 -1
- mcli_framework-7.11.2/src/mcli/__init__.py +160 -0
- mcli_framework-7.11.2/src/mcli/__main__.py +14 -0
- mcli_framework-7.11.2/src/mcli/app/__init__.py +23 -0
- {mcli_framework-7.11.0 → mcli_framework-7.11.2}/src/mcli/app/commands_cmd.py +261 -0
- mcli_framework-7.11.2/src/mcli/app/video/__init__.py +5 -0
- mcli_framework-7.11.2/src/mcli/chat/__init__.py +34 -0
- mcli_framework-7.11.2/src/mcli/lib/__init__.py +0 -0
- mcli_framework-7.11.2/src/mcli/lib/api/__init__.py +0 -0
- mcli_framework-7.11.2/src/mcli/lib/auth/__init__.py +1 -0
- mcli_framework-7.11.2/src/mcli/lib/config/__init__.py +1 -0
- mcli_framework-7.11.2/src/mcli/lib/erd/__init__.py +25 -0
- mcli_framework-7.11.2/src/mcli/lib/files/__init__.py +0 -0
- mcli_framework-7.11.2/src/mcli/lib/fs/__init__.py +1 -0
- mcli_framework-7.11.2/src/mcli/lib/logger/__init__.py +3 -0
- {mcli_framework-7.11.0 → mcli_framework-7.11.2}/src/mcli/lib/paths.py +6 -2
- mcli_framework-7.11.2/src/mcli/lib/performance/__init__.py +17 -0
- mcli_framework-7.11.2/src/mcli/lib/pickles/__init__.py +1 -0
- mcli_framework-7.11.2/src/mcli/lib/secrets/__init__.py +10 -0
- mcli_framework-7.11.2/src/mcli/lib/shell/__init__.py +0 -0
- mcli_framework-7.11.2/src/mcli/lib/toml/__init__.py +1 -0
- mcli_framework-7.11.2/src/mcli/lib/watcher/__init__.py +0 -0
- mcli_framework-7.11.2/src/mcli/ml/__init__.py +16 -0
- mcli_framework-7.11.2/src/mcli/ml/api/__init__.py +30 -0
- mcli_framework-7.11.2/src/mcli/ml/api/routers/__init__.py +27 -0
- mcli_framework-7.11.2/src/mcli/ml/auth/__init__.py +41 -0
- mcli_framework-7.11.2/src/mcli/ml/backtesting/__init__.py +33 -0
- mcli_framework-7.11.2/src/mcli/ml/cli/__init__.py +5 -0
- mcli_framework-7.11.2/src/mcli/ml/config/__init__.py +33 -0
- mcli_framework-7.11.2/src/mcli/ml/configs/__init__.py +16 -0
- mcli_framework-7.11.2/src/mcli/ml/dashboard/__init__.py +12 -0
- mcli_framework-7.11.2/src/mcli/ml/dashboard/components/__init__.py +7 -0
- mcli_framework-7.11.2/src/mcli/ml/dashboard/pages/__init__.py +6 -0
- mcli_framework-7.11.2/src/mcli/ml/data_ingestion/__init__.py +29 -0
- mcli_framework-7.11.2/src/mcli/ml/database/__init__.py +40 -0
- mcli_framework-7.11.2/src/mcli/ml/experimentation/__init__.py +29 -0
- mcli_framework-7.11.2/src/mcli/ml/features/__init__.py +39 -0
- mcli_framework-7.11.2/src/mcli/ml/mlops/__init__.py +19 -0
- mcli_framework-7.11.2/src/mcli/ml/models/__init__.py +90 -0
- mcli_framework-7.11.2/src/mcli/ml/monitoring/__init__.py +25 -0
- mcli_framework-7.11.2/src/mcli/ml/optimization/__init__.py +27 -0
- mcli_framework-7.11.2/src/mcli/ml/predictions/__init__.py +5 -0
- mcli_framework-7.11.2/src/mcli/ml/preprocessing/__init__.py +24 -0
- mcli_framework-7.11.2/src/mcli/ml/scripts/__init__.py +1 -0
- mcli_framework-7.11.2/src/mcli/ml/serving/__init__.py +1 -0
- mcli_framework-7.11.2/src/mcli/ml/trading/__init__.py +63 -0
- mcli_framework-7.11.2/src/mcli/ml/training/__init__.py +7 -0
- mcli_framework-7.11.2/src/mcli/mygroup/__init__.py +3 -0
- mcli_framework-7.11.2/src/mcli/public/__init__.py +1 -0
- mcli_framework-7.11.2/src/mcli/public/commands/__init__.py +2 -0
- mcli_framework-7.11.2/src/mcli/self/__init__.py +3 -0
- mcli_framework-7.11.2/src/mcli/workflow/__init__.py +0 -0
- mcli_framework-7.11.2/src/mcli/workflow/daemon/__init__.py +15 -0
- mcli_framework-7.11.2/src/mcli/workflow/dashboard/__init__.py +5 -0
- mcli_framework-7.11.2/src/mcli/workflow/docker/__init__.py +0 -0
- mcli_framework-7.11.2/src/mcli/workflow/docker/docker.py +0 -0
- mcli_framework-7.11.2/src/mcli/workflow/file/__init__.py +0 -0
- mcli_framework-7.11.2/src/mcli/workflow/gcloud/__init__.py +1 -0
- mcli_framework-7.11.2/src/mcli/workflow/git_commit/__init__.py +0 -0
- mcli_framework-7.11.2/src/mcli/workflow/interview/__init__.py +0 -0
- mcli_framework-7.11.2/src/mcli/workflow/notebook/__init__.py +16 -0
- mcli_framework-7.11.2/src/mcli/workflow/registry/__init__.py +0 -0
- mcli_framework-7.11.2/src/mcli/workflow/repo/__init__.py +0 -0
- mcli_framework-7.11.2/src/mcli/workflow/scheduler/__init__.py +25 -0
- mcli_framework-7.11.2/src/mcli/workflow/search/__init__.py +0 -0
- mcli_framework-7.11.2/src/mcli/workflow/secrets/__init__.py +4 -0
- mcli_framework-7.11.2/src/mcli/workflow/sync/__init__.py +5 -0
- mcli_framework-7.11.2/src/mcli/workflow/videos/__init__.py +1 -0
- mcli_framework-7.11.2/src/mcli/workflow/wakatime/__init__.py +80 -0
- {mcli_framework-7.11.0 → mcli_framework-7.11.2}/src/mcli_framework.egg-info/PKG-INFO +19 -1
- {mcli_framework-7.11.0 → mcli_framework-7.11.2}/src/mcli_framework.egg-info/SOURCES.txt +73 -0
- mcli_framework-7.11.2/tests/cli/__init__.py +0 -0
- mcli_framework-7.11.2/tests/e2e/__init__.py +0 -0
- mcli_framework-7.11.2/tests/fixtures/__init__.py +59 -0
- mcli_framework-7.11.2/tests/integration/__init__.py +0 -0
- mcli_framework-7.11.2/tests/performance/__init__.py +0 -0
- mcli_framework-7.11.2/tests/property/__init__.py +0 -0
- mcli_framework-7.11.2/tests/unit/__init__.py +0 -0
- {mcli_framework-7.11.0 → mcli_framework-7.11.2}/.github/dependabot.yml +0 -0
- {mcli_framework-7.11.0 → mcli_framework-7.11.2}/.github/workflows/build.yml +0 -0
- {mcli_framework-7.11.0 → mcli_framework-7.11.2}/.github/workflows/ci.yml +0 -0
- {mcli_framework-7.11.0 → mcli_framework-7.11.2}/.github/workflows/codeql.yml +0 -0
- {mcli_framework-7.11.0 → mcli_framework-7.11.2}/.github/workflows/main_mcli.yml +0 -0
- {mcli_framework-7.11.0 → mcli_framework-7.11.2}/.github/workflows/ml-pipeline.yml +0 -0
- {mcli_framework-7.11.0 → mcli_framework-7.11.2}/.github/workflows/publish.yml +0 -0
- {mcli_framework-7.11.0 → mcli_framework-7.11.2}/.github/workflows/release.yml +0 -0
- {mcli_framework-7.11.0 → mcli_framework-7.11.2}/.github/workflows/security.yml +0 -0
- {mcli_framework-7.11.0 → mcli_framework-7.11.2}/.github/workflows/test.yml +0 -0
- {mcli_framework-7.11.0 → mcli_framework-7.11.2}/LICENSE +0 -0
- {mcli_framework-7.11.0 → mcli_framework-7.11.2}/MANIFEST.in +0 -0
- {mcli_framework-7.11.0 → mcli_framework-7.11.2}/mcli_rust/Cargo.toml +0 -0
- {mcli_framework-7.11.0 → mcli_framework-7.11.2}/mcli_rust/src/command_parser.rs +0 -0
- {mcli_framework-7.11.0 → mcli_framework-7.11.2}/mcli_rust/src/file_watcher.rs +0 -0
- {mcli_framework-7.11.0 → mcli_framework-7.11.2}/mcli_rust/src/lib.rs +0 -0
- {mcli_framework-7.11.0 → mcli_framework-7.11.2}/mcli_rust/src/process_manager.rs +0 -0
- {mcli_framework-7.11.0 → mcli_framework-7.11.2}/mcli_rust/src/tfidf.rs +0 -0
- {mcli_framework-7.11.0 → mcli_framework-7.11.2}/setup.cfg +0 -0
- {mcli_framework-7.11.0 → mcli_framework-7.11.2}/src/mcli/app/completion_helpers.py +0 -0
- {mcli_framework-7.11.0 → mcli_framework-7.11.2}/src/mcli/app/main.py +0 -0
- /mcli_framework-7.11.0/src/mcli/workflow/docker/docker.py → /mcli_framework-7.11.2/src/mcli/app/model/__init__.py +0 -0
- {mcli_framework-7.11.0 → mcli_framework-7.11.2}/src/mcli/app/model/model.py +0 -0
- {mcli_framework-7.11.0 → mcli_framework-7.11.2}/src/mcli/app/model_cmd.py +0 -0
- {mcli_framework-7.11.0 → mcli_framework-7.11.2}/src/mcli/app/video/video.py +0 -0
- {mcli_framework-7.11.0 → mcli_framework-7.11.2}/src/mcli/chat/chat.py +0 -0
- {mcli_framework-7.11.0 → mcli_framework-7.11.2}/src/mcli/chat/command_rag.py +0 -0
- {mcli_framework-7.11.0 → mcli_framework-7.11.2}/src/mcli/chat/enhanced_chat.py +0 -0
- {mcli_framework-7.11.0 → mcli_framework-7.11.2}/src/mcli/chat/system_controller.py +0 -0
- {mcli_framework-7.11.0 → mcli_framework-7.11.2}/src/mcli/chat/system_integration.py +0 -0
- {mcli_framework-7.11.0 → mcli_framework-7.11.2}/src/mcli/cli.py +0 -0
- {mcli_framework-7.11.0 → mcli_framework-7.11.2}/src/mcli/config.toml +0 -0
- {mcli_framework-7.11.0 → mcli_framework-7.11.2}/src/mcli/lib/api/api.py +0 -0
- {mcli_framework-7.11.0 → mcli_framework-7.11.2}/src/mcli/lib/api/daemon_client.py +0 -0
- {mcli_framework-7.11.0 → mcli_framework-7.11.2}/src/mcli/lib/api/daemon_client_local.py +0 -0
- {mcli_framework-7.11.0 → mcli_framework-7.11.2}/src/mcli/lib/api/daemon_decorator.py +0 -0
- {mcli_framework-7.11.0 → mcli_framework-7.11.2}/src/mcli/lib/api/mcli_decorators.py +0 -0
- {mcli_framework-7.11.0 → mcli_framework-7.11.2}/src/mcli/lib/auth/auth.py +0 -0
- {mcli_framework-7.11.0 → mcli_framework-7.11.2}/src/mcli/lib/auth/aws_manager.py +0 -0
- {mcli_framework-7.11.0 → mcli_framework-7.11.2}/src/mcli/lib/auth/azure_manager.py +0 -0
- {mcli_framework-7.11.0 → mcli_framework-7.11.2}/src/mcli/lib/auth/credential_manager.py +0 -0
- {mcli_framework-7.11.0 → mcli_framework-7.11.2}/src/mcli/lib/auth/gcp_manager.py +0 -0
- {mcli_framework-7.11.0 → mcli_framework-7.11.2}/src/mcli/lib/auth/key_manager.py +0 -0
- {mcli_framework-7.11.0 → mcli_framework-7.11.2}/src/mcli/lib/auth/mcli_manager.py +0 -0
- {mcli_framework-7.11.0 → mcli_framework-7.11.2}/src/mcli/lib/auth/token_manager.py +0 -0
- {mcli_framework-7.11.0 → mcli_framework-7.11.2}/src/mcli/lib/auth/token_util.py +0 -0
- {mcli_framework-7.11.0 → mcli_framework-7.11.2}/src/mcli/lib/config/config.py +0 -0
- {mcli_framework-7.11.0 → mcli_framework-7.11.2}/src/mcli/lib/custom_commands.py +0 -0
- {mcli_framework-7.11.0 → mcli_framework-7.11.2}/src/mcli/lib/discovery/__init__.py +0 -0
- {mcli_framework-7.11.0 → mcli_framework-7.11.2}/src/mcli/lib/discovery/command_discovery.py +0 -0
- {mcli_framework-7.11.0 → mcli_framework-7.11.2}/src/mcli/lib/erd/erd.py +0 -0
- {mcli_framework-7.11.0 → mcli_framework-7.11.2}/src/mcli/lib/erd/generate_graph.py +0 -0
- {mcli_framework-7.11.0 → mcli_framework-7.11.2}/src/mcli/lib/files/files.py +0 -0
- {mcli_framework-7.11.0 → mcli_framework-7.11.2}/src/mcli/lib/fs/fs.py +0 -0
- {mcli_framework-7.11.0 → mcli_framework-7.11.2}/src/mcli/lib/lib.py +0 -0
- {mcli_framework-7.11.0 → mcli_framework-7.11.2}/src/mcli/lib/logger/logger.py +0 -0
- {mcli_framework-7.11.0 → mcli_framework-7.11.2}/src/mcli/lib/optional_deps.py +0 -0
- {mcli_framework-7.11.0 → mcli_framework-7.11.2}/src/mcli/lib/performance/optimizer.py +0 -0
- {mcli_framework-7.11.0 → mcli_framework-7.11.2}/src/mcli/lib/performance/rust_bridge.py +0 -0
- {mcli_framework-7.11.0 → mcli_framework-7.11.2}/src/mcli/lib/performance/uvloop_config.py +0 -0
- {mcli_framework-7.11.0 → mcli_framework-7.11.2}/src/mcli/lib/pickles/pickles.py +0 -0
- {mcli_framework-7.11.0 → mcli_framework-7.11.2}/src/mcli/lib/search/cached_vectorizer.py +0 -0
- {mcli_framework-7.11.0 → mcli_framework-7.11.2}/src/mcli/lib/secrets/commands.py +0 -0
- {mcli_framework-7.11.0 → mcli_framework-7.11.2}/src/mcli/lib/secrets/manager.py +0 -0
- {mcli_framework-7.11.0 → mcli_framework-7.11.2}/src/mcli/lib/secrets/repl.py +0 -0
- {mcli_framework-7.11.0 → mcli_framework-7.11.2}/src/mcli/lib/secrets/store.py +0 -0
- {mcli_framework-7.11.0 → mcli_framework-7.11.2}/src/mcli/lib/services/data_pipeline.py +0 -0
- {mcli_framework-7.11.0 → mcli_framework-7.11.2}/src/mcli/lib/services/lsh_client.py +0 -0
- {mcli_framework-7.11.0 → mcli_framework-7.11.2}/src/mcli/lib/services/redis_service.py +0 -0
- {mcli_framework-7.11.0 → mcli_framework-7.11.2}/src/mcli/lib/shell/shell.py +0 -0
- {mcli_framework-7.11.0 → mcli_framework-7.11.2}/src/mcli/lib/toml/toml.py +0 -0
- {mcli_framework-7.11.0 → mcli_framework-7.11.2}/src/mcli/lib/ui/styling.py +0 -0
- {mcli_framework-7.11.0 → mcli_framework-7.11.2}/src/mcli/lib/ui/visual_effects.py +0 -0
- {mcli_framework-7.11.0 → mcli_framework-7.11.2}/src/mcli/lib/watcher/watcher.py +0 -0
- {mcli_framework-7.11.0 → mcli_framework-7.11.2}/src/mcli/ml/api/app.py +0 -0
- {mcli_framework-7.11.0 → mcli_framework-7.11.2}/src/mcli/ml/api/middleware.py +0 -0
- {mcli_framework-7.11.0 → mcli_framework-7.11.2}/src/mcli/ml/api/routers/admin_router.py +0 -0
- {mcli_framework-7.11.0 → mcli_framework-7.11.2}/src/mcli/ml/api/routers/auth_router.py +0 -0
- {mcli_framework-7.11.0 → mcli_framework-7.11.2}/src/mcli/ml/api/routers/backtest_router.py +0 -0
- {mcli_framework-7.11.0 → mcli_framework-7.11.2}/src/mcli/ml/api/routers/data_router.py +0 -0
- {mcli_framework-7.11.0 → mcli_framework-7.11.2}/src/mcli/ml/api/routers/model_router.py +0 -0
- {mcli_framework-7.11.0 → mcli_framework-7.11.2}/src/mcli/ml/api/routers/monitoring_router.py +0 -0
- {mcli_framework-7.11.0 → mcli_framework-7.11.2}/src/mcli/ml/api/routers/portfolio_router.py +0 -0
- {mcli_framework-7.11.0 → mcli_framework-7.11.2}/src/mcli/ml/api/routers/prediction_router.py +0 -0
- {mcli_framework-7.11.0 → mcli_framework-7.11.2}/src/mcli/ml/api/routers/trade_router.py +0 -0
- {mcli_framework-7.11.0 → mcli_framework-7.11.2}/src/mcli/ml/api/routers/websocket_router.py +0 -0
- {mcli_framework-7.11.0 → mcli_framework-7.11.2}/src/mcli/ml/api/schemas.py +0 -0
- {mcli_framework-7.11.0 → mcli_framework-7.11.2}/src/mcli/ml/auth/auth_manager.py +0 -0
- {mcli_framework-7.11.0 → mcli_framework-7.11.2}/src/mcli/ml/auth/models.py +0 -0
- {mcli_framework-7.11.0 → mcli_framework-7.11.2}/src/mcli/ml/auth/permissions.py +0 -0
- {mcli_framework-7.11.0 → mcli_framework-7.11.2}/src/mcli/ml/backtesting/backtest_engine.py +0 -0
- {mcli_framework-7.11.0 → mcli_framework-7.11.2}/src/mcli/ml/backtesting/performance_metrics.py +0 -0
- {mcli_framework-7.11.0 → mcli_framework-7.11.2}/src/mcli/ml/backtesting/run.py +0 -0
- {mcli_framework-7.11.0 → mcli_framework-7.11.2}/src/mcli/ml/cache.py +0 -0
- {mcli_framework-7.11.0 → mcli_framework-7.11.2}/src/mcli/ml/cli/main.py +0 -0
- {mcli_framework-7.11.0 → mcli_framework-7.11.2}/src/mcli/ml/config/settings.py +0 -0
- {mcli_framework-7.11.0 → mcli_framework-7.11.2}/src/mcli/ml/configs/dvc_config.py +0 -0
- {mcli_framework-7.11.0 → mcli_framework-7.11.2}/src/mcli/ml/configs/mlflow_config.py +0 -0
- {mcli_framework-7.11.0 → mcli_framework-7.11.2}/src/mcli/ml/configs/mlops_manager.py +0 -0
- {mcli_framework-7.11.0 → mcli_framework-7.11.2}/src/mcli/ml/dashboard/app.py +0 -0
- {mcli_framework-7.11.0 → mcli_framework-7.11.2}/src/mcli/ml/dashboard/app_integrated.py +0 -0
- {mcli_framework-7.11.0 → mcli_framework-7.11.2}/src/mcli/ml/dashboard/app_supabase.py +0 -0
- {mcli_framework-7.11.0 → mcli_framework-7.11.2}/src/mcli/ml/dashboard/app_training.py +0 -0
- {mcli_framework-7.11.0 → mcli_framework-7.11.2}/src/mcli/ml/dashboard/cli.py +0 -0
- {mcli_framework-7.11.0 → mcli_framework-7.11.2}/src/mcli/ml/dashboard/common.py +0 -0
- {mcli_framework-7.11.0 → mcli_framework-7.11.2}/src/mcli/ml/dashboard/components/charts.py +0 -0
- {mcli_framework-7.11.0 → mcli_framework-7.11.2}/src/mcli/ml/dashboard/components/metrics.py +0 -0
- {mcli_framework-7.11.0 → mcli_framework-7.11.2}/src/mcli/ml/dashboard/components/tables.py +0 -0
- {mcli_framework-7.11.0 → mcli_framework-7.11.2}/src/mcli/ml/dashboard/overview.py +0 -0
- {mcli_framework-7.11.0 → mcli_framework-7.11.2}/src/mcli/ml/dashboard/pages/cicd.py +0 -0
- {mcli_framework-7.11.0 → mcli_framework-7.11.2}/src/mcli/ml/dashboard/pages/debug_dependencies.py +0 -0
- {mcli_framework-7.11.0 → mcli_framework-7.11.2}/src/mcli/ml/dashboard/pages/gravity_viz.py +0 -0
- {mcli_framework-7.11.0 → mcli_framework-7.11.2}/src/mcli/ml/dashboard/pages/monte_carlo_predictions.py +0 -0
- {mcli_framework-7.11.0 → mcli_framework-7.11.2}/src/mcli/ml/dashboard/pages/predictions_enhanced.py +0 -0
- {mcli_framework-7.11.0 → mcli_framework-7.11.2}/src/mcli/ml/dashboard/pages/scrapers_and_logs.py +0 -0
- {mcli_framework-7.11.0 → mcli_framework-7.11.2}/src/mcli/ml/dashboard/pages/test_portfolio.py +0 -0
- {mcli_framework-7.11.0 → mcli_framework-7.11.2}/src/mcli/ml/dashboard/pages/trading.py +0 -0
- {mcli_framework-7.11.0 → mcli_framework-7.11.2}/src/mcli/ml/dashboard/pages/workflows.py +0 -0
- {mcli_framework-7.11.0 → mcli_framework-7.11.2}/src/mcli/ml/dashboard/streamlit_extras_utils.py +0 -0
- {mcli_framework-7.11.0 → mcli_framework-7.11.2}/src/mcli/ml/dashboard/styles.py +0 -0
- {mcli_framework-7.11.0 → mcli_framework-7.11.2}/src/mcli/ml/dashboard/utils.py +0 -0
- {mcli_framework-7.11.0 → mcli_framework-7.11.2}/src/mcli/ml/dashboard/warning_suppression.py +0 -0
- {mcli_framework-7.11.0 → mcli_framework-7.11.2}/src/mcli/ml/data_ingestion/api_connectors.py +0 -0
- {mcli_framework-7.11.0 → mcli_framework-7.11.2}/src/mcli/ml/data_ingestion/data_pipeline.py +0 -0
- {mcli_framework-7.11.0 → mcli_framework-7.11.2}/src/mcli/ml/data_ingestion/stream_processor.py +0 -0
- {mcli_framework-7.11.0 → mcli_framework-7.11.2}/src/mcli/ml/database/migrations/env.py +0 -0
- {mcli_framework-7.11.0 → mcli_framework-7.11.2}/src/mcli/ml/database/models.py +0 -0
- {mcli_framework-7.11.0 → mcli_framework-7.11.2}/src/mcli/ml/database/session.py +0 -0
- {mcli_framework-7.11.0 → mcli_framework-7.11.2}/src/mcli/ml/experimentation/ab_testing.py +0 -0
- {mcli_framework-7.11.0 → mcli_framework-7.11.2}/src/mcli/ml/features/ensemble_features.py +0 -0
- {mcli_framework-7.11.0 → mcli_framework-7.11.2}/src/mcli/ml/features/recommendation_engine.py +0 -0
- {mcli_framework-7.11.0 → mcli_framework-7.11.2}/src/mcli/ml/features/stock_features.py +0 -0
- {mcli_framework-7.11.0 → mcli_framework-7.11.2}/src/mcli/ml/features/test_feature_engineering.py +0 -0
- {mcli_framework-7.11.0 → mcli_framework-7.11.2}/src/mcli/ml/logging.py +0 -0
- {mcli_framework-7.11.0 → mcli_framework-7.11.2}/src/mcli/ml/mlops/data_versioning.py +0 -0
- {mcli_framework-7.11.0 → mcli_framework-7.11.2}/src/mcli/ml/mlops/experiment_tracker.py +0 -0
- {mcli_framework-7.11.0 → mcli_framework-7.11.2}/src/mcli/ml/mlops/model_serving.py +0 -0
- {mcli_framework-7.11.0 → mcli_framework-7.11.2}/src/mcli/ml/mlops/pipeline_orchestrator.py +0 -0
- {mcli_framework-7.11.0 → mcli_framework-7.11.2}/src/mcli/ml/models/base_models.py +0 -0
- {mcli_framework-7.11.0 → mcli_framework-7.11.2}/src/mcli/ml/models/ensemble_models.py +0 -0
- {mcli_framework-7.11.0 → mcli_framework-7.11.2}/src/mcli/ml/models/recommendation_models.py +0 -0
- {mcli_framework-7.11.0 → mcli_framework-7.11.2}/src/mcli/ml/models/test_models.py +0 -0
- {mcli_framework-7.11.0 → mcli_framework-7.11.2}/src/mcli/ml/monitoring/drift_detection.py +0 -0
- {mcli_framework-7.11.0 → mcli_framework-7.11.2}/src/mcli/ml/monitoring/metrics.py +0 -0
- {mcli_framework-7.11.0 → mcli_framework-7.11.2}/src/mcli/ml/optimization/optimize.py +0 -0
- {mcli_framework-7.11.0 → mcli_framework-7.11.2}/src/mcli/ml/optimization/portfolio_optimizer.py +0 -0
- {mcli_framework-7.11.0 → mcli_framework-7.11.2}/src/mcli/ml/predictions/monte_carlo.py +0 -0
- {mcli_framework-7.11.0 → mcli_framework-7.11.2}/src/mcli/ml/predictions/prediction_engine.py +0 -0
- {mcli_framework-7.11.0 → mcli_framework-7.11.2}/src/mcli/ml/preprocessing/data_cleaners.py +0 -0
- {mcli_framework-7.11.0 → mcli_framework-7.11.2}/src/mcli/ml/preprocessing/feature_extractors.py +0 -0
- {mcli_framework-7.11.0 → mcli_framework-7.11.2}/src/mcli/ml/preprocessing/ml_pipeline.py +0 -0
- {mcli_framework-7.11.0 → mcli_framework-7.11.2}/src/mcli/ml/preprocessing/test_preprocessing.py +0 -0
- {mcli_framework-7.11.0 → mcli_framework-7.11.2}/src/mcli/ml/scripts/populate_sample_data.py +0 -0
- {mcli_framework-7.11.0 → mcli_framework-7.11.2}/src/mcli/ml/serving/serve.py +0 -0
- {mcli_framework-7.11.0 → mcli_framework-7.11.2}/src/mcli/ml/tasks.py +0 -0
- {mcli_framework-7.11.0 → mcli_framework-7.11.2}/src/mcli/ml/tests/test_integration.py +0 -0
- {mcli_framework-7.11.0 → mcli_framework-7.11.2}/src/mcli/ml/tests/test_training_dashboard.py +0 -0
- {mcli_framework-7.11.0 → mcli_framework-7.11.2}/src/mcli/ml/trading/alpaca_client.py +0 -0
- {mcli_framework-7.11.0 → mcli_framework-7.11.2}/src/mcli/ml/trading/migrations.py +0 -0
- {mcli_framework-7.11.0 → mcli_framework-7.11.2}/src/mcli/ml/trading/models.py +0 -0
- {mcli_framework-7.11.0 → mcli_framework-7.11.2}/src/mcli/ml/trading/paper_trading.py +0 -0
- {mcli_framework-7.11.0 → mcli_framework-7.11.2}/src/mcli/ml/trading/risk_management.py +0 -0
- {mcli_framework-7.11.0 → mcli_framework-7.11.2}/src/mcli/ml/trading/trading_service.py +0 -0
- {mcli_framework-7.11.0 → mcli_framework-7.11.2}/src/mcli/ml/training/train.py +0 -0
- {mcli_framework-7.11.0 → mcli_framework-7.11.2}/src/mcli/ml/training/train_model.py +0 -0
- {mcli_framework-7.11.0 → mcli_framework-7.11.2}/src/mcli/mygroup/test_cmd.py +0 -0
- {mcli_framework-7.11.0 → mcli_framework-7.11.2}/src/mcli/public/oi/oi.py +0 -0
- {mcli_framework-7.11.0 → mcli_framework-7.11.2}/src/mcli/public/public.py +0 -0
- {mcli_framework-7.11.0 → mcli_framework-7.11.2}/src/mcli/self/completion_cmd.py +0 -0
- {mcli_framework-7.11.0 → mcli_framework-7.11.2}/src/mcli/self/logs_cmd.py +0 -0
- {mcli_framework-7.11.0 → mcli_framework-7.11.2}/src/mcli/self/migrate_cmd.py +0 -0
- {mcli_framework-7.11.0 → mcli_framework-7.11.2}/src/mcli/self/redis_cmd.py +0 -0
- {mcli_framework-7.11.0 → mcli_framework-7.11.2}/src/mcli/self/self_cmd.py +0 -0
- {mcli_framework-7.11.0 → mcli_framework-7.11.2}/src/mcli/self/store_cmd.py +0 -0
- {mcli_framework-7.11.0 → mcli_framework-7.11.2}/src/mcli/self/test_cmd.py +0 -0
- {mcli_framework-7.11.0 → mcli_framework-7.11.2}/src/mcli/self/visual_cmd.py +0 -0
- {mcli_framework-7.11.0 → mcli_framework-7.11.2}/src/mcli/self/zsh_cmd.py +0 -0
- {mcli_framework-7.11.0 → mcli_framework-7.11.2}/src/mcli/workflow/daemon/async_command_database.py +0 -0
- {mcli_framework-7.11.0 → mcli_framework-7.11.2}/src/mcli/workflow/daemon/async_process_manager.py +0 -0
- {mcli_framework-7.11.0 → mcli_framework-7.11.2}/src/mcli/workflow/daemon/client.py +0 -0
- {mcli_framework-7.11.0 → mcli_framework-7.11.2}/src/mcli/workflow/daemon/daemon.py +0 -0
- {mcli_framework-7.11.0 → mcli_framework-7.11.2}/src/mcli/workflow/daemon/daemon_api.py +0 -0
- {mcli_framework-7.11.0 → mcli_framework-7.11.2}/src/mcli/workflow/daemon/enhanced_daemon.py +0 -0
- {mcli_framework-7.11.0 → mcli_framework-7.11.2}/src/mcli/workflow/daemon/process_cli.py +0 -0
- {mcli_framework-7.11.0 → mcli_framework-7.11.2}/src/mcli/workflow/daemon/process_manager.py +0 -0
- {mcli_framework-7.11.0 → mcli_framework-7.11.2}/src/mcli/workflow/daemon/test_daemon.py +0 -0
- {mcli_framework-7.11.0 → mcli_framework-7.11.2}/src/mcli/workflow/dashboard/dashboard_cmd.py +0 -0
- {mcli_framework-7.11.0 → mcli_framework-7.11.2}/src/mcli/workflow/doc_convert.py +0 -0
- {mcli_framework-7.11.0 → mcli_framework-7.11.2}/src/mcli/workflow/gcloud/config.toml +0 -0
- {mcli_framework-7.11.0 → mcli_framework-7.11.2}/src/mcli/workflow/gcloud/gcloud.py +0 -0
- {mcli_framework-7.11.0 → mcli_framework-7.11.2}/src/mcli/workflow/git_commit/ai_service.py +0 -0
- {mcli_framework-7.11.0 → mcli_framework-7.11.2}/src/mcli/workflow/lsh_integration.py +0 -0
- {mcli_framework-7.11.0 → mcli_framework-7.11.2}/src/mcli/workflow/model_service/client.py +0 -0
- {mcli_framework-7.11.0 → mcli_framework-7.11.2}/src/mcli/workflow/model_service/download_and_run_efficient_models.py +0 -0
- {mcli_framework-7.11.0 → mcli_framework-7.11.2}/src/mcli/workflow/model_service/lightweight_embedder.py +0 -0
- {mcli_framework-7.11.0 → mcli_framework-7.11.2}/src/mcli/workflow/model_service/lightweight_model_server.py +0 -0
- {mcli_framework-7.11.0 → mcli_framework-7.11.2}/src/mcli/workflow/model_service/lightweight_test.py +0 -0
- {mcli_framework-7.11.0 → mcli_framework-7.11.2}/src/mcli/workflow/model_service/model_service.py +0 -0
- {mcli_framework-7.11.0 → mcli_framework-7.11.2}/src/mcli/workflow/model_service/ollama_efficient_runner.py +0 -0
- {mcli_framework-7.11.0 → mcli_framework-7.11.2}/src/mcli/workflow/model_service/openai_adapter.py +0 -0
- {mcli_framework-7.11.0 → mcli_framework-7.11.2}/src/mcli/workflow/model_service/pdf_processor.py +0 -0
- {mcli_framework-7.11.0 → mcli_framework-7.11.2}/src/mcli/workflow/model_service/test_efficient_runner.py +0 -0
- {mcli_framework-7.11.0 → mcli_framework-7.11.2}/src/mcli/workflow/model_service/test_example.py +0 -0
- {mcli_framework-7.11.0 → mcli_framework-7.11.2}/src/mcli/workflow/model_service/test_integration.py +0 -0
- {mcli_framework-7.11.0 → mcli_framework-7.11.2}/src/mcli/workflow/model_service/test_new_features.py +0 -0
- {mcli_framework-7.11.0 → mcli_framework-7.11.2}/src/mcli/workflow/notebook/converter.py +0 -0
- {mcli_framework-7.11.0 → mcli_framework-7.11.2}/src/mcli/workflow/notebook/notebook_cmd.py +0 -0
- {mcli_framework-7.11.0 → mcli_framework-7.11.2}/src/mcli/workflow/notebook/schema.py +0 -0
- {mcli_framework-7.11.0 → mcli_framework-7.11.2}/src/mcli/workflow/notebook/validator.py +0 -0
- {mcli_framework-7.11.0 → mcli_framework-7.11.2}/src/mcli/workflow/openai/openai.py +0 -0
- {mcli_framework-7.11.0 → mcli_framework-7.11.2}/src/mcli/workflow/registry/registry.py +0 -0
- {mcli_framework-7.11.0 → mcli_framework-7.11.2}/src/mcli/workflow/repo/repo.py +0 -0
- {mcli_framework-7.11.0 → mcli_framework-7.11.2}/src/mcli/workflow/scheduler/cron_parser.py +0 -0
- {mcli_framework-7.11.0 → mcli_framework-7.11.2}/src/mcli/workflow/scheduler/job.py +0 -0
- {mcli_framework-7.11.0 → mcli_framework-7.11.2}/src/mcli/workflow/scheduler/monitor.py +0 -0
- {mcli_framework-7.11.0 → mcli_framework-7.11.2}/src/mcli/workflow/scheduler/persistence.py +0 -0
- {mcli_framework-7.11.0 → mcli_framework-7.11.2}/src/mcli/workflow/scheduler/scheduler.py +0 -0
- {mcli_framework-7.11.0 → mcli_framework-7.11.2}/src/mcli/workflow/secrets/secrets_cmd.py +0 -0
- {mcli_framework-7.11.0 → mcli_framework-7.11.2}/src/mcli/workflow/sync/test_cmd.py +0 -0
- {mcli_framework-7.11.0 → mcli_framework-7.11.2}/src/mcli/workflow/wakatime/wakatime.py +0 -0
- {mcli_framework-7.11.0 → mcli_framework-7.11.2}/src/mcli/workflow/workflow.py +0 -0
- {mcli_framework-7.11.0 → mcli_framework-7.11.2}/src/mcli_framework.egg-info/dependency_links.txt +0 -0
- {mcli_framework-7.11.0 → mcli_framework-7.11.2}/src/mcli_framework.egg-info/entry_points.txt +0 -0
- {mcli_framework-7.11.0 → mcli_framework-7.11.2}/src/mcli_framework.egg-info/requires.txt +0 -0
- {mcli_framework-7.11.0 → mcli_framework-7.11.2}/src/mcli_framework.egg-info/top_level.txt +0 -0
- {mcli_framework-7.11.0 → mcli_framework-7.11.2}/tests/cli/test_all_commands.py +0 -0
- {mcli_framework-7.11.0 → mcli_framework-7.11.2}/tests/cli/test_app_logs_cmd.py +0 -0
- {mcli_framework-7.11.0 → mcli_framework-7.11.2}/tests/cli/test_app_redis_cmd.py +0 -0
- {mcli_framework-7.11.0 → mcli_framework-7.11.2}/tests/cli/test_logs_cmd.py +0 -0
- {mcli_framework-7.11.0 → mcli_framework-7.11.2}/tests/cli/test_main_app.py +0 -0
- {mcli_framework-7.11.0 → mcli_framework-7.11.2}/tests/cli/test_model_cmd.py +0 -0
- {mcli_framework-7.11.0 → mcli_framework-7.11.2}/tests/cli/test_self_cmd.py +0 -0
- {mcli_framework-7.11.0 → mcli_framework-7.11.2}/tests/cli/test_self_cmd_commands.py +0 -0
- {mcli_framework-7.11.0 → mcli_framework-7.11.2}/tests/cli/test_self_cmd_plugins.py +0 -0
- {mcli_framework-7.11.0 → mcli_framework-7.11.2}/tests/cli/test_self_cmd_utilities.py +0 -0
- {mcli_framework-7.11.0 → mcli_framework-7.11.2}/tests/cli/test_workflow_file.py +0 -0
- {mcli_framework-7.11.0 → mcli_framework-7.11.2}/tests/cli/test_workflow_gcloud.py +0 -0
- {mcli_framework-7.11.0 → mcli_framework-7.11.2}/tests/cli/test_workflow_registry.py +0 -0
- {mcli_framework-7.11.0 → mcli_framework-7.11.2}/tests/conftest.py +0 -0
- {mcli_framework-7.11.0 → mcli_framework-7.11.2}/tests/demo_generate_graph.py +0 -0
- {mcli_framework-7.11.0 → mcli_framework-7.11.2}/tests/demo_hierarchical_transform.py +0 -0
- {mcli_framework-7.11.0 → mcli_framework-7.11.2}/tests/e2e/test_complete_workflows.py +0 -0
- {mcli_framework-7.11.0 → mcli_framework-7.11.2}/tests/e2e/test_model_workflow.py +0 -0
- {mcli_framework-7.11.0 → mcli_framework-7.11.2}/tests/e2e/test_new_user_workflow.py +0 -0
- {mcli_framework-7.11.0 → mcli_framework-7.11.2}/tests/e2e/test_update_workflow.py +0 -0
- {mcli_framework-7.11.0 → mcli_framework-7.11.2}/tests/fixtures/chat_fixtures.py +0 -0
- {mcli_framework-7.11.0 → mcli_framework-7.11.2}/tests/fixtures/cli_fixtures.py +0 -0
- {mcli_framework-7.11.0 → mcli_framework-7.11.2}/tests/fixtures/data_fixtures.py +0 -0
- {mcli_framework-7.11.0 → mcli_framework-7.11.2}/tests/fixtures/db_fixtures.py +0 -0
- {mcli_framework-7.11.0 → mcli_framework-7.11.2}/tests/fixtures/model_fixtures.py +0 -0
- {mcli_framework-7.11.0 → mcli_framework-7.11.2}/tests/integration/test_agent.py +0 -0
- {mcli_framework-7.11.0 → mcli_framework-7.11.2}/tests/integration/test_chat_client.py +0 -0
- {mcli_framework-7.11.0 → mcli_framework-7.11.2}/tests/integration/test_chat_system.py +0 -0
- {mcli_framework-7.11.0 → mcli_framework-7.11.2}/tests/integration/test_daemon_server.py +0 -0
- {mcli_framework-7.11.0 → mcli_framework-7.11.2}/tests/integration/test_e2e_dashboard_lsh_supabase.py +0 -0
- {mcli_framework-7.11.0 → mcli_framework-7.11.2}/tests/integration/test_flask_webapp.py +0 -0
- {mcli_framework-7.11.0 → mcli_framework-7.11.2}/tests/integration/test_gcloud_services.py +0 -0
- {mcli_framework-7.11.0 → mcli_framework-7.11.2}/tests/integration/test_lsh_client.py +0 -0
- {mcli_framework-7.11.0 → mcli_framework-7.11.2}/tests/integration/test_lsh_service.py +0 -0
- {mcli_framework-7.11.0 → mcli_framework-7.11.2}/tests/integration/test_ml_auth.py +0 -0
- {mcli_framework-7.11.0 → mcli_framework-7.11.2}/tests/integration/test_ml_data_pipeline.py +0 -0
- {mcli_framework-7.11.0 → mcli_framework-7.11.2}/tests/integration/test_ml_models.py +0 -0
- {mcli_framework-7.11.0 → mcli_framework-7.11.2}/tests/integration/test_ml_pipeline.py +0 -0
- {mcli_framework-7.11.0 → mcli_framework-7.11.2}/tests/integration/test_module_imports.py +0 -0
- {mcli_framework-7.11.0 → mcli_framework-7.11.2}/tests/integration/test_oi_service.py +0 -0
- {mcli_framework-7.11.0 → mcli_framework-7.11.2}/tests/integration/test_repo_operations.py +0 -0
- {mcli_framework-7.11.0 → mcli_framework-7.11.2}/tests/integration/test_scheduler_integration.py +0 -0
- {mcli_framework-7.11.0 → mcli_framework-7.11.2}/tests/integration/test_service_registry.py +0 -0
- {mcli_framework-7.11.0 → mcli_framework-7.11.2}/tests/integration/test_supabase_live_connection.py +0 -0
- {mcli_framework-7.11.0 → mcli_framework-7.11.2}/tests/integration/test_video_processing.py +0 -0
- {mcli_framework-7.11.0 → mcli_framework-7.11.2}/tests/integration/test_wakatime_api.py +0 -0
- {mcli_framework-7.11.0 → mcli_framework-7.11.2}/tests/integration/test_webapp_full.py +0 -0
- {mcli_framework-7.11.0 → mcli_framework-7.11.2}/tests/integration/test_workflow.py +0 -0
- {mcli_framework-7.11.0 → mcli_framework-7.11.2}/tests/integration/test_workflow_commands.py +0 -0
- {mcli_framework-7.11.0 → mcli_framework-7.11.2}/tests/run_tests.py +0 -0
- {mcli_framework-7.11.0 → mcli_framework-7.11.2}/tests/test_harness.py +0 -0
- {mcli_framework-7.11.0 → mcli_framework-7.11.2}/tests/test_openai_adapter.py +0 -0
- {mcli_framework-7.11.0 → mcli_framework-7.11.2}/tests/unit/test_api_utils.py +0 -0
- {mcli_framework-7.11.0 → mcli_framework-7.11.2}/tests/unit/test_async_process_manager.py +0 -0
- {mcli_framework-7.11.0 → mcli_framework-7.11.2}/tests/unit/test_auth_modules.py +0 -0
- {mcli_framework-7.11.0 → mcli_framework-7.11.2}/tests/unit/test_bug_fixes.py +0 -0
- {mcli_framework-7.11.0 → mcli_framework-7.11.2}/tests/unit/test_config.py +0 -0
- {mcli_framework-7.11.0 → mcli_framework-7.11.2}/tests/unit/test_custom_commands.py +0 -0
- {mcli_framework-7.11.0 → mcli_framework-7.11.2}/tests/unit/test_custom_commands_filtering.py +0 -0
- {mcli_framework-7.11.0 → mcli_framework-7.11.2}/tests/unit/test_daemon_api.py +0 -0
- {mcli_framework-7.11.0 → mcli_framework-7.11.2}/tests/unit/test_dashboard_components.py +0 -0
- {mcli_framework-7.11.0 → mcli_framework-7.11.2}/tests/unit/test_dashboard_functions.py +0 -0
- {mcli_framework-7.11.0 → mcli_framework-7.11.2}/tests/unit/test_dashboard_pages.py +0 -0
- {mcli_framework-7.11.0 → mcli_framework-7.11.2}/tests/unit/test_dependencies.py +0 -0
- {mcli_framework-7.11.0 → mcli_framework-7.11.2}/tests/unit/test_doc_convert_workflow.py +0 -0
- {mcli_framework-7.11.0 → mcli_framework-7.11.2}/tests/unit/test_emulator_workflow.py +0 -0
- {mcli_framework-7.11.0 → mcli_framework-7.11.2}/tests/unit/test_erd_generation.py +0 -0
- {mcli_framework-7.11.0 → mcli_framework-7.11.2}/tests/unit/test_erd_generic.py +0 -0
- {mcli_framework-7.11.0 → mcli_framework-7.11.2}/tests/unit/test_erd_imports.py +0 -0
- {mcli_framework-7.11.0 → mcli_framework-7.11.2}/tests/unit/test_git_commit_workflow.py +0 -0
- {mcli_framework-7.11.0 → mcli_framework-7.11.2}/tests/unit/test_lib_auth.py +0 -0
- {mcli_framework-7.11.0 → mcli_framework-7.11.2}/tests/unit/test_lib_files.py +0 -0
- {mcli_framework-7.11.0 → mcli_framework-7.11.2}/tests/unit/test_lib_utils.py +0 -0
- {mcli_framework-7.11.0 → mcli_framework-7.11.2}/tests/unit/test_logger.py +0 -0
- {mcli_framework-7.11.0 → mcli_framework-7.11.2}/tests/unit/test_ml_preprocessing.py +0 -0
- {mcli_framework-7.11.0 → mcli_framework-7.11.2}/tests/unit/test_optional_deps.py +0 -0
- {mcli_framework-7.11.0 → mcli_framework-7.11.2}/tests/unit/test_paths.py +0 -0
- {mcli_framework-7.11.0 → mcli_framework-7.11.2}/tests/unit/test_pdf_compress.py +0 -0
- {mcli_framework-7.11.0 → mcli_framework-7.11.2}/tests/unit/test_prediction_engine.py +0 -0
- {mcli_framework-7.11.0 → mcli_framework-7.11.2}/tests/unit/test_regression.py +0 -0
- {mcli_framework-7.11.0 → mcli_framework-7.11.2}/tests/unit/test_scheduler.py +0 -0
- {mcli_framework-7.11.0 → mcli_framework-7.11.2}/tests/unit/test_scheduler_cron_parser.py +0 -0
- {mcli_framework-7.11.0 → mcli_framework-7.11.2}/tests/unit/test_scheduler_job.py +0 -0
- {mcli_framework-7.11.0 → mcli_framework-7.11.2}/tests/unit/test_scheduler_monitor.py +0 -0
- {mcli_framework-7.11.0 → mcli_framework-7.11.2}/tests/unit/test_scheduler_persistence.py +0 -0
- {mcli_framework-7.11.0 → mcli_framework-7.11.2}/tests/unit/test_self_update.py +0 -0
- {mcli_framework-7.11.0 → mcli_framework-7.11.2}/tests/unit/test_store_cmd.py +0 -0
- {mcli_framework-7.11.0 → mcli_framework-7.11.2}/tests/unit/test_supabase_connection.py +0 -0
- {mcli_framework-7.11.0 → mcli_framework-7.11.2}/tests/unit/test_supabase_pagination.py +0 -0
- {mcli_framework-7.11.0 → mcli_framework-7.11.2}/tests/unit/test_toml_utils.py +0 -0
- {mcli_framework-7.11.0 → mcli_framework-7.11.2}/tests/unit/test_trading_imports.py +0 -0
- {mcli_framework-7.11.0 → mcli_framework-7.11.2}/tests/unit/test_ui_rich.py +0 -0
- {mcli_framework-7.11.0 → mcli_framework-7.11.2}/tests/unit/test_uv_compat.py +0 -0
- {mcli_framework-7.11.0 → mcli_framework-7.11.2}/tests/unit/workflow/test_notebook.py +0 -0
|
@@ -11,15 +11,16 @@ on:
|
|
|
11
11
|
- test-pypi
|
|
12
12
|
- production-pypi
|
|
13
13
|
- both
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
14
|
+
# Disabled automatic triggers - self-hosted runner offline
|
|
15
|
+
# push:
|
|
16
|
+
# branches:
|
|
17
|
+
# - main
|
|
18
|
+
# - dev
|
|
19
|
+
# tags:
|
|
20
|
+
# - 'v*'
|
|
21
|
+
# paths-ignore:
|
|
22
|
+
# - '**.md'
|
|
23
|
+
# - '.github/workflows/publish.yml'
|
|
23
24
|
|
|
24
25
|
permissions:
|
|
25
26
|
contents: write
|
|
@@ -68,6 +69,8 @@ jobs:
|
|
|
68
69
|
run: |
|
|
69
70
|
export PYENV_ROOT="$HOME/.pyenv"
|
|
70
71
|
export PATH="$PYENV_ROOT/bin:$HOME/.local/bin:$HOME/.cargo/bin:$PATH"
|
|
72
|
+
export UV_CACHE_DIR="${GITHUB_WORKSPACE}/.uv-cache"
|
|
73
|
+
mkdir -p "${UV_CACHE_DIR}"
|
|
71
74
|
eval "$(pyenv init --path)" 2>/dev/null || true
|
|
72
75
|
eval "$(pyenv init -)" 2>/dev/null || true
|
|
73
76
|
uv venv --python python${{ matrix.python-version }}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: mcli-framework
|
|
3
|
-
Version: 7.11.
|
|
3
|
+
Version: 7.11.2
|
|
4
4
|
Summary: Portable workflow framework - transform any script into a versioned, schedulable command. Store in ~/.mcli/commands/, version with lockfile, run as daemon or cron job.
|
|
5
5
|
Author-email: Luis Fernandez de la Vara <luis@lefv.io>
|
|
6
6
|
Maintainer-email: Luis Fernandez de la Vara <luis@lefv.io>
|
|
@@ -216,6 +216,24 @@ pip install mcli-framework
|
|
|
216
216
|
uv pip install mcli-framework
|
|
217
217
|
```
|
|
218
218
|
|
|
219
|
+
### Initialize Workflows Directory
|
|
220
|
+
|
|
221
|
+
```bash
|
|
222
|
+
# Initialize workflows in current git repository
|
|
223
|
+
mcli workflow init
|
|
224
|
+
|
|
225
|
+
# Or initialize global workflows
|
|
226
|
+
mcli workflow init --global
|
|
227
|
+
|
|
228
|
+
# Initialize with git repository for workflows
|
|
229
|
+
mcli workflow init --git
|
|
230
|
+
```
|
|
231
|
+
|
|
232
|
+
This creates a `.mcli/workflows/` directory (local to your repo) or `~/.mcli/workflows/` (global) with:
|
|
233
|
+
- README.md with usage instructions
|
|
234
|
+
- commands.lock.json for version tracking
|
|
235
|
+
- .gitignore for backup files
|
|
236
|
+
|
|
219
237
|
### Create Your First Workflow
|
|
220
238
|
|
|
221
239
|
#### Method 1: From a Python Script
|
|
@@ -56,6 +56,24 @@ pip install mcli-framework
|
|
|
56
56
|
uv pip install mcli-framework
|
|
57
57
|
```
|
|
58
58
|
|
|
59
|
+
### Initialize Workflows Directory
|
|
60
|
+
|
|
61
|
+
```bash
|
|
62
|
+
# Initialize workflows in current git repository
|
|
63
|
+
mcli workflow init
|
|
64
|
+
|
|
65
|
+
# Or initialize global workflows
|
|
66
|
+
mcli workflow init --global
|
|
67
|
+
|
|
68
|
+
# Initialize with git repository for workflows
|
|
69
|
+
mcli workflow init --git
|
|
70
|
+
```
|
|
71
|
+
|
|
72
|
+
This creates a `.mcli/workflows/` directory (local to your repo) or `~/.mcli/workflows/` (global) with:
|
|
73
|
+
- README.md with usage instructions
|
|
74
|
+
- commands.lock.json for version tracking
|
|
75
|
+
- .gitignore for backup files
|
|
76
|
+
|
|
59
77
|
### Create Your First Workflow
|
|
60
78
|
|
|
61
79
|
#### Method 1: From a Python Script
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
[project]
|
|
2
2
|
name = "mcli-framework"
|
|
3
|
-
version = "7.11.
|
|
3
|
+
version = "7.11.2"
|
|
4
4
|
description = "Portable workflow framework - transform any script into a versioned, schedulable command. Store in ~/.mcli/commands/, version with lockfile, run as daemon or cron job."
|
|
5
5
|
readme = "README.md"
|
|
6
6
|
requires-python = ">=3.9"
|
|
@@ -0,0 +1,160 @@
|
|
|
1
|
+
# logger.info("I am in mcli.__init__.py")
|
|
2
|
+
import sys
|
|
3
|
+
|
|
4
|
+
try:
|
|
5
|
+
from mcli.app import main
|
|
6
|
+
|
|
7
|
+
# from mcli.public import *
|
|
8
|
+
# from mcli.private import *
|
|
9
|
+
# Import the complete Click superset decorators
|
|
10
|
+
from mcli.lib.api.mcli_decorators import BOOL # mcli.BOOL - Click BOOL type
|
|
11
|
+
from mcli.lib.api.mcli_decorators import FLOAT # mcli.FLOAT - Click FLOAT type
|
|
12
|
+
from mcli.lib.api.mcli_decorators import INT # mcli.INT - Click INT type
|
|
13
|
+
from mcli.lib.api.mcli_decorators import STRING # mcli.STRING - Click STRING type
|
|
14
|
+
from mcli.lib.api.mcli_decorators import UNPROCESSED # mcli.UNPROCESSED - Click UNPROCESSED
|
|
15
|
+
from mcli.lib.api.mcli_decorators import UUID # mcli.UUID - Click UUID type
|
|
16
|
+
from mcli.lib.api.mcli_decorators import Abort # mcli.Abort - Click Abort
|
|
17
|
+
from mcli.lib.api.mcli_decorators import BadParameter # mcli.BadParameter - Click BadParameter
|
|
18
|
+
from mcli.lib.api.mcli_decorators import Choice # mcli.Choice - Click Choice type
|
|
19
|
+
from mcli.lib.api.mcli_decorators import File # mcli.File - Click File type
|
|
20
|
+
from mcli.lib.api.mcli_decorators import FloatRange # mcli.FloatRange - Click FloatRange type
|
|
21
|
+
from mcli.lib.api.mcli_decorators import IntRange # mcli.IntRange - Click IntRange type
|
|
22
|
+
from mcli.lib.api.mcli_decorators import ParamType # mcli.ParamType - Click ParamType
|
|
23
|
+
from mcli.lib.api.mcli_decorators import Path # mcli.Path - Click Path type
|
|
24
|
+
from mcli.lib.api.mcli_decorators import UsageError # mcli.UsageError - Click UsageError
|
|
25
|
+
from mcli.lib.api.mcli_decorators import api # @mcli.api - Legacy API decorator
|
|
26
|
+
from mcli.lib.api.mcli_decorators import (
|
|
27
|
+
api_command, # @mcli.api_command - Convenience for API endpoints
|
|
28
|
+
)
|
|
29
|
+
from mcli.lib.api.mcli_decorators import argument # @mcli.argument - Click argument decorator
|
|
30
|
+
from mcli.lib.api.mcli_decorators import (
|
|
31
|
+
background, # @mcli.background - Legacy background decorator
|
|
32
|
+
)
|
|
33
|
+
from mcli.lib.api.mcli_decorators import (
|
|
34
|
+
background_command, # @mcli.background_command - Convenience for background
|
|
35
|
+
)
|
|
36
|
+
from mcli.lib.api.mcli_decorators import clear # mcli.clear - Click clear
|
|
37
|
+
from mcli.lib.api.mcli_decorators import (
|
|
38
|
+
cli_with_api, # @mcli.cli_with_api - Legacy combined decorator
|
|
39
|
+
)
|
|
40
|
+
from mcli.lib.api.mcli_decorators import (
|
|
41
|
+
command, # @mcli.command - Complete Click command with API/background
|
|
42
|
+
)
|
|
43
|
+
from mcli.lib.api.mcli_decorators import confirm # mcli.confirm - Click confirmation
|
|
44
|
+
from mcli.lib.api.mcli_decorators import echo # mcli.echo - Click echo function
|
|
45
|
+
from mcli.lib.api.mcli_decorators import edit # mcli.edit - Click editor
|
|
46
|
+
from mcli.lib.api.mcli_decorators import (
|
|
47
|
+
format_filename, # mcli.format_filename - Click filename
|
|
48
|
+
)
|
|
49
|
+
from mcli.lib.api.mcli_decorators import get_app # mcli.get_app - Click app
|
|
50
|
+
from mcli.lib.api.mcli_decorators import get_app_dir # mcli.get_app_dir - Click app directory
|
|
51
|
+
from mcli.lib.api.mcli_decorators import (
|
|
52
|
+
get_binary_stream, # mcli.get_binary_stream - Click binary stream
|
|
53
|
+
)
|
|
54
|
+
from mcli.lib.api.mcli_decorators import (
|
|
55
|
+
get_current_context, # mcli.get_current_context - Click context
|
|
56
|
+
)
|
|
57
|
+
from mcli.lib.api.mcli_decorators import (
|
|
58
|
+
get_network_credentials, # mcli.get_network_credentials - Click network
|
|
59
|
+
)
|
|
60
|
+
from mcli.lib.api.mcli_decorators import get_os_args # mcli.get_os_args - Click OS args
|
|
61
|
+
from mcli.lib.api.mcli_decorators import (
|
|
62
|
+
get_terminal_size, # mcli.get_terminal_size - Click terminal size
|
|
63
|
+
)
|
|
64
|
+
from mcli.lib.api.mcli_decorators import (
|
|
65
|
+
get_text_stream, # mcli.get_text_stream - Click text stream
|
|
66
|
+
)
|
|
67
|
+
from mcli.lib.api.mcli_decorators import getchar # mcli.getchar - Click character input
|
|
68
|
+
from mcli.lib.api.mcli_decorators import (
|
|
69
|
+
group, # @mcli.group - Complete Click group with API support
|
|
70
|
+
)
|
|
71
|
+
from mcli.lib.api.mcli_decorators import launch # mcli.launch - Click launch
|
|
72
|
+
from mcli.lib.api.mcli_decorators import open_file # mcli.open_file - Click file operations
|
|
73
|
+
from mcli.lib.api.mcli_decorators import option # @mcli.option - Click option decorator
|
|
74
|
+
from mcli.lib.api.mcli_decorators import pause # mcli.pause - Click pause
|
|
75
|
+
from mcli.lib.api.mcli_decorators import progressbar # mcli.progressbar - Click progress bar
|
|
76
|
+
from mcli.lib.api.mcli_decorators import prompt # mcli.prompt - Click prompt
|
|
77
|
+
from mcli.lib.api.mcli_decorators import secho # mcli.secho - Click styled echo
|
|
78
|
+
from mcli.lib.api.mcli_decorators import style # mcli.style - Click styling
|
|
79
|
+
from mcli.lib.api.mcli_decorators import unstyle # mcli.unstyle - Click unstyle
|
|
80
|
+
from mcli.lib.api.mcli_decorators import ( # Core decorators (complete Click superset); Click re-exports (complete subsume); Click types (complete subsume); Convenience decorators; Legacy decorators (for backward compatibility); Server management; Configuration; Convenience functions
|
|
81
|
+
disable_api_server,
|
|
82
|
+
enable_api_server,
|
|
83
|
+
get_api_config,
|
|
84
|
+
health_check,
|
|
85
|
+
is_background_available,
|
|
86
|
+
is_server_running,
|
|
87
|
+
start_server,
|
|
88
|
+
status_check,
|
|
89
|
+
stop_server,
|
|
90
|
+
)
|
|
91
|
+
|
|
92
|
+
# Make everything available at the top level (complete Click subsume)
|
|
93
|
+
__all__ = [
|
|
94
|
+
"main",
|
|
95
|
+
# Core decorators (complete Click superset)
|
|
96
|
+
"command",
|
|
97
|
+
"group",
|
|
98
|
+
# Click re-exports (complete subsume)
|
|
99
|
+
"option",
|
|
100
|
+
"argument",
|
|
101
|
+
"echo",
|
|
102
|
+
"get_current_context",
|
|
103
|
+
"get_app",
|
|
104
|
+
"launch",
|
|
105
|
+
"open_file",
|
|
106
|
+
"get_os_args",
|
|
107
|
+
"get_binary_stream",
|
|
108
|
+
"get_text_stream",
|
|
109
|
+
"format_filename",
|
|
110
|
+
"getchar",
|
|
111
|
+
"pause",
|
|
112
|
+
"clear",
|
|
113
|
+
"style",
|
|
114
|
+
"unstyle",
|
|
115
|
+
"secho",
|
|
116
|
+
"edit",
|
|
117
|
+
"confirm",
|
|
118
|
+
"prompt",
|
|
119
|
+
"progressbar",
|
|
120
|
+
"get_terminal_size",
|
|
121
|
+
"get_app_dir",
|
|
122
|
+
"get_network_credentials",
|
|
123
|
+
# Click types (complete subsume)
|
|
124
|
+
"Path",
|
|
125
|
+
"Choice",
|
|
126
|
+
"IntRange",
|
|
127
|
+
"FloatRange",
|
|
128
|
+
"UNPROCESSED",
|
|
129
|
+
"STRING",
|
|
130
|
+
"INT",
|
|
131
|
+
"FLOAT",
|
|
132
|
+
"BOOL",
|
|
133
|
+
"UUID",
|
|
134
|
+
"File",
|
|
135
|
+
"ParamType",
|
|
136
|
+
"BadParameter",
|
|
137
|
+
"UsageError",
|
|
138
|
+
"Abort",
|
|
139
|
+
# Convenience decorators
|
|
140
|
+
"api_command",
|
|
141
|
+
"background_command",
|
|
142
|
+
# Legacy decorators (for backward compatibility)
|
|
143
|
+
"api",
|
|
144
|
+
"background",
|
|
145
|
+
"cli_with_api",
|
|
146
|
+
# Server management
|
|
147
|
+
"start_server",
|
|
148
|
+
"stop_server",
|
|
149
|
+
"is_server_running",
|
|
150
|
+
"is_background_available",
|
|
151
|
+
"get_api_config",
|
|
152
|
+
"enable_api_server",
|
|
153
|
+
"disable_api_server",
|
|
154
|
+
"health_check",
|
|
155
|
+
"status_check",
|
|
156
|
+
]
|
|
157
|
+
|
|
158
|
+
except ImportError:
|
|
159
|
+
# from .app import main
|
|
160
|
+
sys.exit(1)
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
# logger.info("I am in mcli.__init__.py")
|
|
2
|
+
|
|
3
|
+
try:
|
|
4
|
+
from mcli.app.main import main as main_func
|
|
5
|
+
|
|
6
|
+
# from mcli.public import *
|
|
7
|
+
# from mcli.private import *
|
|
8
|
+
except ImportError:
|
|
9
|
+
from .app.main import main as main_func
|
|
10
|
+
|
|
11
|
+
__all__ = ["main_func"]
|
|
12
|
+
|
|
13
|
+
if __name__ == "__main__":
|
|
14
|
+
main_func()
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
# src/mcli/app/__init__.py
|
|
2
|
+
import importlib
|
|
3
|
+
from pathlib import Path
|
|
4
|
+
|
|
5
|
+
from mcli.lib.logger.logger import get_logger
|
|
6
|
+
|
|
7
|
+
logger = get_logger(__name__)
|
|
8
|
+
|
|
9
|
+
logger.info("Initializing mcli.app package")
|
|
10
|
+
|
|
11
|
+
# Import main function
|
|
12
|
+
try:
|
|
13
|
+
from .main import main
|
|
14
|
+
|
|
15
|
+
logger.info("Successfully imported main from .main")
|
|
16
|
+
except ImportError as e:
|
|
17
|
+
logger.error(f"Failed to import main: {e}")
|
|
18
|
+
import traceback
|
|
19
|
+
|
|
20
|
+
logger.error(f"Traceback: {traceback.format_exc()}")
|
|
21
|
+
raise
|
|
22
|
+
|
|
23
|
+
__all__ = ["main"]
|
|
@@ -182,6 +182,267 @@ def workflow():
|
|
|
182
182
|
commands = workflow
|
|
183
183
|
|
|
184
184
|
|
|
185
|
+
@workflow.command("init")
|
|
186
|
+
@click.option(
|
|
187
|
+
"--global", "-g", "is_global", is_flag=True, help="Initialize global workflows directory instead of local"
|
|
188
|
+
)
|
|
189
|
+
@click.option(
|
|
190
|
+
"--git", is_flag=True, help="Initialize git repository in workflows directory"
|
|
191
|
+
)
|
|
192
|
+
@click.option(
|
|
193
|
+
"--force", "-f", is_flag=True, help="Force initialization even if directory exists"
|
|
194
|
+
)
|
|
195
|
+
def init_workflows(is_global, git, force):
|
|
196
|
+
"""
|
|
197
|
+
Initialize workflows directory structure.
|
|
198
|
+
|
|
199
|
+
Creates the necessary directories and configuration files for managing
|
|
200
|
+
custom workflows. By default, creates a local .mcli/workflows/ directory
|
|
201
|
+
if in a git repository, otherwise uses ~/.mcli/workflows/.
|
|
202
|
+
|
|
203
|
+
Examples:
|
|
204
|
+
mcli workflow init # Initialize local workflows (if in git repo)
|
|
205
|
+
mcli workflow init --global # Initialize global workflows
|
|
206
|
+
mcli workflow init --git # Also initialize git repository
|
|
207
|
+
"""
|
|
208
|
+
from mcli.lib.paths import (
|
|
209
|
+
get_mcli_home,
|
|
210
|
+
get_local_mcli_dir,
|
|
211
|
+
get_git_root,
|
|
212
|
+
is_git_repository,
|
|
213
|
+
)
|
|
214
|
+
|
|
215
|
+
# Determine if we're in a git repository
|
|
216
|
+
in_git_repo = is_git_repository() and not is_global
|
|
217
|
+
git_root = get_git_root() if in_git_repo else None
|
|
218
|
+
|
|
219
|
+
# Explicitly create workflows directory (not commands)
|
|
220
|
+
# This bypasses the migration logic that would check for old commands/ directory
|
|
221
|
+
if not is_global and in_git_repo:
|
|
222
|
+
local_mcli = get_local_mcli_dir()
|
|
223
|
+
workflows_dir = local_mcli / "workflows"
|
|
224
|
+
else:
|
|
225
|
+
workflows_dir = get_mcli_home() / "workflows"
|
|
226
|
+
|
|
227
|
+
lockfile_path = workflows_dir / "commands.lock.json"
|
|
228
|
+
|
|
229
|
+
# Check if already initialized
|
|
230
|
+
if workflows_dir.exists() and not force:
|
|
231
|
+
if lockfile_path.exists():
|
|
232
|
+
console.print(f"[yellow]Workflows directory already initialized at:[/yellow] {workflows_dir}")
|
|
233
|
+
console.print(f"[dim]Use --force to reinitialize[/dim]")
|
|
234
|
+
|
|
235
|
+
should_continue = Prompt.ask(
|
|
236
|
+
"Continue anyway?", choices=["y", "n"], default="n"
|
|
237
|
+
)
|
|
238
|
+
if should_continue.lower() != "y":
|
|
239
|
+
return 0
|
|
240
|
+
|
|
241
|
+
# Create workflows directory
|
|
242
|
+
workflows_dir.mkdir(parents=True, exist_ok=True)
|
|
243
|
+
console.print(f"[green]✓[/green] Created workflows directory: {workflows_dir}")
|
|
244
|
+
|
|
245
|
+
# Create README.md
|
|
246
|
+
readme_path = workflows_dir / "README.md"
|
|
247
|
+
if not readme_path.exists() or force:
|
|
248
|
+
scope = "local" if in_git_repo else "global"
|
|
249
|
+
scope_desc = f"for repository: {git_root.name}" if in_git_repo else "globally"
|
|
250
|
+
|
|
251
|
+
readme_content = f"""# MCLI Custom Workflows
|
|
252
|
+
|
|
253
|
+
This directory contains custom workflow commands {scope_desc}.
|
|
254
|
+
|
|
255
|
+
## Quick Start
|
|
256
|
+
|
|
257
|
+
### Create a New Workflow
|
|
258
|
+
|
|
259
|
+
```bash
|
|
260
|
+
# Python workflow
|
|
261
|
+
mcli workflow add my-workflow
|
|
262
|
+
|
|
263
|
+
# Shell workflow
|
|
264
|
+
mcli workflow add my-script --language shell
|
|
265
|
+
```
|
|
266
|
+
|
|
267
|
+
### List Workflows
|
|
268
|
+
|
|
269
|
+
```bash
|
|
270
|
+
mcli workflow list --custom-only
|
|
271
|
+
```
|
|
272
|
+
|
|
273
|
+
### Execute a Workflow
|
|
274
|
+
|
|
275
|
+
```bash
|
|
276
|
+
mcli workflows my-workflow
|
|
277
|
+
```
|
|
278
|
+
|
|
279
|
+
### Edit a Workflow
|
|
280
|
+
|
|
281
|
+
```bash
|
|
282
|
+
mcli workflow edit my-workflow
|
|
283
|
+
```
|
|
284
|
+
|
|
285
|
+
### Export/Import Workflows
|
|
286
|
+
|
|
287
|
+
```bash
|
|
288
|
+
# Export all workflows
|
|
289
|
+
mcli workflow export workflows-backup.json
|
|
290
|
+
|
|
291
|
+
# Import workflows
|
|
292
|
+
mcli workflow import workflows-backup.json
|
|
293
|
+
```
|
|
294
|
+
|
|
295
|
+
## Directory Structure
|
|
296
|
+
|
|
297
|
+
```
|
|
298
|
+
{workflows_dir.name}/
|
|
299
|
+
├── README.md # This file
|
|
300
|
+
├── commands.lock.json # Lockfile for workflow state
|
|
301
|
+
└── *.json # Individual workflow definitions
|
|
302
|
+
```
|
|
303
|
+
|
|
304
|
+
## Workflow Format
|
|
305
|
+
|
|
306
|
+
Workflows are stored as JSON files with the following structure:
|
|
307
|
+
|
|
308
|
+
```json
|
|
309
|
+
{{
|
|
310
|
+
"name": "workflow-name",
|
|
311
|
+
"description": "Workflow description",
|
|
312
|
+
"code": "Python or shell code",
|
|
313
|
+
"language": "python",
|
|
314
|
+
"group": "workflow",
|
|
315
|
+
"version": "1.0",
|
|
316
|
+
"created_at": "2025-10-30T...",
|
|
317
|
+
"updated_at": "2025-10-30T..."
|
|
318
|
+
}}
|
|
319
|
+
```
|
|
320
|
+
|
|
321
|
+
## Scope
|
|
322
|
+
|
|
323
|
+
- **Scope**: {'Local (repository-specific)' if in_git_repo else 'Global (user-wide)'}
|
|
324
|
+
- **Location**: `{workflows_dir}`
|
|
325
|
+
{f"- **Git Repository**: `{git_root}`" if git_root else ""}
|
|
326
|
+
|
|
327
|
+
## Documentation
|
|
328
|
+
|
|
329
|
+
- [MCLI Documentation](https://github.com/gwicho38/mcli)
|
|
330
|
+
- [Workflow Guide](https://github.com/gwicho38/mcli/blob/main/docs/features/LOCAL_VS_GLOBAL_COMMANDS.md)
|
|
331
|
+
|
|
332
|
+
---
|
|
333
|
+
|
|
334
|
+
*Initialized: {datetime.now().strftime('%Y-%m-%d %H:%M:%S')}*
|
|
335
|
+
"""
|
|
336
|
+
|
|
337
|
+
readme_path.write_text(readme_content)
|
|
338
|
+
console.print(f"[green]✓[/green] Created README: {readme_path.name}")
|
|
339
|
+
|
|
340
|
+
# Initialize lockfile
|
|
341
|
+
if not lockfile_path.exists() or force:
|
|
342
|
+
lockfile_data = {
|
|
343
|
+
"version": "1.0",
|
|
344
|
+
"initialized_at": datetime.now().isoformat(),
|
|
345
|
+
"scope": "local" if in_git_repo else "global",
|
|
346
|
+
"commands": {}
|
|
347
|
+
}
|
|
348
|
+
|
|
349
|
+
with open(lockfile_path, "w") as f:
|
|
350
|
+
json.dump(lockfile_data, f, indent=2)
|
|
351
|
+
|
|
352
|
+
console.print(f"[green]✓[/green] Initialized lockfile: {lockfile_path.name}")
|
|
353
|
+
|
|
354
|
+
# Create .gitignore if in workflows directory
|
|
355
|
+
gitignore_path = workflows_dir / ".gitignore"
|
|
356
|
+
if not gitignore_path.exists() or force:
|
|
357
|
+
gitignore_content = """# Backup files
|
|
358
|
+
*.backup
|
|
359
|
+
*.bak
|
|
360
|
+
|
|
361
|
+
# Temporary files
|
|
362
|
+
*.tmp
|
|
363
|
+
*.temp
|
|
364
|
+
|
|
365
|
+
# OS files
|
|
366
|
+
.DS_Store
|
|
367
|
+
Thumbs.db
|
|
368
|
+
|
|
369
|
+
# Editor files
|
|
370
|
+
*.swp
|
|
371
|
+
*.swo
|
|
372
|
+
*~
|
|
373
|
+
.vscode/
|
|
374
|
+
.idea/
|
|
375
|
+
"""
|
|
376
|
+
gitignore_path.write_text(gitignore_content)
|
|
377
|
+
console.print(f"[green]✓[/green] Created .gitignore")
|
|
378
|
+
|
|
379
|
+
# Initialize git if requested
|
|
380
|
+
if git and not (workflows_dir / ".git").exists():
|
|
381
|
+
try:
|
|
382
|
+
subprocess.run(
|
|
383
|
+
["git", "init"],
|
|
384
|
+
cwd=workflows_dir,
|
|
385
|
+
check=True,
|
|
386
|
+
capture_output=True
|
|
387
|
+
)
|
|
388
|
+
console.print(f"[green]✓[/green] Initialized git repository in workflows directory")
|
|
389
|
+
|
|
390
|
+
# Create initial commit
|
|
391
|
+
subprocess.run(
|
|
392
|
+
["git", "add", "."],
|
|
393
|
+
cwd=workflows_dir,
|
|
394
|
+
check=True,
|
|
395
|
+
capture_output=True
|
|
396
|
+
)
|
|
397
|
+
subprocess.run(
|
|
398
|
+
["git", "commit", "-m", "Initial commit: Initialize workflows directory"],
|
|
399
|
+
cwd=workflows_dir,
|
|
400
|
+
check=True,
|
|
401
|
+
capture_output=True
|
|
402
|
+
)
|
|
403
|
+
console.print(f"[green]✓[/green] Created initial commit")
|
|
404
|
+
|
|
405
|
+
except subprocess.CalledProcessError as e:
|
|
406
|
+
console.print(f"[yellow]⚠[/yellow] Git initialization failed: {e}")
|
|
407
|
+
except FileNotFoundError:
|
|
408
|
+
console.print(f"[yellow]⚠[/yellow] Git not found. Skipping git initialization.")
|
|
409
|
+
|
|
410
|
+
# Summary
|
|
411
|
+
console.print()
|
|
412
|
+
console.print("[bold green]Workflows directory initialized successfully![/bold green]")
|
|
413
|
+
console.print()
|
|
414
|
+
|
|
415
|
+
# Display summary table
|
|
416
|
+
table = Table(title="Initialization Summary", show_header=False)
|
|
417
|
+
table.add_column("Property", style="cyan")
|
|
418
|
+
table.add_column("Value", style="green")
|
|
419
|
+
|
|
420
|
+
table.add_row("Scope", "Local (repository-specific)" if in_git_repo else "Global (user-wide)")
|
|
421
|
+
table.add_row("Location", str(workflows_dir))
|
|
422
|
+
if git_root:
|
|
423
|
+
table.add_row("Git Repository", str(git_root))
|
|
424
|
+
table.add_row("Lockfile", str(lockfile_path))
|
|
425
|
+
table.add_row("Git Initialized", "Yes" if git and (workflows_dir / ".git").exists() else "No")
|
|
426
|
+
|
|
427
|
+
console.print(table)
|
|
428
|
+
console.print()
|
|
429
|
+
|
|
430
|
+
# Next steps
|
|
431
|
+
console.print("[bold]Next Steps:[/bold]")
|
|
432
|
+
console.print(" 1. Create a workflow: [cyan]mcli workflow add my-workflow[/cyan]")
|
|
433
|
+
console.print(" 2. List workflows: [cyan]mcli workflow list --custom-only[/cyan]")
|
|
434
|
+
console.print(" 3. Execute workflow: [cyan]mcli workflows my-workflow[/cyan]")
|
|
435
|
+
console.print(" 4. View README: [cyan]cat {}/README.md[/cyan]".format(workflows_dir))
|
|
436
|
+
console.print()
|
|
437
|
+
|
|
438
|
+
if in_git_repo:
|
|
439
|
+
console.print(f"[dim]Tip: Workflows are local to this repository. Use --global for user-wide workflows.[/dim]")
|
|
440
|
+
else:
|
|
441
|
+
console.print(f"[dim]Tip: Use workflows in any git repository, or create local ones with 'mcli workflow init' inside repos.[/dim]")
|
|
442
|
+
|
|
443
|
+
return 0
|
|
444
|
+
|
|
445
|
+
|
|
185
446
|
@workflow.command("list")
|
|
186
447
|
@click.option("--include-groups", is_flag=True, help="Include command groups in listing")
|
|
187
448
|
@click.option("--daemon-only", is_flag=True, help="Show only daemon database commands")
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
"""
|
|
2
|
+
MCLI Chat System
|
|
3
|
+
Real-time system control and interaction capabilities for MCLI chat
|
|
4
|
+
"""
|
|
5
|
+
|
|
6
|
+
from .system_controller import (
|
|
7
|
+
SystemController,
|
|
8
|
+
control_app,
|
|
9
|
+
execute_system_command,
|
|
10
|
+
open_file_or_url,
|
|
11
|
+
open_textedit_and_write,
|
|
12
|
+
system_controller,
|
|
13
|
+
take_screenshot,
|
|
14
|
+
)
|
|
15
|
+
from .system_integration import (
|
|
16
|
+
ChatSystemIntegration,
|
|
17
|
+
chat_system_integration,
|
|
18
|
+
get_system_capabilities,
|
|
19
|
+
handle_system_request,
|
|
20
|
+
)
|
|
21
|
+
|
|
22
|
+
__all__ = [
|
|
23
|
+
"SystemController",
|
|
24
|
+
"system_controller",
|
|
25
|
+
"ChatSystemIntegration",
|
|
26
|
+
"chat_system_integration",
|
|
27
|
+
"handle_system_request",
|
|
28
|
+
"get_system_capabilities",
|
|
29
|
+
"open_textedit_and_write",
|
|
30
|
+
"control_app",
|
|
31
|
+
"execute_system_command",
|
|
32
|
+
"take_screenshot",
|
|
33
|
+
"open_file_or_url",
|
|
34
|
+
]
|
|
File without changes
|
|
File without changes
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
from .auth import *
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
from .config import *
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
"""
|
|
2
|
+
Entity Relationship Diagram (ERD) package.
|
|
3
|
+
|
|
4
|
+
This package provides utilities for generating Entity Relationship Diagrams from MCLI type metadata.
|
|
5
|
+
"""
|
|
6
|
+
|
|
7
|
+
# Import and export all public functions from erd.py
|
|
8
|
+
from .erd import (
|
|
9
|
+
analyze_graph_for_hierarchical_exports,
|
|
10
|
+
create_merged_erd,
|
|
11
|
+
do_erd,
|
|
12
|
+
find_top_nodes_in_graph,
|
|
13
|
+
generate_erd_for_top_nodes,
|
|
14
|
+
generate_merged_erd_for_types,
|
|
15
|
+
)
|
|
16
|
+
|
|
17
|
+
# Define __all__ to control exports
|
|
18
|
+
__all__ = [
|
|
19
|
+
"do_erd",
|
|
20
|
+
"create_merged_erd",
|
|
21
|
+
"generate_merged_erd_for_types",
|
|
22
|
+
"find_top_nodes_in_graph",
|
|
23
|
+
"generate_erd_for_top_nodes",
|
|
24
|
+
"analyze_graph_for_hierarchical_exports",
|
|
25
|
+
]
|
|
File without changes
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
from .fs import *
|
|
@@ -158,9 +158,13 @@ def get_local_commands_dir() -> Optional[Path]:
|
|
|
158
158
|
if workflows_dir.exists():
|
|
159
159
|
return workflows_dir
|
|
160
160
|
|
|
161
|
-
#
|
|
161
|
+
# Check if old commands directory exists (for migration support)
|
|
162
162
|
commands_dir = local_mcli / "commands"
|
|
163
|
-
|
|
163
|
+
if commands_dir.exists():
|
|
164
|
+
return commands_dir
|
|
165
|
+
|
|
166
|
+
# If neither exists, return workflows path (for new installations)
|
|
167
|
+
return workflows_dir
|
|
164
168
|
return None
|
|
165
169
|
|
|
166
170
|
|