traigent 0.19.1.dev0__tar.gz → 0.19.2__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.19.1.dev0 → traigent-0.19.2}/CHANGELOG.md +65 -0
- {traigent-0.19.1.dev0/traigent.egg-info → traigent-0.19.2}/PKG-INFO +1 -1
- {traigent-0.19.1.dev0 → traigent-0.19.2}/docs/api-reference/decorator-reference.md +3 -2
- {traigent-0.19.1.dev0 → traigent-0.19.2}/docs/architecture/stop_conditions.md +20 -7
- {traigent-0.19.1.dev0 → traigent-0.19.2}/pyproject.toml +1 -1
- {traigent-0.19.1.dev0 → traigent-0.19.2}/traigent/analytics_mcp/server.py +56 -0
- {traigent-0.19.1.dev0 → traigent-0.19.2}/traigent/analytics_mcp/tools.py +92 -1
- {traigent-0.19.1.dev0 → traigent-0.19.2}/traigent/api/config_builder.py +0 -8
- {traigent-0.19.1.dev0 → traigent-0.19.2}/traigent/api/parameter_validator.py +4 -20
- {traigent-0.19.1.dev0 → traigent-0.19.2}/traigent/api/types.py +31 -4
- {traigent-0.19.1.dev0 → traigent-0.19.2}/traigent/cli/next_steps_command.py +5 -1
- {traigent-0.19.1.dev0 → traigent-0.19.2}/traigent/cloud/api_operations.py +27 -5
- {traigent-0.19.1.dev0 → traigent-0.19.2}/traigent/cloud/backend_client.py +21 -20
- {traigent-0.19.1.dev0 → traigent-0.19.2}/traigent/cloud/session_operations.py +43 -2
- {traigent-0.19.1.dev0 → traigent-0.19.2}/traigent/config/types.py +85 -32
- {traigent-0.19.1.dev0 → traigent-0.19.2}/traigent/core/backend_session_manager.py +30 -0
- {traigent-0.19.1.dev0 → traigent-0.19.2}/traigent/core/cost_enforcement.py +99 -5
- {traigent-0.19.1.dev0 → traigent-0.19.2}/traigent/core/objectives.py +68 -17
- {traigent-0.19.1.dev0 → traigent-0.19.2}/traigent/core/optimized_function.py +129 -28
- {traigent-0.19.1.dev0 → traigent-0.19.2}/traigent/core/orchestrator.py +162 -2
- {traigent-0.19.1.dev0 → traigent-0.19.2}/traigent/core/result_selection.py +311 -9
- {traigent-0.19.1.dev0 → traigent-0.19.2}/traigent/evaluators/base.py +56 -1
- {traigent-0.19.1.dev0 → traigent-0.19.2}/traigent/optimizers/grid.py +4 -17
- {traigent-0.19.1.dev0 → traigent-0.19.2/traigent.egg-info}/PKG-INFO +1 -1
- {traigent-0.19.1.dev0 → traigent-0.19.2}/COMMERCIAL-LICENSE.md +0 -0
- {traigent-0.19.1.dev0 → traigent-0.19.2}/CONTRIBUTING.md +0 -0
- {traigent-0.19.1.dev0 → traigent-0.19.2}/CONTRIBUTOR-LICENSING.md +0 -0
- {traigent-0.19.1.dev0 → traigent-0.19.2}/DISCLAIMER.md +0 -0
- {traigent-0.19.1.dev0 → traigent-0.19.2}/LICENSE +0 -0
- {traigent-0.19.1.dev0 → traigent-0.19.2}/MANIFEST.in +0 -0
- {traigent-0.19.1.dev0 → traigent-0.19.2}/NOTICE +0 -0
- {traigent-0.19.1.dev0 → traigent-0.19.2}/README.md +0 -0
- {traigent-0.19.1.dev0 → traigent-0.19.2}/SECURITY.md +0 -0
- {traigent-0.19.1.dev0 → traigent-0.19.2}/docs/LOCAL_CI_GATE.md +0 -0
- {traigent-0.19.1.dev0 → traigent-0.19.2}/docs/README.md +0 -0
- {traigent-0.19.1.dev0 → traigent-0.19.2}/docs/SYNC_MAP.md +0 -0
- {traigent-0.19.1.dev0 → traigent-0.19.2}/docs/agent-skill.md +0 -0
- {traigent-0.19.1.dev0 → traigent-0.19.2}/docs/api-reference/complete-function-specification.md +0 -0
- {traigent-0.19.1.dev0 → traigent-0.19.2}/docs/api-reference/enterprise-beta-api.md +0 -0
- {traigent-0.19.1.dev0 → traigent-0.19.2}/docs/api-reference/interactive_optimizer.md +0 -0
- {traigent-0.19.1.dev0 → traigent-0.19.2}/docs/api-reference/telemetry.md +0 -0
- {traigent-0.19.1.dev0 → traigent-0.19.2}/docs/api-reference/thread-pool-examples.md +0 -0
- {traigent-0.19.1.dev0 → traigent-0.19.2}/docs/architecture/ARCHITECTURE.md +0 -0
- {traigent-0.19.1.dev0 → traigent-0.19.2}/docs/architecture/cost-architecture-validation.md +0 -0
- {traigent-0.19.1.dev0 → traigent-0.19.2}/docs/architecture/execution_mode_follow_up.md +0 -0
- {traigent-0.19.1.dev0 → traigent-0.19.2}/docs/architecture/integrations-inventory.md +0 -0
- {traigent-0.19.1.dev0 → traigent-0.19.2}/docs/architecture/plugin_architecture.md +0 -0
- {traigent-0.19.1.dev0 → traigent-0.19.2}/docs/architecture/project-structure.md +0 -0
- {traigent-0.19.1.dev0 → traigent-0.19.2}/docs/concepts/composite-knob-ir.md +0 -0
- {traigent-0.19.1.dev0 → traigent-0.19.2}/docs/concepts/composite-knobs.md +0 -0
- {traigent-0.19.1.dev0 → traigent-0.19.2}/docs/concepts/guided-generation.md +0 -0
- {traigent-0.19.1.dev0 → traigent-0.19.2}/docs/contributing/ADDING_NEW_INTEGRATIONS.md +0 -0
- {traigent-0.19.1.dev0 → traigent-0.19.2}/docs/contributing/CODE_OF_CONDUCT.md +0 -0
- {traigent-0.19.1.dev0 → traigent-0.19.2}/docs/contributing/CONTRIBUTING.md +0 -0
- {traigent-0.19.1.dev0 → traigent-0.19.2}/docs/contributing/EXAMPLE_TEMPLATE.md +0 -0
- {traigent-0.19.1.dev0 → traigent-0.19.2}/docs/contributing/README.md +0 -0
- {traigent-0.19.1.dev0 → traigent-0.19.2}/docs/contributing/SECURITY.md +0 -0
- {traigent-0.19.1.dev0 → traigent-0.19.2}/docs/contributing/aikido_triage.md +0 -0
- {traigent-0.19.1.dev0 → traigent-0.19.2}/docs/contributing/code_review_instructions.md +0 -0
- {traigent-0.19.1.dev0 → traigent-0.19.2}/docs/contributing/test-quality-guide.md +0 -0
- {traigent-0.19.1.dev0 → traigent-0.19.2}/docs/demos/DEMO_VIDEO_GUIDE.md +0 -0
- {traigent-0.19.1.dev0 → traigent-0.19.2}/docs/demos/README.md +0 -0
- {traigent-0.19.1.dev0 → traigent-0.19.2}/docs/examples/API_PATTERNS.md +0 -0
- {traigent-0.19.1.dev0 → traigent-0.19.2}/docs/examples/LEARNING_ROADMAP.md +0 -0
- {traigent-0.19.1.dev0 → traigent-0.19.2}/docs/examples/QUICK_REFERENCE.md +0 -0
- {traigent-0.19.1.dev0 → traigent-0.19.2}/docs/examples/README.md +0 -0
- {traigent-0.19.1.dev0 → traigent-0.19.2}/docs/examples/START_HERE.md +0 -0
- {traigent-0.19.1.dev0 → traigent-0.19.2}/docs/examples/TROUBLESHOOTING.md +0 -0
- {traigent-0.19.1.dev0 → traigent-0.19.2}/docs/fake-completion-tracking.md +0 -0
- {traigent-0.19.1.dev0 → traigent-0.19.2}/docs/feature_matrices/README.md +0 -0
- {traigent-0.19.1.dev0 → traigent-0.19.2}/docs/features/README.md +0 -0
- {traigent-0.19.1.dev0 → traigent-0.19.2}/docs/features/authentication.md +0 -0
- {traigent-0.19.1.dev0 → traigent-0.19.2}/docs/features/constraint-dsl.md +0 -0
- {traigent-0.19.1.dev0 → traigent-0.19.2}/docs/features/dataflow-detection.md +0 -0
- {traigent-0.19.1.dev0 → traigent-0.19.2}/docs/features/framework_override_enhanced_features.md +0 -0
- {traigent-0.19.1.dev0 → traigent-0.19.2}/docs/features/mcp-server.md +0 -0
- {traigent-0.19.1.dev0 → traigent-0.19.2}/docs/features/observability-spans.md +0 -0
- {traigent-0.19.1.dev0 → traigent-0.19.2}/docs/features/onboarding.md +0 -0
- {traigent-0.19.1.dev0 → traigent-0.19.2}/docs/features/prompt_management.md +0 -0
- {traigent-0.19.1.dev0 → traigent-0.19.2}/docs/features/recommendations.md +0 -0
- {traigent-0.19.1.dev0 → traigent-0.19.2}/docs/features/safety-gates.md +0 -0
- {traigent-0.19.1.dev0 → traigent-0.19.2}/docs/features/seamless_injection.md +0 -0
- {traigent-0.19.1.dev0 → traigent-0.19.2}/docs/features/strategy-presets.md +0 -0
- {traigent-0.19.1.dev0 → traigent-0.19.2}/docs/features/strict_metrics_nulls.md +0 -0
- {traigent-0.19.1.dev0 → traigent-0.19.2}/docs/getting-started/GETTING_STARTED.md +0 -0
- {traigent-0.19.1.dev0 → traigent-0.19.2}/docs/getting-started/README.md +0 -0
- {traigent-0.19.1.dev0 → traigent-0.19.2}/docs/getting-started/installation.md +0 -0
- {traigent-0.19.1.dev0 → traigent-0.19.2}/docs/getting-started/minimal-integration.md +0 -0
- {traigent-0.19.1.dev0 → traigent-0.19.2}/docs/getting-started/portal-dev-laptop-agent.md +0 -0
- {traigent-0.19.1.dev0 → traigent-0.19.2}/docs/getting-started/testing.md +0 -0
- {traigent-0.19.1.dev0 → traigent-0.19.2}/docs/guides/VSCODE_RESTART_GUIDE.md +0 -0
- {traigent-0.19.1.dev0 → traigent-0.19.2}/docs/guides/evaluation.md +0 -0
- {traigent-0.19.1.dev0 → traigent-0.19.2}/docs/guides/execution-mode-migration.md +0 -0
- {traigent-0.19.1.dev0 → traigent-0.19.2}/docs/guides/execution-modes.md +0 -0
- {traigent-0.19.1.dev0 → traigent-0.19.2}/docs/guides/js-bridge.md +0 -0
- {traigent-0.19.1.dev0 → traigent-0.19.2}/docs/guides/llm_plugin_migration_guide.md +0 -0
- {traigent-0.19.1.dev0 → traigent-0.19.2}/docs/guides/parallel-configuration.md +0 -0
- {traigent-0.19.1.dev0 → traigent-0.19.2}/docs/guides/secrets_management.md +0 -0
- {traigent-0.19.1.dev0 → traigent-0.19.2}/docs/hybrid-mode-api-contract.md +0 -0
- {traigent-0.19.1.dev0 → traigent-0.19.2}/docs/hybrid-mode-client-guide.md +0 -0
- {traigent-0.19.1.dev0 → traigent-0.19.2}/docs/operations/azure_openai.md +0 -0
- {traigent-0.19.1.dev0 → traigent-0.19.2}/docs/operations/bedrock.md +0 -0
- {traigent-0.19.1.dev0 → traigent-0.19.2}/docs/operations/google_gemini.md +0 -0
- {traigent-0.19.1.dev0 → traigent-0.19.2}/docs/security/trust_model.md +0 -0
- {traigent-0.19.1.dev0 → traigent-0.19.2}/docs/testing/CREATIVE_STRESS_TESTING.md +0 -0
- {traigent-0.19.1.dev0 → traigent-0.19.2}/docs/traceability/concepts/composite-knob-ir.md +0 -0
- {traigent-0.19.1.dev0 → traigent-0.19.2}/docs/traceability/concepts/composite-knobs.md +0 -0
- {traigent-0.19.1.dev0 → traigent-0.19.2}/docs/traceability/concepts/guided-generation.md +0 -0
- {traigent-0.19.1.dev0 → traigent-0.19.2}/docs/traceability/schema.md +0 -0
- {traigent-0.19.1.dev0 → traigent-0.19.2}/docs/traceability/tagging_tracking.md +0 -0
- {traigent-0.19.1.dev0 → traigent-0.19.2}/docs/traceability/taxonomy_reference.md +0 -0
- {traigent-0.19.1.dev0 → traigent-0.19.2}/docs/tvl/CONSTRAINT_EXPRESSIONS.md +0 -0
- {traigent-0.19.1.dev0 → traigent-0.19.2}/docs/user-guide/README.md +0 -0
- {traigent-0.19.1.dev0 → traigent-0.19.2}/docs/user-guide/agent_optimization.md +0 -0
- {traigent-0.19.1.dev0 → traigent-0.19.2}/docs/user-guide/choosing_optimization_model.md +0 -0
- {traigent-0.19.1.dev0 → traigent-0.19.2}/docs/user-guide/configuration-spaces.md +0 -0
- {traigent-0.19.1.dev0 → traigent-0.19.2}/docs/user-guide/evaluation_guide.md +0 -0
- {traigent-0.19.1.dev0 → traigent-0.19.2}/docs/user-guide/injection_modes.md +0 -0
- {traigent-0.19.1.dev0 → traigent-0.19.2}/docs/user-guide/interactive_optimization.md +0 -0
- {traigent-0.19.1.dev0 → traigent-0.19.2}/docs/user-guide/smart_optimization.md +0 -0
- {traigent-0.19.1.dev0 → traigent-0.19.2}/docs/user-guide/tuned_variables.md +0 -0
- {traigent-0.19.1.dev0 → traigent-0.19.2}/docs/walkthrough.md +0 -0
- {traigent-0.19.1.dev0 → traigent-0.19.2}/requirements/requirements-all.txt +0 -0
- {traigent-0.19.1.dev0 → traigent-0.19.2}/requirements/requirements-analytics.txt +0 -0
- {traigent-0.19.1.dev0 → traigent-0.19.2}/requirements/requirements-bayesian.txt +0 -0
- {traigent-0.19.1.dev0 → traigent-0.19.2}/requirements/requirements-chroma.txt +0 -0
- {traigent-0.19.1.dev0 → traigent-0.19.2}/requirements/requirements-dev.txt +0 -0
- {traigent-0.19.1.dev0 → traigent-0.19.2}/requirements/requirements-hybrid.txt +0 -0
- {traigent-0.19.1.dev0 → traigent-0.19.2}/requirements/requirements-integrations.txt +0 -0
- {traigent-0.19.1.dev0 → traigent-0.19.2}/requirements/requirements-security.txt +0 -0
- {traigent-0.19.1.dev0 → traigent-0.19.2}/requirements/requirements-test.txt +0 -0
- {traigent-0.19.1.dev0 → traigent-0.19.2}/requirements/requirements.txt +0 -0
- {traigent-0.19.1.dev0 → traigent-0.19.2}/setup.cfg +0 -0
- {traigent-0.19.1.dev0 → traigent-0.19.2}/traigent/__init__.py +0 -0
- {traigent-0.19.1.dev0 → traigent-0.19.2}/traigent/_version.py +0 -0
- {traigent-0.19.1.dev0 → traigent-0.19.2}/traigent/adapters/execution_adapter.py +0 -0
- {traigent-0.19.1.dev0 → traigent-0.19.2}/traigent/admin/__init__.py +0 -0
- {traigent-0.19.1.dev0 → traigent-0.19.2}/traigent/admin/client.py +0 -0
- {traigent-0.19.1.dev0 → traigent-0.19.2}/traigent/admin/config.py +0 -0
- {traigent-0.19.1.dev0 → traigent-0.19.2}/traigent/admin/dtos.py +0 -0
- {traigent-0.19.1.dev0 → traigent-0.19.2}/traigent/agents/__init__.py +0 -0
- {traigent-0.19.1.dev0 → traigent-0.19.2}/traigent/agents/config_mapper.py +0 -0
- {traigent-0.19.1.dev0 → traigent-0.19.2}/traigent/agents/executor.py +0 -0
- {traigent-0.19.1.dev0 → traigent-0.19.2}/traigent/agents/platforms.py +0 -0
- {traigent-0.19.1.dev0 → traigent-0.19.2}/traigent/agents/specification_generator.py +0 -0
- {traigent-0.19.1.dev0 → traigent-0.19.2}/traigent/analytics/__init__.py +0 -0
- {traigent-0.19.1.dev0 → traigent-0.19.2}/traigent/analytics/anomaly.py +0 -0
- {traigent-0.19.1.dev0 → traigent-0.19.2}/traigent/analytics/cost_optimization.py +0 -0
- {traigent-0.19.1.dev0 → traigent-0.19.2}/traigent/analytics/example_insights.py +0 -0
- {traigent-0.19.1.dev0 → traigent-0.19.2}/traigent/analytics/intelligence.py +0 -0
- {traigent-0.19.1.dev0 → traigent-0.19.2}/traigent/analytics/meta_learning.py +0 -0
- {traigent-0.19.1.dev0 → traigent-0.19.2}/traigent/analytics/next_steps.py +0 -0
- {traigent-0.19.1.dev0 → traigent-0.19.2}/traigent/analytics/optimization_plan.py +0 -0
- {traigent-0.19.1.dev0 → traigent-0.19.2}/traigent/analytics/predictive.py +0 -0
- {traigent-0.19.1.dev0 → traigent-0.19.2}/traigent/analytics/render.py +0 -0
- {traigent-0.19.1.dev0 → traigent-0.19.2}/traigent/analytics/scheduling.py +0 -0
- {traigent-0.19.1.dev0 → traigent-0.19.2}/traigent/analytics_mcp/__init__.py +0 -0
- {traigent-0.19.1.dev0 → traigent-0.19.2}/traigent/api/__init__.py +0 -0
- {traigent-0.19.1.dev0 → traigent-0.19.2}/traigent/api/agent_inference.py +0 -0
- {traigent-0.19.1.dev0 → traigent-0.19.2}/traigent/api/config_space.py +0 -0
- {traigent-0.19.1.dev0 → traigent-0.19.2}/traigent/api/constraint_builders.py +0 -0
- {traigent-0.19.1.dev0 → traigent-0.19.2}/traigent/api/constraints.py +0 -0
- {traigent-0.19.1.dev0 → traigent-0.19.2}/traigent/api/decorators.py +0 -0
- {traigent-0.19.1.dev0 → traigent-0.19.2}/traigent/api/functions.py +0 -0
- {traigent-0.19.1.dev0 → traigent-0.19.2}/traigent/api/parameter_ranges.py +0 -0
- {traigent-0.19.1.dev0 → traigent-0.19.2}/traigent/api/safety.py +0 -0
- {traigent-0.19.1.dev0 → traigent-0.19.2}/traigent/api/strategy_presets.py +0 -0
- {traigent-0.19.1.dev0 → traigent-0.19.2}/traigent/api/validation_protocol.py +0 -0
- {traigent-0.19.1.dev0 → traigent-0.19.2}/traigent/cli/__init__.py +0 -0
- {traigent-0.19.1.dev0 → traigent-0.19.2}/traigent/cli/auth_commands.py +0 -0
- {traigent-0.19.1.dev0 → traigent-0.19.2}/traigent/cli/detect_tvars_command.py +0 -0
- {traigent-0.19.1.dev0 → traigent-0.19.2}/traigent/cli/function_discovery.py +0 -0
- {traigent-0.19.1.dev0 → traigent-0.19.2}/traigent/cli/generate_config_command.py +0 -0
- {traigent-0.19.1.dev0 → traigent-0.19.2}/traigent/cli/hooks_commands.py +0 -0
- {traigent-0.19.1.dev0 → traigent-0.19.2}/traigent/cli/local_commands.py +0 -0
- {traigent-0.19.1.dev0 → traigent-0.19.2}/traigent/cli/main.py +0 -0
- {traigent-0.19.1.dev0 → traigent-0.19.2}/traigent/cli/onboard_commands.py +0 -0
- {traigent-0.19.1.dev0 → traigent-0.19.2}/traigent/cli/optimization_validator.py +0 -0
- {traigent-0.19.1.dev0 → traigent-0.19.2}/traigent/cli/plan_command.py +0 -0
- {traigent-0.19.1.dev0 → traigent-0.19.2}/traigent/cli/playbook_commands.py +0 -0
- {traigent-0.19.1.dev0 → traigent-0.19.2}/traigent/cli/sync_commands.py +0 -0
- {traigent-0.19.1.dev0 → traigent-0.19.2}/traigent/cli/validation_types.py +0 -0
- {traigent-0.19.1.dev0 → traigent-0.19.2}/traigent/cloud/__init__.py +0 -0
- {traigent-0.19.1.dev0 → traigent-0.19.2}/traigent/cloud/_aiohttp_compat.py +0 -0
- {traigent-0.19.1.dev0 → traigent-0.19.2}/traigent/cloud/agent_dtos.py +0 -0
- {traigent-0.19.1.dev0 → traigent-0.19.2}/traigent/cloud/analytics_auth.py +0 -0
- {traigent-0.19.1.dev0 → traigent-0.19.2}/traigent/cloud/analytics_client.py +0 -0
- {traigent-0.19.1.dev0 → traigent-0.19.2}/traigent/cloud/api_key_manager.py +0 -0
- {traigent-0.19.1.dev0 → traigent-0.19.2}/traigent/cloud/async_batch_transport.py +0 -0
- {traigent-0.19.1.dev0 → traigent-0.19.2}/traigent/cloud/auth.py +0 -0
- {traigent-0.19.1.dev0 → traigent-0.19.2}/traigent/cloud/backend_bridges.py +0 -0
- {traigent-0.19.1.dev0 → traigent-0.19.2}/traigent/cloud/backend_components.py +0 -0
- {traigent-0.19.1.dev0 → traigent-0.19.2}/traigent/cloud/backend_synchronizer.py +0 -0
- {traigent-0.19.1.dev0 → traigent-0.19.2}/traigent/cloud/benchmark_client.py +0 -0
- {traigent-0.19.1.dev0 → traigent-0.19.2}/traigent/cloud/billing.py +0 -0
- {traigent-0.19.1.dev0 → traigent-0.19.2}/traigent/cloud/client.py +0 -0
- {traigent-0.19.1.dev0 → traigent-0.19.2}/traigent/cloud/cloud_operations.py +0 -0
- {traigent-0.19.1.dev0 → traigent-0.19.2}/traigent/cloud/credential_manager.py +0 -0
- {traigent-0.19.1.dev0 → traigent-0.19.2}/traigent/cloud/credential_resolver.py +0 -0
- {traigent-0.19.1.dev0 → traigent-0.19.2}/traigent/cloud/dataset_converter.py +0 -0
- {traigent-0.19.1.dev0 → traigent-0.19.2}/traigent/cloud/dtos.py +0 -0
- {traigent-0.19.1.dev0 → traigent-0.19.2}/traigent/cloud/governance.py +0 -0
- {traigent-0.19.1.dev0 → traigent-0.19.2}/traigent/cloud/integration_manager.py +0 -0
- {traigent-0.19.1.dev0 → traigent-0.19.2}/traigent/cloud/models.py +0 -0
- {traigent-0.19.1.dev0 → traigent-0.19.2}/traigent/cloud/optimizer_client.py +0 -0
- {traigent-0.19.1.dev0 → traigent-0.19.2}/traigent/cloud/password_auth_handler.py +0 -0
- {traigent-0.19.1.dev0 → traigent-0.19.2}/traigent/cloud/privacy_operations.py +0 -0
- {traigent-0.19.1.dev0 → traigent-0.19.2}/traigent/cloud/production_mcp_client.py +0 -0
- {traigent-0.19.1.dev0 → traigent-0.19.2}/traigent/cloud/remote_guidance.py +0 -0
- {traigent-0.19.1.dev0 → traigent-0.19.2}/traigent/cloud/resilient_client.py +0 -0
- {traigent-0.19.1.dev0 → traigent-0.19.2}/traigent/cloud/service.py +0 -0
- {traigent-0.19.1.dev0 → traigent-0.19.2}/traigent/cloud/session_types.py +0 -0
- {traigent-0.19.1.dev0 → traigent-0.19.2}/traigent/cloud/sessions.py +0 -0
- {traigent-0.19.1.dev0 → traigent-0.19.2}/traigent/cloud/smart_pruning.py +0 -0
- {traigent-0.19.1.dev0 → traigent-0.19.2}/traigent/cloud/subset_selection.py +0 -0
- {traigent-0.19.1.dev0 → traigent-0.19.2}/traigent/cloud/sync_manager.py +0 -0
- {traigent-0.19.1.dev0 → traigent-0.19.2}/traigent/cloud/token_manager.py +0 -0
- {traigent-0.19.1.dev0 → traigent-0.19.2}/traigent/cloud/trial_operations.py +0 -0
- {traigent-0.19.1.dev0 → traigent-0.19.2}/traigent/cloud/trial_tracker.py +0 -0
- {traigent-0.19.1.dev0 → traigent-0.19.2}/traigent/cloud/url_security.py +0 -0
- {traigent-0.19.1.dev0 → traigent-0.19.2}/traigent/cloud/user_agent.py +0 -0
- {traigent-0.19.1.dev0 → traigent-0.19.2}/traigent/cloud/validators.py +0 -0
- {traigent-0.19.1.dev0 → traigent-0.19.2}/traigent/config/__init__.py +0 -0
- {traigent-0.19.1.dev0 → traigent-0.19.2}/traigent/config/api_keys.py +0 -0
- {traigent-0.19.1.dev0 → traigent-0.19.2}/traigent/config/ast_transformer.py +0 -0
- {traigent-0.19.1.dev0 → traigent-0.19.2}/traigent/config/backend_config.py +0 -0
- {traigent-0.19.1.dev0 → traigent-0.19.2}/traigent/config/context.py +0 -0
- {traigent-0.19.1.dev0 → traigent-0.19.2}/traigent/config/feature_flags.py +0 -0
- {traigent-0.19.1.dev0 → traigent-0.19.2}/traigent/config/models.yaml +0 -0
- {traigent-0.19.1.dev0 → traigent-0.19.2}/traigent/config/parallel.py +0 -0
- {traigent-0.19.1.dev0 → traigent-0.19.2}/traigent/config/project.py +0 -0
- {traigent-0.19.1.dev0 → traigent-0.19.2}/traigent/config/provider_support.py +0 -0
- {traigent-0.19.1.dev0 → traigent-0.19.2}/traigent/config/providers.py +0 -0
- {traigent-0.19.1.dev0 → traigent-0.19.2}/traigent/config/runtime_injector.py +0 -0
- {traigent-0.19.1.dev0 → traigent-0.19.2}/traigent/config/tenant.py +0 -0
- {traigent-0.19.1.dev0 → traigent-0.19.2}/traigent/config_generator/__init__.py +0 -0
- {traigent-0.19.1.dev0 → traigent-0.19.2}/traigent/config_generator/agent_classifier.py +0 -0
- {traigent-0.19.1.dev0 → traigent-0.19.2}/traigent/config_generator/apply.py +0 -0
- {traigent-0.19.1.dev0 → traigent-0.19.2}/traigent/config_generator/catalog/schemas/tvar_catalog_entry_schema.json +0 -0
- {traigent-0.19.1.dev0 → traigent-0.19.2}/traigent/config_generator/catalog/schemas/tvar_observation_schema.json +0 -0
- {traigent-0.19.1.dev0 → traigent-0.19.2}/traigent/config_generator/catalog/schemas/tvar_value_recommendation_schema.json +0 -0
- {traigent-0.19.1.dev0 → traigent-0.19.2}/traigent/config_generator/catalog/tvar_catalog.v1.json +0 -0
- {traigent-0.19.1.dev0 → traigent-0.19.2}/traigent/config_generator/catalog.py +0 -0
- {traigent-0.19.1.dev0 → traigent-0.19.2}/traigent/config_generator/llm_backend.py +0 -0
- {traigent-0.19.1.dev0 → traigent-0.19.2}/traigent/config_generator/pipeline.py +0 -0
- {traigent-0.19.1.dev0 → traigent-0.19.2}/traigent/config_generator/presets/__init__.py +0 -0
- {traigent-0.19.1.dev0 → traigent-0.19.2}/traigent/config_generator/presets/agent_type_catalog.py +0 -0
- {traigent-0.19.1.dev0 → traigent-0.19.2}/traigent/config_generator/presets/benchmark_catalog.py +0 -0
- {traigent-0.19.1.dev0 → traigent-0.19.2}/traigent/config_generator/presets/constraint_templates.py +0 -0
- {traigent-0.19.1.dev0 → traigent-0.19.2}/traigent/config_generator/presets/range_presets.py +0 -0
- {traigent-0.19.1.dev0 → traigent-0.19.2}/traigent/config_generator/recommendations.py +0 -0
- {traigent-0.19.1.dev0 → traigent-0.19.2}/traigent/config_generator/subsystems/__init__.py +0 -0
- {traigent-0.19.1.dev0 → traigent-0.19.2}/traigent/config_generator/subsystems/benchmarks.py +0 -0
- {traigent-0.19.1.dev0 → traigent-0.19.2}/traigent/config_generator/subsystems/objectives.py +0 -0
- {traigent-0.19.1.dev0 → traigent-0.19.2}/traigent/config_generator/subsystems/safety_constraints.py +0 -0
- {traigent-0.19.1.dev0 → traigent-0.19.2}/traigent/config_generator/subsystems/structural_constraints.py +0 -0
- {traigent-0.19.1.dev0 → traigent-0.19.2}/traigent/config_generator/subsystems/tvar_ranges.py +0 -0
- {traigent-0.19.1.dev0 → traigent-0.19.2}/traigent/config_generator/subsystems/tvar_recommendations.py +0 -0
- {traigent-0.19.1.dev0 → traigent-0.19.2}/traigent/config_generator/types.py +0 -0
- {traigent-0.19.1.dev0 → traigent-0.19.2}/traigent/core/__init__.py +0 -0
- {traigent-0.19.1.dev0 → traigent-0.19.2}/traigent/core/best_config_runtime.py +0 -0
- {traigent-0.19.1.dev0 → traigent-0.19.2}/traigent/core/cache_policy.py +0 -0
- {traigent-0.19.1.dev0 → traigent-0.19.2}/traigent/core/ci_approval.py +0 -0
- {traigent-0.19.1.dev0 → traigent-0.19.2}/traigent/core/config_state_manager.py +0 -0
- {traigent-0.19.1.dev0 → traigent-0.19.2}/traigent/core/constants.py +0 -0
- {traigent-0.19.1.dev0 → traigent-0.19.2}/traigent/core/cost_estimator.py +0 -0
- {traigent-0.19.1.dev0 → traigent-0.19.2}/traigent/core/evaluator_wrapper.py +0 -0
- {traigent-0.19.1.dev0 → traigent-0.19.2}/traigent/core/exception_handler.py +0 -0
- {traigent-0.19.1.dev0 → traigent-0.19.2}/traigent/core/execution_policy_runtime.py +0 -0
- {traigent-0.19.1.dev0 → traigent-0.19.2}/traigent/core/license.py +0 -0
- {traigent-0.19.1.dev0 → traigent-0.19.2}/traigent/core/logger_facade.py +0 -0
- {traigent-0.19.1.dev0 → traigent-0.19.2}/traigent/core/mandatory_metrics.py +0 -0
- {traigent-0.19.1.dev0 → traigent-0.19.2}/traigent/core/meta_types.py +0 -0
- {traigent-0.19.1.dev0 → traigent-0.19.2}/traigent/core/metadata_helpers.py +0 -0
- {traigent-0.19.1.dev0 → traigent-0.19.2}/traigent/core/metric_registry.py +0 -0
- {traigent-0.19.1.dev0 → traigent-0.19.2}/traigent/core/metrics_aggregator.py +0 -0
- {traigent-0.19.1.dev0 → traigent-0.19.2}/traigent/core/namespace.py +0 -0
- {traigent-0.19.1.dev0 → traigent-0.19.2}/traigent/core/optimization_pipeline.py +0 -0
- {traigent-0.19.1.dev0 → traigent-0.19.2}/traigent/core/orchestrator_helpers.py +0 -0
- {traigent-0.19.1.dev0 → traigent-0.19.2}/traigent/core/parallel_execution_manager.py +0 -0
- {traigent-0.19.1.dev0 → traigent-0.19.2}/traigent/core/progress_manager.py +0 -0
- {traigent-0.19.1.dev0 → traigent-0.19.2}/traigent/core/sample_budget.py +0 -0
- {traigent-0.19.1.dev0 → traigent-0.19.2}/traigent/core/samplers/__init__.py +0 -0
- {traigent-0.19.1.dev0 → traigent-0.19.2}/traigent/core/samplers/random_sampler.py +0 -0
- {traigent-0.19.1.dev0 → traigent-0.19.2}/traigent/core/session_context.py +0 -0
- {traigent-0.19.1.dev0 → traigent-0.19.2}/traigent/core/session_types.py +0 -0
- {traigent-0.19.1.dev0 → traigent-0.19.2}/traigent/core/stat_significance.py +0 -0
- {traigent-0.19.1.dev0 → traigent-0.19.2}/traigent/core/stop_condition_manager.py +0 -0
- {traigent-0.19.1.dev0 → traigent-0.19.2}/traigent/core/stop_conditions.py +0 -0
- {traigent-0.19.1.dev0 → traigent-0.19.2}/traigent/core/trace_env.py +0 -0
- {traigent-0.19.1.dev0 → traigent-0.19.2}/traigent/core/tracing.py +0 -0
- {traigent-0.19.1.dev0 → traigent-0.19.2}/traigent/core/trial_context.py +0 -0
- {traigent-0.19.1.dev0 → traigent-0.19.2}/traigent/core/trial_lifecycle.py +0 -0
- {traigent-0.19.1.dev0 → traigent-0.19.2}/traigent/core/trial_result_factory.py +0 -0
- {traigent-0.19.1.dev0 → traigent-0.19.2}/traigent/core/types.py +0 -0
- {traigent-0.19.1.dev0 → traigent-0.19.2}/traigent/core/types_ext.py +0 -0
- {traigent-0.19.1.dev0 → traigent-0.19.2}/traigent/core/utils.py +0 -0
- {traigent-0.19.1.dev0 → traigent-0.19.2}/traigent/core/workflow_trace_manager.py +0 -0
- {traigent-0.19.1.dev0 → traigent-0.19.2}/traigent/core_metrics/__init__.py +0 -0
- {traigent-0.19.1.dev0 → traigent-0.19.2}/traigent/core_metrics/client.py +0 -0
- {traigent-0.19.1.dev0 → traigent-0.19.2}/traigent/core_metrics/config.py +0 -0
- {traigent-0.19.1.dev0 → traigent-0.19.2}/traigent/core_metrics/dtos.py +0 -0
- {traigent-0.19.1.dev0 → traigent-0.19.2}/traigent/defaults.py +0 -0
- {traigent-0.19.1.dev0 → traigent-0.19.2}/traigent/effectuation/__init__.py +0 -0
- {traigent-0.19.1.dev0 → traigent-0.19.2}/traigent/effectuation/contracts.py +0 -0
- {traigent-0.19.1.dev0 → traigent-0.19.2}/traigent/effectuation/strategies/__init__.py +0 -0
- {traigent-0.19.1.dev0 → traigent-0.19.2}/traigent/effectuation/strategies/framework_param.py +0 -0
- {traigent-0.19.1.dev0 → traigent-0.19.2}/traigent/effectuation/strategies/self_consistency.py +0 -0
- {traigent-0.19.1.dev0 → traigent-0.19.2}/traigent/evaluation/__init__.py +0 -0
- {traigent-0.19.1.dev0 → traigent-0.19.2}/traigent/evaluation/client.py +0 -0
- {traigent-0.19.1.dev0 → traigent-0.19.2}/traigent/evaluation/config.py +0 -0
- {traigent-0.19.1.dev0 → traigent-0.19.2}/traigent/evaluation/dtos.py +0 -0
- {traigent-0.19.1.dev0 → traigent-0.19.2}/traigent/evaluators/__init__.py +0 -0
- {traigent-0.19.1.dev0 → traigent-0.19.2}/traigent/evaluators/catalog/metric_eval_catalog.v1.json +0 -0
- {traigent-0.19.1.dev0 → traigent-0.19.2}/traigent/evaluators/catalog/schemas/metric_eval_catalog_entry_schema.json +0 -0
- {traigent-0.19.1.dev0 → traigent-0.19.2}/traigent/evaluators/catalog_loader.py +0 -0
- {traigent-0.19.1.dev0 → traigent-0.19.2}/traigent/evaluators/dataset_registry.py +0 -0
- {traigent-0.19.1.dev0 → traigent-0.19.2}/traigent/evaluators/hybrid_api.py +0 -0
- {traigent-0.19.1.dev0 → traigent-0.19.2}/traigent/evaluators/local.py +0 -0
- {traigent-0.19.1.dev0 → traigent-0.19.2}/traigent/evaluators/metrics.py +0 -0
- {traigent-0.19.1.dev0 → traigent-0.19.2}/traigent/evaluators/metrics_tracker.py +0 -0
- {traigent-0.19.1.dev0 → traigent-0.19.2}/traigent/evaluators/recommendations.py +0 -0
- {traigent-0.19.1.dev0 → traigent-0.19.2}/traigent/examples/__init__.py +0 -0
- {traigent-0.19.1.dev0 → traigent-0.19.2}/traigent/examples/_portal.py +0 -0
- {traigent-0.19.1.dev0 → traigent-0.19.2}/traigent/examples/providers/__init__.py +0 -0
- {traigent-0.19.1.dev0 → traigent-0.19.2}/traigent/examples/providers/_bootstrap.py +0 -0
- {traigent-0.19.1.dev0 → traigent-0.19.2}/traigent/examples/providers/_demo.py +0 -0
- {traigent-0.19.1.dev0 → traigent-0.19.2}/traigent/examples/providers/anthropic.py +0 -0
- {traigent-0.19.1.dev0 → traigent-0.19.2}/traigent/examples/providers/aws.py +0 -0
- {traigent-0.19.1.dev0 → traigent-0.19.2}/traigent/examples/providers/azure.py +0 -0
- {traigent-0.19.1.dev0 → traigent-0.19.2}/traigent/examples/providers/gcp.py +0 -0
- {traigent-0.19.1.dev0 → traigent-0.19.2}/traigent/examples/providers/gemini.py +0 -0
- {traigent-0.19.1.dev0 → traigent-0.19.2}/traigent/examples/providers/groq.py +0 -0
- {traigent-0.19.1.dev0 → traigent-0.19.2}/traigent/examples/providers/litellm_any.py +0 -0
- {traigent-0.19.1.dev0 → traigent-0.19.2}/traigent/examples/providers/manifest.json +0 -0
- {traigent-0.19.1.dev0 → traigent-0.19.2}/traigent/examples/providers/openai.py +0 -0
- {traigent-0.19.1.dev0 → traigent-0.19.2}/traigent/examples/providers/openrouter.py +0 -0
- {traigent-0.19.1.dev0 → traigent-0.19.2}/traigent/examples/providers/qa_samples.jsonl +0 -0
- {traigent-0.19.1.dev0 → traigent-0.19.2}/traigent/examples/quickstart/__init__.py +0 -0
- {traigent-0.19.1.dev0 → traigent-0.19.2}/traigent/examples/quickstart/__main__.py +0 -0
- {traigent-0.19.1.dev0 → traigent-0.19.2}/traigent/examples/quickstart/_env.py +0 -0
- {traigent-0.19.1.dev0 → traigent-0.19.2}/traigent/examples/quickstart/publish_and_verify.py +0 -0
- {traigent-0.19.1.dev0 → traigent-0.19.2}/traigent/examples/quickstart/qa_samples.jsonl +0 -0
- {traigent-0.19.1.dev0 → traigent-0.19.2}/traigent/examples/tutorial_bootstrap.py +0 -0
- {traigent-0.19.1.dev0 → traigent-0.19.2}/traigent/generation/__init__.py +0 -0
- {traigent-0.19.1.dev0 → traigent-0.19.2}/traigent/generation/backend_provider.py +0 -0
- {traigent-0.19.1.dev0 → traigent-0.19.2}/traigent/generation/example_synth.py +0 -0
- {traigent-0.19.1.dev0 → traigent-0.19.2}/traigent/generation/llm_provider.py +0 -0
- {traigent-0.19.1.dev0 → traigent-0.19.2}/traigent/generation/loop.py +0 -0
- {traigent-0.19.1.dev0 → traigent-0.19.2}/traigent/generation/models.py +0 -0
- {traigent-0.19.1.dev0 → traigent-0.19.2}/traigent/generation/options.py +0 -0
- {traigent-0.19.1.dev0 → traigent-0.19.2}/traigent/generation/prompt_rewriter.py +0 -0
- {traigent-0.19.1.dev0 → traigent-0.19.2}/traigent/generation/skill_train/__init__.py +0 -0
- {traigent-0.19.1.dev0 → traigent-0.19.2}/traigent/generation/skill_train/_deterministic_indices.py +0 -0
- {traigent-0.19.1.dev0 → traigent-0.19.2}/traigent/generation/skill_train/artifacts.py +0 -0
- {traigent-0.19.1.dev0 → traigent-0.19.2}/traigent/generation/skill_train/buffer.py +0 -0
- {traigent-0.19.1.dev0 → traigent-0.19.2}/traigent/generation/skill_train/document.py +0 -0
- {traigent-0.19.1.dev0 → traigent-0.19.2}/traigent/generation/skill_train/edits.py +0 -0
- {traigent-0.19.1.dev0 → traigent-0.19.2}/traigent/generation/skill_train/prompts.py +0 -0
- {traigent-0.19.1.dev0 → traigent-0.19.2}/traigent/generation/skill_train/reflection.py +0 -0
- {traigent-0.19.1.dev0 → traigent-0.19.2}/traigent/generation/skill_train/schedule.py +0 -0
- {traigent-0.19.1.dev0 → traigent-0.19.2}/traigent/generation/skill_train/slow_update.py +0 -0
- {traigent-0.19.1.dev0 → traigent-0.19.2}/traigent/generation/skill_train/splits.py +0 -0
- {traigent-0.19.1.dev0 → traigent-0.19.2}/traigent/generation/skill_train/trainer.py +0 -0
- {traigent-0.19.1.dev0 → traigent-0.19.2}/traigent/generation/skill_train/trainer_result.py +0 -0
- {traigent-0.19.1.dev0 → traigent-0.19.2}/traigent/generation/validators.py +0 -0
- {traigent-0.19.1.dev0 → traigent-0.19.2}/traigent/guaranteed_modes.py +0 -0
- {traigent-0.19.1.dev0 → traigent-0.19.2}/traigent/hooks/__init__.py +0 -0
- {traigent-0.19.1.dev0 → traigent-0.19.2}/traigent/hooks/config.py +0 -0
- {traigent-0.19.1.dev0 → traigent-0.19.2}/traigent/hooks/installer.py +0 -0
- {traigent-0.19.1.dev0 → traigent-0.19.2}/traigent/hooks/validator.py +0 -0
- {traigent-0.19.1.dev0 → traigent-0.19.2}/traigent/hybrid/__init__.py +0 -0
- {traigent-0.19.1.dev0 → traigent-0.19.2}/traigent/hybrid/discovery.py +0 -0
- {traigent-0.19.1.dev0 → traigent-0.19.2}/traigent/hybrid/http_transport.py +0 -0
- {traigent-0.19.1.dev0 → traigent-0.19.2}/traigent/hybrid/lifecycle.py +0 -0
- {traigent-0.19.1.dev0 → traigent-0.19.2}/traigent/hybrid/mcp_transport.py +0 -0
- {traigent-0.19.1.dev0 → traigent-0.19.2}/traigent/hybrid/protocol.py +0 -0
- {traigent-0.19.1.dev0 → traigent-0.19.2}/traigent/hybrid/transport.py +0 -0
- {traigent-0.19.1.dev0 → traigent-0.19.2}/traigent/integrations/__init__.py +0 -0
- {traigent-0.19.1.dev0 → traigent-0.19.2}/traigent/integrations/activation.py +0 -0
- {traigent-0.19.1.dev0 → traigent-0.19.2}/traigent/integrations/base.py +0 -0
- {traigent-0.19.1.dev0 → traigent-0.19.2}/traigent/integrations/base_plugin.py +0 -0
- {traigent-0.19.1.dev0 → traigent-0.19.2}/traigent/integrations/bedrock_client.py +0 -0
- {traigent-0.19.1.dev0 → traigent-0.19.2}/traigent/integrations/config.py +0 -0
- {traigent-0.19.1.dev0 → traigent-0.19.2}/traigent/integrations/dspy_adapter.py +0 -0
- {traigent-0.19.1.dev0 → traigent-0.19.2}/traigent/integrations/framework_override.py +0 -0
- {traigent-0.19.1.dev0 → traigent-0.19.2}/traigent/integrations/langchain/__init__.py +0 -0
- {traigent-0.19.1.dev0 → traigent-0.19.2}/traigent/integrations/langchain/handler.py +0 -0
- {traigent-0.19.1.dev0 → traigent-0.19.2}/traigent/integrations/langfuse/__init__.py +0 -0
- {traigent-0.19.1.dev0 → traigent-0.19.2}/traigent/integrations/langfuse/callback.py +0 -0
- {traigent-0.19.1.dev0 → traigent-0.19.2}/traigent/integrations/langfuse/client.py +0 -0
- {traigent-0.19.1.dev0 → traigent-0.19.2}/traigent/integrations/langfuse/tracker.py +0 -0
- {traigent-0.19.1.dev0 → traigent-0.19.2}/traigent/integrations/llms/__init__.py +0 -0
- {traigent-0.19.1.dev0 → traigent-0.19.2}/traigent/integrations/llms/anthropic_plugin.py +0 -0
- {traigent-0.19.1.dev0 → traigent-0.19.2}/traigent/integrations/llms/azure_openai_plugin.py +0 -0
- {traigent-0.19.1.dev0 → traigent-0.19.2}/traigent/integrations/llms/base_llm_plugin.py +0 -0
- {traigent-0.19.1.dev0 → traigent-0.19.2}/traigent/integrations/llms/bedrock_plugin.py +0 -0
- {traigent-0.19.1.dev0 → traigent-0.19.2}/traigent/integrations/llms/cohere_plugin.py +0 -0
- {traigent-0.19.1.dev0 → traigent-0.19.2}/traigent/integrations/llms/gemini_plugin.py +0 -0
- {traigent-0.19.1.dev0 → traigent-0.19.2}/traigent/integrations/llms/huggingface_plugin.py +0 -0
- {traigent-0.19.1.dev0 → traigent-0.19.2}/traigent/integrations/llms/langchain/__init__.py +0 -0
- {traigent-0.19.1.dev0 → traigent-0.19.2}/traigent/integrations/llms/langchain/base.py +0 -0
- {traigent-0.19.1.dev0 → traigent-0.19.2}/traigent/integrations/llms/langchain_plugin.py +0 -0
- {traigent-0.19.1.dev0 → traigent-0.19.2}/traigent/integrations/llms/litellm_plugin.py +0 -0
- {traigent-0.19.1.dev0 → traigent-0.19.2}/traigent/integrations/llms/llamaindex_plugin.py +0 -0
- {traigent-0.19.1.dev0 → traigent-0.19.2}/traigent/integrations/llms/mistral_plugin.py +0 -0
- {traigent-0.19.1.dev0 → traigent-0.19.2}/traigent/integrations/llms/openai.py +0 -0
- {traigent-0.19.1.dev0 → traigent-0.19.2}/traigent/integrations/llms/openai_plugin.py +0 -0
- {traigent-0.19.1.dev0 → traigent-0.19.2}/traigent/integrations/mappings.py +0 -0
- {traigent-0.19.1.dev0 → traigent-0.19.2}/traigent/integrations/model_discovery/__init__.py +0 -0
- {traigent-0.19.1.dev0 → traigent-0.19.2}/traigent/integrations/model_discovery/anthropic_discovery.py +0 -0
- {traigent-0.19.1.dev0 → traigent-0.19.2}/traigent/integrations/model_discovery/azure_discovery.py +0 -0
- {traigent-0.19.1.dev0 → traigent-0.19.2}/traigent/integrations/model_discovery/base.py +0 -0
- {traigent-0.19.1.dev0 → traigent-0.19.2}/traigent/integrations/model_discovery/cache.py +0 -0
- {traigent-0.19.1.dev0 → traigent-0.19.2}/traigent/integrations/model_discovery/gemini_discovery.py +0 -0
- {traigent-0.19.1.dev0 → traigent-0.19.2}/traigent/integrations/model_discovery/mistral_discovery.py +0 -0
- {traigent-0.19.1.dev0 → traigent-0.19.2}/traigent/integrations/model_discovery/openai_discovery.py +0 -0
- {traigent-0.19.1.dev0 → traigent-0.19.2}/traigent/integrations/model_discovery/registry.py +0 -0
- {traigent-0.19.1.dev0 → traigent-0.19.2}/traigent/integrations/observability/__init__.py +0 -0
- {traigent-0.19.1.dev0 → traigent-0.19.2}/traigent/integrations/observability/mlflow.py +0 -0
- {traigent-0.19.1.dev0 → traigent-0.19.2}/traigent/integrations/observability/wandb.py +0 -0
- {traigent-0.19.1.dev0 → traigent-0.19.2}/traigent/integrations/observability/workflow_traces.py +0 -0
- {traigent-0.19.1.dev0 → traigent-0.19.2}/traigent/integrations/plugin_registry.py +0 -0
- {traigent-0.19.1.dev0 → traigent-0.19.2}/traigent/integrations/providers.py +0 -0
- {traigent-0.19.1.dev0 → traigent-0.19.2}/traigent/integrations/pydantic_ai/__init__.py +0 -0
- {traigent-0.19.1.dev0 → traigent-0.19.2}/traigent/integrations/pydantic_ai/_types.py +0 -0
- {traigent-0.19.1.dev0 → traigent-0.19.2}/traigent/integrations/pydantic_ai/handler.py +0 -0
- {traigent-0.19.1.dev0 → traigent-0.19.2}/traigent/integrations/pydantic_ai/plugin.py +0 -0
- {traigent-0.19.1.dev0 → traigent-0.19.2}/traigent/integrations/utils/__init__.py +0 -0
- {traigent-0.19.1.dev0 → traigent-0.19.2}/traigent/integrations/utils/discovery.py +0 -0
- {traigent-0.19.1.dev0 → traigent-0.19.2}/traigent/integrations/utils/message_coercion.py +0 -0
- {traigent-0.19.1.dev0 → traigent-0.19.2}/traigent/integrations/utils/mock_adapter.py +0 -0
- {traigent-0.19.1.dev0 → traigent-0.19.2}/traigent/integrations/utils/parameter_normalizer.py +0 -0
- {traigent-0.19.1.dev0 → traigent-0.19.2}/traigent/integrations/utils/response_wrapper.py +0 -0
- {traigent-0.19.1.dev0 → traigent-0.19.2}/traigent/integrations/utils/validation.py +0 -0
- {traigent-0.19.1.dev0 → traigent-0.19.2}/traigent/integrations/utils/version_compat.py +0 -0
- {traigent-0.19.1.dev0 → traigent-0.19.2}/traigent/integrations/vector_stores/__init__.py +0 -0
- {traigent-0.19.1.dev0 → traigent-0.19.2}/traigent/integrations/vector_stores/base.py +0 -0
- {traigent-0.19.1.dev0 → traigent-0.19.2}/traigent/integrations/vector_stores/chromadb_plugin.py +0 -0
- {traigent-0.19.1.dev0 → traigent-0.19.2}/traigent/integrations/vector_stores/pinecone_plugin.py +0 -0
- {traigent-0.19.1.dev0 → traigent-0.19.2}/traigent/integrations/vector_stores/weaviate_plugin.py +0 -0
- {traigent-0.19.1.dev0 → traigent-0.19.2}/traigent/integrations/wrappers.py +0 -0
- {traigent-0.19.1.dev0 → traigent-0.19.2}/traigent/invokers/__init__.py +0 -0
- {traigent-0.19.1.dev0 → traigent-0.19.2}/traigent/invokers/base.py +0 -0
- {traigent-0.19.1.dev0 → traigent-0.19.2}/traigent/invokers/batch.py +0 -0
- {traigent-0.19.1.dev0 → traigent-0.19.2}/traigent/invokers/local.py +0 -0
- {traigent-0.19.1.dev0 → traigent-0.19.2}/traigent/invokers/streaming.py +0 -0
- {traigent-0.19.1.dev0 → traigent-0.19.2}/traigent/knobs/__init__.py +0 -0
- {traigent-0.19.1.dev0 → traigent-0.19.2}/traigent/knobs/adapters.py +0 -0
- {traigent-0.19.1.dev0 → traigent-0.19.2}/traigent/knobs/bindings.py +0 -0
- {traigent-0.19.1.dev0 → traigent-0.19.2}/traigent/knobs/canonical.py +0 -0
- {traigent-0.19.1.dev0 → traigent-0.19.2}/traigent/knobs/cascade.py +0 -0
- {traigent-0.19.1.dev0 → traigent-0.19.2}/traigent/knobs/certificates.py +0 -0
- {traigent-0.19.1.dev0 → traigent-0.19.2}/traigent/knobs/composites.py +0 -0
- {traigent-0.19.1.dev0 → traigent-0.19.2}/traigent/knobs/kinds.py +0 -0
- {traigent-0.19.1.dev0 → traigent-0.19.2}/traigent/knobs/patterns.py +0 -0
- {traigent-0.19.1.dev0 → traigent-0.19.2}/traigent/knobs/resolution.py +0 -0
- {traigent-0.19.1.dev0 → traigent-0.19.2}/traigent/knobs/resolver.py +0 -0
- {traigent-0.19.1.dev0 → traigent-0.19.2}/traigent/knobs/runtime.py +0 -0
- {traigent-0.19.1.dev0 → traigent-0.19.2}/traigent/knobs/signals.py +0 -0
- {traigent-0.19.1.dev0 → traigent-0.19.2}/traigent/knobs/telemetry.py +0 -0
- {traigent-0.19.1.dev0 → traigent-0.19.2}/traigent/mcp/__init__.py +0 -0
- {traigent-0.19.1.dev0 → traigent-0.19.2}/traigent/mcp/server.py +0 -0
- {traigent-0.19.1.dev0 → traigent-0.19.2}/traigent/mcp/tools.py +0 -0
- {traigent-0.19.1.dev0 → traigent-0.19.2}/traigent/metrics/__init__.py +0 -0
- {traigent-0.19.1.dev0 → traigent-0.19.2}/traigent/metrics/agent_metrics.py +0 -0
- {traigent-0.19.1.dev0 → traigent-0.19.2}/traigent/metrics/content_features.py +0 -0
- {traigent-0.19.1.dev0 → traigent-0.19.2}/traigent/metrics/deepeval_metrics.py +0 -0
- {traigent-0.19.1.dev0 → traigent-0.19.2}/traigent/metrics/ragas_metrics.py +0 -0
- {traigent-0.19.1.dev0 → traigent-0.19.2}/traigent/metrics/registry.py +0 -0
- {traigent-0.19.1.dev0 → traigent-0.19.2}/traigent/observability/__init__.py +0 -0
- {traigent-0.19.1.dev0 → traigent-0.19.2}/traigent/observability/agent_spans.py +0 -0
- {traigent-0.19.1.dev0 → traigent-0.19.2}/traigent/observability/client.py +0 -0
- {traigent-0.19.1.dev0 → traigent-0.19.2}/traigent/observability/config.py +0 -0
- {traigent-0.19.1.dev0 → traigent-0.19.2}/traigent/observability/decorators.py +0 -0
- {traigent-0.19.1.dev0 → traigent-0.19.2}/traigent/observability/dtos.py +0 -0
- {traigent-0.19.1.dev0 → traigent-0.19.2}/traigent/optimizers/__init__.py +0 -0
- {traigent-0.19.1.dev0 → traigent-0.19.2}/traigent/optimizers/base.py +0 -0
- {traigent-0.19.1.dev0 → traigent-0.19.2}/traigent/optimizers/batch_optimizers.py +0 -0
- {traigent-0.19.1.dev0 → traigent-0.19.2}/traigent/optimizers/cloud_optimizer.py +0 -0
- {traigent-0.19.1.dev0 → traigent-0.19.2}/traigent/optimizers/interactive_optimizer.py +0 -0
- {traigent-0.19.1.dev0 → traigent-0.19.2}/traigent/optimizers/random.py +0 -0
- {traigent-0.19.1.dev0 → traigent-0.19.2}/traigent/optimizers/registry.py +0 -0
- {traigent-0.19.1.dev0 → traigent-0.19.2}/traigent/optimizers/remote.py +0 -0
- {traigent-0.19.1.dev0 → traigent-0.19.2}/traigent/optimizers/remote_services.py +0 -0
- {traigent-0.19.1.dev0 → traigent-0.19.2}/traigent/optimizers/results.py +0 -0
- {traigent-0.19.1.dev0 → traigent-0.19.2}/traigent/playbook/__init__.py +0 -0
- {traigent-0.19.1.dev0 → traigent-0.19.2}/traigent/playbook/loader.py +0 -0
- {traigent-0.19.1.dev0 → traigent-0.19.2}/traigent/playbook/model.py +0 -0
- {traigent-0.19.1.dev0 → traigent-0.19.2}/traigent/playbook/scaffold.py +0 -0
- {traigent-0.19.1.dev0 → traigent-0.19.2}/traigent/playbook/schemas/agent_playbook_schema.json +0 -0
- {traigent-0.19.1.dev0 → traigent-0.19.2}/traigent/playbook/staleness.py +0 -0
- {traigent-0.19.1.dev0 → traigent-0.19.2}/traigent/playbook/validator.py +0 -0
- {traigent-0.19.1.dev0 → traigent-0.19.2}/traigent/plugins/__init__.py +0 -0
- {traigent-0.19.1.dev0 → traigent-0.19.2}/traigent/plugins/registry.py +0 -0
- {traigent-0.19.1.dev0 → traigent-0.19.2}/traigent/projects/__init__.py +0 -0
- {traigent-0.19.1.dev0 → traigent-0.19.2}/traigent/projects/client.py +0 -0
- {traigent-0.19.1.dev0 → traigent-0.19.2}/traigent/projects/config.py +0 -0
- {traigent-0.19.1.dev0 → traigent-0.19.2}/traigent/projects/dtos.py +0 -0
- {traigent-0.19.1.dev0 → traigent-0.19.2}/traigent/prompts/__init__.py +0 -0
- {traigent-0.19.1.dev0 → traigent-0.19.2}/traigent/prompts/client.py +0 -0
- {traigent-0.19.1.dev0 → traigent-0.19.2}/traigent/prompts/config.py +0 -0
- {traigent-0.19.1.dev0 → traigent-0.19.2}/traigent/prompts/dtos.py +0 -0
- {traigent-0.19.1.dev0 → traigent-0.19.2}/traigent/providers/__init__.py +0 -0
- {traigent-0.19.1.dev0 → traigent-0.19.2}/traigent/providers/validation.py +0 -0
- {traigent-0.19.1.dev0 → traigent-0.19.2}/traigent/py.typed +0 -0
- {traigent-0.19.1.dev0 → traigent-0.19.2}/traigent/reporting/__init__.py +0 -0
- {traigent-0.19.1.dev0 → traigent-0.19.2}/traigent/reporting/example_map.py +0 -0
- {traigent-0.19.1.dev0 → traigent-0.19.2}/traigent/security/__init__.py +0 -0
- {traigent-0.19.1.dev0 → traigent-0.19.2}/traigent/security/audit.py +0 -0
- {traigent-0.19.1.dev0 → traigent-0.19.2}/traigent/security/auth/__init__.py +0 -0
- {traigent-0.19.1.dev0 → traigent-0.19.2}/traigent/security/auth/helpers.py +0 -0
- {traigent-0.19.1.dev0 → traigent-0.19.2}/traigent/security/auth/mfa.py +0 -0
- {traigent-0.19.1.dev0 → traigent-0.19.2}/traigent/security/auth/models.py +0 -0
- {traigent-0.19.1.dev0 → traigent-0.19.2}/traigent/security/auth/oidc.py +0 -0
- {traigent-0.19.1.dev0 → traigent-0.19.2}/traigent/security/auth/saml.py +0 -0
- {traigent-0.19.1.dev0 → traigent-0.19.2}/traigent/security/auth/sms.py +0 -0
- {traigent-0.19.1.dev0 → traigent-0.19.2}/traigent/security/auth/totp.py +0 -0
- {traigent-0.19.1.dev0 → traigent-0.19.2}/traigent/security/config.py +0 -0
- {traigent-0.19.1.dev0 → traigent-0.19.2}/traigent/security/credentials.py +0 -0
- {traigent-0.19.1.dev0 → traigent-0.19.2}/traigent/security/crypto_utils.py +0 -0
- {traigent-0.19.1.dev0 → traigent-0.19.2}/traigent/security/deployment.py +0 -0
- {traigent-0.19.1.dev0 → traigent-0.19.2}/traigent/security/encryption.py +0 -0
- {traigent-0.19.1.dev0 → traigent-0.19.2}/traigent/security/enterprise.py +0 -0
- {traigent-0.19.1.dev0 → traigent-0.19.2}/traigent/security/headers.py +0 -0
- {traigent-0.19.1.dev0 → traigent-0.19.2}/traigent/security/input_validation.py +0 -0
- {traigent-0.19.1.dev0 → traigent-0.19.2}/traigent/security/jwt_validator.py +0 -0
- {traigent-0.19.1.dev0 → traigent-0.19.2}/traigent/security/rate_limiter.py +0 -0
- {traigent-0.19.1.dev0 → traigent-0.19.2}/traigent/security/redaction.py +0 -0
- {traigent-0.19.1.dev0 → traigent-0.19.2}/traigent/security/session_manager.py +0 -0
- {traigent-0.19.1.dev0 → traigent-0.19.2}/traigent/security/tenant.py +0 -0
- {traigent-0.19.1.dev0 → traigent-0.19.2}/traigent/skills/traigent-analyze-results/SKILL.md +0 -0
- {traigent-0.19.1.dev0 → traigent-0.19.2}/traigent/skills/traigent-analyze-results/references/convergence-patterns.md +0 -0
- {traigent-0.19.1.dev0 → traigent-0.19.2}/traigent/skills/traigent-analyze-results/references/optimization-result-api.md +0 -0
- {traigent-0.19.1.dev0 → traigent-0.19.2}/traigent/skills/traigent-configuration-space/SKILL.md +0 -0
- {traigent-0.19.1.dev0 → traigent-0.19.2}/traigent/skills/traigent-configuration-space/references/constraints.md +0 -0
- {traigent-0.19.1.dev0 → traigent-0.19.2}/traigent/skills/traigent-configuration-space/references/parameter-types.md +0 -0
- {traigent-0.19.1.dev0 → traigent-0.19.2}/traigent/skills/traigent-debugging/SKILL.md +0 -0
- {traigent-0.19.1.dev0 → traigent-0.19.2}/traigent/skills/traigent-debugging/references/error-reference.md +0 -0
- {traigent-0.19.1.dev0 → traigent-0.19.2}/traigent/skills/traigent-debugging/references/logging-config.md +0 -0
- {traigent-0.19.1.dev0 → traigent-0.19.2}/traigent/skills/traigent-debugging/references/mock-mode.md +0 -0
- {traigent-0.19.1.dev0 → traigent-0.19.2}/traigent/skills/traigent-decorator-setup/SKILL.md +0 -0
- {traigent-0.19.1.dev0 → traigent-0.19.2}/traigent/skills/traigent-decorator-setup/references/evaluation-options.md +0 -0
- {traigent-0.19.1.dev0 → traigent-0.19.2}/traigent/skills/traigent-decorator-setup/references/execution-modes.md +0 -0
- {traigent-0.19.1.dev0 → traigent-0.19.2}/traigent/skills/traigent-decorator-setup/references/injection-modes.md +0 -0
- {traigent-0.19.1.dev0 → traigent-0.19.2}/traigent/skills/traigent-integrations/SKILL.md +0 -0
- {traigent-0.19.1.dev0 → traigent-0.19.2}/traigent/skills/traigent-integrations/references/dspy.md +0 -0
- {traigent-0.19.1.dev0 → traigent-0.19.2}/traigent/skills/traigent-integrations/references/langchain.md +0 -0
- {traigent-0.19.1.dev0 → traigent-0.19.2}/traigent/skills/traigent-integrations/references/litellm.md +0 -0
- {traigent-0.19.1.dev0 → traigent-0.19.2}/traigent/skills/traigent-quickstart/SKILL.md +0 -0
- {traigent-0.19.1.dev0 → traigent-0.19.2}/traigent/skills/traigent-quickstart/references/environment-variables.md +0 -0
- {traigent-0.19.1.dev0 → traigent-0.19.2}/traigent/skills/traigent-quickstart/references/installation-extras.md +0 -0
- {traigent-0.19.1.dev0 → traigent-0.19.2}/traigent/skills/traigent-run-optimization/SKILL.md +0 -0
- {traigent-0.19.1.dev0 → traigent-0.19.2}/traigent/skills/traigent-run-optimization/references/algorithms.md +0 -0
- {traigent-0.19.1.dev0 → traigent-0.19.2}/traigent/skills/traigent-run-optimization/references/cost-management.md +0 -0
- {traigent-0.19.1.dev0 → traigent-0.19.2}/traigent/skills/traigent-run-optimization/references/parallel-config.md +0 -0
- {traigent-0.19.1.dev0 → traigent-0.19.2}/traigent/storage/__init__.py +0 -0
- {traigent-0.19.1.dev0 → traigent-0.19.2}/traigent/storage/local_storage.py +0 -0
- {traigent-0.19.1.dev0 → traigent-0.19.2}/traigent/testing/__init__.py +0 -0
- {traigent-0.19.1.dev0 → traigent-0.19.2}/traigent/traigent_client.py +0 -0
- {traigent-0.19.1.dev0 → traigent-0.19.2}/traigent/traigent_integration.py +0 -0
- {traigent-0.19.1.dev0 → traigent-0.19.2}/traigent/tuned_variables/__init__.py +0 -0
- {traigent-0.19.1.dev0 → traigent-0.19.2}/traigent/tuned_variables/dataflow_strategy.py +0 -0
- {traigent-0.19.1.dev0 → traigent-0.19.2}/traigent/tuned_variables/detection_strategies.py +0 -0
- {traigent-0.19.1.dev0 → traigent-0.19.2}/traigent/tuned_variables/detection_types.py +0 -0
- {traigent-0.19.1.dev0 → traigent-0.19.2}/traigent/tuned_variables/detector.py +0 -0
- {traigent-0.19.1.dev0 → traigent-0.19.2}/traigent/tuned_variables/discovery.py +0 -0
- {traigent-0.19.1.dev0 → traigent-0.19.2}/traigent/tuned_variables/observation.py +0 -0
- {traigent-0.19.1.dev0 → traigent-0.19.2}/traigent/tuned_variables/py.typed +0 -0
- {traigent-0.19.1.dev0 → traigent-0.19.2}/traigent/tvl/__init__.py +0 -0
- {traigent-0.19.1.dev0 → traigent-0.19.2}/traigent/tvl/__main__.py +0 -0
- {traigent-0.19.1.dev0 → traigent-0.19.2}/traigent/tvl/models.py +0 -0
- {traigent-0.19.1.dev0 → traigent-0.19.2}/traigent/tvl/objectives.py +0 -0
- {traigent-0.19.1.dev0 → traigent-0.19.2}/traigent/tvl/options.py +0 -0
- {traigent-0.19.1.dev0 → traigent-0.19.2}/traigent/tvl/promotion_gate.py +0 -0
- {traigent-0.19.1.dev0 → traigent-0.19.2}/traigent/tvl/registry.py +0 -0
- {traigent-0.19.1.dev0 → traigent-0.19.2}/traigent/tvl/spec_loader.py +0 -0
- {traigent-0.19.1.dev0 → traigent-0.19.2}/traigent/tvl/spec_validator.py +0 -0
- {traigent-0.19.1.dev0 → traigent-0.19.2}/traigent/tvl/statistics.py +0 -0
- {traigent-0.19.1.dev0 → traigent-0.19.2}/traigent/utils/__init__.py +0 -0
- {traigent-0.19.1.dev0 → traigent-0.19.2}/traigent/utils/artifact_fingerprints.py +0 -0
- {traigent-0.19.1.dev0 → traigent-0.19.2}/traigent/utils/batch_optimizer_utils.py +0 -0
- {traigent-0.19.1.dev0 → traigent-0.19.2}/traigent/utils/batch_processing.py +0 -0
- {traigent-0.19.1.dev0 → traigent-0.19.2}/traigent/utils/callbacks.py +0 -0
- {traigent-0.19.1.dev0 → traigent-0.19.2}/traigent/utils/console.py +0 -0
- {traigent-0.19.1.dev0 → traigent-0.19.2}/traigent/utils/constraints.py +0 -0
- {traigent-0.19.1.dev0 → traigent-0.19.2}/traigent/utils/cost_calculator.py +0 -0
- {traigent-0.19.1.dev0 → traigent-0.19.2}/traigent/utils/diagnostics.py +0 -0
- {traigent-0.19.1.dev0 → traigent-0.19.2}/traigent/utils/discrete_domains.py +0 -0
- {traigent-0.19.1.dev0 → traigent-0.19.2}/traigent/utils/env_config.py +0 -0
- {traigent-0.19.1.dev0 → traigent-0.19.2}/traigent/utils/error_handler.py +0 -0
- {traigent-0.19.1.dev0 → traigent-0.19.2}/traigent/utils/example_id.py +0 -0
- {traigent-0.19.1.dev0 → traigent-0.19.2}/traigent/utils/exceptions.py +0 -0
- {traigent-0.19.1.dev0 → traigent-0.19.2}/traigent/utils/file_versioning.py +0 -0
- {traigent-0.19.1.dev0 → traigent-0.19.2}/traigent/utils/function_identity.py +0 -0
- {traigent-0.19.1.dev0 → traigent-0.19.2}/traigent/utils/hashing.py +0 -0
- {traigent-0.19.1.dev0 → traigent-0.19.2}/traigent/utils/importance.py +0 -0
- {traigent-0.19.1.dev0 → traigent-0.19.2}/traigent/utils/incentives.py +0 -0
- {traigent-0.19.1.dev0 → traigent-0.19.2}/traigent/utils/insights.py +0 -0
- {traigent-0.19.1.dev0 → traigent-0.19.2}/traigent/utils/langchain_interceptor.py +0 -0
- {traigent-0.19.1.dev0 → traigent-0.19.2}/traigent/utils/litellm_interceptor.py +0 -0
- {traigent-0.19.1.dev0 → traigent-0.19.2}/traigent/utils/llm_response_parsing.py +0 -0
- {traigent-0.19.1.dev0 → traigent-0.19.2}/traigent/utils/local_analytics.py +0 -0
- {traigent-0.19.1.dev0 → traigent-0.19.2}/traigent/utils/logging.py +0 -0
- {traigent-0.19.1.dev0 → traigent-0.19.2}/traigent/utils/multi_objective.py +0 -0
- {traigent-0.19.1.dev0 → traigent-0.19.2}/traigent/utils/numpy_compat.py +0 -0
- {traigent-0.19.1.dev0 → traigent-0.19.2}/traigent/utils/objectives.py +0 -0
- {traigent-0.19.1.dev0 → traigent-0.19.2}/traigent/utils/optimization_analyzer.py +0 -0
- {traigent-0.19.1.dev0 → traigent-0.19.2}/traigent/utils/optimization_logger.py +0 -0
- {traigent-0.19.1.dev0 → traigent-0.19.2}/traigent/utils/pagination.py +0 -0
- {traigent-0.19.1.dev0 → traigent-0.19.2}/traigent/utils/persistence.py +0 -0
- {traigent-0.19.1.dev0 → traigent-0.19.2}/traigent/utils/results_table.py +0 -0
- {traigent-0.19.1.dev0 → traigent-0.19.2}/traigent/utils/retry.py +0 -0
- {traigent-0.19.1.dev0 → traigent-0.19.2}/traigent/utils/secure_path.py +0 -0
- {traigent-0.19.1.dev0 → traigent-0.19.2}/traigent/utils/url_security.py +0 -0
- {traigent-0.19.1.dev0 → traigent-0.19.2}/traigent/utils/validation.py +0 -0
- {traigent-0.19.1.dev0 → traigent-0.19.2}/traigent/visualization/__init__.py +0 -0
- {traigent-0.19.1.dev0 → traigent-0.19.2}/traigent/visualization/plots.py +0 -0
- {traigent-0.19.1.dev0 → traigent-0.19.2}/traigent/wrapper/__init__.py +0 -0
- {traigent-0.19.1.dev0 → traigent-0.19.2}/traigent/wrapper/errors.py +0 -0
- {traigent-0.19.1.dev0 → traigent-0.19.2}/traigent/wrapper/server.py +0 -0
- {traigent-0.19.1.dev0 → traigent-0.19.2}/traigent/wrapper/service.py +0 -0
- {traigent-0.19.1.dev0 → traigent-0.19.2}/traigent.egg-info/SOURCES.txt +0 -0
- {traigent-0.19.1.dev0 → traigent-0.19.2}/traigent.egg-info/dependency_links.txt +0 -0
- {traigent-0.19.1.dev0 → traigent-0.19.2}/traigent.egg-info/entry_points.txt +0 -0
- {traigent-0.19.1.dev0 → traigent-0.19.2}/traigent.egg-info/requires.txt +0 -0
- {traigent-0.19.1.dev0 → traigent-0.19.2}/traigent.egg-info/top_level.txt +0 -0
- {traigent-0.19.1.dev0 → traigent-0.19.2}/traigent_validation/__init__.py +0 -0
- {traigent-0.19.1.dev0 → traigent-0.19.2}/traigent_validation/base.py +0 -0
- {traigent-0.19.1.dev0 → traigent-0.19.2}/traigent_validation/plugins.py +0 -0
- {traigent-0.19.1.dev0 → traigent-0.19.2}/traigent_validation/py.typed +0 -0
- {traigent-0.19.1.dev0 → traigent-0.19.2}/traigent_validation/validators.py +0 -0
|
@@ -6,6 +6,71 @@ Format based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/).
|
|
|
6
6
|
|
|
7
7
|
## [Unreleased]
|
|
8
8
|
|
|
9
|
+
## [0.19.2] - 2026-07-04
|
|
10
|
+
|
|
11
|
+
Multi-run analytics release: agents can now read the experiment-group
|
|
12
|
+
cohort — one aggregated, source-preserving table of results across runs
|
|
13
|
+
for the same agent + dataset.
|
|
14
|
+
|
|
15
|
+
### Added
|
|
16
|
+
- Three analytics MCP tools exposing the experiment-group cohort
|
|
17
|
+
endpoints: `analytics_list_experiment_groups`,
|
|
18
|
+
`analytics_get_experiment_group`, and
|
|
19
|
+
`analytics_list_experiment_group_configuration_runs` (one row per
|
|
20
|
+
configuration-run across the cohort's runs, carrying `configuration`,
|
|
21
|
+
`measures`, status, `trial_number`, and source ids). Rows remain
|
|
22
|
+
individual source runs — grouped, never merged or deduped by config
|
|
23
|
+
hash. (#1707)
|
|
24
|
+
- Server/tool parity guard: every `ANALYTICS_TOOL_NAMES` entry must be
|
|
25
|
+
registered on the FastMCP server, so a defined-but-unregistered tool
|
|
26
|
+
can no longer ship silently. (#1707)
|
|
27
|
+
|
|
28
|
+
### Fixed
|
|
29
|
+
- `traigent next-steps` now honors `TRAIGENT_BACKEND_URL` /
|
|
30
|
+
`TRAIGENT_API_URL` — the `--backend-url` option previously ignored the
|
|
31
|
+
documented environment variable and silently fell back to
|
|
32
|
+
`http://localhost:5000`. Wiring and help text now match
|
|
33
|
+
`traigent plan`. (#1707)
|
|
34
|
+
|
|
35
|
+
## [0.19.1] - 2026-07-03
|
|
36
|
+
|
|
37
|
+
No-silent-legacy hardening release: five classes of silent failure now either
|
|
38
|
+
work correctly or fail loudly.
|
|
39
|
+
|
|
40
|
+
### Fixed
|
|
41
|
+
- `ObjectiveSchema` weights now govern `best_config` selection for grid/random
|
|
42
|
+
runs via observed-range (min-max, orientation-aware) weighted scoring;
|
|
43
|
+
per-trial `metrics["score"]` is populated and post-hoc
|
|
44
|
+
`calculate_weighted_scores` uses the same scorer. Flipping weights
|
|
45
|
+
0.9/0.1 ↔ 0.1/0.9 on an accuracy/cost tradeoff now flips the winner. (#1682)
|
|
46
|
+
- `warm_start_transfer` returned in the session-create response now reaches
|
|
47
|
+
`result.metadata` (previously dropped; runs reported `no_seed_configs` from
|
|
48
|
+
valid cloud-tracked priors). An explicit `warm_start_from` that applies 0
|
|
49
|
+
seeds emits a warning naming the refusal reason. (#1683)
|
|
50
|
+
- Dataset file-not-found errors name the resolution rule
|
|
51
|
+
(`TRAIGENT_DATASET_ROOT` vs cwd), the registry-resolved path, and the exact
|
|
52
|
+
candidate tried — the doubled-path case is self-diagnosing. (#1684)
|
|
53
|
+
|
|
54
|
+
### Changed (fail loud instead of silent)
|
|
55
|
+
- Smart algorithms (`bayesian`, `tpe`, `cmaes`, `nsga2`, `optuna*`) raise an
|
|
56
|
+
actionable error when the managed cloud path cannot execute them, instead of
|
|
57
|
+
returning a silent 0-trial COMPLETED result with `best_config=None`. Runtime
|
|
58
|
+
`optimize(algorithm=...)` smart overrides re-resolve to cloud-required
|
|
59
|
+
policy (no silent local fallback). (#1681)
|
|
60
|
+
- `.optimize()` rejects decorator-only arguments at call time with a
|
|
61
|
+
move-it-to-the-decorator `TypeError` — `warm_start_from` and 39 sibling
|
|
62
|
+
options were previously swallowed silently. (#1683)
|
|
63
|
+
- Deprecated `execution_mode` selectors (notably `"edge_analytics"`) raise
|
|
64
|
+
`ConfigurationError` with `algorithm=` + `offline=` migration guidance on
|
|
65
|
+
every entry path (decorator, `initialize`, `TraigentConfig`, client) —
|
|
66
|
+
previously a silent 0-trial run. On the wire, `metadata["mode"]` now carries
|
|
67
|
+
the canonical `local`/`hybrid`/`hybrid_api` vocabulary. (#1684, #1393)
|
|
68
|
+
- Nonpositive cost limits raise at configuration time; a budget-gate block
|
|
69
|
+
logs "budget gate blocked N planned trials (estimated $X > limit $Y)"
|
|
70
|
+
instead of silently completing with 0 trials. (#1684)
|
|
71
|
+
- Flagship multi-objective examples and docs migrated off removed/deprecated
|
|
72
|
+
parameters (`execution_mode`, `budget_limit`). (#1684)
|
|
73
|
+
|
|
9
74
|
## [0.19.0] - 2026-07-03
|
|
10
75
|
|
|
11
76
|
### Added
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: traigent
|
|
3
|
-
Version: 0.19.
|
|
3
|
+
Version: 0.19.2
|
|
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
|
|
@@ -596,8 +596,9 @@ approve.
|
|
|
596
596
|
)
|
|
597
597
|
```
|
|
598
598
|
|
|
599
|
-
`budget_limit` / `budget_metric` / `budget_include_pruned`
|
|
600
|
-
|
|
599
|
+
`budget_limit` / `budget_metric` / `budget_include_pruned` were removed in
|
|
600
|
+
0.13.0 and now raise `TypeError`. Use `cost_limit` for hard USD spend control,
|
|
601
|
+
or `metric_limit` / `metric_name` for other cumulative metrics.
|
|
601
602
|
|
|
602
603
|
**Stop Conditions**:
|
|
603
604
|
|
|
@@ -31,8 +31,10 @@ Built-in implementations:
|
|
|
31
31
|
| `HypervolumeConvergenceStopCondition` | Stops when hypervolume improvement remains below a threshold across a sliding window. | `convergence_metric="hypervolume_improvement"`, `convergence_window`, `convergence_threshold`. |
|
|
32
32
|
| `SemanticSaturationStopCondition` | Stops when per-example quality vectors are stable and monitored continuous objectives are no longer improving. | `semantic_saturation={...}`. |
|
|
33
33
|
|
|
34
|
-
`budget_limit`
|
|
35
|
-
|
|
34
|
+
`budget_limit`/`budget_metric`/`budget_include_pruned` were removed in 0.13.0.
|
|
35
|
+
Passing any of them to `@traigent.optimize` or `.optimize(...)` now raises
|
|
36
|
+
`TypeError`. Use `cost_limit` for money-spend control, or `metric_limit`/
|
|
37
|
+
`metric_name` for other cumulative metrics.
|
|
36
38
|
|
|
37
39
|
## Cost limit vs metric limit
|
|
38
40
|
|
|
@@ -59,10 +61,12 @@ def chat(question: str) -> str:
|
|
|
59
61
|
...
|
|
60
62
|
```
|
|
61
63
|
|
|
62
|
-
|
|
64
|
+
Removed legacy API:
|
|
63
65
|
|
|
64
66
|
```python
|
|
65
|
-
#
|
|
67
|
+
# Raises TypeError: budget_limit/budget_metric/budget_include_pruned were
|
|
68
|
+
# removed in 0.13.0. Use cost_limit=<value> and/or metric_limit=<value> with
|
|
69
|
+
# metric_name=<name> instead.
|
|
66
70
|
@traigent.optimize(
|
|
67
71
|
eval_dataset="qa.jsonl",
|
|
68
72
|
configuration_space={"temperature": [0.0, 0.5, 0.9]},
|
|
@@ -73,9 +77,18 @@ def chat(question: str) -> str:
|
|
|
73
77
|
...
|
|
74
78
|
```
|
|
75
79
|
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
80
|
+
Migrate to:
|
|
81
|
+
|
|
82
|
+
```python
|
|
83
|
+
@traigent.optimize(
|
|
84
|
+
eval_dataset="qa.jsonl",
|
|
85
|
+
configuration_space={"temperature": [0.0, 0.5, 0.9]},
|
|
86
|
+
metric_limit=50_000,
|
|
87
|
+
metric_name="total_tokens",
|
|
88
|
+
)
|
|
89
|
+
def chat(question: str) -> str:
|
|
90
|
+
...
|
|
91
|
+
```
|
|
79
92
|
|
|
80
93
|
The orchestrator instantiates the conditions during construction via
|
|
81
94
|
`_configure_stop_conditions()` and calls `reset()` for every run so state never leaks
|
|
@@ -28,12 +28,15 @@ from traigent.analytics_mcp.tools import (
|
|
|
28
28
|
analytics_compare_runs_tool,
|
|
29
29
|
analytics_get_correlation_matrix_tool,
|
|
30
30
|
analytics_get_example_insights_tool,
|
|
31
|
+
analytics_get_experiment_group_tool,
|
|
31
32
|
analytics_get_parameter_insights_tool,
|
|
32
33
|
analytics_get_project_overview_tool,
|
|
33
34
|
analytics_get_run_decision_brief_tool,
|
|
34
35
|
analytics_get_run_leaderboard_tool,
|
|
35
36
|
analytics_get_run_report_tool,
|
|
36
37
|
analytics_get_single_run_pareto_tool,
|
|
38
|
+
analytics_list_experiment_group_configuration_runs_tool,
|
|
39
|
+
analytics_list_experiment_groups_tool,
|
|
37
40
|
analytics_render_chart_tool,
|
|
38
41
|
auth_status_tool,
|
|
39
42
|
health_check_tool,
|
|
@@ -259,6 +262,59 @@ def create_server() -> Any:
|
|
|
259
262
|
) -> dict[str, Any]:
|
|
260
263
|
return analytics_render_chart_tool(payload, kind, output_path)
|
|
261
264
|
|
|
265
|
+
@server.tool(
|
|
266
|
+
description=(
|
|
267
|
+
"List experiment-group cohorts for a project — source-preserving "
|
|
268
|
+
"groups of optimization runs keyed by (agent_id + dataset_id). A "
|
|
269
|
+
"group is a browsing/aggregation view over source runs, never a "
|
|
270
|
+
"merged analytics run. Optional agent_id/dataset_id filters. "
|
|
271
|
+
"Backend auth required."
|
|
272
|
+
)
|
|
273
|
+
)
|
|
274
|
+
async def analytics_list_experiment_groups(
|
|
275
|
+
project_id: str,
|
|
276
|
+
agent_id: str | None = None,
|
|
277
|
+
dataset_id: str | None = None,
|
|
278
|
+
) -> dict[str, Any]:
|
|
279
|
+
return await analytics_list_experiment_groups_tool(
|
|
280
|
+
project_id,
|
|
281
|
+
agent_id,
|
|
282
|
+
dataset_id,
|
|
283
|
+
)
|
|
284
|
+
|
|
285
|
+
@server.tool(
|
|
286
|
+
description=(
|
|
287
|
+
"Fetch one experiment group's summary (counts, status rollup, and "
|
|
288
|
+
"source experiments) by group_id. The group is a source-preserving "
|
|
289
|
+
"cohort keyed by (agent_id + dataset_id); join on source ids, "
|
|
290
|
+
"never on config hash. Backend auth required."
|
|
291
|
+
)
|
|
292
|
+
)
|
|
293
|
+
async def analytics_get_experiment_group(
|
|
294
|
+
project_id: str,
|
|
295
|
+
group_id: str,
|
|
296
|
+
) -> dict[str, Any]:
|
|
297
|
+
return await analytics_get_experiment_group_tool(project_id, group_id)
|
|
298
|
+
|
|
299
|
+
@server.tool(
|
|
300
|
+
description=(
|
|
301
|
+
"Fetch the group's aggregated multi-run results table: one row per "
|
|
302
|
+
"configuration-run across the cohort's runs, each carrying "
|
|
303
|
+
"configuration, measures, status, trial_number, and the source "
|
|
304
|
+
"ids (experiment_run_id, configuration_run_id, experiment_id). "
|
|
305
|
+
"Rows remain individual source runs — grouped, not merged or "
|
|
306
|
+
"deduped by config hash. Backend auth required."
|
|
307
|
+
)
|
|
308
|
+
)
|
|
309
|
+
async def analytics_list_experiment_group_configuration_runs(
|
|
310
|
+
project_id: str,
|
|
311
|
+
group_id: str,
|
|
312
|
+
) -> dict[str, Any]:
|
|
313
|
+
return await analytics_list_experiment_group_configuration_runs_tool(
|
|
314
|
+
project_id,
|
|
315
|
+
group_id,
|
|
316
|
+
)
|
|
317
|
+
|
|
262
318
|
return server
|
|
263
319
|
|
|
264
320
|
|
|
@@ -52,6 +52,9 @@ ANALYTICS_TOOL_NAMES: tuple[str, ...] = (
|
|
|
52
52
|
"analytics_get_parameter_insights",
|
|
53
53
|
"analytics_get_example_insights",
|
|
54
54
|
"analytics_render_chart",
|
|
55
|
+
"analytics_list_experiment_groups",
|
|
56
|
+
"analytics_get_experiment_group",
|
|
57
|
+
"analytics_list_experiment_group_configuration_runs",
|
|
55
58
|
)
|
|
56
59
|
|
|
57
60
|
_SUPPORTED_CHART_KINDS: tuple[str, ...] = ("run_pareto", "run_correlations")
|
|
@@ -259,7 +262,14 @@ async def _call_backend(coro_factory: Any, *, what: str) -> dict[str, Any]:
|
|
|
259
262
|
backend_url=backend_url,
|
|
260
263
|
)
|
|
261
264
|
|
|
262
|
-
return {"ok": True, what.replace(" ", "_"): data}
|
|
265
|
+
return {"ok": True, what.replace(" ", "_"): _to_plain_payload(data)}
|
|
266
|
+
|
|
267
|
+
|
|
268
|
+
def _to_plain_payload(data: Any) -> Any:
|
|
269
|
+
to_dict = getattr(data, "to_dict", None)
|
|
270
|
+
if callable(to_dict):
|
|
271
|
+
return to_dict()
|
|
272
|
+
return data
|
|
263
273
|
|
|
264
274
|
|
|
265
275
|
async def health_check_tool() -> dict[str, Any]:
|
|
@@ -594,3 +604,84 @@ def analytics_render_chart_tool(
|
|
|
594
604
|
return _failure("Chart rendering failed.", code="render_failed")
|
|
595
605
|
|
|
596
606
|
return {"ok": True, "kind": kind, "chart_path": path}
|
|
607
|
+
|
|
608
|
+
|
|
609
|
+
async def analytics_list_experiment_groups_tool(
|
|
610
|
+
project_id: str,
|
|
611
|
+
agent_id: str | None = None,
|
|
612
|
+
dataset_id: str | None = None,
|
|
613
|
+
) -> dict[str, Any]:
|
|
614
|
+
"""List experiment groups/cohorts for a project.
|
|
615
|
+
|
|
616
|
+
A cohort is a **source-preserving grouped view** keyed by
|
|
617
|
+
``(agent_id + dataset_id)``. Rows remain individual source runs (join on
|
|
618
|
+
``experiment_run_id`` / ``configuration_run_id`` / ``experiment_id``, never
|
|
619
|
+
on config hash). Grouping is NOT a merged analytics run.
|
|
620
|
+
"""
|
|
621
|
+
try:
|
|
622
|
+
pid = _require_identifier(project_id, field="project_id")
|
|
623
|
+
except _ToolInputError as exc:
|
|
624
|
+
return _failure(str(exc))
|
|
625
|
+
|
|
626
|
+
aid = str(agent_id).strip() if agent_id is not None else None
|
|
627
|
+
did = str(dataset_id).strip() if dataset_id is not None else None
|
|
628
|
+
if aid == "":
|
|
629
|
+
aid = None
|
|
630
|
+
if did == "":
|
|
631
|
+
did = None
|
|
632
|
+
|
|
633
|
+
return await _call_backend(
|
|
634
|
+
lambda reader: reader.list_experiment_groups(
|
|
635
|
+
pid,
|
|
636
|
+
agent_id=aid,
|
|
637
|
+
dataset_id=did,
|
|
638
|
+
),
|
|
639
|
+
what="experiment groups",
|
|
640
|
+
)
|
|
641
|
+
|
|
642
|
+
|
|
643
|
+
async def analytics_get_experiment_group_tool(
|
|
644
|
+
project_id: str,
|
|
645
|
+
group_id: str,
|
|
646
|
+
) -> dict[str, Any]:
|
|
647
|
+
"""Fetch one experiment group/cohort detail.
|
|
648
|
+
|
|
649
|
+
A cohort is a **source-preserving grouped view** keyed by
|
|
650
|
+
``(agent_id + dataset_id)``. Rows remain individual source runs (join on
|
|
651
|
+
``experiment_run_id`` / ``configuration_run_id`` / ``experiment_id``, never
|
|
652
|
+
on config hash). Grouping is NOT a merged analytics run.
|
|
653
|
+
"""
|
|
654
|
+
try:
|
|
655
|
+
pid = _require_identifier(project_id, field="project_id")
|
|
656
|
+
gid = _require_identifier(group_id, field="group_id")
|
|
657
|
+
except _ToolInputError as exc:
|
|
658
|
+
return _failure(str(exc))
|
|
659
|
+
return await _call_backend(
|
|
660
|
+
lambda reader: reader.get_experiment_group(gid, pid),
|
|
661
|
+
what="experiment group",
|
|
662
|
+
)
|
|
663
|
+
|
|
664
|
+
|
|
665
|
+
async def analytics_list_experiment_group_configuration_runs_tool(
|
|
666
|
+
project_id: str,
|
|
667
|
+
group_id: str,
|
|
668
|
+
) -> dict[str, Any]:
|
|
669
|
+
"""List configuration runs for one experiment group/cohort.
|
|
670
|
+
|
|
671
|
+
A cohort is a **source-preserving grouped view** keyed by
|
|
672
|
+
``(agent_id + dataset_id)``. Rows remain individual source runs (join on
|
|
673
|
+
``experiment_run_id`` / ``configuration_run_id`` / ``experiment_id``, never
|
|
674
|
+
on config hash). Grouping is NOT a merged analytics run.
|
|
675
|
+
|
|
676
|
+
This returns the "one aggregated multi-run table": one row per
|
|
677
|
+
configuration-run with ``configuration`` + ``measures`` + source ids.
|
|
678
|
+
"""
|
|
679
|
+
try:
|
|
680
|
+
pid = _require_identifier(project_id, field="project_id")
|
|
681
|
+
gid = _require_identifier(group_id, field="group_id")
|
|
682
|
+
except _ToolInputError as exc:
|
|
683
|
+
return _failure(str(exc))
|
|
684
|
+
return await _call_backend(
|
|
685
|
+
lambda reader: reader.list_experiment_group_configuration_runs(gid, pid),
|
|
686
|
+
what="experiment group configuration runs",
|
|
687
|
+
)
|
|
@@ -163,14 +163,6 @@ class ConfigurationBuilder:
|
|
|
163
163
|
"""Clear global configuration."""
|
|
164
164
|
self.global_config.clear()
|
|
165
165
|
|
|
166
|
-
@staticmethod
|
|
167
|
-
def _normalize_execution_mode(execution_mode: str) -> str:
|
|
168
|
-
"""Normalize execution mode labels (deprecated)."""
|
|
169
|
-
return resolve_execution_policy(
|
|
170
|
-
execution_mode=execution_mode,
|
|
171
|
-
source_hint="config_builder.normalize_execution_mode",
|
|
172
|
-
).legacy_execution_mode.value
|
|
173
|
-
|
|
174
166
|
|
|
175
167
|
# Module-level functions for backward compatibility
|
|
176
168
|
def build_optimize_configuration(
|
|
@@ -17,7 +17,6 @@ from traigent.config.types import (
|
|
|
17
17
|
ResolvedExecutionPolicy,
|
|
18
18
|
resolve_execution_policy,
|
|
19
19
|
validate_algorithm_name,
|
|
20
|
-
validate_execution_mode,
|
|
21
20
|
)
|
|
22
21
|
from traigent.evaluators.base import Dataset, EvaluationExample
|
|
23
22
|
from traigent.utils.exceptions import ValidationError
|
|
@@ -98,25 +97,10 @@ class ParameterValidator:
|
|
|
98
97
|
|
|
99
98
|
return params
|
|
100
99
|
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
return False
|
|
106
|
-
|
|
107
|
-
def _validate_execution_mode(
|
|
108
|
-
self, execution_mode: str | ExecutionMode
|
|
109
|
-
) -> ExecutionMode:
|
|
110
|
-
"""Validate deprecated execution mode parameter."""
|
|
111
|
-
from traigent.utils.exceptions import ConfigurationError
|
|
112
|
-
|
|
113
|
-
try:
|
|
114
|
-
return validate_execution_mode(execution_mode)
|
|
115
|
-
except (TypeError, ValueError, ConfigurationError) as exc:
|
|
116
|
-
raise ValidationError(
|
|
117
|
-
f"Invalid execution_mode '{execution_mode}'. {exc}. "
|
|
118
|
-
"Use algorithm='auto'|'grid'|'random' and offline=True for no egress."
|
|
119
|
-
) from exc
|
|
100
|
+
# NOTE: execution_mode validation is NOT duplicated here (#1393). The
|
|
101
|
+
# single validation path is _resolve_execution_policy ->
|
|
102
|
+
# traigent.config.types.resolve_execution_policy, which raises on removed
|
|
103
|
+
# (edge_analytics) and fail-closed (privacy/cloud) legacy selectors.
|
|
120
104
|
|
|
121
105
|
def _validate_algorithm(self, algorithm: str) -> str:
|
|
122
106
|
"""Validate the algorithm selector."""
|
|
@@ -1349,6 +1349,33 @@ class OptimizationResult:
|
|
|
1349
1349
|
for obj in self.objectives
|
|
1350
1350
|
)
|
|
1351
1351
|
|
|
1352
|
+
def _weighted_score_for_trial(
|
|
1353
|
+
self,
|
|
1354
|
+
trial: TrialResult,
|
|
1355
|
+
normalized: dict[str, float],
|
|
1356
|
+
normalized_weights: dict[str, float],
|
|
1357
|
+
ranges: dict[str, tuple[float, float]],
|
|
1358
|
+
objective_schema: Any | None,
|
|
1359
|
+
) -> float:
|
|
1360
|
+
"""Weighted score for one trial, single-sourced with live selection.
|
|
1361
|
+
|
|
1362
|
+
With a real ObjectiveSchema this delegates to
|
|
1363
|
+
``ObjectiveSchema.compute_weighted_score(metrics, ranges=...)`` — the
|
|
1364
|
+
same scoring function live selection uses (issue #1682) — so post-hoc
|
|
1365
|
+
analysis and live selection share one implementation. Without a
|
|
1366
|
+
schema, the documented legacy cross-SDK path (auto-detected minimize
|
|
1367
|
+
list + observed-range normalization) is retained.
|
|
1368
|
+
"""
|
|
1369
|
+
# Import here to avoid circular dependency during module load
|
|
1370
|
+
from traigent.core.objectives import ObjectiveSchema as _ObjectiveSchema
|
|
1371
|
+
|
|
1372
|
+
if isinstance(objective_schema, _ObjectiveSchema):
|
|
1373
|
+
weighted = objective_schema.compute_weighted_score(
|
|
1374
|
+
trial.metrics or {}, ranges=ranges
|
|
1375
|
+
)
|
|
1376
|
+
return float(weighted) if weighted is not None else 0.0
|
|
1377
|
+
return self._score_trial(normalized, normalized_weights) if normalized else 0.0
|
|
1378
|
+
|
|
1352
1379
|
def _compute_weighted_scores(
|
|
1353
1380
|
self,
|
|
1354
1381
|
ranges: dict[str, tuple[float, float]],
|
|
@@ -1367,8 +1394,8 @@ class OptimizationResult:
|
|
|
1367
1394
|
normalized = self._normalize_trial_metrics(
|
|
1368
1395
|
trial, ranges, minimize_objectives, objective_schema
|
|
1369
1396
|
)
|
|
1370
|
-
weighted_score = (
|
|
1371
|
-
|
|
1397
|
+
weighted_score = self._weighted_score_for_trial(
|
|
1398
|
+
trial, normalized, objective_weights, ranges, objective_schema
|
|
1372
1399
|
)
|
|
1373
1400
|
weighted_scores.append((trial, weighted_score))
|
|
1374
1401
|
|
|
@@ -1437,8 +1464,8 @@ class OptimizationResult:
|
|
|
1437
1464
|
normalized = self._normalize_trial_metrics(
|
|
1438
1465
|
trial, ranges, resolved_minimize, resolved_schema
|
|
1439
1466
|
)
|
|
1440
|
-
weighted = (
|
|
1441
|
-
|
|
1467
|
+
weighted = self._weighted_score_for_trial(
|
|
1468
|
+
trial, normalized, normalized_weights, ranges, resolved_schema
|
|
1442
1469
|
)
|
|
1443
1470
|
per_trial.append(
|
|
1444
1471
|
{
|
|
@@ -33,8 +33,12 @@ console = Console(width=120)
|
|
|
33
33
|
@click.option(
|
|
34
34
|
"--backend-url",
|
|
35
35
|
default=DEFAULT_LOCAL_URL,
|
|
36
|
+
envvar=["TRAIGENT_BACKEND_URL", "TRAIGENT_API_URL"],
|
|
36
37
|
show_default=True,
|
|
37
|
-
help=(
|
|
38
|
+
help=(
|
|
39
|
+
"Backend API base URL. Requires a backend with the next-steps endpoint. "
|
|
40
|
+
"(env: TRAIGENT_BACKEND_URL / TRAIGENT_API_URL)"
|
|
41
|
+
),
|
|
38
42
|
)
|
|
39
43
|
def next_steps(
|
|
40
44
|
experiment_run_id: str,
|
|
@@ -101,10 +101,19 @@ _LEGACY_SESSION_CONTRACT_DEPRECATION = (
|
|
|
101
101
|
|
|
102
102
|
|
|
103
103
|
class TraigentSessionApiResult(tuple):
|
|
104
|
-
"""Three-ID session creation result with optional owning context attrs.
|
|
104
|
+
"""Three-ID session creation result with optional owning context attrs.
|
|
105
|
+
|
|
106
|
+
``warm_start_transfer`` carries the backend's opaque, IP-safe warm-start
|
|
107
|
+
decision block (transfer_mode / refused_reason / search_space_overlap /
|
|
108
|
+
n_seed_configs_applied / ...) when the session-CREATE response includes
|
|
109
|
+
one. The backend communicates the warm-start decision at CREATE time and
|
|
110
|
+
does not resend it at finalize, so dropping it here made the SDK report
|
|
111
|
+
cold-start defaults for valid warm starts (issue #1683, Bug B).
|
|
112
|
+
"""
|
|
105
113
|
|
|
106
114
|
project_id: str | None
|
|
107
115
|
tenant_id: str | None
|
|
116
|
+
warm_start_transfer: dict[str, Any] | None
|
|
108
117
|
|
|
109
118
|
def __new__(
|
|
110
119
|
cls,
|
|
@@ -114,10 +123,12 @@ class TraigentSessionApiResult(tuple):
|
|
|
114
123
|
*,
|
|
115
124
|
project_id: str | None = None,
|
|
116
125
|
tenant_id: str | None = None,
|
|
126
|
+
warm_start_transfer: dict[str, Any] | None = None,
|
|
117
127
|
):
|
|
118
128
|
obj = super().__new__(cls, (session_id, experiment_id, experiment_run_id))
|
|
119
129
|
obj.project_id = project_id
|
|
120
130
|
obj.tenant_id = tenant_id
|
|
131
|
+
obj.warm_start_transfer = warm_start_transfer
|
|
121
132
|
return obj
|
|
122
133
|
|
|
123
134
|
|
|
@@ -473,17 +484,19 @@ class ApiOperations:
|
|
|
473
484
|
|
|
474
485
|
async def create_traigent_session_via_api(
|
|
475
486
|
self, session_request: SessionCreationRequest
|
|
476
|
-
) ->
|
|
487
|
+
) -> TraigentSessionApiResult:
|
|
477
488
|
"""Create a Traigent optimization session using the new session endpoints.
|
|
478
489
|
|
|
479
490
|
Returns:
|
|
480
|
-
|
|
491
|
+
TraigentSessionApiResult — unpacks as a tuple of
|
|
492
|
+
(session_id, experiment_id, experiment_run_id) and carries
|
|
493
|
+
owning-context / warm_start_transfer attributes (issue #1683).
|
|
481
494
|
"""
|
|
482
495
|
# Skip cloud session creation if backend is offline
|
|
483
496
|
# Note: is_backend_offline() returns True if TRAIGENT_OFFLINE_MODE=true
|
|
484
497
|
if is_backend_offline():
|
|
485
498
|
logger.debug("Backend offline: using local session IDs")
|
|
486
|
-
return (
|
|
499
|
+
return TraigentSessionApiResult(
|
|
487
500
|
f"mock_session_{int(time.time())}",
|
|
488
501
|
f"mock_exp_{int(time.time())}",
|
|
489
502
|
f"mock_run_{int(time.time())}",
|
|
@@ -771,7 +784,7 @@ class ApiOperations:
|
|
|
771
784
|
payload: dict[str, Any],
|
|
772
785
|
headers: dict[str, str],
|
|
773
786
|
connector: Any | None,
|
|
774
|
-
) ->
|
|
787
|
+
) -> TraigentSessionApiResult:
|
|
775
788
|
"""Send the session creation request and handle responses."""
|
|
776
789
|
|
|
777
790
|
self._raise_if_backend_egress_disabled("create session")
|
|
@@ -813,6 +826,14 @@ class ApiOperations:
|
|
|
813
826
|
tenant_id = self._optional_context_id(
|
|
814
827
|
result.get("tenant_id") or metadata.get("tenant_id")
|
|
815
828
|
)
|
|
829
|
+
# The backend communicates the warm-start decision in the CREATE
|
|
830
|
+
# response (top-level or under metadata) and does not resend it at
|
|
831
|
+
# finalize. Retain the block verbatim (issue #1683, Bug B).
|
|
832
|
+
warm_start_transfer = result.get("warm_start_transfer")
|
|
833
|
+
if not isinstance(warm_start_transfer, dict):
|
|
834
|
+
warm_start_transfer = metadata.get("warm_start_transfer")
|
|
835
|
+
if not isinstance(warm_start_transfer, dict):
|
|
836
|
+
warm_start_transfer = None
|
|
816
837
|
|
|
817
838
|
logger.info(
|
|
818
839
|
f"✅ Created Traigent session: {session_id} "
|
|
@@ -824,6 +845,7 @@ class ApiOperations:
|
|
|
824
845
|
experiment_run_id,
|
|
825
846
|
project_id=project_id,
|
|
826
847
|
tenant_id=tenant_id,
|
|
848
|
+
warm_start_transfer=warm_start_transfer,
|
|
827
849
|
)
|
|
828
850
|
|
|
829
851
|
@staticmethod
|
|
@@ -24,7 +24,7 @@ from urllib.parse import quote, unquote, urlparse, urlunparse
|
|
|
24
24
|
|
|
25
25
|
# Import and re-export BackendClientConfig for backward compatibility
|
|
26
26
|
from traigent.cloud._aiohttp_compat import AIOHTTP_AVAILABLE, aiohttp
|
|
27
|
-
from traigent.cloud.api_operations import ApiOperations
|
|
27
|
+
from traigent.cloud.api_operations import ApiOperations, TraigentSessionApiResult
|
|
28
28
|
from traigent.cloud.auth import AuthenticationError, _build_api_key_auth_headers
|
|
29
29
|
from traigent.cloud.backend_bridges import SDKBackendBridge, SessionExperimentMapping
|
|
30
30
|
from traigent.cloud.backend_bridges import bridge as _bridge
|
|
@@ -2172,23 +2172,19 @@ class BackendIntegratedClient:
|
|
|
2172
2172
|
return cast(str, self._api_ops.map_to_backend_status(status, endpoint=endpoint))
|
|
2173
2173
|
|
|
2174
2174
|
def _normalize_execution_mode(self, execution_mode: str | None) -> str:
|
|
2175
|
-
"""Translate SDK execution modes to backend
|
|
2176
|
-
|
|
2177
|
-
|
|
2178
|
-
|
|
2179
|
-
|
|
2180
|
-
|
|
2181
|
-
|
|
2182
|
-
|
|
2183
|
-
|
|
2184
|
-
|
|
2185
|
-
|
|
2186
|
-
|
|
2187
|
-
|
|
2188
|
-
"cloud": "cloud",
|
|
2189
|
-
"saas": "cloud",
|
|
2190
|
-
}
|
|
2191
|
-
return mode_aliases.get(normalized, "standard")
|
|
2175
|
+
"""Translate SDK execution modes to backend wire values.
|
|
2176
|
+
|
|
2177
|
+
Delegates to the canonical resolution in ``traigent.config.types``
|
|
2178
|
+
(issue #1393 dedup): removed and fail-closed legacy selectors
|
|
2179
|
+
(``edge_analytics``, ``privacy``, ``cloud``) raise instead of being
|
|
2180
|
+
silently remapped, and unknown selectors raise instead of silently
|
|
2181
|
+
defaulting.
|
|
2182
|
+
"""
|
|
2183
|
+
# Local import: avoid a module-level cloud -> config-resolution
|
|
2184
|
+
# dependency for a single compatibility shim.
|
|
2185
|
+
from traigent.config.types import validate_execution_mode
|
|
2186
|
+
|
|
2187
|
+
return validate_execution_mode(execution_mode).value
|
|
2192
2188
|
|
|
2193
2189
|
def _sanitize_error_message(self, error_message: str | None) -> str | None:
|
|
2194
2190
|
"""Sanitize error message for transmission.
|
|
@@ -2197,11 +2193,16 @@ class BackendIntegratedClient:
|
|
|
2197
2193
|
|
|
2198
2194
|
async def _create_traigent_session_via_api(
|
|
2199
2195
|
self, session_request: SessionCreationRequest
|
|
2200
|
-
) ->
|
|
2196
|
+
) -> TraigentSessionApiResult:
|
|
2201
2197
|
"""Create a Traigent optimization session using the new session endpoints.
|
|
2198
|
+
|
|
2199
|
+
Returns the typed session-CREATE result (a 3-tuple of session /
|
|
2200
|
+
experiment / run ids, plus owning-context and warm_start_transfer
|
|
2201
|
+
attributes — issue #1683 Bug B: the warm-start decision arrives at
|
|
2202
|
+
CREATE time and must not be narrowed away here).
|
|
2202
2203
|
Delegates to api_operations module."""
|
|
2203
2204
|
return cast(
|
|
2204
|
-
|
|
2205
|
+
TraigentSessionApiResult,
|
|
2205
2206
|
await self._api_ops.create_traigent_session_via_api(session_request),
|
|
2206
2207
|
)
|
|
2207
2208
|
|