traigent 0.18.1.dev6__tar.gz → 0.18.1.dev8__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.dev6/traigent.egg-info → traigent-0.18.1.dev8}/PKG-INFO +1 -1
- {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/pyproject.toml +1 -1
- {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/api/decorators.py +31 -2
- {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/cloud/api_operations.py +81 -0
- {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/cloud/backend_client.py +32 -6
- {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/cloud/client.py +10 -3
- {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/cloud/models.py +3 -0
- {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/cloud/session_operations.py +8 -2
- traigent-0.18.1.dev8/traigent/cloud/smart_pruning.py +85 -0
- {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/config/api_keys.py +13 -23
- {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/config/models.yaml +23 -3
- traigent-0.18.1.dev8/traigent/config/provider_support.py +407 -0
- {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/core/backend_session_manager.py +106 -12
- {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/core/optimized_function.py +18 -10
- {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/core/orchestrator.py +20 -9
- {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/core/trial_lifecycle.py +145 -6
- {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/evaluators/base.py +92 -29
- {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/integrations/model_discovery/registry.py +8 -1
- {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/integrations/providers.py +34 -3
- {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/providers/validation.py +28 -0
- {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/utils/env_config.py +23 -19
- {traigent-0.18.1.dev6 → traigent-0.18.1.dev8/traigent.egg-info}/PKG-INFO +1 -1
- {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent.egg-info/SOURCES.txt +2 -0
- {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/CHANGELOG.md +0 -0
- {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/COMMERCIAL-LICENSE.md +0 -0
- {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/CONTRIBUTING.md +0 -0
- {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/CONTRIBUTOR-LICENSING.md +0 -0
- {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/DISCLAIMER.md +0 -0
- {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/LICENSE +0 -0
- {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/MANIFEST.in +0 -0
- {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/NOTICE +0 -0
- {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/README.md +0 -0
- {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/SECURITY.md +0 -0
- {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/docs/LOCAL_CI_GATE.md +0 -0
- {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/docs/README.md +0 -0
- {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/docs/SYNC_MAP.md +0 -0
- {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/docs/agent-skill.md +0 -0
- {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/docs/api-reference/complete-function-specification.md +0 -0
- {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/docs/api-reference/decorator-reference.md +0 -0
- {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/docs/api-reference/enterprise-beta-api.md +0 -0
- {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/docs/api-reference/interactive_optimizer.md +0 -0
- {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/docs/api-reference/telemetry.md +0 -0
- {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/docs/api-reference/thread-pool-examples.md +0 -0
- {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/docs/architecture/ARCHITECTURE.md +0 -0
- {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/docs/architecture/cost-architecture-validation.md +0 -0
- {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/docs/architecture/execution_mode_follow_up.md +0 -0
- {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/docs/architecture/integrations-inventory.md +0 -0
- {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/docs/architecture/plugin_architecture.md +0 -0
- {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/docs/architecture/project-structure.md +0 -0
- {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/docs/architecture/stop_conditions.md +0 -0
- {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/docs/concepts/composite-knob-ir.md +0 -0
- {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/docs/concepts/composite-knobs.md +0 -0
- {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/docs/concepts/guided-generation.md +0 -0
- {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/docs/contributing/ADDING_NEW_INTEGRATIONS.md +0 -0
- {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/docs/contributing/CODE_OF_CONDUCT.md +0 -0
- {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/docs/contributing/CONTRIBUTING.md +0 -0
- {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/docs/contributing/EXAMPLE_TEMPLATE.md +0 -0
- {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/docs/contributing/README.md +0 -0
- {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/docs/contributing/SECURITY.md +0 -0
- {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/docs/contributing/aikido_triage.md +0 -0
- {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/docs/contributing/code_review_instructions.md +0 -0
- {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/docs/contributing/test-quality-guide.md +0 -0
- {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/docs/demos/DEMO_VIDEO_GUIDE.md +0 -0
- {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/docs/demos/README.md +0 -0
- {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/docs/examples/API_PATTERNS.md +0 -0
- {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/docs/examples/LEARNING_ROADMAP.md +0 -0
- {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/docs/examples/QUICK_REFERENCE.md +0 -0
- {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/docs/examples/README.md +0 -0
- {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/docs/examples/START_HERE.md +0 -0
- {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/docs/examples/TROUBLESHOOTING.md +0 -0
- {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/docs/fake-completion-tracking.md +0 -0
- {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/docs/feature_matrices/README.md +0 -0
- {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/docs/features/README.md +0 -0
- {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/docs/features/authentication.md +0 -0
- {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/docs/features/constraint-dsl.md +0 -0
- {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/docs/features/dataflow-detection.md +0 -0
- {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/docs/features/framework_override_enhanced_features.md +0 -0
- {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/docs/features/mcp-server.md +0 -0
- {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/docs/features/observability-spans.md +0 -0
- {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/docs/features/onboarding.md +0 -0
- {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/docs/features/prompt_management.md +0 -0
- {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/docs/features/recommendations.md +0 -0
- {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/docs/features/safety-gates.md +0 -0
- {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/docs/features/seamless_injection.md +0 -0
- {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/docs/features/strategy-presets.md +0 -0
- {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/docs/features/strict_metrics_nulls.md +0 -0
- {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/docs/getting-started/GETTING_STARTED.md +0 -0
- {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/docs/getting-started/README.md +0 -0
- {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/docs/getting-started/installation.md +0 -0
- {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/docs/getting-started/minimal-integration.md +0 -0
- {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/docs/getting-started/portal-dev-laptop-agent.md +0 -0
- {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/docs/getting-started/testing.md +0 -0
- {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/docs/guides/VSCODE_RESTART_GUIDE.md +0 -0
- {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/docs/guides/evaluation.md +0 -0
- {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/docs/guides/execution-mode-migration.md +0 -0
- {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/docs/guides/execution-modes.md +0 -0
- {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/docs/guides/js-bridge.md +0 -0
- {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/docs/guides/llm_plugin_migration_guide.md +0 -0
- {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/docs/guides/parallel-configuration.md +0 -0
- {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/docs/guides/secrets_management.md +0 -0
- {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/docs/hybrid-mode-api-contract.md +0 -0
- {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/docs/hybrid-mode-client-guide.md +0 -0
- {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/docs/operations/azure_openai.md +0 -0
- {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/docs/operations/bedrock.md +0 -0
- {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/docs/operations/google_gemini.md +0 -0
- {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/docs/security/trust_model.md +0 -0
- {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/docs/testing/CREATIVE_STRESS_TESTING.md +0 -0
- {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/docs/traceability/concepts/composite-knob-ir.md +0 -0
- {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/docs/traceability/concepts/composite-knobs.md +0 -0
- {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/docs/traceability/concepts/guided-generation.md +0 -0
- {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/docs/traceability/schema.md +0 -0
- {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/docs/traceability/tagging_tracking.md +0 -0
- {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/docs/traceability/taxonomy_reference.md +0 -0
- {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/docs/tvl/CONSTRAINT_EXPRESSIONS.md +0 -0
- {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/docs/user-guide/README.md +0 -0
- {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/docs/user-guide/agent_optimization.md +0 -0
- {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/docs/user-guide/choosing_optimization_model.md +0 -0
- {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/docs/user-guide/configuration-spaces.md +0 -0
- {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/docs/user-guide/evaluation_guide.md +0 -0
- {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/docs/user-guide/injection_modes.md +0 -0
- {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/docs/user-guide/interactive_optimization.md +0 -0
- {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/docs/user-guide/smart_optimization.md +0 -0
- {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/docs/user-guide/tuned_variables.md +0 -0
- {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/docs/walkthrough.md +0 -0
- {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/requirements/requirements-all.txt +0 -0
- {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/requirements/requirements-analytics.txt +0 -0
- {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/requirements/requirements-bayesian.txt +0 -0
- {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/requirements/requirements-chroma.txt +0 -0
- {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/requirements/requirements-dev.txt +0 -0
- {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/requirements/requirements-hybrid.txt +0 -0
- {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/requirements/requirements-integrations.txt +0 -0
- {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/requirements/requirements-security.txt +0 -0
- {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/requirements/requirements-test.txt +0 -0
- {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/requirements/requirements.txt +0 -0
- {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/setup.cfg +0 -0
- {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/__init__.py +0 -0
- {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/_version.py +0 -0
- {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/adapters/execution_adapter.py +0 -0
- {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/admin/__init__.py +0 -0
- {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/admin/client.py +0 -0
- {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/admin/config.py +0 -0
- {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/admin/dtos.py +0 -0
- {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/agents/__init__.py +0 -0
- {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/agents/config_mapper.py +0 -0
- {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/agents/executor.py +0 -0
- {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/agents/platforms.py +0 -0
- {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/agents/specification_generator.py +0 -0
- {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/analytics/__init__.py +0 -0
- {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/analytics/anomaly.py +0 -0
- {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/analytics/cost_optimization.py +0 -0
- {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/analytics/example_insights.py +0 -0
- {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/analytics/intelligence.py +0 -0
- {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/analytics/meta_learning.py +0 -0
- {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/analytics/next_steps.py +0 -0
- {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/analytics/optimization_plan.py +0 -0
- {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/analytics/predictive.py +0 -0
- {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/analytics/render.py +0 -0
- {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/analytics/scheduling.py +0 -0
- {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/analytics_mcp/__init__.py +0 -0
- {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/analytics_mcp/server.py +0 -0
- {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/analytics_mcp/tools.py +0 -0
- {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/api/__init__.py +0 -0
- {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/api/agent_inference.py +0 -0
- {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/api/config_builder.py +0 -0
- {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/api/config_space.py +0 -0
- {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/api/constraint_builders.py +0 -0
- {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/api/constraints.py +0 -0
- {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/api/functions.py +0 -0
- {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/api/parameter_ranges.py +0 -0
- {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/api/parameter_validator.py +0 -0
- {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/api/safety.py +0 -0
- {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/api/strategy_presets.py +0 -0
- {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/api/types.py +0 -0
- {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/api/validation_protocol.py +0 -0
- {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/cli/__init__.py +0 -0
- {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/cli/auth_commands.py +0 -0
- {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/cli/detect_tvars_command.py +0 -0
- {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/cli/function_discovery.py +0 -0
- {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/cli/generate_config_command.py +0 -0
- {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/cli/hooks_commands.py +0 -0
- {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/cli/local_commands.py +0 -0
- {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/cli/main.py +0 -0
- {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/cli/next_steps_command.py +0 -0
- {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/cli/onboard_commands.py +0 -0
- {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/cli/optimization_validator.py +0 -0
- {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/cli/plan_command.py +0 -0
- {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/cli/playbook_commands.py +0 -0
- {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/cli/sync_commands.py +0 -0
- {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/cli/validation_types.py +0 -0
- {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/cloud/__init__.py +0 -0
- {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/cloud/_aiohttp_compat.py +0 -0
- {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/cloud/agent_dtos.py +0 -0
- {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/cloud/analytics_auth.py +0 -0
- {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/cloud/analytics_client.py +0 -0
- {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/cloud/api_key_manager.py +0 -0
- {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/cloud/async_batch_transport.py +0 -0
- {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/cloud/auth.py +0 -0
- {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/cloud/backend_bridges.py +0 -0
- {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/cloud/backend_components.py +0 -0
- {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/cloud/backend_synchronizer.py +0 -0
- {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/cloud/benchmark_client.py +0 -0
- {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/cloud/billing.py +0 -0
- {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/cloud/cloud_operations.py +0 -0
- {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/cloud/credential_manager.py +0 -0
- {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/cloud/credential_resolver.py +0 -0
- {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/cloud/dataset_converter.py +0 -0
- {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/cloud/dtos.py +0 -0
- {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/cloud/governance.py +0 -0
- {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/cloud/integration_manager.py +0 -0
- {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/cloud/optimizer_client.py +0 -0
- {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/cloud/password_auth_handler.py +0 -0
- {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/cloud/privacy_operations.py +0 -0
- {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/cloud/production_mcp_client.py +0 -0
- {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/cloud/remote_guidance.py +0 -0
- {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/cloud/resilient_client.py +0 -0
- {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/cloud/service.py +0 -0
- {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/cloud/session_types.py +0 -0
- {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/cloud/sessions.py +0 -0
- {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/cloud/subset_selection.py +0 -0
- {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/cloud/sync_manager.py +0 -0
- {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/cloud/token_manager.py +0 -0
- {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/cloud/trial_operations.py +0 -0
- {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/cloud/trial_tracker.py +0 -0
- {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/cloud/url_security.py +0 -0
- {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/cloud/user_agent.py +0 -0
- {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/cloud/validators.py +0 -0
- {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/config/__init__.py +0 -0
- {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/config/ast_transformer.py +0 -0
- {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/config/backend_config.py +0 -0
- {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/config/context.py +0 -0
- {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/config/feature_flags.py +0 -0
- {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/config/parallel.py +0 -0
- {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/config/project.py +0 -0
- {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/config/providers.py +0 -0
- {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/config/runtime_injector.py +0 -0
- {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/config/tenant.py +0 -0
- {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/config/types.py +0 -0
- {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/config_generator/__init__.py +0 -0
- {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/config_generator/agent_classifier.py +0 -0
- {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/config_generator/apply.py +0 -0
- {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/config_generator/catalog/schemas/tvar_catalog_entry_schema.json +0 -0
- {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/config_generator/catalog/schemas/tvar_observation_schema.json +0 -0
- {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/config_generator/catalog/schemas/tvar_value_recommendation_schema.json +0 -0
- {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/config_generator/catalog/tvar_catalog.v1.json +0 -0
- {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/config_generator/catalog.py +0 -0
- {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/config_generator/llm_backend.py +0 -0
- {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/config_generator/pipeline.py +0 -0
- {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/config_generator/presets/__init__.py +0 -0
- {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/config_generator/presets/agent_type_catalog.py +0 -0
- {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/config_generator/presets/benchmark_catalog.py +0 -0
- {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/config_generator/presets/constraint_templates.py +0 -0
- {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/config_generator/presets/range_presets.py +0 -0
- {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/config_generator/recommendations.py +0 -0
- {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/config_generator/subsystems/__init__.py +0 -0
- {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/config_generator/subsystems/benchmarks.py +0 -0
- {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/config_generator/subsystems/objectives.py +0 -0
- {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/config_generator/subsystems/safety_constraints.py +0 -0
- {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/config_generator/subsystems/structural_constraints.py +0 -0
- {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/config_generator/subsystems/tvar_ranges.py +0 -0
- {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/config_generator/subsystems/tvar_recommendations.py +0 -0
- {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/config_generator/types.py +0 -0
- {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/core/__init__.py +0 -0
- {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/core/best_config_runtime.py +0 -0
- {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/core/cache_policy.py +0 -0
- {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/core/ci_approval.py +0 -0
- {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/core/config_state_manager.py +0 -0
- {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/core/constants.py +0 -0
- {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/core/cost_enforcement.py +0 -0
- {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/core/cost_estimator.py +0 -0
- {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/core/evaluator_wrapper.py +0 -0
- {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/core/exception_handler.py +0 -0
- {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/core/execution_policy_runtime.py +0 -0
- {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/core/license.py +0 -0
- {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/core/logger_facade.py +0 -0
- {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/core/mandatory_metrics.py +0 -0
- {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/core/meta_types.py +0 -0
- {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/core/metadata_helpers.py +0 -0
- {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/core/metric_registry.py +0 -0
- {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/core/metrics_aggregator.py +0 -0
- {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/core/namespace.py +0 -0
- {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/core/objectives.py +0 -0
- {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/core/optimization_pipeline.py +0 -0
- {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/core/orchestrator_helpers.py +0 -0
- {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/core/parallel_execution_manager.py +0 -0
- {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/core/progress_manager.py +0 -0
- {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/core/result_selection.py +0 -0
- {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/core/sample_budget.py +0 -0
- {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/core/samplers/__init__.py +0 -0
- {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/core/samplers/random_sampler.py +0 -0
- {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/core/session_context.py +0 -0
- {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/core/session_types.py +0 -0
- {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/core/stat_significance.py +0 -0
- {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/core/stop_condition_manager.py +0 -0
- {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/core/stop_conditions.py +0 -0
- {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/core/trace_env.py +0 -0
- {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/core/tracing.py +0 -0
- {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/core/trial_context.py +0 -0
- {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/core/trial_result_factory.py +0 -0
- {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/core/types.py +0 -0
- {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/core/types_ext.py +0 -0
- {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/core/utils.py +0 -0
- {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/core/workflow_trace_manager.py +0 -0
- {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/core_metrics/__init__.py +0 -0
- {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/core_metrics/client.py +0 -0
- {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/core_metrics/config.py +0 -0
- {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/core_metrics/dtos.py +0 -0
- {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/defaults.py +0 -0
- {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/effectuation/__init__.py +0 -0
- {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/effectuation/contracts.py +0 -0
- {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/effectuation/strategies/__init__.py +0 -0
- {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/effectuation/strategies/framework_param.py +0 -0
- {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/effectuation/strategies/self_consistency.py +0 -0
- {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/evaluation/__init__.py +0 -0
- {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/evaluation/client.py +0 -0
- {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/evaluation/config.py +0 -0
- {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/evaluation/dtos.py +0 -0
- {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/evaluators/__init__.py +0 -0
- {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/evaluators/catalog/metric_eval_catalog.v1.json +0 -0
- {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/evaluators/catalog/schemas/metric_eval_catalog_entry_schema.json +0 -0
- {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/evaluators/catalog_loader.py +0 -0
- {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/evaluators/dataset_registry.py +0 -0
- {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/evaluators/hybrid_api.py +0 -0
- {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/evaluators/local.py +0 -0
- {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/evaluators/metrics.py +0 -0
- {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/evaluators/metrics_tracker.py +0 -0
- {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/evaluators/recommendations.py +0 -0
- {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/examples/__init__.py +0 -0
- {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/examples/providers/__init__.py +0 -0
- {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/examples/providers/_bootstrap.py +0 -0
- {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/examples/providers/_demo.py +0 -0
- {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/examples/providers/anthropic.py +0 -0
- {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/examples/providers/aws.py +0 -0
- {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/examples/providers/azure.py +0 -0
- {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/examples/providers/gcp.py +0 -0
- {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/examples/providers/gemini.py +0 -0
- {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/examples/providers/groq.py +0 -0
- {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/examples/providers/litellm_any.py +0 -0
- {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/examples/providers/manifest.json +0 -0
- {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/examples/providers/openai.py +0 -0
- {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/examples/providers/openrouter.py +0 -0
- {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/examples/providers/qa_samples.jsonl +0 -0
- {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/examples/quickstart/__init__.py +0 -0
- {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/examples/quickstart/__main__.py +0 -0
- {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/examples/quickstart/_env.py +0 -0
- {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/examples/quickstart/publish_and_verify.py +0 -0
- {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/examples/quickstart/qa_samples.jsonl +0 -0
- {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/examples/tutorial_bootstrap.py +0 -0
- {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/generation/__init__.py +0 -0
- {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/generation/backend_provider.py +0 -0
- {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/generation/example_synth.py +0 -0
- {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/generation/llm_provider.py +0 -0
- {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/generation/loop.py +0 -0
- {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/generation/models.py +0 -0
- {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/generation/options.py +0 -0
- {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/generation/prompt_rewriter.py +0 -0
- {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/generation/skill_train/__init__.py +0 -0
- {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/generation/skill_train/artifacts.py +0 -0
- {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/generation/skill_train/buffer.py +0 -0
- {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/generation/skill_train/document.py +0 -0
- {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/generation/skill_train/edits.py +0 -0
- {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/generation/skill_train/prompts.py +0 -0
- {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/generation/skill_train/reflection.py +0 -0
- {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/generation/skill_train/schedule.py +0 -0
- {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/generation/skill_train/slow_update.py +0 -0
- {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/generation/skill_train/splits.py +0 -0
- {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/generation/skill_train/trainer.py +0 -0
- {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/generation/skill_train/trainer_result.py +0 -0
- {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/generation/validators.py +0 -0
- {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/guaranteed_modes.py +0 -0
- {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/hooks/__init__.py +0 -0
- {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/hooks/config.py +0 -0
- {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/hooks/installer.py +0 -0
- {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/hooks/validator.py +0 -0
- {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/hybrid/__init__.py +0 -0
- {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/hybrid/discovery.py +0 -0
- {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/hybrid/http_transport.py +0 -0
- {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/hybrid/lifecycle.py +0 -0
- {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/hybrid/mcp_transport.py +0 -0
- {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/hybrid/protocol.py +0 -0
- {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/hybrid/transport.py +0 -0
- {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/integrations/__init__.py +0 -0
- {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/integrations/activation.py +0 -0
- {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/integrations/base.py +0 -0
- {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/integrations/base_plugin.py +0 -0
- {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/integrations/bedrock_client.py +0 -0
- {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/integrations/config.py +0 -0
- {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/integrations/dspy_adapter.py +0 -0
- {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/integrations/framework_override.py +0 -0
- {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/integrations/langchain/__init__.py +0 -0
- {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/integrations/langchain/handler.py +0 -0
- {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/integrations/langfuse/__init__.py +0 -0
- {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/integrations/langfuse/callback.py +0 -0
- {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/integrations/langfuse/client.py +0 -0
- {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/integrations/langfuse/tracker.py +0 -0
- {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/integrations/llms/__init__.py +0 -0
- {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/integrations/llms/anthropic_plugin.py +0 -0
- {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/integrations/llms/azure_openai_plugin.py +0 -0
- {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/integrations/llms/base_llm_plugin.py +0 -0
- {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/integrations/llms/bedrock_plugin.py +0 -0
- {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/integrations/llms/cohere_plugin.py +0 -0
- {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/integrations/llms/gemini_plugin.py +0 -0
- {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/integrations/llms/huggingface_plugin.py +0 -0
- {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/integrations/llms/langchain/__init__.py +0 -0
- {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/integrations/llms/langchain/base.py +0 -0
- {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/integrations/llms/langchain_plugin.py +0 -0
- {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/integrations/llms/litellm_plugin.py +0 -0
- {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/integrations/llms/llamaindex_plugin.py +0 -0
- {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/integrations/llms/mistral_plugin.py +0 -0
- {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/integrations/llms/openai.py +0 -0
- {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/integrations/llms/openai_plugin.py +0 -0
- {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/integrations/mappings.py +0 -0
- {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/integrations/model_discovery/__init__.py +0 -0
- {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/integrations/model_discovery/anthropic_discovery.py +0 -0
- {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/integrations/model_discovery/azure_discovery.py +0 -0
- {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/integrations/model_discovery/base.py +0 -0
- {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/integrations/model_discovery/cache.py +0 -0
- {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/integrations/model_discovery/gemini_discovery.py +0 -0
- {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/integrations/model_discovery/mistral_discovery.py +0 -0
- {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/integrations/model_discovery/openai_discovery.py +0 -0
- {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/integrations/observability/__init__.py +0 -0
- {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/integrations/observability/mlflow.py +0 -0
- {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/integrations/observability/wandb.py +0 -0
- {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/integrations/observability/workflow_traces.py +0 -0
- {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/integrations/plugin_registry.py +0 -0
- {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/integrations/pydantic_ai/__init__.py +0 -0
- {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/integrations/pydantic_ai/_types.py +0 -0
- {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/integrations/pydantic_ai/handler.py +0 -0
- {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/integrations/pydantic_ai/plugin.py +0 -0
- {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/integrations/utils/__init__.py +0 -0
- {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/integrations/utils/discovery.py +0 -0
- {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/integrations/utils/message_coercion.py +0 -0
- {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/integrations/utils/mock_adapter.py +0 -0
- {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/integrations/utils/parameter_normalizer.py +0 -0
- {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/integrations/utils/response_wrapper.py +0 -0
- {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/integrations/utils/validation.py +0 -0
- {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/integrations/utils/version_compat.py +0 -0
- {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/integrations/vector_stores/__init__.py +0 -0
- {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/integrations/vector_stores/base.py +0 -0
- {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/integrations/vector_stores/chromadb_plugin.py +0 -0
- {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/integrations/vector_stores/pinecone_plugin.py +0 -0
- {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/integrations/vector_stores/weaviate_plugin.py +0 -0
- {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/integrations/wrappers.py +0 -0
- {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/invokers/__init__.py +0 -0
- {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/invokers/base.py +0 -0
- {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/invokers/batch.py +0 -0
- {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/invokers/local.py +0 -0
- {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/invokers/streaming.py +0 -0
- {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/knobs/__init__.py +0 -0
- {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/knobs/adapters.py +0 -0
- {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/knobs/bindings.py +0 -0
- {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/knobs/canonical.py +0 -0
- {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/knobs/cascade.py +0 -0
- {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/knobs/certificates.py +0 -0
- {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/knobs/composites.py +0 -0
- {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/knobs/kinds.py +0 -0
- {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/knobs/patterns.py +0 -0
- {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/knobs/resolution.py +0 -0
- {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/knobs/resolver.py +0 -0
- {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/knobs/runtime.py +0 -0
- {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/knobs/signals.py +0 -0
- {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/knobs/telemetry.py +0 -0
- {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/mcp/__init__.py +0 -0
- {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/mcp/server.py +0 -0
- {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/mcp/tools.py +0 -0
- {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/metrics/__init__.py +0 -0
- {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/metrics/agent_metrics.py +0 -0
- {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/metrics/content_features.py +0 -0
- {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/metrics/deepeval_metrics.py +0 -0
- {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/metrics/ragas_metrics.py +0 -0
- {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/metrics/registry.py +0 -0
- {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/observability/__init__.py +0 -0
- {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/observability/agent_spans.py +0 -0
- {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/observability/client.py +0 -0
- {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/observability/config.py +0 -0
- {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/observability/decorators.py +0 -0
- {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/observability/dtos.py +0 -0
- {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/optimizers/__init__.py +0 -0
- {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/optimizers/base.py +0 -0
- {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/optimizers/batch_optimizers.py +0 -0
- {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/optimizers/cloud_optimizer.py +0 -0
- {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/optimizers/grid.py +0 -0
- {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/optimizers/interactive_optimizer.py +0 -0
- {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/optimizers/random.py +0 -0
- {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/optimizers/registry.py +0 -0
- {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/optimizers/remote.py +0 -0
- {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/optimizers/remote_services.py +0 -0
- {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/optimizers/results.py +0 -0
- {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/playbook/__init__.py +0 -0
- {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/playbook/loader.py +0 -0
- {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/playbook/model.py +0 -0
- {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/playbook/scaffold.py +0 -0
- {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/playbook/schemas/agent_playbook_schema.json +0 -0
- {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/playbook/staleness.py +0 -0
- {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/playbook/validator.py +0 -0
- {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/plugins/__init__.py +0 -0
- {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/plugins/registry.py +0 -0
- {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/projects/__init__.py +0 -0
- {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/projects/client.py +0 -0
- {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/projects/config.py +0 -0
- {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/projects/dtos.py +0 -0
- {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/prompts/__init__.py +0 -0
- {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/prompts/client.py +0 -0
- {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/prompts/config.py +0 -0
- {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/prompts/dtos.py +0 -0
- {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/providers/__init__.py +0 -0
- {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/py.typed +0 -0
- {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/reporting/__init__.py +0 -0
- {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/reporting/example_map.py +0 -0
- {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/security/__init__.py +0 -0
- {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/security/audit.py +0 -0
- {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/security/auth/__init__.py +0 -0
- {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/security/auth/helpers.py +0 -0
- {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/security/auth/mfa.py +0 -0
- {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/security/auth/models.py +0 -0
- {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/security/auth/oidc.py +0 -0
- {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/security/auth/saml.py +0 -0
- {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/security/auth/sms.py +0 -0
- {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/security/auth/totp.py +0 -0
- {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/security/config.py +0 -0
- {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/security/credentials.py +0 -0
- {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/security/crypto_utils.py +0 -0
- {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/security/deployment.py +0 -0
- {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/security/encryption.py +0 -0
- {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/security/enterprise.py +0 -0
- {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/security/headers.py +0 -0
- {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/security/input_validation.py +0 -0
- {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/security/jwt_validator.py +0 -0
- {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/security/rate_limiter.py +0 -0
- {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/security/redaction.py +0 -0
- {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/security/session_manager.py +0 -0
- {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/security/tenant.py +0 -0
- {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/skills/traigent-analyze-results/SKILL.md +0 -0
- {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/skills/traigent-analyze-results/references/convergence-patterns.md +0 -0
- {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/skills/traigent-analyze-results/references/optimization-result-api.md +0 -0
- {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/skills/traigent-configuration-space/SKILL.md +0 -0
- {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/skills/traigent-configuration-space/references/constraints.md +0 -0
- {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/skills/traigent-configuration-space/references/parameter-types.md +0 -0
- {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/skills/traigent-debugging/SKILL.md +0 -0
- {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/skills/traigent-debugging/references/error-reference.md +0 -0
- {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/skills/traigent-debugging/references/logging-config.md +0 -0
- {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/skills/traigent-debugging/references/mock-mode.md +0 -0
- {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/skills/traigent-decorator-setup/SKILL.md +0 -0
- {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/skills/traigent-decorator-setup/references/evaluation-options.md +0 -0
- {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/skills/traigent-decorator-setup/references/execution-modes.md +0 -0
- {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/skills/traigent-decorator-setup/references/injection-modes.md +0 -0
- {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/skills/traigent-integrations/SKILL.md +0 -0
- {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/skills/traigent-integrations/references/dspy.md +0 -0
- {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/skills/traigent-integrations/references/langchain.md +0 -0
- {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/skills/traigent-integrations/references/litellm.md +0 -0
- {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/skills/traigent-quickstart/SKILL.md +0 -0
- {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/skills/traigent-quickstart/references/environment-variables.md +0 -0
- {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/skills/traigent-quickstart/references/installation-extras.md +0 -0
- {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/skills/traigent-run-optimization/SKILL.md +0 -0
- {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/skills/traigent-run-optimization/references/algorithms.md +0 -0
- {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/skills/traigent-run-optimization/references/cost-management.md +0 -0
- {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/skills/traigent-run-optimization/references/parallel-config.md +0 -0
- {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/storage/__init__.py +0 -0
- {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/storage/local_storage.py +0 -0
- {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/testing/__init__.py +0 -0
- {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/traigent_client.py +0 -0
- {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/traigent_integration.py +0 -0
- {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/tuned_variables/__init__.py +0 -0
- {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/tuned_variables/dataflow_strategy.py +0 -0
- {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/tuned_variables/detection_strategies.py +0 -0
- {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/tuned_variables/detection_types.py +0 -0
- {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/tuned_variables/detector.py +0 -0
- {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/tuned_variables/discovery.py +0 -0
- {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/tuned_variables/observation.py +0 -0
- {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/tuned_variables/py.typed +0 -0
- {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/tvl/__init__.py +0 -0
- {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/tvl/__main__.py +0 -0
- {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/tvl/models.py +0 -0
- {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/tvl/objectives.py +0 -0
- {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/tvl/options.py +0 -0
- {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/tvl/promotion_gate.py +0 -0
- {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/tvl/registry.py +0 -0
- {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/tvl/spec_loader.py +0 -0
- {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/tvl/spec_validator.py +0 -0
- {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/tvl/statistics.py +0 -0
- {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/utils/__init__.py +0 -0
- {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/utils/artifact_fingerprints.py +0 -0
- {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/utils/batch_optimizer_utils.py +0 -0
- {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/utils/batch_processing.py +0 -0
- {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/utils/callbacks.py +0 -0
- {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/utils/console.py +0 -0
- {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/utils/constraints.py +0 -0
- {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/utils/cost_calculator.py +0 -0
- {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/utils/diagnostics.py +0 -0
- {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/utils/discrete_domains.py +0 -0
- {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/utils/error_handler.py +0 -0
- {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/utils/example_id.py +0 -0
- {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/utils/exceptions.py +0 -0
- {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/utils/file_versioning.py +0 -0
- {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/utils/function_identity.py +0 -0
- {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/utils/hashing.py +0 -0
- {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/utils/importance.py +0 -0
- {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/utils/incentives.py +0 -0
- {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/utils/insights.py +0 -0
- {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/utils/langchain_interceptor.py +0 -0
- {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/utils/litellm_interceptor.py +0 -0
- {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/utils/llm_response_parsing.py +0 -0
- {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/utils/local_analytics.py +0 -0
- {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/utils/logging.py +0 -0
- {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/utils/multi_objective.py +0 -0
- {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/utils/numpy_compat.py +0 -0
- {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/utils/objectives.py +0 -0
- {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/utils/optimization_analyzer.py +0 -0
- {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/utils/optimization_logger.py +0 -0
- {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/utils/pagination.py +0 -0
- {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/utils/persistence.py +0 -0
- {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/utils/results_table.py +0 -0
- {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/utils/retry.py +0 -0
- {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/utils/secure_path.py +0 -0
- {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/utils/url_security.py +0 -0
- {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/utils/validation.py +0 -0
- {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/visualization/__init__.py +0 -0
- {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/visualization/plots.py +0 -0
- {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/wrapper/__init__.py +0 -0
- {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/wrapper/errors.py +0 -0
- {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/wrapper/server.py +0 -0
- {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/wrapper/service.py +0 -0
- {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent.egg-info/dependency_links.txt +0 -0
- {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent.egg-info/entry_points.txt +0 -0
- {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent.egg-info/requires.txt +0 -0
- {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent.egg-info/top_level.txt +0 -0
- {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent_validation/__init__.py +0 -0
- {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent_validation/base.py +0 -0
- {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent_validation/plugins.py +0 -0
- {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent_validation/py.typed +0 -0
- {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/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.dev8
|
|
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
|
|
@@ -66,6 +66,7 @@ from .models import (
|
|
|
66
66
|
TrialResultSubmission,
|
|
67
67
|
TrialSuggestion,
|
|
68
68
|
)
|
|
69
|
+
from .smart_pruning import normalize_smart_pruning_options
|
|
69
70
|
from .subset_selection import SmartSubsetSelector
|
|
70
71
|
from .url_security import validate_cloud_base_url
|
|
71
72
|
|
|
@@ -131,7 +132,7 @@ def _session_is_closed(session: Any) -> bool:
|
|
|
131
132
|
return False
|
|
132
133
|
|
|
133
134
|
|
|
134
|
-
def _log_finalizer_close_task_result(task: asyncio.
|
|
135
|
+
def _log_finalizer_close_task_result(task: asyncio.Future[Any], owner: str) -> None:
|
|
135
136
|
try:
|
|
136
137
|
task.result()
|
|
137
138
|
except asyncio.CancelledError:
|
|
@@ -163,7 +164,10 @@ def _schedule_aiohttp_session_close(
|
|
|
163
164
|
try:
|
|
164
165
|
close_result = close_method()
|
|
165
166
|
if inspect.isawaitable(close_result):
|
|
166
|
-
task =
|
|
167
|
+
task: asyncio.Future[Any] = asyncio.ensure_future(
|
|
168
|
+
cast(Awaitable[Any], close_result),
|
|
169
|
+
loop=loop,
|
|
170
|
+
)
|
|
167
171
|
task.add_done_callback(
|
|
168
172
|
lambda done_task: _log_finalizer_close_task_result(done_task, owner)
|
|
169
173
|
)
|
|
@@ -1936,6 +1940,9 @@ class TraigentCloudClient(BaseTraigentClient):
|
|
|
1936
1940
|
# Warm-start: prior experiment id (empty string treated as absent).
|
|
1937
1941
|
if request.warm_start_from:
|
|
1938
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
|
|
1939
1946
|
artifact_fingerprints = artifact_fingerprints_to_wire(
|
|
1940
1947
|
getattr(request, "artifact_fingerprints", None)
|
|
1941
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
|
|
|
@@ -228,6 +229,7 @@ class SessionCreationRequest:
|
|
|
228
229
|
constraints: dict[str, Any] | None = None
|
|
229
230
|
default_config: dict[str, Any] | None = None
|
|
230
231
|
warm_start_from: str | None = None
|
|
232
|
+
smart_pruning: dict[str, Any] | None = None
|
|
231
233
|
promotion_policy: dict[str, Any] | None = None
|
|
232
234
|
# Content-free TVL governance summary (RFC 0001 P8): cvar names/types/
|
|
233
235
|
# governed flags only — built by traigent.cloud.governance, never ad hoc.
|
|
@@ -251,6 +253,7 @@ class SessionCreationRequest:
|
|
|
251
253
|
self.objectives: list[Any] = []
|
|
252
254
|
if self.dataset_metadata is None:
|
|
253
255
|
self.dataset_metadata: dict[str, Any] = {"size": 100, "type": "test"}
|
|
256
|
+
self.smart_pruning = normalize_smart_pruning_options(self.smart_pruning)
|
|
254
257
|
# Ensure max_trials is never None
|
|
255
258
|
if self.max_trials is None:
|
|
256
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."""
|
|
@@ -0,0 +1,85 @@
|
|
|
1
|
+
"""Smart-pruning wire contract helpers."""
|
|
2
|
+
|
|
3
|
+
from __future__ import annotations
|
|
4
|
+
|
|
5
|
+
from collections.abc import Mapping
|
|
6
|
+
from typing import Any, Literal, cast
|
|
7
|
+
|
|
8
|
+
from pydantic import BaseModel, ConfigDict, Field
|
|
9
|
+
from pydantic import ValidationError as PydanticValidationError
|
|
10
|
+
|
|
11
|
+
|
|
12
|
+
class SmartPruningOptions(BaseModel):
|
|
13
|
+
"""Cloud smart-pruning profile sent on session creation."""
|
|
14
|
+
|
|
15
|
+
model_config = ConfigDict(arbitrary_types_allowed=True, extra="forbid")
|
|
16
|
+
|
|
17
|
+
label: Literal["aggressive", "balanced", "conservative"]
|
|
18
|
+
min_completed_trials: int | None = Field(default=None, ge=1)
|
|
19
|
+
warmup_steps: int | None = Field(default=None, ge=0)
|
|
20
|
+
epsilon: float | None = Field(default=None, ge=0)
|
|
21
|
+
cost_threshold: float | None = Field(default=None, ge=0)
|
|
22
|
+
confidence: float | None = Field(default=None, gt=0, lt=1)
|
|
23
|
+
min_samples_per_config: int | None = Field(default=None, ge=1)
|
|
24
|
+
warmup_trials: int | None = Field(default=None, ge=0)
|
|
25
|
+
|
|
26
|
+
|
|
27
|
+
def normalize_smart_pruning_options(
|
|
28
|
+
value: Any,
|
|
29
|
+
*,
|
|
30
|
+
field_name: str = "smart_pruning",
|
|
31
|
+
) -> dict[str, Any] | None:
|
|
32
|
+
"""Normalize smart-pruning config to the schema-shaped wire dict."""
|
|
33
|
+
if value is None:
|
|
34
|
+
return None
|
|
35
|
+
if isinstance(value, SmartPruningOptions):
|
|
36
|
+
model = value
|
|
37
|
+
elif isinstance(value, Mapping):
|
|
38
|
+
try:
|
|
39
|
+
model = SmartPruningOptions.model_validate(dict(value))
|
|
40
|
+
except PydanticValidationError as exc:
|
|
41
|
+
extra_keys = sorted(
|
|
42
|
+
str(error["loc"][0])
|
|
43
|
+
for error in exc.errors()
|
|
44
|
+
if error.get("type") == "extra_forbidden" and error.get("loc")
|
|
45
|
+
)
|
|
46
|
+
extra_message = (
|
|
47
|
+
f" contains unsupported key(s): {', '.join(extra_keys)};"
|
|
48
|
+
if extra_keys
|
|
49
|
+
else ""
|
|
50
|
+
)
|
|
51
|
+
raise ValueError(
|
|
52
|
+
f"{field_name}{extra_message} "
|
|
53
|
+
f"does not match smart_pruning_schema.json: {exc}"
|
|
54
|
+
) from exc
|
|
55
|
+
else:
|
|
56
|
+
raise TypeError(
|
|
57
|
+
f"{field_name} must be a mapping or SmartPruningOptions, "
|
|
58
|
+
f"got {type(value).__name__}"
|
|
59
|
+
)
|
|
60
|
+
return cast(dict[str, Any], model.model_dump(exclude_none=True))
|
|
61
|
+
|
|
62
|
+
|
|
63
|
+
_INTERMEDIATE_REPORT_KEYS = frozenset(
|
|
64
|
+
{
|
|
65
|
+
"session_id",
|
|
66
|
+
"trial_id",
|
|
67
|
+
"running_score",
|
|
68
|
+
"examples_attempted",
|
|
69
|
+
"objective_name",
|
|
70
|
+
"partial_cost_usd",
|
|
71
|
+
}
|
|
72
|
+
)
|
|
73
|
+
|
|
74
|
+
|
|
75
|
+
def normalize_intermediate_report_payload(
|
|
76
|
+
payload: Mapping[str, Any],
|
|
77
|
+
) -> dict[str, Any]:
|
|
78
|
+
"""Return an allowlisted intermediate-report payload."""
|
|
79
|
+
unknown_keys = sorted(set(payload) - _INTERMEDIATE_REPORT_KEYS)
|
|
80
|
+
if unknown_keys:
|
|
81
|
+
joined = ", ".join(unknown_keys)
|
|
82
|
+
raise ValueError(
|
|
83
|
+
f"intermediate report payload contains unsupported key(s): {joined}"
|
|
84
|
+
)
|
|
85
|
+
return {key: payload[key] for key in payload}
|
|
@@ -7,10 +7,11 @@ This module provides secure API key storage with best practice warnings.
|
|
|
7
7
|
|
|
8
8
|
from __future__ import annotations
|
|
9
9
|
|
|
10
|
-
import os
|
|
11
10
|
import threading
|
|
12
11
|
import warnings
|
|
13
12
|
|
|
13
|
+
from traigent.config.provider_support import resolve_api_key_from_env
|
|
14
|
+
|
|
14
15
|
|
|
15
16
|
class APIKeyManager:
|
|
16
17
|
"""Manages API keys with security best practices."""
|
|
@@ -57,28 +58,17 @@ class APIKeyManager:
|
|
|
57
58
|
Returns:
|
|
58
59
|
The API key if found, None otherwise
|
|
59
60
|
"""
|
|
60
|
-
# Priority: Environment > Explicitly set > Config file
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
if provider == "huggingface":
|
|
72
|
-
# Native-first alias chain: HF_TOKEN -> HUGGING_FACE_HUB_TOKEN -> HF_API_KEY
|
|
73
|
-
env_key = (
|
|
74
|
-
os.getenv("HF_TOKEN")
|
|
75
|
-
or os.getenv("HUGGING_FACE_HUB_TOKEN")
|
|
76
|
-
or os.getenv("HF_API_KEY")
|
|
77
|
-
)
|
|
78
|
-
else:
|
|
79
|
-
env_key = os.getenv(env_names[provider])
|
|
80
|
-
if env_key:
|
|
81
|
-
return env_key
|
|
61
|
+
# Priority: Environment > Explicitly set > Config file.
|
|
62
|
+
# The env-var chain per provider is derived from the canonical
|
|
63
|
+
# provider-support table (traigent/config/provider_support.py) so the
|
|
64
|
+
# key map can no longer drift from the validator's env reading. This is
|
|
65
|
+
# what gives google (GOOGLE_API_KEY/GEMINI_API_KEY) and mistral
|
|
66
|
+
# (MISTRAL_API_KEY) first-class key-manager support (#1568) and keeps
|
|
67
|
+
# the HuggingFace alias chain HF_TOKEN -> HUGGING_FACE_HUB_TOKEN ->
|
|
68
|
+
# HF_API_KEY intact.
|
|
69
|
+
env_key = resolve_api_key_from_env(provider)
|
|
70
|
+
if env_key:
|
|
71
|
+
return env_key
|
|
82
72
|
|
|
83
73
|
# Return explicitly set key
|
|
84
74
|
with self._lock:
|