ellf-cli 20.0.6__tar.gz → 21.0.0__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 (403) hide show
  1. {ellf_cli-20.0.6/ellf_cli.egg-info → ellf_cli-21.0.0}/PKG-INFO +1 -1
  2. {ellf_cli-20.0.6 → ellf_cli-21.0.0}/README.md +1 -1
  3. {ellf_cli-20.0.6 → ellf_cli-21.0.0}/ellf_cli/agents.py +19 -5
  4. {ellf_cli-20.0.6 → ellf_cli-21.0.0}/ellf_cli/commands/infra/init_values.py +3 -2
  5. {ellf_cli-20.0.6 → ellf_cli-21.0.0}/ellf_cli/ellf.json +3 -3
  6. {ellf_cli-20.0.6 → ellf_cli-21.0.0}/ellf_cli/helm.py +23 -2
  7. {ellf_cli-20.0.6 → ellf_cli-21.0.0}/ellf_cli/messages.py +2 -2
  8. ellf_cli-21.0.0/ellf_cli/version/20.0.6_2026-10-15-14-17-40_patch_df3a5d3c-f0e0-46cb-aeaf-15b51c8a0f13 +3 -0
  9. ellf_cli-21.0.0/ellf_cli/version/20.0.7_2026-10-16-07-09-40_major_3e5dfba3-2810-47b4-85a9-938bfff72a04 +3 -0
  10. {ellf_cli-20.0.6 → ellf_cli-21.0.0/ellf_cli.egg-info}/PKG-INFO +1 -1
  11. {ellf_cli-20.0.6 → ellf_cli-21.0.0}/ellf_cli.egg-info/SOURCES.txt +2 -0
  12. {ellf_cli-20.0.6 → ellf_cli-21.0.0}/tests/test_agents.py +26 -2
  13. {ellf_cli-20.0.6 → ellf_cli-21.0.0}/tests/test_infra_start_fixes.py +7 -0
  14. {ellf_cli-20.0.6 → ellf_cli-21.0.0}/LICENSE +0 -0
  15. {ellf_cli-20.0.6 → ellf_cli-21.0.0}/MANIFEST.in +0 -0
  16. {ellf_cli-20.0.6 → ellf_cli-21.0.0}/ellf_cli/__init__.py +0 -0
  17. {ellf_cli-20.0.6 → ellf_cli-21.0.0}/ellf_cli/__main__.py +0 -0
  18. {ellf_cli-20.0.6 → ellf_cli-21.0.0}/ellf_cli/about.json +0 -0
  19. {ellf_cli-20.0.6 → ellf_cli-21.0.0}/ellf_cli/about.py +0 -0
  20. {ellf_cli-20.0.6 → ellf_cli-21.0.0}/ellf_cli/appdirs.py +0 -0
  21. {ellf_cli-20.0.6 → ellf_cli-21.0.0}/ellf_cli/auth.py +0 -0
  22. {ellf_cli-20.0.6 → ellf_cli-21.0.0}/ellf_cli/cli.py +0 -0
  23. {ellf_cli-20.0.6 → ellf_cli-21.0.0}/ellf_cli/cloud/__init__.py +0 -0
  24. {ellf_cli-20.0.6 → ellf_cli-21.0.0}/ellf_cli/cloud/gcp.py +0 -0
  25. {ellf_cli-20.0.6 → ellf_cli-21.0.0}/ellf_cli/cluster_config.py +0 -0
  26. {ellf_cli-20.0.6 → ellf_cli-21.0.0}/ellf_cli/commands/__init__.py +0 -0
  27. {ellf_cli-20.0.6 → ellf_cli-21.0.0}/ellf_cli/commands/_cluster_select.py +0 -0
  28. {ellf_cli-20.0.6 → ellf_cli-21.0.0}/ellf_cli/commands/_org_select.py +0 -0
  29. {ellf_cli-20.0.6 → ellf_cli-21.0.0}/ellf_cli/commands/_project_scope.py +0 -0
  30. {ellf_cli-20.0.6 → ellf_cli-21.0.0}/ellf_cli/commands/_recipe_file.py +0 -0
  31. {ellf_cli-20.0.6 → ellf_cli-21.0.0}/ellf_cli/commands/_recipe_subcommand.py +0 -0
  32. {ellf_cli-20.0.6 → ellf_cli-21.0.0}/ellf_cli/commands/_state.py +0 -0
  33. {ellf_cli-20.0.6 → ellf_cli-21.0.0}/ellf_cli/commands/_usage.py +0 -0
  34. {ellf_cli-20.0.6 → ellf_cli-21.0.0}/ellf_cli/commands/actions.py +0 -0
  35. {ellf_cli-20.0.6 → ellf_cli-21.0.0}/ellf_cli/commands/agents.py +0 -0
  36. {ellf_cli-20.0.6 → ellf_cli-21.0.0}/ellf_cli/commands/assets.py +0 -0
  37. {ellf_cli-20.0.6 → ellf_cli-21.0.0}/ellf_cli/commands/auth.py +0 -0
  38. {ellf_cli-20.0.6 → ellf_cli-21.0.0}/ellf_cli/commands/clusters.py +0 -0
  39. {ellf_cli-20.0.6 → ellf_cli-21.0.0}/ellf_cli/commands/config.py +0 -0
  40. {ellf_cli-20.0.6 → ellf_cli-21.0.0}/ellf_cli/commands/datasets.py +0 -0
  41. {ellf_cli-20.0.6 → ellf_cli-21.0.0}/ellf_cli/commands/files/__init__.py +0 -0
  42. {ellf_cli-20.0.6 → ellf_cli-21.0.0}/ellf_cli/commands/files/cp.py +0 -0
  43. {ellf_cli-20.0.6 → ellf_cli-21.0.0}/ellf_cli/commands/files/ls.py +0 -0
  44. {ellf_cli-20.0.6 → ellf_cli-21.0.0}/ellf_cli/commands/files/rm.py +0 -0
  45. {ellf_cli-20.0.6 → ellf_cli-21.0.0}/ellf_cli/commands/files/rsync.py +0 -0
  46. {ellf_cli-20.0.6 → ellf_cli-21.0.0}/ellf_cli/commands/files/stats.py +0 -0
  47. {ellf_cli-20.0.6 → ellf_cli-21.0.0}/ellf_cli/commands/general.py +0 -0
  48. {ellf_cli-20.0.6 → ellf_cli-21.0.0}/ellf_cli/commands/import_export.py +0 -0
  49. {ellf_cli-20.0.6 → ellf_cli-21.0.0}/ellf_cli/commands/infra/__init__.py +0 -0
  50. {ellf_cli-20.0.6 → ellf_cli-21.0.0}/ellf_cli/commands/infra/_config_io.py +0 -0
  51. {ellf_cli-20.0.6 → ellf_cli-21.0.0}/ellf_cli/commands/infra/_helpers.py +0 -0
  52. {ellf_cli-20.0.6 → ellf_cli-21.0.0}/ellf_cli/commands/infra/configure.py +0 -0
  53. {ellf_cli-20.0.6 → ellf_cli-21.0.0}/ellf_cli/commands/infra/deploy.py +0 -0
  54. {ellf_cli-20.0.6 → ellf_cli-21.0.0}/ellf_cli/commands/infra/hibernate.py +0 -0
  55. {ellf_cli-20.0.6 → ellf_cli-21.0.0}/ellf_cli/commands/infra/init.py +0 -0
  56. {ellf_cli-20.0.6 → ellf_cli-21.0.0}/ellf_cli/commands/infra/pause.py +0 -0
  57. {ellf_cli-20.0.6 → ellf_cli-21.0.0}/ellf_cli/commands/infra/provision.py +0 -0
  58. {ellf_cli-20.0.6 → ellf_cli-21.0.0}/ellf_cli/commands/infra/register.py +0 -0
  59. {ellf_cli-20.0.6 → ellf_cli-21.0.0}/ellf_cli/commands/infra/setup.py +0 -0
  60. {ellf_cli-20.0.6 → ellf_cli-21.0.0}/ellf_cli/commands/infra/start.py +0 -0
  61. {ellf_cli-20.0.6 → ellf_cli-21.0.0}/ellf_cli/commands/infra/terraform.py +0 -0
  62. {ellf_cli-20.0.6 → ellf_cli-21.0.0}/ellf_cli/commands/infra/tls.py +0 -0
  63. {ellf_cli-20.0.6 → ellf_cli-21.0.0}/ellf_cli/commands/jobs.py +0 -0
  64. {ellf_cli-20.0.6 → ellf_cli-21.0.0}/ellf_cli/commands/mcp.py +0 -0
  65. {ellf_cli-20.0.6 → ellf_cli-21.0.0}/ellf_cli/commands/packages.py +0 -0
  66. {ellf_cli-20.0.6 → ellf_cli-21.0.0}/ellf_cli/commands/paths.py +0 -0
  67. {ellf_cli-20.0.6 → ellf_cli-21.0.0}/ellf_cli/commands/plans.py +0 -0
  68. {ellf_cli-20.0.6 → ellf_cli-21.0.0}/ellf_cli/commands/projects.py +0 -0
  69. {ellf_cli-20.0.6 → ellf_cli-21.0.0}/ellf_cli/commands/publish_code.py +0 -0
  70. {ellf_cli-20.0.6 → ellf_cli-21.0.0}/ellf_cli/commands/publish_data.py +0 -0
  71. {ellf_cli-20.0.6 → ellf_cli-21.0.0}/ellf_cli/commands/recipes.py +0 -0
  72. {ellf_cli-20.0.6 → ellf_cli-21.0.0}/ellf_cli/commands/secrets.py +0 -0
  73. {ellf_cli-20.0.6 → ellf_cli-21.0.0}/ellf_cli/commands/services.py +0 -0
  74. {ellf_cli-20.0.6 → ellf_cli-21.0.0}/ellf_cli/commands/sessions.py +0 -0
  75. {ellf_cli-20.0.6 → ellf_cli-21.0.0}/ellf_cli/commands/support.py +0 -0
  76. {ellf_cli-20.0.6 → ellf_cli-21.0.0}/ellf_cli/commands/tasks.py +0 -0
  77. {ellf_cli-20.0.6 → ellf_cli-21.0.0}/ellf_cli/commands/todos.py +0 -0
  78. {ellf_cli-20.0.6 → ellf_cli-21.0.0}/ellf_cli/commands/users.py +0 -0
  79. {ellf_cli-20.0.6 → ellf_cli-21.0.0}/ellf_cli/config.py +0 -0
  80. {ellf_cli-20.0.6 → ellf_cli-21.0.0}/ellf_cli/ellf_skills/.gitignore +0 -0
  81. {ellf_cli-20.0.6 → ellf_cli-21.0.0}/ellf_cli/ellf_skills/render.py +0 -0
  82. {ellf_cli-20.0.6 → ellf_cli-21.0.0}/ellf_cli/ellf_skills/skills/ellf-annotate/SKILL.assistant.md +0 -0
  83. {ellf_cli-20.0.6 → ellf_cli-21.0.0}/ellf_cli/ellf_skills/skills/ellf-annotate/SKILL.coding.md +0 -0
  84. {ellf_cli-20.0.6 → ellf_cli-21.0.0}/ellf_cli/ellf_skills/skills/ellf-annotate/references/annotation_audit.assistant.md +0 -0
  85. {ellf_cli-20.0.6 → ellf_cli-21.0.0}/ellf_cli/ellf_skills/skills/ellf-annotate/references/annotation_audit.coding.md +0 -0
  86. {ellf_cli-20.0.6 → ellf_cli-21.0.0}/ellf_cli/ellf_skills/skills/ellf-annotate/references/builtin_ellf_annotation_recipes.assistant.md +0 -0
  87. {ellf_cli-20.0.6 → ellf_cli-21.0.0}/ellf_cli/ellf_skills/skills/ellf-annotate/references/builtin_ellf_annotation_recipes.coding.md +0 -0
  88. {ellf_cli-20.0.6 → ellf_cli-21.0.0}/ellf_cli/ellf_skills/skills/ellf-annotate/references/builtin_prodigy_recipes.coding.md +0 -0
  89. {ellf_cli-20.0.6 → ellf_cli-21.0.0}/ellf_cli/ellf_skills/skills/ellf-annotate/references/label_schemes.assistant.md +0 -0
  90. {ellf_cli-20.0.6 → ellf_cli-21.0.0}/ellf_cli/ellf_skills/skills/ellf-annotate/references/label_schemes.coding.md +0 -0
  91. {ellf_cli-20.0.6 → ellf_cli-21.0.0}/ellf_cli/ellf_skills/skills/ellf-ask/SKILL.md +0 -0
  92. {ellf_cli-20.0.6 → ellf_cli-21.0.0}/ellf_cli/ellf_skills/skills/ellf-handoff/SKILL.assistant.md +0 -0
  93. {ellf_cli-20.0.6 → ellf_cli-21.0.0}/ellf_cli/ellf_skills/skills/ellf-monitor/SKILL.assistant.md +0 -0
  94. {ellf_cli-20.0.6 → ellf_cli-21.0.0}/ellf_cli/ellf_skills/skills/ellf-monitor/SKILL.coding.md +0 -0
  95. {ellf_cli-20.0.6 → ellf_cli-21.0.0}/ellf_cli/ellf_skills/skills/ellf-monitor/references/annotation_metrics.assistant.md +0 -0
  96. {ellf_cli-20.0.6 → ellf_cli-21.0.0}/ellf_cli/ellf_skills/skills/ellf-monitor/references/annotation_metrics.coding.md +0 -0
  97. {ellf_cli-20.0.6 → ellf_cli-21.0.0}/ellf_cli/ellf_skills/skills/ellf-monitor/references/training_monitoring.assistant.md +0 -0
  98. {ellf_cli-20.0.6 → ellf_cli-21.0.0}/ellf_cli/ellf_skills/skills/ellf-monitor/references/training_monitoring.coding.md +0 -0
  99. {ellf_cli-20.0.6 → ellf_cli-21.0.0}/ellf_cli/ellf_skills/skills/ellf-monitor/scripts.coding/check_training.py +0 -0
  100. {ellf_cli-20.0.6 → ellf_cli-21.0.0}/ellf_cli/ellf_skills/skills/ellf-ops/SKILL.assistant.md +0 -0
  101. {ellf_cli-20.0.6 → ellf_cli-21.0.0}/ellf_cli/ellf_skills/skills/ellf-ops/SKILL.coding.md +0 -0
  102. {ellf_cli-20.0.6 → ellf_cli-21.0.0}/ellf_cli/ellf_skills/skills/ellf-ops/references.coding/data_infra_cli.md +0 -0
  103. {ellf_cli-20.0.6 → ellf_cli-21.0.0}/ellf_cli/ellf_skills/skills/ellf-ops/scripts.coding/run_job.py +0 -0
  104. {ellf_cli-20.0.6 → ellf_cli-21.0.0}/ellf_cli/ellf_skills/skills/ellf-patterns/SKILL.coding.md +0 -0
  105. {ellf_cli-20.0.6 → ellf_cli-21.0.0}/ellf_cli/ellf_skills/skills/ellf-patterns/references/pattern_strategies.md +0 -0
  106. {ellf_cli-20.0.6 → ellf_cli-21.0.0}/ellf_cli/ellf_skills/skills/ellf-prodigy/SKILL.coding.md +0 -0
  107. {ellf_cli-20.0.6 → ellf_cli-21.0.0}/ellf_cli/ellf_skills/skills/ellf-prodigy/assets/templates/template_action_recipe.py +0 -0
  108. {ellf_cli-20.0.6 → ellf_cli-21.0.0}/ellf_cli/ellf_skills/skills/ellf-prodigy/assets/templates/template_agent_recipe.py +0 -0
  109. {ellf_cli-20.0.6 → ellf_cli-21.0.0}/ellf_cli/ellf_skills/skills/ellf-prodigy/assets/templates/template_blocks_ui.py +0 -0
  110. {ellf_cli-20.0.6 → ellf_cli-21.0.0}/ellf_cli/ellf_skills/skills/ellf-prodigy/assets/templates/template_correct.py +0 -0
  111. {ellf_cli-20.0.6 → ellf_cli-21.0.0}/ellf_cli/ellf_skills/skills/ellf-prodigy/assets/templates/template_custom_ui.py +0 -0
  112. {ellf_cli-20.0.6 → ellf_cli-21.0.0}/ellf_cli/ellf_skills/skills/ellf-prodigy/assets/templates/template_manual.py +0 -0
  113. {ellf_cli-20.0.6 → ellf_cli-21.0.0}/ellf_cli/ellf_skills/skills/ellf-prodigy/assets/templates/template_pages_ui.py +0 -0
  114. {ellf_cli-20.0.6 → ellf_cli-21.0.0}/ellf_cli/ellf_skills/skills/ellf-prodigy/assets/templates/template_routing.py +0 -0
  115. {ellf_cli-20.0.6 → ellf_cli-21.0.0}/ellf_cli/ellf_skills/skills/ellf-prodigy/assets/templates/template_service_recipe.py +0 -0
  116. {ellf_cli-20.0.6 → ellf_cli-21.0.0}/ellf_cli/ellf_skills/skills/ellf-prodigy/assets/templates/template_task_recipe.py +0 -0
  117. {ellf_cli-20.0.6 → ellf_cli-21.0.0}/ellf_cli/ellf_skills/skills/ellf-prodigy/assets/templates/template_teach.py +0 -0
  118. {ellf_cli-20.0.6 → ellf_cli-21.0.0}/ellf_cli/ellf_skills/skills/ellf-prodigy/references/builtin_recipes.md +0 -0
  119. {ellf_cli-20.0.6 → ellf_cli-21.0.0}/ellf_cli/ellf_skills/skills/ellf-prodigy/references/ellf_recipe_sdk.md +0 -0
  120. {ellf_cli-20.0.6 → ellf_cli-21.0.0}/ellf_cli/ellf_skills/skills/ellf-prodigy/references/lint_recipe.py +0 -0
  121. {ellf_cli-20.0.6 → ellf_cli-21.0.0}/ellf_cli/ellf_skills/skills/ellf-prodigy/references/prodigy_recipe_api.md +0 -0
  122. {ellf_cli-20.0.6 → ellf_cli-21.0.0}/ellf_cli/ellf_skills/skills/ellf-prodigy/references/template_index.md +0 -0
  123. {ellf_cli-20.0.6 → ellf_cli-21.0.0}/ellf_cli/ellf_skills/skills/ellf-project/SKILL.assistant.md +0 -0
  124. {ellf_cli-20.0.6 → ellf_cli-21.0.0}/ellf_cli/ellf_skills/skills/ellf-project/SKILL.coding.md +0 -0
  125. {ellf_cli-20.0.6 → ellf_cli-21.0.0}/ellf_cli/ellf_skills/skills/ellf-project/references/annotation_agents.md +0 -0
  126. {ellf_cli-20.0.6 → ellf_cli-21.0.0}/ellf_cli/ellf_skills/skills/ellf-project/references/consulting_patterns.md +0 -0
  127. {ellf_cli-20.0.6 → ellf_cli-21.0.0}/ellf_cli/ellf_skills/skills/ellf-project/references/explosion_strategy.md +0 -0
  128. {ellf_cli-20.0.6 → ellf_cli-21.0.0}/ellf_cli/ellf_skills/skills/ellf-project/references/label_schemes.assistant.md +0 -0
  129. {ellf_cli-20.0.6 → ellf_cli-21.0.0}/ellf_cli/ellf_skills/skills/ellf-project/references/label_schemes.coding.md +0 -0
  130. {ellf_cli-20.0.6 → ellf_cli-21.0.0}/ellf_cli/ellf_skills/skills/ellf-support/SKILL.assistant.md +0 -0
  131. {ellf_cli-20.0.6 → ellf_cli-21.0.0}/ellf_cli/ellf_skills/skills/ellf-support/SKILL.coding.md +0 -0
  132. {ellf_cli-20.0.6 → ellf_cli-21.0.0}/ellf_cli/ellf_skills/skills/ellf-todo/SKILL.coding.md +0 -0
  133. {ellf_cli-20.0.6 → ellf_cli-21.0.0}/ellf_cli/ellf_skills/skills/ellf-train/SKILL.assistant.md +0 -0
  134. {ellf_cli-20.0.6 → ellf_cli-21.0.0}/ellf_cli/ellf_skills/skills/ellf-train/SKILL.coding.md +0 -0
  135. {ellf_cli-20.0.6 → ellf_cli-21.0.0}/ellf_cli/ellf_skills/skills/ellf-train/references/config_advanced.coding.md +0 -0
  136. {ellf_cli-20.0.6 → ellf_cli-21.0.0}/ellf_cli/ellf_skills/skills/ellf-train/references/config_architectures.coding.md +0 -0
  137. {ellf_cli-20.0.6 → ellf_cli-21.0.0}/ellf_cli/ellf_skills/skills/ellf-train/references/config_training.coding.md +0 -0
  138. {ellf_cli-20.0.6 → ellf_cli-21.0.0}/ellf_cli/ellf_skills/skills/ellf-train/references/diagnostics.md +0 -0
  139. {ellf_cli-20.0.6 → ellf_cli-21.0.0}/ellf_cli/ellf_skills/skills/ellf-train/references/evaluation_guide.md +0 -0
  140. {ellf_cli-20.0.6 → ellf_cli-21.0.0}/ellf_cli/ellf_skills/skills/ellf-train/references/experiment_patterns.coding.md +0 -0
  141. {ellf_cli-20.0.6 → ellf_cli-21.0.0}/ellf_cli/ellf_skills/skills/ellf-train/references/model_selection.md +0 -0
  142. {ellf_cli-20.0.6 → ellf_cli-21.0.0}/ellf_cli/ellf_skills/skills/ellf-train/references/training_paradigms.md +0 -0
  143. {ellf_cli-20.0.6 → ellf_cli-21.0.0}/ellf_cli/ellf_skills/skills/ellf-train/references/training_troubleshooting.coding.md +0 -0
  144. {ellf_cli-20.0.6 → ellf_cli-21.0.0}/ellf_cli/ellf_skills/skills/ellf-train/references/workflow.assistant.md +0 -0
  145. {ellf_cli-20.0.6 → ellf_cli-21.0.0}/ellf_cli/ellf_skills/skills/ellf-train/references/workflow.coding.md +0 -0
  146. {ellf_cli-20.0.6 → ellf_cli-21.0.0}/ellf_cli/ellf_skills/skills/ellf-train/scripts.coding/ellf_logger.py +0 -0
  147. {ellf_cli-20.0.6 → ellf_cli-21.0.0}/ellf_cli/errors.py +0 -0
  148. {ellf_cli-20.0.6 → ellf_cli-21.0.0}/ellf_cli/interactivity.py +0 -0
  149. {ellf_cli-20.0.6 → ellf_cli-21.0.0}/ellf_cli/key_pair.py +0 -0
  150. {ellf_cli-20.0.6 → ellf_cli-21.0.0}/ellf_cli/main.py +0 -0
  151. {ellf_cli-20.0.6 → ellf_cli-21.0.0}/ellf_cli/mcp_proxy.py +0 -0
  152. {ellf_cli-20.0.6 → ellf_cli-21.0.0}/ellf_cli/pypi_auth.py +0 -0
  153. {ellf_cli-20.0.6 → ellf_cli-21.0.0}/ellf_cli/query.py +0 -0
  154. {ellf_cli-20.0.6 → ellf_cli-21.0.0}/ellf_cli/recipes_cookiecutter/cookiecutter.json +0 -0
  155. {ellf_cli-20.0.6 → ellf_cli-21.0.0}/ellf_cli/recipes_cookiecutter/{{cookiecutter.package_dir}}/.gitignore +0 -0
  156. {ellf_cli-20.0.6 → ellf_cli-21.0.0}/ellf_cli/recipes_cookiecutter/{{cookiecutter.package_dir}}/README.md.tmpl +0 -0
  157. {ellf_cli-20.0.6 → ellf_cli-21.0.0}/ellf_cli/recipes_cookiecutter/{{cookiecutter.package_dir}}/requirements-dev.in +0 -0
  158. {ellf_cli-20.0.6 → ellf_cli-21.0.0}/ellf_cli/recipes_cookiecutter/{{cookiecutter.package_dir}}/requirements.in +0 -0
  159. {ellf_cli-20.0.6 → ellf_cli-21.0.0}/ellf_cli/recipes_cookiecutter/{{cookiecutter.package_dir}}/setup.py.tmpl +0 -0
  160. {ellf_cli-20.0.6 → ellf_cli-21.0.0}/ellf_cli/recipes_cookiecutter/{{cookiecutter.package_dir}}/{{cookiecutter.package_name}}/__init__.py +0 -0
  161. {ellf_cli-20.0.6 → ellf_cli-21.0.0}/ellf_cli/recipes_cookiecutter/{{cookiecutter.package_dir}}/{{cookiecutter.package_name}}/about.py +0 -0
  162. {ellf_cli-20.0.6 → ellf_cli-21.0.0}/ellf_cli/recipes_cookiecutter/{{cookiecutter.package_dir}}/{{cookiecutter.package_name}}/recipes/__init__.py +0 -0
  163. {ellf_cli-20.0.6 → ellf_cli-21.0.0}/ellf_cli/recipes_cookiecutter/{{cookiecutter.package_dir}}/{{cookiecutter.package_name}}/recipes/example_task.py +0 -0
  164. {ellf_cli-20.0.6 → ellf_cli-21.0.0}/ellf_cli/testing/__init__.py +0 -0
  165. {ellf_cli-20.0.6 → ellf_cli-21.0.0}/ellf_cli/ty.py +0 -0
  166. {ellf_cli-20.0.6 → ellf_cli-21.0.0}/ellf_cli/ui.py +0 -0
  167. {ellf_cli-20.0.6 → ellf_cli-21.0.0}/ellf_cli/url.py +0 -0
  168. {ellf_cli-20.0.6 → ellf_cli-21.0.0}/ellf_cli/util.py +0 -0
  169. {ellf_cli-20.0.6 → ellf_cli-21.0.0}/ellf_cli/version/17.0.114_2026-08-19-08-36-57__1a4e37c1-471e-4a81-b4d5-1ffe7dec3a61 +0 -0
  170. {ellf_cli-20.0.6 → ellf_cli-21.0.0}/ellf_cli/version/17.0.114_2026-08-19-09-25-21_patch_33ff1e26-0e5e-46d8-8052-ab1d032e8b6c +0 -0
  171. {ellf_cli-20.0.6 → ellf_cli-21.0.0}/ellf_cli/version/17.0.115_2026-08-19-09-27-13_patch_4ac728c3-0342-4a36-adbc-e28d2d99b1ba +0 -0
  172. {ellf_cli-20.0.6 → ellf_cli-21.0.0}/ellf_cli/version/17.0.116_2026-08-19-09-30-47_patch_c706fef6-6813-4183-b268-12e7b00d7d0b +0 -0
  173. {ellf_cli-20.0.6 → ellf_cli-21.0.0}/ellf_cli/version/17.0.117_2026-08-19-09-39-14_patch_c6b0495f-2f88-4aa8-9ebf-0a235b4c407e +0 -0
  174. {ellf_cli-20.0.6 → ellf_cli-21.0.0}/ellf_cli/version/17.0.118_2026-08-19-09-52-00_patch_b395655a-8d78-4344-9266-6901c20f6517 +0 -0
  175. {ellf_cli-20.0.6 → ellf_cli-21.0.0}/ellf_cli/version/17.0.119_2026-08-19-10-22-38_patch_8f95c49d-aedc-41b8-816d-ccb95f048831 +0 -0
  176. {ellf_cli-20.0.6 → ellf_cli-21.0.0}/ellf_cli/version/17.0.120_2026-08-19-10-26-58_patch_7fbf35e6-cc01-4b75-8c9a-f5d054bcaf93 +0 -0
  177. {ellf_cli-20.0.6 → ellf_cli-21.0.0}/ellf_cli/version/17.0.121_2026-08-19-10-42-02_patch_31a81b02-a886-4dea-84e0-67cc6ca412d5 +0 -0
  178. {ellf_cli-20.0.6 → ellf_cli-21.0.0}/ellf_cli/version/17.0.122_2026-08-19-11-16-49_patch_1c4d7307-48d4-493e-936d-80af799d644b +0 -0
  179. {ellf_cli-20.0.6 → ellf_cli-21.0.0}/ellf_cli/version/17.0.123_2026-08-19-11-47-32_patch_d3d78d04-9989-45b1-91b1-93b571d8814a +0 -0
  180. {ellf_cli-20.0.6 → ellf_cli-21.0.0}/ellf_cli/version/17.0.124_2026-08-20-08-03-17_patch_57f4c389-2d19-41ce-aca4-13b61c62f387 +0 -0
  181. {ellf_cli-20.0.6 → ellf_cli-21.0.0}/ellf_cli/version/17.0.125_2026-08-20-08-25-05_patch_7f368148-0d1c-4525-bbdf-c6d257ad861a +0 -0
  182. {ellf_cli-20.0.6 → ellf_cli-21.0.0}/ellf_cli/version/17.0.126_2026-08-20-14-51-36_patch_a99abcc8-3371-4c63-a759-bb7ea5b32432 +0 -0
  183. {ellf_cli-20.0.6 → ellf_cli-21.0.0}/ellf_cli/version/17.0.127_2026-08-21-05-48-58_patch_34b4ccee-7596-4f57-93e9-774973cca58e +0 -0
  184. {ellf_cli-20.0.6 → ellf_cli-21.0.0}/ellf_cli/version/17.0.128_2026-08-21-10-47-20_patch_693112b9-927c-4a8f-8553-b06eef86079d +0 -0
  185. {ellf_cli-20.0.6 → ellf_cli-21.0.0}/ellf_cli/version/17.0.129_2026-08-21-11-16-54_patch_7a981666-01d9-4d1b-9ba3-2129744e3bd5 +0 -0
  186. {ellf_cli-20.0.6 → ellf_cli-21.0.0}/ellf_cli/version/17.0.130_2026-08-21-13-09-36_patch_b7ad1a76-ce70-4d70-9d1a-7c414eba5bb4 +0 -0
  187. {ellf_cli-20.0.6 → ellf_cli-21.0.0}/ellf_cli/version/17.0.131_2026-08-21-14-31-10_patch_9128ef66-193e-4caf-8710-afd86128e638 +0 -0
  188. {ellf_cli-20.0.6 → ellf_cli-21.0.0}/ellf_cli/version/17.0.132_2026-08-24-08-59-34_patch_c600fc14-86a5-460f-9c4e-f0177056f756 +0 -0
  189. {ellf_cli-20.0.6 → ellf_cli-21.0.0}/ellf_cli/version/17.0.133_2026-08-24-10-28-29_patch_b6ce3e32-9d7b-48ac-981a-270c22c180dd +0 -0
  190. {ellf_cli-20.0.6 → ellf_cli-21.0.0}/ellf_cli/version/17.0.134_2026-08-24-11-00-51_patch_a4fc0484-4a64-46a2-94f8-aa805254c7b0 +0 -0
  191. {ellf_cli-20.0.6 → ellf_cli-21.0.0}/ellf_cli/version/17.0.135_2026-08-24-12-12-41_patch_a870a56f-9a65-49eb-92da-f572b26667d8 +0 -0
  192. {ellf_cli-20.0.6 → ellf_cli-21.0.0}/ellf_cli/version/17.0.136_2026-08-24-12-42-46_patch_9b399356-6482-4291-8da7-e748a99c4b53 +0 -0
  193. {ellf_cli-20.0.6 → ellf_cli-21.0.0}/ellf_cli/version/17.0.137_2026-08-24-12-53-57_patch_f7979348-1910-40cd-a535-90299eca84ee +0 -0
  194. {ellf_cli-20.0.6 → ellf_cli-21.0.0}/ellf_cli/version/17.0.138_2026-08-24-14-36-30_patch_ed0f8750-f663-498b-85e7-0d3f2213fcfe +0 -0
  195. {ellf_cli-20.0.6 → ellf_cli-21.0.0}/ellf_cli/version/17.0.139_2026-08-25-08-37-26_patch_3ba87e19-902b-4f76-b64c-90e5c0ca1fc6 +0 -0
  196. {ellf_cli-20.0.6 → ellf_cli-21.0.0}/ellf_cli/version/17.0.140_2026-08-25-09-52-45_patch_abc830f2-df15-4385-b797-cdaf72c10752 +0 -0
  197. {ellf_cli-20.0.6 → ellf_cli-21.0.0}/ellf_cli/version/17.0.141_2026-08-25-11-37-20_patch_1d9ec01e-06f6-4c8e-b095-af17d5b62b00 +0 -0
  198. {ellf_cli-20.0.6 → ellf_cli-21.0.0}/ellf_cli/version/17.0.142_2026-08-26-07-38-49_patch_3dd23e36-e7df-494c-986f-a412861a8d40 +0 -0
  199. {ellf_cli-20.0.6 → ellf_cli-21.0.0}/ellf_cli/version/17.0.143_2026-08-26-09-32-32_patch_7b7ebd34-de27-4b73-98a7-3e1501e16cd5 +0 -0
  200. {ellf_cli-20.0.6 → ellf_cli-21.0.0}/ellf_cli/version/17.0.144_2026-08-26-10-56-43_patch_166064f2-2208-4c9b-9e25-25dc4cd32084 +0 -0
  201. {ellf_cli-20.0.6 → ellf_cli-21.0.0}/ellf_cli/version/17.0.145_2026-08-26-11-37-29_patch_b997f3ee-d7d3-4408-9f2f-c8b6d08bdb3b +0 -0
  202. {ellf_cli-20.0.6 → ellf_cli-21.0.0}/ellf_cli/version/17.0.146_2026-08-26-12-15-20_patch_afbbb893-25db-468c-81db-2663ca373068 +0 -0
  203. {ellf_cli-20.0.6 → ellf_cli-21.0.0}/ellf_cli/version/17.0.147_2026-08-26-14-10-50_patch_fd753b1f-2fa1-4ddb-a9e7-de690da85254 +0 -0
  204. {ellf_cli-20.0.6 → ellf_cli-21.0.0}/ellf_cli/version/17.0.148_2026-08-27-09-08-35_patch_23814c0b-7f77-489c-b4a8-ceadd18146e3 +0 -0
  205. {ellf_cli-20.0.6 → ellf_cli-21.0.0}/ellf_cli/version/17.0.149_2026-08-27-09-40-17_patch_8879d72e-a3d8-4abc-a16a-d9dcf75f0fa1 +0 -0
  206. {ellf_cli-20.0.6 → ellf_cli-21.0.0}/ellf_cli/version/17.0.150_2026-08-27-10-57-25_patch_afbe60ed-3e23-4d88-be3c-f800d7002a7d +0 -0
  207. {ellf_cli-20.0.6 → ellf_cli-21.0.0}/ellf_cli/version/17.0.151_2026-08-28-09-02-46_patch_1d4ca23b-aeae-4ea8-96b1-8cf57371f29d +0 -0
  208. {ellf_cli-20.0.6 → ellf_cli-21.0.0}/ellf_cli/version/17.0.152_2026-08-28-15-37-24_patch_c9d0bdc1-a7e1-432b-92b9-92dc76fe0c78 +0 -0
  209. {ellf_cli-20.0.6 → ellf_cli-21.0.0}/ellf_cli/version/17.0.153_2026-08-29-09-03-27_patch_7531573a-1b33-4092-aa9c-0e65f47b201f +0 -0
  210. {ellf_cli-20.0.6 → ellf_cli-21.0.0}/ellf_cli/version/17.0.154_2026-08-29-11-56-35_patch_919f5787-39c8-4dc1-ae6a-f27c28380f21 +0 -0
  211. {ellf_cli-20.0.6 → ellf_cli-21.0.0}/ellf_cli/version/17.0.155_2026-08-29-15-15-59_patch_822f9ed8-c366-4e5f-9791-dee8467cf3ce +0 -0
  212. {ellf_cli-20.0.6 → ellf_cli-21.0.0}/ellf_cli/version/17.0.156_2026-08-29-16-19-01_patch_3ac2bf36-20f7-4c9f-9fdb-295d4466d59e +0 -0
  213. {ellf_cli-20.0.6 → ellf_cli-21.0.0}/ellf_cli/version/17.0.157_2026-08-30-17-32-17_patch_4302354c-c9c5-4be7-acd3-542872a748d8 +0 -0
  214. {ellf_cli-20.0.6 → ellf_cli-21.0.0}/ellf_cli/version/17.0.158_2026-08-31-09-28-33_patch_3523774f-c25d-4102-8c1a-92fff046a48d +0 -0
  215. {ellf_cli-20.0.6 → ellf_cli-21.0.0}/ellf_cli/version/17.0.159_2026-08-31-10-31-01_patch_fe3e6290-2553-4154-a0a0-8b8a418280ed +0 -0
  216. {ellf_cli-20.0.6 → ellf_cli-21.0.0}/ellf_cli/version/17.0.160_2026-08-31-11-23-39_patch_e701a085-3d23-4212-b0af-73b1d419a4c1 +0 -0
  217. {ellf_cli-20.0.6 → ellf_cli-21.0.0}/ellf_cli/version/17.0.161_2026-08-31-12-41-01_patch_074d7bde-c493-44db-bc15-e81fd91e2921 +0 -0
  218. {ellf_cli-20.0.6 → ellf_cli-21.0.0}/ellf_cli/version/17.0.162_2026-08-31-13-58-06_patch_84db1d60-4280-433b-bd3a-22e5611cd315 +0 -0
  219. {ellf_cli-20.0.6 → ellf_cli-21.0.0}/ellf_cli/version/17.0.163_2026-08-31-15-25-54_patch_1931c5ba-73df-48cb-8dcb-555ace0af267 +0 -0
  220. {ellf_cli-20.0.6 → ellf_cli-21.0.0}/ellf_cli/version/17.0.163_2026-08-31-15-44-37_patch_3962e805-2a92-494a-a87b-b6e6d66c40a0 +0 -0
  221. {ellf_cli-20.0.6 → ellf_cli-21.0.0}/ellf_cli/version/17.0.165_2026-08-31-19-48-59_patch_86e5b923-2b99-4b86-b542-469b197614be +0 -0
  222. {ellf_cli-20.0.6 → ellf_cli-21.0.0}/ellf_cli/version/17.0.166_2026-09-01-07-39-57_patch_c344892f-d542-4e7b-8f27-02365a411e15 +0 -0
  223. {ellf_cli-20.0.6 → ellf_cli-21.0.0}/ellf_cli/version/17.0.167_2026-09-01-08-21-53_patch_e199d419-282a-4dbb-8756-cf98b7037e2b +0 -0
  224. {ellf_cli-20.0.6 → ellf_cli-21.0.0}/ellf_cli/version/17.0.168_2026-09-01-09-12-31_patch_235c9fe0-da15-431d-bb56-01e2b9b15f4b +0 -0
  225. {ellf_cli-20.0.6 → ellf_cli-21.0.0}/ellf_cli/version/17.0.169_2026-09-01-11-54-19_patch_98b617ab-d130-42b5-93f2-19cae56d4c4c +0 -0
  226. {ellf_cli-20.0.6 → ellf_cli-21.0.0}/ellf_cli/version/17.0.170_2026-09-02-09-27-28_patch_e448d2e6-b7ec-4235-96bf-0173b3623c87 +0 -0
  227. {ellf_cli-20.0.6 → ellf_cli-21.0.0}/ellf_cli/version/17.0.171_2026-09-02-12-52-44_patch_e6a241c2-1d62-482c-a9eb-9e3373395c50 +0 -0
  228. {ellf_cli-20.0.6 → ellf_cli-21.0.0}/ellf_cli/version/17.0.172_2026-09-04-08-47-04_patch_daae079f-c104-4fcd-bb57-7bff68e80ad9 +0 -0
  229. {ellf_cli-20.0.6 → ellf_cli-21.0.0}/ellf_cli/version/17.0.173_2026-09-04-12-34-42_patch_399c4cbd-0c28-4dfd-a4ec-e569420a36e4 +0 -0
  230. {ellf_cli-20.0.6 → ellf_cli-21.0.0}/ellf_cli/version/17.0.174_2026-09-04-13-08-48_patch_f5cfe3d5-808e-45e4-bafc-00d0554838ee +0 -0
  231. {ellf_cli-20.0.6 → ellf_cli-21.0.0}/ellf_cli/version/17.0.175_2026-09-04-17-20-46_patch_1ef542fa-5d8e-4d90-aa15-9fc4cea3dfec +0 -0
  232. {ellf_cli-20.0.6 → ellf_cli-21.0.0}/ellf_cli/version/17.0.176_2026-09-05-08-25-05_patch_ced5521f-f9da-4640-a921-95fcb5cd2e6d +0 -0
  233. {ellf_cli-20.0.6 → ellf_cli-21.0.0}/ellf_cli/version/17.0.177_2026-09-05-09-00-16_patch_803c1ad4-a9af-4953-92c5-d882dec03ea2 +0 -0
  234. {ellf_cli-20.0.6 → ellf_cli-21.0.0}/ellf_cli/version/17.0.178_2026-09-05-09-30-34_patch_012f6259-2e3f-4591-9806-1920fd06cb1f +0 -0
  235. {ellf_cli-20.0.6 → ellf_cli-21.0.0}/ellf_cli/version/17.0.179_2026-09-05-09-33-43_patch_f4bdf28c-d584-47a5-b699-8c883330162c +0 -0
  236. {ellf_cli-20.0.6 → ellf_cli-21.0.0}/ellf_cli/version/17.0.180_2026-09-05-12-02-21_patch_34a14b01-d22d-44a8-ac63-be0370a61422 +0 -0
  237. {ellf_cli-20.0.6 → ellf_cli-21.0.0}/ellf_cli/version/17.0.181_2026-09-05-12-47-46_patch_56b18867-99f6-4d5c-8215-7b9d60d34010 +0 -0
  238. {ellf_cli-20.0.6 → ellf_cli-21.0.0}/ellf_cli/version/17.0.182_2026-09-05-13-35-18_patch_61b7d4d1-73c8-4603-9b0c-593e7405587f +0 -0
  239. {ellf_cli-20.0.6 → ellf_cli-21.0.0}/ellf_cli/version/17.0.183_2026-09-06-07-27-09_patch_d76331b2-e3a3-4c0b-8412-ecd131b6ac02 +0 -0
  240. {ellf_cli-20.0.6 → ellf_cli-21.0.0}/ellf_cli/version/17.0.184_2026-09-06-10-21-47_patch_7680b7a1-49f0-4eef-b12e-4c854407448c +0 -0
  241. {ellf_cli-20.0.6 → ellf_cli-21.0.0}/ellf_cli/version/17.0.185_2026-09-06-10-30-40_patch_e56c2183-77f8-44ef-a92e-7377ea6ce8c1 +0 -0
  242. {ellf_cli-20.0.6 → ellf_cli-21.0.0}/ellf_cli/version/17.0.186_2026-09-07-10-00-51_patch_67de5683-d208-4bc0-8fb6-7677377908e7 +0 -0
  243. {ellf_cli-20.0.6 → ellf_cli-21.0.0}/ellf_cli/version/17.0.187_2026-09-07-10-18-13_patch_2086cee2-276b-48f7-80ce-6a17397b9541 +0 -0
  244. {ellf_cli-20.0.6 → ellf_cli-21.0.0}/ellf_cli/version/17.0.188_2026-09-07-12-51-28_patch_d6590822-068f-4a19-814d-34bbf204ba6e +0 -0
  245. {ellf_cli-20.0.6 → ellf_cli-21.0.0}/ellf_cli/version/17.0.189_2026-09-07-12-55-23_patch_7e0fb04b-4d40-4490-974f-c74ba2ae55a1 +0 -0
  246. {ellf_cli-20.0.6 → ellf_cli-21.0.0}/ellf_cli/version/17.0.190_2026-09-08-08-58-03_patch_15e3ac1e-4475-4272-bdd8-d00bb0db8f17 +0 -0
  247. {ellf_cli-20.0.6 → ellf_cli-21.0.0}/ellf_cli/version/17.0.191_2026-09-08-09-55-58_patch_3d350e50-ee53-4282-bc75-d2251142c46e +0 -0
  248. {ellf_cli-20.0.6 → ellf_cli-21.0.0}/ellf_cli/version/17.0.192_2026-09-08-11-12-21_patch_0733223b-1ae2-4b5b-897f-dfc57574ff83 +0 -0
  249. {ellf_cli-20.0.6 → ellf_cli-21.0.0}/ellf_cli/version/17.0.193_2026-09-08-21-48-17_patch_8d07d4e6-3555-4720-85c9-9452570fae2d +0 -0
  250. {ellf_cli-20.0.6 → ellf_cli-21.0.0}/ellf_cli/version/17.0.194_2026-09-09-07-53-43_patch_69559429-aa42-4b62-9bd7-cdfded1c00d0 +0 -0
  251. {ellf_cli-20.0.6 → ellf_cli-21.0.0}/ellf_cli/version/17.0.195_2026-09-09-09-55-40_patch_bbf67f1d-3b9a-43a2-b1bc-22df3fed8a34 +0 -0
  252. {ellf_cli-20.0.6 → ellf_cli-21.0.0}/ellf_cli/version/17.0.196_2026-09-09-09-59-47_patch_70d76812-7b3c-4192-ad49-fcaccc29b0da +0 -0
  253. {ellf_cli-20.0.6 → ellf_cli-21.0.0}/ellf_cli/version/17.0.197_2026-09-09-13-06-06_patch_d455be0b-5421-492a-b952-fab0fd8110f8 +0 -0
  254. {ellf_cli-20.0.6 → ellf_cli-21.0.0}/ellf_cli/version/17.0.198_2026-09-09-13-14-34_patch_267f54e5-311e-435e-882f-8e19191325ea +0 -0
  255. {ellf_cli-20.0.6 → ellf_cli-21.0.0}/ellf_cli/version/17.0.199_2026-09-09-22-24-18_patch_81e3e453-ca0e-42fa-9c21-8f94d43c05f2 +0 -0
  256. {ellf_cli-20.0.6 → ellf_cli-21.0.0}/ellf_cli/version/17.0.200_2026-09-10-07-19-50_patch_911714fa-1fa3-4165-bfe6-d10c650bf5bf +0 -0
  257. {ellf_cli-20.0.6 → ellf_cli-21.0.0}/ellf_cli/version/17.0.201_2026-09-10-10-14-19_patch_864015f2-b0b0-4563-a1c8-155629cb9126 +0 -0
  258. {ellf_cli-20.0.6 → ellf_cli-21.0.0}/ellf_cli/version/17.0.202_2026-09-10-11-00-05_patch_18270ecf-e770-4e69-8bcf-e5143c39929b +0 -0
  259. {ellf_cli-20.0.6 → ellf_cli-21.0.0}/ellf_cli/version/17.0.203_2026-09-10-11-10-41_patch_ff273ab1-44f3-4bc0-b184-3396e943df04 +0 -0
  260. {ellf_cli-20.0.6 → ellf_cli-21.0.0}/ellf_cli/version/17.0.204_2026-09-10-13-02-02_patch_d4ee41e2-d13c-4941-8605-3f1a42b56b22 +0 -0
  261. {ellf_cli-20.0.6 → ellf_cli-21.0.0}/ellf_cli/version/17.0.205_2026-09-10-13-57-50_patch_284df67e-5957-4b0c-bc64-5581db6ddecc +0 -0
  262. {ellf_cli-20.0.6 → ellf_cli-21.0.0}/ellf_cli/version/17.0.206_2026-09-11-10-18-50_patch_1ac7e410-0e62-4eef-bbe4-ebf93c9d0869 +0 -0
  263. {ellf_cli-20.0.6 → ellf_cli-21.0.0}/ellf_cli/version/17.0.207_2026-09-11-15-26-02_major_3f1b3ed7-eaac-41f5-b740-0af3331595d9 +0 -0
  264. {ellf_cli-20.0.6 → ellf_cli-21.0.0}/ellf_cli/version/18.0.0_2026-09-12-10-01-10_patch_8995783a-a9fa-4c4e-90b3-6386a4c481eb +0 -0
  265. {ellf_cli-20.0.6 → ellf_cli-21.0.0}/ellf_cli/version/18.0.10_2026-09-14-16-09-38_patch_9403d562-eed0-4125-a8b3-09cd92a13298 +0 -0
  266. {ellf_cli-20.0.6 → ellf_cli-21.0.0}/ellf_cli/version/18.0.11_2026-09-15-09-05-57_patch_8b22dba2-d931-4c4d-ae60-db3238d5e73d +0 -0
  267. {ellf_cli-20.0.6 → ellf_cli-21.0.0}/ellf_cli/version/18.0.12_2026-09-15-11-18-52_patch_81314afa-e70d-4ad8-b45b-3f8d62b983e7 +0 -0
  268. {ellf_cli-20.0.6 → ellf_cli-21.0.0}/ellf_cli/version/18.0.13_2026-09-16-08-00-55_patch_bfa30fc0-3281-4de6-bb56-d7290c98d1c3 +0 -0
  269. {ellf_cli-20.0.6 → ellf_cli-21.0.0}/ellf_cli/version/18.0.14_2026-09-16-14-38-26_patch_aae6e9b0-88f4-4bcf-b611-3308c7fcd6eb +0 -0
  270. {ellf_cli-20.0.6 → ellf_cli-21.0.0}/ellf_cli/version/18.0.15_2026-09-17-07-58-54_patch_43d40582-effd-4925-a8bd-e70fecf1faab +0 -0
  271. {ellf_cli-20.0.6 → ellf_cli-21.0.0}/ellf_cli/version/18.0.16_2026-09-17-08-12-37_patch_b4db2d23-88f1-45c1-82d9-78d38014fcb6 +0 -0
  272. {ellf_cli-20.0.6 → ellf_cli-21.0.0}/ellf_cli/version/18.0.17_2026-09-18-09-38-19_patch_25697fc3-e9a8-4980-962b-e6cb0a4760c5 +0 -0
  273. {ellf_cli-20.0.6 → ellf_cli-21.0.0}/ellf_cli/version/18.0.18_2026-09-18-09-54-33_patch_d37d9c71-c469-4d94-90d7-4898915ee991 +0 -0
  274. {ellf_cli-20.0.6 → ellf_cli-21.0.0}/ellf_cli/version/18.0.19_2026-09-18-10-47-33_patch_47607b3c-d1b6-4864-b9b0-00a2a8d2ac32 +0 -0
  275. {ellf_cli-20.0.6 → ellf_cli-21.0.0}/ellf_cli/version/18.0.1_2026-09-12-17-33-30_patch_f6ea2c99-a715-4c4d-876a-23ed8c62a83d +0 -0
  276. {ellf_cli-20.0.6 → ellf_cli-21.0.0}/ellf_cli/version/18.0.20_2026-09-18-11-07-21_patch_5a336f91-63a6-4877-97ed-da89395cc8f5 +0 -0
  277. {ellf_cli-20.0.6 → ellf_cli-21.0.0}/ellf_cli/version/18.0.21_2026-09-18-13-34-52_patch_c56462e1-63d9-498f-a912-c80c5f0171d1 +0 -0
  278. {ellf_cli-20.0.6 → ellf_cli-21.0.0}/ellf_cli/version/18.0.22_2026-09-20-08-10-45_patch_6afa2c20-bcef-4b7d-8685-2c9815d8683f +0 -0
  279. {ellf_cli-20.0.6 → ellf_cli-21.0.0}/ellf_cli/version/18.0.23_2026-09-20-08-38-35_patch_a7f169e5-37ab-4ec0-bf89-d14770181303 +0 -0
  280. {ellf_cli-20.0.6 → ellf_cli-21.0.0}/ellf_cli/version/18.0.24_2026-09-20-15-49-27_patch_c1222081-ff44-4f20-aea2-5840b6d76efd +0 -0
  281. {ellf_cli-20.0.6 → ellf_cli-21.0.0}/ellf_cli/version/18.0.25_2026-09-21-06-11-40_patch_6df46dd9-e7d3-4e71-bec4-e5c93b4ac863 +0 -0
  282. {ellf_cli-20.0.6 → ellf_cli-21.0.0}/ellf_cli/version/18.0.26_2026-09-21-07-54-11_patch_cc52dd36-5eba-4094-a1b0-d6f79f103441 +0 -0
  283. {ellf_cli-20.0.6 → ellf_cli-21.0.0}/ellf_cli/version/18.0.27_2026-09-21-08-36-49_patch_a25fa125-9bcd-4317-8da5-851c1c329631 +0 -0
  284. {ellf_cli-20.0.6 → ellf_cli-21.0.0}/ellf_cli/version/18.0.28_2026-09-21-09-44-01_patch_4430a721-0b3c-4f6a-b9bc-a53e667161bb +0 -0
  285. {ellf_cli-20.0.6 → ellf_cli-21.0.0}/ellf_cli/version/18.0.29_2026-09-21-10-58-07_patch_83b2b942-60a4-4bef-afd1-99690ba52b69 +0 -0
  286. {ellf_cli-20.0.6 → ellf_cli-21.0.0}/ellf_cli/version/18.0.2_2026-09-13-06-36-33_patch_176bb944-1c49-4dd3-a001-8fce908825a0 +0 -0
  287. {ellf_cli-20.0.6 → ellf_cli-21.0.0}/ellf_cli/version/18.0.30_2026-09-21-12-51-16_patch_519b9a65-d400-4234-b113-36b46e315507 +0 -0
  288. {ellf_cli-20.0.6 → ellf_cli-21.0.0}/ellf_cli/version/18.0.31_2026-09-22-06-53-35_patch_5c45a235-81b6-4d05-801a-07dc7db61400 +0 -0
  289. {ellf_cli-20.0.6 → ellf_cli-21.0.0}/ellf_cli/version/18.0.32_2026-09-22-07-42-04_patch_f12c6415-8166-4063-9e5d-26601b929d63 +0 -0
  290. {ellf_cli-20.0.6 → ellf_cli-21.0.0}/ellf_cli/version/18.0.33_2026-09-22-08-12-32_patch_cec31bb0-a6cb-43e6-8407-25aba322b54c +0 -0
  291. {ellf_cli-20.0.6 → ellf_cli-21.0.0}/ellf_cli/version/18.0.34_2026-09-23-07-09-16_patch_659fccbb-c0a0-4f6f-bc87-e6abaa8815a7 +0 -0
  292. {ellf_cli-20.0.6 → ellf_cli-21.0.0}/ellf_cli/version/18.0.35_2026-09-23-09-38-52_patch_023f904d-807a-4833-8a40-570365e8ec06 +0 -0
  293. {ellf_cli-20.0.6 → ellf_cli-21.0.0}/ellf_cli/version/18.0.36_2026-09-23-10-05-33_patch_846fb491-2b1b-47ed-ac1f-ba40e744e199 +0 -0
  294. {ellf_cli-20.0.6 → ellf_cli-21.0.0}/ellf_cli/version/18.0.37_2026-09-23-13-08-30_patch_8e4b1d24-156e-4ffe-8e4a-b8740ec18588 +0 -0
  295. {ellf_cli-20.0.6 → ellf_cli-21.0.0}/ellf_cli/version/18.0.38_2026-09-24-06-41-37_patch_67adb1d6-3f49-4357-a67f-b1d48f23a972 +0 -0
  296. {ellf_cli-20.0.6 → ellf_cli-21.0.0}/ellf_cli/version/18.0.39_2026-09-24-15-24-32_patch_e5dd375d-5643-4514-9b65-8d877c4a2bb2 +0 -0
  297. {ellf_cli-20.0.6 → ellf_cli-21.0.0}/ellf_cli/version/18.0.3_2026-09-13-12-32-46_patch_58e5ce3a-f2a7-4789-b2cd-5cc75c72b6ec +0 -0
  298. {ellf_cli-20.0.6 → ellf_cli-21.0.0}/ellf_cli/version/18.0.40_2026-09-24-19-58-14_patch_ff18824b-be51-4a3d-a621-e96279e53c3e +0 -0
  299. {ellf_cli-20.0.6 → ellf_cli-21.0.0}/ellf_cli/version/18.0.41_2026-09-26-09-24-52_patch_b9979267-30f9-440a-a4ce-c611991d4886 +0 -0
  300. {ellf_cli-20.0.6 → ellf_cli-21.0.0}/ellf_cli/version/18.0.42_2026-09-28-12-39-34_patch_dda535d9-8922-4eb9-ab51-6ecff0650c10 +0 -0
  301. {ellf_cli-20.0.6 → ellf_cli-21.0.0}/ellf_cli/version/18.0.43_2026-09-28-13-35-27_minor_aca1168a-1286-4326-9d0c-2f2587c9fe92 +0 -0
  302. {ellf_cli-20.0.6 → ellf_cli-21.0.0}/ellf_cli/version/18.0.4_2026-09-13-12-45-14_patch_b6c79d55-8f85-4f47-a304-df52b122c38c +0 -0
  303. {ellf_cli-20.0.6 → ellf_cli-21.0.0}/ellf_cli/version/18.0.5_2026-09-13-14-11-18_patch_9b111116-5e62-472a-b72c-d1bbafa22c97 +0 -0
  304. {ellf_cli-20.0.6 → ellf_cli-21.0.0}/ellf_cli/version/18.0.5_2026-09-13-17-01-11_patch_d4bf61c0-83ac-4dd3-b512-a65805d298c8 +0 -0
  305. {ellf_cli-20.0.6 → ellf_cli-21.0.0}/ellf_cli/version/18.0.6_2026-09-14-11-31-04_patch_fd2ebda6-22cb-4e7d-9452-2f6f2640e828 +0 -0
  306. {ellf_cli-20.0.6 → ellf_cli-21.0.0}/ellf_cli/version/18.0.7_2026-09-13-17-06-08_patch_428af161-0b27-43c2-8751-e5f7874df120 +0 -0
  307. {ellf_cli-20.0.6 → ellf_cli-21.0.0}/ellf_cli/version/18.0.9_2026-09-14-12-37-42_patch_b2ca0529-4b67-4fa4-8fdc-5f5e9f5d5166 +0 -0
  308. {ellf_cli-20.0.6 → ellf_cli-21.0.0}/ellf_cli/version/18.1.0_2026-09-28-14-27-54_patch_324444f7-d24e-4189-b21f-1188894a3109 +0 -0
  309. {ellf_cli-20.0.6 → ellf_cli-21.0.0}/ellf_cli/version/18.1.1_2026-09-28-21-03-07_major_e266a14a-7d96-4ece-92a3-8f34e64438a5 +0 -0
  310. {ellf_cli-20.0.6 → ellf_cli-21.0.0}/ellf_cli/version/19.0.0_2026-09-29-11-05-31_patch_77d6f9f8-ead3-4d79-a4b2-b084b2dffc98 +0 -0
  311. {ellf_cli-20.0.6 → ellf_cli-21.0.0}/ellf_cli/version/19.0.10_2026-10-02-12-56-52_patch_14e97576-73ca-44b8-82c9-7dad6f1789ab +0 -0
  312. {ellf_cli-20.0.6 → ellf_cli-21.0.0}/ellf_cli/version/19.0.11_2026-10-04-10-31-19_patch_088eb371-1799-4949-a119-286cf1cd55d1 +0 -0
  313. {ellf_cli-20.0.6 → ellf_cli-21.0.0}/ellf_cli/version/19.0.12_2026-10-06-18-00-25_patch_36554bed-49c5-41cb-9fd4-48cc6af74c09 +0 -0
  314. {ellf_cli-20.0.6 → ellf_cli-21.0.0}/ellf_cli/version/19.0.13_2026-10-07-12-24-08_patch_a540a364-3a0d-4960-b278-06ba2c7cc258 +0 -0
  315. {ellf_cli-20.0.6 → ellf_cli-21.0.0}/ellf_cli/version/19.0.14_2026-10-07-12-52-39_patch_e3a6fc5c-2ee4-414c-a2dd-4910a655a7dd +0 -0
  316. {ellf_cli-20.0.6 → ellf_cli-21.0.0}/ellf_cli/version/19.0.15_2026-10-09-04-15-56_patch_bd7a9b06-867b-4fea-9678-973a05e3022d +0 -0
  317. {ellf_cli-20.0.6 → ellf_cli-21.0.0}/ellf_cli/version/19.0.16_2026-10-09-16-11-56_patch_a1135435-7dea-4f00-8c98-203ba3974382 +0 -0
  318. {ellf_cli-20.0.6 → ellf_cli-21.0.0}/ellf_cli/version/19.0.17_2026-10-09-17-44-55_patch_faeacad8-541a-40f2-ab9c-abcd66fcd00e +0 -0
  319. {ellf_cli-20.0.6 → ellf_cli-21.0.0}/ellf_cli/version/19.0.18_2026-10-10-07-29-38_major_02601a1e-9bdb-45bf-ad67-a07b7dcd0002 +0 -0
  320. {ellf_cli-20.0.6 → ellf_cli-21.0.0}/ellf_cli/version/19.0.1_2026-09-29-11-59-38_patch_bbf4753c-d641-4c2f-ac7c-02be6bd8e7c2 +0 -0
  321. {ellf_cli-20.0.6 → ellf_cli-21.0.0}/ellf_cli/version/19.0.2_2026-09-29-12-44-07_patch_19fdaa94-60dc-464b-93b8-c17607ebc7b6 +0 -0
  322. {ellf_cli-20.0.6 → ellf_cli-21.0.0}/ellf_cli/version/19.0.3_2026-09-29-14-16-00_patch_3cb60272-95cf-4311-8897-721e1b5c2c88 +0 -0
  323. {ellf_cli-20.0.6 → ellf_cli-21.0.0}/ellf_cli/version/19.0.4_2026-09-29-16-24-53_patch_9fe8ad2b-e3ec-4558-a5fc-9c44c5c266dc +0 -0
  324. {ellf_cli-20.0.6 → ellf_cli-21.0.0}/ellf_cli/version/19.0.5_2026-09-29-17-13-16_patch_e48d2dd2-f41a-402e-a441-756b23c01dcb +0 -0
  325. {ellf_cli-20.0.6 → ellf_cli-21.0.0}/ellf_cli/version/19.0.6_2026-09-29-17-22-11_patch_3b1c79e9-9002-4e96-ba78-10668c33be6a +0 -0
  326. {ellf_cli-20.0.6 → ellf_cli-21.0.0}/ellf_cli/version/19.0.7_2026-09-30-07-50-58_patch_e8b1f046-d819-499c-9cd5-3e1a20fc9acf +0 -0
  327. {ellf_cli-20.0.6 → ellf_cli-21.0.0}/ellf_cli/version/19.0.8_2026-10-01-13-41-44_patch_7d63af18-e0af-4127-ab58-aede2407490f +0 -0
  328. {ellf_cli-20.0.6 → ellf_cli-21.0.0}/ellf_cli/version/19.0.9_2026-10-01-15-57-35_patch_143863cb-8f63-4ef7-bd78-c1114fc93a2d +0 -0
  329. {ellf_cli-20.0.6 → ellf_cli-21.0.0}/ellf_cli/version/20.0.0_2026-10-10-09-36-17_patch_d2618f39-cdc9-4d3a-ba40-1a0ad6265f3b +0 -0
  330. {ellf_cli-20.0.6 → ellf_cli-21.0.0}/ellf_cli/version/20.0.1_2026-10-11-10-24-33_patch_e29a8713-eecb-4eb1-9641-789d3cfab21a +0 -0
  331. {ellf_cli-20.0.6 → ellf_cli-21.0.0}/ellf_cli/version/20.0.2_2026-10-12-07-22-24_patch_f4053ad1-8fcd-4591-a68d-bf1e23485ba7 +0 -0
  332. {ellf_cli-20.0.6 → ellf_cli-21.0.0}/ellf_cli/version/20.0.3_2026-10-14-14-29-16_patch_070af1c4-f9d9-4f97-8112-058de90d3ea8 +0 -0
  333. {ellf_cli-20.0.6 → ellf_cli-21.0.0}/ellf_cli/version/20.0.4_2026-10-14-16-20-24_patch_c6672844-8227-4e0a-9fb5-36af7e7141dc +0 -0
  334. {ellf_cli-20.0.6 → ellf_cli-21.0.0}/ellf_cli/version/20.0.5_2026-10-15-08-53-28_patch_10154146-8afd-4632-b250-9b4b9f5bf67c +0 -0
  335. {ellf_cli-20.0.6 → ellf_cli-21.0.0}/ellf_cli/version/__init__.py +0 -0
  336. {ellf_cli-20.0.6 → ellf_cli-21.0.0}/ellf_cli/version/read_version.py +0 -0
  337. {ellf_cli-20.0.6 → ellf_cli-21.0.0}/ellf_cli.egg-info/dependency_links.txt +0 -0
  338. {ellf_cli-20.0.6 → ellf_cli-21.0.0}/ellf_cli.egg-info/entry_points.txt +0 -0
  339. {ellf_cli-20.0.6 → ellf_cli-21.0.0}/ellf_cli.egg-info/not-zip-safe +0 -0
  340. {ellf_cli-20.0.6 → ellf_cli-21.0.0}/ellf_cli.egg-info/requires.txt +0 -0
  341. {ellf_cli-20.0.6 → ellf_cli-21.0.0}/ellf_cli.egg-info/top_level.txt +0 -0
  342. {ellf_cli-20.0.6 → ellf_cli-21.0.0}/pyproject.toml +0 -0
  343. {ellf_cli-20.0.6 → ellf_cli-21.0.0}/setup.cfg +0 -0
  344. {ellf_cli-20.0.6 → ellf_cli-21.0.0}/setup.py +0 -0
  345. {ellf_cli-20.0.6 → ellf_cli-21.0.0}/tests/test_agents_info_stats.py +0 -0
  346. {ellf_cli-20.0.6 → ellf_cli-21.0.0}/tests/test_appdirs.py +0 -0
  347. {ellf_cli-20.0.6 → ellf_cli-21.0.0}/tests/test_auth.py +0 -0
  348. {ellf_cli-20.0.6 → ellf_cli-21.0.0}/tests/test_clusters_info_stats.py +0 -0
  349. {ellf_cli-20.0.6 → ellf_cli-21.0.0}/tests/test_config.py +0 -0
  350. {ellf_cli-20.0.6 → ellf_cli-21.0.0}/tests/test_datasets_export.py +0 -0
  351. {ellf_cli-20.0.6 → ellf_cli-21.0.0}/tests/test_errors.py +0 -0
  352. {ellf_cli-20.0.6 → ellf_cli-21.0.0}/tests/test_files_cp.py +0 -0
  353. {ellf_cli-20.0.6 → ellf_cli-21.0.0}/tests/test_files_cp_helpers.py +0 -0
  354. {ellf_cli-20.0.6 → ellf_cli-21.0.0}/tests/test_helm.py +0 -0
  355. {ellf_cli-20.0.6 → ellf_cli-21.0.0}/tests/test_import_export.py +0 -0
  356. {ellf_cli-20.0.6 → ellf_cli-21.0.0}/tests/test_info.py +0 -0
  357. {ellf_cli-20.0.6 → ellf_cli-21.0.0}/tests/test_infra_config_io.py +0 -0
  358. {ellf_cli-20.0.6 → ellf_cli-21.0.0}/tests/test_infra_configure.py +0 -0
  359. {ellf_cli-20.0.6 → ellf_cli-21.0.0}/tests/test_infra_deploy_node_labels.py +0 -0
  360. {ellf_cli-20.0.6 → ellf_cli-21.0.0}/tests/test_infra_destroy.py +0 -0
  361. {ellf_cli-20.0.6 → ellf_cli-21.0.0}/tests/test_infra_get_terraform.py +0 -0
  362. {ellf_cli-20.0.6 → ellf_cli-21.0.0}/tests/test_infra_hibernate.py +0 -0
  363. {ellf_cli-20.0.6 → ellf_cli-21.0.0}/tests/test_infra_init.py +0 -0
  364. {ellf_cli-20.0.6 → ellf_cli-21.0.0}/tests/test_infra_pause.py +0 -0
  365. {ellf_cli-20.0.6 → ellf_cli-21.0.0}/tests/test_infra_provision.py +0 -0
  366. {ellf_cli-20.0.6 → ellf_cli-21.0.0}/tests/test_infra_start_validation.py +0 -0
  367. {ellf_cli-20.0.6 → ellf_cli-21.0.0}/tests/test_infra_state_bucket.py +0 -0
  368. {ellf_cli-20.0.6 → ellf_cli-21.0.0}/tests/test_infra_terraform_init.py +0 -0
  369. {ellf_cli-20.0.6 → ellf_cli-21.0.0}/tests/test_invalid_secrets.py +0 -0
  370. {ellf_cli-20.0.6 → ellf_cli-21.0.0}/tests/test_job_list_project_filter.py +0 -0
  371. {ellf_cli-20.0.6 → ellf_cli-21.0.0}/tests/test_jobs_info_hides_creator.py +0 -0
  372. {ellf_cli-20.0.6 → ellf_cli-21.0.0}/tests/test_jobs_list_unmatched.py +0 -0
  373. {ellf_cli-20.0.6 → ellf_cli-21.0.0}/tests/test_key_pair.py +0 -0
  374. {ellf_cli-20.0.6 → ellf_cli-21.0.0}/tests/test_login.py +0 -0
  375. {ellf_cli-20.0.6 → ellf_cli-21.0.0}/tests/test_logout.py +0 -0
  376. {ellf_cli-20.0.6 → ellf_cli-21.0.0}/tests/test_main.py +0 -0
  377. {ellf_cli-20.0.6 → ellf_cli-21.0.0}/tests/test_mcp_proxy.py +0 -0
  378. {ellf_cli-20.0.6 → ellf_cli-21.0.0}/tests/test_org_select.py +0 -0
  379. {ellf_cli-20.0.6 → ellf_cli-21.0.0}/tests/test_plans.py +0 -0
  380. {ellf_cli-20.0.6 → ellf_cli-21.0.0}/tests/test_projects.py +0 -0
  381. {ellf_cli-20.0.6 → ellf_cli-21.0.0}/tests/test_projects_delete_confirm.py +0 -0
  382. {ellf_cli-20.0.6 → ellf_cli-21.0.0}/tests/test_publish_build_poll.py +0 -0
  383. {ellf_cli-20.0.6 → ellf_cli-21.0.0}/tests/test_publish_data.py +0 -0
  384. {ellf_cli-20.0.6 → ellf_cli-21.0.0}/tests/test_publish_import_root.py +0 -0
  385. {ellf_cli-20.0.6 → ellf_cli-21.0.0}/tests/test_publish_requirements.py +0 -0
  386. {ellf_cli-20.0.6 → ellf_cli-21.0.0}/tests/test_publish_versions.py +0 -0
  387. {ellf_cli-20.0.6 → ellf_cli-21.0.0}/tests/test_pypi_auth.py +0 -0
  388. {ellf_cli-20.0.6 → ellf_cli-21.0.0}/tests/test_query.py +0 -0
  389. {ellf_cli-20.0.6 → ellf_cli-21.0.0}/tests/test_recipe_file.py +0 -0
  390. {ellf_cli-20.0.6 → ellf_cli-21.0.0}/tests/test_recipe_required_args.py +0 -0
  391. {ellf_cli-20.0.6 → ellf_cli-21.0.0}/tests/test_recipes.py +0 -0
  392. {ellf_cli-20.0.6 → ellf_cli-21.0.0}/tests/test_sessions.py +0 -0
  393. {ellf_cli-20.0.6 → ellf_cli-21.0.0}/tests/test_state.py +0 -0
  394. {ellf_cli-20.0.6 → ellf_cli-21.0.0}/tests/test_support.py +0 -0
  395. {ellf_cli-20.0.6 → ellf_cli-21.0.0}/tests/test_todos.py +0 -0
  396. {ellf_cli-20.0.6 → ellf_cli-21.0.0}/tests/test_ty.py +0 -0
  397. {ellf_cli-20.0.6 → ellf_cli-21.0.0}/tests/test_ui.py +0 -0
  398. {ellf_cli-20.0.6 → ellf_cli-21.0.0}/tests/test_ui_extras.py +0 -0
  399. {ellf_cli-20.0.6 → ellf_cli-21.0.0}/tests/test_usage_counts.py +0 -0
  400. {ellf_cli-20.0.6 → ellf_cli-21.0.0}/tests/test_users_assign.py +0 -0
  401. {ellf_cli-20.0.6 → ellf_cli-21.0.0}/tests/test_users_info_stats.py +0 -0
  402. {ellf_cli-20.0.6 → ellf_cli-21.0.0}/tests/test_users_list.py +0 -0
  403. {ellf_cli-20.0.6 → ellf_cli-21.0.0}/tests/test_util.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: ellf-cli
3
- Version: 20.0.6
3
+ Version: 21.0.0
4
4
  Summary: Ellf Command Line Interface
5
5
  Home-page: https://prodi.gy
6
6
  Author: ExplosionAI GmbH
@@ -1679,7 +1679,7 @@ Log in to your Ellf account. You normally don't need to call this manually. It w
1679
1679
  | `--org` | `str` | Name or ID of the organization to log into. If omitted: auto-select when only one is available, or prompt interactively | `None` |
1680
1680
  | `--cluster` | `str` | Name or ID of the cluster to log into. If omitted: auto-select when only one is available, or prompt interactively | `None` |
1681
1681
  | `--json` | `bool` | Output the result as JSON | `False` |
1682
- | `--agent` | `str` | Set up coding agents to work with Ellf: install the Ellf skills and the knowledge base MCP server. One of claude, codex, opencode, copilot; repeat the option or comma-separate them for several | `None` |
1682
+ | `--agent` | `str` | Set up coding agents to work with Ellf: install the Ellf skills and the knowledge base MCP server. One of claude, codex, copilot, junie, opencode; repeat the option or comma-separate them for several | `None` |
1683
1683
  | `--claude` | `bool` | Shortcut for --agent claude | `False` |
1684
1684
 
1685
1685
  ### `ellf logout`
@@ -12,12 +12,13 @@ from pathlib import Path
12
12
  from types import ModuleType
13
13
  from typing import Any, Callable, Optional, Union
14
14
 
15
- AGENTS = ("claude", "codex", "opencode", "copilot")
15
+ AGENTS = ("claude", "codex", "copilot", "junie", "opencode")
16
16
  AGENT_NAMES = {
17
17
  "claude": "Claude Code",
18
18
  "codex": "Codex",
19
- "opencode": "OpenCode",
20
19
  "copilot": "GitHub Copilot",
20
+ "junie": "Junie",
21
+ "opencode": "OpenCode",
21
22
  }
22
23
  MCP_SERVER_NAME = "ellf-kb"
23
24
 
@@ -39,6 +40,10 @@ def _copilot_home() -> Path:
39
40
  return _env_dir("COPILOT_HOME", _home() / ".copilot")
40
41
 
41
42
 
43
+ def _junie_home() -> Path:
44
+ return _env_dir("JUNIE_HOME", _home() / ".junie")
45
+
46
+
42
47
  def _opencode_config_dir() -> Path:
43
48
  return _env_dir("XDG_CONFIG_HOME", _home() / ".config") / "opencode"
44
49
 
@@ -55,7 +60,7 @@ def skills_dirs(agent: str) -> list[Path]:
55
60
  """The user-level skill directories an agent reads ellf skills from."""
56
61
  if agent == "claude":
57
62
  return [_home() / ".claude" / "skills"]
58
- # Codex, OpenCode and Copilot (CLI and VS Code) all read ~/.agents/skills.
63
+ # Codex, Copilot (CLI and VS Code), Junie and OpenCode all read ~/.agents/skills.
59
64
  dirs = [_home() / ".agents" / "skills"]
60
65
  if agent == "copilot" and os.environ.get("COPILOT_HOME"):
61
66
  # Copilot CLI stops reading ~/.agents/skills when COPILOT_HOME is set.
@@ -271,6 +276,14 @@ def _configure_copilot_cli(command: list[str]) -> Path:
271
276
  return path
272
277
 
273
278
 
279
+ def _configure_junie(command: list[str]) -> Path:
280
+ # The Junie CLI and the JetBrains IDE plugin share this file.
281
+ path = _junie_home() / "mcp" / "mcp.json"
282
+ entry = {"command": command[0], "args": command[1:]}
283
+ _set_json_entry(path, ("mcpServers", MCP_SERVER_NAME), entry)
284
+ return path
285
+
286
+
274
287
  def _configure_vscode(command: list[str]) -> Optional[Path]:
275
288
  # VS Code keeps its own user mcp.json; only touch it when VS Code is there.
276
289
  vscode_dir = _vscode_user_dir()
@@ -285,8 +298,9 @@ def _configure_vscode(command: list[str]) -> Optional[Path]:
285
298
  _MCP_CONFIGURERS: dict[str, list[Callable[[list[str]], Optional[Path]]]] = {
286
299
  "claude": [_configure_claude],
287
300
  "codex": [_configure_codex],
288
- "opencode": [_configure_opencode],
289
301
  "copilot": [_configure_copilot_cli, _configure_vscode],
302
+ "junie": [_configure_junie],
303
+ "opencode": [_configure_opencode],
290
304
  }
291
305
 
292
306
 
@@ -328,7 +342,7 @@ _SESSION_ENV_VARS = (
328
342
 
329
343
  def current_session() -> Optional[AgentSession]:
330
344
  """The agent session this process runs in, from the variables agents set
331
- for the commands they run. OpenCode sets none.
345
+ for the commands they run. Junie and OpenCode set none.
332
346
 
333
347
  An agent started from another agent's shell inherits the outer agent's
334
348
  variables too, and nothing says which one is running this command. Rather
@@ -101,8 +101,9 @@ def init_values(
101
101
  values["cluster"]["nodeSelector"] = {"ellf/role": "system"}
102
102
  # registries.upstream (from credentials) is Explosion's registry —
103
103
  # read-only for user clusters. Publishing custom recipe code needs a
104
- # registry this cluster can push to: yours, never the upstream one.
105
- values["registries"]["user"] = "FILL-IN-your-writable-registry"
104
+ # registry this cluster can push to: the chart's local one, unless
105
+ # registries.user names one of your own.
106
+ values["localRegistry"] = {"enabled": True}
106
107
  values["postgresql"] = {
107
108
  "enabled": True,
108
109
  "auth": {
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "prog": "ellf",
3
3
  "help": "Ellf Command Line Interface.",
4
- "version": "20.0.6",
4
+ "version": "21.0.0",
5
5
  "extra_key": "_extra",
6
6
  "commands": {
7
7
  "actions": {
@@ -289,9 +289,9 @@
289
289
  "id": "agent",
290
290
  "option": "--agent",
291
291
  "short": null,
292
- "orig_help": "Set up coding agents to work with Ellf: install the Ellf skills and the knowledge base MCP server. One of claude, codex, opencode, copilot; repeat the option or comma-separate them for several",
292
+ "orig_help": "Set up coding agents to work with Ellf: install the Ellf skills and the knowledge base MCP server. One of claude, codex, copilot, junie, opencode; repeat the option or comma-separate them for several",
293
293
  "default": null,
294
- "help": "Set up coding agents to work with Ellf: install the Ellf skills and the knowledge base MCP server. One of claude, codex, opencode, copilot; repeat the option or comma-separate them for several (str)",
294
+ "help": "Set up coding agents to work with Ellf: install the Ellf skills and the knowledge base MCP server. One of claude, codex, copilot, junie, opencode; repeat the option or comma-separate them for several (str)",
295
295
  "action": "append",
296
296
  "choices": null,
297
297
  "has_converter": false,
@@ -197,6 +197,13 @@ class HelmChartValues(_StrictModel):
197
197
  upstream: str
198
198
  user: str
199
199
 
200
+ class LocalRegistry(_StrictModel):
201
+ # A registry the chart runs on the node, for single-node clusters
202
+ # without one of their own; used when registries.user is empty.
203
+ enabled: bool
204
+ port: int
205
+ image: str
206
+
200
207
  class Image(_StrictModel):
201
208
  # Legacy key for registries.upstream; still honored by the chart
202
209
  # when registries.upstream is unset.
@@ -380,6 +387,7 @@ class HelmChartValues(_StrictModel):
380
387
  cost_view_table: Annotated[str, Field(alias="costViewTable")]
381
388
  cloud_storage: Annotated[CloudStorage, Field(alias="cloudStorage")]
382
389
  registries: Registries
390
+ local_registry: Annotated[LocalRegistry, Field(alias="localRegistry")]
383
391
  image: Image
384
392
  broker: Broker
385
393
  ingress: Ingress
@@ -430,6 +438,11 @@ class HelmChartOverrides(_StrictModel):
430
438
  upstream: str | None = None
431
439
  user: str | None = None
432
440
 
441
+ class LocalRegistry(_StrictModel):
442
+ enabled: bool | None = None
443
+ port: int | None = None
444
+ image: str | None = None
445
+
433
446
  class Image(_StrictModel):
434
447
  registry: str | None = None
435
448
  broker_version: Annotated[str | None, Field(alias="brokerVersion")] = None
@@ -637,6 +650,7 @@ class HelmChartOverrides(_StrictModel):
637
650
  cost_view_table: Annotated[str | None, Field(alias="costViewTable")] = None
638
651
  cloud_storage: Annotated[CloudStorage | None, Field(alias="cloudStorage")] = None
639
652
  registries: Registries | None = None
653
+ local_registry: Annotated[LocalRegistry | None, Field(alias="localRegistry")] = None
640
654
  image: Image | None = None
641
655
  broker: Broker | None = None
642
656
  ingress: Ingress | None = None
@@ -828,11 +842,18 @@ def user_registry_of(values: HelmChartOverrides) -> str:
828
842
  """The user's own writable registry from the values.
829
843
 
830
844
  Prefers the canonical ``registries.user``; falls back to the legacy
831
- ``cluster.containerRegistry`` key, mirroring the chart's own fallback.
845
+ ``cluster.containerRegistry`` key, then to the chart's local registry,
846
+ mirroring the chart's own fallback.
832
847
  """
833
848
  if values.registries and values.registries.user:
834
849
  return values.registries.user
835
- return (values.cluster.container_registry if values.cluster else None) or ""
850
+ legacy = values.cluster.container_registry if values.cluster else None
851
+ if legacy:
852
+ return legacy
853
+ local = values.local_registry
854
+ if local and local.enabled:
855
+ return f"localhost:{local.port or 5000}"
856
+ return ""
836
857
 
837
858
 
838
859
  def build_values(
@@ -219,8 +219,8 @@ ellf secret create my-credentials OPENAI_API_KEY="sk-..." CUSTOM_SECRET=-
219
219
  login_org = "Name or ID of the organization to log into. If omitted: auto-select when only one is available, or prompt interactively"
220
220
  login_agent = (
221
221
  "Set up coding agents to work with Ellf: install the Ellf skills and the "
222
- "knowledge base MCP server. One of claude, codex, opencode, copilot; repeat "
223
- "the option or comma-separate them for several"
222
+ "knowledge base MCP server. One of claude, codex, copilot, junie, opencode; "
223
+ "repeat the option or comma-separate them for several"
224
224
  )
225
225
  claude = "Shortcut for --agent claude"
226
226
  use_active_venv = "Use the currently active virtualenv, instead of making a temporary one"
@@ -0,0 +1,3 @@
1
+ 20.0.6
2
+ patch
3
+ df3a5d3c-f0e0-46cb-aeaf-15b51c8a0f13
@@ -0,0 +1,3 @@
1
+ 20.0.7
2
+ major
3
+ 3e5dfba3-2810-47b4-85a9-938bfff72a04
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: ellf-cli
3
- Version: 20.0.6
3
+ Version: 21.0.0
4
4
  Summary: Ellf Command Line Interface
5
5
  Home-page: https://prodi.gy
6
6
  Author: ExplosionAI GmbH
@@ -335,6 +335,8 @@ ellf_cli/version/20.0.2_2026-10-12-07-22-24_patch_f4053ad1-8fcd-4591-a68d-bf1e23
335
335
  ellf_cli/version/20.0.3_2026-10-14-14-29-16_patch_070af1c4-f9d9-4f97-8112-058de90d3ea8
336
336
  ellf_cli/version/20.0.4_2026-10-14-16-20-24_patch_c6672844-8227-4e0a-9fb5-36af7e7141dc
337
337
  ellf_cli/version/20.0.5_2026-10-15-08-53-28_patch_10154146-8afd-4632-b250-9b4b9f5bf67c
338
+ ellf_cli/version/20.0.6_2026-10-15-14-17-40_patch_df3a5d3c-f0e0-46cb-aeaf-15b51c8a0f13
339
+ ellf_cli/version/20.0.7_2026-10-16-07-09-40_major_3e5dfba3-2810-47b4-85a9-938bfff72a04
338
340
  ellf_cli/version/__init__.py
339
341
  ellf_cli/version/read_version.py
340
342
  tests/test_agents.py
@@ -19,14 +19,20 @@ SESSION_VARS = (
19
19
  @pytest.fixture(autouse=True)
20
20
  def home(tmp_path, monkeypatch) -> Path:
21
21
  monkeypatch.setattr(Path, "home", lambda: tmp_path)
22
- for var in (*SESSION_VARS, "CODEX_HOME", "COPILOT_HOME", "XDG_CONFIG_HOME"):
22
+ for var in (
23
+ *SESSION_VARS,
24
+ "CODEX_HOME",
25
+ "COPILOT_HOME",
26
+ "JUNIE_HOME",
27
+ "XDG_CONFIG_HOME",
28
+ ):
23
29
  monkeypatch.delenv(var, raising=False)
24
30
  return tmp_path
25
31
 
26
32
 
27
33
  def test_skills_dirs(home, monkeypatch):
28
34
  assert agents.skills_dirs("claude") == [home / ".claude" / "skills"]
29
- for agent in ("codex", "opencode", "copilot"):
35
+ for agent in ("codex", "opencode", "copilot", "junie"):
30
36
  assert agents.skills_dirs(agent) == [home / ".agents" / "skills"]
31
37
  monkeypatch.setenv("COPILOT_HOME", str(home / "cp"))
32
38
  assert agents.skills_dirs("copilot") == [
@@ -210,6 +216,24 @@ class TestCopilotConfig:
210
216
  assert "ellf-kb" in json.loads(target.read_text())["mcpServers"]
211
217
 
212
218
 
219
+ class TestJunieConfig:
220
+ def test_writes_stdio_server(self, home):
221
+ path = home / ".junie" / "mcp" / "mcp.json"
222
+ path.parent.mkdir(parents=True)
223
+ path.write_text(json.dumps({"mcpServers": {"other": {"url": "x"}}}))
224
+ assert agents.configure_mcp("junie", CMD) == [path]
225
+ servers = json.loads(path.read_text())["mcpServers"]
226
+ assert servers["other"] == {"url": "x"}
227
+ assert servers["ellf-kb"] == {
228
+ "command": "/venv/bin/ellf",
229
+ "args": ["mcp", "kb"],
230
+ }
231
+
232
+ def test_honours_junie_home(self, home, monkeypatch):
233
+ monkeypatch.setenv("JUNIE_HOME", str(home / "jn"))
234
+ assert agents.configure_mcp("junie", CMD) == [home / "jn" / "mcp" / "mcp.json"]
235
+
236
+
213
237
  class TestSessions:
214
238
  def test_no_session_outside_agents(self):
215
239
  assert agents.current_session() is None
@@ -27,6 +27,7 @@ from ellf_cli.helm import (
27
27
  HelmChartOverrides,
28
28
  HelmChartValues,
29
29
  build_values,
30
+ user_registry_of,
30
31
  )
31
32
  from ellf_pam_sdk.errors import ClusterNotFound
32
33
  from ellf_pam_sdk.models import ClusterCredentials, Image, Secrets
@@ -101,6 +102,12 @@ def test_init_values_output_parses_for_deploy(tmp_path, cloud_provider):
101
102
  overrides = HelmChartOverrides(**values_dict)
102
103
  assert overrides.cluster is not None
103
104
  assert overrides.cluster.scheme in ("http", "https")
105
+ if cloud_provider == "k3s":
106
+ # Publishing custom code works out of the box: a placeholder
107
+ # registry name only failed at the first push.
108
+ assert overrides.local_registry is not None
109
+ assert overrides.local_registry.enabled
110
+ assert user_registry_of(overrides) == "localhost:5000"
104
111
 
105
112
 
106
113
  def test_ensure_cluster_record_preserves_existing_name():
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes