mcli-framework 8.0.56__tar.gz → 8.0.57__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 (242) hide show
  1. {mcli_framework-8.0.56/src/mcli_framework.egg-info → mcli_framework-8.0.57}/PKG-INFO +1 -1
  2. {mcli_framework-8.0.56 → mcli_framework-8.0.57}/pyproject.toml +1 -1
  3. {mcli_framework-8.0.56 → mcli_framework-8.0.57}/src/mcli/self/self_cmd.py +4 -4
  4. {mcli_framework-8.0.56 → mcli_framework-8.0.57}/src/mcli/workflow/ci/act_runner.py +98 -29
  5. {mcli_framework-8.0.56 → mcli_framework-8.0.57/src/mcli_framework.egg-info}/PKG-INFO +1 -1
  6. {mcli_framework-8.0.56 → mcli_framework-8.0.57}/src/mcli_framework.egg-info/SOURCES.txt +0 -5
  7. mcli_framework-8.0.56/src/mcli/app/commands_cmd.py +0 -1994
  8. mcli_framework-8.0.56/src/mcli/app/create_cmd.py +0 -442
  9. mcli_framework-8.0.56/src/mcli/app/migrate_cmd.py +0 -395
  10. mcli_framework-8.0.56/src/mcli/app/remove_cmd.py +0 -60
  11. mcli_framework-8.0.56/src/mcli/app/rm_cmd.py +0 -107
  12. {mcli_framework-8.0.56 → mcli_framework-8.0.57}/LICENSE +0 -0
  13. {mcli_framework-8.0.56 → mcli_framework-8.0.57}/MANIFEST.in +0 -0
  14. {mcli_framework-8.0.56 → mcli_framework-8.0.57}/README.md +0 -0
  15. {mcli_framework-8.0.56 → mcli_framework-8.0.57}/llms-full.txt +0 -0
  16. {mcli_framework-8.0.56 → mcli_framework-8.0.57}/llms.txt +0 -0
  17. {mcli_framework-8.0.56 → mcli_framework-8.0.57}/mcli_rust/Cargo.toml +0 -0
  18. {mcli_framework-8.0.56 → mcli_framework-8.0.57}/mcli_rust/src/command_parser.rs +0 -0
  19. {mcli_framework-8.0.56 → mcli_framework-8.0.57}/mcli_rust/src/file_watcher.rs +0 -0
  20. {mcli_framework-8.0.56 → mcli_framework-8.0.57}/mcli_rust/src/lib.rs +0 -0
  21. {mcli_framework-8.0.56 → mcli_framework-8.0.57}/mcli_rust/src/process_manager.rs +0 -0
  22. {mcli_framework-8.0.56 → mcli_framework-8.0.57}/mcli_rust/src/tfidf.rs +0 -0
  23. {mcli_framework-8.0.56 → mcli_framework-8.0.57}/setup.cfg +0 -0
  24. {mcli_framework-8.0.56 → mcli_framework-8.0.57}/src/mcli/__init__.py +0 -0
  25. {mcli_framework-8.0.56 → mcli_framework-8.0.57}/src/mcli/__main__.py +0 -0
  26. {mcli_framework-8.0.56 → mcli_framework-8.0.57}/src/mcli/app/__init__.py +0 -0
  27. {mcli_framework-8.0.56 → mcli_framework-8.0.57}/src/mcli/app/completion_helpers.py +0 -0
  28. {mcli_framework-8.0.56 → mcli_framework-8.0.57}/src/mcli/app/context_cmd.py +0 -0
  29. {mcli_framework-8.0.56 → mcli_framework-8.0.57}/src/mcli/app/delete_cmd.py +0 -0
  30. {mcli_framework-8.0.56 → mcli_framework-8.0.57}/src/mcli/app/edit_cmd.py +0 -0
  31. {mcli_framework-8.0.56 → mcli_framework-8.0.57}/src/mcli/app/import_cmd.py +0 -0
  32. {mcli_framework-8.0.56 → mcli_framework-8.0.57}/src/mcli/app/init_cmd.py +0 -0
  33. {mcli_framework-8.0.56 → mcli_framework-8.0.57}/src/mcli/app/list_cmd.py +0 -0
  34. {mcli_framework-8.0.56 → mcli_framework-8.0.57}/src/mcli/app/main.py +0 -0
  35. {mcli_framework-8.0.56 → mcli_framework-8.0.57}/src/mcli/app/model/__init__.py +0 -0
  36. {mcli_framework-8.0.56 → mcli_framework-8.0.57}/src/mcli/app/model/model.py +0 -0
  37. {mcli_framework-8.0.56 → mcli_framework-8.0.57}/src/mcli/app/model_cmd.py +0 -0
  38. {mcli_framework-8.0.56 → mcli_framework-8.0.57}/src/mcli/app/mv_cmd.py +0 -0
  39. {mcli_framework-8.0.56 → mcli_framework-8.0.57}/src/mcli/app/new_cmd.py +0 -0
  40. {mcli_framework-8.0.56 → mcli_framework-8.0.57}/src/mcli/app/search_cmd.py +0 -0
  41. {mcli_framework-8.0.56 → mcli_framework-8.0.57}/src/mcli/app/services_cmd.py +0 -0
  42. {mcli_framework-8.0.56 → mcli_framework-8.0.57}/src/mcli/app/setup_cmd.py +0 -0
  43. {mcli_framework-8.0.56 → mcli_framework-8.0.57}/src/mcli/app/source_sync_cmd.py +0 -0
  44. {mcli_framework-8.0.56 → mcli_framework-8.0.57}/src/mcli/app/sync_cmd.py +0 -0
  45. {mcli_framework-8.0.56 → mcli_framework-8.0.57}/src/mcli/app/video/__init__.py +0 -0
  46. {mcli_framework-8.0.56 → mcli_framework-8.0.57}/src/mcli/app/video/video.py +0 -0
  47. {mcli_framework-8.0.56 → mcli_framework-8.0.57}/src/mcli/config.toml +0 -0
  48. {mcli_framework-8.0.56 → mcli_framework-8.0.57}/src/mcli/lib/__init__.py +0 -0
  49. {mcli_framework-8.0.56 → mcli_framework-8.0.57}/src/mcli/lib/api/__init__.py +0 -0
  50. {mcli_framework-8.0.56 → mcli_framework-8.0.57}/src/mcli/lib/api/api.py +0 -0
  51. {mcli_framework-8.0.56 → mcli_framework-8.0.57}/src/mcli/lib/api/daemon_client.py +0 -0
  52. {mcli_framework-8.0.56 → mcli_framework-8.0.57}/src/mcli/lib/api/daemon_client_local.py +0 -0
  53. {mcli_framework-8.0.56 → mcli_framework-8.0.57}/src/mcli/lib/api/daemon_decorator.py +0 -0
  54. {mcli_framework-8.0.56 → mcli_framework-8.0.57}/src/mcli/lib/api/mcli_decorators.py +0 -0
  55. {mcli_framework-8.0.56 → mcli_framework-8.0.57}/src/mcli/lib/auth/__init__.py +0 -0
  56. {mcli_framework-8.0.56 → mcli_framework-8.0.57}/src/mcli/lib/auth/auth.py +0 -0
  57. {mcli_framework-8.0.56 → mcli_framework-8.0.57}/src/mcli/lib/auth/aws_manager.py +0 -0
  58. {mcli_framework-8.0.56 → mcli_framework-8.0.57}/src/mcli/lib/auth/azure_manager.py +0 -0
  59. {mcli_framework-8.0.56 → mcli_framework-8.0.57}/src/mcli/lib/auth/credential_manager.py +0 -0
  60. {mcli_framework-8.0.56 → mcli_framework-8.0.57}/src/mcli/lib/auth/gcp_manager.py +0 -0
  61. {mcli_framework-8.0.56 → mcli_framework-8.0.57}/src/mcli/lib/auth/key_manager.py +0 -0
  62. {mcli_framework-8.0.56 → mcli_framework-8.0.57}/src/mcli/lib/auth/mcli_manager.py +0 -0
  63. {mcli_framework-8.0.56 → mcli_framework-8.0.57}/src/mcli/lib/auth/token_manager.py +0 -0
  64. {mcli_framework-8.0.56 → mcli_framework-8.0.57}/src/mcli/lib/auth/token_util.py +0 -0
  65. {mcli_framework-8.0.56 → mcli_framework-8.0.57}/src/mcli/lib/config/__init__.py +0 -0
  66. {mcli_framework-8.0.56 → mcli_framework-8.0.57}/src/mcli/lib/config/config.py +0 -0
  67. {mcli_framework-8.0.56 → mcli_framework-8.0.57}/src/mcli/lib/config/settings.py +0 -0
  68. {mcli_framework-8.0.56 → mcli_framework-8.0.57}/src/mcli/lib/constants/__init__.py +0 -0
  69. {mcli_framework-8.0.56 → mcli_framework-8.0.57}/src/mcli/lib/constants/commands.py +0 -0
  70. {mcli_framework-8.0.56 → mcli_framework-8.0.57}/src/mcli/lib/constants/defaults.py +0 -0
  71. {mcli_framework-8.0.56 → mcli_framework-8.0.57}/src/mcli/lib/constants/env.py +0 -0
  72. {mcli_framework-8.0.56 → mcli_framework-8.0.57}/src/mcli/lib/constants/messages.py +0 -0
  73. {mcli_framework-8.0.56 → mcli_framework-8.0.57}/src/mcli/lib/constants/paths.py +0 -0
  74. {mcli_framework-8.0.56 → mcli_framework-8.0.57}/src/mcli/lib/constants/scripts.py +0 -0
  75. {mcli_framework-8.0.56 → mcli_framework-8.0.57}/src/mcli/lib/constants/storage.py +0 -0
  76. {mcli_framework-8.0.56 → mcli_framework-8.0.57}/src/mcli/lib/custom_commands.py +0 -0
  77. {mcli_framework-8.0.56 → mcli_framework-8.0.57}/src/mcli/lib/discovery/__init__.py +0 -0
  78. {mcli_framework-8.0.56 → mcli_framework-8.0.57}/src/mcli/lib/discovery/command_discovery.py +0 -0
  79. {mcli_framework-8.0.56 → mcli_framework-8.0.57}/src/mcli/lib/erd/__init__.py +0 -0
  80. {mcli_framework-8.0.56 → mcli_framework-8.0.57}/src/mcli/lib/erd/erd.py +0 -0
  81. {mcli_framework-8.0.56 → mcli_framework-8.0.57}/src/mcli/lib/erd/generate_graph.py +0 -0
  82. {mcli_framework-8.0.56 → mcli_framework-8.0.57}/src/mcli/lib/errors.py +0 -0
  83. {mcli_framework-8.0.56 → mcli_framework-8.0.57}/src/mcli/lib/feature_detection.py +0 -0
  84. {mcli_framework-8.0.56 → mcli_framework-8.0.57}/src/mcli/lib/files/__init__.py +0 -0
  85. {mcli_framework-8.0.56 → mcli_framework-8.0.57}/src/mcli/lib/files/files.py +0 -0
  86. {mcli_framework-8.0.56 → mcli_framework-8.0.57}/src/mcli/lib/folder_workflows.py +0 -0
  87. {mcli_framework-8.0.56 → mcli_framework-8.0.57}/src/mcli/lib/fs/__init__.py +0 -0
  88. {mcli_framework-8.0.56 → mcli_framework-8.0.57}/src/mcli/lib/fs/fs.py +0 -0
  89. {mcli_framework-8.0.56 → mcli_framework-8.0.57}/src/mcli/lib/ipfs_sync.py +0 -0
  90. {mcli_framework-8.0.56 → mcli_framework-8.0.57}/src/mcli/lib/ipfs_utils.py +0 -0
  91. {mcli_framework-8.0.56 → mcli_framework-8.0.57}/src/mcli/lib/ipns_manager.py +0 -0
  92. {mcli_framework-8.0.56 → mcli_framework-8.0.57}/src/mcli/lib/lib.py +0 -0
  93. {mcli_framework-8.0.56 → mcli_framework-8.0.57}/src/mcli/lib/logger/__init__.py +0 -0
  94. {mcli_framework-8.0.56 → mcli_framework-8.0.57}/src/mcli/lib/logger/correlation.py +0 -0
  95. {mcli_framework-8.0.56 → mcli_framework-8.0.57}/src/mcli/lib/logger/logger.py +0 -0
  96. {mcli_framework-8.0.56 → mcli_framework-8.0.57}/src/mcli/lib/logger/structured.py +0 -0
  97. {mcli_framework-8.0.56 → mcli_framework-8.0.57}/src/mcli/lib/optional_deps.py +0 -0
  98. {mcli_framework-8.0.56 → mcli_framework-8.0.57}/src/mcli/lib/paths.py +0 -0
  99. {mcli_framework-8.0.56 → mcli_framework-8.0.57}/src/mcli/lib/performance/__init__.py +0 -0
  100. {mcli_framework-8.0.56 → mcli_framework-8.0.57}/src/mcli/lib/performance/optimizer.py +0 -0
  101. {mcli_framework-8.0.56 → mcli_framework-8.0.57}/src/mcli/lib/performance/rust_bridge.py +0 -0
  102. {mcli_framework-8.0.56 → mcli_framework-8.0.57}/src/mcli/lib/performance/uvloop_config.py +0 -0
  103. {mcli_framework-8.0.56 → mcli_framework-8.0.57}/src/mcli/lib/pickles/__init__.py +0 -0
  104. {mcli_framework-8.0.56 → mcli_framework-8.0.57}/src/mcli/lib/pickles/pickles.py +0 -0
  105. {mcli_framework-8.0.56 → mcli_framework-8.0.57}/src/mcli/lib/pyenv/__init__.py +0 -0
  106. {mcli_framework-8.0.56 → mcli_framework-8.0.57}/src/mcli/lib/pyenv/deps.py +0 -0
  107. {mcli_framework-8.0.56 → mcli_framework-8.0.57}/src/mcli/lib/pyenv/manager.py +0 -0
  108. {mcli_framework-8.0.56 → mcli_framework-8.0.57}/src/mcli/lib/pyenv/venv.py +0 -0
  109. {mcli_framework-8.0.56 → mcli_framework-8.0.57}/src/mcli/lib/script_loader.py +0 -0
  110. {mcli_framework-8.0.56 → mcli_framework-8.0.57}/src/mcli/lib/script_sync.py +0 -0
  111. {mcli_framework-8.0.56 → mcli_framework-8.0.57}/src/mcli/lib/script_watcher.py +0 -0
  112. {mcli_framework-8.0.56 → mcli_framework-8.0.57}/src/mcli/lib/search/cached_vectorizer.py +0 -0
  113. {mcli_framework-8.0.56 → mcli_framework-8.0.57}/src/mcli/lib/secrets/__init__.py +0 -0
  114. {mcli_framework-8.0.56 → mcli_framework-8.0.57}/src/mcli/lib/secrets/commands.py +0 -0
  115. {mcli_framework-8.0.56 → mcli_framework-8.0.57}/src/mcli/lib/secrets/manager.py +0 -0
  116. {mcli_framework-8.0.56 → mcli_framework-8.0.57}/src/mcli/lib/secrets/repl.py +0 -0
  117. {mcli_framework-8.0.56 → mcli_framework-8.0.57}/src/mcli/lib/secrets/store.py +0 -0
  118. {mcli_framework-8.0.56 → mcli_framework-8.0.57}/src/mcli/lib/services/__init__.py +0 -0
  119. {mcli_framework-8.0.56 → mcli_framework-8.0.57}/src/mcli/lib/services/config.py +0 -0
  120. {mcli_framework-8.0.56 → mcli_framework-8.0.57}/src/mcli/lib/services/data_pipeline.py +0 -0
  121. {mcli_framework-8.0.56 → mcli_framework-8.0.57}/src/mcli/lib/services/health.py +0 -0
  122. {mcli_framework-8.0.56 → mcli_framework-8.0.57}/src/mcli/lib/services/lsh_client.py +0 -0
  123. {mcli_framework-8.0.56 → mcli_framework-8.0.57}/src/mcli/lib/services/manager.py +0 -0
  124. {mcli_framework-8.0.56 → mcli_framework-8.0.57}/src/mcli/lib/services/redis_service.py +0 -0
  125. {mcli_framework-8.0.56 → mcli_framework-8.0.57}/src/mcli/lib/services/registry.py +0 -0
  126. {mcli_framework-8.0.56 → mcli_framework-8.0.57}/src/mcli/lib/services/state.py +0 -0
  127. {mcli_framework-8.0.56 → mcli_framework-8.0.57}/src/mcli/lib/services/supervisor.py +0 -0
  128. {mcli_framework-8.0.56 → mcli_framework-8.0.57}/src/mcli/lib/shell/__init__.py +0 -0
  129. {mcli_framework-8.0.56 → mcli_framework-8.0.57}/src/mcli/lib/shell/exceptions.py +0 -0
  130. {mcli_framework-8.0.56 → mcli_framework-8.0.57}/src/mcli/lib/shell/shell.py +0 -0
  131. {mcli_framework-8.0.56 → mcli_framework-8.0.57}/src/mcli/lib/sync_key_store.py +0 -0
  132. {mcli_framework-8.0.56 → mcli_framework-8.0.57}/src/mcli/lib/templates/__init__.py +0 -0
  133. {mcli_framework-8.0.56 → mcli_framework-8.0.57}/src/mcli/lib/templates/command_templates.py +0 -0
  134. {mcli_framework-8.0.56 → mcli_framework-8.0.57}/src/mcli/lib/toml/__init__.py +0 -0
  135. {mcli_framework-8.0.56 → mcli_framework-8.0.57}/src/mcli/lib/toml/toml.py +0 -0
  136. {mcli_framework-8.0.56 → mcli_framework-8.0.57}/src/mcli/lib/types.py +0 -0
  137. {mcli_framework-8.0.56 → mcli_framework-8.0.57}/src/mcli/lib/ui/styling.py +0 -0
  138. {mcli_framework-8.0.56 → mcli_framework-8.0.57}/src/mcli/lib/ui/visual_effects.py +0 -0
  139. {mcli_framework-8.0.56 → mcli_framework-8.0.57}/src/mcli/lib/watcher/__init__.py +0 -0
  140. {mcli_framework-8.0.56 → mcli_framework-8.0.57}/src/mcli/lib/watcher/watcher.py +0 -0
  141. {mcli_framework-8.0.56 → mcli_framework-8.0.57}/src/mcli/lib/workflow_models.py +0 -0
  142. {mcli_framework-8.0.56 → mcli_framework-8.0.57}/src/mcli/lib/workspace_registry.py +0 -0
  143. {mcli_framework-8.0.56 → mcli_framework-8.0.57}/src/mcli/mygroup/__init__.py +0 -0
  144. {mcli_framework-8.0.56 → mcli_framework-8.0.57}/src/mcli/mygroup/test_cmd.py +0 -0
  145. {mcli_framework-8.0.56 → mcli_framework-8.0.57}/src/mcli/public/__init__.py +0 -0
  146. {mcli_framework-8.0.56 → mcli_framework-8.0.57}/src/mcli/public/commands/__init__.py +0 -0
  147. {mcli_framework-8.0.56 → mcli_framework-8.0.57}/src/mcli/public/oi/oi.py +0 -0
  148. {mcli_framework-8.0.56 → mcli_framework-8.0.57}/src/mcli/public/public.py +0 -0
  149. {mcli_framework-8.0.56 → mcli_framework-8.0.57}/src/mcli/self/__init__.py +0 -0
  150. {mcli_framework-8.0.56 → mcli_framework-8.0.57}/src/mcli/self/completion_cmd.py +0 -0
  151. {mcli_framework-8.0.56 → mcli_framework-8.0.57}/src/mcli/self/env_cmd.py +0 -0
  152. {mcli_framework-8.0.56 → mcli_framework-8.0.57}/src/mcli/self/health_cmd.py +0 -0
  153. {mcli_framework-8.0.56 → mcli_framework-8.0.57}/src/mcli/self/ipfs_cmd.py +0 -0
  154. {mcli_framework-8.0.56 → mcli_framework-8.0.57}/src/mcli/self/logs_cmd.py +0 -0
  155. {mcli_framework-8.0.56 → mcli_framework-8.0.57}/src/mcli/self/migrate_cmd.py +0 -0
  156. {mcli_framework-8.0.56 → mcli_framework-8.0.57}/src/mcli/self/release_notes_cmd.py +0 -0
  157. {mcli_framework-8.0.56 → mcli_framework-8.0.57}/src/mcli/self/store_cmd.py +0 -0
  158. {mcli_framework-8.0.56 → mcli_framework-8.0.57}/src/mcli/self/test_cmd.py +0 -0
  159. {mcli_framework-8.0.56 → mcli_framework-8.0.57}/src/mcli/self/workflows_cmd.py +0 -0
  160. {mcli_framework-8.0.56 → mcli_framework-8.0.57}/src/mcli/storage/__init__.py +0 -0
  161. {mcli_framework-8.0.56 → mcli_framework-8.0.57}/src/mcli/storage/backends/__init__.py +0 -0
  162. {mcli_framework-8.0.56 → mcli_framework-8.0.57}/src/mcli/storage/backends/ipfs_backend.py +0 -0
  163. {mcli_framework-8.0.56 → mcli_framework-8.0.57}/src/mcli/storage/base.py +0 -0
  164. {mcli_framework-8.0.56 → mcli_framework-8.0.57}/src/mcli/storage/cache.py +0 -0
  165. {mcli_framework-8.0.56 → mcli_framework-8.0.57}/src/mcli/storage/encryption.py +0 -0
  166. {mcli_framework-8.0.56 → mcli_framework-8.0.57}/src/mcli/storage/factory.py +0 -0
  167. {mcli_framework-8.0.56 → mcli_framework-8.0.57}/src/mcli/storage/registry.py +0 -0
  168. {mcli_framework-8.0.56 → mcli_framework-8.0.57}/src/mcli/storage/storacha_cli.py +0 -0
  169. {mcli_framework-8.0.56 → mcli_framework-8.0.57}/src/mcli/workflow/__init__.py +0 -0
  170. {mcli_framework-8.0.56 → mcli_framework-8.0.57}/src/mcli/workflow/ci/__init__.py +0 -0
  171. {mcli_framework-8.0.56 → mcli_framework-8.0.57}/src/mcli/workflow/ci/ci.py +0 -0
  172. {mcli_framework-8.0.56 → mcli_framework-8.0.57}/src/mcli/workflow/ci/runner_status.py +0 -0
  173. {mcli_framework-8.0.56 → mcli_framework-8.0.57}/src/mcli/workflow/ci/workflow_transform.py +0 -0
  174. {mcli_framework-8.0.56 → mcli_framework-8.0.57}/src/mcli/workflow/daemon/__init__.py +0 -0
  175. {mcli_framework-8.0.56 → mcli_framework-8.0.57}/src/mcli/workflow/daemon/async_command_database.py +0 -0
  176. {mcli_framework-8.0.56 → mcli_framework-8.0.57}/src/mcli/workflow/daemon/async_process_manager.py +0 -0
  177. {mcli_framework-8.0.56 → mcli_framework-8.0.57}/src/mcli/workflow/daemon/client.py +0 -0
  178. {mcli_framework-8.0.56 → mcli_framework-8.0.57}/src/mcli/workflow/daemon/daemon.py +0 -0
  179. {mcli_framework-8.0.56 → mcli_framework-8.0.57}/src/mcli/workflow/daemon/daemon_api.py +0 -0
  180. {mcli_framework-8.0.56 → mcli_framework-8.0.57}/src/mcli/workflow/daemon/enhanced_daemon.py +0 -0
  181. {mcli_framework-8.0.56 → mcli_framework-8.0.57}/src/mcli/workflow/daemon/process_cli.py +0 -0
  182. {mcli_framework-8.0.56 → mcli_framework-8.0.57}/src/mcli/workflow/daemon/process_manager.py +0 -0
  183. {mcli_framework-8.0.56 → mcli_framework-8.0.57}/src/mcli/workflow/daemon/test_daemon.py +0 -0
  184. {mcli_framework-8.0.56 → mcli_framework-8.0.57}/src/mcli/workflow/doc_convert.py +0 -0
  185. {mcli_framework-8.0.56 → mcli_framework-8.0.57}/src/mcli/workflow/docker/__init__.py +0 -0
  186. {mcli_framework-8.0.56 → mcli_framework-8.0.57}/src/mcli/workflow/docker/docker.py +0 -0
  187. {mcli_framework-8.0.56 → mcli_framework-8.0.57}/src/mcli/workflow/file/__init__.py +0 -0
  188. {mcli_framework-8.0.56 → mcli_framework-8.0.57}/src/mcli/workflow/gcloud/__init__.py +0 -0
  189. {mcli_framework-8.0.56 → mcli_framework-8.0.57}/src/mcli/workflow/gcloud/config.toml +0 -0
  190. {mcli_framework-8.0.56 → mcli_framework-8.0.57}/src/mcli/workflow/gcloud/gcloud.py +0 -0
  191. {mcli_framework-8.0.56 → mcli_framework-8.0.57}/src/mcli/workflow/git_commit/__init__.py +0 -0
  192. {mcli_framework-8.0.56 → mcli_framework-8.0.57}/src/mcli/workflow/git_commit/ai_service.py +0 -0
  193. {mcli_framework-8.0.56 → mcli_framework-8.0.57}/src/mcli/workflow/interview/__init__.py +0 -0
  194. {mcli_framework-8.0.56 → mcli_framework-8.0.57}/src/mcli/workflow/lsh_integration.py +0 -0
  195. {mcli_framework-8.0.56 → mcli_framework-8.0.57}/src/mcli/workflow/model_service/client.py +0 -0
  196. {mcli_framework-8.0.56 → mcli_framework-8.0.57}/src/mcli/workflow/model_service/download_and_run_efficient_models.py +0 -0
  197. {mcli_framework-8.0.56 → mcli_framework-8.0.57}/src/mcli/workflow/model_service/lightweight_embedder.py +0 -0
  198. {mcli_framework-8.0.56 → mcli_framework-8.0.57}/src/mcli/workflow/model_service/lightweight_model_server.py +0 -0
  199. {mcli_framework-8.0.56 → mcli_framework-8.0.57}/src/mcli/workflow/model_service/lightweight_test.py +0 -0
  200. {mcli_framework-8.0.56 → mcli_framework-8.0.57}/src/mcli/workflow/model_service/model_service.py +0 -0
  201. {mcli_framework-8.0.56 → mcli_framework-8.0.57}/src/mcli/workflow/model_service/ollama_efficient_runner.py +0 -0
  202. {mcli_framework-8.0.56 → mcli_framework-8.0.57}/src/mcli/workflow/model_service/openai_adapter.py +0 -0
  203. {mcli_framework-8.0.56 → mcli_framework-8.0.57}/src/mcli/workflow/model_service/pdf_processor.py +0 -0
  204. {mcli_framework-8.0.56 → mcli_framework-8.0.57}/src/mcli/workflow/model_service/test_efficient_runner.py +0 -0
  205. {mcli_framework-8.0.56 → mcli_framework-8.0.57}/src/mcli/workflow/model_service/test_example.py +0 -0
  206. {mcli_framework-8.0.56 → mcli_framework-8.0.57}/src/mcli/workflow/model_service/test_integration.py +0 -0
  207. {mcli_framework-8.0.56 → mcli_framework-8.0.57}/src/mcli/workflow/model_service/test_new_features.py +0 -0
  208. {mcli_framework-8.0.56 → mcli_framework-8.0.57}/src/mcli/workflow/notebook/__init__.py +0 -0
  209. {mcli_framework-8.0.56 → mcli_framework-8.0.57}/src/mcli/workflow/notebook/command_loader.py +0 -0
  210. {mcli_framework-8.0.56 → mcli_framework-8.0.57}/src/mcli/workflow/notebook/converter.py +0 -0
  211. {mcli_framework-8.0.56 → mcli_framework-8.0.57}/src/mcli/workflow/notebook/executor.py +0 -0
  212. {mcli_framework-8.0.56 → mcli_framework-8.0.57}/src/mcli/workflow/notebook/notebook_cmd.py +0 -0
  213. {mcli_framework-8.0.56 → mcli_framework-8.0.57}/src/mcli/workflow/notebook/schema.py +0 -0
  214. {mcli_framework-8.0.56 → mcli_framework-8.0.57}/src/mcli/workflow/notebook/validator.py +0 -0
  215. {mcli_framework-8.0.56 → mcli_framework-8.0.57}/src/mcli/workflow/openai/openai.py +0 -0
  216. {mcli_framework-8.0.56 → mcli_framework-8.0.57}/src/mcli/workflow/registry/__init__.py +0 -0
  217. {mcli_framework-8.0.56 → mcli_framework-8.0.57}/src/mcli/workflow/registry/registry.py +0 -0
  218. {mcli_framework-8.0.56 → mcli_framework-8.0.57}/src/mcli/workflow/repo/__init__.py +0 -0
  219. {mcli_framework-8.0.56 → mcli_framework-8.0.57}/src/mcli/workflow/repo/repo.py +0 -0
  220. {mcli_framework-8.0.56 → mcli_framework-8.0.57}/src/mcli/workflow/scheduler/__init__.py +0 -0
  221. {mcli_framework-8.0.56 → mcli_framework-8.0.57}/src/mcli/workflow/scheduler/cron_parser.py +0 -0
  222. {mcli_framework-8.0.56 → mcli_framework-8.0.57}/src/mcli/workflow/scheduler/job.py +0 -0
  223. {mcli_framework-8.0.56 → mcli_framework-8.0.57}/src/mcli/workflow/scheduler/models.py +0 -0
  224. {mcli_framework-8.0.56 → mcli_framework-8.0.57}/src/mcli/workflow/scheduler/monitor.py +0 -0
  225. {mcli_framework-8.0.56 → mcli_framework-8.0.57}/src/mcli/workflow/scheduler/persistence.py +0 -0
  226. {mcli_framework-8.0.56 → mcli_framework-8.0.57}/src/mcli/workflow/scheduler/scheduler.py +0 -0
  227. {mcli_framework-8.0.56 → mcli_framework-8.0.57}/src/mcli/workflow/scheduler/validation.py +0 -0
  228. {mcli_framework-8.0.56 → mcli_framework-8.0.57}/src/mcli/workflow/search/__init__.py +0 -0
  229. {mcli_framework-8.0.56 → mcli_framework-8.0.57}/src/mcli/workflow/secrets/__init__.py +0 -0
  230. {mcli_framework-8.0.56 → mcli_framework-8.0.57}/src/mcli/workflow/secrets/secrets_cmd.py +0 -0
  231. {mcli_framework-8.0.56 → mcli_framework-8.0.57}/src/mcli/workflow/storage/__init__.py +0 -0
  232. {mcli_framework-8.0.56 → mcli_framework-8.0.57}/src/mcli/workflow/storage/storage_cmd.py +0 -0
  233. {mcli_framework-8.0.56 → mcli_framework-8.0.57}/src/mcli/workflow/sync/__init__.py +0 -0
  234. {mcli_framework-8.0.56 → mcli_framework-8.0.57}/src/mcli/workflow/sync/test_cmd.py +0 -0
  235. {mcli_framework-8.0.56 → mcli_framework-8.0.57}/src/mcli/workflow/videos/__init__.py +0 -0
  236. {mcli_framework-8.0.56 → mcli_framework-8.0.57}/src/mcli/workflow/wakatime/__init__.py +0 -0
  237. {mcli_framework-8.0.56 → mcli_framework-8.0.57}/src/mcli/workflow/wakatime/wakatime.py +0 -0
  238. {mcli_framework-8.0.56 → mcli_framework-8.0.57}/src/mcli/workflow/workflow.py +0 -0
  239. {mcli_framework-8.0.56 → mcli_framework-8.0.57}/src/mcli_framework.egg-info/dependency_links.txt +0 -0
  240. {mcli_framework-8.0.56 → mcli_framework-8.0.57}/src/mcli_framework.egg-info/entry_points.txt +0 -0
  241. {mcli_framework-8.0.56 → mcli_framework-8.0.57}/src/mcli_framework.egg-info/requires.txt +0 -0
  242. {mcli_framework-8.0.56 → mcli_framework-8.0.57}/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.56
3
+ Version: 8.0.57
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.56"
3
+ version = "8.0.57"
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 has been moved to mcli.app.commands_cmd for better organization
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 has been moved to mcli.app.commands_cmd for better organization
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 has been moved to mcli.app.commands_cmd for better organization
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 has been moved to mcli.app.commands_cmd for better organization
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__":
@@ -2,6 +2,7 @@
2
2
 
3
3
  from __future__ import annotations
4
4
 
5
+ import platform
5
6
  import shutil
6
7
  import subprocess
7
8
  import sys
@@ -27,6 +28,14 @@ _NO_STAGES_MARKERS = ("could not find any stages to run",)
27
28
  _RETRY_BACKOFF = (15, 45)
28
29
  _MAX_RETRIES = 2
29
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
+
30
39
 
31
40
  class PreflightResult(Enum):
32
41
  PASS = "pass"
@@ -67,48 +76,63 @@ def probe() -> bool:
67
76
  return proc.returncode == 0
68
77
 
69
78
 
70
- def build_act_command(event: str) -> list[str]:
79
+ def default_container_arch() -> str | None:
80
+ """`--container-architecture` value for the host, or None to let act decide.
81
+
82
+ act's runner images are amd64. On Apple-silicon (darwin/arm64) act warns and
83
+ misbehaves unless told to emulate amd64, so force it; native amd64 Linux
84
+ needs nothing.
85
+ """
86
+ if sys.platform == "darwin" and platform.machine() in ("arm64", "aarch64"):
87
+ return "linux/amd64"
88
+ return None
89
+
90
+
91
+ def dispatch_entrypoint() -> tuple[str, str] | None:
92
+ """The canonical (workflow, job) to drive via `workflow_dispatch`, or None."""
93
+ if _DISPATCH_WORKFLOW.exists():
94
+ return (str(_DISPATCH_WORKFLOW), _DISPATCH_JOB)
95
+ return None
96
+
97
+
98
+ def build_act_command(
99
+ event: str,
100
+ workflow: str | None = None,
101
+ job: str | None = None,
102
+ arch: str | None = None,
103
+ ) -> list[str]:
71
104
  cmd = ["act", event]
105
+ if workflow is not None:
106
+ cmd += ["-W", workflow]
107
+ if job is not None:
108
+ cmd += ["-j", job]
109
+ if arch is not None:
110
+ cmd += ["--container-architecture", arch]
72
111
  if Path(".secrets").exists():
73
112
  cmd += ["--secret-file", ".secrets"]
74
113
  return cmd
75
114
 
76
115
 
77
- def run_act(
78
- event: str = "pull_request",
79
- retries: int = _MAX_RETRIES,
80
- backoff: tuple[int, ...] = _RETRY_BACKOFF,
81
- ) -> PreflightResult:
82
- """Run act for `event` and classify the outcome.
83
-
84
- - exit 0 -> PASS.
85
- - non-zero whose output shows a Docker Hub pull rate limit
86
- (``toomanyrequests``) -> retry up to ``retries`` times with backoff;
87
- if still rate-limited, return UNREACHABLE (cannot validate — an
88
- environment problem, not a test failure, so the gate must not block).
89
- - any other non-zero exit -> FAIL.
90
-
91
- Output is captured (to detect the rate limit) and echoed so the user still
92
- sees act's progress.
93
- """
116
+ def _run_with_retries(
117
+ cmd: list[str], retries: int, backoff: tuple[int, ...]
118
+ ) -> tuple[PreflightResult, str]:
119
+ """Run one act command, retrying on Docker Hub rate limits. Returns the
120
+ classified result plus the combined output (so the caller can detect the
121
+ 'no stages' no-op and decide whether to fall back)."""
94
122
  attempt = 0
95
123
  while True:
96
- proc = subprocess.run(build_act_command(event), capture_output=True, text=True)
124
+ proc = subprocess.run(cmd, capture_output=True, text=True)
97
125
  output = (proc.stdout or "") + (proc.stderr or "")
98
126
  if output:
99
127
  sys.stdout.write(output if output.endswith("\n") else output + "\n")
100
128
 
101
129
  if proc.returncode == 0:
102
- return PreflightResult.PASS
130
+ return PreflightResult.PASS, output
103
131
 
104
- # No job matches this event (e.g. workflow_dispatch-only) nothing to
105
- # validate, so this is a pass, not a gate failure.
132
+ # No job matches this event (e.g. workflow_dispatch-only). PASS here is
133
+ # provisional run_act decides whether a dispatch fallback exists.
106
134
  if _has_no_stages(output):
107
- sys.stdout.write(
108
- "ℹ️ No act stages for this event (workflow_dispatch-only?); "
109
- "nothing to validate — treating as pass.\n"
110
- )
111
- return PreflightResult.PASS
135
+ return PreflightResult.PASS, output
112
136
 
113
137
  if _is_docker_rate_limited(output):
114
138
  if attempt < retries:
@@ -124,9 +148,54 @@ def run_act(
124
148
  "⚠️ Docker Hub still rate-limited after retries — cannot validate "
125
149
  "locally; allowing push (run `mcli ci preflight` again later).\n"
126
150
  )
127
- return PreflightResult.UNREACHABLE
151
+ return PreflightResult.UNREACHABLE, output
152
+
153
+ return PreflightResult.FAIL, output
154
+
155
+
156
+ def run_act(
157
+ event: str = "pull_request",
158
+ retries: int = _MAX_RETRIES,
159
+ backoff: tuple[int, ...] = _RETRY_BACKOFF,
160
+ ) -> PreflightResult:
161
+ """Run act for `event` and classify the outcome.
162
+
163
+ - exit 0 -> PASS.
164
+ - non-zero whose output shows a Docker Hub pull rate limit
165
+ (``toomanyrequests``) -> retried; if still limited, UNREACHABLE.
166
+ - any other non-zero exit -> FAIL.
167
+
168
+ Migrated repos are ``workflow_dispatch``-only, so the default
169
+ ``pull_request`` event matches no jobs. Rather than hollow-pass, fall back
170
+ to the canonical ``ci.yml`` ``primary`` job on ``workflow_dispatch`` (which
171
+ drives the reusable ``_ci-jobs.yml``) and validate for real.
172
+ """
173
+ arch = default_container_arch()
174
+ result, output = _run_with_retries(build_act_command(event, arch=arch), retries, backoff)
175
+
176
+ if result == PreflightResult.PASS and _has_no_stages(output):
177
+ entry = dispatch_entrypoint()
178
+ if entry is None:
179
+ sys.stdout.write(
180
+ "ℹ️ No act stages for this event and no ci.yml dispatch "
181
+ "entrypoint — nothing to validate; treating as pass.\n"
182
+ )
183
+ return PreflightResult.PASS
184
+ workflow, job = entry
185
+ sys.stdout.write(
186
+ f"ℹ️ No '{event}' stages (workflow_dispatch-only); running "
187
+ f"{workflow} -j {job} via workflow_dispatch…\n"
188
+ )
189
+ result, output = _run_with_retries(
190
+ build_act_command("workflow_dispatch", workflow=workflow, job=job, arch=arch),
191
+ retries,
192
+ backoff,
193
+ )
194
+ # If even the dispatch entrypoint has no stages, it's a genuine no-op.
195
+ if result == PreflightResult.PASS and _has_no_stages(output):
196
+ return PreflightResult.PASS
128
197
 
129
- return PreflightResult.FAIL
198
+ return result
130
199
 
131
200
 
132
201
  def preflight(repo_slug: str, event: str = "pull_request") -> PreflightResult:
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: mcli-framework
3
- Version: 8.0.56
3
+ Version: 8.0.57
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