traigent 0.18.1.dev5__tar.gz → 0.18.1.dev7__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.
- {traigent-0.18.1.dev5/traigent.egg-info → traigent-0.18.1.dev7}/PKG-INFO +1 -1
- {traigent-0.18.1.dev5 → traigent-0.18.1.dev7}/pyproject.toml +1 -1
- {traigent-0.18.1.dev5 → traigent-0.18.1.dev7}/traigent/api/decorators.py +31 -2
- {traigent-0.18.1.dev5 → traigent-0.18.1.dev7}/traigent/cloud/api_operations.py +81 -0
- {traigent-0.18.1.dev5 → traigent-0.18.1.dev7}/traigent/cloud/backend_client.py +32 -6
- {traigent-0.18.1.dev5 → traigent-0.18.1.dev7}/traigent/cloud/client.py +86 -8
- {traigent-0.18.1.dev5 → traigent-0.18.1.dev7}/traigent/cloud/models.py +37 -0
- {traigent-0.18.1.dev5 → traigent-0.18.1.dev7}/traigent/cloud/session_operations.py +8 -2
- traigent-0.18.1.dev7/traigent/cloud/smart_pruning.py +85 -0
- {traigent-0.18.1.dev5 → traigent-0.18.1.dev7}/traigent/config/api_keys.py +13 -23
- {traigent-0.18.1.dev5 → traigent-0.18.1.dev7}/traigent/config/models.yaml +23 -3
- traigent-0.18.1.dev7/traigent/config/provider_support.py +407 -0
- {traigent-0.18.1.dev5 → traigent-0.18.1.dev7}/traigent/core/backend_session_manager.py +106 -12
- {traigent-0.18.1.dev5 → traigent-0.18.1.dev7}/traigent/core/optimized_function.py +18 -10
- {traigent-0.18.1.dev5 → traigent-0.18.1.dev7}/traigent/core/orchestrator.py +20 -9
- {traigent-0.18.1.dev5 → traigent-0.18.1.dev7}/traigent/core/trial_lifecycle.py +140 -6
- {traigent-0.18.1.dev5 → traigent-0.18.1.dev7}/traigent/evaluators/base.py +21 -7
- {traigent-0.18.1.dev5 → traigent-0.18.1.dev7}/traigent/integrations/model_discovery/registry.py +8 -1
- {traigent-0.18.1.dev5 → traigent-0.18.1.dev7}/traigent/integrations/providers.py +34 -3
- {traigent-0.18.1.dev5 → traigent-0.18.1.dev7}/traigent/providers/validation.py +28 -0
- {traigent-0.18.1.dev5 → traigent-0.18.1.dev7}/traigent/utils/env_config.py +23 -19
- {traigent-0.18.1.dev5 → traigent-0.18.1.dev7/traigent.egg-info}/PKG-INFO +1 -1
- {traigent-0.18.1.dev5 → traigent-0.18.1.dev7}/traigent.egg-info/SOURCES.txt +2 -0
- {traigent-0.18.1.dev5 → traigent-0.18.1.dev7}/CHANGELOG.md +0 -0
- {traigent-0.18.1.dev5 → traigent-0.18.1.dev7}/COMMERCIAL-LICENSE.md +0 -0
- {traigent-0.18.1.dev5 → traigent-0.18.1.dev7}/CONTRIBUTING.md +0 -0
- {traigent-0.18.1.dev5 → traigent-0.18.1.dev7}/CONTRIBUTOR-LICENSING.md +0 -0
- {traigent-0.18.1.dev5 → traigent-0.18.1.dev7}/DISCLAIMER.md +0 -0
- {traigent-0.18.1.dev5 → traigent-0.18.1.dev7}/LICENSE +0 -0
- {traigent-0.18.1.dev5 → traigent-0.18.1.dev7}/MANIFEST.in +0 -0
- {traigent-0.18.1.dev5 → traigent-0.18.1.dev7}/NOTICE +0 -0
- {traigent-0.18.1.dev5 → traigent-0.18.1.dev7}/README.md +0 -0
- {traigent-0.18.1.dev5 → traigent-0.18.1.dev7}/SECURITY.md +0 -0
- {traigent-0.18.1.dev5 → traigent-0.18.1.dev7}/docs/LOCAL_CI_GATE.md +0 -0
- {traigent-0.18.1.dev5 → traigent-0.18.1.dev7}/docs/README.md +0 -0
- {traigent-0.18.1.dev5 → traigent-0.18.1.dev7}/docs/SYNC_MAP.md +0 -0
- {traigent-0.18.1.dev5 → traigent-0.18.1.dev7}/docs/agent-skill.md +0 -0
- {traigent-0.18.1.dev5 → traigent-0.18.1.dev7}/docs/api-reference/complete-function-specification.md +0 -0
- {traigent-0.18.1.dev5 → traigent-0.18.1.dev7}/docs/api-reference/decorator-reference.md +0 -0
- {traigent-0.18.1.dev5 → traigent-0.18.1.dev7}/docs/api-reference/enterprise-beta-api.md +0 -0
- {traigent-0.18.1.dev5 → traigent-0.18.1.dev7}/docs/api-reference/interactive_optimizer.md +0 -0
- {traigent-0.18.1.dev5 → traigent-0.18.1.dev7}/docs/api-reference/telemetry.md +0 -0
- {traigent-0.18.1.dev5 → traigent-0.18.1.dev7}/docs/api-reference/thread-pool-examples.md +0 -0
- {traigent-0.18.1.dev5 → traigent-0.18.1.dev7}/docs/architecture/ARCHITECTURE.md +0 -0
- {traigent-0.18.1.dev5 → traigent-0.18.1.dev7}/docs/architecture/cost-architecture-validation.md +0 -0
- {traigent-0.18.1.dev5 → traigent-0.18.1.dev7}/docs/architecture/execution_mode_follow_up.md +0 -0
- {traigent-0.18.1.dev5 → traigent-0.18.1.dev7}/docs/architecture/integrations-inventory.md +0 -0
- {traigent-0.18.1.dev5 → traigent-0.18.1.dev7}/docs/architecture/plugin_architecture.md +0 -0
- {traigent-0.18.1.dev5 → traigent-0.18.1.dev7}/docs/architecture/project-structure.md +0 -0
- {traigent-0.18.1.dev5 → traigent-0.18.1.dev7}/docs/architecture/stop_conditions.md +0 -0
- {traigent-0.18.1.dev5 → traigent-0.18.1.dev7}/docs/concepts/composite-knob-ir.md +0 -0
- {traigent-0.18.1.dev5 → traigent-0.18.1.dev7}/docs/concepts/composite-knobs.md +0 -0
- {traigent-0.18.1.dev5 → traigent-0.18.1.dev7}/docs/concepts/guided-generation.md +0 -0
- {traigent-0.18.1.dev5 → traigent-0.18.1.dev7}/docs/contributing/ADDING_NEW_INTEGRATIONS.md +0 -0
- {traigent-0.18.1.dev5 → traigent-0.18.1.dev7}/docs/contributing/CODE_OF_CONDUCT.md +0 -0
- {traigent-0.18.1.dev5 → traigent-0.18.1.dev7}/docs/contributing/CONTRIBUTING.md +0 -0
- {traigent-0.18.1.dev5 → traigent-0.18.1.dev7}/docs/contributing/EXAMPLE_TEMPLATE.md +0 -0
- {traigent-0.18.1.dev5 → traigent-0.18.1.dev7}/docs/contributing/README.md +0 -0
- {traigent-0.18.1.dev5 → traigent-0.18.1.dev7}/docs/contributing/SECURITY.md +0 -0
- {traigent-0.18.1.dev5 → traigent-0.18.1.dev7}/docs/contributing/aikido_triage.md +0 -0
- {traigent-0.18.1.dev5 → traigent-0.18.1.dev7}/docs/contributing/code_review_instructions.md +0 -0
- {traigent-0.18.1.dev5 → traigent-0.18.1.dev7}/docs/contributing/test-quality-guide.md +0 -0
- {traigent-0.18.1.dev5 → traigent-0.18.1.dev7}/docs/demos/DEMO_VIDEO_GUIDE.md +0 -0
- {traigent-0.18.1.dev5 → traigent-0.18.1.dev7}/docs/demos/README.md +0 -0
- {traigent-0.18.1.dev5 → traigent-0.18.1.dev7}/docs/examples/API_PATTERNS.md +0 -0
- {traigent-0.18.1.dev5 → traigent-0.18.1.dev7}/docs/examples/LEARNING_ROADMAP.md +0 -0
- {traigent-0.18.1.dev5 → traigent-0.18.1.dev7}/docs/examples/QUICK_REFERENCE.md +0 -0
- {traigent-0.18.1.dev5 → traigent-0.18.1.dev7}/docs/examples/README.md +0 -0
- {traigent-0.18.1.dev5 → traigent-0.18.1.dev7}/docs/examples/START_HERE.md +0 -0
- {traigent-0.18.1.dev5 → traigent-0.18.1.dev7}/docs/examples/TROUBLESHOOTING.md +0 -0
- {traigent-0.18.1.dev5 → traigent-0.18.1.dev7}/docs/fake-completion-tracking.md +0 -0
- {traigent-0.18.1.dev5 → traigent-0.18.1.dev7}/docs/feature_matrices/README.md +0 -0
- {traigent-0.18.1.dev5 → traigent-0.18.1.dev7}/docs/features/README.md +0 -0
- {traigent-0.18.1.dev5 → traigent-0.18.1.dev7}/docs/features/authentication.md +0 -0
- {traigent-0.18.1.dev5 → traigent-0.18.1.dev7}/docs/features/constraint-dsl.md +0 -0
- {traigent-0.18.1.dev5 → traigent-0.18.1.dev7}/docs/features/dataflow-detection.md +0 -0
- {traigent-0.18.1.dev5 → traigent-0.18.1.dev7}/docs/features/framework_override_enhanced_features.md +0 -0
- {traigent-0.18.1.dev5 → traigent-0.18.1.dev7}/docs/features/mcp-server.md +0 -0
- {traigent-0.18.1.dev5 → traigent-0.18.1.dev7}/docs/features/observability-spans.md +0 -0
- {traigent-0.18.1.dev5 → traigent-0.18.1.dev7}/docs/features/onboarding.md +0 -0
- {traigent-0.18.1.dev5 → traigent-0.18.1.dev7}/docs/features/prompt_management.md +0 -0
- {traigent-0.18.1.dev5 → traigent-0.18.1.dev7}/docs/features/recommendations.md +0 -0
- {traigent-0.18.1.dev5 → traigent-0.18.1.dev7}/docs/features/safety-gates.md +0 -0
- {traigent-0.18.1.dev5 → traigent-0.18.1.dev7}/docs/features/seamless_injection.md +0 -0
- {traigent-0.18.1.dev5 → traigent-0.18.1.dev7}/docs/features/strategy-presets.md +0 -0
- {traigent-0.18.1.dev5 → traigent-0.18.1.dev7}/docs/features/strict_metrics_nulls.md +0 -0
- {traigent-0.18.1.dev5 → traigent-0.18.1.dev7}/docs/getting-started/GETTING_STARTED.md +0 -0
- {traigent-0.18.1.dev5 → traigent-0.18.1.dev7}/docs/getting-started/README.md +0 -0
- {traigent-0.18.1.dev5 → traigent-0.18.1.dev7}/docs/getting-started/installation.md +0 -0
- {traigent-0.18.1.dev5 → traigent-0.18.1.dev7}/docs/getting-started/minimal-integration.md +0 -0
- {traigent-0.18.1.dev5 → traigent-0.18.1.dev7}/docs/getting-started/portal-dev-laptop-agent.md +0 -0
- {traigent-0.18.1.dev5 → traigent-0.18.1.dev7}/docs/getting-started/testing.md +0 -0
- {traigent-0.18.1.dev5 → traigent-0.18.1.dev7}/docs/guides/VSCODE_RESTART_GUIDE.md +0 -0
- {traigent-0.18.1.dev5 → traigent-0.18.1.dev7}/docs/guides/evaluation.md +0 -0
- {traigent-0.18.1.dev5 → traigent-0.18.1.dev7}/docs/guides/execution-mode-migration.md +0 -0
- {traigent-0.18.1.dev5 → traigent-0.18.1.dev7}/docs/guides/execution-modes.md +0 -0
- {traigent-0.18.1.dev5 → traigent-0.18.1.dev7}/docs/guides/js-bridge.md +0 -0
- {traigent-0.18.1.dev5 → traigent-0.18.1.dev7}/docs/guides/llm_plugin_migration_guide.md +0 -0
- {traigent-0.18.1.dev5 → traigent-0.18.1.dev7}/docs/guides/parallel-configuration.md +0 -0
- {traigent-0.18.1.dev5 → traigent-0.18.1.dev7}/docs/guides/secrets_management.md +0 -0
- {traigent-0.18.1.dev5 → traigent-0.18.1.dev7}/docs/hybrid-mode-api-contract.md +0 -0
- {traigent-0.18.1.dev5 → traigent-0.18.1.dev7}/docs/hybrid-mode-client-guide.md +0 -0
- {traigent-0.18.1.dev5 → traigent-0.18.1.dev7}/docs/operations/azure_openai.md +0 -0
- {traigent-0.18.1.dev5 → traigent-0.18.1.dev7}/docs/operations/bedrock.md +0 -0
- {traigent-0.18.1.dev5 → traigent-0.18.1.dev7}/docs/operations/google_gemini.md +0 -0
- {traigent-0.18.1.dev5 → traigent-0.18.1.dev7}/docs/security/trust_model.md +0 -0
- {traigent-0.18.1.dev5 → traigent-0.18.1.dev7}/docs/testing/CREATIVE_STRESS_TESTING.md +0 -0
- {traigent-0.18.1.dev5 → traigent-0.18.1.dev7}/docs/traceability/concepts/composite-knob-ir.md +0 -0
- {traigent-0.18.1.dev5 → traigent-0.18.1.dev7}/docs/traceability/concepts/composite-knobs.md +0 -0
- {traigent-0.18.1.dev5 → traigent-0.18.1.dev7}/docs/traceability/concepts/guided-generation.md +0 -0
- {traigent-0.18.1.dev5 → traigent-0.18.1.dev7}/docs/traceability/schema.md +0 -0
- {traigent-0.18.1.dev5 → traigent-0.18.1.dev7}/docs/traceability/tagging_tracking.md +0 -0
- {traigent-0.18.1.dev5 → traigent-0.18.1.dev7}/docs/traceability/taxonomy_reference.md +0 -0
- {traigent-0.18.1.dev5 → traigent-0.18.1.dev7}/docs/tvl/CONSTRAINT_EXPRESSIONS.md +0 -0
- {traigent-0.18.1.dev5 → traigent-0.18.1.dev7}/docs/user-guide/README.md +0 -0
- {traigent-0.18.1.dev5 → traigent-0.18.1.dev7}/docs/user-guide/agent_optimization.md +0 -0
- {traigent-0.18.1.dev5 → traigent-0.18.1.dev7}/docs/user-guide/choosing_optimization_model.md +0 -0
- {traigent-0.18.1.dev5 → traigent-0.18.1.dev7}/docs/user-guide/configuration-spaces.md +0 -0
- {traigent-0.18.1.dev5 → traigent-0.18.1.dev7}/docs/user-guide/evaluation_guide.md +0 -0
- {traigent-0.18.1.dev5 → traigent-0.18.1.dev7}/docs/user-guide/injection_modes.md +0 -0
- {traigent-0.18.1.dev5 → traigent-0.18.1.dev7}/docs/user-guide/interactive_optimization.md +0 -0
- {traigent-0.18.1.dev5 → traigent-0.18.1.dev7}/docs/user-guide/smart_optimization.md +0 -0
- {traigent-0.18.1.dev5 → traigent-0.18.1.dev7}/docs/user-guide/tuned_variables.md +0 -0
- {traigent-0.18.1.dev5 → traigent-0.18.1.dev7}/docs/walkthrough.md +0 -0
- {traigent-0.18.1.dev5 → traigent-0.18.1.dev7}/requirements/requirements-all.txt +0 -0
- {traigent-0.18.1.dev5 → traigent-0.18.1.dev7}/requirements/requirements-analytics.txt +0 -0
- {traigent-0.18.1.dev5 → traigent-0.18.1.dev7}/requirements/requirements-bayesian.txt +0 -0
- {traigent-0.18.1.dev5 → traigent-0.18.1.dev7}/requirements/requirements-chroma.txt +0 -0
- {traigent-0.18.1.dev5 → traigent-0.18.1.dev7}/requirements/requirements-dev.txt +0 -0
- {traigent-0.18.1.dev5 → traigent-0.18.1.dev7}/requirements/requirements-hybrid.txt +0 -0
- {traigent-0.18.1.dev5 → traigent-0.18.1.dev7}/requirements/requirements-integrations.txt +0 -0
- {traigent-0.18.1.dev5 → traigent-0.18.1.dev7}/requirements/requirements-security.txt +0 -0
- {traigent-0.18.1.dev5 → traigent-0.18.1.dev7}/requirements/requirements-test.txt +0 -0
- {traigent-0.18.1.dev5 → traigent-0.18.1.dev7}/requirements/requirements.txt +0 -0
- {traigent-0.18.1.dev5 → traigent-0.18.1.dev7}/setup.cfg +0 -0
- {traigent-0.18.1.dev5 → traigent-0.18.1.dev7}/traigent/__init__.py +0 -0
- {traigent-0.18.1.dev5 → traigent-0.18.1.dev7}/traigent/_version.py +0 -0
- {traigent-0.18.1.dev5 → traigent-0.18.1.dev7}/traigent/adapters/execution_adapter.py +0 -0
- {traigent-0.18.1.dev5 → traigent-0.18.1.dev7}/traigent/admin/__init__.py +0 -0
- {traigent-0.18.1.dev5 → traigent-0.18.1.dev7}/traigent/admin/client.py +0 -0
- {traigent-0.18.1.dev5 → traigent-0.18.1.dev7}/traigent/admin/config.py +0 -0
- {traigent-0.18.1.dev5 → traigent-0.18.1.dev7}/traigent/admin/dtos.py +0 -0
- {traigent-0.18.1.dev5 → traigent-0.18.1.dev7}/traigent/agents/__init__.py +0 -0
- {traigent-0.18.1.dev5 → traigent-0.18.1.dev7}/traigent/agents/config_mapper.py +0 -0
- {traigent-0.18.1.dev5 → traigent-0.18.1.dev7}/traigent/agents/executor.py +0 -0
- {traigent-0.18.1.dev5 → traigent-0.18.1.dev7}/traigent/agents/platforms.py +0 -0
- {traigent-0.18.1.dev5 → traigent-0.18.1.dev7}/traigent/agents/specification_generator.py +0 -0
- {traigent-0.18.1.dev5 → traigent-0.18.1.dev7}/traigent/analytics/__init__.py +0 -0
- {traigent-0.18.1.dev5 → traigent-0.18.1.dev7}/traigent/analytics/anomaly.py +0 -0
- {traigent-0.18.1.dev5 → traigent-0.18.1.dev7}/traigent/analytics/cost_optimization.py +0 -0
- {traigent-0.18.1.dev5 → traigent-0.18.1.dev7}/traigent/analytics/example_insights.py +0 -0
- {traigent-0.18.1.dev5 → traigent-0.18.1.dev7}/traigent/analytics/intelligence.py +0 -0
- {traigent-0.18.1.dev5 → traigent-0.18.1.dev7}/traigent/analytics/meta_learning.py +0 -0
- {traigent-0.18.1.dev5 → traigent-0.18.1.dev7}/traigent/analytics/next_steps.py +0 -0
- {traigent-0.18.1.dev5 → traigent-0.18.1.dev7}/traigent/analytics/optimization_plan.py +0 -0
- {traigent-0.18.1.dev5 → traigent-0.18.1.dev7}/traigent/analytics/predictive.py +0 -0
- {traigent-0.18.1.dev5 → traigent-0.18.1.dev7}/traigent/analytics/render.py +0 -0
- {traigent-0.18.1.dev5 → traigent-0.18.1.dev7}/traigent/analytics/scheduling.py +0 -0
- {traigent-0.18.1.dev5 → traigent-0.18.1.dev7}/traigent/analytics_mcp/__init__.py +0 -0
- {traigent-0.18.1.dev5 → traigent-0.18.1.dev7}/traigent/analytics_mcp/server.py +0 -0
- {traigent-0.18.1.dev5 → traigent-0.18.1.dev7}/traigent/analytics_mcp/tools.py +0 -0
- {traigent-0.18.1.dev5 → traigent-0.18.1.dev7}/traigent/api/__init__.py +0 -0
- {traigent-0.18.1.dev5 → traigent-0.18.1.dev7}/traigent/api/agent_inference.py +0 -0
- {traigent-0.18.1.dev5 → traigent-0.18.1.dev7}/traigent/api/config_builder.py +0 -0
- {traigent-0.18.1.dev5 → traigent-0.18.1.dev7}/traigent/api/config_space.py +0 -0
- {traigent-0.18.1.dev5 → traigent-0.18.1.dev7}/traigent/api/constraint_builders.py +0 -0
- {traigent-0.18.1.dev5 → traigent-0.18.1.dev7}/traigent/api/constraints.py +0 -0
- {traigent-0.18.1.dev5 → traigent-0.18.1.dev7}/traigent/api/functions.py +0 -0
- {traigent-0.18.1.dev5 → traigent-0.18.1.dev7}/traigent/api/parameter_ranges.py +0 -0
- {traigent-0.18.1.dev5 → traigent-0.18.1.dev7}/traigent/api/parameter_validator.py +0 -0
- {traigent-0.18.1.dev5 → traigent-0.18.1.dev7}/traigent/api/safety.py +0 -0
- {traigent-0.18.1.dev5 → traigent-0.18.1.dev7}/traigent/api/strategy_presets.py +0 -0
- {traigent-0.18.1.dev5 → traigent-0.18.1.dev7}/traigent/api/types.py +0 -0
- {traigent-0.18.1.dev5 → traigent-0.18.1.dev7}/traigent/api/validation_protocol.py +0 -0
- {traigent-0.18.1.dev5 → traigent-0.18.1.dev7}/traigent/cli/__init__.py +0 -0
- {traigent-0.18.1.dev5 → traigent-0.18.1.dev7}/traigent/cli/auth_commands.py +0 -0
- {traigent-0.18.1.dev5 → traigent-0.18.1.dev7}/traigent/cli/detect_tvars_command.py +0 -0
- {traigent-0.18.1.dev5 → traigent-0.18.1.dev7}/traigent/cli/function_discovery.py +0 -0
- {traigent-0.18.1.dev5 → traigent-0.18.1.dev7}/traigent/cli/generate_config_command.py +0 -0
- {traigent-0.18.1.dev5 → traigent-0.18.1.dev7}/traigent/cli/hooks_commands.py +0 -0
- {traigent-0.18.1.dev5 → traigent-0.18.1.dev7}/traigent/cli/local_commands.py +0 -0
- {traigent-0.18.1.dev5 → traigent-0.18.1.dev7}/traigent/cli/main.py +0 -0
- {traigent-0.18.1.dev5 → traigent-0.18.1.dev7}/traigent/cli/next_steps_command.py +0 -0
- {traigent-0.18.1.dev5 → traigent-0.18.1.dev7}/traigent/cli/onboard_commands.py +0 -0
- {traigent-0.18.1.dev5 → traigent-0.18.1.dev7}/traigent/cli/optimization_validator.py +0 -0
- {traigent-0.18.1.dev5 → traigent-0.18.1.dev7}/traigent/cli/plan_command.py +0 -0
- {traigent-0.18.1.dev5 → traigent-0.18.1.dev7}/traigent/cli/playbook_commands.py +0 -0
- {traigent-0.18.1.dev5 → traigent-0.18.1.dev7}/traigent/cli/sync_commands.py +0 -0
- {traigent-0.18.1.dev5 → traigent-0.18.1.dev7}/traigent/cli/validation_types.py +0 -0
- {traigent-0.18.1.dev5 → traigent-0.18.1.dev7}/traigent/cloud/__init__.py +0 -0
- {traigent-0.18.1.dev5 → traigent-0.18.1.dev7}/traigent/cloud/_aiohttp_compat.py +0 -0
- {traigent-0.18.1.dev5 → traigent-0.18.1.dev7}/traigent/cloud/agent_dtos.py +0 -0
- {traigent-0.18.1.dev5 → traigent-0.18.1.dev7}/traigent/cloud/analytics_auth.py +0 -0
- {traigent-0.18.1.dev5 → traigent-0.18.1.dev7}/traigent/cloud/analytics_client.py +0 -0
- {traigent-0.18.1.dev5 → traigent-0.18.1.dev7}/traigent/cloud/api_key_manager.py +0 -0
- {traigent-0.18.1.dev5 → traigent-0.18.1.dev7}/traigent/cloud/async_batch_transport.py +0 -0
- {traigent-0.18.1.dev5 → traigent-0.18.1.dev7}/traigent/cloud/auth.py +0 -0
- {traigent-0.18.1.dev5 → traigent-0.18.1.dev7}/traigent/cloud/backend_bridges.py +0 -0
- {traigent-0.18.1.dev5 → traigent-0.18.1.dev7}/traigent/cloud/backend_components.py +0 -0
- {traigent-0.18.1.dev5 → traigent-0.18.1.dev7}/traigent/cloud/backend_synchronizer.py +0 -0
- {traigent-0.18.1.dev5 → traigent-0.18.1.dev7}/traigent/cloud/benchmark_client.py +0 -0
- {traigent-0.18.1.dev5 → traigent-0.18.1.dev7}/traigent/cloud/billing.py +0 -0
- {traigent-0.18.1.dev5 → traigent-0.18.1.dev7}/traigent/cloud/cloud_operations.py +0 -0
- {traigent-0.18.1.dev5 → traigent-0.18.1.dev7}/traigent/cloud/credential_manager.py +0 -0
- {traigent-0.18.1.dev5 → traigent-0.18.1.dev7}/traigent/cloud/credential_resolver.py +0 -0
- {traigent-0.18.1.dev5 → traigent-0.18.1.dev7}/traigent/cloud/dataset_converter.py +0 -0
- {traigent-0.18.1.dev5 → traigent-0.18.1.dev7}/traigent/cloud/dtos.py +0 -0
- {traigent-0.18.1.dev5 → traigent-0.18.1.dev7}/traigent/cloud/governance.py +0 -0
- {traigent-0.18.1.dev5 → traigent-0.18.1.dev7}/traigent/cloud/integration_manager.py +0 -0
- {traigent-0.18.1.dev5 → traigent-0.18.1.dev7}/traigent/cloud/optimizer_client.py +0 -0
- {traigent-0.18.1.dev5 → traigent-0.18.1.dev7}/traigent/cloud/password_auth_handler.py +0 -0
- {traigent-0.18.1.dev5 → traigent-0.18.1.dev7}/traigent/cloud/privacy_operations.py +0 -0
- {traigent-0.18.1.dev5 → traigent-0.18.1.dev7}/traigent/cloud/production_mcp_client.py +0 -0
- {traigent-0.18.1.dev5 → traigent-0.18.1.dev7}/traigent/cloud/remote_guidance.py +0 -0
- {traigent-0.18.1.dev5 → traigent-0.18.1.dev7}/traigent/cloud/resilient_client.py +0 -0
- {traigent-0.18.1.dev5 → traigent-0.18.1.dev7}/traigent/cloud/service.py +0 -0
- {traigent-0.18.1.dev5 → traigent-0.18.1.dev7}/traigent/cloud/session_types.py +0 -0
- {traigent-0.18.1.dev5 → traigent-0.18.1.dev7}/traigent/cloud/sessions.py +0 -0
- {traigent-0.18.1.dev5 → traigent-0.18.1.dev7}/traigent/cloud/subset_selection.py +0 -0
- {traigent-0.18.1.dev5 → traigent-0.18.1.dev7}/traigent/cloud/sync_manager.py +0 -0
- {traigent-0.18.1.dev5 → traigent-0.18.1.dev7}/traigent/cloud/token_manager.py +0 -0
- {traigent-0.18.1.dev5 → traigent-0.18.1.dev7}/traigent/cloud/trial_operations.py +0 -0
- {traigent-0.18.1.dev5 → traigent-0.18.1.dev7}/traigent/cloud/trial_tracker.py +0 -0
- {traigent-0.18.1.dev5 → traigent-0.18.1.dev7}/traigent/cloud/url_security.py +0 -0
- {traigent-0.18.1.dev5 → traigent-0.18.1.dev7}/traigent/cloud/user_agent.py +0 -0
- {traigent-0.18.1.dev5 → traigent-0.18.1.dev7}/traigent/cloud/validators.py +0 -0
- {traigent-0.18.1.dev5 → traigent-0.18.1.dev7}/traigent/config/__init__.py +0 -0
- {traigent-0.18.1.dev5 → traigent-0.18.1.dev7}/traigent/config/ast_transformer.py +0 -0
- {traigent-0.18.1.dev5 → traigent-0.18.1.dev7}/traigent/config/backend_config.py +0 -0
- {traigent-0.18.1.dev5 → traigent-0.18.1.dev7}/traigent/config/context.py +0 -0
- {traigent-0.18.1.dev5 → traigent-0.18.1.dev7}/traigent/config/feature_flags.py +0 -0
- {traigent-0.18.1.dev5 → traigent-0.18.1.dev7}/traigent/config/parallel.py +0 -0
- {traigent-0.18.1.dev5 → traigent-0.18.1.dev7}/traigent/config/project.py +0 -0
- {traigent-0.18.1.dev5 → traigent-0.18.1.dev7}/traigent/config/providers.py +0 -0
- {traigent-0.18.1.dev5 → traigent-0.18.1.dev7}/traigent/config/runtime_injector.py +0 -0
- {traigent-0.18.1.dev5 → traigent-0.18.1.dev7}/traigent/config/tenant.py +0 -0
- {traigent-0.18.1.dev5 → traigent-0.18.1.dev7}/traigent/config/types.py +0 -0
- {traigent-0.18.1.dev5 → traigent-0.18.1.dev7}/traigent/config_generator/__init__.py +0 -0
- {traigent-0.18.1.dev5 → traigent-0.18.1.dev7}/traigent/config_generator/agent_classifier.py +0 -0
- {traigent-0.18.1.dev5 → traigent-0.18.1.dev7}/traigent/config_generator/apply.py +0 -0
- {traigent-0.18.1.dev5 → traigent-0.18.1.dev7}/traigent/config_generator/catalog/schemas/tvar_catalog_entry_schema.json +0 -0
- {traigent-0.18.1.dev5 → traigent-0.18.1.dev7}/traigent/config_generator/catalog/schemas/tvar_observation_schema.json +0 -0
- {traigent-0.18.1.dev5 → traigent-0.18.1.dev7}/traigent/config_generator/catalog/schemas/tvar_value_recommendation_schema.json +0 -0
- {traigent-0.18.1.dev5 → traigent-0.18.1.dev7}/traigent/config_generator/catalog/tvar_catalog.v1.json +0 -0
- {traigent-0.18.1.dev5 → traigent-0.18.1.dev7}/traigent/config_generator/catalog.py +0 -0
- {traigent-0.18.1.dev5 → traigent-0.18.1.dev7}/traigent/config_generator/llm_backend.py +0 -0
- {traigent-0.18.1.dev5 → traigent-0.18.1.dev7}/traigent/config_generator/pipeline.py +0 -0
- {traigent-0.18.1.dev5 → traigent-0.18.1.dev7}/traigent/config_generator/presets/__init__.py +0 -0
- {traigent-0.18.1.dev5 → traigent-0.18.1.dev7}/traigent/config_generator/presets/agent_type_catalog.py +0 -0
- {traigent-0.18.1.dev5 → traigent-0.18.1.dev7}/traigent/config_generator/presets/benchmark_catalog.py +0 -0
- {traigent-0.18.1.dev5 → traigent-0.18.1.dev7}/traigent/config_generator/presets/constraint_templates.py +0 -0
- {traigent-0.18.1.dev5 → traigent-0.18.1.dev7}/traigent/config_generator/presets/range_presets.py +0 -0
- {traigent-0.18.1.dev5 → traigent-0.18.1.dev7}/traigent/config_generator/recommendations.py +0 -0
- {traigent-0.18.1.dev5 → traigent-0.18.1.dev7}/traigent/config_generator/subsystems/__init__.py +0 -0
- {traigent-0.18.1.dev5 → traigent-0.18.1.dev7}/traigent/config_generator/subsystems/benchmarks.py +0 -0
- {traigent-0.18.1.dev5 → traigent-0.18.1.dev7}/traigent/config_generator/subsystems/objectives.py +0 -0
- {traigent-0.18.1.dev5 → traigent-0.18.1.dev7}/traigent/config_generator/subsystems/safety_constraints.py +0 -0
- {traigent-0.18.1.dev5 → traigent-0.18.1.dev7}/traigent/config_generator/subsystems/structural_constraints.py +0 -0
- {traigent-0.18.1.dev5 → traigent-0.18.1.dev7}/traigent/config_generator/subsystems/tvar_ranges.py +0 -0
- {traigent-0.18.1.dev5 → traigent-0.18.1.dev7}/traigent/config_generator/subsystems/tvar_recommendations.py +0 -0
- {traigent-0.18.1.dev5 → traigent-0.18.1.dev7}/traigent/config_generator/types.py +0 -0
- {traigent-0.18.1.dev5 → traigent-0.18.1.dev7}/traigent/core/__init__.py +0 -0
- {traigent-0.18.1.dev5 → traigent-0.18.1.dev7}/traigent/core/best_config_runtime.py +0 -0
- {traigent-0.18.1.dev5 → traigent-0.18.1.dev7}/traigent/core/cache_policy.py +0 -0
- {traigent-0.18.1.dev5 → traigent-0.18.1.dev7}/traigent/core/ci_approval.py +0 -0
- {traigent-0.18.1.dev5 → traigent-0.18.1.dev7}/traigent/core/config_state_manager.py +0 -0
- {traigent-0.18.1.dev5 → traigent-0.18.1.dev7}/traigent/core/constants.py +0 -0
- {traigent-0.18.1.dev5 → traigent-0.18.1.dev7}/traigent/core/cost_enforcement.py +0 -0
- {traigent-0.18.1.dev5 → traigent-0.18.1.dev7}/traigent/core/cost_estimator.py +0 -0
- {traigent-0.18.1.dev5 → traigent-0.18.1.dev7}/traigent/core/evaluator_wrapper.py +0 -0
- {traigent-0.18.1.dev5 → traigent-0.18.1.dev7}/traigent/core/exception_handler.py +0 -0
- {traigent-0.18.1.dev5 → traigent-0.18.1.dev7}/traigent/core/execution_policy_runtime.py +0 -0
- {traigent-0.18.1.dev5 → traigent-0.18.1.dev7}/traigent/core/license.py +0 -0
- {traigent-0.18.1.dev5 → traigent-0.18.1.dev7}/traigent/core/logger_facade.py +0 -0
- {traigent-0.18.1.dev5 → traigent-0.18.1.dev7}/traigent/core/mandatory_metrics.py +0 -0
- {traigent-0.18.1.dev5 → traigent-0.18.1.dev7}/traigent/core/meta_types.py +0 -0
- {traigent-0.18.1.dev5 → traigent-0.18.1.dev7}/traigent/core/metadata_helpers.py +0 -0
- {traigent-0.18.1.dev5 → traigent-0.18.1.dev7}/traigent/core/metric_registry.py +0 -0
- {traigent-0.18.1.dev5 → traigent-0.18.1.dev7}/traigent/core/metrics_aggregator.py +0 -0
- {traigent-0.18.1.dev5 → traigent-0.18.1.dev7}/traigent/core/namespace.py +0 -0
- {traigent-0.18.1.dev5 → traigent-0.18.1.dev7}/traigent/core/objectives.py +0 -0
- {traigent-0.18.1.dev5 → traigent-0.18.1.dev7}/traigent/core/optimization_pipeline.py +0 -0
- {traigent-0.18.1.dev5 → traigent-0.18.1.dev7}/traigent/core/orchestrator_helpers.py +0 -0
- {traigent-0.18.1.dev5 → traigent-0.18.1.dev7}/traigent/core/parallel_execution_manager.py +0 -0
- {traigent-0.18.1.dev5 → traigent-0.18.1.dev7}/traigent/core/progress_manager.py +0 -0
- {traigent-0.18.1.dev5 → traigent-0.18.1.dev7}/traigent/core/result_selection.py +0 -0
- {traigent-0.18.1.dev5 → traigent-0.18.1.dev7}/traigent/core/sample_budget.py +0 -0
- {traigent-0.18.1.dev5 → traigent-0.18.1.dev7}/traigent/core/samplers/__init__.py +0 -0
- {traigent-0.18.1.dev5 → traigent-0.18.1.dev7}/traigent/core/samplers/random_sampler.py +0 -0
- {traigent-0.18.1.dev5 → traigent-0.18.1.dev7}/traigent/core/session_context.py +0 -0
- {traigent-0.18.1.dev5 → traigent-0.18.1.dev7}/traigent/core/session_types.py +0 -0
- {traigent-0.18.1.dev5 → traigent-0.18.1.dev7}/traigent/core/stat_significance.py +0 -0
- {traigent-0.18.1.dev5 → traigent-0.18.1.dev7}/traigent/core/stop_condition_manager.py +0 -0
- {traigent-0.18.1.dev5 → traigent-0.18.1.dev7}/traigent/core/stop_conditions.py +0 -0
- {traigent-0.18.1.dev5 → traigent-0.18.1.dev7}/traigent/core/trace_env.py +0 -0
- {traigent-0.18.1.dev5 → traigent-0.18.1.dev7}/traigent/core/tracing.py +0 -0
- {traigent-0.18.1.dev5 → traigent-0.18.1.dev7}/traigent/core/trial_context.py +0 -0
- {traigent-0.18.1.dev5 → traigent-0.18.1.dev7}/traigent/core/trial_result_factory.py +0 -0
- {traigent-0.18.1.dev5 → traigent-0.18.1.dev7}/traigent/core/types.py +0 -0
- {traigent-0.18.1.dev5 → traigent-0.18.1.dev7}/traigent/core/types_ext.py +0 -0
- {traigent-0.18.1.dev5 → traigent-0.18.1.dev7}/traigent/core/utils.py +0 -0
- {traigent-0.18.1.dev5 → traigent-0.18.1.dev7}/traigent/core/workflow_trace_manager.py +0 -0
- {traigent-0.18.1.dev5 → traigent-0.18.1.dev7}/traigent/core_metrics/__init__.py +0 -0
- {traigent-0.18.1.dev5 → traigent-0.18.1.dev7}/traigent/core_metrics/client.py +0 -0
- {traigent-0.18.1.dev5 → traigent-0.18.1.dev7}/traigent/core_metrics/config.py +0 -0
- {traigent-0.18.1.dev5 → traigent-0.18.1.dev7}/traigent/core_metrics/dtos.py +0 -0
- {traigent-0.18.1.dev5 → traigent-0.18.1.dev7}/traigent/defaults.py +0 -0
- {traigent-0.18.1.dev5 → traigent-0.18.1.dev7}/traigent/effectuation/__init__.py +0 -0
- {traigent-0.18.1.dev5 → traigent-0.18.1.dev7}/traigent/effectuation/contracts.py +0 -0
- {traigent-0.18.1.dev5 → traigent-0.18.1.dev7}/traigent/effectuation/strategies/__init__.py +0 -0
- {traigent-0.18.1.dev5 → traigent-0.18.1.dev7}/traigent/effectuation/strategies/framework_param.py +0 -0
- {traigent-0.18.1.dev5 → traigent-0.18.1.dev7}/traigent/effectuation/strategies/self_consistency.py +0 -0
- {traigent-0.18.1.dev5 → traigent-0.18.1.dev7}/traigent/evaluation/__init__.py +0 -0
- {traigent-0.18.1.dev5 → traigent-0.18.1.dev7}/traigent/evaluation/client.py +0 -0
- {traigent-0.18.1.dev5 → traigent-0.18.1.dev7}/traigent/evaluation/config.py +0 -0
- {traigent-0.18.1.dev5 → traigent-0.18.1.dev7}/traigent/evaluation/dtos.py +0 -0
- {traigent-0.18.1.dev5 → traigent-0.18.1.dev7}/traigent/evaluators/__init__.py +0 -0
- {traigent-0.18.1.dev5 → traigent-0.18.1.dev7}/traigent/evaluators/catalog/metric_eval_catalog.v1.json +0 -0
- {traigent-0.18.1.dev5 → traigent-0.18.1.dev7}/traigent/evaluators/catalog/schemas/metric_eval_catalog_entry_schema.json +0 -0
- {traigent-0.18.1.dev5 → traigent-0.18.1.dev7}/traigent/evaluators/catalog_loader.py +0 -0
- {traigent-0.18.1.dev5 → traigent-0.18.1.dev7}/traigent/evaluators/dataset_registry.py +0 -0
- {traigent-0.18.1.dev5 → traigent-0.18.1.dev7}/traigent/evaluators/hybrid_api.py +0 -0
- {traigent-0.18.1.dev5 → traigent-0.18.1.dev7}/traigent/evaluators/local.py +0 -0
- {traigent-0.18.1.dev5 → traigent-0.18.1.dev7}/traigent/evaluators/metrics.py +0 -0
- {traigent-0.18.1.dev5 → traigent-0.18.1.dev7}/traigent/evaluators/metrics_tracker.py +0 -0
- {traigent-0.18.1.dev5 → traigent-0.18.1.dev7}/traigent/evaluators/recommendations.py +0 -0
- {traigent-0.18.1.dev5 → traigent-0.18.1.dev7}/traigent/examples/__init__.py +0 -0
- {traigent-0.18.1.dev5 → traigent-0.18.1.dev7}/traigent/examples/providers/__init__.py +0 -0
- {traigent-0.18.1.dev5 → traigent-0.18.1.dev7}/traigent/examples/providers/_bootstrap.py +0 -0
- {traigent-0.18.1.dev5 → traigent-0.18.1.dev7}/traigent/examples/providers/_demo.py +0 -0
- {traigent-0.18.1.dev5 → traigent-0.18.1.dev7}/traigent/examples/providers/anthropic.py +0 -0
- {traigent-0.18.1.dev5 → traigent-0.18.1.dev7}/traigent/examples/providers/aws.py +0 -0
- {traigent-0.18.1.dev5 → traigent-0.18.1.dev7}/traigent/examples/providers/azure.py +0 -0
- {traigent-0.18.1.dev5 → traigent-0.18.1.dev7}/traigent/examples/providers/gcp.py +0 -0
- {traigent-0.18.1.dev5 → traigent-0.18.1.dev7}/traigent/examples/providers/gemini.py +0 -0
- {traigent-0.18.1.dev5 → traigent-0.18.1.dev7}/traigent/examples/providers/groq.py +0 -0
- {traigent-0.18.1.dev5 → traigent-0.18.1.dev7}/traigent/examples/providers/litellm_any.py +0 -0
- {traigent-0.18.1.dev5 → traigent-0.18.1.dev7}/traigent/examples/providers/manifest.json +0 -0
- {traigent-0.18.1.dev5 → traigent-0.18.1.dev7}/traigent/examples/providers/openai.py +0 -0
- {traigent-0.18.1.dev5 → traigent-0.18.1.dev7}/traigent/examples/providers/openrouter.py +0 -0
- {traigent-0.18.1.dev5 → traigent-0.18.1.dev7}/traigent/examples/providers/qa_samples.jsonl +0 -0
- {traigent-0.18.1.dev5 → traigent-0.18.1.dev7}/traigent/examples/quickstart/__init__.py +0 -0
- {traigent-0.18.1.dev5 → traigent-0.18.1.dev7}/traigent/examples/quickstart/__main__.py +0 -0
- {traigent-0.18.1.dev5 → traigent-0.18.1.dev7}/traigent/examples/quickstart/_env.py +0 -0
- {traigent-0.18.1.dev5 → traigent-0.18.1.dev7}/traigent/examples/quickstart/publish_and_verify.py +0 -0
- {traigent-0.18.1.dev5 → traigent-0.18.1.dev7}/traigent/examples/quickstart/qa_samples.jsonl +0 -0
- {traigent-0.18.1.dev5 → traigent-0.18.1.dev7}/traigent/examples/tutorial_bootstrap.py +0 -0
- {traigent-0.18.1.dev5 → traigent-0.18.1.dev7}/traigent/generation/__init__.py +0 -0
- {traigent-0.18.1.dev5 → traigent-0.18.1.dev7}/traigent/generation/backend_provider.py +0 -0
- {traigent-0.18.1.dev5 → traigent-0.18.1.dev7}/traigent/generation/example_synth.py +0 -0
- {traigent-0.18.1.dev5 → traigent-0.18.1.dev7}/traigent/generation/llm_provider.py +0 -0
- {traigent-0.18.1.dev5 → traigent-0.18.1.dev7}/traigent/generation/loop.py +0 -0
- {traigent-0.18.1.dev5 → traigent-0.18.1.dev7}/traigent/generation/models.py +0 -0
- {traigent-0.18.1.dev5 → traigent-0.18.1.dev7}/traigent/generation/options.py +0 -0
- {traigent-0.18.1.dev5 → traigent-0.18.1.dev7}/traigent/generation/prompt_rewriter.py +0 -0
- {traigent-0.18.1.dev5 → traigent-0.18.1.dev7}/traigent/generation/skill_train/__init__.py +0 -0
- {traigent-0.18.1.dev5 → traigent-0.18.1.dev7}/traigent/generation/skill_train/artifacts.py +0 -0
- {traigent-0.18.1.dev5 → traigent-0.18.1.dev7}/traigent/generation/skill_train/buffer.py +0 -0
- {traigent-0.18.1.dev5 → traigent-0.18.1.dev7}/traigent/generation/skill_train/document.py +0 -0
- {traigent-0.18.1.dev5 → traigent-0.18.1.dev7}/traigent/generation/skill_train/edits.py +0 -0
- {traigent-0.18.1.dev5 → traigent-0.18.1.dev7}/traigent/generation/skill_train/prompts.py +0 -0
- {traigent-0.18.1.dev5 → traigent-0.18.1.dev7}/traigent/generation/skill_train/reflection.py +0 -0
- {traigent-0.18.1.dev5 → traigent-0.18.1.dev7}/traigent/generation/skill_train/schedule.py +0 -0
- {traigent-0.18.1.dev5 → traigent-0.18.1.dev7}/traigent/generation/skill_train/slow_update.py +0 -0
- {traigent-0.18.1.dev5 → traigent-0.18.1.dev7}/traigent/generation/skill_train/splits.py +0 -0
- {traigent-0.18.1.dev5 → traigent-0.18.1.dev7}/traigent/generation/skill_train/trainer.py +0 -0
- {traigent-0.18.1.dev5 → traigent-0.18.1.dev7}/traigent/generation/skill_train/trainer_result.py +0 -0
- {traigent-0.18.1.dev5 → traigent-0.18.1.dev7}/traigent/generation/validators.py +0 -0
- {traigent-0.18.1.dev5 → traigent-0.18.1.dev7}/traigent/guaranteed_modes.py +0 -0
- {traigent-0.18.1.dev5 → traigent-0.18.1.dev7}/traigent/hooks/__init__.py +0 -0
- {traigent-0.18.1.dev5 → traigent-0.18.1.dev7}/traigent/hooks/config.py +0 -0
- {traigent-0.18.1.dev5 → traigent-0.18.1.dev7}/traigent/hooks/installer.py +0 -0
- {traigent-0.18.1.dev5 → traigent-0.18.1.dev7}/traigent/hooks/validator.py +0 -0
- {traigent-0.18.1.dev5 → traigent-0.18.1.dev7}/traigent/hybrid/__init__.py +0 -0
- {traigent-0.18.1.dev5 → traigent-0.18.1.dev7}/traigent/hybrid/discovery.py +0 -0
- {traigent-0.18.1.dev5 → traigent-0.18.1.dev7}/traigent/hybrid/http_transport.py +0 -0
- {traigent-0.18.1.dev5 → traigent-0.18.1.dev7}/traigent/hybrid/lifecycle.py +0 -0
- {traigent-0.18.1.dev5 → traigent-0.18.1.dev7}/traigent/hybrid/mcp_transport.py +0 -0
- {traigent-0.18.1.dev5 → traigent-0.18.1.dev7}/traigent/hybrid/protocol.py +0 -0
- {traigent-0.18.1.dev5 → traigent-0.18.1.dev7}/traigent/hybrid/transport.py +0 -0
- {traigent-0.18.1.dev5 → traigent-0.18.1.dev7}/traigent/integrations/__init__.py +0 -0
- {traigent-0.18.1.dev5 → traigent-0.18.1.dev7}/traigent/integrations/activation.py +0 -0
- {traigent-0.18.1.dev5 → traigent-0.18.1.dev7}/traigent/integrations/base.py +0 -0
- {traigent-0.18.1.dev5 → traigent-0.18.1.dev7}/traigent/integrations/base_plugin.py +0 -0
- {traigent-0.18.1.dev5 → traigent-0.18.1.dev7}/traigent/integrations/bedrock_client.py +0 -0
- {traigent-0.18.1.dev5 → traigent-0.18.1.dev7}/traigent/integrations/config.py +0 -0
- {traigent-0.18.1.dev5 → traigent-0.18.1.dev7}/traigent/integrations/dspy_adapter.py +0 -0
- {traigent-0.18.1.dev5 → traigent-0.18.1.dev7}/traigent/integrations/framework_override.py +0 -0
- {traigent-0.18.1.dev5 → traigent-0.18.1.dev7}/traigent/integrations/langchain/__init__.py +0 -0
- {traigent-0.18.1.dev5 → traigent-0.18.1.dev7}/traigent/integrations/langchain/handler.py +0 -0
- {traigent-0.18.1.dev5 → traigent-0.18.1.dev7}/traigent/integrations/langfuse/__init__.py +0 -0
- {traigent-0.18.1.dev5 → traigent-0.18.1.dev7}/traigent/integrations/langfuse/callback.py +0 -0
- {traigent-0.18.1.dev5 → traigent-0.18.1.dev7}/traigent/integrations/langfuse/client.py +0 -0
- {traigent-0.18.1.dev5 → traigent-0.18.1.dev7}/traigent/integrations/langfuse/tracker.py +0 -0
- {traigent-0.18.1.dev5 → traigent-0.18.1.dev7}/traigent/integrations/llms/__init__.py +0 -0
- {traigent-0.18.1.dev5 → traigent-0.18.1.dev7}/traigent/integrations/llms/anthropic_plugin.py +0 -0
- {traigent-0.18.1.dev5 → traigent-0.18.1.dev7}/traigent/integrations/llms/azure_openai_plugin.py +0 -0
- {traigent-0.18.1.dev5 → traigent-0.18.1.dev7}/traigent/integrations/llms/base_llm_plugin.py +0 -0
- {traigent-0.18.1.dev5 → traigent-0.18.1.dev7}/traigent/integrations/llms/bedrock_plugin.py +0 -0
- {traigent-0.18.1.dev5 → traigent-0.18.1.dev7}/traigent/integrations/llms/cohere_plugin.py +0 -0
- {traigent-0.18.1.dev5 → traigent-0.18.1.dev7}/traigent/integrations/llms/gemini_plugin.py +0 -0
- {traigent-0.18.1.dev5 → traigent-0.18.1.dev7}/traigent/integrations/llms/huggingface_plugin.py +0 -0
- {traigent-0.18.1.dev5 → traigent-0.18.1.dev7}/traigent/integrations/llms/langchain/__init__.py +0 -0
- {traigent-0.18.1.dev5 → traigent-0.18.1.dev7}/traigent/integrations/llms/langchain/base.py +0 -0
- {traigent-0.18.1.dev5 → traigent-0.18.1.dev7}/traigent/integrations/llms/langchain_plugin.py +0 -0
- {traigent-0.18.1.dev5 → traigent-0.18.1.dev7}/traigent/integrations/llms/litellm_plugin.py +0 -0
- {traigent-0.18.1.dev5 → traigent-0.18.1.dev7}/traigent/integrations/llms/llamaindex_plugin.py +0 -0
- {traigent-0.18.1.dev5 → traigent-0.18.1.dev7}/traigent/integrations/llms/mistral_plugin.py +0 -0
- {traigent-0.18.1.dev5 → traigent-0.18.1.dev7}/traigent/integrations/llms/openai.py +0 -0
- {traigent-0.18.1.dev5 → traigent-0.18.1.dev7}/traigent/integrations/llms/openai_plugin.py +0 -0
- {traigent-0.18.1.dev5 → traigent-0.18.1.dev7}/traigent/integrations/mappings.py +0 -0
- {traigent-0.18.1.dev5 → traigent-0.18.1.dev7}/traigent/integrations/model_discovery/__init__.py +0 -0
- {traigent-0.18.1.dev5 → traigent-0.18.1.dev7}/traigent/integrations/model_discovery/anthropic_discovery.py +0 -0
- {traigent-0.18.1.dev5 → traigent-0.18.1.dev7}/traigent/integrations/model_discovery/azure_discovery.py +0 -0
- {traigent-0.18.1.dev5 → traigent-0.18.1.dev7}/traigent/integrations/model_discovery/base.py +0 -0
- {traigent-0.18.1.dev5 → traigent-0.18.1.dev7}/traigent/integrations/model_discovery/cache.py +0 -0
- {traigent-0.18.1.dev5 → traigent-0.18.1.dev7}/traigent/integrations/model_discovery/gemini_discovery.py +0 -0
- {traigent-0.18.1.dev5 → traigent-0.18.1.dev7}/traigent/integrations/model_discovery/mistral_discovery.py +0 -0
- {traigent-0.18.1.dev5 → traigent-0.18.1.dev7}/traigent/integrations/model_discovery/openai_discovery.py +0 -0
- {traigent-0.18.1.dev5 → traigent-0.18.1.dev7}/traigent/integrations/observability/__init__.py +0 -0
- {traigent-0.18.1.dev5 → traigent-0.18.1.dev7}/traigent/integrations/observability/mlflow.py +0 -0
- {traigent-0.18.1.dev5 → traigent-0.18.1.dev7}/traigent/integrations/observability/wandb.py +0 -0
- {traigent-0.18.1.dev5 → traigent-0.18.1.dev7}/traigent/integrations/observability/workflow_traces.py +0 -0
- {traigent-0.18.1.dev5 → traigent-0.18.1.dev7}/traigent/integrations/plugin_registry.py +0 -0
- {traigent-0.18.1.dev5 → traigent-0.18.1.dev7}/traigent/integrations/pydantic_ai/__init__.py +0 -0
- {traigent-0.18.1.dev5 → traigent-0.18.1.dev7}/traigent/integrations/pydantic_ai/_types.py +0 -0
- {traigent-0.18.1.dev5 → traigent-0.18.1.dev7}/traigent/integrations/pydantic_ai/handler.py +0 -0
- {traigent-0.18.1.dev5 → traigent-0.18.1.dev7}/traigent/integrations/pydantic_ai/plugin.py +0 -0
- {traigent-0.18.1.dev5 → traigent-0.18.1.dev7}/traigent/integrations/utils/__init__.py +0 -0
- {traigent-0.18.1.dev5 → traigent-0.18.1.dev7}/traigent/integrations/utils/discovery.py +0 -0
- {traigent-0.18.1.dev5 → traigent-0.18.1.dev7}/traigent/integrations/utils/message_coercion.py +0 -0
- {traigent-0.18.1.dev5 → traigent-0.18.1.dev7}/traigent/integrations/utils/mock_adapter.py +0 -0
- {traigent-0.18.1.dev5 → traigent-0.18.1.dev7}/traigent/integrations/utils/parameter_normalizer.py +0 -0
- {traigent-0.18.1.dev5 → traigent-0.18.1.dev7}/traigent/integrations/utils/response_wrapper.py +0 -0
- {traigent-0.18.1.dev5 → traigent-0.18.1.dev7}/traigent/integrations/utils/validation.py +0 -0
- {traigent-0.18.1.dev5 → traigent-0.18.1.dev7}/traigent/integrations/utils/version_compat.py +0 -0
- {traigent-0.18.1.dev5 → traigent-0.18.1.dev7}/traigent/integrations/vector_stores/__init__.py +0 -0
- {traigent-0.18.1.dev5 → traigent-0.18.1.dev7}/traigent/integrations/vector_stores/base.py +0 -0
- {traigent-0.18.1.dev5 → traigent-0.18.1.dev7}/traigent/integrations/vector_stores/chromadb_plugin.py +0 -0
- {traigent-0.18.1.dev5 → traigent-0.18.1.dev7}/traigent/integrations/vector_stores/pinecone_plugin.py +0 -0
- {traigent-0.18.1.dev5 → traigent-0.18.1.dev7}/traigent/integrations/vector_stores/weaviate_plugin.py +0 -0
- {traigent-0.18.1.dev5 → traigent-0.18.1.dev7}/traigent/integrations/wrappers.py +0 -0
- {traigent-0.18.1.dev5 → traigent-0.18.1.dev7}/traigent/invokers/__init__.py +0 -0
- {traigent-0.18.1.dev5 → traigent-0.18.1.dev7}/traigent/invokers/base.py +0 -0
- {traigent-0.18.1.dev5 → traigent-0.18.1.dev7}/traigent/invokers/batch.py +0 -0
- {traigent-0.18.1.dev5 → traigent-0.18.1.dev7}/traigent/invokers/local.py +0 -0
- {traigent-0.18.1.dev5 → traigent-0.18.1.dev7}/traigent/invokers/streaming.py +0 -0
- {traigent-0.18.1.dev5 → traigent-0.18.1.dev7}/traigent/knobs/__init__.py +0 -0
- {traigent-0.18.1.dev5 → traigent-0.18.1.dev7}/traigent/knobs/adapters.py +0 -0
- {traigent-0.18.1.dev5 → traigent-0.18.1.dev7}/traigent/knobs/bindings.py +0 -0
- {traigent-0.18.1.dev5 → traigent-0.18.1.dev7}/traigent/knobs/canonical.py +0 -0
- {traigent-0.18.1.dev5 → traigent-0.18.1.dev7}/traigent/knobs/cascade.py +0 -0
- {traigent-0.18.1.dev5 → traigent-0.18.1.dev7}/traigent/knobs/certificates.py +0 -0
- {traigent-0.18.1.dev5 → traigent-0.18.1.dev7}/traigent/knobs/composites.py +0 -0
- {traigent-0.18.1.dev5 → traigent-0.18.1.dev7}/traigent/knobs/kinds.py +0 -0
- {traigent-0.18.1.dev5 → traigent-0.18.1.dev7}/traigent/knobs/patterns.py +0 -0
- {traigent-0.18.1.dev5 → traigent-0.18.1.dev7}/traigent/knobs/resolution.py +0 -0
- {traigent-0.18.1.dev5 → traigent-0.18.1.dev7}/traigent/knobs/resolver.py +0 -0
- {traigent-0.18.1.dev5 → traigent-0.18.1.dev7}/traigent/knobs/runtime.py +0 -0
- {traigent-0.18.1.dev5 → traigent-0.18.1.dev7}/traigent/knobs/signals.py +0 -0
- {traigent-0.18.1.dev5 → traigent-0.18.1.dev7}/traigent/knobs/telemetry.py +0 -0
- {traigent-0.18.1.dev5 → traigent-0.18.1.dev7}/traigent/mcp/__init__.py +0 -0
- {traigent-0.18.1.dev5 → traigent-0.18.1.dev7}/traigent/mcp/server.py +0 -0
- {traigent-0.18.1.dev5 → traigent-0.18.1.dev7}/traigent/mcp/tools.py +0 -0
- {traigent-0.18.1.dev5 → traigent-0.18.1.dev7}/traigent/metrics/__init__.py +0 -0
- {traigent-0.18.1.dev5 → traigent-0.18.1.dev7}/traigent/metrics/agent_metrics.py +0 -0
- {traigent-0.18.1.dev5 → traigent-0.18.1.dev7}/traigent/metrics/content_features.py +0 -0
- {traigent-0.18.1.dev5 → traigent-0.18.1.dev7}/traigent/metrics/deepeval_metrics.py +0 -0
- {traigent-0.18.1.dev5 → traigent-0.18.1.dev7}/traigent/metrics/ragas_metrics.py +0 -0
- {traigent-0.18.1.dev5 → traigent-0.18.1.dev7}/traigent/metrics/registry.py +0 -0
- {traigent-0.18.1.dev5 → traigent-0.18.1.dev7}/traigent/observability/__init__.py +0 -0
- {traigent-0.18.1.dev5 → traigent-0.18.1.dev7}/traigent/observability/agent_spans.py +0 -0
- {traigent-0.18.1.dev5 → traigent-0.18.1.dev7}/traigent/observability/client.py +0 -0
- {traigent-0.18.1.dev5 → traigent-0.18.1.dev7}/traigent/observability/config.py +0 -0
- {traigent-0.18.1.dev5 → traigent-0.18.1.dev7}/traigent/observability/decorators.py +0 -0
- {traigent-0.18.1.dev5 → traigent-0.18.1.dev7}/traigent/observability/dtos.py +0 -0
- {traigent-0.18.1.dev5 → traigent-0.18.1.dev7}/traigent/optimizers/__init__.py +0 -0
- {traigent-0.18.1.dev5 → traigent-0.18.1.dev7}/traigent/optimizers/base.py +0 -0
- {traigent-0.18.1.dev5 → traigent-0.18.1.dev7}/traigent/optimizers/batch_optimizers.py +0 -0
- {traigent-0.18.1.dev5 → traigent-0.18.1.dev7}/traigent/optimizers/cloud_optimizer.py +0 -0
- {traigent-0.18.1.dev5 → traigent-0.18.1.dev7}/traigent/optimizers/grid.py +0 -0
- {traigent-0.18.1.dev5 → traigent-0.18.1.dev7}/traigent/optimizers/interactive_optimizer.py +0 -0
- {traigent-0.18.1.dev5 → traigent-0.18.1.dev7}/traigent/optimizers/random.py +0 -0
- {traigent-0.18.1.dev5 → traigent-0.18.1.dev7}/traigent/optimizers/registry.py +0 -0
- {traigent-0.18.1.dev5 → traigent-0.18.1.dev7}/traigent/optimizers/remote.py +0 -0
- {traigent-0.18.1.dev5 → traigent-0.18.1.dev7}/traigent/optimizers/remote_services.py +0 -0
- {traigent-0.18.1.dev5 → traigent-0.18.1.dev7}/traigent/optimizers/results.py +0 -0
- {traigent-0.18.1.dev5 → traigent-0.18.1.dev7}/traigent/playbook/__init__.py +0 -0
- {traigent-0.18.1.dev5 → traigent-0.18.1.dev7}/traigent/playbook/loader.py +0 -0
- {traigent-0.18.1.dev5 → traigent-0.18.1.dev7}/traigent/playbook/model.py +0 -0
- {traigent-0.18.1.dev5 → traigent-0.18.1.dev7}/traigent/playbook/scaffold.py +0 -0
- {traigent-0.18.1.dev5 → traigent-0.18.1.dev7}/traigent/playbook/schemas/agent_playbook_schema.json +0 -0
- {traigent-0.18.1.dev5 → traigent-0.18.1.dev7}/traigent/playbook/staleness.py +0 -0
- {traigent-0.18.1.dev5 → traigent-0.18.1.dev7}/traigent/playbook/validator.py +0 -0
- {traigent-0.18.1.dev5 → traigent-0.18.1.dev7}/traigent/plugins/__init__.py +0 -0
- {traigent-0.18.1.dev5 → traigent-0.18.1.dev7}/traigent/plugins/registry.py +0 -0
- {traigent-0.18.1.dev5 → traigent-0.18.1.dev7}/traigent/projects/__init__.py +0 -0
- {traigent-0.18.1.dev5 → traigent-0.18.1.dev7}/traigent/projects/client.py +0 -0
- {traigent-0.18.1.dev5 → traigent-0.18.1.dev7}/traigent/projects/config.py +0 -0
- {traigent-0.18.1.dev5 → traigent-0.18.1.dev7}/traigent/projects/dtos.py +0 -0
- {traigent-0.18.1.dev5 → traigent-0.18.1.dev7}/traigent/prompts/__init__.py +0 -0
- {traigent-0.18.1.dev5 → traigent-0.18.1.dev7}/traigent/prompts/client.py +0 -0
- {traigent-0.18.1.dev5 → traigent-0.18.1.dev7}/traigent/prompts/config.py +0 -0
- {traigent-0.18.1.dev5 → traigent-0.18.1.dev7}/traigent/prompts/dtos.py +0 -0
- {traigent-0.18.1.dev5 → traigent-0.18.1.dev7}/traigent/providers/__init__.py +0 -0
- {traigent-0.18.1.dev5 → traigent-0.18.1.dev7}/traigent/py.typed +0 -0
- {traigent-0.18.1.dev5 → traigent-0.18.1.dev7}/traigent/reporting/__init__.py +0 -0
- {traigent-0.18.1.dev5 → traigent-0.18.1.dev7}/traigent/reporting/example_map.py +0 -0
- {traigent-0.18.1.dev5 → traigent-0.18.1.dev7}/traigent/security/__init__.py +0 -0
- {traigent-0.18.1.dev5 → traigent-0.18.1.dev7}/traigent/security/audit.py +0 -0
- {traigent-0.18.1.dev5 → traigent-0.18.1.dev7}/traigent/security/auth/__init__.py +0 -0
- {traigent-0.18.1.dev5 → traigent-0.18.1.dev7}/traigent/security/auth/helpers.py +0 -0
- {traigent-0.18.1.dev5 → traigent-0.18.1.dev7}/traigent/security/auth/mfa.py +0 -0
- {traigent-0.18.1.dev5 → traigent-0.18.1.dev7}/traigent/security/auth/models.py +0 -0
- {traigent-0.18.1.dev5 → traigent-0.18.1.dev7}/traigent/security/auth/oidc.py +0 -0
- {traigent-0.18.1.dev5 → traigent-0.18.1.dev7}/traigent/security/auth/saml.py +0 -0
- {traigent-0.18.1.dev5 → traigent-0.18.1.dev7}/traigent/security/auth/sms.py +0 -0
- {traigent-0.18.1.dev5 → traigent-0.18.1.dev7}/traigent/security/auth/totp.py +0 -0
- {traigent-0.18.1.dev5 → traigent-0.18.1.dev7}/traigent/security/config.py +0 -0
- {traigent-0.18.1.dev5 → traigent-0.18.1.dev7}/traigent/security/credentials.py +0 -0
- {traigent-0.18.1.dev5 → traigent-0.18.1.dev7}/traigent/security/crypto_utils.py +0 -0
- {traigent-0.18.1.dev5 → traigent-0.18.1.dev7}/traigent/security/deployment.py +0 -0
- {traigent-0.18.1.dev5 → traigent-0.18.1.dev7}/traigent/security/encryption.py +0 -0
- {traigent-0.18.1.dev5 → traigent-0.18.1.dev7}/traigent/security/enterprise.py +0 -0
- {traigent-0.18.1.dev5 → traigent-0.18.1.dev7}/traigent/security/headers.py +0 -0
- {traigent-0.18.1.dev5 → traigent-0.18.1.dev7}/traigent/security/input_validation.py +0 -0
- {traigent-0.18.1.dev5 → traigent-0.18.1.dev7}/traigent/security/jwt_validator.py +0 -0
- {traigent-0.18.1.dev5 → traigent-0.18.1.dev7}/traigent/security/rate_limiter.py +0 -0
- {traigent-0.18.1.dev5 → traigent-0.18.1.dev7}/traigent/security/redaction.py +0 -0
- {traigent-0.18.1.dev5 → traigent-0.18.1.dev7}/traigent/security/session_manager.py +0 -0
- {traigent-0.18.1.dev5 → traigent-0.18.1.dev7}/traigent/security/tenant.py +0 -0
- {traigent-0.18.1.dev5 → traigent-0.18.1.dev7}/traigent/skills/traigent-analyze-results/SKILL.md +0 -0
- {traigent-0.18.1.dev5 → traigent-0.18.1.dev7}/traigent/skills/traigent-analyze-results/references/convergence-patterns.md +0 -0
- {traigent-0.18.1.dev5 → traigent-0.18.1.dev7}/traigent/skills/traigent-analyze-results/references/optimization-result-api.md +0 -0
- {traigent-0.18.1.dev5 → traigent-0.18.1.dev7}/traigent/skills/traigent-configuration-space/SKILL.md +0 -0
- {traigent-0.18.1.dev5 → traigent-0.18.1.dev7}/traigent/skills/traigent-configuration-space/references/constraints.md +0 -0
- {traigent-0.18.1.dev5 → traigent-0.18.1.dev7}/traigent/skills/traigent-configuration-space/references/parameter-types.md +0 -0
- {traigent-0.18.1.dev5 → traigent-0.18.1.dev7}/traigent/skills/traigent-debugging/SKILL.md +0 -0
- {traigent-0.18.1.dev5 → traigent-0.18.1.dev7}/traigent/skills/traigent-debugging/references/error-reference.md +0 -0
- {traigent-0.18.1.dev5 → traigent-0.18.1.dev7}/traigent/skills/traigent-debugging/references/logging-config.md +0 -0
- {traigent-0.18.1.dev5 → traigent-0.18.1.dev7}/traigent/skills/traigent-debugging/references/mock-mode.md +0 -0
- {traigent-0.18.1.dev5 → traigent-0.18.1.dev7}/traigent/skills/traigent-decorator-setup/SKILL.md +0 -0
- {traigent-0.18.1.dev5 → traigent-0.18.1.dev7}/traigent/skills/traigent-decorator-setup/references/evaluation-options.md +0 -0
- {traigent-0.18.1.dev5 → traigent-0.18.1.dev7}/traigent/skills/traigent-decorator-setup/references/execution-modes.md +0 -0
- {traigent-0.18.1.dev5 → traigent-0.18.1.dev7}/traigent/skills/traigent-decorator-setup/references/injection-modes.md +0 -0
- {traigent-0.18.1.dev5 → traigent-0.18.1.dev7}/traigent/skills/traigent-integrations/SKILL.md +0 -0
- {traigent-0.18.1.dev5 → traigent-0.18.1.dev7}/traigent/skills/traigent-integrations/references/dspy.md +0 -0
- {traigent-0.18.1.dev5 → traigent-0.18.1.dev7}/traigent/skills/traigent-integrations/references/langchain.md +0 -0
- {traigent-0.18.1.dev5 → traigent-0.18.1.dev7}/traigent/skills/traigent-integrations/references/litellm.md +0 -0
- {traigent-0.18.1.dev5 → traigent-0.18.1.dev7}/traigent/skills/traigent-quickstart/SKILL.md +0 -0
- {traigent-0.18.1.dev5 → traigent-0.18.1.dev7}/traigent/skills/traigent-quickstart/references/environment-variables.md +0 -0
- {traigent-0.18.1.dev5 → traigent-0.18.1.dev7}/traigent/skills/traigent-quickstart/references/installation-extras.md +0 -0
- {traigent-0.18.1.dev5 → traigent-0.18.1.dev7}/traigent/skills/traigent-run-optimization/SKILL.md +0 -0
- {traigent-0.18.1.dev5 → traigent-0.18.1.dev7}/traigent/skills/traigent-run-optimization/references/algorithms.md +0 -0
- {traigent-0.18.1.dev5 → traigent-0.18.1.dev7}/traigent/skills/traigent-run-optimization/references/cost-management.md +0 -0
- {traigent-0.18.1.dev5 → traigent-0.18.1.dev7}/traigent/skills/traigent-run-optimization/references/parallel-config.md +0 -0
- {traigent-0.18.1.dev5 → traigent-0.18.1.dev7}/traigent/storage/__init__.py +0 -0
- {traigent-0.18.1.dev5 → traigent-0.18.1.dev7}/traigent/storage/local_storage.py +0 -0
- {traigent-0.18.1.dev5 → traigent-0.18.1.dev7}/traigent/testing/__init__.py +0 -0
- {traigent-0.18.1.dev5 → traigent-0.18.1.dev7}/traigent/traigent_client.py +0 -0
- {traigent-0.18.1.dev5 → traigent-0.18.1.dev7}/traigent/traigent_integration.py +0 -0
- {traigent-0.18.1.dev5 → traigent-0.18.1.dev7}/traigent/tuned_variables/__init__.py +0 -0
- {traigent-0.18.1.dev5 → traigent-0.18.1.dev7}/traigent/tuned_variables/dataflow_strategy.py +0 -0
- {traigent-0.18.1.dev5 → traigent-0.18.1.dev7}/traigent/tuned_variables/detection_strategies.py +0 -0
- {traigent-0.18.1.dev5 → traigent-0.18.1.dev7}/traigent/tuned_variables/detection_types.py +0 -0
- {traigent-0.18.1.dev5 → traigent-0.18.1.dev7}/traigent/tuned_variables/detector.py +0 -0
- {traigent-0.18.1.dev5 → traigent-0.18.1.dev7}/traigent/tuned_variables/discovery.py +0 -0
- {traigent-0.18.1.dev5 → traigent-0.18.1.dev7}/traigent/tuned_variables/observation.py +0 -0
- {traigent-0.18.1.dev5 → traigent-0.18.1.dev7}/traigent/tuned_variables/py.typed +0 -0
- {traigent-0.18.1.dev5 → traigent-0.18.1.dev7}/traigent/tvl/__init__.py +0 -0
- {traigent-0.18.1.dev5 → traigent-0.18.1.dev7}/traigent/tvl/__main__.py +0 -0
- {traigent-0.18.1.dev5 → traigent-0.18.1.dev7}/traigent/tvl/models.py +0 -0
- {traigent-0.18.1.dev5 → traigent-0.18.1.dev7}/traigent/tvl/objectives.py +0 -0
- {traigent-0.18.1.dev5 → traigent-0.18.1.dev7}/traigent/tvl/options.py +0 -0
- {traigent-0.18.1.dev5 → traigent-0.18.1.dev7}/traigent/tvl/promotion_gate.py +0 -0
- {traigent-0.18.1.dev5 → traigent-0.18.1.dev7}/traigent/tvl/registry.py +0 -0
- {traigent-0.18.1.dev5 → traigent-0.18.1.dev7}/traigent/tvl/spec_loader.py +0 -0
- {traigent-0.18.1.dev5 → traigent-0.18.1.dev7}/traigent/tvl/spec_validator.py +0 -0
- {traigent-0.18.1.dev5 → traigent-0.18.1.dev7}/traigent/tvl/statistics.py +0 -0
- {traigent-0.18.1.dev5 → traigent-0.18.1.dev7}/traigent/utils/__init__.py +0 -0
- {traigent-0.18.1.dev5 → traigent-0.18.1.dev7}/traigent/utils/artifact_fingerprints.py +0 -0
- {traigent-0.18.1.dev5 → traigent-0.18.1.dev7}/traigent/utils/batch_optimizer_utils.py +0 -0
- {traigent-0.18.1.dev5 → traigent-0.18.1.dev7}/traigent/utils/batch_processing.py +0 -0
- {traigent-0.18.1.dev5 → traigent-0.18.1.dev7}/traigent/utils/callbacks.py +0 -0
- {traigent-0.18.1.dev5 → traigent-0.18.1.dev7}/traigent/utils/console.py +0 -0
- {traigent-0.18.1.dev5 → traigent-0.18.1.dev7}/traigent/utils/constraints.py +0 -0
- {traigent-0.18.1.dev5 → traigent-0.18.1.dev7}/traigent/utils/cost_calculator.py +0 -0
- {traigent-0.18.1.dev5 → traigent-0.18.1.dev7}/traigent/utils/diagnostics.py +0 -0
- {traigent-0.18.1.dev5 → traigent-0.18.1.dev7}/traigent/utils/discrete_domains.py +0 -0
- {traigent-0.18.1.dev5 → traigent-0.18.1.dev7}/traigent/utils/error_handler.py +0 -0
- {traigent-0.18.1.dev5 → traigent-0.18.1.dev7}/traigent/utils/example_id.py +0 -0
- {traigent-0.18.1.dev5 → traigent-0.18.1.dev7}/traigent/utils/exceptions.py +0 -0
- {traigent-0.18.1.dev5 → traigent-0.18.1.dev7}/traigent/utils/file_versioning.py +0 -0
- {traigent-0.18.1.dev5 → traigent-0.18.1.dev7}/traigent/utils/function_identity.py +0 -0
- {traigent-0.18.1.dev5 → traigent-0.18.1.dev7}/traigent/utils/hashing.py +0 -0
- {traigent-0.18.1.dev5 → traigent-0.18.1.dev7}/traigent/utils/importance.py +0 -0
- {traigent-0.18.1.dev5 → traigent-0.18.1.dev7}/traigent/utils/incentives.py +0 -0
- {traigent-0.18.1.dev5 → traigent-0.18.1.dev7}/traigent/utils/insights.py +0 -0
- {traigent-0.18.1.dev5 → traigent-0.18.1.dev7}/traigent/utils/langchain_interceptor.py +0 -0
- {traigent-0.18.1.dev5 → traigent-0.18.1.dev7}/traigent/utils/litellm_interceptor.py +0 -0
- {traigent-0.18.1.dev5 → traigent-0.18.1.dev7}/traigent/utils/llm_response_parsing.py +0 -0
- {traigent-0.18.1.dev5 → traigent-0.18.1.dev7}/traigent/utils/local_analytics.py +0 -0
- {traigent-0.18.1.dev5 → traigent-0.18.1.dev7}/traigent/utils/logging.py +0 -0
- {traigent-0.18.1.dev5 → traigent-0.18.1.dev7}/traigent/utils/multi_objective.py +0 -0
- {traigent-0.18.1.dev5 → traigent-0.18.1.dev7}/traigent/utils/numpy_compat.py +0 -0
- {traigent-0.18.1.dev5 → traigent-0.18.1.dev7}/traigent/utils/objectives.py +0 -0
- {traigent-0.18.1.dev5 → traigent-0.18.1.dev7}/traigent/utils/optimization_analyzer.py +0 -0
- {traigent-0.18.1.dev5 → traigent-0.18.1.dev7}/traigent/utils/optimization_logger.py +0 -0
- {traigent-0.18.1.dev5 → traigent-0.18.1.dev7}/traigent/utils/pagination.py +0 -0
- {traigent-0.18.1.dev5 → traigent-0.18.1.dev7}/traigent/utils/persistence.py +0 -0
- {traigent-0.18.1.dev5 → traigent-0.18.1.dev7}/traigent/utils/results_table.py +0 -0
- {traigent-0.18.1.dev5 → traigent-0.18.1.dev7}/traigent/utils/retry.py +0 -0
- {traigent-0.18.1.dev5 → traigent-0.18.1.dev7}/traigent/utils/secure_path.py +0 -0
- {traigent-0.18.1.dev5 → traigent-0.18.1.dev7}/traigent/utils/url_security.py +0 -0
- {traigent-0.18.1.dev5 → traigent-0.18.1.dev7}/traigent/utils/validation.py +0 -0
- {traigent-0.18.1.dev5 → traigent-0.18.1.dev7}/traigent/visualization/__init__.py +0 -0
- {traigent-0.18.1.dev5 → traigent-0.18.1.dev7}/traigent/visualization/plots.py +0 -0
- {traigent-0.18.1.dev5 → traigent-0.18.1.dev7}/traigent/wrapper/__init__.py +0 -0
- {traigent-0.18.1.dev5 → traigent-0.18.1.dev7}/traigent/wrapper/errors.py +0 -0
- {traigent-0.18.1.dev5 → traigent-0.18.1.dev7}/traigent/wrapper/server.py +0 -0
- {traigent-0.18.1.dev5 → traigent-0.18.1.dev7}/traigent/wrapper/service.py +0 -0
- {traigent-0.18.1.dev5 → traigent-0.18.1.dev7}/traigent.egg-info/dependency_links.txt +0 -0
- {traigent-0.18.1.dev5 → traigent-0.18.1.dev7}/traigent.egg-info/entry_points.txt +0 -0
- {traigent-0.18.1.dev5 → traigent-0.18.1.dev7}/traigent.egg-info/requires.txt +0 -0
- {traigent-0.18.1.dev5 → traigent-0.18.1.dev7}/traigent.egg-info/top_level.txt +0 -0
- {traigent-0.18.1.dev5 → traigent-0.18.1.dev7}/traigent_validation/__init__.py +0 -0
- {traigent-0.18.1.dev5 → traigent-0.18.1.dev7}/traigent_validation/base.py +0 -0
- {traigent-0.18.1.dev5 → traigent-0.18.1.dev7}/traigent_validation/plugins.py +0 -0
- {traigent-0.18.1.dev5 → traigent-0.18.1.dev7}/traigent_validation/py.typed +0 -0
- {traigent-0.18.1.dev5 → traigent-0.18.1.dev7}/traigent_validation/validators.py +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: traigent
|
|
3
|
-
Version: 0.18.1.
|
|
3
|
+
Version: 0.18.1.dev7
|
|
4
4
|
Summary: Enterprise-grade LLM optimization platform with advanced analytics and AI-powered insights
|
|
5
5
|
Author-email: Traigent Team <opensource@traigent.ai>
|
|
6
6
|
License-Expression: AGPL-3.0-only OR LicenseRef-Traigent-Commercial
|
|
@@ -70,6 +70,10 @@ from traigent.api.strategy_presets import (
|
|
|
70
70
|
normalize_strategy_preset,
|
|
71
71
|
)
|
|
72
72
|
from traigent.api.types import AgentDefinition
|
|
73
|
+
from traigent.cloud.smart_pruning import SmartPruningOptions
|
|
74
|
+
from traigent.cloud.smart_pruning import (
|
|
75
|
+
normalize_smart_pruning_options as _normalize_smart_pruning_options,
|
|
76
|
+
)
|
|
73
77
|
from traigent.config.parallel import (
|
|
74
78
|
ParallelConfig,
|
|
75
79
|
coerce_parallel_config,
|
|
@@ -111,6 +115,7 @@ __all__ = [
|
|
|
111
115
|
"HybridAPIOptions",
|
|
112
116
|
"ExternalServiceEvaluator",
|
|
113
117
|
"ExecutionOptions",
|
|
118
|
+
"SmartPruningOptions",
|
|
114
119
|
"MockModeOptions",
|
|
115
120
|
"optimize",
|
|
116
121
|
]
|
|
@@ -215,6 +220,9 @@ class ExecutionOptions(BaseModel):
|
|
|
215
220
|
parallel_config: Configuration for parallel execution.
|
|
216
221
|
max_total_examples: Maximum total examples across all trials.
|
|
217
222
|
samples_include_pruned: Whether to include pruned trials in sample count.
|
|
223
|
+
smart_pruning: Optional cloud-side pruning profile. When configured on a
|
|
224
|
+
managed/cloud run, the SDK reports content-free per-example progress
|
|
225
|
+
to the backend and honors prune decisions.
|
|
218
226
|
reps_per_trial: Number of repetitions per configuration for statistical
|
|
219
227
|
stability. Only the default ``1`` (no repetition) is available in the
|
|
220
228
|
OSS SDK; passing any other value raises ``pydantic.ValidationError`` at
|
|
@@ -248,6 +256,7 @@ class ExecutionOptions(BaseModel):
|
|
|
248
256
|
parallel_config: ParallelConfig | dict[str, Any] | None = None
|
|
249
257
|
max_total_examples: int | None = None
|
|
250
258
|
samples_include_pruned: bool = True
|
|
259
|
+
smart_pruning: SmartPruningOptions | dict[str, Any] | None = None
|
|
251
260
|
reps_per_trial: int = 1
|
|
252
261
|
reps_aggregation: str = "mean"
|
|
253
262
|
|
|
@@ -295,7 +304,7 @@ class ExecutionOptions(BaseModel):
|
|
|
295
304
|
@field_validator("algorithm")
|
|
296
305
|
@classmethod
|
|
297
306
|
def _validate_algorithm(cls, v: str) -> str:
|
|
298
|
-
return validate_algorithm_name(v)
|
|
307
|
+
return cast(str, validate_algorithm_name(v))
|
|
299
308
|
|
|
300
309
|
@field_validator("offline")
|
|
301
310
|
@classmethod
|
|
@@ -556,6 +565,7 @@ _OPTIMIZE_DEFAULTS: dict[str, Any] = {
|
|
|
556
565
|
"parallel_config": None,
|
|
557
566
|
"max_total_examples": None,
|
|
558
567
|
"samples_include_pruned": True,
|
|
568
|
+
"smart_pruning": None,
|
|
559
569
|
"mock_mode_config": None,
|
|
560
570
|
"custom_evaluator": None,
|
|
561
571
|
"scoring_function": None,
|
|
@@ -1258,6 +1268,7 @@ class ResolvedExecutionOptions:
|
|
|
1258
1268
|
parallel_config: Any
|
|
1259
1269
|
max_total_examples: Any
|
|
1260
1270
|
samples_include_pruned: Any
|
|
1271
|
+
smart_pruning: Any
|
|
1261
1272
|
legacy_options: dict[str, Any] = field(default_factory=dict)
|
|
1262
1273
|
|
|
1263
1274
|
|
|
@@ -1352,6 +1363,12 @@ def _resolve_execution_bundle_options(
|
|
|
1352
1363
|
execution_bundle.samples_include_pruned,
|
|
1353
1364
|
defaults,
|
|
1354
1365
|
),
|
|
1366
|
+
smart_pruning=_resolve_option(
|
|
1367
|
+
"smart_pruning",
|
|
1368
|
+
base_options.smart_pruning,
|
|
1369
|
+
execution_bundle.smart_pruning,
|
|
1370
|
+
defaults,
|
|
1371
|
+
),
|
|
1355
1372
|
legacy_options=legacy_options,
|
|
1356
1373
|
)
|
|
1357
1374
|
|
|
@@ -1546,7 +1563,7 @@ def _runtime_algorithm_for_policy(
|
|
|
1546
1563
|
policy.intent is ExecutionIntent.LOCAL_ONLY or external_evaluator is not None
|
|
1547
1564
|
):
|
|
1548
1565
|
return "random"
|
|
1549
|
-
return policy.algorithm
|
|
1566
|
+
return cast(str, policy.algorithm)
|
|
1550
1567
|
|
|
1551
1568
|
|
|
1552
1569
|
def _runtime_execution_mode_for_policy(
|
|
@@ -2107,6 +2124,7 @@ def optimize( # NOSONAR(S107)
|
|
|
2107
2124
|
offline: bool = False,
|
|
2108
2125
|
strategy: str | None = None,
|
|
2109
2126
|
strategy_params: Mapping[str, Any] | None = None,
|
|
2127
|
+
smart_pruning: SmartPruningOptions | dict[str, Any] | None = None,
|
|
2110
2128
|
# Multi-agent configuration
|
|
2111
2129
|
agents: dict[str, AgentDefinition] | None = None,
|
|
2112
2130
|
agent_prefixes: list[str] | None = None,
|
|
@@ -2235,6 +2253,11 @@ def optimize( # NOSONAR(S107)
|
|
|
2235
2253
|
or dict). Preferred path for controlling concurrency.
|
|
2236
2254
|
max_total_examples: Global sample budget across all trials.
|
|
2237
2255
|
samples_include_pruned: Whether pruned trials count toward the sample budget.
|
|
2256
|
+
smart_pruning: Optional cloud smart-pruning profile. Accepts a dict or
|
|
2257
|
+
``SmartPruningOptions`` matching
|
|
2258
|
+
``optimization/smart_pruning_schema.json``. The SDK sends it on
|
|
2259
|
+
session creation and emits content-free intermediate reports only
|
|
2260
|
+
for managed/cloud runs.
|
|
2238
2261
|
|
|
2239
2262
|
Mock mode options:
|
|
2240
2263
|
mock: Grouped mock-mode preferences (MockModeOptions or dict).
|
|
@@ -2438,6 +2461,7 @@ def optimize( # NOSONAR(S107)
|
|
|
2438
2461
|
"mock": mock,
|
|
2439
2462
|
"algorithm": algorithm,
|
|
2440
2463
|
"offline": offline,
|
|
2464
|
+
"smart_pruning": smart_pruning,
|
|
2441
2465
|
"agents": agents,
|
|
2442
2466
|
"agent_prefixes": agent_prefixes,
|
|
2443
2467
|
"agent_measures": agent_measures,
|
|
@@ -2529,6 +2553,7 @@ def optimize( # NOSONAR(S107)
|
|
|
2529
2553
|
parallel_config = combined_settings["parallel_config"]
|
|
2530
2554
|
max_total_examples = combined_settings["max_total_examples"]
|
|
2531
2555
|
samples_include_pruned = combined_settings["samples_include_pruned"]
|
|
2556
|
+
smart_pruning_value = combined_settings["smart_pruning"]
|
|
2532
2557
|
mock_mode_config = combined_settings["mock_mode_config"]
|
|
2533
2558
|
custom_evaluator = combined_settings["custom_evaluator"]
|
|
2534
2559
|
scoring_function = combined_settings["scoring_function"]
|
|
@@ -2639,6 +2664,7 @@ def optimize( # NOSONAR(S107)
|
|
|
2639
2664
|
parallel_config=parallel_config,
|
|
2640
2665
|
max_total_examples=max_total_examples,
|
|
2641
2666
|
samples_include_pruned=samples_include_pruned,
|
|
2667
|
+
smart_pruning=smart_pruning_value,
|
|
2642
2668
|
legacy_options=legacy_execution_options,
|
|
2643
2669
|
)
|
|
2644
2670
|
resolved_execution = _resolve_execution_bundle_options(
|
|
@@ -2656,7 +2682,9 @@ def optimize( # NOSONAR(S107)
|
|
|
2656
2682
|
parallel_config = resolved_execution.parallel_config
|
|
2657
2683
|
max_total_examples = resolved_execution.max_total_examples
|
|
2658
2684
|
samples_include_pruned = resolved_execution.samples_include_pruned
|
|
2685
|
+
smart_pruning_value = resolved_execution.smart_pruning
|
|
2659
2686
|
legacy_execution_options = resolved_execution.legacy_options
|
|
2687
|
+
smart_pruning_config = _normalize_smart_pruning_options(smart_pruning_value)
|
|
2660
2688
|
external_service_evaluator = _resolve_external_service_evaluator(
|
|
2661
2689
|
evaluator_value,
|
|
2662
2690
|
legacy_execution_options,
|
|
@@ -2894,6 +2922,7 @@ def optimize( # NOSONAR(S107)
|
|
|
2894
2922
|
minimal_logging=minimal_logging,
|
|
2895
2923
|
max_total_examples=max_total_examples,
|
|
2896
2924
|
samples_include_pruned=samples_include_pruned,
|
|
2925
|
+
smart_pruning=smart_pruning_config,
|
|
2897
2926
|
parallel_config=combined_parallel_config,
|
|
2898
2927
|
mock_mode_config=mock_mode_config,
|
|
2899
2928
|
custom_evaluator=custom_evaluator,
|
|
@@ -30,6 +30,10 @@ from traigent.cloud.models import (
|
|
|
30
30
|
SessionCreationResponse,
|
|
31
31
|
TrialResultSubmission,
|
|
32
32
|
)
|
|
33
|
+
from traigent.cloud.smart_pruning import (
|
|
34
|
+
normalize_intermediate_report_payload,
|
|
35
|
+
normalize_smart_pruning_options,
|
|
36
|
+
)
|
|
33
37
|
from traigent.config.backend_config import BackendConfig
|
|
34
38
|
from traigent.core.session_types import (
|
|
35
39
|
SessionCreationFailureDetail,
|
|
@@ -661,6 +665,10 @@ class ApiOperations:
|
|
|
661
665
|
payload["tvl_governance"] = wire_governance
|
|
662
666
|
if getattr(session_request, "warm_start_from", None):
|
|
663
667
|
payload["warm_start_from"] = session_request.warm_start_from
|
|
668
|
+
smart_pruning = getattr(session_request, "smart_pruning", None)
|
|
669
|
+
wire_smart_pruning = normalize_smart_pruning_options(smart_pruning)
|
|
670
|
+
if wire_smart_pruning:
|
|
671
|
+
payload["smart_pruning"] = wire_smart_pruning
|
|
664
672
|
self._attach_artifact_fingerprint_payload(payload, session_request)
|
|
665
673
|
return payload
|
|
666
674
|
|
|
@@ -705,6 +713,10 @@ class ApiOperations:
|
|
|
705
713
|
# BE may not consume it yet; the SDK must still forward it.
|
|
706
714
|
if getattr(session_request, "warm_start_from", None):
|
|
707
715
|
payload["warm_start_from"] = session_request.warm_start_from
|
|
716
|
+
smart_pruning = getattr(session_request, "smart_pruning", None)
|
|
717
|
+
wire_smart_pruning = normalize_smart_pruning_options(smart_pruning)
|
|
718
|
+
if wire_smart_pruning:
|
|
719
|
+
payload["smart_pruning"] = wire_smart_pruning
|
|
708
720
|
self._attach_artifact_fingerprint_payload(payload, session_request)
|
|
709
721
|
return payload
|
|
710
722
|
|
|
@@ -797,6 +809,75 @@ class ApiOperations:
|
|
|
797
809
|
normalized = str(value).strip()
|
|
798
810
|
return normalized or None
|
|
799
811
|
|
|
812
|
+
async def report_intermediate_progress(
|
|
813
|
+
self, payload: dict[str, Any]
|
|
814
|
+
) -> dict[str, Any]:
|
|
815
|
+
"""Report per-trial intermediate progress for cloud smart pruning."""
|
|
816
|
+
wire_payload = normalize_intermediate_report_payload(payload)
|
|
817
|
+
session_id = str(wire_payload.get("session_id", "")).strip()
|
|
818
|
+
trial_id = str(wire_payload.get("trial_id", "")).strip()
|
|
819
|
+
if not session_id or not trial_id:
|
|
820
|
+
return {"prune": False, "prune_reason": None}
|
|
821
|
+
if is_backend_offline():
|
|
822
|
+
logger.debug(
|
|
823
|
+
"Offline mode: skipping intermediate report for session %s trial %s",
|
|
824
|
+
session_id,
|
|
825
|
+
trial_id,
|
|
826
|
+
)
|
|
827
|
+
return {"prune": False, "prune_reason": None}
|
|
828
|
+
|
|
829
|
+
self._raise_if_backend_egress_disabled("intermediate report")
|
|
830
|
+
if not AIOHTTP_AVAILABLE:
|
|
831
|
+
logger.debug("aiohttp not available, skipping intermediate report")
|
|
832
|
+
return {"prune": False, "prune_reason": None}
|
|
833
|
+
|
|
834
|
+
try:
|
|
835
|
+
headers = await self.client.auth_manager.augment_headers(
|
|
836
|
+
{"Content-Type": _JSON_CONTENT_TYPE}
|
|
837
|
+
)
|
|
838
|
+
async with cast(Any, aiohttp).ClientSession(
|
|
839
|
+
connector=self._build_connector()
|
|
840
|
+
) as session:
|
|
841
|
+
api_base = (
|
|
842
|
+
self.client.backend_config.api_base_url
|
|
843
|
+
or BackendConfig.get_backend_api_url()
|
|
844
|
+
)
|
|
845
|
+
url = f"{api_base}/sessions/{session_id}/intermediate-report"
|
|
846
|
+
timeout = cast(Any, aiohttp).ClientTimeout(total=10)
|
|
847
|
+
async with session.post(
|
|
848
|
+
url,
|
|
849
|
+
json=wire_payload,
|
|
850
|
+
headers=headers,
|
|
851
|
+
timeout=timeout,
|
|
852
|
+
) as response:
|
|
853
|
+
if response.status == 200:
|
|
854
|
+
decision = await response.json()
|
|
855
|
+
if isinstance(decision, dict):
|
|
856
|
+
return {
|
|
857
|
+
"prune": bool(decision.get("prune", False)),
|
|
858
|
+
"prune_reason": decision.get("prune_reason"),
|
|
859
|
+
}
|
|
860
|
+
return {"prune": False, "prune_reason": None}
|
|
861
|
+
|
|
862
|
+
error_msg = await response.text()
|
|
863
|
+
logger.debug(
|
|
864
|
+
"Intermediate report rejected for session %s trial %s: "
|
|
865
|
+
"HTTP %s %s",
|
|
866
|
+
session_id,
|
|
867
|
+
trial_id,
|
|
868
|
+
response.status,
|
|
869
|
+
error_msg[:300],
|
|
870
|
+
)
|
|
871
|
+
return {"prune": False, "prune_reason": None}
|
|
872
|
+
except aiohttp.ClientError as exc:
|
|
873
|
+
logger.debug(
|
|
874
|
+
"Network error sending intermediate report for session %s trial %s: %s",
|
|
875
|
+
session_id,
|
|
876
|
+
trial_id,
|
|
877
|
+
exc,
|
|
878
|
+
)
|
|
879
|
+
return {"prune": False, "prune_reason": None}
|
|
880
|
+
|
|
800
881
|
def _handle_session_error(self, status_code: int, error_msg: str) -> None:
|
|
801
882
|
"""Raise structured exceptions for non-success HTTP responses.
|
|
802
883
|
|
|
@@ -584,6 +584,7 @@ class BackendIntegratedClient:
|
|
|
584
584
|
|
|
585
585
|
self.enable_fallback = enable_fallback
|
|
586
586
|
self.no_egress = bool(no_egress)
|
|
587
|
+
self.cloud_egress_intent = False
|
|
587
588
|
self._api_key_fallback = api_key
|
|
588
589
|
self.enable_rate_limiting = enable_rate_limiting
|
|
589
590
|
self.rate_limit_calls = rate_limit_calls
|
|
@@ -1285,8 +1286,11 @@ class BackendIntegratedClient:
|
|
|
1285
1286
|
) -> TrialSuggestion | None:
|
|
1286
1287
|
"""Get next trial suggestion for privacy-first optimization.
|
|
1287
1288
|
Delegates to privacy_operations module."""
|
|
1288
|
-
return
|
|
1289
|
-
|
|
1289
|
+
return cast(
|
|
1290
|
+
TrialSuggestion | None,
|
|
1291
|
+
await self._privacy_ops.get_next_privacy_trial(
|
|
1292
|
+
session_id, previous_results
|
|
1293
|
+
),
|
|
1290
1294
|
)
|
|
1291
1295
|
|
|
1292
1296
|
async def submit_privacy_trial_results(
|
|
@@ -1319,8 +1323,16 @@ class BackendIntegratedClient:
|
|
|
1319
1323
|
) -> AgentOptimizationResponse:
|
|
1320
1324
|
"""Start reserved cloud agent optimization.
|
|
1321
1325
|
Delegates to cloud_operations module."""
|
|
1322
|
-
return
|
|
1323
|
-
|
|
1326
|
+
return cast(
|
|
1327
|
+
AgentOptimizationResponse,
|
|
1328
|
+
await self._cloud_ops.start_agent_optimization(
|
|
1329
|
+
agent_spec,
|
|
1330
|
+
dataset,
|
|
1331
|
+
configuration_space,
|
|
1332
|
+
objectives,
|
|
1333
|
+
max_trials,
|
|
1334
|
+
user_id,
|
|
1335
|
+
),
|
|
1324
1336
|
)
|
|
1325
1337
|
|
|
1326
1338
|
async def execute_agent(
|
|
@@ -1331,8 +1343,11 @@ class BackendIntegratedClient:
|
|
|
1331
1343
|
) -> AgentExecutionResponse:
|
|
1332
1344
|
"""Execute agent through the reserved cloud path.
|
|
1333
1345
|
Delegates to cloud_operations module."""
|
|
1334
|
-
return
|
|
1335
|
-
|
|
1346
|
+
return cast(
|
|
1347
|
+
AgentExecutionResponse,
|
|
1348
|
+
await self._cloud_ops.execute_agent(
|
|
1349
|
+
agent_spec, input_data, config_overrides
|
|
1350
|
+
),
|
|
1336
1351
|
)
|
|
1337
1352
|
|
|
1338
1353
|
# Session Operations
|
|
@@ -1348,6 +1363,7 @@ class BackendIntegratedClient:
|
|
|
1348
1363
|
warm_start_from: str | None = None,
|
|
1349
1364
|
artifact_fingerprints: dict[str, str | None] | None = None,
|
|
1350
1365
|
fingerprint_meta: dict[str, Any] | None = None,
|
|
1366
|
+
smart_pruning: dict[str, Any] | None = None,
|
|
1351
1367
|
) -> SessionCreationResult:
|
|
1352
1368
|
"""Synchronous wrapper for creating a session.
|
|
1353
1369
|
Delegates to session_operations module. Phase 8: objectives are
|
|
@@ -1364,6 +1380,7 @@ class BackendIntegratedClient:
|
|
|
1364
1380
|
warm_start_from=warm_start_from,
|
|
1365
1381
|
artifact_fingerprints=artifact_fingerprints,
|
|
1366
1382
|
fingerprint_meta=fingerprint_meta,
|
|
1383
|
+
smart_pruning=smart_pruning,
|
|
1367
1384
|
)
|
|
1368
1385
|
|
|
1369
1386
|
async def create_hybrid_session(
|
|
@@ -2059,6 +2076,15 @@ class BackendIntegratedClient:
|
|
|
2059
2076
|
await self._api_ops.update_config_run_status(config_run_id, status),
|
|
2060
2077
|
)
|
|
2061
2078
|
|
|
2079
|
+
async def _report_intermediate_progress(
|
|
2080
|
+
self, payload: dict[str, Any]
|
|
2081
|
+
) -> dict[str, Any]:
|
|
2082
|
+
"""Report intermediate trial progress for smart pruning."""
|
|
2083
|
+
return cast(
|
|
2084
|
+
dict[str, Any],
|
|
2085
|
+
await self._api_ops.report_intermediate_progress(payload),
|
|
2086
|
+
)
|
|
2087
|
+
|
|
2062
2088
|
async def _update_config_run_measures(
|
|
2063
2089
|
self,
|
|
2064
2090
|
config_run_id: str,
|
|
@@ -10,7 +10,7 @@ import os
|
|
|
10
10
|
import time
|
|
11
11
|
import weakref
|
|
12
12
|
from abc import ABC, abstractmethod
|
|
13
|
-
from collections.abc import Callable, Mapping, Sequence
|
|
13
|
+
from collections.abc import Awaitable, Callable, Mapping, Sequence
|
|
14
14
|
from dataclasses import dataclass
|
|
15
15
|
from importlib import import_module
|
|
16
16
|
from typing import Any, NoReturn, cast
|
|
@@ -33,13 +33,13 @@ else: # pragma: no cover - minimal environments without aiohttp
|
|
|
33
33
|
|
|
34
34
|
from traigent.config.backend_config import BackendConfig
|
|
35
35
|
from traigent.evaluators.base import Dataset
|
|
36
|
-
from traigent.utils.env_config import is_backend_offline
|
|
37
|
-
from traigent.utils.error_handler import OfflineModeError
|
|
38
|
-
from traigent.utils.error_handler import TraigentError as HelpfulTraigentError
|
|
39
36
|
from traigent.utils.artifact_fingerprints import (
|
|
40
37
|
artifact_fingerprints_to_wire,
|
|
41
38
|
fingerprint_meta_to_wire,
|
|
42
39
|
)
|
|
40
|
+
from traigent.utils.env_config import is_backend_offline
|
|
41
|
+
from traigent.utils.error_handler import OfflineModeError
|
|
42
|
+
from traigent.utils.error_handler import TraigentError as HelpfulTraigentError
|
|
43
43
|
from traigent.utils.exceptions import ValidationError as ValidationException
|
|
44
44
|
from traigent.utils.logging import get_logger
|
|
45
45
|
from traigent.utils.retry import NetworkError, RateLimitError, retry_http_request
|
|
@@ -62,9 +62,11 @@ from .models import (
|
|
|
62
62
|
SessionCreationRequest,
|
|
63
63
|
SessionCreationResponse,
|
|
64
64
|
SessionObjectiveDefinition,
|
|
65
|
+
SessionSummary,
|
|
65
66
|
TrialResultSubmission,
|
|
66
67
|
TrialSuggestion,
|
|
67
68
|
)
|
|
69
|
+
from .smart_pruning import normalize_smart_pruning_options
|
|
68
70
|
from .subset_selection import SmartSubsetSelector
|
|
69
71
|
from .url_security import validate_cloud_base_url
|
|
70
72
|
|
|
@@ -130,7 +132,7 @@ def _session_is_closed(session: Any) -> bool:
|
|
|
130
132
|
return False
|
|
131
133
|
|
|
132
134
|
|
|
133
|
-
def _log_finalizer_close_task_result(task: asyncio.
|
|
135
|
+
def _log_finalizer_close_task_result(task: asyncio.Future[Any], owner: str) -> None:
|
|
134
136
|
try:
|
|
135
137
|
task.result()
|
|
136
138
|
except asyncio.CancelledError:
|
|
@@ -162,7 +164,10 @@ def _schedule_aiohttp_session_close(
|
|
|
162
164
|
try:
|
|
163
165
|
close_result = close_method()
|
|
164
166
|
if inspect.isawaitable(close_result):
|
|
165
|
-
task =
|
|
167
|
+
task: asyncio.Future[Any] = asyncio.ensure_future(
|
|
168
|
+
cast(Awaitable[Any], close_result),
|
|
169
|
+
loop=loop,
|
|
170
|
+
)
|
|
166
171
|
task.add_done_callback(
|
|
167
172
|
lambda done_task: _log_finalizer_close_task_result(done_task, owner)
|
|
168
173
|
)
|
|
@@ -1517,8 +1522,16 @@ class TraigentCloudClient(BaseTraigentClient):
|
|
|
1517
1522
|
f"Failed to finalize session: {e}", "session_finalization", e
|
|
1518
1523
|
) from e
|
|
1519
1524
|
|
|
1520
|
-
async def delete_session(self, session_id: str, cascade: bool =
|
|
1521
|
-
"""Delete a session
|
|
1525
|
+
async def delete_session(self, session_id: str, cascade: bool = False) -> bool:
|
|
1526
|
+
"""Delete a session via ``DELETE /api/v1/sessions/<id>``.
|
|
1527
|
+
|
|
1528
|
+
Non-destructive by default (``cascade=False``), matching the backend
|
|
1529
|
+
default: only the session and its run artifacts are removed. Pass
|
|
1530
|
+
``cascade=True`` to additionally hard-delete the parent experiment when
|
|
1531
|
+
the deleted session was its last run. Use this with
|
|
1532
|
+
:meth:`list_sessions` to enumerate and clean up orphaned / zombie
|
|
1533
|
+
"running" sessions from the client.
|
|
1534
|
+
"""
|
|
1522
1535
|
if not session_id:
|
|
1523
1536
|
raise ValueError("session_id is required")
|
|
1524
1537
|
|
|
@@ -1556,6 +1569,68 @@ class TraigentCloudClient(BaseTraigentClient):
|
|
|
1556
1569
|
f"Failed to delete session: {exc}", "session_delete", exc
|
|
1557
1570
|
) from exc
|
|
1558
1571
|
|
|
1572
|
+
async def list_sessions(
|
|
1573
|
+
self,
|
|
1574
|
+
status: str | None = None,
|
|
1575
|
+
pattern: str | None = None,
|
|
1576
|
+
limit: int | None = None,
|
|
1577
|
+
) -> list[SessionSummary]:
|
|
1578
|
+
"""List sessions via ``GET /api/v1/sessions``.
|
|
1579
|
+
|
|
1580
|
+
Enumerates the caller's optimization sessions so orphaned / zombie
|
|
1581
|
+
"running" sessions can be found and cleaned up with
|
|
1582
|
+
:meth:`delete_session`. Returns typed :class:`SessionSummary` objects.
|
|
1583
|
+
|
|
1584
|
+
Args:
|
|
1585
|
+
status: Optional lifecycle filter (server-side ``status`` query param).
|
|
1586
|
+
pattern: Optional session-id match (server-side ``pattern`` query
|
|
1587
|
+
param).
|
|
1588
|
+
limit: Optional cap on the number of summaries returned. The backend
|
|
1589
|
+
does not support a server-side limit, so this is applied
|
|
1590
|
+
client-side after the response is received.
|
|
1591
|
+
|
|
1592
|
+
Returns:
|
|
1593
|
+
A list of :class:`SessionSummary` (empty when there are none).
|
|
1594
|
+
"""
|
|
1595
|
+
self._raise_if_backend_egress_disabled("list sessions")
|
|
1596
|
+
await self._ensure_session()
|
|
1597
|
+
if self._aio_session is None:
|
|
1598
|
+
raise CloudServiceError(_SESSION_NOT_INITIALIZED)
|
|
1599
|
+
|
|
1600
|
+
params: dict[str, str] = {}
|
|
1601
|
+
if status is not None:
|
|
1602
|
+
params["status"] = str(status)
|
|
1603
|
+
if pattern is not None:
|
|
1604
|
+
params["pattern"] = str(pattern)
|
|
1605
|
+
|
|
1606
|
+
url = f"{self.api_base_url}/sessions"
|
|
1607
|
+
try:
|
|
1608
|
+
async with self._aio_session.get(url, params=params) as response:
|
|
1609
|
+
if response.status != 200:
|
|
1610
|
+
error_text = await response.text()
|
|
1611
|
+
raise CloudServiceError(
|
|
1612
|
+
f"Failed to list sessions: status={response.status} "
|
|
1613
|
+
f"body={error_text[:200]}"
|
|
1614
|
+
)
|
|
1615
|
+
data = await response.json()
|
|
1616
|
+
except aiohttp.ClientError as exc:
|
|
1617
|
+
await self._reset_http_session("list_sessions network error")
|
|
1618
|
+
raise StandardizedClientError(
|
|
1619
|
+
f"Failed to list sessions: {exc}", "session_list", exc
|
|
1620
|
+
) from exc
|
|
1621
|
+
|
|
1622
|
+
raw_sessions = data.get("sessions") if isinstance(data, dict) else None
|
|
1623
|
+
if not isinstance(raw_sessions, list):
|
|
1624
|
+
raw_sessions = []
|
|
1625
|
+
summaries = [
|
|
1626
|
+
SessionSummary.from_dict(item)
|
|
1627
|
+
for item in raw_sessions
|
|
1628
|
+
if isinstance(item, dict)
|
|
1629
|
+
]
|
|
1630
|
+
if limit is not None and limit >= 0:
|
|
1631
|
+
summaries = summaries[:limit]
|
|
1632
|
+
return summaries
|
|
1633
|
+
|
|
1559
1634
|
# Stateful optimization methods for interactive model
|
|
1560
1635
|
|
|
1561
1636
|
async def create_optimization_session(
|
|
@@ -1865,6 +1940,9 @@ class TraigentCloudClient(BaseTraigentClient):
|
|
|
1865
1940
|
# Warm-start: prior experiment id (empty string treated as absent).
|
|
1866
1941
|
if request.warm_start_from:
|
|
1867
1942
|
payload["warm_start_from"] = request.warm_start_from
|
|
1943
|
+
smart_pruning = normalize_smart_pruning_options(request.smart_pruning)
|
|
1944
|
+
if smart_pruning:
|
|
1945
|
+
payload["smart_pruning"] = smart_pruning
|
|
1868
1946
|
artifact_fingerprints = artifact_fingerprints_to_wire(
|
|
1869
1947
|
getattr(request, "artifact_fingerprints", None)
|
|
1870
1948
|
)
|
|
@@ -19,6 +19,7 @@ from typing import Any
|
|
|
19
19
|
# enum lives in ``traigent.api.types``. Re-export it here so the cloud layer and
|
|
20
20
|
# the public API can never drift into two disagreeing ``TrialStatus`` enums.
|
|
21
21
|
from traigent.api.types import TrialStatus as TrialStatus
|
|
22
|
+
from traigent.cloud.smart_pruning import normalize_smart_pruning_options
|
|
22
23
|
from traigent.evaluators.base import Dataset
|
|
23
24
|
|
|
24
25
|
|
|
@@ -139,6 +140,40 @@ class OptimizationSession:
|
|
|
139
140
|
)
|
|
140
141
|
|
|
141
142
|
|
|
143
|
+
@dataclass
|
|
144
|
+
class SessionSummary:
|
|
145
|
+
"""Lightweight summary of a session from ``GET /api/v1/sessions``.
|
|
146
|
+
|
|
147
|
+
Returned by :meth:`traigent.cloud.client.TraigentCloudClient.list_sessions`.
|
|
148
|
+
Maps the backend session-list contract
|
|
149
|
+
(``optimization/optimization_session_list_response_schema.json``):
|
|
150
|
+
``session_id`` and
|
|
151
|
+
``status`` are always present; ``created_at`` / ``progress`` when the server
|
|
152
|
+
provides them. Forward-compatible — any additional server fields are kept in
|
|
153
|
+
``extra`` rather than dropped, so the SDK can enumerate and clean up orphaned
|
|
154
|
+
sessions without a release per new field.
|
|
155
|
+
"""
|
|
156
|
+
|
|
157
|
+
session_id: str
|
|
158
|
+
status: str
|
|
159
|
+
created_at: str | None = None
|
|
160
|
+
progress: dict[str, Any] | None = None
|
|
161
|
+
extra: dict[str, Any] = field(default_factory=dict)
|
|
162
|
+
|
|
163
|
+
@classmethod
|
|
164
|
+
def from_dict(cls, data: dict[str, Any]) -> SessionSummary:
|
|
165
|
+
"""Build a summary from one backend session object, tolerating extras."""
|
|
166
|
+
known = {"session_id", "status", "created_at", "progress"}
|
|
167
|
+
progress = data.get("progress")
|
|
168
|
+
return cls(
|
|
169
|
+
session_id=str(data.get("session_id", "")),
|
|
170
|
+
status=str(data.get("status", "")),
|
|
171
|
+
created_at=data.get("created_at"),
|
|
172
|
+
progress=progress if isinstance(progress, dict) else None,
|
|
173
|
+
extra={k: v for k, v in data.items() if k not in known},
|
|
174
|
+
)
|
|
175
|
+
|
|
176
|
+
|
|
142
177
|
@dataclass
|
|
143
178
|
class DatasetSubsetIndices:
|
|
144
179
|
"""Indices for selecting a subset of the dataset."""
|
|
@@ -194,6 +229,7 @@ class SessionCreationRequest:
|
|
|
194
229
|
constraints: dict[str, Any] | None = None
|
|
195
230
|
default_config: dict[str, Any] | None = None
|
|
196
231
|
warm_start_from: str | None = None
|
|
232
|
+
smart_pruning: dict[str, Any] | None = None
|
|
197
233
|
promotion_policy: dict[str, Any] | None = None
|
|
198
234
|
# Content-free TVL governance summary (RFC 0001 P8): cvar names/types/
|
|
199
235
|
# governed flags only — built by traigent.cloud.governance, never ad hoc.
|
|
@@ -217,6 +253,7 @@ class SessionCreationRequest:
|
|
|
217
253
|
self.objectives: list[Any] = []
|
|
218
254
|
if self.dataset_metadata is None:
|
|
219
255
|
self.dataset_metadata: dict[str, Any] = {"size": 100, "type": "test"}
|
|
256
|
+
self.smart_pruning = normalize_smart_pruning_options(self.smart_pruning)
|
|
220
257
|
# Ensure max_trials is never None
|
|
221
258
|
if self.max_trials is None:
|
|
222
259
|
self.max_trials = 10
|
|
@@ -33,6 +33,7 @@ from traigent.cloud.session_types import (
|
|
|
33
33
|
SessionCreationFailureReason,
|
|
34
34
|
SessionCreationResult,
|
|
35
35
|
)
|
|
36
|
+
from traigent.cloud.smart_pruning import normalize_smart_pruning_options
|
|
36
37
|
from traigent.config.backend_config import BackendConfig
|
|
37
38
|
from traigent.utils.env_config import is_backend_offline, resolve_environment_label
|
|
38
39
|
from traigent.utils.exceptions import ValidationError as ValidationException
|
|
@@ -367,7 +368,7 @@ class SessionOperations:
|
|
|
367
368
|
},
|
|
368
369
|
)
|
|
369
370
|
logger.debug("Created local fallback session: %s", session_id)
|
|
370
|
-
return session_id
|
|
371
|
+
return cast(str, session_id)
|
|
371
372
|
except Exception as storage_e:
|
|
372
373
|
logger.debug("Local storage fallback failed: %s", storage_e)
|
|
373
374
|
|
|
@@ -498,6 +499,7 @@ class SessionOperations:
|
|
|
498
499
|
promotion_policy: dict[str, Any] | None = None,
|
|
499
500
|
tvl_governance: dict[str, Any] | None = None,
|
|
500
501
|
warm_start_from: str | None = None,
|
|
502
|
+
smart_pruning: dict[str, Any] | None = None,
|
|
501
503
|
artifact_fingerprints: dict[str, str | None] | None = None,
|
|
502
504
|
fingerprint_meta: dict[str, Any] | None = None,
|
|
503
505
|
) -> SessionCreationResult:
|
|
@@ -521,6 +523,7 @@ class SessionOperations:
|
|
|
521
523
|
self._validate_non_empty_string(optimization_goal, "optimization_goal")
|
|
522
524
|
if metadata is not None and not isinstance(metadata, dict):
|
|
523
525
|
raise ValidationException("metadata must be a dictionary if provided")
|
|
526
|
+
normalized_smart_pruning = normalize_smart_pruning_options(smart_pruning)
|
|
524
527
|
|
|
525
528
|
# Phase 8 (review round 2): the local-availability fallback is for
|
|
526
529
|
# NON-governed sessions only. A governed/strict session that cannot
|
|
@@ -629,6 +632,7 @@ class SessionOperations:
|
|
|
629
632
|
# reading objectives[0] as its optimization_goal).
|
|
630
633
|
objectives=list(objectives) if objectives else [optimization_goal],
|
|
631
634
|
warm_start_from=warm_start_from or None,
|
|
635
|
+
smart_pruning=normalized_smart_pruning,
|
|
632
636
|
dataset_metadata={
|
|
633
637
|
"size": metadata.get("dataset_size", 0) if metadata else 0,
|
|
634
638
|
# Carry the dataset label (content is not submitted) so the
|
|
@@ -1587,7 +1591,9 @@ class SessionOperations:
|
|
|
1587
1591
|
def get_active_sessions(self) -> dict[str, OptimizationSession]:
|
|
1588
1592
|
"""Get all active optimization sessions."""
|
|
1589
1593
|
with self.client._active_sessions_lock:
|
|
1590
|
-
return
|
|
1594
|
+
return cast(
|
|
1595
|
+
dict[str, OptimizationSession], self.client._active_sessions.copy()
|
|
1596
|
+
)
|
|
1591
1597
|
|
|
1592
1598
|
def get_session_mapping(self, session_id: str) -> SessionExperimentMapping | None:
|
|
1593
1599
|
"""Get session to experiment mapping."""
|