ellf-cli 5.0.9__tar.gz → 5.0.18__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.
- {ellf_cli-5.0.9/ellf_cli.egg-info → ellf_cli-5.0.18}/PKG-INFO +1 -1
- {ellf_cli-5.0.9 → ellf_cli-5.0.18}/ellf_cli/about.json +1 -1
- {ellf_cli-5.0.9 → ellf_cli-5.0.18}/ellf_cli/auth.py +18 -0
- {ellf_cli-5.0.9 → ellf_cli-5.0.18}/ellf_cli/commands/clusters.py +4 -0
- {ellf_cli-5.0.9 → ellf_cli-5.0.18}/ellf_cli/commands/config.py +5 -1
- {ellf_cli-5.0.9 → ellf_cli-5.0.18}/ellf_cli/commands/general.py +27 -0
- {ellf_cli-5.0.9 → ellf_cli-5.0.18}/ellf_cli/ellf.json +27 -27
- {ellf_cli-5.0.9 → ellf_cli-5.0.18/ellf_cli.egg-info}/PKG-INFO +1 -1
- {ellf_cli-5.0.9 → ellf_cli-5.0.18}/LICENSE +0 -0
- {ellf_cli-5.0.9 → ellf_cli-5.0.18}/MANIFEST.in +0 -0
- {ellf_cli-5.0.9 → ellf_cli-5.0.18}/README.md +0 -0
- {ellf_cli-5.0.9 → ellf_cli-5.0.18}/ellf_cli/__init__.py +0 -0
- {ellf_cli-5.0.9 → ellf_cli-5.0.18}/ellf_cli/__main__.py +0 -0
- {ellf_cli-5.0.9 → ellf_cli-5.0.18}/ellf_cli/about.py +0 -0
- {ellf_cli-5.0.9 → ellf_cli-5.0.18}/ellf_cli/appdirs.py +0 -0
- {ellf_cli-5.0.9 → ellf_cli-5.0.18}/ellf_cli/cli.py +0 -0
- {ellf_cli-5.0.9 → ellf_cli-5.0.18}/ellf_cli/cloud/__init__.py +0 -0
- {ellf_cli-5.0.9 → ellf_cli-5.0.18}/ellf_cli/cloud/gcp.py +0 -0
- {ellf_cli-5.0.9 → ellf_cli-5.0.18}/ellf_cli/cluster_config.py +0 -0
- {ellf_cli-5.0.9 → ellf_cli-5.0.18}/ellf_cli/commands/__init__.py +0 -0
- {ellf_cli-5.0.9 → ellf_cli-5.0.18}/ellf_cli/commands/_cluster_select.py +0 -0
- {ellf_cli-5.0.9 → ellf_cli-5.0.18}/ellf_cli/commands/_recipe_file.py +0 -0
- {ellf_cli-5.0.9 → ellf_cli-5.0.18}/ellf_cli/commands/_recipe_subcommand.py +0 -0
- {ellf_cli-5.0.9 → ellf_cli-5.0.18}/ellf_cli/commands/_state.py +0 -0
- {ellf_cli-5.0.9 → ellf_cli-5.0.18}/ellf_cli/commands/actions.py +0 -0
- {ellf_cli-5.0.9 → ellf_cli-5.0.18}/ellf_cli/commands/agents.py +0 -0
- {ellf_cli-5.0.9 → ellf_cli-5.0.18}/ellf_cli/commands/assets.py +0 -0
- {ellf_cli-5.0.9 → ellf_cli-5.0.18}/ellf_cli/commands/auth.py +0 -0
- {ellf_cli-5.0.9 → ellf_cli-5.0.18}/ellf_cli/commands/datasets.py +0 -0
- {ellf_cli-5.0.9 → ellf_cli-5.0.18}/ellf_cli/commands/files/__init__.py +0 -0
- {ellf_cli-5.0.9 → ellf_cli-5.0.18}/ellf_cli/commands/files/cp.py +0 -0
- {ellf_cli-5.0.9 → ellf_cli-5.0.18}/ellf_cli/commands/files/ls.py +0 -0
- {ellf_cli-5.0.9 → ellf_cli-5.0.18}/ellf_cli/commands/files/rm.py +0 -0
- {ellf_cli-5.0.9 → ellf_cli-5.0.18}/ellf_cli/commands/files/rsync.py +0 -0
- {ellf_cli-5.0.9 → ellf_cli-5.0.18}/ellf_cli/commands/files/stats.py +0 -0
- {ellf_cli-5.0.9 → ellf_cli-5.0.18}/ellf_cli/commands/import_export.py +0 -0
- {ellf_cli-5.0.9 → ellf_cli-5.0.18}/ellf_cli/commands/infra/__init__.py +0 -0
- {ellf_cli-5.0.9 → ellf_cli-5.0.18}/ellf_cli/commands/infra/_helpers.py +0 -0
- {ellf_cli-5.0.9 → ellf_cli-5.0.18}/ellf_cli/commands/infra/deploy.py +0 -0
- {ellf_cli-5.0.9 → ellf_cli-5.0.18}/ellf_cli/commands/infra/init_values.py +0 -0
- {ellf_cli-5.0.9 → ellf_cli-5.0.18}/ellf_cli/commands/infra/provision.py +0 -0
- {ellf_cli-5.0.9 → ellf_cli-5.0.18}/ellf_cli/commands/infra/register.py +0 -0
- {ellf_cli-5.0.9 → ellf_cli-5.0.18}/ellf_cli/commands/infra/setup.py +0 -0
- {ellf_cli-5.0.9 → ellf_cli-5.0.18}/ellf_cli/commands/infra/start.py +0 -0
- {ellf_cli-5.0.9 → ellf_cli-5.0.18}/ellf_cli/commands/infra/terraform.py +0 -0
- {ellf_cli-5.0.9 → ellf_cli-5.0.18}/ellf_cli/commands/infra/tls.py +0 -0
- {ellf_cli-5.0.9 → ellf_cli-5.0.18}/ellf_cli/commands/jobs.py +0 -0
- {ellf_cli-5.0.9 → ellf_cli-5.0.18}/ellf_cli/commands/packages.py +0 -0
- {ellf_cli-5.0.9 → ellf_cli-5.0.18}/ellf_cli/commands/paths.py +0 -0
- {ellf_cli-5.0.9 → ellf_cli-5.0.18}/ellf_cli/commands/plans.py +0 -0
- {ellf_cli-5.0.9 → ellf_cli-5.0.18}/ellf_cli/commands/projects.py +0 -0
- {ellf_cli-5.0.9 → ellf_cli-5.0.18}/ellf_cli/commands/publish_code.py +0 -0
- {ellf_cli-5.0.9 → ellf_cli-5.0.18}/ellf_cli/commands/publish_data.py +0 -0
- {ellf_cli-5.0.9 → ellf_cli-5.0.18}/ellf_cli/commands/recipes.py +0 -0
- {ellf_cli-5.0.9 → ellf_cli-5.0.18}/ellf_cli/commands/secrets.py +0 -0
- {ellf_cli-5.0.9 → ellf_cli-5.0.18}/ellf_cli/commands/support.py +0 -0
- {ellf_cli-5.0.9 → ellf_cli-5.0.18}/ellf_cli/commands/tasks.py +0 -0
- {ellf_cli-5.0.9 → ellf_cli-5.0.18}/ellf_cli/commands/todos.py +0 -0
- {ellf_cli-5.0.9 → ellf_cli-5.0.18}/ellf_cli/config.py +0 -0
- {ellf_cli-5.0.9 → ellf_cli-5.0.18}/ellf_cli/ellf_skills/.claude-plugin/plugin.json +0 -0
- {ellf_cli-5.0.9 → ellf_cli-5.0.18}/ellf_cli/ellf_skills/.gitignore +0 -0
- {ellf_cli-5.0.9 → ellf_cli-5.0.18}/ellf_cli/ellf_skills/skill_variants.json +0 -0
- {ellf_cli-5.0.9 → ellf_cli-5.0.18}/ellf_cli/ellf_skills/skills/ellf-annotate.assistant/SKILL.md +0 -0
- {ellf_cli-5.0.9 → ellf_cli-5.0.18}/ellf_cli/ellf_skills/skills/ellf-annotate.assistant/references/annotation_audit.md +0 -0
- {ellf_cli-5.0.9 → ellf_cli-5.0.18}/ellf_cli/ellf_skills/skills/ellf-annotate.assistant/references/builtin_ellf_annotation_recipes.md +0 -0
- {ellf_cli-5.0.9 → ellf_cli-5.0.18}/ellf_cli/ellf_skills/skills/ellf-annotate.coding/SKILL.md +0 -0
- {ellf_cli-5.0.9 → ellf_cli-5.0.18}/ellf_cli/ellf_skills/skills/ellf-annotate.coding/references/annotation_audit.md +0 -0
- {ellf_cli-5.0.9 → ellf_cli-5.0.18}/ellf_cli/ellf_skills/skills/ellf-annotate.coding/references/builtin_ellf_annotation_recipes.md +0 -0
- {ellf_cli-5.0.9 → ellf_cli-5.0.18}/ellf_cli/ellf_skills/skills/ellf-annotate.coding/references/builtin_prodigy_recipes.md +0 -0
- {ellf_cli-5.0.9 → ellf_cli-5.0.18}/ellf_cli/ellf_skills/skills/ellf-ask/SKILL.md +0 -0
- {ellf_cli-5.0.9 → ellf_cli-5.0.18}/ellf_cli/ellf_skills/skills/ellf-handoff/SKILL.md +0 -0
- {ellf_cli-5.0.9 → ellf_cli-5.0.18}/ellf_cli/ellf_skills/skills/ellf-monitor.assistant/SKILL.md +0 -0
- {ellf_cli-5.0.9 → ellf_cli-5.0.18}/ellf_cli/ellf_skills/skills/ellf-monitor.assistant/references/annotation_metrics.md +0 -0
- {ellf_cli-5.0.9 → ellf_cli-5.0.18}/ellf_cli/ellf_skills/skills/ellf-monitor.assistant/references/training_monitoring.md +0 -0
- {ellf_cli-5.0.9 → ellf_cli-5.0.18}/ellf_cli/ellf_skills/skills/ellf-monitor.coding/SKILL.md +0 -0
- {ellf_cli-5.0.9 → ellf_cli-5.0.18}/ellf_cli/ellf_skills/skills/ellf-monitor.coding/references/annotation_metrics.md +0 -0
- {ellf_cli-5.0.9 → ellf_cli-5.0.18}/ellf_cli/ellf_skills/skills/ellf-monitor.coding/references/training_monitoring.md +0 -0
- {ellf_cli-5.0.9 → ellf_cli-5.0.18}/ellf_cli/ellf_skills/skills/ellf-monitor.coding/scripts/check_training.py +0 -0
- {ellf_cli-5.0.9 → ellf_cli-5.0.18}/ellf_cli/ellf_skills/skills/ellf-ops.assistant/SKILL.md +0 -0
- {ellf_cli-5.0.9 → ellf_cli-5.0.18}/ellf_cli/ellf_skills/skills/ellf-ops.coding/SKILL.md +0 -0
- {ellf_cli-5.0.9 → ellf_cli-5.0.18}/ellf_cli/ellf_skills/skills/ellf-ops.coding/references/data_infra_cli.md +0 -0
- {ellf_cli-5.0.9 → ellf_cli-5.0.18}/ellf_cli/ellf_skills/skills/ellf-ops.coding/scripts/run_job.py +0 -0
- {ellf_cli-5.0.9 → ellf_cli-5.0.18}/ellf_cli/ellf_skills/skills/ellf-patterns/SKILL.md +0 -0
- {ellf_cli-5.0.9 → ellf_cli-5.0.18}/ellf_cli/ellf_skills/skills/ellf-patterns/references/pattern_strategies.md +0 -0
- {ellf_cli-5.0.9 → ellf_cli-5.0.18}/ellf_cli/ellf_skills/skills/ellf-prodigy/SKILL.md +0 -0
- {ellf_cli-5.0.9 → ellf_cli-5.0.18}/ellf_cli/ellf_skills/skills/ellf-prodigy/assets/templates/template_action_recipe.py +0 -0
- {ellf_cli-5.0.9 → ellf_cli-5.0.18}/ellf_cli/ellf_skills/skills/ellf-prodigy/assets/templates/template_agent_recipe.py +0 -0
- {ellf_cli-5.0.9 → ellf_cli-5.0.18}/ellf_cli/ellf_skills/skills/ellf-prodigy/assets/templates/template_blocks_ui.py +0 -0
- {ellf_cli-5.0.9 → ellf_cli-5.0.18}/ellf_cli/ellf_skills/skills/ellf-prodigy/assets/templates/template_correct.py +0 -0
- {ellf_cli-5.0.9 → ellf_cli-5.0.18}/ellf_cli/ellf_skills/skills/ellf-prodigy/assets/templates/template_custom_ui.py +0 -0
- {ellf_cli-5.0.9 → ellf_cli-5.0.18}/ellf_cli/ellf_skills/skills/ellf-prodigy/assets/templates/template_manual.py +0 -0
- {ellf_cli-5.0.9 → ellf_cli-5.0.18}/ellf_cli/ellf_skills/skills/ellf-prodigy/assets/templates/template_pages_ui.py +0 -0
- {ellf_cli-5.0.9 → ellf_cli-5.0.18}/ellf_cli/ellf_skills/skills/ellf-prodigy/assets/templates/template_routing.py +0 -0
- {ellf_cli-5.0.9 → ellf_cli-5.0.18}/ellf_cli/ellf_skills/skills/ellf-prodigy/assets/templates/template_task_recipe.py +0 -0
- {ellf_cli-5.0.9 → ellf_cli-5.0.18}/ellf_cli/ellf_skills/skills/ellf-prodigy/assets/templates/template_teach.py +0 -0
- {ellf_cli-5.0.9 → ellf_cli-5.0.18}/ellf_cli/ellf_skills/skills/ellf-prodigy/references/builtin_recipes.md +0 -0
- {ellf_cli-5.0.9 → ellf_cli-5.0.18}/ellf_cli/ellf_skills/skills/ellf-prodigy/references/ellf_recipe_sdk.md +0 -0
- {ellf_cli-5.0.9 → ellf_cli-5.0.18}/ellf_cli/ellf_skills/skills/ellf-prodigy/references/lint_recipe.py +0 -0
- {ellf_cli-5.0.9 → ellf_cli-5.0.18}/ellf_cli/ellf_skills/skills/ellf-prodigy/references/prodigy_recipe_api.md +0 -0
- {ellf_cli-5.0.9 → ellf_cli-5.0.18}/ellf_cli/ellf_skills/skills/ellf-prodigy/references/template_index.md +0 -0
- {ellf_cli-5.0.9 → ellf_cli-5.0.18}/ellf_cli/ellf_skills/skills/ellf-project.assistant/SKILL.md +0 -0
- {ellf_cli-5.0.9 → ellf_cli-5.0.18}/ellf_cli/ellf_skills/skills/ellf-project.assistant/references/consulting_patterns.md +0 -0
- {ellf_cli-5.0.9 → ellf_cli-5.0.18}/ellf_cli/ellf_skills/skills/ellf-project.assistant/references/explosion_strategy.md +0 -0
- {ellf_cli-5.0.9 → ellf_cli-5.0.18}/ellf_cli/ellf_skills/skills/ellf-project.assistant/references/prodigy_llm_bot.md +0 -0
- {ellf_cli-5.0.9 → ellf_cli-5.0.18}/ellf_cli/ellf_skills/skills/ellf-project.coding/SKILL.md +0 -0
- {ellf_cli-5.0.9 → ellf_cli-5.0.18}/ellf_cli/ellf_skills/skills/ellf-project.coding/references/consulting_patterns.md +0 -0
- {ellf_cli-5.0.9 → ellf_cli-5.0.18}/ellf_cli/ellf_skills/skills/ellf-project.coding/references/explosion_strategy.md +0 -0
- {ellf_cli-5.0.9 → ellf_cli-5.0.18}/ellf_cli/ellf_skills/skills/ellf-project.coding/references/prodigy_llm_bot.md +0 -0
- {ellf_cli-5.0.9 → ellf_cli-5.0.18}/ellf_cli/ellf_skills/skills/ellf-support.assistant/SKILL.md +0 -0
- {ellf_cli-5.0.9 → ellf_cli-5.0.18}/ellf_cli/ellf_skills/skills/ellf-support.coding/SKILL.md +0 -0
- {ellf_cli-5.0.9 → ellf_cli-5.0.18}/ellf_cli/ellf_skills/skills/ellf-todo/SKILL.md +0 -0
- {ellf_cli-5.0.9 → ellf_cli-5.0.18}/ellf_cli/ellf_skills/skills/ellf-train.assistant/SKILL.md +0 -0
- {ellf_cli-5.0.9 → ellf_cli-5.0.18}/ellf_cli/ellf_skills/skills/ellf-train.assistant/references/diagnostics.md +0 -0
- {ellf_cli-5.0.9 → ellf_cli-5.0.18}/ellf_cli/ellf_skills/skills/ellf-train.assistant/references/evaluation_guide.md +0 -0
- {ellf_cli-5.0.9 → ellf_cli-5.0.18}/ellf_cli/ellf_skills/skills/ellf-train.assistant/references/model_selection.md +0 -0
- {ellf_cli-5.0.9 → ellf_cli-5.0.18}/ellf_cli/ellf_skills/skills/ellf-train.assistant/references/training_paradigms.md +0 -0
- {ellf_cli-5.0.9 → ellf_cli-5.0.18}/ellf_cli/ellf_skills/skills/ellf-train.assistant/references/workflow.md +0 -0
- {ellf_cli-5.0.9 → ellf_cli-5.0.18}/ellf_cli/ellf_skills/skills/ellf-train.coding/SKILL.md +0 -0
- {ellf_cli-5.0.9 → ellf_cli-5.0.18}/ellf_cli/ellf_skills/skills/ellf-train.coding/references/config_advanced.md +0 -0
- {ellf_cli-5.0.9 → ellf_cli-5.0.18}/ellf_cli/ellf_skills/skills/ellf-train.coding/references/config_architectures.md +0 -0
- {ellf_cli-5.0.9 → ellf_cli-5.0.18}/ellf_cli/ellf_skills/skills/ellf-train.coding/references/config_training.md +0 -0
- {ellf_cli-5.0.9 → ellf_cli-5.0.18}/ellf_cli/ellf_skills/skills/ellf-train.coding/references/diagnostics.md +0 -0
- {ellf_cli-5.0.9 → ellf_cli-5.0.18}/ellf_cli/ellf_skills/skills/ellf-train.coding/references/evaluation_guide.md +0 -0
- {ellf_cli-5.0.9 → ellf_cli-5.0.18}/ellf_cli/ellf_skills/skills/ellf-train.coding/references/experiment_patterns.md +0 -0
- {ellf_cli-5.0.9 → ellf_cli-5.0.18}/ellf_cli/ellf_skills/skills/ellf-train.coding/references/model_selection.md +0 -0
- {ellf_cli-5.0.9 → ellf_cli-5.0.18}/ellf_cli/ellf_skills/skills/ellf-train.coding/references/training_paradigms.md +0 -0
- {ellf_cli-5.0.9 → ellf_cli-5.0.18}/ellf_cli/ellf_skills/skills/ellf-train.coding/references/training_troubleshooting.md +0 -0
- {ellf_cli-5.0.9 → ellf_cli-5.0.18}/ellf_cli/ellf_skills/skills/ellf-train.coding/references/workflow.md +0 -0
- {ellf_cli-5.0.9 → ellf_cli-5.0.18}/ellf_cli/ellf_skills/skills/ellf-train.coding/scripts/ellf_logger.py +0 -0
- {ellf_cli-5.0.9 → ellf_cli-5.0.18}/ellf_cli/errors.py +0 -0
- {ellf_cli-5.0.9 → ellf_cli-5.0.18}/ellf_cli/helm.py +0 -0
- {ellf_cli-5.0.9 → ellf_cli-5.0.18}/ellf_cli/key_pair.py +0 -0
- {ellf_cli-5.0.9 → ellf_cli-5.0.18}/ellf_cli/main.py +0 -0
- {ellf_cli-5.0.9 → ellf_cli-5.0.18}/ellf_cli/messages.py +0 -0
- {ellf_cli-5.0.9 → ellf_cli-5.0.18}/ellf_cli/query.py +0 -0
- {ellf_cli-5.0.9 → ellf_cli-5.0.18}/ellf_cli/recipes_cookiecutter/cookiecutter.json +0 -0
- {ellf_cli-5.0.9 → ellf_cli-5.0.18}/ellf_cli/recipes_cookiecutter/{{cookiecutter.package_dir}}/.gitignore +0 -0
- {ellf_cli-5.0.9 → ellf_cli-5.0.18}/ellf_cli/recipes_cookiecutter/{{cookiecutter.package_dir}}/README.md.tmpl +0 -0
- {ellf_cli-5.0.9 → ellf_cli-5.0.18}/ellf_cli/recipes_cookiecutter/{{cookiecutter.package_dir}}/requirements-dev.in +0 -0
- {ellf_cli-5.0.9 → ellf_cli-5.0.18}/ellf_cli/recipes_cookiecutter/{{cookiecutter.package_dir}}/requirements.in +0 -0
- {ellf_cli-5.0.9 → ellf_cli-5.0.18}/ellf_cli/recipes_cookiecutter/{{cookiecutter.package_dir}}/setup.py.tmpl +0 -0
- {ellf_cli-5.0.9 → ellf_cli-5.0.18}/ellf_cli/recipes_cookiecutter/{{cookiecutter.package_dir}}/{{cookiecutter.package_name}}/__init__.py +0 -0
- {ellf_cli-5.0.9 → ellf_cli-5.0.18}/ellf_cli/recipes_cookiecutter/{{cookiecutter.package_dir}}/{{cookiecutter.package_name}}/about.py +0 -0
- {ellf_cli-5.0.9 → ellf_cli-5.0.18}/ellf_cli/recipes_cookiecutter/{{cookiecutter.package_dir}}/{{cookiecutter.package_name}}/recipes/__init__.py +0 -0
- {ellf_cli-5.0.9 → ellf_cli-5.0.18}/ellf_cli/recipes_cookiecutter/{{cookiecutter.package_dir}}/{{cookiecutter.package_name}}/recipes/example_task.py +0 -0
- {ellf_cli-5.0.9 → ellf_cli-5.0.18}/ellf_cli/testing/__init__.py +0 -0
- {ellf_cli-5.0.9 → ellf_cli-5.0.18}/ellf_cli/ty.py +0 -0
- {ellf_cli-5.0.9 → ellf_cli-5.0.18}/ellf_cli/ui.py +0 -0
- {ellf_cli-5.0.9 → ellf_cli-5.0.18}/ellf_cli/url.py +0 -0
- {ellf_cli-5.0.9 → ellf_cli-5.0.18}/ellf_cli/util.py +0 -0
- {ellf_cli-5.0.9 → ellf_cli-5.0.18}/ellf_cli.egg-info/SOURCES.txt +0 -0
- {ellf_cli-5.0.9 → ellf_cli-5.0.18}/ellf_cli.egg-info/dependency_links.txt +0 -0
- {ellf_cli-5.0.9 → ellf_cli-5.0.18}/ellf_cli.egg-info/entry_points.txt +0 -0
- {ellf_cli-5.0.9 → ellf_cli-5.0.18}/ellf_cli.egg-info/not-zip-safe +0 -0
- {ellf_cli-5.0.9 → ellf_cli-5.0.18}/ellf_cli.egg-info/requires.txt +0 -0
- {ellf_cli-5.0.9 → ellf_cli-5.0.18}/ellf_cli.egg-info/top_level.txt +0 -0
- {ellf_cli-5.0.9 → ellf_cli-5.0.18}/pyproject.toml +0 -0
- {ellf_cli-5.0.9 → ellf_cli-5.0.18}/setup.cfg +0 -0
- {ellf_cli-5.0.9 → ellf_cli-5.0.18}/setup.py +0 -0
- {ellf_cli-5.0.9 → ellf_cli-5.0.18}/tests/test_appdirs.py +0 -0
- {ellf_cli-5.0.9 → ellf_cli-5.0.18}/tests/test_auth.py +0 -0
- {ellf_cli-5.0.9 → ellf_cli-5.0.18}/tests/test_config.py +0 -0
- {ellf_cli-5.0.9 → ellf_cli-5.0.18}/tests/test_errors.py +0 -0
- {ellf_cli-5.0.9 → ellf_cli-5.0.18}/tests/test_files_cp.py +0 -0
- {ellf_cli-5.0.9 → ellf_cli-5.0.18}/tests/test_files_cp_helpers.py +0 -0
- {ellf_cli-5.0.9 → ellf_cli-5.0.18}/tests/test_info.py +0 -0
- {ellf_cli-5.0.9 → ellf_cli-5.0.18}/tests/test_invalid_secrets.py +0 -0
- {ellf_cli-5.0.9 → ellf_cli-5.0.18}/tests/test_key_pair.py +0 -0
- {ellf_cli-5.0.9 → ellf_cli-5.0.18}/tests/test_login.py +0 -0
- {ellf_cli-5.0.9 → ellf_cli-5.0.18}/tests/test_main.py +0 -0
- {ellf_cli-5.0.9 → ellf_cli-5.0.18}/tests/test_plans.py +0 -0
- {ellf_cli-5.0.9 → ellf_cli-5.0.18}/tests/test_projects.py +0 -0
- {ellf_cli-5.0.9 → ellf_cli-5.0.18}/tests/test_query.py +0 -0
- {ellf_cli-5.0.9 → ellf_cli-5.0.18}/tests/test_recipe_file.py +0 -0
- {ellf_cli-5.0.9 → ellf_cli-5.0.18}/tests/test_recipes.py +0 -0
- {ellf_cli-5.0.9 → ellf_cli-5.0.18}/tests/test_state.py +0 -0
- {ellf_cli-5.0.9 → ellf_cli-5.0.18}/tests/test_support.py +0 -0
- {ellf_cli-5.0.9 → ellf_cli-5.0.18}/tests/test_ty.py +0 -0
- {ellf_cli-5.0.9 → ellf_cli-5.0.18}/tests/test_ui.py +0 -0
- {ellf_cli-5.0.9 → ellf_cli-5.0.18}/tests/test_ui_extras.py +0 -0
- {ellf_cli-5.0.9 → ellf_cli-5.0.18}/tests/test_util.py +0 -0
|
@@ -145,6 +145,9 @@ class AuthState(Protocol):
|
|
|
145
145
|
@property
|
|
146
146
|
def org_id(self) -> UUID: ...
|
|
147
147
|
|
|
148
|
+
@property
|
|
149
|
+
def user_id(self) -> UUID: ...
|
|
150
|
+
|
|
148
151
|
@property
|
|
149
152
|
def pam_host(self) -> str: ...
|
|
150
153
|
|
|
@@ -269,6 +272,21 @@ class AuthStateImpl:
|
|
|
269
272
|
self._org_id = orgs[0].id
|
|
270
273
|
return self._org_id
|
|
271
274
|
|
|
275
|
+
@property
|
|
276
|
+
def user_id(self) -> UUID:
|
|
277
|
+
"""Extract the current user's UUID from the PAM api token.
|
|
278
|
+
|
|
279
|
+
Decoded from the JWT's ``uid`` claim (set by pam.tokens.encode_pam_token).
|
|
280
|
+
Reading from the token avoids a /v1/user/read round-trip for the
|
|
281
|
+
common case where a caller just wants to associate state with the
|
|
282
|
+
current user — e.g. persisting last_cluster_id after `clusters use`.
|
|
283
|
+
"""
|
|
284
|
+
token = self.get_api_token()
|
|
285
|
+
uid = token.header.get("uid")
|
|
286
|
+
if uid is None:
|
|
287
|
+
raise EllfError(message="PAM token missing uid claim")
|
|
288
|
+
return UUID(uid)
|
|
289
|
+
|
|
272
290
|
@property
|
|
273
291
|
def pam_host(self) -> str:
|
|
274
292
|
return self.pam_url.netloc
|
|
@@ -33,6 +33,7 @@ from ..ui import print_info_table, print_mutation_result, print_table_with_selec
|
|
|
33
33
|
from ..util import URL
|
|
34
34
|
from ._cluster_select import select_cluster
|
|
35
35
|
from ._state import get_auth_state, get_root_cfg, get_saved_settings
|
|
36
|
+
from .general import persist_last_active_context
|
|
36
37
|
|
|
37
38
|
|
|
38
39
|
def uuid7() -> uuid.UUID:
|
|
@@ -156,6 +157,9 @@ def use(
|
|
|
156
157
|
settings.update("cluster_id", chosen.id)
|
|
157
158
|
settings.save(get_root_cfg().saved_settings_path)
|
|
158
159
|
auth.set_active_cluster(chosen.id, broker_url)
|
|
160
|
+
# Mirror to the user's PAM record so the web app — and other CLI
|
|
161
|
+
# sessions — see the same active cluster after an org switch.
|
|
162
|
+
persist_last_active_context(auth, last_cluster_id=chosen.id)
|
|
159
163
|
print_mutation_result(
|
|
160
164
|
{
|
|
161
165
|
"status": "ok",
|
|
@@ -16,7 +16,8 @@ from ..query import (
|
|
|
16
16
|
)
|
|
17
17
|
from ..ui import print_mutation_result
|
|
18
18
|
from ..util import URL
|
|
19
|
-
from ._state import get_root_cfg, get_saved_settings
|
|
19
|
+
from ._state import get_auth_state, get_root_cfg, get_saved_settings
|
|
20
|
+
from .general import persist_last_active_context
|
|
20
21
|
|
|
21
22
|
|
|
22
23
|
@cli.subcommand(
|
|
@@ -53,6 +54,9 @@ def project(name_or_id: Union[str, UUID], as_json: bool = False) -> UUID:
|
|
|
53
54
|
settings = get_saved_settings()
|
|
54
55
|
settings.update("project", project_id)
|
|
55
56
|
settings.save(root_cfg.saved_settings_path)
|
|
57
|
+
# Mirror to the user's PAM record so the web app — and other CLI
|
|
58
|
+
# sessions — see the same active project after an org switch.
|
|
59
|
+
persist_last_active_context(get_auth_state(), last_project_id=project_id)
|
|
56
60
|
print_mutation_result(
|
|
57
61
|
{"status": "ok", "project_id": str(project_id)},
|
|
58
62
|
Messages.T019.format(noun="project", name=project_id),
|
|
@@ -114,9 +114,36 @@ def _select_and_persist_cluster(
|
|
|
114
114
|
settings.update("cluster_id", chosen.id)
|
|
115
115
|
settings.save(get_root_cfg().saved_settings_path)
|
|
116
116
|
auth.set_active_cluster(chosen.id, broker_url)
|
|
117
|
+
persist_last_active_context(auth, last_cluster_id=chosen.id)
|
|
117
118
|
return chosen.id
|
|
118
119
|
|
|
119
120
|
|
|
121
|
+
def persist_last_active_context(
|
|
122
|
+
auth: AuthState,
|
|
123
|
+
*,
|
|
124
|
+
last_cluster_id: Optional[UUID] = None,
|
|
125
|
+
last_project_id: Optional[UUID] = None,
|
|
126
|
+
) -> None:
|
|
127
|
+
"""Mirror local cluster/project state into the user's PAM record.
|
|
128
|
+
|
|
129
|
+
The web app reads ``User.last_cluster_id`` / ``last_project_id`` to
|
|
130
|
+
restore context after org switches, and the CLI persists here so a
|
|
131
|
+
web session that follows a ``clusters use`` lands on the same
|
|
132
|
+
cluster.
|
|
133
|
+
"""
|
|
134
|
+
from ellf_pam_sdk.models import UserUpdating
|
|
135
|
+
|
|
136
|
+
if last_cluster_id is None and last_project_id is None:
|
|
137
|
+
return
|
|
138
|
+
auth.client.user.update(
|
|
139
|
+
UserUpdating(
|
|
140
|
+
id=auth.user_id,
|
|
141
|
+
last_cluster_id=last_cluster_id,
|
|
142
|
+
last_project_id=last_project_id,
|
|
143
|
+
)
|
|
144
|
+
)
|
|
145
|
+
|
|
146
|
+
|
|
120
147
|
@cli.command("info", field=Arg(help=Messages.select_field))
|
|
121
148
|
def info(field: Optional[Literal["config-dir", "code", "defaults"]] = None) -> Any:
|
|
122
149
|
"""Print information about the CLI"""
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"prog": "ellf",
|
|
3
3
|
"help": "Ellf Command Line Interface.",
|
|
4
|
-
"version": "5.0.
|
|
4
|
+
"version": "5.0.17",
|
|
5
5
|
"extra_key": "_extra",
|
|
6
6
|
"commands": {
|
|
7
7
|
"actions": {
|
|
@@ -217,7 +217,7 @@
|
|
|
217
217
|
"orig_type": "bool"
|
|
218
218
|
}
|
|
219
219
|
],
|
|
220
|
-
"description": "\
|
|
220
|
+
"description": "\nLog in to your Ellf account. You normally don't need to call this\nmanually. It will automatically authenticate when needed.\n",
|
|
221
221
|
"allow_extra": false,
|
|
222
222
|
"parent": null,
|
|
223
223
|
"is_placeholder": false
|
|
@@ -270,7 +270,7 @@
|
|
|
270
270
|
"orig_type": "Literal[api, cluster, id, ci]"
|
|
271
271
|
}
|
|
272
272
|
],
|
|
273
|
-
"description": "\
|
|
273
|
+
"description": "\nReturn an auth token for the current user\n",
|
|
274
274
|
"allow_extra": false,
|
|
275
275
|
"parent": null,
|
|
276
276
|
"is_placeholder": false
|
|
@@ -346,7 +346,7 @@
|
|
|
346
346
|
"orig_type": "list[Literal[tasks, actions, assets, datasets, paths]]"
|
|
347
347
|
}
|
|
348
348
|
],
|
|
349
|
-
"description": "\
|
|
349
|
+
"description": "\nSave the state of the current app JSON file. If an assets directory is\nprovided, assets will be downloaded and referenced in the JSON accordingly.\n",
|
|
350
350
|
"allow_extra": false,
|
|
351
351
|
"parent": null,
|
|
352
352
|
"is_placeholder": false
|
|
@@ -381,7 +381,7 @@
|
|
|
381
381
|
"orig_type": "bool"
|
|
382
382
|
}
|
|
383
383
|
],
|
|
384
|
-
"description": "\
|
|
384
|
+
"description": "\nPopulate Ellf with data for projects, tasks, actions, assets and paths.\n",
|
|
385
385
|
"allow_extra": false,
|
|
386
386
|
"parent": null,
|
|
387
387
|
"is_placeholder": false
|
|
@@ -458,7 +458,7 @@
|
|
|
458
458
|
"orig_type": "List[str]"
|
|
459
459
|
}
|
|
460
460
|
],
|
|
461
|
-
"description": "\
|
|
461
|
+
"description": "\nCreate a new action. The available action recipes are fetched from your\ncluster and are added as dynamic subcommands. You can see more details\nand available arguments by calling the subcommand with --help, e.g. create\n[name] --help\n",
|
|
462
462
|
"allow_extra": true,
|
|
463
463
|
"parent": "actions",
|
|
464
464
|
"is_placeholder": false
|
|
@@ -493,7 +493,7 @@
|
|
|
493
493
|
"orig_type": "bool"
|
|
494
494
|
}
|
|
495
495
|
],
|
|
496
|
-
"description": "\
|
|
496
|
+
"description": "\nList the actions on the cluster. By default, this includes their ID, name\nand current state, e.g. created or completed\n",
|
|
497
497
|
"allow_extra": false,
|
|
498
498
|
"parent": "actions",
|
|
499
499
|
"is_placeholder": false
|
|
@@ -939,7 +939,7 @@
|
|
|
939
939
|
"orig_type": "List[str]"
|
|
940
940
|
}
|
|
941
941
|
],
|
|
942
|
-
"description": "\
|
|
942
|
+
"description": "\nCreate a new agent. The available agent recipes are fetched from your\ncluster and are added as dynamic subcommands. You can see more details\nand available arguments by calling the subcommand with --help, e.g. create\n[name] --help\n",
|
|
943
943
|
"allow_extra": true,
|
|
944
944
|
"parent": "agents",
|
|
945
945
|
"is_placeholder": false
|
|
@@ -1048,7 +1048,7 @@
|
|
|
1048
1048
|
"orig_type": "bool"
|
|
1049
1049
|
}
|
|
1050
1050
|
],
|
|
1051
|
-
"description": "\
|
|
1051
|
+
"description": "\nList the agents on the cluster. By default, this includes their ID, name\nand current state, e.g. created or completed\n",
|
|
1052
1052
|
"allow_extra": false,
|
|
1053
1053
|
"parent": "agents",
|
|
1054
1054
|
"is_placeholder": false
|
|
@@ -1542,7 +1542,7 @@
|
|
|
1542
1542
|
"orig_type": "bool"
|
|
1543
1543
|
}
|
|
1544
1544
|
],
|
|
1545
|
-
"description": "\
|
|
1545
|
+
"description": "\nGet detailed info for an asset uploaded to the cluster and registered\nwith Ellf\n",
|
|
1546
1546
|
"allow_extra": false,
|
|
1547
1547
|
"parent": "assets",
|
|
1548
1548
|
"is_placeholder": false
|
|
@@ -1642,7 +1642,7 @@
|
|
|
1642
1642
|
"orig_type": "bool"
|
|
1643
1643
|
}
|
|
1644
1644
|
],
|
|
1645
|
-
"description": "\
|
|
1645
|
+
"description": "\nCreate an asset on the cluster and register it with Ellf. Assets\npoint to files or directories you control. The Ellf server only has\na reference to them. This command doesn't transfer any data. See `ellf files`\nfor utilities to transfer files to and from your cluster\n",
|
|
1646
1646
|
"allow_extra": false,
|
|
1647
1647
|
"parent": "assets",
|
|
1648
1648
|
"is_placeholder": false
|
|
@@ -1713,7 +1713,7 @@
|
|
|
1713
1713
|
"import": {
|
|
1714
1714
|
"name": "import",
|
|
1715
1715
|
"args": [],
|
|
1716
|
-
"description": "Read a serialised FileSecrets blob from stdin and write it to\
|
|
1716
|
+
"description": "Read a serialised FileSecrets blob from stdin and write it to\nthe local secrets file.\n\nCounterpart to ``ellf auth push``. Existing local auth state is\noverwritten; the file is written 0600 by FileSecrets.save.\n",
|
|
1717
1717
|
"allow_extra": false,
|
|
1718
1718
|
"parent": "auth",
|
|
1719
1719
|
"is_placeholder": false
|
|
@@ -1748,7 +1748,7 @@
|
|
|
1748
1748
|
"orig_type": "str"
|
|
1749
1749
|
}
|
|
1750
1750
|
],
|
|
1751
|
-
"description": "Push local auth state to a remote machine via SSH.\n\
|
|
1751
|
+
"description": "Push local auth state to a remote machine via SSH.\n\nReads the local FileSecrets, JSON-serialises it, and pipes it to\n``<remote_ellf> auth import`` over an SSH connection to *host*.\nAuthentication is delegated to ssh \u2014 anything in your ssh config\n(host aliases, ProxyJump, key-based auth) just works.\n\nThe pushed blob includes id_token, api_token, and any cached\nbroker_tokens. id_token expiry is dictated by the issuer (typically\n~1h), so this is a \"give the remote a usable session\" operation,\nnot a permanent provisioning. Re-run when the token expires.\n",
|
|
1752
1752
|
"allow_extra": false,
|
|
1753
1753
|
"parent": "auth",
|
|
1754
1754
|
"is_placeholder": false
|
|
@@ -1820,7 +1820,7 @@
|
|
|
1820
1820
|
"orig_type": "bool"
|
|
1821
1821
|
}
|
|
1822
1822
|
],
|
|
1823
|
-
"description": "Switch the active cluster.\n\
|
|
1823
|
+
"description": "Switch the active cluster.\n\nLooks up the cluster by name or ID via PAM. With no argument and\nmultiple clusters available, prompts interactively in a TTY.\n",
|
|
1824
1824
|
"allow_extra": false,
|
|
1825
1825
|
"parent": "clusters",
|
|
1826
1826
|
"is_placeholder": false
|
|
@@ -1951,7 +1951,7 @@
|
|
|
1951
1951
|
"orig_type": "Union[str, UUID]"
|
|
1952
1952
|
}
|
|
1953
1953
|
],
|
|
1954
|
-
"description": "\
|
|
1954
|
+
"description": "\nDelete a cluster from PAM. This only removes PAM's record\nof it. The cluster itself will continue to exist - you need\nto shut it down separately.\n",
|
|
1955
1955
|
"allow_extra": false,
|
|
1956
1956
|
"parent": "clusters",
|
|
1957
1957
|
"is_placeholder": false
|
|
@@ -2038,7 +2038,7 @@
|
|
|
2038
2038
|
"orig_type": "bool"
|
|
2039
2039
|
}
|
|
2040
2040
|
],
|
|
2041
|
-
"description": "Check the health of a cluster deployment.\n\
|
|
2041
|
+
"description": "Check the health of a cluster deployment.\n\nRuns CLI-side connectivity checks against the cluster and PAM.\nUse --deep (or supply --s3-bucket / --nfs-path / --recipe) to also\ntrigger cluster-side deployment checks via the broker's /v1/check\nendpoints (K8s API, NFS, S3, recipe execution, DB).\n",
|
|
2042
2042
|
"allow_extra": false,
|
|
2043
2043
|
"parent": "clusters",
|
|
2044
2044
|
"is_placeholder": false
|
|
@@ -2121,7 +2121,7 @@
|
|
|
2121
2121
|
"orig_type": "str"
|
|
2122
2122
|
}
|
|
2123
2123
|
],
|
|
2124
|
-
"description": "Rotate the cluster RSA keypair.\n\
|
|
2124
|
+
"description": "Rotate the cluster RSA keypair.\n\nGenerates a new keypair, updates the cluster record in PAM with the\nnew public key, patches the K8s secret with the new private key,\nand restarts the cluster deployment.\n",
|
|
2125
2125
|
"allow_extra": false,
|
|
2126
2126
|
"parent": "clusters",
|
|
2127
2127
|
"is_placeholder": false
|
|
@@ -2871,7 +2871,7 @@
|
|
|
2871
2871
|
"orig_type": "str"
|
|
2872
2872
|
}
|
|
2873
2873
|
],
|
|
2874
|
-
"description": "Export all the examples from a dataset and save it in the designated file as\
|
|
2874
|
+
"description": "Export all the examples from a dataset and save it in the designated file as\nJSONL (newline-delimited JSON).\n",
|
|
2875
2875
|
"allow_extra": false,
|
|
2876
2876
|
"parent": "datasets",
|
|
2877
2877
|
"is_placeholder": false
|
|
@@ -3306,7 +3306,7 @@
|
|
|
3306
3306
|
"orig_type": "bool"
|
|
3307
3307
|
}
|
|
3308
3308
|
],
|
|
3309
|
-
"description": "Deploy or upgrade the Ellf Helm chart.\n\
|
|
3309
|
+
"description": "Deploy or upgrade the Ellf Helm chart.\n\nCreates the namespace, image pull secret, cluster keypair secret,\nthen runs helm upgrade --install with the provided values.\n",
|
|
3310
3310
|
"allow_extra": false,
|
|
3311
3311
|
"parent": "infra",
|
|
3312
3312
|
"is_placeholder": false
|
|
@@ -3550,7 +3550,7 @@
|
|
|
3550
3550
|
"orig_type": "str"
|
|
3551
3551
|
}
|
|
3552
3552
|
],
|
|
3553
|
-
"description": "Install cluster infrastructure prerequisites (Traefik, cert-manager).\n\
|
|
3553
|
+
"description": "Install cluster infrastructure prerequisites (Traefik, cert-manager).\n\nThese operations are idempotent and safe to re-run.\n",
|
|
3554
3554
|
"allow_extra": false,
|
|
3555
3555
|
"parent": "infra",
|
|
3556
3556
|
"is_placeholder": false
|
|
@@ -3833,7 +3833,7 @@
|
|
|
3833
3833
|
"orig_type": "str"
|
|
3834
3834
|
}
|
|
3835
3835
|
],
|
|
3836
|
-
"description": "Manage TLS certificates for local cluster access.\n\
|
|
3836
|
+
"description": "Manage TLS certificates for local cluster access.\n\nUse --self-signed when you have direct kubectl access to the cluster.\nUse --setup HOST to do everything from your laptop over SSH.\nUse --trust HOST to fetch and install an existing CA from a remote cluster.\n",
|
|
3837
3837
|
"allow_extra": false,
|
|
3838
3838
|
"parent": "infra",
|
|
3839
3839
|
"is_placeholder": false
|
|
@@ -3857,7 +3857,7 @@
|
|
|
3857
3857
|
"orig_type": "str"
|
|
3858
3858
|
}
|
|
3859
3859
|
],
|
|
3860
|
-
"description": "\
|
|
3860
|
+
"description": "\nRun a job directly on the cluster from a YAML spec file, bypassing PAM.\n",
|
|
3861
3861
|
"allow_extra": false,
|
|
3862
3862
|
"parent": "jobs",
|
|
3863
3863
|
"is_placeholder": false
|
|
@@ -4935,7 +4935,7 @@
|
|
|
4935
4935
|
"orig_type": "str"
|
|
4936
4936
|
}
|
|
4937
4937
|
],
|
|
4938
|
-
"description": "\
|
|
4938
|
+
"description": "\nUpload and advertise a recipes package from your Python environment.\n",
|
|
4939
4939
|
"allow_extra": false,
|
|
4940
4940
|
"parent": "publish",
|
|
4941
4941
|
"is_placeholder": false
|
|
@@ -5048,7 +5048,7 @@
|
|
|
5048
5048
|
"orig_type": "bool"
|
|
5049
5049
|
}
|
|
5050
5050
|
],
|
|
5051
|
-
"description": "\
|
|
5051
|
+
"description": "\nTransfer data to the cluster, and advertise it to Ellf.\n\nThese steps can also be done separately. See `ellf files` to transfer\ndata to the cluster without creating an Asset record for it, and\n`ellf assets create` to create an Asset without transfer.\n",
|
|
5052
5052
|
"allow_extra": false,
|
|
5053
5053
|
"parent": "publish",
|
|
5054
5054
|
"is_placeholder": false
|
|
@@ -5721,7 +5721,7 @@
|
|
|
5721
5721
|
"orig_type": "List[str]"
|
|
5722
5722
|
}
|
|
5723
5723
|
],
|
|
5724
|
-
"description": "\
|
|
5724
|
+
"description": "\nCreate a new task. The available task recipes are fetched from your\ncluster and are added as dynamic subcommands. You can see more details\nand available arguments by calling the subcommand with --help, e.g. create\n[name] --help\n",
|
|
5725
5725
|
"allow_extra": true,
|
|
5726
5726
|
"parent": "tasks",
|
|
5727
5727
|
"is_placeholder": false
|
|
@@ -5756,7 +5756,7 @@
|
|
|
5756
5756
|
"orig_type": "bool"
|
|
5757
5757
|
}
|
|
5758
5758
|
],
|
|
5759
|
-
"description": "\
|
|
5759
|
+
"description": "\nList the tasks on the cluster. By default, this includes their ID, name\nand current state, e.g. created or completed\n",
|
|
5760
5760
|
"allow_extra": false,
|
|
5761
5761
|
"parent": "tasks",
|
|
5762
5762
|
"is_placeholder": false
|
|
@@ -6187,7 +6187,7 @@
|
|
|
6187
6187
|
"orig_type": "bool"
|
|
6188
6188
|
}
|
|
6189
6189
|
],
|
|
6190
|
-
"description": "Fetch a batch of questions from a running annotation task.\n\
|
|
6190
|
+
"description": "Fetch a batch of questions from a running annotation task.\n\nMirrors the web app: asks the broker for a Prodigy login token, then talks\nto the task pod directly via its public task_url. Note that requesting a\nbatch reserves those questions for this CLI's session \u2014 they will not be\nhanded to other annotators until they are answered or another session\nruns out of work and steals them.\n",
|
|
6191
6191
|
"allow_extra": false,
|
|
6192
6192
|
"parent": "tasks",
|
|
6193
6193
|
"is_placeholder": false
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{ellf_cli-5.0.9 → ellf_cli-5.0.18}/ellf_cli/ellf_skills/skills/ellf-annotate.assistant/SKILL.md
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{ellf_cli-5.0.9 → ellf_cli-5.0.18}/ellf_cli/ellf_skills/skills/ellf-annotate.coding/SKILL.md
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{ellf_cli-5.0.9 → ellf_cli-5.0.18}/ellf_cli/ellf_skills/skills/ellf-monitor.assistant/SKILL.md
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{ellf_cli-5.0.9 → ellf_cli-5.0.18}/ellf_cli/ellf_skills/skills/ellf-ops.coding/scripts/run_job.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{ellf_cli-5.0.9 → ellf_cli-5.0.18}/ellf_cli/ellf_skills/skills/ellf-project.assistant/SKILL.md
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{ellf_cli-5.0.9 → ellf_cli-5.0.18}/ellf_cli/ellf_skills/skills/ellf-support.assistant/SKILL.md
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{ellf_cli-5.0.9 → ellf_cli-5.0.18}/ellf_cli/ellf_skills/skills/ellf-train.assistant/SKILL.md
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|