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.
Files changed (630) hide show
  1. {traigent-0.18.1.dev6/traigent.egg-info → traigent-0.18.1.dev8}/PKG-INFO +1 -1
  2. {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/pyproject.toml +1 -1
  3. {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/api/decorators.py +31 -2
  4. {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/cloud/api_operations.py +81 -0
  5. {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/cloud/backend_client.py +32 -6
  6. {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/cloud/client.py +10 -3
  7. {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/cloud/models.py +3 -0
  8. {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/cloud/session_operations.py +8 -2
  9. traigent-0.18.1.dev8/traigent/cloud/smart_pruning.py +85 -0
  10. {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/config/api_keys.py +13 -23
  11. {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/config/models.yaml +23 -3
  12. traigent-0.18.1.dev8/traigent/config/provider_support.py +407 -0
  13. {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/core/backend_session_manager.py +106 -12
  14. {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/core/optimized_function.py +18 -10
  15. {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/core/orchestrator.py +20 -9
  16. {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/core/trial_lifecycle.py +145 -6
  17. {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/evaluators/base.py +92 -29
  18. {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/integrations/model_discovery/registry.py +8 -1
  19. {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/integrations/providers.py +34 -3
  20. {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/providers/validation.py +28 -0
  21. {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/utils/env_config.py +23 -19
  22. {traigent-0.18.1.dev6 → traigent-0.18.1.dev8/traigent.egg-info}/PKG-INFO +1 -1
  23. {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent.egg-info/SOURCES.txt +2 -0
  24. {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/CHANGELOG.md +0 -0
  25. {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/COMMERCIAL-LICENSE.md +0 -0
  26. {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/CONTRIBUTING.md +0 -0
  27. {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/CONTRIBUTOR-LICENSING.md +0 -0
  28. {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/DISCLAIMER.md +0 -0
  29. {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/LICENSE +0 -0
  30. {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/MANIFEST.in +0 -0
  31. {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/NOTICE +0 -0
  32. {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/README.md +0 -0
  33. {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/SECURITY.md +0 -0
  34. {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/docs/LOCAL_CI_GATE.md +0 -0
  35. {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/docs/README.md +0 -0
  36. {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/docs/SYNC_MAP.md +0 -0
  37. {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/docs/agent-skill.md +0 -0
  38. {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/docs/api-reference/complete-function-specification.md +0 -0
  39. {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/docs/api-reference/decorator-reference.md +0 -0
  40. {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/docs/api-reference/enterprise-beta-api.md +0 -0
  41. {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/docs/api-reference/interactive_optimizer.md +0 -0
  42. {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/docs/api-reference/telemetry.md +0 -0
  43. {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/docs/api-reference/thread-pool-examples.md +0 -0
  44. {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/docs/architecture/ARCHITECTURE.md +0 -0
  45. {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/docs/architecture/cost-architecture-validation.md +0 -0
  46. {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/docs/architecture/execution_mode_follow_up.md +0 -0
  47. {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/docs/architecture/integrations-inventory.md +0 -0
  48. {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/docs/architecture/plugin_architecture.md +0 -0
  49. {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/docs/architecture/project-structure.md +0 -0
  50. {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/docs/architecture/stop_conditions.md +0 -0
  51. {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/docs/concepts/composite-knob-ir.md +0 -0
  52. {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/docs/concepts/composite-knobs.md +0 -0
  53. {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/docs/concepts/guided-generation.md +0 -0
  54. {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/docs/contributing/ADDING_NEW_INTEGRATIONS.md +0 -0
  55. {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/docs/contributing/CODE_OF_CONDUCT.md +0 -0
  56. {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/docs/contributing/CONTRIBUTING.md +0 -0
  57. {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/docs/contributing/EXAMPLE_TEMPLATE.md +0 -0
  58. {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/docs/contributing/README.md +0 -0
  59. {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/docs/contributing/SECURITY.md +0 -0
  60. {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/docs/contributing/aikido_triage.md +0 -0
  61. {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/docs/contributing/code_review_instructions.md +0 -0
  62. {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/docs/contributing/test-quality-guide.md +0 -0
  63. {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/docs/demos/DEMO_VIDEO_GUIDE.md +0 -0
  64. {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/docs/demos/README.md +0 -0
  65. {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/docs/examples/API_PATTERNS.md +0 -0
  66. {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/docs/examples/LEARNING_ROADMAP.md +0 -0
  67. {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/docs/examples/QUICK_REFERENCE.md +0 -0
  68. {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/docs/examples/README.md +0 -0
  69. {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/docs/examples/START_HERE.md +0 -0
  70. {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/docs/examples/TROUBLESHOOTING.md +0 -0
  71. {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/docs/fake-completion-tracking.md +0 -0
  72. {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/docs/feature_matrices/README.md +0 -0
  73. {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/docs/features/README.md +0 -0
  74. {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/docs/features/authentication.md +0 -0
  75. {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/docs/features/constraint-dsl.md +0 -0
  76. {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/docs/features/dataflow-detection.md +0 -0
  77. {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/docs/features/framework_override_enhanced_features.md +0 -0
  78. {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/docs/features/mcp-server.md +0 -0
  79. {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/docs/features/observability-spans.md +0 -0
  80. {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/docs/features/onboarding.md +0 -0
  81. {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/docs/features/prompt_management.md +0 -0
  82. {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/docs/features/recommendations.md +0 -0
  83. {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/docs/features/safety-gates.md +0 -0
  84. {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/docs/features/seamless_injection.md +0 -0
  85. {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/docs/features/strategy-presets.md +0 -0
  86. {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/docs/features/strict_metrics_nulls.md +0 -0
  87. {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/docs/getting-started/GETTING_STARTED.md +0 -0
  88. {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/docs/getting-started/README.md +0 -0
  89. {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/docs/getting-started/installation.md +0 -0
  90. {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/docs/getting-started/minimal-integration.md +0 -0
  91. {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/docs/getting-started/portal-dev-laptop-agent.md +0 -0
  92. {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/docs/getting-started/testing.md +0 -0
  93. {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/docs/guides/VSCODE_RESTART_GUIDE.md +0 -0
  94. {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/docs/guides/evaluation.md +0 -0
  95. {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/docs/guides/execution-mode-migration.md +0 -0
  96. {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/docs/guides/execution-modes.md +0 -0
  97. {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/docs/guides/js-bridge.md +0 -0
  98. {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/docs/guides/llm_plugin_migration_guide.md +0 -0
  99. {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/docs/guides/parallel-configuration.md +0 -0
  100. {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/docs/guides/secrets_management.md +0 -0
  101. {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/docs/hybrid-mode-api-contract.md +0 -0
  102. {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/docs/hybrid-mode-client-guide.md +0 -0
  103. {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/docs/operations/azure_openai.md +0 -0
  104. {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/docs/operations/bedrock.md +0 -0
  105. {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/docs/operations/google_gemini.md +0 -0
  106. {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/docs/security/trust_model.md +0 -0
  107. {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/docs/testing/CREATIVE_STRESS_TESTING.md +0 -0
  108. {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/docs/traceability/concepts/composite-knob-ir.md +0 -0
  109. {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/docs/traceability/concepts/composite-knobs.md +0 -0
  110. {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/docs/traceability/concepts/guided-generation.md +0 -0
  111. {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/docs/traceability/schema.md +0 -0
  112. {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/docs/traceability/tagging_tracking.md +0 -0
  113. {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/docs/traceability/taxonomy_reference.md +0 -0
  114. {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/docs/tvl/CONSTRAINT_EXPRESSIONS.md +0 -0
  115. {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/docs/user-guide/README.md +0 -0
  116. {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/docs/user-guide/agent_optimization.md +0 -0
  117. {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/docs/user-guide/choosing_optimization_model.md +0 -0
  118. {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/docs/user-guide/configuration-spaces.md +0 -0
  119. {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/docs/user-guide/evaluation_guide.md +0 -0
  120. {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/docs/user-guide/injection_modes.md +0 -0
  121. {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/docs/user-guide/interactive_optimization.md +0 -0
  122. {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/docs/user-guide/smart_optimization.md +0 -0
  123. {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/docs/user-guide/tuned_variables.md +0 -0
  124. {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/docs/walkthrough.md +0 -0
  125. {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/requirements/requirements-all.txt +0 -0
  126. {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/requirements/requirements-analytics.txt +0 -0
  127. {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/requirements/requirements-bayesian.txt +0 -0
  128. {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/requirements/requirements-chroma.txt +0 -0
  129. {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/requirements/requirements-dev.txt +0 -0
  130. {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/requirements/requirements-hybrid.txt +0 -0
  131. {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/requirements/requirements-integrations.txt +0 -0
  132. {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/requirements/requirements-security.txt +0 -0
  133. {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/requirements/requirements-test.txt +0 -0
  134. {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/requirements/requirements.txt +0 -0
  135. {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/setup.cfg +0 -0
  136. {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/__init__.py +0 -0
  137. {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/_version.py +0 -0
  138. {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/adapters/execution_adapter.py +0 -0
  139. {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/admin/__init__.py +0 -0
  140. {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/admin/client.py +0 -0
  141. {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/admin/config.py +0 -0
  142. {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/admin/dtos.py +0 -0
  143. {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/agents/__init__.py +0 -0
  144. {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/agents/config_mapper.py +0 -0
  145. {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/agents/executor.py +0 -0
  146. {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/agents/platforms.py +0 -0
  147. {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/agents/specification_generator.py +0 -0
  148. {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/analytics/__init__.py +0 -0
  149. {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/analytics/anomaly.py +0 -0
  150. {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/analytics/cost_optimization.py +0 -0
  151. {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/analytics/example_insights.py +0 -0
  152. {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/analytics/intelligence.py +0 -0
  153. {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/analytics/meta_learning.py +0 -0
  154. {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/analytics/next_steps.py +0 -0
  155. {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/analytics/optimization_plan.py +0 -0
  156. {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/analytics/predictive.py +0 -0
  157. {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/analytics/render.py +0 -0
  158. {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/analytics/scheduling.py +0 -0
  159. {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/analytics_mcp/__init__.py +0 -0
  160. {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/analytics_mcp/server.py +0 -0
  161. {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/analytics_mcp/tools.py +0 -0
  162. {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/api/__init__.py +0 -0
  163. {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/api/agent_inference.py +0 -0
  164. {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/api/config_builder.py +0 -0
  165. {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/api/config_space.py +0 -0
  166. {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/api/constraint_builders.py +0 -0
  167. {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/api/constraints.py +0 -0
  168. {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/api/functions.py +0 -0
  169. {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/api/parameter_ranges.py +0 -0
  170. {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/api/parameter_validator.py +0 -0
  171. {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/api/safety.py +0 -0
  172. {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/api/strategy_presets.py +0 -0
  173. {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/api/types.py +0 -0
  174. {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/api/validation_protocol.py +0 -0
  175. {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/cli/__init__.py +0 -0
  176. {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/cli/auth_commands.py +0 -0
  177. {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/cli/detect_tvars_command.py +0 -0
  178. {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/cli/function_discovery.py +0 -0
  179. {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/cli/generate_config_command.py +0 -0
  180. {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/cli/hooks_commands.py +0 -0
  181. {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/cli/local_commands.py +0 -0
  182. {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/cli/main.py +0 -0
  183. {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/cli/next_steps_command.py +0 -0
  184. {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/cli/onboard_commands.py +0 -0
  185. {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/cli/optimization_validator.py +0 -0
  186. {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/cli/plan_command.py +0 -0
  187. {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/cli/playbook_commands.py +0 -0
  188. {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/cli/sync_commands.py +0 -0
  189. {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/cli/validation_types.py +0 -0
  190. {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/cloud/__init__.py +0 -0
  191. {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/cloud/_aiohttp_compat.py +0 -0
  192. {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/cloud/agent_dtos.py +0 -0
  193. {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/cloud/analytics_auth.py +0 -0
  194. {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/cloud/analytics_client.py +0 -0
  195. {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/cloud/api_key_manager.py +0 -0
  196. {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/cloud/async_batch_transport.py +0 -0
  197. {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/cloud/auth.py +0 -0
  198. {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/cloud/backend_bridges.py +0 -0
  199. {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/cloud/backend_components.py +0 -0
  200. {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/cloud/backend_synchronizer.py +0 -0
  201. {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/cloud/benchmark_client.py +0 -0
  202. {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/cloud/billing.py +0 -0
  203. {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/cloud/cloud_operations.py +0 -0
  204. {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/cloud/credential_manager.py +0 -0
  205. {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/cloud/credential_resolver.py +0 -0
  206. {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/cloud/dataset_converter.py +0 -0
  207. {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/cloud/dtos.py +0 -0
  208. {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/cloud/governance.py +0 -0
  209. {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/cloud/integration_manager.py +0 -0
  210. {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/cloud/optimizer_client.py +0 -0
  211. {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/cloud/password_auth_handler.py +0 -0
  212. {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/cloud/privacy_operations.py +0 -0
  213. {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/cloud/production_mcp_client.py +0 -0
  214. {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/cloud/remote_guidance.py +0 -0
  215. {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/cloud/resilient_client.py +0 -0
  216. {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/cloud/service.py +0 -0
  217. {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/cloud/session_types.py +0 -0
  218. {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/cloud/sessions.py +0 -0
  219. {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/cloud/subset_selection.py +0 -0
  220. {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/cloud/sync_manager.py +0 -0
  221. {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/cloud/token_manager.py +0 -0
  222. {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/cloud/trial_operations.py +0 -0
  223. {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/cloud/trial_tracker.py +0 -0
  224. {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/cloud/url_security.py +0 -0
  225. {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/cloud/user_agent.py +0 -0
  226. {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/cloud/validators.py +0 -0
  227. {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/config/__init__.py +0 -0
  228. {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/config/ast_transformer.py +0 -0
  229. {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/config/backend_config.py +0 -0
  230. {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/config/context.py +0 -0
  231. {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/config/feature_flags.py +0 -0
  232. {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/config/parallel.py +0 -0
  233. {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/config/project.py +0 -0
  234. {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/config/providers.py +0 -0
  235. {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/config/runtime_injector.py +0 -0
  236. {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/config/tenant.py +0 -0
  237. {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/config/types.py +0 -0
  238. {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/config_generator/__init__.py +0 -0
  239. {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/config_generator/agent_classifier.py +0 -0
  240. {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/config_generator/apply.py +0 -0
  241. {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/config_generator/catalog/schemas/tvar_catalog_entry_schema.json +0 -0
  242. {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/config_generator/catalog/schemas/tvar_observation_schema.json +0 -0
  243. {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/config_generator/catalog/schemas/tvar_value_recommendation_schema.json +0 -0
  244. {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/config_generator/catalog/tvar_catalog.v1.json +0 -0
  245. {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/config_generator/catalog.py +0 -0
  246. {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/config_generator/llm_backend.py +0 -0
  247. {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/config_generator/pipeline.py +0 -0
  248. {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/config_generator/presets/__init__.py +0 -0
  249. {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/config_generator/presets/agent_type_catalog.py +0 -0
  250. {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/config_generator/presets/benchmark_catalog.py +0 -0
  251. {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/config_generator/presets/constraint_templates.py +0 -0
  252. {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/config_generator/presets/range_presets.py +0 -0
  253. {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/config_generator/recommendations.py +0 -0
  254. {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/config_generator/subsystems/__init__.py +0 -0
  255. {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/config_generator/subsystems/benchmarks.py +0 -0
  256. {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/config_generator/subsystems/objectives.py +0 -0
  257. {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/config_generator/subsystems/safety_constraints.py +0 -0
  258. {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/config_generator/subsystems/structural_constraints.py +0 -0
  259. {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/config_generator/subsystems/tvar_ranges.py +0 -0
  260. {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/config_generator/subsystems/tvar_recommendations.py +0 -0
  261. {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/config_generator/types.py +0 -0
  262. {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/core/__init__.py +0 -0
  263. {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/core/best_config_runtime.py +0 -0
  264. {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/core/cache_policy.py +0 -0
  265. {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/core/ci_approval.py +0 -0
  266. {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/core/config_state_manager.py +0 -0
  267. {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/core/constants.py +0 -0
  268. {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/core/cost_enforcement.py +0 -0
  269. {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/core/cost_estimator.py +0 -0
  270. {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/core/evaluator_wrapper.py +0 -0
  271. {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/core/exception_handler.py +0 -0
  272. {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/core/execution_policy_runtime.py +0 -0
  273. {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/core/license.py +0 -0
  274. {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/core/logger_facade.py +0 -0
  275. {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/core/mandatory_metrics.py +0 -0
  276. {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/core/meta_types.py +0 -0
  277. {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/core/metadata_helpers.py +0 -0
  278. {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/core/metric_registry.py +0 -0
  279. {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/core/metrics_aggregator.py +0 -0
  280. {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/core/namespace.py +0 -0
  281. {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/core/objectives.py +0 -0
  282. {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/core/optimization_pipeline.py +0 -0
  283. {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/core/orchestrator_helpers.py +0 -0
  284. {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/core/parallel_execution_manager.py +0 -0
  285. {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/core/progress_manager.py +0 -0
  286. {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/core/result_selection.py +0 -0
  287. {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/core/sample_budget.py +0 -0
  288. {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/core/samplers/__init__.py +0 -0
  289. {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/core/samplers/random_sampler.py +0 -0
  290. {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/core/session_context.py +0 -0
  291. {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/core/session_types.py +0 -0
  292. {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/core/stat_significance.py +0 -0
  293. {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/core/stop_condition_manager.py +0 -0
  294. {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/core/stop_conditions.py +0 -0
  295. {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/core/trace_env.py +0 -0
  296. {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/core/tracing.py +0 -0
  297. {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/core/trial_context.py +0 -0
  298. {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/core/trial_result_factory.py +0 -0
  299. {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/core/types.py +0 -0
  300. {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/core/types_ext.py +0 -0
  301. {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/core/utils.py +0 -0
  302. {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/core/workflow_trace_manager.py +0 -0
  303. {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/core_metrics/__init__.py +0 -0
  304. {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/core_metrics/client.py +0 -0
  305. {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/core_metrics/config.py +0 -0
  306. {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/core_metrics/dtos.py +0 -0
  307. {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/defaults.py +0 -0
  308. {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/effectuation/__init__.py +0 -0
  309. {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/effectuation/contracts.py +0 -0
  310. {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/effectuation/strategies/__init__.py +0 -0
  311. {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/effectuation/strategies/framework_param.py +0 -0
  312. {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/effectuation/strategies/self_consistency.py +0 -0
  313. {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/evaluation/__init__.py +0 -0
  314. {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/evaluation/client.py +0 -0
  315. {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/evaluation/config.py +0 -0
  316. {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/evaluation/dtos.py +0 -0
  317. {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/evaluators/__init__.py +0 -0
  318. {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/evaluators/catalog/metric_eval_catalog.v1.json +0 -0
  319. {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/evaluators/catalog/schemas/metric_eval_catalog_entry_schema.json +0 -0
  320. {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/evaluators/catalog_loader.py +0 -0
  321. {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/evaluators/dataset_registry.py +0 -0
  322. {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/evaluators/hybrid_api.py +0 -0
  323. {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/evaluators/local.py +0 -0
  324. {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/evaluators/metrics.py +0 -0
  325. {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/evaluators/metrics_tracker.py +0 -0
  326. {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/evaluators/recommendations.py +0 -0
  327. {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/examples/__init__.py +0 -0
  328. {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/examples/providers/__init__.py +0 -0
  329. {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/examples/providers/_bootstrap.py +0 -0
  330. {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/examples/providers/_demo.py +0 -0
  331. {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/examples/providers/anthropic.py +0 -0
  332. {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/examples/providers/aws.py +0 -0
  333. {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/examples/providers/azure.py +0 -0
  334. {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/examples/providers/gcp.py +0 -0
  335. {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/examples/providers/gemini.py +0 -0
  336. {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/examples/providers/groq.py +0 -0
  337. {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/examples/providers/litellm_any.py +0 -0
  338. {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/examples/providers/manifest.json +0 -0
  339. {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/examples/providers/openai.py +0 -0
  340. {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/examples/providers/openrouter.py +0 -0
  341. {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/examples/providers/qa_samples.jsonl +0 -0
  342. {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/examples/quickstart/__init__.py +0 -0
  343. {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/examples/quickstart/__main__.py +0 -0
  344. {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/examples/quickstart/_env.py +0 -0
  345. {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/examples/quickstart/publish_and_verify.py +0 -0
  346. {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/examples/quickstart/qa_samples.jsonl +0 -0
  347. {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/examples/tutorial_bootstrap.py +0 -0
  348. {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/generation/__init__.py +0 -0
  349. {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/generation/backend_provider.py +0 -0
  350. {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/generation/example_synth.py +0 -0
  351. {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/generation/llm_provider.py +0 -0
  352. {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/generation/loop.py +0 -0
  353. {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/generation/models.py +0 -0
  354. {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/generation/options.py +0 -0
  355. {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/generation/prompt_rewriter.py +0 -0
  356. {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/generation/skill_train/__init__.py +0 -0
  357. {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/generation/skill_train/artifacts.py +0 -0
  358. {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/generation/skill_train/buffer.py +0 -0
  359. {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/generation/skill_train/document.py +0 -0
  360. {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/generation/skill_train/edits.py +0 -0
  361. {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/generation/skill_train/prompts.py +0 -0
  362. {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/generation/skill_train/reflection.py +0 -0
  363. {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/generation/skill_train/schedule.py +0 -0
  364. {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/generation/skill_train/slow_update.py +0 -0
  365. {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/generation/skill_train/splits.py +0 -0
  366. {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/generation/skill_train/trainer.py +0 -0
  367. {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/generation/skill_train/trainer_result.py +0 -0
  368. {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/generation/validators.py +0 -0
  369. {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/guaranteed_modes.py +0 -0
  370. {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/hooks/__init__.py +0 -0
  371. {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/hooks/config.py +0 -0
  372. {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/hooks/installer.py +0 -0
  373. {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/hooks/validator.py +0 -0
  374. {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/hybrid/__init__.py +0 -0
  375. {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/hybrid/discovery.py +0 -0
  376. {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/hybrid/http_transport.py +0 -0
  377. {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/hybrid/lifecycle.py +0 -0
  378. {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/hybrid/mcp_transport.py +0 -0
  379. {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/hybrid/protocol.py +0 -0
  380. {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/hybrid/transport.py +0 -0
  381. {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/integrations/__init__.py +0 -0
  382. {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/integrations/activation.py +0 -0
  383. {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/integrations/base.py +0 -0
  384. {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/integrations/base_plugin.py +0 -0
  385. {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/integrations/bedrock_client.py +0 -0
  386. {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/integrations/config.py +0 -0
  387. {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/integrations/dspy_adapter.py +0 -0
  388. {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/integrations/framework_override.py +0 -0
  389. {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/integrations/langchain/__init__.py +0 -0
  390. {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/integrations/langchain/handler.py +0 -0
  391. {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/integrations/langfuse/__init__.py +0 -0
  392. {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/integrations/langfuse/callback.py +0 -0
  393. {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/integrations/langfuse/client.py +0 -0
  394. {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/integrations/langfuse/tracker.py +0 -0
  395. {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/integrations/llms/__init__.py +0 -0
  396. {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/integrations/llms/anthropic_plugin.py +0 -0
  397. {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/integrations/llms/azure_openai_plugin.py +0 -0
  398. {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/integrations/llms/base_llm_plugin.py +0 -0
  399. {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/integrations/llms/bedrock_plugin.py +0 -0
  400. {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/integrations/llms/cohere_plugin.py +0 -0
  401. {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/integrations/llms/gemini_plugin.py +0 -0
  402. {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/integrations/llms/huggingface_plugin.py +0 -0
  403. {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/integrations/llms/langchain/__init__.py +0 -0
  404. {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/integrations/llms/langchain/base.py +0 -0
  405. {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/integrations/llms/langchain_plugin.py +0 -0
  406. {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/integrations/llms/litellm_plugin.py +0 -0
  407. {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/integrations/llms/llamaindex_plugin.py +0 -0
  408. {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/integrations/llms/mistral_plugin.py +0 -0
  409. {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/integrations/llms/openai.py +0 -0
  410. {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/integrations/llms/openai_plugin.py +0 -0
  411. {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/integrations/mappings.py +0 -0
  412. {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/integrations/model_discovery/__init__.py +0 -0
  413. {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/integrations/model_discovery/anthropic_discovery.py +0 -0
  414. {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/integrations/model_discovery/azure_discovery.py +0 -0
  415. {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/integrations/model_discovery/base.py +0 -0
  416. {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/integrations/model_discovery/cache.py +0 -0
  417. {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/integrations/model_discovery/gemini_discovery.py +0 -0
  418. {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/integrations/model_discovery/mistral_discovery.py +0 -0
  419. {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/integrations/model_discovery/openai_discovery.py +0 -0
  420. {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/integrations/observability/__init__.py +0 -0
  421. {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/integrations/observability/mlflow.py +0 -0
  422. {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/integrations/observability/wandb.py +0 -0
  423. {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/integrations/observability/workflow_traces.py +0 -0
  424. {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/integrations/plugin_registry.py +0 -0
  425. {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/integrations/pydantic_ai/__init__.py +0 -0
  426. {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/integrations/pydantic_ai/_types.py +0 -0
  427. {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/integrations/pydantic_ai/handler.py +0 -0
  428. {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/integrations/pydantic_ai/plugin.py +0 -0
  429. {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/integrations/utils/__init__.py +0 -0
  430. {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/integrations/utils/discovery.py +0 -0
  431. {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/integrations/utils/message_coercion.py +0 -0
  432. {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/integrations/utils/mock_adapter.py +0 -0
  433. {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/integrations/utils/parameter_normalizer.py +0 -0
  434. {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/integrations/utils/response_wrapper.py +0 -0
  435. {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/integrations/utils/validation.py +0 -0
  436. {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/integrations/utils/version_compat.py +0 -0
  437. {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/integrations/vector_stores/__init__.py +0 -0
  438. {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/integrations/vector_stores/base.py +0 -0
  439. {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/integrations/vector_stores/chromadb_plugin.py +0 -0
  440. {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/integrations/vector_stores/pinecone_plugin.py +0 -0
  441. {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/integrations/vector_stores/weaviate_plugin.py +0 -0
  442. {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/integrations/wrappers.py +0 -0
  443. {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/invokers/__init__.py +0 -0
  444. {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/invokers/base.py +0 -0
  445. {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/invokers/batch.py +0 -0
  446. {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/invokers/local.py +0 -0
  447. {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/invokers/streaming.py +0 -0
  448. {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/knobs/__init__.py +0 -0
  449. {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/knobs/adapters.py +0 -0
  450. {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/knobs/bindings.py +0 -0
  451. {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/knobs/canonical.py +0 -0
  452. {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/knobs/cascade.py +0 -0
  453. {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/knobs/certificates.py +0 -0
  454. {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/knobs/composites.py +0 -0
  455. {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/knobs/kinds.py +0 -0
  456. {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/knobs/patterns.py +0 -0
  457. {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/knobs/resolution.py +0 -0
  458. {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/knobs/resolver.py +0 -0
  459. {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/knobs/runtime.py +0 -0
  460. {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/knobs/signals.py +0 -0
  461. {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/knobs/telemetry.py +0 -0
  462. {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/mcp/__init__.py +0 -0
  463. {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/mcp/server.py +0 -0
  464. {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/mcp/tools.py +0 -0
  465. {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/metrics/__init__.py +0 -0
  466. {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/metrics/agent_metrics.py +0 -0
  467. {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/metrics/content_features.py +0 -0
  468. {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/metrics/deepeval_metrics.py +0 -0
  469. {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/metrics/ragas_metrics.py +0 -0
  470. {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/metrics/registry.py +0 -0
  471. {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/observability/__init__.py +0 -0
  472. {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/observability/agent_spans.py +0 -0
  473. {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/observability/client.py +0 -0
  474. {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/observability/config.py +0 -0
  475. {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/observability/decorators.py +0 -0
  476. {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/observability/dtos.py +0 -0
  477. {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/optimizers/__init__.py +0 -0
  478. {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/optimizers/base.py +0 -0
  479. {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/optimizers/batch_optimizers.py +0 -0
  480. {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/optimizers/cloud_optimizer.py +0 -0
  481. {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/optimizers/grid.py +0 -0
  482. {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/optimizers/interactive_optimizer.py +0 -0
  483. {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/optimizers/random.py +0 -0
  484. {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/optimizers/registry.py +0 -0
  485. {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/optimizers/remote.py +0 -0
  486. {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/optimizers/remote_services.py +0 -0
  487. {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/optimizers/results.py +0 -0
  488. {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/playbook/__init__.py +0 -0
  489. {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/playbook/loader.py +0 -0
  490. {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/playbook/model.py +0 -0
  491. {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/playbook/scaffold.py +0 -0
  492. {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/playbook/schemas/agent_playbook_schema.json +0 -0
  493. {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/playbook/staleness.py +0 -0
  494. {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/playbook/validator.py +0 -0
  495. {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/plugins/__init__.py +0 -0
  496. {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/plugins/registry.py +0 -0
  497. {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/projects/__init__.py +0 -0
  498. {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/projects/client.py +0 -0
  499. {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/projects/config.py +0 -0
  500. {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/projects/dtos.py +0 -0
  501. {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/prompts/__init__.py +0 -0
  502. {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/prompts/client.py +0 -0
  503. {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/prompts/config.py +0 -0
  504. {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/prompts/dtos.py +0 -0
  505. {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/providers/__init__.py +0 -0
  506. {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/py.typed +0 -0
  507. {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/reporting/__init__.py +0 -0
  508. {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/reporting/example_map.py +0 -0
  509. {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/security/__init__.py +0 -0
  510. {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/security/audit.py +0 -0
  511. {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/security/auth/__init__.py +0 -0
  512. {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/security/auth/helpers.py +0 -0
  513. {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/security/auth/mfa.py +0 -0
  514. {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/security/auth/models.py +0 -0
  515. {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/security/auth/oidc.py +0 -0
  516. {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/security/auth/saml.py +0 -0
  517. {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/security/auth/sms.py +0 -0
  518. {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/security/auth/totp.py +0 -0
  519. {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/security/config.py +0 -0
  520. {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/security/credentials.py +0 -0
  521. {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/security/crypto_utils.py +0 -0
  522. {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/security/deployment.py +0 -0
  523. {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/security/encryption.py +0 -0
  524. {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/security/enterprise.py +0 -0
  525. {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/security/headers.py +0 -0
  526. {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/security/input_validation.py +0 -0
  527. {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/security/jwt_validator.py +0 -0
  528. {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/security/rate_limiter.py +0 -0
  529. {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/security/redaction.py +0 -0
  530. {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/security/session_manager.py +0 -0
  531. {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/security/tenant.py +0 -0
  532. {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/skills/traigent-analyze-results/SKILL.md +0 -0
  533. {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/skills/traigent-analyze-results/references/convergence-patterns.md +0 -0
  534. {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/skills/traigent-analyze-results/references/optimization-result-api.md +0 -0
  535. {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/skills/traigent-configuration-space/SKILL.md +0 -0
  536. {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/skills/traigent-configuration-space/references/constraints.md +0 -0
  537. {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/skills/traigent-configuration-space/references/parameter-types.md +0 -0
  538. {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/skills/traigent-debugging/SKILL.md +0 -0
  539. {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/skills/traigent-debugging/references/error-reference.md +0 -0
  540. {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/skills/traigent-debugging/references/logging-config.md +0 -0
  541. {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/skills/traigent-debugging/references/mock-mode.md +0 -0
  542. {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/skills/traigent-decorator-setup/SKILL.md +0 -0
  543. {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/skills/traigent-decorator-setup/references/evaluation-options.md +0 -0
  544. {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/skills/traigent-decorator-setup/references/execution-modes.md +0 -0
  545. {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/skills/traigent-decorator-setup/references/injection-modes.md +0 -0
  546. {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/skills/traigent-integrations/SKILL.md +0 -0
  547. {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/skills/traigent-integrations/references/dspy.md +0 -0
  548. {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/skills/traigent-integrations/references/langchain.md +0 -0
  549. {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/skills/traigent-integrations/references/litellm.md +0 -0
  550. {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/skills/traigent-quickstart/SKILL.md +0 -0
  551. {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/skills/traigent-quickstart/references/environment-variables.md +0 -0
  552. {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/skills/traigent-quickstart/references/installation-extras.md +0 -0
  553. {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/skills/traigent-run-optimization/SKILL.md +0 -0
  554. {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/skills/traigent-run-optimization/references/algorithms.md +0 -0
  555. {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/skills/traigent-run-optimization/references/cost-management.md +0 -0
  556. {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/skills/traigent-run-optimization/references/parallel-config.md +0 -0
  557. {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/storage/__init__.py +0 -0
  558. {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/storage/local_storage.py +0 -0
  559. {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/testing/__init__.py +0 -0
  560. {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/traigent_client.py +0 -0
  561. {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/traigent_integration.py +0 -0
  562. {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/tuned_variables/__init__.py +0 -0
  563. {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/tuned_variables/dataflow_strategy.py +0 -0
  564. {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/tuned_variables/detection_strategies.py +0 -0
  565. {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/tuned_variables/detection_types.py +0 -0
  566. {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/tuned_variables/detector.py +0 -0
  567. {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/tuned_variables/discovery.py +0 -0
  568. {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/tuned_variables/observation.py +0 -0
  569. {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/tuned_variables/py.typed +0 -0
  570. {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/tvl/__init__.py +0 -0
  571. {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/tvl/__main__.py +0 -0
  572. {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/tvl/models.py +0 -0
  573. {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/tvl/objectives.py +0 -0
  574. {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/tvl/options.py +0 -0
  575. {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/tvl/promotion_gate.py +0 -0
  576. {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/tvl/registry.py +0 -0
  577. {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/tvl/spec_loader.py +0 -0
  578. {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/tvl/spec_validator.py +0 -0
  579. {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/tvl/statistics.py +0 -0
  580. {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/utils/__init__.py +0 -0
  581. {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/utils/artifact_fingerprints.py +0 -0
  582. {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/utils/batch_optimizer_utils.py +0 -0
  583. {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/utils/batch_processing.py +0 -0
  584. {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/utils/callbacks.py +0 -0
  585. {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/utils/console.py +0 -0
  586. {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/utils/constraints.py +0 -0
  587. {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/utils/cost_calculator.py +0 -0
  588. {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/utils/diagnostics.py +0 -0
  589. {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/utils/discrete_domains.py +0 -0
  590. {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/utils/error_handler.py +0 -0
  591. {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/utils/example_id.py +0 -0
  592. {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/utils/exceptions.py +0 -0
  593. {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/utils/file_versioning.py +0 -0
  594. {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/utils/function_identity.py +0 -0
  595. {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/utils/hashing.py +0 -0
  596. {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/utils/importance.py +0 -0
  597. {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/utils/incentives.py +0 -0
  598. {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/utils/insights.py +0 -0
  599. {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/utils/langchain_interceptor.py +0 -0
  600. {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/utils/litellm_interceptor.py +0 -0
  601. {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/utils/llm_response_parsing.py +0 -0
  602. {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/utils/local_analytics.py +0 -0
  603. {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/utils/logging.py +0 -0
  604. {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/utils/multi_objective.py +0 -0
  605. {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/utils/numpy_compat.py +0 -0
  606. {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/utils/objectives.py +0 -0
  607. {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/utils/optimization_analyzer.py +0 -0
  608. {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/utils/optimization_logger.py +0 -0
  609. {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/utils/pagination.py +0 -0
  610. {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/utils/persistence.py +0 -0
  611. {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/utils/results_table.py +0 -0
  612. {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/utils/retry.py +0 -0
  613. {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/utils/secure_path.py +0 -0
  614. {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/utils/url_security.py +0 -0
  615. {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/utils/validation.py +0 -0
  616. {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/visualization/__init__.py +0 -0
  617. {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/visualization/plots.py +0 -0
  618. {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/wrapper/__init__.py +0 -0
  619. {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/wrapper/errors.py +0 -0
  620. {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/wrapper/server.py +0 -0
  621. {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent/wrapper/service.py +0 -0
  622. {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent.egg-info/dependency_links.txt +0 -0
  623. {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent.egg-info/entry_points.txt +0 -0
  624. {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent.egg-info/requires.txt +0 -0
  625. {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent.egg-info/top_level.txt +0 -0
  626. {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent_validation/__init__.py +0 -0
  627. {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent_validation/base.py +0 -0
  628. {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent_validation/plugins.py +0 -0
  629. {traigent-0.18.1.dev6 → traigent-0.18.1.dev8}/traigent_validation/py.typed +0 -0
  630. {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.dev6
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
@@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"
4
4
 
5
5
  [project]
6
6
  name = "traigent"
7
- version = "0.18.1.dev6"
7
+ version = "0.18.1.dev8"
8
8
  authors = [
9
9
  {name = "Traigent Team", email = "opensource@traigent.ai"},
10
10
  ]
@@ -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 await self._privacy_ops.get_next_privacy_trial(
1289
- session_id, previous_results
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 await self._cloud_ops.start_agent_optimization(
1323
- agent_spec, dataset, configuration_space, objectives, max_trials, user_id
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 await self._cloud_ops.execute_agent(
1335
- agent_spec, input_data, config_overrides
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.Task[Any], owner: str) -> None:
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 = loop.create_task(close_result)
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 self.client._active_sessions.copy()
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
- env_names = {
62
- "openai": "OPENAI_API_KEY",
63
- "anthropic": "ANTHROPIC_API_KEY",
64
- "cohere": "COHERE_API_KEY",
65
- # HuggingFace: native HF_TOKEN first; HF_API_KEY kept for back-compat
66
- "huggingface": "HF_TOKEN",
67
- }
68
-
69
- # Check environment first (most secure)
70
- if provider in env_names:
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: