traigent 0.18.0.dev0__tar.gz → 0.18.1.dev1__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.18.0.dev0 → traigent-0.18.1.dev1}/CHANGELOG.md +2 -0
  2. {traigent-0.18.0.dev0/traigent.egg-info → traigent-0.18.1.dev1}/PKG-INFO +5 -5
  3. {traigent-0.18.0.dev0 → traigent-0.18.1.dev1}/README.md +3 -3
  4. {traigent-0.18.0.dev0 → traigent-0.18.1.dev1}/docs/api-reference/complete-function-specification.md +1 -1
  5. {traigent-0.18.0.dev0 → traigent-0.18.1.dev1}/docs/api-reference/decorator-reference.md +1 -1
  6. {traigent-0.18.0.dev0 → traigent-0.18.1.dev1}/docs/getting-started/GETTING_STARTED.md +12 -6
  7. {traigent-0.18.0.dev0 → traigent-0.18.1.dev1}/pyproject.toml +2 -2
  8. {traigent-0.18.0.dev0 → traigent-0.18.1.dev1}/requirements/requirements.txt +1 -1
  9. {traigent-0.18.0.dev0 → traigent-0.18.1.dev1}/traigent/__init__.py +22 -3
  10. {traigent-0.18.0.dev0 → traigent-0.18.1.dev1}/traigent/_version.py +0 -5
  11. {traigent-0.18.0.dev0 → traigent-0.18.1.dev1}/traigent/adapters/execution_adapter.py +2 -2
  12. {traigent-0.18.0.dev0 → traigent-0.18.1.dev1}/traigent/admin/config.py +5 -1
  13. {traigent-0.18.0.dev0 → traigent-0.18.1.dev1}/traigent/agents/specification_generator.py +2 -2
  14. {traigent-0.18.0.dev0 → traigent-0.18.1.dev1}/traigent/analytics/cost_optimization.py +3 -3
  15. {traigent-0.18.0.dev0 → traigent-0.18.1.dev1}/traigent/analytics/example_insights.py +5 -1
  16. {traigent-0.18.0.dev0 → traigent-0.18.1.dev1}/traigent/analytics/next_steps.py +7 -2
  17. {traigent-0.18.0.dev0 → traigent-0.18.1.dev1}/traigent/analytics/optimization_plan.py +5 -1
  18. {traigent-0.18.0.dev0 → traigent-0.18.1.dev1}/traigent/analytics/predictive.py +6 -2
  19. {traigent-0.18.0.dev0 → traigent-0.18.1.dev1}/traigent/analytics_mcp/tools.py +144 -7
  20. {traigent-0.18.0.dev0 → traigent-0.18.1.dev1}/traigent/api/agent_inference.py +6 -0
  21. {traigent-0.18.0.dev0 → traigent-0.18.1.dev1}/traigent/api/config_builder.py +9 -0
  22. {traigent-0.18.0.dev0 → traigent-0.18.1.dev1}/traigent/api/constraint_builders.py +6 -0
  23. {traigent-0.18.0.dev0 → traigent-0.18.1.dev1}/traigent/api/decorators.py +134 -15
  24. {traigent-0.18.0.dev0 → traigent-0.18.1.dev1}/traigent/api/functions.py +24 -1
  25. {traigent-0.18.0.dev0 → traigent-0.18.1.dev1}/traigent/api/parameter_ranges.py +1 -1
  26. {traigent-0.18.0.dev0 → traigent-0.18.1.dev1}/traigent/api/parameter_validator.py +8 -0
  27. {traigent-0.18.0.dev0 → traigent-0.18.1.dev1}/traigent/api/strategy_presets.py +18 -0
  28. {traigent-0.18.0.dev0 → traigent-0.18.1.dev1}/traigent/api/types.py +46 -9
  29. {traigent-0.18.0.dev0 → traigent-0.18.1.dev1}/traigent/cli/auth_commands.py +19 -7
  30. {traigent-0.18.0.dev0 → traigent-0.18.1.dev1}/traigent/cli/next_steps_command.py +6 -0
  31. {traigent-0.18.0.dev0 → traigent-0.18.1.dev1}/traigent/cloud/analytics_client.py +9 -2
  32. {traigent-0.18.0.dev0 → traigent-0.18.1.dev1}/traigent/cloud/api_key_manager.py +13 -13
  33. {traigent-0.18.0.dev0 → traigent-0.18.1.dev1}/traigent/cloud/api_operations.py +108 -7
  34. {traigent-0.18.0.dev0 → traigent-0.18.1.dev1}/traigent/cloud/auth.py +7 -64
  35. {traigent-0.18.0.dev0 → traigent-0.18.1.dev1}/traigent/cloud/backend_client.py +521 -31
  36. {traigent-0.18.0.dev0 → traigent-0.18.1.dev1}/traigent/cloud/backend_synchronizer.py +9 -4
  37. {traigent-0.18.0.dev0 → traigent-0.18.1.dev1}/traigent/cloud/benchmark_client.py +7 -2
  38. {traigent-0.18.0.dev0 → traigent-0.18.1.dev1}/traigent/cloud/client.py +372 -4
  39. {traigent-0.18.0.dev0 → traigent-0.18.1.dev1}/traigent/cloud/models.py +3 -0
  40. {traigent-0.18.0.dev0 → traigent-0.18.1.dev1}/traigent/cloud/optimizer_client.py +5 -1
  41. {traigent-0.18.0.dev0 → traigent-0.18.1.dev1}/traigent/cloud/password_auth_handler.py +3 -4
  42. {traigent-0.18.0.dev0 → traigent-0.18.1.dev1}/traigent/cloud/session_operations.py +19 -2
  43. {traigent-0.18.0.dev0 → traigent-0.18.1.dev1}/traigent/cloud/sync_manager.py +10 -2
  44. {traigent-0.18.0.dev0 → traigent-0.18.1.dev1}/traigent/cloud/token_manager.py +4 -6
  45. {traigent-0.18.0.dev0 → traigent-0.18.1.dev1}/traigent/cloud/trial_operations.py +4 -4
  46. {traigent-0.18.0.dev0 → traigent-0.18.1.dev1}/traigent/cloud/url_security.py +65 -16
  47. traigent-0.18.1.dev1/traigent/cloud/user_agent.py +18 -0
  48. {traigent-0.18.0.dev0 → traigent-0.18.1.dev1}/traigent/config/backend_config.py +24 -0
  49. {traigent-0.18.0.dev0 → traigent-0.18.1.dev1}/traigent/config/feature_flags.py +0 -20
  50. {traigent-0.18.0.dev0 → traigent-0.18.1.dev1}/traigent/config/types.py +44 -46
  51. {traigent-0.18.0.dev0 → traigent-0.18.1.dev1}/traigent/config_generator/presets/range_presets.py +96 -96
  52. {traigent-0.18.0.dev0 → traigent-0.18.1.dev1}/traigent/config_generator/recommendations.py +2 -4
  53. {traigent-0.18.0.dev0 → traigent-0.18.1.dev1}/traigent/core/backend_session_manager.py +71 -9
  54. {traigent-0.18.0.dev0 → traigent-0.18.1.dev1}/traigent/core/config_state_manager.py +6 -4
  55. {traigent-0.18.0.dev0 → traigent-0.18.1.dev1}/traigent/core/cost_enforcement.py +40 -9
  56. {traigent-0.18.0.dev0 → traigent-0.18.1.dev1}/traigent/core/cost_estimator.py +28 -18
  57. {traigent-0.18.0.dev0 → traigent-0.18.1.dev1}/traigent/core/execution_policy_runtime.py +12 -0
  58. {traigent-0.18.0.dev0 → traigent-0.18.1.dev1}/traigent/core/optimization_pipeline.py +15 -0
  59. {traigent-0.18.0.dev0 → traigent-0.18.1.dev1}/traigent/core/optimized_function.py +101 -10
  60. {traigent-0.18.0.dev0 → traigent-0.18.1.dev1}/traigent/core/orchestrator.py +179 -17
  61. {traigent-0.18.0.dev0 → traigent-0.18.1.dev1}/traigent/core/result_selection.py +6 -6
  62. {traigent-0.18.0.dev0 → traigent-0.18.1.dev1}/traigent/core/sample_budget.py +1 -3
  63. {traigent-0.18.0.dev0 → traigent-0.18.1.dev1}/traigent/core/session_types.py +3 -0
  64. {traigent-0.18.0.dev0 → traigent-0.18.1.dev1}/traigent/core/stop_condition_manager.py +1 -1
  65. {traigent-0.18.0.dev0 → traigent-0.18.1.dev1}/traigent/core/trial_lifecycle.py +2 -0
  66. {traigent-0.18.0.dev0 → traigent-0.18.1.dev1}/traigent/core/trial_result_factory.py +29 -0
  67. {traigent-0.18.0.dev0 → traigent-0.18.1.dev1}/traigent/core_metrics/config.py +5 -1
  68. traigent-0.18.1.dev1/traigent/defaults.py +3 -0
  69. {traigent-0.18.0.dev0 → traigent-0.18.1.dev1}/traigent/evaluation/__init__.py +6 -0
  70. {traigent-0.18.0.dev0 → traigent-0.18.1.dev1}/traigent/evaluation/client.py +175 -17
  71. {traigent-0.18.0.dev0 → traigent-0.18.1.dev1}/traigent/evaluation/config.py +5 -1
  72. {traigent-0.18.0.dev0 → traigent-0.18.1.dev1}/traigent/evaluation/dtos.py +177 -1
  73. {traigent-0.18.0.dev0 → traigent-0.18.1.dev1}/traigent/evaluators/base.py +15 -2
  74. {traigent-0.18.0.dev0 → traigent-0.18.1.dev1}/traigent/examples/quickstart/__main__.py +2 -2
  75. {traigent-0.18.0.dev0 → traigent-0.18.1.dev1}/traigent/examples/quickstart/_env.py +8 -5
  76. traigent-0.18.1.dev1/traigent/examples/quickstart/publish_and_verify.py +179 -0
  77. {traigent-0.18.0.dev0 → traigent-0.18.1.dev1}/traigent/hybrid/http_transport.py +2 -1
  78. {traigent-0.18.0.dev0 → traigent-0.18.1.dev1}/traigent/integrations/bedrock_client.py +11 -1
  79. {traigent-0.18.0.dev0 → traigent-0.18.1.dev1}/traigent/integrations/framework_override.py +31 -0
  80. {traigent-0.18.0.dev0 → traigent-0.18.1.dev1}/traigent/integrations/langfuse/__init__.py +18 -18
  81. {traigent-0.18.0.dev0 → traigent-0.18.1.dev1}/traigent/integrations/langfuse/client.py +18 -18
  82. {traigent-0.18.0.dev0 → traigent-0.18.1.dev1}/traigent/integrations/observability/wandb.py +3 -27
  83. {traigent-0.18.0.dev0 → traigent-0.18.1.dev1}/traigent/integrations/observability/workflow_traces.py +8 -3
  84. {traigent-0.18.0.dev0 → traigent-0.18.1.dev1}/traigent/integrations/plugin_registry.py +3 -3
  85. {traigent-0.18.0.dev0 → traigent-0.18.1.dev1}/traigent/integrations/pydantic_ai/__init__.py +4 -4
  86. {traigent-0.18.0.dev0 → traigent-0.18.1.dev1}/traigent/integrations/pydantic_ai/handler.py +4 -4
  87. {traigent-0.18.0.dev0 → traigent-0.18.1.dev1}/traigent/invokers/base.py +6 -1
  88. {traigent-0.18.0.dev0 → traigent-0.18.1.dev1}/traigent/invokers/streaming.py +9 -9
  89. {traigent-0.18.0.dev0 → traigent-0.18.1.dev1}/traigent/knobs/cascade.py +1 -2
  90. {traigent-0.18.0.dev0 → traigent-0.18.1.dev1}/traigent/metrics/ragas_metrics.py +2 -2
  91. {traigent-0.18.0.dev0 → traigent-0.18.1.dev1}/traigent/observability/client.py +80 -0
  92. {traigent-0.18.0.dev0 → traigent-0.18.1.dev1}/traigent/optimizers/interactive_optimizer.py +6 -0
  93. {traigent-0.18.0.dev0 → traigent-0.18.1.dev1}/traigent/optimizers/registry.py +11 -29
  94. {traigent-0.18.0.dev0 → traigent-0.18.1.dev1}/traigent/projects/client.py +27 -0
  95. {traigent-0.18.0.dev0 → traigent-0.18.1.dev1}/traigent/projects/config.py +5 -5
  96. {traigent-0.18.0.dev0 → traigent-0.18.1.dev1}/traigent/projects/dtos.py +1 -1
  97. {traigent-0.18.0.dev0 → traigent-0.18.1.dev1}/traigent/prompts/client.py +30 -0
  98. {traigent-0.18.0.dev0 → traigent-0.18.1.dev1}/traigent/prompts/config.py +5 -1
  99. {traigent-0.18.0.dev0 → traigent-0.18.1.dev1}/traigent/security/audit.py +1 -2
  100. {traigent-0.18.0.dev0 → traigent-0.18.1.dev1}/traigent/security/auth/models.py +9 -9
  101. {traigent-0.18.0.dev0 → traigent-0.18.1.dev1}/traigent/security/auth/saml.py +5 -5
  102. {traigent-0.18.0.dev0 → traigent-0.18.1.dev1}/traigent/skills/traigent-debugging/SKILL.md +18 -4
  103. {traigent-0.18.0.dev0 → traigent-0.18.1.dev1}/traigent/skills/traigent-debugging/references/error-reference.md +20 -5
  104. {traigent-0.18.0.dev0 → traigent-0.18.1.dev1}/traigent/skills/traigent-quickstart/references/environment-variables.md +2 -0
  105. {traigent-0.18.0.dev0 → traigent-0.18.1.dev1}/traigent/skills/traigent-run-optimization/SKILL.md +18 -6
  106. {traigent-0.18.0.dev0 → traigent-0.18.1.dev1}/traigent/skills/traigent-run-optimization/references/cost-management.md +20 -22
  107. {traigent-0.18.0.dev0 → traigent-0.18.1.dev1}/traigent/tvl/__init__.py +4 -0
  108. {traigent-0.18.0.dev0 → traigent-0.18.1.dev1}/traigent/tvl/models.py +23 -3
  109. {traigent-0.18.0.dev0 → traigent-0.18.1.dev1}/traigent/tvl/promotion_gate.py +20 -6
  110. {traigent-0.18.0.dev0 → traigent-0.18.1.dev1}/traigent/tvl/spec_loader.py +462 -60
  111. {traigent-0.18.0.dev0 → traigent-0.18.1.dev1}/traigent/tvl/statistics.py +43 -0
  112. traigent-0.18.1.dev1/traigent/utils/artifact_fingerprints.py +349 -0
  113. {traigent-0.18.0.dev0 → traigent-0.18.1.dev1}/traigent/utils/exceptions.py +33 -4
  114. traigent-0.18.1.dev1/traigent/utils/pagination.py +89 -0
  115. {traigent-0.18.0.dev0 → traigent-0.18.1.dev1}/traigent/utils/results_table.py +12 -4
  116. {traigent-0.18.0.dev0 → traigent-0.18.1.dev1}/traigent/utils/secure_path.py +1 -3
  117. {traigent-0.18.0.dev0 → traigent-0.18.1.dev1}/traigent/utils/url_security.py +35 -0
  118. {traigent-0.18.0.dev0 → traigent-0.18.1.dev1}/traigent/visualization/plots.py +5 -2
  119. {traigent-0.18.0.dev0 → traigent-0.18.1.dev1/traigent.egg-info}/PKG-INFO +5 -5
  120. {traigent-0.18.0.dev0 → traigent-0.18.1.dev1}/traigent.egg-info/SOURCES.txt +5 -4
  121. {traigent-0.18.0.dev0 → traigent-0.18.1.dev1}/traigent.egg-info/requires.txt +1 -1
  122. traigent-0.18.0.dev0/traigent/config/seamless_injection.py +0 -143
  123. traigent-0.18.0.dev0/traigent/integrations/batch_wrapper.py +0 -132
  124. traigent-0.18.0.dev0/traigent/utils/reproducibility.py +0 -604
  125. traigent-0.18.0.dev0/traigent/utils/user_prompts.py +0 -84
  126. {traigent-0.18.0.dev0 → traigent-0.18.1.dev1}/COMMERCIAL-LICENSE.md +0 -0
  127. {traigent-0.18.0.dev0 → traigent-0.18.1.dev1}/CONTRIBUTING.md +0 -0
  128. {traigent-0.18.0.dev0 → traigent-0.18.1.dev1}/CONTRIBUTOR-LICENSING.md +0 -0
  129. {traigent-0.18.0.dev0 → traigent-0.18.1.dev1}/DISCLAIMER.md +0 -0
  130. {traigent-0.18.0.dev0 → traigent-0.18.1.dev1}/LICENSE +0 -0
  131. {traigent-0.18.0.dev0 → traigent-0.18.1.dev1}/MANIFEST.in +0 -0
  132. {traigent-0.18.0.dev0 → traigent-0.18.1.dev1}/NOTICE +0 -0
  133. {traigent-0.18.0.dev0 → traigent-0.18.1.dev1}/SECURITY.md +0 -0
  134. {traigent-0.18.0.dev0 → traigent-0.18.1.dev1}/docs/LOCAL_CI_GATE.md +0 -0
  135. {traigent-0.18.0.dev0 → traigent-0.18.1.dev1}/docs/README.md +0 -0
  136. {traigent-0.18.0.dev0 → traigent-0.18.1.dev1}/docs/SYNC_MAP.md +0 -0
  137. {traigent-0.18.0.dev0 → traigent-0.18.1.dev1}/docs/agent-skill.md +0 -0
  138. {traigent-0.18.0.dev0 → traigent-0.18.1.dev1}/docs/api-reference/enterprise-beta-api.md +0 -0
  139. {traigent-0.18.0.dev0 → traigent-0.18.1.dev1}/docs/api-reference/interactive_optimizer.md +0 -0
  140. {traigent-0.18.0.dev0 → traigent-0.18.1.dev1}/docs/api-reference/telemetry.md +0 -0
  141. {traigent-0.18.0.dev0 → traigent-0.18.1.dev1}/docs/api-reference/thread-pool-examples.md +0 -0
  142. {traigent-0.18.0.dev0 → traigent-0.18.1.dev1}/docs/architecture/ARCHITECTURE.md +0 -0
  143. {traigent-0.18.0.dev0 → traigent-0.18.1.dev1}/docs/architecture/cost-architecture-validation.md +0 -0
  144. {traigent-0.18.0.dev0 → traigent-0.18.1.dev1}/docs/architecture/execution_mode_follow_up.md +0 -0
  145. {traigent-0.18.0.dev0 → traigent-0.18.1.dev1}/docs/architecture/integrations-inventory.md +0 -0
  146. {traigent-0.18.0.dev0 → traigent-0.18.1.dev1}/docs/architecture/plugin_architecture.md +0 -0
  147. {traigent-0.18.0.dev0 → traigent-0.18.1.dev1}/docs/architecture/project-structure.md +0 -0
  148. {traigent-0.18.0.dev0 → traigent-0.18.1.dev1}/docs/architecture/stop_conditions.md +0 -0
  149. {traigent-0.18.0.dev0 → traigent-0.18.1.dev1}/docs/concepts/composite-knob-ir.md +0 -0
  150. {traigent-0.18.0.dev0 → traigent-0.18.1.dev1}/docs/concepts/composite-knobs.md +0 -0
  151. {traigent-0.18.0.dev0 → traigent-0.18.1.dev1}/docs/concepts/guided-generation.md +0 -0
  152. {traigent-0.18.0.dev0 → traigent-0.18.1.dev1}/docs/contributing/ADDING_NEW_INTEGRATIONS.md +0 -0
  153. {traigent-0.18.0.dev0 → traigent-0.18.1.dev1}/docs/contributing/CODE_OF_CONDUCT.md +0 -0
  154. {traigent-0.18.0.dev0 → traigent-0.18.1.dev1}/docs/contributing/CONTRIBUTING.md +0 -0
  155. {traigent-0.18.0.dev0 → traigent-0.18.1.dev1}/docs/contributing/EXAMPLE_TEMPLATE.md +0 -0
  156. {traigent-0.18.0.dev0 → traigent-0.18.1.dev1}/docs/contributing/README.md +0 -0
  157. {traigent-0.18.0.dev0 → traigent-0.18.1.dev1}/docs/contributing/SECURITY.md +0 -0
  158. {traigent-0.18.0.dev0 → traigent-0.18.1.dev1}/docs/contributing/aikido_triage.md +0 -0
  159. {traigent-0.18.0.dev0 → traigent-0.18.1.dev1}/docs/contributing/code_review_instructions.md +0 -0
  160. {traigent-0.18.0.dev0 → traigent-0.18.1.dev1}/docs/contributing/test-quality-guide.md +0 -0
  161. {traigent-0.18.0.dev0 → traigent-0.18.1.dev1}/docs/demos/DEMO_VIDEO_GUIDE.md +0 -0
  162. {traigent-0.18.0.dev0 → traigent-0.18.1.dev1}/docs/demos/README.md +0 -0
  163. {traigent-0.18.0.dev0 → traigent-0.18.1.dev1}/docs/examples/API_PATTERNS.md +0 -0
  164. {traigent-0.18.0.dev0 → traigent-0.18.1.dev1}/docs/examples/LEARNING_ROADMAP.md +0 -0
  165. {traigent-0.18.0.dev0 → traigent-0.18.1.dev1}/docs/examples/QUICK_REFERENCE.md +0 -0
  166. {traigent-0.18.0.dev0 → traigent-0.18.1.dev1}/docs/examples/README.md +0 -0
  167. {traigent-0.18.0.dev0 → traigent-0.18.1.dev1}/docs/examples/START_HERE.md +0 -0
  168. {traigent-0.18.0.dev0 → traigent-0.18.1.dev1}/docs/examples/TROUBLESHOOTING.md +0 -0
  169. {traigent-0.18.0.dev0 → traigent-0.18.1.dev1}/docs/fake-completion-tracking.md +0 -0
  170. {traigent-0.18.0.dev0 → traigent-0.18.1.dev1}/docs/feature_matrices/README.md +0 -0
  171. {traigent-0.18.0.dev0 → traigent-0.18.1.dev1}/docs/features/README.md +0 -0
  172. {traigent-0.18.0.dev0 → traigent-0.18.1.dev1}/docs/features/authentication.md +0 -0
  173. {traigent-0.18.0.dev0 → traigent-0.18.1.dev1}/docs/features/constraint-dsl.md +0 -0
  174. {traigent-0.18.0.dev0 → traigent-0.18.1.dev1}/docs/features/dataflow-detection.md +0 -0
  175. {traigent-0.18.0.dev0 → traigent-0.18.1.dev1}/docs/features/framework_override_enhanced_features.md +0 -0
  176. {traigent-0.18.0.dev0 → traigent-0.18.1.dev1}/docs/features/mcp-server.md +0 -0
  177. {traigent-0.18.0.dev0 → traigent-0.18.1.dev1}/docs/features/observability-spans.md +0 -0
  178. {traigent-0.18.0.dev0 → traigent-0.18.1.dev1}/docs/features/onboarding.md +0 -0
  179. {traigent-0.18.0.dev0 → traigent-0.18.1.dev1}/docs/features/prompt_management.md +0 -0
  180. {traigent-0.18.0.dev0 → traigent-0.18.1.dev1}/docs/features/recommendations.md +0 -0
  181. {traigent-0.18.0.dev0 → traigent-0.18.1.dev1}/docs/features/safety-gates.md +0 -0
  182. {traigent-0.18.0.dev0 → traigent-0.18.1.dev1}/docs/features/seamless_injection.md +0 -0
  183. {traigent-0.18.0.dev0 → traigent-0.18.1.dev1}/docs/features/strategy-presets.md +0 -0
  184. {traigent-0.18.0.dev0 → traigent-0.18.1.dev1}/docs/features/strict_metrics_nulls.md +0 -0
  185. {traigent-0.18.0.dev0 → traigent-0.18.1.dev1}/docs/getting-started/README.md +0 -0
  186. {traigent-0.18.0.dev0 → traigent-0.18.1.dev1}/docs/getting-started/installation.md +0 -0
  187. {traigent-0.18.0.dev0 → traigent-0.18.1.dev1}/docs/getting-started/minimal-integration.md +0 -0
  188. {traigent-0.18.0.dev0 → traigent-0.18.1.dev1}/docs/getting-started/portal-dev-laptop-agent.md +0 -0
  189. {traigent-0.18.0.dev0 → traigent-0.18.1.dev1}/docs/getting-started/testing.md +0 -0
  190. {traigent-0.18.0.dev0 → traigent-0.18.1.dev1}/docs/guides/VSCODE_RESTART_GUIDE.md +0 -0
  191. {traigent-0.18.0.dev0 → traigent-0.18.1.dev1}/docs/guides/evaluation.md +0 -0
  192. {traigent-0.18.0.dev0 → traigent-0.18.1.dev1}/docs/guides/execution-mode-migration.md +0 -0
  193. {traigent-0.18.0.dev0 → traigent-0.18.1.dev1}/docs/guides/execution-modes.md +0 -0
  194. {traigent-0.18.0.dev0 → traigent-0.18.1.dev1}/docs/guides/js-bridge.md +0 -0
  195. {traigent-0.18.0.dev0 → traigent-0.18.1.dev1}/docs/guides/llm_plugin_migration_guide.md +0 -0
  196. {traigent-0.18.0.dev0 → traigent-0.18.1.dev1}/docs/guides/parallel-configuration.md +0 -0
  197. {traigent-0.18.0.dev0 → traigent-0.18.1.dev1}/docs/guides/secrets_management.md +0 -0
  198. {traigent-0.18.0.dev0 → traigent-0.18.1.dev1}/docs/hybrid-mode-api-contract.md +0 -0
  199. {traigent-0.18.0.dev0 → traigent-0.18.1.dev1}/docs/hybrid-mode-client-guide.md +0 -0
  200. {traigent-0.18.0.dev0 → traigent-0.18.1.dev1}/docs/operations/azure_openai.md +0 -0
  201. {traigent-0.18.0.dev0 → traigent-0.18.1.dev1}/docs/operations/bedrock.md +0 -0
  202. {traigent-0.18.0.dev0 → traigent-0.18.1.dev1}/docs/operations/google_gemini.md +0 -0
  203. {traigent-0.18.0.dev0 → traigent-0.18.1.dev1}/docs/security/trust_model.md +0 -0
  204. {traigent-0.18.0.dev0 → traigent-0.18.1.dev1}/docs/testing/CREATIVE_STRESS_TESTING.md +0 -0
  205. {traigent-0.18.0.dev0 → traigent-0.18.1.dev1}/docs/traceability/concepts/composite-knob-ir.md +0 -0
  206. {traigent-0.18.0.dev0 → traigent-0.18.1.dev1}/docs/traceability/concepts/composite-knobs.md +0 -0
  207. {traigent-0.18.0.dev0 → traigent-0.18.1.dev1}/docs/traceability/concepts/guided-generation.md +0 -0
  208. {traigent-0.18.0.dev0 → traigent-0.18.1.dev1}/docs/traceability/schema.md +0 -0
  209. {traigent-0.18.0.dev0 → traigent-0.18.1.dev1}/docs/traceability/tagging_tracking.md +0 -0
  210. {traigent-0.18.0.dev0 → traigent-0.18.1.dev1}/docs/traceability/taxonomy_reference.md +0 -0
  211. {traigent-0.18.0.dev0 → traigent-0.18.1.dev1}/docs/tvl/CONSTRAINT_EXPRESSIONS.md +0 -0
  212. {traigent-0.18.0.dev0 → traigent-0.18.1.dev1}/docs/user-guide/README.md +0 -0
  213. {traigent-0.18.0.dev0 → traigent-0.18.1.dev1}/docs/user-guide/agent_optimization.md +0 -0
  214. {traigent-0.18.0.dev0 → traigent-0.18.1.dev1}/docs/user-guide/choosing_optimization_model.md +0 -0
  215. {traigent-0.18.0.dev0 → traigent-0.18.1.dev1}/docs/user-guide/configuration-spaces.md +0 -0
  216. {traigent-0.18.0.dev0 → traigent-0.18.1.dev1}/docs/user-guide/evaluation_guide.md +0 -0
  217. {traigent-0.18.0.dev0 → traigent-0.18.1.dev1}/docs/user-guide/injection_modes.md +0 -0
  218. {traigent-0.18.0.dev0 → traigent-0.18.1.dev1}/docs/user-guide/interactive_optimization.md +0 -0
  219. {traigent-0.18.0.dev0 → traigent-0.18.1.dev1}/docs/user-guide/smart_optimization.md +0 -0
  220. {traigent-0.18.0.dev0 → traigent-0.18.1.dev1}/docs/user-guide/tuned_variables.md +0 -0
  221. {traigent-0.18.0.dev0 → traigent-0.18.1.dev1}/docs/walkthrough.md +0 -0
  222. {traigent-0.18.0.dev0 → traigent-0.18.1.dev1}/requirements/requirements-all.txt +0 -0
  223. {traigent-0.18.0.dev0 → traigent-0.18.1.dev1}/requirements/requirements-analytics.txt +0 -0
  224. {traigent-0.18.0.dev0 → traigent-0.18.1.dev1}/requirements/requirements-bayesian.txt +0 -0
  225. {traigent-0.18.0.dev0 → traigent-0.18.1.dev1}/requirements/requirements-chroma.txt +0 -0
  226. {traigent-0.18.0.dev0 → traigent-0.18.1.dev1}/requirements/requirements-dev.txt +0 -0
  227. {traigent-0.18.0.dev0 → traigent-0.18.1.dev1}/requirements/requirements-hybrid.txt +0 -0
  228. {traigent-0.18.0.dev0 → traigent-0.18.1.dev1}/requirements/requirements-integrations.txt +0 -0
  229. {traigent-0.18.0.dev0 → traigent-0.18.1.dev1}/requirements/requirements-security.txt +0 -0
  230. {traigent-0.18.0.dev0 → traigent-0.18.1.dev1}/requirements/requirements-test.txt +0 -0
  231. {traigent-0.18.0.dev0 → traigent-0.18.1.dev1}/setup.cfg +0 -0
  232. {traigent-0.18.0.dev0 → traigent-0.18.1.dev1}/traigent/admin/__init__.py +0 -0
  233. {traigent-0.18.0.dev0 → traigent-0.18.1.dev1}/traigent/admin/client.py +0 -0
  234. {traigent-0.18.0.dev0 → traigent-0.18.1.dev1}/traigent/admin/dtos.py +0 -0
  235. {traigent-0.18.0.dev0 → traigent-0.18.1.dev1}/traigent/agents/__init__.py +0 -0
  236. {traigent-0.18.0.dev0 → traigent-0.18.1.dev1}/traigent/agents/config_mapper.py +0 -0
  237. {traigent-0.18.0.dev0 → traigent-0.18.1.dev1}/traigent/agents/executor.py +0 -0
  238. {traigent-0.18.0.dev0 → traigent-0.18.1.dev1}/traigent/agents/platforms.py +0 -0
  239. {traigent-0.18.0.dev0 → traigent-0.18.1.dev1}/traigent/analytics/__init__.py +0 -0
  240. {traigent-0.18.0.dev0 → traigent-0.18.1.dev1}/traigent/analytics/anomaly.py +0 -0
  241. {traigent-0.18.0.dev0 → traigent-0.18.1.dev1}/traigent/analytics/intelligence.py +0 -0
  242. {traigent-0.18.0.dev0 → traigent-0.18.1.dev1}/traigent/analytics/meta_learning.py +0 -0
  243. {traigent-0.18.0.dev0 → traigent-0.18.1.dev1}/traigent/analytics/render.py +0 -0
  244. {traigent-0.18.0.dev0 → traigent-0.18.1.dev1}/traigent/analytics/scheduling.py +0 -0
  245. {traigent-0.18.0.dev0 → traigent-0.18.1.dev1}/traigent/analytics_mcp/__init__.py +0 -0
  246. {traigent-0.18.0.dev0 → traigent-0.18.1.dev1}/traigent/analytics_mcp/server.py +0 -0
  247. {traigent-0.18.0.dev0 → traigent-0.18.1.dev1}/traigent/api/__init__.py +0 -0
  248. {traigent-0.18.0.dev0 → traigent-0.18.1.dev1}/traigent/api/config_space.py +0 -0
  249. {traigent-0.18.0.dev0 → traigent-0.18.1.dev1}/traigent/api/constraints.py +0 -0
  250. {traigent-0.18.0.dev0 → traigent-0.18.1.dev1}/traigent/api/safety.py +0 -0
  251. {traigent-0.18.0.dev0 → traigent-0.18.1.dev1}/traigent/api/validation_protocol.py +0 -0
  252. {traigent-0.18.0.dev0 → traigent-0.18.1.dev1}/traigent/cli/__init__.py +0 -0
  253. {traigent-0.18.0.dev0 → traigent-0.18.1.dev1}/traigent/cli/detect_tvars_command.py +0 -0
  254. {traigent-0.18.0.dev0 → traigent-0.18.1.dev1}/traigent/cli/function_discovery.py +0 -0
  255. {traigent-0.18.0.dev0 → traigent-0.18.1.dev1}/traigent/cli/generate_config_command.py +0 -0
  256. {traigent-0.18.0.dev0 → traigent-0.18.1.dev1}/traigent/cli/hooks_commands.py +0 -0
  257. {traigent-0.18.0.dev0 → traigent-0.18.1.dev1}/traigent/cli/local_commands.py +0 -0
  258. {traigent-0.18.0.dev0 → traigent-0.18.1.dev1}/traigent/cli/main.py +0 -0
  259. {traigent-0.18.0.dev0 → traigent-0.18.1.dev1}/traigent/cli/onboard_commands.py +0 -0
  260. {traigent-0.18.0.dev0 → traigent-0.18.1.dev1}/traigent/cli/optimization_validator.py +0 -0
  261. {traigent-0.18.0.dev0 → traigent-0.18.1.dev1}/traigent/cli/plan_command.py +0 -0
  262. {traigent-0.18.0.dev0 → traigent-0.18.1.dev1}/traigent/cli/playbook_commands.py +0 -0
  263. {traigent-0.18.0.dev0 → traigent-0.18.1.dev1}/traigent/cli/sync_commands.py +0 -0
  264. {traigent-0.18.0.dev0 → traigent-0.18.1.dev1}/traigent/cli/validation_types.py +0 -0
  265. {traigent-0.18.0.dev0 → traigent-0.18.1.dev1}/traigent/cloud/__init__.py +0 -0
  266. {traigent-0.18.0.dev0 → traigent-0.18.1.dev1}/traigent/cloud/_aiohttp_compat.py +0 -0
  267. {traigent-0.18.0.dev0 → traigent-0.18.1.dev1}/traigent/cloud/agent_dtos.py +0 -0
  268. {traigent-0.18.0.dev0 → traigent-0.18.1.dev1}/traigent/cloud/analytics_auth.py +0 -0
  269. {traigent-0.18.0.dev0 → traigent-0.18.1.dev1}/traigent/cloud/async_batch_transport.py +0 -0
  270. {traigent-0.18.0.dev0 → traigent-0.18.1.dev1}/traigent/cloud/backend_bridges.py +0 -0
  271. {traigent-0.18.0.dev0 → traigent-0.18.1.dev1}/traigent/cloud/backend_components.py +0 -0
  272. {traigent-0.18.0.dev0 → traigent-0.18.1.dev1}/traigent/cloud/billing.py +0 -0
  273. {traigent-0.18.0.dev0 → traigent-0.18.1.dev1}/traigent/cloud/cloud_operations.py +0 -0
  274. {traigent-0.18.0.dev0 → traigent-0.18.1.dev1}/traigent/cloud/credential_manager.py +0 -0
  275. {traigent-0.18.0.dev0 → traigent-0.18.1.dev1}/traigent/cloud/credential_resolver.py +0 -0
  276. {traigent-0.18.0.dev0 → traigent-0.18.1.dev1}/traigent/cloud/dataset_converter.py +0 -0
  277. {traigent-0.18.0.dev0 → traigent-0.18.1.dev1}/traigent/cloud/dtos.py +0 -0
  278. {traigent-0.18.0.dev0 → traigent-0.18.1.dev1}/traigent/cloud/governance.py +0 -0
  279. {traigent-0.18.0.dev0 → traigent-0.18.1.dev1}/traigent/cloud/integration_manager.py +0 -0
  280. {traigent-0.18.0.dev0 → traigent-0.18.1.dev1}/traigent/cloud/privacy_operations.py +0 -0
  281. {traigent-0.18.0.dev0 → traigent-0.18.1.dev1}/traigent/cloud/production_mcp_client.py +0 -0
  282. {traigent-0.18.0.dev0 → traigent-0.18.1.dev1}/traigent/cloud/remote_guidance.py +0 -0
  283. {traigent-0.18.0.dev0 → traigent-0.18.1.dev1}/traigent/cloud/resilient_client.py +0 -0
  284. {traigent-0.18.0.dev0 → traigent-0.18.1.dev1}/traigent/cloud/service.py +0 -0
  285. {traigent-0.18.0.dev0 → traigent-0.18.1.dev1}/traigent/cloud/session_types.py +0 -0
  286. {traigent-0.18.0.dev0 → traigent-0.18.1.dev1}/traigent/cloud/sessions.py +0 -0
  287. {traigent-0.18.0.dev0 → traigent-0.18.1.dev1}/traigent/cloud/subset_selection.py +0 -0
  288. {traigent-0.18.0.dev0 → traigent-0.18.1.dev1}/traigent/cloud/trial_tracker.py +0 -0
  289. {traigent-0.18.0.dev0 → traigent-0.18.1.dev1}/traigent/cloud/validators.py +0 -0
  290. {traigent-0.18.0.dev0 → traigent-0.18.1.dev1}/traigent/config/__init__.py +0 -0
  291. {traigent-0.18.0.dev0 → traigent-0.18.1.dev1}/traigent/config/api_keys.py +0 -0
  292. {traigent-0.18.0.dev0 → traigent-0.18.1.dev1}/traigent/config/ast_transformer.py +0 -0
  293. {traigent-0.18.0.dev0 → traigent-0.18.1.dev1}/traigent/config/context.py +0 -0
  294. {traigent-0.18.0.dev0 → traigent-0.18.1.dev1}/traigent/config/models.yaml +0 -0
  295. {traigent-0.18.0.dev0 → traigent-0.18.1.dev1}/traigent/config/parallel.py +0 -0
  296. {traigent-0.18.0.dev0 → traigent-0.18.1.dev1}/traigent/config/project.py +0 -0
  297. {traigent-0.18.0.dev0 → traigent-0.18.1.dev1}/traigent/config/providers.py +0 -0
  298. {traigent-0.18.0.dev0 → traigent-0.18.1.dev1}/traigent/config/runtime_injector.py +0 -0
  299. {traigent-0.18.0.dev0 → traigent-0.18.1.dev1}/traigent/config/tenant.py +0 -0
  300. {traigent-0.18.0.dev0 → traigent-0.18.1.dev1}/traigent/config_generator/__init__.py +0 -0
  301. {traigent-0.18.0.dev0 → traigent-0.18.1.dev1}/traigent/config_generator/agent_classifier.py +0 -0
  302. {traigent-0.18.0.dev0 → traigent-0.18.1.dev1}/traigent/config_generator/apply.py +0 -0
  303. {traigent-0.18.0.dev0 → traigent-0.18.1.dev1}/traigent/config_generator/catalog/schemas/tvar_catalog_entry_schema.json +0 -0
  304. {traigent-0.18.0.dev0 → traigent-0.18.1.dev1}/traigent/config_generator/catalog/schemas/tvar_observation_schema.json +0 -0
  305. {traigent-0.18.0.dev0 → traigent-0.18.1.dev1}/traigent/config_generator/catalog/schemas/tvar_value_recommendation_schema.json +0 -0
  306. {traigent-0.18.0.dev0 → traigent-0.18.1.dev1}/traigent/config_generator/catalog/tvar_catalog.v1.json +0 -0
  307. {traigent-0.18.0.dev0 → traigent-0.18.1.dev1}/traigent/config_generator/catalog.py +0 -0
  308. {traigent-0.18.0.dev0 → traigent-0.18.1.dev1}/traigent/config_generator/llm_backend.py +0 -0
  309. {traigent-0.18.0.dev0 → traigent-0.18.1.dev1}/traigent/config_generator/pipeline.py +0 -0
  310. {traigent-0.18.0.dev0 → traigent-0.18.1.dev1}/traigent/config_generator/presets/__init__.py +0 -0
  311. {traigent-0.18.0.dev0 → traigent-0.18.1.dev1}/traigent/config_generator/presets/agent_type_catalog.py +0 -0
  312. {traigent-0.18.0.dev0 → traigent-0.18.1.dev1}/traigent/config_generator/presets/benchmark_catalog.py +0 -0
  313. {traigent-0.18.0.dev0 → traigent-0.18.1.dev1}/traigent/config_generator/presets/constraint_templates.py +0 -0
  314. {traigent-0.18.0.dev0 → traigent-0.18.1.dev1}/traigent/config_generator/subsystems/__init__.py +0 -0
  315. {traigent-0.18.0.dev0 → traigent-0.18.1.dev1}/traigent/config_generator/subsystems/benchmarks.py +0 -0
  316. {traigent-0.18.0.dev0 → traigent-0.18.1.dev1}/traigent/config_generator/subsystems/objectives.py +0 -0
  317. {traigent-0.18.0.dev0 → traigent-0.18.1.dev1}/traigent/config_generator/subsystems/safety_constraints.py +0 -0
  318. {traigent-0.18.0.dev0 → traigent-0.18.1.dev1}/traigent/config_generator/subsystems/structural_constraints.py +0 -0
  319. {traigent-0.18.0.dev0 → traigent-0.18.1.dev1}/traigent/config_generator/subsystems/tvar_ranges.py +0 -0
  320. {traigent-0.18.0.dev0 → traigent-0.18.1.dev1}/traigent/config_generator/subsystems/tvar_recommendations.py +0 -0
  321. {traigent-0.18.0.dev0 → traigent-0.18.1.dev1}/traigent/config_generator/types.py +0 -0
  322. {traigent-0.18.0.dev0 → traigent-0.18.1.dev1}/traigent/core/__init__.py +0 -0
  323. {traigent-0.18.0.dev0 → traigent-0.18.1.dev1}/traigent/core/best_config_runtime.py +0 -0
  324. {traigent-0.18.0.dev0 → traigent-0.18.1.dev1}/traigent/core/cache_policy.py +0 -0
  325. {traigent-0.18.0.dev0 → traigent-0.18.1.dev1}/traigent/core/ci_approval.py +0 -0
  326. {traigent-0.18.0.dev0 → traigent-0.18.1.dev1}/traigent/core/constants.py +0 -0
  327. {traigent-0.18.0.dev0 → traigent-0.18.1.dev1}/traigent/core/evaluator_wrapper.py +0 -0
  328. {traigent-0.18.0.dev0 → traigent-0.18.1.dev1}/traigent/core/exception_handler.py +0 -0
  329. {traigent-0.18.0.dev0 → traigent-0.18.1.dev1}/traigent/core/license.py +0 -0
  330. {traigent-0.18.0.dev0 → traigent-0.18.1.dev1}/traigent/core/logger_facade.py +0 -0
  331. {traigent-0.18.0.dev0 → traigent-0.18.1.dev1}/traigent/core/mandatory_metrics.py +0 -0
  332. {traigent-0.18.0.dev0 → traigent-0.18.1.dev1}/traigent/core/meta_types.py +0 -0
  333. {traigent-0.18.0.dev0 → traigent-0.18.1.dev1}/traigent/core/metadata_helpers.py +0 -0
  334. {traigent-0.18.0.dev0 → traigent-0.18.1.dev1}/traigent/core/metric_registry.py +0 -0
  335. {traigent-0.18.0.dev0 → traigent-0.18.1.dev1}/traigent/core/metrics_aggregator.py +0 -0
  336. {traigent-0.18.0.dev0 → traigent-0.18.1.dev1}/traigent/core/namespace.py +0 -0
  337. {traigent-0.18.0.dev0 → traigent-0.18.1.dev1}/traigent/core/objectives.py +0 -0
  338. {traigent-0.18.0.dev0 → traigent-0.18.1.dev1}/traigent/core/orchestrator_helpers.py +0 -0
  339. {traigent-0.18.0.dev0 → traigent-0.18.1.dev1}/traigent/core/parallel_execution_manager.py +0 -0
  340. {traigent-0.18.0.dev0 → traigent-0.18.1.dev1}/traigent/core/progress_manager.py +0 -0
  341. {traigent-0.18.0.dev0 → traigent-0.18.1.dev1}/traigent/core/samplers/__init__.py +0 -0
  342. {traigent-0.18.0.dev0 → traigent-0.18.1.dev1}/traigent/core/samplers/random_sampler.py +0 -0
  343. {traigent-0.18.0.dev0 → traigent-0.18.1.dev1}/traigent/core/session_context.py +0 -0
  344. {traigent-0.18.0.dev0 → traigent-0.18.1.dev1}/traigent/core/stat_significance.py +0 -0
  345. {traigent-0.18.0.dev0 → traigent-0.18.1.dev1}/traigent/core/stop_conditions.py +0 -0
  346. {traigent-0.18.0.dev0 → traigent-0.18.1.dev1}/traigent/core/trace_env.py +0 -0
  347. {traigent-0.18.0.dev0 → traigent-0.18.1.dev1}/traigent/core/tracing.py +0 -0
  348. {traigent-0.18.0.dev0 → traigent-0.18.1.dev1}/traigent/core/trial_context.py +0 -0
  349. {traigent-0.18.0.dev0 → traigent-0.18.1.dev1}/traigent/core/types.py +0 -0
  350. {traigent-0.18.0.dev0 → traigent-0.18.1.dev1}/traigent/core/types_ext.py +0 -0
  351. {traigent-0.18.0.dev0 → traigent-0.18.1.dev1}/traigent/core/utils.py +0 -0
  352. {traigent-0.18.0.dev0 → traigent-0.18.1.dev1}/traigent/core/workflow_trace_manager.py +0 -0
  353. {traigent-0.18.0.dev0 → traigent-0.18.1.dev1}/traigent/core_metrics/__init__.py +0 -0
  354. {traigent-0.18.0.dev0 → traigent-0.18.1.dev1}/traigent/core_metrics/client.py +0 -0
  355. {traigent-0.18.0.dev0 → traigent-0.18.1.dev1}/traigent/core_metrics/dtos.py +0 -0
  356. {traigent-0.18.0.dev0 → traigent-0.18.1.dev1}/traigent/effectuation/__init__.py +0 -0
  357. {traigent-0.18.0.dev0 → traigent-0.18.1.dev1}/traigent/effectuation/contracts.py +0 -0
  358. {traigent-0.18.0.dev0 → traigent-0.18.1.dev1}/traigent/effectuation/strategies/__init__.py +0 -0
  359. {traigent-0.18.0.dev0 → traigent-0.18.1.dev1}/traigent/effectuation/strategies/framework_param.py +0 -0
  360. {traigent-0.18.0.dev0 → traigent-0.18.1.dev1}/traigent/effectuation/strategies/self_consistency.py +0 -0
  361. {traigent-0.18.0.dev0 → traigent-0.18.1.dev1}/traigent/evaluators/__init__.py +0 -0
  362. {traigent-0.18.0.dev0 → traigent-0.18.1.dev1}/traigent/evaluators/catalog/metric_eval_catalog.v1.json +0 -0
  363. {traigent-0.18.0.dev0 → traigent-0.18.1.dev1}/traigent/evaluators/catalog/schemas/metric_eval_catalog_entry_schema.json +0 -0
  364. {traigent-0.18.0.dev0 → traigent-0.18.1.dev1}/traigent/evaluators/catalog_loader.py +0 -0
  365. {traigent-0.18.0.dev0 → traigent-0.18.1.dev1}/traigent/evaluators/dataset_registry.py +0 -0
  366. {traigent-0.18.0.dev0 → traigent-0.18.1.dev1}/traigent/evaluators/hybrid_api.py +0 -0
  367. {traigent-0.18.0.dev0 → traigent-0.18.1.dev1}/traigent/evaluators/local.py +0 -0
  368. {traigent-0.18.0.dev0 → traigent-0.18.1.dev1}/traigent/evaluators/metrics.py +0 -0
  369. {traigent-0.18.0.dev0 → traigent-0.18.1.dev1}/traigent/evaluators/metrics_tracker.py +0 -0
  370. {traigent-0.18.0.dev0 → traigent-0.18.1.dev1}/traigent/evaluators/recommendations.py +0 -0
  371. {traigent-0.18.0.dev0 → traigent-0.18.1.dev1}/traigent/examples/__init__.py +0 -0
  372. {traigent-0.18.0.dev0 → traigent-0.18.1.dev1}/traigent/examples/providers/__init__.py +0 -0
  373. {traigent-0.18.0.dev0 → traigent-0.18.1.dev1}/traigent/examples/providers/_bootstrap.py +0 -0
  374. {traigent-0.18.0.dev0 → traigent-0.18.1.dev1}/traigent/examples/providers/_demo.py +0 -0
  375. {traigent-0.18.0.dev0 → traigent-0.18.1.dev1}/traigent/examples/providers/anthropic.py +0 -0
  376. {traigent-0.18.0.dev0 → traigent-0.18.1.dev1}/traigent/examples/providers/aws.py +0 -0
  377. {traigent-0.18.0.dev0 → traigent-0.18.1.dev1}/traigent/examples/providers/azure.py +0 -0
  378. {traigent-0.18.0.dev0 → traigent-0.18.1.dev1}/traigent/examples/providers/gcp.py +0 -0
  379. {traigent-0.18.0.dev0 → traigent-0.18.1.dev1}/traigent/examples/providers/gemini.py +0 -0
  380. {traigent-0.18.0.dev0 → traigent-0.18.1.dev1}/traigent/examples/providers/groq.py +0 -0
  381. {traigent-0.18.0.dev0 → traigent-0.18.1.dev1}/traigent/examples/providers/litellm_any.py +0 -0
  382. {traigent-0.18.0.dev0 → traigent-0.18.1.dev1}/traigent/examples/providers/manifest.json +0 -0
  383. {traigent-0.18.0.dev0 → traigent-0.18.1.dev1}/traigent/examples/providers/openai.py +0 -0
  384. {traigent-0.18.0.dev0 → traigent-0.18.1.dev1}/traigent/examples/providers/openrouter.py +0 -0
  385. {traigent-0.18.0.dev0 → traigent-0.18.1.dev1}/traigent/examples/providers/qa_samples.jsonl +0 -0
  386. {traigent-0.18.0.dev0 → traigent-0.18.1.dev1}/traigent/examples/quickstart/__init__.py +0 -0
  387. {traigent-0.18.0.dev0 → traigent-0.18.1.dev1}/traigent/examples/quickstart/qa_samples.jsonl +0 -0
  388. {traigent-0.18.0.dev0 → traigent-0.18.1.dev1}/traigent/examples/tutorial_bootstrap.py +0 -0
  389. {traigent-0.18.0.dev0 → traigent-0.18.1.dev1}/traigent/generation/__init__.py +0 -0
  390. {traigent-0.18.0.dev0 → traigent-0.18.1.dev1}/traigent/generation/backend_provider.py +0 -0
  391. {traigent-0.18.0.dev0 → traigent-0.18.1.dev1}/traigent/generation/example_synth.py +0 -0
  392. {traigent-0.18.0.dev0 → traigent-0.18.1.dev1}/traigent/generation/llm_provider.py +0 -0
  393. {traigent-0.18.0.dev0 → traigent-0.18.1.dev1}/traigent/generation/loop.py +0 -0
  394. {traigent-0.18.0.dev0 → traigent-0.18.1.dev1}/traigent/generation/models.py +0 -0
  395. {traigent-0.18.0.dev0 → traigent-0.18.1.dev1}/traigent/generation/options.py +0 -0
  396. {traigent-0.18.0.dev0 → traigent-0.18.1.dev1}/traigent/generation/prompt_rewriter.py +0 -0
  397. {traigent-0.18.0.dev0 → traigent-0.18.1.dev1}/traigent/generation/skill_train/__init__.py +0 -0
  398. {traigent-0.18.0.dev0 → traigent-0.18.1.dev1}/traigent/generation/skill_train/artifacts.py +0 -0
  399. {traigent-0.18.0.dev0 → traigent-0.18.1.dev1}/traigent/generation/skill_train/buffer.py +0 -0
  400. {traigent-0.18.0.dev0 → traigent-0.18.1.dev1}/traigent/generation/skill_train/document.py +0 -0
  401. {traigent-0.18.0.dev0 → traigent-0.18.1.dev1}/traigent/generation/skill_train/edits.py +0 -0
  402. {traigent-0.18.0.dev0 → traigent-0.18.1.dev1}/traigent/generation/skill_train/prompts.py +0 -0
  403. {traigent-0.18.0.dev0 → traigent-0.18.1.dev1}/traigent/generation/skill_train/reflection.py +0 -0
  404. {traigent-0.18.0.dev0 → traigent-0.18.1.dev1}/traigent/generation/skill_train/schedule.py +0 -0
  405. {traigent-0.18.0.dev0 → traigent-0.18.1.dev1}/traigent/generation/skill_train/slow_update.py +0 -0
  406. {traigent-0.18.0.dev0 → traigent-0.18.1.dev1}/traigent/generation/skill_train/splits.py +0 -0
  407. {traigent-0.18.0.dev0 → traigent-0.18.1.dev1}/traigent/generation/skill_train/trainer.py +0 -0
  408. {traigent-0.18.0.dev0 → traigent-0.18.1.dev1}/traigent/generation/skill_train/trainer_result.py +0 -0
  409. {traigent-0.18.0.dev0 → traigent-0.18.1.dev1}/traigent/generation/validators.py +0 -0
  410. {traigent-0.18.0.dev0 → traigent-0.18.1.dev1}/traigent/guaranteed_modes.py +0 -0
  411. {traigent-0.18.0.dev0 → traigent-0.18.1.dev1}/traigent/hooks/__init__.py +0 -0
  412. {traigent-0.18.0.dev0 → traigent-0.18.1.dev1}/traigent/hooks/config.py +0 -0
  413. {traigent-0.18.0.dev0 → traigent-0.18.1.dev1}/traigent/hooks/installer.py +0 -0
  414. {traigent-0.18.0.dev0 → traigent-0.18.1.dev1}/traigent/hooks/validator.py +0 -0
  415. {traigent-0.18.0.dev0 → traigent-0.18.1.dev1}/traigent/hybrid/__init__.py +0 -0
  416. {traigent-0.18.0.dev0 → traigent-0.18.1.dev1}/traigent/hybrid/discovery.py +0 -0
  417. {traigent-0.18.0.dev0 → traigent-0.18.1.dev1}/traigent/hybrid/lifecycle.py +0 -0
  418. {traigent-0.18.0.dev0 → traigent-0.18.1.dev1}/traigent/hybrid/mcp_transport.py +0 -0
  419. {traigent-0.18.0.dev0 → traigent-0.18.1.dev1}/traigent/hybrid/protocol.py +0 -0
  420. {traigent-0.18.0.dev0 → traigent-0.18.1.dev1}/traigent/hybrid/transport.py +0 -0
  421. {traigent-0.18.0.dev0 → traigent-0.18.1.dev1}/traigent/integrations/__init__.py +0 -0
  422. {traigent-0.18.0.dev0 → traigent-0.18.1.dev1}/traigent/integrations/activation.py +0 -0
  423. {traigent-0.18.0.dev0 → traigent-0.18.1.dev1}/traigent/integrations/base.py +0 -0
  424. {traigent-0.18.0.dev0 → traigent-0.18.1.dev1}/traigent/integrations/base_plugin.py +0 -0
  425. {traigent-0.18.0.dev0 → traigent-0.18.1.dev1}/traigent/integrations/config.py +0 -0
  426. {traigent-0.18.0.dev0 → traigent-0.18.1.dev1}/traigent/integrations/dspy_adapter.py +0 -0
  427. {traigent-0.18.0.dev0 → traigent-0.18.1.dev1}/traigent/integrations/langchain/__init__.py +0 -0
  428. {traigent-0.18.0.dev0 → traigent-0.18.1.dev1}/traigent/integrations/langchain/handler.py +0 -0
  429. {traigent-0.18.0.dev0 → traigent-0.18.1.dev1}/traigent/integrations/langfuse/callback.py +0 -0
  430. {traigent-0.18.0.dev0 → traigent-0.18.1.dev1}/traigent/integrations/langfuse/tracker.py +0 -0
  431. {traigent-0.18.0.dev0 → traigent-0.18.1.dev1}/traigent/integrations/llms/__init__.py +0 -0
  432. {traigent-0.18.0.dev0 → traigent-0.18.1.dev1}/traigent/integrations/llms/anthropic_plugin.py +0 -0
  433. {traigent-0.18.0.dev0 → traigent-0.18.1.dev1}/traigent/integrations/llms/azure_openai_plugin.py +0 -0
  434. {traigent-0.18.0.dev0 → traigent-0.18.1.dev1}/traigent/integrations/llms/base_llm_plugin.py +0 -0
  435. {traigent-0.18.0.dev0 → traigent-0.18.1.dev1}/traigent/integrations/llms/bedrock_plugin.py +0 -0
  436. {traigent-0.18.0.dev0 → traigent-0.18.1.dev1}/traigent/integrations/llms/cohere_plugin.py +0 -0
  437. {traigent-0.18.0.dev0 → traigent-0.18.1.dev1}/traigent/integrations/llms/gemini_plugin.py +0 -0
  438. {traigent-0.18.0.dev0 → traigent-0.18.1.dev1}/traigent/integrations/llms/huggingface_plugin.py +0 -0
  439. {traigent-0.18.0.dev0 → traigent-0.18.1.dev1}/traigent/integrations/llms/langchain/__init__.py +0 -0
  440. {traigent-0.18.0.dev0 → traigent-0.18.1.dev1}/traigent/integrations/llms/langchain/base.py +0 -0
  441. {traigent-0.18.0.dev0 → traigent-0.18.1.dev1}/traigent/integrations/llms/langchain_plugin.py +0 -0
  442. {traigent-0.18.0.dev0 → traigent-0.18.1.dev1}/traigent/integrations/llms/litellm_plugin.py +0 -0
  443. {traigent-0.18.0.dev0 → traigent-0.18.1.dev1}/traigent/integrations/llms/llamaindex_plugin.py +0 -0
  444. {traigent-0.18.0.dev0 → traigent-0.18.1.dev1}/traigent/integrations/llms/mistral_plugin.py +0 -0
  445. {traigent-0.18.0.dev0 → traigent-0.18.1.dev1}/traigent/integrations/llms/openai.py +0 -0
  446. {traigent-0.18.0.dev0 → traigent-0.18.1.dev1}/traigent/integrations/llms/openai_plugin.py +0 -0
  447. {traigent-0.18.0.dev0 → traigent-0.18.1.dev1}/traigent/integrations/mappings.py +0 -0
  448. {traigent-0.18.0.dev0 → traigent-0.18.1.dev1}/traigent/integrations/model_discovery/__init__.py +0 -0
  449. {traigent-0.18.0.dev0 → traigent-0.18.1.dev1}/traigent/integrations/model_discovery/anthropic_discovery.py +0 -0
  450. {traigent-0.18.0.dev0 → traigent-0.18.1.dev1}/traigent/integrations/model_discovery/azure_discovery.py +0 -0
  451. {traigent-0.18.0.dev0 → traigent-0.18.1.dev1}/traigent/integrations/model_discovery/base.py +0 -0
  452. {traigent-0.18.0.dev0 → traigent-0.18.1.dev1}/traigent/integrations/model_discovery/cache.py +0 -0
  453. {traigent-0.18.0.dev0 → traigent-0.18.1.dev1}/traigent/integrations/model_discovery/gemini_discovery.py +0 -0
  454. {traigent-0.18.0.dev0 → traigent-0.18.1.dev1}/traigent/integrations/model_discovery/mistral_discovery.py +0 -0
  455. {traigent-0.18.0.dev0 → traigent-0.18.1.dev1}/traigent/integrations/model_discovery/openai_discovery.py +0 -0
  456. {traigent-0.18.0.dev0 → traigent-0.18.1.dev1}/traigent/integrations/model_discovery/registry.py +0 -0
  457. {traigent-0.18.0.dev0 → traigent-0.18.1.dev1}/traigent/integrations/observability/__init__.py +0 -0
  458. {traigent-0.18.0.dev0 → traigent-0.18.1.dev1}/traigent/integrations/observability/mlflow.py +0 -0
  459. {traigent-0.18.0.dev0 → traigent-0.18.1.dev1}/traigent/integrations/providers.py +0 -0
  460. {traigent-0.18.0.dev0 → traigent-0.18.1.dev1}/traigent/integrations/pydantic_ai/_types.py +0 -0
  461. {traigent-0.18.0.dev0 → traigent-0.18.1.dev1}/traigent/integrations/pydantic_ai/plugin.py +0 -0
  462. {traigent-0.18.0.dev0 → traigent-0.18.1.dev1}/traigent/integrations/utils/__init__.py +0 -0
  463. {traigent-0.18.0.dev0 → traigent-0.18.1.dev1}/traigent/integrations/utils/discovery.py +0 -0
  464. {traigent-0.18.0.dev0 → traigent-0.18.1.dev1}/traigent/integrations/utils/message_coercion.py +0 -0
  465. {traigent-0.18.0.dev0 → traigent-0.18.1.dev1}/traigent/integrations/utils/mock_adapter.py +0 -0
  466. {traigent-0.18.0.dev0 → traigent-0.18.1.dev1}/traigent/integrations/utils/parameter_normalizer.py +0 -0
  467. {traigent-0.18.0.dev0 → traigent-0.18.1.dev1}/traigent/integrations/utils/response_wrapper.py +0 -0
  468. {traigent-0.18.0.dev0 → traigent-0.18.1.dev1}/traigent/integrations/utils/validation.py +0 -0
  469. {traigent-0.18.0.dev0 → traigent-0.18.1.dev1}/traigent/integrations/utils/version_compat.py +0 -0
  470. {traigent-0.18.0.dev0 → traigent-0.18.1.dev1}/traigent/integrations/vector_stores/__init__.py +0 -0
  471. {traigent-0.18.0.dev0 → traigent-0.18.1.dev1}/traigent/integrations/vector_stores/base.py +0 -0
  472. {traigent-0.18.0.dev0 → traigent-0.18.1.dev1}/traigent/integrations/vector_stores/chromadb_plugin.py +0 -0
  473. {traigent-0.18.0.dev0 → traigent-0.18.1.dev1}/traigent/integrations/vector_stores/pinecone_plugin.py +0 -0
  474. {traigent-0.18.0.dev0 → traigent-0.18.1.dev1}/traigent/integrations/vector_stores/weaviate_plugin.py +0 -0
  475. {traigent-0.18.0.dev0 → traigent-0.18.1.dev1}/traigent/integrations/wrappers.py +0 -0
  476. {traigent-0.18.0.dev0 → traigent-0.18.1.dev1}/traigent/invokers/__init__.py +0 -0
  477. {traigent-0.18.0.dev0 → traigent-0.18.1.dev1}/traigent/invokers/batch.py +0 -0
  478. {traigent-0.18.0.dev0 → traigent-0.18.1.dev1}/traigent/invokers/local.py +0 -0
  479. {traigent-0.18.0.dev0 → traigent-0.18.1.dev1}/traigent/knobs/__init__.py +0 -0
  480. {traigent-0.18.0.dev0 → traigent-0.18.1.dev1}/traigent/knobs/adapters.py +0 -0
  481. {traigent-0.18.0.dev0 → traigent-0.18.1.dev1}/traigent/knobs/bindings.py +0 -0
  482. {traigent-0.18.0.dev0 → traigent-0.18.1.dev1}/traigent/knobs/canonical.py +0 -0
  483. {traigent-0.18.0.dev0 → traigent-0.18.1.dev1}/traigent/knobs/certificates.py +0 -0
  484. {traigent-0.18.0.dev0 → traigent-0.18.1.dev1}/traigent/knobs/composites.py +0 -0
  485. {traigent-0.18.0.dev0 → traigent-0.18.1.dev1}/traigent/knobs/kinds.py +0 -0
  486. {traigent-0.18.0.dev0 → traigent-0.18.1.dev1}/traigent/knobs/patterns.py +0 -0
  487. {traigent-0.18.0.dev0 → traigent-0.18.1.dev1}/traigent/knobs/resolution.py +0 -0
  488. {traigent-0.18.0.dev0 → traigent-0.18.1.dev1}/traigent/knobs/resolver.py +0 -0
  489. {traigent-0.18.0.dev0 → traigent-0.18.1.dev1}/traigent/knobs/runtime.py +0 -0
  490. {traigent-0.18.0.dev0 → traigent-0.18.1.dev1}/traigent/knobs/signals.py +0 -0
  491. {traigent-0.18.0.dev0 → traigent-0.18.1.dev1}/traigent/knobs/telemetry.py +0 -0
  492. {traigent-0.18.0.dev0 → traigent-0.18.1.dev1}/traigent/mcp/__init__.py +0 -0
  493. {traigent-0.18.0.dev0 → traigent-0.18.1.dev1}/traigent/mcp/server.py +0 -0
  494. {traigent-0.18.0.dev0 → traigent-0.18.1.dev1}/traigent/mcp/tools.py +0 -0
  495. {traigent-0.18.0.dev0 → traigent-0.18.1.dev1}/traigent/metrics/__init__.py +0 -0
  496. {traigent-0.18.0.dev0 → traigent-0.18.1.dev1}/traigent/metrics/agent_metrics.py +0 -0
  497. {traigent-0.18.0.dev0 → traigent-0.18.1.dev1}/traigent/metrics/content_features.py +0 -0
  498. {traigent-0.18.0.dev0 → traigent-0.18.1.dev1}/traigent/metrics/deepeval_metrics.py +0 -0
  499. {traigent-0.18.0.dev0 → traigent-0.18.1.dev1}/traigent/metrics/registry.py +0 -0
  500. {traigent-0.18.0.dev0 → traigent-0.18.1.dev1}/traigent/observability/__init__.py +0 -0
  501. {traigent-0.18.0.dev0 → traigent-0.18.1.dev1}/traigent/observability/agent_spans.py +0 -0
  502. {traigent-0.18.0.dev0 → traigent-0.18.1.dev1}/traigent/observability/config.py +0 -0
  503. {traigent-0.18.0.dev0 → traigent-0.18.1.dev1}/traigent/observability/decorators.py +0 -0
  504. {traigent-0.18.0.dev0 → traigent-0.18.1.dev1}/traigent/observability/dtos.py +0 -0
  505. {traigent-0.18.0.dev0 → traigent-0.18.1.dev1}/traigent/optimizers/__init__.py +0 -0
  506. {traigent-0.18.0.dev0 → traigent-0.18.1.dev1}/traigent/optimizers/base.py +0 -0
  507. {traigent-0.18.0.dev0 → traigent-0.18.1.dev1}/traigent/optimizers/batch_optimizers.py +0 -0
  508. {traigent-0.18.0.dev0 → traigent-0.18.1.dev1}/traigent/optimizers/cloud_optimizer.py +0 -0
  509. {traigent-0.18.0.dev0 → traigent-0.18.1.dev1}/traigent/optimizers/grid.py +0 -0
  510. {traigent-0.18.0.dev0 → traigent-0.18.1.dev1}/traigent/optimizers/random.py +0 -0
  511. {traigent-0.18.0.dev0 → traigent-0.18.1.dev1}/traigent/optimizers/remote.py +0 -0
  512. {traigent-0.18.0.dev0 → traigent-0.18.1.dev1}/traigent/optimizers/remote_services.py +0 -0
  513. {traigent-0.18.0.dev0 → traigent-0.18.1.dev1}/traigent/optimizers/results.py +0 -0
  514. {traigent-0.18.0.dev0 → traigent-0.18.1.dev1}/traigent/playbook/__init__.py +0 -0
  515. {traigent-0.18.0.dev0 → traigent-0.18.1.dev1}/traigent/playbook/loader.py +0 -0
  516. {traigent-0.18.0.dev0 → traigent-0.18.1.dev1}/traigent/playbook/model.py +0 -0
  517. {traigent-0.18.0.dev0 → traigent-0.18.1.dev1}/traigent/playbook/scaffold.py +0 -0
  518. {traigent-0.18.0.dev0 → traigent-0.18.1.dev1}/traigent/playbook/schemas/agent_playbook_schema.json +0 -0
  519. {traigent-0.18.0.dev0 → traigent-0.18.1.dev1}/traigent/playbook/staleness.py +0 -0
  520. {traigent-0.18.0.dev0 → traigent-0.18.1.dev1}/traigent/playbook/validator.py +0 -0
  521. {traigent-0.18.0.dev0 → traigent-0.18.1.dev1}/traigent/plugins/__init__.py +0 -0
  522. {traigent-0.18.0.dev0 → traigent-0.18.1.dev1}/traigent/plugins/registry.py +0 -0
  523. {traigent-0.18.0.dev0 → traigent-0.18.1.dev1}/traigent/projects/__init__.py +0 -0
  524. {traigent-0.18.0.dev0 → traigent-0.18.1.dev1}/traigent/prompts/__init__.py +0 -0
  525. {traigent-0.18.0.dev0 → traigent-0.18.1.dev1}/traigent/prompts/dtos.py +0 -0
  526. {traigent-0.18.0.dev0 → traigent-0.18.1.dev1}/traigent/providers/__init__.py +0 -0
  527. {traigent-0.18.0.dev0 → traigent-0.18.1.dev1}/traigent/providers/validation.py +0 -0
  528. {traigent-0.18.0.dev0 → traigent-0.18.1.dev1}/traigent/py.typed +0 -0
  529. {traigent-0.18.0.dev0 → traigent-0.18.1.dev1}/traigent/reporting/__init__.py +0 -0
  530. {traigent-0.18.0.dev0 → traigent-0.18.1.dev1}/traigent/reporting/example_map.py +0 -0
  531. {traigent-0.18.0.dev0 → traigent-0.18.1.dev1}/traigent/security/__init__.py +0 -0
  532. {traigent-0.18.0.dev0 → traigent-0.18.1.dev1}/traigent/security/auth/__init__.py +0 -0
  533. {traigent-0.18.0.dev0 → traigent-0.18.1.dev1}/traigent/security/auth/helpers.py +0 -0
  534. {traigent-0.18.0.dev0 → traigent-0.18.1.dev1}/traigent/security/auth/mfa.py +0 -0
  535. {traigent-0.18.0.dev0 → traigent-0.18.1.dev1}/traigent/security/auth/oidc.py +0 -0
  536. {traigent-0.18.0.dev0 → traigent-0.18.1.dev1}/traigent/security/auth/sms.py +0 -0
  537. {traigent-0.18.0.dev0 → traigent-0.18.1.dev1}/traigent/security/auth/totp.py +0 -0
  538. {traigent-0.18.0.dev0 → traigent-0.18.1.dev1}/traigent/security/config.py +0 -0
  539. {traigent-0.18.0.dev0 → traigent-0.18.1.dev1}/traigent/security/credentials.py +0 -0
  540. {traigent-0.18.0.dev0 → traigent-0.18.1.dev1}/traigent/security/crypto_utils.py +0 -0
  541. {traigent-0.18.0.dev0 → traigent-0.18.1.dev1}/traigent/security/deployment.py +0 -0
  542. {traigent-0.18.0.dev0 → traigent-0.18.1.dev1}/traigent/security/encryption.py +0 -0
  543. {traigent-0.18.0.dev0 → traigent-0.18.1.dev1}/traigent/security/enterprise.py +0 -0
  544. {traigent-0.18.0.dev0 → traigent-0.18.1.dev1}/traigent/security/headers.py +0 -0
  545. {traigent-0.18.0.dev0 → traigent-0.18.1.dev1}/traigent/security/input_validation.py +0 -0
  546. {traigent-0.18.0.dev0 → traigent-0.18.1.dev1}/traigent/security/jwt_validator.py +0 -0
  547. {traigent-0.18.0.dev0 → traigent-0.18.1.dev1}/traigent/security/rate_limiter.py +0 -0
  548. {traigent-0.18.0.dev0 → traigent-0.18.1.dev1}/traigent/security/redaction.py +0 -0
  549. {traigent-0.18.0.dev0 → traigent-0.18.1.dev1}/traigent/security/session_manager.py +0 -0
  550. {traigent-0.18.0.dev0 → traigent-0.18.1.dev1}/traigent/security/tenant.py +0 -0
  551. {traigent-0.18.0.dev0 → traigent-0.18.1.dev1}/traigent/skills/traigent-analyze-results/SKILL.md +0 -0
  552. {traigent-0.18.0.dev0 → traigent-0.18.1.dev1}/traigent/skills/traigent-analyze-results/references/convergence-patterns.md +0 -0
  553. {traigent-0.18.0.dev0 → traigent-0.18.1.dev1}/traigent/skills/traigent-analyze-results/references/optimization-result-api.md +0 -0
  554. {traigent-0.18.0.dev0 → traigent-0.18.1.dev1}/traigent/skills/traigent-configuration-space/SKILL.md +0 -0
  555. {traigent-0.18.0.dev0 → traigent-0.18.1.dev1}/traigent/skills/traigent-configuration-space/references/constraints.md +0 -0
  556. {traigent-0.18.0.dev0 → traigent-0.18.1.dev1}/traigent/skills/traigent-configuration-space/references/parameter-types.md +0 -0
  557. {traigent-0.18.0.dev0 → traigent-0.18.1.dev1}/traigent/skills/traigent-debugging/references/logging-config.md +0 -0
  558. {traigent-0.18.0.dev0 → traigent-0.18.1.dev1}/traigent/skills/traigent-debugging/references/mock-mode.md +0 -0
  559. {traigent-0.18.0.dev0 → traigent-0.18.1.dev1}/traigent/skills/traigent-decorator-setup/SKILL.md +0 -0
  560. {traigent-0.18.0.dev0 → traigent-0.18.1.dev1}/traigent/skills/traigent-decorator-setup/references/evaluation-options.md +0 -0
  561. {traigent-0.18.0.dev0 → traigent-0.18.1.dev1}/traigent/skills/traigent-decorator-setup/references/execution-modes.md +0 -0
  562. {traigent-0.18.0.dev0 → traigent-0.18.1.dev1}/traigent/skills/traigent-decorator-setup/references/injection-modes.md +0 -0
  563. {traigent-0.18.0.dev0 → traigent-0.18.1.dev1}/traigent/skills/traigent-integrations/SKILL.md +0 -0
  564. {traigent-0.18.0.dev0 → traigent-0.18.1.dev1}/traigent/skills/traigent-integrations/references/dspy.md +0 -0
  565. {traigent-0.18.0.dev0 → traigent-0.18.1.dev1}/traigent/skills/traigent-integrations/references/langchain.md +0 -0
  566. {traigent-0.18.0.dev0 → traigent-0.18.1.dev1}/traigent/skills/traigent-integrations/references/litellm.md +0 -0
  567. {traigent-0.18.0.dev0 → traigent-0.18.1.dev1}/traigent/skills/traigent-quickstart/SKILL.md +0 -0
  568. {traigent-0.18.0.dev0 → traigent-0.18.1.dev1}/traigent/skills/traigent-quickstart/references/installation-extras.md +0 -0
  569. {traigent-0.18.0.dev0 → traigent-0.18.1.dev1}/traigent/skills/traigent-run-optimization/references/algorithms.md +0 -0
  570. {traigent-0.18.0.dev0 → traigent-0.18.1.dev1}/traigent/skills/traigent-run-optimization/references/parallel-config.md +0 -0
  571. {traigent-0.18.0.dev0 → traigent-0.18.1.dev1}/traigent/storage/__init__.py +0 -0
  572. {traigent-0.18.0.dev0 → traigent-0.18.1.dev1}/traigent/storage/local_storage.py +0 -0
  573. {traigent-0.18.0.dev0 → traigent-0.18.1.dev1}/traigent/testing/__init__.py +0 -0
  574. {traigent-0.18.0.dev0 → traigent-0.18.1.dev1}/traigent/traigent_client.py +0 -0
  575. {traigent-0.18.0.dev0 → traigent-0.18.1.dev1}/traigent/traigent_integration.py +0 -0
  576. {traigent-0.18.0.dev0 → traigent-0.18.1.dev1}/traigent/tuned_variables/__init__.py +0 -0
  577. {traigent-0.18.0.dev0 → traigent-0.18.1.dev1}/traigent/tuned_variables/dataflow_strategy.py +0 -0
  578. {traigent-0.18.0.dev0 → traigent-0.18.1.dev1}/traigent/tuned_variables/detection_strategies.py +0 -0
  579. {traigent-0.18.0.dev0 → traigent-0.18.1.dev1}/traigent/tuned_variables/detection_types.py +0 -0
  580. {traigent-0.18.0.dev0 → traigent-0.18.1.dev1}/traigent/tuned_variables/detector.py +0 -0
  581. {traigent-0.18.0.dev0 → traigent-0.18.1.dev1}/traigent/tuned_variables/discovery.py +0 -0
  582. {traigent-0.18.0.dev0 → traigent-0.18.1.dev1}/traigent/tuned_variables/observation.py +0 -0
  583. {traigent-0.18.0.dev0 → traigent-0.18.1.dev1}/traigent/tuned_variables/py.typed +0 -0
  584. {traigent-0.18.0.dev0 → traigent-0.18.1.dev1}/traigent/tvl/__main__.py +0 -0
  585. {traigent-0.18.0.dev0 → traigent-0.18.1.dev1}/traigent/tvl/objectives.py +0 -0
  586. {traigent-0.18.0.dev0 → traigent-0.18.1.dev1}/traigent/tvl/options.py +0 -0
  587. {traigent-0.18.0.dev0 → traigent-0.18.1.dev1}/traigent/tvl/registry.py +0 -0
  588. {traigent-0.18.0.dev0 → traigent-0.18.1.dev1}/traigent/tvl/spec_validator.py +0 -0
  589. {traigent-0.18.0.dev0 → traigent-0.18.1.dev1}/traigent/utils/__init__.py +0 -0
  590. {traigent-0.18.0.dev0 → traigent-0.18.1.dev1}/traigent/utils/batch_optimizer_utils.py +0 -0
  591. {traigent-0.18.0.dev0 → traigent-0.18.1.dev1}/traigent/utils/batch_processing.py +0 -0
  592. {traigent-0.18.0.dev0 → traigent-0.18.1.dev1}/traigent/utils/callbacks.py +0 -0
  593. {traigent-0.18.0.dev0 → traigent-0.18.1.dev1}/traigent/utils/console.py +0 -0
  594. {traigent-0.18.0.dev0 → traigent-0.18.1.dev1}/traigent/utils/constraints.py +0 -0
  595. {traigent-0.18.0.dev0 → traigent-0.18.1.dev1}/traigent/utils/cost_calculator.py +0 -0
  596. {traigent-0.18.0.dev0 → traigent-0.18.1.dev1}/traigent/utils/diagnostics.py +0 -0
  597. {traigent-0.18.0.dev0 → traigent-0.18.1.dev1}/traigent/utils/discrete_domains.py +0 -0
  598. {traigent-0.18.0.dev0 → traigent-0.18.1.dev1}/traigent/utils/env_config.py +0 -0
  599. {traigent-0.18.0.dev0 → traigent-0.18.1.dev1}/traigent/utils/error_handler.py +0 -0
  600. {traigent-0.18.0.dev0 → traigent-0.18.1.dev1}/traigent/utils/example_id.py +0 -0
  601. {traigent-0.18.0.dev0 → traigent-0.18.1.dev1}/traigent/utils/file_versioning.py +0 -0
  602. {traigent-0.18.0.dev0 → traigent-0.18.1.dev1}/traigent/utils/function_identity.py +0 -0
  603. {traigent-0.18.0.dev0 → traigent-0.18.1.dev1}/traigent/utils/hashing.py +0 -0
  604. {traigent-0.18.0.dev0 → traigent-0.18.1.dev1}/traigent/utils/importance.py +0 -0
  605. {traigent-0.18.0.dev0 → traigent-0.18.1.dev1}/traigent/utils/incentives.py +0 -0
  606. {traigent-0.18.0.dev0 → traigent-0.18.1.dev1}/traigent/utils/insights.py +0 -0
  607. {traigent-0.18.0.dev0 → traigent-0.18.1.dev1}/traigent/utils/langchain_interceptor.py +0 -0
  608. {traigent-0.18.0.dev0 → traigent-0.18.1.dev1}/traigent/utils/litellm_interceptor.py +0 -0
  609. {traigent-0.18.0.dev0 → traigent-0.18.1.dev1}/traigent/utils/llm_response_parsing.py +0 -0
  610. {traigent-0.18.0.dev0 → traigent-0.18.1.dev1}/traigent/utils/local_analytics.py +0 -0
  611. {traigent-0.18.0.dev0 → traigent-0.18.1.dev1}/traigent/utils/logging.py +0 -0
  612. {traigent-0.18.0.dev0 → traigent-0.18.1.dev1}/traigent/utils/multi_objective.py +0 -0
  613. {traigent-0.18.0.dev0 → traigent-0.18.1.dev1}/traigent/utils/numpy_compat.py +0 -0
  614. {traigent-0.18.0.dev0 → traigent-0.18.1.dev1}/traigent/utils/objectives.py +0 -0
  615. {traigent-0.18.0.dev0 → traigent-0.18.1.dev1}/traigent/utils/optimization_analyzer.py +0 -0
  616. {traigent-0.18.0.dev0 → traigent-0.18.1.dev1}/traigent/utils/optimization_logger.py +0 -0
  617. {traigent-0.18.0.dev0 → traigent-0.18.1.dev1}/traigent/utils/persistence.py +0 -0
  618. {traigent-0.18.0.dev0 → traigent-0.18.1.dev1}/traigent/utils/retry.py +0 -0
  619. {traigent-0.18.0.dev0 → traigent-0.18.1.dev1}/traigent/utils/validation.py +0 -0
  620. {traigent-0.18.0.dev0 → traigent-0.18.1.dev1}/traigent/visualization/__init__.py +0 -0
  621. {traigent-0.18.0.dev0 → traigent-0.18.1.dev1}/traigent/wrapper/__init__.py +0 -0
  622. {traigent-0.18.0.dev0 → traigent-0.18.1.dev1}/traigent/wrapper/errors.py +0 -0
  623. {traigent-0.18.0.dev0 → traigent-0.18.1.dev1}/traigent/wrapper/server.py +0 -0
  624. {traigent-0.18.0.dev0 → traigent-0.18.1.dev1}/traigent/wrapper/service.py +0 -0
  625. {traigent-0.18.0.dev0 → traigent-0.18.1.dev1}/traigent.egg-info/dependency_links.txt +0 -0
  626. {traigent-0.18.0.dev0 → traigent-0.18.1.dev1}/traigent.egg-info/entry_points.txt +0 -0
  627. {traigent-0.18.0.dev0 → traigent-0.18.1.dev1}/traigent.egg-info/top_level.txt +0 -0
  628. {traigent-0.18.0.dev0 → traigent-0.18.1.dev1}/traigent_validation/__init__.py +0 -0
  629. {traigent-0.18.0.dev0 → traigent-0.18.1.dev1}/traigent_validation/base.py +0 -0
  630. {traigent-0.18.0.dev0 → traigent-0.18.1.dev1}/traigent_validation/plugins.py +0 -0
  631. {traigent-0.18.0.dev0 → traigent-0.18.1.dev1}/traigent_validation/py.typed +0 -0
  632. {traigent-0.18.0.dev0 → traigent-0.18.1.dev1}/traigent_validation/validators.py +0 -0
@@ -6,6 +6,8 @@ Format based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/).
6
6
 
7
7
  ## [Unreleased]
8
8
 
9
+ ## [0.18.0] - 2026-06-27
10
+
9
11
  ### Added
10
12
  - Added a no-content-egress cloud-brain canary test that captures serialized
11
13
  session, next-trial, metrics, and finalize payloads and asserts dataset
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: traigent
3
- Version: 0.18.0.dev0
3
+ Version: 0.18.1.dev1
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
@@ -36,7 +36,7 @@ Requires-Dist: jsonschema>=4.0.0
36
36
  Requires-Dist: cryptography>=46.0.7
37
37
  Requires-Dist: PyJWT[crypto]<3.0.0,>=2.13.0
38
38
  Requires-Dist: backoff>=2.2.0
39
- Requires-Dist: litellm==1.87.1
39
+ Requires-Dist: litellm<2,>=1.87.1
40
40
  Requires-Dist: rank-bm25
41
41
  Requires-Dist: psutil>=5.8.0
42
42
  Requires-Dist: pydantic>=2.0.0
@@ -287,7 +287,7 @@ Works with any LLM provider — [OpenAI](https://platform.openai.com/docs), [Ant
287
287
  | **Get started** | [Installation](docs/getting-started/installation.md) · [5-minute tutorial](docs/getting-started/GETTING_STARTED.md) |
288
288
  | **User guides** | [Injection Modes](docs/user-guide/injection_modes.md) · [Configuration Spaces](docs/user-guide/configuration-spaces.md) · [Evaluation](docs/user-guide/evaluation_guide.md) |
289
289
  | **Tunable Variable Language** | [TVL Guide](docs/user-guide/tuned_variables.md) |
290
- | **Advanced** | [Agent Optimization](docs/user-guide/agent_optimization.md) · [Optuna Integration](docs/user-guide/optuna_integration.md) |
290
+ | **Advanced** | [Agent Optimization](docs/user-guide/agent_optimization.md) |
291
291
  | **API reference** | [Decorator Reference](docs/api-reference/decorator-reference.md) · [Constraint DSL](docs/features/constraint-dsl.md) |
292
292
 
293
293
  </details>
@@ -376,7 +376,7 @@ The default run uses Traigent's smart optimizer when portal credentials are avai
376
376
  ```python
377
377
  @traigent.optimize(
378
378
  configuration_space={
379
- "model": ["gpt-4o-mini", "claude-3-haiku-20240307", "gemini/gemini-pro"],
379
+ "model": ["gpt-4o-mini", "claude-haiku-4-5-20251001", "gemini/gemini-pro"],
380
380
  "temperature": [0.1, 0.5, 0.9],
381
381
  },
382
382
  objectives=["accuracy", "cost"],
@@ -460,7 +460,7 @@ for details.
460
460
 
461
461
  ### Evaluation
462
462
 
463
- Provide a JSONL dataset — Traigent scores outputs using semantic similarity by default:
463
+ Provide a JSONL dataset — Traigent scores outputs by exact / case-insensitive match by default. For semantic scoring (paraphrases, summarization, translation), supply a `scoring_function` (embeddings or LLM-judge) or a `custom_evaluator`:
464
464
 
465
465
  ```jsonl
466
466
  {"input": {"question": "What is AI?"}, "output": "Artificial Intelligence"}
@@ -140,7 +140,7 @@ Works with any LLM provider — [OpenAI](https://platform.openai.com/docs), [Ant
140
140
  | **Get started** | [Installation](docs/getting-started/installation.md) · [5-minute tutorial](docs/getting-started/GETTING_STARTED.md) |
141
141
  | **User guides** | [Injection Modes](docs/user-guide/injection_modes.md) · [Configuration Spaces](docs/user-guide/configuration-spaces.md) · [Evaluation](docs/user-guide/evaluation_guide.md) |
142
142
  | **Tunable Variable Language** | [TVL Guide](docs/user-guide/tuned_variables.md) |
143
- | **Advanced** | [Agent Optimization](docs/user-guide/agent_optimization.md) · [Optuna Integration](docs/user-guide/optuna_integration.md) |
143
+ | **Advanced** | [Agent Optimization](docs/user-guide/agent_optimization.md) |
144
144
  | **API reference** | [Decorator Reference](docs/api-reference/decorator-reference.md) · [Constraint DSL](docs/features/constraint-dsl.md) |
145
145
 
146
146
  </details>
@@ -229,7 +229,7 @@ The default run uses Traigent's smart optimizer when portal credentials are avai
229
229
  ```python
230
230
  @traigent.optimize(
231
231
  configuration_space={
232
- "model": ["gpt-4o-mini", "claude-3-haiku-20240307", "gemini/gemini-pro"],
232
+ "model": ["gpt-4o-mini", "claude-haiku-4-5-20251001", "gemini/gemini-pro"],
233
233
  "temperature": [0.1, 0.5, 0.9],
234
234
  },
235
235
  objectives=["accuracy", "cost"],
@@ -313,7 +313,7 @@ for details.
313
313
 
314
314
  ### Evaluation
315
315
 
316
- Provide a JSONL dataset — Traigent scores outputs using semantic similarity by default:
316
+ Provide a JSONL dataset — Traigent scores outputs by exact / case-insensitive match by default. For semantic scoring (paraphrases, summarization, translation), supply a `scoring_function` (embeddings or LLM-judge) or a `custom_evaluator`:
317
317
 
318
318
  ```jsonl
319
319
  {"input": {"question": "What is AI?"}, "output": "Artificial Intelligence"}
@@ -255,7 +255,7 @@ Unknown keys are forwarded to the optimizer and may raise errors when unsupporte
255
255
  **Example:**
256
256
  ```python
257
257
  # Run optimization with the default smart optimizer
258
- result = await my_agent.optimize(max_trials=50)
258
+ result = await my_agent.optimize()
259
259
 
260
260
  # Save results
261
261
  await my_agent.save_optimization_results("results.json")
@@ -570,7 +570,7 @@ Legacy `execution_mode=` inputs are deprecated compatibility shims. Use
570
570
  Run controls such as `max_trials` and `timeout` are passed to `.optimize()`:
571
571
 
572
572
  ```python
573
- result = await my_agent.optimize(max_trials=50, timeout=3600)
573
+ result = await my_agent.optimize(max_trials=10, timeout=3600)
574
574
  ```
575
575
 
576
576
  **Cost Controls**:
@@ -47,6 +47,7 @@ import asyncio
47
47
  from langchain_openai import ChatOpenAI
48
48
  import traigent
49
49
 
50
+
50
51
  @traigent.optimize(
51
52
  configuration_space={
52
53
  "model": ["gpt-4o-mini", "gpt-4o"],
@@ -60,6 +61,7 @@ def answer(question: str) -> str:
60
61
  llm = ChatOpenAI(model=cfg["model"], temperature=cfg["temperature"])
61
62
  return llm.invoke(question).content
62
63
 
64
+
63
65
  # Run optimization
64
66
  result = asyncio.run(answer.optimize(max_trials=6))
65
67
  print(f"Best config: {result.best_config}")
@@ -78,6 +80,10 @@ print(f"Best score: {result.best_score:.2%}")
78
80
  ## 🧪 Datasets
79
81
 
80
82
  - Format: JSONL with `input` and optional `output`/`expected_output`
83
+ - Beginner examples use the flat `eval_dataset=` keyword. The bundled
84
+ `evaluation=EvaluationOptions(...)` form is also supported when you want to
85
+ group evaluation settings, but `eval_dataset=` is the recommended minimal-call
86
+ shape in this guide.
81
87
  - Minimal example:
82
88
 
83
89
  ```jsonl
@@ -88,15 +94,12 @@ print(f"Best score: {result.best_score:.2%}")
88
94
  ## 🎛️ Multiple Objectives
89
95
 
90
96
  ```python
91
- from traigent.api.decorators import EvaluationOptions
92
-
93
97
  @traigent.optimize(
94
98
  objectives=["accuracy", "cost", "latency"],
95
- evaluation=EvaluationOptions(eval_dataset="data.jsonl"),
99
+ eval_dataset="data.jsonl",
96
100
  configuration_space={"temperature": (0.0, 1.0), "model": ["gpt-4o-mini", "gpt-4o"]},
97
101
  )
98
- def classify(text: str) -> str:
99
- ...
102
+ def classify(text: str) -> str: ...
100
103
  ```
101
104
 
102
105
  ## 🧪 Examples
@@ -129,6 +132,7 @@ pip install litellm
129
132
  ```python
130
133
  from litellm import completion
131
134
 
135
+
132
136
  @traigent.optimize(
133
137
  configuration_space={
134
138
  "model": ["gpt-4o-mini", "claude-3-haiku-20240307", "gemini/gemini-pro"],
@@ -138,7 +142,9 @@ from litellm import completion
138
142
  )
139
143
  def my_agent(query: str) -> str:
140
144
  config = traigent.get_config()
141
- response = completion(model=config.get("model"), messages=[{"role": "user", "content": query}])
145
+ response = completion(
146
+ model=config.get("model"), messages=[{"role": "user", "content": query}]
147
+ )
142
148
  return str(response.choices[0].message.content)
143
149
  ```
144
150
 
@@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"
4
4
 
5
5
  [project]
6
6
  name = "traigent"
7
- version = "0.18.0.dev0"
7
+ version = "0.18.1.dev1"
8
8
  authors = [
9
9
  {name = "Traigent Team", email = "opensource@traigent.ai"},
10
10
  ]
@@ -43,7 +43,7 @@ dependencies = [
43
43
  "cryptography>=46.0.7", # CVE-2026-26007 + 3 more fixed in 46.0.7 (see #709)
44
44
  "PyJWT[crypto]>=2.13.0,<3.0.0", # >=2.13.0: Dependabot alerts — DoS, SSRF via JWKClient, HS256 forgery, alg bypass, kid DoS
45
45
  "backoff>=2.2.0",
46
- "litellm==1.87.1", # Stable pin: 1.83.x python-dotenv==1.0.1 and 1.83.14 openai==2.24.0 sub-pins are gone from stable 1.84+ (1.87.1 ships openai>=2.20,<3 and python-dotenv>=1.0,<2, compatible with langchain-openai>=1.1.14). Keep pinned + verified on bumps; no need for RC/dev builds anymore.
46
+ "litellm>=1.87.1,<2", # Floor: 1.84+ escaped the 1.83.x python-dotenv==1.0.1 and openai==2.24.0 exact sub-pins; 1.87.1 is the first stable release verified against this SDK. Upper bound <2 guards against a future breaking major. The demo (TraigentDemo) requires 1.88.0; this range admits it. Only the public API surface (completion, acompletion, cost_per_token, token_counter, model_cost, ModelResponse) is used — stable across the 1.x line.
47
47
  "rank-bm25",
48
48
  "psutil>=5.8.0",
49
49
  # Required by API decorators and config validation
@@ -10,6 +10,6 @@ typing-extensions>=4.0.0; python_version<"3.11"
10
10
  claude-code-sdk>=0.0.14
11
11
  mcp>=1.27.0
12
12
  backoff>=2.2.0
13
- litellm==1.87.1
13
+ litellm>=1.87.1,<2
14
14
  rank-bm25
15
15
  psutil>=5.8.0
@@ -64,9 +64,16 @@ def _is_quickstart_invocation() -> bool:
64
64
  if not sys.argv:
65
65
  return False
66
66
  argv0 = sys.argv[0] or ""
67
- # ``python -m traigent.examples.quickstart`` argv[0] is the path
68
- # to the quickstart's __main__.py
69
- if argv0.endswith(("quickstart/__main__.py", "quickstart\\__main__.py")):
67
+ # ``python -m traigent.examples.quickstart`` and quickstart companion
68
+ # modules — argv[0] is the path to the module's .py file.
69
+ if argv0.endswith(
70
+ (
71
+ "quickstart/__main__.py",
72
+ "quickstart\\__main__.py",
73
+ "quickstart/publish_and_verify.py",
74
+ "quickstart\\publish_and_verify.py",
75
+ )
76
+ ):
70
77
  return True
71
78
  # ``traigent quickstart`` — argv[0] is the venv's bin/traigent script
72
79
  # and argv[1] is the subcommand name. Gate on argv[0] basename being
@@ -310,6 +317,14 @@ _LAZY_EXPORTS: dict[str, tuple[str, str]] = {
310
317
  "TenantSSOConfigDTO": ("traigent.admin", "TenantSSOConfigDTO"),
311
318
  # Evaluation DTOs
312
319
  "AnnotationQueueDTO": ("traigent.evaluation", "AnnotationQueueDTO"),
320
+ "AnnotationQueueItemCompleteResultDTO": (
321
+ "traigent.evaluation",
322
+ "AnnotationQueueItemCompleteResultDTO",
323
+ ),
324
+ "AnnotationQueueItemCreateResultDTO": (
325
+ "traigent.evaluation",
326
+ "AnnotationQueueItemCreateResultDTO",
327
+ ),
313
328
  "AnnotationQueueItemDTO": ("traigent.evaluation", "AnnotationQueueItemDTO"),
314
329
  "AnnotationQueueItemListResponse": (
315
330
  "traigent.evaluation",
@@ -339,6 +354,7 @@ _LAZY_EXPORTS: dict[str, tuple[str, str]] = {
339
354
  "ScoreRecordDTO": ("traigent.evaluation", "ScoreRecordDTO"),
340
355
  "ScoreRecordListResponse": ("traigent.evaluation", "ScoreRecordListResponse"),
341
356
  "ScoreSource": ("traigent.evaluation", "ScoreSource"),
357
+ "TypedMeasureDTO": ("traigent.evaluation", "TypedMeasureDTO"),
342
358
  # Observability DTOs and helpers
343
359
  "CorrelationIds": ("traigent.observability", "CorrelationIds"),
344
360
  "ObserveContext": ("traigent.observability", "ObserveContext"),
@@ -560,6 +576,8 @@ __all__ = [
560
576
  "TenantMembershipStatus",
561
577
  "TenantSSOConfigDTO",
562
578
  "AnnotationQueueDTO",
579
+ "AnnotationQueueItemCompleteResultDTO",
580
+ "AnnotationQueueItemCreateResultDTO",
563
581
  "AnnotationQueueItemDTO",
564
582
  "AnnotationQueueItemListResponse",
565
583
  "AnnotationQueueItemStatus",
@@ -578,6 +596,7 @@ __all__ = [
578
596
  "ScoreRecordDTO",
579
597
  "ScoreRecordListResponse",
580
598
  "ScoreSource",
599
+ "TypedMeasureDTO",
581
600
  "CorrelationIds",
582
601
  "ObserveContext",
583
602
  "ObservationDTO",
@@ -68,11 +68,6 @@ def get_version() -> str:
68
68
  "installed package metadata"
69
69
  ) from None
70
70
 
71
- raise RuntimeError(
72
- "Unable to resolve Traigent SDK version from pyproject.toml or "
73
- "installed package metadata"
74
- )
75
-
76
71
 
77
72
  def get_version_info() -> dict[str, str]:
78
73
  """Get detailed version information.
@@ -246,7 +246,6 @@ class LocalExecutionAdapter(ExecutionAdapter):
246
246
 
247
247
  else:
248
248
  # Unknown evaluation type
249
- result["correct"] = False
250
249
  result["success"] = False
251
250
  result["unknown_eval_type"] = eval_type
252
251
  result["error"] = (
@@ -256,7 +255,8 @@ class LocalExecutionAdapter(ExecutionAdapter):
256
255
  )
257
256
  logger.error(
258
257
  "Unsupported evaluation_type %r for LocalExecutionAdapter; marking "
259
- "example as failed. trial_id=%s example_index=%s",
258
+ "example as failed and excluding it from accuracy. "
259
+ "trial_id=%s example_index=%s",
260
260
  eval_type,
261
261
  trial_id or "<unknown>",
262
262
  example_index if example_index is not None else "<unknown>",
@@ -4,6 +4,7 @@ from __future__ import annotations
4
4
 
5
5
  from dataclasses import dataclass, field
6
6
 
7
+ from traigent.cloud.url_security import validate_cloud_base_url
7
8
  from traigent.config.backend_config import BackendConfig
8
9
  from traigent.config.tenant import TENANT_ENV_VAR, TENANT_HEADER_NAME, read_optional_env
9
10
 
@@ -22,7 +23,10 @@ class EnterpriseAdminConfig:
22
23
  extra_headers: dict[str, str] = field(default_factory=dict)
23
24
 
24
25
  def __post_init__(self) -> None:
25
- self.backend_origin = self.backend_origin.rstrip("/")
26
+ backend_origin = self.backend_origin.rstrip("/")
27
+ self.backend_origin = validate_cloud_base_url(
28
+ backend_origin, purpose="enterprise admin request"
29
+ )
26
30
  self.tenant_id = (
27
31
  self.tenant_id.strip() or None if self.tenant_id is not None else None
28
32
  )
@@ -443,8 +443,8 @@ class SpecificationGenerator:
443
443
  )
444
444
 
445
445
  # Update model parameters with best configuration
446
- if "best_config" in optimization_results:
447
- best_config = optimization_results["best_config"]
446
+ best_config = optimization_results.get("best_config")
447
+ if isinstance(best_config, dict):
448
448
  updated_params = (agent_spec.model_parameters or {}).copy()
449
449
 
450
450
  # Update with optimized parameters
@@ -481,9 +481,9 @@ class CostOptimizationAI:
481
481
  savings = action.estimated_savings_absolute * simulation_days
482
482
  simulation["total_savings"] += savings
483
483
  simulation["total_estimated_savings"] += savings
484
- simulation["savings_breakdown"][
485
- action.resource_type.value
486
- ] = savings
484
+ simulation["savings_breakdown"][action.resource_type.value] = (
485
+ savings
486
+ )
487
487
  else:
488
488
  # Dictionary format
489
489
  if isinstance(actions, dict):
@@ -31,6 +31,7 @@ import time
31
31
  from typing import Any, cast
32
32
 
33
33
  from traigent.cloud.auth import _build_api_key_auth_headers
34
+ from traigent.cloud.url_security import validate_cloud_base_url
34
35
  from traigent.config.backend_config import DEFAULT_LOCAL_URL
35
36
  from traigent.utils.logging import get_logger
36
37
 
@@ -73,7 +74,10 @@ class ExampleInsightsClient:
73
74
  "Install with: pip install traigent[analytics]"
74
75
  )
75
76
 
76
- self.backend_url = backend_url.rstrip("/")
77
+ backend_url = backend_url.rstrip("/")
78
+ self.backend_url = validate_cloud_base_url(
79
+ backend_url, purpose="analytics request"
80
+ )
77
81
  self.timeout = timeout
78
82
 
79
83
  # Import here to avoid circular dependency
@@ -24,6 +24,7 @@ from __future__ import annotations
24
24
  from typing import Any, cast
25
25
 
26
26
  from traigent.cloud.auth import _build_api_key_auth_headers
27
+ from traigent.cloud.url_security import validate_cloud_base_url
27
28
  from traigent.config.backend_config import DEFAULT_LOCAL_URL
28
29
  from traigent.utils.logging import get_logger
29
30
 
@@ -77,7 +78,10 @@ class NextStepsClient:
77
78
  "Install with: pip install traigent[analytics]"
78
79
  )
79
80
 
80
- self.backend_url = backend_url.rstrip("/")
81
+ backend_url = backend_url.rstrip("/")
82
+ self.backend_url = validate_cloud_base_url(
83
+ backend_url, purpose="analytics request"
84
+ )
81
85
  self.timeout = timeout
82
86
 
83
87
  # Import here to avoid circular dependency
@@ -141,7 +145,8 @@ class NextStepsClient:
141
145
  Returns:
142
146
  Dict with the backend next-steps contract payload. The response
143
147
  includes a ``caveat`` field that callers should display near the
144
- recommendations.
148
+ recommendations. If the backend includes the optional opaque
149
+ ``posture`` block, it is returned unchanged.
145
150
 
146
151
  Raises:
147
152
  httpx.HTTPError: If request fails. A 404 response is raised as
@@ -13,6 +13,7 @@ from __future__ import annotations
13
13
  from collections.abc import Sequence
14
14
  from typing import Any, cast
15
15
 
16
+ from traigent.cloud.url_security import validate_cloud_base_url
16
17
  from traigent.config.backend_config import DEFAULT_LOCAL_URL
17
18
  from traigent.utils.logging import get_logger
18
19
 
@@ -78,7 +79,10 @@ class OptimizationPlanClient:
78
79
  "Install with: pip install traigent[hybrid]"
79
80
  )
80
81
 
81
- self.backend_url = backend_url.rstrip("/")
82
+ backend_url = backend_url.rstrip("/")
83
+ self.backend_url = validate_cloud_base_url(
84
+ backend_url, purpose="optimization plan request"
85
+ )
82
86
  self.timeout = timeout
83
87
 
84
88
  # Import here to avoid circular dependency
@@ -206,7 +206,9 @@ class CostForecaster:
206
206
  alert_level = (
207
207
  "critical"
208
208
  if projected_overage > budget_limit * 0.1
209
- else "warning" if projected_overage > 0 else "none"
209
+ else "warning"
210
+ if projected_overage > 0
211
+ else "none"
210
212
  )
211
213
 
212
214
  return {
@@ -455,7 +457,9 @@ class CostForecaster:
455
457
  "trend": (
456
458
  "improving"
457
459
  if efficiency_change < 0
458
- else "degrading" if efficiency_change > 0 else "stable"
460
+ else "degrading"
461
+ if efficiency_change > 0
462
+ else "stable"
459
463
  ),
460
464
  }
461
465
 
@@ -28,6 +28,15 @@ from typing import Any, cast
28
28
  from traigent.cloud.analytics_client import normalize_decision_intent
29
29
  from traigent.utils.logging import get_logger
30
30
 
31
+ try:
32
+ import httpx
33
+ except ImportError: # pragma: no cover - BackendAnalyticsClient reports this first
34
+ _HTTP_STATUS_ERRORS: tuple[type[BaseException], ...] = ()
35
+ _HTTP_TRANSPORT_ERRORS: tuple[type[BaseException], ...] = ()
36
+ else:
37
+ _HTTP_STATUS_ERRORS = (httpx.HTTPStatusError,)
38
+ _HTTP_TRANSPORT_ERRORS = (httpx.TransportError,)
39
+
31
40
  logger = get_logger(__name__)
32
41
 
33
42
  ANALYTICS_TOOL_NAMES: tuple[str, ...] = (
@@ -48,14 +57,29 @@ ANALYTICS_TOOL_NAMES: tuple[str, ...] = (
48
57
  _SUPPORTED_CHART_KINDS: tuple[str, ...] = ("run_pareto", "run_correlations")
49
58
 
50
59
 
51
- def _failure(message: str, *, code: str = "invalid_input") -> dict[str, Any]:
52
- return {"ok": False, "code": code, "message": message}
60
+ def _failure(
61
+ message: str,
62
+ *,
63
+ code: str = "invalid_input",
64
+ http_status: int | None = None,
65
+ backend_url: str | None = None,
66
+ ) -> dict[str, Any]:
67
+ return {
68
+ "ok": False,
69
+ "code": code,
70
+ "message": message,
71
+ "http_status": http_status,
72
+ "backend_url": (
73
+ backend_url if backend_url is not None else _resolved_backend_url()
74
+ ),
75
+ }
53
76
 
54
77
 
55
- def _auth_failure() -> dict[str, Any]:
78
+ def _auth_failure(*, backend_url: str | None = None) -> dict[str, Any]:
56
79
  return _failure(
57
80
  "Analytics authentication failed; configure valid Traigent credentials.",
58
81
  code="authentication_failed",
82
+ backend_url=backend_url,
59
83
  )
60
84
 
61
85
 
@@ -80,7 +104,106 @@ async def _new_analytics_client() -> Any:
80
104
  from traigent.cloud.analytics_client import BackendAnalyticsClient
81
105
 
82
106
  credential_kwargs = await resolve_analytics_read_client_credentials()
83
- return BackendAnalyticsClient(**credential_kwargs)
107
+ return BackendAnalyticsClient(
108
+ api_key=credential_kwargs.get("api_key"),
109
+ jwt_token=credential_kwargs.get("jwt_token"),
110
+ )
111
+
112
+
113
+ def _resolved_backend_url(client: Any | None = None) -> str | None:
114
+ candidate = getattr(client, "backend_url", None)
115
+ if not candidate:
116
+ try:
117
+ from traigent.config.backend_config import BackendConfig
118
+
119
+ candidate = BackendConfig.get_backend_url()
120
+ except Exception: # pragma: no cover - defensive structured fallback
121
+ return None
122
+ return _sanitize_url(str(candidate))
123
+
124
+
125
+ def _response_payload(response: Any | None) -> Any:
126
+ if response is None:
127
+ return None
128
+ try:
129
+ return response.json()
130
+ except Exception:
131
+ return None
132
+
133
+
134
+ def _iter_payload_text(payload: Any) -> Any:
135
+ if isinstance(payload, dict):
136
+ for value in payload.values():
137
+ yield from _iter_payload_text(value)
138
+ elif isinstance(payload, list):
139
+ for value in payload:
140
+ yield from _iter_payload_text(value)
141
+ elif isinstance(payload, str):
142
+ yield payload
143
+
144
+
145
+ def _signals_not_ready(response: Any | None) -> bool:
146
+ payload = _response_payload(response)
147
+ for text in _iter_payload_text(payload):
148
+ normalized = text.lower().replace("_", " ").replace("-", " ")
149
+ if (
150
+ "not ready" in normalized
151
+ or "not yet computed" in normalized
152
+ or "not computed" in normalized
153
+ or "not yet available" in normalized
154
+ or "compute to trigger" in normalized
155
+ or "analytics pending" in normalized
156
+ ):
157
+ return True
158
+ return False
159
+
160
+
161
+ def _http_status_failure(
162
+ exc: BaseException,
163
+ *,
164
+ what: str,
165
+ backend_url: str | None,
166
+ ) -> dict[str, Any]:
167
+ response = getattr(exc, "response", None)
168
+ status = getattr(response, "status_code", None)
169
+ status = int(status) if isinstance(status, int) else None
170
+
171
+ if status == 401:
172
+ return _failure(
173
+ "Analytics authentication failed; configure valid Traigent credentials.",
174
+ code="authentication_failed",
175
+ http_status=status,
176
+ backend_url=backend_url,
177
+ )
178
+ if status == 403:
179
+ return _failure(
180
+ "Analytics request was forbidden by the backend; check project permissions "
181
+ "or whether a WAF/Cloudflare rule is blocking the request.",
182
+ code="forbidden",
183
+ http_status=status,
184
+ backend_url=backend_url,
185
+ )
186
+ if status == 404:
187
+ if _signals_not_ready(response):
188
+ return _failure(
189
+ f"The backend found the run, but {what} analytics are not ready yet.",
190
+ code="not_ready",
191
+ http_status=status,
192
+ backend_url=backend_url,
193
+ )
194
+ return _failure(
195
+ f"The requested {what} was not found on the configured backend.",
196
+ code="not_found",
197
+ http_status=status,
198
+ backend_url=backend_url,
199
+ )
200
+
201
+ return _failure(
202
+ f"Could not retrieve {what} from the backend.",
203
+ code="backend_unavailable",
204
+ http_status=status,
205
+ backend_url=backend_url,
206
+ )
84
207
 
85
208
 
86
209
  async def _call_backend(coro_factory: Any, *, what: str) -> dict[str, Any]:
@@ -94,6 +217,7 @@ async def _call_backend(coro_factory: Any, *, what: str) -> dict[str, Any]:
94
217
  from traigent.cloud.analytics_client import AnalyticsClientError
95
218
  from traigent.cloud.auth import InvalidCredentialsError
96
219
 
220
+ client = None
97
221
  try:
98
222
  client = await _new_analytics_client()
99
223
  except ImportError as exc:
@@ -102,6 +226,7 @@ async def _call_backend(coro_factory: Any, *, what: str) -> dict[str, Any]:
102
226
  logger.debug("Analytics %s authentication failed: %s", what, exc)
103
227
  return _auth_failure()
104
228
 
229
+ backend_url = _resolved_backend_url(client)
105
230
  try:
106
231
  async with client as reader:
107
232
  data = await coro_factory(reader)
@@ -109,10 +234,21 @@ async def _call_backend(coro_factory: Any, *, what: str) -> dict[str, Any]:
109
234
  return _failure(
110
235
  f"The backend returned a malformed {what} response.",
111
236
  code="malformed_response",
237
+ backend_url=backend_url,
112
238
  )
113
239
  except InvalidCredentialsError as exc:
114
240
  logger.debug("Analytics %s authentication failed: %s", what, exc)
115
- return _auth_failure()
241
+ return _auth_failure(backend_url=backend_url)
242
+ except _HTTP_STATUS_ERRORS as exc:
243
+ logger.debug("Analytics %s request returned HTTP status", what, exc_info=True)
244
+ return _http_status_failure(exc, what=what, backend_url=backend_url)
245
+ except _HTTP_TRANSPORT_ERRORS as exc:
246
+ logger.debug("Analytics %s transport failed: %s", what, exc)
247
+ return _failure(
248
+ f"Could not retrieve {what} from the backend.",
249
+ code="backend_unavailable",
250
+ backend_url=backend_url,
251
+ )
116
252
  except Exception as exc: # noqa: BLE001 - normalize all transport failures
117
253
  # Do not surface raw exception text: it can contain the backend URL,
118
254
  # auth header echoes, or response bodies. Log at debug for operators.
@@ -120,6 +256,7 @@ async def _call_backend(coro_factory: Any, *, what: str) -> dict[str, Any]:
120
256
  return _failure(
121
257
  f"Could not retrieve {what} from the backend.",
122
258
  code="backend_unavailable",
259
+ backend_url=backend_url,
123
260
  )
124
261
 
125
262
  return {"ok": True, what.replace(" ", "_"): data}
@@ -161,7 +298,7 @@ async def health_check_tool() -> dict[str, Any]:
161
298
 
162
299
 
163
300
  def _sanitize_url(url: str | None) -> str | None:
164
- """Strip any userinfo (``user:pass@``) from a URL before returning it."""
301
+ """Strip userinfo and query material from a URL before returning it."""
165
302
  if not url:
166
303
  return url
167
304
  from urllib.parse import urlsplit, urlunsplit
@@ -175,7 +312,7 @@ def _sanitize_url(url: str | None) -> str | None:
175
312
  if parts.port is not None:
176
313
  host = f"{host}:{parts.port}"
177
314
  parts = parts._replace(netloc=host)
178
- return urlunsplit(parts)
315
+ return urlunsplit(parts._replace(query="", fragment=""))
179
316
 
180
317
 
181
318
  def _mask_api_key(api_key: str | None) -> dict[str, Any]:
@@ -36,6 +36,12 @@ if TYPE_CHECKING:
36
36
  logger = get_logger(__name__)
37
37
 
38
38
 
39
+ __all__ = [
40
+ "build_agent_configuration",
41
+ "extract_parameter_agents",
42
+ ]
43
+
44
+
39
45
  def build_agent_configuration(
40
46
  configuration_space: dict[str, Any],
41
47
  explicit_agents: dict[str, AgentDefinition] | None = None,