traigent 0.18.1.dev10__tar.gz → 0.19.0__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.dev10 → traigent-0.19.0}/CHANGELOG.md +71 -0
- {traigent-0.18.1.dev10/traigent.egg-info → traigent-0.19.0}/PKG-INFO +2 -2
- {traigent-0.18.1.dev10 → traigent-0.19.0}/docs/api-reference/complete-function-specification.md +1 -0
- {traigent-0.18.1.dev10 → traigent-0.19.0}/docs/api-reference/telemetry.md +40 -14
- {traigent-0.18.1.dev10 → traigent-0.19.0}/docs/architecture/stop_conditions.md +37 -0
- {traigent-0.18.1.dev10 → traigent-0.19.0}/pyproject.toml +5 -3
- {traigent-0.18.1.dev10 → traigent-0.19.0}/traigent/adapters/execution_adapter.py +2 -2
- {traigent-0.18.1.dev10 → traigent-0.19.0}/traigent/analytics/predictive.py +0 -15
- {traigent-0.18.1.dev10 → traigent-0.19.0}/traigent/analytics/render.py +2 -1
- {traigent-0.18.1.dev10 → traigent-0.19.0}/traigent/api/decorators.py +122 -23
- {traigent-0.18.1.dev10 → traigent-0.19.0}/traigent/api/functions.py +12 -9
- {traigent-0.18.1.dev10 → traigent-0.19.0}/traigent/api/types.py +3 -0
- {traigent-0.18.1.dev10 → traigent-0.19.0}/traigent/cli/auth_commands.py +47 -0
- {traigent-0.18.1.dev10 → traigent-0.19.0}/traigent/cli/local_commands.py +5 -2
- {traigent-0.18.1.dev10 → traigent-0.19.0}/traigent/cli/playbook_commands.py +32 -8
- {traigent-0.18.1.dev10 → traigent-0.19.0}/traigent/cli/sync_commands.py +17 -0
- {traigent-0.18.1.dev10 → traigent-0.19.0}/traigent/cloud/__init__.py +35 -0
- {traigent-0.18.1.dev10 → traigent-0.19.0}/traigent/cloud/analytics_client.py +68 -0
- {traigent-0.18.1.dev10 → traigent-0.19.0}/traigent/cloud/api_operations.py +25 -1
- {traigent-0.18.1.dev10 → traigent-0.19.0}/traigent/cloud/async_batch_transport.py +1 -1
- {traigent-0.18.1.dev10 → traigent-0.19.0}/traigent/cloud/backend_client.py +138 -0
- {traigent-0.18.1.dev10 → traigent-0.19.0}/traigent/cloud/client.py +1 -1
- {traigent-0.18.1.dev10 → traigent-0.19.0}/traigent/cloud/dtos.py +674 -5
- {traigent-0.18.1.dev10 → traigent-0.19.0}/traigent/cloud/integration_manager.py +17 -10
- {traigent-0.18.1.dev10 → traigent-0.19.0}/traigent/cloud/optimizer_client.py +4 -2
- {traigent-0.18.1.dev10 → traigent-0.19.0}/traigent/cloud/privacy_operations.py +4 -1
- {traigent-0.18.1.dev10 → traigent-0.19.0}/traigent/cloud/session_operations.py +83 -5
- {traigent-0.18.1.dev10 → traigent-0.19.0}/traigent/cloud/subset_selection.py +1 -1
- {traigent-0.18.1.dev10 → traigent-0.19.0}/traigent/cloud/sync_manager.py +95 -4
- {traigent-0.18.1.dev10 → traigent-0.19.0}/traigent/cloud/trial_operations.py +106 -34
- {traigent-0.18.1.dev10 → traigent-0.19.0}/traigent/config/types.py +182 -88
- {traigent-0.18.1.dev10 → traigent-0.19.0}/traigent/config_generator/subsystems/tvar_recommendations.py +2 -2
- {traigent-0.18.1.dev10 → traigent-0.19.0}/traigent/core/backend_session_manager.py +17 -5
- {traigent-0.18.1.dev10 → traigent-0.19.0}/traigent/core/best_config_runtime.py +10 -1
- {traigent-0.18.1.dev10 → traigent-0.19.0}/traigent/core/ci_approval.py +42 -20
- {traigent-0.18.1.dev10 → traigent-0.19.0}/traigent/core/config_state_manager.py +5 -0
- {traigent-0.18.1.dev10 → traigent-0.19.0}/traigent/core/constants.py +3 -2
- {traigent-0.18.1.dev10 → traigent-0.19.0}/traigent/core/cost_enforcement.py +5 -1
- {traigent-0.18.1.dev10 → traigent-0.19.0}/traigent/core/evaluator_wrapper.py +2 -1
- {traigent-0.18.1.dev10 → traigent-0.19.0}/traigent/core/exception_handler.py +60 -0
- {traigent-0.18.1.dev10 → traigent-0.19.0}/traigent/core/logger_facade.py +2 -2
- {traigent-0.18.1.dev10 → traigent-0.19.0}/traigent/core/metadata_helpers.py +17 -3
- {traigent-0.18.1.dev10 → traigent-0.19.0}/traigent/core/optimization_pipeline.py +218 -20
- {traigent-0.18.1.dev10 → traigent-0.19.0}/traigent/core/optimized_function.py +46 -8
- {traigent-0.18.1.dev10 → traigent-0.19.0}/traigent/core/orchestrator.py +112 -9
- {traigent-0.18.1.dev10 → traigent-0.19.0}/traigent/core/stop_condition_manager.py +20 -0
- traigent-0.19.0/traigent/core/stop_conditions.py +1354 -0
- {traigent-0.18.1.dev10 → traigent-0.19.0}/traigent/core/trial_lifecycle.py +216 -0
- {traigent-0.18.1.dev10 → traigent-0.19.0}/traigent/core/trial_result_factory.py +53 -0
- {traigent-0.18.1.dev10 → traigent-0.19.0}/traigent/core/types_ext.py +1 -1
- {traigent-0.18.1.dev10 → traigent-0.19.0}/traigent/evaluators/base.py +4 -3
- {traigent-0.18.1.dev10 → traigent-0.19.0}/traigent/evaluators/local.py +28 -6
- {traigent-0.18.1.dev10 → traigent-0.19.0}/traigent/evaluators/metrics_tracker.py +138 -28
- traigent-0.19.0/traigent/examples/_portal.py +8 -0
- {traigent-0.18.1.dev10 → traigent-0.19.0}/traigent/examples/quickstart/_env.py +2 -2
- {traigent-0.18.1.dev10 → traigent-0.19.0}/traigent/examples/quickstart/publish_and_verify.py +9 -4
- {traigent-0.18.1.dev10 → traigent-0.19.0}/traigent/examples/tutorial_bootstrap.py +2 -2
- {traigent-0.18.1.dev10 → traigent-0.19.0}/traigent/generation/options.py +1 -1
- traigent-0.19.0/traigent/generation/skill_train/_deterministic_indices.py +33 -0
- {traigent-0.18.1.dev10 → traigent-0.19.0}/traigent/generation/skill_train/artifacts.py +22 -8
- {traigent-0.18.1.dev10 → traigent-0.19.0}/traigent/generation/skill_train/slow_update.py +2 -3
- {traigent-0.18.1.dev10 → traigent-0.19.0}/traigent/generation/skill_train/splits.py +3 -5
- {traigent-0.18.1.dev10 → traigent-0.19.0}/traigent/invokers/base.py +8 -3
- {traigent-0.18.1.dev10 → traigent-0.19.0}/traigent/invokers/local.py +4 -2
- {traigent-0.18.1.dev10 → traigent-0.19.0}/traigent/invokers/streaming.py +112 -8
- {traigent-0.18.1.dev10 → traigent-0.19.0}/traigent/metrics/deepeval_metrics.py +126 -2
- {traigent-0.18.1.dev10 → traigent-0.19.0}/traigent/optimizers/interactive_optimizer.py +61 -2
- {traigent-0.18.1.dev10 → traigent-0.19.0}/traigent/security/audit.py +31 -8
- {traigent-0.18.1.dev10 → traigent-0.19.0}/traigent/security/input_validation.py +7 -5
- {traigent-0.18.1.dev10 → traigent-0.19.0}/traigent/skills/traigent-decorator-setup/SKILL.md +3 -3
- {traigent-0.18.1.dev10 → traigent-0.19.0}/traigent/skills/traigent-decorator-setup/references/execution-modes.md +3 -3
- {traigent-0.18.1.dev10 → traigent-0.19.0}/traigent/skills/traigent-run-optimization/SKILL.md +1 -1
- {traigent-0.18.1.dev10 → traigent-0.19.0}/traigent/storage/local_storage.py +3 -2
- {traigent-0.18.1.dev10 → traigent-0.19.0}/traigent/traigent_client.py +8 -10
- {traigent-0.18.1.dev10 → traigent-0.19.0}/traigent/utils/artifact_fingerprints.py +20 -0
- {traigent-0.18.1.dev10 → traigent-0.19.0}/traigent/utils/diagnostics.py +3 -2
- {traigent-0.18.1.dev10 → traigent-0.19.0}/traigent/utils/env_config.py +7 -4
- {traigent-0.18.1.dev10 → traigent-0.19.0}/traigent/utils/function_identity.py +45 -6
- {traigent-0.18.1.dev10 → traigent-0.19.0}/traigent/utils/incentives.py +2 -2
- {traigent-0.18.1.dev10 → traigent-0.19.0}/traigent/utils/local_analytics.py +2 -2
- {traigent-0.18.1.dev10 → traigent-0.19.0}/traigent/utils/persistence.py +37 -20
- {traigent-0.18.1.dev10 → traigent-0.19.0}/traigent/utils/retry.py +4 -3
- {traigent-0.18.1.dev10 → traigent-0.19.0}/traigent/utils/secure_path.py +1 -19
- {traigent-0.18.1.dev10 → traigent-0.19.0/traigent.egg-info}/PKG-INFO +2 -2
- {traigent-0.18.1.dev10 → traigent-0.19.0}/traigent.egg-info/SOURCES.txt +2 -0
- {traigent-0.18.1.dev10 → traigent-0.19.0}/traigent.egg-info/requires.txt +1 -1
- traigent-0.18.1.dev10/traigent/core/stop_conditions.py +0 -662
- {traigent-0.18.1.dev10 → traigent-0.19.0}/COMMERCIAL-LICENSE.md +0 -0
- {traigent-0.18.1.dev10 → traigent-0.19.0}/CONTRIBUTING.md +0 -0
- {traigent-0.18.1.dev10 → traigent-0.19.0}/CONTRIBUTOR-LICENSING.md +0 -0
- {traigent-0.18.1.dev10 → traigent-0.19.0}/DISCLAIMER.md +0 -0
- {traigent-0.18.1.dev10 → traigent-0.19.0}/LICENSE +0 -0
- {traigent-0.18.1.dev10 → traigent-0.19.0}/MANIFEST.in +0 -0
- {traigent-0.18.1.dev10 → traigent-0.19.0}/NOTICE +0 -0
- {traigent-0.18.1.dev10 → traigent-0.19.0}/README.md +0 -0
- {traigent-0.18.1.dev10 → traigent-0.19.0}/SECURITY.md +0 -0
- {traigent-0.18.1.dev10 → traigent-0.19.0}/docs/LOCAL_CI_GATE.md +0 -0
- {traigent-0.18.1.dev10 → traigent-0.19.0}/docs/README.md +0 -0
- {traigent-0.18.1.dev10 → traigent-0.19.0}/docs/SYNC_MAP.md +0 -0
- {traigent-0.18.1.dev10 → traigent-0.19.0}/docs/agent-skill.md +0 -0
- {traigent-0.18.1.dev10 → traigent-0.19.0}/docs/api-reference/decorator-reference.md +0 -0
- {traigent-0.18.1.dev10 → traigent-0.19.0}/docs/api-reference/enterprise-beta-api.md +0 -0
- {traigent-0.18.1.dev10 → traigent-0.19.0}/docs/api-reference/interactive_optimizer.md +0 -0
- {traigent-0.18.1.dev10 → traigent-0.19.0}/docs/api-reference/thread-pool-examples.md +0 -0
- {traigent-0.18.1.dev10 → traigent-0.19.0}/docs/architecture/ARCHITECTURE.md +0 -0
- {traigent-0.18.1.dev10 → traigent-0.19.0}/docs/architecture/cost-architecture-validation.md +0 -0
- {traigent-0.18.1.dev10 → traigent-0.19.0}/docs/architecture/execution_mode_follow_up.md +0 -0
- {traigent-0.18.1.dev10 → traigent-0.19.0}/docs/architecture/integrations-inventory.md +0 -0
- {traigent-0.18.1.dev10 → traigent-0.19.0}/docs/architecture/plugin_architecture.md +0 -0
- {traigent-0.18.1.dev10 → traigent-0.19.0}/docs/architecture/project-structure.md +0 -0
- {traigent-0.18.1.dev10 → traigent-0.19.0}/docs/concepts/composite-knob-ir.md +0 -0
- {traigent-0.18.1.dev10 → traigent-0.19.0}/docs/concepts/composite-knobs.md +0 -0
- {traigent-0.18.1.dev10 → traigent-0.19.0}/docs/concepts/guided-generation.md +0 -0
- {traigent-0.18.1.dev10 → traigent-0.19.0}/docs/contributing/ADDING_NEW_INTEGRATIONS.md +0 -0
- {traigent-0.18.1.dev10 → traigent-0.19.0}/docs/contributing/CODE_OF_CONDUCT.md +0 -0
- {traigent-0.18.1.dev10 → traigent-0.19.0}/docs/contributing/CONTRIBUTING.md +0 -0
- {traigent-0.18.1.dev10 → traigent-0.19.0}/docs/contributing/EXAMPLE_TEMPLATE.md +0 -0
- {traigent-0.18.1.dev10 → traigent-0.19.0}/docs/contributing/README.md +0 -0
- {traigent-0.18.1.dev10 → traigent-0.19.0}/docs/contributing/SECURITY.md +0 -0
- {traigent-0.18.1.dev10 → traigent-0.19.0}/docs/contributing/aikido_triage.md +0 -0
- {traigent-0.18.1.dev10 → traigent-0.19.0}/docs/contributing/code_review_instructions.md +0 -0
- {traigent-0.18.1.dev10 → traigent-0.19.0}/docs/contributing/test-quality-guide.md +0 -0
- {traigent-0.18.1.dev10 → traigent-0.19.0}/docs/demos/DEMO_VIDEO_GUIDE.md +0 -0
- {traigent-0.18.1.dev10 → traigent-0.19.0}/docs/demos/README.md +0 -0
- {traigent-0.18.1.dev10 → traigent-0.19.0}/docs/examples/API_PATTERNS.md +0 -0
- {traigent-0.18.1.dev10 → traigent-0.19.0}/docs/examples/LEARNING_ROADMAP.md +0 -0
- {traigent-0.18.1.dev10 → traigent-0.19.0}/docs/examples/QUICK_REFERENCE.md +0 -0
- {traigent-0.18.1.dev10 → traigent-0.19.0}/docs/examples/README.md +0 -0
- {traigent-0.18.1.dev10 → traigent-0.19.0}/docs/examples/START_HERE.md +0 -0
- {traigent-0.18.1.dev10 → traigent-0.19.0}/docs/examples/TROUBLESHOOTING.md +0 -0
- {traigent-0.18.1.dev10 → traigent-0.19.0}/docs/fake-completion-tracking.md +0 -0
- {traigent-0.18.1.dev10 → traigent-0.19.0}/docs/feature_matrices/README.md +0 -0
- {traigent-0.18.1.dev10 → traigent-0.19.0}/docs/features/README.md +0 -0
- {traigent-0.18.1.dev10 → traigent-0.19.0}/docs/features/authentication.md +0 -0
- {traigent-0.18.1.dev10 → traigent-0.19.0}/docs/features/constraint-dsl.md +0 -0
- {traigent-0.18.1.dev10 → traigent-0.19.0}/docs/features/dataflow-detection.md +0 -0
- {traigent-0.18.1.dev10 → traigent-0.19.0}/docs/features/framework_override_enhanced_features.md +0 -0
- {traigent-0.18.1.dev10 → traigent-0.19.0}/docs/features/mcp-server.md +0 -0
- {traigent-0.18.1.dev10 → traigent-0.19.0}/docs/features/observability-spans.md +0 -0
- {traigent-0.18.1.dev10 → traigent-0.19.0}/docs/features/onboarding.md +0 -0
- {traigent-0.18.1.dev10 → traigent-0.19.0}/docs/features/prompt_management.md +0 -0
- {traigent-0.18.1.dev10 → traigent-0.19.0}/docs/features/recommendations.md +0 -0
- {traigent-0.18.1.dev10 → traigent-0.19.0}/docs/features/safety-gates.md +0 -0
- {traigent-0.18.1.dev10 → traigent-0.19.0}/docs/features/seamless_injection.md +0 -0
- {traigent-0.18.1.dev10 → traigent-0.19.0}/docs/features/strategy-presets.md +0 -0
- {traigent-0.18.1.dev10 → traigent-0.19.0}/docs/features/strict_metrics_nulls.md +0 -0
- {traigent-0.18.1.dev10 → traigent-0.19.0}/docs/getting-started/GETTING_STARTED.md +0 -0
- {traigent-0.18.1.dev10 → traigent-0.19.0}/docs/getting-started/README.md +0 -0
- {traigent-0.18.1.dev10 → traigent-0.19.0}/docs/getting-started/installation.md +0 -0
- {traigent-0.18.1.dev10 → traigent-0.19.0}/docs/getting-started/minimal-integration.md +0 -0
- {traigent-0.18.1.dev10 → traigent-0.19.0}/docs/getting-started/portal-dev-laptop-agent.md +0 -0
- {traigent-0.18.1.dev10 → traigent-0.19.0}/docs/getting-started/testing.md +0 -0
- {traigent-0.18.1.dev10 → traigent-0.19.0}/docs/guides/VSCODE_RESTART_GUIDE.md +0 -0
- {traigent-0.18.1.dev10 → traigent-0.19.0}/docs/guides/evaluation.md +0 -0
- {traigent-0.18.1.dev10 → traigent-0.19.0}/docs/guides/execution-mode-migration.md +0 -0
- {traigent-0.18.1.dev10 → traigent-0.19.0}/docs/guides/execution-modes.md +0 -0
- {traigent-0.18.1.dev10 → traigent-0.19.0}/docs/guides/js-bridge.md +0 -0
- {traigent-0.18.1.dev10 → traigent-0.19.0}/docs/guides/llm_plugin_migration_guide.md +0 -0
- {traigent-0.18.1.dev10 → traigent-0.19.0}/docs/guides/parallel-configuration.md +0 -0
- {traigent-0.18.1.dev10 → traigent-0.19.0}/docs/guides/secrets_management.md +0 -0
- {traigent-0.18.1.dev10 → traigent-0.19.0}/docs/hybrid-mode-api-contract.md +0 -0
- {traigent-0.18.1.dev10 → traigent-0.19.0}/docs/hybrid-mode-client-guide.md +0 -0
- {traigent-0.18.1.dev10 → traigent-0.19.0}/docs/operations/azure_openai.md +0 -0
- {traigent-0.18.1.dev10 → traigent-0.19.0}/docs/operations/bedrock.md +0 -0
- {traigent-0.18.1.dev10 → traigent-0.19.0}/docs/operations/google_gemini.md +0 -0
- {traigent-0.18.1.dev10 → traigent-0.19.0}/docs/security/trust_model.md +0 -0
- {traigent-0.18.1.dev10 → traigent-0.19.0}/docs/testing/CREATIVE_STRESS_TESTING.md +0 -0
- {traigent-0.18.1.dev10 → traigent-0.19.0}/docs/traceability/concepts/composite-knob-ir.md +0 -0
- {traigent-0.18.1.dev10 → traigent-0.19.0}/docs/traceability/concepts/composite-knobs.md +0 -0
- {traigent-0.18.1.dev10 → traigent-0.19.0}/docs/traceability/concepts/guided-generation.md +0 -0
- {traigent-0.18.1.dev10 → traigent-0.19.0}/docs/traceability/schema.md +0 -0
- {traigent-0.18.1.dev10 → traigent-0.19.0}/docs/traceability/tagging_tracking.md +0 -0
- {traigent-0.18.1.dev10 → traigent-0.19.0}/docs/traceability/taxonomy_reference.md +0 -0
- {traigent-0.18.1.dev10 → traigent-0.19.0}/docs/tvl/CONSTRAINT_EXPRESSIONS.md +0 -0
- {traigent-0.18.1.dev10 → traigent-0.19.0}/docs/user-guide/README.md +0 -0
- {traigent-0.18.1.dev10 → traigent-0.19.0}/docs/user-guide/agent_optimization.md +0 -0
- {traigent-0.18.1.dev10 → traigent-0.19.0}/docs/user-guide/choosing_optimization_model.md +0 -0
- {traigent-0.18.1.dev10 → traigent-0.19.0}/docs/user-guide/configuration-spaces.md +0 -0
- {traigent-0.18.1.dev10 → traigent-0.19.0}/docs/user-guide/evaluation_guide.md +0 -0
- {traigent-0.18.1.dev10 → traigent-0.19.0}/docs/user-guide/injection_modes.md +0 -0
- {traigent-0.18.1.dev10 → traigent-0.19.0}/docs/user-guide/interactive_optimization.md +0 -0
- {traigent-0.18.1.dev10 → traigent-0.19.0}/docs/user-guide/smart_optimization.md +0 -0
- {traigent-0.18.1.dev10 → traigent-0.19.0}/docs/user-guide/tuned_variables.md +0 -0
- {traigent-0.18.1.dev10 → traigent-0.19.0}/docs/walkthrough.md +0 -0
- {traigent-0.18.1.dev10 → traigent-0.19.0}/requirements/requirements-all.txt +0 -0
- {traigent-0.18.1.dev10 → traigent-0.19.0}/requirements/requirements-analytics.txt +0 -0
- {traigent-0.18.1.dev10 → traigent-0.19.0}/requirements/requirements-bayesian.txt +0 -0
- {traigent-0.18.1.dev10 → traigent-0.19.0}/requirements/requirements-chroma.txt +0 -0
- {traigent-0.18.1.dev10 → traigent-0.19.0}/requirements/requirements-dev.txt +0 -0
- {traigent-0.18.1.dev10 → traigent-0.19.0}/requirements/requirements-hybrid.txt +0 -0
- {traigent-0.18.1.dev10 → traigent-0.19.0}/requirements/requirements-integrations.txt +0 -0
- {traigent-0.18.1.dev10 → traigent-0.19.0}/requirements/requirements-security.txt +0 -0
- {traigent-0.18.1.dev10 → traigent-0.19.0}/requirements/requirements-test.txt +0 -0
- {traigent-0.18.1.dev10 → traigent-0.19.0}/requirements/requirements.txt +0 -0
- {traigent-0.18.1.dev10 → traigent-0.19.0}/setup.cfg +0 -0
- {traigent-0.18.1.dev10 → traigent-0.19.0}/traigent/__init__.py +0 -0
- {traigent-0.18.1.dev10 → traigent-0.19.0}/traigent/_version.py +0 -0
- {traigent-0.18.1.dev10 → traigent-0.19.0}/traigent/admin/__init__.py +0 -0
- {traigent-0.18.1.dev10 → traigent-0.19.0}/traigent/admin/client.py +0 -0
- {traigent-0.18.1.dev10 → traigent-0.19.0}/traigent/admin/config.py +0 -0
- {traigent-0.18.1.dev10 → traigent-0.19.0}/traigent/admin/dtos.py +0 -0
- {traigent-0.18.1.dev10 → traigent-0.19.0}/traigent/agents/__init__.py +0 -0
- {traigent-0.18.1.dev10 → traigent-0.19.0}/traigent/agents/config_mapper.py +0 -0
- {traigent-0.18.1.dev10 → traigent-0.19.0}/traigent/agents/executor.py +0 -0
- {traigent-0.18.1.dev10 → traigent-0.19.0}/traigent/agents/platforms.py +0 -0
- {traigent-0.18.1.dev10 → traigent-0.19.0}/traigent/agents/specification_generator.py +0 -0
- {traigent-0.18.1.dev10 → traigent-0.19.0}/traigent/analytics/__init__.py +0 -0
- {traigent-0.18.1.dev10 → traigent-0.19.0}/traigent/analytics/anomaly.py +0 -0
- {traigent-0.18.1.dev10 → traigent-0.19.0}/traigent/analytics/cost_optimization.py +0 -0
- {traigent-0.18.1.dev10 → traigent-0.19.0}/traigent/analytics/example_insights.py +0 -0
- {traigent-0.18.1.dev10 → traigent-0.19.0}/traigent/analytics/intelligence.py +0 -0
- {traigent-0.18.1.dev10 → traigent-0.19.0}/traigent/analytics/meta_learning.py +0 -0
- {traigent-0.18.1.dev10 → traigent-0.19.0}/traigent/analytics/next_steps.py +0 -0
- {traigent-0.18.1.dev10 → traigent-0.19.0}/traigent/analytics/optimization_plan.py +0 -0
- {traigent-0.18.1.dev10 → traigent-0.19.0}/traigent/analytics/scheduling.py +0 -0
- {traigent-0.18.1.dev10 → traigent-0.19.0}/traigent/analytics_mcp/__init__.py +0 -0
- {traigent-0.18.1.dev10 → traigent-0.19.0}/traigent/analytics_mcp/server.py +0 -0
- {traigent-0.18.1.dev10 → traigent-0.19.0}/traigent/analytics_mcp/tools.py +0 -0
- {traigent-0.18.1.dev10 → traigent-0.19.0}/traigent/api/__init__.py +0 -0
- {traigent-0.18.1.dev10 → traigent-0.19.0}/traigent/api/agent_inference.py +0 -0
- {traigent-0.18.1.dev10 → traigent-0.19.0}/traigent/api/config_builder.py +0 -0
- {traigent-0.18.1.dev10 → traigent-0.19.0}/traigent/api/config_space.py +0 -0
- {traigent-0.18.1.dev10 → traigent-0.19.0}/traigent/api/constraint_builders.py +0 -0
- {traigent-0.18.1.dev10 → traigent-0.19.0}/traigent/api/constraints.py +0 -0
- {traigent-0.18.1.dev10 → traigent-0.19.0}/traigent/api/parameter_ranges.py +0 -0
- {traigent-0.18.1.dev10 → traigent-0.19.0}/traigent/api/parameter_validator.py +0 -0
- {traigent-0.18.1.dev10 → traigent-0.19.0}/traigent/api/safety.py +0 -0
- {traigent-0.18.1.dev10 → traigent-0.19.0}/traigent/api/strategy_presets.py +0 -0
- {traigent-0.18.1.dev10 → traigent-0.19.0}/traigent/api/validation_protocol.py +0 -0
- {traigent-0.18.1.dev10 → traigent-0.19.0}/traigent/cli/__init__.py +0 -0
- {traigent-0.18.1.dev10 → traigent-0.19.0}/traigent/cli/detect_tvars_command.py +0 -0
- {traigent-0.18.1.dev10 → traigent-0.19.0}/traigent/cli/function_discovery.py +0 -0
- {traigent-0.18.1.dev10 → traigent-0.19.0}/traigent/cli/generate_config_command.py +0 -0
- {traigent-0.18.1.dev10 → traigent-0.19.0}/traigent/cli/hooks_commands.py +0 -0
- {traigent-0.18.1.dev10 → traigent-0.19.0}/traigent/cli/main.py +0 -0
- {traigent-0.18.1.dev10 → traigent-0.19.0}/traigent/cli/next_steps_command.py +0 -0
- {traigent-0.18.1.dev10 → traigent-0.19.0}/traigent/cli/onboard_commands.py +0 -0
- {traigent-0.18.1.dev10 → traigent-0.19.0}/traigent/cli/optimization_validator.py +0 -0
- {traigent-0.18.1.dev10 → traigent-0.19.0}/traigent/cli/plan_command.py +0 -0
- {traigent-0.18.1.dev10 → traigent-0.19.0}/traigent/cli/validation_types.py +0 -0
- {traigent-0.18.1.dev10 → traigent-0.19.0}/traigent/cloud/_aiohttp_compat.py +0 -0
- {traigent-0.18.1.dev10 → traigent-0.19.0}/traigent/cloud/agent_dtos.py +0 -0
- {traigent-0.18.1.dev10 → traigent-0.19.0}/traigent/cloud/analytics_auth.py +0 -0
- {traigent-0.18.1.dev10 → traigent-0.19.0}/traigent/cloud/api_key_manager.py +0 -0
- {traigent-0.18.1.dev10 → traigent-0.19.0}/traigent/cloud/auth.py +0 -0
- {traigent-0.18.1.dev10 → traigent-0.19.0}/traigent/cloud/backend_bridges.py +0 -0
- {traigent-0.18.1.dev10 → traigent-0.19.0}/traigent/cloud/backend_components.py +0 -0
- {traigent-0.18.1.dev10 → traigent-0.19.0}/traigent/cloud/backend_synchronizer.py +0 -0
- {traigent-0.18.1.dev10 → traigent-0.19.0}/traigent/cloud/benchmark_client.py +0 -0
- {traigent-0.18.1.dev10 → traigent-0.19.0}/traigent/cloud/billing.py +0 -0
- {traigent-0.18.1.dev10 → traigent-0.19.0}/traigent/cloud/cloud_operations.py +0 -0
- {traigent-0.18.1.dev10 → traigent-0.19.0}/traigent/cloud/credential_manager.py +0 -0
- {traigent-0.18.1.dev10 → traigent-0.19.0}/traigent/cloud/credential_resolver.py +0 -0
- {traigent-0.18.1.dev10 → traigent-0.19.0}/traigent/cloud/dataset_converter.py +0 -0
- {traigent-0.18.1.dev10 → traigent-0.19.0}/traigent/cloud/governance.py +0 -0
- {traigent-0.18.1.dev10 → traigent-0.19.0}/traigent/cloud/models.py +0 -0
- {traigent-0.18.1.dev10 → traigent-0.19.0}/traigent/cloud/password_auth_handler.py +0 -0
- {traigent-0.18.1.dev10 → traigent-0.19.0}/traigent/cloud/production_mcp_client.py +0 -0
- {traigent-0.18.1.dev10 → traigent-0.19.0}/traigent/cloud/remote_guidance.py +0 -0
- {traigent-0.18.1.dev10 → traigent-0.19.0}/traigent/cloud/resilient_client.py +0 -0
- {traigent-0.18.1.dev10 → traigent-0.19.0}/traigent/cloud/service.py +0 -0
- {traigent-0.18.1.dev10 → traigent-0.19.0}/traigent/cloud/session_types.py +0 -0
- {traigent-0.18.1.dev10 → traigent-0.19.0}/traigent/cloud/sessions.py +0 -0
- {traigent-0.18.1.dev10 → traigent-0.19.0}/traigent/cloud/smart_pruning.py +0 -0
- {traigent-0.18.1.dev10 → traigent-0.19.0}/traigent/cloud/token_manager.py +0 -0
- {traigent-0.18.1.dev10 → traigent-0.19.0}/traigent/cloud/trial_tracker.py +0 -0
- {traigent-0.18.1.dev10 → traigent-0.19.0}/traigent/cloud/url_security.py +0 -0
- {traigent-0.18.1.dev10 → traigent-0.19.0}/traigent/cloud/user_agent.py +0 -0
- {traigent-0.18.1.dev10 → traigent-0.19.0}/traigent/cloud/validators.py +0 -0
- {traigent-0.18.1.dev10 → traigent-0.19.0}/traigent/config/__init__.py +0 -0
- {traigent-0.18.1.dev10 → traigent-0.19.0}/traigent/config/api_keys.py +0 -0
- {traigent-0.18.1.dev10 → traigent-0.19.0}/traigent/config/ast_transformer.py +0 -0
- {traigent-0.18.1.dev10 → traigent-0.19.0}/traigent/config/backend_config.py +0 -0
- {traigent-0.18.1.dev10 → traigent-0.19.0}/traigent/config/context.py +0 -0
- {traigent-0.18.1.dev10 → traigent-0.19.0}/traigent/config/feature_flags.py +0 -0
- {traigent-0.18.1.dev10 → traigent-0.19.0}/traigent/config/models.yaml +0 -0
- {traigent-0.18.1.dev10 → traigent-0.19.0}/traigent/config/parallel.py +0 -0
- {traigent-0.18.1.dev10 → traigent-0.19.0}/traigent/config/project.py +0 -0
- {traigent-0.18.1.dev10 → traigent-0.19.0}/traigent/config/provider_support.py +0 -0
- {traigent-0.18.1.dev10 → traigent-0.19.0}/traigent/config/providers.py +0 -0
- {traigent-0.18.1.dev10 → traigent-0.19.0}/traigent/config/runtime_injector.py +0 -0
- {traigent-0.18.1.dev10 → traigent-0.19.0}/traigent/config/tenant.py +0 -0
- {traigent-0.18.1.dev10 → traigent-0.19.0}/traigent/config_generator/__init__.py +0 -0
- {traigent-0.18.1.dev10 → traigent-0.19.0}/traigent/config_generator/agent_classifier.py +0 -0
- {traigent-0.18.1.dev10 → traigent-0.19.0}/traigent/config_generator/apply.py +0 -0
- {traigent-0.18.1.dev10 → traigent-0.19.0}/traigent/config_generator/catalog/schemas/tvar_catalog_entry_schema.json +0 -0
- {traigent-0.18.1.dev10 → traigent-0.19.0}/traigent/config_generator/catalog/schemas/tvar_observation_schema.json +0 -0
- {traigent-0.18.1.dev10 → traigent-0.19.0}/traigent/config_generator/catalog/schemas/tvar_value_recommendation_schema.json +0 -0
- {traigent-0.18.1.dev10 → traigent-0.19.0}/traigent/config_generator/catalog/tvar_catalog.v1.json +0 -0
- {traigent-0.18.1.dev10 → traigent-0.19.0}/traigent/config_generator/catalog.py +0 -0
- {traigent-0.18.1.dev10 → traigent-0.19.0}/traigent/config_generator/llm_backend.py +0 -0
- {traigent-0.18.1.dev10 → traigent-0.19.0}/traigent/config_generator/pipeline.py +0 -0
- {traigent-0.18.1.dev10 → traigent-0.19.0}/traigent/config_generator/presets/__init__.py +0 -0
- {traigent-0.18.1.dev10 → traigent-0.19.0}/traigent/config_generator/presets/agent_type_catalog.py +0 -0
- {traigent-0.18.1.dev10 → traigent-0.19.0}/traigent/config_generator/presets/benchmark_catalog.py +0 -0
- {traigent-0.18.1.dev10 → traigent-0.19.0}/traigent/config_generator/presets/constraint_templates.py +0 -0
- {traigent-0.18.1.dev10 → traigent-0.19.0}/traigent/config_generator/presets/range_presets.py +0 -0
- {traigent-0.18.1.dev10 → traigent-0.19.0}/traigent/config_generator/recommendations.py +0 -0
- {traigent-0.18.1.dev10 → traigent-0.19.0}/traigent/config_generator/subsystems/__init__.py +0 -0
- {traigent-0.18.1.dev10 → traigent-0.19.0}/traigent/config_generator/subsystems/benchmarks.py +0 -0
- {traigent-0.18.1.dev10 → traigent-0.19.0}/traigent/config_generator/subsystems/objectives.py +0 -0
- {traigent-0.18.1.dev10 → traigent-0.19.0}/traigent/config_generator/subsystems/safety_constraints.py +0 -0
- {traigent-0.18.1.dev10 → traigent-0.19.0}/traigent/config_generator/subsystems/structural_constraints.py +0 -0
- {traigent-0.18.1.dev10 → traigent-0.19.0}/traigent/config_generator/subsystems/tvar_ranges.py +0 -0
- {traigent-0.18.1.dev10 → traigent-0.19.0}/traigent/config_generator/types.py +0 -0
- {traigent-0.18.1.dev10 → traigent-0.19.0}/traigent/core/__init__.py +0 -0
- {traigent-0.18.1.dev10 → traigent-0.19.0}/traigent/core/cache_policy.py +0 -0
- {traigent-0.18.1.dev10 → traigent-0.19.0}/traigent/core/cost_estimator.py +0 -0
- {traigent-0.18.1.dev10 → traigent-0.19.0}/traigent/core/execution_policy_runtime.py +0 -0
- {traigent-0.18.1.dev10 → traigent-0.19.0}/traigent/core/license.py +0 -0
- {traigent-0.18.1.dev10 → traigent-0.19.0}/traigent/core/mandatory_metrics.py +0 -0
- {traigent-0.18.1.dev10 → traigent-0.19.0}/traigent/core/meta_types.py +0 -0
- {traigent-0.18.1.dev10 → traigent-0.19.0}/traigent/core/metric_registry.py +0 -0
- {traigent-0.18.1.dev10 → traigent-0.19.0}/traigent/core/metrics_aggregator.py +0 -0
- {traigent-0.18.1.dev10 → traigent-0.19.0}/traigent/core/namespace.py +0 -0
- {traigent-0.18.1.dev10 → traigent-0.19.0}/traigent/core/objectives.py +0 -0
- {traigent-0.18.1.dev10 → traigent-0.19.0}/traigent/core/orchestrator_helpers.py +0 -0
- {traigent-0.18.1.dev10 → traigent-0.19.0}/traigent/core/parallel_execution_manager.py +0 -0
- {traigent-0.18.1.dev10 → traigent-0.19.0}/traigent/core/progress_manager.py +0 -0
- {traigent-0.18.1.dev10 → traigent-0.19.0}/traigent/core/result_selection.py +0 -0
- {traigent-0.18.1.dev10 → traigent-0.19.0}/traigent/core/sample_budget.py +0 -0
- {traigent-0.18.1.dev10 → traigent-0.19.0}/traigent/core/samplers/__init__.py +0 -0
- {traigent-0.18.1.dev10 → traigent-0.19.0}/traigent/core/samplers/random_sampler.py +0 -0
- {traigent-0.18.1.dev10 → traigent-0.19.0}/traigent/core/session_context.py +0 -0
- {traigent-0.18.1.dev10 → traigent-0.19.0}/traigent/core/session_types.py +0 -0
- {traigent-0.18.1.dev10 → traigent-0.19.0}/traigent/core/stat_significance.py +0 -0
- {traigent-0.18.1.dev10 → traigent-0.19.0}/traigent/core/trace_env.py +0 -0
- {traigent-0.18.1.dev10 → traigent-0.19.0}/traigent/core/tracing.py +0 -0
- {traigent-0.18.1.dev10 → traigent-0.19.0}/traigent/core/trial_context.py +0 -0
- {traigent-0.18.1.dev10 → traigent-0.19.0}/traigent/core/types.py +0 -0
- {traigent-0.18.1.dev10 → traigent-0.19.0}/traigent/core/utils.py +0 -0
- {traigent-0.18.1.dev10 → traigent-0.19.0}/traigent/core/workflow_trace_manager.py +0 -0
- {traigent-0.18.1.dev10 → traigent-0.19.0}/traigent/core_metrics/__init__.py +0 -0
- {traigent-0.18.1.dev10 → traigent-0.19.0}/traigent/core_metrics/client.py +0 -0
- {traigent-0.18.1.dev10 → traigent-0.19.0}/traigent/core_metrics/config.py +0 -0
- {traigent-0.18.1.dev10 → traigent-0.19.0}/traigent/core_metrics/dtos.py +0 -0
- {traigent-0.18.1.dev10 → traigent-0.19.0}/traigent/defaults.py +0 -0
- {traigent-0.18.1.dev10 → traigent-0.19.0}/traigent/effectuation/__init__.py +0 -0
- {traigent-0.18.1.dev10 → traigent-0.19.0}/traigent/effectuation/contracts.py +0 -0
- {traigent-0.18.1.dev10 → traigent-0.19.0}/traigent/effectuation/strategies/__init__.py +0 -0
- {traigent-0.18.1.dev10 → traigent-0.19.0}/traigent/effectuation/strategies/framework_param.py +0 -0
- {traigent-0.18.1.dev10 → traigent-0.19.0}/traigent/effectuation/strategies/self_consistency.py +0 -0
- {traigent-0.18.1.dev10 → traigent-0.19.0}/traigent/evaluation/__init__.py +0 -0
- {traigent-0.18.1.dev10 → traigent-0.19.0}/traigent/evaluation/client.py +0 -0
- {traigent-0.18.1.dev10 → traigent-0.19.0}/traigent/evaluation/config.py +0 -0
- {traigent-0.18.1.dev10 → traigent-0.19.0}/traigent/evaluation/dtos.py +0 -0
- {traigent-0.18.1.dev10 → traigent-0.19.0}/traigent/evaluators/__init__.py +0 -0
- {traigent-0.18.1.dev10 → traigent-0.19.0}/traigent/evaluators/catalog/metric_eval_catalog.v1.json +0 -0
- {traigent-0.18.1.dev10 → traigent-0.19.0}/traigent/evaluators/catalog/schemas/metric_eval_catalog_entry_schema.json +0 -0
- {traigent-0.18.1.dev10 → traigent-0.19.0}/traigent/evaluators/catalog_loader.py +0 -0
- {traigent-0.18.1.dev10 → traigent-0.19.0}/traigent/evaluators/dataset_registry.py +0 -0
- {traigent-0.18.1.dev10 → traigent-0.19.0}/traigent/evaluators/hybrid_api.py +0 -0
- {traigent-0.18.1.dev10 → traigent-0.19.0}/traigent/evaluators/metrics.py +0 -0
- {traigent-0.18.1.dev10 → traigent-0.19.0}/traigent/evaluators/recommendations.py +0 -0
- {traigent-0.18.1.dev10 → traigent-0.19.0}/traigent/examples/__init__.py +0 -0
- {traigent-0.18.1.dev10 → traigent-0.19.0}/traigent/examples/providers/__init__.py +0 -0
- {traigent-0.18.1.dev10 → traigent-0.19.0}/traigent/examples/providers/_bootstrap.py +0 -0
- {traigent-0.18.1.dev10 → traigent-0.19.0}/traigent/examples/providers/_demo.py +0 -0
- {traigent-0.18.1.dev10 → traigent-0.19.0}/traigent/examples/providers/anthropic.py +0 -0
- {traigent-0.18.1.dev10 → traigent-0.19.0}/traigent/examples/providers/aws.py +0 -0
- {traigent-0.18.1.dev10 → traigent-0.19.0}/traigent/examples/providers/azure.py +0 -0
- {traigent-0.18.1.dev10 → traigent-0.19.0}/traigent/examples/providers/gcp.py +0 -0
- {traigent-0.18.1.dev10 → traigent-0.19.0}/traigent/examples/providers/gemini.py +0 -0
- {traigent-0.18.1.dev10 → traigent-0.19.0}/traigent/examples/providers/groq.py +0 -0
- {traigent-0.18.1.dev10 → traigent-0.19.0}/traigent/examples/providers/litellm_any.py +0 -0
- {traigent-0.18.1.dev10 → traigent-0.19.0}/traigent/examples/providers/manifest.json +0 -0
- {traigent-0.18.1.dev10 → traigent-0.19.0}/traigent/examples/providers/openai.py +0 -0
- {traigent-0.18.1.dev10 → traigent-0.19.0}/traigent/examples/providers/openrouter.py +0 -0
- {traigent-0.18.1.dev10 → traigent-0.19.0}/traigent/examples/providers/qa_samples.jsonl +0 -0
- {traigent-0.18.1.dev10 → traigent-0.19.0}/traigent/examples/quickstart/__init__.py +0 -0
- {traigent-0.18.1.dev10 → traigent-0.19.0}/traigent/examples/quickstart/__main__.py +0 -0
- {traigent-0.18.1.dev10 → traigent-0.19.0}/traigent/examples/quickstart/qa_samples.jsonl +0 -0
- {traigent-0.18.1.dev10 → traigent-0.19.0}/traigent/generation/__init__.py +0 -0
- {traigent-0.18.1.dev10 → traigent-0.19.0}/traigent/generation/backend_provider.py +0 -0
- {traigent-0.18.1.dev10 → traigent-0.19.0}/traigent/generation/example_synth.py +0 -0
- {traigent-0.18.1.dev10 → traigent-0.19.0}/traigent/generation/llm_provider.py +0 -0
- {traigent-0.18.1.dev10 → traigent-0.19.0}/traigent/generation/loop.py +0 -0
- {traigent-0.18.1.dev10 → traigent-0.19.0}/traigent/generation/models.py +0 -0
- {traigent-0.18.1.dev10 → traigent-0.19.0}/traigent/generation/prompt_rewriter.py +0 -0
- {traigent-0.18.1.dev10 → traigent-0.19.0}/traigent/generation/skill_train/__init__.py +0 -0
- {traigent-0.18.1.dev10 → traigent-0.19.0}/traigent/generation/skill_train/buffer.py +0 -0
- {traigent-0.18.1.dev10 → traigent-0.19.0}/traigent/generation/skill_train/document.py +0 -0
- {traigent-0.18.1.dev10 → traigent-0.19.0}/traigent/generation/skill_train/edits.py +0 -0
- {traigent-0.18.1.dev10 → traigent-0.19.0}/traigent/generation/skill_train/prompts.py +0 -0
- {traigent-0.18.1.dev10 → traigent-0.19.0}/traigent/generation/skill_train/reflection.py +0 -0
- {traigent-0.18.1.dev10 → traigent-0.19.0}/traigent/generation/skill_train/schedule.py +0 -0
- {traigent-0.18.1.dev10 → traigent-0.19.0}/traigent/generation/skill_train/trainer.py +0 -0
- {traigent-0.18.1.dev10 → traigent-0.19.0}/traigent/generation/skill_train/trainer_result.py +0 -0
- {traigent-0.18.1.dev10 → traigent-0.19.0}/traigent/generation/validators.py +0 -0
- {traigent-0.18.1.dev10 → traigent-0.19.0}/traigent/guaranteed_modes.py +0 -0
- {traigent-0.18.1.dev10 → traigent-0.19.0}/traigent/hooks/__init__.py +0 -0
- {traigent-0.18.1.dev10 → traigent-0.19.0}/traigent/hooks/config.py +0 -0
- {traigent-0.18.1.dev10 → traigent-0.19.0}/traigent/hooks/installer.py +0 -0
- {traigent-0.18.1.dev10 → traigent-0.19.0}/traigent/hooks/validator.py +0 -0
- {traigent-0.18.1.dev10 → traigent-0.19.0}/traigent/hybrid/__init__.py +0 -0
- {traigent-0.18.1.dev10 → traigent-0.19.0}/traigent/hybrid/discovery.py +0 -0
- {traigent-0.18.1.dev10 → traigent-0.19.0}/traigent/hybrid/http_transport.py +0 -0
- {traigent-0.18.1.dev10 → traigent-0.19.0}/traigent/hybrid/lifecycle.py +0 -0
- {traigent-0.18.1.dev10 → traigent-0.19.0}/traigent/hybrid/mcp_transport.py +0 -0
- {traigent-0.18.1.dev10 → traigent-0.19.0}/traigent/hybrid/protocol.py +0 -0
- {traigent-0.18.1.dev10 → traigent-0.19.0}/traigent/hybrid/transport.py +0 -0
- {traigent-0.18.1.dev10 → traigent-0.19.0}/traigent/integrations/__init__.py +0 -0
- {traigent-0.18.1.dev10 → traigent-0.19.0}/traigent/integrations/activation.py +0 -0
- {traigent-0.18.1.dev10 → traigent-0.19.0}/traigent/integrations/base.py +0 -0
- {traigent-0.18.1.dev10 → traigent-0.19.0}/traigent/integrations/base_plugin.py +0 -0
- {traigent-0.18.1.dev10 → traigent-0.19.0}/traigent/integrations/bedrock_client.py +0 -0
- {traigent-0.18.1.dev10 → traigent-0.19.0}/traigent/integrations/config.py +0 -0
- {traigent-0.18.1.dev10 → traigent-0.19.0}/traigent/integrations/dspy_adapter.py +0 -0
- {traigent-0.18.1.dev10 → traigent-0.19.0}/traigent/integrations/framework_override.py +0 -0
- {traigent-0.18.1.dev10 → traigent-0.19.0}/traigent/integrations/langchain/__init__.py +0 -0
- {traigent-0.18.1.dev10 → traigent-0.19.0}/traigent/integrations/langchain/handler.py +0 -0
- {traigent-0.18.1.dev10 → traigent-0.19.0}/traigent/integrations/langfuse/__init__.py +0 -0
- {traigent-0.18.1.dev10 → traigent-0.19.0}/traigent/integrations/langfuse/callback.py +0 -0
- {traigent-0.18.1.dev10 → traigent-0.19.0}/traigent/integrations/langfuse/client.py +0 -0
- {traigent-0.18.1.dev10 → traigent-0.19.0}/traigent/integrations/langfuse/tracker.py +0 -0
- {traigent-0.18.1.dev10 → traigent-0.19.0}/traigent/integrations/llms/__init__.py +0 -0
- {traigent-0.18.1.dev10 → traigent-0.19.0}/traigent/integrations/llms/anthropic_plugin.py +0 -0
- {traigent-0.18.1.dev10 → traigent-0.19.0}/traigent/integrations/llms/azure_openai_plugin.py +0 -0
- {traigent-0.18.1.dev10 → traigent-0.19.0}/traigent/integrations/llms/base_llm_plugin.py +0 -0
- {traigent-0.18.1.dev10 → traigent-0.19.0}/traigent/integrations/llms/bedrock_plugin.py +0 -0
- {traigent-0.18.1.dev10 → traigent-0.19.0}/traigent/integrations/llms/cohere_plugin.py +0 -0
- {traigent-0.18.1.dev10 → traigent-0.19.0}/traigent/integrations/llms/gemini_plugin.py +0 -0
- {traigent-0.18.1.dev10 → traigent-0.19.0}/traigent/integrations/llms/huggingface_plugin.py +0 -0
- {traigent-0.18.1.dev10 → traigent-0.19.0}/traigent/integrations/llms/langchain/__init__.py +0 -0
- {traigent-0.18.1.dev10 → traigent-0.19.0}/traigent/integrations/llms/langchain/base.py +0 -0
- {traigent-0.18.1.dev10 → traigent-0.19.0}/traigent/integrations/llms/langchain_plugin.py +0 -0
- {traigent-0.18.1.dev10 → traigent-0.19.0}/traigent/integrations/llms/litellm_plugin.py +0 -0
- {traigent-0.18.1.dev10 → traigent-0.19.0}/traigent/integrations/llms/llamaindex_plugin.py +0 -0
- {traigent-0.18.1.dev10 → traigent-0.19.0}/traigent/integrations/llms/mistral_plugin.py +0 -0
- {traigent-0.18.1.dev10 → traigent-0.19.0}/traigent/integrations/llms/openai.py +0 -0
- {traigent-0.18.1.dev10 → traigent-0.19.0}/traigent/integrations/llms/openai_plugin.py +0 -0
- {traigent-0.18.1.dev10 → traigent-0.19.0}/traigent/integrations/mappings.py +0 -0
- {traigent-0.18.1.dev10 → traigent-0.19.0}/traigent/integrations/model_discovery/__init__.py +0 -0
- {traigent-0.18.1.dev10 → traigent-0.19.0}/traigent/integrations/model_discovery/anthropic_discovery.py +0 -0
- {traigent-0.18.1.dev10 → traigent-0.19.0}/traigent/integrations/model_discovery/azure_discovery.py +0 -0
- {traigent-0.18.1.dev10 → traigent-0.19.0}/traigent/integrations/model_discovery/base.py +0 -0
- {traigent-0.18.1.dev10 → traigent-0.19.0}/traigent/integrations/model_discovery/cache.py +0 -0
- {traigent-0.18.1.dev10 → traigent-0.19.0}/traigent/integrations/model_discovery/gemini_discovery.py +0 -0
- {traigent-0.18.1.dev10 → traigent-0.19.0}/traigent/integrations/model_discovery/mistral_discovery.py +0 -0
- {traigent-0.18.1.dev10 → traigent-0.19.0}/traigent/integrations/model_discovery/openai_discovery.py +0 -0
- {traigent-0.18.1.dev10 → traigent-0.19.0}/traigent/integrations/model_discovery/registry.py +0 -0
- {traigent-0.18.1.dev10 → traigent-0.19.0}/traigent/integrations/observability/__init__.py +0 -0
- {traigent-0.18.1.dev10 → traigent-0.19.0}/traigent/integrations/observability/mlflow.py +0 -0
- {traigent-0.18.1.dev10 → traigent-0.19.0}/traigent/integrations/observability/wandb.py +0 -0
- {traigent-0.18.1.dev10 → traigent-0.19.0}/traigent/integrations/observability/workflow_traces.py +0 -0
- {traigent-0.18.1.dev10 → traigent-0.19.0}/traigent/integrations/plugin_registry.py +0 -0
- {traigent-0.18.1.dev10 → traigent-0.19.0}/traigent/integrations/providers.py +0 -0
- {traigent-0.18.1.dev10 → traigent-0.19.0}/traigent/integrations/pydantic_ai/__init__.py +0 -0
- {traigent-0.18.1.dev10 → traigent-0.19.0}/traigent/integrations/pydantic_ai/_types.py +0 -0
- {traigent-0.18.1.dev10 → traigent-0.19.0}/traigent/integrations/pydantic_ai/handler.py +0 -0
- {traigent-0.18.1.dev10 → traigent-0.19.0}/traigent/integrations/pydantic_ai/plugin.py +0 -0
- {traigent-0.18.1.dev10 → traigent-0.19.0}/traigent/integrations/utils/__init__.py +0 -0
- {traigent-0.18.1.dev10 → traigent-0.19.0}/traigent/integrations/utils/discovery.py +0 -0
- {traigent-0.18.1.dev10 → traigent-0.19.0}/traigent/integrations/utils/message_coercion.py +0 -0
- {traigent-0.18.1.dev10 → traigent-0.19.0}/traigent/integrations/utils/mock_adapter.py +0 -0
- {traigent-0.18.1.dev10 → traigent-0.19.0}/traigent/integrations/utils/parameter_normalizer.py +0 -0
- {traigent-0.18.1.dev10 → traigent-0.19.0}/traigent/integrations/utils/response_wrapper.py +0 -0
- {traigent-0.18.1.dev10 → traigent-0.19.0}/traigent/integrations/utils/validation.py +0 -0
- {traigent-0.18.1.dev10 → traigent-0.19.0}/traigent/integrations/utils/version_compat.py +0 -0
- {traigent-0.18.1.dev10 → traigent-0.19.0}/traigent/integrations/vector_stores/__init__.py +0 -0
- {traigent-0.18.1.dev10 → traigent-0.19.0}/traigent/integrations/vector_stores/base.py +0 -0
- {traigent-0.18.1.dev10 → traigent-0.19.0}/traigent/integrations/vector_stores/chromadb_plugin.py +0 -0
- {traigent-0.18.1.dev10 → traigent-0.19.0}/traigent/integrations/vector_stores/pinecone_plugin.py +0 -0
- {traigent-0.18.1.dev10 → traigent-0.19.0}/traigent/integrations/vector_stores/weaviate_plugin.py +0 -0
- {traigent-0.18.1.dev10 → traigent-0.19.0}/traigent/integrations/wrappers.py +0 -0
- {traigent-0.18.1.dev10 → traigent-0.19.0}/traigent/invokers/__init__.py +0 -0
- {traigent-0.18.1.dev10 → traigent-0.19.0}/traigent/invokers/batch.py +0 -0
- {traigent-0.18.1.dev10 → traigent-0.19.0}/traigent/knobs/__init__.py +0 -0
- {traigent-0.18.1.dev10 → traigent-0.19.0}/traigent/knobs/adapters.py +0 -0
- {traigent-0.18.1.dev10 → traigent-0.19.0}/traigent/knobs/bindings.py +0 -0
- {traigent-0.18.1.dev10 → traigent-0.19.0}/traigent/knobs/canonical.py +0 -0
- {traigent-0.18.1.dev10 → traigent-0.19.0}/traigent/knobs/cascade.py +0 -0
- {traigent-0.18.1.dev10 → traigent-0.19.0}/traigent/knobs/certificates.py +0 -0
- {traigent-0.18.1.dev10 → traigent-0.19.0}/traigent/knobs/composites.py +0 -0
- {traigent-0.18.1.dev10 → traigent-0.19.0}/traigent/knobs/kinds.py +0 -0
- {traigent-0.18.1.dev10 → traigent-0.19.0}/traigent/knobs/patterns.py +0 -0
- {traigent-0.18.1.dev10 → traigent-0.19.0}/traigent/knobs/resolution.py +0 -0
- {traigent-0.18.1.dev10 → traigent-0.19.0}/traigent/knobs/resolver.py +0 -0
- {traigent-0.18.1.dev10 → traigent-0.19.0}/traigent/knobs/runtime.py +0 -0
- {traigent-0.18.1.dev10 → traigent-0.19.0}/traigent/knobs/signals.py +0 -0
- {traigent-0.18.1.dev10 → traigent-0.19.0}/traigent/knobs/telemetry.py +0 -0
- {traigent-0.18.1.dev10 → traigent-0.19.0}/traigent/mcp/__init__.py +0 -0
- {traigent-0.18.1.dev10 → traigent-0.19.0}/traigent/mcp/server.py +0 -0
- {traigent-0.18.1.dev10 → traigent-0.19.0}/traigent/mcp/tools.py +0 -0
- {traigent-0.18.1.dev10 → traigent-0.19.0}/traigent/metrics/__init__.py +0 -0
- {traigent-0.18.1.dev10 → traigent-0.19.0}/traigent/metrics/agent_metrics.py +0 -0
- {traigent-0.18.1.dev10 → traigent-0.19.0}/traigent/metrics/content_features.py +0 -0
- {traigent-0.18.1.dev10 → traigent-0.19.0}/traigent/metrics/ragas_metrics.py +0 -0
- {traigent-0.18.1.dev10 → traigent-0.19.0}/traigent/metrics/registry.py +0 -0
- {traigent-0.18.1.dev10 → traigent-0.19.0}/traigent/observability/__init__.py +0 -0
- {traigent-0.18.1.dev10 → traigent-0.19.0}/traigent/observability/agent_spans.py +0 -0
- {traigent-0.18.1.dev10 → traigent-0.19.0}/traigent/observability/client.py +0 -0
- {traigent-0.18.1.dev10 → traigent-0.19.0}/traigent/observability/config.py +0 -0
- {traigent-0.18.1.dev10 → traigent-0.19.0}/traigent/observability/decorators.py +0 -0
- {traigent-0.18.1.dev10 → traigent-0.19.0}/traigent/observability/dtos.py +0 -0
- {traigent-0.18.1.dev10 → traigent-0.19.0}/traigent/optimizers/__init__.py +0 -0
- {traigent-0.18.1.dev10 → traigent-0.19.0}/traigent/optimizers/base.py +0 -0
- {traigent-0.18.1.dev10 → traigent-0.19.0}/traigent/optimizers/batch_optimizers.py +0 -0
- {traigent-0.18.1.dev10 → traigent-0.19.0}/traigent/optimizers/cloud_optimizer.py +0 -0
- {traigent-0.18.1.dev10 → traigent-0.19.0}/traigent/optimizers/grid.py +0 -0
- {traigent-0.18.1.dev10 → traigent-0.19.0}/traigent/optimizers/random.py +0 -0
- {traigent-0.18.1.dev10 → traigent-0.19.0}/traigent/optimizers/registry.py +0 -0
- {traigent-0.18.1.dev10 → traigent-0.19.0}/traigent/optimizers/remote.py +0 -0
- {traigent-0.18.1.dev10 → traigent-0.19.0}/traigent/optimizers/remote_services.py +0 -0
- {traigent-0.18.1.dev10 → traigent-0.19.0}/traigent/optimizers/results.py +0 -0
- {traigent-0.18.1.dev10 → traigent-0.19.0}/traigent/playbook/__init__.py +0 -0
- {traigent-0.18.1.dev10 → traigent-0.19.0}/traigent/playbook/loader.py +0 -0
- {traigent-0.18.1.dev10 → traigent-0.19.0}/traigent/playbook/model.py +0 -0
- {traigent-0.18.1.dev10 → traigent-0.19.0}/traigent/playbook/scaffold.py +0 -0
- {traigent-0.18.1.dev10 → traigent-0.19.0}/traigent/playbook/schemas/agent_playbook_schema.json +0 -0
- {traigent-0.18.1.dev10 → traigent-0.19.0}/traigent/playbook/staleness.py +0 -0
- {traigent-0.18.1.dev10 → traigent-0.19.0}/traigent/playbook/validator.py +0 -0
- {traigent-0.18.1.dev10 → traigent-0.19.0}/traigent/plugins/__init__.py +0 -0
- {traigent-0.18.1.dev10 → traigent-0.19.0}/traigent/plugins/registry.py +0 -0
- {traigent-0.18.1.dev10 → traigent-0.19.0}/traigent/projects/__init__.py +0 -0
- {traigent-0.18.1.dev10 → traigent-0.19.0}/traigent/projects/client.py +0 -0
- {traigent-0.18.1.dev10 → traigent-0.19.0}/traigent/projects/config.py +0 -0
- {traigent-0.18.1.dev10 → traigent-0.19.0}/traigent/projects/dtos.py +0 -0
- {traigent-0.18.1.dev10 → traigent-0.19.0}/traigent/prompts/__init__.py +0 -0
- {traigent-0.18.1.dev10 → traigent-0.19.0}/traigent/prompts/client.py +0 -0
- {traigent-0.18.1.dev10 → traigent-0.19.0}/traigent/prompts/config.py +0 -0
- {traigent-0.18.1.dev10 → traigent-0.19.0}/traigent/prompts/dtos.py +0 -0
- {traigent-0.18.1.dev10 → traigent-0.19.0}/traigent/providers/__init__.py +0 -0
- {traigent-0.18.1.dev10 → traigent-0.19.0}/traigent/providers/validation.py +0 -0
- {traigent-0.18.1.dev10 → traigent-0.19.0}/traigent/py.typed +0 -0
- {traigent-0.18.1.dev10 → traigent-0.19.0}/traigent/reporting/__init__.py +0 -0
- {traigent-0.18.1.dev10 → traigent-0.19.0}/traigent/reporting/example_map.py +0 -0
- {traigent-0.18.1.dev10 → traigent-0.19.0}/traigent/security/__init__.py +0 -0
- {traigent-0.18.1.dev10 → traigent-0.19.0}/traigent/security/auth/__init__.py +0 -0
- {traigent-0.18.1.dev10 → traigent-0.19.0}/traigent/security/auth/helpers.py +0 -0
- {traigent-0.18.1.dev10 → traigent-0.19.0}/traigent/security/auth/mfa.py +0 -0
- {traigent-0.18.1.dev10 → traigent-0.19.0}/traigent/security/auth/models.py +0 -0
- {traigent-0.18.1.dev10 → traigent-0.19.0}/traigent/security/auth/oidc.py +0 -0
- {traigent-0.18.1.dev10 → traigent-0.19.0}/traigent/security/auth/saml.py +0 -0
- {traigent-0.18.1.dev10 → traigent-0.19.0}/traigent/security/auth/sms.py +0 -0
- {traigent-0.18.1.dev10 → traigent-0.19.0}/traigent/security/auth/totp.py +0 -0
- {traigent-0.18.1.dev10 → traigent-0.19.0}/traigent/security/config.py +0 -0
- {traigent-0.18.1.dev10 → traigent-0.19.0}/traigent/security/credentials.py +0 -0
- {traigent-0.18.1.dev10 → traigent-0.19.0}/traigent/security/crypto_utils.py +0 -0
- {traigent-0.18.1.dev10 → traigent-0.19.0}/traigent/security/deployment.py +0 -0
- {traigent-0.18.1.dev10 → traigent-0.19.0}/traigent/security/encryption.py +0 -0
- {traigent-0.18.1.dev10 → traigent-0.19.0}/traigent/security/enterprise.py +0 -0
- {traigent-0.18.1.dev10 → traigent-0.19.0}/traigent/security/headers.py +0 -0
- {traigent-0.18.1.dev10 → traigent-0.19.0}/traigent/security/jwt_validator.py +0 -0
- {traigent-0.18.1.dev10 → traigent-0.19.0}/traigent/security/rate_limiter.py +0 -0
- {traigent-0.18.1.dev10 → traigent-0.19.0}/traigent/security/redaction.py +0 -0
- {traigent-0.18.1.dev10 → traigent-0.19.0}/traigent/security/session_manager.py +0 -0
- {traigent-0.18.1.dev10 → traigent-0.19.0}/traigent/security/tenant.py +0 -0
- {traigent-0.18.1.dev10 → traigent-0.19.0}/traigent/skills/traigent-analyze-results/SKILL.md +0 -0
- {traigent-0.18.1.dev10 → traigent-0.19.0}/traigent/skills/traigent-analyze-results/references/convergence-patterns.md +0 -0
- {traigent-0.18.1.dev10 → traigent-0.19.0}/traigent/skills/traigent-analyze-results/references/optimization-result-api.md +0 -0
- {traigent-0.18.1.dev10 → traigent-0.19.0}/traigent/skills/traigent-configuration-space/SKILL.md +0 -0
- {traigent-0.18.1.dev10 → traigent-0.19.0}/traigent/skills/traigent-configuration-space/references/constraints.md +0 -0
- {traigent-0.18.1.dev10 → traigent-0.19.0}/traigent/skills/traigent-configuration-space/references/parameter-types.md +0 -0
- {traigent-0.18.1.dev10 → traigent-0.19.0}/traigent/skills/traigent-debugging/SKILL.md +0 -0
- {traigent-0.18.1.dev10 → traigent-0.19.0}/traigent/skills/traigent-debugging/references/error-reference.md +0 -0
- {traigent-0.18.1.dev10 → traigent-0.19.0}/traigent/skills/traigent-debugging/references/logging-config.md +0 -0
- {traigent-0.18.1.dev10 → traigent-0.19.0}/traigent/skills/traigent-debugging/references/mock-mode.md +0 -0
- {traigent-0.18.1.dev10 → traigent-0.19.0}/traigent/skills/traigent-decorator-setup/references/evaluation-options.md +0 -0
- {traigent-0.18.1.dev10 → traigent-0.19.0}/traigent/skills/traigent-decorator-setup/references/injection-modes.md +0 -0
- {traigent-0.18.1.dev10 → traigent-0.19.0}/traigent/skills/traigent-integrations/SKILL.md +0 -0
- {traigent-0.18.1.dev10 → traigent-0.19.0}/traigent/skills/traigent-integrations/references/dspy.md +0 -0
- {traigent-0.18.1.dev10 → traigent-0.19.0}/traigent/skills/traigent-integrations/references/langchain.md +0 -0
- {traigent-0.18.1.dev10 → traigent-0.19.0}/traigent/skills/traigent-integrations/references/litellm.md +0 -0
- {traigent-0.18.1.dev10 → traigent-0.19.0}/traigent/skills/traigent-quickstart/SKILL.md +0 -0
- {traigent-0.18.1.dev10 → traigent-0.19.0}/traigent/skills/traigent-quickstart/references/environment-variables.md +0 -0
- {traigent-0.18.1.dev10 → traigent-0.19.0}/traigent/skills/traigent-quickstart/references/installation-extras.md +0 -0
- {traigent-0.18.1.dev10 → traigent-0.19.0}/traigent/skills/traigent-run-optimization/references/algorithms.md +0 -0
- {traigent-0.18.1.dev10 → traigent-0.19.0}/traigent/skills/traigent-run-optimization/references/cost-management.md +0 -0
- {traigent-0.18.1.dev10 → traigent-0.19.0}/traigent/skills/traigent-run-optimization/references/parallel-config.md +0 -0
- {traigent-0.18.1.dev10 → traigent-0.19.0}/traigent/storage/__init__.py +0 -0
- {traigent-0.18.1.dev10 → traigent-0.19.0}/traigent/testing/__init__.py +0 -0
- {traigent-0.18.1.dev10 → traigent-0.19.0}/traigent/traigent_integration.py +0 -0
- {traigent-0.18.1.dev10 → traigent-0.19.0}/traigent/tuned_variables/__init__.py +0 -0
- {traigent-0.18.1.dev10 → traigent-0.19.0}/traigent/tuned_variables/dataflow_strategy.py +0 -0
- {traigent-0.18.1.dev10 → traigent-0.19.0}/traigent/tuned_variables/detection_strategies.py +0 -0
- {traigent-0.18.1.dev10 → traigent-0.19.0}/traigent/tuned_variables/detection_types.py +0 -0
- {traigent-0.18.1.dev10 → traigent-0.19.0}/traigent/tuned_variables/detector.py +0 -0
- {traigent-0.18.1.dev10 → traigent-0.19.0}/traigent/tuned_variables/discovery.py +0 -0
- {traigent-0.18.1.dev10 → traigent-0.19.0}/traigent/tuned_variables/observation.py +0 -0
- {traigent-0.18.1.dev10 → traigent-0.19.0}/traigent/tuned_variables/py.typed +0 -0
- {traigent-0.18.1.dev10 → traigent-0.19.0}/traigent/tvl/__init__.py +0 -0
- {traigent-0.18.1.dev10 → traigent-0.19.0}/traigent/tvl/__main__.py +0 -0
- {traigent-0.18.1.dev10 → traigent-0.19.0}/traigent/tvl/models.py +0 -0
- {traigent-0.18.1.dev10 → traigent-0.19.0}/traigent/tvl/objectives.py +0 -0
- {traigent-0.18.1.dev10 → traigent-0.19.0}/traigent/tvl/options.py +0 -0
- {traigent-0.18.1.dev10 → traigent-0.19.0}/traigent/tvl/promotion_gate.py +0 -0
- {traigent-0.18.1.dev10 → traigent-0.19.0}/traigent/tvl/registry.py +0 -0
- {traigent-0.18.1.dev10 → traigent-0.19.0}/traigent/tvl/spec_loader.py +0 -0
- {traigent-0.18.1.dev10 → traigent-0.19.0}/traigent/tvl/spec_validator.py +0 -0
- {traigent-0.18.1.dev10 → traigent-0.19.0}/traigent/tvl/statistics.py +0 -0
- {traigent-0.18.1.dev10 → traigent-0.19.0}/traigent/utils/__init__.py +0 -0
- {traigent-0.18.1.dev10 → traigent-0.19.0}/traigent/utils/batch_optimizer_utils.py +0 -0
- {traigent-0.18.1.dev10 → traigent-0.19.0}/traigent/utils/batch_processing.py +0 -0
- {traigent-0.18.1.dev10 → traigent-0.19.0}/traigent/utils/callbacks.py +0 -0
- {traigent-0.18.1.dev10 → traigent-0.19.0}/traigent/utils/console.py +0 -0
- {traigent-0.18.1.dev10 → traigent-0.19.0}/traigent/utils/constraints.py +0 -0
- {traigent-0.18.1.dev10 → traigent-0.19.0}/traigent/utils/cost_calculator.py +0 -0
- {traigent-0.18.1.dev10 → traigent-0.19.0}/traigent/utils/discrete_domains.py +0 -0
- {traigent-0.18.1.dev10 → traigent-0.19.0}/traigent/utils/error_handler.py +0 -0
- {traigent-0.18.1.dev10 → traigent-0.19.0}/traigent/utils/example_id.py +0 -0
- {traigent-0.18.1.dev10 → traigent-0.19.0}/traigent/utils/exceptions.py +0 -0
- {traigent-0.18.1.dev10 → traigent-0.19.0}/traigent/utils/file_versioning.py +0 -0
- {traigent-0.18.1.dev10 → traigent-0.19.0}/traigent/utils/hashing.py +0 -0
- {traigent-0.18.1.dev10 → traigent-0.19.0}/traigent/utils/importance.py +0 -0
- {traigent-0.18.1.dev10 → traigent-0.19.0}/traigent/utils/insights.py +0 -0
- {traigent-0.18.1.dev10 → traigent-0.19.0}/traigent/utils/langchain_interceptor.py +0 -0
- {traigent-0.18.1.dev10 → traigent-0.19.0}/traigent/utils/litellm_interceptor.py +0 -0
- {traigent-0.18.1.dev10 → traigent-0.19.0}/traigent/utils/llm_response_parsing.py +0 -0
- {traigent-0.18.1.dev10 → traigent-0.19.0}/traigent/utils/logging.py +0 -0
- {traigent-0.18.1.dev10 → traigent-0.19.0}/traigent/utils/multi_objective.py +0 -0
- {traigent-0.18.1.dev10 → traigent-0.19.0}/traigent/utils/numpy_compat.py +0 -0
- {traigent-0.18.1.dev10 → traigent-0.19.0}/traigent/utils/objectives.py +0 -0
- {traigent-0.18.1.dev10 → traigent-0.19.0}/traigent/utils/optimization_analyzer.py +0 -0
- {traigent-0.18.1.dev10 → traigent-0.19.0}/traigent/utils/optimization_logger.py +0 -0
- {traigent-0.18.1.dev10 → traigent-0.19.0}/traigent/utils/pagination.py +0 -0
- {traigent-0.18.1.dev10 → traigent-0.19.0}/traigent/utils/results_table.py +0 -0
- {traigent-0.18.1.dev10 → traigent-0.19.0}/traigent/utils/url_security.py +0 -0
- {traigent-0.18.1.dev10 → traigent-0.19.0}/traigent/utils/validation.py +0 -0
- {traigent-0.18.1.dev10 → traigent-0.19.0}/traigent/visualization/__init__.py +0 -0
- {traigent-0.18.1.dev10 → traigent-0.19.0}/traigent/visualization/plots.py +0 -0
- {traigent-0.18.1.dev10 → traigent-0.19.0}/traigent/wrapper/__init__.py +0 -0
- {traigent-0.18.1.dev10 → traigent-0.19.0}/traigent/wrapper/errors.py +0 -0
- {traigent-0.18.1.dev10 → traigent-0.19.0}/traigent/wrapper/server.py +0 -0
- {traigent-0.18.1.dev10 → traigent-0.19.0}/traigent/wrapper/service.py +0 -0
- {traigent-0.18.1.dev10 → traigent-0.19.0}/traigent.egg-info/dependency_links.txt +0 -0
- {traigent-0.18.1.dev10 → traigent-0.19.0}/traigent.egg-info/entry_points.txt +0 -0
- {traigent-0.18.1.dev10 → traigent-0.19.0}/traigent.egg-info/top_level.txt +0 -0
- {traigent-0.18.1.dev10 → traigent-0.19.0}/traigent_validation/__init__.py +0 -0
- {traigent-0.18.1.dev10 → traigent-0.19.0}/traigent_validation/base.py +0 -0
- {traigent-0.18.1.dev10 → traigent-0.19.0}/traigent_validation/plugins.py +0 -0
- {traigent-0.18.1.dev10 → traigent-0.19.0}/traigent_validation/py.typed +0 -0
- {traigent-0.18.1.dev10 → traigent-0.19.0}/traigent_validation/validators.py +0 -0
|
@@ -6,6 +6,47 @@ Format based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/).
|
|
|
6
6
|
|
|
7
7
|
## [Unreleased]
|
|
8
8
|
|
|
9
|
+
## [0.19.0] - 2026-07-03
|
|
10
|
+
|
|
11
|
+
### Added
|
|
12
|
+
- `SemanticSaturationStopCondition` rebuilt from the shipped schema plan
|
|
13
|
+
(FR-SDK-SEMANTIC-SATURATION-V1).
|
|
14
|
+
- Surrogate (pre-screen) evaluator: a cheap second scorer over captured
|
|
15
|
+
outputs, with an e2e co-evolution demo in mock mode.
|
|
16
|
+
- Smart-pruning producer wired end-to-end: per-example pruning is reachable
|
|
17
|
+
from the SDK, with real per-example accuracy threaded into pruning progress
|
|
18
|
+
and live-e2e-confirmed correctness/durability fixes.
|
|
19
|
+
- `list_sessions()` with typed `SessionSummary`; `delete_session` defaults to
|
|
20
|
+
non-destructive and `cascade=True` now calls the backend DELETE.
|
|
21
|
+
- Experiment group analytics client.
|
|
22
|
+
|
|
23
|
+
### Changed
|
|
24
|
+
- Deprecation warnings for the legacy session contract and the
|
|
25
|
+
`edge_analytics` wire value (now `local`).
|
|
26
|
+
- Self-describing default experiment names.
|
|
27
|
+
- Real streaming token-cost accounting with a plausibility clamp on
|
|
28
|
+
self-reported costs; `budget.max_cost_usd` is sent on typed session create
|
|
29
|
+
so the backend cost cap arms.
|
|
30
|
+
|
|
31
|
+
### Fixed
|
|
32
|
+
- Abort on systematic provider failures instead of reporting fake
|
|
33
|
+
convergence; fail fast when the optimizer is unavailable instead of
|
|
34
|
+
hanging.
|
|
35
|
+
- Offline-sync finalization is status-aware and skips terminal non-COMPLETED
|
|
36
|
+
experiments; sync CLI surfaces terminal-skip warnings.
|
|
37
|
+
- Trial-results table no longer double-scales 0-100 metrics; cost capture
|
|
38
|
+
works when the config has no `model` key.
|
|
39
|
+
- `FunctionDescriptor` identity, metric batching, and audit-alert
|
|
40
|
+
ratchet-surfaced bugs.
|
|
41
|
+
|
|
42
|
+
### Security
|
|
43
|
+
- `RestrictedUnpickler` pinned to a precise (module, name) allowlist,
|
|
44
|
+
closing a pickle deserialization RCE vector.
|
|
45
|
+
- CLI login rate limiting enforced; file-read containment for CWE-23.
|
|
46
|
+
- Sensitive tuned config values are redacted on the privacy-mode submission
|
|
47
|
+
path; safety-sensitive-key blocking is non-bypassable on best-config
|
|
48
|
+
drift; CI-approval token expiry compared in UTC.
|
|
49
|
+
|
|
9
50
|
## [0.18.0] - 2026-06-27
|
|
10
51
|
|
|
11
52
|
### Added
|
|
@@ -26,6 +67,29 @@ Format based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/).
|
|
|
26
67
|
var (`OPTUNA_ROLLOUT`, renamed during the managed-routing migration).
|
|
27
68
|
- Smart algorithms (`bayesian` and the Optuna family) now route to the Traigent
|
|
28
69
|
cloud; the local SDK supports `grid` and `random` only.
|
|
70
|
+
- Removed 7 production-dead internal modules (`config_builder`,
|
|
71
|
+
`llm_processor`, `refactoring_utils`, `service_registry`, `event_manager`,
|
|
72
|
+
`langchain/discovery`, empty `telemetry` package) and their tests.
|
|
73
|
+
|
|
74
|
+
### Fixed
|
|
75
|
+
- Per-config `cost` metric is now wired to the authoritative `total_cost`, so
|
|
76
|
+
the `minimize cost` objective is no longer inert and the portal no longer
|
|
77
|
+
shows `$0` per config on a real paid run; a model unpriced at runtime is
|
|
78
|
+
surfaced on the result (and fails closed under
|
|
79
|
+
`TRAIGENT_STRICT_COST_ACCOUNTING`).
|
|
80
|
+
- `traigent sync` / `traigent local sync` no longer fail every completed
|
|
81
|
+
session with `409 EXPERIMENT_HAS_NO_RUNS`; sync now creates the experiment
|
|
82
|
+
`PENDING`, uploads runs, finalizes to `COMPLETED`, resumes idempotently, and
|
|
83
|
+
returns a non-zero exit on failure.
|
|
84
|
+
- Runtime `optimize(algorithm="grid"|"random")` with a portal key now stays
|
|
85
|
+
local and exhaustive instead of routing to the cloud sampler.
|
|
86
|
+
- `traigent quickstart` runs on a bare install (uses base `litellm`, not the
|
|
87
|
+
`integrations` LangChain extra) and fails closed when no trial succeeds.
|
|
88
|
+
- `ObjectiveDefinition` fails closed on unimplemented normalization strategies
|
|
89
|
+
(`z_score`/`robust`) instead of silently behaving like `min_max`.
|
|
90
|
+
|
|
91
|
+
### Dependencies
|
|
92
|
+
- Bumped `langsmith` 0.8.3 → 0.8.18 and `pydantic-settings` 2.14.1 → 2.14.2.
|
|
29
93
|
|
|
30
94
|
## [0.14.1] - 2026-06-19
|
|
31
95
|
|
|
@@ -123,6 +187,13 @@ Format based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/).
|
|
|
123
187
|
- **`langgraph-checkpoint` 3.x → 4.x:** the 4.0 release drops default deserialization of payloads serialized with the legacy `"json"` serde mode. Users running `langgraph` with a persistent checkpoint saver (SQLite, Postgres, Redis, etc.) whose stored state contains JSON-format blobs will see deserialization failures unless they configure `serde` with an explicit `allowed_json_modules` list. Traigent does not bind `langgraph-checkpoint` directly — it arrives transitively through the `langgraph` dependency — so this only affects projects that also use `langgraph` checkpointers in their own code. See [CVE-2026-27794](https://github.com/langchain-ai/langgraph/security/advisories) for the underlying RCE that motivated removing the default.
|
|
124
188
|
|
|
125
189
|
### Changed
|
|
190
|
+
- **CI approval gate:** running `optimize()` in local/offline mode within a CI
|
|
191
|
+
environment now requires explicit approval via `TRAIGENT_RUN_APPROVED=1`.
|
|
192
|
+
`TRAIGENT_MOCK_LLM` no longer bypasses this gate — mock and offline runs in
|
|
193
|
+
CI are intentionally included (a purpose-built approval signal replaces an
|
|
194
|
+
env-var bypass of a security control). Cloud-mode runs are unaffected.
|
|
195
|
+
Migration: set `TRAIGENT_RUN_APPROVED=1` in CI for legitimately-approved
|
|
196
|
+
runs.
|
|
126
197
|
- **Strict evidence modes now fail closed in promotion** (#1103,
|
|
127
198
|
FR-SDK-FAIL-CLOSED-PROMOTION-V1). When a TVL promotion policy declares a strict
|
|
128
199
|
evidence mode — `require_calibration.enabled: true` or `chance_constraints` —
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: traigent
|
|
3
|
-
Version: 0.
|
|
3
|
+
Version: 0.19.0
|
|
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
|
|
@@ -92,7 +92,7 @@ Requires-Dist: mcp>=1.27.0; extra == "hybrid"
|
|
|
92
92
|
Provides-Extra: mcp
|
|
93
93
|
Requires-Dist: mcp>=1.27.0; extra == "mcp"
|
|
94
94
|
Provides-Extra: internal-schema
|
|
95
|
-
Requires-Dist: traigent-schema==4.1
|
|
95
|
+
Requires-Dist: traigent-schema==4.7.1; extra == "internal-schema"
|
|
96
96
|
Provides-Extra: test
|
|
97
97
|
Requires-Dist: pytest>=9.0.3; extra == "test"
|
|
98
98
|
Requires-Dist: pytest-asyncio>=0.21.0; extra == "test"
|
{traigent-0.18.1.dev10 → traigent-0.19.0}/docs/api-reference/complete-function-specification.md
RENAMED
|
@@ -247,6 +247,7 @@ async def optimize(
|
|
|
247
247
|
| `metric_limit` / `metric_name` / `metric_include_pruned` | Configure soft cumulative-metric early stopping. |
|
|
248
248
|
| `budget_limit` / `budget_metric` / `budget_include_pruned` | Deprecated aliases for metric-limit controls. Use `cost_limit` for hard USD spend control. |
|
|
249
249
|
| `plateau_window` / `plateau_epsilon` | Configure plateau detection stop conditions. |
|
|
250
|
+
| `semantic_saturation` | Configure opt-in semantic saturation. Uses per-example metric-vector churn plus continuous objective improvement and emits sanitized diagnostics in `OptimizationResult.metadata["semantic_saturation"]`. |
|
|
250
251
|
| `parameter_order` | Grid search only: mapping of parameter names to numeric priorities. Lower values vary slowest; higher values vary fastest. |
|
|
251
252
|
| `order` | Alias for `parameter_order` (grid search only). |
|
|
252
253
|
|
|
@@ -16,7 +16,11 @@ During optimization runs, Traigent collects:
|
|
|
16
16
|
- Trial suggested/intermediate/completed timestamps
|
|
17
17
|
- Trial status (completed, failed, pruned)
|
|
18
18
|
- Trial duration
|
|
19
|
-
- Trial configuration
|
|
19
|
+
- Trial configuration. On the default portal-backed path, this includes tuned
|
|
20
|
+
config-space key/value pairs being tested, with internal keys stripped. If you
|
|
21
|
+
tune prompt variants or other free-text strings as configuration values, those
|
|
22
|
+
tuned values are sent on the default path so the portal can display winning
|
|
23
|
+
configs.
|
|
20
24
|
- Trial metrics (accuracy, cost, latency, etc.)
|
|
21
25
|
|
|
22
26
|
**Optimization Run Metadata**:
|
|
@@ -26,7 +30,7 @@ During optimization runs, Traigent collects:
|
|
|
26
30
|
- Total optimization duration
|
|
27
31
|
- Result source (`cloud_brain`, `local_fallback`, `explicit_local`, or `offline`)
|
|
28
32
|
- Stop conditions triggered
|
|
29
|
-
- Content-free tuned-variable observations can include knob names, enum/scalar values, numeric metrics, and aggregate effectuation events for backend optimization. Set `TRAIGENT_TVAR_OBSERVATION=off` to disable
|
|
33
|
+
- Content-free tuned-variable observations can include knob names, enum/scalar values, numeric metrics, and aggregate effectuation events for backend optimization. Set `TRAIGENT_TVAR_OBSERVATION=off` to disable the `tvar_observation_v1` metadata sub-field, or use `TRAIGENT_TVAR_OBSERVATION=hashed` (default) to hash free-form string values in that sub-field. Only `off` and `hashed` are supported; unsupported values fall back to `hashed`. This setting does not control the trial `config` field.
|
|
30
34
|
|
|
31
35
|
**Performance Metrics**:
|
|
32
36
|
- LLM API response times
|
|
@@ -36,7 +40,8 @@ During optimization runs, Traigent collects:
|
|
|
36
40
|
|
|
37
41
|
### What is NOT Collected
|
|
38
42
|
|
|
39
|
-
|
|
43
|
+
Outside tuned configuration values explicitly sent on the default portal-backed
|
|
44
|
+
path, Traigent does **not** collect:
|
|
40
45
|
|
|
41
46
|
- **User prompts or inputs**
|
|
42
47
|
- **LLM responses or outputs**
|
|
@@ -47,10 +52,25 @@ Traigent does **not** collect:
|
|
|
47
52
|
|
|
48
53
|
### Data Boundary and No-Egress Runs
|
|
49
54
|
|
|
50
|
-
The default portal-backed path sends
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
55
|
+
The default portal-backed path sends tuned config-space values and numeric
|
|
56
|
+
metrics. This is deliberate: the portal uses those values to display and compare
|
|
57
|
+
winning configs. If a prompt variant, persona instruction, model name, or other
|
|
58
|
+
string is part of the tuned configuration space, the default path sends that
|
|
59
|
+
string value. It does not send dataset example inputs, expected outputs, model
|
|
60
|
+
responses, or example metadata unless you put that content into the tuned
|
|
61
|
+
configuration itself.
|
|
62
|
+
|
|
63
|
+
Use privacy-mode redaction when you need backend coordination without sending
|
|
64
|
+
tuned string values. Privacy submissions preserve which keys were tuned, but
|
|
65
|
+
redact sensitive-key values and all string/free-text config values. Numeric,
|
|
66
|
+
boolean, and `None` config values still pass through. This redaction is gated by
|
|
67
|
+
the run's effective `TraigentConfig.privacy_enabled` setting, including
|
|
68
|
+
configuration loaded from `TRAIGENT_PRIVACY_MODE=true` for compatibility. Do not
|
|
69
|
+
use `@traigent.optimize(..., privacy_enabled=True)` for new code; that decorator
|
|
70
|
+
keyword is deprecated and emits a warning. Use `offline=True` instead when the
|
|
71
|
+
requirement is no Traigent backend egress.
|
|
72
|
+
|
|
73
|
+
Use `offline=True` when your policy requires no Traigent backend egress at all:
|
|
54
74
|
|
|
55
75
|
```python
|
|
56
76
|
@traigent.optimize(
|
|
@@ -63,8 +83,10 @@ backend egress at all:
|
|
|
63
83
|
No-egress runs keep Traigent optimization metadata local while still allowing your
|
|
64
84
|
own function to call LLM providers or other services.
|
|
65
85
|
|
|
66
|
-
Use `TRAIGENT_DISABLE_TELEMETRY=true` for telemetry opt-out
|
|
67
|
-
|
|
86
|
+
Use `TRAIGENT_DISABLE_TELEMETRY=true` for SDK telemetry opt-out, effective
|
|
87
|
+
`TraigentConfig.privacy_enabled` privacy mode to redact tuned string config
|
|
88
|
+
values on privacy-mode submissions, and `offline=True` for zero Traigent backend
|
|
89
|
+
egress.
|
|
68
90
|
|
|
69
91
|
### OpenTelemetry Tracing
|
|
70
92
|
|
|
@@ -128,7 +150,7 @@ Telemetry data is used for:
|
|
|
128
150
|
- No data is sent to the Traigent backend
|
|
129
151
|
|
|
130
152
|
**Portal-backed runs**:
|
|
131
|
-
-
|
|
153
|
+
- Tuned config-space values, configuration IDs/schema, and numeric metrics can be sent to Traigent backend for optimization coordination
|
|
132
154
|
- Retention policies depend on your managed-service agreement
|
|
133
155
|
- You can request data deletion at any time
|
|
134
156
|
|
|
@@ -249,7 +271,10 @@ control and CI artifact collection in sensitive projects.
|
|
|
249
271
|
### Data Sanitization
|
|
250
272
|
|
|
251
273
|
Configuration data is sanitized before telemetry. Private/internal keys
|
|
252
|
-
(starting with `_`) are automatically removed.
|
|
274
|
+
(starting with `_`) are automatically removed. On default portal-backed
|
|
275
|
+
submissions, tuned config values are otherwise sent unchanged so the portal can
|
|
276
|
+
display winning configs. On privacy-mode submissions, sensitive-key values and
|
|
277
|
+
all string/free-text config values are redacted while preserving the tuned keys.
|
|
253
278
|
|
|
254
279
|
### Error Handling
|
|
255
280
|
|
|
@@ -305,9 +330,10 @@ For HIPAA compliance or handling sensitive data:
|
|
|
305
330
|
|
|
306
331
|
### Q: Is telemetry enabled by default?
|
|
307
332
|
|
|
308
|
-
**A**: Yes, for local optimization metadata. The default portal-backed path
|
|
309
|
-
configuration IDs/schema and numeric metrics
|
|
310
|
-
|
|
333
|
+
**A**: Yes, for local optimization metadata. The default portal-backed path can
|
|
334
|
+
send tuned config-space values, configuration IDs/schema, and numeric metrics;
|
|
335
|
+
use privacy-mode redaction when backend coordination is needed without tuned
|
|
336
|
+
string values, or `offline=True` for zero Traigent backend egress.
|
|
311
337
|
|
|
312
338
|
### Q: How do I verify telemetry is disabled?
|
|
313
339
|
|
|
@@ -29,6 +29,7 @@ Built-in implementations:
|
|
|
29
29
|
| `MetricLimitStopCondition` | Soft stop when the cumulative value of a named completed-trial metric reaches a limit. | `metric_limit`, `metric_name`, `metric_include_pruned`. |
|
|
30
30
|
| `CostLimitStopCondition` | Hard money-spend guard backed by `CostEnforcer` permits before execution starts. Parallel-safe. | `cost_limit`, `cost_approved`. |
|
|
31
31
|
| `HypervolumeConvergenceStopCondition` | Stops when hypervolume improvement remains below a threshold across a sliding window. | `convergence_metric="hypervolume_improvement"`, `convergence_window`, `convergence_threshold`. |
|
|
32
|
+
| `SemanticSaturationStopCondition` | Stops when per-example quality vectors are stable and monitored continuous objectives are no longer improving. | `semantic_saturation={...}`. |
|
|
32
33
|
|
|
33
34
|
`budget_limit` remains as a deprecated alias for `metric_limit` for compatibility.
|
|
34
35
|
New code should not use it.
|
|
@@ -81,6 +82,35 @@ The orchestrator instantiates the conditions during construction via
|
|
|
81
82
|
between optimizations. `_should_stop()` evaluates all configured conditions before
|
|
82
83
|
fallback logic (timeout or optimizer-provided stop signals).
|
|
83
84
|
|
|
85
|
+
## Semantic saturation
|
|
86
|
+
|
|
87
|
+
`semantic_saturation` is an opt-in stop condition for runs where aggregate
|
|
88
|
+
accuracy alone is not enough to decide convergence. It only reads `example_id`
|
|
89
|
+
and numeric or boolean values from each example's `metrics` map. It never reads
|
|
90
|
+
or emits inputs, expected outputs, actual outputs, model text, or document
|
|
91
|
+
content.
|
|
92
|
+
|
|
93
|
+
The condition selects the latest completed trials with distinct configuration
|
|
94
|
+
signatures, warms up until `max(window, min_trials)` distinct configs are
|
|
95
|
+
available, then evaluates the latest `window` configs:
|
|
96
|
+
|
|
97
|
+
* Quality metrics come from `example_score_metrics`/`accuracy_metrics` or from
|
|
98
|
+
accuracy-like and binary per-example metrics.
|
|
99
|
+
* Quality saturation is measured as churn across common example IDs, gated by
|
|
100
|
+
`min_overlap`, `score_tolerance`, and `churn_threshold`.
|
|
101
|
+
* Continuous objectives come from `continuous_objectives`/`objectives`, the
|
|
102
|
+
`ObjectiveSchema`, or cost/latency/token-like aggregate metrics.
|
|
103
|
+
* Continuous objectives use direction-aware best improvement over the window,
|
|
104
|
+
compared to `relative_improvement_epsilon` and
|
|
105
|
+
`absolute_improvement_epsilon`.
|
|
106
|
+
|
|
107
|
+
The run stops only when every quality metric and every continuous objective is
|
|
108
|
+
saturated. When it fires, `OptimizationResult.stop_reason` is
|
|
109
|
+
`"semantic_saturation"`. The latest sanitized decision payload is emitted under
|
|
110
|
+
`OptimizationResult.metadata["semantic_saturation"]` and follows TraigentSchema
|
|
111
|
+
`optimization/semantic_saturation_schema.json`; example ID lists are capped by
|
|
112
|
+
`max_example_ids`.
|
|
113
|
+
|
|
84
114
|
## Vendor-error pause semantics
|
|
85
115
|
|
|
86
116
|
When every trial in a parallel batch fails with a vendor-classifiable error
|
|
@@ -175,6 +205,8 @@ All three examples share the same stop-condition machinery with no additional
|
|
|
175
205
|
plumbing.
|
|
176
206
|
|
|
177
207
|
Built-in convergence stops report `OptimizationResult.stop_reason = "convergence"`.
|
|
208
|
+
Semantic saturation reports
|
|
209
|
+
`OptimizationResult.stop_reason = "semantic_saturation"`.
|
|
178
210
|
Custom stop-condition instances still report the generic `"condition"` reason
|
|
179
211
|
unless they are explicitly mapped into the public `StopReason` contract.
|
|
180
212
|
|
|
@@ -186,6 +218,11 @@ Unit coverage lives under:
|
|
|
186
218
|
- Max-trial threshold (including invalid inputs).
|
|
187
219
|
- Plateau detection, weight handling, reset semantics, and parameter validation.
|
|
188
220
|
- Metric-limit enforcement, compatibility fallback, and pruned-trial filtering.
|
|
221
|
+
- Stop-condition exports include semantic saturation.
|
|
222
|
+
* `tests/unit/core/test_semantic_saturation_stop_condition.py` – verifies:
|
|
223
|
+
- Stable vectors, boolean scores, aggregate-flat no-stop behavior, repeated
|
|
224
|
+
config warmup, cost-improving continuation, schema-valid result metadata,
|
|
225
|
+
and the privacy boundary.
|
|
189
226
|
* `tests/unit/core/test_orchestrator.py` – integration tests for plateau and metric limit
|
|
190
227
|
within the orchestrator, ensuring early termination and reasonable counts in
|
|
191
228
|
sequential runs.
|
|
@@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"
|
|
|
4
4
|
|
|
5
5
|
[project]
|
|
6
6
|
name = "traigent"
|
|
7
|
-
version = "0.
|
|
7
|
+
version = "0.19.0"
|
|
8
8
|
authors = [
|
|
9
9
|
{name = "Traigent Team", email = "opensource@traigent.ai"},
|
|
10
10
|
]
|
|
@@ -137,7 +137,7 @@ mcp = [
|
|
|
137
137
|
|
|
138
138
|
# Internal schema validation support for DTO strict-validation paths.
|
|
139
139
|
internal_schema = [
|
|
140
|
-
"traigent-schema==4.1
|
|
140
|
+
"traigent-schema==4.7.1",
|
|
141
141
|
]
|
|
142
142
|
|
|
143
143
|
# Testing dependencies
|
|
@@ -199,7 +199,9 @@ ml = [
|
|
|
199
199
|
"scipy>=1.7.0",
|
|
200
200
|
]
|
|
201
201
|
|
|
202
|
-
# DeepEval integration (LLM evaluation metrics as optimization objectives)
|
|
202
|
+
# DeepEval integration (LLM evaluation metrics as optimization objectives).
|
|
203
|
+
# Explicit opt-in only while Aikido/deepeval#2497 telemetry exfiltration remains
|
|
204
|
+
# unfixed upstream; Traigent applies telemetry and TracerProvider guards at import.
|
|
203
205
|
deepeval = [
|
|
204
206
|
"deepeval>=1.0.0",
|
|
205
207
|
]
|
|
@@ -153,12 +153,12 @@ class LocalExecutionAdapter(ExecutionAdapter):
|
|
|
153
153
|
}
|
|
154
154
|
|
|
155
155
|
except Exception as e:
|
|
156
|
-
logger.error(f"
|
|
156
|
+
logger.error(f"Local execution failed: {str(e)}")
|
|
157
157
|
raise
|
|
158
158
|
|
|
159
159
|
async def get_execution_mode(self) -> str:
|
|
160
160
|
"""Get execution mode."""
|
|
161
|
-
return ExecutionMode.
|
|
161
|
+
return ExecutionMode.LOCAL.value
|
|
162
162
|
|
|
163
163
|
def _evaluate_output(
|
|
164
164
|
self,
|
|
@@ -760,18 +760,6 @@ class PerformanceForecaster:
|
|
|
760
760
|
else:
|
|
761
761
|
avg_score = 0.5
|
|
762
762
|
|
|
763
|
-
# Check for missing metrics and add warnings
|
|
764
|
-
warnings = {}
|
|
765
|
-
if (
|
|
766
|
-
isinstance(config_or_config_history, dict)
|
|
767
|
-
and "metrics" in config_or_config_history
|
|
768
|
-
):
|
|
769
|
-
metrics = config_or_config_history["metrics"]
|
|
770
|
-
expected_metrics = ["accuracy", "cost", "latency"]
|
|
771
|
-
missing = [m for m in expected_metrics if m not in metrics]
|
|
772
|
-
if missing:
|
|
773
|
-
warnings["missing_metrics"] = missing
|
|
774
|
-
|
|
775
763
|
result = {
|
|
776
764
|
"expected_improvement": 0.05,
|
|
777
765
|
"confidence": 0.7,
|
|
@@ -780,9 +768,6 @@ class PerformanceForecaster:
|
|
|
780
768
|
"predicted_score": avg_score,
|
|
781
769
|
}
|
|
782
770
|
|
|
783
|
-
if warnings:
|
|
784
|
-
result["warnings"] = warnings
|
|
785
|
-
|
|
786
771
|
return result
|
|
787
772
|
|
|
788
773
|
|
|
@@ -19,6 +19,7 @@ optional dependency (``pip install 'traigent[analytics]'`` or
|
|
|
19
19
|
|
|
20
20
|
from __future__ import annotations
|
|
21
21
|
|
|
22
|
+
import math
|
|
22
23
|
from pathlib import Path
|
|
23
24
|
from typing import Any, Literal
|
|
24
25
|
|
|
@@ -92,7 +93,7 @@ def _as_float(value: Any) -> float | None:
|
|
|
92
93
|
else:
|
|
93
94
|
return None
|
|
94
95
|
# Reject NaN/inf so matplotlib never plots a meaningless point.
|
|
95
|
-
if
|
|
96
|
+
if not math.isfinite(result):
|
|
96
97
|
return None
|
|
97
98
|
return result
|
|
98
99
|
|
|
@@ -84,6 +84,7 @@ from traigent.config.types import (
|
|
|
84
84
|
ExecutionMode,
|
|
85
85
|
InjectionMode,
|
|
86
86
|
ResolvedExecutionPolicy,
|
|
87
|
+
_warn_deprecated_once,
|
|
87
88
|
is_traigent_disabled,
|
|
88
89
|
resolve_execution_policy,
|
|
89
90
|
validate_algorithm_name,
|
|
@@ -132,6 +133,20 @@ class EvaluationOptions(BaseModel):
|
|
|
132
133
|
custom_evaluator: Callable[..., Any] | None = None
|
|
133
134
|
scoring_function: Callable[..., Any] | None = None
|
|
134
135
|
metric_functions: dict[str, Callable[..., Any]] | None = None
|
|
136
|
+
#: Optional cheap "surrogate" (pre-screen) scorer applied to the SAME outputs
|
|
137
|
+
#: the primary evaluator already produced, per example. It scores captured
|
|
138
|
+
#: outputs only and NEVER re-executes the decorated function. Same calling
|
|
139
|
+
#: convention as ``scoring_function`` — ``(output, expected_output=None,
|
|
140
|
+
#: example=None)`` — returning a float in [0, 1] (or a dict with
|
|
141
|
+
#: ``surrogate_score``/``score``). Results ride alongside primary metrics as
|
|
142
|
+
#: ``surrogate_score`` and feed the backend's per-evaluator score tensor.
|
|
143
|
+
surrogate_evaluator: Callable[..., Any] | None = None
|
|
144
|
+
#: Optional explicit id for the surrogate descriptor's ``evaluator_id`` (the
|
|
145
|
+
#: key the backend tensor uses for this scorer). When omitted, the id is
|
|
146
|
+
#: derived from the callable's ``__name__``/class name (or ``"surrogate"`` for
|
|
147
|
+
#: anonymous scorers). A runtime ``optimize(surrogate_evaluator_name=...)``
|
|
148
|
+
#: overrides this decorator value.
|
|
149
|
+
surrogate_evaluator_name: str | None = None
|
|
135
150
|
|
|
136
151
|
|
|
137
152
|
class InjectionOptions(BaseModel):
|
|
@@ -463,6 +478,67 @@ def _validate_custom_evaluator_signature(evaluator: Callable[..., Any]) -> None:
|
|
|
463
478
|
)
|
|
464
479
|
|
|
465
480
|
|
|
481
|
+
def _validate_surrogate_evaluator_signature(surrogate: Callable[..., Any]) -> None:
|
|
482
|
+
"""Validate a surrogate (pre-screen) evaluator at decoration time.
|
|
483
|
+
|
|
484
|
+
A surrogate SCORES already-captured outputs — it must accept the output as
|
|
485
|
+
its first argument (like ``scoring_function``), and must NOT look like a
|
|
486
|
+
func-executor (``func, config, example``) which would imply re-execution.
|
|
487
|
+
|
|
488
|
+
Raises:
|
|
489
|
+
ValidationError: If not callable, or the signature looks like a
|
|
490
|
+
func-executor / cannot accept the captured output.
|
|
491
|
+
"""
|
|
492
|
+
if not callable(surrogate):
|
|
493
|
+
raise ValidationError("surrogate_evaluator must be callable")
|
|
494
|
+
|
|
495
|
+
if inspect.isfunction(surrogate) or inspect.ismethod(surrogate):
|
|
496
|
+
callable_to_check: Any = surrogate
|
|
497
|
+
else:
|
|
498
|
+
callable_to_check = getattr(surrogate, "__call__", surrogate) # noqa: B004
|
|
499
|
+
|
|
500
|
+
try:
|
|
501
|
+
sig = inspect.signature(callable_to_check)
|
|
502
|
+
except (ValueError, TypeError):
|
|
503
|
+
logger.debug(
|
|
504
|
+
"Could not inspect surrogate_evaluator signature, skipping validation"
|
|
505
|
+
)
|
|
506
|
+
return
|
|
507
|
+
|
|
508
|
+
params = list(sig.parameters.values())
|
|
509
|
+
if params and params[0].name == "self":
|
|
510
|
+
params = params[1:]
|
|
511
|
+
|
|
512
|
+
param_names = {p.name for p in params}
|
|
513
|
+
if {"func", "config"} <= param_names:
|
|
514
|
+
raise ValidationError(
|
|
515
|
+
"surrogate_evaluator scores already-captured outputs and must not "
|
|
516
|
+
"re-execute the decorated function.\n\n"
|
|
517
|
+
"Expected: surrogate_evaluator(output, expected_output=None, example=None) "
|
|
518
|
+
"-> float in [0, 1]\n"
|
|
519
|
+
f"Got: ({', '.join(p.name for p in params)})\n\n"
|
|
520
|
+
"This looks like a custom_evaluator (func, config, example). A "
|
|
521
|
+
"surrogate is a cheap scorer of outputs, like scoring_function."
|
|
522
|
+
)
|
|
523
|
+
|
|
524
|
+
accepts_output = any(
|
|
525
|
+
p.kind
|
|
526
|
+
in (
|
|
527
|
+
inspect.Parameter.POSITIONAL_ONLY,
|
|
528
|
+
inspect.Parameter.POSITIONAL_OR_KEYWORD,
|
|
529
|
+
inspect.Parameter.VAR_POSITIONAL,
|
|
530
|
+
inspect.Parameter.VAR_KEYWORD,
|
|
531
|
+
)
|
|
532
|
+
for p in params
|
|
533
|
+
)
|
|
534
|
+
if not accepts_output:
|
|
535
|
+
raise ValidationError(
|
|
536
|
+
"surrogate_evaluator must accept the captured output as its first "
|
|
537
|
+
"argument, e.g. surrogate_evaluator(output, expected_output=None, "
|
|
538
|
+
"example=None)."
|
|
539
|
+
)
|
|
540
|
+
|
|
541
|
+
|
|
466
542
|
def _warn_context_mode_param_shadowing(
|
|
467
543
|
func: Callable[..., Any],
|
|
468
544
|
configuration_space: Any,
|
|
@@ -578,6 +654,7 @@ _OPTIMIZE_DEFAULTS: dict[str, Any] = {
|
|
|
578
654
|
# Early stopping parameters
|
|
579
655
|
"plateau_window": None, # Stop if no improvement for N trials
|
|
580
656
|
"plateau_epsilon": None, # Improvement threshold for plateau detection
|
|
657
|
+
"semantic_saturation": None, # Opt-in semantic saturation stop condition config
|
|
581
658
|
# Multi-agent configuration
|
|
582
659
|
"agents": None, # Explicit agent definitions
|
|
583
660
|
"agent_prefixes": None, # Prefix-based agent inference
|
|
@@ -656,6 +733,7 @@ _ALLOWED_RUNTIME_OVERRIDE_KEYS = frozenset(
|
|
|
656
733
|
"metric_include_pruned",
|
|
657
734
|
"plateau_window",
|
|
658
735
|
"plateau_epsilon",
|
|
736
|
+
"semantic_saturation",
|
|
659
737
|
"cost_limit",
|
|
660
738
|
"cost_approved",
|
|
661
739
|
"tie_breakers",
|
|
@@ -666,34 +744,28 @@ _ALLOWED_RUNTIME_OVERRIDE_KEYS = frozenset(
|
|
|
666
744
|
|
|
667
745
|
def _warn_for_legacy_execution_options(keys: set[str]) -> None:
|
|
668
746
|
"""Emit coarse deprecation warnings for legacy execution option names."""
|
|
669
|
-
import warnings
|
|
670
|
-
|
|
671
|
-
if keys & {"execution_mode"}:
|
|
672
|
-
warnings.warn(
|
|
673
|
-
"execution_mode is deprecated as a public optimizer selector. Use "
|
|
674
|
-
"algorithm='auto'|'grid'|'random' and offline=True for no egress.",
|
|
675
|
-
DeprecationWarning,
|
|
676
|
-
stacklevel=4,
|
|
677
|
-
)
|
|
678
747
|
if keys & {"privacy_enabled"}:
|
|
679
|
-
|
|
748
|
+
_warn_deprecated_once(
|
|
749
|
+
"optimize.privacy_enabled",
|
|
680
750
|
"privacy_enabled is deprecated and has no effect. Use offline=True "
|
|
681
|
-
"for no egress."
|
|
682
|
-
|
|
751
|
+
"for no egress. This compatibility option will be removed in a "
|
|
752
|
+
"future major release.",
|
|
683
753
|
stacklevel=4,
|
|
684
754
|
)
|
|
685
755
|
if keys & {"cloud_fallback_policy"}:
|
|
686
|
-
|
|
756
|
+
_warn_deprecated_once(
|
|
757
|
+
"optimize.cloud_fallback_policy",
|
|
687
758
|
"cloud_fallback_policy is deprecated and has no effect. Set "
|
|
688
|
-
"TRAIGENT_REQUIRE_CLOUD=1 to disable fallback."
|
|
689
|
-
|
|
759
|
+
"TRAIGENT_REQUIRE_CLOUD=1 to disable fallback. This compatibility "
|
|
760
|
+
"option will be removed in a future major release.",
|
|
690
761
|
stacklevel=4,
|
|
691
762
|
)
|
|
692
763
|
if keys & set(_LEGACY_HYBRID_API_OPTION_MAP):
|
|
693
|
-
|
|
764
|
+
_warn_deprecated_once(
|
|
765
|
+
"optimize.hybrid_api_flat_options",
|
|
694
766
|
"Flat hybrid_api_* optimize options are deprecated. Pass an "
|
|
695
|
-
"ExternalServiceEvaluator or evaluator options dict instead."
|
|
696
|
-
|
|
767
|
+
"ExternalServiceEvaluator or evaluator options dict instead. This "
|
|
768
|
+
"compatibility option will be removed in a future major release.",
|
|
697
769
|
stacklevel=4,
|
|
698
770
|
)
|
|
699
771
|
|
|
@@ -1575,7 +1647,7 @@ def _runtime_execution_mode_for_policy(
|
|
|
1575
1647
|
if external_evaluator is not None:
|
|
1576
1648
|
return ExecutionMode.HYBRID_API
|
|
1577
1649
|
if policy.intent is ExecutionIntent.LOCAL_ONLY:
|
|
1578
|
-
return ExecutionMode.
|
|
1650
|
+
return ExecutionMode.LOCAL
|
|
1579
1651
|
return ExecutionMode.HYBRID
|
|
1580
1652
|
|
|
1581
1653
|
|
|
@@ -1627,7 +1699,7 @@ def _resolve_actual_execution_mode(
|
|
|
1627
1699
|
) -> str:
|
|
1628
1700
|
"""Resolve legacy execution mode from provided or global config."""
|
|
1629
1701
|
if (
|
|
1630
|
-
execution_mode == ExecutionMode.
|
|
1702
|
+
execution_mode == ExecutionMode.LOCAL.value
|
|
1631
1703
|
and "execution_mode" in _GLOBAL_CONFIG
|
|
1632
1704
|
):
|
|
1633
1705
|
result: str = str(_GLOBAL_CONFIG["execution_mode"])
|
|
@@ -1644,7 +1716,7 @@ def _log_execution_mode_warnings(
|
|
|
1644
1716
|
minimal_logging: bool,
|
|
1645
1717
|
) -> None:
|
|
1646
1718
|
"""Log warnings for incompatible runtime settings."""
|
|
1647
|
-
if minimal_logging and execution_mode_enum is not ExecutionMode.
|
|
1719
|
+
if minimal_logging and execution_mode_enum is not ExecutionMode.LOCAL:
|
|
1648
1720
|
logger.warning(
|
|
1649
1721
|
"minimal_logging is only effective for offline local runs. "
|
|
1650
1722
|
"It will be ignored for the selected managed execution path."
|
|
@@ -2280,6 +2352,11 @@ def optimize( # NOSONAR(S107)
|
|
|
2280
2352
|
Requires metric_name. Use for counters such as total tokens or
|
|
2281
2353
|
cumulative latency, not hard money-spend control.
|
|
2282
2354
|
metric_name: Metric summed by metric_limit.
|
|
2355
|
+
semantic_saturation: Opt-in stop condition config matching
|
|
2356
|
+
TraigentSchema
|
|
2357
|
+
``optimization/semantic_saturation_schema.json``. When provided,
|
|
2358
|
+
the SDK evaluates per-example metric-vector churn and continuous
|
|
2359
|
+
objective improvement using sanitized diagnostics only.
|
|
2283
2360
|
|
|
2284
2361
|
Additional controls:
|
|
2285
2362
|
legacy: Adapter for the legacy decorator signature. Accepts either a
|
|
@@ -2289,8 +2366,9 @@ def optimize( # NOSONAR(S107)
|
|
|
2289
2366
|
the decorator. The currently supported keys are:
|
|
2290
2367
|
``metric_limit``, ``metric_name``,
|
|
2291
2368
|
``metric_include_pruned``, ``plateau_window``,
|
|
2292
|
-
``plateau_epsilon``, ``
|
|
2293
|
-
``tie_breakers``, and
|
|
2369
|
+
``plateau_epsilon``, ``semantic_saturation``, ``cost_limit``,
|
|
2370
|
+
``cost_approved``, ``tie_breakers``, and
|
|
2371
|
+
``tvl_parameter_agents``.
|
|
2294
2372
|
Note: ``algorithm`` and ``max_trials`` are first-class
|
|
2295
2373
|
parameters of this decorator (not in ``**runtime_overrides``);
|
|
2296
2374
|
``timeout`` is supported on
|
|
@@ -2639,6 +2717,20 @@ def optimize( # NOSONAR(S107)
|
|
|
2639
2717
|
if custom_evaluator is not None:
|
|
2640
2718
|
_validate_custom_evaluator_signature(custom_evaluator)
|
|
2641
2719
|
|
|
2720
|
+
# Optional surrogate (pre-screen) scorer from the evaluation bundle. Resolved
|
|
2721
|
+
# here (decorator source only) and validated early; stashed on the
|
|
2722
|
+
# OptimizedFunction below so the evaluator factory can attach it.
|
|
2723
|
+
surrogate_evaluator = (
|
|
2724
|
+
evaluation_bundle.surrogate_evaluator if evaluation_bundle is not None else None
|
|
2725
|
+
)
|
|
2726
|
+
surrogate_evaluator_name = (
|
|
2727
|
+
evaluation_bundle.surrogate_evaluator_name
|
|
2728
|
+
if evaluation_bundle is not None
|
|
2729
|
+
else None
|
|
2730
|
+
)
|
|
2731
|
+
if surrogate_evaluator is not None:
|
|
2732
|
+
_validate_surrogate_evaluator_signature(surrogate_evaluator)
|
|
2733
|
+
|
|
2642
2734
|
(
|
|
2643
2735
|
injection_mode,
|
|
2644
2736
|
config_param,
|
|
@@ -2969,6 +3061,13 @@ def optimize( # NOSONAR(S107)
|
|
|
2969
3061
|
optimized_func.external_service_evaluator = external_service_evaluator
|
|
2970
3062
|
optimized_func.hybrid_api_options = hybrid_api_options
|
|
2971
3063
|
optimized_func.offline = execution_policy.offline
|
|
3064
|
+
# Surrogate (pre-screen) scorer: read via getattr by the evaluator
|
|
3065
|
+
# factory (_create_effective_evaluator). Absent when unconfigured, so the
|
|
3066
|
+
# no-surrogate path stays byte-identical.
|
|
3067
|
+
if surrogate_evaluator is not None:
|
|
3068
|
+
optimized_func._surrogate_evaluator = surrogate_evaluator
|
|
3069
|
+
if isinstance(surrogate_evaluator_name, str) and surrogate_evaluator_name:
|
|
3070
|
+
optimized_func._surrogate_evaluator_name = surrogate_evaluator_name
|
|
2972
3071
|
|
|
2973
3072
|
logger.info(
|
|
2974
3073
|
f"Created optimizable function: {func.__name__} (experiment_name={effective_experiment_name!r})"
|