traigent 0.18.1.dev3__tar.gz → 0.18.1.dev4__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 (629) hide show
  1. {traigent-0.18.1.dev3/traigent.egg-info → traigent-0.18.1.dev4}/PKG-INFO +1 -1
  2. {traigent-0.18.1.dev3 → traigent-0.18.1.dev4}/pyproject.toml +1 -1
  3. {traigent-0.18.1.dev3 → traigent-0.18.1.dev4}/traigent/cloud/analytics_client.py +77 -4
  4. {traigent-0.18.1.dev3 → traigent-0.18.1.dev4}/traigent/cloud/service.py +34 -0
  5. {traigent-0.18.1.dev3 → traigent-0.18.1.dev4}/traigent/cloud/session_operations.py +251 -37
  6. {traigent-0.18.1.dev3 → traigent-0.18.1.dev4}/traigent/config/api_keys.py +11 -2
  7. {traigent-0.18.1.dev3 → traigent-0.18.1.dev4}/traigent/core/backend_session_manager.py +13 -3
  8. {traigent-0.18.1.dev3 → traigent-0.18.1.dev4}/traigent/core/session_types.py +24 -1
  9. {traigent-0.18.1.dev3 → traigent-0.18.1.dev4}/traigent/integrations/framework_override.py +67 -19
  10. {traigent-0.18.1.dev3 → traigent-0.18.1.dev4}/traigent/integrations/llms/huggingface_plugin.py +6 -3
  11. {traigent-0.18.1.dev3 → traigent-0.18.1.dev4}/traigent/integrations/mappings.py +132 -7
  12. {traigent-0.18.1.dev3 → traigent-0.18.1.dev4}/traigent/integrations/providers.py +39 -3
  13. {traigent-0.18.1.dev3 → traigent-0.18.1.dev4}/traigent/providers/validation.py +139 -16
  14. {traigent-0.18.1.dev3 → traigent-0.18.1.dev4}/traigent/tvl/models.py +4 -3
  15. traigent-0.18.1.dev4/traigent/tvl/promotion_gate.py +731 -0
  16. {traigent-0.18.1.dev3 → traigent-0.18.1.dev4}/traigent/utils/env_config.py +13 -4
  17. {traigent-0.18.1.dev3 → traigent-0.18.1.dev4/traigent.egg-info}/PKG-INFO +1 -1
  18. traigent-0.18.1.dev3/traigent/tvl/promotion_gate.py +0 -530
  19. {traigent-0.18.1.dev3 → traigent-0.18.1.dev4}/CHANGELOG.md +0 -0
  20. {traigent-0.18.1.dev3 → traigent-0.18.1.dev4}/COMMERCIAL-LICENSE.md +0 -0
  21. {traigent-0.18.1.dev3 → traigent-0.18.1.dev4}/CONTRIBUTING.md +0 -0
  22. {traigent-0.18.1.dev3 → traigent-0.18.1.dev4}/CONTRIBUTOR-LICENSING.md +0 -0
  23. {traigent-0.18.1.dev3 → traigent-0.18.1.dev4}/DISCLAIMER.md +0 -0
  24. {traigent-0.18.1.dev3 → traigent-0.18.1.dev4}/LICENSE +0 -0
  25. {traigent-0.18.1.dev3 → traigent-0.18.1.dev4}/MANIFEST.in +0 -0
  26. {traigent-0.18.1.dev3 → traigent-0.18.1.dev4}/NOTICE +0 -0
  27. {traigent-0.18.1.dev3 → traigent-0.18.1.dev4}/README.md +0 -0
  28. {traigent-0.18.1.dev3 → traigent-0.18.1.dev4}/SECURITY.md +0 -0
  29. {traigent-0.18.1.dev3 → traigent-0.18.1.dev4}/docs/LOCAL_CI_GATE.md +0 -0
  30. {traigent-0.18.1.dev3 → traigent-0.18.1.dev4}/docs/README.md +0 -0
  31. {traigent-0.18.1.dev3 → traigent-0.18.1.dev4}/docs/SYNC_MAP.md +0 -0
  32. {traigent-0.18.1.dev3 → traigent-0.18.1.dev4}/docs/agent-skill.md +0 -0
  33. {traigent-0.18.1.dev3 → traigent-0.18.1.dev4}/docs/api-reference/complete-function-specification.md +0 -0
  34. {traigent-0.18.1.dev3 → traigent-0.18.1.dev4}/docs/api-reference/decorator-reference.md +0 -0
  35. {traigent-0.18.1.dev3 → traigent-0.18.1.dev4}/docs/api-reference/enterprise-beta-api.md +0 -0
  36. {traigent-0.18.1.dev3 → traigent-0.18.1.dev4}/docs/api-reference/interactive_optimizer.md +0 -0
  37. {traigent-0.18.1.dev3 → traigent-0.18.1.dev4}/docs/api-reference/telemetry.md +0 -0
  38. {traigent-0.18.1.dev3 → traigent-0.18.1.dev4}/docs/api-reference/thread-pool-examples.md +0 -0
  39. {traigent-0.18.1.dev3 → traigent-0.18.1.dev4}/docs/architecture/ARCHITECTURE.md +0 -0
  40. {traigent-0.18.1.dev3 → traigent-0.18.1.dev4}/docs/architecture/cost-architecture-validation.md +0 -0
  41. {traigent-0.18.1.dev3 → traigent-0.18.1.dev4}/docs/architecture/execution_mode_follow_up.md +0 -0
  42. {traigent-0.18.1.dev3 → traigent-0.18.1.dev4}/docs/architecture/integrations-inventory.md +0 -0
  43. {traigent-0.18.1.dev3 → traigent-0.18.1.dev4}/docs/architecture/plugin_architecture.md +0 -0
  44. {traigent-0.18.1.dev3 → traigent-0.18.1.dev4}/docs/architecture/project-structure.md +0 -0
  45. {traigent-0.18.1.dev3 → traigent-0.18.1.dev4}/docs/architecture/stop_conditions.md +0 -0
  46. {traigent-0.18.1.dev3 → traigent-0.18.1.dev4}/docs/concepts/composite-knob-ir.md +0 -0
  47. {traigent-0.18.1.dev3 → traigent-0.18.1.dev4}/docs/concepts/composite-knobs.md +0 -0
  48. {traigent-0.18.1.dev3 → traigent-0.18.1.dev4}/docs/concepts/guided-generation.md +0 -0
  49. {traigent-0.18.1.dev3 → traigent-0.18.1.dev4}/docs/contributing/ADDING_NEW_INTEGRATIONS.md +0 -0
  50. {traigent-0.18.1.dev3 → traigent-0.18.1.dev4}/docs/contributing/CODE_OF_CONDUCT.md +0 -0
  51. {traigent-0.18.1.dev3 → traigent-0.18.1.dev4}/docs/contributing/CONTRIBUTING.md +0 -0
  52. {traigent-0.18.1.dev3 → traigent-0.18.1.dev4}/docs/contributing/EXAMPLE_TEMPLATE.md +0 -0
  53. {traigent-0.18.1.dev3 → traigent-0.18.1.dev4}/docs/contributing/README.md +0 -0
  54. {traigent-0.18.1.dev3 → traigent-0.18.1.dev4}/docs/contributing/SECURITY.md +0 -0
  55. {traigent-0.18.1.dev3 → traigent-0.18.1.dev4}/docs/contributing/aikido_triage.md +0 -0
  56. {traigent-0.18.1.dev3 → traigent-0.18.1.dev4}/docs/contributing/code_review_instructions.md +0 -0
  57. {traigent-0.18.1.dev3 → traigent-0.18.1.dev4}/docs/contributing/test-quality-guide.md +0 -0
  58. {traigent-0.18.1.dev3 → traigent-0.18.1.dev4}/docs/demos/DEMO_VIDEO_GUIDE.md +0 -0
  59. {traigent-0.18.1.dev3 → traigent-0.18.1.dev4}/docs/demos/README.md +0 -0
  60. {traigent-0.18.1.dev3 → traigent-0.18.1.dev4}/docs/examples/API_PATTERNS.md +0 -0
  61. {traigent-0.18.1.dev3 → traigent-0.18.1.dev4}/docs/examples/LEARNING_ROADMAP.md +0 -0
  62. {traigent-0.18.1.dev3 → traigent-0.18.1.dev4}/docs/examples/QUICK_REFERENCE.md +0 -0
  63. {traigent-0.18.1.dev3 → traigent-0.18.1.dev4}/docs/examples/README.md +0 -0
  64. {traigent-0.18.1.dev3 → traigent-0.18.1.dev4}/docs/examples/START_HERE.md +0 -0
  65. {traigent-0.18.1.dev3 → traigent-0.18.1.dev4}/docs/examples/TROUBLESHOOTING.md +0 -0
  66. {traigent-0.18.1.dev3 → traigent-0.18.1.dev4}/docs/fake-completion-tracking.md +0 -0
  67. {traigent-0.18.1.dev3 → traigent-0.18.1.dev4}/docs/feature_matrices/README.md +0 -0
  68. {traigent-0.18.1.dev3 → traigent-0.18.1.dev4}/docs/features/README.md +0 -0
  69. {traigent-0.18.1.dev3 → traigent-0.18.1.dev4}/docs/features/authentication.md +0 -0
  70. {traigent-0.18.1.dev3 → traigent-0.18.1.dev4}/docs/features/constraint-dsl.md +0 -0
  71. {traigent-0.18.1.dev3 → traigent-0.18.1.dev4}/docs/features/dataflow-detection.md +0 -0
  72. {traigent-0.18.1.dev3 → traigent-0.18.1.dev4}/docs/features/framework_override_enhanced_features.md +0 -0
  73. {traigent-0.18.1.dev3 → traigent-0.18.1.dev4}/docs/features/mcp-server.md +0 -0
  74. {traigent-0.18.1.dev3 → traigent-0.18.1.dev4}/docs/features/observability-spans.md +0 -0
  75. {traigent-0.18.1.dev3 → traigent-0.18.1.dev4}/docs/features/onboarding.md +0 -0
  76. {traigent-0.18.1.dev3 → traigent-0.18.1.dev4}/docs/features/prompt_management.md +0 -0
  77. {traigent-0.18.1.dev3 → traigent-0.18.1.dev4}/docs/features/recommendations.md +0 -0
  78. {traigent-0.18.1.dev3 → traigent-0.18.1.dev4}/docs/features/safety-gates.md +0 -0
  79. {traigent-0.18.1.dev3 → traigent-0.18.1.dev4}/docs/features/seamless_injection.md +0 -0
  80. {traigent-0.18.1.dev3 → traigent-0.18.1.dev4}/docs/features/strategy-presets.md +0 -0
  81. {traigent-0.18.1.dev3 → traigent-0.18.1.dev4}/docs/features/strict_metrics_nulls.md +0 -0
  82. {traigent-0.18.1.dev3 → traigent-0.18.1.dev4}/docs/getting-started/GETTING_STARTED.md +0 -0
  83. {traigent-0.18.1.dev3 → traigent-0.18.1.dev4}/docs/getting-started/README.md +0 -0
  84. {traigent-0.18.1.dev3 → traigent-0.18.1.dev4}/docs/getting-started/installation.md +0 -0
  85. {traigent-0.18.1.dev3 → traigent-0.18.1.dev4}/docs/getting-started/minimal-integration.md +0 -0
  86. {traigent-0.18.1.dev3 → traigent-0.18.1.dev4}/docs/getting-started/portal-dev-laptop-agent.md +0 -0
  87. {traigent-0.18.1.dev3 → traigent-0.18.1.dev4}/docs/getting-started/testing.md +0 -0
  88. {traigent-0.18.1.dev3 → traigent-0.18.1.dev4}/docs/guides/VSCODE_RESTART_GUIDE.md +0 -0
  89. {traigent-0.18.1.dev3 → traigent-0.18.1.dev4}/docs/guides/evaluation.md +0 -0
  90. {traigent-0.18.1.dev3 → traigent-0.18.1.dev4}/docs/guides/execution-mode-migration.md +0 -0
  91. {traigent-0.18.1.dev3 → traigent-0.18.1.dev4}/docs/guides/execution-modes.md +0 -0
  92. {traigent-0.18.1.dev3 → traigent-0.18.1.dev4}/docs/guides/js-bridge.md +0 -0
  93. {traigent-0.18.1.dev3 → traigent-0.18.1.dev4}/docs/guides/llm_plugin_migration_guide.md +0 -0
  94. {traigent-0.18.1.dev3 → traigent-0.18.1.dev4}/docs/guides/parallel-configuration.md +0 -0
  95. {traigent-0.18.1.dev3 → traigent-0.18.1.dev4}/docs/guides/secrets_management.md +0 -0
  96. {traigent-0.18.1.dev3 → traigent-0.18.1.dev4}/docs/hybrid-mode-api-contract.md +0 -0
  97. {traigent-0.18.1.dev3 → traigent-0.18.1.dev4}/docs/hybrid-mode-client-guide.md +0 -0
  98. {traigent-0.18.1.dev3 → traigent-0.18.1.dev4}/docs/operations/azure_openai.md +0 -0
  99. {traigent-0.18.1.dev3 → traigent-0.18.1.dev4}/docs/operations/bedrock.md +0 -0
  100. {traigent-0.18.1.dev3 → traigent-0.18.1.dev4}/docs/operations/google_gemini.md +0 -0
  101. {traigent-0.18.1.dev3 → traigent-0.18.1.dev4}/docs/security/trust_model.md +0 -0
  102. {traigent-0.18.1.dev3 → traigent-0.18.1.dev4}/docs/testing/CREATIVE_STRESS_TESTING.md +0 -0
  103. {traigent-0.18.1.dev3 → traigent-0.18.1.dev4}/docs/traceability/concepts/composite-knob-ir.md +0 -0
  104. {traigent-0.18.1.dev3 → traigent-0.18.1.dev4}/docs/traceability/concepts/composite-knobs.md +0 -0
  105. {traigent-0.18.1.dev3 → traigent-0.18.1.dev4}/docs/traceability/concepts/guided-generation.md +0 -0
  106. {traigent-0.18.1.dev3 → traigent-0.18.1.dev4}/docs/traceability/schema.md +0 -0
  107. {traigent-0.18.1.dev3 → traigent-0.18.1.dev4}/docs/traceability/tagging_tracking.md +0 -0
  108. {traigent-0.18.1.dev3 → traigent-0.18.1.dev4}/docs/traceability/taxonomy_reference.md +0 -0
  109. {traigent-0.18.1.dev3 → traigent-0.18.1.dev4}/docs/tvl/CONSTRAINT_EXPRESSIONS.md +0 -0
  110. {traigent-0.18.1.dev3 → traigent-0.18.1.dev4}/docs/user-guide/README.md +0 -0
  111. {traigent-0.18.1.dev3 → traigent-0.18.1.dev4}/docs/user-guide/agent_optimization.md +0 -0
  112. {traigent-0.18.1.dev3 → traigent-0.18.1.dev4}/docs/user-guide/choosing_optimization_model.md +0 -0
  113. {traigent-0.18.1.dev3 → traigent-0.18.1.dev4}/docs/user-guide/configuration-spaces.md +0 -0
  114. {traigent-0.18.1.dev3 → traigent-0.18.1.dev4}/docs/user-guide/evaluation_guide.md +0 -0
  115. {traigent-0.18.1.dev3 → traigent-0.18.1.dev4}/docs/user-guide/injection_modes.md +0 -0
  116. {traigent-0.18.1.dev3 → traigent-0.18.1.dev4}/docs/user-guide/interactive_optimization.md +0 -0
  117. {traigent-0.18.1.dev3 → traigent-0.18.1.dev4}/docs/user-guide/smart_optimization.md +0 -0
  118. {traigent-0.18.1.dev3 → traigent-0.18.1.dev4}/docs/user-guide/tuned_variables.md +0 -0
  119. {traigent-0.18.1.dev3 → traigent-0.18.1.dev4}/docs/walkthrough.md +0 -0
  120. {traigent-0.18.1.dev3 → traigent-0.18.1.dev4}/requirements/requirements-all.txt +0 -0
  121. {traigent-0.18.1.dev3 → traigent-0.18.1.dev4}/requirements/requirements-analytics.txt +0 -0
  122. {traigent-0.18.1.dev3 → traigent-0.18.1.dev4}/requirements/requirements-bayesian.txt +0 -0
  123. {traigent-0.18.1.dev3 → traigent-0.18.1.dev4}/requirements/requirements-chroma.txt +0 -0
  124. {traigent-0.18.1.dev3 → traigent-0.18.1.dev4}/requirements/requirements-dev.txt +0 -0
  125. {traigent-0.18.1.dev3 → traigent-0.18.1.dev4}/requirements/requirements-hybrid.txt +0 -0
  126. {traigent-0.18.1.dev3 → traigent-0.18.1.dev4}/requirements/requirements-integrations.txt +0 -0
  127. {traigent-0.18.1.dev3 → traigent-0.18.1.dev4}/requirements/requirements-security.txt +0 -0
  128. {traigent-0.18.1.dev3 → traigent-0.18.1.dev4}/requirements/requirements-test.txt +0 -0
  129. {traigent-0.18.1.dev3 → traigent-0.18.1.dev4}/requirements/requirements.txt +0 -0
  130. {traigent-0.18.1.dev3 → traigent-0.18.1.dev4}/setup.cfg +0 -0
  131. {traigent-0.18.1.dev3 → traigent-0.18.1.dev4}/traigent/__init__.py +0 -0
  132. {traigent-0.18.1.dev3 → traigent-0.18.1.dev4}/traigent/_version.py +0 -0
  133. {traigent-0.18.1.dev3 → traigent-0.18.1.dev4}/traigent/adapters/execution_adapter.py +0 -0
  134. {traigent-0.18.1.dev3 → traigent-0.18.1.dev4}/traigent/admin/__init__.py +0 -0
  135. {traigent-0.18.1.dev3 → traigent-0.18.1.dev4}/traigent/admin/client.py +0 -0
  136. {traigent-0.18.1.dev3 → traigent-0.18.1.dev4}/traigent/admin/config.py +0 -0
  137. {traigent-0.18.1.dev3 → traigent-0.18.1.dev4}/traigent/admin/dtos.py +0 -0
  138. {traigent-0.18.1.dev3 → traigent-0.18.1.dev4}/traigent/agents/__init__.py +0 -0
  139. {traigent-0.18.1.dev3 → traigent-0.18.1.dev4}/traigent/agents/config_mapper.py +0 -0
  140. {traigent-0.18.1.dev3 → traigent-0.18.1.dev4}/traigent/agents/executor.py +0 -0
  141. {traigent-0.18.1.dev3 → traigent-0.18.1.dev4}/traigent/agents/platforms.py +0 -0
  142. {traigent-0.18.1.dev3 → traigent-0.18.1.dev4}/traigent/agents/specification_generator.py +0 -0
  143. {traigent-0.18.1.dev3 → traigent-0.18.1.dev4}/traigent/analytics/__init__.py +0 -0
  144. {traigent-0.18.1.dev3 → traigent-0.18.1.dev4}/traigent/analytics/anomaly.py +0 -0
  145. {traigent-0.18.1.dev3 → traigent-0.18.1.dev4}/traigent/analytics/cost_optimization.py +0 -0
  146. {traigent-0.18.1.dev3 → traigent-0.18.1.dev4}/traigent/analytics/example_insights.py +0 -0
  147. {traigent-0.18.1.dev3 → traigent-0.18.1.dev4}/traigent/analytics/intelligence.py +0 -0
  148. {traigent-0.18.1.dev3 → traigent-0.18.1.dev4}/traigent/analytics/meta_learning.py +0 -0
  149. {traigent-0.18.1.dev3 → traigent-0.18.1.dev4}/traigent/analytics/next_steps.py +0 -0
  150. {traigent-0.18.1.dev3 → traigent-0.18.1.dev4}/traigent/analytics/optimization_plan.py +0 -0
  151. {traigent-0.18.1.dev3 → traigent-0.18.1.dev4}/traigent/analytics/predictive.py +0 -0
  152. {traigent-0.18.1.dev3 → traigent-0.18.1.dev4}/traigent/analytics/render.py +0 -0
  153. {traigent-0.18.1.dev3 → traigent-0.18.1.dev4}/traigent/analytics/scheduling.py +0 -0
  154. {traigent-0.18.1.dev3 → traigent-0.18.1.dev4}/traigent/analytics_mcp/__init__.py +0 -0
  155. {traigent-0.18.1.dev3 → traigent-0.18.1.dev4}/traigent/analytics_mcp/server.py +0 -0
  156. {traigent-0.18.1.dev3 → traigent-0.18.1.dev4}/traigent/analytics_mcp/tools.py +0 -0
  157. {traigent-0.18.1.dev3 → traigent-0.18.1.dev4}/traigent/api/__init__.py +0 -0
  158. {traigent-0.18.1.dev3 → traigent-0.18.1.dev4}/traigent/api/agent_inference.py +0 -0
  159. {traigent-0.18.1.dev3 → traigent-0.18.1.dev4}/traigent/api/config_builder.py +0 -0
  160. {traigent-0.18.1.dev3 → traigent-0.18.1.dev4}/traigent/api/config_space.py +0 -0
  161. {traigent-0.18.1.dev3 → traigent-0.18.1.dev4}/traigent/api/constraint_builders.py +0 -0
  162. {traigent-0.18.1.dev3 → traigent-0.18.1.dev4}/traigent/api/constraints.py +0 -0
  163. {traigent-0.18.1.dev3 → traigent-0.18.1.dev4}/traigent/api/decorators.py +0 -0
  164. {traigent-0.18.1.dev3 → traigent-0.18.1.dev4}/traigent/api/functions.py +0 -0
  165. {traigent-0.18.1.dev3 → traigent-0.18.1.dev4}/traigent/api/parameter_ranges.py +0 -0
  166. {traigent-0.18.1.dev3 → traigent-0.18.1.dev4}/traigent/api/parameter_validator.py +0 -0
  167. {traigent-0.18.1.dev3 → traigent-0.18.1.dev4}/traigent/api/safety.py +0 -0
  168. {traigent-0.18.1.dev3 → traigent-0.18.1.dev4}/traigent/api/strategy_presets.py +0 -0
  169. {traigent-0.18.1.dev3 → traigent-0.18.1.dev4}/traigent/api/types.py +0 -0
  170. {traigent-0.18.1.dev3 → traigent-0.18.1.dev4}/traigent/api/validation_protocol.py +0 -0
  171. {traigent-0.18.1.dev3 → traigent-0.18.1.dev4}/traigent/cli/__init__.py +0 -0
  172. {traigent-0.18.1.dev3 → traigent-0.18.1.dev4}/traigent/cli/auth_commands.py +0 -0
  173. {traigent-0.18.1.dev3 → traigent-0.18.1.dev4}/traigent/cli/detect_tvars_command.py +0 -0
  174. {traigent-0.18.1.dev3 → traigent-0.18.1.dev4}/traigent/cli/function_discovery.py +0 -0
  175. {traigent-0.18.1.dev3 → traigent-0.18.1.dev4}/traigent/cli/generate_config_command.py +0 -0
  176. {traigent-0.18.1.dev3 → traigent-0.18.1.dev4}/traigent/cli/hooks_commands.py +0 -0
  177. {traigent-0.18.1.dev3 → traigent-0.18.1.dev4}/traigent/cli/local_commands.py +0 -0
  178. {traigent-0.18.1.dev3 → traigent-0.18.1.dev4}/traigent/cli/main.py +0 -0
  179. {traigent-0.18.1.dev3 → traigent-0.18.1.dev4}/traigent/cli/next_steps_command.py +0 -0
  180. {traigent-0.18.1.dev3 → traigent-0.18.1.dev4}/traigent/cli/onboard_commands.py +0 -0
  181. {traigent-0.18.1.dev3 → traigent-0.18.1.dev4}/traigent/cli/optimization_validator.py +0 -0
  182. {traigent-0.18.1.dev3 → traigent-0.18.1.dev4}/traigent/cli/plan_command.py +0 -0
  183. {traigent-0.18.1.dev3 → traigent-0.18.1.dev4}/traigent/cli/playbook_commands.py +0 -0
  184. {traigent-0.18.1.dev3 → traigent-0.18.1.dev4}/traigent/cli/sync_commands.py +0 -0
  185. {traigent-0.18.1.dev3 → traigent-0.18.1.dev4}/traigent/cli/validation_types.py +0 -0
  186. {traigent-0.18.1.dev3 → traigent-0.18.1.dev4}/traigent/cloud/__init__.py +0 -0
  187. {traigent-0.18.1.dev3 → traigent-0.18.1.dev4}/traigent/cloud/_aiohttp_compat.py +0 -0
  188. {traigent-0.18.1.dev3 → traigent-0.18.1.dev4}/traigent/cloud/agent_dtos.py +0 -0
  189. {traigent-0.18.1.dev3 → traigent-0.18.1.dev4}/traigent/cloud/analytics_auth.py +0 -0
  190. {traigent-0.18.1.dev3 → traigent-0.18.1.dev4}/traigent/cloud/api_key_manager.py +0 -0
  191. {traigent-0.18.1.dev3 → traigent-0.18.1.dev4}/traigent/cloud/api_operations.py +0 -0
  192. {traigent-0.18.1.dev3 → traigent-0.18.1.dev4}/traigent/cloud/async_batch_transport.py +0 -0
  193. {traigent-0.18.1.dev3 → traigent-0.18.1.dev4}/traigent/cloud/auth.py +0 -0
  194. {traigent-0.18.1.dev3 → traigent-0.18.1.dev4}/traigent/cloud/backend_bridges.py +0 -0
  195. {traigent-0.18.1.dev3 → traigent-0.18.1.dev4}/traigent/cloud/backend_client.py +0 -0
  196. {traigent-0.18.1.dev3 → traigent-0.18.1.dev4}/traigent/cloud/backend_components.py +0 -0
  197. {traigent-0.18.1.dev3 → traigent-0.18.1.dev4}/traigent/cloud/backend_synchronizer.py +0 -0
  198. {traigent-0.18.1.dev3 → traigent-0.18.1.dev4}/traigent/cloud/benchmark_client.py +0 -0
  199. {traigent-0.18.1.dev3 → traigent-0.18.1.dev4}/traigent/cloud/billing.py +0 -0
  200. {traigent-0.18.1.dev3 → traigent-0.18.1.dev4}/traigent/cloud/client.py +0 -0
  201. {traigent-0.18.1.dev3 → traigent-0.18.1.dev4}/traigent/cloud/cloud_operations.py +0 -0
  202. {traigent-0.18.1.dev3 → traigent-0.18.1.dev4}/traigent/cloud/credential_manager.py +0 -0
  203. {traigent-0.18.1.dev3 → traigent-0.18.1.dev4}/traigent/cloud/credential_resolver.py +0 -0
  204. {traigent-0.18.1.dev3 → traigent-0.18.1.dev4}/traigent/cloud/dataset_converter.py +0 -0
  205. {traigent-0.18.1.dev3 → traigent-0.18.1.dev4}/traigent/cloud/dtos.py +0 -0
  206. {traigent-0.18.1.dev3 → traigent-0.18.1.dev4}/traigent/cloud/governance.py +0 -0
  207. {traigent-0.18.1.dev3 → traigent-0.18.1.dev4}/traigent/cloud/integration_manager.py +0 -0
  208. {traigent-0.18.1.dev3 → traigent-0.18.1.dev4}/traigent/cloud/models.py +0 -0
  209. {traigent-0.18.1.dev3 → traigent-0.18.1.dev4}/traigent/cloud/optimizer_client.py +0 -0
  210. {traigent-0.18.1.dev3 → traigent-0.18.1.dev4}/traigent/cloud/password_auth_handler.py +0 -0
  211. {traigent-0.18.1.dev3 → traigent-0.18.1.dev4}/traigent/cloud/privacy_operations.py +0 -0
  212. {traigent-0.18.1.dev3 → traigent-0.18.1.dev4}/traigent/cloud/production_mcp_client.py +0 -0
  213. {traigent-0.18.1.dev3 → traigent-0.18.1.dev4}/traigent/cloud/remote_guidance.py +0 -0
  214. {traigent-0.18.1.dev3 → traigent-0.18.1.dev4}/traigent/cloud/resilient_client.py +0 -0
  215. {traigent-0.18.1.dev3 → traigent-0.18.1.dev4}/traigent/cloud/session_types.py +0 -0
  216. {traigent-0.18.1.dev3 → traigent-0.18.1.dev4}/traigent/cloud/sessions.py +0 -0
  217. {traigent-0.18.1.dev3 → traigent-0.18.1.dev4}/traigent/cloud/subset_selection.py +0 -0
  218. {traigent-0.18.1.dev3 → traigent-0.18.1.dev4}/traigent/cloud/sync_manager.py +0 -0
  219. {traigent-0.18.1.dev3 → traigent-0.18.1.dev4}/traigent/cloud/token_manager.py +0 -0
  220. {traigent-0.18.1.dev3 → traigent-0.18.1.dev4}/traigent/cloud/trial_operations.py +0 -0
  221. {traigent-0.18.1.dev3 → traigent-0.18.1.dev4}/traigent/cloud/trial_tracker.py +0 -0
  222. {traigent-0.18.1.dev3 → traigent-0.18.1.dev4}/traigent/cloud/url_security.py +0 -0
  223. {traigent-0.18.1.dev3 → traigent-0.18.1.dev4}/traigent/cloud/user_agent.py +0 -0
  224. {traigent-0.18.1.dev3 → traigent-0.18.1.dev4}/traigent/cloud/validators.py +0 -0
  225. {traigent-0.18.1.dev3 → traigent-0.18.1.dev4}/traigent/config/__init__.py +0 -0
  226. {traigent-0.18.1.dev3 → traigent-0.18.1.dev4}/traigent/config/ast_transformer.py +0 -0
  227. {traigent-0.18.1.dev3 → traigent-0.18.1.dev4}/traigent/config/backend_config.py +0 -0
  228. {traigent-0.18.1.dev3 → traigent-0.18.1.dev4}/traigent/config/context.py +0 -0
  229. {traigent-0.18.1.dev3 → traigent-0.18.1.dev4}/traigent/config/feature_flags.py +0 -0
  230. {traigent-0.18.1.dev3 → traigent-0.18.1.dev4}/traigent/config/models.yaml +0 -0
  231. {traigent-0.18.1.dev3 → traigent-0.18.1.dev4}/traigent/config/parallel.py +0 -0
  232. {traigent-0.18.1.dev3 → traigent-0.18.1.dev4}/traigent/config/project.py +0 -0
  233. {traigent-0.18.1.dev3 → traigent-0.18.1.dev4}/traigent/config/providers.py +0 -0
  234. {traigent-0.18.1.dev3 → traigent-0.18.1.dev4}/traigent/config/runtime_injector.py +0 -0
  235. {traigent-0.18.1.dev3 → traigent-0.18.1.dev4}/traigent/config/tenant.py +0 -0
  236. {traigent-0.18.1.dev3 → traigent-0.18.1.dev4}/traigent/config/types.py +0 -0
  237. {traigent-0.18.1.dev3 → traigent-0.18.1.dev4}/traigent/config_generator/__init__.py +0 -0
  238. {traigent-0.18.1.dev3 → traigent-0.18.1.dev4}/traigent/config_generator/agent_classifier.py +0 -0
  239. {traigent-0.18.1.dev3 → traigent-0.18.1.dev4}/traigent/config_generator/apply.py +0 -0
  240. {traigent-0.18.1.dev3 → traigent-0.18.1.dev4}/traigent/config_generator/catalog/schemas/tvar_catalog_entry_schema.json +0 -0
  241. {traigent-0.18.1.dev3 → traigent-0.18.1.dev4}/traigent/config_generator/catalog/schemas/tvar_observation_schema.json +0 -0
  242. {traigent-0.18.1.dev3 → traigent-0.18.1.dev4}/traigent/config_generator/catalog/schemas/tvar_value_recommendation_schema.json +0 -0
  243. {traigent-0.18.1.dev3 → traigent-0.18.1.dev4}/traigent/config_generator/catalog/tvar_catalog.v1.json +0 -0
  244. {traigent-0.18.1.dev3 → traigent-0.18.1.dev4}/traigent/config_generator/catalog.py +0 -0
  245. {traigent-0.18.1.dev3 → traigent-0.18.1.dev4}/traigent/config_generator/llm_backend.py +0 -0
  246. {traigent-0.18.1.dev3 → traigent-0.18.1.dev4}/traigent/config_generator/pipeline.py +0 -0
  247. {traigent-0.18.1.dev3 → traigent-0.18.1.dev4}/traigent/config_generator/presets/__init__.py +0 -0
  248. {traigent-0.18.1.dev3 → traigent-0.18.1.dev4}/traigent/config_generator/presets/agent_type_catalog.py +0 -0
  249. {traigent-0.18.1.dev3 → traigent-0.18.1.dev4}/traigent/config_generator/presets/benchmark_catalog.py +0 -0
  250. {traigent-0.18.1.dev3 → traigent-0.18.1.dev4}/traigent/config_generator/presets/constraint_templates.py +0 -0
  251. {traigent-0.18.1.dev3 → traigent-0.18.1.dev4}/traigent/config_generator/presets/range_presets.py +0 -0
  252. {traigent-0.18.1.dev3 → traigent-0.18.1.dev4}/traigent/config_generator/recommendations.py +0 -0
  253. {traigent-0.18.1.dev3 → traigent-0.18.1.dev4}/traigent/config_generator/subsystems/__init__.py +0 -0
  254. {traigent-0.18.1.dev3 → traigent-0.18.1.dev4}/traigent/config_generator/subsystems/benchmarks.py +0 -0
  255. {traigent-0.18.1.dev3 → traigent-0.18.1.dev4}/traigent/config_generator/subsystems/objectives.py +0 -0
  256. {traigent-0.18.1.dev3 → traigent-0.18.1.dev4}/traigent/config_generator/subsystems/safety_constraints.py +0 -0
  257. {traigent-0.18.1.dev3 → traigent-0.18.1.dev4}/traigent/config_generator/subsystems/structural_constraints.py +0 -0
  258. {traigent-0.18.1.dev3 → traigent-0.18.1.dev4}/traigent/config_generator/subsystems/tvar_ranges.py +0 -0
  259. {traigent-0.18.1.dev3 → traigent-0.18.1.dev4}/traigent/config_generator/subsystems/tvar_recommendations.py +0 -0
  260. {traigent-0.18.1.dev3 → traigent-0.18.1.dev4}/traigent/config_generator/types.py +0 -0
  261. {traigent-0.18.1.dev3 → traigent-0.18.1.dev4}/traigent/core/__init__.py +0 -0
  262. {traigent-0.18.1.dev3 → traigent-0.18.1.dev4}/traigent/core/best_config_runtime.py +0 -0
  263. {traigent-0.18.1.dev3 → traigent-0.18.1.dev4}/traigent/core/cache_policy.py +0 -0
  264. {traigent-0.18.1.dev3 → traigent-0.18.1.dev4}/traigent/core/ci_approval.py +0 -0
  265. {traigent-0.18.1.dev3 → traigent-0.18.1.dev4}/traigent/core/config_state_manager.py +0 -0
  266. {traigent-0.18.1.dev3 → traigent-0.18.1.dev4}/traigent/core/constants.py +0 -0
  267. {traigent-0.18.1.dev3 → traigent-0.18.1.dev4}/traigent/core/cost_enforcement.py +0 -0
  268. {traigent-0.18.1.dev3 → traigent-0.18.1.dev4}/traigent/core/cost_estimator.py +0 -0
  269. {traigent-0.18.1.dev3 → traigent-0.18.1.dev4}/traigent/core/evaluator_wrapper.py +0 -0
  270. {traigent-0.18.1.dev3 → traigent-0.18.1.dev4}/traigent/core/exception_handler.py +0 -0
  271. {traigent-0.18.1.dev3 → traigent-0.18.1.dev4}/traigent/core/execution_policy_runtime.py +0 -0
  272. {traigent-0.18.1.dev3 → traigent-0.18.1.dev4}/traigent/core/license.py +0 -0
  273. {traigent-0.18.1.dev3 → traigent-0.18.1.dev4}/traigent/core/logger_facade.py +0 -0
  274. {traigent-0.18.1.dev3 → traigent-0.18.1.dev4}/traigent/core/mandatory_metrics.py +0 -0
  275. {traigent-0.18.1.dev3 → traigent-0.18.1.dev4}/traigent/core/meta_types.py +0 -0
  276. {traigent-0.18.1.dev3 → traigent-0.18.1.dev4}/traigent/core/metadata_helpers.py +0 -0
  277. {traigent-0.18.1.dev3 → traigent-0.18.1.dev4}/traigent/core/metric_registry.py +0 -0
  278. {traigent-0.18.1.dev3 → traigent-0.18.1.dev4}/traigent/core/metrics_aggregator.py +0 -0
  279. {traigent-0.18.1.dev3 → traigent-0.18.1.dev4}/traigent/core/namespace.py +0 -0
  280. {traigent-0.18.1.dev3 → traigent-0.18.1.dev4}/traigent/core/objectives.py +0 -0
  281. {traigent-0.18.1.dev3 → traigent-0.18.1.dev4}/traigent/core/optimization_pipeline.py +0 -0
  282. {traigent-0.18.1.dev3 → traigent-0.18.1.dev4}/traigent/core/optimized_function.py +0 -0
  283. {traigent-0.18.1.dev3 → traigent-0.18.1.dev4}/traigent/core/orchestrator.py +0 -0
  284. {traigent-0.18.1.dev3 → traigent-0.18.1.dev4}/traigent/core/orchestrator_helpers.py +0 -0
  285. {traigent-0.18.1.dev3 → traigent-0.18.1.dev4}/traigent/core/parallel_execution_manager.py +0 -0
  286. {traigent-0.18.1.dev3 → traigent-0.18.1.dev4}/traigent/core/progress_manager.py +0 -0
  287. {traigent-0.18.1.dev3 → traigent-0.18.1.dev4}/traigent/core/result_selection.py +0 -0
  288. {traigent-0.18.1.dev3 → traigent-0.18.1.dev4}/traigent/core/sample_budget.py +0 -0
  289. {traigent-0.18.1.dev3 → traigent-0.18.1.dev4}/traigent/core/samplers/__init__.py +0 -0
  290. {traigent-0.18.1.dev3 → traigent-0.18.1.dev4}/traigent/core/samplers/random_sampler.py +0 -0
  291. {traigent-0.18.1.dev3 → traigent-0.18.1.dev4}/traigent/core/session_context.py +0 -0
  292. {traigent-0.18.1.dev3 → traigent-0.18.1.dev4}/traigent/core/stat_significance.py +0 -0
  293. {traigent-0.18.1.dev3 → traigent-0.18.1.dev4}/traigent/core/stop_condition_manager.py +0 -0
  294. {traigent-0.18.1.dev3 → traigent-0.18.1.dev4}/traigent/core/stop_conditions.py +0 -0
  295. {traigent-0.18.1.dev3 → traigent-0.18.1.dev4}/traigent/core/trace_env.py +0 -0
  296. {traigent-0.18.1.dev3 → traigent-0.18.1.dev4}/traigent/core/tracing.py +0 -0
  297. {traigent-0.18.1.dev3 → traigent-0.18.1.dev4}/traigent/core/trial_context.py +0 -0
  298. {traigent-0.18.1.dev3 → traigent-0.18.1.dev4}/traigent/core/trial_lifecycle.py +0 -0
  299. {traigent-0.18.1.dev3 → traigent-0.18.1.dev4}/traigent/core/trial_result_factory.py +0 -0
  300. {traigent-0.18.1.dev3 → traigent-0.18.1.dev4}/traigent/core/types.py +0 -0
  301. {traigent-0.18.1.dev3 → traigent-0.18.1.dev4}/traigent/core/types_ext.py +0 -0
  302. {traigent-0.18.1.dev3 → traigent-0.18.1.dev4}/traigent/core/utils.py +0 -0
  303. {traigent-0.18.1.dev3 → traigent-0.18.1.dev4}/traigent/core/workflow_trace_manager.py +0 -0
  304. {traigent-0.18.1.dev3 → traigent-0.18.1.dev4}/traigent/core_metrics/__init__.py +0 -0
  305. {traigent-0.18.1.dev3 → traigent-0.18.1.dev4}/traigent/core_metrics/client.py +0 -0
  306. {traigent-0.18.1.dev3 → traigent-0.18.1.dev4}/traigent/core_metrics/config.py +0 -0
  307. {traigent-0.18.1.dev3 → traigent-0.18.1.dev4}/traigent/core_metrics/dtos.py +0 -0
  308. {traigent-0.18.1.dev3 → traigent-0.18.1.dev4}/traigent/defaults.py +0 -0
  309. {traigent-0.18.1.dev3 → traigent-0.18.1.dev4}/traigent/effectuation/__init__.py +0 -0
  310. {traigent-0.18.1.dev3 → traigent-0.18.1.dev4}/traigent/effectuation/contracts.py +0 -0
  311. {traigent-0.18.1.dev3 → traigent-0.18.1.dev4}/traigent/effectuation/strategies/__init__.py +0 -0
  312. {traigent-0.18.1.dev3 → traigent-0.18.1.dev4}/traigent/effectuation/strategies/framework_param.py +0 -0
  313. {traigent-0.18.1.dev3 → traigent-0.18.1.dev4}/traigent/effectuation/strategies/self_consistency.py +0 -0
  314. {traigent-0.18.1.dev3 → traigent-0.18.1.dev4}/traigent/evaluation/__init__.py +0 -0
  315. {traigent-0.18.1.dev3 → traigent-0.18.1.dev4}/traigent/evaluation/client.py +0 -0
  316. {traigent-0.18.1.dev3 → traigent-0.18.1.dev4}/traigent/evaluation/config.py +0 -0
  317. {traigent-0.18.1.dev3 → traigent-0.18.1.dev4}/traigent/evaluation/dtos.py +0 -0
  318. {traigent-0.18.1.dev3 → traigent-0.18.1.dev4}/traigent/evaluators/__init__.py +0 -0
  319. {traigent-0.18.1.dev3 → traigent-0.18.1.dev4}/traigent/evaluators/base.py +0 -0
  320. {traigent-0.18.1.dev3 → traigent-0.18.1.dev4}/traigent/evaluators/catalog/metric_eval_catalog.v1.json +0 -0
  321. {traigent-0.18.1.dev3 → traigent-0.18.1.dev4}/traigent/evaluators/catalog/schemas/metric_eval_catalog_entry_schema.json +0 -0
  322. {traigent-0.18.1.dev3 → traigent-0.18.1.dev4}/traigent/evaluators/catalog_loader.py +0 -0
  323. {traigent-0.18.1.dev3 → traigent-0.18.1.dev4}/traigent/evaluators/dataset_registry.py +0 -0
  324. {traigent-0.18.1.dev3 → traigent-0.18.1.dev4}/traigent/evaluators/hybrid_api.py +0 -0
  325. {traigent-0.18.1.dev3 → traigent-0.18.1.dev4}/traigent/evaluators/local.py +0 -0
  326. {traigent-0.18.1.dev3 → traigent-0.18.1.dev4}/traigent/evaluators/metrics.py +0 -0
  327. {traigent-0.18.1.dev3 → traigent-0.18.1.dev4}/traigent/evaluators/metrics_tracker.py +0 -0
  328. {traigent-0.18.1.dev3 → traigent-0.18.1.dev4}/traigent/evaluators/recommendations.py +0 -0
  329. {traigent-0.18.1.dev3 → traigent-0.18.1.dev4}/traigent/examples/__init__.py +0 -0
  330. {traigent-0.18.1.dev3 → traigent-0.18.1.dev4}/traigent/examples/providers/__init__.py +0 -0
  331. {traigent-0.18.1.dev3 → traigent-0.18.1.dev4}/traigent/examples/providers/_bootstrap.py +0 -0
  332. {traigent-0.18.1.dev3 → traigent-0.18.1.dev4}/traigent/examples/providers/_demo.py +0 -0
  333. {traigent-0.18.1.dev3 → traigent-0.18.1.dev4}/traigent/examples/providers/anthropic.py +0 -0
  334. {traigent-0.18.1.dev3 → traigent-0.18.1.dev4}/traigent/examples/providers/aws.py +0 -0
  335. {traigent-0.18.1.dev3 → traigent-0.18.1.dev4}/traigent/examples/providers/azure.py +0 -0
  336. {traigent-0.18.1.dev3 → traigent-0.18.1.dev4}/traigent/examples/providers/gcp.py +0 -0
  337. {traigent-0.18.1.dev3 → traigent-0.18.1.dev4}/traigent/examples/providers/gemini.py +0 -0
  338. {traigent-0.18.1.dev3 → traigent-0.18.1.dev4}/traigent/examples/providers/groq.py +0 -0
  339. {traigent-0.18.1.dev3 → traigent-0.18.1.dev4}/traigent/examples/providers/litellm_any.py +0 -0
  340. {traigent-0.18.1.dev3 → traigent-0.18.1.dev4}/traigent/examples/providers/manifest.json +0 -0
  341. {traigent-0.18.1.dev3 → traigent-0.18.1.dev4}/traigent/examples/providers/openai.py +0 -0
  342. {traigent-0.18.1.dev3 → traigent-0.18.1.dev4}/traigent/examples/providers/openrouter.py +0 -0
  343. {traigent-0.18.1.dev3 → traigent-0.18.1.dev4}/traigent/examples/providers/qa_samples.jsonl +0 -0
  344. {traigent-0.18.1.dev3 → traigent-0.18.1.dev4}/traigent/examples/quickstart/__init__.py +0 -0
  345. {traigent-0.18.1.dev3 → traigent-0.18.1.dev4}/traigent/examples/quickstart/__main__.py +0 -0
  346. {traigent-0.18.1.dev3 → traigent-0.18.1.dev4}/traigent/examples/quickstart/_env.py +0 -0
  347. {traigent-0.18.1.dev3 → traigent-0.18.1.dev4}/traigent/examples/quickstart/publish_and_verify.py +0 -0
  348. {traigent-0.18.1.dev3 → traigent-0.18.1.dev4}/traigent/examples/quickstart/qa_samples.jsonl +0 -0
  349. {traigent-0.18.1.dev3 → traigent-0.18.1.dev4}/traigent/examples/tutorial_bootstrap.py +0 -0
  350. {traigent-0.18.1.dev3 → traigent-0.18.1.dev4}/traigent/generation/__init__.py +0 -0
  351. {traigent-0.18.1.dev3 → traigent-0.18.1.dev4}/traigent/generation/backend_provider.py +0 -0
  352. {traigent-0.18.1.dev3 → traigent-0.18.1.dev4}/traigent/generation/example_synth.py +0 -0
  353. {traigent-0.18.1.dev3 → traigent-0.18.1.dev4}/traigent/generation/llm_provider.py +0 -0
  354. {traigent-0.18.1.dev3 → traigent-0.18.1.dev4}/traigent/generation/loop.py +0 -0
  355. {traigent-0.18.1.dev3 → traigent-0.18.1.dev4}/traigent/generation/models.py +0 -0
  356. {traigent-0.18.1.dev3 → traigent-0.18.1.dev4}/traigent/generation/options.py +0 -0
  357. {traigent-0.18.1.dev3 → traigent-0.18.1.dev4}/traigent/generation/prompt_rewriter.py +0 -0
  358. {traigent-0.18.1.dev3 → traigent-0.18.1.dev4}/traigent/generation/skill_train/__init__.py +0 -0
  359. {traigent-0.18.1.dev3 → traigent-0.18.1.dev4}/traigent/generation/skill_train/artifacts.py +0 -0
  360. {traigent-0.18.1.dev3 → traigent-0.18.1.dev4}/traigent/generation/skill_train/buffer.py +0 -0
  361. {traigent-0.18.1.dev3 → traigent-0.18.1.dev4}/traigent/generation/skill_train/document.py +0 -0
  362. {traigent-0.18.1.dev3 → traigent-0.18.1.dev4}/traigent/generation/skill_train/edits.py +0 -0
  363. {traigent-0.18.1.dev3 → traigent-0.18.1.dev4}/traigent/generation/skill_train/prompts.py +0 -0
  364. {traigent-0.18.1.dev3 → traigent-0.18.1.dev4}/traigent/generation/skill_train/reflection.py +0 -0
  365. {traigent-0.18.1.dev3 → traigent-0.18.1.dev4}/traigent/generation/skill_train/schedule.py +0 -0
  366. {traigent-0.18.1.dev3 → traigent-0.18.1.dev4}/traigent/generation/skill_train/slow_update.py +0 -0
  367. {traigent-0.18.1.dev3 → traigent-0.18.1.dev4}/traigent/generation/skill_train/splits.py +0 -0
  368. {traigent-0.18.1.dev3 → traigent-0.18.1.dev4}/traigent/generation/skill_train/trainer.py +0 -0
  369. {traigent-0.18.1.dev3 → traigent-0.18.1.dev4}/traigent/generation/skill_train/trainer_result.py +0 -0
  370. {traigent-0.18.1.dev3 → traigent-0.18.1.dev4}/traigent/generation/validators.py +0 -0
  371. {traigent-0.18.1.dev3 → traigent-0.18.1.dev4}/traigent/guaranteed_modes.py +0 -0
  372. {traigent-0.18.1.dev3 → traigent-0.18.1.dev4}/traigent/hooks/__init__.py +0 -0
  373. {traigent-0.18.1.dev3 → traigent-0.18.1.dev4}/traigent/hooks/config.py +0 -0
  374. {traigent-0.18.1.dev3 → traigent-0.18.1.dev4}/traigent/hooks/installer.py +0 -0
  375. {traigent-0.18.1.dev3 → traigent-0.18.1.dev4}/traigent/hooks/validator.py +0 -0
  376. {traigent-0.18.1.dev3 → traigent-0.18.1.dev4}/traigent/hybrid/__init__.py +0 -0
  377. {traigent-0.18.1.dev3 → traigent-0.18.1.dev4}/traigent/hybrid/discovery.py +0 -0
  378. {traigent-0.18.1.dev3 → traigent-0.18.1.dev4}/traigent/hybrid/http_transport.py +0 -0
  379. {traigent-0.18.1.dev3 → traigent-0.18.1.dev4}/traigent/hybrid/lifecycle.py +0 -0
  380. {traigent-0.18.1.dev3 → traigent-0.18.1.dev4}/traigent/hybrid/mcp_transport.py +0 -0
  381. {traigent-0.18.1.dev3 → traigent-0.18.1.dev4}/traigent/hybrid/protocol.py +0 -0
  382. {traigent-0.18.1.dev3 → traigent-0.18.1.dev4}/traigent/hybrid/transport.py +0 -0
  383. {traigent-0.18.1.dev3 → traigent-0.18.1.dev4}/traigent/integrations/__init__.py +0 -0
  384. {traigent-0.18.1.dev3 → traigent-0.18.1.dev4}/traigent/integrations/activation.py +0 -0
  385. {traigent-0.18.1.dev3 → traigent-0.18.1.dev4}/traigent/integrations/base.py +0 -0
  386. {traigent-0.18.1.dev3 → traigent-0.18.1.dev4}/traigent/integrations/base_plugin.py +0 -0
  387. {traigent-0.18.1.dev3 → traigent-0.18.1.dev4}/traigent/integrations/bedrock_client.py +0 -0
  388. {traigent-0.18.1.dev3 → traigent-0.18.1.dev4}/traigent/integrations/config.py +0 -0
  389. {traigent-0.18.1.dev3 → traigent-0.18.1.dev4}/traigent/integrations/dspy_adapter.py +0 -0
  390. {traigent-0.18.1.dev3 → traigent-0.18.1.dev4}/traigent/integrations/langchain/__init__.py +0 -0
  391. {traigent-0.18.1.dev3 → traigent-0.18.1.dev4}/traigent/integrations/langchain/handler.py +0 -0
  392. {traigent-0.18.1.dev3 → traigent-0.18.1.dev4}/traigent/integrations/langfuse/__init__.py +0 -0
  393. {traigent-0.18.1.dev3 → traigent-0.18.1.dev4}/traigent/integrations/langfuse/callback.py +0 -0
  394. {traigent-0.18.1.dev3 → traigent-0.18.1.dev4}/traigent/integrations/langfuse/client.py +0 -0
  395. {traigent-0.18.1.dev3 → traigent-0.18.1.dev4}/traigent/integrations/langfuse/tracker.py +0 -0
  396. {traigent-0.18.1.dev3 → traigent-0.18.1.dev4}/traigent/integrations/llms/__init__.py +0 -0
  397. {traigent-0.18.1.dev3 → traigent-0.18.1.dev4}/traigent/integrations/llms/anthropic_plugin.py +0 -0
  398. {traigent-0.18.1.dev3 → traigent-0.18.1.dev4}/traigent/integrations/llms/azure_openai_plugin.py +0 -0
  399. {traigent-0.18.1.dev3 → traigent-0.18.1.dev4}/traigent/integrations/llms/base_llm_plugin.py +0 -0
  400. {traigent-0.18.1.dev3 → traigent-0.18.1.dev4}/traigent/integrations/llms/bedrock_plugin.py +0 -0
  401. {traigent-0.18.1.dev3 → traigent-0.18.1.dev4}/traigent/integrations/llms/cohere_plugin.py +0 -0
  402. {traigent-0.18.1.dev3 → traigent-0.18.1.dev4}/traigent/integrations/llms/gemini_plugin.py +0 -0
  403. {traigent-0.18.1.dev3 → traigent-0.18.1.dev4}/traigent/integrations/llms/langchain/__init__.py +0 -0
  404. {traigent-0.18.1.dev3 → traigent-0.18.1.dev4}/traigent/integrations/llms/langchain/base.py +0 -0
  405. {traigent-0.18.1.dev3 → traigent-0.18.1.dev4}/traigent/integrations/llms/langchain_plugin.py +0 -0
  406. {traigent-0.18.1.dev3 → traigent-0.18.1.dev4}/traigent/integrations/llms/litellm_plugin.py +0 -0
  407. {traigent-0.18.1.dev3 → traigent-0.18.1.dev4}/traigent/integrations/llms/llamaindex_plugin.py +0 -0
  408. {traigent-0.18.1.dev3 → traigent-0.18.1.dev4}/traigent/integrations/llms/mistral_plugin.py +0 -0
  409. {traigent-0.18.1.dev3 → traigent-0.18.1.dev4}/traigent/integrations/llms/openai.py +0 -0
  410. {traigent-0.18.1.dev3 → traigent-0.18.1.dev4}/traigent/integrations/llms/openai_plugin.py +0 -0
  411. {traigent-0.18.1.dev3 → traigent-0.18.1.dev4}/traigent/integrations/model_discovery/__init__.py +0 -0
  412. {traigent-0.18.1.dev3 → traigent-0.18.1.dev4}/traigent/integrations/model_discovery/anthropic_discovery.py +0 -0
  413. {traigent-0.18.1.dev3 → traigent-0.18.1.dev4}/traigent/integrations/model_discovery/azure_discovery.py +0 -0
  414. {traigent-0.18.1.dev3 → traigent-0.18.1.dev4}/traigent/integrations/model_discovery/base.py +0 -0
  415. {traigent-0.18.1.dev3 → traigent-0.18.1.dev4}/traigent/integrations/model_discovery/cache.py +0 -0
  416. {traigent-0.18.1.dev3 → traigent-0.18.1.dev4}/traigent/integrations/model_discovery/gemini_discovery.py +0 -0
  417. {traigent-0.18.1.dev3 → traigent-0.18.1.dev4}/traigent/integrations/model_discovery/mistral_discovery.py +0 -0
  418. {traigent-0.18.1.dev3 → traigent-0.18.1.dev4}/traigent/integrations/model_discovery/openai_discovery.py +0 -0
  419. {traigent-0.18.1.dev3 → traigent-0.18.1.dev4}/traigent/integrations/model_discovery/registry.py +0 -0
  420. {traigent-0.18.1.dev3 → traigent-0.18.1.dev4}/traigent/integrations/observability/__init__.py +0 -0
  421. {traigent-0.18.1.dev3 → traigent-0.18.1.dev4}/traigent/integrations/observability/mlflow.py +0 -0
  422. {traigent-0.18.1.dev3 → traigent-0.18.1.dev4}/traigent/integrations/observability/wandb.py +0 -0
  423. {traigent-0.18.1.dev3 → traigent-0.18.1.dev4}/traigent/integrations/observability/workflow_traces.py +0 -0
  424. {traigent-0.18.1.dev3 → traigent-0.18.1.dev4}/traigent/integrations/plugin_registry.py +0 -0
  425. {traigent-0.18.1.dev3 → traigent-0.18.1.dev4}/traigent/integrations/pydantic_ai/__init__.py +0 -0
  426. {traigent-0.18.1.dev3 → traigent-0.18.1.dev4}/traigent/integrations/pydantic_ai/_types.py +0 -0
  427. {traigent-0.18.1.dev3 → traigent-0.18.1.dev4}/traigent/integrations/pydantic_ai/handler.py +0 -0
  428. {traigent-0.18.1.dev3 → traigent-0.18.1.dev4}/traigent/integrations/pydantic_ai/plugin.py +0 -0
  429. {traigent-0.18.1.dev3 → traigent-0.18.1.dev4}/traigent/integrations/utils/__init__.py +0 -0
  430. {traigent-0.18.1.dev3 → traigent-0.18.1.dev4}/traigent/integrations/utils/discovery.py +0 -0
  431. {traigent-0.18.1.dev3 → traigent-0.18.1.dev4}/traigent/integrations/utils/message_coercion.py +0 -0
  432. {traigent-0.18.1.dev3 → traigent-0.18.1.dev4}/traigent/integrations/utils/mock_adapter.py +0 -0
  433. {traigent-0.18.1.dev3 → traigent-0.18.1.dev4}/traigent/integrations/utils/parameter_normalizer.py +0 -0
  434. {traigent-0.18.1.dev3 → traigent-0.18.1.dev4}/traigent/integrations/utils/response_wrapper.py +0 -0
  435. {traigent-0.18.1.dev3 → traigent-0.18.1.dev4}/traigent/integrations/utils/validation.py +0 -0
  436. {traigent-0.18.1.dev3 → traigent-0.18.1.dev4}/traigent/integrations/utils/version_compat.py +0 -0
  437. {traigent-0.18.1.dev3 → traigent-0.18.1.dev4}/traigent/integrations/vector_stores/__init__.py +0 -0
  438. {traigent-0.18.1.dev3 → traigent-0.18.1.dev4}/traigent/integrations/vector_stores/base.py +0 -0
  439. {traigent-0.18.1.dev3 → traigent-0.18.1.dev4}/traigent/integrations/vector_stores/chromadb_plugin.py +0 -0
  440. {traigent-0.18.1.dev3 → traigent-0.18.1.dev4}/traigent/integrations/vector_stores/pinecone_plugin.py +0 -0
  441. {traigent-0.18.1.dev3 → traigent-0.18.1.dev4}/traigent/integrations/vector_stores/weaviate_plugin.py +0 -0
  442. {traigent-0.18.1.dev3 → traigent-0.18.1.dev4}/traigent/integrations/wrappers.py +0 -0
  443. {traigent-0.18.1.dev3 → traigent-0.18.1.dev4}/traigent/invokers/__init__.py +0 -0
  444. {traigent-0.18.1.dev3 → traigent-0.18.1.dev4}/traigent/invokers/base.py +0 -0
  445. {traigent-0.18.1.dev3 → traigent-0.18.1.dev4}/traigent/invokers/batch.py +0 -0
  446. {traigent-0.18.1.dev3 → traigent-0.18.1.dev4}/traigent/invokers/local.py +0 -0
  447. {traigent-0.18.1.dev3 → traigent-0.18.1.dev4}/traigent/invokers/streaming.py +0 -0
  448. {traigent-0.18.1.dev3 → traigent-0.18.1.dev4}/traigent/knobs/__init__.py +0 -0
  449. {traigent-0.18.1.dev3 → traigent-0.18.1.dev4}/traigent/knobs/adapters.py +0 -0
  450. {traigent-0.18.1.dev3 → traigent-0.18.1.dev4}/traigent/knobs/bindings.py +0 -0
  451. {traigent-0.18.1.dev3 → traigent-0.18.1.dev4}/traigent/knobs/canonical.py +0 -0
  452. {traigent-0.18.1.dev3 → traigent-0.18.1.dev4}/traigent/knobs/cascade.py +0 -0
  453. {traigent-0.18.1.dev3 → traigent-0.18.1.dev4}/traigent/knobs/certificates.py +0 -0
  454. {traigent-0.18.1.dev3 → traigent-0.18.1.dev4}/traigent/knobs/composites.py +0 -0
  455. {traigent-0.18.1.dev3 → traigent-0.18.1.dev4}/traigent/knobs/kinds.py +0 -0
  456. {traigent-0.18.1.dev3 → traigent-0.18.1.dev4}/traigent/knobs/patterns.py +0 -0
  457. {traigent-0.18.1.dev3 → traigent-0.18.1.dev4}/traigent/knobs/resolution.py +0 -0
  458. {traigent-0.18.1.dev3 → traigent-0.18.1.dev4}/traigent/knobs/resolver.py +0 -0
  459. {traigent-0.18.1.dev3 → traigent-0.18.1.dev4}/traigent/knobs/runtime.py +0 -0
  460. {traigent-0.18.1.dev3 → traigent-0.18.1.dev4}/traigent/knobs/signals.py +0 -0
  461. {traigent-0.18.1.dev3 → traigent-0.18.1.dev4}/traigent/knobs/telemetry.py +0 -0
  462. {traigent-0.18.1.dev3 → traigent-0.18.1.dev4}/traigent/mcp/__init__.py +0 -0
  463. {traigent-0.18.1.dev3 → traigent-0.18.1.dev4}/traigent/mcp/server.py +0 -0
  464. {traigent-0.18.1.dev3 → traigent-0.18.1.dev4}/traigent/mcp/tools.py +0 -0
  465. {traigent-0.18.1.dev3 → traigent-0.18.1.dev4}/traigent/metrics/__init__.py +0 -0
  466. {traigent-0.18.1.dev3 → traigent-0.18.1.dev4}/traigent/metrics/agent_metrics.py +0 -0
  467. {traigent-0.18.1.dev3 → traigent-0.18.1.dev4}/traigent/metrics/content_features.py +0 -0
  468. {traigent-0.18.1.dev3 → traigent-0.18.1.dev4}/traigent/metrics/deepeval_metrics.py +0 -0
  469. {traigent-0.18.1.dev3 → traigent-0.18.1.dev4}/traigent/metrics/ragas_metrics.py +0 -0
  470. {traigent-0.18.1.dev3 → traigent-0.18.1.dev4}/traigent/metrics/registry.py +0 -0
  471. {traigent-0.18.1.dev3 → traigent-0.18.1.dev4}/traigent/observability/__init__.py +0 -0
  472. {traigent-0.18.1.dev3 → traigent-0.18.1.dev4}/traigent/observability/agent_spans.py +0 -0
  473. {traigent-0.18.1.dev3 → traigent-0.18.1.dev4}/traigent/observability/client.py +0 -0
  474. {traigent-0.18.1.dev3 → traigent-0.18.1.dev4}/traigent/observability/config.py +0 -0
  475. {traigent-0.18.1.dev3 → traigent-0.18.1.dev4}/traigent/observability/decorators.py +0 -0
  476. {traigent-0.18.1.dev3 → traigent-0.18.1.dev4}/traigent/observability/dtos.py +0 -0
  477. {traigent-0.18.1.dev3 → traigent-0.18.1.dev4}/traigent/optimizers/__init__.py +0 -0
  478. {traigent-0.18.1.dev3 → traigent-0.18.1.dev4}/traigent/optimizers/base.py +0 -0
  479. {traigent-0.18.1.dev3 → traigent-0.18.1.dev4}/traigent/optimizers/batch_optimizers.py +0 -0
  480. {traigent-0.18.1.dev3 → traigent-0.18.1.dev4}/traigent/optimizers/cloud_optimizer.py +0 -0
  481. {traigent-0.18.1.dev3 → traigent-0.18.1.dev4}/traigent/optimizers/grid.py +0 -0
  482. {traigent-0.18.1.dev3 → traigent-0.18.1.dev4}/traigent/optimizers/interactive_optimizer.py +0 -0
  483. {traigent-0.18.1.dev3 → traigent-0.18.1.dev4}/traigent/optimizers/random.py +0 -0
  484. {traigent-0.18.1.dev3 → traigent-0.18.1.dev4}/traigent/optimizers/registry.py +0 -0
  485. {traigent-0.18.1.dev3 → traigent-0.18.1.dev4}/traigent/optimizers/remote.py +0 -0
  486. {traigent-0.18.1.dev3 → traigent-0.18.1.dev4}/traigent/optimizers/remote_services.py +0 -0
  487. {traigent-0.18.1.dev3 → traigent-0.18.1.dev4}/traigent/optimizers/results.py +0 -0
  488. {traigent-0.18.1.dev3 → traigent-0.18.1.dev4}/traigent/playbook/__init__.py +0 -0
  489. {traigent-0.18.1.dev3 → traigent-0.18.1.dev4}/traigent/playbook/loader.py +0 -0
  490. {traigent-0.18.1.dev3 → traigent-0.18.1.dev4}/traigent/playbook/model.py +0 -0
  491. {traigent-0.18.1.dev3 → traigent-0.18.1.dev4}/traigent/playbook/scaffold.py +0 -0
  492. {traigent-0.18.1.dev3 → traigent-0.18.1.dev4}/traigent/playbook/schemas/agent_playbook_schema.json +0 -0
  493. {traigent-0.18.1.dev3 → traigent-0.18.1.dev4}/traigent/playbook/staleness.py +0 -0
  494. {traigent-0.18.1.dev3 → traigent-0.18.1.dev4}/traigent/playbook/validator.py +0 -0
  495. {traigent-0.18.1.dev3 → traigent-0.18.1.dev4}/traigent/plugins/__init__.py +0 -0
  496. {traigent-0.18.1.dev3 → traigent-0.18.1.dev4}/traigent/plugins/registry.py +0 -0
  497. {traigent-0.18.1.dev3 → traigent-0.18.1.dev4}/traigent/projects/__init__.py +0 -0
  498. {traigent-0.18.1.dev3 → traigent-0.18.1.dev4}/traigent/projects/client.py +0 -0
  499. {traigent-0.18.1.dev3 → traigent-0.18.1.dev4}/traigent/projects/config.py +0 -0
  500. {traigent-0.18.1.dev3 → traigent-0.18.1.dev4}/traigent/projects/dtos.py +0 -0
  501. {traigent-0.18.1.dev3 → traigent-0.18.1.dev4}/traigent/prompts/__init__.py +0 -0
  502. {traigent-0.18.1.dev3 → traigent-0.18.1.dev4}/traigent/prompts/client.py +0 -0
  503. {traigent-0.18.1.dev3 → traigent-0.18.1.dev4}/traigent/prompts/config.py +0 -0
  504. {traigent-0.18.1.dev3 → traigent-0.18.1.dev4}/traigent/prompts/dtos.py +0 -0
  505. {traigent-0.18.1.dev3 → traigent-0.18.1.dev4}/traigent/providers/__init__.py +0 -0
  506. {traigent-0.18.1.dev3 → traigent-0.18.1.dev4}/traigent/py.typed +0 -0
  507. {traigent-0.18.1.dev3 → traigent-0.18.1.dev4}/traigent/reporting/__init__.py +0 -0
  508. {traigent-0.18.1.dev3 → traigent-0.18.1.dev4}/traigent/reporting/example_map.py +0 -0
  509. {traigent-0.18.1.dev3 → traigent-0.18.1.dev4}/traigent/security/__init__.py +0 -0
  510. {traigent-0.18.1.dev3 → traigent-0.18.1.dev4}/traigent/security/audit.py +0 -0
  511. {traigent-0.18.1.dev3 → traigent-0.18.1.dev4}/traigent/security/auth/__init__.py +0 -0
  512. {traigent-0.18.1.dev3 → traigent-0.18.1.dev4}/traigent/security/auth/helpers.py +0 -0
  513. {traigent-0.18.1.dev3 → traigent-0.18.1.dev4}/traigent/security/auth/mfa.py +0 -0
  514. {traigent-0.18.1.dev3 → traigent-0.18.1.dev4}/traigent/security/auth/models.py +0 -0
  515. {traigent-0.18.1.dev3 → traigent-0.18.1.dev4}/traigent/security/auth/oidc.py +0 -0
  516. {traigent-0.18.1.dev3 → traigent-0.18.1.dev4}/traigent/security/auth/saml.py +0 -0
  517. {traigent-0.18.1.dev3 → traigent-0.18.1.dev4}/traigent/security/auth/sms.py +0 -0
  518. {traigent-0.18.1.dev3 → traigent-0.18.1.dev4}/traigent/security/auth/totp.py +0 -0
  519. {traigent-0.18.1.dev3 → traigent-0.18.1.dev4}/traigent/security/config.py +0 -0
  520. {traigent-0.18.1.dev3 → traigent-0.18.1.dev4}/traigent/security/credentials.py +0 -0
  521. {traigent-0.18.1.dev3 → traigent-0.18.1.dev4}/traigent/security/crypto_utils.py +0 -0
  522. {traigent-0.18.1.dev3 → traigent-0.18.1.dev4}/traigent/security/deployment.py +0 -0
  523. {traigent-0.18.1.dev3 → traigent-0.18.1.dev4}/traigent/security/encryption.py +0 -0
  524. {traigent-0.18.1.dev3 → traigent-0.18.1.dev4}/traigent/security/enterprise.py +0 -0
  525. {traigent-0.18.1.dev3 → traigent-0.18.1.dev4}/traigent/security/headers.py +0 -0
  526. {traigent-0.18.1.dev3 → traigent-0.18.1.dev4}/traigent/security/input_validation.py +0 -0
  527. {traigent-0.18.1.dev3 → traigent-0.18.1.dev4}/traigent/security/jwt_validator.py +0 -0
  528. {traigent-0.18.1.dev3 → traigent-0.18.1.dev4}/traigent/security/rate_limiter.py +0 -0
  529. {traigent-0.18.1.dev3 → traigent-0.18.1.dev4}/traigent/security/redaction.py +0 -0
  530. {traigent-0.18.1.dev3 → traigent-0.18.1.dev4}/traigent/security/session_manager.py +0 -0
  531. {traigent-0.18.1.dev3 → traigent-0.18.1.dev4}/traigent/security/tenant.py +0 -0
  532. {traigent-0.18.1.dev3 → traigent-0.18.1.dev4}/traigent/skills/traigent-analyze-results/SKILL.md +0 -0
  533. {traigent-0.18.1.dev3 → traigent-0.18.1.dev4}/traigent/skills/traigent-analyze-results/references/convergence-patterns.md +0 -0
  534. {traigent-0.18.1.dev3 → traigent-0.18.1.dev4}/traigent/skills/traigent-analyze-results/references/optimization-result-api.md +0 -0
  535. {traigent-0.18.1.dev3 → traigent-0.18.1.dev4}/traigent/skills/traigent-configuration-space/SKILL.md +0 -0
  536. {traigent-0.18.1.dev3 → traigent-0.18.1.dev4}/traigent/skills/traigent-configuration-space/references/constraints.md +0 -0
  537. {traigent-0.18.1.dev3 → traigent-0.18.1.dev4}/traigent/skills/traigent-configuration-space/references/parameter-types.md +0 -0
  538. {traigent-0.18.1.dev3 → traigent-0.18.1.dev4}/traigent/skills/traigent-debugging/SKILL.md +0 -0
  539. {traigent-0.18.1.dev3 → traigent-0.18.1.dev4}/traigent/skills/traigent-debugging/references/error-reference.md +0 -0
  540. {traigent-0.18.1.dev3 → traigent-0.18.1.dev4}/traigent/skills/traigent-debugging/references/logging-config.md +0 -0
  541. {traigent-0.18.1.dev3 → traigent-0.18.1.dev4}/traigent/skills/traigent-debugging/references/mock-mode.md +0 -0
  542. {traigent-0.18.1.dev3 → traigent-0.18.1.dev4}/traigent/skills/traigent-decorator-setup/SKILL.md +0 -0
  543. {traigent-0.18.1.dev3 → traigent-0.18.1.dev4}/traigent/skills/traigent-decorator-setup/references/evaluation-options.md +0 -0
  544. {traigent-0.18.1.dev3 → traigent-0.18.1.dev4}/traigent/skills/traigent-decorator-setup/references/execution-modes.md +0 -0
  545. {traigent-0.18.1.dev3 → traigent-0.18.1.dev4}/traigent/skills/traigent-decorator-setup/references/injection-modes.md +0 -0
  546. {traigent-0.18.1.dev3 → traigent-0.18.1.dev4}/traigent/skills/traigent-integrations/SKILL.md +0 -0
  547. {traigent-0.18.1.dev3 → traigent-0.18.1.dev4}/traigent/skills/traigent-integrations/references/dspy.md +0 -0
  548. {traigent-0.18.1.dev3 → traigent-0.18.1.dev4}/traigent/skills/traigent-integrations/references/langchain.md +0 -0
  549. {traigent-0.18.1.dev3 → traigent-0.18.1.dev4}/traigent/skills/traigent-integrations/references/litellm.md +0 -0
  550. {traigent-0.18.1.dev3 → traigent-0.18.1.dev4}/traigent/skills/traigent-quickstart/SKILL.md +0 -0
  551. {traigent-0.18.1.dev3 → traigent-0.18.1.dev4}/traigent/skills/traigent-quickstart/references/environment-variables.md +0 -0
  552. {traigent-0.18.1.dev3 → traigent-0.18.1.dev4}/traigent/skills/traigent-quickstart/references/installation-extras.md +0 -0
  553. {traigent-0.18.1.dev3 → traigent-0.18.1.dev4}/traigent/skills/traigent-run-optimization/SKILL.md +0 -0
  554. {traigent-0.18.1.dev3 → traigent-0.18.1.dev4}/traigent/skills/traigent-run-optimization/references/algorithms.md +0 -0
  555. {traigent-0.18.1.dev3 → traigent-0.18.1.dev4}/traigent/skills/traigent-run-optimization/references/cost-management.md +0 -0
  556. {traigent-0.18.1.dev3 → traigent-0.18.1.dev4}/traigent/skills/traigent-run-optimization/references/parallel-config.md +0 -0
  557. {traigent-0.18.1.dev3 → traigent-0.18.1.dev4}/traigent/storage/__init__.py +0 -0
  558. {traigent-0.18.1.dev3 → traigent-0.18.1.dev4}/traigent/storage/local_storage.py +0 -0
  559. {traigent-0.18.1.dev3 → traigent-0.18.1.dev4}/traigent/testing/__init__.py +0 -0
  560. {traigent-0.18.1.dev3 → traigent-0.18.1.dev4}/traigent/traigent_client.py +0 -0
  561. {traigent-0.18.1.dev3 → traigent-0.18.1.dev4}/traigent/traigent_integration.py +0 -0
  562. {traigent-0.18.1.dev3 → traigent-0.18.1.dev4}/traigent/tuned_variables/__init__.py +0 -0
  563. {traigent-0.18.1.dev3 → traigent-0.18.1.dev4}/traigent/tuned_variables/dataflow_strategy.py +0 -0
  564. {traigent-0.18.1.dev3 → traigent-0.18.1.dev4}/traigent/tuned_variables/detection_strategies.py +0 -0
  565. {traigent-0.18.1.dev3 → traigent-0.18.1.dev4}/traigent/tuned_variables/detection_types.py +0 -0
  566. {traigent-0.18.1.dev3 → traigent-0.18.1.dev4}/traigent/tuned_variables/detector.py +0 -0
  567. {traigent-0.18.1.dev3 → traigent-0.18.1.dev4}/traigent/tuned_variables/discovery.py +0 -0
  568. {traigent-0.18.1.dev3 → traigent-0.18.1.dev4}/traigent/tuned_variables/observation.py +0 -0
  569. {traigent-0.18.1.dev3 → traigent-0.18.1.dev4}/traigent/tuned_variables/py.typed +0 -0
  570. {traigent-0.18.1.dev3 → traigent-0.18.1.dev4}/traigent/tvl/__init__.py +0 -0
  571. {traigent-0.18.1.dev3 → traigent-0.18.1.dev4}/traigent/tvl/__main__.py +0 -0
  572. {traigent-0.18.1.dev3 → traigent-0.18.1.dev4}/traigent/tvl/objectives.py +0 -0
  573. {traigent-0.18.1.dev3 → traigent-0.18.1.dev4}/traigent/tvl/options.py +0 -0
  574. {traigent-0.18.1.dev3 → traigent-0.18.1.dev4}/traigent/tvl/registry.py +0 -0
  575. {traigent-0.18.1.dev3 → traigent-0.18.1.dev4}/traigent/tvl/spec_loader.py +0 -0
  576. {traigent-0.18.1.dev3 → traigent-0.18.1.dev4}/traigent/tvl/spec_validator.py +0 -0
  577. {traigent-0.18.1.dev3 → traigent-0.18.1.dev4}/traigent/tvl/statistics.py +0 -0
  578. {traigent-0.18.1.dev3 → traigent-0.18.1.dev4}/traigent/utils/__init__.py +0 -0
  579. {traigent-0.18.1.dev3 → traigent-0.18.1.dev4}/traigent/utils/artifact_fingerprints.py +0 -0
  580. {traigent-0.18.1.dev3 → traigent-0.18.1.dev4}/traigent/utils/batch_optimizer_utils.py +0 -0
  581. {traigent-0.18.1.dev3 → traigent-0.18.1.dev4}/traigent/utils/batch_processing.py +0 -0
  582. {traigent-0.18.1.dev3 → traigent-0.18.1.dev4}/traigent/utils/callbacks.py +0 -0
  583. {traigent-0.18.1.dev3 → traigent-0.18.1.dev4}/traigent/utils/console.py +0 -0
  584. {traigent-0.18.1.dev3 → traigent-0.18.1.dev4}/traigent/utils/constraints.py +0 -0
  585. {traigent-0.18.1.dev3 → traigent-0.18.1.dev4}/traigent/utils/cost_calculator.py +0 -0
  586. {traigent-0.18.1.dev3 → traigent-0.18.1.dev4}/traigent/utils/diagnostics.py +0 -0
  587. {traigent-0.18.1.dev3 → traigent-0.18.1.dev4}/traigent/utils/discrete_domains.py +0 -0
  588. {traigent-0.18.1.dev3 → traigent-0.18.1.dev4}/traigent/utils/error_handler.py +0 -0
  589. {traigent-0.18.1.dev3 → traigent-0.18.1.dev4}/traigent/utils/example_id.py +0 -0
  590. {traigent-0.18.1.dev3 → traigent-0.18.1.dev4}/traigent/utils/exceptions.py +0 -0
  591. {traigent-0.18.1.dev3 → traigent-0.18.1.dev4}/traigent/utils/file_versioning.py +0 -0
  592. {traigent-0.18.1.dev3 → traigent-0.18.1.dev4}/traigent/utils/function_identity.py +0 -0
  593. {traigent-0.18.1.dev3 → traigent-0.18.1.dev4}/traigent/utils/hashing.py +0 -0
  594. {traigent-0.18.1.dev3 → traigent-0.18.1.dev4}/traigent/utils/importance.py +0 -0
  595. {traigent-0.18.1.dev3 → traigent-0.18.1.dev4}/traigent/utils/incentives.py +0 -0
  596. {traigent-0.18.1.dev3 → traigent-0.18.1.dev4}/traigent/utils/insights.py +0 -0
  597. {traigent-0.18.1.dev3 → traigent-0.18.1.dev4}/traigent/utils/langchain_interceptor.py +0 -0
  598. {traigent-0.18.1.dev3 → traigent-0.18.1.dev4}/traigent/utils/litellm_interceptor.py +0 -0
  599. {traigent-0.18.1.dev3 → traigent-0.18.1.dev4}/traigent/utils/llm_response_parsing.py +0 -0
  600. {traigent-0.18.1.dev3 → traigent-0.18.1.dev4}/traigent/utils/local_analytics.py +0 -0
  601. {traigent-0.18.1.dev3 → traigent-0.18.1.dev4}/traigent/utils/logging.py +0 -0
  602. {traigent-0.18.1.dev3 → traigent-0.18.1.dev4}/traigent/utils/multi_objective.py +0 -0
  603. {traigent-0.18.1.dev3 → traigent-0.18.1.dev4}/traigent/utils/numpy_compat.py +0 -0
  604. {traigent-0.18.1.dev3 → traigent-0.18.1.dev4}/traigent/utils/objectives.py +0 -0
  605. {traigent-0.18.1.dev3 → traigent-0.18.1.dev4}/traigent/utils/optimization_analyzer.py +0 -0
  606. {traigent-0.18.1.dev3 → traigent-0.18.1.dev4}/traigent/utils/optimization_logger.py +0 -0
  607. {traigent-0.18.1.dev3 → traigent-0.18.1.dev4}/traigent/utils/pagination.py +0 -0
  608. {traigent-0.18.1.dev3 → traigent-0.18.1.dev4}/traigent/utils/persistence.py +0 -0
  609. {traigent-0.18.1.dev3 → traigent-0.18.1.dev4}/traigent/utils/results_table.py +0 -0
  610. {traigent-0.18.1.dev3 → traigent-0.18.1.dev4}/traigent/utils/retry.py +0 -0
  611. {traigent-0.18.1.dev3 → traigent-0.18.1.dev4}/traigent/utils/secure_path.py +0 -0
  612. {traigent-0.18.1.dev3 → traigent-0.18.1.dev4}/traigent/utils/url_security.py +0 -0
  613. {traigent-0.18.1.dev3 → traigent-0.18.1.dev4}/traigent/utils/validation.py +0 -0
  614. {traigent-0.18.1.dev3 → traigent-0.18.1.dev4}/traigent/visualization/__init__.py +0 -0
  615. {traigent-0.18.1.dev3 → traigent-0.18.1.dev4}/traigent/visualization/plots.py +0 -0
  616. {traigent-0.18.1.dev3 → traigent-0.18.1.dev4}/traigent/wrapper/__init__.py +0 -0
  617. {traigent-0.18.1.dev3 → traigent-0.18.1.dev4}/traigent/wrapper/errors.py +0 -0
  618. {traigent-0.18.1.dev3 → traigent-0.18.1.dev4}/traigent/wrapper/server.py +0 -0
  619. {traigent-0.18.1.dev3 → traigent-0.18.1.dev4}/traigent/wrapper/service.py +0 -0
  620. {traigent-0.18.1.dev3 → traigent-0.18.1.dev4}/traigent.egg-info/SOURCES.txt +0 -0
  621. {traigent-0.18.1.dev3 → traigent-0.18.1.dev4}/traigent.egg-info/dependency_links.txt +0 -0
  622. {traigent-0.18.1.dev3 → traigent-0.18.1.dev4}/traigent.egg-info/entry_points.txt +0 -0
  623. {traigent-0.18.1.dev3 → traigent-0.18.1.dev4}/traigent.egg-info/requires.txt +0 -0
  624. {traigent-0.18.1.dev3 → traigent-0.18.1.dev4}/traigent.egg-info/top_level.txt +0 -0
  625. {traigent-0.18.1.dev3 → traigent-0.18.1.dev4}/traigent_validation/__init__.py +0 -0
  626. {traigent-0.18.1.dev3 → traigent-0.18.1.dev4}/traigent_validation/base.py +0 -0
  627. {traigent-0.18.1.dev3 → traigent-0.18.1.dev4}/traigent_validation/plugins.py +0 -0
  628. {traigent-0.18.1.dev3 → traigent-0.18.1.dev4}/traigent_validation/py.typed +0 -0
  629. {traigent-0.18.1.dev3 → traigent-0.18.1.dev4}/traigent_validation/validators.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: traigent
3
- Version: 0.18.1.dev3
3
+ Version: 0.18.1.dev4
4
4
  Summary: Enterprise-grade LLM optimization platform with advanced analytics and AI-powered insights
5
5
  Author-email: Traigent Team <opensource@traigent.ai>
6
6
  License-Expression: AGPL-3.0-only OR LicenseRef-Traigent-Commercial
@@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"
4
4
 
5
5
  [project]
6
6
  name = "traigent"
7
- version = "0.18.1.dev3"
7
+ version = "0.18.1.dev4"
8
8
  authors = [
9
9
  {name = "Traigent Team", email = "opensource@traigent.ai"},
10
10
  ]
@@ -143,6 +143,32 @@ _EXAMPLE_INSIGHT_RECOMMENDED_ACTIONS = frozenset(
143
143
  }
144
144
  )
145
145
 
146
+ # Allowlists for nested aggregate fields in get_example_insights() — derived from
147
+ # BackendAnalyticsClient's RunExampleInsights Pydantic schema (ExampleInsightsSummary,
148
+ # ExampleInsightsCohort, ExampleInsightsRecommendation, ExampleInsightsRedactions in
149
+ # shared_infrastructure/schemas/run_analytics.py) and from the extended fixture in
150
+ # tests/unit/cloud/test_analytics_client.py (which documents count keys that the backend
151
+ # schema will expose in subsequent releases). All fields are coarse-aggregated, backend-
152
+ # redacted, and contain no proprietary per-example signals.
153
+ _EXAMPLE_INSIGHTS_SUMMARY_KEYS: frozenset[str] = frozenset(
154
+ {
155
+ "example_count",
156
+ "weak_example_count",
157
+ "unstable_example_count",
158
+ "suspicious_example_count",
159
+ "notable_example_count",
160
+ "stable_example_count",
161
+ "dataset_quality",
162
+ }
163
+ )
164
+ _EXAMPLE_INSIGHTS_COHORT_KEYS: frozenset[str] = frozenset(
165
+ {"kind", "count", "impact", "safe_example_refs", "recommendation"}
166
+ )
167
+ _EXAMPLE_INSIGHTS_RECOMMENDATION_KEYS: frozenset[str] = frozenset({"action", "reason"})
168
+ _EXAMPLE_INSIGHTS_REDACTIONS_KEYS: frozenset[str] = frozenset(
169
+ {"raw_proprietary_signals_hidden", "raw_prompt_text_hidden_by_default"}
170
+ )
171
+
146
172
 
147
173
  class AnalyticsClientError(RuntimeError):
148
174
  """Raised when the analytics backend returns a malformed response.
@@ -237,6 +263,21 @@ def _project_example_insight_row(row: Any, *, index: int) -> dict[str, Any]:
237
263
  }
238
264
 
239
265
 
266
+ def _project_aggregate(data: Any, keys: frozenset[str], *, what: str) -> dict[str, Any]:
267
+ """Project a mapping to its known-safe keys, dropping unknown/raw keys.
268
+
269
+ Unknown nested keys can carry proprietary signals or raw backend state.
270
+ This function is the nested-aggregate counterpart of the per-row construction
271
+ in :func:`_project_example_insight_row`: both rebuild output by allowlist so
272
+ nothing unknown can pass through regardless of what the backend sends.
273
+ """
274
+ if not isinstance(data, dict):
275
+ raise AnalyticsClientError(
276
+ f"Malformed example insights response: {what} must be an object."
277
+ )
278
+ return {k: v for k, v in data.items() if k in keys}
279
+
280
+
240
281
  def _quote_segment(value: str, *, field: str) -> str:
241
282
  """URL-encode a path segment, rejecting empty values up front.
242
283
 
@@ -666,18 +707,50 @@ class BackendAnalyticsClient:
666
707
  "Malformed example insights response: example_rows must contain "
667
708
  "at most 100 rows."
668
709
  )
710
+ cohorts_raw = payload["cohorts"]
711
+ if not isinstance(cohorts_raw, list):
712
+ raise AnalyticsClientError(
713
+ "Malformed example insights response: cohorts must be a list."
714
+ )
715
+ recommendations_raw = payload["recommendations"]
716
+ if not isinstance(recommendations_raw, list):
717
+ raise AnalyticsClientError(
718
+ "Malformed example insights response: recommendations must be a list."
719
+ )
669
720
 
670
721
  return {
671
722
  "run_id": payload["run_id"],
672
723
  "privacy_mode": payload["privacy_mode"],
673
- "summary": payload["summary"],
724
+ "summary": _project_aggregate(
725
+ payload["summary"],
726
+ _EXAMPLE_INSIGHTS_SUMMARY_KEYS,
727
+ what="summary",
728
+ ),
674
729
  "example_rows": [
675
730
  _project_example_insight_row(row, index=index)
676
731
  for index, row in enumerate(rows)
677
732
  ],
678
- "cohorts": payload["cohorts"],
679
- "recommendations": payload["recommendations"],
680
- "redactions": payload["redactions"],
733
+ "cohorts": [
734
+ _project_aggregate(
735
+ cohort,
736
+ _EXAMPLE_INSIGHTS_COHORT_KEYS,
737
+ what=f"cohorts[{i}]",
738
+ )
739
+ for i, cohort in enumerate(cohorts_raw)
740
+ ],
741
+ "recommendations": [
742
+ _project_aggregate(
743
+ rec,
744
+ _EXAMPLE_INSIGHTS_RECOMMENDATION_KEYS,
745
+ what=f"recommendations[{i}]",
746
+ )
747
+ for i, rec in enumerate(recommendations_raw)
748
+ ],
749
+ "redactions": _project_aggregate(
750
+ payload["redactions"],
751
+ _EXAMPLE_INSIGHTS_REDACTIONS_KEYS,
752
+ what="redactions",
753
+ ),
681
754
  }
682
755
 
683
756
 
@@ -94,6 +94,40 @@ class TraigentCloudService:
94
94
  if not request.configuration_space:
95
95
  raise ValidationException("configuration_space must not be empty")
96
96
 
97
+ # Detect boolean values before any network or compute work.
98
+ # bool is a subclass of int in Python; use type(v) is bool so that
99
+ # real ints/floats (including 0/1) are NOT mistakenly rejected.
100
+ # Catches booleans in ALL supported value shapes:
101
+ # - scalar bool: {"flag": True}
102
+ # - list/tuple of values: {"flag": [True, False]}
103
+ # - typed param dict: {"flag": {"type": "categorical", "choices": [True, False]}}
104
+ def _cs_value_contains_bool(value: Any) -> bool:
105
+ if type(value) is bool:
106
+ return True
107
+ if isinstance(value, (list, tuple)):
108
+ return any(type(v) is bool for v in value)
109
+ if isinstance(value, dict):
110
+ for _key in ("choices", "values"):
111
+ seq = value.get(_key)
112
+ if isinstance(seq, (list, tuple)) and any(
113
+ type(v) is bool for v in seq
114
+ ):
115
+ return True
116
+ return False
117
+
118
+ _bool_knobs = [
119
+ key
120
+ for key, value in request.configuration_space.items()
121
+ if _cs_value_contains_bool(value)
122
+ ]
123
+ if _bool_knobs:
124
+ _field_refs = ", ".join(f'"{k}"' for k in _bool_knobs)
125
+ raise ValidationException(
126
+ f"configuration_space[{_field_refs}]: boolean values are not "
127
+ f"supported by the cloud session API — encode as strings "
128
+ f'(e.g. "true"/"false") or 0/1'
129
+ )
130
+
97
131
  validate_or_raise(
98
132
  CoreValidators.validate_list(
99
133
  request.objectives,
@@ -71,6 +71,68 @@ def _get_session_creation_failure_detail(
71
71
  return None
72
72
 
73
73
 
74
+ # Transient signals: the SDK could not REACH/validate the backend (the auth
75
+ # layer fails closed on these for safety, but the run should still degrade
76
+ # gracefully as it did before, not hard-fail).
77
+ _AUTH_TRANSIENT_MARKERS = (
78
+ "timed out",
79
+ "timeout",
80
+ "transport error",
81
+ "rate limited",
82
+ "temporarily unavailable",
83
+ "service unavailable",
84
+ "connection",
85
+ )
86
+ # Definitive signals: the backend REJECTED the credential (user-actionable;
87
+ # fix the key). Only these fail closed.
88
+ _AUTH_REJECTION_MARKERS = (
89
+ "unauthorized",
90
+ "invalid api key",
91
+ "invalid_api_key",
92
+ "api_key_validation_failed",
93
+ "reported key invalid",
94
+ "revoked",
95
+ "forbidden",
96
+ "expired",
97
+ "permission",
98
+ )
99
+
100
+
101
+ def _is_definitive_auth_rejection(exc: Exception) -> bool:
102
+ """True only when an auth failure is a DEFINITIVE credential rejection.
103
+
104
+ A configured key that the backend rejected (invalid / revoked / expired /
105
+ unauthorized / forbidden — typically 401/403) is user-actionable and must
106
+ fail closed. A transient inability to validate the key (timeout / transport
107
+ error / 5xx / 429 during ``/keys/validate``) is NOT a rejection: the auth
108
+ layer fails closed on it for safety, but the optimization run should still
109
+ degrade gracefully (as before), not hard-fail. Ambiguous errors default to
110
+ NOT a rejection, preserving the prior resilient fallback.
111
+ """
112
+ # Primary source: the real session API attaches the HTTP status on the
113
+ # structured failure detail (api_operations._handle_session_error maps a
114
+ # 401/403 to AuthenticationError with exc.session_creation_failure). A bare
115
+ # exc.status_code is a secondary source.
116
+ detail = getattr(exc, "session_creation_failure", None)
117
+ detail_status = getattr(detail, "status_code", None)
118
+ if isinstance(detail_status, int) and detail_status in (401, 403):
119
+ return True
120
+ if isinstance(detail_status, int) and (
121
+ detail_status == 429 or detail_status >= 500
122
+ ):
123
+ return False
124
+ status = getattr(exc, "status_code", None)
125
+ if isinstance(status, int):
126
+ if status in (401, 403):
127
+ return True
128
+ if status == 429 or status >= 500:
129
+ return False
130
+ msg = str(exc).lower()
131
+ if any(marker in msg for marker in _AUTH_TRANSIENT_MARKERS):
132
+ return False
133
+ return any(marker in msg for marker in _AUTH_REJECTION_MARKERS)
134
+
135
+
74
136
  class SessionOperations:
75
137
  """Handles session management operations."""
76
138
 
@@ -97,6 +159,63 @@ class SessionOperations:
97
159
  """Validate that an integer is positive."""
98
160
  validate_or_raise(CoreValidators.validate_positive_int(value, field_name))
99
161
 
162
+ @staticmethod
163
+ def _config_value_contains_bool(value: Any) -> bool:
164
+ """Return True if a configuration_space value contains boolean(s).
165
+
166
+ Handles all supported parameter shapes:
167
+ - scalar bool: ``True`` / ``False``
168
+ - list/tuple of values containing a bool: ``[True, False]``
169
+ - typed/structured dict whose ``choices`` or ``values`` list contains a
170
+ bool: ``{"type": "categorical", "choices": [True, False]}``
171
+
172
+ Note: ``bool`` is a subclass of ``int`` in Python. We use
173
+ ``type(v) is bool`` so plain ints/floats (including 0/1) are NOT
174
+ rejected — only literal ``True``/``False`` values.
175
+ """
176
+ if type(value) is bool:
177
+ return True
178
+ if isinstance(value, (list, tuple)):
179
+ return any(type(v) is bool for v in value)
180
+ if isinstance(value, dict):
181
+ for key in ("choices", "values"):
182
+ seq = value.get(key)
183
+ if isinstance(seq, (list, tuple)) and any(type(v) is bool for v in seq):
184
+ return True
185
+ return False
186
+
187
+ @staticmethod
188
+ def _validate_configuration_space_no_bools(
189
+ space: dict[str, Any], field_name: str
190
+ ) -> None:
191
+ """Raise ValidationException when a parameter contains boolean values.
192
+
193
+ The cloud session API rejects boolean knobs with a generic HTTP 400
194
+ VALIDATION_ERROR that names no field. Catching the problem client-side
195
+ gives a clear, actionable error before any network round-trip.
196
+
197
+ Catches booleans in ALL supported configuration_space value shapes:
198
+ - scalar bool: ``{"flag": True}``
199
+ - list/tuple of values: ``{"flag": [True, False]}``
200
+ - typed param dict: ``{"flag": {"type": "categorical", "choices": [True, False]}}``
201
+
202
+ Note: ``bool`` is a subclass of ``int`` in Python. We use
203
+ ``type(v) is bool`` (not ``isinstance``) so plain ints and floats such
204
+ as 0/1 are NOT rejected — only literal ``True``/``False`` values.
205
+ """
206
+ offending = [
207
+ key
208
+ for key, value in space.items()
209
+ if SessionOperations._config_value_contains_bool(value)
210
+ ]
211
+ if offending:
212
+ field_refs = ", ".join(f'"{k}"' for k in offending)
213
+ raise ValidationException(
214
+ f"{field_name}[{field_refs}]: boolean values are not supported "
215
+ f"by the cloud session API — encode as strings "
216
+ f'(e.g. "true"/"false") or 0/1'
217
+ )
218
+
100
219
  def _raise_if_backend_egress_disabled(self, operation: str) -> None:
101
220
  """Fail closed before any backend HTTP request."""
102
221
 
@@ -321,6 +440,54 @@ class SessionOperations:
321
440
  storage_e,
322
441
  )
323
442
 
443
+ def _auth_fallback_result(
444
+ self,
445
+ exc: Exception,
446
+ fallback_id: str,
447
+ detail: str,
448
+ failure_response: SessionCreationFailureDetail | None,
449
+ function_name: str,
450
+ intends_cloud_egress: bool,
451
+ ) -> SessionCreationResult:
452
+ """Build the fallback result for a non-fail-loud AuthenticationError.
453
+
454
+ A run that INTENDS cloud egress but hit a non-definitive auth failure
455
+ (could-not-validate / transient) takes the UNREACHABLE contract: degrade
456
+ to LOCAL but FLAG it (degraded=True + SESSION_FAILED + WARN) so it is
457
+ never mistaken for a managed run. A LOCAL-routed run only ever wanted
458
+ OPTIONAL backend tracking, so a rejected/invalid key is irrelevant: it
459
+ continues untracked locally (degraded=False) — intentional local
460
+ execution, NOT a downgrade (#1421).
461
+ """
462
+ if intends_cloud_egress:
463
+ logger.warning(
464
+ "Managed session creation failed (could not validate credentials "
465
+ "— backend unreachable) for '%s'; degrading to LOCAL execution — "
466
+ "results are NOT tracked on the backend (set offline=True to make "
467
+ "this explicit): %s",
468
+ function_name,
469
+ exc,
470
+ )
471
+ return SessionCreationResult.fallback(
472
+ session_id=fallback_id,
473
+ reason=SessionCreationFailureReason.SESSION_FAILED,
474
+ detail=detail,
475
+ failure_response=failure_response,
476
+ degraded=True,
477
+ )
478
+ logger.warning(
479
+ "Backend tracking unavailable (auth) for local run '%s'; continuing "
480
+ "untracked locally: %s",
481
+ function_name,
482
+ exc,
483
+ )
484
+ return SessionCreationResult.fallback(
485
+ session_id=fallback_id,
486
+ reason=SessionCreationFailureReason.AUTH,
487
+ detail=detail,
488
+ failure_response=failure_response,
489
+ )
490
+
324
491
  def create_session(
325
492
  self,
326
493
  function_name: str,
@@ -350,6 +517,7 @@ class SessionOperations:
350
517
  """
351
518
  self._validate_non_empty_string(function_name, "function_name")
352
519
  self._validate_mapping(search_space, "search_space")
520
+ self._validate_configuration_space_no_bools(search_space, "configuration_space")
353
521
  self._validate_non_empty_string(optimization_goal, "optimization_goal")
354
522
  if metadata is not None and not isinstance(metadata, dict):
355
523
  raise ValidationException("metadata must be a dictionary if provided")
@@ -361,7 +529,32 @@ class SessionOperations:
361
529
  # misconfiguration, and old-BE typed rejection as success.
362
530
  governed = bool(promotion_policy or tvl_governance)
363
531
 
532
+ # Does this run actually INTEND cloud egress (managed / auto-cloud)? The
533
+ # backend session manager sets this from the runtime-resolved execution
534
+ # policy before calling us (mirrors the existing ``no_egress`` flag). A
535
+ # LOCAL-routed run (algorithm grid/random, offline, or runtime-resolved
536
+ # -to-local) creates a backend session only for OPTIONAL tracking — a
537
+ # configured-but-invalid/rejected key is irrelevant to it and must NOT
538
+ # hard-fail the local optimization. Default True keeps fail-closed for
539
+ # direct callers that do not declare intent. (#1421 regression.)
540
+ intends_cloud_egress = bool(getattr(self.client, "cloud_egress_intent", True))
541
+
364
542
  def _must_fail_loud(exc: Exception) -> bool:
543
+ # A DEFINITIVELY rejected credential (invalid / revoked / expired /
544
+ # unauthorized — a key WAS configured; the no-key path returns
545
+ # NO_API_KEY before any HTTP) is a user-actionable error on a run
546
+ # that INTENDS cloud egress: silently degrading such a managed run
547
+ # to a local/anonymous one would change execution semantics (managed
548
+ # Bayesian -> local search), drop the backend/billing/governance
549
+ # record, and present the degraded run as success — so fail closed.
550
+ # On a LOCAL-routed run the same rejected key is irrelevant (zero
551
+ # cloud egress), so do NOT fail loud. A *transient* failure to
552
+ # reach/validate the backend is never a rejection and still degrades
553
+ # gracefully (see _is_definitive_auth_rejection).
554
+ if isinstance(exc, AuthenticationError):
555
+ return governed or (
556
+ intends_cloud_egress and _is_definitive_auth_rejection(exc)
557
+ )
365
558
  return governed or isinstance(
366
559
  exc, (CloudEgressBlockedError, SessionContractError)
367
560
  )
@@ -578,27 +771,40 @@ class SessionOperations:
578
771
  await self._reset_client_session("create_session auth_failure")
579
772
  if _must_fail_loud(e):
580
773
  raise
581
- logger.warning("Backend auth failed for '%s': %s", function_name, e)
582
774
  failure_response = _get_session_creation_failure_detail(e)
583
775
  fallback_id = self._create_local_fallback_session(
584
776
  function_name, search_space, optimization_goal, metadata
585
777
  )
586
- return SessionCreationResult.fallback(
587
- session_id=fallback_id,
588
- reason=SessionCreationFailureReason.AUTH,
589
- detail=(
590
- failure_response.one_line_summary()
591
- if failure_response
592
- else str(e)[:200]
593
- ),
594
- failure_response=failure_response,
778
+ detail = (
779
+ failure_response.one_line_summary()
780
+ if failure_response
781
+ else str(e)[:200]
782
+ )
783
+ return self._auth_fallback_result(
784
+ e,
785
+ fallback_id,
786
+ detail,
787
+ failure_response,
788
+ function_name,
789
+ intends_cloud_egress,
595
790
  )
596
791
 
597
792
  except (TimeoutError, CloudServiceError, OSError) as e:
598
793
  await self._reset_client_session("create_session fallback")
599
794
  if _must_fail_loud(e):
600
795
  raise
601
- logger.debug("Backend unavailable for '%s': %s", function_name, e)
796
+ # A configured key intended a managed/cloud run, but the backend
797
+ # was unreachable. We degrade to LOCAL execution for resilience —
798
+ # but this is a DOWNGRADE (managed search/tracking is lost), so
799
+ # surface it at WARNING and flag degraded=True on the result so a
800
+ # caller never mistakes the local run for a managed one.
801
+ logger.warning(
802
+ "Managed session creation failed (backend unreachable) for "
803
+ "'%s'; degrading to LOCAL execution — results are NOT tracked "
804
+ "on the backend (set offline=True to make this explicit): %s",
805
+ function_name,
806
+ e,
807
+ )
602
808
  failure_response = _get_session_creation_failure_detail(e)
603
809
  fallback_id = self._create_local_fallback_session(
604
810
  function_name, search_space, optimization_goal, metadata
@@ -616,6 +822,7 @@ class SessionOperations:
616
822
  typed_legacy_session_create_400=bool(
617
823
  getattr(e, "typed_legacy_session_create_400", False)
618
824
  ),
825
+ degraded=True,
619
826
  )
620
827
 
621
828
  # Run async method in sync context
@@ -644,39 +851,41 @@ class SessionOperations:
644
851
  except AuthenticationError as exc:
645
852
  if _must_fail_loud(exc):
646
853
  raise
647
- # Issue #1373 (the "outer create_session swallow"): an auth/scope
648
- # failure that ESCAPES _create_session_async (e.g. from the
649
- # has_api_key preflight, or the async-runner machinery) on a
650
- # non-governed run must NOT fall to debug-only a failed publish
651
- # would be invisible at the default log level. Mirror the inner
652
- # sibling (~:573) and surface at WARNING. The two sites are
653
- # mutually exclusive per failure (a single AuthenticationError is
654
- # caught by exactly one handler), so this does not double-log.
655
- logger.warning(
656
- "Backend auth failed for '%s': %s",
657
- function_name,
658
- exc,
659
- )
854
+ # Issue #1373 "outer create_session swallow": an auth failure that
855
+ # ESCAPES _create_session_async (e.g. the has_api_key preflight or
856
+ # the async-runner machinery). A DEFINITIVE rejection on a cloud-
857
+ # intended run fails loud above. Reaching here is a non-definitive
858
+ # auth failure OR a LOCAL-routed run both handled by the shared
859
+ # helper (cloud-intent: degrade+flag; local: continue untracked).
860
+ # The two auth sites are mutually exclusive per failure.
660
861
  failure_response = _get_session_creation_failure_detail(exc)
661
862
  fallback_id = self._create_local_fallback_session(
662
863
  function_name, search_space, optimization_goal, metadata
663
864
  )
664
- return SessionCreationResult.fallback(
665
- session_id=fallback_id,
666
- reason=SessionCreationFailureReason.AUTH,
667
- detail=(
668
- failure_response.one_line_summary()
669
- if failure_response
670
- else str(exc)[:200]
671
- ),
672
- failure_response=failure_response,
865
+ detail = (
866
+ failure_response.one_line_summary()
867
+ if failure_response
868
+ else str(exc)[:200]
869
+ )
870
+ return self._auth_fallback_result(
871
+ exc,
872
+ fallback_id,
873
+ detail,
874
+ failure_response,
875
+ function_name,
876
+ intends_cloud_egress,
673
877
  )
674
878
 
675
879
  except (TimeoutError, CloudServiceError, OSError) as exc:
676
880
  if _must_fail_loud(exc):
677
881
  raise
678
- logger.debug(
679
- "Error in create_session for function '%s': %s",
882
+ # Backend unreachable on the outer path — same downgrade semantics as
883
+ # the inner sibling: WARN + flag degraded so the local run is never
884
+ # mistaken for a managed one.
885
+ logger.warning(
886
+ "Managed session creation failed (backend unreachable) for '%s'; "
887
+ "degrading to LOCAL execution — results are NOT tracked on the "
888
+ "backend (set offline=True to make this explicit): %s",
680
889
  function_name,
681
890
  exc,
682
891
  )
@@ -694,6 +903,7 @@ class SessionOperations:
694
903
  reason=SessionCreationFailureReason.SESSION_FAILED,
695
904
  detail=detail,
696
905
  failure_response=failure_response,
906
+ degraded=True,
697
907
  )
698
908
 
699
909
  except Exception as exc:
@@ -703,8 +913,11 @@ class SessionOperations:
703
913
  # governed/contract failures, which must stay loud.
704
914
  if _must_fail_loud(exc):
705
915
  raise
706
- logger.debug(
707
- "Unexpected error in create_session for function '%s': %s",
916
+ # An unexpected error that degrades a managed run to local is still a
917
+ # downgrade surface at WARNING and flag degraded (was debug-only).
918
+ logger.warning(
919
+ "Unexpected error in create_session for '%s'; degrading to LOCAL "
920
+ "execution — results are NOT tracked on the backend: %s",
708
921
  function_name,
709
922
  exc,
710
923
  )
@@ -715,6 +928,7 @@ class SessionOperations:
715
928
  session_id=fallback_id,
716
929
  reason=SessionCreationFailureReason.SESSION_FAILED,
717
930
  detail=str(exc)[:200],
931
+ degraded=True,
718
932
  )
719
933
 
720
934
  async def create_hybrid_session(
@@ -62,12 +62,21 @@ class APIKeyManager:
62
62
  "openai": "OPENAI_API_KEY",
63
63
  "anthropic": "ANTHROPIC_API_KEY",
64
64
  "cohere": "COHERE_API_KEY",
65
- "huggingface": "HF_API_KEY",
65
+ # HuggingFace: native HF_TOKEN first; HF_API_KEY kept for back-compat
66
+ "huggingface": "HF_TOKEN",
66
67
  }
67
68
 
68
69
  # Check environment first (most secure)
69
70
  if provider in env_names:
70
- env_key = os.getenv(env_names[provider])
71
+ if provider == "huggingface":
72
+ # Native-first alias chain: HF_TOKEN -> HUGGING_FACE_HUB_TOKEN -> HF_API_KEY
73
+ env_key = (
74
+ os.getenv("HF_TOKEN")
75
+ or os.getenv("HUGGING_FACE_HUB_TOKEN")
76
+ or os.getenv("HF_API_KEY")
77
+ )
78
+ else:
79
+ env_key = os.getenv(env_names[provider])
71
80
  if env_key:
72
81
  return env_key
73
82
 
@@ -760,6 +760,17 @@ class BackendSessionManager:
760
760
  if slug_hash:
761
761
  portal_name = f"{portal_name} ({slug_hash})"
762
762
 
763
+ # Tell create_session whether this run actually INTENDS cloud egress
764
+ # (managed / auto-cloud) vs. a LOCAL-routed run (grid/random/offline/
765
+ # runtime-resolved-to-local) that only wants OPTIONAL backend
766
+ # tracking. A configured-but-invalid/rejected key must fail closed
767
+ # for the former but must NOT hard-fail the latter (#1421). Mirrors
768
+ # the existing ``no_egress`` flag set on the same client.
769
+ _policy = policy_from_config(self._traigent_config)
770
+ self._backend_client.cloud_egress_intent = bool(
771
+ policy_requires_cloud(_policy) or policy_is_cloud_brain(_policy)
772
+ )
773
+
763
774
  raw_result = self._backend_client.create_session(
764
775
  function_name=portal_name,
765
776
  search_space=getattr(self._optimizer, "config_space", {}),
@@ -1447,9 +1458,8 @@ class BackendSessionManager:
1447
1458
  result.metadata.get("statistical_significance") if result.metadata else None
1448
1459
  )
1449
1460
  if stat_sig:
1450
- summary_stats_with_aggregation["metadata"]["statistical_significance"] = (
1451
- stat_sig
1452
- )
1461
+ agg_meta = summary_stats_with_aggregation["metadata"]
1462
+ agg_meta["statistical_significance"] = stat_sig
1453
1463
 
1454
1464
  try:
1455
1465
  successful_trials = len([t for t in result.trials if t.is_successful])
@@ -115,6 +115,16 @@ class SessionCreationResult:
115
115
  project_id: str | None = None
116
116
  tenant_id: str | None = None
117
117
  typed_legacy_session_create_400: bool = False
118
+ # Execution-path transparency (so a caller never mistakes a local run for a
119
+ # managed/cloud one). ``execution_path`` is "connected" for a real backend
120
+ # session and "local_fallback" for any local result. ``backend_fallback`` is
121
+ # True whenever the run is local. ``degraded`` is True ONLY when the user
122
+ # intended a managed/cloud run but the backend was unreachable and we fell
123
+ # back to local — it stays False for intentional local execution (offline
124
+ # mode / no API key), which is a deliberate configuration, not a downgrade.
125
+ execution_path: str | None = None
126
+ backend_fallback: bool = False
127
+ degraded: bool = False
118
128
 
119
129
  def __str__(self) -> str:
120
130
  """Return the session ID string for backwards compatibility.
@@ -145,6 +155,9 @@ class SessionCreationResult:
145
155
  backend_connected=True,
146
156
  project_id=project_id,
147
157
  tenant_id=tenant_id,
158
+ execution_path="connected",
159
+ backend_fallback=False,
160
+ degraded=False,
148
161
  )
149
162
 
150
163
  @classmethod
@@ -155,8 +168,15 @@ class SessionCreationResult:
155
168
  detail: str | None = None,
156
169
  failure_response: SessionCreationFailureDetail | None = None,
157
170
  typed_legacy_session_create_400: bool = False,
171
+ degraded: bool = False,
158
172
  ) -> SessionCreationResult:
159
- """Factory for a local-fallback session after backend failure."""
173
+ """Factory for a local-fallback session after backend failure.
174
+
175
+ ``degraded`` must be set True by callers where the user intended a
176
+ managed/cloud run but the backend was unreachable (an unintended
177
+ downgrade); it stays False for intentional local execution (offline
178
+ mode / no API key configured).
179
+ """
160
180
  return cls(
161
181
  session_id=session_id,
162
182
  backend_connected=False,
@@ -164,4 +184,7 @@ class SessionCreationResult:
164
184
  failure_detail=detail,
165
185
  failure_response=failure_response,
166
186
  typed_legacy_session_create_400=typed_legacy_session_create_400,
187
+ execution_path="local_fallback",
188
+ backend_fallback=True,
189
+ degraded=degraded,
167
190
  )