traigent 0.18.0__tar.gz → 0.18.1.dev0__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 (628) hide show
  1. {traigent-0.18.0/traigent.egg-info → traigent-0.18.1.dev0}/PKG-INFO +1 -1
  2. {traigent-0.18.0 → traigent-0.18.1.dev0}/pyproject.toml +1 -1
  3. {traigent-0.18.0 → traigent-0.18.1.dev0}/traigent/analytics/cost_optimization.py +3 -3
  4. {traigent-0.18.0 → traigent-0.18.1.dev0}/traigent/analytics/next_steps.py +2 -1
  5. {traigent-0.18.0 → traigent-0.18.1.dev0}/traigent/analytics/predictive.py +6 -2
  6. {traigent-0.18.0 → traigent-0.18.1.dev0}/traigent/cli/next_steps_command.py +6 -0
  7. {traigent-0.18.0 → traigent-0.18.1.dev0}/traigent/cloud/api_key_manager.py +13 -13
  8. {traigent-0.18.0 → traigent-0.18.1.dev0}/traigent/cloud/api_operations.py +23 -0
  9. {traigent-0.18.0 → traigent-0.18.1.dev0}/traigent/cloud/backend_client.py +326 -1
  10. {traigent-0.18.0 → traigent-0.18.1.dev0}/traigent/cloud/client.py +18 -0
  11. {traigent-0.18.0 → traigent-0.18.1.dev0}/traigent/cloud/models.py +2 -0
  12. {traigent-0.18.0 → traigent-0.18.1.dev0}/traigent/cloud/session_operations.py +4 -0
  13. {traigent-0.18.0 → traigent-0.18.1.dev0}/traigent/config_generator/presets/range_presets.py +96 -96
  14. {traigent-0.18.0 → traigent-0.18.1.dev0}/traigent/config_generator/recommendations.py +2 -4
  15. {traigent-0.18.0 → traigent-0.18.1.dev0}/traigent/core/backend_session_manager.py +4 -0
  16. {traigent-0.18.0 → traigent-0.18.1.dev0}/traigent/core/optimized_function.py +49 -0
  17. {traigent-0.18.0 → traigent-0.18.1.dev0}/traigent/core/orchestrator.py +6 -0
  18. {traigent-0.18.0 → traigent-0.18.1.dev0}/traigent/core/sample_budget.py +1 -3
  19. {traigent-0.18.0 → traigent-0.18.1.dev0}/traigent/integrations/langfuse/__init__.py +18 -18
  20. {traigent-0.18.0 → traigent-0.18.1.dev0}/traigent/integrations/langfuse/client.py +18 -18
  21. {traigent-0.18.0 → traigent-0.18.1.dev0}/traigent/integrations/plugin_registry.py +3 -3
  22. {traigent-0.18.0 → traigent-0.18.1.dev0}/traigent/integrations/pydantic_ai/__init__.py +4 -4
  23. {traigent-0.18.0 → traigent-0.18.1.dev0}/traigent/integrations/pydantic_ai/handler.py +4 -4
  24. {traigent-0.18.0 → traigent-0.18.1.dev0}/traigent/invokers/streaming.py +9 -9
  25. {traigent-0.18.0 → traigent-0.18.1.dev0}/traigent/knobs/cascade.py +1 -2
  26. {traigent-0.18.0 → traigent-0.18.1.dev0}/traigent/optimizers/interactive_optimizer.py +6 -0
  27. {traigent-0.18.0 → traigent-0.18.1.dev0}/traigent/security/audit.py +1 -2
  28. {traigent-0.18.0 → traigent-0.18.1.dev0}/traigent/security/auth/models.py +9 -9
  29. {traigent-0.18.0 → traigent-0.18.1.dev0}/traigent/security/auth/saml.py +5 -5
  30. traigent-0.18.1.dev0/traigent/utils/artifact_fingerprints.py +349 -0
  31. {traigent-0.18.0 → traigent-0.18.1.dev0}/traigent/utils/secure_path.py +1 -3
  32. {traigent-0.18.0 → traigent-0.18.1.dev0/traigent.egg-info}/PKG-INFO +1 -1
  33. {traigent-0.18.0 → traigent-0.18.1.dev0}/traigent.egg-info/SOURCES.txt +1 -0
  34. {traigent-0.18.0 → traigent-0.18.1.dev0}/CHANGELOG.md +0 -0
  35. {traigent-0.18.0 → traigent-0.18.1.dev0}/COMMERCIAL-LICENSE.md +0 -0
  36. {traigent-0.18.0 → traigent-0.18.1.dev0}/CONTRIBUTING.md +0 -0
  37. {traigent-0.18.0 → traigent-0.18.1.dev0}/CONTRIBUTOR-LICENSING.md +0 -0
  38. {traigent-0.18.0 → traigent-0.18.1.dev0}/DISCLAIMER.md +0 -0
  39. {traigent-0.18.0 → traigent-0.18.1.dev0}/LICENSE +0 -0
  40. {traigent-0.18.0 → traigent-0.18.1.dev0}/MANIFEST.in +0 -0
  41. {traigent-0.18.0 → traigent-0.18.1.dev0}/NOTICE +0 -0
  42. {traigent-0.18.0 → traigent-0.18.1.dev0}/README.md +0 -0
  43. {traigent-0.18.0 → traigent-0.18.1.dev0}/SECURITY.md +0 -0
  44. {traigent-0.18.0 → traigent-0.18.1.dev0}/docs/LOCAL_CI_GATE.md +0 -0
  45. {traigent-0.18.0 → traigent-0.18.1.dev0}/docs/README.md +0 -0
  46. {traigent-0.18.0 → traigent-0.18.1.dev0}/docs/SYNC_MAP.md +0 -0
  47. {traigent-0.18.0 → traigent-0.18.1.dev0}/docs/agent-skill.md +0 -0
  48. {traigent-0.18.0 → traigent-0.18.1.dev0}/docs/api-reference/complete-function-specification.md +0 -0
  49. {traigent-0.18.0 → traigent-0.18.1.dev0}/docs/api-reference/decorator-reference.md +0 -0
  50. {traigent-0.18.0 → traigent-0.18.1.dev0}/docs/api-reference/enterprise-beta-api.md +0 -0
  51. {traigent-0.18.0 → traigent-0.18.1.dev0}/docs/api-reference/interactive_optimizer.md +0 -0
  52. {traigent-0.18.0 → traigent-0.18.1.dev0}/docs/api-reference/telemetry.md +0 -0
  53. {traigent-0.18.0 → traigent-0.18.1.dev0}/docs/api-reference/thread-pool-examples.md +0 -0
  54. {traigent-0.18.0 → traigent-0.18.1.dev0}/docs/architecture/ARCHITECTURE.md +0 -0
  55. {traigent-0.18.0 → traigent-0.18.1.dev0}/docs/architecture/cost-architecture-validation.md +0 -0
  56. {traigent-0.18.0 → traigent-0.18.1.dev0}/docs/architecture/execution_mode_follow_up.md +0 -0
  57. {traigent-0.18.0 → traigent-0.18.1.dev0}/docs/architecture/integrations-inventory.md +0 -0
  58. {traigent-0.18.0 → traigent-0.18.1.dev0}/docs/architecture/plugin_architecture.md +0 -0
  59. {traigent-0.18.0 → traigent-0.18.1.dev0}/docs/architecture/project-structure.md +0 -0
  60. {traigent-0.18.0 → traigent-0.18.1.dev0}/docs/architecture/stop_conditions.md +0 -0
  61. {traigent-0.18.0 → traigent-0.18.1.dev0}/docs/concepts/composite-knob-ir.md +0 -0
  62. {traigent-0.18.0 → traigent-0.18.1.dev0}/docs/concepts/composite-knobs.md +0 -0
  63. {traigent-0.18.0 → traigent-0.18.1.dev0}/docs/concepts/guided-generation.md +0 -0
  64. {traigent-0.18.0 → traigent-0.18.1.dev0}/docs/contributing/ADDING_NEW_INTEGRATIONS.md +0 -0
  65. {traigent-0.18.0 → traigent-0.18.1.dev0}/docs/contributing/CODE_OF_CONDUCT.md +0 -0
  66. {traigent-0.18.0 → traigent-0.18.1.dev0}/docs/contributing/CONTRIBUTING.md +0 -0
  67. {traigent-0.18.0 → traigent-0.18.1.dev0}/docs/contributing/EXAMPLE_TEMPLATE.md +0 -0
  68. {traigent-0.18.0 → traigent-0.18.1.dev0}/docs/contributing/README.md +0 -0
  69. {traigent-0.18.0 → traigent-0.18.1.dev0}/docs/contributing/SECURITY.md +0 -0
  70. {traigent-0.18.0 → traigent-0.18.1.dev0}/docs/contributing/aikido_triage.md +0 -0
  71. {traigent-0.18.0 → traigent-0.18.1.dev0}/docs/contributing/code_review_instructions.md +0 -0
  72. {traigent-0.18.0 → traigent-0.18.1.dev0}/docs/contributing/test-quality-guide.md +0 -0
  73. {traigent-0.18.0 → traigent-0.18.1.dev0}/docs/demos/DEMO_VIDEO_GUIDE.md +0 -0
  74. {traigent-0.18.0 → traigent-0.18.1.dev0}/docs/demos/README.md +0 -0
  75. {traigent-0.18.0 → traigent-0.18.1.dev0}/docs/examples/API_PATTERNS.md +0 -0
  76. {traigent-0.18.0 → traigent-0.18.1.dev0}/docs/examples/LEARNING_ROADMAP.md +0 -0
  77. {traigent-0.18.0 → traigent-0.18.1.dev0}/docs/examples/QUICK_REFERENCE.md +0 -0
  78. {traigent-0.18.0 → traigent-0.18.1.dev0}/docs/examples/README.md +0 -0
  79. {traigent-0.18.0 → traigent-0.18.1.dev0}/docs/examples/START_HERE.md +0 -0
  80. {traigent-0.18.0 → traigent-0.18.1.dev0}/docs/examples/TROUBLESHOOTING.md +0 -0
  81. {traigent-0.18.0 → traigent-0.18.1.dev0}/docs/fake-completion-tracking.md +0 -0
  82. {traigent-0.18.0 → traigent-0.18.1.dev0}/docs/feature_matrices/README.md +0 -0
  83. {traigent-0.18.0 → traigent-0.18.1.dev0}/docs/features/README.md +0 -0
  84. {traigent-0.18.0 → traigent-0.18.1.dev0}/docs/features/authentication.md +0 -0
  85. {traigent-0.18.0 → traigent-0.18.1.dev0}/docs/features/constraint-dsl.md +0 -0
  86. {traigent-0.18.0 → traigent-0.18.1.dev0}/docs/features/dataflow-detection.md +0 -0
  87. {traigent-0.18.0 → traigent-0.18.1.dev0}/docs/features/framework_override_enhanced_features.md +0 -0
  88. {traigent-0.18.0 → traigent-0.18.1.dev0}/docs/features/mcp-server.md +0 -0
  89. {traigent-0.18.0 → traigent-0.18.1.dev0}/docs/features/observability-spans.md +0 -0
  90. {traigent-0.18.0 → traigent-0.18.1.dev0}/docs/features/onboarding.md +0 -0
  91. {traigent-0.18.0 → traigent-0.18.1.dev0}/docs/features/prompt_management.md +0 -0
  92. {traigent-0.18.0 → traigent-0.18.1.dev0}/docs/features/recommendations.md +0 -0
  93. {traigent-0.18.0 → traigent-0.18.1.dev0}/docs/features/safety-gates.md +0 -0
  94. {traigent-0.18.0 → traigent-0.18.1.dev0}/docs/features/seamless_injection.md +0 -0
  95. {traigent-0.18.0 → traigent-0.18.1.dev0}/docs/features/strategy-presets.md +0 -0
  96. {traigent-0.18.0 → traigent-0.18.1.dev0}/docs/features/strict_metrics_nulls.md +0 -0
  97. {traigent-0.18.0 → traigent-0.18.1.dev0}/docs/getting-started/GETTING_STARTED.md +0 -0
  98. {traigent-0.18.0 → traigent-0.18.1.dev0}/docs/getting-started/README.md +0 -0
  99. {traigent-0.18.0 → traigent-0.18.1.dev0}/docs/getting-started/installation.md +0 -0
  100. {traigent-0.18.0 → traigent-0.18.1.dev0}/docs/getting-started/minimal-integration.md +0 -0
  101. {traigent-0.18.0 → traigent-0.18.1.dev0}/docs/getting-started/portal-dev-laptop-agent.md +0 -0
  102. {traigent-0.18.0 → traigent-0.18.1.dev0}/docs/getting-started/testing.md +0 -0
  103. {traigent-0.18.0 → traigent-0.18.1.dev0}/docs/guides/VSCODE_RESTART_GUIDE.md +0 -0
  104. {traigent-0.18.0 → traigent-0.18.1.dev0}/docs/guides/evaluation.md +0 -0
  105. {traigent-0.18.0 → traigent-0.18.1.dev0}/docs/guides/execution-mode-migration.md +0 -0
  106. {traigent-0.18.0 → traigent-0.18.1.dev0}/docs/guides/execution-modes.md +0 -0
  107. {traigent-0.18.0 → traigent-0.18.1.dev0}/docs/guides/js-bridge.md +0 -0
  108. {traigent-0.18.0 → traigent-0.18.1.dev0}/docs/guides/llm_plugin_migration_guide.md +0 -0
  109. {traigent-0.18.0 → traigent-0.18.1.dev0}/docs/guides/parallel-configuration.md +0 -0
  110. {traigent-0.18.0 → traigent-0.18.1.dev0}/docs/guides/secrets_management.md +0 -0
  111. {traigent-0.18.0 → traigent-0.18.1.dev0}/docs/hybrid-mode-api-contract.md +0 -0
  112. {traigent-0.18.0 → traigent-0.18.1.dev0}/docs/hybrid-mode-client-guide.md +0 -0
  113. {traigent-0.18.0 → traigent-0.18.1.dev0}/docs/operations/azure_openai.md +0 -0
  114. {traigent-0.18.0 → traigent-0.18.1.dev0}/docs/operations/bedrock.md +0 -0
  115. {traigent-0.18.0 → traigent-0.18.1.dev0}/docs/operations/google_gemini.md +0 -0
  116. {traigent-0.18.0 → traigent-0.18.1.dev0}/docs/security/trust_model.md +0 -0
  117. {traigent-0.18.0 → traigent-0.18.1.dev0}/docs/testing/CREATIVE_STRESS_TESTING.md +0 -0
  118. {traigent-0.18.0 → traigent-0.18.1.dev0}/docs/traceability/concepts/composite-knob-ir.md +0 -0
  119. {traigent-0.18.0 → traigent-0.18.1.dev0}/docs/traceability/concepts/composite-knobs.md +0 -0
  120. {traigent-0.18.0 → traigent-0.18.1.dev0}/docs/traceability/concepts/guided-generation.md +0 -0
  121. {traigent-0.18.0 → traigent-0.18.1.dev0}/docs/traceability/schema.md +0 -0
  122. {traigent-0.18.0 → traigent-0.18.1.dev0}/docs/traceability/tagging_tracking.md +0 -0
  123. {traigent-0.18.0 → traigent-0.18.1.dev0}/docs/traceability/taxonomy_reference.md +0 -0
  124. {traigent-0.18.0 → traigent-0.18.1.dev0}/docs/tvl/CONSTRAINT_EXPRESSIONS.md +0 -0
  125. {traigent-0.18.0 → traigent-0.18.1.dev0}/docs/user-guide/README.md +0 -0
  126. {traigent-0.18.0 → traigent-0.18.1.dev0}/docs/user-guide/agent_optimization.md +0 -0
  127. {traigent-0.18.0 → traigent-0.18.1.dev0}/docs/user-guide/choosing_optimization_model.md +0 -0
  128. {traigent-0.18.0 → traigent-0.18.1.dev0}/docs/user-guide/configuration-spaces.md +0 -0
  129. {traigent-0.18.0 → traigent-0.18.1.dev0}/docs/user-guide/evaluation_guide.md +0 -0
  130. {traigent-0.18.0 → traigent-0.18.1.dev0}/docs/user-guide/injection_modes.md +0 -0
  131. {traigent-0.18.0 → traigent-0.18.1.dev0}/docs/user-guide/interactive_optimization.md +0 -0
  132. {traigent-0.18.0 → traigent-0.18.1.dev0}/docs/user-guide/smart_optimization.md +0 -0
  133. {traigent-0.18.0 → traigent-0.18.1.dev0}/docs/user-guide/tuned_variables.md +0 -0
  134. {traigent-0.18.0 → traigent-0.18.1.dev0}/docs/walkthrough.md +0 -0
  135. {traigent-0.18.0 → traigent-0.18.1.dev0}/requirements/requirements-all.txt +0 -0
  136. {traigent-0.18.0 → traigent-0.18.1.dev0}/requirements/requirements-analytics.txt +0 -0
  137. {traigent-0.18.0 → traigent-0.18.1.dev0}/requirements/requirements-bayesian.txt +0 -0
  138. {traigent-0.18.0 → traigent-0.18.1.dev0}/requirements/requirements-chroma.txt +0 -0
  139. {traigent-0.18.0 → traigent-0.18.1.dev0}/requirements/requirements-dev.txt +0 -0
  140. {traigent-0.18.0 → traigent-0.18.1.dev0}/requirements/requirements-hybrid.txt +0 -0
  141. {traigent-0.18.0 → traigent-0.18.1.dev0}/requirements/requirements-integrations.txt +0 -0
  142. {traigent-0.18.0 → traigent-0.18.1.dev0}/requirements/requirements-security.txt +0 -0
  143. {traigent-0.18.0 → traigent-0.18.1.dev0}/requirements/requirements-test.txt +0 -0
  144. {traigent-0.18.0 → traigent-0.18.1.dev0}/requirements/requirements.txt +0 -0
  145. {traigent-0.18.0 → traigent-0.18.1.dev0}/setup.cfg +0 -0
  146. {traigent-0.18.0 → traigent-0.18.1.dev0}/traigent/__init__.py +0 -0
  147. {traigent-0.18.0 → traigent-0.18.1.dev0}/traigent/_version.py +0 -0
  148. {traigent-0.18.0 → traigent-0.18.1.dev0}/traigent/adapters/execution_adapter.py +0 -0
  149. {traigent-0.18.0 → traigent-0.18.1.dev0}/traigent/admin/__init__.py +0 -0
  150. {traigent-0.18.0 → traigent-0.18.1.dev0}/traigent/admin/client.py +0 -0
  151. {traigent-0.18.0 → traigent-0.18.1.dev0}/traigent/admin/config.py +0 -0
  152. {traigent-0.18.0 → traigent-0.18.1.dev0}/traigent/admin/dtos.py +0 -0
  153. {traigent-0.18.0 → traigent-0.18.1.dev0}/traigent/agents/__init__.py +0 -0
  154. {traigent-0.18.0 → traigent-0.18.1.dev0}/traigent/agents/config_mapper.py +0 -0
  155. {traigent-0.18.0 → traigent-0.18.1.dev0}/traigent/agents/executor.py +0 -0
  156. {traigent-0.18.0 → traigent-0.18.1.dev0}/traigent/agents/platforms.py +0 -0
  157. {traigent-0.18.0 → traigent-0.18.1.dev0}/traigent/agents/specification_generator.py +0 -0
  158. {traigent-0.18.0 → traigent-0.18.1.dev0}/traigent/analytics/__init__.py +0 -0
  159. {traigent-0.18.0 → traigent-0.18.1.dev0}/traigent/analytics/anomaly.py +0 -0
  160. {traigent-0.18.0 → traigent-0.18.1.dev0}/traigent/analytics/example_insights.py +0 -0
  161. {traigent-0.18.0 → traigent-0.18.1.dev0}/traigent/analytics/intelligence.py +0 -0
  162. {traigent-0.18.0 → traigent-0.18.1.dev0}/traigent/analytics/meta_learning.py +0 -0
  163. {traigent-0.18.0 → traigent-0.18.1.dev0}/traigent/analytics/optimization_plan.py +0 -0
  164. {traigent-0.18.0 → traigent-0.18.1.dev0}/traigent/analytics/render.py +0 -0
  165. {traigent-0.18.0 → traigent-0.18.1.dev0}/traigent/analytics/scheduling.py +0 -0
  166. {traigent-0.18.0 → traigent-0.18.1.dev0}/traigent/analytics_mcp/__init__.py +0 -0
  167. {traigent-0.18.0 → traigent-0.18.1.dev0}/traigent/analytics_mcp/server.py +0 -0
  168. {traigent-0.18.0 → traigent-0.18.1.dev0}/traigent/analytics_mcp/tools.py +0 -0
  169. {traigent-0.18.0 → traigent-0.18.1.dev0}/traigent/api/__init__.py +0 -0
  170. {traigent-0.18.0 → traigent-0.18.1.dev0}/traigent/api/agent_inference.py +0 -0
  171. {traigent-0.18.0 → traigent-0.18.1.dev0}/traigent/api/config_builder.py +0 -0
  172. {traigent-0.18.0 → traigent-0.18.1.dev0}/traigent/api/config_space.py +0 -0
  173. {traigent-0.18.0 → traigent-0.18.1.dev0}/traigent/api/constraint_builders.py +0 -0
  174. {traigent-0.18.0 → traigent-0.18.1.dev0}/traigent/api/constraints.py +0 -0
  175. {traigent-0.18.0 → traigent-0.18.1.dev0}/traigent/api/decorators.py +0 -0
  176. {traigent-0.18.0 → traigent-0.18.1.dev0}/traigent/api/functions.py +0 -0
  177. {traigent-0.18.0 → traigent-0.18.1.dev0}/traigent/api/parameter_ranges.py +0 -0
  178. {traigent-0.18.0 → traigent-0.18.1.dev0}/traigent/api/parameter_validator.py +0 -0
  179. {traigent-0.18.0 → traigent-0.18.1.dev0}/traigent/api/safety.py +0 -0
  180. {traigent-0.18.0 → traigent-0.18.1.dev0}/traigent/api/strategy_presets.py +0 -0
  181. {traigent-0.18.0 → traigent-0.18.1.dev0}/traigent/api/types.py +0 -0
  182. {traigent-0.18.0 → traigent-0.18.1.dev0}/traigent/api/validation_protocol.py +0 -0
  183. {traigent-0.18.0 → traigent-0.18.1.dev0}/traigent/cli/__init__.py +0 -0
  184. {traigent-0.18.0 → traigent-0.18.1.dev0}/traigent/cli/auth_commands.py +0 -0
  185. {traigent-0.18.0 → traigent-0.18.1.dev0}/traigent/cli/detect_tvars_command.py +0 -0
  186. {traigent-0.18.0 → traigent-0.18.1.dev0}/traigent/cli/function_discovery.py +0 -0
  187. {traigent-0.18.0 → traigent-0.18.1.dev0}/traigent/cli/generate_config_command.py +0 -0
  188. {traigent-0.18.0 → traigent-0.18.1.dev0}/traigent/cli/hooks_commands.py +0 -0
  189. {traigent-0.18.0 → traigent-0.18.1.dev0}/traigent/cli/local_commands.py +0 -0
  190. {traigent-0.18.0 → traigent-0.18.1.dev0}/traigent/cli/main.py +0 -0
  191. {traigent-0.18.0 → traigent-0.18.1.dev0}/traigent/cli/onboard_commands.py +0 -0
  192. {traigent-0.18.0 → traigent-0.18.1.dev0}/traigent/cli/optimization_validator.py +0 -0
  193. {traigent-0.18.0 → traigent-0.18.1.dev0}/traigent/cli/plan_command.py +0 -0
  194. {traigent-0.18.0 → traigent-0.18.1.dev0}/traigent/cli/playbook_commands.py +0 -0
  195. {traigent-0.18.0 → traigent-0.18.1.dev0}/traigent/cli/sync_commands.py +0 -0
  196. {traigent-0.18.0 → traigent-0.18.1.dev0}/traigent/cli/validation_types.py +0 -0
  197. {traigent-0.18.0 → traigent-0.18.1.dev0}/traigent/cloud/__init__.py +0 -0
  198. {traigent-0.18.0 → traigent-0.18.1.dev0}/traigent/cloud/_aiohttp_compat.py +0 -0
  199. {traigent-0.18.0 → traigent-0.18.1.dev0}/traigent/cloud/agent_dtos.py +0 -0
  200. {traigent-0.18.0 → traigent-0.18.1.dev0}/traigent/cloud/analytics_auth.py +0 -0
  201. {traigent-0.18.0 → traigent-0.18.1.dev0}/traigent/cloud/analytics_client.py +0 -0
  202. {traigent-0.18.0 → traigent-0.18.1.dev0}/traigent/cloud/async_batch_transport.py +0 -0
  203. {traigent-0.18.0 → traigent-0.18.1.dev0}/traigent/cloud/auth.py +0 -0
  204. {traigent-0.18.0 → traigent-0.18.1.dev0}/traigent/cloud/backend_bridges.py +0 -0
  205. {traigent-0.18.0 → traigent-0.18.1.dev0}/traigent/cloud/backend_components.py +0 -0
  206. {traigent-0.18.0 → traigent-0.18.1.dev0}/traigent/cloud/backend_synchronizer.py +0 -0
  207. {traigent-0.18.0 → traigent-0.18.1.dev0}/traigent/cloud/benchmark_client.py +0 -0
  208. {traigent-0.18.0 → traigent-0.18.1.dev0}/traigent/cloud/billing.py +0 -0
  209. {traigent-0.18.0 → traigent-0.18.1.dev0}/traigent/cloud/cloud_operations.py +0 -0
  210. {traigent-0.18.0 → traigent-0.18.1.dev0}/traigent/cloud/credential_manager.py +0 -0
  211. {traigent-0.18.0 → traigent-0.18.1.dev0}/traigent/cloud/credential_resolver.py +0 -0
  212. {traigent-0.18.0 → traigent-0.18.1.dev0}/traigent/cloud/dataset_converter.py +0 -0
  213. {traigent-0.18.0 → traigent-0.18.1.dev0}/traigent/cloud/dtos.py +0 -0
  214. {traigent-0.18.0 → traigent-0.18.1.dev0}/traigent/cloud/governance.py +0 -0
  215. {traigent-0.18.0 → traigent-0.18.1.dev0}/traigent/cloud/integration_manager.py +0 -0
  216. {traigent-0.18.0 → traigent-0.18.1.dev0}/traigent/cloud/optimizer_client.py +0 -0
  217. {traigent-0.18.0 → traigent-0.18.1.dev0}/traigent/cloud/password_auth_handler.py +0 -0
  218. {traigent-0.18.0 → traigent-0.18.1.dev0}/traigent/cloud/privacy_operations.py +0 -0
  219. {traigent-0.18.0 → traigent-0.18.1.dev0}/traigent/cloud/production_mcp_client.py +0 -0
  220. {traigent-0.18.0 → traigent-0.18.1.dev0}/traigent/cloud/remote_guidance.py +0 -0
  221. {traigent-0.18.0 → traigent-0.18.1.dev0}/traigent/cloud/resilient_client.py +0 -0
  222. {traigent-0.18.0 → traigent-0.18.1.dev0}/traigent/cloud/service.py +0 -0
  223. {traigent-0.18.0 → traigent-0.18.1.dev0}/traigent/cloud/session_types.py +0 -0
  224. {traigent-0.18.0 → traigent-0.18.1.dev0}/traigent/cloud/sessions.py +0 -0
  225. {traigent-0.18.0 → traigent-0.18.1.dev0}/traigent/cloud/subset_selection.py +0 -0
  226. {traigent-0.18.0 → traigent-0.18.1.dev0}/traigent/cloud/sync_manager.py +0 -0
  227. {traigent-0.18.0 → traigent-0.18.1.dev0}/traigent/cloud/token_manager.py +0 -0
  228. {traigent-0.18.0 → traigent-0.18.1.dev0}/traigent/cloud/trial_operations.py +0 -0
  229. {traigent-0.18.0 → traigent-0.18.1.dev0}/traigent/cloud/trial_tracker.py +0 -0
  230. {traigent-0.18.0 → traigent-0.18.1.dev0}/traigent/cloud/url_security.py +0 -0
  231. {traigent-0.18.0 → traigent-0.18.1.dev0}/traigent/cloud/user_agent.py +0 -0
  232. {traigent-0.18.0 → traigent-0.18.1.dev0}/traigent/cloud/validators.py +0 -0
  233. {traigent-0.18.0 → traigent-0.18.1.dev0}/traigent/config/__init__.py +0 -0
  234. {traigent-0.18.0 → traigent-0.18.1.dev0}/traigent/config/api_keys.py +0 -0
  235. {traigent-0.18.0 → traigent-0.18.1.dev0}/traigent/config/ast_transformer.py +0 -0
  236. {traigent-0.18.0 → traigent-0.18.1.dev0}/traigent/config/backend_config.py +0 -0
  237. {traigent-0.18.0 → traigent-0.18.1.dev0}/traigent/config/context.py +0 -0
  238. {traigent-0.18.0 → traigent-0.18.1.dev0}/traigent/config/feature_flags.py +0 -0
  239. {traigent-0.18.0 → traigent-0.18.1.dev0}/traigent/config/models.yaml +0 -0
  240. {traigent-0.18.0 → traigent-0.18.1.dev0}/traigent/config/parallel.py +0 -0
  241. {traigent-0.18.0 → traigent-0.18.1.dev0}/traigent/config/project.py +0 -0
  242. {traigent-0.18.0 → traigent-0.18.1.dev0}/traigent/config/providers.py +0 -0
  243. {traigent-0.18.0 → traigent-0.18.1.dev0}/traigent/config/runtime_injector.py +0 -0
  244. {traigent-0.18.0 → traigent-0.18.1.dev0}/traigent/config/tenant.py +0 -0
  245. {traigent-0.18.0 → traigent-0.18.1.dev0}/traigent/config/types.py +0 -0
  246. {traigent-0.18.0 → traigent-0.18.1.dev0}/traigent/config_generator/__init__.py +0 -0
  247. {traigent-0.18.0 → traigent-0.18.1.dev0}/traigent/config_generator/agent_classifier.py +0 -0
  248. {traigent-0.18.0 → traigent-0.18.1.dev0}/traigent/config_generator/apply.py +0 -0
  249. {traigent-0.18.0 → traigent-0.18.1.dev0}/traigent/config_generator/catalog/schemas/tvar_catalog_entry_schema.json +0 -0
  250. {traigent-0.18.0 → traigent-0.18.1.dev0}/traigent/config_generator/catalog/schemas/tvar_observation_schema.json +0 -0
  251. {traigent-0.18.0 → traigent-0.18.1.dev0}/traigent/config_generator/catalog/schemas/tvar_value_recommendation_schema.json +0 -0
  252. {traigent-0.18.0 → traigent-0.18.1.dev0}/traigent/config_generator/catalog/tvar_catalog.v1.json +0 -0
  253. {traigent-0.18.0 → traigent-0.18.1.dev0}/traigent/config_generator/catalog.py +0 -0
  254. {traigent-0.18.0 → traigent-0.18.1.dev0}/traigent/config_generator/llm_backend.py +0 -0
  255. {traigent-0.18.0 → traigent-0.18.1.dev0}/traigent/config_generator/pipeline.py +0 -0
  256. {traigent-0.18.0 → traigent-0.18.1.dev0}/traigent/config_generator/presets/__init__.py +0 -0
  257. {traigent-0.18.0 → traigent-0.18.1.dev0}/traigent/config_generator/presets/agent_type_catalog.py +0 -0
  258. {traigent-0.18.0 → traigent-0.18.1.dev0}/traigent/config_generator/presets/benchmark_catalog.py +0 -0
  259. {traigent-0.18.0 → traigent-0.18.1.dev0}/traigent/config_generator/presets/constraint_templates.py +0 -0
  260. {traigent-0.18.0 → traigent-0.18.1.dev0}/traigent/config_generator/subsystems/__init__.py +0 -0
  261. {traigent-0.18.0 → traigent-0.18.1.dev0}/traigent/config_generator/subsystems/benchmarks.py +0 -0
  262. {traigent-0.18.0 → traigent-0.18.1.dev0}/traigent/config_generator/subsystems/objectives.py +0 -0
  263. {traigent-0.18.0 → traigent-0.18.1.dev0}/traigent/config_generator/subsystems/safety_constraints.py +0 -0
  264. {traigent-0.18.0 → traigent-0.18.1.dev0}/traigent/config_generator/subsystems/structural_constraints.py +0 -0
  265. {traigent-0.18.0 → traigent-0.18.1.dev0}/traigent/config_generator/subsystems/tvar_ranges.py +0 -0
  266. {traigent-0.18.0 → traigent-0.18.1.dev0}/traigent/config_generator/subsystems/tvar_recommendations.py +0 -0
  267. {traigent-0.18.0 → traigent-0.18.1.dev0}/traigent/config_generator/types.py +0 -0
  268. {traigent-0.18.0 → traigent-0.18.1.dev0}/traigent/core/__init__.py +0 -0
  269. {traigent-0.18.0 → traigent-0.18.1.dev0}/traigent/core/best_config_runtime.py +0 -0
  270. {traigent-0.18.0 → traigent-0.18.1.dev0}/traigent/core/cache_policy.py +0 -0
  271. {traigent-0.18.0 → traigent-0.18.1.dev0}/traigent/core/ci_approval.py +0 -0
  272. {traigent-0.18.0 → traigent-0.18.1.dev0}/traigent/core/config_state_manager.py +0 -0
  273. {traigent-0.18.0 → traigent-0.18.1.dev0}/traigent/core/constants.py +0 -0
  274. {traigent-0.18.0 → traigent-0.18.1.dev0}/traigent/core/cost_enforcement.py +0 -0
  275. {traigent-0.18.0 → traigent-0.18.1.dev0}/traigent/core/cost_estimator.py +0 -0
  276. {traigent-0.18.0 → traigent-0.18.1.dev0}/traigent/core/evaluator_wrapper.py +0 -0
  277. {traigent-0.18.0 → traigent-0.18.1.dev0}/traigent/core/exception_handler.py +0 -0
  278. {traigent-0.18.0 → traigent-0.18.1.dev0}/traigent/core/execution_policy_runtime.py +0 -0
  279. {traigent-0.18.0 → traigent-0.18.1.dev0}/traigent/core/license.py +0 -0
  280. {traigent-0.18.0 → traigent-0.18.1.dev0}/traigent/core/logger_facade.py +0 -0
  281. {traigent-0.18.0 → traigent-0.18.1.dev0}/traigent/core/mandatory_metrics.py +0 -0
  282. {traigent-0.18.0 → traigent-0.18.1.dev0}/traigent/core/meta_types.py +0 -0
  283. {traigent-0.18.0 → traigent-0.18.1.dev0}/traigent/core/metadata_helpers.py +0 -0
  284. {traigent-0.18.0 → traigent-0.18.1.dev0}/traigent/core/metric_registry.py +0 -0
  285. {traigent-0.18.0 → traigent-0.18.1.dev0}/traigent/core/metrics_aggregator.py +0 -0
  286. {traigent-0.18.0 → traigent-0.18.1.dev0}/traigent/core/namespace.py +0 -0
  287. {traigent-0.18.0 → traigent-0.18.1.dev0}/traigent/core/objectives.py +0 -0
  288. {traigent-0.18.0 → traigent-0.18.1.dev0}/traigent/core/optimization_pipeline.py +0 -0
  289. {traigent-0.18.0 → traigent-0.18.1.dev0}/traigent/core/orchestrator_helpers.py +0 -0
  290. {traigent-0.18.0 → traigent-0.18.1.dev0}/traigent/core/parallel_execution_manager.py +0 -0
  291. {traigent-0.18.0 → traigent-0.18.1.dev0}/traigent/core/progress_manager.py +0 -0
  292. {traigent-0.18.0 → traigent-0.18.1.dev0}/traigent/core/result_selection.py +0 -0
  293. {traigent-0.18.0 → traigent-0.18.1.dev0}/traigent/core/samplers/__init__.py +0 -0
  294. {traigent-0.18.0 → traigent-0.18.1.dev0}/traigent/core/samplers/random_sampler.py +0 -0
  295. {traigent-0.18.0 → traigent-0.18.1.dev0}/traigent/core/session_context.py +0 -0
  296. {traigent-0.18.0 → traigent-0.18.1.dev0}/traigent/core/session_types.py +0 -0
  297. {traigent-0.18.0 → traigent-0.18.1.dev0}/traigent/core/stat_significance.py +0 -0
  298. {traigent-0.18.0 → traigent-0.18.1.dev0}/traigent/core/stop_condition_manager.py +0 -0
  299. {traigent-0.18.0 → traigent-0.18.1.dev0}/traigent/core/stop_conditions.py +0 -0
  300. {traigent-0.18.0 → traigent-0.18.1.dev0}/traigent/core/trace_env.py +0 -0
  301. {traigent-0.18.0 → traigent-0.18.1.dev0}/traigent/core/tracing.py +0 -0
  302. {traigent-0.18.0 → traigent-0.18.1.dev0}/traigent/core/trial_context.py +0 -0
  303. {traigent-0.18.0 → traigent-0.18.1.dev0}/traigent/core/trial_lifecycle.py +0 -0
  304. {traigent-0.18.0 → traigent-0.18.1.dev0}/traigent/core/trial_result_factory.py +0 -0
  305. {traigent-0.18.0 → traigent-0.18.1.dev0}/traigent/core/types.py +0 -0
  306. {traigent-0.18.0 → traigent-0.18.1.dev0}/traigent/core/types_ext.py +0 -0
  307. {traigent-0.18.0 → traigent-0.18.1.dev0}/traigent/core/utils.py +0 -0
  308. {traigent-0.18.0 → traigent-0.18.1.dev0}/traigent/core/workflow_trace_manager.py +0 -0
  309. {traigent-0.18.0 → traigent-0.18.1.dev0}/traigent/core_metrics/__init__.py +0 -0
  310. {traigent-0.18.0 → traigent-0.18.1.dev0}/traigent/core_metrics/client.py +0 -0
  311. {traigent-0.18.0 → traigent-0.18.1.dev0}/traigent/core_metrics/config.py +0 -0
  312. {traigent-0.18.0 → traigent-0.18.1.dev0}/traigent/core_metrics/dtos.py +0 -0
  313. {traigent-0.18.0 → traigent-0.18.1.dev0}/traigent/defaults.py +0 -0
  314. {traigent-0.18.0 → traigent-0.18.1.dev0}/traigent/effectuation/__init__.py +0 -0
  315. {traigent-0.18.0 → traigent-0.18.1.dev0}/traigent/effectuation/contracts.py +0 -0
  316. {traigent-0.18.0 → traigent-0.18.1.dev0}/traigent/effectuation/strategies/__init__.py +0 -0
  317. {traigent-0.18.0 → traigent-0.18.1.dev0}/traigent/effectuation/strategies/framework_param.py +0 -0
  318. {traigent-0.18.0 → traigent-0.18.1.dev0}/traigent/effectuation/strategies/self_consistency.py +0 -0
  319. {traigent-0.18.0 → traigent-0.18.1.dev0}/traigent/evaluation/__init__.py +0 -0
  320. {traigent-0.18.0 → traigent-0.18.1.dev0}/traigent/evaluation/client.py +0 -0
  321. {traigent-0.18.0 → traigent-0.18.1.dev0}/traigent/evaluation/config.py +0 -0
  322. {traigent-0.18.0 → traigent-0.18.1.dev0}/traigent/evaluation/dtos.py +0 -0
  323. {traigent-0.18.0 → traigent-0.18.1.dev0}/traigent/evaluators/__init__.py +0 -0
  324. {traigent-0.18.0 → traigent-0.18.1.dev0}/traigent/evaluators/base.py +0 -0
  325. {traigent-0.18.0 → traigent-0.18.1.dev0}/traigent/evaluators/catalog/metric_eval_catalog.v1.json +0 -0
  326. {traigent-0.18.0 → traigent-0.18.1.dev0}/traigent/evaluators/catalog/schemas/metric_eval_catalog_entry_schema.json +0 -0
  327. {traigent-0.18.0 → traigent-0.18.1.dev0}/traigent/evaluators/catalog_loader.py +0 -0
  328. {traigent-0.18.0 → traigent-0.18.1.dev0}/traigent/evaluators/dataset_registry.py +0 -0
  329. {traigent-0.18.0 → traigent-0.18.1.dev0}/traigent/evaluators/hybrid_api.py +0 -0
  330. {traigent-0.18.0 → traigent-0.18.1.dev0}/traigent/evaluators/local.py +0 -0
  331. {traigent-0.18.0 → traigent-0.18.1.dev0}/traigent/evaluators/metrics.py +0 -0
  332. {traigent-0.18.0 → traigent-0.18.1.dev0}/traigent/evaluators/metrics_tracker.py +0 -0
  333. {traigent-0.18.0 → traigent-0.18.1.dev0}/traigent/evaluators/recommendations.py +0 -0
  334. {traigent-0.18.0 → traigent-0.18.1.dev0}/traigent/examples/__init__.py +0 -0
  335. {traigent-0.18.0 → traigent-0.18.1.dev0}/traigent/examples/providers/__init__.py +0 -0
  336. {traigent-0.18.0 → traigent-0.18.1.dev0}/traigent/examples/providers/_bootstrap.py +0 -0
  337. {traigent-0.18.0 → traigent-0.18.1.dev0}/traigent/examples/providers/_demo.py +0 -0
  338. {traigent-0.18.0 → traigent-0.18.1.dev0}/traigent/examples/providers/anthropic.py +0 -0
  339. {traigent-0.18.0 → traigent-0.18.1.dev0}/traigent/examples/providers/aws.py +0 -0
  340. {traigent-0.18.0 → traigent-0.18.1.dev0}/traigent/examples/providers/azure.py +0 -0
  341. {traigent-0.18.0 → traigent-0.18.1.dev0}/traigent/examples/providers/gcp.py +0 -0
  342. {traigent-0.18.0 → traigent-0.18.1.dev0}/traigent/examples/providers/gemini.py +0 -0
  343. {traigent-0.18.0 → traigent-0.18.1.dev0}/traigent/examples/providers/groq.py +0 -0
  344. {traigent-0.18.0 → traigent-0.18.1.dev0}/traigent/examples/providers/litellm_any.py +0 -0
  345. {traigent-0.18.0 → traigent-0.18.1.dev0}/traigent/examples/providers/manifest.json +0 -0
  346. {traigent-0.18.0 → traigent-0.18.1.dev0}/traigent/examples/providers/openai.py +0 -0
  347. {traigent-0.18.0 → traigent-0.18.1.dev0}/traigent/examples/providers/openrouter.py +0 -0
  348. {traigent-0.18.0 → traigent-0.18.1.dev0}/traigent/examples/providers/qa_samples.jsonl +0 -0
  349. {traigent-0.18.0 → traigent-0.18.1.dev0}/traigent/examples/quickstart/__init__.py +0 -0
  350. {traigent-0.18.0 → traigent-0.18.1.dev0}/traigent/examples/quickstart/__main__.py +0 -0
  351. {traigent-0.18.0 → traigent-0.18.1.dev0}/traigent/examples/quickstart/_env.py +0 -0
  352. {traigent-0.18.0 → traigent-0.18.1.dev0}/traigent/examples/quickstart/publish_and_verify.py +0 -0
  353. {traigent-0.18.0 → traigent-0.18.1.dev0}/traigent/examples/quickstart/qa_samples.jsonl +0 -0
  354. {traigent-0.18.0 → traigent-0.18.1.dev0}/traigent/examples/tutorial_bootstrap.py +0 -0
  355. {traigent-0.18.0 → traigent-0.18.1.dev0}/traigent/generation/__init__.py +0 -0
  356. {traigent-0.18.0 → traigent-0.18.1.dev0}/traigent/generation/backend_provider.py +0 -0
  357. {traigent-0.18.0 → traigent-0.18.1.dev0}/traigent/generation/example_synth.py +0 -0
  358. {traigent-0.18.0 → traigent-0.18.1.dev0}/traigent/generation/llm_provider.py +0 -0
  359. {traigent-0.18.0 → traigent-0.18.1.dev0}/traigent/generation/loop.py +0 -0
  360. {traigent-0.18.0 → traigent-0.18.1.dev0}/traigent/generation/models.py +0 -0
  361. {traigent-0.18.0 → traigent-0.18.1.dev0}/traigent/generation/options.py +0 -0
  362. {traigent-0.18.0 → traigent-0.18.1.dev0}/traigent/generation/prompt_rewriter.py +0 -0
  363. {traigent-0.18.0 → traigent-0.18.1.dev0}/traigent/generation/skill_train/__init__.py +0 -0
  364. {traigent-0.18.0 → traigent-0.18.1.dev0}/traigent/generation/skill_train/artifacts.py +0 -0
  365. {traigent-0.18.0 → traigent-0.18.1.dev0}/traigent/generation/skill_train/buffer.py +0 -0
  366. {traigent-0.18.0 → traigent-0.18.1.dev0}/traigent/generation/skill_train/document.py +0 -0
  367. {traigent-0.18.0 → traigent-0.18.1.dev0}/traigent/generation/skill_train/edits.py +0 -0
  368. {traigent-0.18.0 → traigent-0.18.1.dev0}/traigent/generation/skill_train/prompts.py +0 -0
  369. {traigent-0.18.0 → traigent-0.18.1.dev0}/traigent/generation/skill_train/reflection.py +0 -0
  370. {traigent-0.18.0 → traigent-0.18.1.dev0}/traigent/generation/skill_train/schedule.py +0 -0
  371. {traigent-0.18.0 → traigent-0.18.1.dev0}/traigent/generation/skill_train/slow_update.py +0 -0
  372. {traigent-0.18.0 → traigent-0.18.1.dev0}/traigent/generation/skill_train/splits.py +0 -0
  373. {traigent-0.18.0 → traigent-0.18.1.dev0}/traigent/generation/skill_train/trainer.py +0 -0
  374. {traigent-0.18.0 → traigent-0.18.1.dev0}/traigent/generation/skill_train/trainer_result.py +0 -0
  375. {traigent-0.18.0 → traigent-0.18.1.dev0}/traigent/generation/validators.py +0 -0
  376. {traigent-0.18.0 → traigent-0.18.1.dev0}/traigent/guaranteed_modes.py +0 -0
  377. {traigent-0.18.0 → traigent-0.18.1.dev0}/traigent/hooks/__init__.py +0 -0
  378. {traigent-0.18.0 → traigent-0.18.1.dev0}/traigent/hooks/config.py +0 -0
  379. {traigent-0.18.0 → traigent-0.18.1.dev0}/traigent/hooks/installer.py +0 -0
  380. {traigent-0.18.0 → traigent-0.18.1.dev0}/traigent/hooks/validator.py +0 -0
  381. {traigent-0.18.0 → traigent-0.18.1.dev0}/traigent/hybrid/__init__.py +0 -0
  382. {traigent-0.18.0 → traigent-0.18.1.dev0}/traigent/hybrid/discovery.py +0 -0
  383. {traigent-0.18.0 → traigent-0.18.1.dev0}/traigent/hybrid/http_transport.py +0 -0
  384. {traigent-0.18.0 → traigent-0.18.1.dev0}/traigent/hybrid/lifecycle.py +0 -0
  385. {traigent-0.18.0 → traigent-0.18.1.dev0}/traigent/hybrid/mcp_transport.py +0 -0
  386. {traigent-0.18.0 → traigent-0.18.1.dev0}/traigent/hybrid/protocol.py +0 -0
  387. {traigent-0.18.0 → traigent-0.18.1.dev0}/traigent/hybrid/transport.py +0 -0
  388. {traigent-0.18.0 → traigent-0.18.1.dev0}/traigent/integrations/__init__.py +0 -0
  389. {traigent-0.18.0 → traigent-0.18.1.dev0}/traigent/integrations/activation.py +0 -0
  390. {traigent-0.18.0 → traigent-0.18.1.dev0}/traigent/integrations/base.py +0 -0
  391. {traigent-0.18.0 → traigent-0.18.1.dev0}/traigent/integrations/base_plugin.py +0 -0
  392. {traigent-0.18.0 → traigent-0.18.1.dev0}/traigent/integrations/bedrock_client.py +0 -0
  393. {traigent-0.18.0 → traigent-0.18.1.dev0}/traigent/integrations/config.py +0 -0
  394. {traigent-0.18.0 → traigent-0.18.1.dev0}/traigent/integrations/dspy_adapter.py +0 -0
  395. {traigent-0.18.0 → traigent-0.18.1.dev0}/traigent/integrations/framework_override.py +0 -0
  396. {traigent-0.18.0 → traigent-0.18.1.dev0}/traigent/integrations/langchain/__init__.py +0 -0
  397. {traigent-0.18.0 → traigent-0.18.1.dev0}/traigent/integrations/langchain/handler.py +0 -0
  398. {traigent-0.18.0 → traigent-0.18.1.dev0}/traigent/integrations/langfuse/callback.py +0 -0
  399. {traigent-0.18.0 → traigent-0.18.1.dev0}/traigent/integrations/langfuse/tracker.py +0 -0
  400. {traigent-0.18.0 → traigent-0.18.1.dev0}/traigent/integrations/llms/__init__.py +0 -0
  401. {traigent-0.18.0 → traigent-0.18.1.dev0}/traigent/integrations/llms/anthropic_plugin.py +0 -0
  402. {traigent-0.18.0 → traigent-0.18.1.dev0}/traigent/integrations/llms/azure_openai_plugin.py +0 -0
  403. {traigent-0.18.0 → traigent-0.18.1.dev0}/traigent/integrations/llms/base_llm_plugin.py +0 -0
  404. {traigent-0.18.0 → traigent-0.18.1.dev0}/traigent/integrations/llms/bedrock_plugin.py +0 -0
  405. {traigent-0.18.0 → traigent-0.18.1.dev0}/traigent/integrations/llms/cohere_plugin.py +0 -0
  406. {traigent-0.18.0 → traigent-0.18.1.dev0}/traigent/integrations/llms/gemini_plugin.py +0 -0
  407. {traigent-0.18.0 → traigent-0.18.1.dev0}/traigent/integrations/llms/huggingface_plugin.py +0 -0
  408. {traigent-0.18.0 → traigent-0.18.1.dev0}/traigent/integrations/llms/langchain/__init__.py +0 -0
  409. {traigent-0.18.0 → traigent-0.18.1.dev0}/traigent/integrations/llms/langchain/base.py +0 -0
  410. {traigent-0.18.0 → traigent-0.18.1.dev0}/traigent/integrations/llms/langchain_plugin.py +0 -0
  411. {traigent-0.18.0 → traigent-0.18.1.dev0}/traigent/integrations/llms/litellm_plugin.py +0 -0
  412. {traigent-0.18.0 → traigent-0.18.1.dev0}/traigent/integrations/llms/llamaindex_plugin.py +0 -0
  413. {traigent-0.18.0 → traigent-0.18.1.dev0}/traigent/integrations/llms/mistral_plugin.py +0 -0
  414. {traigent-0.18.0 → traigent-0.18.1.dev0}/traigent/integrations/llms/openai.py +0 -0
  415. {traigent-0.18.0 → traigent-0.18.1.dev0}/traigent/integrations/llms/openai_plugin.py +0 -0
  416. {traigent-0.18.0 → traigent-0.18.1.dev0}/traigent/integrations/mappings.py +0 -0
  417. {traigent-0.18.0 → traigent-0.18.1.dev0}/traigent/integrations/model_discovery/__init__.py +0 -0
  418. {traigent-0.18.0 → traigent-0.18.1.dev0}/traigent/integrations/model_discovery/anthropic_discovery.py +0 -0
  419. {traigent-0.18.0 → traigent-0.18.1.dev0}/traigent/integrations/model_discovery/azure_discovery.py +0 -0
  420. {traigent-0.18.0 → traigent-0.18.1.dev0}/traigent/integrations/model_discovery/base.py +0 -0
  421. {traigent-0.18.0 → traigent-0.18.1.dev0}/traigent/integrations/model_discovery/cache.py +0 -0
  422. {traigent-0.18.0 → traigent-0.18.1.dev0}/traigent/integrations/model_discovery/gemini_discovery.py +0 -0
  423. {traigent-0.18.0 → traigent-0.18.1.dev0}/traigent/integrations/model_discovery/mistral_discovery.py +0 -0
  424. {traigent-0.18.0 → traigent-0.18.1.dev0}/traigent/integrations/model_discovery/openai_discovery.py +0 -0
  425. {traigent-0.18.0 → traigent-0.18.1.dev0}/traigent/integrations/model_discovery/registry.py +0 -0
  426. {traigent-0.18.0 → traigent-0.18.1.dev0}/traigent/integrations/observability/__init__.py +0 -0
  427. {traigent-0.18.0 → traigent-0.18.1.dev0}/traigent/integrations/observability/mlflow.py +0 -0
  428. {traigent-0.18.0 → traigent-0.18.1.dev0}/traigent/integrations/observability/wandb.py +0 -0
  429. {traigent-0.18.0 → traigent-0.18.1.dev0}/traigent/integrations/observability/workflow_traces.py +0 -0
  430. {traigent-0.18.0 → traigent-0.18.1.dev0}/traigent/integrations/providers.py +0 -0
  431. {traigent-0.18.0 → traigent-0.18.1.dev0}/traigent/integrations/pydantic_ai/_types.py +0 -0
  432. {traigent-0.18.0 → traigent-0.18.1.dev0}/traigent/integrations/pydantic_ai/plugin.py +0 -0
  433. {traigent-0.18.0 → traigent-0.18.1.dev0}/traigent/integrations/utils/__init__.py +0 -0
  434. {traigent-0.18.0 → traigent-0.18.1.dev0}/traigent/integrations/utils/discovery.py +0 -0
  435. {traigent-0.18.0 → traigent-0.18.1.dev0}/traigent/integrations/utils/message_coercion.py +0 -0
  436. {traigent-0.18.0 → traigent-0.18.1.dev0}/traigent/integrations/utils/mock_adapter.py +0 -0
  437. {traigent-0.18.0 → traigent-0.18.1.dev0}/traigent/integrations/utils/parameter_normalizer.py +0 -0
  438. {traigent-0.18.0 → traigent-0.18.1.dev0}/traigent/integrations/utils/response_wrapper.py +0 -0
  439. {traigent-0.18.0 → traigent-0.18.1.dev0}/traigent/integrations/utils/validation.py +0 -0
  440. {traigent-0.18.0 → traigent-0.18.1.dev0}/traigent/integrations/utils/version_compat.py +0 -0
  441. {traigent-0.18.0 → traigent-0.18.1.dev0}/traigent/integrations/vector_stores/__init__.py +0 -0
  442. {traigent-0.18.0 → traigent-0.18.1.dev0}/traigent/integrations/vector_stores/base.py +0 -0
  443. {traigent-0.18.0 → traigent-0.18.1.dev0}/traigent/integrations/vector_stores/chromadb_plugin.py +0 -0
  444. {traigent-0.18.0 → traigent-0.18.1.dev0}/traigent/integrations/vector_stores/pinecone_plugin.py +0 -0
  445. {traigent-0.18.0 → traigent-0.18.1.dev0}/traigent/integrations/vector_stores/weaviate_plugin.py +0 -0
  446. {traigent-0.18.0 → traigent-0.18.1.dev0}/traigent/integrations/wrappers.py +0 -0
  447. {traigent-0.18.0 → traigent-0.18.1.dev0}/traigent/invokers/__init__.py +0 -0
  448. {traigent-0.18.0 → traigent-0.18.1.dev0}/traigent/invokers/base.py +0 -0
  449. {traigent-0.18.0 → traigent-0.18.1.dev0}/traigent/invokers/batch.py +0 -0
  450. {traigent-0.18.0 → traigent-0.18.1.dev0}/traigent/invokers/local.py +0 -0
  451. {traigent-0.18.0 → traigent-0.18.1.dev0}/traigent/knobs/__init__.py +0 -0
  452. {traigent-0.18.0 → traigent-0.18.1.dev0}/traigent/knobs/adapters.py +0 -0
  453. {traigent-0.18.0 → traigent-0.18.1.dev0}/traigent/knobs/bindings.py +0 -0
  454. {traigent-0.18.0 → traigent-0.18.1.dev0}/traigent/knobs/canonical.py +0 -0
  455. {traigent-0.18.0 → traigent-0.18.1.dev0}/traigent/knobs/certificates.py +0 -0
  456. {traigent-0.18.0 → traigent-0.18.1.dev0}/traigent/knobs/composites.py +0 -0
  457. {traigent-0.18.0 → traigent-0.18.1.dev0}/traigent/knobs/kinds.py +0 -0
  458. {traigent-0.18.0 → traigent-0.18.1.dev0}/traigent/knobs/patterns.py +0 -0
  459. {traigent-0.18.0 → traigent-0.18.1.dev0}/traigent/knobs/resolution.py +0 -0
  460. {traigent-0.18.0 → traigent-0.18.1.dev0}/traigent/knobs/resolver.py +0 -0
  461. {traigent-0.18.0 → traigent-0.18.1.dev0}/traigent/knobs/runtime.py +0 -0
  462. {traigent-0.18.0 → traigent-0.18.1.dev0}/traigent/knobs/signals.py +0 -0
  463. {traigent-0.18.0 → traigent-0.18.1.dev0}/traigent/knobs/telemetry.py +0 -0
  464. {traigent-0.18.0 → traigent-0.18.1.dev0}/traigent/mcp/__init__.py +0 -0
  465. {traigent-0.18.0 → traigent-0.18.1.dev0}/traigent/mcp/server.py +0 -0
  466. {traigent-0.18.0 → traigent-0.18.1.dev0}/traigent/mcp/tools.py +0 -0
  467. {traigent-0.18.0 → traigent-0.18.1.dev0}/traigent/metrics/__init__.py +0 -0
  468. {traigent-0.18.0 → traigent-0.18.1.dev0}/traigent/metrics/agent_metrics.py +0 -0
  469. {traigent-0.18.0 → traigent-0.18.1.dev0}/traigent/metrics/content_features.py +0 -0
  470. {traigent-0.18.0 → traigent-0.18.1.dev0}/traigent/metrics/deepeval_metrics.py +0 -0
  471. {traigent-0.18.0 → traigent-0.18.1.dev0}/traigent/metrics/ragas_metrics.py +0 -0
  472. {traigent-0.18.0 → traigent-0.18.1.dev0}/traigent/metrics/registry.py +0 -0
  473. {traigent-0.18.0 → traigent-0.18.1.dev0}/traigent/observability/__init__.py +0 -0
  474. {traigent-0.18.0 → traigent-0.18.1.dev0}/traigent/observability/agent_spans.py +0 -0
  475. {traigent-0.18.0 → traigent-0.18.1.dev0}/traigent/observability/client.py +0 -0
  476. {traigent-0.18.0 → traigent-0.18.1.dev0}/traigent/observability/config.py +0 -0
  477. {traigent-0.18.0 → traigent-0.18.1.dev0}/traigent/observability/decorators.py +0 -0
  478. {traigent-0.18.0 → traigent-0.18.1.dev0}/traigent/observability/dtos.py +0 -0
  479. {traigent-0.18.0 → traigent-0.18.1.dev0}/traigent/optimizers/__init__.py +0 -0
  480. {traigent-0.18.0 → traigent-0.18.1.dev0}/traigent/optimizers/base.py +0 -0
  481. {traigent-0.18.0 → traigent-0.18.1.dev0}/traigent/optimizers/batch_optimizers.py +0 -0
  482. {traigent-0.18.0 → traigent-0.18.1.dev0}/traigent/optimizers/cloud_optimizer.py +0 -0
  483. {traigent-0.18.0 → traigent-0.18.1.dev0}/traigent/optimizers/grid.py +0 -0
  484. {traigent-0.18.0 → traigent-0.18.1.dev0}/traigent/optimizers/random.py +0 -0
  485. {traigent-0.18.0 → traigent-0.18.1.dev0}/traigent/optimizers/registry.py +0 -0
  486. {traigent-0.18.0 → traigent-0.18.1.dev0}/traigent/optimizers/remote.py +0 -0
  487. {traigent-0.18.0 → traigent-0.18.1.dev0}/traigent/optimizers/remote_services.py +0 -0
  488. {traigent-0.18.0 → traigent-0.18.1.dev0}/traigent/optimizers/results.py +0 -0
  489. {traigent-0.18.0 → traigent-0.18.1.dev0}/traigent/playbook/__init__.py +0 -0
  490. {traigent-0.18.0 → traigent-0.18.1.dev0}/traigent/playbook/loader.py +0 -0
  491. {traigent-0.18.0 → traigent-0.18.1.dev0}/traigent/playbook/model.py +0 -0
  492. {traigent-0.18.0 → traigent-0.18.1.dev0}/traigent/playbook/scaffold.py +0 -0
  493. {traigent-0.18.0 → traigent-0.18.1.dev0}/traigent/playbook/schemas/agent_playbook_schema.json +0 -0
  494. {traigent-0.18.0 → traigent-0.18.1.dev0}/traigent/playbook/staleness.py +0 -0
  495. {traigent-0.18.0 → traigent-0.18.1.dev0}/traigent/playbook/validator.py +0 -0
  496. {traigent-0.18.0 → traigent-0.18.1.dev0}/traigent/plugins/__init__.py +0 -0
  497. {traigent-0.18.0 → traigent-0.18.1.dev0}/traigent/plugins/registry.py +0 -0
  498. {traigent-0.18.0 → traigent-0.18.1.dev0}/traigent/projects/__init__.py +0 -0
  499. {traigent-0.18.0 → traigent-0.18.1.dev0}/traigent/projects/client.py +0 -0
  500. {traigent-0.18.0 → traigent-0.18.1.dev0}/traigent/projects/config.py +0 -0
  501. {traigent-0.18.0 → traigent-0.18.1.dev0}/traigent/projects/dtos.py +0 -0
  502. {traigent-0.18.0 → traigent-0.18.1.dev0}/traigent/prompts/__init__.py +0 -0
  503. {traigent-0.18.0 → traigent-0.18.1.dev0}/traigent/prompts/client.py +0 -0
  504. {traigent-0.18.0 → traigent-0.18.1.dev0}/traigent/prompts/config.py +0 -0
  505. {traigent-0.18.0 → traigent-0.18.1.dev0}/traigent/prompts/dtos.py +0 -0
  506. {traigent-0.18.0 → traigent-0.18.1.dev0}/traigent/providers/__init__.py +0 -0
  507. {traigent-0.18.0 → traigent-0.18.1.dev0}/traigent/providers/validation.py +0 -0
  508. {traigent-0.18.0 → traigent-0.18.1.dev0}/traigent/py.typed +0 -0
  509. {traigent-0.18.0 → traigent-0.18.1.dev0}/traigent/reporting/__init__.py +0 -0
  510. {traigent-0.18.0 → traigent-0.18.1.dev0}/traigent/reporting/example_map.py +0 -0
  511. {traigent-0.18.0 → traigent-0.18.1.dev0}/traigent/security/__init__.py +0 -0
  512. {traigent-0.18.0 → traigent-0.18.1.dev0}/traigent/security/auth/__init__.py +0 -0
  513. {traigent-0.18.0 → traigent-0.18.1.dev0}/traigent/security/auth/helpers.py +0 -0
  514. {traigent-0.18.0 → traigent-0.18.1.dev0}/traigent/security/auth/mfa.py +0 -0
  515. {traigent-0.18.0 → traigent-0.18.1.dev0}/traigent/security/auth/oidc.py +0 -0
  516. {traigent-0.18.0 → traigent-0.18.1.dev0}/traigent/security/auth/sms.py +0 -0
  517. {traigent-0.18.0 → traigent-0.18.1.dev0}/traigent/security/auth/totp.py +0 -0
  518. {traigent-0.18.0 → traigent-0.18.1.dev0}/traigent/security/config.py +0 -0
  519. {traigent-0.18.0 → traigent-0.18.1.dev0}/traigent/security/credentials.py +0 -0
  520. {traigent-0.18.0 → traigent-0.18.1.dev0}/traigent/security/crypto_utils.py +0 -0
  521. {traigent-0.18.0 → traigent-0.18.1.dev0}/traigent/security/deployment.py +0 -0
  522. {traigent-0.18.0 → traigent-0.18.1.dev0}/traigent/security/encryption.py +0 -0
  523. {traigent-0.18.0 → traigent-0.18.1.dev0}/traigent/security/enterprise.py +0 -0
  524. {traigent-0.18.0 → traigent-0.18.1.dev0}/traigent/security/headers.py +0 -0
  525. {traigent-0.18.0 → traigent-0.18.1.dev0}/traigent/security/input_validation.py +0 -0
  526. {traigent-0.18.0 → traigent-0.18.1.dev0}/traigent/security/jwt_validator.py +0 -0
  527. {traigent-0.18.0 → traigent-0.18.1.dev0}/traigent/security/rate_limiter.py +0 -0
  528. {traigent-0.18.0 → traigent-0.18.1.dev0}/traigent/security/redaction.py +0 -0
  529. {traigent-0.18.0 → traigent-0.18.1.dev0}/traigent/security/session_manager.py +0 -0
  530. {traigent-0.18.0 → traigent-0.18.1.dev0}/traigent/security/tenant.py +0 -0
  531. {traigent-0.18.0 → traigent-0.18.1.dev0}/traigent/skills/traigent-analyze-results/SKILL.md +0 -0
  532. {traigent-0.18.0 → traigent-0.18.1.dev0}/traigent/skills/traigent-analyze-results/references/convergence-patterns.md +0 -0
  533. {traigent-0.18.0 → traigent-0.18.1.dev0}/traigent/skills/traigent-analyze-results/references/optimization-result-api.md +0 -0
  534. {traigent-0.18.0 → traigent-0.18.1.dev0}/traigent/skills/traigent-configuration-space/SKILL.md +0 -0
  535. {traigent-0.18.0 → traigent-0.18.1.dev0}/traigent/skills/traigent-configuration-space/references/constraints.md +0 -0
  536. {traigent-0.18.0 → traigent-0.18.1.dev0}/traigent/skills/traigent-configuration-space/references/parameter-types.md +0 -0
  537. {traigent-0.18.0 → traigent-0.18.1.dev0}/traigent/skills/traigent-debugging/SKILL.md +0 -0
  538. {traigent-0.18.0 → traigent-0.18.1.dev0}/traigent/skills/traigent-debugging/references/error-reference.md +0 -0
  539. {traigent-0.18.0 → traigent-0.18.1.dev0}/traigent/skills/traigent-debugging/references/logging-config.md +0 -0
  540. {traigent-0.18.0 → traigent-0.18.1.dev0}/traigent/skills/traigent-debugging/references/mock-mode.md +0 -0
  541. {traigent-0.18.0 → traigent-0.18.1.dev0}/traigent/skills/traigent-decorator-setup/SKILL.md +0 -0
  542. {traigent-0.18.0 → traigent-0.18.1.dev0}/traigent/skills/traigent-decorator-setup/references/evaluation-options.md +0 -0
  543. {traigent-0.18.0 → traigent-0.18.1.dev0}/traigent/skills/traigent-decorator-setup/references/execution-modes.md +0 -0
  544. {traigent-0.18.0 → traigent-0.18.1.dev0}/traigent/skills/traigent-decorator-setup/references/injection-modes.md +0 -0
  545. {traigent-0.18.0 → traigent-0.18.1.dev0}/traigent/skills/traigent-integrations/SKILL.md +0 -0
  546. {traigent-0.18.0 → traigent-0.18.1.dev0}/traigent/skills/traigent-integrations/references/dspy.md +0 -0
  547. {traigent-0.18.0 → traigent-0.18.1.dev0}/traigent/skills/traigent-integrations/references/langchain.md +0 -0
  548. {traigent-0.18.0 → traigent-0.18.1.dev0}/traigent/skills/traigent-integrations/references/litellm.md +0 -0
  549. {traigent-0.18.0 → traigent-0.18.1.dev0}/traigent/skills/traigent-quickstart/SKILL.md +0 -0
  550. {traigent-0.18.0 → traigent-0.18.1.dev0}/traigent/skills/traigent-quickstart/references/environment-variables.md +0 -0
  551. {traigent-0.18.0 → traigent-0.18.1.dev0}/traigent/skills/traigent-quickstart/references/installation-extras.md +0 -0
  552. {traigent-0.18.0 → traigent-0.18.1.dev0}/traigent/skills/traigent-run-optimization/SKILL.md +0 -0
  553. {traigent-0.18.0 → traigent-0.18.1.dev0}/traigent/skills/traigent-run-optimization/references/algorithms.md +0 -0
  554. {traigent-0.18.0 → traigent-0.18.1.dev0}/traigent/skills/traigent-run-optimization/references/cost-management.md +0 -0
  555. {traigent-0.18.0 → traigent-0.18.1.dev0}/traigent/skills/traigent-run-optimization/references/parallel-config.md +0 -0
  556. {traigent-0.18.0 → traigent-0.18.1.dev0}/traigent/storage/__init__.py +0 -0
  557. {traigent-0.18.0 → traigent-0.18.1.dev0}/traigent/storage/local_storage.py +0 -0
  558. {traigent-0.18.0 → traigent-0.18.1.dev0}/traigent/testing/__init__.py +0 -0
  559. {traigent-0.18.0 → traigent-0.18.1.dev0}/traigent/traigent_client.py +0 -0
  560. {traigent-0.18.0 → traigent-0.18.1.dev0}/traigent/traigent_integration.py +0 -0
  561. {traigent-0.18.0 → traigent-0.18.1.dev0}/traigent/tuned_variables/__init__.py +0 -0
  562. {traigent-0.18.0 → traigent-0.18.1.dev0}/traigent/tuned_variables/dataflow_strategy.py +0 -0
  563. {traigent-0.18.0 → traigent-0.18.1.dev0}/traigent/tuned_variables/detection_strategies.py +0 -0
  564. {traigent-0.18.0 → traigent-0.18.1.dev0}/traigent/tuned_variables/detection_types.py +0 -0
  565. {traigent-0.18.0 → traigent-0.18.1.dev0}/traigent/tuned_variables/detector.py +0 -0
  566. {traigent-0.18.0 → traigent-0.18.1.dev0}/traigent/tuned_variables/discovery.py +0 -0
  567. {traigent-0.18.0 → traigent-0.18.1.dev0}/traigent/tuned_variables/observation.py +0 -0
  568. {traigent-0.18.0 → traigent-0.18.1.dev0}/traigent/tuned_variables/py.typed +0 -0
  569. {traigent-0.18.0 → traigent-0.18.1.dev0}/traigent/tvl/__init__.py +0 -0
  570. {traigent-0.18.0 → traigent-0.18.1.dev0}/traigent/tvl/__main__.py +0 -0
  571. {traigent-0.18.0 → traigent-0.18.1.dev0}/traigent/tvl/models.py +0 -0
  572. {traigent-0.18.0 → traigent-0.18.1.dev0}/traigent/tvl/objectives.py +0 -0
  573. {traigent-0.18.0 → traigent-0.18.1.dev0}/traigent/tvl/options.py +0 -0
  574. {traigent-0.18.0 → traigent-0.18.1.dev0}/traigent/tvl/promotion_gate.py +0 -0
  575. {traigent-0.18.0 → traigent-0.18.1.dev0}/traigent/tvl/registry.py +0 -0
  576. {traigent-0.18.0 → traigent-0.18.1.dev0}/traigent/tvl/spec_loader.py +0 -0
  577. {traigent-0.18.0 → traigent-0.18.1.dev0}/traigent/tvl/spec_validator.py +0 -0
  578. {traigent-0.18.0 → traigent-0.18.1.dev0}/traigent/tvl/statistics.py +0 -0
  579. {traigent-0.18.0 → traigent-0.18.1.dev0}/traigent/utils/__init__.py +0 -0
  580. {traigent-0.18.0 → traigent-0.18.1.dev0}/traigent/utils/batch_optimizer_utils.py +0 -0
  581. {traigent-0.18.0 → traigent-0.18.1.dev0}/traigent/utils/batch_processing.py +0 -0
  582. {traigent-0.18.0 → traigent-0.18.1.dev0}/traigent/utils/callbacks.py +0 -0
  583. {traigent-0.18.0 → traigent-0.18.1.dev0}/traigent/utils/console.py +0 -0
  584. {traigent-0.18.0 → traigent-0.18.1.dev0}/traigent/utils/constraints.py +0 -0
  585. {traigent-0.18.0 → traigent-0.18.1.dev0}/traigent/utils/cost_calculator.py +0 -0
  586. {traigent-0.18.0 → traigent-0.18.1.dev0}/traigent/utils/diagnostics.py +0 -0
  587. {traigent-0.18.0 → traigent-0.18.1.dev0}/traigent/utils/discrete_domains.py +0 -0
  588. {traigent-0.18.0 → traigent-0.18.1.dev0}/traigent/utils/env_config.py +0 -0
  589. {traigent-0.18.0 → traigent-0.18.1.dev0}/traigent/utils/error_handler.py +0 -0
  590. {traigent-0.18.0 → traigent-0.18.1.dev0}/traigent/utils/example_id.py +0 -0
  591. {traigent-0.18.0 → traigent-0.18.1.dev0}/traigent/utils/exceptions.py +0 -0
  592. {traigent-0.18.0 → traigent-0.18.1.dev0}/traigent/utils/file_versioning.py +0 -0
  593. {traigent-0.18.0 → traigent-0.18.1.dev0}/traigent/utils/function_identity.py +0 -0
  594. {traigent-0.18.0 → traigent-0.18.1.dev0}/traigent/utils/hashing.py +0 -0
  595. {traigent-0.18.0 → traigent-0.18.1.dev0}/traigent/utils/importance.py +0 -0
  596. {traigent-0.18.0 → traigent-0.18.1.dev0}/traigent/utils/incentives.py +0 -0
  597. {traigent-0.18.0 → traigent-0.18.1.dev0}/traigent/utils/insights.py +0 -0
  598. {traigent-0.18.0 → traigent-0.18.1.dev0}/traigent/utils/langchain_interceptor.py +0 -0
  599. {traigent-0.18.0 → traigent-0.18.1.dev0}/traigent/utils/litellm_interceptor.py +0 -0
  600. {traigent-0.18.0 → traigent-0.18.1.dev0}/traigent/utils/llm_response_parsing.py +0 -0
  601. {traigent-0.18.0 → traigent-0.18.1.dev0}/traigent/utils/local_analytics.py +0 -0
  602. {traigent-0.18.0 → traigent-0.18.1.dev0}/traigent/utils/logging.py +0 -0
  603. {traigent-0.18.0 → traigent-0.18.1.dev0}/traigent/utils/multi_objective.py +0 -0
  604. {traigent-0.18.0 → traigent-0.18.1.dev0}/traigent/utils/numpy_compat.py +0 -0
  605. {traigent-0.18.0 → traigent-0.18.1.dev0}/traigent/utils/objectives.py +0 -0
  606. {traigent-0.18.0 → traigent-0.18.1.dev0}/traigent/utils/optimization_analyzer.py +0 -0
  607. {traigent-0.18.0 → traigent-0.18.1.dev0}/traigent/utils/optimization_logger.py +0 -0
  608. {traigent-0.18.0 → traigent-0.18.1.dev0}/traigent/utils/pagination.py +0 -0
  609. {traigent-0.18.0 → traigent-0.18.1.dev0}/traigent/utils/persistence.py +0 -0
  610. {traigent-0.18.0 → traigent-0.18.1.dev0}/traigent/utils/results_table.py +0 -0
  611. {traigent-0.18.0 → traigent-0.18.1.dev0}/traigent/utils/retry.py +0 -0
  612. {traigent-0.18.0 → traigent-0.18.1.dev0}/traigent/utils/url_security.py +0 -0
  613. {traigent-0.18.0 → traigent-0.18.1.dev0}/traigent/utils/validation.py +0 -0
  614. {traigent-0.18.0 → traigent-0.18.1.dev0}/traigent/visualization/__init__.py +0 -0
  615. {traigent-0.18.0 → traigent-0.18.1.dev0}/traigent/visualization/plots.py +0 -0
  616. {traigent-0.18.0 → traigent-0.18.1.dev0}/traigent/wrapper/__init__.py +0 -0
  617. {traigent-0.18.0 → traigent-0.18.1.dev0}/traigent/wrapper/errors.py +0 -0
  618. {traigent-0.18.0 → traigent-0.18.1.dev0}/traigent/wrapper/server.py +0 -0
  619. {traigent-0.18.0 → traigent-0.18.1.dev0}/traigent/wrapper/service.py +0 -0
  620. {traigent-0.18.0 → traigent-0.18.1.dev0}/traigent.egg-info/dependency_links.txt +0 -0
  621. {traigent-0.18.0 → traigent-0.18.1.dev0}/traigent.egg-info/entry_points.txt +0 -0
  622. {traigent-0.18.0 → traigent-0.18.1.dev0}/traigent.egg-info/requires.txt +0 -0
  623. {traigent-0.18.0 → traigent-0.18.1.dev0}/traigent.egg-info/top_level.txt +0 -0
  624. {traigent-0.18.0 → traigent-0.18.1.dev0}/traigent_validation/__init__.py +0 -0
  625. {traigent-0.18.0 → traigent-0.18.1.dev0}/traigent_validation/base.py +0 -0
  626. {traigent-0.18.0 → traigent-0.18.1.dev0}/traigent_validation/plugins.py +0 -0
  627. {traigent-0.18.0 → traigent-0.18.1.dev0}/traigent_validation/py.typed +0 -0
  628. {traigent-0.18.0 → traigent-0.18.1.dev0}/traigent_validation/validators.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: traigent
3
- Version: 0.18.0
3
+ Version: 0.18.1.dev0
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.0"
7
+ version = "0.18.1.dev0"
8
8
  authors = [
9
9
  {name = "Traigent Team", email = "opensource@traigent.ai"},
10
10
  ]
@@ -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):
@@ -145,7 +145,8 @@ class NextStepsClient:
145
145
  Returns:
146
146
  Dict with the backend next-steps contract payload. The response
147
147
  includes a ``caveat`` field that callers should display near the
148
- recommendations.
148
+ recommendations. If the backend includes the optional opaque
149
+ ``posture`` block, it is returned unchanged.
149
150
 
150
151
  Raises:
151
152
  httpx.HTTPError: If request fails. A 404 response is raised as
@@ -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
 
@@ -70,6 +70,12 @@ def _print_next_steps_table(payload: dict[str, Any]) -> None:
70
70
  experiment_run_id = payload.get("experiment_run_id", "unknown")
71
71
  console.print(f"\n[bold blue]Next Steps for {experiment_run_id}[/bold blue]\n")
72
72
 
73
+ posture = payload.get("posture")
74
+ if isinstance(posture, dict):
75
+ summary_text = posture.get("summary_text")
76
+ if summary_text:
77
+ console.print(f"[bold]Posture:[/bold] {summary_text}\n")
78
+
73
79
  rows = payload.get("next_steps") or []
74
80
  if rows:
75
81
  table = Table(show_header=True, header_style="bold magenta")
@@ -290,12 +290,12 @@ class APIKeyManager:
290
290
  alphanumerics or underscores after the prefix.
291
291
  Returns False for any deviation so callers can reject suspicious values early.
292
292
 
293
- Supported formats:
294
- - `tg_`: Standard Traigent API keys (64 characters total)
295
- - `uk_`: User/utility keys issued by the backend (46 characters total)
296
- - `sk_`: Service keys issued by the backend (46 characters total)
297
- - `ak_`: Admin keys issued by the backend (46 characters total)
298
- - `tk_`: Temporary keys issued by the backend (46 characters total)
293
+ Supported formats:
294
+ - `tg_`: Standard Traigent API keys (64 characters total)
295
+ - `uk_`: User/utility keys issued by the backend (46 characters total)
296
+ - `sk_`: Service keys issued by the backend (46 characters total)
297
+ - `ak_`: Admin keys issued by the backend (46 characters total)
298
+ - `tk_`: Temporary keys issued by the backend (46 characters total)
299
299
 
300
300
  Args:
301
301
  key: API key to validate
@@ -307,13 +307,13 @@ class APIKeyManager:
307
307
  return False
308
308
 
309
309
  # Define valid prefixes and their expected total lengths
310
- prefix_lengths = {
311
- "tg_": 64, # Standard Traigent API keys
312
- "uk_": 46, # User/utility keys from backend
313
- "sk_": 46, # Service keys from backend
314
- "ak_": 46, # Admin keys from backend
315
- "tk_": 46, # Temporary keys from backend
316
- }
310
+ prefix_lengths = {
311
+ "tg_": 64, # Standard Traigent API keys
312
+ "uk_": 46, # User/utility keys from backend
313
+ "sk_": 46, # Service keys from backend
314
+ "ak_": 46, # Admin keys from backend
315
+ "tk_": 46, # Temporary keys from backend
316
+ }
317
317
 
318
318
  # Find matching prefix
319
319
  matched_prefix = None
@@ -36,6 +36,10 @@ from traigent.core.session_types import (
36
36
  )
37
37
  from traigent.utils.env_config import is_backend_offline
38
38
  from traigent.utils.exceptions import MetricExtractionError
39
+ from traigent.utils.artifact_fingerprints import (
40
+ artifact_fingerprints_to_wire,
41
+ fingerprint_meta_to_wire,
42
+ )
39
43
  from traigent.utils.logging import get_logger
40
44
  from traigent.utils.validation import validate_numeric_metric
41
45
 
@@ -654,6 +658,7 @@ class ApiOperations:
654
658
  payload["tvl_governance"] = wire_governance
655
659
  if getattr(session_request, "warm_start_from", None):
656
660
  payload["warm_start_from"] = session_request.warm_start_from
661
+ self._attach_artifact_fingerprint_payload(payload, session_request)
657
662
  return payload
658
663
 
659
664
  def _build_legacy_session_payload(
@@ -697,8 +702,26 @@ class ApiOperations:
697
702
  # BE may not consume it yet; the SDK must still forward it.
698
703
  if getattr(session_request, "warm_start_from", None):
699
704
  payload["warm_start_from"] = session_request.warm_start_from
705
+ self._attach_artifact_fingerprint_payload(payload, session_request)
700
706
  return payload
701
707
 
708
+ @staticmethod
709
+ def _attach_artifact_fingerprint_payload(
710
+ payload: dict[str, Any],
711
+ session_request: SessionCreationRequest,
712
+ ) -> None:
713
+ artifact_fingerprints = artifact_fingerprints_to_wire(
714
+ getattr(session_request, "artifact_fingerprints", None)
715
+ )
716
+ if artifact_fingerprints is not None:
717
+ payload["artifact_fingerprints"] = artifact_fingerprints
718
+
719
+ fingerprint_meta = fingerprint_meta_to_wire(
720
+ getattr(session_request, "fingerprint_meta", None)
721
+ )
722
+ if fingerprint_meta is not None:
723
+ payload["fingerprint_meta"] = fingerprint_meta
724
+
702
725
  def _build_connector(self) -> Any | None:
703
726
  """Create an aiohttp connector when custom transport settings are required."""
704
727
 
@@ -8,6 +8,7 @@ for better maintainability and adherence to software engineering principles.
8
8
 
9
9
  import asyncio
10
10
  import concurrent.futures
11
+ import json
11
12
  import os
12
13
  import secrets
13
14
  import sys
@@ -24,7 +25,7 @@ from urllib.parse import quote, urlparse, urlunparse
24
25
  # Import and re-export BackendClientConfig for backward compatibility
25
26
  from traigent.cloud._aiohttp_compat import AIOHTTP_AVAILABLE, aiohttp
26
27
  from traigent.cloud.api_operations import ApiOperations
27
- from traigent.cloud.auth import AuthenticationError
28
+ from traigent.cloud.auth import AuthenticationError, _build_api_key_auth_headers
28
29
  from traigent.cloud.backend_bridges import SDKBackendBridge, SessionExperimentMapping
29
30
  from traigent.cloud.backend_bridges import bridge as _bridge
30
31
  from traigent.cloud.backend_components import (
@@ -116,6 +117,48 @@ _ALLOWED_EXAMPLE_FEATURE_KINDS = frozenset({"simhash_v1"})
116
117
  _JSON_CONTENT_TYPE = "application/json"
117
118
  _SDK_USER_AGENT = get_sdk_user_agent()
118
119
  _SYNC_BACKEND_TRANSIENT_STATUSES = frozenset({408, 429, *range(500, 600)})
120
+ _INTERACTION_POLICY_REQUIRED_KEYS = frozenset(
121
+ {
122
+ "schema_version",
123
+ "profile",
124
+ "policy_text",
125
+ "question_budget",
126
+ "options_max",
127
+ "jargon_level",
128
+ "next_skill_hint",
129
+ "fallback_policy",
130
+ }
131
+ )
132
+ _INTERACTION_POLICY_PROFILE_REQUIRED_KEYS = frozenset(
133
+ {
134
+ "schema_version",
135
+ "control",
136
+ "expertise",
137
+ "pace",
138
+ "source",
139
+ "confidence",
140
+ }
141
+ )
142
+ _INTERACTION_POLICY_RESPONSE_SCHEMA_VERSION = "traigent.agent_interaction.response.v1"
143
+ _INTERACTION_POLICY_PROFILE_SCHEMA_VERSION = "traigent.interaction_policy.v1"
144
+
145
+ STATIC_POLICY_TEXT = (
146
+ "Adapt to the user's interaction profile — persona "
147
+ "(control=delegate|guided|inspect, expertise=se|ds|unknown) and session "
148
+ "mood (pace=execute|balanced|explore); default guided,se,balanced; infer "
149
+ "from explicit statements first then behavior, corrections win. Always be "
150
+ "concise. Match terminology to expertise: plain words and define each term "
151
+ "once for se; compact statistics/optimization terms for ds. When asking, "
152
+ "show at most 3 options, mark one Recommended, give one short trade-off "
153
+ "each. For delegate/execute, proceed with the recommended reversible "
154
+ "action and ask only at hard gates (paid/provider calls, data egress, "
155
+ "destructive edits, service-owned decisions, missing required facts); for "
156
+ "inspect/explore, give brief rationale before asking. Always recommend "
157
+ "the next skill or action. Never weaken safety (dry-run before paid runs; "
158
+ "approval before cost or egress; service-returned plans are authoritative) "
159
+ "and never put persona or private content into telemetry, metadata, names, "
160
+ "logs, or provenance."
161
+ )
119
162
 
120
163
 
121
164
  class _SyncBackendTransientError(RetryableError):
@@ -563,6 +606,10 @@ class BackendIntegratedClient:
563
606
  # Read-only analytics accessor (lazily exposed via the ``analytics``
564
607
  # property). Kept separate from the write paths above.
565
608
  self._analytics_ns: AnalyticsNamespace | None = None
609
+ self._interaction_policy_cache: dict[
610
+ tuple[str | None, str | None], dict[str, Any]
611
+ ] = {}
612
+ self._interaction_policy_fallback_logged = False
566
613
 
567
614
  @property
568
615
  def analytics(self) -> "AnalyticsNamespace":
@@ -577,12 +624,286 @@ class BackendIntegratedClient:
577
624
  self._analytics_ns = AnalyticsNamespace(self)
578
625
  return self._analytics_ns
579
626
 
627
+ def _log_local_interaction_policy_once(self) -> None:
628
+ if self._interaction_policy_fallback_logged:
629
+ return
630
+ logger.info("using local interaction policy")
631
+ self._interaction_policy_fallback_logged = True
632
+
633
+ def _static_interaction_policy(self) -> dict[str, Any]:
634
+ self._log_local_interaction_policy_once()
635
+ return {
636
+ "schema_version": _INTERACTION_POLICY_RESPONSE_SCHEMA_VERSION,
637
+ "profile": {
638
+ "control": "guided",
639
+ "expertise": "se",
640
+ "pace": "balanced",
641
+ "source": "default",
642
+ "confidence": 0.0,
643
+ "schema_version": _INTERACTION_POLICY_PROFILE_SCHEMA_VERSION,
644
+ },
645
+ "policy_text": STATIC_POLICY_TEXT,
646
+ "question_budget": 2,
647
+ "options_max": 3,
648
+ "jargon_level": "plain",
649
+ "next_skill_hint": None,
650
+ "fallback_policy": "static_v1",
651
+ }
652
+
653
+ @staticmethod
654
+ def _interaction_policy_cache_key(
655
+ *,
656
+ harness: str | None,
657
+ skill: str | None,
658
+ ) -> tuple[str | None, str | None]:
659
+ def _normalize(value: str | None) -> str | None:
660
+ if not isinstance(value, str):
661
+ return value
662
+ cleaned = value.strip()
663
+ return cleaned or None
664
+
665
+ return (_normalize(harness), _normalize(skill))
666
+
667
+ @staticmethod
668
+ def _build_interaction_policy_params(
669
+ *,
670
+ harness: str | None,
671
+ skill: str | None,
672
+ signals: Any,
673
+ ) -> dict[str, str] | None:
674
+ params: dict[str, str] = {}
675
+ if isinstance(harness, str) and harness.strip():
676
+ params["harness"] = harness.strip()
677
+ if isinstance(skill, str) and skill.strip():
678
+ params["skill"] = skill.strip()
679
+ if signals is not None:
680
+ params["signals"] = json.dumps(
681
+ signals, separators=(",", ":"), sort_keys=True
682
+ )
683
+ return params or None
684
+
685
+ @staticmethod
686
+ def _normalize_interaction_policy_payload(payload: Any) -> dict[str, Any]:
687
+ if not isinstance(payload, dict):
688
+ raise CloudServiceError(
689
+ "Interaction policy endpoint returned a non-JSON object response"
690
+ )
691
+
692
+ data = payload.get("data", payload)
693
+ if not isinstance(data, dict):
694
+ raise CloudServiceError(
695
+ "Interaction policy endpoint returned invalid response data"
696
+ )
697
+
698
+ missing = sorted(_INTERACTION_POLICY_REQUIRED_KEYS - data.keys())
699
+ if missing:
700
+ raise CloudServiceError(
701
+ "Interaction policy endpoint returned malformed response: "
702
+ f"missing {', '.join(missing)}"
703
+ )
704
+
705
+ if data.get("schema_version") != _INTERACTION_POLICY_RESPONSE_SCHEMA_VERSION:
706
+ raise CloudServiceError(
707
+ "Interaction policy endpoint returned unsupported response schema"
708
+ )
709
+
710
+ profile = data.get("profile")
711
+ if not isinstance(profile, dict):
712
+ raise CloudServiceError(
713
+ "Interaction policy endpoint returned malformed profile"
714
+ )
715
+
716
+ missing_profile = sorted(
717
+ _INTERACTION_POLICY_PROFILE_REQUIRED_KEYS - profile.keys()
718
+ )
719
+ if missing_profile:
720
+ raise CloudServiceError(
721
+ "Interaction policy endpoint returned malformed profile: "
722
+ f"missing {', '.join(missing_profile)}"
723
+ )
724
+
725
+ if profile.get("schema_version") != _INTERACTION_POLICY_PROFILE_SCHEMA_VERSION:
726
+ raise CloudServiceError(
727
+ "Interaction policy endpoint returned unsupported profile schema"
728
+ )
729
+
730
+ return {
731
+ "schema_version": data["schema_version"],
732
+ "profile": {
733
+ "control": profile["control"],
734
+ "expertise": profile["expertise"],
735
+ "pace": profile["pace"],
736
+ "source": profile["source"],
737
+ "confidence": profile["confidence"],
738
+ "schema_version": profile["schema_version"],
739
+ },
740
+ "policy_text": data["policy_text"],
741
+ "question_budget": data["question_budget"],
742
+ "options_max": data["options_max"],
743
+ "jargon_level": data["jargon_level"],
744
+ "next_skill_hint": data["next_skill_hint"],
745
+ "fallback_policy": data["fallback_policy"],
746
+ }
747
+
748
+ def _cache_interaction_policy(
749
+ self,
750
+ *,
751
+ cache_key: tuple[str | None, str | None],
752
+ policy: Mapping[str, Any],
753
+ etag: str | None,
754
+ ) -> None:
755
+ profile = policy.get("profile")
756
+ cached_profile: dict[str, Any] | None = None
757
+ if isinstance(profile, Mapping):
758
+ cached_profile = {
759
+ "control": profile.get("control"),
760
+ "expertise": profile.get("expertise"),
761
+ "pace": profile.get("pace"),
762
+ "source": profile.get("source"),
763
+ "confidence": profile.get("confidence"),
764
+ "schema_version": profile.get("schema_version"),
765
+ }
766
+ self._interaction_policy_cache[cache_key] = {
767
+ "etag": etag,
768
+ "policy_text": policy["policy_text"],
769
+ "profile": cached_profile,
770
+ }
771
+
772
+ def _cached_interaction_policy(
773
+ self, cache_key: tuple[str | None, str | None]
774
+ ) -> dict[str, Any] | None:
775
+ cached = self._interaction_policy_cache.get(cache_key)
776
+ if not isinstance(cached, dict):
777
+ return None
778
+
779
+ policy_text = cached.get("policy_text")
780
+ if not isinstance(policy_text, str):
781
+ return None
782
+
783
+ profile = cached.get("profile")
784
+ if not isinstance(profile, dict):
785
+ return None
786
+
787
+ restored = {
788
+ "schema_version": _INTERACTION_POLICY_RESPONSE_SCHEMA_VERSION,
789
+ "profile": {
790
+ "control": profile.get("control"),
791
+ "expertise": profile.get("expertise"),
792
+ "pace": profile.get("pace"),
793
+ "source": profile.get("source"),
794
+ "confidence": profile.get("confidence"),
795
+ "schema_version": profile.get("schema_version"),
796
+ },
797
+ "policy_text": policy_text,
798
+ "question_budget": 2,
799
+ "options_max": 3,
800
+ "jargon_level": "plain",
801
+ "next_skill_hint": None,
802
+ "fallback_policy": "static_v1",
803
+ }
804
+ return restored
805
+
580
806
  @property
581
807
  def session_bridge(self) -> "SDKBackendBridge":
582
808
  """Return the shared session bridge (exposed for test patching)."""
583
809
 
584
810
  return bridge
585
811
 
812
+ async def get_interaction_policy(
813
+ self,
814
+ *,
815
+ harness: str | None = None,
816
+ skill: str | None = None,
817
+ signals: Any = None,
818
+ ) -> dict[str, Any]:
819
+ """Return the backend persona-interaction policy seed for this session.
820
+
821
+ The backend response is a seed for the agent's starting interaction
822
+ profile only. Explicit user corrections made in-conversation remain
823
+ authoritative and must override this seed.
824
+ """
825
+ from traigent.utils.env_config import is_mock_llm
826
+
827
+ if cloud_backend_egress_disabled(self.no_egress):
828
+ return self._static_interaction_policy()
829
+
830
+ api_key = os.getenv("TRAIGENT_API_KEY") or self._api_key_fallback
831
+ if not api_key or is_mock_llm() or not AIOHTTP_AVAILABLE:
832
+ return self._static_interaction_policy()
833
+
834
+ cache_key = self._interaction_policy_cache_key(
835
+ harness=harness,
836
+ skill=skill,
837
+ )
838
+ cached = self._interaction_policy_cache.get(cache_key)
839
+
840
+ headers = _build_api_key_auth_headers(api_key)
841
+ headers.setdefault("User-Agent", _SDK_USER_AGENT)
842
+ cached_etag = cached.get("etag") if isinstance(cached, dict) else None
843
+ if isinstance(cached_etag, str) and cached_etag:
844
+ headers["If-None-Match"] = cached_etag
845
+
846
+ try:
847
+ params = self._build_interaction_policy_params(
848
+ harness=harness,
849
+ skill=skill,
850
+ signals=signals,
851
+ )
852
+ backend_origin = (
853
+ self.backend_config.backend_base_url or BackendConfig.get_backend_url()
854
+ ).rstrip("/")
855
+ url = f"{backend_origin}/api/v1/auth/me/interaction-policy"
856
+
857
+ async with aiohttp.ClientSession() as session:
858
+ async with session.get(
859
+ url,
860
+ headers=headers,
861
+ params=params,
862
+ timeout=aiohttp.ClientTimeout(total=self.timeout),
863
+ ) as response:
864
+ if response.status == 304:
865
+ cached_policy = self._cached_interaction_policy(cache_key)
866
+ if cached_policy is not None:
867
+ return cached_policy
868
+ raise CloudServiceError(
869
+ "Interaction policy cache miss for backend 304 response"
870
+ )
871
+
872
+ if response.status >= 400:
873
+ error_text = await response.text()
874
+ raise CloudServiceError(
875
+ "Interaction policy request failed with HTTP "
876
+ f"{response.status}: {error_text[:200]}"
877
+ )
878
+
879
+ try:
880
+ payload = await response.json()
881
+ except Exception as exc:
882
+ raise CloudServiceError(
883
+ "Interaction policy endpoint returned non-JSON response"
884
+ ) from exc
885
+
886
+ policy = self._normalize_interaction_policy_payload(payload)
887
+ self._cache_interaction_policy(
888
+ cache_key=cache_key,
889
+ policy=policy,
890
+ etag=response.headers.get("ETag"),
891
+ )
892
+ return policy
893
+ except (
894
+ aiohttp.ClientError,
895
+ TimeoutError,
896
+ CloudServiceError,
897
+ AuthenticationError,
898
+ TypeError,
899
+ ValueError,
900
+ ) as exc:
901
+ logger.debug(
902
+ "Interaction policy request failed; using local fallback: %s",
903
+ exc,
904
+ )
905
+ return self._static_interaction_policy()
906
+
586
907
  def _resolve_local_storage_path(self, override: str | None) -> Path:
587
908
  """Determine the root path for local fallback storage."""
588
909
 
@@ -960,6 +1281,8 @@ class BackendIntegratedClient:
960
1281
  promotion_policy: dict[str, Any] | None = None,
961
1282
  tvl_governance: dict[str, Any] | None = None,
962
1283
  warm_start_from: str | None = None,
1284
+ artifact_fingerprints: dict[str, str | None] | None = None,
1285
+ fingerprint_meta: dict[str, Any] | None = None,
963
1286
  ) -> SessionCreationResult:
964
1287
  """Synchronous wrapper for creating a session.
965
1288
  Delegates to session_operations module. Phase 8: objectives are
@@ -974,6 +1297,8 @@ class BackendIntegratedClient:
974
1297
  promotion_policy=promotion_policy,
975
1298
  tvl_governance=tvl_governance,
976
1299
  warm_start_from=warm_start_from,
1300
+ artifact_fingerprints=artifact_fingerprints,
1301
+ fingerprint_meta=fingerprint_meta,
977
1302
  )
978
1303
 
979
1304
  async def create_hybrid_session(
@@ -36,6 +36,10 @@ from traigent.evaluators.base import Dataset
36
36
  from traigent.utils.env_config import is_backend_offline
37
37
  from traigent.utils.error_handler import OfflineModeError
38
38
  from traigent.utils.error_handler import TraigentError as HelpfulTraigentError
39
+ from traigent.utils.artifact_fingerprints import (
40
+ artifact_fingerprints_to_wire,
41
+ fingerprint_meta_to_wire,
42
+ )
39
43
  from traigent.utils.exceptions import ValidationError as ValidationException
40
44
  from traigent.utils.logging import get_logger
41
45
  from traigent.utils.retry import NetworkError, RateLimitError, retry_http_request
@@ -1570,6 +1574,8 @@ class TraigentCloudClient(BaseTraigentClient):
1570
1574
  optimization_strategy: dict[str, Any] | None = None,
1571
1575
  user_id: str | None = None,
1572
1576
  billing_tier: str = "standard",
1577
+ artifact_fingerprints: dict[str, str | None] | None = None,
1578
+ fingerprint_meta: dict[str, Any] | None = None,
1573
1579
  ) -> SessionCreationResponse:
1574
1580
  """Create a new optimization session for interactive optimization.
1575
1581
 
@@ -1611,6 +1617,8 @@ class TraigentCloudClient(BaseTraigentClient):
1611
1617
  optimization_strategy=optimization_strategy,
1612
1618
  user_id=user_id,
1613
1619
  billing_tier=billing_tier,
1620
+ artifact_fingerprints=artifact_fingerprints,
1621
+ fingerprint_meta=fingerprint_meta,
1614
1622
  )
1615
1623
 
1616
1624
  if self._aio_session is None:
@@ -1857,6 +1865,16 @@ class TraigentCloudClient(BaseTraigentClient):
1857
1865
  # Warm-start: prior experiment id (empty string treated as absent).
1858
1866
  if request.warm_start_from:
1859
1867
  payload["warm_start_from"] = request.warm_start_from
1868
+ artifact_fingerprints = artifact_fingerprints_to_wire(
1869
+ getattr(request, "artifact_fingerprints", None)
1870
+ )
1871
+ if artifact_fingerprints is not None:
1872
+ payload["artifact_fingerprints"] = artifact_fingerprints
1873
+ fingerprint_meta = fingerprint_meta_to_wire(
1874
+ getattr(request, "fingerprint_meta", None)
1875
+ )
1876
+ if fingerprint_meta is not None:
1877
+ payload["fingerprint_meta"] = fingerprint_meta
1860
1878
  return payload
1861
1879
 
1862
1880
  @staticmethod
@@ -202,6 +202,8 @@ class SessionCreationRequest:
202
202
  user_id: str | None = None
203
203
  billing_tier: str = "standard"
204
204
  metadata: dict[str, Any] = field(default_factory=dict)
205
+ artifact_fingerprints: dict[str, str | None] | None = None
206
+ fingerprint_meta: dict[str, Any] | None = None
205
207
  # Alternative parameter names for test compatibility
206
208
  problem_type: str | None = None
207
209
 
@@ -329,6 +329,8 @@ class SessionOperations:
329
329
  promotion_policy: dict[str, Any] | None = None,
330
330
  tvl_governance: dict[str, Any] | None = None,
331
331
  warm_start_from: str | None = None,
332
+ artifact_fingerprints: dict[str, str | None] | None = None,
333
+ fingerprint_meta: dict[str, Any] | None = None,
332
334
  ) -> SessionCreationResult:
333
335
  """Create a session with backend metadata submission.
334
336
 
@@ -446,6 +448,8 @@ class SessionOperations:
446
448
  user_id=None, # Privacy preserving
447
449
  billing_tier="privacy",
448
450
  metadata=metadata or {},
451
+ artifact_fingerprints=artifact_fingerprints,
452
+ fingerprint_meta=fingerprint_meta,
449
453
  )
450
454
 
451
455
  try: