mcli-framework 8.0.51__tar.gz → 8.0.53__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 (369) hide show
  1. mcli_framework-8.0.53/.github/dependabot.yml +49 -0
  2. mcli_framework-8.0.53/.github/dependency-review-config.yml +17 -0
  3. mcli_framework-8.0.53/.github/workflows/build.yml +102 -0
  4. mcli_framework-8.0.53/.github/workflows/ci.yml +274 -0
  5. mcli_framework-8.0.53/.github/workflows/codeql.yml +43 -0
  6. mcli_framework-8.0.53/.github/workflows/docs-links.yml +48 -0
  7. mcli_framework-8.0.53/.github/workflows/publish-self-hosted.yml +244 -0
  8. mcli_framework-8.0.53/.github/workflows/publish.yml +225 -0
  9. mcli_framework-8.0.53/.github/workflows/release.yml +77 -0
  10. mcli_framework-8.0.53/.github/workflows/security.yml +128 -0
  11. mcli_framework-8.0.53/.github/workflows/test.yml +154 -0
  12. {mcli_framework-8.0.51/src/mcli_framework.egg-info → mcli_framework-8.0.53}/PKG-INFO +1 -1
  13. {mcli_framework-8.0.51 → mcli_framework-8.0.53}/pyproject.toml +1 -1
  14. mcli_framework-8.0.53/src/mcli/__main__.py +14 -0
  15. {mcli_framework-8.0.51 → mcli_framework-8.0.53}/src/mcli/app/sync_cmd.py +20 -8
  16. {mcli_framework-8.0.51 → mcli_framework-8.0.53}/src/mcli/lib/constants/messages.py +1 -0
  17. {mcli_framework-8.0.51 → mcli_framework-8.0.53}/src/mcli/lib/ipfs_sync.py +7 -2
  18. {mcli_framework-8.0.51 → mcli_framework-8.0.53}/src/mcli/lib/paths.py +3 -3
  19. {mcli_framework-8.0.51 → mcli_framework-8.0.53}/src/mcli/lib/script_loader.py +80 -5
  20. {mcli_framework-8.0.51 → mcli_framework-8.0.53/src/mcli_framework.egg-info}/PKG-INFO +1 -1
  21. {mcli_framework-8.0.51 → mcli_framework-8.0.53}/src/mcli_framework.egg-info/SOURCES.txt +129 -1
  22. mcli_framework-8.0.53/tests/cli/__init__.py +0 -0
  23. mcli_framework-8.0.53/tests/cli/test_all_commands.py +7 -0
  24. mcli_framework-8.0.53/tests/cli/test_app_logs_cmd.py +206 -0
  25. mcli_framework-8.0.53/tests/cli/test_app_redis_cmd.py +276 -0
  26. mcli_framework-8.0.53/tests/cli/test_logs_cmd.py +287 -0
  27. mcli_framework-8.0.53/tests/cli/test_main_app.py +36 -0
  28. mcli_framework-8.0.53/tests/cli/test_model_cmd.py +619 -0
  29. mcli_framework-8.0.53/tests/cli/test_self_cmd.py +788 -0
  30. mcli_framework-8.0.53/tests/cli/test_self_cmd_plugins.py +273 -0
  31. mcli_framework-8.0.53/tests/cli/test_self_cmd_utilities.py +225 -0
  32. mcli_framework-8.0.53/tests/cli/test_workflow_creation_commands.py +109 -0
  33. mcli_framework-8.0.53/tests/cli/test_workflow_file.py +137 -0
  34. mcli_framework-8.0.53/tests/cli/test_workflow_gcloud.py +120 -0
  35. mcli_framework-8.0.53/tests/cli/test_workflow_registry.py +231 -0
  36. mcli_framework-8.0.53/tests/conftest.py +149 -0
  37. mcli_framework-8.0.53/tests/e2e/__init__.py +0 -0
  38. mcli_framework-8.0.53/tests/e2e/test_complete_workflows.py +422 -0
  39. mcli_framework-8.0.53/tests/e2e/test_model_workflow.py +155 -0
  40. mcli_framework-8.0.53/tests/e2e/test_new_user_workflow.py +144 -0
  41. mcli_framework-8.0.53/tests/e2e/test_update_workflow.py +195 -0
  42. mcli_framework-8.0.53/tests/fixtures/__init__.py +75 -0
  43. mcli_framework-8.0.53/tests/fixtures/chat_fixtures.py +82 -0
  44. mcli_framework-8.0.53/tests/fixtures/cli_fixtures.py +93 -0
  45. mcli_framework-8.0.53/tests/fixtures/command_fixtures.py +325 -0
  46. mcli_framework-8.0.53/tests/fixtures/data_fixtures.py +97 -0
  47. mcli_framework-8.0.53/tests/fixtures/db_fixtures.py +100 -0
  48. mcli_framework-8.0.53/tests/fixtures/model_fixtures.py +66 -0
  49. mcli_framework-8.0.53/tests/integration/__init__.py +0 -0
  50. mcli_framework-8.0.53/tests/integration/test_all_commands_comprehensive.py +878 -0
  51. mcli_framework-8.0.53/tests/integration/test_daemon_server.py +824 -0
  52. mcli_framework-8.0.53/tests/integration/test_direct_file_execution.py +257 -0
  53. mcli_framework-8.0.53/tests/integration/test_e2e_dashboard_lsh_supabase.py +695 -0
  54. mcli_framework-8.0.53/tests/integration/test_flask_webapp.py +7 -0
  55. mcli_framework-8.0.53/tests/integration/test_folder_workflows_integration.py +382 -0
  56. mcli_framework-8.0.53/tests/integration/test_gcloud_services.py +58 -0
  57. mcli_framework-8.0.53/tests/integration/test_ml_data_pipeline.py +642 -0
  58. mcli_framework-8.0.53/tests/integration/test_module_imports.py +132 -0
  59. mcli_framework-8.0.53/tests/integration/test_notebook_workflows.py +503 -0
  60. mcli_framework-8.0.53/tests/integration/test_oi_service.py +10 -0
  61. mcli_framework-8.0.53/tests/integration/test_repo_operations.py +77 -0
  62. mcli_framework-8.0.53/tests/integration/test_scheduler_integration.py +482 -0
  63. mcli_framework-8.0.53/tests/integration/test_service_registry.py +141 -0
  64. mcli_framework-8.0.53/tests/integration/test_video_processing.py +69 -0
  65. mcli_framework-8.0.53/tests/integration/test_wakatime_api.py +10 -0
  66. mcli_framework-8.0.53/tests/integration/test_webapp_full.py +7 -0
  67. mcli_framework-8.0.53/tests/integration/test_workflow.py +7 -0
  68. mcli_framework-8.0.53/tests/integration/test_workflow_commands.py +7 -0
  69. mcli_framework-8.0.53/tests/performance/__init__.py +0 -0
  70. mcli_framework-8.0.53/tests/property/__init__.py +0 -0
  71. mcli_framework-8.0.53/tests/unit/__init__.py +0 -0
  72. mcli_framework-8.0.53/tests/unit/storage/__init__.py +1 -0
  73. mcli_framework-8.0.53/tests/unit/storage/test_cache.py +244 -0
  74. mcli_framework-8.0.53/tests/unit/storage/test_encryption.py +118 -0
  75. mcli_framework-8.0.53/tests/unit/storage/test_storacha_cli.py +285 -0
  76. mcli_framework-8.0.53/tests/unit/test_api_utils.py +98 -0
  77. mcli_framework-8.0.53/tests/unit/test_async_process_manager.py +571 -0
  78. mcli_framework-8.0.53/tests/unit/test_auth_modules.py +324 -0
  79. mcli_framework-8.0.53/tests/unit/test_bug_fixes.py +41 -0
  80. mcli_framework-8.0.53/tests/unit/test_command_fixtures.py +240 -0
  81. mcli_framework-8.0.53/tests/unit/test_config.py +98 -0
  82. mcli_framework-8.0.53/tests/unit/test_correlation_logging.py +698 -0
  83. mcli_framework-8.0.53/tests/unit/test_custom_commands.py +338 -0
  84. mcli_framework-8.0.53/tests/unit/test_custom_commands_filtering.py +164 -0
  85. mcli_framework-8.0.53/tests/unit/test_daemon_api.py +266 -0
  86. mcli_framework-8.0.53/tests/unit/test_dependencies.py +60 -0
  87. mcli_framework-8.0.53/tests/unit/test_doc_convert_workflow.py +259 -0
  88. mcli_framework-8.0.53/tests/unit/test_emulator_workflow.py +618 -0
  89. mcli_framework-8.0.53/tests/unit/test_erd_generation.py +1365 -0
  90. mcli_framework-8.0.53/tests/unit/test_erd_generic.py +254 -0
  91. mcli_framework-8.0.53/tests/unit/test_erd_imports.py +21 -0
  92. mcli_framework-8.0.53/tests/unit/test_folder_workflows.py +401 -0
  93. mcli_framework-8.0.53/tests/unit/test_git_commit_workflow.py +343 -0
  94. mcli_framework-8.0.53/tests/unit/test_health_cmd.py +589 -0
  95. mcli_framework-8.0.53/tests/unit/test_import_cmd.py +866 -0
  96. mcli_framework-8.0.53/tests/unit/test_init_mv_cmd.py +293 -0
  97. mcli_framework-8.0.53/tests/unit/test_ipfs_cmd.py +320 -0
  98. mcli_framework-8.0.53/tests/unit/test_ipfs_retry.py +233 -0
  99. mcli_framework-8.0.53/tests/unit/test_language_suffix.py +467 -0
  100. mcli_framework-8.0.53/tests/unit/test_lib_auth.py +10 -0
  101. mcli_framework-8.0.53/tests/unit/test_lib_files.py +55 -0
  102. mcli_framework-8.0.53/tests/unit/test_lib_utils.py +9 -0
  103. mcli_framework-8.0.53/tests/unit/test_logger.py +214 -0
  104. mcli_framework-8.0.53/tests/unit/test_new_cmd.py +819 -0
  105. mcli_framework-8.0.53/tests/unit/test_notebook_command_loader.py +525 -0
  106. mcli_framework-8.0.53/tests/unit/test_notebook_executor.py +233 -0
  107. mcli_framework-8.0.53/tests/unit/test_optional_deps.py +211 -0
  108. mcli_framework-8.0.53/tests/unit/test_paths.py +202 -0
  109. mcli_framework-8.0.53/tests/unit/test_pdf_compress.py +257 -0
  110. mcli_framework-8.0.53/tests/unit/test_pyenv.py +427 -0
  111. mcli_framework-8.0.53/tests/unit/test_regression.py +129 -0
  112. mcli_framework-8.0.53/tests/unit/test_scheduler.py +439 -0
  113. mcli_framework-8.0.53/tests/unit/test_scheduler_cron_parser.py +509 -0
  114. mcli_framework-8.0.53/tests/unit/test_scheduler_job.py +505 -0
  115. mcli_framework-8.0.53/tests/unit/test_scheduler_models.py +419 -0
  116. mcli_framework-8.0.53/tests/unit/test_scheduler_monitor.py +509 -0
  117. mcli_framework-8.0.53/tests/unit/test_scheduler_persistence.py +709 -0
  118. mcli_framework-8.0.53/tests/unit/test_scheduler_validation.py +390 -0
  119. mcli_framework-8.0.53/tests/unit/test_script_loader_options.py +210 -0
  120. mcli_framework-8.0.53/tests/unit/test_security_command_injection.py +225 -0
  121. mcli_framework-8.0.53/tests/unit/test_self_update.py +200 -0
  122. mcli_framework-8.0.53/tests/unit/test_service_config.py +82 -0
  123. mcli_framework-8.0.53/tests/unit/test_service_health.py +88 -0
  124. mcli_framework-8.0.53/tests/unit/test_service_manager.py +150 -0
  125. mcli_framework-8.0.53/tests/unit/test_service_state.py +93 -0
  126. mcli_framework-8.0.53/tests/unit/test_services_cmd.py +162 -0
  127. mcli_framework-8.0.53/tests/unit/test_shell_exceptions.py +428 -0
  128. mcli_framework-8.0.53/tests/unit/test_shell_functions.py +329 -0
  129. mcli_framework-8.0.53/tests/unit/test_shell_security.py +215 -0
  130. mcli_framework-8.0.53/tests/unit/test_store_cmd.py +445 -0
  131. mcli_framework-8.0.53/tests/unit/test_sync_cmd.py +391 -0
  132. mcli_framework-8.0.53/tests/unit/test_toml_utils.py +192 -0
  133. mcli_framework-8.0.53/tests/unit/test_ui_rich.py +22 -0
  134. mcli_framework-8.0.53/tests/unit/test_uv_compat.py +224 -0
  135. mcli_framework-8.0.53/tests/unit/test_workflow_file_completion.py +219 -0
  136. mcli_framework-8.0.53/tests/unit/test_workflow_models.py +337 -0
  137. mcli_framework-8.0.53/tests/unit/workflow/test_notebook.py +443 -0
  138. {mcli_framework-8.0.51 → mcli_framework-8.0.53}/LICENSE +0 -0
  139. {mcli_framework-8.0.51 → mcli_framework-8.0.53}/MANIFEST.in +0 -0
  140. {mcli_framework-8.0.51 → mcli_framework-8.0.53}/README.md +0 -0
  141. {mcli_framework-8.0.51 → mcli_framework-8.0.53}/llms-full.txt +0 -0
  142. {mcli_framework-8.0.51 → mcli_framework-8.0.53}/llms.txt +0 -0
  143. {mcli_framework-8.0.51 → mcli_framework-8.0.53}/mcli_rust/Cargo.toml +0 -0
  144. {mcli_framework-8.0.51 → mcli_framework-8.0.53}/mcli_rust/src/command_parser.rs +0 -0
  145. {mcli_framework-8.0.51 → mcli_framework-8.0.53}/mcli_rust/src/file_watcher.rs +0 -0
  146. {mcli_framework-8.0.51 → mcli_framework-8.0.53}/mcli_rust/src/lib.rs +0 -0
  147. {mcli_framework-8.0.51 → mcli_framework-8.0.53}/mcli_rust/src/process_manager.rs +0 -0
  148. {mcli_framework-8.0.51 → mcli_framework-8.0.53}/mcli_rust/src/tfidf.rs +0 -0
  149. {mcli_framework-8.0.51 → mcli_framework-8.0.53}/setup.cfg +0 -0
  150. {mcli_framework-8.0.51 → mcli_framework-8.0.53}/src/mcli/__init__.py +0 -0
  151. {mcli_framework-8.0.51 → mcli_framework-8.0.53}/src/mcli/app/__init__.py +0 -0
  152. {mcli_framework-8.0.51 → mcli_framework-8.0.53}/src/mcli/app/commands_cmd.py +0 -0
  153. {mcli_framework-8.0.51 → mcli_framework-8.0.53}/src/mcli/app/completion_helpers.py +0 -0
  154. {mcli_framework-8.0.51 → mcli_framework-8.0.53}/src/mcli/app/context_cmd.py +0 -0
  155. {mcli_framework-8.0.51 → mcli_framework-8.0.53}/src/mcli/app/create_cmd.py +0 -0
  156. {mcli_framework-8.0.51 → mcli_framework-8.0.53}/src/mcli/app/delete_cmd.py +0 -0
  157. {mcli_framework-8.0.51 → mcli_framework-8.0.53}/src/mcli/app/edit_cmd.py +0 -0
  158. {mcli_framework-8.0.51 → mcli_framework-8.0.53}/src/mcli/app/import_cmd.py +0 -0
  159. {mcli_framework-8.0.51 → mcli_framework-8.0.53}/src/mcli/app/init_cmd.py +0 -0
  160. {mcli_framework-8.0.51 → mcli_framework-8.0.53}/src/mcli/app/list_cmd.py +0 -0
  161. {mcli_framework-8.0.51 → mcli_framework-8.0.53}/src/mcli/app/main.py +0 -0
  162. {mcli_framework-8.0.51 → mcli_framework-8.0.53}/src/mcli/app/migrate_cmd.py +0 -0
  163. {mcli_framework-8.0.51 → mcli_framework-8.0.53}/src/mcli/app/model/__init__.py +0 -0
  164. {mcli_framework-8.0.51 → mcli_framework-8.0.53}/src/mcli/app/model/model.py +0 -0
  165. {mcli_framework-8.0.51 → mcli_framework-8.0.53}/src/mcli/app/model_cmd.py +0 -0
  166. {mcli_framework-8.0.51 → mcli_framework-8.0.53}/src/mcli/app/mv_cmd.py +0 -0
  167. {mcli_framework-8.0.51 → mcli_framework-8.0.53}/src/mcli/app/new_cmd.py +0 -0
  168. {mcli_framework-8.0.51 → mcli_framework-8.0.53}/src/mcli/app/remove_cmd.py +0 -0
  169. {mcli_framework-8.0.51 → mcli_framework-8.0.53}/src/mcli/app/rm_cmd.py +0 -0
  170. {mcli_framework-8.0.51 → mcli_framework-8.0.53}/src/mcli/app/search_cmd.py +0 -0
  171. {mcli_framework-8.0.51 → mcli_framework-8.0.53}/src/mcli/app/services_cmd.py +0 -0
  172. {mcli_framework-8.0.51 → mcli_framework-8.0.53}/src/mcli/app/setup_cmd.py +0 -0
  173. {mcli_framework-8.0.51 → mcli_framework-8.0.53}/src/mcli/app/source_sync_cmd.py +0 -0
  174. {mcli_framework-8.0.51 → mcli_framework-8.0.53}/src/mcli/app/video/__init__.py +0 -0
  175. {mcli_framework-8.0.51 → mcli_framework-8.0.53}/src/mcli/app/video/video.py +0 -0
  176. {mcli_framework-8.0.51 → mcli_framework-8.0.53}/src/mcli/config.toml +0 -0
  177. {mcli_framework-8.0.51 → mcli_framework-8.0.53}/src/mcli/lib/__init__.py +0 -0
  178. {mcli_framework-8.0.51 → mcli_framework-8.0.53}/src/mcli/lib/api/__init__.py +0 -0
  179. {mcli_framework-8.0.51 → mcli_framework-8.0.53}/src/mcli/lib/api/api.py +0 -0
  180. {mcli_framework-8.0.51 → mcli_framework-8.0.53}/src/mcli/lib/api/daemon_client.py +0 -0
  181. {mcli_framework-8.0.51 → mcli_framework-8.0.53}/src/mcli/lib/api/daemon_client_local.py +0 -0
  182. {mcli_framework-8.0.51 → mcli_framework-8.0.53}/src/mcli/lib/api/daemon_decorator.py +0 -0
  183. {mcli_framework-8.0.51 → mcli_framework-8.0.53}/src/mcli/lib/api/mcli_decorators.py +0 -0
  184. {mcli_framework-8.0.51 → mcli_framework-8.0.53}/src/mcli/lib/auth/__init__.py +0 -0
  185. {mcli_framework-8.0.51 → mcli_framework-8.0.53}/src/mcli/lib/auth/auth.py +0 -0
  186. {mcli_framework-8.0.51 → mcli_framework-8.0.53}/src/mcli/lib/auth/aws_manager.py +0 -0
  187. {mcli_framework-8.0.51 → mcli_framework-8.0.53}/src/mcli/lib/auth/azure_manager.py +0 -0
  188. {mcli_framework-8.0.51 → mcli_framework-8.0.53}/src/mcli/lib/auth/credential_manager.py +0 -0
  189. {mcli_framework-8.0.51 → mcli_framework-8.0.53}/src/mcli/lib/auth/gcp_manager.py +0 -0
  190. {mcli_framework-8.0.51 → mcli_framework-8.0.53}/src/mcli/lib/auth/key_manager.py +0 -0
  191. {mcli_framework-8.0.51 → mcli_framework-8.0.53}/src/mcli/lib/auth/mcli_manager.py +0 -0
  192. {mcli_framework-8.0.51 → mcli_framework-8.0.53}/src/mcli/lib/auth/token_manager.py +0 -0
  193. {mcli_framework-8.0.51 → mcli_framework-8.0.53}/src/mcli/lib/auth/token_util.py +0 -0
  194. {mcli_framework-8.0.51 → mcli_framework-8.0.53}/src/mcli/lib/config/__init__.py +0 -0
  195. {mcli_framework-8.0.51 → mcli_framework-8.0.53}/src/mcli/lib/config/config.py +0 -0
  196. {mcli_framework-8.0.51 → mcli_framework-8.0.53}/src/mcli/lib/config/settings.py +0 -0
  197. {mcli_framework-8.0.51 → mcli_framework-8.0.53}/src/mcli/lib/constants/__init__.py +0 -0
  198. {mcli_framework-8.0.51 → mcli_framework-8.0.53}/src/mcli/lib/constants/commands.py +0 -0
  199. {mcli_framework-8.0.51 → mcli_framework-8.0.53}/src/mcli/lib/constants/defaults.py +0 -0
  200. {mcli_framework-8.0.51 → mcli_framework-8.0.53}/src/mcli/lib/constants/env.py +0 -0
  201. {mcli_framework-8.0.51 → mcli_framework-8.0.53}/src/mcli/lib/constants/paths.py +0 -0
  202. {mcli_framework-8.0.51 → mcli_framework-8.0.53}/src/mcli/lib/constants/scripts.py +0 -0
  203. {mcli_framework-8.0.51 → mcli_framework-8.0.53}/src/mcli/lib/constants/storage.py +0 -0
  204. {mcli_framework-8.0.51 → mcli_framework-8.0.53}/src/mcli/lib/custom_commands.py +0 -0
  205. {mcli_framework-8.0.51 → mcli_framework-8.0.53}/src/mcli/lib/discovery/__init__.py +0 -0
  206. {mcli_framework-8.0.51 → mcli_framework-8.0.53}/src/mcli/lib/discovery/command_discovery.py +0 -0
  207. {mcli_framework-8.0.51 → mcli_framework-8.0.53}/src/mcli/lib/erd/__init__.py +0 -0
  208. {mcli_framework-8.0.51 → mcli_framework-8.0.53}/src/mcli/lib/erd/erd.py +0 -0
  209. {mcli_framework-8.0.51 → mcli_framework-8.0.53}/src/mcli/lib/erd/generate_graph.py +0 -0
  210. {mcli_framework-8.0.51 → mcli_framework-8.0.53}/src/mcli/lib/errors.py +0 -0
  211. {mcli_framework-8.0.51 → mcli_framework-8.0.53}/src/mcli/lib/feature_detection.py +0 -0
  212. {mcli_framework-8.0.51 → mcli_framework-8.0.53}/src/mcli/lib/files/__init__.py +0 -0
  213. {mcli_framework-8.0.51 → mcli_framework-8.0.53}/src/mcli/lib/files/files.py +0 -0
  214. {mcli_framework-8.0.51 → mcli_framework-8.0.53}/src/mcli/lib/folder_workflows.py +0 -0
  215. {mcli_framework-8.0.51 → mcli_framework-8.0.53}/src/mcli/lib/fs/__init__.py +0 -0
  216. {mcli_framework-8.0.51 → mcli_framework-8.0.53}/src/mcli/lib/fs/fs.py +0 -0
  217. {mcli_framework-8.0.51 → mcli_framework-8.0.53}/src/mcli/lib/ipfs_utils.py +0 -0
  218. {mcli_framework-8.0.51 → mcli_framework-8.0.53}/src/mcli/lib/ipns_manager.py +0 -0
  219. {mcli_framework-8.0.51 → mcli_framework-8.0.53}/src/mcli/lib/lib.py +0 -0
  220. {mcli_framework-8.0.51 → mcli_framework-8.0.53}/src/mcli/lib/logger/__init__.py +0 -0
  221. {mcli_framework-8.0.51 → mcli_framework-8.0.53}/src/mcli/lib/logger/correlation.py +0 -0
  222. {mcli_framework-8.0.51 → mcli_framework-8.0.53}/src/mcli/lib/logger/logger.py +0 -0
  223. {mcli_framework-8.0.51 → mcli_framework-8.0.53}/src/mcli/lib/logger/structured.py +0 -0
  224. {mcli_framework-8.0.51 → mcli_framework-8.0.53}/src/mcli/lib/optional_deps.py +0 -0
  225. {mcli_framework-8.0.51 → mcli_framework-8.0.53}/src/mcli/lib/performance/__init__.py +0 -0
  226. {mcli_framework-8.0.51 → mcli_framework-8.0.53}/src/mcli/lib/performance/optimizer.py +0 -0
  227. {mcli_framework-8.0.51 → mcli_framework-8.0.53}/src/mcli/lib/performance/rust_bridge.py +0 -0
  228. {mcli_framework-8.0.51 → mcli_framework-8.0.53}/src/mcli/lib/performance/uvloop_config.py +0 -0
  229. {mcli_framework-8.0.51 → mcli_framework-8.0.53}/src/mcli/lib/pickles/__init__.py +0 -0
  230. {mcli_framework-8.0.51 → mcli_framework-8.0.53}/src/mcli/lib/pickles/pickles.py +0 -0
  231. {mcli_framework-8.0.51 → mcli_framework-8.0.53}/src/mcli/lib/pyenv/__init__.py +0 -0
  232. {mcli_framework-8.0.51 → mcli_framework-8.0.53}/src/mcli/lib/pyenv/deps.py +0 -0
  233. {mcli_framework-8.0.51 → mcli_framework-8.0.53}/src/mcli/lib/pyenv/manager.py +0 -0
  234. {mcli_framework-8.0.51 → mcli_framework-8.0.53}/src/mcli/lib/pyenv/venv.py +0 -0
  235. {mcli_framework-8.0.51 → mcli_framework-8.0.53}/src/mcli/lib/script_sync.py +0 -0
  236. {mcli_framework-8.0.51 → mcli_framework-8.0.53}/src/mcli/lib/script_watcher.py +0 -0
  237. {mcli_framework-8.0.51 → mcli_framework-8.0.53}/src/mcli/lib/search/cached_vectorizer.py +0 -0
  238. {mcli_framework-8.0.51 → mcli_framework-8.0.53}/src/mcli/lib/secrets/__init__.py +0 -0
  239. {mcli_framework-8.0.51 → mcli_framework-8.0.53}/src/mcli/lib/secrets/commands.py +0 -0
  240. {mcli_framework-8.0.51 → mcli_framework-8.0.53}/src/mcli/lib/secrets/manager.py +0 -0
  241. {mcli_framework-8.0.51 → mcli_framework-8.0.53}/src/mcli/lib/secrets/repl.py +0 -0
  242. {mcli_framework-8.0.51 → mcli_framework-8.0.53}/src/mcli/lib/secrets/store.py +0 -0
  243. {mcli_framework-8.0.51 → mcli_framework-8.0.53}/src/mcli/lib/services/__init__.py +0 -0
  244. {mcli_framework-8.0.51 → mcli_framework-8.0.53}/src/mcli/lib/services/config.py +0 -0
  245. {mcli_framework-8.0.51 → mcli_framework-8.0.53}/src/mcli/lib/services/data_pipeline.py +0 -0
  246. {mcli_framework-8.0.51 → mcli_framework-8.0.53}/src/mcli/lib/services/health.py +0 -0
  247. {mcli_framework-8.0.51 → mcli_framework-8.0.53}/src/mcli/lib/services/lsh_client.py +0 -0
  248. {mcli_framework-8.0.51 → mcli_framework-8.0.53}/src/mcli/lib/services/manager.py +0 -0
  249. {mcli_framework-8.0.51 → mcli_framework-8.0.53}/src/mcli/lib/services/redis_service.py +0 -0
  250. {mcli_framework-8.0.51 → mcli_framework-8.0.53}/src/mcli/lib/services/registry.py +0 -0
  251. {mcli_framework-8.0.51 → mcli_framework-8.0.53}/src/mcli/lib/services/state.py +0 -0
  252. {mcli_framework-8.0.51 → mcli_framework-8.0.53}/src/mcli/lib/services/supervisor.py +0 -0
  253. {mcli_framework-8.0.51 → mcli_framework-8.0.53}/src/mcli/lib/shell/__init__.py +0 -0
  254. {mcli_framework-8.0.51 → mcli_framework-8.0.53}/src/mcli/lib/shell/exceptions.py +0 -0
  255. {mcli_framework-8.0.51 → mcli_framework-8.0.53}/src/mcli/lib/shell/shell.py +0 -0
  256. {mcli_framework-8.0.51 → mcli_framework-8.0.53}/src/mcli/lib/sync_key_store.py +0 -0
  257. {mcli_framework-8.0.51 → mcli_framework-8.0.53}/src/mcli/lib/templates/__init__.py +0 -0
  258. {mcli_framework-8.0.51 → mcli_framework-8.0.53}/src/mcli/lib/templates/command_templates.py +0 -0
  259. {mcli_framework-8.0.51 → mcli_framework-8.0.53}/src/mcli/lib/toml/__init__.py +0 -0
  260. {mcli_framework-8.0.51 → mcli_framework-8.0.53}/src/mcli/lib/toml/toml.py +0 -0
  261. {mcli_framework-8.0.51 → mcli_framework-8.0.53}/src/mcli/lib/types.py +0 -0
  262. {mcli_framework-8.0.51 → mcli_framework-8.0.53}/src/mcli/lib/ui/styling.py +0 -0
  263. {mcli_framework-8.0.51 → mcli_framework-8.0.53}/src/mcli/lib/ui/visual_effects.py +0 -0
  264. {mcli_framework-8.0.51 → mcli_framework-8.0.53}/src/mcli/lib/watcher/__init__.py +0 -0
  265. {mcli_framework-8.0.51 → mcli_framework-8.0.53}/src/mcli/lib/watcher/watcher.py +0 -0
  266. {mcli_framework-8.0.51 → mcli_framework-8.0.53}/src/mcli/lib/workflow_models.py +0 -0
  267. {mcli_framework-8.0.51 → mcli_framework-8.0.53}/src/mcli/lib/workspace_registry.py +0 -0
  268. {mcli_framework-8.0.51 → mcli_framework-8.0.53}/src/mcli/mygroup/__init__.py +0 -0
  269. {mcli_framework-8.0.51 → mcli_framework-8.0.53}/src/mcli/mygroup/test_cmd.py +0 -0
  270. {mcli_framework-8.0.51 → mcli_framework-8.0.53}/src/mcli/public/__init__.py +0 -0
  271. {mcli_framework-8.0.51 → mcli_framework-8.0.53}/src/mcli/public/commands/__init__.py +0 -0
  272. {mcli_framework-8.0.51 → mcli_framework-8.0.53}/src/mcli/public/oi/oi.py +0 -0
  273. {mcli_framework-8.0.51 → mcli_framework-8.0.53}/src/mcli/public/public.py +0 -0
  274. {mcli_framework-8.0.51 → mcli_framework-8.0.53}/src/mcli/self/__init__.py +0 -0
  275. {mcli_framework-8.0.51 → mcli_framework-8.0.53}/src/mcli/self/completion_cmd.py +0 -0
  276. {mcli_framework-8.0.51 → mcli_framework-8.0.53}/src/mcli/self/env_cmd.py +0 -0
  277. {mcli_framework-8.0.51 → mcli_framework-8.0.53}/src/mcli/self/health_cmd.py +0 -0
  278. {mcli_framework-8.0.51 → mcli_framework-8.0.53}/src/mcli/self/ipfs_cmd.py +0 -0
  279. {mcli_framework-8.0.51 → mcli_framework-8.0.53}/src/mcli/self/logs_cmd.py +0 -0
  280. {mcli_framework-8.0.51 → mcli_framework-8.0.53}/src/mcli/self/migrate_cmd.py +0 -0
  281. {mcli_framework-8.0.51 → mcli_framework-8.0.53}/src/mcli/self/release_notes_cmd.py +0 -0
  282. {mcli_framework-8.0.51 → mcli_framework-8.0.53}/src/mcli/self/self_cmd.py +0 -0
  283. {mcli_framework-8.0.51 → mcli_framework-8.0.53}/src/mcli/self/store_cmd.py +0 -0
  284. {mcli_framework-8.0.51 → mcli_framework-8.0.53}/src/mcli/self/test_cmd.py +0 -0
  285. {mcli_framework-8.0.51 → mcli_framework-8.0.53}/src/mcli/self/workflows_cmd.py +0 -0
  286. {mcli_framework-8.0.51 → mcli_framework-8.0.53}/src/mcli/storage/__init__.py +0 -0
  287. {mcli_framework-8.0.51 → mcli_framework-8.0.53}/src/mcli/storage/backends/__init__.py +0 -0
  288. {mcli_framework-8.0.51 → mcli_framework-8.0.53}/src/mcli/storage/backends/ipfs_backend.py +0 -0
  289. {mcli_framework-8.0.51 → mcli_framework-8.0.53}/src/mcli/storage/base.py +0 -0
  290. {mcli_framework-8.0.51 → mcli_framework-8.0.53}/src/mcli/storage/cache.py +0 -0
  291. {mcli_framework-8.0.51 → mcli_framework-8.0.53}/src/mcli/storage/encryption.py +0 -0
  292. {mcli_framework-8.0.51 → mcli_framework-8.0.53}/src/mcli/storage/factory.py +0 -0
  293. {mcli_framework-8.0.51 → mcli_framework-8.0.53}/src/mcli/storage/registry.py +0 -0
  294. {mcli_framework-8.0.51 → mcli_framework-8.0.53}/src/mcli/storage/storacha_cli.py +0 -0
  295. {mcli_framework-8.0.51 → mcli_framework-8.0.53}/src/mcli/workflow/__init__.py +0 -0
  296. {mcli_framework-8.0.51 → mcli_framework-8.0.53}/src/mcli/workflow/ci/__init__.py +0 -0
  297. {mcli_framework-8.0.51 → mcli_framework-8.0.53}/src/mcli/workflow/ci/act_runner.py +0 -0
  298. {mcli_framework-8.0.51 → mcli_framework-8.0.53}/src/mcli/workflow/ci/ci.py +0 -0
  299. {mcli_framework-8.0.51 → mcli_framework-8.0.53}/src/mcli/workflow/ci/runner_status.py +0 -0
  300. {mcli_framework-8.0.51 → mcli_framework-8.0.53}/src/mcli/workflow/ci/workflow_transform.py +0 -0
  301. {mcli_framework-8.0.51 → mcli_framework-8.0.53}/src/mcli/workflow/daemon/__init__.py +0 -0
  302. {mcli_framework-8.0.51 → mcli_framework-8.0.53}/src/mcli/workflow/daemon/async_command_database.py +0 -0
  303. {mcli_framework-8.0.51 → mcli_framework-8.0.53}/src/mcli/workflow/daemon/async_process_manager.py +0 -0
  304. {mcli_framework-8.0.51 → mcli_framework-8.0.53}/src/mcli/workflow/daemon/client.py +0 -0
  305. {mcli_framework-8.0.51 → mcli_framework-8.0.53}/src/mcli/workflow/daemon/daemon.py +0 -0
  306. {mcli_framework-8.0.51 → mcli_framework-8.0.53}/src/mcli/workflow/daemon/daemon_api.py +0 -0
  307. {mcli_framework-8.0.51 → mcli_framework-8.0.53}/src/mcli/workflow/daemon/enhanced_daemon.py +0 -0
  308. {mcli_framework-8.0.51 → mcli_framework-8.0.53}/src/mcli/workflow/daemon/process_cli.py +0 -0
  309. {mcli_framework-8.0.51 → mcli_framework-8.0.53}/src/mcli/workflow/daemon/process_manager.py +0 -0
  310. {mcli_framework-8.0.51 → mcli_framework-8.0.53}/src/mcli/workflow/daemon/test_daemon.py +0 -0
  311. {mcli_framework-8.0.51 → mcli_framework-8.0.53}/src/mcli/workflow/doc_convert.py +0 -0
  312. {mcli_framework-8.0.51 → mcli_framework-8.0.53}/src/mcli/workflow/docker/__init__.py +0 -0
  313. {mcli_framework-8.0.51 → mcli_framework-8.0.53}/src/mcli/workflow/docker/docker.py +0 -0
  314. {mcli_framework-8.0.51 → mcli_framework-8.0.53}/src/mcli/workflow/file/__init__.py +0 -0
  315. {mcli_framework-8.0.51 → mcli_framework-8.0.53}/src/mcli/workflow/gcloud/__init__.py +0 -0
  316. {mcli_framework-8.0.51 → mcli_framework-8.0.53}/src/mcli/workflow/gcloud/config.toml +0 -0
  317. {mcli_framework-8.0.51 → mcli_framework-8.0.53}/src/mcli/workflow/gcloud/gcloud.py +0 -0
  318. {mcli_framework-8.0.51 → mcli_framework-8.0.53}/src/mcli/workflow/git_commit/__init__.py +0 -0
  319. {mcli_framework-8.0.51 → mcli_framework-8.0.53}/src/mcli/workflow/git_commit/ai_service.py +0 -0
  320. {mcli_framework-8.0.51 → mcli_framework-8.0.53}/src/mcli/workflow/interview/__init__.py +0 -0
  321. {mcli_framework-8.0.51 → mcli_framework-8.0.53}/src/mcli/workflow/lsh_integration.py +0 -0
  322. {mcli_framework-8.0.51 → mcli_framework-8.0.53}/src/mcli/workflow/model_service/client.py +0 -0
  323. {mcli_framework-8.0.51 → mcli_framework-8.0.53}/src/mcli/workflow/model_service/download_and_run_efficient_models.py +0 -0
  324. {mcli_framework-8.0.51 → mcli_framework-8.0.53}/src/mcli/workflow/model_service/lightweight_embedder.py +0 -0
  325. {mcli_framework-8.0.51 → mcli_framework-8.0.53}/src/mcli/workflow/model_service/lightweight_model_server.py +0 -0
  326. {mcli_framework-8.0.51 → mcli_framework-8.0.53}/src/mcli/workflow/model_service/lightweight_test.py +0 -0
  327. {mcli_framework-8.0.51 → mcli_framework-8.0.53}/src/mcli/workflow/model_service/model_service.py +0 -0
  328. {mcli_framework-8.0.51 → mcli_framework-8.0.53}/src/mcli/workflow/model_service/ollama_efficient_runner.py +0 -0
  329. {mcli_framework-8.0.51 → mcli_framework-8.0.53}/src/mcli/workflow/model_service/openai_adapter.py +0 -0
  330. {mcli_framework-8.0.51 → mcli_framework-8.0.53}/src/mcli/workflow/model_service/pdf_processor.py +0 -0
  331. {mcli_framework-8.0.51 → mcli_framework-8.0.53}/src/mcli/workflow/model_service/test_efficient_runner.py +0 -0
  332. {mcli_framework-8.0.51 → mcli_framework-8.0.53}/src/mcli/workflow/model_service/test_example.py +0 -0
  333. {mcli_framework-8.0.51 → mcli_framework-8.0.53}/src/mcli/workflow/model_service/test_integration.py +0 -0
  334. {mcli_framework-8.0.51 → mcli_framework-8.0.53}/src/mcli/workflow/model_service/test_new_features.py +0 -0
  335. {mcli_framework-8.0.51 → mcli_framework-8.0.53}/src/mcli/workflow/notebook/__init__.py +0 -0
  336. {mcli_framework-8.0.51 → mcli_framework-8.0.53}/src/mcli/workflow/notebook/command_loader.py +0 -0
  337. {mcli_framework-8.0.51 → mcli_framework-8.0.53}/src/mcli/workflow/notebook/converter.py +0 -0
  338. {mcli_framework-8.0.51 → mcli_framework-8.0.53}/src/mcli/workflow/notebook/executor.py +0 -0
  339. {mcli_framework-8.0.51 → mcli_framework-8.0.53}/src/mcli/workflow/notebook/notebook_cmd.py +0 -0
  340. {mcli_framework-8.0.51 → mcli_framework-8.0.53}/src/mcli/workflow/notebook/schema.py +0 -0
  341. {mcli_framework-8.0.51 → mcli_framework-8.0.53}/src/mcli/workflow/notebook/validator.py +0 -0
  342. {mcli_framework-8.0.51 → mcli_framework-8.0.53}/src/mcli/workflow/openai/openai.py +0 -0
  343. {mcli_framework-8.0.51 → mcli_framework-8.0.53}/src/mcli/workflow/registry/__init__.py +0 -0
  344. {mcli_framework-8.0.51 → mcli_framework-8.0.53}/src/mcli/workflow/registry/registry.py +0 -0
  345. {mcli_framework-8.0.51 → mcli_framework-8.0.53}/src/mcli/workflow/repo/__init__.py +0 -0
  346. {mcli_framework-8.0.51 → mcli_framework-8.0.53}/src/mcli/workflow/repo/repo.py +0 -0
  347. {mcli_framework-8.0.51 → mcli_framework-8.0.53}/src/mcli/workflow/scheduler/__init__.py +0 -0
  348. {mcli_framework-8.0.51 → mcli_framework-8.0.53}/src/mcli/workflow/scheduler/cron_parser.py +0 -0
  349. {mcli_framework-8.0.51 → mcli_framework-8.0.53}/src/mcli/workflow/scheduler/job.py +0 -0
  350. {mcli_framework-8.0.51 → mcli_framework-8.0.53}/src/mcli/workflow/scheduler/models.py +0 -0
  351. {mcli_framework-8.0.51 → mcli_framework-8.0.53}/src/mcli/workflow/scheduler/monitor.py +0 -0
  352. {mcli_framework-8.0.51 → mcli_framework-8.0.53}/src/mcli/workflow/scheduler/persistence.py +0 -0
  353. {mcli_framework-8.0.51 → mcli_framework-8.0.53}/src/mcli/workflow/scheduler/scheduler.py +0 -0
  354. {mcli_framework-8.0.51 → mcli_framework-8.0.53}/src/mcli/workflow/scheduler/validation.py +0 -0
  355. {mcli_framework-8.0.51 → mcli_framework-8.0.53}/src/mcli/workflow/search/__init__.py +0 -0
  356. {mcli_framework-8.0.51 → mcli_framework-8.0.53}/src/mcli/workflow/secrets/__init__.py +0 -0
  357. {mcli_framework-8.0.51 → mcli_framework-8.0.53}/src/mcli/workflow/secrets/secrets_cmd.py +0 -0
  358. {mcli_framework-8.0.51 → mcli_framework-8.0.53}/src/mcli/workflow/storage/__init__.py +0 -0
  359. {mcli_framework-8.0.51 → mcli_framework-8.0.53}/src/mcli/workflow/storage/storage_cmd.py +0 -0
  360. {mcli_framework-8.0.51 → mcli_framework-8.0.53}/src/mcli/workflow/sync/__init__.py +0 -0
  361. {mcli_framework-8.0.51 → mcli_framework-8.0.53}/src/mcli/workflow/sync/test_cmd.py +0 -0
  362. {mcli_framework-8.0.51 → mcli_framework-8.0.53}/src/mcli/workflow/videos/__init__.py +0 -0
  363. {mcli_framework-8.0.51 → mcli_framework-8.0.53}/src/mcli/workflow/wakatime/__init__.py +0 -0
  364. {mcli_framework-8.0.51 → mcli_framework-8.0.53}/src/mcli/workflow/wakatime/wakatime.py +0 -0
  365. {mcli_framework-8.0.51 → mcli_framework-8.0.53}/src/mcli/workflow/workflow.py +0 -0
  366. {mcli_framework-8.0.51 → mcli_framework-8.0.53}/src/mcli_framework.egg-info/dependency_links.txt +0 -0
  367. {mcli_framework-8.0.51 → mcli_framework-8.0.53}/src/mcli_framework.egg-info/entry_points.txt +0 -0
  368. {mcli_framework-8.0.51 → mcli_framework-8.0.53}/src/mcli_framework.egg-info/requires.txt +0 -0
  369. {mcli_framework-8.0.51 → mcli_framework-8.0.53}/src/mcli_framework.egg-info/top_level.txt +0 -0
@@ -0,0 +1,49 @@
1
+ version: 2
2
+ updates:
3
+ # Python dependencies
4
+ - package-ecosystem: "pip"
5
+ directory: "/"
6
+ schedule:
7
+ interval: "weekly"
8
+ day: "monday"
9
+ open-pull-requests-limit: 10
10
+ reviewers:
11
+ - "gwicho38"
12
+ labels:
13
+ - "dependencies"
14
+ - "python"
15
+ commit-message:
16
+ prefix: "chore"
17
+ include: "scope"
18
+
19
+ # GitHub Actions
20
+ - package-ecosystem: "github-actions"
21
+ directory: "/"
22
+ schedule:
23
+ interval: "weekly"
24
+ day: "monday"
25
+ open-pull-requests-limit: 5
26
+ reviewers:
27
+ - "gwicho38"
28
+ labels:
29
+ - "dependencies"
30
+ - "github-actions"
31
+ commit-message:
32
+ prefix: "chore"
33
+ include: "scope"
34
+
35
+ # Docker
36
+ - package-ecosystem: "docker"
37
+ directory: "/"
38
+ schedule:
39
+ interval: "weekly"
40
+ day: "monday"
41
+ open-pull-requests-limit: 5
42
+ reviewers:
43
+ - "gwicho38"
44
+ labels:
45
+ - "dependencies"
46
+ - "docker"
47
+ commit-message:
48
+ prefix: "chore"
49
+ include: "scope"
@@ -0,0 +1,17 @@
1
+ # Dependency Review configuration
2
+ # https://docs.github.com/en/code-security/supply-chain-security/understanding-your-software-supply-chain/configuring-dependency-review
3
+
4
+ # Fail on moderate and above vulnerabilities
5
+ fail-on-severity: moderate
6
+
7
+ # Allow specific licenses commonly used in npm packages
8
+ allow-licenses:
9
+ - MIT
10
+ - Apache-2.0
11
+ - BSD-2-Clause
12
+ - BSD-3-Clause
13
+ - ISC
14
+ - 0BSD
15
+
16
+ # Comment on PRs with dependency changes
17
+ comment-summary-in-pr: on-failure
@@ -0,0 +1,102 @@
1
+ name: Build and Package
2
+
3
+ on:
4
+ push:
5
+ branches: [ main ]
6
+ pull_request:
7
+ branches: [ main ]
8
+ workflow_dispatch:
9
+ inputs:
10
+ debug:
11
+ description: 'Enable debug mode'
12
+ required: false
13
+ default: false
14
+ type: boolean
15
+
16
+ env:
17
+ PYTHON_VERSION: '3.11'
18
+ UV_VERSION: 'latest'
19
+
20
+ jobs:
21
+ build:
22
+ name: Build Package
23
+ strategy:
24
+ matrix:
25
+ platform: [ubuntu-latest] # self-hosted linux
26
+
27
+ runs-on: [self-hosted, linux, x64]
28
+
29
+ steps:
30
+ - name: Checkout code
31
+ uses: actions/checkout@v4
32
+
33
+ - name: Set up Python
34
+ uses: actions/setup-python@v4
35
+ with:
36
+ python-version: ${{ env.PYTHON_VERSION }}
37
+
38
+ - name: Install UV
39
+ run: |
40
+ if [[ "${{ matrix.platform }}" == "ubuntu-latest" ]]; then
41
+ curl -LsSf https://astral.sh/uv/install.sh | sh
42
+ echo "$HOME/.cargo/bin" >> $GITHUB_PATH
43
+ elif [[ "${{ matrix.platform }}" == "macos-latest" ]]; then
44
+ curl -LsSf https://astral.sh/uv/install.sh | sh
45
+ echo "$HOME/.cargo/bin" >> $GITHUB_PATH
46
+ fi
47
+
48
+ - name: Set up environment
49
+ run: |
50
+ if command -v uv >/dev/null 2>&1; then
51
+ make setup
52
+ else
53
+ python -m pip install --upgrade pip build
54
+ pip install -e .
55
+ fi
56
+
57
+ - name: Build wheel
58
+ run: |
59
+ if command -v uv >/dev/null 2>&1; then
60
+ make wheel
61
+ else
62
+ python -m build --wheel
63
+ fi
64
+
65
+ - name: Test basic functionality
66
+ run: |
67
+ if command -v uv >/dev/null 2>&1; then
68
+ make test
69
+ else
70
+ python -c "import mcli; print('✅ Package imports successfully')"
71
+ python -m mcli --help
72
+ fi
73
+
74
+ - name: Upload wheel artifact
75
+ uses: actions/upload-artifact@v4
76
+ with:
77
+ name: mcli-wheel-${{ matrix.platform }}
78
+ path: dist/*.whl
79
+ retention-days: 30
80
+
81
+
82
+ build-summary:
83
+ name: Build Summary
84
+ needs: build
85
+ runs-on: [self-hosted, linux, x64]
86
+ if: always()
87
+
88
+ steps:
89
+ - name: Build Status Summary
90
+ run: |
91
+ echo "## Build Results" >> $GITHUB_STEP_SUMMARY
92
+ echo "| Platform | Status |" >> $GITHUB_STEP_SUMMARY
93
+ echo "|----------|--------|" >> $GITHUB_STEP_SUMMARY
94
+ echo "| Ubuntu | ${{ needs.build.result }} |" >> $GITHUB_STEP_SUMMARY
95
+ echo "| macOS | ${{ needs.build.result }} |" >> $GITHUB_STEP_SUMMARY
96
+ echo "| Windows | ${{ needs.build.result }} |" >> $GITHUB_STEP_SUMMARY
97
+
98
+ if [ "${{ needs.build.result }}" = "success" ]; then
99
+ echo "✅ All builds completed successfully!" >> $GITHUB_STEP_SUMMARY
100
+ else
101
+ echo "❌ Some builds failed. Check the logs for details." >> $GITHUB_STEP_SUMMARY
102
+ fi
@@ -0,0 +1,274 @@
1
+ name: CI/CD Pipeline
2
+
3
+ on:
4
+ push:
5
+ branches: [ main, develop ]
6
+ pull_request:
7
+ branches: [ main ]
8
+ workflow_dispatch:
9
+
10
+ env:
11
+ PYTHON_VERSION: "3.11"
12
+
13
+ jobs:
14
+ lint-and-format:
15
+ name: Lint and Format Check
16
+ runs-on: [self-hosted, linux, x64]
17
+
18
+ steps:
19
+ - name: Checkout code
20
+ uses: actions/checkout@v4
21
+
22
+ - name: Set up Python
23
+ uses: actions/setup-python@v4
24
+ with:
25
+ python-version: ${{ env.PYTHON_VERSION }}
26
+
27
+ - name: Install dependencies
28
+ run: |
29
+ python -m pip install --upgrade pip
30
+ pip install -e .[dev]
31
+
32
+ - name: Check code formatting with Black
33
+ run: black --check --diff src/
34
+
35
+ - name: Check import sorting with isort
36
+ run: isort --check-only --diff src/
37
+
38
+ - name: Check for hardcoded strings
39
+ run: python tools/lint_hardcoded_strings.py --check-all --json
40
+ continue-on-error: true # Non-blocking until codebase refactoring is complete (13k+ violations)
41
+
42
+ - name: Type checking with mypy (full codebase)
43
+ run: mypy src/ --ignore-missing-imports
44
+ continue-on-error: true # Non-blocking due to type errors in remaining modules
45
+
46
+ - name: Type checking with mypy (priority modules)
47
+ run: |
48
+ # Check priority modules that have improved type annotations (issue #40)
49
+ # These modules have fewer errors and are gradually being fully typed
50
+ mypy src/mcli/lib/logger/logger.py src/mcli/lib/custom_commands.py --ignore-missing-imports
51
+ continue-on-error: true # Non-blocking until all function signatures are typed
52
+
53
+ test-rust:
54
+ name: Test Rust Extensions
55
+ runs-on: [self-hosted, linux, x64]
56
+ continue-on-error: true # Non-blocking: macOS has LLVM version mismatch, tests pass on Ubuntu
57
+ strategy:
58
+ fail-fast: false
59
+ matrix:
60
+ os: [ubuntu-latest] # self-hosted linux
61
+
62
+ steps:
63
+ - name: Checkout code
64
+ uses: actions/checkout@v4
65
+
66
+ - name: Set up Python
67
+ uses: actions/setup-python@v4
68
+ with:
69
+ python-version: ${{ env.PYTHON_VERSION }}
70
+
71
+ - name: Set up Rust
72
+ uses: dtolnay/rust-toolchain@stable
73
+ with:
74
+ components: rustfmt, clippy
75
+
76
+ - name: Rust format check
77
+ run: |
78
+ cd mcli_rust
79
+ cargo fmt --all -- --check
80
+
81
+ - name: Rust clippy
82
+ run: |
83
+ cd mcli_rust
84
+ cargo clippy -- -D warnings || cargo clippy || echo "Warning: Clippy found issues, continuing"
85
+ continue-on-error: ${{ matrix.os == 'macos-latest' }}
86
+
87
+ - name: Rust tests
88
+ run: |
89
+ cd mcli_rust
90
+ cargo test
91
+
92
+ test-python:
93
+ name: Test Python Package
94
+ runs-on: [self-hosted, linux, x64]
95
+ continue-on-error: true # Some tests require optional deps (pandas, pydot) not in [dev]
96
+ strategy:
97
+ fail-fast: false
98
+ matrix:
99
+ os: [ubuntu-latest] # self-hosted linux
100
+ python-version: ["3.10", "3.11", "3.12"]
101
+
102
+ steps:
103
+ - name: Checkout code
104
+ uses: actions/checkout@v4
105
+
106
+ - name: Set up Python
107
+ uses: actions/setup-python@v4
108
+ with:
109
+ python-version: ${{ matrix.python-version }}
110
+
111
+ - name: Install system dependencies (Ubuntu)
112
+ if: matrix.os == 'ubuntu-latest'
113
+ run: |
114
+ sudo apt-get update
115
+ sudo apt-get install -y build-essential libpq-dev
116
+
117
+ - name: Install system dependencies (macOS)
118
+ if: matrix.os == 'macos-latest'
119
+ run: |
120
+ brew install postgresql@16
121
+
122
+ - name: Set up Rust (for building extensions)
123
+ uses: dtolnay/rust-toolchain@stable
124
+
125
+ - name: Install Python dependencies
126
+ run: |
127
+ python -m pip install --upgrade pip
128
+ pip install maturin
129
+ pip install -e .[dev]
130
+
131
+ - name: Build Rust extensions
132
+ run: |
133
+ cd mcli_rust
134
+ maturin develop --release || maturin develop || echo "Warning: Rust extension build failed, continuing without extensions"
135
+ continue-on-error: ${{ matrix.python-version == '3.12' }}
136
+
137
+ - name: Run Python tests with coverage
138
+ run: |
139
+ pytest tests/ -v --tb=short --cov=src/mcli --cov-report=xml --cov-report=term-missing
140
+
141
+ - name: Upload coverage to Codecov
142
+ uses: codecov/codecov-action@v4
143
+ if: matrix.os == 'ubuntu-latest' && matrix.python-version == '3.11'
144
+ with:
145
+ file: ./coverage.xml
146
+ flags: unittests
147
+ name: codecov-umbrella
148
+ fail_ci_if_error: false
149
+
150
+ - name: Test CLI functionality
151
+ run: |
152
+ mcli self version
153
+ mcli --help
154
+ mcli self --help
155
+
156
+ integration-test:
157
+ name: Integration Tests
158
+ runs-on: [self-hosted, linux, x64]
159
+ continue-on-error: true # Non-blocking: Rust-Python integration depends on optional extensions
160
+ if: always() # Run even if test-python or test-rust fail
161
+ needs: [test-python, test-rust]
162
+
163
+ steps:
164
+ - name: Checkout code
165
+ uses: actions/checkout@v4
166
+
167
+ - name: Set up Python
168
+ uses: actions/setup-python@v4
169
+ with:
170
+ python-version: ${{ env.PYTHON_VERSION }}
171
+
172
+ - name: Set up Rust
173
+ uses: dtolnay/rust-toolchain@stable
174
+
175
+ - name: Create virtual environment
176
+ run: |
177
+ python -m venv .venv
178
+ echo "VIRTUAL_ENV=${{ github.workspace }}/.venv" >> $GITHUB_ENV
179
+ echo "${{ github.workspace }}/.venv/bin" >> $GITHUB_PATH
180
+
181
+ - name: Install dependencies
182
+ run: |
183
+ .venv/bin/python -m pip install --upgrade pip
184
+ .venv/bin/pip install maturin
185
+ .venv/bin/pip install -e .[dev]
186
+
187
+ - name: Build Rust extensions
188
+ id: rust_build
189
+ run: |
190
+ cd mcli_rust
191
+ if maturin develop --release; then
192
+ echo "rust_available=true" >> $GITHUB_OUTPUT
193
+ elif maturin develop; then
194
+ echo "rust_available=true" >> $GITHUB_OUTPUT
195
+ else
196
+ echo "rust_available=false" >> $GITHUB_OUTPUT
197
+ echo "Warning: Rust extension build failed"
198
+ fi
199
+ continue-on-error: true
200
+
201
+ - name: Test Rust-Python integration
202
+ if: steps.rust_build.outputs.rust_available == 'true'
203
+ run: |
204
+ .venv/bin/python -c "
205
+ import mcli_rust
206
+ print('✅ Rust extensions imported successfully')
207
+
208
+ # Test TF-IDF
209
+ vectorizer = mcli_rust.TfIdfVectorizer()
210
+ docs = ['hello world', 'rust is fast', 'python integration']
211
+ vectors = vectorizer.fit_transform(docs)
212
+ print(f'✅ TF-IDF: Generated {len(vectors)} vectors')
213
+
214
+ # Test File Watcher
215
+ watcher = mcli_rust.FileWatcher()
216
+ print('✅ File Watcher: Created successfully')
217
+
218
+ # Test Command Matcher
219
+ matcher = mcli_rust.CommandMatcher()
220
+ print('✅ Command Matcher: Created successfully')
221
+
222
+ # Test Process Manager
223
+ manager = mcli_rust.ProcessManager()
224
+ print('✅ Process Manager: Created successfully')
225
+
226
+ print('🎉 All Rust extensions working!')
227
+ "
228
+
229
+ - name: Test CLI basic functionality
230
+ run: |
231
+ .venv/bin/mcli self version
232
+ .venv/bin/mcli --help
233
+ .venv/bin/mcli health
234
+
235
+ build-package:
236
+ name: Build Distribution Package
237
+ runs-on: [self-hosted, linux, x64]
238
+ if: always() # Run even if tests fail
239
+ needs: [lint-and-format, test-python, test-rust, integration-test]
240
+
241
+ steps:
242
+ - name: Checkout code
243
+ uses: actions/checkout@v4
244
+
245
+ - name: Set up Python
246
+ uses: actions/setup-python@v4
247
+ with:
248
+ python-version: ${{ env.PYTHON_VERSION }}
249
+
250
+ - name: Set up Rust
251
+ uses: dtolnay/rust-toolchain@stable
252
+
253
+ - name: Install build dependencies
254
+ run: |
255
+ python -m pip install --upgrade pip
256
+ pip install build maturin
257
+
258
+ - name: Build Rust extensions
259
+ run: |
260
+ cd mcli_rust
261
+ maturin build --release
262
+
263
+ - name: Build Python package
264
+ run: |
265
+ python -m build
266
+
267
+ - name: Upload build artifacts
268
+ uses: actions/upload-artifact@v4
269
+ with:
270
+ name: dist-packages
271
+ path: |
272
+ dist/
273
+ mcli_rust/target/wheels/
274
+ retention-days: 7
@@ -0,0 +1,43 @@
1
+ name: CodeQL Security Analysis
2
+
3
+ on:
4
+ push:
5
+ branches: [ main, develop ]
6
+ pull_request:
7
+ branches: [ main ]
8
+ schedule:
9
+ # Run at 00:00 every Sunday
10
+ - cron: '0 0 * * 0'
11
+ workflow_dispatch:
12
+
13
+ jobs:
14
+ analyze:
15
+ name: Analyze Code with CodeQL
16
+ runs-on: ubuntu-latest
17
+ permissions:
18
+ actions: read
19
+ contents: read
20
+ security-events: write
21
+
22
+ strategy:
23
+ fail-fast: false
24
+ matrix:
25
+ language: [ 'python' ]
26
+
27
+ steps:
28
+ - name: Checkout repository
29
+ uses: actions/checkout@v4
30
+
31
+ - name: Initialize CodeQL
32
+ uses: github/codeql-action/init@v3
33
+ with:
34
+ languages: ${{ matrix.language }}
35
+ queries: +security-and-quality
36
+
37
+ - name: Autobuild
38
+ uses: github/codeql-action/autobuild@v3
39
+
40
+ - name: Perform CodeQL Analysis
41
+ uses: github/codeql-action/analyze@v3
42
+ with:
43
+ category: "/language:${{ matrix.language }}"
@@ -0,0 +1,48 @@
1
+ name: Validate Documentation
2
+
3
+ on:
4
+ push:
5
+ branches: [main, develop]
6
+ paths:
7
+ - 'docs/**'
8
+ - 'README.md'
9
+ - 'CONTRIBUTING.md'
10
+ - 'tools/validate_doc*'
11
+ - 'pyproject.toml'
12
+ pull_request:
13
+ branches: [main]
14
+ paths:
15
+ - 'docs/**'
16
+ - 'README.md'
17
+ - 'CONTRIBUTING.md'
18
+ - 'tools/validate_doc*'
19
+ - 'pyproject.toml'
20
+ workflow_dispatch:
21
+
22
+ jobs:
23
+ validate-docs:
24
+ name: Validate Documentation Quality
25
+ runs-on: ubuntu-latest
26
+
27
+ steps:
28
+ - name: Checkout code
29
+ uses: actions/checkout@v4
30
+
31
+ - name: Set up Python
32
+ uses: actions/setup-python@v5
33
+ with:
34
+ python-version: '3.11'
35
+
36
+ - name: Install dependencies
37
+ run: pip install requests
38
+
39
+ - name: Validate internal links (non-blocking until broken links are fixed)
40
+ run: python tools/validate_doc_links.py README.md docs/
41
+ continue-on-error: true
42
+
43
+ - name: Validate version consistency and code syntax (blocking)
44
+ run: python tools/validate_docs.py
45
+
46
+ - name: Validate external links (non-blocking)
47
+ run: python tools/validate_doc_links.py --external --timeout 15 README.md docs/
48
+ continue-on-error: true