traigent 0.19.1.dev0__tar.gz → 0.19.2__tar.gz

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