ellf-cli 4.0.41__tar.gz → 4.0.44__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-4.0.41/ellf_cli.egg-info → ellf_cli-4.0.44}/PKG-INFO +1 -1
- {ellf_cli-4.0.41 → ellf_cli-4.0.44}/ellf_cli/about.json +1 -1
- {ellf_cli-4.0.41 → ellf_cli-4.0.44}/ellf_cli/auth.py +19 -2
- {ellf_cli-4.0.41 → ellf_cli-4.0.44}/ellf_cli/commands/infra/tls.py +13 -3
- {ellf_cli-4.0.41 → ellf_cli-4.0.44}/ellf_cli/ellf.json +1 -1
- {ellf_cli-4.0.41 → ellf_cli-4.0.44/ellf_cli.egg-info}/PKG-INFO +1 -1
- {ellf_cli-4.0.41 → ellf_cli-4.0.44}/LICENSE +0 -0
- {ellf_cli-4.0.41 → ellf_cli-4.0.44}/MANIFEST.in +0 -0
- {ellf_cli-4.0.41 → ellf_cli-4.0.44}/README.md +0 -0
- {ellf_cli-4.0.41 → ellf_cli-4.0.44}/ellf_cli/__init__.py +0 -0
- {ellf_cli-4.0.41 → ellf_cli-4.0.44}/ellf_cli/__main__.py +0 -0
- {ellf_cli-4.0.41 → ellf_cli-4.0.44}/ellf_cli/about.py +0 -0
- {ellf_cli-4.0.41 → ellf_cli-4.0.44}/ellf_cli/appdirs.py +0 -0
- {ellf_cli-4.0.41 → ellf_cli-4.0.44}/ellf_cli/cli.py +0 -0
- {ellf_cli-4.0.41 → ellf_cli-4.0.44}/ellf_cli/cloud/__init__.py +0 -0
- {ellf_cli-4.0.41 → ellf_cli-4.0.44}/ellf_cli/cloud/gcp.py +0 -0
- {ellf_cli-4.0.41 → ellf_cli-4.0.44}/ellf_cli/cluster_config.py +0 -0
- {ellf_cli-4.0.41 → ellf_cli-4.0.44}/ellf_cli/commands/__init__.py +0 -0
- {ellf_cli-4.0.41 → ellf_cli-4.0.44}/ellf_cli/commands/_recipe_file.py +0 -0
- {ellf_cli-4.0.41 → ellf_cli-4.0.44}/ellf_cli/commands/_recipe_subcommand.py +0 -0
- {ellf_cli-4.0.41 → ellf_cli-4.0.44}/ellf_cli/commands/_state.py +0 -0
- {ellf_cli-4.0.41 → ellf_cli-4.0.44}/ellf_cli/commands/actions.py +0 -0
- {ellf_cli-4.0.41 → ellf_cli-4.0.44}/ellf_cli/commands/agents.py +0 -0
- {ellf_cli-4.0.41 → ellf_cli-4.0.44}/ellf_cli/commands/assets.py +0 -0
- {ellf_cli-4.0.41 → ellf_cli-4.0.44}/ellf_cli/commands/clusters.py +0 -0
- {ellf_cli-4.0.41 → ellf_cli-4.0.44}/ellf_cli/commands/config.py +0 -0
- {ellf_cli-4.0.41 → ellf_cli-4.0.44}/ellf_cli/commands/datasets.py +0 -0
- {ellf_cli-4.0.41 → ellf_cli-4.0.44}/ellf_cli/commands/files/__init__.py +0 -0
- {ellf_cli-4.0.41 → ellf_cli-4.0.44}/ellf_cli/commands/files/cp.py +0 -0
- {ellf_cli-4.0.41 → ellf_cli-4.0.44}/ellf_cli/commands/files/ls.py +0 -0
- {ellf_cli-4.0.41 → ellf_cli-4.0.44}/ellf_cli/commands/files/rm.py +0 -0
- {ellf_cli-4.0.41 → ellf_cli-4.0.44}/ellf_cli/commands/files/rsync.py +0 -0
- {ellf_cli-4.0.41 → ellf_cli-4.0.44}/ellf_cli/commands/files/stats.py +0 -0
- {ellf_cli-4.0.41 → ellf_cli-4.0.44}/ellf_cli/commands/general.py +0 -0
- {ellf_cli-4.0.41 → ellf_cli-4.0.44}/ellf_cli/commands/import_export.py +0 -0
- {ellf_cli-4.0.41 → ellf_cli-4.0.44}/ellf_cli/commands/infra/__init__.py +0 -0
- {ellf_cli-4.0.41 → ellf_cli-4.0.44}/ellf_cli/commands/infra/_helpers.py +0 -0
- {ellf_cli-4.0.41 → ellf_cli-4.0.44}/ellf_cli/commands/infra/deploy.py +0 -0
- {ellf_cli-4.0.41 → ellf_cli-4.0.44}/ellf_cli/commands/infra/init_values.py +0 -0
- {ellf_cli-4.0.41 → ellf_cli-4.0.44}/ellf_cli/commands/infra/provision.py +0 -0
- {ellf_cli-4.0.41 → ellf_cli-4.0.44}/ellf_cli/commands/infra/register.py +0 -0
- {ellf_cli-4.0.41 → ellf_cli-4.0.44}/ellf_cli/commands/infra/setup.py +0 -0
- {ellf_cli-4.0.41 → ellf_cli-4.0.44}/ellf_cli/commands/infra/start.py +0 -0
- {ellf_cli-4.0.41 → ellf_cli-4.0.44}/ellf_cli/commands/infra/terraform.py +0 -0
- {ellf_cli-4.0.41 → ellf_cli-4.0.44}/ellf_cli/commands/jobs.py +0 -0
- {ellf_cli-4.0.41 → ellf_cli-4.0.44}/ellf_cli/commands/packages.py +0 -0
- {ellf_cli-4.0.41 → ellf_cli-4.0.44}/ellf_cli/commands/paths.py +0 -0
- {ellf_cli-4.0.41 → ellf_cli-4.0.44}/ellf_cli/commands/plans.py +0 -0
- {ellf_cli-4.0.41 → ellf_cli-4.0.44}/ellf_cli/commands/projects.py +0 -0
- {ellf_cli-4.0.41 → ellf_cli-4.0.44}/ellf_cli/commands/publish_code.py +0 -0
- {ellf_cli-4.0.41 → ellf_cli-4.0.44}/ellf_cli/commands/publish_data.py +0 -0
- {ellf_cli-4.0.41 → ellf_cli-4.0.44}/ellf_cli/commands/recipes.py +0 -0
- {ellf_cli-4.0.41 → ellf_cli-4.0.44}/ellf_cli/commands/secrets.py +0 -0
- {ellf_cli-4.0.41 → ellf_cli-4.0.44}/ellf_cli/commands/support.py +0 -0
- {ellf_cli-4.0.41 → ellf_cli-4.0.44}/ellf_cli/commands/tasks.py +0 -0
- {ellf_cli-4.0.41 → ellf_cli-4.0.44}/ellf_cli/commands/todos.py +0 -0
- {ellf_cli-4.0.41 → ellf_cli-4.0.44}/ellf_cli/config.py +0 -0
- {ellf_cli-4.0.41 → ellf_cli-4.0.44}/ellf_cli/ellf_skills/.claude-plugin/plugin.json +0 -0
- {ellf_cli-4.0.41 → ellf_cli-4.0.44}/ellf_cli/ellf_skills/.gitignore +0 -0
- {ellf_cli-4.0.41 → ellf_cli-4.0.44}/ellf_cli/ellf_skills/bin/write-current-session.py +0 -0
- {ellf_cli-4.0.41 → ellf_cli-4.0.44}/ellf_cli/ellf_skills/hooks/hooks.json +0 -0
- {ellf_cli-4.0.41 → ellf_cli-4.0.44}/ellf_cli/ellf_skills/skill_variants.json +0 -0
- {ellf_cli-4.0.41 → ellf_cli-4.0.44}/ellf_cli/ellf_skills/skills/ellf-annotate.assistant/SKILL.md +0 -0
- {ellf_cli-4.0.41 → ellf_cli-4.0.44}/ellf_cli/ellf_skills/skills/ellf-annotate.assistant/references/annotation_audit.md +0 -0
- {ellf_cli-4.0.41 → ellf_cli-4.0.44}/ellf_cli/ellf_skills/skills/ellf-annotate.assistant/references/builtin_ellf_annotation_recipes.md +0 -0
- {ellf_cli-4.0.41 → ellf_cli-4.0.44}/ellf_cli/ellf_skills/skills/ellf-annotate.coding/SKILL.md +0 -0
- {ellf_cli-4.0.41 → ellf_cli-4.0.44}/ellf_cli/ellf_skills/skills/ellf-annotate.coding/references/annotation_audit.md +0 -0
- {ellf_cli-4.0.41 → ellf_cli-4.0.44}/ellf_cli/ellf_skills/skills/ellf-annotate.coding/references/builtin_ellf_annotation_recipes.md +0 -0
- {ellf_cli-4.0.41 → ellf_cli-4.0.44}/ellf_cli/ellf_skills/skills/ellf-annotate.coding/references/builtin_prodigy_recipes.md +0 -0
- {ellf_cli-4.0.41 → ellf_cli-4.0.44}/ellf_cli/ellf_skills/skills/ellf-ask/SKILL.md +0 -0
- {ellf_cli-4.0.41 → ellf_cli-4.0.44}/ellf_cli/ellf_skills/skills/ellf-handoff/SKILL.md +0 -0
- {ellf_cli-4.0.41 → ellf_cli-4.0.44}/ellf_cli/ellf_skills/skills/ellf-monitor.assistant/SKILL.md +0 -0
- {ellf_cli-4.0.41 → ellf_cli-4.0.44}/ellf_cli/ellf_skills/skills/ellf-monitor.assistant/references/annotation_metrics.md +0 -0
- {ellf_cli-4.0.41 → ellf_cli-4.0.44}/ellf_cli/ellf_skills/skills/ellf-monitor.assistant/references/training_monitoring.md +0 -0
- {ellf_cli-4.0.41 → ellf_cli-4.0.44}/ellf_cli/ellf_skills/skills/ellf-monitor.coding/SKILL.md +0 -0
- {ellf_cli-4.0.41 → ellf_cli-4.0.44}/ellf_cli/ellf_skills/skills/ellf-monitor.coding/references/annotation_metrics.md +0 -0
- {ellf_cli-4.0.41 → ellf_cli-4.0.44}/ellf_cli/ellf_skills/skills/ellf-monitor.coding/references/training_monitoring.md +0 -0
- {ellf_cli-4.0.41 → ellf_cli-4.0.44}/ellf_cli/ellf_skills/skills/ellf-monitor.coding/scripts/check_training.py +0 -0
- {ellf_cli-4.0.41 → ellf_cli-4.0.44}/ellf_cli/ellf_skills/skills/ellf-ops.assistant/SKILL.md +0 -0
- {ellf_cli-4.0.41 → ellf_cli-4.0.44}/ellf_cli/ellf_skills/skills/ellf-ops.coding/SKILL.md +0 -0
- {ellf_cli-4.0.41 → ellf_cli-4.0.44}/ellf_cli/ellf_skills/skills/ellf-ops.coding/scripts/run_job.py +0 -0
- {ellf_cli-4.0.41 → ellf_cli-4.0.44}/ellf_cli/ellf_skills/skills/ellf-patterns/SKILL.md +0 -0
- {ellf_cli-4.0.41 → ellf_cli-4.0.44}/ellf_cli/ellf_skills/skills/ellf-patterns/references/pattern_strategies.md +0 -0
- {ellf_cli-4.0.41 → ellf_cli-4.0.44}/ellf_cli/ellf_skills/skills/ellf-prodigy/SKILL.md +0 -0
- {ellf_cli-4.0.41 → ellf_cli-4.0.44}/ellf_cli/ellf_skills/skills/ellf-prodigy/assets/templates/template_action_recipe.py +0 -0
- {ellf_cli-4.0.41 → ellf_cli-4.0.44}/ellf_cli/ellf_skills/skills/ellf-prodigy/assets/templates/template_agent_recipe.py +0 -0
- {ellf_cli-4.0.41 → ellf_cli-4.0.44}/ellf_cli/ellf_skills/skills/ellf-prodigy/assets/templates/template_blocks_ui.py +0 -0
- {ellf_cli-4.0.41 → ellf_cli-4.0.44}/ellf_cli/ellf_skills/skills/ellf-prodigy/assets/templates/template_correct.py +0 -0
- {ellf_cli-4.0.41 → ellf_cli-4.0.44}/ellf_cli/ellf_skills/skills/ellf-prodigy/assets/templates/template_custom_ui.py +0 -0
- {ellf_cli-4.0.41 → ellf_cli-4.0.44}/ellf_cli/ellf_skills/skills/ellf-prodigy/assets/templates/template_manual.py +0 -0
- {ellf_cli-4.0.41 → ellf_cli-4.0.44}/ellf_cli/ellf_skills/skills/ellf-prodigy/assets/templates/template_pages_ui.py +0 -0
- {ellf_cli-4.0.41 → ellf_cli-4.0.44}/ellf_cli/ellf_skills/skills/ellf-prodigy/assets/templates/template_routing.py +0 -0
- {ellf_cli-4.0.41 → ellf_cli-4.0.44}/ellf_cli/ellf_skills/skills/ellf-prodigy/assets/templates/template_task_recipe.py +0 -0
- {ellf_cli-4.0.41 → ellf_cli-4.0.44}/ellf_cli/ellf_skills/skills/ellf-prodigy/assets/templates/template_teach.py +0 -0
- {ellf_cli-4.0.41 → ellf_cli-4.0.44}/ellf_cli/ellf_skills/skills/ellf-prodigy/references/builtin_recipes.md +0 -0
- {ellf_cli-4.0.41 → ellf_cli-4.0.44}/ellf_cli/ellf_skills/skills/ellf-prodigy/references/ellf_recipe_sdk.md +0 -0
- {ellf_cli-4.0.41 → ellf_cli-4.0.44}/ellf_cli/ellf_skills/skills/ellf-prodigy/references/lint_recipe.py +0 -0
- {ellf_cli-4.0.41 → ellf_cli-4.0.44}/ellf_cli/ellf_skills/skills/ellf-prodigy/references/prodigy_recipe_api.md +0 -0
- {ellf_cli-4.0.41 → ellf_cli-4.0.44}/ellf_cli/ellf_skills/skills/ellf-prodigy/references/template_index.md +0 -0
- {ellf_cli-4.0.41 → ellf_cli-4.0.44}/ellf_cli/ellf_skills/skills/ellf-project.assistant/SKILL.md +0 -0
- {ellf_cli-4.0.41 → ellf_cli-4.0.44}/ellf_cli/ellf_skills/skills/ellf-project.assistant/references/consulting_patterns.md +0 -0
- {ellf_cli-4.0.41 → ellf_cli-4.0.44}/ellf_cli/ellf_skills/skills/ellf-project.assistant/references/explosion_strategy.md +0 -0
- {ellf_cli-4.0.41 → ellf_cli-4.0.44}/ellf_cli/ellf_skills/skills/ellf-project.assistant/references/prodigy_llm_bot.md +0 -0
- {ellf_cli-4.0.41 → ellf_cli-4.0.44}/ellf_cli/ellf_skills/skills/ellf-project.coding/SKILL.md +0 -0
- {ellf_cli-4.0.41 → ellf_cli-4.0.44}/ellf_cli/ellf_skills/skills/ellf-project.coding/references/consulting_patterns.md +0 -0
- {ellf_cli-4.0.41 → ellf_cli-4.0.44}/ellf_cli/ellf_skills/skills/ellf-project.coding/references/explosion_strategy.md +0 -0
- {ellf_cli-4.0.41 → ellf_cli-4.0.44}/ellf_cli/ellf_skills/skills/ellf-project.coding/references/prodigy_llm_bot.md +0 -0
- {ellf_cli-4.0.41 → ellf_cli-4.0.44}/ellf_cli/ellf_skills/skills/ellf-support.assistant/SKILL.md +0 -0
- {ellf_cli-4.0.41 → ellf_cli-4.0.44}/ellf_cli/ellf_skills/skills/ellf-support.coding/SKILL.md +0 -0
- {ellf_cli-4.0.41 → ellf_cli-4.0.44}/ellf_cli/ellf_skills/skills/ellf-todo/SKILL.md +0 -0
- {ellf_cli-4.0.41 → ellf_cli-4.0.44}/ellf_cli/ellf_skills/skills/ellf-train.assistant/SKILL.md +0 -0
- {ellf_cli-4.0.41 → ellf_cli-4.0.44}/ellf_cli/ellf_skills/skills/ellf-train.assistant/references/diagnostics.md +0 -0
- {ellf_cli-4.0.41 → ellf_cli-4.0.44}/ellf_cli/ellf_skills/skills/ellf-train.assistant/references/evaluation_guide.md +0 -0
- {ellf_cli-4.0.41 → ellf_cli-4.0.44}/ellf_cli/ellf_skills/skills/ellf-train.assistant/references/model_selection.md +0 -0
- {ellf_cli-4.0.41 → ellf_cli-4.0.44}/ellf_cli/ellf_skills/skills/ellf-train.assistant/references/training_paradigms.md +0 -0
- {ellf_cli-4.0.41 → ellf_cli-4.0.44}/ellf_cli/ellf_skills/skills/ellf-train.assistant/references/workflow.md +0 -0
- {ellf_cli-4.0.41 → ellf_cli-4.0.44}/ellf_cli/ellf_skills/skills/ellf-train.coding/SKILL.md +0 -0
- {ellf_cli-4.0.41 → ellf_cli-4.0.44}/ellf_cli/ellf_skills/skills/ellf-train.coding/references/config_advanced.md +0 -0
- {ellf_cli-4.0.41 → ellf_cli-4.0.44}/ellf_cli/ellf_skills/skills/ellf-train.coding/references/config_architectures.md +0 -0
- {ellf_cli-4.0.41 → ellf_cli-4.0.44}/ellf_cli/ellf_skills/skills/ellf-train.coding/references/config_training.md +0 -0
- {ellf_cli-4.0.41 → ellf_cli-4.0.44}/ellf_cli/ellf_skills/skills/ellf-train.coding/references/diagnostics.md +0 -0
- {ellf_cli-4.0.41 → ellf_cli-4.0.44}/ellf_cli/ellf_skills/skills/ellf-train.coding/references/evaluation_guide.md +0 -0
- {ellf_cli-4.0.41 → ellf_cli-4.0.44}/ellf_cli/ellf_skills/skills/ellf-train.coding/references/experiment_patterns.md +0 -0
- {ellf_cli-4.0.41 → ellf_cli-4.0.44}/ellf_cli/ellf_skills/skills/ellf-train.coding/references/model_selection.md +0 -0
- {ellf_cli-4.0.41 → ellf_cli-4.0.44}/ellf_cli/ellf_skills/skills/ellf-train.coding/references/training_paradigms.md +0 -0
- {ellf_cli-4.0.41 → ellf_cli-4.0.44}/ellf_cli/ellf_skills/skills/ellf-train.coding/references/training_troubleshooting.md +0 -0
- {ellf_cli-4.0.41 → ellf_cli-4.0.44}/ellf_cli/ellf_skills/skills/ellf-train.coding/references/workflow.md +0 -0
- {ellf_cli-4.0.41 → ellf_cli-4.0.44}/ellf_cli/ellf_skills/skills/ellf-train.coding/scripts/ellf_logger.py +0 -0
- {ellf_cli-4.0.41 → ellf_cli-4.0.44}/ellf_cli/errors.py +0 -0
- {ellf_cli-4.0.41 → ellf_cli-4.0.44}/ellf_cli/helm.py +0 -0
- {ellf_cli-4.0.41 → ellf_cli-4.0.44}/ellf_cli/key_pair.py +0 -0
- {ellf_cli-4.0.41 → ellf_cli-4.0.44}/ellf_cli/main.py +0 -0
- {ellf_cli-4.0.41 → ellf_cli-4.0.44}/ellf_cli/messages.py +0 -0
- {ellf_cli-4.0.41 → ellf_cli-4.0.44}/ellf_cli/query.py +0 -0
- {ellf_cli-4.0.41 → ellf_cli-4.0.44}/ellf_cli/recipes_cookiecutter/cookiecutter.json +0 -0
- {ellf_cli-4.0.41 → ellf_cli-4.0.44}/ellf_cli/recipes_cookiecutter/{{cookiecutter.package_dir}}/.gitignore +0 -0
- {ellf_cli-4.0.41 → ellf_cli-4.0.44}/ellf_cli/recipes_cookiecutter/{{cookiecutter.package_dir}}/README.md.tmpl +0 -0
- {ellf_cli-4.0.41 → ellf_cli-4.0.44}/ellf_cli/recipes_cookiecutter/{{cookiecutter.package_dir}}/requirements-dev.in +0 -0
- {ellf_cli-4.0.41 → ellf_cli-4.0.44}/ellf_cli/recipes_cookiecutter/{{cookiecutter.package_dir}}/requirements.in +0 -0
- {ellf_cli-4.0.41 → ellf_cli-4.0.44}/ellf_cli/recipes_cookiecutter/{{cookiecutter.package_dir}}/setup.py.tmpl +0 -0
- {ellf_cli-4.0.41 → ellf_cli-4.0.44}/ellf_cli/recipes_cookiecutter/{{cookiecutter.package_dir}}/{{cookiecutter.package_name}}/__init__.py +0 -0
- {ellf_cli-4.0.41 → ellf_cli-4.0.44}/ellf_cli/recipes_cookiecutter/{{cookiecutter.package_dir}}/{{cookiecutter.package_name}}/about.py +0 -0
- {ellf_cli-4.0.41 → ellf_cli-4.0.44}/ellf_cli/recipes_cookiecutter/{{cookiecutter.package_dir}}/{{cookiecutter.package_name}}/recipes/__init__.py +0 -0
- {ellf_cli-4.0.41 → ellf_cli-4.0.44}/ellf_cli/recipes_cookiecutter/{{cookiecutter.package_dir}}/{{cookiecutter.package_name}}/recipes/example_task.py +0 -0
- {ellf_cli-4.0.41 → ellf_cli-4.0.44}/ellf_cli/testing/__init__.py +0 -0
- {ellf_cli-4.0.41 → ellf_cli-4.0.44}/ellf_cli/ty.py +0 -0
- {ellf_cli-4.0.41 → ellf_cli-4.0.44}/ellf_cli/ui.py +0 -0
- {ellf_cli-4.0.41 → ellf_cli-4.0.44}/ellf_cli/url.py +0 -0
- {ellf_cli-4.0.41 → ellf_cli-4.0.44}/ellf_cli/util.py +0 -0
- {ellf_cli-4.0.41 → ellf_cli-4.0.44}/ellf_cli.egg-info/SOURCES.txt +0 -0
- {ellf_cli-4.0.41 → ellf_cli-4.0.44}/ellf_cli.egg-info/dependency_links.txt +0 -0
- {ellf_cli-4.0.41 → ellf_cli-4.0.44}/ellf_cli.egg-info/entry_points.txt +0 -0
- {ellf_cli-4.0.41 → ellf_cli-4.0.44}/ellf_cli.egg-info/not-zip-safe +0 -0
- {ellf_cli-4.0.41 → ellf_cli-4.0.44}/ellf_cli.egg-info/requires.txt +0 -0
- {ellf_cli-4.0.41 → ellf_cli-4.0.44}/ellf_cli.egg-info/top_level.txt +0 -0
- {ellf_cli-4.0.41 → ellf_cli-4.0.44}/pyproject.toml +0 -0
- {ellf_cli-4.0.41 → ellf_cli-4.0.44}/setup.cfg +0 -0
- {ellf_cli-4.0.41 → ellf_cli-4.0.44}/setup.py +0 -0
- {ellf_cli-4.0.41 → ellf_cli-4.0.44}/tests/test_appdirs.py +0 -0
- {ellf_cli-4.0.41 → ellf_cli-4.0.44}/tests/test_auth.py +0 -0
- {ellf_cli-4.0.41 → ellf_cli-4.0.44}/tests/test_config.py +0 -0
- {ellf_cli-4.0.41 → ellf_cli-4.0.44}/tests/test_errors.py +0 -0
- {ellf_cli-4.0.41 → ellf_cli-4.0.44}/tests/test_files_cp.py +0 -0
- {ellf_cli-4.0.41 → ellf_cli-4.0.44}/tests/test_files_cp_helpers.py +0 -0
- {ellf_cli-4.0.41 → ellf_cli-4.0.44}/tests/test_info.py +0 -0
- {ellf_cli-4.0.41 → ellf_cli-4.0.44}/tests/test_invalid_secrets.py +0 -0
- {ellf_cli-4.0.41 → ellf_cli-4.0.44}/tests/test_key_pair.py +0 -0
- {ellf_cli-4.0.41 → ellf_cli-4.0.44}/tests/test_login.py +0 -0
- {ellf_cli-4.0.41 → ellf_cli-4.0.44}/tests/test_main.py +0 -0
- {ellf_cli-4.0.41 → ellf_cli-4.0.44}/tests/test_projects.py +0 -0
- {ellf_cli-4.0.41 → ellf_cli-4.0.44}/tests/test_query.py +0 -0
- {ellf_cli-4.0.41 → ellf_cli-4.0.44}/tests/test_recipe_file.py +0 -0
- {ellf_cli-4.0.41 → ellf_cli-4.0.44}/tests/test_recipes.py +0 -0
- {ellf_cli-4.0.41 → ellf_cli-4.0.44}/tests/test_state.py +0 -0
- {ellf_cli-4.0.41 → ellf_cli-4.0.44}/tests/test_support.py +0 -0
- {ellf_cli-4.0.41 → ellf_cli-4.0.44}/tests/test_ty.py +0 -0
- {ellf_cli-4.0.41 → ellf_cli-4.0.44}/tests/test_ui.py +0 -0
- {ellf_cli-4.0.41 → ellf_cli-4.0.44}/tests/test_ui_extras.py +0 -0
- {ellf_cli-4.0.41 → ellf_cli-4.0.44}/tests/test_util.py +0 -0
|
@@ -58,6 +58,12 @@ _R = TypeVar("_R")
|
|
|
58
58
|
OIDC_SCOPE = "openid profile email"
|
|
59
59
|
OIDC_DEVICE_GRANT_TYPE = "urn:ietf:params:oauth:grant-type:device_code"
|
|
60
60
|
AUTH_WAIT_TIME_SECONDS = 60 * 5
|
|
61
|
+
# httpx default is 5s — too tight for the auth round-trip when PAM's
|
|
62
|
+
# load balancer occasionally takes longer than that to respond. A
|
|
63
|
+
# transient network blip during login should not require the user to
|
|
64
|
+
# re-run; pick a value that comfortably outlasts any realistic single
|
|
65
|
+
# request without making a genuinely-down PAM hang noticeably.
|
|
66
|
+
AUTH_REQUEST_TIMEOUT_SECONDS = 15.0
|
|
61
67
|
|
|
62
68
|
|
|
63
69
|
class Secrets(Protocol):
|
|
@@ -385,6 +391,7 @@ class AuthStateImpl:
|
|
|
385
391
|
api_response = httpx.post(
|
|
386
392
|
str(self.pam_url / "api/v1/login"),
|
|
387
393
|
headers={"authorization": f"Bearer {id_token}"},
|
|
394
|
+
timeout=AUTH_REQUEST_TIMEOUT_SECONDS,
|
|
388
395
|
)
|
|
389
396
|
if api_response.status_code != 200:
|
|
390
397
|
err = _format_http_error(api_response)
|
|
@@ -426,6 +433,7 @@ class AuthStateImpl:
|
|
|
426
433
|
str(self.pam_url / "api/v1/broker/token"),
|
|
427
434
|
headers={"authorization": f"Bearer {api_token}"},
|
|
428
435
|
json=body,
|
|
436
|
+
timeout=AUTH_REQUEST_TIMEOUT_SECONDS,
|
|
429
437
|
)
|
|
430
438
|
if res.status_code != 200:
|
|
431
439
|
err = _format_http_error(res)
|
|
@@ -440,6 +448,7 @@ class AuthStateImpl:
|
|
|
440
448
|
exchange_res = httpx.post(
|
|
441
449
|
str(self.broker_url / "api/v1/token/exchange"),
|
|
442
450
|
json={"token": pam_broker_token},
|
|
451
|
+
timeout=AUTH_REQUEST_TIMEOUT_SECONDS,
|
|
443
452
|
)
|
|
444
453
|
if exchange_res.status_code != 200:
|
|
445
454
|
err = _format_http_error(exchange_res)
|
|
@@ -459,7 +468,10 @@ class AuthStateImpl:
|
|
|
459
468
|
|
|
460
469
|
def _authenticate_device_and_get_id_token(self) -> str:
|
|
461
470
|
try:
|
|
462
|
-
config_response = httpx.get(
|
|
471
|
+
config_response = httpx.get(
|
|
472
|
+
str(self.pam_url / "api/v1/cli.json"),
|
|
473
|
+
timeout=AUTH_REQUEST_TIMEOUT_SECONDS,
|
|
474
|
+
)
|
|
463
475
|
config_response.raise_for_status()
|
|
464
476
|
except httpx.HTTPError as exc:
|
|
465
477
|
err = Messages.E033.format(url=self.pam_url)
|
|
@@ -467,7 +479,11 @@ class AuthStateImpl:
|
|
|
467
479
|
raise EllfError(err) from exc
|
|
468
480
|
device_code_url = str(self.pam_url / "api/v1/device/code")
|
|
469
481
|
token_url = str(self.pam_url / "api/v1/device/token")
|
|
470
|
-
response = httpx.post(
|
|
482
|
+
response = httpx.post(
|
|
483
|
+
device_code_url,
|
|
484
|
+
json={"scope": OIDC_SCOPE},
|
|
485
|
+
timeout=AUTH_REQUEST_TIMEOUT_SECONDS,
|
|
486
|
+
)
|
|
471
487
|
if response.status_code != 200:
|
|
472
488
|
error_resp = response.json()
|
|
473
489
|
raise CLIError(Messages.E101, error_resp)
|
|
@@ -489,6 +505,7 @@ class AuthStateImpl:
|
|
|
489
505
|
"grant_type": OIDC_DEVICE_GRANT_TYPE,
|
|
490
506
|
"device_code": device_code,
|
|
491
507
|
},
|
|
508
|
+
timeout=AUTH_REQUEST_TIMEOUT_SECONDS,
|
|
492
509
|
)
|
|
493
510
|
last_check = time.time()
|
|
494
511
|
token_data = token_response.json()
|
|
@@ -11,6 +11,7 @@ from radicli import Arg
|
|
|
11
11
|
from wasabi.printer import Printer
|
|
12
12
|
|
|
13
13
|
from ...cli import cli
|
|
14
|
+
from ...util import URL
|
|
14
15
|
|
|
15
16
|
|
|
16
17
|
class FilePrinter(Printer):
|
|
@@ -284,10 +285,19 @@ def _print_trust_commands(ca_path: Path, output_format: str = "human") -> None:
|
|
|
284
285
|
|
|
285
286
|
|
|
286
287
|
def _self_signed(fqdn: str, namespace: str) -> None:
|
|
287
|
-
"""Create a self-signed CA and leaf cert, update ingress.
|
|
288
|
+
"""Create a self-signed CA and leaf cert, update ingress.
|
|
289
|
+
|
|
290
|
+
Accept fqdn with or without a port (e.g. "localhost" or
|
|
291
|
+
"localhost:8443" for BYOC tunnel setups). K8s Ingress hosts and
|
|
292
|
+
cert dnsNames are RFC 1123 hostnames — the port has to be stripped
|
|
293
|
+
before they're used. Mirrors the chart's ``ellf.brokerHostname``
|
|
294
|
+
helper so the CLI accepts the same flag value users pass to
|
|
295
|
+
``infra register --domain``.
|
|
296
|
+
"""
|
|
297
|
+
hostname = URL.parse(fqdn, scheme="https").hostname
|
|
288
298
|
_create_self_signed_ca()
|
|
289
|
-
_issue_leaf_cert(
|
|
290
|
-
_update_ingress_tls(
|
|
299
|
+
_issue_leaf_cert(hostname, namespace)
|
|
300
|
+
_update_ingress_tls(hostname, namespace)
|
|
291
301
|
|
|
292
302
|
|
|
293
303
|
def _run_via_ssh(host: str, command: str) -> str:
|
|
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
|
{ellf_cli-4.0.41 → ellf_cli-4.0.44}/ellf_cli/ellf_skills/skills/ellf-annotate.assistant/SKILL.md
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{ellf_cli-4.0.41 → ellf_cli-4.0.44}/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-4.0.41 → ellf_cli-4.0.44}/ellf_cli/ellf_skills/skills/ellf-monitor.assistant/SKILL.md
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{ellf_cli-4.0.41 → ellf_cli-4.0.44}/ellf_cli/ellf_skills/skills/ellf-monitor.coding/SKILL.md
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{ellf_cli-4.0.41 → ellf_cli-4.0.44}/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-4.0.41 → ellf_cli-4.0.44}/ellf_cli/ellf_skills/skills/ellf-project.assistant/SKILL.md
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{ellf_cli-4.0.41 → ellf_cli-4.0.44}/ellf_cli/ellf_skills/skills/ellf-project.coding/SKILL.md
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{ellf_cli-4.0.41 → ellf_cli-4.0.44}/ellf_cli/ellf_skills/skills/ellf-support.assistant/SKILL.md
RENAMED
|
File without changes
|
{ellf_cli-4.0.41 → ellf_cli-4.0.44}/ellf_cli/ellf_skills/skills/ellf-support.coding/SKILL.md
RENAMED
|
File without changes
|
|
File without changes
|
{ellf_cli-4.0.41 → ellf_cli-4.0.44}/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
|