mcli-framework 8.0.58__tar.gz → 8.0.60__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.
Files changed (237) hide show
  1. {mcli_framework-8.0.58/src/mcli_framework.egg-info → mcli_framework-8.0.60}/PKG-INFO +1 -1
  2. {mcli_framework-8.0.58 → mcli_framework-8.0.60}/pyproject.toml +1 -1
  3. {mcli_framework-8.0.58 → mcli_framework-8.0.60}/src/mcli/lib/constants/messages.py +1 -0
  4. {mcli_framework-8.0.58 → mcli_framework-8.0.60}/src/mcli/lib/constants/paths.py +6 -0
  5. {mcli_framework-8.0.58 → mcli_framework-8.0.60}/src/mcli/lib/pyenv/deps.py +20 -0
  6. {mcli_framework-8.0.58 → mcli_framework-8.0.60}/src/mcli/lib/pyenv/manager.py +11 -7
  7. {mcli_framework-8.0.58 → mcli_framework-8.0.60}/src/mcli/lib/pyenv/venv.py +6 -2
  8. {mcli_framework-8.0.58 → mcli_framework-8.0.60/src/mcli_framework.egg-info}/PKG-INFO +1 -1
  9. {mcli_framework-8.0.58 → mcli_framework-8.0.60}/LICENSE +0 -0
  10. {mcli_framework-8.0.58 → mcli_framework-8.0.60}/MANIFEST.in +0 -0
  11. {mcli_framework-8.0.58 → mcli_framework-8.0.60}/README.md +0 -0
  12. {mcli_framework-8.0.58 → mcli_framework-8.0.60}/llms-full.txt +0 -0
  13. {mcli_framework-8.0.58 → mcli_framework-8.0.60}/llms.txt +0 -0
  14. {mcli_framework-8.0.58 → mcli_framework-8.0.60}/mcli_rust/Cargo.toml +0 -0
  15. {mcli_framework-8.0.58 → mcli_framework-8.0.60}/mcli_rust/src/command_parser.rs +0 -0
  16. {mcli_framework-8.0.58 → mcli_framework-8.0.60}/mcli_rust/src/file_watcher.rs +0 -0
  17. {mcli_framework-8.0.58 → mcli_framework-8.0.60}/mcli_rust/src/lib.rs +0 -0
  18. {mcli_framework-8.0.58 → mcli_framework-8.0.60}/mcli_rust/src/process_manager.rs +0 -0
  19. {mcli_framework-8.0.58 → mcli_framework-8.0.60}/mcli_rust/src/tfidf.rs +0 -0
  20. {mcli_framework-8.0.58 → mcli_framework-8.0.60}/setup.cfg +0 -0
  21. {mcli_framework-8.0.58 → mcli_framework-8.0.60}/src/mcli/__init__.py +0 -0
  22. {mcli_framework-8.0.58 → mcli_framework-8.0.60}/src/mcli/__main__.py +0 -0
  23. {mcli_framework-8.0.58 → mcli_framework-8.0.60}/src/mcli/app/__init__.py +0 -0
  24. {mcli_framework-8.0.58 → mcli_framework-8.0.60}/src/mcli/app/completion_helpers.py +0 -0
  25. {mcli_framework-8.0.58 → mcli_framework-8.0.60}/src/mcli/app/context_cmd.py +0 -0
  26. {mcli_framework-8.0.58 → mcli_framework-8.0.60}/src/mcli/app/delete_cmd.py +0 -0
  27. {mcli_framework-8.0.58 → mcli_framework-8.0.60}/src/mcli/app/edit_cmd.py +0 -0
  28. {mcli_framework-8.0.58 → mcli_framework-8.0.60}/src/mcli/app/import_cmd.py +0 -0
  29. {mcli_framework-8.0.58 → mcli_framework-8.0.60}/src/mcli/app/init_cmd.py +0 -0
  30. {mcli_framework-8.0.58 → mcli_framework-8.0.60}/src/mcli/app/list_cmd.py +0 -0
  31. {mcli_framework-8.0.58 → mcli_framework-8.0.60}/src/mcli/app/main.py +0 -0
  32. {mcli_framework-8.0.58 → mcli_framework-8.0.60}/src/mcli/app/model/__init__.py +0 -0
  33. {mcli_framework-8.0.58 → mcli_framework-8.0.60}/src/mcli/app/model/model.py +0 -0
  34. {mcli_framework-8.0.58 → mcli_framework-8.0.60}/src/mcli/app/model_cmd.py +0 -0
  35. {mcli_framework-8.0.58 → mcli_framework-8.0.60}/src/mcli/app/mv_cmd.py +0 -0
  36. {mcli_framework-8.0.58 → mcli_framework-8.0.60}/src/mcli/app/new_cmd.py +0 -0
  37. {mcli_framework-8.0.58 → mcli_framework-8.0.60}/src/mcli/app/search_cmd.py +0 -0
  38. {mcli_framework-8.0.58 → mcli_framework-8.0.60}/src/mcli/app/services_cmd.py +0 -0
  39. {mcli_framework-8.0.58 → mcli_framework-8.0.60}/src/mcli/app/setup_cmd.py +0 -0
  40. {mcli_framework-8.0.58 → mcli_framework-8.0.60}/src/mcli/app/source_sync_cmd.py +0 -0
  41. {mcli_framework-8.0.58 → mcli_framework-8.0.60}/src/mcli/app/sync_cmd.py +0 -0
  42. {mcli_framework-8.0.58 → mcli_framework-8.0.60}/src/mcli/app/video/__init__.py +0 -0
  43. {mcli_framework-8.0.58 → mcli_framework-8.0.60}/src/mcli/app/video/video.py +0 -0
  44. {mcli_framework-8.0.58 → mcli_framework-8.0.60}/src/mcli/config.toml +0 -0
  45. {mcli_framework-8.0.58 → mcli_framework-8.0.60}/src/mcli/lib/__init__.py +0 -0
  46. {mcli_framework-8.0.58 → mcli_framework-8.0.60}/src/mcli/lib/api/__init__.py +0 -0
  47. {mcli_framework-8.0.58 → mcli_framework-8.0.60}/src/mcli/lib/api/api.py +0 -0
  48. {mcli_framework-8.0.58 → mcli_framework-8.0.60}/src/mcli/lib/api/daemon_client.py +0 -0
  49. {mcli_framework-8.0.58 → mcli_framework-8.0.60}/src/mcli/lib/api/daemon_client_local.py +0 -0
  50. {mcli_framework-8.0.58 → mcli_framework-8.0.60}/src/mcli/lib/api/daemon_decorator.py +0 -0
  51. {mcli_framework-8.0.58 → mcli_framework-8.0.60}/src/mcli/lib/api/mcli_decorators.py +0 -0
  52. {mcli_framework-8.0.58 → mcli_framework-8.0.60}/src/mcli/lib/auth/__init__.py +0 -0
  53. {mcli_framework-8.0.58 → mcli_framework-8.0.60}/src/mcli/lib/auth/auth.py +0 -0
  54. {mcli_framework-8.0.58 → mcli_framework-8.0.60}/src/mcli/lib/auth/aws_manager.py +0 -0
  55. {mcli_framework-8.0.58 → mcli_framework-8.0.60}/src/mcli/lib/auth/azure_manager.py +0 -0
  56. {mcli_framework-8.0.58 → mcli_framework-8.0.60}/src/mcli/lib/auth/credential_manager.py +0 -0
  57. {mcli_framework-8.0.58 → mcli_framework-8.0.60}/src/mcli/lib/auth/gcp_manager.py +0 -0
  58. {mcli_framework-8.0.58 → mcli_framework-8.0.60}/src/mcli/lib/auth/key_manager.py +0 -0
  59. {mcli_framework-8.0.58 → mcli_framework-8.0.60}/src/mcli/lib/auth/mcli_manager.py +0 -0
  60. {mcli_framework-8.0.58 → mcli_framework-8.0.60}/src/mcli/lib/auth/token_manager.py +0 -0
  61. {mcli_framework-8.0.58 → mcli_framework-8.0.60}/src/mcli/lib/auth/token_util.py +0 -0
  62. {mcli_framework-8.0.58 → mcli_framework-8.0.60}/src/mcli/lib/config/__init__.py +0 -0
  63. {mcli_framework-8.0.58 → mcli_framework-8.0.60}/src/mcli/lib/config/config.py +0 -0
  64. {mcli_framework-8.0.58 → mcli_framework-8.0.60}/src/mcli/lib/config/settings.py +0 -0
  65. {mcli_framework-8.0.58 → mcli_framework-8.0.60}/src/mcli/lib/constants/__init__.py +0 -0
  66. {mcli_framework-8.0.58 → mcli_framework-8.0.60}/src/mcli/lib/constants/commands.py +0 -0
  67. {mcli_framework-8.0.58 → mcli_framework-8.0.60}/src/mcli/lib/constants/defaults.py +0 -0
  68. {mcli_framework-8.0.58 → mcli_framework-8.0.60}/src/mcli/lib/constants/env.py +0 -0
  69. {mcli_framework-8.0.58 → mcli_framework-8.0.60}/src/mcli/lib/constants/scripts.py +0 -0
  70. {mcli_framework-8.0.58 → mcli_framework-8.0.60}/src/mcli/lib/constants/storage.py +0 -0
  71. {mcli_framework-8.0.58 → mcli_framework-8.0.60}/src/mcli/lib/custom_commands.py +0 -0
  72. {mcli_framework-8.0.58 → mcli_framework-8.0.60}/src/mcli/lib/discovery/__init__.py +0 -0
  73. {mcli_framework-8.0.58 → mcli_framework-8.0.60}/src/mcli/lib/discovery/command_discovery.py +0 -0
  74. {mcli_framework-8.0.58 → mcli_framework-8.0.60}/src/mcli/lib/erd/__init__.py +0 -0
  75. {mcli_framework-8.0.58 → mcli_framework-8.0.60}/src/mcli/lib/erd/erd.py +0 -0
  76. {mcli_framework-8.0.58 → mcli_framework-8.0.60}/src/mcli/lib/erd/generate_graph.py +0 -0
  77. {mcli_framework-8.0.58 → mcli_framework-8.0.60}/src/mcli/lib/errors.py +0 -0
  78. {mcli_framework-8.0.58 → mcli_framework-8.0.60}/src/mcli/lib/feature_detection.py +0 -0
  79. {mcli_framework-8.0.58 → mcli_framework-8.0.60}/src/mcli/lib/files/__init__.py +0 -0
  80. {mcli_framework-8.0.58 → mcli_framework-8.0.60}/src/mcli/lib/files/files.py +0 -0
  81. {mcli_framework-8.0.58 → mcli_framework-8.0.60}/src/mcli/lib/folder_workflows.py +0 -0
  82. {mcli_framework-8.0.58 → mcli_framework-8.0.60}/src/mcli/lib/fs/__init__.py +0 -0
  83. {mcli_framework-8.0.58 → mcli_framework-8.0.60}/src/mcli/lib/fs/fs.py +0 -0
  84. {mcli_framework-8.0.58 → mcli_framework-8.0.60}/src/mcli/lib/ipfs_sync.py +0 -0
  85. {mcli_framework-8.0.58 → mcli_framework-8.0.60}/src/mcli/lib/ipfs_utils.py +0 -0
  86. {mcli_framework-8.0.58 → mcli_framework-8.0.60}/src/mcli/lib/ipns_manager.py +0 -0
  87. {mcli_framework-8.0.58 → mcli_framework-8.0.60}/src/mcli/lib/lib.py +0 -0
  88. {mcli_framework-8.0.58 → mcli_framework-8.0.60}/src/mcli/lib/logger/__init__.py +0 -0
  89. {mcli_framework-8.0.58 → mcli_framework-8.0.60}/src/mcli/lib/logger/correlation.py +0 -0
  90. {mcli_framework-8.0.58 → mcli_framework-8.0.60}/src/mcli/lib/logger/logger.py +0 -0
  91. {mcli_framework-8.0.58 → mcli_framework-8.0.60}/src/mcli/lib/logger/structured.py +0 -0
  92. {mcli_framework-8.0.58 → mcli_framework-8.0.60}/src/mcli/lib/optional_deps.py +0 -0
  93. {mcli_framework-8.0.58 → mcli_framework-8.0.60}/src/mcli/lib/paths.py +0 -0
  94. {mcli_framework-8.0.58 → mcli_framework-8.0.60}/src/mcli/lib/performance/__init__.py +0 -0
  95. {mcli_framework-8.0.58 → mcli_framework-8.0.60}/src/mcli/lib/performance/optimizer.py +0 -0
  96. {mcli_framework-8.0.58 → mcli_framework-8.0.60}/src/mcli/lib/performance/rust_bridge.py +0 -0
  97. {mcli_framework-8.0.58 → mcli_framework-8.0.60}/src/mcli/lib/performance/uvloop_config.py +0 -0
  98. {mcli_framework-8.0.58 → mcli_framework-8.0.60}/src/mcli/lib/pickles/__init__.py +0 -0
  99. {mcli_framework-8.0.58 → mcli_framework-8.0.60}/src/mcli/lib/pickles/pickles.py +0 -0
  100. {mcli_framework-8.0.58 → mcli_framework-8.0.60}/src/mcli/lib/pyenv/__init__.py +0 -0
  101. {mcli_framework-8.0.58 → mcli_framework-8.0.60}/src/mcli/lib/script_loader.py +0 -0
  102. {mcli_framework-8.0.58 → mcli_framework-8.0.60}/src/mcli/lib/script_sync.py +0 -0
  103. {mcli_framework-8.0.58 → mcli_framework-8.0.60}/src/mcli/lib/script_watcher.py +0 -0
  104. {mcli_framework-8.0.58 → mcli_framework-8.0.60}/src/mcli/lib/search/cached_vectorizer.py +0 -0
  105. {mcli_framework-8.0.58 → mcli_framework-8.0.60}/src/mcli/lib/secrets/__init__.py +0 -0
  106. {mcli_framework-8.0.58 → mcli_framework-8.0.60}/src/mcli/lib/secrets/commands.py +0 -0
  107. {mcli_framework-8.0.58 → mcli_framework-8.0.60}/src/mcli/lib/secrets/manager.py +0 -0
  108. {mcli_framework-8.0.58 → mcli_framework-8.0.60}/src/mcli/lib/secrets/repl.py +0 -0
  109. {mcli_framework-8.0.58 → mcli_framework-8.0.60}/src/mcli/lib/secrets/store.py +0 -0
  110. {mcli_framework-8.0.58 → mcli_framework-8.0.60}/src/mcli/lib/services/__init__.py +0 -0
  111. {mcli_framework-8.0.58 → mcli_framework-8.0.60}/src/mcli/lib/services/config.py +0 -0
  112. {mcli_framework-8.0.58 → mcli_framework-8.0.60}/src/mcli/lib/services/data_pipeline.py +0 -0
  113. {mcli_framework-8.0.58 → mcli_framework-8.0.60}/src/mcli/lib/services/health.py +0 -0
  114. {mcli_framework-8.0.58 → mcli_framework-8.0.60}/src/mcli/lib/services/lsh_client.py +0 -0
  115. {mcli_framework-8.0.58 → mcli_framework-8.0.60}/src/mcli/lib/services/manager.py +0 -0
  116. {mcli_framework-8.0.58 → mcli_framework-8.0.60}/src/mcli/lib/services/redis_service.py +0 -0
  117. {mcli_framework-8.0.58 → mcli_framework-8.0.60}/src/mcli/lib/services/registry.py +0 -0
  118. {mcli_framework-8.0.58 → mcli_framework-8.0.60}/src/mcli/lib/services/state.py +0 -0
  119. {mcli_framework-8.0.58 → mcli_framework-8.0.60}/src/mcli/lib/services/supervisor.py +0 -0
  120. {mcli_framework-8.0.58 → mcli_framework-8.0.60}/src/mcli/lib/shell/__init__.py +0 -0
  121. {mcli_framework-8.0.58 → mcli_framework-8.0.60}/src/mcli/lib/shell/exceptions.py +0 -0
  122. {mcli_framework-8.0.58 → mcli_framework-8.0.60}/src/mcli/lib/shell/shell.py +0 -0
  123. {mcli_framework-8.0.58 → mcli_framework-8.0.60}/src/mcli/lib/sync_key_store.py +0 -0
  124. {mcli_framework-8.0.58 → mcli_framework-8.0.60}/src/mcli/lib/templates/__init__.py +0 -0
  125. {mcli_framework-8.0.58 → mcli_framework-8.0.60}/src/mcli/lib/templates/command_templates.py +0 -0
  126. {mcli_framework-8.0.58 → mcli_framework-8.0.60}/src/mcli/lib/toml/__init__.py +0 -0
  127. {mcli_framework-8.0.58 → mcli_framework-8.0.60}/src/mcli/lib/toml/toml.py +0 -0
  128. {mcli_framework-8.0.58 → mcli_framework-8.0.60}/src/mcli/lib/types.py +0 -0
  129. {mcli_framework-8.0.58 → mcli_framework-8.0.60}/src/mcli/lib/ui/styling.py +0 -0
  130. {mcli_framework-8.0.58 → mcli_framework-8.0.60}/src/mcli/lib/ui/visual_effects.py +0 -0
  131. {mcli_framework-8.0.58 → mcli_framework-8.0.60}/src/mcli/lib/watcher/__init__.py +0 -0
  132. {mcli_framework-8.0.58 → mcli_framework-8.0.60}/src/mcli/lib/watcher/watcher.py +0 -0
  133. {mcli_framework-8.0.58 → mcli_framework-8.0.60}/src/mcli/lib/workflow_models.py +0 -0
  134. {mcli_framework-8.0.58 → mcli_framework-8.0.60}/src/mcli/lib/workspace_registry.py +0 -0
  135. {mcli_framework-8.0.58 → mcli_framework-8.0.60}/src/mcli/mygroup/__init__.py +0 -0
  136. {mcli_framework-8.0.58 → mcli_framework-8.0.60}/src/mcli/mygroup/test_cmd.py +0 -0
  137. {mcli_framework-8.0.58 → mcli_framework-8.0.60}/src/mcli/public/__init__.py +0 -0
  138. {mcli_framework-8.0.58 → mcli_framework-8.0.60}/src/mcli/public/commands/__init__.py +0 -0
  139. {mcli_framework-8.0.58 → mcli_framework-8.0.60}/src/mcli/public/oi/oi.py +0 -0
  140. {mcli_framework-8.0.58 → mcli_framework-8.0.60}/src/mcli/public/public.py +0 -0
  141. {mcli_framework-8.0.58 → mcli_framework-8.0.60}/src/mcli/self/__init__.py +0 -0
  142. {mcli_framework-8.0.58 → mcli_framework-8.0.60}/src/mcli/self/completion_cmd.py +0 -0
  143. {mcli_framework-8.0.58 → mcli_framework-8.0.60}/src/mcli/self/env_cmd.py +0 -0
  144. {mcli_framework-8.0.58 → mcli_framework-8.0.60}/src/mcli/self/health_cmd.py +0 -0
  145. {mcli_framework-8.0.58 → mcli_framework-8.0.60}/src/mcli/self/ipfs_cmd.py +0 -0
  146. {mcli_framework-8.0.58 → mcli_framework-8.0.60}/src/mcli/self/logs_cmd.py +0 -0
  147. {mcli_framework-8.0.58 → mcli_framework-8.0.60}/src/mcli/self/migrate_cmd.py +0 -0
  148. {mcli_framework-8.0.58 → mcli_framework-8.0.60}/src/mcli/self/release_notes_cmd.py +0 -0
  149. {mcli_framework-8.0.58 → mcli_framework-8.0.60}/src/mcli/self/self_cmd.py +0 -0
  150. {mcli_framework-8.0.58 → mcli_framework-8.0.60}/src/mcli/self/store_cmd.py +0 -0
  151. {mcli_framework-8.0.58 → mcli_framework-8.0.60}/src/mcli/self/test_cmd.py +0 -0
  152. {mcli_framework-8.0.58 → mcli_framework-8.0.60}/src/mcli/self/workflows_cmd.py +0 -0
  153. {mcli_framework-8.0.58 → mcli_framework-8.0.60}/src/mcli/storage/__init__.py +0 -0
  154. {mcli_framework-8.0.58 → mcli_framework-8.0.60}/src/mcli/storage/backends/__init__.py +0 -0
  155. {mcli_framework-8.0.58 → mcli_framework-8.0.60}/src/mcli/storage/backends/ipfs_backend.py +0 -0
  156. {mcli_framework-8.0.58 → mcli_framework-8.0.60}/src/mcli/storage/base.py +0 -0
  157. {mcli_framework-8.0.58 → mcli_framework-8.0.60}/src/mcli/storage/cache.py +0 -0
  158. {mcli_framework-8.0.58 → mcli_framework-8.0.60}/src/mcli/storage/encryption.py +0 -0
  159. {mcli_framework-8.0.58 → mcli_framework-8.0.60}/src/mcli/storage/factory.py +0 -0
  160. {mcli_framework-8.0.58 → mcli_framework-8.0.60}/src/mcli/storage/registry.py +0 -0
  161. {mcli_framework-8.0.58 → mcli_framework-8.0.60}/src/mcli/storage/storacha_cli.py +0 -0
  162. {mcli_framework-8.0.58 → mcli_framework-8.0.60}/src/mcli/workflow/__init__.py +0 -0
  163. {mcli_framework-8.0.58 → mcli_framework-8.0.60}/src/mcli/workflow/ci/__init__.py +0 -0
  164. {mcli_framework-8.0.58 → mcli_framework-8.0.60}/src/mcli/workflow/ci/act_runner.py +0 -0
  165. {mcli_framework-8.0.58 → mcli_framework-8.0.60}/src/mcli/workflow/ci/ci.py +0 -0
  166. {mcli_framework-8.0.58 → mcli_framework-8.0.60}/src/mcli/workflow/ci/runner_status.py +0 -0
  167. {mcli_framework-8.0.58 → mcli_framework-8.0.60}/src/mcli/workflow/ci/workflow_transform.py +0 -0
  168. {mcli_framework-8.0.58 → mcli_framework-8.0.60}/src/mcli/workflow/daemon/__init__.py +0 -0
  169. {mcli_framework-8.0.58 → mcli_framework-8.0.60}/src/mcli/workflow/daemon/async_command_database.py +0 -0
  170. {mcli_framework-8.0.58 → mcli_framework-8.0.60}/src/mcli/workflow/daemon/async_process_manager.py +0 -0
  171. {mcli_framework-8.0.58 → mcli_framework-8.0.60}/src/mcli/workflow/daemon/client.py +0 -0
  172. {mcli_framework-8.0.58 → mcli_framework-8.0.60}/src/mcli/workflow/daemon/daemon.py +0 -0
  173. {mcli_framework-8.0.58 → mcli_framework-8.0.60}/src/mcli/workflow/daemon/daemon_api.py +0 -0
  174. {mcli_framework-8.0.58 → mcli_framework-8.0.60}/src/mcli/workflow/daemon/enhanced_daemon.py +0 -0
  175. {mcli_framework-8.0.58 → mcli_framework-8.0.60}/src/mcli/workflow/daemon/process_cli.py +0 -0
  176. {mcli_framework-8.0.58 → mcli_framework-8.0.60}/src/mcli/workflow/daemon/process_manager.py +0 -0
  177. {mcli_framework-8.0.58 → mcli_framework-8.0.60}/src/mcli/workflow/daemon/test_daemon.py +0 -0
  178. {mcli_framework-8.0.58 → mcli_framework-8.0.60}/src/mcli/workflow/doc_convert.py +0 -0
  179. {mcli_framework-8.0.58 → mcli_framework-8.0.60}/src/mcli/workflow/docker/__init__.py +0 -0
  180. {mcli_framework-8.0.58 → mcli_framework-8.0.60}/src/mcli/workflow/docker/docker.py +0 -0
  181. {mcli_framework-8.0.58 → mcli_framework-8.0.60}/src/mcli/workflow/file/__init__.py +0 -0
  182. {mcli_framework-8.0.58 → mcli_framework-8.0.60}/src/mcli/workflow/gcloud/__init__.py +0 -0
  183. {mcli_framework-8.0.58 → mcli_framework-8.0.60}/src/mcli/workflow/gcloud/config.toml +0 -0
  184. {mcli_framework-8.0.58 → mcli_framework-8.0.60}/src/mcli/workflow/gcloud/gcloud.py +0 -0
  185. {mcli_framework-8.0.58 → mcli_framework-8.0.60}/src/mcli/workflow/git_commit/__init__.py +0 -0
  186. {mcli_framework-8.0.58 → mcli_framework-8.0.60}/src/mcli/workflow/git_commit/ai_service.py +0 -0
  187. {mcli_framework-8.0.58 → mcli_framework-8.0.60}/src/mcli/workflow/interview/__init__.py +0 -0
  188. {mcli_framework-8.0.58 → mcli_framework-8.0.60}/src/mcli/workflow/lsh_integration.py +0 -0
  189. {mcli_framework-8.0.58 → mcli_framework-8.0.60}/src/mcli/workflow/model_service/client.py +0 -0
  190. {mcli_framework-8.0.58 → mcli_framework-8.0.60}/src/mcli/workflow/model_service/download_and_run_efficient_models.py +0 -0
  191. {mcli_framework-8.0.58 → mcli_framework-8.0.60}/src/mcli/workflow/model_service/lightweight_embedder.py +0 -0
  192. {mcli_framework-8.0.58 → mcli_framework-8.0.60}/src/mcli/workflow/model_service/lightweight_model_server.py +0 -0
  193. {mcli_framework-8.0.58 → mcli_framework-8.0.60}/src/mcli/workflow/model_service/lightweight_test.py +0 -0
  194. {mcli_framework-8.0.58 → mcli_framework-8.0.60}/src/mcli/workflow/model_service/model_service.py +0 -0
  195. {mcli_framework-8.0.58 → mcli_framework-8.0.60}/src/mcli/workflow/model_service/ollama_efficient_runner.py +0 -0
  196. {mcli_framework-8.0.58 → mcli_framework-8.0.60}/src/mcli/workflow/model_service/openai_adapter.py +0 -0
  197. {mcli_framework-8.0.58 → mcli_framework-8.0.60}/src/mcli/workflow/model_service/pdf_processor.py +0 -0
  198. {mcli_framework-8.0.58 → mcli_framework-8.0.60}/src/mcli/workflow/model_service/test_efficient_runner.py +0 -0
  199. {mcli_framework-8.0.58 → mcli_framework-8.0.60}/src/mcli/workflow/model_service/test_example.py +0 -0
  200. {mcli_framework-8.0.58 → mcli_framework-8.0.60}/src/mcli/workflow/model_service/test_integration.py +0 -0
  201. {mcli_framework-8.0.58 → mcli_framework-8.0.60}/src/mcli/workflow/model_service/test_new_features.py +0 -0
  202. {mcli_framework-8.0.58 → mcli_framework-8.0.60}/src/mcli/workflow/notebook/__init__.py +0 -0
  203. {mcli_framework-8.0.58 → mcli_framework-8.0.60}/src/mcli/workflow/notebook/command_loader.py +0 -0
  204. {mcli_framework-8.0.58 → mcli_framework-8.0.60}/src/mcli/workflow/notebook/converter.py +0 -0
  205. {mcli_framework-8.0.58 → mcli_framework-8.0.60}/src/mcli/workflow/notebook/executor.py +0 -0
  206. {mcli_framework-8.0.58 → mcli_framework-8.0.60}/src/mcli/workflow/notebook/notebook_cmd.py +0 -0
  207. {mcli_framework-8.0.58 → mcli_framework-8.0.60}/src/mcli/workflow/notebook/schema.py +0 -0
  208. {mcli_framework-8.0.58 → mcli_framework-8.0.60}/src/mcli/workflow/notebook/validator.py +0 -0
  209. {mcli_framework-8.0.58 → mcli_framework-8.0.60}/src/mcli/workflow/openai/openai.py +0 -0
  210. {mcli_framework-8.0.58 → mcli_framework-8.0.60}/src/mcli/workflow/registry/__init__.py +0 -0
  211. {mcli_framework-8.0.58 → mcli_framework-8.0.60}/src/mcli/workflow/registry/registry.py +0 -0
  212. {mcli_framework-8.0.58 → mcli_framework-8.0.60}/src/mcli/workflow/repo/__init__.py +0 -0
  213. {mcli_framework-8.0.58 → mcli_framework-8.0.60}/src/mcli/workflow/repo/repo.py +0 -0
  214. {mcli_framework-8.0.58 → mcli_framework-8.0.60}/src/mcli/workflow/scheduler/__init__.py +0 -0
  215. {mcli_framework-8.0.58 → mcli_framework-8.0.60}/src/mcli/workflow/scheduler/cron_parser.py +0 -0
  216. {mcli_framework-8.0.58 → mcli_framework-8.0.60}/src/mcli/workflow/scheduler/job.py +0 -0
  217. {mcli_framework-8.0.58 → mcli_framework-8.0.60}/src/mcli/workflow/scheduler/models.py +0 -0
  218. {mcli_framework-8.0.58 → mcli_framework-8.0.60}/src/mcli/workflow/scheduler/monitor.py +0 -0
  219. {mcli_framework-8.0.58 → mcli_framework-8.0.60}/src/mcli/workflow/scheduler/persistence.py +0 -0
  220. {mcli_framework-8.0.58 → mcli_framework-8.0.60}/src/mcli/workflow/scheduler/scheduler.py +0 -0
  221. {mcli_framework-8.0.58 → mcli_framework-8.0.60}/src/mcli/workflow/scheduler/validation.py +0 -0
  222. {mcli_framework-8.0.58 → mcli_framework-8.0.60}/src/mcli/workflow/search/__init__.py +0 -0
  223. {mcli_framework-8.0.58 → mcli_framework-8.0.60}/src/mcli/workflow/secrets/__init__.py +0 -0
  224. {mcli_framework-8.0.58 → mcli_framework-8.0.60}/src/mcli/workflow/secrets/secrets_cmd.py +0 -0
  225. {mcli_framework-8.0.58 → mcli_framework-8.0.60}/src/mcli/workflow/storage/__init__.py +0 -0
  226. {mcli_framework-8.0.58 → mcli_framework-8.0.60}/src/mcli/workflow/storage/storage_cmd.py +0 -0
  227. {mcli_framework-8.0.58 → mcli_framework-8.0.60}/src/mcli/workflow/sync/__init__.py +0 -0
  228. {mcli_framework-8.0.58 → mcli_framework-8.0.60}/src/mcli/workflow/sync/test_cmd.py +0 -0
  229. {mcli_framework-8.0.58 → mcli_framework-8.0.60}/src/mcli/workflow/videos/__init__.py +0 -0
  230. {mcli_framework-8.0.58 → mcli_framework-8.0.60}/src/mcli/workflow/wakatime/__init__.py +0 -0
  231. {mcli_framework-8.0.58 → mcli_framework-8.0.60}/src/mcli/workflow/wakatime/wakatime.py +0 -0
  232. {mcli_framework-8.0.58 → mcli_framework-8.0.60}/src/mcli/workflow/workflow.py +0 -0
  233. {mcli_framework-8.0.58 → mcli_framework-8.0.60}/src/mcli_framework.egg-info/SOURCES.txt +0 -0
  234. {mcli_framework-8.0.58 → mcli_framework-8.0.60}/src/mcli_framework.egg-info/dependency_links.txt +0 -0
  235. {mcli_framework-8.0.58 → mcli_framework-8.0.60}/src/mcli_framework.egg-info/entry_points.txt +0 -0
  236. {mcli_framework-8.0.58 → mcli_framework-8.0.60}/src/mcli_framework.egg-info/requires.txt +0 -0
  237. {mcli_framework-8.0.58 → mcli_framework-8.0.60}/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.58
3
+ Version: 8.0.60
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.58"
3
+ version = "8.0.60"
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"
@@ -1124,6 +1124,7 @@ class VenvMessages:
1124
1124
  USING_SYSTEM_PYTHON_ENV_SET = "Using system Python (MCLI_USE_SYSTEM_PYTHON set)"
1125
1125
  CREATING_GLOBAL_VENV = "Creating global MCLI venv at {path}..."
1126
1126
  GLOBAL_VENV_CREATED = "Created global MCLI venv at {path}"
1127
+ GLOBAL_VENV_ALREADY_EXISTS = "Global venv already exists at {path}"
1127
1128
 
1128
1129
  # Dependency messages
1129
1130
  NO_DEPS_SPECIFIED = "No dependencies specified"
@@ -101,5 +101,11 @@ class VenvPaths:
101
101
  PYTHON_UNIX = "python"
102
102
  PYTHON_WINDOWS = "python.exe"
103
103
 
104
+ # Framework runtime primitives that mcli python workflows assume are
105
+ # importable. The generated script templates `import click` unconditionally,
106
+ # so an isolated (bare) global venv must be seeded with these even when a
107
+ # script omits them from its @requires metadata.
108
+ BASE_RUNTIME_PACKAGES = ["click"]
109
+
104
110
 
105
111
  __all__ = ["DirNames", "FileNames", "PathPatterns", "GitIgnorePatterns", "VenvPaths"]
@@ -75,6 +75,26 @@ class DependencyChecker:
75
75
 
76
76
  return installed, missing
77
77
 
78
+ def merge_base_runtime(self, packages: List[str], base: List[str]) -> List[str]:
79
+ """Append base runtime packages that are not already declared.
80
+
81
+ Comparison is by normalized package name, so a declared spec like
82
+ ``click>=8.0`` or ``Click`` suppresses adding the bare ``click`` base.
83
+
84
+ Args:
85
+ packages: Packages already requested (from @requires).
86
+ base: Base runtime packages to ensure are present.
87
+
88
+ Returns:
89
+ ``packages`` plus any base package whose normalized name is absent.
90
+ """
91
+ have = {self._normalize_package_name(self._extract_package_name(p)) for p in packages}
92
+ merged = list(packages)
93
+ for pkg in base:
94
+ if self._normalize_package_name(self._extract_package_name(pkg)) not in have:
95
+ merged.append(pkg)
96
+ return merged
97
+
78
98
  def install_packages(self, packages: List[str], venv_path: Path) -> bool:
79
99
  """Install packages using uv pip install.
80
100
 
@@ -12,7 +12,7 @@ from typing import Dict, List, Optional, Tuple
12
12
 
13
13
  import click
14
14
 
15
- from mcli.lib.constants import EnvVars, VenvMessages
15
+ from mcli.lib.constants import EnvVars, VenvMessages, VenvPaths
16
16
  from mcli.lib.logger import get_logger
17
17
 
18
18
  from .deps import DependencyChecker
@@ -119,10 +119,6 @@ class PyEnvManager:
119
119
  Returns:
120
120
  True if all dependencies are satisfied or installed.
121
121
  """
122
- if not requires:
123
- logger.debug(VenvMessages.NO_DEPS_SPECIFIED)
124
- return True
125
-
126
122
  venv_path, source = self.resolve_environment()
127
123
 
128
124
  # Ensure the venv exists (create global venv if needed)
@@ -132,8 +128,16 @@ class PyEnvManager:
132
128
  python_exe = self.get_python_executable()
133
129
  checker = DependencyChecker(python_exe)
134
130
 
135
- # Parse and check dependencies
136
- packages = checker.parse_requires(requires)
131
+ # Parse declared dependencies, then ensure framework runtime primitives
132
+ # (e.g. click) are present even when @requires is empty — an isolated
133
+ # global venv is created bare and mcli workflow scripts import click.
134
+ packages = checker.parse_requires(requires) if requires else []
135
+ packages = checker.merge_base_runtime(packages, VenvPaths.BASE_RUNTIME_PACKAGES)
136
+
137
+ if not packages:
138
+ logger.debug(VenvMessages.NO_DEPS_SPECIFIED)
139
+ return True
140
+
137
141
  logger.debug(VenvMessages.CHECKING_DEPS.format(script=script_name))
138
142
 
139
143
  installed, missing = checker.check_installed(packages)
@@ -67,7 +67,7 @@ class VenvManager:
67
67
  venv_path = self.get_global_venv_path()
68
68
 
69
69
  if venv_path.is_dir() and self._is_valid_venv(venv_path):
70
- logger.debug(f"Global venv already exists at {venv_path}")
70
+ logger.debug(VenvMessages.GLOBAL_VENV_ALREADY_EXISTS.format(path=venv_path))
71
71
  return venv_path
72
72
 
73
73
  logger.info(VenvMessages.CREATING_GLOBAL_VENV.format(path=venv_path))
@@ -95,8 +95,12 @@ class VenvManager:
95
95
  venv_path.parent.mkdir(parents=True, exist_ok=True)
96
96
 
97
97
  try:
98
+ # --clear recreates over an existing directory. ensure_global_venv()
99
+ # only calls this when no *valid* venv exists, so a directory present
100
+ # here is stale/partial (e.g. pyvenv.cfg but no bin/python). Without
101
+ # --clear, uv aborts with "A virtual environment already exists".
98
102
  result = subprocess.run(
99
- ["uv", "venv", str(venv_path)],
103
+ ["uv", "venv", "--clear", str(venv_path)],
100
104
  capture_output=True,
101
105
  text=True,
102
106
  timeout=60,
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: mcli-framework
3
- Version: 8.0.58
3
+ Version: 8.0.60
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>
File without changes