openrunner-sdk 2.37.30__tar.gz → 2.37.32__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.
- {openrunner_sdk-2.37.30 → openrunner_sdk-2.37.32}/PKG-INFO +1 -1
- {openrunner_sdk-2.37.30 → openrunner_sdk-2.37.32}/openrunner/__init__.py +1 -1
- {openrunner_sdk-2.37.30 → openrunner_sdk-2.37.32}/openrunner/cli.py +40 -0
- {openrunner_sdk-2.37.30 → openrunner_sdk-2.37.32}/openrunner/install_commands.py +32 -2
- {openrunner_sdk-2.37.30 → openrunner_sdk-2.37.32}/pyproject.toml +1 -1
- {openrunner_sdk-2.37.30 → openrunner_sdk-2.37.32}/.gitignore +0 -0
- {openrunner_sdk-2.37.30 → openrunner_sdk-2.37.32}/=6.0 +0 -0
- {openrunner_sdk-2.37.30 → openrunner_sdk-2.37.32}/=8.1 +0 -0
- {openrunner_sdk-2.37.30 → openrunner_sdk-2.37.32}/README.md +0 -0
- {openrunner_sdk-2.37.30 → openrunner_sdk-2.37.32}/openrunner/CLAUDE.md +0 -0
- {openrunner_sdk-2.37.30 → openrunner_sdk-2.37.32}/openrunner/_safepath.py +0 -0
- {openrunner_sdk-2.37.30 → openrunner_sdk-2.37.32}/openrunner/_secret_rules.py +0 -0
- {openrunner_sdk-2.37.30 → openrunner_sdk-2.37.32}/openrunner/api_client.py +0 -0
- {openrunner_sdk-2.37.30 → openrunner_sdk-2.37.32}/openrunner/artifact.py +0 -0
- {openrunner_sdk-2.37.30 → openrunner_sdk-2.37.32}/openrunner/autoresearch.py +0 -0
- {openrunner_sdk-2.37.30 → openrunner_sdk-2.37.32}/openrunner/buffer.py +0 -0
- {openrunner_sdk-2.37.30 → openrunner_sdk-2.37.32}/openrunner/cache.py +0 -0
- {openrunner_sdk-2.37.30 → openrunner_sdk-2.37.32}/openrunner/config.py +0 -0
- {openrunner_sdk-2.37.30 → openrunner_sdk-2.37.32}/openrunner/cost.py +0 -0
- {openrunner_sdk-2.37.30 → openrunner_sdk-2.37.32}/openrunner/dataset.py +0 -0
- {openrunner_sdk-2.37.30 → openrunner_sdk-2.37.32}/openrunner/datasets.py +0 -0
- {openrunner_sdk-2.37.30 → openrunner_sdk-2.37.32}/openrunner/environment.py +0 -0
- {openrunner_sdk-2.37.30 → openrunner_sdk-2.37.32}/openrunner/evaluation.py +0 -0
- {openrunner_sdk-2.37.30 → openrunner_sdk-2.37.32}/openrunner/feedback.py +0 -0
- {openrunner_sdk-2.37.30 → openrunner_sdk-2.37.32}/openrunner/git_info.py +0 -0
- {openrunner_sdk-2.37.30 → openrunner_sdk-2.37.32}/openrunner/gpu/__init__.py +0 -0
- {openrunner_sdk-2.37.30 → openrunner_sdk-2.37.32}/openrunner/gpu/api_integration.py +0 -0
- {openrunner_sdk-2.37.30 → openrunner_sdk-2.37.32}/openrunner/gpu/cost_guard.py +0 -0
- {openrunner_sdk-2.37.30 → openrunner_sdk-2.37.32}/openrunner/gpu/gpu_types.py +0 -0
- {openrunner_sdk-2.37.30 → openrunner_sdk-2.37.32}/openrunner/gpu/price_compare.py +0 -0
- {openrunner_sdk-2.37.30 → openrunner_sdk-2.37.32}/openrunner/gpu/provider_base.py +0 -0
- {openrunner_sdk-2.37.30 → openrunner_sdk-2.37.32}/openrunner/gpu/providers/__init__.py +0 -0
- {openrunner_sdk-2.37.30 → openrunner_sdk-2.37.32}/openrunner/gpu/providers/lambda_cloud.py +0 -0
- {openrunner_sdk-2.37.30 → openrunner_sdk-2.37.32}/openrunner/gpu/providers/modal_provider.py +0 -0
- {openrunner_sdk-2.37.30 → openrunner_sdk-2.37.32}/openrunner/gpu/providers/ovhcloud.py +0 -0
- {openrunner_sdk-2.37.30 → openrunner_sdk-2.37.32}/openrunner/gpu/providers/runpod.py +0 -0
- {openrunner_sdk-2.37.30 → openrunner_sdk-2.37.32}/openrunner/gpu/providers/vastai.py +0 -0
- {openrunner_sdk-2.37.30 → openrunner_sdk-2.37.32}/openrunner/gpu/runner.py +0 -0
- {openrunner_sdk-2.37.30 → openrunner_sdk-2.37.32}/openrunner/gpu/workspace_sync.py +0 -0
- {openrunner_sdk-2.37.30 → openrunner_sdk-2.37.32}/openrunner/guardrails.py +0 -0
- {openrunner_sdk-2.37.30 → openrunner_sdk-2.37.32}/openrunner/handover.py +0 -0
- {openrunner_sdk-2.37.30 → openrunner_sdk-2.37.32}/openrunner/hooks/patent-lab-post-commit +0 -0
- {openrunner_sdk-2.37.30 → openrunner_sdk-2.37.32}/openrunner/integration/__init__.py +0 -0
- {openrunner_sdk-2.37.30 → openrunner_sdk-2.37.32}/openrunner/integration/accelerate.py +0 -0
- {openrunner_sdk-2.37.30 → openrunner_sdk-2.37.32}/openrunner/integration/anthropic_tracer.py +0 -0
- {openrunner_sdk-2.37.30 → openrunner_sdk-2.37.32}/openrunner/integration/catboost.py +0 -0
- {openrunner_sdk-2.37.30 → openrunner_sdk-2.37.32}/openrunner/integration/diffusers.py +0 -0
- {openrunner_sdk-2.37.30 → openrunner_sdk-2.37.32}/openrunner/integration/fastai.py +0 -0
- {openrunner_sdk-2.37.30 → openrunner_sdk-2.37.32}/openrunner/integration/forced_alignment.py +0 -0
- {openrunner_sdk-2.37.30 → openrunner_sdk-2.37.32}/openrunner/integration/gladia.py +0 -0
- {openrunner_sdk-2.37.30 → openrunner_sdk-2.37.32}/openrunner/integration/gymnasium.py +0 -0
- {openrunner_sdk-2.37.30 → openrunner_sdk-2.37.32}/openrunner/integration/huggingface.py +0 -0
- {openrunner_sdk-2.37.30 → openrunner_sdk-2.37.32}/openrunner/integration/hydra.py +0 -0
- {openrunner_sdk-2.37.30 → openrunner_sdk-2.37.32}/openrunner/integration/ignite.py +0 -0
- {openrunner_sdk-2.37.30 → openrunner_sdk-2.37.32}/openrunner/integration/jax.py +0 -0
- {openrunner_sdk-2.37.30 → openrunner_sdk-2.37.32}/openrunner/integration/keras.py +0 -0
- {openrunner_sdk-2.37.30 → openrunner_sdk-2.37.32}/openrunner/integration/langchain.py +0 -0
- {openrunner_sdk-2.37.30 → openrunner_sdk-2.37.32}/openrunner/integration/lightgbm.py +0 -0
- {openrunner_sdk-2.37.30 → openrunner_sdk-2.37.32}/openrunner/integration/lightning.py +0 -0
- {openrunner_sdk-2.37.30 → openrunner_sdk-2.37.32}/openrunner/integration/llamaindex.py +0 -0
- {openrunner_sdk-2.37.30 → openrunner_sdk-2.37.32}/openrunner/integration/openai_finetune.py +0 -0
- {openrunner_sdk-2.37.30 → openrunner_sdk-2.37.32}/openrunner/integration/openai_tracer.py +0 -0
- {openrunner_sdk-2.37.30 → openrunner_sdk-2.37.32}/openrunner/integration/optuna.py +0 -0
- {openrunner_sdk-2.37.30 → openrunner_sdk-2.37.32}/openrunner/integration/pytorch.py +0 -0
- {openrunner_sdk-2.37.30 → openrunner_sdk-2.37.32}/openrunner/integration/sb3.py +0 -0
- {openrunner_sdk-2.37.30 → openrunner_sdk-2.37.32}/openrunner/integration/sklearn.py +0 -0
- {openrunner_sdk-2.37.30 → openrunner_sdk-2.37.32}/openrunner/integration/skypilot.py +0 -0
- {openrunner_sdk-2.37.30 → openrunner_sdk-2.37.32}/openrunner/integration/tensorflow.py +0 -0
- {openrunner_sdk-2.37.30 → openrunner_sdk-2.37.32}/openrunner/integration/trl.py +0 -0
- {openrunner_sdk-2.37.30 → openrunner_sdk-2.37.32}/openrunner/integration/tts.py +0 -0
- {openrunner_sdk-2.37.30 → openrunner_sdk-2.37.32}/openrunner/integration/ultralytics.py +0 -0
- {openrunner_sdk-2.37.30 → openrunner_sdk-2.37.32}/openrunner/integration/voice_agent.py +0 -0
- {openrunner_sdk-2.37.30 → openrunner_sdk-2.37.32}/openrunner/integration/whisper.py +0 -0
- {openrunner_sdk-2.37.30 → openrunner_sdk-2.37.32}/openrunner/integration/xgboost.py +0 -0
- {openrunner_sdk-2.37.30 → openrunner_sdk-2.37.32}/openrunner/launch.py +0 -0
- {openrunner_sdk-2.37.30 → openrunner_sdk-2.37.32}/openrunner/machine.py +0 -0
- {openrunner_sdk-2.37.30 → openrunner_sdk-2.37.32}/openrunner/mcp_server.py +0 -0
- {openrunner_sdk-2.37.30 → openrunner_sdk-2.37.32}/openrunner/media.py +0 -0
- {openrunner_sdk-2.37.30 → openrunner_sdk-2.37.32}/openrunner/migrate.py +0 -0
- {openrunner_sdk-2.37.30 → openrunner_sdk-2.37.32}/openrunner/model.py +0 -0
- {openrunner_sdk-2.37.30 → openrunner_sdk-2.37.32}/openrunner/model_card.py +0 -0
- {openrunner_sdk-2.37.30 → openrunner_sdk-2.37.32}/openrunner/offline.py +0 -0
- {openrunner_sdk-2.37.30 → openrunner_sdk-2.37.32}/openrunner/patent_scan.py +0 -0
- {openrunner_sdk-2.37.30 → openrunner_sdk-2.37.32}/openrunner/pii.py +0 -0
- {openrunner_sdk-2.37.30 → openrunner_sdk-2.37.32}/openrunner/plot.py +0 -0
- {openrunner_sdk-2.37.30 → openrunner_sdk-2.37.32}/openrunner/projects.py +0 -0
- {openrunner_sdk-2.37.30 → openrunner_sdk-2.37.32}/openrunner/prompt.py +0 -0
- {openrunner_sdk-2.37.30 → openrunner_sdk-2.37.32}/openrunner/query_api.py +0 -0
- {openrunner_sdk-2.37.30 → openrunner_sdk-2.37.32}/openrunner/redact.py +0 -0
- {openrunner_sdk-2.37.30 → openrunner_sdk-2.37.32}/openrunner/reload.py +0 -0
- {openrunner_sdk-2.37.30 → openrunner_sdk-2.37.32}/openrunner/research.py +0 -0
- {openrunner_sdk-2.37.30 → openrunner_sdk-2.37.32}/openrunner/research_policy.py +0 -0
- {openrunner_sdk-2.37.30 → openrunner_sdk-2.37.32}/openrunner/run.py +0 -0
- {openrunner_sdk-2.37.30 → openrunner_sdk-2.37.32}/openrunner/scorers.py +0 -0
- {openrunner_sdk-2.37.30 → openrunner_sdk-2.37.32}/openrunner/sender.py +0 -0
- {openrunner_sdk-2.37.30 → openrunner_sdk-2.37.32}/openrunner/session.py +0 -0
- {openrunner_sdk-2.37.30 → openrunner_sdk-2.37.32}/openrunner/settings.py +0 -0
- {openrunner_sdk-2.37.30 → openrunner_sdk-2.37.32}/openrunner/summary.py +0 -0
- {openrunner_sdk-2.37.30 → openrunner_sdk-2.37.32}/openrunner/sweep.py +0 -0
- {openrunner_sdk-2.37.30 → openrunner_sdk-2.37.32}/openrunner/sync.py +0 -0
- {openrunner_sdk-2.37.30 → openrunner_sdk-2.37.32}/openrunner/system_metrics.py +0 -0
- {openrunner_sdk-2.37.30 → openrunner_sdk-2.37.32}/openrunner/tensorboard.py +0 -0
- {openrunner_sdk-2.37.30 → openrunner_sdk-2.37.32}/openrunner/tools/__init__.py +0 -0
- {openrunner_sdk-2.37.30 → openrunner_sdk-2.37.32}/openrunner/tools/patent_report.py +0 -0
- {openrunner_sdk-2.37.30 → openrunner_sdk-2.37.32}/openrunner/trace.py +0 -0
- {openrunner_sdk-2.37.30 → openrunner_sdk-2.37.32}/openrunner/transcript_formatter.py +0 -0
- {openrunner_sdk-2.37.30 → openrunner_sdk-2.37.32}/openrunner/wal.py +0 -0
- {openrunner_sdk-2.37.30 → openrunner_sdk-2.37.32}/openrunner/wandb_compat/__init__.py +0 -0
- {openrunner_sdk-2.37.30 → openrunner_sdk-2.37.32}/openrunner/wandb_compat/_shim.py +0 -0
- {openrunner_sdk-2.37.30 → openrunner_sdk-2.37.32}/openrunner/wer.py +0 -0
- {openrunner_sdk-2.37.30 → openrunner_sdk-2.37.32}/scripts/gen_betterleaks_rules.py +0 -0
- {openrunner_sdk-2.37.30 → openrunner_sdk-2.37.32}/tests/__init__.py +0 -0
- {openrunner_sdk-2.37.30 → openrunner_sdk-2.37.32}/tests/conftest.py +0 -0
- {openrunner_sdk-2.37.30 → openrunner_sdk-2.37.32}/tests/fixtures/wandb-export-mini/run-aaa/config.json +0 -0
- {openrunner_sdk-2.37.30 → openrunner_sdk-2.37.32}/tests/fixtures/wandb-export-mini/run-aaa/metadata.json +0 -0
- {openrunner_sdk-2.37.30 → openrunner_sdk-2.37.32}/tests/fixtures/wandb-export-mini/run-aaa/metrics.jsonl +0 -0
- {openrunner_sdk-2.37.30 → openrunner_sdk-2.37.32}/tests/fixtures/wandb-export-mini/run-aaa/summary.json +0 -0
- {openrunner_sdk-2.37.30 → openrunner_sdk-2.37.32}/tests/fixtures/wandb-export-mini/run-bbb/artifacts/model-checkpoint/manifest.json +0 -0
- {openrunner_sdk-2.37.30 → openrunner_sdk-2.37.32}/tests/fixtures/wandb-export-mini/run-bbb/artifacts/model-checkpoint/weights.bin +0 -0
- {openrunner_sdk-2.37.30 → openrunner_sdk-2.37.32}/tests/fixtures/wandb-export-mini/run-bbb/artifacts/sample-image/manifest.json +0 -0
- {openrunner_sdk-2.37.30 → openrunner_sdk-2.37.32}/tests/fixtures/wandb-export-mini/run-bbb/artifacts/sample-image/preview.png +0 -0
- {openrunner_sdk-2.37.30 → openrunner_sdk-2.37.32}/tests/fixtures/wandb-export-mini/run-bbb/config.json +0 -0
- {openrunner_sdk-2.37.30 → openrunner_sdk-2.37.32}/tests/fixtures/wandb-export-mini/run-bbb/metadata.json +0 -0
- {openrunner_sdk-2.37.30 → openrunner_sdk-2.37.32}/tests/fixtures/wandb-export-mini/run-bbb/metrics.jsonl +0 -0
- {openrunner_sdk-2.37.30 → openrunner_sdk-2.37.32}/tests/fixtures/wandb-export-mini/run-bbb/summary.json +0 -0
- {openrunner_sdk-2.37.30 → openrunner_sdk-2.37.32}/tests/integration/__init__.py +0 -0
- {openrunner_sdk-2.37.30 → openrunner_sdk-2.37.32}/tests/integration/conftest.py +0 -0
- {openrunner_sdk-2.37.30 → openrunner_sdk-2.37.32}/tests/integration/test_artifact_round_trip.py +0 -0
- {openrunner_sdk-2.37.30 → openrunner_sdk-2.37.32}/tests/test_alert.py +0 -0
- {openrunner_sdk-2.37.30 → openrunner_sdk-2.37.32}/tests/test_aliases.py +0 -0
- {openrunner_sdk-2.37.30 → openrunner_sdk-2.37.32}/tests/test_api_client.py +0 -0
- {openrunner_sdk-2.37.30 → openrunner_sdk-2.37.32}/tests/test_artifact.py +0 -0
- {openrunner_sdk-2.37.30 → openrunner_sdk-2.37.32}/tests/test_buffer.py +0 -0
- {openrunner_sdk-2.37.30 → openrunner_sdk-2.37.32}/tests/test_cache.py +0 -0
- {openrunner_sdk-2.37.30 → openrunner_sdk-2.37.32}/tests/test_class_scorers.py +0 -0
- {openrunner_sdk-2.37.30 → openrunner_sdk-2.37.32}/tests/test_cli.py +0 -0
- {openrunner_sdk-2.37.30 → openrunner_sdk-2.37.32}/tests/test_config.py +0 -0
- {openrunner_sdk-2.37.30 → openrunner_sdk-2.37.32}/tests/test_evaluation.py +0 -0
- {openrunner_sdk-2.37.30 → openrunner_sdk-2.37.32}/tests/test_finish.py +0 -0
- {openrunner_sdk-2.37.30 → openrunner_sdk-2.37.32}/tests/test_git_info.py +0 -0
- {openrunner_sdk-2.37.30 → openrunner_sdk-2.37.32}/tests/test_gpu/__init__.py +0 -0
- {openrunner_sdk-2.37.30 → openrunner_sdk-2.37.32}/tests/test_gpu/conftest.py +0 -0
- {openrunner_sdk-2.37.30 → openrunner_sdk-2.37.32}/tests/test_gpu/test_cost_guard.py +0 -0
- {openrunner_sdk-2.37.30 → openrunner_sdk-2.37.32}/tests/test_gpu/test_gpu_types.py +0 -0
- {openrunner_sdk-2.37.30 → openrunner_sdk-2.37.32}/tests/test_gpu/test_lambda.py +0 -0
- {openrunner_sdk-2.37.30 → openrunner_sdk-2.37.32}/tests/test_gpu/test_modal.py +0 -0
- {openrunner_sdk-2.37.30 → openrunner_sdk-2.37.32}/tests/test_gpu/test_ovhcloud.py +0 -0
- {openrunner_sdk-2.37.30 → openrunner_sdk-2.37.32}/tests/test_gpu/test_price_compare.py +0 -0
- {openrunner_sdk-2.37.30 → openrunner_sdk-2.37.32}/tests/test_gpu/test_provider_base.py +0 -0
- {openrunner_sdk-2.37.30 → openrunner_sdk-2.37.32}/tests/test_gpu/test_runner.py +0 -0
- {openrunner_sdk-2.37.30 → openrunner_sdk-2.37.32}/tests/test_gpu/test_runpod.py +0 -0
- {openrunner_sdk-2.37.30 → openrunner_sdk-2.37.32}/tests/test_gpu/test_sdk_gpu_api.py +0 -0
- {openrunner_sdk-2.37.30 → openrunner_sdk-2.37.32}/tests/test_gpu/test_vastai.py +0 -0
- {openrunner_sdk-2.37.30 → openrunner_sdk-2.37.32}/tests/test_gpu/test_workspace_sync.py +0 -0
- {openrunner_sdk-2.37.30 → openrunner_sdk-2.37.32}/tests/test_init.py +0 -0
- {openrunner_sdk-2.37.30 → openrunner_sdk-2.37.32}/tests/test_install_commands.py +0 -0
- {openrunner_sdk-2.37.30 → openrunner_sdk-2.37.32}/tests/test_integration_fastai.py +0 -0
- {openrunner_sdk-2.37.30 → openrunner_sdk-2.37.32}/tests/test_integration_huggingface.py +0 -0
- {openrunner_sdk-2.37.30 → openrunner_sdk-2.37.32}/tests/test_integration_keras.py +0 -0
- {openrunner_sdk-2.37.30 → openrunner_sdk-2.37.32}/tests/test_integration_langchain.py +0 -0
- {openrunner_sdk-2.37.30 → openrunner_sdk-2.37.32}/tests/test_integration_lightning.py +0 -0
- {openrunner_sdk-2.37.30 → openrunner_sdk-2.37.32}/tests/test_integration_pytorch.py +0 -0
- {openrunner_sdk-2.37.30 → openrunner_sdk-2.37.32}/tests/test_integration_sklearn.py +0 -0
- {openrunner_sdk-2.37.30 → openrunner_sdk-2.37.32}/tests/test_integration_xgboost.py +0 -0
- {openrunner_sdk-2.37.30 → openrunner_sdk-2.37.32}/tests/test_launch.py +0 -0
- {openrunner_sdk-2.37.30 → openrunner_sdk-2.37.32}/tests/test_log.py +0 -0
- {openrunner_sdk-2.37.30 → openrunner_sdk-2.37.32}/tests/test_log_code.py +0 -0
- {openrunner_sdk-2.37.30 → openrunner_sdk-2.37.32}/tests/test_mcp_decisions.py +0 -0
- {openrunner_sdk-2.37.30 → openrunner_sdk-2.37.32}/tests/test_mcp_monitor.py +0 -0
- {openrunner_sdk-2.37.30 → openrunner_sdk-2.37.32}/tests/test_mcp_predictions.py +0 -0
- {openrunner_sdk-2.37.30 → openrunner_sdk-2.37.32}/tests/test_media.py +0 -0
- {openrunner_sdk-2.37.30 → openrunner_sdk-2.37.32}/tests/test_migrate.py +0 -0
- {openrunner_sdk-2.37.30 → openrunner_sdk-2.37.32}/tests/test_offline.py +0 -0
- {openrunner_sdk-2.37.30 → openrunner_sdk-2.37.32}/tests/test_offline_sync.py +0 -0
- {openrunner_sdk-2.37.30 → openrunner_sdk-2.37.32}/tests/test_pii.py +0 -0
- {openrunner_sdk-2.37.30 → openrunner_sdk-2.37.32}/tests/test_plot.py +0 -0
- {openrunner_sdk-2.37.30 → openrunner_sdk-2.37.32}/tests/test_query_api.py +0 -0
- {openrunner_sdk-2.37.30 → openrunner_sdk-2.37.32}/tests/test_resume.py +0 -0
- {openrunner_sdk-2.37.30 → openrunner_sdk-2.37.32}/tests/test_sdk_features.py +0 -0
- {openrunner_sdk-2.37.30 → openrunner_sdk-2.37.32}/tests/test_sender.py +0 -0
- {openrunner_sdk-2.37.30 → openrunner_sdk-2.37.32}/tests/test_session_sync.py +0 -0
- {openrunner_sdk-2.37.30 → openrunner_sdk-2.37.32}/tests/test_summary.py +0 -0
- {openrunner_sdk-2.37.30 → openrunner_sdk-2.37.32}/tests/test_sweep.py +0 -0
- {openrunner_sdk-2.37.30 → openrunner_sdk-2.37.32}/tests/test_system_metrics.py +0 -0
- {openrunner_sdk-2.37.30 → openrunner_sdk-2.37.32}/tests/test_trace.py +0 -0
- {openrunner_sdk-2.37.30 → openrunner_sdk-2.37.32}/tests/test_wandb_compat.py +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: openrunner-sdk
|
|
3
|
-
Version: 2.37.
|
|
3
|
+
Version: 2.37.32
|
|
4
4
|
Summary: OpenRunner SDK - W&B-compatible ML experiment tracking client
|
|
5
5
|
Project-URL: Homepage, https://github.com/jqueguiner/openrunner
|
|
6
6
|
Project-URL: Repository, https://github.com/jqueguiner/openrunner
|
|
@@ -181,7 +181,7 @@ launch.from_run = _launch_from_run # type: ignore[attr-defined]
|
|
|
181
181
|
# openrunner.trace.patch_openai() syntax
|
|
182
182
|
trace.patch_openai = _patch_openai # type: ignore[attr-defined]
|
|
183
183
|
|
|
184
|
-
__version__ = "2.37.
|
|
184
|
+
__version__ = "2.37.32"
|
|
185
185
|
|
|
186
186
|
logger = logging.getLogger("openrunner")
|
|
187
187
|
|
|
@@ -3055,6 +3055,22 @@ def version_cmd(check: bool) -> None:
|
|
|
3055
3055
|
click.echo("Up to date.")
|
|
3056
3056
|
|
|
3057
3057
|
|
|
3058
|
+
@main.command("_update_nudge", hidden=True)
|
|
3059
|
+
def update_nudge_cmd() -> None:
|
|
3060
|
+
"""Print ONE update-hint line if a newer SDK exists, else nothing. Cheap:
|
|
3061
|
+
uses the 24h cache so it hits the network at most once/day. Skills call this
|
|
3062
|
+
at start — it never blocks or errors."""
|
|
3063
|
+
try:
|
|
3064
|
+
info = check_for_update(force=False)
|
|
3065
|
+
if info.get("update_available"):
|
|
3066
|
+
click.echo(
|
|
3067
|
+
f"[openrunner] update available: {info['installed']} -> "
|
|
3068
|
+
f"{info['latest']} (run: openrunner update)"
|
|
3069
|
+
)
|
|
3070
|
+
except Exception:
|
|
3071
|
+
pass
|
|
3072
|
+
|
|
3073
|
+
|
|
3058
3074
|
@main.command("update")
|
|
3059
3075
|
@click.option("--pre", is_flag=True, help="Include pre-releases")
|
|
3060
3076
|
@click.option("--no-reinstall", is_flag=True, help="Only upgrade the package; skip reinstalling slash commands")
|
|
@@ -5427,6 +5443,30 @@ def jobs_ls(org, status) -> None:
|
|
|
5427
5443
|
click.echo(f"- {j['id']} {j['status']}{code} · {j['type']} · {j.get('image')} · runner={j.get('runner_id') or '-'}")
|
|
5428
5444
|
|
|
5429
5445
|
|
|
5446
|
+
@jobs_group.command("stats")
|
|
5447
|
+
@click.option("--org", required=True, help="Organization UUID or name/slug")
|
|
5448
|
+
def jobs_stats(org) -> None:
|
|
5449
|
+
"""Fleet snapshot: queue depth, running, avg duration, failure rate, runners."""
|
|
5450
|
+
client = _plain_client()
|
|
5451
|
+
org_id = _resolve_org_id(client, org)
|
|
5452
|
+
try:
|
|
5453
|
+
r = client._request("get", "/jobs/stats", params={"org_id": org_id})
|
|
5454
|
+
r.raise_for_status()
|
|
5455
|
+
s = r.json()
|
|
5456
|
+
finally:
|
|
5457
|
+
client.close()
|
|
5458
|
+
click.echo(f"runners: {s.get('runners_online')}/{s.get('runners_total')} online")
|
|
5459
|
+
click.echo(f"queue depth: {s.get('queue_depth')}")
|
|
5460
|
+
click.echo(f"running: {s.get('running')}")
|
|
5461
|
+
dur = s.get("avg_duration_seconds")
|
|
5462
|
+
click.echo(f"avg duration: {dur if dur is not None else '-'}s")
|
|
5463
|
+
fr = s.get("failure_rate")
|
|
5464
|
+
click.echo(f"failure rate: {f'{fr:.1%}' if fr is not None else '-'}")
|
|
5465
|
+
bys = s.get("jobs_by_status") or {}
|
|
5466
|
+
if bys:
|
|
5467
|
+
click.echo("by status: " + ", ".join(f"{k}={v}" for k, v in sorted(bys.items())))
|
|
5468
|
+
|
|
5469
|
+
|
|
5430
5470
|
# ---------------------------------------------------------------------------
|
|
5431
5471
|
# session — 1+ interactive shells INSIDE one runner pod (SSH-less, via tmux
|
|
5432
5472
|
# driven over the job channel). Each session is a tmux session on that pod.
|
|
@@ -3306,6 +3306,36 @@ the freshly scaffolded `/predict` -- add the non-blocking reporter + a
|
|
|
3306
3306
|
"""
|
|
3307
3307
|
|
|
3308
3308
|
|
|
3309
|
+
# A tiny freshness check injected at the top of every skill body (after the
|
|
3310
|
+
# frontmatter). `openrunner _update_nudge` is cached (24h) so it's near-free and
|
|
3311
|
+
# never blocks; if a newer SDK exists it prints one line the assistant relays to
|
|
3312
|
+
# the user, then the skill proceeds regardless.
|
|
3313
|
+
_FRESHNESS_NOTE = (
|
|
3314
|
+
"> Freshness check (non-blocking): run `openrunner _update_nudge` once at the "
|
|
3315
|
+
"start. If it prints an `update available` line, tell the user (they can run "
|
|
3316
|
+
"`/openrunner:update`), then continue with the task regardless.\n\n"
|
|
3317
|
+
)
|
|
3318
|
+
|
|
3319
|
+
|
|
3320
|
+
def _render_command(template: str, prefix: str, filename: str) -> str:
|
|
3321
|
+
"""Format a command template and inject the freshness note right after its
|
|
3322
|
+
YAML frontmatter. Skipped for update.md (it already checks) and any template
|
|
3323
|
+
without frontmatter."""
|
|
3324
|
+
body = template.format(prefix=prefix)
|
|
3325
|
+
if filename == "update.md":
|
|
3326
|
+
return body
|
|
3327
|
+
if body.startswith("---"):
|
|
3328
|
+
end = body.find("\n---", 3)
|
|
3329
|
+
if end != -1:
|
|
3330
|
+
after = end + len("\n---")
|
|
3331
|
+
# keep the newline(s) following the closing fence
|
|
3332
|
+
nl = after
|
|
3333
|
+
while nl < len(body) and body[nl] == "\n":
|
|
3334
|
+
nl += 1
|
|
3335
|
+
return body[:nl] + _FRESHNESS_NOTE + body[nl:]
|
|
3336
|
+
return body
|
|
3337
|
+
|
|
3338
|
+
|
|
3309
3339
|
def install_claude_code() -> list[str]:
|
|
3310
3340
|
"""Install commands in ~/.claude/commands/openrunner/."""
|
|
3311
3341
|
cmd_dir = Path.home() / ".claude" / "commands" / "openrunner"
|
|
@@ -3354,7 +3384,7 @@ def install_claude_code() -> list[str]:
|
|
|
3354
3384
|
files = []
|
|
3355
3385
|
for filename, template in commands.items():
|
|
3356
3386
|
path = cmd_dir / filename
|
|
3357
|
-
path.write_text(template
|
|
3387
|
+
path.write_text(_render_command(template, "openrunner:", filename))
|
|
3358
3388
|
files.append(str(path))
|
|
3359
3389
|
|
|
3360
3390
|
# Install CLAUDE.md with MCP usage instructions
|
|
@@ -3565,7 +3595,7 @@ def _install_all_commands_to_dir(cmd_dir: Path, prefix: str = "openrunner:") ->
|
|
|
3565
3595
|
files = []
|
|
3566
3596
|
for filename, template in commands.items():
|
|
3567
3597
|
path = cmd_dir / filename
|
|
3568
|
-
path.write_text(template
|
|
3598
|
+
path.write_text(_render_command(template, prefix, filename))
|
|
3569
3599
|
files.append(str(path))
|
|
3570
3600
|
|
|
3571
3601
|
return files
|
|
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
|
{openrunner_sdk-2.37.30 → openrunner_sdk-2.37.32}/openrunner/gpu/providers/modal_provider.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
|
{openrunner_sdk-2.37.30 → openrunner_sdk-2.37.32}/openrunner/integration/anthropic_tracer.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{openrunner_sdk-2.37.30 → openrunner_sdk-2.37.32}/openrunner/integration/forced_alignment.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
|
|
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
|
{openrunner_sdk-2.37.30 → openrunner_sdk-2.37.32}/tests/integration/test_artifact_round_trip.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
|
|
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
|