mcli-framework 8.0.56__tar.gz → 8.0.58__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-8.0.56/src/mcli_framework.egg-info → mcli_framework-8.0.58}/PKG-INFO +1 -1
- {mcli_framework-8.0.56 → mcli_framework-8.0.58}/pyproject.toml +1 -1
- {mcli_framework-8.0.56 → mcli_framework-8.0.58}/src/mcli/self/self_cmd.py +4 -4
- mcli_framework-8.0.58/src/mcli/workflow/ci/act_runner.py +242 -0
- {mcli_framework-8.0.56 → mcli_framework-8.0.58/src/mcli_framework.egg-info}/PKG-INFO +1 -1
- {mcli_framework-8.0.56 → mcli_framework-8.0.58}/src/mcli_framework.egg-info/SOURCES.txt +0 -5
- mcli_framework-8.0.56/src/mcli/app/commands_cmd.py +0 -1994
- mcli_framework-8.0.56/src/mcli/app/create_cmd.py +0 -442
- mcli_framework-8.0.56/src/mcli/app/migrate_cmd.py +0 -395
- mcli_framework-8.0.56/src/mcli/app/remove_cmd.py +0 -60
- mcli_framework-8.0.56/src/mcli/app/rm_cmd.py +0 -107
- mcli_framework-8.0.56/src/mcli/workflow/ci/act_runner.py +0 -140
- {mcli_framework-8.0.56 → mcli_framework-8.0.58}/LICENSE +0 -0
- {mcli_framework-8.0.56 → mcli_framework-8.0.58}/MANIFEST.in +0 -0
- {mcli_framework-8.0.56 → mcli_framework-8.0.58}/README.md +0 -0
- {mcli_framework-8.0.56 → mcli_framework-8.0.58}/llms-full.txt +0 -0
- {mcli_framework-8.0.56 → mcli_framework-8.0.58}/llms.txt +0 -0
- {mcli_framework-8.0.56 → mcli_framework-8.0.58}/mcli_rust/Cargo.toml +0 -0
- {mcli_framework-8.0.56 → mcli_framework-8.0.58}/mcli_rust/src/command_parser.rs +0 -0
- {mcli_framework-8.0.56 → mcli_framework-8.0.58}/mcli_rust/src/file_watcher.rs +0 -0
- {mcli_framework-8.0.56 → mcli_framework-8.0.58}/mcli_rust/src/lib.rs +0 -0
- {mcli_framework-8.0.56 → mcli_framework-8.0.58}/mcli_rust/src/process_manager.rs +0 -0
- {mcli_framework-8.0.56 → mcli_framework-8.0.58}/mcli_rust/src/tfidf.rs +0 -0
- {mcli_framework-8.0.56 → mcli_framework-8.0.58}/setup.cfg +0 -0
- {mcli_framework-8.0.56 → mcli_framework-8.0.58}/src/mcli/__init__.py +0 -0
- {mcli_framework-8.0.56 → mcli_framework-8.0.58}/src/mcli/__main__.py +0 -0
- {mcli_framework-8.0.56 → mcli_framework-8.0.58}/src/mcli/app/__init__.py +0 -0
- {mcli_framework-8.0.56 → mcli_framework-8.0.58}/src/mcli/app/completion_helpers.py +0 -0
- {mcli_framework-8.0.56 → mcli_framework-8.0.58}/src/mcli/app/context_cmd.py +0 -0
- {mcli_framework-8.0.56 → mcli_framework-8.0.58}/src/mcli/app/delete_cmd.py +0 -0
- {mcli_framework-8.0.56 → mcli_framework-8.0.58}/src/mcli/app/edit_cmd.py +0 -0
- {mcli_framework-8.0.56 → mcli_framework-8.0.58}/src/mcli/app/import_cmd.py +0 -0
- {mcli_framework-8.0.56 → mcli_framework-8.0.58}/src/mcli/app/init_cmd.py +0 -0
- {mcli_framework-8.0.56 → mcli_framework-8.0.58}/src/mcli/app/list_cmd.py +0 -0
- {mcli_framework-8.0.56 → mcli_framework-8.0.58}/src/mcli/app/main.py +0 -0
- {mcli_framework-8.0.56 → mcli_framework-8.0.58}/src/mcli/app/model/__init__.py +0 -0
- {mcli_framework-8.0.56 → mcli_framework-8.0.58}/src/mcli/app/model/model.py +0 -0
- {mcli_framework-8.0.56 → mcli_framework-8.0.58}/src/mcli/app/model_cmd.py +0 -0
- {mcli_framework-8.0.56 → mcli_framework-8.0.58}/src/mcli/app/mv_cmd.py +0 -0
- {mcli_framework-8.0.56 → mcli_framework-8.0.58}/src/mcli/app/new_cmd.py +0 -0
- {mcli_framework-8.0.56 → mcli_framework-8.0.58}/src/mcli/app/search_cmd.py +0 -0
- {mcli_framework-8.0.56 → mcli_framework-8.0.58}/src/mcli/app/services_cmd.py +0 -0
- {mcli_framework-8.0.56 → mcli_framework-8.0.58}/src/mcli/app/setup_cmd.py +0 -0
- {mcli_framework-8.0.56 → mcli_framework-8.0.58}/src/mcli/app/source_sync_cmd.py +0 -0
- {mcli_framework-8.0.56 → mcli_framework-8.0.58}/src/mcli/app/sync_cmd.py +0 -0
- {mcli_framework-8.0.56 → mcli_framework-8.0.58}/src/mcli/app/video/__init__.py +0 -0
- {mcli_framework-8.0.56 → mcli_framework-8.0.58}/src/mcli/app/video/video.py +0 -0
- {mcli_framework-8.0.56 → mcli_framework-8.0.58}/src/mcli/config.toml +0 -0
- {mcli_framework-8.0.56 → mcli_framework-8.0.58}/src/mcli/lib/__init__.py +0 -0
- {mcli_framework-8.0.56 → mcli_framework-8.0.58}/src/mcli/lib/api/__init__.py +0 -0
- {mcli_framework-8.0.56 → mcli_framework-8.0.58}/src/mcli/lib/api/api.py +0 -0
- {mcli_framework-8.0.56 → mcli_framework-8.0.58}/src/mcli/lib/api/daemon_client.py +0 -0
- {mcli_framework-8.0.56 → mcli_framework-8.0.58}/src/mcli/lib/api/daemon_client_local.py +0 -0
- {mcli_framework-8.0.56 → mcli_framework-8.0.58}/src/mcli/lib/api/daemon_decorator.py +0 -0
- {mcli_framework-8.0.56 → mcli_framework-8.0.58}/src/mcli/lib/api/mcli_decorators.py +0 -0
- {mcli_framework-8.0.56 → mcli_framework-8.0.58}/src/mcli/lib/auth/__init__.py +0 -0
- {mcli_framework-8.0.56 → mcli_framework-8.0.58}/src/mcli/lib/auth/auth.py +0 -0
- {mcli_framework-8.0.56 → mcli_framework-8.0.58}/src/mcli/lib/auth/aws_manager.py +0 -0
- {mcli_framework-8.0.56 → mcli_framework-8.0.58}/src/mcli/lib/auth/azure_manager.py +0 -0
- {mcli_framework-8.0.56 → mcli_framework-8.0.58}/src/mcli/lib/auth/credential_manager.py +0 -0
- {mcli_framework-8.0.56 → mcli_framework-8.0.58}/src/mcli/lib/auth/gcp_manager.py +0 -0
- {mcli_framework-8.0.56 → mcli_framework-8.0.58}/src/mcli/lib/auth/key_manager.py +0 -0
- {mcli_framework-8.0.56 → mcli_framework-8.0.58}/src/mcli/lib/auth/mcli_manager.py +0 -0
- {mcli_framework-8.0.56 → mcli_framework-8.0.58}/src/mcli/lib/auth/token_manager.py +0 -0
- {mcli_framework-8.0.56 → mcli_framework-8.0.58}/src/mcli/lib/auth/token_util.py +0 -0
- {mcli_framework-8.0.56 → mcli_framework-8.0.58}/src/mcli/lib/config/__init__.py +0 -0
- {mcli_framework-8.0.56 → mcli_framework-8.0.58}/src/mcli/lib/config/config.py +0 -0
- {mcli_framework-8.0.56 → mcli_framework-8.0.58}/src/mcli/lib/config/settings.py +0 -0
- {mcli_framework-8.0.56 → mcli_framework-8.0.58}/src/mcli/lib/constants/__init__.py +0 -0
- {mcli_framework-8.0.56 → mcli_framework-8.0.58}/src/mcli/lib/constants/commands.py +0 -0
- {mcli_framework-8.0.56 → mcli_framework-8.0.58}/src/mcli/lib/constants/defaults.py +0 -0
- {mcli_framework-8.0.56 → mcli_framework-8.0.58}/src/mcli/lib/constants/env.py +0 -0
- {mcli_framework-8.0.56 → mcli_framework-8.0.58}/src/mcli/lib/constants/messages.py +0 -0
- {mcli_framework-8.0.56 → mcli_framework-8.0.58}/src/mcli/lib/constants/paths.py +0 -0
- {mcli_framework-8.0.56 → mcli_framework-8.0.58}/src/mcli/lib/constants/scripts.py +0 -0
- {mcli_framework-8.0.56 → mcli_framework-8.0.58}/src/mcli/lib/constants/storage.py +0 -0
- {mcli_framework-8.0.56 → mcli_framework-8.0.58}/src/mcli/lib/custom_commands.py +0 -0
- {mcli_framework-8.0.56 → mcli_framework-8.0.58}/src/mcli/lib/discovery/__init__.py +0 -0
- {mcli_framework-8.0.56 → mcli_framework-8.0.58}/src/mcli/lib/discovery/command_discovery.py +0 -0
- {mcli_framework-8.0.56 → mcli_framework-8.0.58}/src/mcli/lib/erd/__init__.py +0 -0
- {mcli_framework-8.0.56 → mcli_framework-8.0.58}/src/mcli/lib/erd/erd.py +0 -0
- {mcli_framework-8.0.56 → mcli_framework-8.0.58}/src/mcli/lib/erd/generate_graph.py +0 -0
- {mcli_framework-8.0.56 → mcli_framework-8.0.58}/src/mcli/lib/errors.py +0 -0
- {mcli_framework-8.0.56 → mcli_framework-8.0.58}/src/mcli/lib/feature_detection.py +0 -0
- {mcli_framework-8.0.56 → mcli_framework-8.0.58}/src/mcli/lib/files/__init__.py +0 -0
- {mcli_framework-8.0.56 → mcli_framework-8.0.58}/src/mcli/lib/files/files.py +0 -0
- {mcli_framework-8.0.56 → mcli_framework-8.0.58}/src/mcli/lib/folder_workflows.py +0 -0
- {mcli_framework-8.0.56 → mcli_framework-8.0.58}/src/mcli/lib/fs/__init__.py +0 -0
- {mcli_framework-8.0.56 → mcli_framework-8.0.58}/src/mcli/lib/fs/fs.py +0 -0
- {mcli_framework-8.0.56 → mcli_framework-8.0.58}/src/mcli/lib/ipfs_sync.py +0 -0
- {mcli_framework-8.0.56 → mcli_framework-8.0.58}/src/mcli/lib/ipfs_utils.py +0 -0
- {mcli_framework-8.0.56 → mcli_framework-8.0.58}/src/mcli/lib/ipns_manager.py +0 -0
- {mcli_framework-8.0.56 → mcli_framework-8.0.58}/src/mcli/lib/lib.py +0 -0
- {mcli_framework-8.0.56 → mcli_framework-8.0.58}/src/mcli/lib/logger/__init__.py +0 -0
- {mcli_framework-8.0.56 → mcli_framework-8.0.58}/src/mcli/lib/logger/correlation.py +0 -0
- {mcli_framework-8.0.56 → mcli_framework-8.0.58}/src/mcli/lib/logger/logger.py +0 -0
- {mcli_framework-8.0.56 → mcli_framework-8.0.58}/src/mcli/lib/logger/structured.py +0 -0
- {mcli_framework-8.0.56 → mcli_framework-8.0.58}/src/mcli/lib/optional_deps.py +0 -0
- {mcli_framework-8.0.56 → mcli_framework-8.0.58}/src/mcli/lib/paths.py +0 -0
- {mcli_framework-8.0.56 → mcli_framework-8.0.58}/src/mcli/lib/performance/__init__.py +0 -0
- {mcli_framework-8.0.56 → mcli_framework-8.0.58}/src/mcli/lib/performance/optimizer.py +0 -0
- {mcli_framework-8.0.56 → mcli_framework-8.0.58}/src/mcli/lib/performance/rust_bridge.py +0 -0
- {mcli_framework-8.0.56 → mcli_framework-8.0.58}/src/mcli/lib/performance/uvloop_config.py +0 -0
- {mcli_framework-8.0.56 → mcli_framework-8.0.58}/src/mcli/lib/pickles/__init__.py +0 -0
- {mcli_framework-8.0.56 → mcli_framework-8.0.58}/src/mcli/lib/pickles/pickles.py +0 -0
- {mcli_framework-8.0.56 → mcli_framework-8.0.58}/src/mcli/lib/pyenv/__init__.py +0 -0
- {mcli_framework-8.0.56 → mcli_framework-8.0.58}/src/mcli/lib/pyenv/deps.py +0 -0
- {mcli_framework-8.0.56 → mcli_framework-8.0.58}/src/mcli/lib/pyenv/manager.py +0 -0
- {mcli_framework-8.0.56 → mcli_framework-8.0.58}/src/mcli/lib/pyenv/venv.py +0 -0
- {mcli_framework-8.0.56 → mcli_framework-8.0.58}/src/mcli/lib/script_loader.py +0 -0
- {mcli_framework-8.0.56 → mcli_framework-8.0.58}/src/mcli/lib/script_sync.py +0 -0
- {mcli_framework-8.0.56 → mcli_framework-8.0.58}/src/mcli/lib/script_watcher.py +0 -0
- {mcli_framework-8.0.56 → mcli_framework-8.0.58}/src/mcli/lib/search/cached_vectorizer.py +0 -0
- {mcli_framework-8.0.56 → mcli_framework-8.0.58}/src/mcli/lib/secrets/__init__.py +0 -0
- {mcli_framework-8.0.56 → mcli_framework-8.0.58}/src/mcli/lib/secrets/commands.py +0 -0
- {mcli_framework-8.0.56 → mcli_framework-8.0.58}/src/mcli/lib/secrets/manager.py +0 -0
- {mcli_framework-8.0.56 → mcli_framework-8.0.58}/src/mcli/lib/secrets/repl.py +0 -0
- {mcli_framework-8.0.56 → mcli_framework-8.0.58}/src/mcli/lib/secrets/store.py +0 -0
- {mcli_framework-8.0.56 → mcli_framework-8.0.58}/src/mcli/lib/services/__init__.py +0 -0
- {mcli_framework-8.0.56 → mcli_framework-8.0.58}/src/mcli/lib/services/config.py +0 -0
- {mcli_framework-8.0.56 → mcli_framework-8.0.58}/src/mcli/lib/services/data_pipeline.py +0 -0
- {mcli_framework-8.0.56 → mcli_framework-8.0.58}/src/mcli/lib/services/health.py +0 -0
- {mcli_framework-8.0.56 → mcli_framework-8.0.58}/src/mcli/lib/services/lsh_client.py +0 -0
- {mcli_framework-8.0.56 → mcli_framework-8.0.58}/src/mcli/lib/services/manager.py +0 -0
- {mcli_framework-8.0.56 → mcli_framework-8.0.58}/src/mcli/lib/services/redis_service.py +0 -0
- {mcli_framework-8.0.56 → mcli_framework-8.0.58}/src/mcli/lib/services/registry.py +0 -0
- {mcli_framework-8.0.56 → mcli_framework-8.0.58}/src/mcli/lib/services/state.py +0 -0
- {mcli_framework-8.0.56 → mcli_framework-8.0.58}/src/mcli/lib/services/supervisor.py +0 -0
- {mcli_framework-8.0.56 → mcli_framework-8.0.58}/src/mcli/lib/shell/__init__.py +0 -0
- {mcli_framework-8.0.56 → mcli_framework-8.0.58}/src/mcli/lib/shell/exceptions.py +0 -0
- {mcli_framework-8.0.56 → mcli_framework-8.0.58}/src/mcli/lib/shell/shell.py +0 -0
- {mcli_framework-8.0.56 → mcli_framework-8.0.58}/src/mcli/lib/sync_key_store.py +0 -0
- {mcli_framework-8.0.56 → mcli_framework-8.0.58}/src/mcli/lib/templates/__init__.py +0 -0
- {mcli_framework-8.0.56 → mcli_framework-8.0.58}/src/mcli/lib/templates/command_templates.py +0 -0
- {mcli_framework-8.0.56 → mcli_framework-8.0.58}/src/mcli/lib/toml/__init__.py +0 -0
- {mcli_framework-8.0.56 → mcli_framework-8.0.58}/src/mcli/lib/toml/toml.py +0 -0
- {mcli_framework-8.0.56 → mcli_framework-8.0.58}/src/mcli/lib/types.py +0 -0
- {mcli_framework-8.0.56 → mcli_framework-8.0.58}/src/mcli/lib/ui/styling.py +0 -0
- {mcli_framework-8.0.56 → mcli_framework-8.0.58}/src/mcli/lib/ui/visual_effects.py +0 -0
- {mcli_framework-8.0.56 → mcli_framework-8.0.58}/src/mcli/lib/watcher/__init__.py +0 -0
- {mcli_framework-8.0.56 → mcli_framework-8.0.58}/src/mcli/lib/watcher/watcher.py +0 -0
- {mcli_framework-8.0.56 → mcli_framework-8.0.58}/src/mcli/lib/workflow_models.py +0 -0
- {mcli_framework-8.0.56 → mcli_framework-8.0.58}/src/mcli/lib/workspace_registry.py +0 -0
- {mcli_framework-8.0.56 → mcli_framework-8.0.58}/src/mcli/mygroup/__init__.py +0 -0
- {mcli_framework-8.0.56 → mcli_framework-8.0.58}/src/mcli/mygroup/test_cmd.py +0 -0
- {mcli_framework-8.0.56 → mcli_framework-8.0.58}/src/mcli/public/__init__.py +0 -0
- {mcli_framework-8.0.56 → mcli_framework-8.0.58}/src/mcli/public/commands/__init__.py +0 -0
- {mcli_framework-8.0.56 → mcli_framework-8.0.58}/src/mcli/public/oi/oi.py +0 -0
- {mcli_framework-8.0.56 → mcli_framework-8.0.58}/src/mcli/public/public.py +0 -0
- {mcli_framework-8.0.56 → mcli_framework-8.0.58}/src/mcli/self/__init__.py +0 -0
- {mcli_framework-8.0.56 → mcli_framework-8.0.58}/src/mcli/self/completion_cmd.py +0 -0
- {mcli_framework-8.0.56 → mcli_framework-8.0.58}/src/mcli/self/env_cmd.py +0 -0
- {mcli_framework-8.0.56 → mcli_framework-8.0.58}/src/mcli/self/health_cmd.py +0 -0
- {mcli_framework-8.0.56 → mcli_framework-8.0.58}/src/mcli/self/ipfs_cmd.py +0 -0
- {mcli_framework-8.0.56 → mcli_framework-8.0.58}/src/mcli/self/logs_cmd.py +0 -0
- {mcli_framework-8.0.56 → mcli_framework-8.0.58}/src/mcli/self/migrate_cmd.py +0 -0
- {mcli_framework-8.0.56 → mcli_framework-8.0.58}/src/mcli/self/release_notes_cmd.py +0 -0
- {mcli_framework-8.0.56 → mcli_framework-8.0.58}/src/mcli/self/store_cmd.py +0 -0
- {mcli_framework-8.0.56 → mcli_framework-8.0.58}/src/mcli/self/test_cmd.py +0 -0
- {mcli_framework-8.0.56 → mcli_framework-8.0.58}/src/mcli/self/workflows_cmd.py +0 -0
- {mcli_framework-8.0.56 → mcli_framework-8.0.58}/src/mcli/storage/__init__.py +0 -0
- {mcli_framework-8.0.56 → mcli_framework-8.0.58}/src/mcli/storage/backends/__init__.py +0 -0
- {mcli_framework-8.0.56 → mcli_framework-8.0.58}/src/mcli/storage/backends/ipfs_backend.py +0 -0
- {mcli_framework-8.0.56 → mcli_framework-8.0.58}/src/mcli/storage/base.py +0 -0
- {mcli_framework-8.0.56 → mcli_framework-8.0.58}/src/mcli/storage/cache.py +0 -0
- {mcli_framework-8.0.56 → mcli_framework-8.0.58}/src/mcli/storage/encryption.py +0 -0
- {mcli_framework-8.0.56 → mcli_framework-8.0.58}/src/mcli/storage/factory.py +0 -0
- {mcli_framework-8.0.56 → mcli_framework-8.0.58}/src/mcli/storage/registry.py +0 -0
- {mcli_framework-8.0.56 → mcli_framework-8.0.58}/src/mcli/storage/storacha_cli.py +0 -0
- {mcli_framework-8.0.56 → mcli_framework-8.0.58}/src/mcli/workflow/__init__.py +0 -0
- {mcli_framework-8.0.56 → mcli_framework-8.0.58}/src/mcli/workflow/ci/__init__.py +0 -0
- {mcli_framework-8.0.56 → mcli_framework-8.0.58}/src/mcli/workflow/ci/ci.py +0 -0
- {mcli_framework-8.0.56 → mcli_framework-8.0.58}/src/mcli/workflow/ci/runner_status.py +0 -0
- {mcli_framework-8.0.56 → mcli_framework-8.0.58}/src/mcli/workflow/ci/workflow_transform.py +0 -0
- {mcli_framework-8.0.56 → mcli_framework-8.0.58}/src/mcli/workflow/daemon/__init__.py +0 -0
- {mcli_framework-8.0.56 → mcli_framework-8.0.58}/src/mcli/workflow/daemon/async_command_database.py +0 -0
- {mcli_framework-8.0.56 → mcli_framework-8.0.58}/src/mcli/workflow/daemon/async_process_manager.py +0 -0
- {mcli_framework-8.0.56 → mcli_framework-8.0.58}/src/mcli/workflow/daemon/client.py +0 -0
- {mcli_framework-8.0.56 → mcli_framework-8.0.58}/src/mcli/workflow/daemon/daemon.py +0 -0
- {mcli_framework-8.0.56 → mcli_framework-8.0.58}/src/mcli/workflow/daemon/daemon_api.py +0 -0
- {mcli_framework-8.0.56 → mcli_framework-8.0.58}/src/mcli/workflow/daemon/enhanced_daemon.py +0 -0
- {mcli_framework-8.0.56 → mcli_framework-8.0.58}/src/mcli/workflow/daemon/process_cli.py +0 -0
- {mcli_framework-8.0.56 → mcli_framework-8.0.58}/src/mcli/workflow/daemon/process_manager.py +0 -0
- {mcli_framework-8.0.56 → mcli_framework-8.0.58}/src/mcli/workflow/daemon/test_daemon.py +0 -0
- {mcli_framework-8.0.56 → mcli_framework-8.0.58}/src/mcli/workflow/doc_convert.py +0 -0
- {mcli_framework-8.0.56 → mcli_framework-8.0.58}/src/mcli/workflow/docker/__init__.py +0 -0
- {mcli_framework-8.0.56 → mcli_framework-8.0.58}/src/mcli/workflow/docker/docker.py +0 -0
- {mcli_framework-8.0.56 → mcli_framework-8.0.58}/src/mcli/workflow/file/__init__.py +0 -0
- {mcli_framework-8.0.56 → mcli_framework-8.0.58}/src/mcli/workflow/gcloud/__init__.py +0 -0
- {mcli_framework-8.0.56 → mcli_framework-8.0.58}/src/mcli/workflow/gcloud/config.toml +0 -0
- {mcli_framework-8.0.56 → mcli_framework-8.0.58}/src/mcli/workflow/gcloud/gcloud.py +0 -0
- {mcli_framework-8.0.56 → mcli_framework-8.0.58}/src/mcli/workflow/git_commit/__init__.py +0 -0
- {mcli_framework-8.0.56 → mcli_framework-8.0.58}/src/mcli/workflow/git_commit/ai_service.py +0 -0
- {mcli_framework-8.0.56 → mcli_framework-8.0.58}/src/mcli/workflow/interview/__init__.py +0 -0
- {mcli_framework-8.0.56 → mcli_framework-8.0.58}/src/mcli/workflow/lsh_integration.py +0 -0
- {mcli_framework-8.0.56 → mcli_framework-8.0.58}/src/mcli/workflow/model_service/client.py +0 -0
- {mcli_framework-8.0.56 → mcli_framework-8.0.58}/src/mcli/workflow/model_service/download_and_run_efficient_models.py +0 -0
- {mcli_framework-8.0.56 → mcli_framework-8.0.58}/src/mcli/workflow/model_service/lightweight_embedder.py +0 -0
- {mcli_framework-8.0.56 → mcli_framework-8.0.58}/src/mcli/workflow/model_service/lightweight_model_server.py +0 -0
- {mcli_framework-8.0.56 → mcli_framework-8.0.58}/src/mcli/workflow/model_service/lightweight_test.py +0 -0
- {mcli_framework-8.0.56 → mcli_framework-8.0.58}/src/mcli/workflow/model_service/model_service.py +0 -0
- {mcli_framework-8.0.56 → mcli_framework-8.0.58}/src/mcli/workflow/model_service/ollama_efficient_runner.py +0 -0
- {mcli_framework-8.0.56 → mcli_framework-8.0.58}/src/mcli/workflow/model_service/openai_adapter.py +0 -0
- {mcli_framework-8.0.56 → mcli_framework-8.0.58}/src/mcli/workflow/model_service/pdf_processor.py +0 -0
- {mcli_framework-8.0.56 → mcli_framework-8.0.58}/src/mcli/workflow/model_service/test_efficient_runner.py +0 -0
- {mcli_framework-8.0.56 → mcli_framework-8.0.58}/src/mcli/workflow/model_service/test_example.py +0 -0
- {mcli_framework-8.0.56 → mcli_framework-8.0.58}/src/mcli/workflow/model_service/test_integration.py +0 -0
- {mcli_framework-8.0.56 → mcli_framework-8.0.58}/src/mcli/workflow/model_service/test_new_features.py +0 -0
- {mcli_framework-8.0.56 → mcli_framework-8.0.58}/src/mcli/workflow/notebook/__init__.py +0 -0
- {mcli_framework-8.0.56 → mcli_framework-8.0.58}/src/mcli/workflow/notebook/command_loader.py +0 -0
- {mcli_framework-8.0.56 → mcli_framework-8.0.58}/src/mcli/workflow/notebook/converter.py +0 -0
- {mcli_framework-8.0.56 → mcli_framework-8.0.58}/src/mcli/workflow/notebook/executor.py +0 -0
- {mcli_framework-8.0.56 → mcli_framework-8.0.58}/src/mcli/workflow/notebook/notebook_cmd.py +0 -0
- {mcli_framework-8.0.56 → mcli_framework-8.0.58}/src/mcli/workflow/notebook/schema.py +0 -0
- {mcli_framework-8.0.56 → mcli_framework-8.0.58}/src/mcli/workflow/notebook/validator.py +0 -0
- {mcli_framework-8.0.56 → mcli_framework-8.0.58}/src/mcli/workflow/openai/openai.py +0 -0
- {mcli_framework-8.0.56 → mcli_framework-8.0.58}/src/mcli/workflow/registry/__init__.py +0 -0
- {mcli_framework-8.0.56 → mcli_framework-8.0.58}/src/mcli/workflow/registry/registry.py +0 -0
- {mcli_framework-8.0.56 → mcli_framework-8.0.58}/src/mcli/workflow/repo/__init__.py +0 -0
- {mcli_framework-8.0.56 → mcli_framework-8.0.58}/src/mcli/workflow/repo/repo.py +0 -0
- {mcli_framework-8.0.56 → mcli_framework-8.0.58}/src/mcli/workflow/scheduler/__init__.py +0 -0
- {mcli_framework-8.0.56 → mcli_framework-8.0.58}/src/mcli/workflow/scheduler/cron_parser.py +0 -0
- {mcli_framework-8.0.56 → mcli_framework-8.0.58}/src/mcli/workflow/scheduler/job.py +0 -0
- {mcli_framework-8.0.56 → mcli_framework-8.0.58}/src/mcli/workflow/scheduler/models.py +0 -0
- {mcli_framework-8.0.56 → mcli_framework-8.0.58}/src/mcli/workflow/scheduler/monitor.py +0 -0
- {mcli_framework-8.0.56 → mcli_framework-8.0.58}/src/mcli/workflow/scheduler/persistence.py +0 -0
- {mcli_framework-8.0.56 → mcli_framework-8.0.58}/src/mcli/workflow/scheduler/scheduler.py +0 -0
- {mcli_framework-8.0.56 → mcli_framework-8.0.58}/src/mcli/workflow/scheduler/validation.py +0 -0
- {mcli_framework-8.0.56 → mcli_framework-8.0.58}/src/mcli/workflow/search/__init__.py +0 -0
- {mcli_framework-8.0.56 → mcli_framework-8.0.58}/src/mcli/workflow/secrets/__init__.py +0 -0
- {mcli_framework-8.0.56 → mcli_framework-8.0.58}/src/mcli/workflow/secrets/secrets_cmd.py +0 -0
- {mcli_framework-8.0.56 → mcli_framework-8.0.58}/src/mcli/workflow/storage/__init__.py +0 -0
- {mcli_framework-8.0.56 → mcli_framework-8.0.58}/src/mcli/workflow/storage/storage_cmd.py +0 -0
- {mcli_framework-8.0.56 → mcli_framework-8.0.58}/src/mcli/workflow/sync/__init__.py +0 -0
- {mcli_framework-8.0.56 → mcli_framework-8.0.58}/src/mcli/workflow/sync/test_cmd.py +0 -0
- {mcli_framework-8.0.56 → mcli_framework-8.0.58}/src/mcli/workflow/videos/__init__.py +0 -0
- {mcli_framework-8.0.56 → mcli_framework-8.0.58}/src/mcli/workflow/wakatime/__init__.py +0 -0
- {mcli_framework-8.0.56 → mcli_framework-8.0.58}/src/mcli/workflow/wakatime/wakatime.py +0 -0
- {mcli_framework-8.0.56 → mcli_framework-8.0.58}/src/mcli/workflow/workflow.py +0 -0
- {mcli_framework-8.0.56 → mcli_framework-8.0.58}/src/mcli_framework.egg-info/dependency_links.txt +0 -0
- {mcli_framework-8.0.56 → mcli_framework-8.0.58}/src/mcli_framework.egg-info/entry_points.txt +0 -0
- {mcli_framework-8.0.56 → mcli_framework-8.0.58}/src/mcli_framework.egg-info/requires.txt +0 -0
- {mcli_framework-8.0.56 → mcli_framework-8.0.58}/src/mcli_framework.egg-info/top_level.txt +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: mcli-framework
|
|
3
|
-
Version: 8.0.
|
|
3
|
+
Version: 8.0.58
|
|
4
4
|
Summary: Portable workflow framework - transform any script into a versioned, schedulable command. Store in ~/.mcli/workflows/, version with lockfile, run as daemon or cron job.
|
|
5
5
|
Author-email: Luis Fernandez de la Vara <luis@lefv.io>
|
|
6
6
|
Maintainer-email: Luis Fernandez de la Vara <luis@lefv.io>
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
[project]
|
|
2
2
|
name = "mcli-framework"
|
|
3
|
-
version = "8.0.
|
|
3
|
+
version = "8.0.58"
|
|
4
4
|
description = "Portable workflow framework - transform any script into a versioned, schedulable command. Store in ~/.mcli/workflows/, version with lockfile, run as daemon or cron job."
|
|
5
5
|
readme = "README.md"
|
|
6
6
|
requires-python = ">=3.10"
|
|
@@ -141,7 +141,7 @@ def restore_command_state(hash_value):
|
|
|
141
141
|
|
|
142
142
|
|
|
143
143
|
# On CLI startup, check and update lockfile if needed
|
|
144
|
-
# NOTE: The commands group
|
|
144
|
+
# NOTE: The commands group was removed in the v8.0.0 CLI simplification
|
|
145
145
|
|
|
146
146
|
|
|
147
147
|
def check_and_update_command_lockfile():
|
|
@@ -217,7 +217,7 @@ def {name}_command(name: str = "World"):
|
|
|
217
217
|
return template
|
|
218
218
|
|
|
219
219
|
|
|
220
|
-
# NOTE: search command
|
|
220
|
+
# NOTE: search command was removed in the v8.0.0 CLI simplification
|
|
221
221
|
|
|
222
222
|
|
|
223
223
|
def collect_commands() -> list[dict[str, Any]]:
|
|
@@ -471,7 +471,7 @@ logger = get_logger()
|
|
|
471
471
|
pass
|
|
472
472
|
|
|
473
473
|
|
|
474
|
-
# NOTE: extract-workflow-commands
|
|
474
|
+
# NOTE: extract-workflow-commands was removed in the v8.0.0 CLI simplification
|
|
475
475
|
|
|
476
476
|
|
|
477
477
|
@self_app.command("version")
|
|
@@ -800,7 +800,7 @@ try:
|
|
|
800
800
|
except ImportError as e:
|
|
801
801
|
logger.debug(f"Could not load release-notes command: {e}")
|
|
802
802
|
|
|
803
|
-
# NOTE: store command
|
|
803
|
+
# NOTE: store command was removed in the v8.0.0 CLI simplification
|
|
804
804
|
|
|
805
805
|
# This part is important to make the command available to the CLI
|
|
806
806
|
if __name__ == "__main__":
|
|
@@ -0,0 +1,242 @@
|
|
|
1
|
+
"""Run `act` locally and classify the outcome for the PR gate."""
|
|
2
|
+
|
|
3
|
+
from __future__ import annotations
|
|
4
|
+
|
|
5
|
+
import platform
|
|
6
|
+
import shutil
|
|
7
|
+
import subprocess
|
|
8
|
+
import sys
|
|
9
|
+
import time
|
|
10
|
+
from enum import Enum
|
|
11
|
+
from pathlib import Path
|
|
12
|
+
|
|
13
|
+
# Docker Hub returns these when the unauthenticated image-pull rate limit is hit.
|
|
14
|
+
# act surfaces them while pulling the runner image — this is an environment
|
|
15
|
+
# problem, NOT a test failure, so it must not hard-block a push.
|
|
16
|
+
_RATE_LIMIT_MARKERS = (
|
|
17
|
+
"toomanyrequests",
|
|
18
|
+
"you have reached your unauthenticated pull rate limit",
|
|
19
|
+
"pull rate limit",
|
|
20
|
+
)
|
|
21
|
+
|
|
22
|
+
# act emits this when no job matches the requested event (e.g. a
|
|
23
|
+
# workflow_dispatch-only workflow queried for pull_request). That is a no-op,
|
|
24
|
+
# not a failure, so the gate must treat it as PASS rather than block the push.
|
|
25
|
+
_NO_STAGES_MARKERS = ("could not find any stages to run",)
|
|
26
|
+
|
|
27
|
+
# Backoff (seconds) between docker rate-limit retries; the last value repeats.
|
|
28
|
+
_RETRY_BACKOFF = (15, 45)
|
|
29
|
+
_MAX_RETRIES = 2
|
|
30
|
+
|
|
31
|
+
# Canonical CI entrypoint created by `mcli ci migrate`: ci.yml's `primary` job
|
|
32
|
+
# runs on `workflow_dispatch` and calls the reusable `_ci-jobs.yml` with the
|
|
33
|
+
# `runner_labels` input. The reusable workflow CANNOT run standalone (its
|
|
34
|
+
# `runs-on: ${{ fromJSON(inputs.runner_labels) }}` has no value), so preflight
|
|
35
|
+
# must drive it through this caller.
|
|
36
|
+
_DISPATCH_WORKFLOW = Path(".github/workflows/ci.yml")
|
|
37
|
+
_DISPATCH_JOB = "primary"
|
|
38
|
+
|
|
39
|
+
|
|
40
|
+
class PreflightResult(Enum):
|
|
41
|
+
PASS = "pass"
|
|
42
|
+
FAIL = "fail"
|
|
43
|
+
UNREACHABLE = "unreachable"
|
|
44
|
+
|
|
45
|
+
|
|
46
|
+
def _is_docker_rate_limited(output: str) -> bool:
|
|
47
|
+
low = (output or "").lower()
|
|
48
|
+
return any(marker in low for marker in _RATE_LIMIT_MARKERS)
|
|
49
|
+
|
|
50
|
+
|
|
51
|
+
def _has_no_stages(output: str) -> bool:
|
|
52
|
+
low = (output or "").lower()
|
|
53
|
+
return any(marker in low for marker in _NO_STAGES_MARKERS)
|
|
54
|
+
|
|
55
|
+
|
|
56
|
+
def act_available() -> bool:
|
|
57
|
+
return shutil.which("act") is not None
|
|
58
|
+
|
|
59
|
+
|
|
60
|
+
# Preferred over act when present: a repo-defined `make ci-native` target runs
|
|
61
|
+
# the same gates directly on the host toolchain. On Apple-silicon (and any host
|
|
62
|
+
# without nested-virt) act's amd64 emulation under podman is flaky for heavy
|
|
63
|
+
# jobs (container-vanish races, action-clone failures), so a native run is both
|
|
64
|
+
# faster and more reliable. Repos opt in simply by defining the target.
|
|
65
|
+
_NATIVE_GATE = "ci-native"
|
|
66
|
+
|
|
67
|
+
|
|
68
|
+
def native_gate_available() -> bool:
|
|
69
|
+
"""True if the repo defines a `make ci-native` target (preferred over act)."""
|
|
70
|
+
try:
|
|
71
|
+
proc = subprocess.run(
|
|
72
|
+
["make", "-n", _NATIVE_GATE], capture_output=True, text=True, timeout=30
|
|
73
|
+
)
|
|
74
|
+
return proc.returncode == 0
|
|
75
|
+
except (FileNotFoundError, subprocess.TimeoutExpired):
|
|
76
|
+
return False
|
|
77
|
+
|
|
78
|
+
|
|
79
|
+
def run_native() -> PreflightResult:
|
|
80
|
+
"""Run the repo's native gate (`make ci-native`) on the host. PASS on exit 0,
|
|
81
|
+
FAIL otherwise. Output streams straight to the terminal (these runs are long;
|
|
82
|
+
no need to buffer)."""
|
|
83
|
+
proc = subprocess.run(["make", _NATIVE_GATE])
|
|
84
|
+
return PreflightResult.PASS if proc.returncode == 0 else PreflightResult.FAIL
|
|
85
|
+
|
|
86
|
+
|
|
87
|
+
def docker_running() -> bool:
|
|
88
|
+
try:
|
|
89
|
+
proc = subprocess.run(["docker", "info"], capture_output=True, timeout=30)
|
|
90
|
+
return proc.returncode == 0
|
|
91
|
+
except (FileNotFoundError, subprocess.TimeoutExpired):
|
|
92
|
+
return False
|
|
93
|
+
|
|
94
|
+
|
|
95
|
+
def probe() -> bool:
|
|
96
|
+
"""Can act actually run here? Needs the binary, a live docker daemon, and `act -l`."""
|
|
97
|
+
if not act_available() or not docker_running():
|
|
98
|
+
return False
|
|
99
|
+
try:
|
|
100
|
+
proc = subprocess.run(["act", "-l"], capture_output=True, text=True, timeout=60)
|
|
101
|
+
except (FileNotFoundError, subprocess.TimeoutExpired):
|
|
102
|
+
return False
|
|
103
|
+
return proc.returncode == 0
|
|
104
|
+
|
|
105
|
+
|
|
106
|
+
def default_container_arch() -> str | None:
|
|
107
|
+
"""`--container-architecture` value for the host, or None to let act decide.
|
|
108
|
+
|
|
109
|
+
act's runner images are amd64. On Apple-silicon (darwin/arm64) act warns and
|
|
110
|
+
misbehaves unless told to emulate amd64, so force it; native amd64 Linux
|
|
111
|
+
needs nothing.
|
|
112
|
+
"""
|
|
113
|
+
if sys.platform == "darwin" and platform.machine() in ("arm64", "aarch64"):
|
|
114
|
+
return "linux/amd64"
|
|
115
|
+
return None
|
|
116
|
+
|
|
117
|
+
|
|
118
|
+
def dispatch_entrypoint() -> tuple[str, str] | None:
|
|
119
|
+
"""The canonical (workflow, job) to drive via `workflow_dispatch`, or None."""
|
|
120
|
+
if _DISPATCH_WORKFLOW.exists():
|
|
121
|
+
return (str(_DISPATCH_WORKFLOW), _DISPATCH_JOB)
|
|
122
|
+
return None
|
|
123
|
+
|
|
124
|
+
|
|
125
|
+
def build_act_command(
|
|
126
|
+
event: str,
|
|
127
|
+
workflow: str | None = None,
|
|
128
|
+
job: str | None = None,
|
|
129
|
+
arch: str | None = None,
|
|
130
|
+
) -> list[str]:
|
|
131
|
+
cmd = ["act", event]
|
|
132
|
+
if workflow is not None:
|
|
133
|
+
cmd += ["-W", workflow]
|
|
134
|
+
if job is not None:
|
|
135
|
+
cmd += ["-j", job]
|
|
136
|
+
if arch is not None:
|
|
137
|
+
cmd += ["--container-architecture", arch]
|
|
138
|
+
if Path(".secrets").exists():
|
|
139
|
+
cmd += ["--secret-file", ".secrets"]
|
|
140
|
+
return cmd
|
|
141
|
+
|
|
142
|
+
|
|
143
|
+
def _run_with_retries(
|
|
144
|
+
cmd: list[str], retries: int, backoff: tuple[int, ...]
|
|
145
|
+
) -> tuple[PreflightResult, str]:
|
|
146
|
+
"""Run one act command, retrying on Docker Hub rate limits. Returns the
|
|
147
|
+
classified result plus the combined output (so the caller can detect the
|
|
148
|
+
'no stages' no-op and decide whether to fall back)."""
|
|
149
|
+
attempt = 0
|
|
150
|
+
while True:
|
|
151
|
+
proc = subprocess.run(cmd, capture_output=True, text=True)
|
|
152
|
+
output = (proc.stdout or "") + (proc.stderr or "")
|
|
153
|
+
if output:
|
|
154
|
+
sys.stdout.write(output if output.endswith("\n") else output + "\n")
|
|
155
|
+
|
|
156
|
+
if proc.returncode == 0:
|
|
157
|
+
return PreflightResult.PASS, output
|
|
158
|
+
|
|
159
|
+
# No job matches this event (e.g. workflow_dispatch-only). PASS here is
|
|
160
|
+
# provisional — run_act decides whether a dispatch fallback exists.
|
|
161
|
+
if _has_no_stages(output):
|
|
162
|
+
return PreflightResult.PASS, output
|
|
163
|
+
|
|
164
|
+
if _is_docker_rate_limited(output):
|
|
165
|
+
if attempt < retries:
|
|
166
|
+
delay = backoff[min(attempt, len(backoff) - 1)]
|
|
167
|
+
sys.stdout.write(
|
|
168
|
+
f"⚠️ Docker Hub rate limit (toomanyrequests); retrying in {delay}s "
|
|
169
|
+
f"(attempt {attempt + 1}/{retries})…\n"
|
|
170
|
+
)
|
|
171
|
+
time.sleep(delay)
|
|
172
|
+
attempt += 1
|
|
173
|
+
continue
|
|
174
|
+
sys.stdout.write(
|
|
175
|
+
"⚠️ Docker Hub still rate-limited after retries — cannot validate "
|
|
176
|
+
"locally; allowing push (run `mcli ci preflight` again later).\n"
|
|
177
|
+
)
|
|
178
|
+
return PreflightResult.UNREACHABLE, output
|
|
179
|
+
|
|
180
|
+
return PreflightResult.FAIL, output
|
|
181
|
+
|
|
182
|
+
|
|
183
|
+
def run_act(
|
|
184
|
+
event: str = "pull_request",
|
|
185
|
+
retries: int = _MAX_RETRIES,
|
|
186
|
+
backoff: tuple[int, ...] = _RETRY_BACKOFF,
|
|
187
|
+
) -> PreflightResult:
|
|
188
|
+
"""Run act for `event` and classify the outcome.
|
|
189
|
+
|
|
190
|
+
- exit 0 -> PASS.
|
|
191
|
+
- non-zero whose output shows a Docker Hub pull rate limit
|
|
192
|
+
(``toomanyrequests``) -> retried; if still limited, UNREACHABLE.
|
|
193
|
+
- any other non-zero exit -> FAIL.
|
|
194
|
+
|
|
195
|
+
Migrated repos are ``workflow_dispatch``-only, so the default
|
|
196
|
+
``pull_request`` event matches no jobs. Rather than hollow-pass, fall back
|
|
197
|
+
to the canonical ``ci.yml`` ``primary`` job on ``workflow_dispatch`` (which
|
|
198
|
+
drives the reusable ``_ci-jobs.yml``) and validate for real.
|
|
199
|
+
"""
|
|
200
|
+
arch = default_container_arch()
|
|
201
|
+
result, output = _run_with_retries(build_act_command(event, arch=arch), retries, backoff)
|
|
202
|
+
|
|
203
|
+
if result == PreflightResult.PASS and _has_no_stages(output):
|
|
204
|
+
entry = dispatch_entrypoint()
|
|
205
|
+
if entry is None:
|
|
206
|
+
sys.stdout.write(
|
|
207
|
+
"ℹ️ No act stages for this event and no ci.yml dispatch "
|
|
208
|
+
"entrypoint — nothing to validate; treating as pass.\n"
|
|
209
|
+
)
|
|
210
|
+
return PreflightResult.PASS
|
|
211
|
+
workflow, job = entry
|
|
212
|
+
sys.stdout.write(
|
|
213
|
+
f"ℹ️ No '{event}' stages (workflow_dispatch-only); running "
|
|
214
|
+
f"{workflow} -j {job} via workflow_dispatch…\n"
|
|
215
|
+
)
|
|
216
|
+
result, output = _run_with_retries(
|
|
217
|
+
build_act_command("workflow_dispatch", workflow=workflow, job=job, arch=arch),
|
|
218
|
+
retries,
|
|
219
|
+
backoff,
|
|
220
|
+
)
|
|
221
|
+
# If even the dispatch entrypoint has no stages, it's a genuine no-op.
|
|
222
|
+
if result == PreflightResult.PASS and _has_no_stages(output):
|
|
223
|
+
return PreflightResult.PASS
|
|
224
|
+
|
|
225
|
+
return result
|
|
226
|
+
|
|
227
|
+
|
|
228
|
+
def preflight(repo_slug: str, event: str = "pull_request") -> PreflightResult:
|
|
229
|
+
"""Primary gate. PASS/FAIL if act can run; UNREACHABLE if act can't start here.
|
|
230
|
+
|
|
231
|
+
`repo_slug` is accepted for symmetry and future use; the runner fallback is
|
|
232
|
+
orchestrated by the CLI layer based on runner_status.has_online_runner.
|
|
233
|
+
|
|
234
|
+
Prefers a repo-defined native gate (`make ci-native`) over act: it runs the
|
|
235
|
+
same checks on the host toolchain, avoiding act's flaky container emulation.
|
|
236
|
+
"""
|
|
237
|
+
if native_gate_available():
|
|
238
|
+
sys.stdout.write("▶ Native CI gate found — running `make ci-native` (no act)…\n")
|
|
239
|
+
return run_native()
|
|
240
|
+
if not probe():
|
|
241
|
+
return PreflightResult.UNREACHABLE
|
|
242
|
+
return run_act(event)
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: mcli-framework
|
|
3
|
-
Version: 8.0.
|
|
3
|
+
Version: 8.0.58
|
|
4
4
|
Summary: Portable workflow framework - transform any script into a versioned, schedulable command. Store in ~/.mcli/workflows/, 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>
|
|
@@ -15,22 +15,17 @@ src/mcli/__init__.py
|
|
|
15
15
|
src/mcli/__main__.py
|
|
16
16
|
src/mcli/config.toml
|
|
17
17
|
src/mcli/app/__init__.py
|
|
18
|
-
src/mcli/app/commands_cmd.py
|
|
19
18
|
src/mcli/app/completion_helpers.py
|
|
20
19
|
src/mcli/app/context_cmd.py
|
|
21
|
-
src/mcli/app/create_cmd.py
|
|
22
20
|
src/mcli/app/delete_cmd.py
|
|
23
21
|
src/mcli/app/edit_cmd.py
|
|
24
22
|
src/mcli/app/import_cmd.py
|
|
25
23
|
src/mcli/app/init_cmd.py
|
|
26
24
|
src/mcli/app/list_cmd.py
|
|
27
25
|
src/mcli/app/main.py
|
|
28
|
-
src/mcli/app/migrate_cmd.py
|
|
29
26
|
src/mcli/app/model_cmd.py
|
|
30
27
|
src/mcli/app/mv_cmd.py
|
|
31
28
|
src/mcli/app/new_cmd.py
|
|
32
|
-
src/mcli/app/remove_cmd.py
|
|
33
|
-
src/mcli/app/rm_cmd.py
|
|
34
29
|
src/mcli/app/search_cmd.py
|
|
35
30
|
src/mcli/app/services_cmd.py
|
|
36
31
|
src/mcli/app/setup_cmd.py
|