traigent 0.21.0.dev1__tar.gz → 0.21.0.dev3__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (632) hide show
  1. {traigent-0.21.0.dev1/traigent.egg-info → traigent-0.21.0.dev3}/PKG-INFO +1 -1
  2. {traigent-0.21.0.dev1 → traigent-0.21.0.dev3}/pyproject.toml +1 -1
  3. {traigent-0.21.0.dev1 → traigent-0.21.0.dev3}/traigent/cloud/sync_manager.py +161 -69
  4. {traigent-0.21.0.dev1 → traigent-0.21.0.dev3/traigent.egg-info}/PKG-INFO +1 -1
  5. {traigent-0.21.0.dev1 → traigent-0.21.0.dev3}/CHANGELOG.md +0 -0
  6. {traigent-0.21.0.dev1 → traigent-0.21.0.dev3}/COMMERCIAL-LICENSE.md +0 -0
  7. {traigent-0.21.0.dev1 → traigent-0.21.0.dev3}/CONTRIBUTING.md +0 -0
  8. {traigent-0.21.0.dev1 → traigent-0.21.0.dev3}/CONTRIBUTOR-LICENSING.md +0 -0
  9. {traigent-0.21.0.dev1 → traigent-0.21.0.dev3}/DISCLAIMER.md +0 -0
  10. {traigent-0.21.0.dev1 → traigent-0.21.0.dev3}/LICENSE +0 -0
  11. {traigent-0.21.0.dev1 → traigent-0.21.0.dev3}/MANIFEST.in +0 -0
  12. {traigent-0.21.0.dev1 → traigent-0.21.0.dev3}/NOTICE +0 -0
  13. {traigent-0.21.0.dev1 → traigent-0.21.0.dev3}/README.md +0 -0
  14. {traigent-0.21.0.dev1 → traigent-0.21.0.dev3}/SECURITY.md +0 -0
  15. {traigent-0.21.0.dev1 → traigent-0.21.0.dev3}/docs/LOCAL_CI_GATE.md +0 -0
  16. {traigent-0.21.0.dev1 → traigent-0.21.0.dev3}/docs/README.md +0 -0
  17. {traigent-0.21.0.dev1 → traigent-0.21.0.dev3}/docs/SYNC_MAP.md +0 -0
  18. {traigent-0.21.0.dev1 → traigent-0.21.0.dev3}/docs/agent-skill.md +0 -0
  19. {traigent-0.21.0.dev1 → traigent-0.21.0.dev3}/docs/api-reference/complete-function-specification.md +0 -0
  20. {traigent-0.21.0.dev1 → traigent-0.21.0.dev3}/docs/api-reference/decorator-reference.md +0 -0
  21. {traigent-0.21.0.dev1 → traigent-0.21.0.dev3}/docs/api-reference/enterprise-beta-api.md +0 -0
  22. {traigent-0.21.0.dev1 → traigent-0.21.0.dev3}/docs/api-reference/interactive_optimizer.md +0 -0
  23. {traigent-0.21.0.dev1 → traigent-0.21.0.dev3}/docs/api-reference/telemetry.md +0 -0
  24. {traigent-0.21.0.dev1 → traigent-0.21.0.dev3}/docs/api-reference/thread-pool-examples.md +0 -0
  25. {traigent-0.21.0.dev1 → traigent-0.21.0.dev3}/docs/architecture/ARCHITECTURE.md +0 -0
  26. {traigent-0.21.0.dev1 → traigent-0.21.0.dev3}/docs/architecture/cost-architecture-validation.md +0 -0
  27. {traigent-0.21.0.dev1 → traigent-0.21.0.dev3}/docs/architecture/execution_mode_follow_up.md +0 -0
  28. {traigent-0.21.0.dev1 → traigent-0.21.0.dev3}/docs/architecture/integrations-inventory.md +0 -0
  29. {traigent-0.21.0.dev1 → traigent-0.21.0.dev3}/docs/architecture/plugin_architecture.md +0 -0
  30. {traigent-0.21.0.dev1 → traigent-0.21.0.dev3}/docs/architecture/project-structure.md +0 -0
  31. {traigent-0.21.0.dev1 → traigent-0.21.0.dev3}/docs/architecture/stop_conditions.md +0 -0
  32. {traigent-0.21.0.dev1 → traigent-0.21.0.dev3}/docs/concepts/composite-knob-ir.md +0 -0
  33. {traigent-0.21.0.dev1 → traigent-0.21.0.dev3}/docs/concepts/composite-knobs.md +0 -0
  34. {traigent-0.21.0.dev1 → traigent-0.21.0.dev3}/docs/concepts/guided-generation.md +0 -0
  35. {traigent-0.21.0.dev1 → traigent-0.21.0.dev3}/docs/contributing/ADDING_NEW_INTEGRATIONS.md +0 -0
  36. {traigent-0.21.0.dev1 → traigent-0.21.0.dev3}/docs/contributing/CODE_OF_CONDUCT.md +0 -0
  37. {traigent-0.21.0.dev1 → traigent-0.21.0.dev3}/docs/contributing/CONTRIBUTING.md +0 -0
  38. {traigent-0.21.0.dev1 → traigent-0.21.0.dev3}/docs/contributing/EXAMPLE_TEMPLATE.md +0 -0
  39. {traigent-0.21.0.dev1 → traigent-0.21.0.dev3}/docs/contributing/README.md +0 -0
  40. {traigent-0.21.0.dev1 → traigent-0.21.0.dev3}/docs/contributing/SECURITY.md +0 -0
  41. {traigent-0.21.0.dev1 → traigent-0.21.0.dev3}/docs/contributing/aikido_triage.md +0 -0
  42. {traigent-0.21.0.dev1 → traigent-0.21.0.dev3}/docs/contributing/code_review_instructions.md +0 -0
  43. {traigent-0.21.0.dev1 → traigent-0.21.0.dev3}/docs/contributing/test-quality-guide.md +0 -0
  44. {traigent-0.21.0.dev1 → traigent-0.21.0.dev3}/docs/demos/DEMO_VIDEO_GUIDE.md +0 -0
  45. {traigent-0.21.0.dev1 → traigent-0.21.0.dev3}/docs/demos/README.md +0 -0
  46. {traigent-0.21.0.dev1 → traigent-0.21.0.dev3}/docs/examples/API_PATTERNS.md +0 -0
  47. {traigent-0.21.0.dev1 → traigent-0.21.0.dev3}/docs/examples/LEARNING_ROADMAP.md +0 -0
  48. {traigent-0.21.0.dev1 → traigent-0.21.0.dev3}/docs/examples/QUICK_REFERENCE.md +0 -0
  49. {traigent-0.21.0.dev1 → traigent-0.21.0.dev3}/docs/examples/README.md +0 -0
  50. {traigent-0.21.0.dev1 → traigent-0.21.0.dev3}/docs/examples/START_HERE.md +0 -0
  51. {traigent-0.21.0.dev1 → traigent-0.21.0.dev3}/docs/examples/TROUBLESHOOTING.md +0 -0
  52. {traigent-0.21.0.dev1 → traigent-0.21.0.dev3}/docs/fake-completion-tracking.md +0 -0
  53. {traigent-0.21.0.dev1 → traigent-0.21.0.dev3}/docs/feature_matrices/README.md +0 -0
  54. {traigent-0.21.0.dev1 → traigent-0.21.0.dev3}/docs/features/README.md +0 -0
  55. {traigent-0.21.0.dev1 → traigent-0.21.0.dev3}/docs/features/authentication.md +0 -0
  56. {traigent-0.21.0.dev1 → traigent-0.21.0.dev3}/docs/features/constraint-dsl.md +0 -0
  57. {traigent-0.21.0.dev1 → traigent-0.21.0.dev3}/docs/features/dataflow-detection.md +0 -0
  58. {traigent-0.21.0.dev1 → traigent-0.21.0.dev3}/docs/features/framework_override_enhanced_features.md +0 -0
  59. {traigent-0.21.0.dev1 → traigent-0.21.0.dev3}/docs/features/mcp-server.md +0 -0
  60. {traigent-0.21.0.dev1 → traigent-0.21.0.dev3}/docs/features/observability-spans.md +0 -0
  61. {traigent-0.21.0.dev1 → traigent-0.21.0.dev3}/docs/features/onboarding.md +0 -0
  62. {traigent-0.21.0.dev1 → traigent-0.21.0.dev3}/docs/features/prompt_management.md +0 -0
  63. {traigent-0.21.0.dev1 → traigent-0.21.0.dev3}/docs/features/recommendations.md +0 -0
  64. {traigent-0.21.0.dev1 → traigent-0.21.0.dev3}/docs/features/safety-gates.md +0 -0
  65. {traigent-0.21.0.dev1 → traigent-0.21.0.dev3}/docs/features/seamless_injection.md +0 -0
  66. {traigent-0.21.0.dev1 → traigent-0.21.0.dev3}/docs/features/strategy-presets.md +0 -0
  67. {traigent-0.21.0.dev1 → traigent-0.21.0.dev3}/docs/features/strict_metrics_nulls.md +0 -0
  68. {traigent-0.21.0.dev1 → traigent-0.21.0.dev3}/docs/getting-started/GETTING_STARTED.md +0 -0
  69. {traigent-0.21.0.dev1 → traigent-0.21.0.dev3}/docs/getting-started/README.md +0 -0
  70. {traigent-0.21.0.dev1 → traigent-0.21.0.dev3}/docs/getting-started/installation.md +0 -0
  71. {traigent-0.21.0.dev1 → traigent-0.21.0.dev3}/docs/getting-started/minimal-integration.md +0 -0
  72. {traigent-0.21.0.dev1 → traigent-0.21.0.dev3}/docs/getting-started/portal-dev-laptop-agent.md +0 -0
  73. {traigent-0.21.0.dev1 → traigent-0.21.0.dev3}/docs/getting-started/testing.md +0 -0
  74. {traigent-0.21.0.dev1 → traigent-0.21.0.dev3}/docs/guides/VSCODE_RESTART_GUIDE.md +0 -0
  75. {traigent-0.21.0.dev1 → traigent-0.21.0.dev3}/docs/guides/evaluation.md +0 -0
  76. {traigent-0.21.0.dev1 → traigent-0.21.0.dev3}/docs/guides/execution-mode-migration.md +0 -0
  77. {traigent-0.21.0.dev1 → traigent-0.21.0.dev3}/docs/guides/execution-modes.md +0 -0
  78. {traigent-0.21.0.dev1 → traigent-0.21.0.dev3}/docs/guides/js-bridge.md +0 -0
  79. {traigent-0.21.0.dev1 → traigent-0.21.0.dev3}/docs/guides/llm_plugin_migration_guide.md +0 -0
  80. {traigent-0.21.0.dev1 → traigent-0.21.0.dev3}/docs/guides/parallel-configuration.md +0 -0
  81. {traigent-0.21.0.dev1 → traigent-0.21.0.dev3}/docs/guides/secrets_management.md +0 -0
  82. {traigent-0.21.0.dev1 → traigent-0.21.0.dev3}/docs/hybrid-mode-api-contract.md +0 -0
  83. {traigent-0.21.0.dev1 → traigent-0.21.0.dev3}/docs/hybrid-mode-client-guide.md +0 -0
  84. {traigent-0.21.0.dev1 → traigent-0.21.0.dev3}/docs/operations/azure_openai.md +0 -0
  85. {traigent-0.21.0.dev1 → traigent-0.21.0.dev3}/docs/operations/bedrock.md +0 -0
  86. {traigent-0.21.0.dev1 → traigent-0.21.0.dev3}/docs/operations/google_gemini.md +0 -0
  87. {traigent-0.21.0.dev1 → traigent-0.21.0.dev3}/docs/security/trust_model.md +0 -0
  88. {traigent-0.21.0.dev1 → traigent-0.21.0.dev3}/docs/testing/CREATIVE_STRESS_TESTING.md +0 -0
  89. {traigent-0.21.0.dev1 → traigent-0.21.0.dev3}/docs/traceability/concepts/composite-knob-ir.md +0 -0
  90. {traigent-0.21.0.dev1 → traigent-0.21.0.dev3}/docs/traceability/concepts/composite-knobs.md +0 -0
  91. {traigent-0.21.0.dev1 → traigent-0.21.0.dev3}/docs/traceability/concepts/guided-generation.md +0 -0
  92. {traigent-0.21.0.dev1 → traigent-0.21.0.dev3}/docs/traceability/schema.md +0 -0
  93. {traigent-0.21.0.dev1 → traigent-0.21.0.dev3}/docs/traceability/tagging_tracking.md +0 -0
  94. {traigent-0.21.0.dev1 → traigent-0.21.0.dev3}/docs/traceability/taxonomy_reference.md +0 -0
  95. {traigent-0.21.0.dev1 → traigent-0.21.0.dev3}/docs/tvl/CONSTRAINT_EXPRESSIONS.md +0 -0
  96. {traigent-0.21.0.dev1 → traigent-0.21.0.dev3}/docs/user-guide/README.md +0 -0
  97. {traigent-0.21.0.dev1 → traigent-0.21.0.dev3}/docs/user-guide/agent_optimization.md +0 -0
  98. {traigent-0.21.0.dev1 → traigent-0.21.0.dev3}/docs/user-guide/choosing_optimization_model.md +0 -0
  99. {traigent-0.21.0.dev1 → traigent-0.21.0.dev3}/docs/user-guide/configuration-spaces.md +0 -0
  100. {traigent-0.21.0.dev1 → traigent-0.21.0.dev3}/docs/user-guide/evaluation_guide.md +0 -0
  101. {traigent-0.21.0.dev1 → traigent-0.21.0.dev3}/docs/user-guide/injection_modes.md +0 -0
  102. {traigent-0.21.0.dev1 → traigent-0.21.0.dev3}/docs/user-guide/interactive_optimization.md +0 -0
  103. {traigent-0.21.0.dev1 → traigent-0.21.0.dev3}/docs/user-guide/smart_optimization.md +0 -0
  104. {traigent-0.21.0.dev1 → traigent-0.21.0.dev3}/docs/user-guide/tuned_variables.md +0 -0
  105. {traigent-0.21.0.dev1 → traigent-0.21.0.dev3}/docs/walkthrough.md +0 -0
  106. {traigent-0.21.0.dev1 → traigent-0.21.0.dev3}/requirements/requirements-all.txt +0 -0
  107. {traigent-0.21.0.dev1 → traigent-0.21.0.dev3}/requirements/requirements-analytics.txt +0 -0
  108. {traigent-0.21.0.dev1 → traigent-0.21.0.dev3}/requirements/requirements-bayesian.txt +0 -0
  109. {traigent-0.21.0.dev1 → traigent-0.21.0.dev3}/requirements/requirements-chroma.txt +0 -0
  110. {traigent-0.21.0.dev1 → traigent-0.21.0.dev3}/requirements/requirements-dev.txt +0 -0
  111. {traigent-0.21.0.dev1 → traigent-0.21.0.dev3}/requirements/requirements-hybrid.txt +0 -0
  112. {traigent-0.21.0.dev1 → traigent-0.21.0.dev3}/requirements/requirements-integrations.txt +0 -0
  113. {traigent-0.21.0.dev1 → traigent-0.21.0.dev3}/requirements/requirements-security.txt +0 -0
  114. {traigent-0.21.0.dev1 → traigent-0.21.0.dev3}/requirements/requirements-test.txt +0 -0
  115. {traigent-0.21.0.dev1 → traigent-0.21.0.dev3}/requirements/requirements.txt +0 -0
  116. {traigent-0.21.0.dev1 → traigent-0.21.0.dev3}/setup.cfg +0 -0
  117. {traigent-0.21.0.dev1 → traigent-0.21.0.dev3}/traigent/__init__.py +0 -0
  118. {traigent-0.21.0.dev1 → traigent-0.21.0.dev3}/traigent/_version.py +0 -0
  119. {traigent-0.21.0.dev1 → traigent-0.21.0.dev3}/traigent/adapters/execution_adapter.py +0 -0
  120. {traigent-0.21.0.dev1 → traigent-0.21.0.dev3}/traigent/admin/__init__.py +0 -0
  121. {traigent-0.21.0.dev1 → traigent-0.21.0.dev3}/traigent/admin/client.py +0 -0
  122. {traigent-0.21.0.dev1 → traigent-0.21.0.dev3}/traigent/admin/config.py +0 -0
  123. {traigent-0.21.0.dev1 → traigent-0.21.0.dev3}/traigent/admin/dtos.py +0 -0
  124. {traigent-0.21.0.dev1 → traigent-0.21.0.dev3}/traigent/agents/__init__.py +0 -0
  125. {traigent-0.21.0.dev1 → traigent-0.21.0.dev3}/traigent/agents/config_mapper.py +0 -0
  126. {traigent-0.21.0.dev1 → traigent-0.21.0.dev3}/traigent/agents/executor.py +0 -0
  127. {traigent-0.21.0.dev1 → traigent-0.21.0.dev3}/traigent/agents/platforms.py +0 -0
  128. {traigent-0.21.0.dev1 → traigent-0.21.0.dev3}/traigent/agents/specification_generator.py +0 -0
  129. {traigent-0.21.0.dev1 → traigent-0.21.0.dev3}/traigent/analytics/__init__.py +0 -0
  130. {traigent-0.21.0.dev1 → traigent-0.21.0.dev3}/traigent/analytics/anomaly.py +0 -0
  131. {traigent-0.21.0.dev1 → traigent-0.21.0.dev3}/traigent/analytics/cost_optimization.py +0 -0
  132. {traigent-0.21.0.dev1 → traigent-0.21.0.dev3}/traigent/analytics/example_insights.py +0 -0
  133. {traigent-0.21.0.dev1 → traigent-0.21.0.dev3}/traigent/analytics/intelligence.py +0 -0
  134. {traigent-0.21.0.dev1 → traigent-0.21.0.dev3}/traigent/analytics/meta_learning.py +0 -0
  135. {traigent-0.21.0.dev1 → traigent-0.21.0.dev3}/traigent/analytics/next_steps.py +0 -0
  136. {traigent-0.21.0.dev1 → traigent-0.21.0.dev3}/traigent/analytics/optimization_plan.py +0 -0
  137. {traigent-0.21.0.dev1 → traigent-0.21.0.dev3}/traigent/analytics/predictive.py +0 -0
  138. {traigent-0.21.0.dev1 → traigent-0.21.0.dev3}/traigent/analytics/render.py +0 -0
  139. {traigent-0.21.0.dev1 → traigent-0.21.0.dev3}/traigent/analytics/scheduling.py +0 -0
  140. {traigent-0.21.0.dev1 → traigent-0.21.0.dev3}/traigent/analytics_mcp/__init__.py +0 -0
  141. {traigent-0.21.0.dev1 → traigent-0.21.0.dev3}/traigent/analytics_mcp/server.py +0 -0
  142. {traigent-0.21.0.dev1 → traigent-0.21.0.dev3}/traigent/analytics_mcp/tools.py +0 -0
  143. {traigent-0.21.0.dev1 → traigent-0.21.0.dev3}/traigent/api/__init__.py +0 -0
  144. {traigent-0.21.0.dev1 → traigent-0.21.0.dev3}/traigent/api/agent_inference.py +0 -0
  145. {traigent-0.21.0.dev1 → traigent-0.21.0.dev3}/traigent/api/config_builder.py +0 -0
  146. {traigent-0.21.0.dev1 → traigent-0.21.0.dev3}/traigent/api/config_space.py +0 -0
  147. {traigent-0.21.0.dev1 → traigent-0.21.0.dev3}/traigent/api/constraint_builders.py +0 -0
  148. {traigent-0.21.0.dev1 → traigent-0.21.0.dev3}/traigent/api/constraints.py +0 -0
  149. {traigent-0.21.0.dev1 → traigent-0.21.0.dev3}/traigent/api/decorators.py +0 -0
  150. {traigent-0.21.0.dev1 → traigent-0.21.0.dev3}/traigent/api/functions.py +0 -0
  151. {traigent-0.21.0.dev1 → traigent-0.21.0.dev3}/traigent/api/parameter_ranges.py +0 -0
  152. {traigent-0.21.0.dev1 → traigent-0.21.0.dev3}/traigent/api/parameter_validator.py +0 -0
  153. {traigent-0.21.0.dev1 → traigent-0.21.0.dev3}/traigent/api/safety.py +0 -0
  154. {traigent-0.21.0.dev1 → traigent-0.21.0.dev3}/traigent/api/strategy_presets.py +0 -0
  155. {traigent-0.21.0.dev1 → traigent-0.21.0.dev3}/traigent/api/types.py +0 -0
  156. {traigent-0.21.0.dev1 → traigent-0.21.0.dev3}/traigent/api/validation_protocol.py +0 -0
  157. {traigent-0.21.0.dev1 → traigent-0.21.0.dev3}/traigent/cli/__init__.py +0 -0
  158. {traigent-0.21.0.dev1 → traigent-0.21.0.dev3}/traigent/cli/auth_commands.py +0 -0
  159. {traigent-0.21.0.dev1 → traigent-0.21.0.dev3}/traigent/cli/detect_tvars_command.py +0 -0
  160. {traigent-0.21.0.dev1 → traigent-0.21.0.dev3}/traigent/cli/function_discovery.py +0 -0
  161. {traigent-0.21.0.dev1 → traigent-0.21.0.dev3}/traigent/cli/generate_config_command.py +0 -0
  162. {traigent-0.21.0.dev1 → traigent-0.21.0.dev3}/traigent/cli/hooks_commands.py +0 -0
  163. {traigent-0.21.0.dev1 → traigent-0.21.0.dev3}/traigent/cli/local_commands.py +0 -0
  164. {traigent-0.21.0.dev1 → traigent-0.21.0.dev3}/traigent/cli/main.py +0 -0
  165. {traigent-0.21.0.dev1 → traigent-0.21.0.dev3}/traigent/cli/next_steps_command.py +0 -0
  166. {traigent-0.21.0.dev1 → traigent-0.21.0.dev3}/traigent/cli/onboard_commands.py +0 -0
  167. {traigent-0.21.0.dev1 → traigent-0.21.0.dev3}/traigent/cli/optimization_validator.py +0 -0
  168. {traigent-0.21.0.dev1 → traigent-0.21.0.dev3}/traigent/cli/plan_command.py +0 -0
  169. {traigent-0.21.0.dev1 → traigent-0.21.0.dev3}/traigent/cli/playbook_commands.py +0 -0
  170. {traigent-0.21.0.dev1 → traigent-0.21.0.dev3}/traigent/cli/sync_commands.py +0 -0
  171. {traigent-0.21.0.dev1 → traigent-0.21.0.dev3}/traigent/cli/validation_types.py +0 -0
  172. {traigent-0.21.0.dev1 → traigent-0.21.0.dev3}/traigent/cloud/__init__.py +0 -0
  173. {traigent-0.21.0.dev1 → traigent-0.21.0.dev3}/traigent/cloud/_aiohttp_compat.py +0 -0
  174. {traigent-0.21.0.dev1 → traigent-0.21.0.dev3}/traigent/cloud/agent_dtos.py +0 -0
  175. {traigent-0.21.0.dev1 → traigent-0.21.0.dev3}/traigent/cloud/analytics_auth.py +0 -0
  176. {traigent-0.21.0.dev1 → traigent-0.21.0.dev3}/traigent/cloud/analytics_client.py +0 -0
  177. {traigent-0.21.0.dev1 → traigent-0.21.0.dev3}/traigent/cloud/api_key_manager.py +0 -0
  178. {traigent-0.21.0.dev1 → traigent-0.21.0.dev3}/traigent/cloud/api_operations.py +0 -0
  179. {traigent-0.21.0.dev1 → traigent-0.21.0.dev3}/traigent/cloud/async_batch_transport.py +0 -0
  180. {traigent-0.21.0.dev1 → traigent-0.21.0.dev3}/traigent/cloud/auth.py +0 -0
  181. {traigent-0.21.0.dev1 → traigent-0.21.0.dev3}/traigent/cloud/backend_bridges.py +0 -0
  182. {traigent-0.21.0.dev1 → traigent-0.21.0.dev3}/traigent/cloud/backend_client.py +0 -0
  183. {traigent-0.21.0.dev1 → traigent-0.21.0.dev3}/traigent/cloud/backend_components.py +0 -0
  184. {traigent-0.21.0.dev1 → traigent-0.21.0.dev3}/traigent/cloud/backend_synchronizer.py +0 -0
  185. {traigent-0.21.0.dev1 → traigent-0.21.0.dev3}/traigent/cloud/benchmark_client.py +0 -0
  186. {traigent-0.21.0.dev1 → traigent-0.21.0.dev3}/traigent/cloud/billing.py +0 -0
  187. {traigent-0.21.0.dev1 → traigent-0.21.0.dev3}/traigent/cloud/client.py +0 -0
  188. {traigent-0.21.0.dev1 → traigent-0.21.0.dev3}/traigent/cloud/cloud_operations.py +0 -0
  189. {traigent-0.21.0.dev1 → traigent-0.21.0.dev3}/traigent/cloud/credential_manager.py +0 -0
  190. {traigent-0.21.0.dev1 → traigent-0.21.0.dev3}/traigent/cloud/credential_resolver.py +0 -0
  191. {traigent-0.21.0.dev1 → traigent-0.21.0.dev3}/traigent/cloud/dataset_converter.py +0 -0
  192. {traigent-0.21.0.dev1 → traigent-0.21.0.dev3}/traigent/cloud/dtos.py +0 -0
  193. {traigent-0.21.0.dev1 → traigent-0.21.0.dev3}/traigent/cloud/governance.py +0 -0
  194. {traigent-0.21.0.dev1 → traigent-0.21.0.dev3}/traigent/cloud/integration_manager.py +0 -0
  195. {traigent-0.21.0.dev1 → traigent-0.21.0.dev3}/traigent/cloud/models.py +0 -0
  196. {traigent-0.21.0.dev1 → traigent-0.21.0.dev3}/traigent/cloud/optimizer_client.py +0 -0
  197. {traigent-0.21.0.dev1 → traigent-0.21.0.dev3}/traigent/cloud/password_auth_handler.py +0 -0
  198. {traigent-0.21.0.dev1 → traigent-0.21.0.dev3}/traigent/cloud/privacy_operations.py +0 -0
  199. {traigent-0.21.0.dev1 → traigent-0.21.0.dev3}/traigent/cloud/production_mcp_client.py +0 -0
  200. {traigent-0.21.0.dev1 → traigent-0.21.0.dev3}/traigent/cloud/remote_guidance.py +0 -0
  201. {traigent-0.21.0.dev1 → traigent-0.21.0.dev3}/traigent/cloud/resilient_client.py +0 -0
  202. {traigent-0.21.0.dev1 → traigent-0.21.0.dev3}/traigent/cloud/service.py +0 -0
  203. {traigent-0.21.0.dev1 → traigent-0.21.0.dev3}/traigent/cloud/session_operations.py +0 -0
  204. {traigent-0.21.0.dev1 → traigent-0.21.0.dev3}/traigent/cloud/session_types.py +0 -0
  205. {traigent-0.21.0.dev1 → traigent-0.21.0.dev3}/traigent/cloud/sessions.py +0 -0
  206. {traigent-0.21.0.dev1 → traigent-0.21.0.dev3}/traigent/cloud/smart_pruning.py +0 -0
  207. {traigent-0.21.0.dev1 → traigent-0.21.0.dev3}/traigent/cloud/subset_selection.py +0 -0
  208. {traigent-0.21.0.dev1 → traigent-0.21.0.dev3}/traigent/cloud/token_manager.py +0 -0
  209. {traigent-0.21.0.dev1 → traigent-0.21.0.dev3}/traigent/cloud/trial_operations.py +0 -0
  210. {traigent-0.21.0.dev1 → traigent-0.21.0.dev3}/traigent/cloud/trial_tracker.py +0 -0
  211. {traigent-0.21.0.dev1 → traigent-0.21.0.dev3}/traigent/cloud/url_security.py +0 -0
  212. {traigent-0.21.0.dev1 → traigent-0.21.0.dev3}/traigent/cloud/user_agent.py +0 -0
  213. {traigent-0.21.0.dev1 → traigent-0.21.0.dev3}/traigent/cloud/validators.py +0 -0
  214. {traigent-0.21.0.dev1 → traigent-0.21.0.dev3}/traigent/config/__init__.py +0 -0
  215. {traigent-0.21.0.dev1 → traigent-0.21.0.dev3}/traigent/config/api_keys.py +0 -0
  216. {traigent-0.21.0.dev1 → traigent-0.21.0.dev3}/traigent/config/ast_transformer.py +0 -0
  217. {traigent-0.21.0.dev1 → traigent-0.21.0.dev3}/traigent/config/backend_config.py +0 -0
  218. {traigent-0.21.0.dev1 → traigent-0.21.0.dev3}/traigent/config/context.py +0 -0
  219. {traigent-0.21.0.dev1 → traigent-0.21.0.dev3}/traigent/config/feature_flags.py +0 -0
  220. {traigent-0.21.0.dev1 → traigent-0.21.0.dev3}/traigent/config/models.yaml +0 -0
  221. {traigent-0.21.0.dev1 → traigent-0.21.0.dev3}/traigent/config/parallel.py +0 -0
  222. {traigent-0.21.0.dev1 → traigent-0.21.0.dev3}/traigent/config/project.py +0 -0
  223. {traigent-0.21.0.dev1 → traigent-0.21.0.dev3}/traigent/config/provider_support.py +0 -0
  224. {traigent-0.21.0.dev1 → traigent-0.21.0.dev3}/traigent/config/providers.py +0 -0
  225. {traigent-0.21.0.dev1 → traigent-0.21.0.dev3}/traigent/config/runtime_injector.py +0 -0
  226. {traigent-0.21.0.dev1 → traigent-0.21.0.dev3}/traigent/config/tenant.py +0 -0
  227. {traigent-0.21.0.dev1 → traigent-0.21.0.dev3}/traigent/config/types.py +0 -0
  228. {traigent-0.21.0.dev1 → traigent-0.21.0.dev3}/traigent/config_generator/__init__.py +0 -0
  229. {traigent-0.21.0.dev1 → traigent-0.21.0.dev3}/traigent/config_generator/agent_classifier.py +0 -0
  230. {traigent-0.21.0.dev1 → traigent-0.21.0.dev3}/traigent/config_generator/apply.py +0 -0
  231. {traigent-0.21.0.dev1 → traigent-0.21.0.dev3}/traigent/config_generator/catalog/schemas/tvar_catalog_entry_schema.json +0 -0
  232. {traigent-0.21.0.dev1 → traigent-0.21.0.dev3}/traigent/config_generator/catalog/schemas/tvar_observation_schema.json +0 -0
  233. {traigent-0.21.0.dev1 → traigent-0.21.0.dev3}/traigent/config_generator/catalog/schemas/tvar_value_recommendation_schema.json +0 -0
  234. {traigent-0.21.0.dev1 → traigent-0.21.0.dev3}/traigent/config_generator/catalog/tvar_catalog.v1.json +0 -0
  235. {traigent-0.21.0.dev1 → traigent-0.21.0.dev3}/traigent/config_generator/catalog.py +0 -0
  236. {traigent-0.21.0.dev1 → traigent-0.21.0.dev3}/traigent/config_generator/llm_backend.py +0 -0
  237. {traigent-0.21.0.dev1 → traigent-0.21.0.dev3}/traigent/config_generator/pipeline.py +0 -0
  238. {traigent-0.21.0.dev1 → traigent-0.21.0.dev3}/traigent/config_generator/presets/__init__.py +0 -0
  239. {traigent-0.21.0.dev1 → traigent-0.21.0.dev3}/traigent/config_generator/presets/agent_type_catalog.py +0 -0
  240. {traigent-0.21.0.dev1 → traigent-0.21.0.dev3}/traigent/config_generator/presets/benchmark_catalog.py +0 -0
  241. {traigent-0.21.0.dev1 → traigent-0.21.0.dev3}/traigent/config_generator/presets/constraint_templates.py +0 -0
  242. {traigent-0.21.0.dev1 → traigent-0.21.0.dev3}/traigent/config_generator/presets/range_presets.py +0 -0
  243. {traigent-0.21.0.dev1 → traigent-0.21.0.dev3}/traigent/config_generator/recommendations.py +0 -0
  244. {traigent-0.21.0.dev1 → traigent-0.21.0.dev3}/traigent/config_generator/subsystems/__init__.py +0 -0
  245. {traigent-0.21.0.dev1 → traigent-0.21.0.dev3}/traigent/config_generator/subsystems/benchmarks.py +0 -0
  246. {traigent-0.21.0.dev1 → traigent-0.21.0.dev3}/traigent/config_generator/subsystems/objectives.py +0 -0
  247. {traigent-0.21.0.dev1 → traigent-0.21.0.dev3}/traigent/config_generator/subsystems/safety_constraints.py +0 -0
  248. {traigent-0.21.0.dev1 → traigent-0.21.0.dev3}/traigent/config_generator/subsystems/structural_constraints.py +0 -0
  249. {traigent-0.21.0.dev1 → traigent-0.21.0.dev3}/traigent/config_generator/subsystems/tvar_ranges.py +0 -0
  250. {traigent-0.21.0.dev1 → traigent-0.21.0.dev3}/traigent/config_generator/subsystems/tvar_recommendations.py +0 -0
  251. {traigent-0.21.0.dev1 → traigent-0.21.0.dev3}/traigent/config_generator/types.py +0 -0
  252. {traigent-0.21.0.dev1 → traigent-0.21.0.dev3}/traigent/core/__init__.py +0 -0
  253. {traigent-0.21.0.dev1 → traigent-0.21.0.dev3}/traigent/core/backend_session_manager.py +0 -0
  254. {traigent-0.21.0.dev1 → traigent-0.21.0.dev3}/traigent/core/best_config_runtime.py +0 -0
  255. {traigent-0.21.0.dev1 → traigent-0.21.0.dev3}/traigent/core/cache_policy.py +0 -0
  256. {traigent-0.21.0.dev1 → traigent-0.21.0.dev3}/traigent/core/ci_approval.py +0 -0
  257. {traigent-0.21.0.dev1 → traigent-0.21.0.dev3}/traigent/core/config_state_manager.py +0 -0
  258. {traigent-0.21.0.dev1 → traigent-0.21.0.dev3}/traigent/core/constants.py +0 -0
  259. {traigent-0.21.0.dev1 → traigent-0.21.0.dev3}/traigent/core/cost_enforcement.py +0 -0
  260. {traigent-0.21.0.dev1 → traigent-0.21.0.dev3}/traigent/core/cost_estimator.py +0 -0
  261. {traigent-0.21.0.dev1 → traigent-0.21.0.dev3}/traigent/core/evaluator_wrapper.py +0 -0
  262. {traigent-0.21.0.dev1 → traigent-0.21.0.dev3}/traigent/core/exception_handler.py +0 -0
  263. {traigent-0.21.0.dev1 → traigent-0.21.0.dev3}/traigent/core/execution_policy_runtime.py +0 -0
  264. {traigent-0.21.0.dev1 → traigent-0.21.0.dev3}/traigent/core/license.py +0 -0
  265. {traigent-0.21.0.dev1 → traigent-0.21.0.dev3}/traigent/core/logger_facade.py +0 -0
  266. {traigent-0.21.0.dev1 → traigent-0.21.0.dev3}/traigent/core/mandatory_metrics.py +0 -0
  267. {traigent-0.21.0.dev1 → traigent-0.21.0.dev3}/traigent/core/meta_types.py +0 -0
  268. {traigent-0.21.0.dev1 → traigent-0.21.0.dev3}/traigent/core/metadata_helpers.py +0 -0
  269. {traigent-0.21.0.dev1 → traigent-0.21.0.dev3}/traigent/core/metric_registry.py +0 -0
  270. {traigent-0.21.0.dev1 → traigent-0.21.0.dev3}/traigent/core/metrics_aggregator.py +0 -0
  271. {traigent-0.21.0.dev1 → traigent-0.21.0.dev3}/traigent/core/namespace.py +0 -0
  272. {traigent-0.21.0.dev1 → traigent-0.21.0.dev3}/traigent/core/objectives.py +0 -0
  273. {traigent-0.21.0.dev1 → traigent-0.21.0.dev3}/traigent/core/optimization_pipeline.py +0 -0
  274. {traigent-0.21.0.dev1 → traigent-0.21.0.dev3}/traigent/core/optimized_function.py +0 -0
  275. {traigent-0.21.0.dev1 → traigent-0.21.0.dev3}/traigent/core/orchestrator.py +0 -0
  276. {traigent-0.21.0.dev1 → traigent-0.21.0.dev3}/traigent/core/orchestrator_helpers.py +0 -0
  277. {traigent-0.21.0.dev1 → traigent-0.21.0.dev3}/traigent/core/parallel_execution_manager.py +0 -0
  278. {traigent-0.21.0.dev1 → traigent-0.21.0.dev3}/traigent/core/progress_manager.py +0 -0
  279. {traigent-0.21.0.dev1 → traigent-0.21.0.dev3}/traigent/core/result_selection.py +0 -0
  280. {traigent-0.21.0.dev1 → traigent-0.21.0.dev3}/traigent/core/sample_budget.py +0 -0
  281. {traigent-0.21.0.dev1 → traigent-0.21.0.dev3}/traigent/core/samplers/__init__.py +0 -0
  282. {traigent-0.21.0.dev1 → traigent-0.21.0.dev3}/traigent/core/samplers/random_sampler.py +0 -0
  283. {traigent-0.21.0.dev1 → traigent-0.21.0.dev3}/traigent/core/session_context.py +0 -0
  284. {traigent-0.21.0.dev1 → traigent-0.21.0.dev3}/traigent/core/session_types.py +0 -0
  285. {traigent-0.21.0.dev1 → traigent-0.21.0.dev3}/traigent/core/stat_significance.py +0 -0
  286. {traigent-0.21.0.dev1 → traigent-0.21.0.dev3}/traigent/core/stop_condition_manager.py +0 -0
  287. {traigent-0.21.0.dev1 → traigent-0.21.0.dev3}/traigent/core/stop_conditions.py +0 -0
  288. {traigent-0.21.0.dev1 → traigent-0.21.0.dev3}/traigent/core/trace_env.py +0 -0
  289. {traigent-0.21.0.dev1 → traigent-0.21.0.dev3}/traigent/core/tracing.py +0 -0
  290. {traigent-0.21.0.dev1 → traigent-0.21.0.dev3}/traigent/core/trial_context.py +0 -0
  291. {traigent-0.21.0.dev1 → traigent-0.21.0.dev3}/traigent/core/trial_lifecycle.py +0 -0
  292. {traigent-0.21.0.dev1 → traigent-0.21.0.dev3}/traigent/core/trial_result_factory.py +0 -0
  293. {traigent-0.21.0.dev1 → traigent-0.21.0.dev3}/traigent/core/types.py +0 -0
  294. {traigent-0.21.0.dev1 → traigent-0.21.0.dev3}/traigent/core/types_ext.py +0 -0
  295. {traigent-0.21.0.dev1 → traigent-0.21.0.dev3}/traigent/core/utils.py +0 -0
  296. {traigent-0.21.0.dev1 → traigent-0.21.0.dev3}/traigent/core/workflow_trace_manager.py +0 -0
  297. {traigent-0.21.0.dev1 → traigent-0.21.0.dev3}/traigent/core_metrics/__init__.py +0 -0
  298. {traigent-0.21.0.dev1 → traigent-0.21.0.dev3}/traigent/core_metrics/client.py +0 -0
  299. {traigent-0.21.0.dev1 → traigent-0.21.0.dev3}/traigent/core_metrics/config.py +0 -0
  300. {traigent-0.21.0.dev1 → traigent-0.21.0.dev3}/traigent/core_metrics/dtos.py +0 -0
  301. {traigent-0.21.0.dev1 → traigent-0.21.0.dev3}/traigent/defaults.py +0 -0
  302. {traigent-0.21.0.dev1 → traigent-0.21.0.dev3}/traigent/effectuation/__init__.py +0 -0
  303. {traigent-0.21.0.dev1 → traigent-0.21.0.dev3}/traigent/effectuation/contracts.py +0 -0
  304. {traigent-0.21.0.dev1 → traigent-0.21.0.dev3}/traigent/effectuation/strategies/__init__.py +0 -0
  305. {traigent-0.21.0.dev1 → traigent-0.21.0.dev3}/traigent/effectuation/strategies/framework_param.py +0 -0
  306. {traigent-0.21.0.dev1 → traigent-0.21.0.dev3}/traigent/effectuation/strategies/self_consistency.py +0 -0
  307. {traigent-0.21.0.dev1 → traigent-0.21.0.dev3}/traigent/evaluation/__init__.py +0 -0
  308. {traigent-0.21.0.dev1 → traigent-0.21.0.dev3}/traigent/evaluation/client.py +0 -0
  309. {traigent-0.21.0.dev1 → traigent-0.21.0.dev3}/traigent/evaluation/config.py +0 -0
  310. {traigent-0.21.0.dev1 → traigent-0.21.0.dev3}/traigent/evaluation/dtos.py +0 -0
  311. {traigent-0.21.0.dev1 → traigent-0.21.0.dev3}/traigent/evaluators/__init__.py +0 -0
  312. {traigent-0.21.0.dev1 → traigent-0.21.0.dev3}/traigent/evaluators/base.py +0 -0
  313. {traigent-0.21.0.dev1 → traigent-0.21.0.dev3}/traigent/evaluators/catalog/metric_eval_catalog.v1.json +0 -0
  314. {traigent-0.21.0.dev1 → traigent-0.21.0.dev3}/traigent/evaluators/catalog/schemas/metric_eval_catalog_entry_schema.json +0 -0
  315. {traigent-0.21.0.dev1 → traigent-0.21.0.dev3}/traigent/evaluators/catalog_loader.py +0 -0
  316. {traigent-0.21.0.dev1 → traigent-0.21.0.dev3}/traigent/evaluators/dataset_registry.py +0 -0
  317. {traigent-0.21.0.dev1 → traigent-0.21.0.dev3}/traigent/evaluators/hybrid_api.py +0 -0
  318. {traigent-0.21.0.dev1 → traigent-0.21.0.dev3}/traigent/evaluators/local.py +0 -0
  319. {traigent-0.21.0.dev1 → traigent-0.21.0.dev3}/traigent/evaluators/metrics.py +0 -0
  320. {traigent-0.21.0.dev1 → traigent-0.21.0.dev3}/traigent/evaluators/metrics_tracker.py +0 -0
  321. {traigent-0.21.0.dev1 → traigent-0.21.0.dev3}/traigent/evaluators/recommendations.py +0 -0
  322. {traigent-0.21.0.dev1 → traigent-0.21.0.dev3}/traigent/examples/__init__.py +0 -0
  323. {traigent-0.21.0.dev1 → traigent-0.21.0.dev3}/traigent/examples/_portal.py +0 -0
  324. {traigent-0.21.0.dev1 → traigent-0.21.0.dev3}/traigent/examples/providers/__init__.py +0 -0
  325. {traigent-0.21.0.dev1 → traigent-0.21.0.dev3}/traigent/examples/providers/_bootstrap.py +0 -0
  326. {traigent-0.21.0.dev1 → traigent-0.21.0.dev3}/traigent/examples/providers/_demo.py +0 -0
  327. {traigent-0.21.0.dev1 → traigent-0.21.0.dev3}/traigent/examples/providers/anthropic.py +0 -0
  328. {traigent-0.21.0.dev1 → traigent-0.21.0.dev3}/traigent/examples/providers/aws.py +0 -0
  329. {traigent-0.21.0.dev1 → traigent-0.21.0.dev3}/traigent/examples/providers/azure.py +0 -0
  330. {traigent-0.21.0.dev1 → traigent-0.21.0.dev3}/traigent/examples/providers/gcp.py +0 -0
  331. {traigent-0.21.0.dev1 → traigent-0.21.0.dev3}/traigent/examples/providers/gemini.py +0 -0
  332. {traigent-0.21.0.dev1 → traigent-0.21.0.dev3}/traigent/examples/providers/groq.py +0 -0
  333. {traigent-0.21.0.dev1 → traigent-0.21.0.dev3}/traigent/examples/providers/litellm_any.py +0 -0
  334. {traigent-0.21.0.dev1 → traigent-0.21.0.dev3}/traigent/examples/providers/manifest.json +0 -0
  335. {traigent-0.21.0.dev1 → traigent-0.21.0.dev3}/traigent/examples/providers/openai.py +0 -0
  336. {traigent-0.21.0.dev1 → traigent-0.21.0.dev3}/traigent/examples/providers/openrouter.py +0 -0
  337. {traigent-0.21.0.dev1 → traigent-0.21.0.dev3}/traigent/examples/providers/qa_samples.jsonl +0 -0
  338. {traigent-0.21.0.dev1 → traigent-0.21.0.dev3}/traigent/examples/quickstart/__init__.py +0 -0
  339. {traigent-0.21.0.dev1 → traigent-0.21.0.dev3}/traigent/examples/quickstart/__main__.py +0 -0
  340. {traigent-0.21.0.dev1 → traigent-0.21.0.dev3}/traigent/examples/quickstart/_env.py +0 -0
  341. {traigent-0.21.0.dev1 → traigent-0.21.0.dev3}/traigent/examples/quickstart/publish_and_verify.py +0 -0
  342. {traigent-0.21.0.dev1 → traigent-0.21.0.dev3}/traigent/examples/quickstart/qa_samples.jsonl +0 -0
  343. {traigent-0.21.0.dev1 → traigent-0.21.0.dev3}/traigent/examples/tutorial_bootstrap.py +0 -0
  344. {traigent-0.21.0.dev1 → traigent-0.21.0.dev3}/traigent/generation/__init__.py +0 -0
  345. {traigent-0.21.0.dev1 → traigent-0.21.0.dev3}/traigent/generation/backend_provider.py +0 -0
  346. {traigent-0.21.0.dev1 → traigent-0.21.0.dev3}/traigent/generation/example_synth.py +0 -0
  347. {traigent-0.21.0.dev1 → traigent-0.21.0.dev3}/traigent/generation/llm_provider.py +0 -0
  348. {traigent-0.21.0.dev1 → traigent-0.21.0.dev3}/traigent/generation/loop.py +0 -0
  349. {traigent-0.21.0.dev1 → traigent-0.21.0.dev3}/traigent/generation/models.py +0 -0
  350. {traigent-0.21.0.dev1 → traigent-0.21.0.dev3}/traigent/generation/options.py +0 -0
  351. {traigent-0.21.0.dev1 → traigent-0.21.0.dev3}/traigent/generation/prompt_rewriter.py +0 -0
  352. {traigent-0.21.0.dev1 → traigent-0.21.0.dev3}/traigent/generation/skill_train/__init__.py +0 -0
  353. {traigent-0.21.0.dev1 → traigent-0.21.0.dev3}/traigent/generation/skill_train/_deterministic_indices.py +0 -0
  354. {traigent-0.21.0.dev1 → traigent-0.21.0.dev3}/traigent/generation/skill_train/artifacts.py +0 -0
  355. {traigent-0.21.0.dev1 → traigent-0.21.0.dev3}/traigent/generation/skill_train/buffer.py +0 -0
  356. {traigent-0.21.0.dev1 → traigent-0.21.0.dev3}/traigent/generation/skill_train/document.py +0 -0
  357. {traigent-0.21.0.dev1 → traigent-0.21.0.dev3}/traigent/generation/skill_train/edits.py +0 -0
  358. {traigent-0.21.0.dev1 → traigent-0.21.0.dev3}/traigent/generation/skill_train/prompts.py +0 -0
  359. {traigent-0.21.0.dev1 → traigent-0.21.0.dev3}/traigent/generation/skill_train/reflection.py +0 -0
  360. {traigent-0.21.0.dev1 → traigent-0.21.0.dev3}/traigent/generation/skill_train/schedule.py +0 -0
  361. {traigent-0.21.0.dev1 → traigent-0.21.0.dev3}/traigent/generation/skill_train/slow_update.py +0 -0
  362. {traigent-0.21.0.dev1 → traigent-0.21.0.dev3}/traigent/generation/skill_train/splits.py +0 -0
  363. {traigent-0.21.0.dev1 → traigent-0.21.0.dev3}/traigent/generation/skill_train/trainer.py +0 -0
  364. {traigent-0.21.0.dev1 → traigent-0.21.0.dev3}/traigent/generation/skill_train/trainer_result.py +0 -0
  365. {traigent-0.21.0.dev1 → traigent-0.21.0.dev3}/traigent/generation/validators.py +0 -0
  366. {traigent-0.21.0.dev1 → traigent-0.21.0.dev3}/traigent/guaranteed_modes.py +0 -0
  367. {traigent-0.21.0.dev1 → traigent-0.21.0.dev3}/traigent/hooks/__init__.py +0 -0
  368. {traigent-0.21.0.dev1 → traigent-0.21.0.dev3}/traigent/hooks/config.py +0 -0
  369. {traigent-0.21.0.dev1 → traigent-0.21.0.dev3}/traigent/hooks/installer.py +0 -0
  370. {traigent-0.21.0.dev1 → traigent-0.21.0.dev3}/traigent/hooks/validator.py +0 -0
  371. {traigent-0.21.0.dev1 → traigent-0.21.0.dev3}/traigent/hybrid/__init__.py +0 -0
  372. {traigent-0.21.0.dev1 → traigent-0.21.0.dev3}/traigent/hybrid/discovery.py +0 -0
  373. {traigent-0.21.0.dev1 → traigent-0.21.0.dev3}/traigent/hybrid/http_transport.py +0 -0
  374. {traigent-0.21.0.dev1 → traigent-0.21.0.dev3}/traigent/hybrid/lifecycle.py +0 -0
  375. {traigent-0.21.0.dev1 → traigent-0.21.0.dev3}/traigent/hybrid/mcp_transport.py +0 -0
  376. {traigent-0.21.0.dev1 → traigent-0.21.0.dev3}/traigent/hybrid/protocol.py +0 -0
  377. {traigent-0.21.0.dev1 → traigent-0.21.0.dev3}/traigent/hybrid/transport.py +0 -0
  378. {traigent-0.21.0.dev1 → traigent-0.21.0.dev3}/traigent/integrations/__init__.py +0 -0
  379. {traigent-0.21.0.dev1 → traigent-0.21.0.dev3}/traigent/integrations/activation.py +0 -0
  380. {traigent-0.21.0.dev1 → traigent-0.21.0.dev3}/traigent/integrations/base.py +0 -0
  381. {traigent-0.21.0.dev1 → traigent-0.21.0.dev3}/traigent/integrations/base_plugin.py +0 -0
  382. {traigent-0.21.0.dev1 → traigent-0.21.0.dev3}/traigent/integrations/bedrock_client.py +0 -0
  383. {traigent-0.21.0.dev1 → traigent-0.21.0.dev3}/traigent/integrations/config.py +0 -0
  384. {traigent-0.21.0.dev1 → traigent-0.21.0.dev3}/traigent/integrations/dspy_adapter.py +0 -0
  385. {traigent-0.21.0.dev1 → traigent-0.21.0.dev3}/traigent/integrations/framework_override.py +0 -0
  386. {traigent-0.21.0.dev1 → traigent-0.21.0.dev3}/traigent/integrations/langchain/__init__.py +0 -0
  387. {traigent-0.21.0.dev1 → traigent-0.21.0.dev3}/traigent/integrations/langchain/handler.py +0 -0
  388. {traigent-0.21.0.dev1 → traigent-0.21.0.dev3}/traigent/integrations/langfuse/__init__.py +0 -0
  389. {traigent-0.21.0.dev1 → traigent-0.21.0.dev3}/traigent/integrations/langfuse/callback.py +0 -0
  390. {traigent-0.21.0.dev1 → traigent-0.21.0.dev3}/traigent/integrations/langfuse/client.py +0 -0
  391. {traigent-0.21.0.dev1 → traigent-0.21.0.dev3}/traigent/integrations/langfuse/tracker.py +0 -0
  392. {traigent-0.21.0.dev1 → traigent-0.21.0.dev3}/traigent/integrations/llms/__init__.py +0 -0
  393. {traigent-0.21.0.dev1 → traigent-0.21.0.dev3}/traigent/integrations/llms/anthropic_plugin.py +0 -0
  394. {traigent-0.21.0.dev1 → traigent-0.21.0.dev3}/traigent/integrations/llms/azure_openai_plugin.py +0 -0
  395. {traigent-0.21.0.dev1 → traigent-0.21.0.dev3}/traigent/integrations/llms/base_llm_plugin.py +0 -0
  396. {traigent-0.21.0.dev1 → traigent-0.21.0.dev3}/traigent/integrations/llms/bedrock_plugin.py +0 -0
  397. {traigent-0.21.0.dev1 → traigent-0.21.0.dev3}/traigent/integrations/llms/cohere_plugin.py +0 -0
  398. {traigent-0.21.0.dev1 → traigent-0.21.0.dev3}/traigent/integrations/llms/gemini_plugin.py +0 -0
  399. {traigent-0.21.0.dev1 → traigent-0.21.0.dev3}/traigent/integrations/llms/huggingface_plugin.py +0 -0
  400. {traigent-0.21.0.dev1 → traigent-0.21.0.dev3}/traigent/integrations/llms/langchain/__init__.py +0 -0
  401. {traigent-0.21.0.dev1 → traigent-0.21.0.dev3}/traigent/integrations/llms/langchain/base.py +0 -0
  402. {traigent-0.21.0.dev1 → traigent-0.21.0.dev3}/traigent/integrations/llms/langchain_plugin.py +0 -0
  403. {traigent-0.21.0.dev1 → traigent-0.21.0.dev3}/traigent/integrations/llms/litellm_plugin.py +0 -0
  404. {traigent-0.21.0.dev1 → traigent-0.21.0.dev3}/traigent/integrations/llms/llamaindex_plugin.py +0 -0
  405. {traigent-0.21.0.dev1 → traigent-0.21.0.dev3}/traigent/integrations/llms/mistral_plugin.py +0 -0
  406. {traigent-0.21.0.dev1 → traigent-0.21.0.dev3}/traigent/integrations/llms/openai.py +0 -0
  407. {traigent-0.21.0.dev1 → traigent-0.21.0.dev3}/traigent/integrations/llms/openai_plugin.py +0 -0
  408. {traigent-0.21.0.dev1 → traigent-0.21.0.dev3}/traigent/integrations/mappings.py +0 -0
  409. {traigent-0.21.0.dev1 → traigent-0.21.0.dev3}/traigent/integrations/model_discovery/__init__.py +0 -0
  410. {traigent-0.21.0.dev1 → traigent-0.21.0.dev3}/traigent/integrations/model_discovery/anthropic_discovery.py +0 -0
  411. {traigent-0.21.0.dev1 → traigent-0.21.0.dev3}/traigent/integrations/model_discovery/azure_discovery.py +0 -0
  412. {traigent-0.21.0.dev1 → traigent-0.21.0.dev3}/traigent/integrations/model_discovery/base.py +0 -0
  413. {traigent-0.21.0.dev1 → traigent-0.21.0.dev3}/traigent/integrations/model_discovery/cache.py +0 -0
  414. {traigent-0.21.0.dev1 → traigent-0.21.0.dev3}/traigent/integrations/model_discovery/gemini_discovery.py +0 -0
  415. {traigent-0.21.0.dev1 → traigent-0.21.0.dev3}/traigent/integrations/model_discovery/mistral_discovery.py +0 -0
  416. {traigent-0.21.0.dev1 → traigent-0.21.0.dev3}/traigent/integrations/model_discovery/openai_discovery.py +0 -0
  417. {traigent-0.21.0.dev1 → traigent-0.21.0.dev3}/traigent/integrations/model_discovery/registry.py +0 -0
  418. {traigent-0.21.0.dev1 → traigent-0.21.0.dev3}/traigent/integrations/observability/__init__.py +0 -0
  419. {traigent-0.21.0.dev1 → traigent-0.21.0.dev3}/traigent/integrations/observability/mlflow.py +0 -0
  420. {traigent-0.21.0.dev1 → traigent-0.21.0.dev3}/traigent/integrations/observability/wandb.py +0 -0
  421. {traigent-0.21.0.dev1 → traigent-0.21.0.dev3}/traigent/integrations/observability/workflow_traces.py +0 -0
  422. {traigent-0.21.0.dev1 → traigent-0.21.0.dev3}/traigent/integrations/plugin_registry.py +0 -0
  423. {traigent-0.21.0.dev1 → traigent-0.21.0.dev3}/traigent/integrations/providers.py +0 -0
  424. {traigent-0.21.0.dev1 → traigent-0.21.0.dev3}/traigent/integrations/pydantic_ai/__init__.py +0 -0
  425. {traigent-0.21.0.dev1 → traigent-0.21.0.dev3}/traigent/integrations/pydantic_ai/_types.py +0 -0
  426. {traigent-0.21.0.dev1 → traigent-0.21.0.dev3}/traigent/integrations/pydantic_ai/handler.py +0 -0
  427. {traigent-0.21.0.dev1 → traigent-0.21.0.dev3}/traigent/integrations/pydantic_ai/plugin.py +0 -0
  428. {traigent-0.21.0.dev1 → traigent-0.21.0.dev3}/traigent/integrations/utils/__init__.py +0 -0
  429. {traigent-0.21.0.dev1 → traigent-0.21.0.dev3}/traigent/integrations/utils/discovery.py +0 -0
  430. {traigent-0.21.0.dev1 → traigent-0.21.0.dev3}/traigent/integrations/utils/message_coercion.py +0 -0
  431. {traigent-0.21.0.dev1 → traigent-0.21.0.dev3}/traigent/integrations/utils/mock_adapter.py +0 -0
  432. {traigent-0.21.0.dev1 → traigent-0.21.0.dev3}/traigent/integrations/utils/parameter_normalizer.py +0 -0
  433. {traigent-0.21.0.dev1 → traigent-0.21.0.dev3}/traigent/integrations/utils/response_wrapper.py +0 -0
  434. {traigent-0.21.0.dev1 → traigent-0.21.0.dev3}/traigent/integrations/utils/validation.py +0 -0
  435. {traigent-0.21.0.dev1 → traigent-0.21.0.dev3}/traigent/integrations/utils/version_compat.py +0 -0
  436. {traigent-0.21.0.dev1 → traigent-0.21.0.dev3}/traigent/integrations/vector_stores/__init__.py +0 -0
  437. {traigent-0.21.0.dev1 → traigent-0.21.0.dev3}/traigent/integrations/vector_stores/base.py +0 -0
  438. {traigent-0.21.0.dev1 → traigent-0.21.0.dev3}/traigent/integrations/vector_stores/chromadb_plugin.py +0 -0
  439. {traigent-0.21.0.dev1 → traigent-0.21.0.dev3}/traigent/integrations/vector_stores/pinecone_plugin.py +0 -0
  440. {traigent-0.21.0.dev1 → traigent-0.21.0.dev3}/traigent/integrations/vector_stores/weaviate_plugin.py +0 -0
  441. {traigent-0.21.0.dev1 → traigent-0.21.0.dev3}/traigent/integrations/wrappers.py +0 -0
  442. {traigent-0.21.0.dev1 → traigent-0.21.0.dev3}/traigent/invokers/__init__.py +0 -0
  443. {traigent-0.21.0.dev1 → traigent-0.21.0.dev3}/traigent/invokers/base.py +0 -0
  444. {traigent-0.21.0.dev1 → traigent-0.21.0.dev3}/traigent/invokers/batch.py +0 -0
  445. {traigent-0.21.0.dev1 → traigent-0.21.0.dev3}/traigent/invokers/local.py +0 -0
  446. {traigent-0.21.0.dev1 → traigent-0.21.0.dev3}/traigent/invokers/streaming.py +0 -0
  447. {traigent-0.21.0.dev1 → traigent-0.21.0.dev3}/traigent/knobs/__init__.py +0 -0
  448. {traigent-0.21.0.dev1 → traigent-0.21.0.dev3}/traigent/knobs/adapters.py +0 -0
  449. {traigent-0.21.0.dev1 → traigent-0.21.0.dev3}/traigent/knobs/bindings.py +0 -0
  450. {traigent-0.21.0.dev1 → traigent-0.21.0.dev3}/traigent/knobs/canonical.py +0 -0
  451. {traigent-0.21.0.dev1 → traigent-0.21.0.dev3}/traigent/knobs/cascade.py +0 -0
  452. {traigent-0.21.0.dev1 → traigent-0.21.0.dev3}/traigent/knobs/certificates.py +0 -0
  453. {traigent-0.21.0.dev1 → traigent-0.21.0.dev3}/traigent/knobs/composites.py +0 -0
  454. {traigent-0.21.0.dev1 → traigent-0.21.0.dev3}/traigent/knobs/kinds.py +0 -0
  455. {traigent-0.21.0.dev1 → traigent-0.21.0.dev3}/traigent/knobs/patterns.py +0 -0
  456. {traigent-0.21.0.dev1 → traigent-0.21.0.dev3}/traigent/knobs/resolution.py +0 -0
  457. {traigent-0.21.0.dev1 → traigent-0.21.0.dev3}/traigent/knobs/resolver.py +0 -0
  458. {traigent-0.21.0.dev1 → traigent-0.21.0.dev3}/traigent/knobs/runtime.py +0 -0
  459. {traigent-0.21.0.dev1 → traigent-0.21.0.dev3}/traigent/knobs/signals.py +0 -0
  460. {traigent-0.21.0.dev1 → traigent-0.21.0.dev3}/traigent/knobs/telemetry.py +0 -0
  461. {traigent-0.21.0.dev1 → traigent-0.21.0.dev3}/traigent/mcp/__init__.py +0 -0
  462. {traigent-0.21.0.dev1 → traigent-0.21.0.dev3}/traigent/mcp/server.py +0 -0
  463. {traigent-0.21.0.dev1 → traigent-0.21.0.dev3}/traigent/mcp/tools.py +0 -0
  464. {traigent-0.21.0.dev1 → traigent-0.21.0.dev3}/traigent/metrics/__init__.py +0 -0
  465. {traigent-0.21.0.dev1 → traigent-0.21.0.dev3}/traigent/metrics/agent_metrics.py +0 -0
  466. {traigent-0.21.0.dev1 → traigent-0.21.0.dev3}/traigent/metrics/content_features.py +0 -0
  467. {traigent-0.21.0.dev1 → traigent-0.21.0.dev3}/traigent/metrics/deepeval_metrics.py +0 -0
  468. {traigent-0.21.0.dev1 → traigent-0.21.0.dev3}/traigent/metrics/ragas_metrics.py +0 -0
  469. {traigent-0.21.0.dev1 → traigent-0.21.0.dev3}/traigent/metrics/registry.py +0 -0
  470. {traigent-0.21.0.dev1 → traigent-0.21.0.dev3}/traigent/observability/__init__.py +0 -0
  471. {traigent-0.21.0.dev1 → traigent-0.21.0.dev3}/traigent/observability/agent_spans.py +0 -0
  472. {traigent-0.21.0.dev1 → traigent-0.21.0.dev3}/traigent/observability/client.py +0 -0
  473. {traigent-0.21.0.dev1 → traigent-0.21.0.dev3}/traigent/observability/config.py +0 -0
  474. {traigent-0.21.0.dev1 → traigent-0.21.0.dev3}/traigent/observability/decorators.py +0 -0
  475. {traigent-0.21.0.dev1 → traigent-0.21.0.dev3}/traigent/observability/dtos.py +0 -0
  476. {traigent-0.21.0.dev1 → traigent-0.21.0.dev3}/traigent/optimizers/__init__.py +0 -0
  477. {traigent-0.21.0.dev1 → traigent-0.21.0.dev3}/traigent/optimizers/base.py +0 -0
  478. {traigent-0.21.0.dev1 → traigent-0.21.0.dev3}/traigent/optimizers/batch_optimizers.py +0 -0
  479. {traigent-0.21.0.dev1 → traigent-0.21.0.dev3}/traigent/optimizers/cloud_optimizer.py +0 -0
  480. {traigent-0.21.0.dev1 → traigent-0.21.0.dev3}/traigent/optimizers/grid.py +0 -0
  481. {traigent-0.21.0.dev1 → traigent-0.21.0.dev3}/traigent/optimizers/interactive_optimizer.py +0 -0
  482. {traigent-0.21.0.dev1 → traigent-0.21.0.dev3}/traigent/optimizers/random.py +0 -0
  483. {traigent-0.21.0.dev1 → traigent-0.21.0.dev3}/traigent/optimizers/registry.py +0 -0
  484. {traigent-0.21.0.dev1 → traigent-0.21.0.dev3}/traigent/optimizers/remote.py +0 -0
  485. {traigent-0.21.0.dev1 → traigent-0.21.0.dev3}/traigent/optimizers/remote_services.py +0 -0
  486. {traigent-0.21.0.dev1 → traigent-0.21.0.dev3}/traigent/optimizers/results.py +0 -0
  487. {traigent-0.21.0.dev1 → traigent-0.21.0.dev3}/traigent/playbook/__init__.py +0 -0
  488. {traigent-0.21.0.dev1 → traigent-0.21.0.dev3}/traigent/playbook/loader.py +0 -0
  489. {traigent-0.21.0.dev1 → traigent-0.21.0.dev3}/traigent/playbook/model.py +0 -0
  490. {traigent-0.21.0.dev1 → traigent-0.21.0.dev3}/traigent/playbook/scaffold.py +0 -0
  491. {traigent-0.21.0.dev1 → traigent-0.21.0.dev3}/traigent/playbook/schemas/agent_playbook_schema.json +0 -0
  492. {traigent-0.21.0.dev1 → traigent-0.21.0.dev3}/traigent/playbook/staleness.py +0 -0
  493. {traigent-0.21.0.dev1 → traigent-0.21.0.dev3}/traigent/playbook/validator.py +0 -0
  494. {traigent-0.21.0.dev1 → traigent-0.21.0.dev3}/traigent/plugins/__init__.py +0 -0
  495. {traigent-0.21.0.dev1 → traigent-0.21.0.dev3}/traigent/plugins/registry.py +0 -0
  496. {traigent-0.21.0.dev1 → traigent-0.21.0.dev3}/traigent/projects/__init__.py +0 -0
  497. {traigent-0.21.0.dev1 → traigent-0.21.0.dev3}/traigent/projects/client.py +0 -0
  498. {traigent-0.21.0.dev1 → traigent-0.21.0.dev3}/traigent/projects/config.py +0 -0
  499. {traigent-0.21.0.dev1 → traigent-0.21.0.dev3}/traigent/projects/dtos.py +0 -0
  500. {traigent-0.21.0.dev1 → traigent-0.21.0.dev3}/traigent/prompts/__init__.py +0 -0
  501. {traigent-0.21.0.dev1 → traigent-0.21.0.dev3}/traigent/prompts/client.py +0 -0
  502. {traigent-0.21.0.dev1 → traigent-0.21.0.dev3}/traigent/prompts/config.py +0 -0
  503. {traigent-0.21.0.dev1 → traigent-0.21.0.dev3}/traigent/prompts/dtos.py +0 -0
  504. {traigent-0.21.0.dev1 → traigent-0.21.0.dev3}/traigent/providers/__init__.py +0 -0
  505. {traigent-0.21.0.dev1 → traigent-0.21.0.dev3}/traigent/providers/validation.py +0 -0
  506. {traigent-0.21.0.dev1 → traigent-0.21.0.dev3}/traigent/py.typed +0 -0
  507. {traigent-0.21.0.dev1 → traigent-0.21.0.dev3}/traigent/reporting/__init__.py +0 -0
  508. {traigent-0.21.0.dev1 → traigent-0.21.0.dev3}/traigent/reporting/example_map.py +0 -0
  509. {traigent-0.21.0.dev1 → traigent-0.21.0.dev3}/traigent/security/__init__.py +0 -0
  510. {traigent-0.21.0.dev1 → traigent-0.21.0.dev3}/traigent/security/audit.py +0 -0
  511. {traigent-0.21.0.dev1 → traigent-0.21.0.dev3}/traigent/security/auth/__init__.py +0 -0
  512. {traigent-0.21.0.dev1 → traigent-0.21.0.dev3}/traigent/security/auth/helpers.py +0 -0
  513. {traigent-0.21.0.dev1 → traigent-0.21.0.dev3}/traigent/security/auth/mfa.py +0 -0
  514. {traigent-0.21.0.dev1 → traigent-0.21.0.dev3}/traigent/security/auth/models.py +0 -0
  515. {traigent-0.21.0.dev1 → traigent-0.21.0.dev3}/traigent/security/auth/oidc.py +0 -0
  516. {traigent-0.21.0.dev1 → traigent-0.21.0.dev3}/traigent/security/auth/saml.py +0 -0
  517. {traigent-0.21.0.dev1 → traigent-0.21.0.dev3}/traigent/security/auth/sms.py +0 -0
  518. {traigent-0.21.0.dev1 → traigent-0.21.0.dev3}/traigent/security/auth/totp.py +0 -0
  519. {traigent-0.21.0.dev1 → traigent-0.21.0.dev3}/traigent/security/config.py +0 -0
  520. {traigent-0.21.0.dev1 → traigent-0.21.0.dev3}/traigent/security/credentials.py +0 -0
  521. {traigent-0.21.0.dev1 → traigent-0.21.0.dev3}/traigent/security/crypto_utils.py +0 -0
  522. {traigent-0.21.0.dev1 → traigent-0.21.0.dev3}/traigent/security/deployment.py +0 -0
  523. {traigent-0.21.0.dev1 → traigent-0.21.0.dev3}/traigent/security/encryption.py +0 -0
  524. {traigent-0.21.0.dev1 → traigent-0.21.0.dev3}/traigent/security/enterprise.py +0 -0
  525. {traigent-0.21.0.dev1 → traigent-0.21.0.dev3}/traigent/security/headers.py +0 -0
  526. {traigent-0.21.0.dev1 → traigent-0.21.0.dev3}/traigent/security/input_validation.py +0 -0
  527. {traigent-0.21.0.dev1 → traigent-0.21.0.dev3}/traigent/security/jwt_validator.py +0 -0
  528. {traigent-0.21.0.dev1 → traigent-0.21.0.dev3}/traigent/security/rate_limiter.py +0 -0
  529. {traigent-0.21.0.dev1 → traigent-0.21.0.dev3}/traigent/security/redaction.py +0 -0
  530. {traigent-0.21.0.dev1 → traigent-0.21.0.dev3}/traigent/security/session_manager.py +0 -0
  531. {traigent-0.21.0.dev1 → traigent-0.21.0.dev3}/traigent/security/tenant.py +0 -0
  532. {traigent-0.21.0.dev1 → traigent-0.21.0.dev3}/traigent/skills/traigent-analyze-results/SKILL.md +0 -0
  533. {traigent-0.21.0.dev1 → traigent-0.21.0.dev3}/traigent/skills/traigent-analyze-results/references/convergence-patterns.md +0 -0
  534. {traigent-0.21.0.dev1 → traigent-0.21.0.dev3}/traigent/skills/traigent-analyze-results/references/optimization-result-api.md +0 -0
  535. {traigent-0.21.0.dev1 → traigent-0.21.0.dev3}/traigent/skills/traigent-configuration-space/SKILL.md +0 -0
  536. {traigent-0.21.0.dev1 → traigent-0.21.0.dev3}/traigent/skills/traigent-configuration-space/references/constraints.md +0 -0
  537. {traigent-0.21.0.dev1 → traigent-0.21.0.dev3}/traigent/skills/traigent-configuration-space/references/parameter-types.md +0 -0
  538. {traigent-0.21.0.dev1 → traigent-0.21.0.dev3}/traigent/skills/traigent-debugging/SKILL.md +0 -0
  539. {traigent-0.21.0.dev1 → traigent-0.21.0.dev3}/traigent/skills/traigent-debugging/references/error-reference.md +0 -0
  540. {traigent-0.21.0.dev1 → traigent-0.21.0.dev3}/traigent/skills/traigent-debugging/references/logging-config.md +0 -0
  541. {traigent-0.21.0.dev1 → traigent-0.21.0.dev3}/traigent/skills/traigent-debugging/references/mock-mode.md +0 -0
  542. {traigent-0.21.0.dev1 → traigent-0.21.0.dev3}/traigent/skills/traigent-decorator-setup/SKILL.md +0 -0
  543. {traigent-0.21.0.dev1 → traigent-0.21.0.dev3}/traigent/skills/traigent-decorator-setup/references/evaluation-options.md +0 -0
  544. {traigent-0.21.0.dev1 → traigent-0.21.0.dev3}/traigent/skills/traigent-decorator-setup/references/execution-modes.md +0 -0
  545. {traigent-0.21.0.dev1 → traigent-0.21.0.dev3}/traigent/skills/traigent-decorator-setup/references/injection-modes.md +0 -0
  546. {traigent-0.21.0.dev1 → traigent-0.21.0.dev3}/traigent/skills/traigent-integrations/SKILL.md +0 -0
  547. {traigent-0.21.0.dev1 → traigent-0.21.0.dev3}/traigent/skills/traigent-integrations/references/dspy.md +0 -0
  548. {traigent-0.21.0.dev1 → traigent-0.21.0.dev3}/traigent/skills/traigent-integrations/references/langchain.md +0 -0
  549. {traigent-0.21.0.dev1 → traigent-0.21.0.dev3}/traigent/skills/traigent-integrations/references/litellm.md +0 -0
  550. {traigent-0.21.0.dev1 → traigent-0.21.0.dev3}/traigent/skills/traigent-quickstart/SKILL.md +0 -0
  551. {traigent-0.21.0.dev1 → traigent-0.21.0.dev3}/traigent/skills/traigent-quickstart/references/environment-variables.md +0 -0
  552. {traigent-0.21.0.dev1 → traigent-0.21.0.dev3}/traigent/skills/traigent-quickstart/references/installation-extras.md +0 -0
  553. {traigent-0.21.0.dev1 → traigent-0.21.0.dev3}/traigent/skills/traigent-run-optimization/SKILL.md +0 -0
  554. {traigent-0.21.0.dev1 → traigent-0.21.0.dev3}/traigent/skills/traigent-run-optimization/references/algorithms.md +0 -0
  555. {traigent-0.21.0.dev1 → traigent-0.21.0.dev3}/traigent/skills/traigent-run-optimization/references/cost-management.md +0 -0
  556. {traigent-0.21.0.dev1 → traigent-0.21.0.dev3}/traigent/skills/traigent-run-optimization/references/parallel-config.md +0 -0
  557. {traigent-0.21.0.dev1 → traigent-0.21.0.dev3}/traigent/storage/__init__.py +0 -0
  558. {traigent-0.21.0.dev1 → traigent-0.21.0.dev3}/traigent/storage/local_storage.py +0 -0
  559. {traigent-0.21.0.dev1 → traigent-0.21.0.dev3}/traigent/testing/__init__.py +0 -0
  560. {traigent-0.21.0.dev1 → traigent-0.21.0.dev3}/traigent/traigent_client.py +0 -0
  561. {traigent-0.21.0.dev1 → traigent-0.21.0.dev3}/traigent/traigent_integration.py +0 -0
  562. {traigent-0.21.0.dev1 → traigent-0.21.0.dev3}/traigent/tuned_variables/__init__.py +0 -0
  563. {traigent-0.21.0.dev1 → traigent-0.21.0.dev3}/traigent/tuned_variables/dataflow_strategy.py +0 -0
  564. {traigent-0.21.0.dev1 → traigent-0.21.0.dev3}/traigent/tuned_variables/detection_strategies.py +0 -0
  565. {traigent-0.21.0.dev1 → traigent-0.21.0.dev3}/traigent/tuned_variables/detection_types.py +0 -0
  566. {traigent-0.21.0.dev1 → traigent-0.21.0.dev3}/traigent/tuned_variables/detector.py +0 -0
  567. {traigent-0.21.0.dev1 → traigent-0.21.0.dev3}/traigent/tuned_variables/discovery.py +0 -0
  568. {traigent-0.21.0.dev1 → traigent-0.21.0.dev3}/traigent/tuned_variables/observation.py +0 -0
  569. {traigent-0.21.0.dev1 → traigent-0.21.0.dev3}/traigent/tuned_variables/py.typed +0 -0
  570. {traigent-0.21.0.dev1 → traigent-0.21.0.dev3}/traigent/tvl/__init__.py +0 -0
  571. {traigent-0.21.0.dev1 → traigent-0.21.0.dev3}/traigent/tvl/__main__.py +0 -0
  572. {traigent-0.21.0.dev1 → traigent-0.21.0.dev3}/traigent/tvl/models.py +0 -0
  573. {traigent-0.21.0.dev1 → traigent-0.21.0.dev3}/traigent/tvl/objectives.py +0 -0
  574. {traigent-0.21.0.dev1 → traigent-0.21.0.dev3}/traigent/tvl/options.py +0 -0
  575. {traigent-0.21.0.dev1 → traigent-0.21.0.dev3}/traigent/tvl/promotion_gate.py +0 -0
  576. {traigent-0.21.0.dev1 → traigent-0.21.0.dev3}/traigent/tvl/registry.py +0 -0
  577. {traigent-0.21.0.dev1 → traigent-0.21.0.dev3}/traigent/tvl/spec_loader.py +0 -0
  578. {traigent-0.21.0.dev1 → traigent-0.21.0.dev3}/traigent/tvl/spec_validator.py +0 -0
  579. {traigent-0.21.0.dev1 → traigent-0.21.0.dev3}/traigent/tvl/statistics.py +0 -0
  580. {traigent-0.21.0.dev1 → traigent-0.21.0.dev3}/traigent/utils/__init__.py +0 -0
  581. {traigent-0.21.0.dev1 → traigent-0.21.0.dev3}/traigent/utils/artifact_fingerprints.py +0 -0
  582. {traigent-0.21.0.dev1 → traigent-0.21.0.dev3}/traigent/utils/batch_optimizer_utils.py +0 -0
  583. {traigent-0.21.0.dev1 → traigent-0.21.0.dev3}/traigent/utils/batch_processing.py +0 -0
  584. {traigent-0.21.0.dev1 → traigent-0.21.0.dev3}/traigent/utils/callbacks.py +0 -0
  585. {traigent-0.21.0.dev1 → traigent-0.21.0.dev3}/traigent/utils/console.py +0 -0
  586. {traigent-0.21.0.dev1 → traigent-0.21.0.dev3}/traigent/utils/constraints.py +0 -0
  587. {traigent-0.21.0.dev1 → traigent-0.21.0.dev3}/traigent/utils/cost_calculator.py +0 -0
  588. {traigent-0.21.0.dev1 → traigent-0.21.0.dev3}/traigent/utils/diagnostics.py +0 -0
  589. {traigent-0.21.0.dev1 → traigent-0.21.0.dev3}/traigent/utils/discrete_domains.py +0 -0
  590. {traigent-0.21.0.dev1 → traigent-0.21.0.dev3}/traigent/utils/env_config.py +0 -0
  591. {traigent-0.21.0.dev1 → traigent-0.21.0.dev3}/traigent/utils/error_handler.py +0 -0
  592. {traigent-0.21.0.dev1 → traigent-0.21.0.dev3}/traigent/utils/example_id.py +0 -0
  593. {traigent-0.21.0.dev1 → traigent-0.21.0.dev3}/traigent/utils/exceptions.py +0 -0
  594. {traigent-0.21.0.dev1 → traigent-0.21.0.dev3}/traigent/utils/file_versioning.py +0 -0
  595. {traigent-0.21.0.dev1 → traigent-0.21.0.dev3}/traigent/utils/function_identity.py +0 -0
  596. {traigent-0.21.0.dev1 → traigent-0.21.0.dev3}/traigent/utils/hashing.py +0 -0
  597. {traigent-0.21.0.dev1 → traigent-0.21.0.dev3}/traigent/utils/importance.py +0 -0
  598. {traigent-0.21.0.dev1 → traigent-0.21.0.dev3}/traigent/utils/incentives.py +0 -0
  599. {traigent-0.21.0.dev1 → traigent-0.21.0.dev3}/traigent/utils/insights.py +0 -0
  600. {traigent-0.21.0.dev1 → traigent-0.21.0.dev3}/traigent/utils/langchain_interceptor.py +0 -0
  601. {traigent-0.21.0.dev1 → traigent-0.21.0.dev3}/traigent/utils/litellm_interceptor.py +0 -0
  602. {traigent-0.21.0.dev1 → traigent-0.21.0.dev3}/traigent/utils/llm_response_parsing.py +0 -0
  603. {traigent-0.21.0.dev1 → traigent-0.21.0.dev3}/traigent/utils/local_analytics.py +0 -0
  604. {traigent-0.21.0.dev1 → traigent-0.21.0.dev3}/traigent/utils/logging.py +0 -0
  605. {traigent-0.21.0.dev1 → traigent-0.21.0.dev3}/traigent/utils/multi_objective.py +0 -0
  606. {traigent-0.21.0.dev1 → traigent-0.21.0.dev3}/traigent/utils/numpy_compat.py +0 -0
  607. {traigent-0.21.0.dev1 → traigent-0.21.0.dev3}/traigent/utils/objectives.py +0 -0
  608. {traigent-0.21.0.dev1 → traigent-0.21.0.dev3}/traigent/utils/optimization_analyzer.py +0 -0
  609. {traigent-0.21.0.dev1 → traigent-0.21.0.dev3}/traigent/utils/optimization_logger.py +0 -0
  610. {traigent-0.21.0.dev1 → traigent-0.21.0.dev3}/traigent/utils/pagination.py +0 -0
  611. {traigent-0.21.0.dev1 → traigent-0.21.0.dev3}/traigent/utils/persistence.py +0 -0
  612. {traigent-0.21.0.dev1 → traigent-0.21.0.dev3}/traigent/utils/results_table.py +0 -0
  613. {traigent-0.21.0.dev1 → traigent-0.21.0.dev3}/traigent/utils/retry.py +0 -0
  614. {traigent-0.21.0.dev1 → traigent-0.21.0.dev3}/traigent/utils/secure_path.py +0 -0
  615. {traigent-0.21.0.dev1 → traigent-0.21.0.dev3}/traigent/utils/url_security.py +0 -0
  616. {traigent-0.21.0.dev1 → traigent-0.21.0.dev3}/traigent/utils/validation.py +0 -0
  617. {traigent-0.21.0.dev1 → traigent-0.21.0.dev3}/traigent/visualization/__init__.py +0 -0
  618. {traigent-0.21.0.dev1 → traigent-0.21.0.dev3}/traigent/visualization/plots.py +0 -0
  619. {traigent-0.21.0.dev1 → traigent-0.21.0.dev3}/traigent/wrapper/__init__.py +0 -0
  620. {traigent-0.21.0.dev1 → traigent-0.21.0.dev3}/traigent/wrapper/errors.py +0 -0
  621. {traigent-0.21.0.dev1 → traigent-0.21.0.dev3}/traigent/wrapper/server.py +0 -0
  622. {traigent-0.21.0.dev1 → traigent-0.21.0.dev3}/traigent/wrapper/service.py +0 -0
  623. {traigent-0.21.0.dev1 → traigent-0.21.0.dev3}/traigent.egg-info/SOURCES.txt +0 -0
  624. {traigent-0.21.0.dev1 → traigent-0.21.0.dev3}/traigent.egg-info/dependency_links.txt +0 -0
  625. {traigent-0.21.0.dev1 → traigent-0.21.0.dev3}/traigent.egg-info/entry_points.txt +0 -0
  626. {traigent-0.21.0.dev1 → traigent-0.21.0.dev3}/traigent.egg-info/requires.txt +0 -0
  627. {traigent-0.21.0.dev1 → traigent-0.21.0.dev3}/traigent.egg-info/top_level.txt +0 -0
  628. {traigent-0.21.0.dev1 → traigent-0.21.0.dev3}/traigent_validation/__init__.py +0 -0
  629. {traigent-0.21.0.dev1 → traigent-0.21.0.dev3}/traigent_validation/base.py +0 -0
  630. {traigent-0.21.0.dev1 → traigent-0.21.0.dev3}/traigent_validation/plugins.py +0 -0
  631. {traigent-0.21.0.dev1 → traigent-0.21.0.dev3}/traigent_validation/py.typed +0 -0
  632. {traigent-0.21.0.dev1 → traigent-0.21.0.dev3}/traigent_validation/validators.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: traigent
3
- Version: 0.21.0.dev1
3
+ Version: 0.21.0.dev3
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.21.0.dev1"
7
+ version = "0.21.0.dev3"
8
8
  authors = [
9
9
  {name = "Traigent Team", email = "opensource@traigent.ai"},
10
10
  ]
@@ -294,13 +294,15 @@ class SyncManager:
294
294
  Convert a local session to the content-free typed-session payload.
295
295
 
296
296
  Offline sync imports historical runs through the same content-free
297
- typed-session endpoints the live SDK uses (``POST /sessions`` ->
298
- per-trial ``POST /sessions/{id}/results`` -> ``POST
299
- /sessions/{id}/finalize``). The session is created with
300
- ``tracking_mode=native_local`` and binds NO benchmark, so the backend's
301
- empty-dataset guard hits its documented no-dataset pass-through and a run
302
- whose server-side dataset would have zero examples imports cleanly. No
303
- prompt/output content egresses: the dataset is represented only by a
297
+ typed-session endpoints the live SDK uses (``POST /sessions`` -> per
298
+ trial ``POST /sessions/{id}/next-trial`` then ``POST
299
+ /sessions/{id}/results`` -> ``POST /sessions/{id}/finalize``). The
300
+ session is created with ``tracking_mode=backend_guided`` (shared-RDB
301
+ session state, so it works across the backend's multiple workers) and
302
+ binds NO benchmark, so the empty-dataset guard hits its documented
303
+ no-dataset pass-through and a run whose server-side dataset would have
304
+ zero examples imports cleanly. No prompt/output content egresses: the
305
+ dataset is represented only by a
304
306
  content-free label (name + size).
305
307
 
306
308
  Args:
@@ -318,6 +320,12 @@ class SyncManager:
318
320
  session.trials or []
319
321
  )
320
322
  objectives = self._derive_objectives(opt_config, configuration_runs)
323
+ # Guard: the backend rejects a COMPLETED trial whose metrics lack any
324
+ # declared objective. Backfill each completed trial's measures so every
325
+ # objective is present as a number (prefer its own ``score``, else 0.0),
326
+ # so a real user-declared objective missing from one trial can't 400 the
327
+ # whole sync.
328
+ self._backfill_objective_measures(configuration_runs, objectives)
321
329
 
322
330
  # Content-free dataset label: name + size only, never example content.
323
331
  # The typed path validates dataset_metadata.size as a positive int
@@ -345,13 +353,19 @@ class SyncManager:
345
353
  "privacy_mode": True,
346
354
  },
347
355
  "max_trials": max(len(configuration_runs), 1),
348
- # native_local lets the backend materialize each trial directly from
349
- # the submitted config (historical backfill, no /next-trial round
350
- # trip, no Optuna suggestion). It binds no benchmark, so the
351
- # EMPTY_DATASET guard never fires (empty-dataset sync fix).
356
+ # backend_guided: the backend allocates each trial slot (POST
357
+ # /next-trial) and persists session state to the SHARED Optuna RDB,
358
+ # so a create on one worker is visible to the /results submit on any
359
+ # other worker. native_local keeps session state in a process-local
360
+ # in-memory dict, which 404s across api-dev's multiple workers
361
+ # (backend gap — see BE issue). backend_guided is the production-
362
+ # proven live path. It still binds NO benchmark, so the EMPTY_DATASET
363
+ # guard never fires (the original empty-dataset sync fix is intact).
364
+ # The backend suggests configs, but we ignore them and attest the
365
+ # real per-trial config in each /results body (config-binding).
352
366
  "optimization_strategy": {
353
367
  "algorithm": "optuna",
354
- "tracking_mode": "native_local",
368
+ "tracking_mode": "backend_guided",
355
369
  },
356
370
  "metadata": {
357
371
  "function_name": session.function_name,
@@ -369,30 +383,67 @@ class SyncManager:
369
383
  def _derive_objectives(
370
384
  opt_config: dict[str, Any], configuration_runs: list[dict[str, Any]]
371
385
  ) -> list[str]:
372
- """Derive objective names for the typed session create payload.
373
-
374
- Prefer the objectives recorded on the local optimization config; fall
375
- back to the measure names present on the trials (``["score"]`` at
376
- minimum). Content-free: only measure/objective *names* are emitted.
386
+ """Derive the session's objective names for the typed create payload.
387
+
388
+ The backend requires EVERY declared objective to be present as a numeric
389
+ metric on EVERY completed trial (an Optuna objective must be a scalar it
390
+ can ``tell()``). So the objective set must be MINIMAL and universally
391
+ present, NOT the union of every incidental per-trial measure — declaring
392
+ the union makes run-level overlays (``run_trials_completed``,
393
+ ``duration``, tokens, cost, ...) "required objectives" that not every
394
+ trial reports, and each such trial's /results then 400s
395
+ ("Completed trial is missing numeric metric ...").
396
+
397
+ Prefer the run's real optimization objectives; otherwise fall back to
398
+ ``["score"]`` — ``score`` is written on every trial by
399
+ ``_convert_trials_to_results``, so it is guaranteed present. The caller
400
+ additionally backfills any declared objective missing from a completed
401
+ trial (see ``convert_session_to_traigent_format``). Content-free: only
402
+ objective *names* are emitted.
377
403
  """
378
404
  raw_objectives = opt_config.get("objectives")
379
405
  if isinstance(raw_objectives, (list, tuple)):
380
406
  names = [str(name) for name in raw_objectives if name]
381
407
  if names:
382
408
  return names
383
- return SyncManager._derive_experiment_measures(configuration_runs)
409
+ return ["score"]
410
+
411
+ @staticmethod
412
+ def _backfill_objective_measures(
413
+ configuration_runs: list[dict[str, Any]], objectives: list[str]
414
+ ) -> None:
415
+ """Ensure every COMPLETED trial reports each declared objective numerically.
416
+
417
+ The backend requires a numeric value for every objective on a completed
418
+ trial (Optuna ``tell``). If a trial's measures omit one (or it is
419
+ non-numeric), backfill it with the trial's ``score`` when available, else
420
+ ``0.0``. Only completed trials are guarded — failed trials skip the
421
+ objective check server-side. Mutates ``configuration_runs`` in place.
422
+ """
423
+ for configuration_run in configuration_runs:
424
+ if str(configuration_run.get("status", "")).upper() != "COMPLETED":
425
+ continue
426
+ measures = configuration_run.setdefault("measures", {})
427
+ fallback = measures.get("score")
428
+ if not isinstance(fallback, (int, float)) or isinstance(fallback, bool):
429
+ fallback = 0.0
430
+ for objective in objectives:
431
+ value = measures.get(objective)
432
+ if not isinstance(value, (int, float)) or isinstance(value, bool):
433
+ measures[objective] = fallback
384
434
 
385
435
  def _convert_trials_to_configuration_runs(
386
436
  self, trials: list[Any]
387
437
  ) -> list[dict[str, Any]]:
388
438
  """Reshape local trial results into per-trial result payloads.
389
439
 
390
- Each entry carries ``trial_id`` (native_local requires it so the
391
- backend can create the trial from the submitted ``config``),
392
- ``experiment_parameters`` (the trial config), content-free numeric
440
+ Each entry carries ``experiment_parameters`` (the trial config, bound to
441
+ the backend-allocated trial at submit time), content-free numeric
393
442
  ``measures``, and the trial's REAL terminal status (``COMPLETED`` or
394
443
  ``FAILED`` — never masked to COMPLETED; the session results endpoint
395
- accepts failed trials).
444
+ accepts failed trials). ``trial_id`` (the local id) is carried for
445
+ provenance but the submitted result binds to the backend-minted slot id,
446
+ not this one.
396
447
  """
397
448
  configuration_runs: list[dict[str, Any]] = []
398
449
 
@@ -400,9 +451,9 @@ class SyncManager:
400
451
  measures = self._configuration_run_measures(result)
401
452
  experiment_parameters = result.get("experiment_parameters") or {}
402
453
  if not experiment_parameters:
403
- # native_local requires a non-empty config to materialize the
404
- # trial; fall back to a config recorded in the trial metadata
405
- # (if any) before giving up.
454
+ # The backend binds each trial to a non-empty config; fall back
455
+ # to a config recorded in the trial metadata (if any) before
456
+ # giving up.
406
457
  metadata = result.get("metadata")
407
458
  if isinstance(metadata, Mapping):
408
459
  metadata_config = metadata.get("config")
@@ -444,19 +495,6 @@ class SyncManager:
444
495
  """Return True for JSON numeric values while excluding booleans."""
445
496
  return isinstance(value, (int, float)) and not isinstance(value, bool)
446
497
 
447
- @staticmethod
448
- def _derive_experiment_measures(
449
- configuration_runs: list[dict[str, Any]],
450
- ) -> list[str]:
451
- """Derive the experiment-level measure list from trial payloads."""
452
- measures: list[str] = []
453
- for configuration_run in configuration_runs:
454
- for measure_name in configuration_run.get("measures", {}):
455
- if measure_name not in measures:
456
- measures.append(measure_name)
457
-
458
- return measures or ["score"]
459
-
460
498
  def _convert_trials_to_results(self, trials: list[Any]) -> list[dict[str, Any]]:
461
499
  """Convert local trials to Traigent configuration_run format."""
462
500
  results = []
@@ -664,12 +702,12 @@ class SyncManager:
664
702
  ) -> None:
665
703
  """Import a converted session through the content-free session endpoints.
666
704
 
667
- Three steps: create a native_local typed session (no benchmark, so the
668
- backend's EMPTY_DATASET guard never fires), submit one result
669
- per trial, then finalize. When ``resume`` is True, reuses any cloud ids
670
- a prior attempt already created so a retry resumes rather than minting a
671
- duplicate session. Mutates ``sync_result`` in place and returns early on
672
- a failed step.
705
+ Three steps: create a backend_guided typed session (no benchmark, so the
706
+ backend's EMPTY_DATASET guard never fires), submit one result per trial
707
+ (each bound to a backend-allocated trial slot), then finalize. When
708
+ ``resume`` is True, reuses any cloud ids a prior attempt already created
709
+ so a retry resumes rather than minting a duplicate session. Mutates
710
+ ``sync_result`` in place and returns early on a failed step.
673
711
  """
674
712
  reuse = resume
675
713
  configuration_runs = traigent_data["configuration_runs"]
@@ -927,7 +965,7 @@ class SyncManager:
927
965
  }
928
966
 
929
967
  def _sync_create_session(self, session_create: dict[str, Any]) -> dict[str, Any]:
930
- """Create the content-free native_local typed session.
968
+ """Create the content-free backend_guided typed session.
931
969
 
932
970
  POSTs the typed contract to ``/sessions`` (content-free: function name,
933
971
  typed configuration space, objective names, and a dataset *label* only).
@@ -992,6 +1030,47 @@ class SyncManager:
992
1030
  normalized = str(value).strip()
993
1031
  return normalized or None
994
1032
 
1033
+ def _sync_next_trial(self, session_id: str) -> dict[str, Any]:
1034
+ """Allocate a backend-minted trial slot for a backend_guided session.
1035
+
1036
+ The backend mints configuration_run ids only through
1037
+ ``POST /sessions/{id}/next-trial``; a result POST must be bound to the
1038
+ session by the id the backend itself minted (a client id 404s). We
1039
+ ignore the backend's suggested config — the real per-trial config is
1040
+ attested in the /results body (config-binding). Mirrors the live SDK's
1041
+ ``TrialOperations.request_trial_slot`` request/response contract.
1042
+
1043
+ Returns ``{success, trial_id, complete, error}``: ``trial_id`` set when a
1044
+ slot was granted; ``complete=True`` when the backend returned
1045
+ ``should_continue=False`` with no slot (optimization budget reached).
1046
+ """
1047
+ self._raise_if_backend_egress_disabled("sync next trial")
1048
+ try:
1049
+ response = self._session.post(
1050
+ f"{self.base_url}/sessions/{session_id}/next-trial",
1051
+ json={"session_id": session_id, "previous_results": []},
1052
+ timeout=self._request_timeout,
1053
+ )
1054
+ except Exception as exc:
1055
+ return {"success": False, "error": str(exc)}
1056
+ if response.status_code not in (200, 201):
1057
+ return {
1058
+ "success": False,
1059
+ "error": f"HTTP {response.status_code}: {response.text}",
1060
+ }
1061
+ payload = self._response_json(response)
1062
+ if not isinstance(payload, Mapping):
1063
+ return {"success": False, "error": "next-trial response was not JSON"}
1064
+ suggestion = payload.get("suggestion")
1065
+ trial_id = (
1066
+ suggestion.get("trial_id") if isinstance(suggestion, Mapping) else None
1067
+ )
1068
+ if isinstance(trial_id, str) and trial_id:
1069
+ return {"success": True, "trial_id": trial_id}
1070
+ if payload.get("should_continue") is False:
1071
+ return {"success": True, "complete": True}
1072
+ return {"success": False, "error": "next-trial returned no trial slot"}
1073
+
995
1074
  def _sync_session_results(
996
1075
  self,
997
1076
  session_id: str,
@@ -1000,19 +1079,23 @@ class SyncManager:
1000
1079
  already_synced_keys: set[str] | None = None,
1001
1080
  on_synced: Callable[[str, str | None], None] | None = None,
1002
1081
  ) -> dict[str, Any]:
1003
- """Submit one trial result per configuration run.
1082
+ """Submit one trial result per configuration run (backend_guided).
1083
+
1084
+ Per trial: allocate a backend trial slot (``POST /next-trial``), then
1085
+ POST the content-free result bound to that backend-minted id. The
1086
+ backend persists session state to the shared RDB, so this works across
1087
+ api-dev's multiple workers.
1004
1088
 
1005
1089
  Idempotent across resumes: each result carries a stable key
1006
1090
  (``_config_run_key`` of its zero-based position). Runs whose key is in
1007
- ``already_synced_keys`` are SKIPPED (not re-POSTed) -- the backend does
1008
- not dedup result creates, so re-POSTing would duplicate rows.
1009
- ``on_synced(key, result_id)`` is invoked immediately after each
1010
- successful POST so progress is persisted incrementally (crash-safe),
1011
- not only at the end of the batch. The per-trial payload is
1012
- ``{trial_id, config, status, metrics}`` -- ``config`` is REQUIRED (and
1013
- must be non-empty) in native_local because the backend materializes the
1014
- trial from it; ``status`` is the trial's real terminal status
1015
- (COMPLETED or FAILED).
1091
+ ``already_synced_keys`` are SKIPPED (never re-POSTed and no new slot is
1092
+ minted) -- the backend does not dedup result creates, so re-POSTing would
1093
+ duplicate rows. ``on_synced(key, result_id)`` is invoked immediately
1094
+ after each successful POST so progress is persisted incrementally
1095
+ (crash-safe). The /results payload is ``{trial_id, config, status,
1096
+ metrics}`` -- ``config`` is REQUIRED (and must be non-empty) because the
1097
+ backend binds it to the allocated trial; ``status`` is the trial's real
1098
+ terminal status (COMPLETED or FAILED).
1016
1099
  """
1017
1100
  self._raise_if_backend_egress_disabled("sync session results")
1018
1101
  already_synced_keys = already_synced_keys or set()
@@ -1024,7 +1107,7 @@ class SyncManager:
1024
1107
  for index, configuration_run in enumerate(configuration_runs):
1025
1108
  key = self._config_run_key(index)
1026
1109
  # Skip results a prior attempt already uploaded so a resume never
1027
- # creates duplicate rows.
1110
+ # creates duplicate rows (and never mints a wasted trial slot).
1028
1111
  if key in already_synced_keys:
1029
1112
  skipped += 1
1030
1113
  continue
@@ -1033,22 +1116,31 @@ class SyncManager:
1033
1116
  ordinal = index + 1
1034
1117
  trial_config = configuration_run.get("experiment_parameters") or {}
1035
1118
  if not trial_config:
1036
- # native_local rejects empty configs ("config is required for
1037
- # native_local trial submissions"); surface a clear SDK-side
1038
- # error instead of the raw backend message.
1119
+ # The backend binds the submitted config to the allocated trial;
1120
+ # an empty config is rejected. Surface a clear SDK-side error
1121
+ # instead of the raw backend message, and don't burn a slot.
1039
1122
  errors.append(
1040
1123
  f"trial {ordinal}: trial has an empty config, which the "
1041
- "content-free session import cannot submit (native_local "
1042
- "materializes each trial from its config); this trial was "
1043
- "skipped"
1124
+ "content-free session import cannot submit (the backend "
1125
+ "binds each trial to its config); this trial was skipped"
1126
+ )
1127
+ continue
1128
+
1129
+ # Allocate the backend-minted trial id this result must bind to.
1130
+ slot = self._sync_next_trial(session_id)
1131
+ if not slot.get("success") or not slot.get("trial_id"):
1132
+ detail = (
1133
+ "backend reported the optimization budget was reached"
1134
+ if slot.get("complete")
1135
+ else (slot.get("error") or "no trial slot returned")
1136
+ )
1137
+ errors.append(
1138
+ f"trial {ordinal}: could not allocate a backend trial slot "
1139
+ f"({detail})"
1044
1140
  )
1045
1141
  continue
1046
- # Local trial ids are ints (local_storage assigns a 1-based counter);
1047
- # the session /results validator requires a STRING trial_id, so coerce
1048
- # here. Fall back to the stable positional key when a trial somehow
1049
- # carries no id, so native_local can still materialize the trial.
1050
- raw_trial_id = configuration_run.get("trial_id")
1051
- trial_id = str(raw_trial_id) if raw_trial_id is not None else key
1142
+ trial_id = slot["trial_id"]
1143
+
1052
1144
  result_payload = {
1053
1145
  "trial_id": trial_id,
1054
1146
  "config": trial_config,
@@ -1067,7 +1159,7 @@ class SyncManager:
1067
1159
 
1068
1160
  if response.status_code in (200, 201):
1069
1161
  synced += 1
1070
- result_id = self._extract_response_id(response)
1162
+ result_id = self._extract_response_id(response) or trial_id
1071
1163
  if result_id:
1072
1164
  configuration_run_ids.append(result_id)
1073
1165
  # Persist this result as synced RIGHT NOW (before the next POST)
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: traigent
3
- Version: 0.21.0.dev1
3
+ Version: 0.21.0.dev3
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
File without changes
File without changes
File without changes