traigent 0.12.0__tar.gz → 0.13.0.dev1__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (598) hide show
  1. {traigent-0.12.0 → traigent-0.13.0.dev1}/CHANGELOG.md +27 -0
  2. {traigent-0.12.0/traigent.egg-info → traigent-0.13.0.dev1}/PKG-INFO +10 -6
  3. {traigent-0.12.0 → traigent-0.13.0.dev1}/README.md +6 -3
  4. {traigent-0.12.0 → traigent-0.13.0.dev1}/docs/README.md +12 -6
  5. traigent-0.13.0.dev1/docs/agent-skill.md +35 -0
  6. {traigent-0.12.0 → traigent-0.13.0.dev1}/docs/api-reference/complete-function-specification.md +131 -10
  7. {traigent-0.12.0 → traigent-0.13.0.dev1}/docs/api-reference/decorator-reference.md +48 -10
  8. {traigent-0.12.0 → traigent-0.13.0.dev1}/docs/api-reference/telemetry.md +31 -1
  9. {traigent-0.12.0 → traigent-0.13.0.dev1}/docs/api-reference/thread-pool-examples.md +1 -1
  10. {traigent-0.12.0 → traigent-0.13.0.dev1}/docs/architecture/ARCHITECTURE.md +8 -6
  11. {traigent-0.12.0 → traigent-0.13.0.dev1}/docs/architecture/cost-architecture-validation.md +19 -0
  12. {traigent-0.12.0 → traigent-0.13.0.dev1}/docs/architecture/integrations-inventory.md +23 -31
  13. {traigent-0.12.0 → traigent-0.13.0.dev1}/docs/architecture/plugin_architecture.md +8 -17
  14. {traigent-0.12.0 → traigent-0.13.0.dev1}/docs/architecture/project-structure.md +4 -7
  15. traigent-0.13.0.dev1/docs/concepts/composite-knob-ir.md +43 -0
  16. traigent-0.13.0.dev1/docs/concepts/composite-knobs.md +245 -0
  17. {traigent-0.12.0/docs/traceability → traigent-0.13.0.dev1/docs}/concepts/guided-generation.md +3 -4
  18. {traigent-0.12.0 → traigent-0.13.0.dev1}/docs/contributing/ADDING_NEW_INTEGRATIONS.md +1 -2
  19. {traigent-0.12.0 → traigent-0.13.0.dev1}/docs/contributing/CONTRIBUTING.md +2 -2
  20. {traigent-0.12.0 → traigent-0.13.0.dev1}/docs/contributing/README.md +8 -3
  21. {traigent-0.12.0 → traigent-0.13.0.dev1}/docs/contributing/aikido_triage.md +5 -5
  22. traigent-0.13.0.dev1/docs/examples/API_PATTERNS.md +208 -0
  23. {traigent-0.12.0 → traigent-0.13.0.dev1}/docs/examples/LEARNING_ROADMAP.md +2 -2
  24. {traigent-0.12.0 → traigent-0.13.0.dev1}/docs/examples/QUICK_REFERENCE.md +4 -4
  25. {traigent-0.12.0 → traigent-0.13.0.dev1}/docs/examples/README.md +1 -1
  26. {traigent-0.12.0 → traigent-0.13.0.dev1}/docs/examples/START_HERE.md +1 -1
  27. {traigent-0.12.0 → traigent-0.13.0.dev1}/docs/examples/TROUBLESHOOTING.md +7 -6
  28. traigent-0.13.0.dev1/docs/features/README.md +29 -0
  29. {traigent-0.12.0 → traigent-0.13.0.dev1}/docs/features/authentication.md +4 -4
  30. {traigent-0.12.0 → traigent-0.13.0.dev1}/docs/features/constraint-dsl.md +5 -4
  31. traigent-0.13.0.dev1/docs/features/mcp-server.md +68 -0
  32. traigent-0.13.0.dev1/docs/features/observability-spans.md +90 -0
  33. traigent-0.13.0.dev1/docs/features/onboarding.md +84 -0
  34. traigent-0.13.0.dev1/docs/features/recommendations.md +70 -0
  35. traigent-0.13.0.dev1/docs/features/safety-gates.md +95 -0
  36. traigent-0.13.0.dev1/docs/features/strategy-presets.md +74 -0
  37. {traigent-0.12.0 → traigent-0.13.0.dev1}/docs/getting-started/GETTING_STARTED.md +21 -7
  38. traigent-0.13.0.dev1/docs/getting-started/README.md +25 -0
  39. {traigent-0.12.0 → traigent-0.13.0.dev1}/docs/getting-started/installation.md +16 -20
  40. {traigent-0.12.0 → traigent-0.13.0.dev1}/docs/getting-started/minimal-integration.md +1 -1
  41. {traigent-0.12.0 → traigent-0.13.0.dev1}/docs/getting-started/portal-dev-laptop-agent.md +0 -1
  42. {traigent-0.12.0 → traigent-0.13.0.dev1}/docs/getting-started/testing.md +21 -16
  43. {traigent-0.12.0 → traigent-0.13.0.dev1}/docs/guides/evaluation.md +13 -20
  44. {traigent-0.12.0 → traigent-0.13.0.dev1}/docs/guides/js-bridge.md +5 -4
  45. {traigent-0.12.0 → traigent-0.13.0.dev1}/docs/hybrid-mode-api-contract.md +4 -2
  46. {traigent-0.12.0 → traigent-0.13.0.dev1}/docs/hybrid-mode-client-guide.md +4 -3
  47. {traigent-0.12.0 → traigent-0.13.0.dev1}/docs/operations/azure_openai.md +3 -2
  48. {traigent-0.12.0 → traigent-0.13.0.dev1}/docs/operations/bedrock.md +8 -4
  49. {traigent-0.12.0 → traigent-0.13.0.dev1}/docs/operations/google_gemini.md +3 -2
  50. traigent-0.13.0.dev1/docs/security/trust_model.md +5 -0
  51. traigent-0.13.0.dev1/docs/traceability/concepts/composite-knob-ir.md +43 -0
  52. traigent-0.13.0.dev1/docs/traceability/concepts/composite-knobs.md +245 -0
  53. {traigent-0.12.0/docs → traigent-0.13.0.dev1/docs/traceability}/concepts/guided-generation.md +3 -4
  54. {traigent-0.12.0 → traigent-0.13.0.dev1}/docs/user-guide/README.md +8 -0
  55. {traigent-0.12.0 → traigent-0.13.0.dev1}/docs/user-guide/agent_optimization.md +1 -1
  56. {traigent-0.12.0 → traigent-0.13.0.dev1}/docs/user-guide/choosing_optimization_model.md +1 -1
  57. {traigent-0.12.0 → traigent-0.13.0.dev1}/docs/user-guide/evaluation_guide.md +37 -30
  58. {traigent-0.12.0 → traigent-0.13.0.dev1}/docs/user-guide/interactive_optimization.md +1 -1
  59. {traigent-0.12.0 → traigent-0.13.0.dev1}/docs/user-guide/tuned_variables.md +27 -316
  60. {traigent-0.12.0 → traigent-0.13.0.dev1}/docs/walkthrough.md +8 -2
  61. {traigent-0.12.0 → traigent-0.13.0.dev1}/pyproject.toml +12 -3
  62. {traigent-0.12.0 → traigent-0.13.0.dev1}/requirements/requirements-all.txt +5 -4
  63. traigent-0.13.0.dev1/requirements/requirements-chroma.txt +6 -0
  64. {traigent-0.12.0 → traigent-0.13.0.dev1}/requirements/requirements-dev.txt +5 -4
  65. {traigent-0.12.0 → traigent-0.13.0.dev1}/requirements/requirements-integrations.txt +0 -1
  66. {traigent-0.12.0 → traigent-0.13.0.dev1}/traigent/api/config_builder.py +5 -5
  67. {traigent-0.12.0 → traigent-0.13.0.dev1}/traigent/api/decorators.py +7 -1
  68. {traigent-0.12.0 → traigent-0.13.0.dev1}/traigent/api/parameter_validator.py +10 -4
  69. {traigent-0.12.0 → traigent-0.13.0.dev1}/traigent/api/types.py +29 -2
  70. {traigent-0.12.0 → traigent-0.13.0.dev1}/traigent/cli/main.py +174 -3
  71. {traigent-0.12.0 → traigent-0.13.0.dev1}/traigent/cloud/api_operations.py +162 -7
  72. {traigent-0.12.0 → traigent-0.13.0.dev1}/traigent/cloud/auth.py +3 -2
  73. {traigent-0.12.0 → traigent-0.13.0.dev1}/traigent/cloud/backend_client.py +38 -7
  74. {traigent-0.12.0 → traigent-0.13.0.dev1}/traigent/cloud/client.py +7 -0
  75. {traigent-0.12.0 → traigent-0.13.0.dev1}/traigent/cloud/dtos.py +8 -1
  76. traigent-0.13.0.dev1/traigent/cloud/governance.py +254 -0
  77. {traigent-0.12.0 → traigent-0.13.0.dev1}/traigent/cloud/models.py +3 -0
  78. {traigent-0.12.0 → traigent-0.13.0.dev1}/traigent/cloud/session_operations.py +114 -16
  79. traigent-0.13.0.dev1/traigent/cloud/session_types.py +17 -0
  80. {traigent-0.12.0 → traigent-0.13.0.dev1}/traigent/cloud/sync_manager.py +426 -149
  81. {traigent-0.12.0 → traigent-0.13.0.dev1}/traigent/cloud/trial_operations.py +109 -0
  82. {traigent-0.12.0 → traigent-0.13.0.dev1}/traigent/config/backend_config.py +7 -4
  83. {traigent-0.12.0 → traigent-0.13.0.dev1}/traigent/config/types.py +43 -19
  84. traigent-0.13.0.dev1/traigent/config_generator/catalog/tvar_catalog.v1.json +751 -0
  85. {traigent-0.12.0 → traigent-0.13.0.dev1}/traigent/config_generator/llm_backend.py +3 -0
  86. {traigent-0.12.0 → traigent-0.13.0.dev1}/traigent/core/backend_session_manager.py +303 -53
  87. {traigent-0.12.0 → traigent-0.13.0.dev1}/traigent/core/cost_enforcement.py +102 -37
  88. {traigent-0.12.0 → traigent-0.13.0.dev1}/traigent/core/cost_estimator.py +18 -6
  89. {traigent-0.12.0 → traigent-0.13.0.dev1}/traigent/core/optimized_function.py +98 -13
  90. {traigent-0.12.0 → traigent-0.13.0.dev1}/traigent/core/orchestrator.py +192 -18
  91. {traigent-0.12.0 → traigent-0.13.0.dev1}/traigent/core/result_selection.py +125 -20
  92. traigent-0.13.0.dev1/traigent/core/session_types.py +151 -0
  93. {traigent-0.12.0 → traigent-0.13.0.dev1}/traigent/core/trial_lifecycle.py +10 -0
  94. {traigent-0.12.0 → traigent-0.13.0.dev1}/traigent/core/trial_result_factory.py +80 -2
  95. {traigent-0.12.0 → traigent-0.13.0.dev1}/traigent/core/workflow_trace_manager.py +33 -0
  96. {traigent-0.12.0 → traigent-0.13.0.dev1}/traigent/evaluators/base.py +236 -5
  97. {traigent-0.12.0 → traigent-0.13.0.dev1}/traigent/evaluators/local.py +145 -23
  98. {traigent-0.12.0 → traigent-0.13.0.dev1}/traigent/evaluators/metrics_tracker.py +305 -3
  99. {traigent-0.12.0 → traigent-0.13.0.dev1}/traigent/integrations/bedrock_client.py +0 -36
  100. {traigent-0.12.0 → traigent-0.13.0.dev1}/traigent/integrations/utils/mock_adapter.py +4 -0
  101. {traigent-0.12.0 → traigent-0.13.0.dev1}/traigent/knobs/__init__.py +3 -0
  102. traigent-0.13.0.dev1/traigent/knobs/composites.py +1119 -0
  103. traigent-0.13.0.dev1/traigent/knobs/patterns.py +969 -0
  104. traigent-0.13.0.dev1/traigent/knobs/runtime.py +2028 -0
  105. traigent-0.13.0.dev1/traigent/knobs/telemetry.py +245 -0
  106. {traigent-0.12.0 → traigent-0.13.0.dev1}/traigent/mcp/server.py +38 -0
  107. {traigent-0.12.0 → traigent-0.13.0.dev1}/traigent/mcp/tools.py +291 -12
  108. {traigent-0.12.0 → traigent-0.13.0.dev1}/traigent/security/credentials.py +24 -5
  109. {traigent-0.12.0 → traigent-0.13.0.dev1}/traigent/skills/traigent-analyze-results/SKILL.md +7 -5
  110. {traigent-0.12.0 → traigent-0.13.0.dev1}/traigent/skills/traigent-analyze-results/references/convergence-patterns.md +2 -2
  111. {traigent-0.12.0 → traigent-0.13.0.dev1}/traigent/skills/traigent-analyze-results/references/optimization-result-api.md +1 -1
  112. {traigent-0.12.0 → traigent-0.13.0.dev1}/traigent/skills/traigent-configuration-space/SKILL.md +1 -1
  113. {traigent-0.12.0 → traigent-0.13.0.dev1}/traigent/skills/traigent-debugging/SKILL.md +8 -6
  114. {traigent-0.12.0 → traigent-0.13.0.dev1}/traigent/skills/traigent-debugging/references/error-reference.md +4 -4
  115. {traigent-0.12.0 → traigent-0.13.0.dev1}/traigent/skills/traigent-debugging/references/logging-config.md +1 -1
  116. {traigent-0.12.0 → traigent-0.13.0.dev1}/traigent/skills/traigent-debugging/references/mock-mode.md +9 -6
  117. {traigent-0.12.0 → traigent-0.13.0.dev1}/traigent/skills/traigent-decorator-setup/SKILL.md +1 -1
  118. {traigent-0.12.0 → traigent-0.13.0.dev1}/traigent/skills/traigent-decorator-setup/references/evaluation-options.md +43 -16
  119. {traigent-0.12.0 → traigent-0.13.0.dev1}/traigent/skills/traigent-integrations/SKILL.md +7 -5
  120. {traigent-0.12.0 → traigent-0.13.0.dev1}/traigent/skills/traigent-integrations/references/dspy.md +3 -2
  121. {traigent-0.12.0 → traigent-0.13.0.dev1}/traigent/skills/traigent-integrations/references/langchain.md +2 -1
  122. {traigent-0.12.0 → traigent-0.13.0.dev1}/traigent/skills/traigent-integrations/references/litellm.md +6 -4
  123. {traigent-0.12.0 → traigent-0.13.0.dev1}/traigent/skills/traigent-quickstart/SKILL.md +7 -7
  124. {traigent-0.12.0 → traigent-0.13.0.dev1}/traigent/skills/traigent-quickstart/references/environment-variables.md +21 -3
  125. {traigent-0.12.0 → traigent-0.13.0.dev1}/traigent/skills/traigent-quickstart/references/installation-extras.md +17 -8
  126. {traigent-0.12.0 → traigent-0.13.0.dev1}/traigent/skills/traigent-run-optimization/SKILL.md +20 -2
  127. {traigent-0.12.0 → traigent-0.13.0.dev1}/traigent/skills/traigent-run-optimization/references/cost-management.md +30 -9
  128. {traigent-0.12.0 → traigent-0.13.0.dev1}/traigent/storage/local_storage.py +103 -0
  129. {traigent-0.12.0 → traigent-0.13.0.dev1}/traigent/testing/__init__.py +6 -0
  130. {traigent-0.12.0 → traigent-0.13.0.dev1}/traigent/utils/callbacks.py +58 -4
  131. {traigent-0.12.0 → traigent-0.13.0.dev1}/traigent/utils/constraints.py +2 -1
  132. {traigent-0.12.0 → traigent-0.13.0.dev1}/traigent/utils/cost_calculator.py +3 -0
  133. {traigent-0.12.0 → traigent-0.13.0.dev1}/traigent/utils/diagnostics.py +1 -1
  134. {traigent-0.12.0 → traigent-0.13.0.dev1}/traigent/utils/env_config.py +6 -0
  135. {traigent-0.12.0 → traigent-0.13.0.dev1}/traigent/utils/error_handler.py +1 -1
  136. {traigent-0.12.0 → traigent-0.13.0.dev1}/traigent/utils/litellm_interceptor.py +3 -1
  137. {traigent-0.12.0 → traigent-0.13.0.dev1}/traigent/utils/local_analytics.py +6 -0
  138. {traigent-0.12.0 → traigent-0.13.0.dev1}/traigent/utils/logging.py +47 -0
  139. {traigent-0.12.0 → traigent-0.13.0.dev1}/traigent/utils/results_table.py +247 -46
  140. {traigent-0.12.0 → traigent-0.13.0.dev1/traigent.egg-info}/PKG-INFO +10 -6
  141. {traigent-0.12.0 → traigent-0.13.0.dev1}/traigent.egg-info/SOURCES.txt +17 -0
  142. {traigent-0.12.0 → traigent-0.13.0.dev1}/traigent.egg-info/requires.txt +4 -2
  143. traigent-0.12.0/docs/agent-skill.md +0 -36
  144. traigent-0.12.0/docs/examples/API_PATTERNS.md +0 -454
  145. traigent-0.12.0/docs/features/README.md +0 -21
  146. traigent-0.12.0/docs/getting-started/README.md +0 -17
  147. traigent-0.12.0/traigent/cloud/session_types.py +0 -8
  148. traigent-0.12.0/traigent/config_generator/catalog/tvar_catalog.v1.json +0 -357
  149. traigent-0.12.0/traigent/core/session_types.py +0 -63
  150. {traigent-0.12.0 → traigent-0.13.0.dev1}/COMMERCIAL-LICENSE.md +0 -0
  151. {traigent-0.12.0 → traigent-0.13.0.dev1}/CONTRIBUTING.md +0 -0
  152. {traigent-0.12.0 → traigent-0.13.0.dev1}/CONTRIBUTOR-LICENSING.md +0 -0
  153. {traigent-0.12.0 → traigent-0.13.0.dev1}/DISCLAIMER.md +0 -0
  154. {traigent-0.12.0 → traigent-0.13.0.dev1}/LICENSE +0 -0
  155. {traigent-0.12.0 → traigent-0.13.0.dev1}/MANIFEST.in +0 -0
  156. {traigent-0.12.0 → traigent-0.13.0.dev1}/NOTICE +0 -0
  157. {traigent-0.12.0 → traigent-0.13.0.dev1}/SECURITY.md +0 -0
  158. {traigent-0.12.0 → traigent-0.13.0.dev1}/docs/SYNC_MAP.md +0 -0
  159. {traigent-0.12.0 → traigent-0.13.0.dev1}/docs/api-reference/enterprise-beta-api.md +0 -0
  160. {traigent-0.12.0 → traigent-0.13.0.dev1}/docs/api-reference/interactive_optimizer.md +0 -0
  161. {traigent-0.12.0 → traigent-0.13.0.dev1}/docs/architecture/execution_mode_follow_up.md +0 -0
  162. {traigent-0.12.0 → traigent-0.13.0.dev1}/docs/architecture/stop_conditions.md +0 -0
  163. {traigent-0.12.0 → traigent-0.13.0.dev1}/docs/contributing/CODE_OF_CONDUCT.md +0 -0
  164. {traigent-0.12.0 → traigent-0.13.0.dev1}/docs/contributing/EXAMPLE_TEMPLATE.md +0 -0
  165. {traigent-0.12.0 → traigent-0.13.0.dev1}/docs/contributing/SECURITY.md +0 -0
  166. {traigent-0.12.0 → traigent-0.13.0.dev1}/docs/contributing/code_review_instructions.md +0 -0
  167. {traigent-0.12.0 → traigent-0.13.0.dev1}/docs/contributing/test-quality-guide.md +0 -0
  168. {traigent-0.12.0 → traigent-0.13.0.dev1}/docs/demos/DEMO_VIDEO_GUIDE.md +0 -0
  169. {traigent-0.12.0 → traigent-0.13.0.dev1}/docs/demos/README.md +0 -0
  170. {traigent-0.12.0 → traigent-0.13.0.dev1}/docs/fake-completion-tracking.md +0 -0
  171. {traigent-0.12.0 → traigent-0.13.0.dev1}/docs/feature_matrices/README.md +0 -0
  172. {traigent-0.12.0 → traigent-0.13.0.dev1}/docs/features/dataflow-detection.md +0 -0
  173. {traigent-0.12.0 → traigent-0.13.0.dev1}/docs/features/framework_override_enhanced_features.md +0 -0
  174. {traigent-0.12.0 → traigent-0.13.0.dev1}/docs/features/prompt_management.md +0 -0
  175. {traigent-0.12.0 → traigent-0.13.0.dev1}/docs/features/seamless_injection.md +0 -0
  176. {traigent-0.12.0 → traigent-0.13.0.dev1}/docs/features/strict_metrics_nulls.md +0 -0
  177. {traigent-0.12.0 → traigent-0.13.0.dev1}/docs/guides/VSCODE_RESTART_GUIDE.md +0 -0
  178. {traigent-0.12.0 → traigent-0.13.0.dev1}/docs/guides/execution-modes.md +0 -0
  179. {traigent-0.12.0 → traigent-0.13.0.dev1}/docs/guides/llm_plugin_migration_guide.md +0 -0
  180. {traigent-0.12.0 → traigent-0.13.0.dev1}/docs/guides/parallel-configuration.md +0 -0
  181. {traigent-0.12.0 → traigent-0.13.0.dev1}/docs/guides/secrets_management.md +0 -0
  182. {traigent-0.12.0 → traigent-0.13.0.dev1}/docs/testing/CREATIVE_STRESS_TESTING.md +0 -0
  183. {traigent-0.12.0 → traigent-0.13.0.dev1}/docs/traceability/schema.md +0 -0
  184. {traigent-0.12.0 → traigent-0.13.0.dev1}/docs/traceability/tagging_tracking.md +0 -0
  185. {traigent-0.12.0 → traigent-0.13.0.dev1}/docs/traceability/taxonomy_reference.md +0 -0
  186. {traigent-0.12.0 → traigent-0.13.0.dev1}/docs/tvl/CONSTRAINT_EXPRESSIONS.md +0 -0
  187. {traigent-0.12.0 → traigent-0.13.0.dev1}/docs/user-guide/configuration-spaces.md +0 -0
  188. {traigent-0.12.0 → traigent-0.13.0.dev1}/docs/user-guide/injection_modes.md +0 -0
  189. {traigent-0.12.0 → traigent-0.13.0.dev1}/docs/user-guide/optuna_integration.md +0 -0
  190. {traigent-0.12.0 → traigent-0.13.0.dev1}/requirements/requirements-analytics.txt +0 -0
  191. {traigent-0.12.0 → traigent-0.13.0.dev1}/requirements/requirements-bayesian.txt +0 -0
  192. {traigent-0.12.0 → traigent-0.13.0.dev1}/requirements/requirements-hybrid.txt +0 -0
  193. {traigent-0.12.0 → traigent-0.13.0.dev1}/requirements/requirements-security.txt +0 -0
  194. {traigent-0.12.0 → traigent-0.13.0.dev1}/requirements/requirements-test.txt +0 -0
  195. {traigent-0.12.0 → traigent-0.13.0.dev1}/requirements/requirements.txt +0 -0
  196. {traigent-0.12.0 → traigent-0.13.0.dev1}/setup.cfg +0 -0
  197. {traigent-0.12.0 → traigent-0.13.0.dev1}/traigent/__init__.py +0 -0
  198. {traigent-0.12.0 → traigent-0.13.0.dev1}/traigent/_version.py +0 -0
  199. {traigent-0.12.0 → traigent-0.13.0.dev1}/traigent/adapters/execution_adapter.py +0 -0
  200. {traigent-0.12.0 → traigent-0.13.0.dev1}/traigent/admin/__init__.py +0 -0
  201. {traigent-0.12.0 → traigent-0.13.0.dev1}/traigent/admin/client.py +0 -0
  202. {traigent-0.12.0 → traigent-0.13.0.dev1}/traigent/admin/config.py +0 -0
  203. {traigent-0.12.0 → traigent-0.13.0.dev1}/traigent/admin/dtos.py +0 -0
  204. {traigent-0.12.0 → traigent-0.13.0.dev1}/traigent/agents/__init__.py +0 -0
  205. {traigent-0.12.0 → traigent-0.13.0.dev1}/traigent/agents/config_mapper.py +0 -0
  206. {traigent-0.12.0 → traigent-0.13.0.dev1}/traigent/agents/executor.py +0 -0
  207. {traigent-0.12.0 → traigent-0.13.0.dev1}/traigent/agents/platforms.py +0 -0
  208. {traigent-0.12.0 → traigent-0.13.0.dev1}/traigent/agents/specification_generator.py +0 -0
  209. {traigent-0.12.0 → traigent-0.13.0.dev1}/traigent/analytics/__init__.py +0 -0
  210. {traigent-0.12.0 → traigent-0.13.0.dev1}/traigent/analytics/anomaly.py +0 -0
  211. {traigent-0.12.0 → traigent-0.13.0.dev1}/traigent/analytics/cost_optimization.py +0 -0
  212. {traigent-0.12.0 → traigent-0.13.0.dev1}/traigent/analytics/example_insights.py +0 -0
  213. {traigent-0.12.0 → traigent-0.13.0.dev1}/traigent/analytics/intelligence.py +0 -0
  214. {traigent-0.12.0 → traigent-0.13.0.dev1}/traigent/analytics/meta_learning.py +0 -0
  215. {traigent-0.12.0 → traigent-0.13.0.dev1}/traigent/analytics/predictive.py +0 -0
  216. {traigent-0.12.0 → traigent-0.13.0.dev1}/traigent/analytics/scheduling.py +0 -0
  217. {traigent-0.12.0 → traigent-0.13.0.dev1}/traigent/api/__init__.py +0 -0
  218. {traigent-0.12.0 → traigent-0.13.0.dev1}/traigent/api/agent_inference.py +0 -0
  219. {traigent-0.12.0 → traigent-0.13.0.dev1}/traigent/api/config_space.py +0 -0
  220. {traigent-0.12.0 → traigent-0.13.0.dev1}/traigent/api/constraint_builders.py +0 -0
  221. {traigent-0.12.0 → traigent-0.13.0.dev1}/traigent/api/constraints.py +0 -0
  222. {traigent-0.12.0 → traigent-0.13.0.dev1}/traigent/api/functions.py +0 -0
  223. {traigent-0.12.0 → traigent-0.13.0.dev1}/traigent/api/parameter_ranges.py +0 -0
  224. {traigent-0.12.0 → traigent-0.13.0.dev1}/traigent/api/safety.py +0 -0
  225. {traigent-0.12.0 → traigent-0.13.0.dev1}/traigent/api/strategy_presets.py +0 -0
  226. {traigent-0.12.0 → traigent-0.13.0.dev1}/traigent/api/validation_protocol.py +0 -0
  227. {traigent-0.12.0 → traigent-0.13.0.dev1}/traigent/cli/__init__.py +0 -0
  228. {traigent-0.12.0 → traigent-0.13.0.dev1}/traigent/cli/auth_commands.py +0 -0
  229. {traigent-0.12.0 → traigent-0.13.0.dev1}/traigent/cli/detect_tvars_command.py +0 -0
  230. {traigent-0.12.0 → traigent-0.13.0.dev1}/traigent/cli/function_discovery.py +0 -0
  231. {traigent-0.12.0 → traigent-0.13.0.dev1}/traigent/cli/generate_config_command.py +0 -0
  232. {traigent-0.12.0 → traigent-0.13.0.dev1}/traigent/cli/hooks_commands.py +0 -0
  233. {traigent-0.12.0 → traigent-0.13.0.dev1}/traigent/cli/local_commands.py +0 -0
  234. {traigent-0.12.0 → traigent-0.13.0.dev1}/traigent/cli/onboard_commands.py +0 -0
  235. {traigent-0.12.0 → traigent-0.13.0.dev1}/traigent/cli/optimization_validator.py +0 -0
  236. {traigent-0.12.0 → traigent-0.13.0.dev1}/traigent/cli/validation_types.py +0 -0
  237. {traigent-0.12.0 → traigent-0.13.0.dev1}/traigent/cloud/__init__.py +0 -0
  238. {traigent-0.12.0 → traigent-0.13.0.dev1}/traigent/cloud/_aiohttp_compat.py +0 -0
  239. {traigent-0.12.0 → traigent-0.13.0.dev1}/traigent/cloud/agent_dtos.py +0 -0
  240. {traigent-0.12.0 → traigent-0.13.0.dev1}/traigent/cloud/api_key_manager.py +0 -0
  241. {traigent-0.12.0 → traigent-0.13.0.dev1}/traigent/cloud/async_batch_transport.py +0 -0
  242. {traigent-0.12.0 → traigent-0.13.0.dev1}/traigent/cloud/backend_bridges.py +0 -0
  243. {traigent-0.12.0 → traigent-0.13.0.dev1}/traigent/cloud/backend_components.py +0 -0
  244. {traigent-0.12.0 → traigent-0.13.0.dev1}/traigent/cloud/backend_synchronizer.py +0 -0
  245. {traigent-0.12.0 → traigent-0.13.0.dev1}/traigent/cloud/benchmark_client.py +0 -0
  246. {traigent-0.12.0 → traigent-0.13.0.dev1}/traigent/cloud/billing.py +0 -0
  247. {traigent-0.12.0 → traigent-0.13.0.dev1}/traigent/cloud/cloud_operations.py +0 -0
  248. {traigent-0.12.0 → traigent-0.13.0.dev1}/traigent/cloud/credential_manager.py +0 -0
  249. {traigent-0.12.0 → traigent-0.13.0.dev1}/traigent/cloud/credential_resolver.py +0 -0
  250. {traigent-0.12.0 → traigent-0.13.0.dev1}/traigent/cloud/dataset_converter.py +0 -0
  251. {traigent-0.12.0 → traigent-0.13.0.dev1}/traigent/cloud/event_manager.py +0 -0
  252. {traigent-0.12.0 → traigent-0.13.0.dev1}/traigent/cloud/integration_manager.py +0 -0
  253. {traigent-0.12.0 → traigent-0.13.0.dev1}/traigent/cloud/optimizer_client.py +0 -0
  254. {traigent-0.12.0 → traigent-0.13.0.dev1}/traigent/cloud/password_auth_handler.py +0 -0
  255. {traigent-0.12.0 → traigent-0.13.0.dev1}/traigent/cloud/privacy_operations.py +0 -0
  256. {traigent-0.12.0 → traigent-0.13.0.dev1}/traigent/cloud/production_mcp_client.py +0 -0
  257. {traigent-0.12.0 → traigent-0.13.0.dev1}/traigent/cloud/remote_guidance.py +0 -0
  258. {traigent-0.12.0 → traigent-0.13.0.dev1}/traigent/cloud/resilient_client.py +0 -0
  259. {traigent-0.12.0 → traigent-0.13.0.dev1}/traigent/cloud/service.py +0 -0
  260. {traigent-0.12.0 → traigent-0.13.0.dev1}/traigent/cloud/sessions.py +0 -0
  261. {traigent-0.12.0 → traigent-0.13.0.dev1}/traigent/cloud/subset_selection.py +0 -0
  262. {traigent-0.12.0 → traigent-0.13.0.dev1}/traigent/cloud/token_manager.py +0 -0
  263. {traigent-0.12.0 → traigent-0.13.0.dev1}/traigent/cloud/trial_tracker.py +0 -0
  264. {traigent-0.12.0 → traigent-0.13.0.dev1}/traigent/cloud/url_security.py +0 -0
  265. {traigent-0.12.0 → traigent-0.13.0.dev1}/traigent/cloud/validators.py +0 -0
  266. {traigent-0.12.0 → traigent-0.13.0.dev1}/traigent/config/__init__.py +0 -0
  267. {traigent-0.12.0 → traigent-0.13.0.dev1}/traigent/config/api_keys.py +0 -0
  268. {traigent-0.12.0 → traigent-0.13.0.dev1}/traigent/config/ast_transformer.py +0 -0
  269. {traigent-0.12.0 → traigent-0.13.0.dev1}/traigent/config/context.py +0 -0
  270. {traigent-0.12.0 → traigent-0.13.0.dev1}/traigent/config/feature_flags.py +0 -0
  271. {traigent-0.12.0 → traigent-0.13.0.dev1}/traigent/config/models.yaml +0 -0
  272. {traigent-0.12.0 → traigent-0.13.0.dev1}/traigent/config/parallel.py +0 -0
  273. {traigent-0.12.0 → traigent-0.13.0.dev1}/traigent/config/project.py +0 -0
  274. {traigent-0.12.0 → traigent-0.13.0.dev1}/traigent/config/providers.py +0 -0
  275. {traigent-0.12.0 → traigent-0.13.0.dev1}/traigent/config/runtime_injector.py +0 -0
  276. {traigent-0.12.0 → traigent-0.13.0.dev1}/traigent/config/seamless_injection.py +0 -0
  277. {traigent-0.12.0 → traigent-0.13.0.dev1}/traigent/config/seamless_optuna_adapter.py +0 -0
  278. {traigent-0.12.0 → traigent-0.13.0.dev1}/traigent/config/tenant.py +0 -0
  279. {traigent-0.12.0 → traigent-0.13.0.dev1}/traigent/config_generator/__init__.py +0 -0
  280. {traigent-0.12.0 → traigent-0.13.0.dev1}/traigent/config_generator/agent_classifier.py +0 -0
  281. {traigent-0.12.0 → traigent-0.13.0.dev1}/traigent/config_generator/apply.py +0 -0
  282. {traigent-0.12.0 → traigent-0.13.0.dev1}/traigent/config_generator/catalog/schemas/tvar_catalog_entry_schema.json +0 -0
  283. {traigent-0.12.0 → traigent-0.13.0.dev1}/traigent/config_generator/catalog/schemas/tvar_observation_schema.json +0 -0
  284. {traigent-0.12.0 → traigent-0.13.0.dev1}/traigent/config_generator/catalog/schemas/tvar_value_recommendation_schema.json +0 -0
  285. {traigent-0.12.0 → traigent-0.13.0.dev1}/traigent/config_generator/catalog.py +0 -0
  286. {traigent-0.12.0 → traigent-0.13.0.dev1}/traigent/config_generator/pipeline.py +0 -0
  287. {traigent-0.12.0 → traigent-0.13.0.dev1}/traigent/config_generator/presets/__init__.py +0 -0
  288. {traigent-0.12.0 → traigent-0.13.0.dev1}/traigent/config_generator/presets/agent_type_catalog.py +0 -0
  289. {traigent-0.12.0 → traigent-0.13.0.dev1}/traigent/config_generator/presets/benchmark_catalog.py +0 -0
  290. {traigent-0.12.0 → traigent-0.13.0.dev1}/traigent/config_generator/presets/constraint_templates.py +0 -0
  291. {traigent-0.12.0 → traigent-0.13.0.dev1}/traigent/config_generator/presets/range_presets.py +0 -0
  292. {traigent-0.12.0 → traigent-0.13.0.dev1}/traigent/config_generator/recommendations.py +0 -0
  293. {traigent-0.12.0 → traigent-0.13.0.dev1}/traigent/config_generator/subsystems/__init__.py +0 -0
  294. {traigent-0.12.0 → traigent-0.13.0.dev1}/traigent/config_generator/subsystems/benchmarks.py +0 -0
  295. {traigent-0.12.0 → traigent-0.13.0.dev1}/traigent/config_generator/subsystems/objectives.py +0 -0
  296. {traigent-0.12.0 → traigent-0.13.0.dev1}/traigent/config_generator/subsystems/safety_constraints.py +0 -0
  297. {traigent-0.12.0 → traigent-0.13.0.dev1}/traigent/config_generator/subsystems/structural_constraints.py +0 -0
  298. {traigent-0.12.0 → traigent-0.13.0.dev1}/traigent/config_generator/subsystems/tvar_ranges.py +0 -0
  299. {traigent-0.12.0 → traigent-0.13.0.dev1}/traigent/config_generator/subsystems/tvar_recommendations.py +0 -0
  300. {traigent-0.12.0 → traigent-0.13.0.dev1}/traigent/config_generator/types.py +0 -0
  301. {traigent-0.12.0 → traigent-0.13.0.dev1}/traigent/core/__init__.py +0 -0
  302. {traigent-0.12.0 → traigent-0.13.0.dev1}/traigent/core/best_config_runtime.py +0 -0
  303. {traigent-0.12.0 → traigent-0.13.0.dev1}/traigent/core/cache_policy.py +0 -0
  304. {traigent-0.12.0 → traigent-0.13.0.dev1}/traigent/core/ci_approval.py +0 -0
  305. {traigent-0.12.0 → traigent-0.13.0.dev1}/traigent/core/config_builder.py +0 -0
  306. {traigent-0.12.0 → traigent-0.13.0.dev1}/traigent/core/config_state_manager.py +0 -0
  307. {traigent-0.12.0 → traigent-0.13.0.dev1}/traigent/core/constants.py +0 -0
  308. {traigent-0.12.0 → traigent-0.13.0.dev1}/traigent/core/evaluator_wrapper.py +0 -0
  309. {traigent-0.12.0 → traigent-0.13.0.dev1}/traigent/core/exception_handler.py +0 -0
  310. {traigent-0.12.0 → traigent-0.13.0.dev1}/traigent/core/license.py +0 -0
  311. {traigent-0.12.0 → traigent-0.13.0.dev1}/traigent/core/llm_processor.py +0 -0
  312. {traigent-0.12.0 → traigent-0.13.0.dev1}/traigent/core/logger_facade.py +0 -0
  313. {traigent-0.12.0 → traigent-0.13.0.dev1}/traigent/core/mandatory_metrics.py +0 -0
  314. {traigent-0.12.0 → traigent-0.13.0.dev1}/traigent/core/meta_types.py +0 -0
  315. {traigent-0.12.0 → traigent-0.13.0.dev1}/traigent/core/metadata_helpers.py +0 -0
  316. {traigent-0.12.0 → traigent-0.13.0.dev1}/traigent/core/metric_registry.py +0 -0
  317. {traigent-0.12.0 → traigent-0.13.0.dev1}/traigent/core/metrics_aggregator.py +0 -0
  318. {traigent-0.12.0 → traigent-0.13.0.dev1}/traigent/core/namespace.py +0 -0
  319. {traigent-0.12.0 → traigent-0.13.0.dev1}/traigent/core/objectives.py +0 -0
  320. {traigent-0.12.0 → traigent-0.13.0.dev1}/traigent/core/optimization_pipeline.py +0 -0
  321. {traigent-0.12.0 → traigent-0.13.0.dev1}/traigent/core/orchestrator_helpers.py +0 -0
  322. {traigent-0.12.0 → traigent-0.13.0.dev1}/traigent/core/parallel_execution_manager.py +0 -0
  323. {traigent-0.12.0 → traigent-0.13.0.dev1}/traigent/core/progress_manager.py +0 -0
  324. {traigent-0.12.0 → traigent-0.13.0.dev1}/traigent/core/pruning_progress_tracker.py +0 -0
  325. {traigent-0.12.0 → traigent-0.13.0.dev1}/traigent/core/refactoring_utils.py +0 -0
  326. {traigent-0.12.0 → traigent-0.13.0.dev1}/traigent/core/sample_budget.py +0 -0
  327. {traigent-0.12.0 → traigent-0.13.0.dev1}/traigent/core/samplers/__init__.py +0 -0
  328. {traigent-0.12.0 → traigent-0.13.0.dev1}/traigent/core/samplers/random_sampler.py +0 -0
  329. {traigent-0.12.0 → traigent-0.13.0.dev1}/traigent/core/session_context.py +0 -0
  330. {traigent-0.12.0 → traigent-0.13.0.dev1}/traigent/core/stat_significance.py +0 -0
  331. {traigent-0.12.0 → traigent-0.13.0.dev1}/traigent/core/stop_condition_manager.py +0 -0
  332. {traigent-0.12.0 → traigent-0.13.0.dev1}/traigent/core/stop_conditions.py +0 -0
  333. {traigent-0.12.0 → traigent-0.13.0.dev1}/traigent/core/trace_env.py +0 -0
  334. {traigent-0.12.0 → traigent-0.13.0.dev1}/traigent/core/tracing.py +0 -0
  335. {traigent-0.12.0 → traigent-0.13.0.dev1}/traigent/core/trial_context.py +0 -0
  336. {traigent-0.12.0 → traigent-0.13.0.dev1}/traigent/core/types.py +0 -0
  337. {traigent-0.12.0 → traigent-0.13.0.dev1}/traigent/core/types_ext.py +0 -0
  338. {traigent-0.12.0 → traigent-0.13.0.dev1}/traigent/core/utils.py +0 -0
  339. {traigent-0.12.0 → traigent-0.13.0.dev1}/traigent/core_metrics/__init__.py +0 -0
  340. {traigent-0.12.0 → traigent-0.13.0.dev1}/traigent/core_metrics/client.py +0 -0
  341. {traigent-0.12.0 → traigent-0.13.0.dev1}/traigent/core_metrics/config.py +0 -0
  342. {traigent-0.12.0 → traigent-0.13.0.dev1}/traigent/core_metrics/dtos.py +0 -0
  343. {traigent-0.12.0 → traigent-0.13.0.dev1}/traigent/effectuation/__init__.py +0 -0
  344. {traigent-0.12.0 → traigent-0.13.0.dev1}/traigent/effectuation/contracts.py +0 -0
  345. {traigent-0.12.0 → traigent-0.13.0.dev1}/traigent/effectuation/strategies/__init__.py +0 -0
  346. {traigent-0.12.0 → traigent-0.13.0.dev1}/traigent/effectuation/strategies/framework_param.py +0 -0
  347. {traigent-0.12.0 → traigent-0.13.0.dev1}/traigent/effectuation/strategies/self_consistency.py +0 -0
  348. {traigent-0.12.0 → traigent-0.13.0.dev1}/traigent/evaluation/__init__.py +0 -0
  349. {traigent-0.12.0 → traigent-0.13.0.dev1}/traigent/evaluation/client.py +0 -0
  350. {traigent-0.12.0 → traigent-0.13.0.dev1}/traigent/evaluation/config.py +0 -0
  351. {traigent-0.12.0 → traigent-0.13.0.dev1}/traigent/evaluation/dtos.py +0 -0
  352. {traigent-0.12.0 → traigent-0.13.0.dev1}/traigent/evaluators/__init__.py +0 -0
  353. {traigent-0.12.0 → traigent-0.13.0.dev1}/traigent/evaluators/dataset_registry.py +0 -0
  354. {traigent-0.12.0 → traigent-0.13.0.dev1}/traigent/evaluators/hybrid_api.py +0 -0
  355. {traigent-0.12.0 → traigent-0.13.0.dev1}/traigent/evaluators/metrics.py +0 -0
  356. {traigent-0.12.0 → traigent-0.13.0.dev1}/traigent/examples/__init__.py +0 -0
  357. {traigent-0.12.0 → traigent-0.13.0.dev1}/traigent/examples/quickstart/__init__.py +0 -0
  358. {traigent-0.12.0 → traigent-0.13.0.dev1}/traigent/examples/quickstart/__main__.py +0 -0
  359. {traigent-0.12.0 → traigent-0.13.0.dev1}/traigent/examples/quickstart/_env.py +0 -0
  360. {traigent-0.12.0 → traigent-0.13.0.dev1}/traigent/examples/quickstart/qa_samples.jsonl +0 -0
  361. {traigent-0.12.0 → traigent-0.13.0.dev1}/traigent/examples/tutorial_bootstrap.py +0 -0
  362. {traigent-0.12.0 → traigent-0.13.0.dev1}/traigent/generation/__init__.py +0 -0
  363. {traigent-0.12.0 → traigent-0.13.0.dev1}/traigent/generation/backend_provider.py +0 -0
  364. {traigent-0.12.0 → traigent-0.13.0.dev1}/traigent/generation/example_synth.py +0 -0
  365. {traigent-0.12.0 → traigent-0.13.0.dev1}/traigent/generation/llm_provider.py +0 -0
  366. {traigent-0.12.0 → traigent-0.13.0.dev1}/traigent/generation/loop.py +0 -0
  367. {traigent-0.12.0 → traigent-0.13.0.dev1}/traigent/generation/models.py +0 -0
  368. {traigent-0.12.0 → traigent-0.13.0.dev1}/traigent/generation/options.py +0 -0
  369. {traigent-0.12.0 → traigent-0.13.0.dev1}/traigent/generation/prompt_rewriter.py +0 -0
  370. {traigent-0.12.0 → traigent-0.13.0.dev1}/traigent/generation/validators.py +0 -0
  371. {traigent-0.12.0 → traigent-0.13.0.dev1}/traigent/guaranteed_modes.py +0 -0
  372. {traigent-0.12.0 → traigent-0.13.0.dev1}/traigent/hooks/__init__.py +0 -0
  373. {traigent-0.12.0 → traigent-0.13.0.dev1}/traigent/hooks/config.py +0 -0
  374. {traigent-0.12.0 → traigent-0.13.0.dev1}/traigent/hooks/installer.py +0 -0
  375. {traigent-0.12.0 → traigent-0.13.0.dev1}/traigent/hooks/validator.py +0 -0
  376. {traigent-0.12.0 → traigent-0.13.0.dev1}/traigent/hybrid/__init__.py +0 -0
  377. {traigent-0.12.0 → traigent-0.13.0.dev1}/traigent/hybrid/discovery.py +0 -0
  378. {traigent-0.12.0 → traigent-0.13.0.dev1}/traigent/hybrid/http_transport.py +0 -0
  379. {traigent-0.12.0 → traigent-0.13.0.dev1}/traigent/hybrid/lifecycle.py +0 -0
  380. {traigent-0.12.0 → traigent-0.13.0.dev1}/traigent/hybrid/mcp_transport.py +0 -0
  381. {traigent-0.12.0 → traigent-0.13.0.dev1}/traigent/hybrid/protocol.py +0 -0
  382. {traigent-0.12.0 → traigent-0.13.0.dev1}/traigent/hybrid/transport.py +0 -0
  383. {traigent-0.12.0 → traigent-0.13.0.dev1}/traigent/integrations/__init__.py +0 -0
  384. {traigent-0.12.0 → traigent-0.13.0.dev1}/traigent/integrations/activation.py +0 -0
  385. {traigent-0.12.0 → traigent-0.13.0.dev1}/traigent/integrations/base.py +0 -0
  386. {traigent-0.12.0 → traigent-0.13.0.dev1}/traigent/integrations/base_plugin.py +0 -0
  387. {traigent-0.12.0 → traigent-0.13.0.dev1}/traigent/integrations/batch_wrapper.py +0 -0
  388. {traigent-0.12.0 → traigent-0.13.0.dev1}/traigent/integrations/config.py +0 -0
  389. {traigent-0.12.0 → traigent-0.13.0.dev1}/traigent/integrations/dspy_adapter.py +0 -0
  390. {traigent-0.12.0 → traigent-0.13.0.dev1}/traigent/integrations/framework_override.py +0 -0
  391. {traigent-0.12.0 → traigent-0.13.0.dev1}/traigent/integrations/langchain/__init__.py +0 -0
  392. {traigent-0.12.0 → traigent-0.13.0.dev1}/traigent/integrations/langchain/handler.py +0 -0
  393. {traigent-0.12.0 → traigent-0.13.0.dev1}/traigent/integrations/langfuse/__init__.py +0 -0
  394. {traigent-0.12.0 → traigent-0.13.0.dev1}/traigent/integrations/langfuse/callback.py +0 -0
  395. {traigent-0.12.0 → traigent-0.13.0.dev1}/traigent/integrations/langfuse/client.py +0 -0
  396. {traigent-0.12.0 → traigent-0.13.0.dev1}/traigent/integrations/langfuse/tracker.py +0 -0
  397. {traigent-0.12.0 → traigent-0.13.0.dev1}/traigent/integrations/llms/__init__.py +0 -0
  398. {traigent-0.12.0 → traigent-0.13.0.dev1}/traigent/integrations/llms/anthropic_plugin.py +0 -0
  399. {traigent-0.12.0 → traigent-0.13.0.dev1}/traigent/integrations/llms/azure_openai_plugin.py +0 -0
  400. {traigent-0.12.0 → traigent-0.13.0.dev1}/traigent/integrations/llms/base_llm_plugin.py +0 -0
  401. {traigent-0.12.0 → traigent-0.13.0.dev1}/traigent/integrations/llms/bedrock_plugin.py +0 -0
  402. {traigent-0.12.0 → traigent-0.13.0.dev1}/traigent/integrations/llms/cohere_plugin.py +0 -0
  403. {traigent-0.12.0 → traigent-0.13.0.dev1}/traigent/integrations/llms/gemini_plugin.py +0 -0
  404. {traigent-0.12.0 → traigent-0.13.0.dev1}/traigent/integrations/llms/huggingface_plugin.py +0 -0
  405. {traigent-0.12.0 → traigent-0.13.0.dev1}/traigent/integrations/llms/langchain/__init__.py +0 -0
  406. {traigent-0.12.0 → traigent-0.13.0.dev1}/traigent/integrations/llms/langchain/base.py +0 -0
  407. {traigent-0.12.0 → traigent-0.13.0.dev1}/traigent/integrations/llms/langchain/discovery.py +0 -0
  408. {traigent-0.12.0 → traigent-0.13.0.dev1}/traigent/integrations/llms/langchain_plugin.py +0 -0
  409. {traigent-0.12.0 → traigent-0.13.0.dev1}/traigent/integrations/llms/litellm_plugin.py +0 -0
  410. {traigent-0.12.0 → traigent-0.13.0.dev1}/traigent/integrations/llms/llamaindex_plugin.py +0 -0
  411. {traigent-0.12.0 → traigent-0.13.0.dev1}/traigent/integrations/llms/mistral_plugin.py +0 -0
  412. {traigent-0.12.0 → traigent-0.13.0.dev1}/traigent/integrations/llms/openai.py +0 -0
  413. {traigent-0.12.0 → traigent-0.13.0.dev1}/traigent/integrations/llms/openai_plugin.py +0 -0
  414. {traigent-0.12.0 → traigent-0.13.0.dev1}/traigent/integrations/mappings.py +0 -0
  415. {traigent-0.12.0 → traigent-0.13.0.dev1}/traigent/integrations/model_discovery/__init__.py +0 -0
  416. {traigent-0.12.0 → traigent-0.13.0.dev1}/traigent/integrations/model_discovery/anthropic_discovery.py +0 -0
  417. {traigent-0.12.0 → traigent-0.13.0.dev1}/traigent/integrations/model_discovery/azure_discovery.py +0 -0
  418. {traigent-0.12.0 → traigent-0.13.0.dev1}/traigent/integrations/model_discovery/base.py +0 -0
  419. {traigent-0.12.0 → traigent-0.13.0.dev1}/traigent/integrations/model_discovery/cache.py +0 -0
  420. {traigent-0.12.0 → traigent-0.13.0.dev1}/traigent/integrations/model_discovery/gemini_discovery.py +0 -0
  421. {traigent-0.12.0 → traigent-0.13.0.dev1}/traigent/integrations/model_discovery/mistral_discovery.py +0 -0
  422. {traigent-0.12.0 → traigent-0.13.0.dev1}/traigent/integrations/model_discovery/openai_discovery.py +0 -0
  423. {traigent-0.12.0 → traigent-0.13.0.dev1}/traigent/integrations/model_discovery/registry.py +0 -0
  424. {traigent-0.12.0 → traigent-0.13.0.dev1}/traigent/integrations/observability/__init__.py +0 -0
  425. {traigent-0.12.0 → traigent-0.13.0.dev1}/traigent/integrations/observability/mlflow.py +0 -0
  426. {traigent-0.12.0 → traigent-0.13.0.dev1}/traigent/integrations/observability/wandb.py +0 -0
  427. {traigent-0.12.0 → traigent-0.13.0.dev1}/traigent/integrations/observability/workflow_traces.py +0 -0
  428. {traigent-0.12.0 → traigent-0.13.0.dev1}/traigent/integrations/plugin_registry.py +0 -0
  429. {traigent-0.12.0 → traigent-0.13.0.dev1}/traigent/integrations/providers.py +0 -0
  430. {traigent-0.12.0 → traigent-0.13.0.dev1}/traigent/integrations/pydantic_ai/__init__.py +0 -0
  431. {traigent-0.12.0 → traigent-0.13.0.dev1}/traigent/integrations/pydantic_ai/_types.py +0 -0
  432. {traigent-0.12.0 → traigent-0.13.0.dev1}/traigent/integrations/pydantic_ai/handler.py +0 -0
  433. {traigent-0.12.0 → traigent-0.13.0.dev1}/traigent/integrations/pydantic_ai/plugin.py +0 -0
  434. {traigent-0.12.0 → traigent-0.13.0.dev1}/traigent/integrations/utils/__init__.py +0 -0
  435. {traigent-0.12.0 → traigent-0.13.0.dev1}/traigent/integrations/utils/discovery.py +0 -0
  436. {traigent-0.12.0 → traigent-0.13.0.dev1}/traigent/integrations/utils/message_coercion.py +0 -0
  437. {traigent-0.12.0 → traigent-0.13.0.dev1}/traigent/integrations/utils/parameter_normalizer.py +0 -0
  438. {traigent-0.12.0 → traigent-0.13.0.dev1}/traigent/integrations/utils/response_wrapper.py +0 -0
  439. {traigent-0.12.0 → traigent-0.13.0.dev1}/traigent/integrations/utils/validation.py +0 -0
  440. {traigent-0.12.0 → traigent-0.13.0.dev1}/traigent/integrations/utils/version_compat.py +0 -0
  441. {traigent-0.12.0 → traigent-0.13.0.dev1}/traigent/integrations/vector_stores/__init__.py +0 -0
  442. {traigent-0.12.0 → traigent-0.13.0.dev1}/traigent/integrations/vector_stores/base.py +0 -0
  443. {traigent-0.12.0 → traigent-0.13.0.dev1}/traigent/integrations/vector_stores/chromadb_plugin.py +0 -0
  444. {traigent-0.12.0 → traigent-0.13.0.dev1}/traigent/integrations/vector_stores/pinecone_plugin.py +0 -0
  445. {traigent-0.12.0 → traigent-0.13.0.dev1}/traigent/integrations/vector_stores/weaviate_plugin.py +0 -0
  446. {traigent-0.12.0 → traigent-0.13.0.dev1}/traigent/integrations/wrappers.py +0 -0
  447. {traigent-0.12.0 → traigent-0.13.0.dev1}/traigent/invokers/__init__.py +0 -0
  448. {traigent-0.12.0 → traigent-0.13.0.dev1}/traigent/invokers/base.py +0 -0
  449. {traigent-0.12.0 → traigent-0.13.0.dev1}/traigent/invokers/batch.py +0 -0
  450. {traigent-0.12.0 → traigent-0.13.0.dev1}/traigent/invokers/local.py +0 -0
  451. {traigent-0.12.0 → traigent-0.13.0.dev1}/traigent/invokers/streaming.py +0 -0
  452. {traigent-0.12.0 → traigent-0.13.0.dev1}/traigent/knobs/adapters.py +0 -0
  453. {traigent-0.12.0 → traigent-0.13.0.dev1}/traigent/knobs/bindings.py +0 -0
  454. {traigent-0.12.0 → traigent-0.13.0.dev1}/traigent/knobs/canonical.py +0 -0
  455. {traigent-0.12.0 → traigent-0.13.0.dev1}/traigent/knobs/cascade.py +0 -0
  456. {traigent-0.12.0 → traigent-0.13.0.dev1}/traigent/knobs/certificates.py +0 -0
  457. {traigent-0.12.0 → traigent-0.13.0.dev1}/traigent/knobs/kinds.py +0 -0
  458. {traigent-0.12.0 → traigent-0.13.0.dev1}/traigent/knobs/resolution.py +0 -0
  459. {traigent-0.12.0 → traigent-0.13.0.dev1}/traigent/knobs/resolver.py +0 -0
  460. {traigent-0.12.0 → traigent-0.13.0.dev1}/traigent/knobs/signals.py +0 -0
  461. {traigent-0.12.0 → traigent-0.13.0.dev1}/traigent/mcp/__init__.py +0 -0
  462. {traigent-0.12.0 → traigent-0.13.0.dev1}/traigent/metrics/__init__.py +0 -0
  463. {traigent-0.12.0 → traigent-0.13.0.dev1}/traigent/metrics/agent_metrics.py +0 -0
  464. {traigent-0.12.0 → traigent-0.13.0.dev1}/traigent/metrics/content_features.py +0 -0
  465. {traigent-0.12.0 → traigent-0.13.0.dev1}/traigent/metrics/deepeval_metrics.py +0 -0
  466. {traigent-0.12.0 → traigent-0.13.0.dev1}/traigent/metrics/ragas_metrics.py +0 -0
  467. {traigent-0.12.0 → traigent-0.13.0.dev1}/traigent/metrics/registry.py +0 -0
  468. {traigent-0.12.0 → traigent-0.13.0.dev1}/traigent/observability/__init__.py +0 -0
  469. {traigent-0.12.0 → traigent-0.13.0.dev1}/traigent/observability/agent_spans.py +0 -0
  470. {traigent-0.12.0 → traigent-0.13.0.dev1}/traigent/observability/client.py +0 -0
  471. {traigent-0.12.0 → traigent-0.13.0.dev1}/traigent/observability/config.py +0 -0
  472. {traigent-0.12.0 → traigent-0.13.0.dev1}/traigent/observability/decorators.py +0 -0
  473. {traigent-0.12.0 → traigent-0.13.0.dev1}/traigent/observability/dtos.py +0 -0
  474. {traigent-0.12.0 → traigent-0.13.0.dev1}/traigent/optimizers/__init__.py +0 -0
  475. {traigent-0.12.0 → traigent-0.13.0.dev1}/traigent/optimizers/base.py +0 -0
  476. {traigent-0.12.0 → traigent-0.13.0.dev1}/traigent/optimizers/batch_optimizers.py +0 -0
  477. {traigent-0.12.0 → traigent-0.13.0.dev1}/traigent/optimizers/bayesian.py +0 -0
  478. {traigent-0.12.0 → traigent-0.13.0.dev1}/traigent/optimizers/benchmarking.py +0 -0
  479. {traigent-0.12.0 → traigent-0.13.0.dev1}/traigent/optimizers/cloud_optimizer.py +0 -0
  480. {traigent-0.12.0 → traigent-0.13.0.dev1}/traigent/optimizers/grid.py +0 -0
  481. {traigent-0.12.0 → traigent-0.13.0.dev1}/traigent/optimizers/interactive_optimizer.py +0 -0
  482. {traigent-0.12.0 → traigent-0.13.0.dev1}/traigent/optimizers/optuna_adapter.py +0 -0
  483. {traigent-0.12.0 → traigent-0.13.0.dev1}/traigent/optimizers/optuna_checkpoint.py +0 -0
  484. {traigent-0.12.0 → traigent-0.13.0.dev1}/traigent/optimizers/optuna_coordinator.py +0 -0
  485. {traigent-0.12.0 → traigent-0.13.0.dev1}/traigent/optimizers/optuna_optimizer.py +0 -0
  486. {traigent-0.12.0 → traigent-0.13.0.dev1}/traigent/optimizers/optuna_utils.py +0 -0
  487. {traigent-0.12.0 → traigent-0.13.0.dev1}/traigent/optimizers/pruners.py +0 -0
  488. {traigent-0.12.0 → traigent-0.13.0.dev1}/traigent/optimizers/random.py +0 -0
  489. {traigent-0.12.0 → traigent-0.13.0.dev1}/traigent/optimizers/registry.py +0 -0
  490. {traigent-0.12.0 → traigent-0.13.0.dev1}/traigent/optimizers/remote.py +0 -0
  491. {traigent-0.12.0 → traigent-0.13.0.dev1}/traigent/optimizers/remote_services.py +0 -0
  492. {traigent-0.12.0 → traigent-0.13.0.dev1}/traigent/optimizers/results.py +0 -0
  493. {traigent-0.12.0 → traigent-0.13.0.dev1}/traigent/optimizers/service_registry.py +0 -0
  494. {traigent-0.12.0 → traigent-0.13.0.dev1}/traigent/plugins/__init__.py +0 -0
  495. {traigent-0.12.0 → traigent-0.13.0.dev1}/traigent/plugins/registry.py +0 -0
  496. {traigent-0.12.0 → traigent-0.13.0.dev1}/traigent/projects/__init__.py +0 -0
  497. {traigent-0.12.0 → traigent-0.13.0.dev1}/traigent/projects/client.py +0 -0
  498. {traigent-0.12.0 → traigent-0.13.0.dev1}/traigent/projects/config.py +0 -0
  499. {traigent-0.12.0 → traigent-0.13.0.dev1}/traigent/projects/dtos.py +0 -0
  500. {traigent-0.12.0 → traigent-0.13.0.dev1}/traigent/prompts/__init__.py +0 -0
  501. {traigent-0.12.0 → traigent-0.13.0.dev1}/traigent/prompts/client.py +0 -0
  502. {traigent-0.12.0 → traigent-0.13.0.dev1}/traigent/prompts/config.py +0 -0
  503. {traigent-0.12.0 → traigent-0.13.0.dev1}/traigent/prompts/dtos.py +0 -0
  504. {traigent-0.12.0 → traigent-0.13.0.dev1}/traigent/providers/__init__.py +0 -0
  505. {traigent-0.12.0 → traigent-0.13.0.dev1}/traigent/providers/validation.py +0 -0
  506. {traigent-0.12.0 → traigent-0.13.0.dev1}/traigent/py.typed +0 -0
  507. {traigent-0.12.0 → traigent-0.13.0.dev1}/traigent/reporting/__init__.py +0 -0
  508. {traigent-0.12.0 → traigent-0.13.0.dev1}/traigent/reporting/example_map.py +0 -0
  509. {traigent-0.12.0 → traigent-0.13.0.dev1}/traigent/security/__init__.py +0 -0
  510. {traigent-0.12.0 → traigent-0.13.0.dev1}/traigent/security/audit.py +0 -0
  511. {traigent-0.12.0 → traigent-0.13.0.dev1}/traigent/security/auth/__init__.py +0 -0
  512. {traigent-0.12.0 → traigent-0.13.0.dev1}/traigent/security/auth/helpers.py +0 -0
  513. {traigent-0.12.0 → traigent-0.13.0.dev1}/traigent/security/auth/mfa.py +0 -0
  514. {traigent-0.12.0 → traigent-0.13.0.dev1}/traigent/security/auth/models.py +0 -0
  515. {traigent-0.12.0 → traigent-0.13.0.dev1}/traigent/security/auth/oidc.py +0 -0
  516. {traigent-0.12.0 → traigent-0.13.0.dev1}/traigent/security/auth/saml.py +0 -0
  517. {traigent-0.12.0 → traigent-0.13.0.dev1}/traigent/security/auth/sms.py +0 -0
  518. {traigent-0.12.0 → traigent-0.13.0.dev1}/traigent/security/auth/totp.py +0 -0
  519. {traigent-0.12.0 → traigent-0.13.0.dev1}/traigent/security/config.py +0 -0
  520. {traigent-0.12.0 → traigent-0.13.0.dev1}/traigent/security/crypto_utils.py +0 -0
  521. {traigent-0.12.0 → traigent-0.13.0.dev1}/traigent/security/deployment.py +0 -0
  522. {traigent-0.12.0 → traigent-0.13.0.dev1}/traigent/security/encryption.py +0 -0
  523. {traigent-0.12.0 → traigent-0.13.0.dev1}/traigent/security/enterprise.py +0 -0
  524. {traigent-0.12.0 → traigent-0.13.0.dev1}/traigent/security/headers.py +0 -0
  525. {traigent-0.12.0 → traigent-0.13.0.dev1}/traigent/security/input_validation.py +0 -0
  526. {traigent-0.12.0 → traigent-0.13.0.dev1}/traigent/security/jwt_validator.py +0 -0
  527. {traigent-0.12.0 → traigent-0.13.0.dev1}/traigent/security/rate_limiter.py +0 -0
  528. {traigent-0.12.0 → traigent-0.13.0.dev1}/traigent/security/redaction.py +0 -0
  529. {traigent-0.12.0 → traigent-0.13.0.dev1}/traigent/security/session_manager.py +0 -0
  530. {traigent-0.12.0 → traigent-0.13.0.dev1}/traigent/security/tenant.py +0 -0
  531. {traigent-0.12.0 → traigent-0.13.0.dev1}/traigent/skills/traigent-configuration-space/references/constraints.md +0 -0
  532. {traigent-0.12.0 → traigent-0.13.0.dev1}/traigent/skills/traigent-configuration-space/references/parameter-types.md +0 -0
  533. {traigent-0.12.0 → traigent-0.13.0.dev1}/traigent/skills/traigent-decorator-setup/references/execution-modes.md +0 -0
  534. {traigent-0.12.0 → traigent-0.13.0.dev1}/traigent/skills/traigent-decorator-setup/references/injection-modes.md +0 -0
  535. {traigent-0.12.0 → traigent-0.13.0.dev1}/traigent/skills/traigent-run-optimization/references/algorithms.md +0 -0
  536. {traigent-0.12.0 → traigent-0.13.0.dev1}/traigent/skills/traigent-run-optimization/references/parallel-config.md +0 -0
  537. {traigent-0.12.0 → traigent-0.13.0.dev1}/traigent/storage/__init__.py +0 -0
  538. {traigent-0.12.0 → traigent-0.13.0.dev1}/traigent/telemetry/__init__.py +0 -0
  539. {traigent-0.12.0 → traigent-0.13.0.dev1}/traigent/telemetry/optuna_metrics.py +0 -0
  540. {traigent-0.12.0 → traigent-0.13.0.dev1}/traigent/traigent_client.py +0 -0
  541. {traigent-0.12.0 → traigent-0.13.0.dev1}/traigent/traigent_integration.py +0 -0
  542. {traigent-0.12.0 → traigent-0.13.0.dev1}/traigent/tuned_variables/__init__.py +0 -0
  543. {traigent-0.12.0 → traigent-0.13.0.dev1}/traigent/tuned_variables/dataflow_strategy.py +0 -0
  544. {traigent-0.12.0 → traigent-0.13.0.dev1}/traigent/tuned_variables/detection_strategies.py +0 -0
  545. {traigent-0.12.0 → traigent-0.13.0.dev1}/traigent/tuned_variables/detection_types.py +0 -0
  546. {traigent-0.12.0 → traigent-0.13.0.dev1}/traigent/tuned_variables/detector.py +0 -0
  547. {traigent-0.12.0 → traigent-0.13.0.dev1}/traigent/tuned_variables/discovery.py +0 -0
  548. {traigent-0.12.0 → traigent-0.13.0.dev1}/traigent/tuned_variables/observation.py +0 -0
  549. {traigent-0.12.0 → traigent-0.13.0.dev1}/traigent/tuned_variables/py.typed +0 -0
  550. {traigent-0.12.0 → traigent-0.13.0.dev1}/traigent/tvl/__init__.py +0 -0
  551. {traigent-0.12.0 → traigent-0.13.0.dev1}/traigent/tvl/__main__.py +0 -0
  552. {traigent-0.12.0 → traigent-0.13.0.dev1}/traigent/tvl/models.py +0 -0
  553. {traigent-0.12.0 → traigent-0.13.0.dev1}/traigent/tvl/objectives.py +0 -0
  554. {traigent-0.12.0 → traigent-0.13.0.dev1}/traigent/tvl/options.py +0 -0
  555. {traigent-0.12.0 → traigent-0.13.0.dev1}/traigent/tvl/promotion_gate.py +0 -0
  556. {traigent-0.12.0 → traigent-0.13.0.dev1}/traigent/tvl/registry.py +0 -0
  557. {traigent-0.12.0 → traigent-0.13.0.dev1}/traigent/tvl/spec_loader.py +0 -0
  558. {traigent-0.12.0 → traigent-0.13.0.dev1}/traigent/tvl/spec_validator.py +0 -0
  559. {traigent-0.12.0 → traigent-0.13.0.dev1}/traigent/tvl/statistics.py +0 -0
  560. {traigent-0.12.0 → traigent-0.13.0.dev1}/traigent/utils/__init__.py +0 -0
  561. {traigent-0.12.0 → traigent-0.13.0.dev1}/traigent/utils/batch_optimizer_utils.py +0 -0
  562. {traigent-0.12.0 → traigent-0.13.0.dev1}/traigent/utils/batch_processing.py +0 -0
  563. {traigent-0.12.0 → traigent-0.13.0.dev1}/traigent/utils/example_id.py +0 -0
  564. {traigent-0.12.0 → traigent-0.13.0.dev1}/traigent/utils/exceptions.py +0 -0
  565. {traigent-0.12.0 → traigent-0.13.0.dev1}/traigent/utils/file_versioning.py +0 -0
  566. {traigent-0.12.0 → traigent-0.13.0.dev1}/traigent/utils/function_identity.py +0 -0
  567. {traigent-0.12.0 → traigent-0.13.0.dev1}/traigent/utils/hashing.py +0 -0
  568. {traigent-0.12.0 → traigent-0.13.0.dev1}/traigent/utils/importance.py +0 -0
  569. {traigent-0.12.0 → traigent-0.13.0.dev1}/traigent/utils/incentives.py +0 -0
  570. {traigent-0.12.0 → traigent-0.13.0.dev1}/traigent/utils/insights.py +0 -0
  571. {traigent-0.12.0 → traigent-0.13.0.dev1}/traigent/utils/langchain_interceptor.py +0 -0
  572. {traigent-0.12.0 → traigent-0.13.0.dev1}/traigent/utils/llm_response_parsing.py +0 -0
  573. {traigent-0.12.0 → traigent-0.13.0.dev1}/traigent/utils/multi_objective.py +0 -0
  574. {traigent-0.12.0 → traigent-0.13.0.dev1}/traigent/utils/numpy_compat.py +0 -0
  575. {traigent-0.12.0 → traigent-0.13.0.dev1}/traigent/utils/objectives.py +0 -0
  576. {traigent-0.12.0 → traigent-0.13.0.dev1}/traigent/utils/optimization_analyzer.py +0 -0
  577. {traigent-0.12.0 → traigent-0.13.0.dev1}/traigent/utils/optimization_logger.py +0 -0
  578. {traigent-0.12.0 → traigent-0.13.0.dev1}/traigent/utils/persistence.py +0 -0
  579. {traigent-0.12.0 → traigent-0.13.0.dev1}/traigent/utils/reproducibility.py +0 -0
  580. {traigent-0.12.0 → traigent-0.13.0.dev1}/traigent/utils/retry.py +0 -0
  581. {traigent-0.12.0 → traigent-0.13.0.dev1}/traigent/utils/secure_path.py +0 -0
  582. {traigent-0.12.0 → traigent-0.13.0.dev1}/traigent/utils/url_security.py +0 -0
  583. {traigent-0.12.0 → traigent-0.13.0.dev1}/traigent/utils/user_prompts.py +0 -0
  584. {traigent-0.12.0 → traigent-0.13.0.dev1}/traigent/utils/validation.py +0 -0
  585. {traigent-0.12.0 → traigent-0.13.0.dev1}/traigent/visualization/__init__.py +0 -0
  586. {traigent-0.12.0 → traigent-0.13.0.dev1}/traigent/visualization/plots.py +0 -0
  587. {traigent-0.12.0 → traigent-0.13.0.dev1}/traigent/wrapper/__init__.py +0 -0
  588. {traigent-0.12.0 → traigent-0.13.0.dev1}/traigent/wrapper/errors.py +0 -0
  589. {traigent-0.12.0 → traigent-0.13.0.dev1}/traigent/wrapper/server.py +0 -0
  590. {traigent-0.12.0 → traigent-0.13.0.dev1}/traigent/wrapper/service.py +0 -0
  591. {traigent-0.12.0 → traigent-0.13.0.dev1}/traigent.egg-info/dependency_links.txt +0 -0
  592. {traigent-0.12.0 → traigent-0.13.0.dev1}/traigent.egg-info/entry_points.txt +0 -0
  593. {traigent-0.12.0 → traigent-0.13.0.dev1}/traigent.egg-info/top_level.txt +0 -0
  594. {traigent-0.12.0 → traigent-0.13.0.dev1}/traigent_validation/__init__.py +0 -0
  595. {traigent-0.12.0 → traigent-0.13.0.dev1}/traigent_validation/base.py +0 -0
  596. {traigent-0.12.0 → traigent-0.13.0.dev1}/traigent_validation/plugins.py +0 -0
  597. {traigent-0.12.0 → traigent-0.13.0.dev1}/traigent_validation/py.typed +0 -0
  598. {traigent-0.12.0 → traigent-0.13.0.dev1}/traigent_validation/validators.py +0 -0
@@ -6,6 +6,33 @@ Format based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/).
6
6
 
7
7
  ## [Unreleased]
8
8
 
9
+ ### Added
10
+ - **Composite telemetry rides the measures channel.** `composite_measures(run)`
11
+ (`traigent.knobs.telemetry`, re-exported from `traigent.knobs`) flattens a composite
12
+ run's RFC 0002 §3.10 content-free telemetry — `escalation_rate`, `stage_selected`, and
13
+ the per-gate `gate_margin_pass_rate` map — into flat, identifier-safe, numeric-only keys
14
+ (e.g. `composite_escalation_rate`, `composite_stage_selected`,
15
+ `composite_gate_0_margin_pass_rate`). Merge it into the metrics your decorated function
16
+ returns and the `composite_*` keys ride the existing per-trial measures wire channel as
17
+ ordinary numeric metrics — no new wire surface. Keys are capped with headroom below the
18
+ backend `MeasuresDict` 50-key ceiling (truncated deterministically with a logged warning,
19
+ never raised mid-trial), and the output is content-free by construction (the adapter reads
20
+ `run.measures` only, never `run.output`). New docs page
21
+ `docs/concepts/composite-knobs.md` covers the pattern catalog, executing a composite,
22
+ certified selection with a `binary_cascade`, and telemetry-to-measures; runnable offline
23
+ example at `examples/advanced/composite-knobs/composite_telemetry.py`.
24
+
25
+ ### Changed
26
+ - **Unpriced models now block instead of warn-and-continue.** When a real run includes
27
+ models with no known pricing, the SDK now requires explicit confirmation: interactive
28
+ terminals get a blocking prompt; non-interactive runs fail closed before any trial.
29
+ Pre-approve with `cost_approved=True` (must be a real boolean) or
30
+ `TRAIGENT_COST_APPROVED=true` (exact value), or supply custom pricing via
31
+ `TRAIGENT_CUSTOM_MODEL_PRICING_JSON`/`_FILE`. `TRAIGENT_STRICT_COST_ACCOUNTING=true`
32
+ still hard-fails without prompting; mock runs are unaffected.
33
+
34
+ ## [0.12.0] - 2026-06-06
35
+
9
36
  ### Added
10
37
  - **Content-logging opt-out for optimization logs** (#1069). `TRAIGENT_LOG_EXAMPLE_CONTENT=false`
11
38
  (or `OptimizationLogger(..., log_example_content=False)`) keeps per-trial ids and metrics on
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: traigent
3
- Version: 0.12.0
3
+ Version: 0.13.0.dev1
4
4
  Summary: Enterprise-grade LLM optimization platform with advanced analytics and AI-powered insights
5
5
  Author-email: Traigent Team <opensource@traigent.ai>
6
6
  License-Expression: AGPL-3.0-only OR LicenseRef-Traigent-Commercial
@@ -54,7 +54,6 @@ Requires-Dist: langchain-core>=1.2.28; extra == "integrations"
54
54
  Requires-Dist: langchain-community>=0.3.27; extra == "integrations"
55
55
  Requires-Dist: langchain-anthropic>=0.2.0; extra == "integrations"
56
56
  Requires-Dist: langchain-openai>=1.1.14; extra == "integrations"
57
- Requires-Dist: langchain-chroma>=0.2.5; extra == "integrations"
58
57
  Requires-Dist: langchain-text-splitters>=0.3.8; extra == "integrations"
59
58
  Requires-Dist: langchain-google-genai>=2.1.4; extra == "integrations"
60
59
  Requires-Dist: openai>=2.0.0; extra == "integrations"
@@ -69,6 +68,8 @@ Requires-Dist: python-dotenv>=1.2.2; extra == "integrations"
69
68
  Requires-Dist: boto3>=1.28.0; extra == "integrations"
70
69
  Requires-Dist: botocore>=1.31.0; extra == "integrations"
71
70
  Requires-Dist: faiss-cpu>=1.7.0; sys_platform != "win32" and extra == "integrations"
71
+ Provides-Extra: chroma
72
+ Requires-Dist: langchain-chroma>=0.2.5; extra == "chroma"
72
73
  Provides-Extra: dspy
73
74
  Requires-Dist: dspy-ai>=2.5.0; extra == "dspy"
74
75
  Provides-Extra: pydanticai
@@ -126,7 +127,7 @@ Requires-Dist: bandit>=1.7.0; extra == "dev"
126
127
  Requires-Dist: hypothesis>=6.100.0; extra == "dev"
127
128
  Provides-Extra: docs
128
129
  Requires-Dist: mkdocs>=1.4.0; extra == "docs"
129
- Requires-Dist: mkdocs-material>=9.0.0; extra == "docs"
130
+ Requires-Dist: mkdocs-material>=9.5.0; extra == "docs"
130
131
  Requires-Dist: mkdocstrings[python]>=0.22.0; extra == "docs"
131
132
  Provides-Extra: ml
132
133
  Requires-Dist: traigent[analytics,bayesian]; extra == "ml"
@@ -316,7 +317,7 @@ Works with any LLM provider — [OpenAI](https://platform.openai.com/docs), [Ant
316
317
 
317
318
  ## 🚀 Walkthrough — 8 runnable examples
318
319
 
319
- The walkthrough examples use local mock mode through the quickstart/testing helpers — no API keys needed.
320
+ The walkthrough examples use local mock mode through the quickstart/testing helpers with cost approval pre-set for dry runs — no provider API keys needed when calls go through LiteLLM or LangChain.
320
321
 
321
322
  <details>
322
323
  <summary>Show all 8 walkthrough steps</summary>
@@ -441,8 +442,11 @@ pip install -e ".[recommended]"
441
442
  Cost estimates, budgets, limits, alerts, and thresholds are best-effort software controls, not
442
443
  provider-side billing guarantees. Actual billing is determined by your LLM/cloud providers, and you
443
444
  remain responsible for provider charges. The legacy `TRAIGENT_MOCK_LLM=true` env var is supported
444
- only for backwards-compatible local scripts and is disabled when `ENVIRONMENT=production`. See
445
- [DISCLAIMER.md](DISCLAIMER.md) for details.
445
+ only for backwards-compatible local scripts and is disabled when `ENVIRONMENT=production`.
446
+ Mock mode skips the optimized-function pricing preflight for supported calls made through
447
+ Traigent's integration/interceptor path; direct provider calls made outside that path should
448
+ be stubbed explicitly for a guaranteed $0 rehearsal. See [DISCLAIMER.md](DISCLAIMER.md)
449
+ for details.
446
450
 
447
451
  ### Evaluation
448
452
 
@@ -169,7 +169,7 @@ Works with any LLM provider — [OpenAI](https://platform.openai.com/docs), [Ant
169
169
 
170
170
  ## 🚀 Walkthrough — 8 runnable examples
171
171
 
172
- The walkthrough examples use local mock mode through the quickstart/testing helpers — no API keys needed.
172
+ The walkthrough examples use local mock mode through the quickstart/testing helpers with cost approval pre-set for dry runs — no provider API keys needed when calls go through LiteLLM or LangChain.
173
173
 
174
174
  <details>
175
175
  <summary>Show all 8 walkthrough steps</summary>
@@ -294,8 +294,11 @@ pip install -e ".[recommended]"
294
294
  Cost estimates, budgets, limits, alerts, and thresholds are best-effort software controls, not
295
295
  provider-side billing guarantees. Actual billing is determined by your LLM/cloud providers, and you
296
296
  remain responsible for provider charges. The legacy `TRAIGENT_MOCK_LLM=true` env var is supported
297
- only for backwards-compatible local scripts and is disabled when `ENVIRONMENT=production`. See
298
- [DISCLAIMER.md](DISCLAIMER.md) for details.
297
+ only for backwards-compatible local scripts and is disabled when `ENVIRONMENT=production`.
298
+ Mock mode skips the optimized-function pricing preflight for supported calls made through
299
+ Traigent's integration/interceptor path; direct provider calls made outside that path should
300
+ be stubbed explicitly for a guaranteed $0 rehearsal. See [DISCLAIMER.md](DISCLAIMER.md)
301
+ for details.
299
302
 
300
303
  ### Evaluation
301
304
 
@@ -6,6 +6,15 @@
6
6
 
7
7
  ## 🚀 Quick Start
8
8
 
9
+ Current release: Traigent SDK 0.12.0. Install with
10
+ `pip install "traigent[recommended]"`, then run `traigent onboard`,
11
+ `traigent auth device-login`, `traigent quickstart`,
12
+ `traigent first-prompt --agent claude|cursor|codex`, `traigent mcp serve`, or
13
+ `traigent recommend` as needed.
14
+
15
+ License: Traigent SDK is dual-licensed under
16
+ `AGPL-3.0-only OR LicenseRef-Traigent-Commercial`.
17
+
9
18
  ```python
10
19
  import litellm
11
20
  import traigent
@@ -82,11 +91,8 @@ Traigent is a **zero-code optimization platform** that automatically finds the b
82
91
 
83
92
  ## 🌐 Examples Navigator
84
93
 
85
- - Open: `examples/index.html` (repo copy)
86
- - Serve locally (avoids file:// fetch restrictions):
87
- - `python -m http.server 8000`
88
- - Visit `http://localhost:8000/examples/`
89
- - Run icon: Each code block has a play button that copies a ready-to-run mock-mode command.
94
+ Use [Examples Guide](examples/README.md), [Start Here](examples/START_HERE.md),
95
+ and [Quick Reference](examples/QUICK_REFERENCE.md) for runnable examples.
90
96
 
91
97
  ## 🧪 Example Guides
92
98
 
@@ -100,7 +106,7 @@ Traigent is a **zero-code optimization platform** that automatically finds the b
100
106
 
101
107
  1. **[Install Traigent](getting-started/installation.md)** - Get set up in minutes
102
108
  2. **[Follow the Getting Started Guide](getting-started/GETTING_STARTED.md)** - Your first optimization
103
- 3. **Open the Examples** `examples/index.html` and browse the gallery
109
+ 3. **Use the Example Guides** - Start with [Examples Guide](examples/README.md)
104
110
  4. **[Explore User Guides](user-guide/)** - Learn advanced features
105
111
  5. **[Check API Reference](api-reference/)** - Detailed technical documentation
106
112
 
@@ -0,0 +1,35 @@
1
+ # AI Agent Skill
2
+
3
+ Traigent publishes [Agent Skills](https://agentskills.io/) — sets of instructions that teach your AI coding agent how to set up and run Traigent optimizations.
4
+
5
+ When you ask your agent to "optimize this function with Traigent," the skill guides it through a **dry-run-first workflow**: validate the documented Traigent path at zero provider cost in mock mode, then switch to real execution only when you say so. If your code makes provider calls outside Traigent's optimized/evaluated path, stub those calls explicitly before treating the rehearsal as guaranteed $0.
6
+
7
+ ## Compatible Agents
8
+
9
+ Works with Claude Code, Cursor, GitHub Copilot, OpenAI Codex, Gemini CLI, Windsurf, and [30+ more](https://agentskills.io/).
10
+
11
+ ## Install
12
+
13
+ The canonical SDK skill source is [`Traigent/traigent-skills`](https://github.com/Traigent/traigent-skills). SDK checkouts do not vendor `.agents/` or `.claude/skills/` copies; install from the remote repo so your local agent cache can be updated independently.
14
+
15
+ **Install all SDK skills:**
16
+ ```bash
17
+ npx skills add Traigent/traigent-skills --skill '*'
18
+ ```
19
+
20
+ **Install only the Python entry points:**
21
+ ```bash
22
+ npx skills add Traigent/traigent-skills --skill traigent --skill traigent-quickstart
23
+ ```
24
+
25
+ ## What the Skill Does
26
+
27
+ 1. Sets up the `@traigent.optimize()` decorator
28
+ 2. Validates your dataset and config space
29
+ 3. Runs a mock optimization (zero cost) to verify the full pipeline
30
+ 4. Reports results and estimates real costs
31
+ 5. Waits for your go-ahead before spending real tokens
32
+
33
+ ## View the Skills
34
+
35
+ [Read the canonical skill instructions →](https://github.com/Traigent/traigent-skills/tree/main/skills/traigent)
@@ -1,6 +1,6 @@
1
1
  # Traigent SDK API Reference
2
2
 
3
- Authoritative reference for Traigent SDK **v0.10.0 (Beta)**.
3
+ Authoritative reference for Traigent SDK **0.12.0**.
4
4
 
5
5
  ## Quick Navigation
6
6
 
@@ -22,7 +22,8 @@ def optimize(
22
22
  objectives: list[str] | ObjectiveSchema | None = None,
23
23
  configuration_space: dict[str, Any] | ConfigSpace | None = None,
24
24
  default_config: dict[str, Any] | None = None,
25
- constraints: list[Constraint | Callable[..., Any]] | None = None,
25
+ constraints: list[Constraint | BoolExpr | Callable[..., Any]] | None = None,
26
+ safety_constraints: list[SafetyConstraint | CompoundSafetyConstraint] | None = None,
26
27
  # TVL integration
27
28
  tvl_spec: str | Path | None = None,
28
29
  tvl_environment: str | None = None,
@@ -30,16 +31,40 @@ def optimize(
30
31
  # Grouped options (preferred)
31
32
  evaluation: EvaluationOptions | dict[str, Any] | None = None,
32
33
  injection: InjectionOptions | dict[str, Any] | None = None,
34
+ effectuation: bool = False,
33
35
  execution: ExecutionOptions | dict[str, Any] | None = None,
34
36
  mock: MockModeOptions | dict[str, Any] | None = None,
37
+ strategy: str | None = None,
38
+ strategy_params: Mapping[str, Any] | None = None,
39
+ # Multi-agent configuration
40
+ agents: dict[str, AgentDefinition] | None = None,
41
+ agent_prefixes: list[str] | None = None,
42
+ agent_measures: dict[str, list[str]] | None = None,
43
+ global_measures: list[str] | None = None,
44
+ # Config persistence
45
+ auto_load_best: bool = False,
46
+ load_from: str | None = None,
47
+ config_id: str | None = None,
48
+ best_config_source: str = "off",
49
+ best_config_strict: bool = False,
50
+ best_config_cache_dir: str | None = None,
51
+ best_config_cache_ttl_seconds: int = 24 * 60 * 60,
52
+ best_config_stale_ok_ttl_seconds: int | None = None,
53
+ enable_auto_load_dev_logs: bool | None = None,
54
+ # Guided generation
55
+ prompt_rewrite: dict[str, Any] | None = None,
56
+ grow_dataset: dict[str, Any] | None = None,
35
57
  # Legacy compatibility
36
58
  legacy: LegacyOptimizeArgs | dict[str, Any] | None = None,
37
59
  **runtime_overrides: Any,
38
- ) -> OptimizedFunction
60
+ ) -> Callable[[Callable[..., Any]], Any]
39
61
  ```
40
62
 
41
63
  > **New in 0.8.0** – The decorator now uses keyword-only arguments with grouped option bundles. Legacy arguments are supported via the `legacy` parameter or directly in `**runtime_overrides`. Conflicting values between a bundle and a direct keyword raise `TypeError`.
42
64
 
65
+ `optimize(...)` is a decorator factory. Applying the returned decorator to a
66
+ function returns Traigent's optimized wrapper.
67
+
43
68
  **Core Parameters**
44
69
 
45
70
  | Parameter | Type | Default | Description |
@@ -48,6 +73,13 @@ def optimize(
48
73
  | `configuration_space` | `dict[str, Any] \| ConfigSpace \| None` | `None` | Search space describing tunable parameters. Lists denote discrete choices; `(min, max)` tuples denote ranges. `Range`, `IntRange`, `LogRange`, `Choices`, and `ConfigSpace` are supported directly. Required for optimization. |
49
74
  | `default_config` | `dict[str, Any] \| None` | `None` | Baseline configuration applied before the first trial. Missing keys remain unset unless you provide defaults via `default_config` or parameter defaults (for example `Range(..., default=...)`). |
50
75
  | `constraints` | `list[Constraint \| Callable[..., Any]] \| None` | `None` | Hard constraints evaluated before running a trial. Accepts SE-friendly `Constraint` objects and/or callables that take `(config, metrics=None)` and return `True/False`. |
76
+ | `safety_constraints` | `list[SafetyConstraint \| CompoundSafetyConstraint] \| None` | `None` | Safety metric gates evaluated as part of optimization. |
77
+ | `strategy` | `str \| None` | `None` | Optional strategy preset name. 0.12.0 presets are advisory selection rules over completed trials. |
78
+ | `strategy_params` | `Mapping[str, Any] \| None` | `None` | Parameters for the selected strategy preset. |
79
+ | `effectuation` | `bool` | `False` | Enables effectuation tracking for tuned-variable observations. |
80
+ | `agents`, `agent_prefixes`, `agent_measures`, `global_measures` | See signature | `None` | Multi-agent measurement configuration. |
81
+ | Config persistence fields | See signature | See signature | `auto_load_best`, `load_from`, `config_id`, `best_config_*`, and cache TTL controls for persisted best configurations. |
82
+ | Guided-generation fields | `dict[str, Any] \| None` | `None` | `prompt_rewrite` and `grow_dataset` configure guided generation; run it with `.optimize_with_guidance(provider)`. |
51
83
 
52
84
  **SE-friendly tuned variables (first-class)**
53
85
 
@@ -87,17 +119,31 @@ def my_agent(question: str) -> str:
87
119
  | `execution` | `ExecutionOptions \| dict \| None` | Bundle for execution settings including `execution_mode`, `local_storage_path`, `parallel_config`, `privacy_enabled`, and `max_total_examples`. |
88
120
  | `mock` | `MockModeOptions \| dict \| None` | **Deprecated — all fields inert.** Retained on the schema for backwards compatibility (config round-trip). Mock mode is enabled by calling `traigent.testing.enable_mock_mode_for_quickstart()` in local tutorial or test code, not via this object. The legacy `TRAIGENT_MOCK_LLM=true` env var remains available outside production for shell fixtures and backwards compatibility but emits `DeprecationWarning` when users set it directly. See issue #874. |
89
121
 
90
- **ExecutionOptions Fields** (open-source builds run in `edge_analytics` only; other modes are roadmap-compatible but not currently provisioned)
122
+ **ExecutionOptions Fields**
91
123
 
92
124
  | Field | Type | Default | Description |
93
125
  | --- | --- | --- | --- |
94
- | `execution_mode` | `str` | `"edge_analytics"` | `"edge_analytics"` runs locally. `"hybrid"` runs trials locally and submits sessions/trial metrics to the backend for portal tracking. `"cloud"` is reserved for future remote execution and fails closed with guidance to use `"hybrid"`. `"privacy"` is accepted as a legacy alias for `"hybrid"` and sets `privacy_enabled=True`. |
126
+ | `execution_mode` | `str` | `"edge_analytics"` | `"edge_analytics"` runs locally. `"hybrid"` runs trials locally and submits sessions/trial metrics to the backend for portal tracking. `"hybrid_api"` delegates trial execution to an external service implementing the Traigent Hybrid API contract. `"privacy"` is accepted as a legacy alias for `"hybrid"` and sets `privacy_enabled=True`. `"cloud"` is reserved for future remote execution and fails closed with guidance to use `"hybrid"`. |
95
127
  | `local_storage_path` | `str \| None` | `None` | Custom directory for persisted results. Falls back to `TRAIGENT_RESULTS_FOLDER` or `~/.traigent/`. |
96
128
  | `minimal_logging` | `bool` | `True` | Suppresses verbose logs in privacy-sensitive modes. |
97
129
  | `parallel_config` | `ParallelConfig \| dict \| None` | `None` | Unified concurrency configuration. |
98
130
  | `privacy_enabled` | `bool \| None` | `None` | Redacts prompts/responses from telemetry and logs. |
99
131
  | `max_total_examples` | `int \| None` | `None` | Global sample budget across all trials (budget guardrail). |
100
132
  | `samples_include_pruned` | `bool` | `True` | Whether pruned trials count toward the sample budget. |
133
+ | `reps_per_trial` | `int` | `1` | Number of repetitions per configuration. OSS SDK accepts only `1`; other values raise `pydantic.ValidationError` and require Traigent Enterprise. |
134
+ | `reps_aggregation` | `str` | `"mean"` | Repetition aggregation method. OSS SDK accepts only `"mean"`; other values raise `pydantic.ValidationError` and require Traigent Enterprise. |
135
+ | `hybrid_api_endpoint` | `str \| None` | `None` | External-agent Hybrid API base endpoint. |
136
+ | `tunable_id` | `str \| None` | `None` | Optional Hybrid API tunable identifier. |
137
+ | `hybrid_api_transport` | `Any \| None` | `None` | Custom Hybrid API transport object. |
138
+ | `hybrid_api_transport_type` | `str` | `"auto"` | Hybrid API transport type selector. |
139
+ | `hybrid_api_batch_size` | `int` | `1` | Number of examples per Hybrid API execute request. |
140
+ | `hybrid_api_batch_parallelism` | `int` | `1` | Concurrent Hybrid API batch execution limit. |
141
+ | `hybrid_api_keep_alive` | `bool` | `True` | Reuse Hybrid API HTTP connections. |
142
+ | `hybrid_api_heartbeat_interval` | `float` | `30.0` | Heartbeat interval for Hybrid API transports. |
143
+ | `hybrid_api_timeout` | `float \| None` | `None` | Hybrid API request timeout override. |
144
+ | `hybrid_api_auth_header` | `str \| None` | `None` | Auth token/header value sent as both `Authorization` and `x-api-key`. |
145
+ | `hybrid_api_auto_discover_tvars` | `bool` | `False` | Auto-discover Hybrid API tuned variables when supported. |
146
+ | `cloud_fallback_policy` | `str \| None` | `None` | Legacy/future cloud fallback policy. It does not enable `execution_mode="cloud"` in 0.12.0. |
101
147
 
102
148
  **Legacy Compatibility**
103
149
 
@@ -171,6 +217,9 @@ async def optimize(
171
217
  tvl_spec: str | Path | None = None,
172
218
  tvl_environment: str | None = None,
173
219
  tvl: TVLOptions | dict[str, Any] | None = None,
220
+ strategy: str | None = None,
221
+ strategy_params: Mapping[str, Any] | None = None,
222
+ progress_bar: bool | None = None,
174
223
  **algorithm_kwargs: Any,
175
224
  ) -> OptimizationResult
176
225
  ```
@@ -190,6 +239,9 @@ async def optimize(
190
239
  | `tvl_spec` | `str \| Path \| None` | `None` | Load TVL spec at runtime. |
191
240
  | `tvl_environment` | `str \| None` | `None` | Environment overlay from the TVL spec. |
192
241
  | `tvl` | `TVLOptions \| dict \| None` | `None` | Structured TVL options for runtime overrides. |
242
+ | `strategy` | `str \| None` | `None` | Runtime strategy preset override. Preset selections are advisory only. |
243
+ | `strategy_params` | `Mapping[str, Any] \| None` | `None` | Runtime parameters for the strategy preset. |
244
+ | `progress_bar` | `bool \| None` | `None` | Runtime progress-bar override. |
193
245
  | `**algorithm_kwargs` | `Any` | – | Extra tuning knobs. See recognised keys below. |
194
246
 
195
247
  **Recognised `algorithm_kwargs`**
@@ -201,7 +253,7 @@ async def optimize(
201
253
  | `max_total_examples` | Global sample budget across all trials. |
202
254
  | `cache_policy` | One of `"allow_repeats"` (default) or other cache policies. |
203
255
  | `cost_limit` | Maximum USD spending for this run. |
204
- | `cost_approved` | Skip cost approval prompt. |
256
+ | `cost_approved` | Skip cost approval prompt only when passed as real Python `True`; strings such as `"true"` are ignored. Env approval requires exact `TRAIGENT_COST_APPROVED=true`; `1`/`yes` do not approve. |
205
257
  | `metric_limit` / `metric_name` / `metric_include_pruned` | Configure soft cumulative-metric early stopping. |
206
258
  | `budget_limit` / `budget_metric` / `budget_include_pruned` | Deprecated aliases for metric-limit controls. Use `cost_limit` for hard USD spend control. |
207
259
  | `plateau_window` / `plateau_epsilon` | Configure plateau detection stop conditions. |
@@ -229,13 +281,15 @@ def get_best_config() -> dict[str, Any] | None
229
281
  ```
230
282
 
231
283
  #### `.current_config`
232
- **Get/set current configuration**
284
+ **Get current configuration**
233
285
 
234
286
  ```python
235
287
  @property
236
288
  def current_config() -> dict[str, Any]
237
289
  ```
238
290
 
291
+ `current_config` is read-only. Change the active override with `.set_config()`.
292
+
239
293
  #### `.set_config()`
240
294
  **Set current configuration**
241
295
 
@@ -380,6 +434,64 @@ def override_config(
380
434
  def get_available_strategies() -> dict[str, Any]
381
435
  ```
382
436
 
437
+ ### Recommendation Catalog and Strategy Presets
438
+
439
+ 0.12.0 exposes local catalog helpers and advisory selection presets through
440
+ `traigent.api`.
441
+
442
+ ```python
443
+ def list_recommendation_agent_types() -> tuple[str, ...]
444
+
445
+ def recommend_configuration_space(
446
+ agent_type: str,
447
+ *,
448
+ min_impact: str | None = None,
449
+ min_confidence: str | None = None,
450
+ ) -> dict[str, Any]
451
+ ```
452
+
453
+ `recommend_configuration_space()` returns catalog metadata for supported
454
+ agent/task types: knob names, suggested ranges, impact estimates, evidence
455
+ notes, effectuation status, and apply guidance. It does not call a remote
456
+ service.
457
+
458
+ ```python
459
+ VALID_PRESET_NAMES: tuple[str, ...] = (
460
+ "max_accuracy_then_cheapest_within_epsilon",
461
+ "quality_floor_min_cost",
462
+ "pareto_frontier",
463
+ )
464
+
465
+ def normalize_strategy_preset(
466
+ preset_name: str | None,
467
+ params: Mapping[str, Any] | None = None,
468
+ ) -> NormalizedStrategyPreset
469
+
470
+ def select_strategy_preset(
471
+ preset: NormalizedStrategyPreset,
472
+ trials: Iterable[TrialResult],
473
+ ) -> PresetSelection
474
+ ```
475
+
476
+ Strategy presets are advisory selection rules over completed trials. They are
477
+ task-local heuristics and do not provide a statistical certificate.
478
+
479
+ ### CLI surfaces in 0.12.0
480
+
481
+ The local CLI includes these onboarding and recommendation entry points:
482
+
483
+ - `traigent onboard`
484
+ - `traigent auth device-login`
485
+ - `traigent first-prompt --agent claude|cursor|codex`
486
+ - `traigent quickstart`
487
+ - `traigent mcp serve`
488
+ - `traigent recommend`
489
+
490
+ The local MCP server in this worktree exposes these tools: `auth_status`,
491
+ `list_recommendation_agent_types`, `recommend_configuration_space`,
492
+ `detect_tvars`, `scaffold_eval`, `validate_dataset`, `estimate_cost`,
493
+ `run_optimization`, `get_results`, and `export_evidence`.
494
+
383
495
  ### `traigent.get_optimization_insights()`
384
496
 
385
497
  ```python
@@ -398,7 +510,7 @@ def get_optimization_insights(
398
510
  class OptimizationResult:
399
511
  trials: list[TrialResult]
400
512
  best_config: dict[str, Any]
401
- best_score: float
513
+ best_score: float | None
402
514
  optimization_id: str
403
515
  duration: float
404
516
  convergence_info: dict[str, Any]
@@ -411,11 +523,16 @@ class OptimizationResult:
411
523
  total_cost: float | None = None
412
524
  total_tokens: int | None = None
413
525
  metrics: dict[str, Any] = field(default_factory=dict)
526
+ preset_selection: PresetSelection | None = None
527
+ stop_reason: StopReason | None = None
528
+ experiment_id: str | None = None
529
+ cloud_url: str | None = None
530
+ run_label: str | None = None
414
531
  ```
415
532
 
416
533
  **Properties:**
417
534
  - `total_trials`: Total number of trials executed
418
- - `successful_trials`: Number of trials that completed successfully
535
+ - `successful_trials`: List of trials that completed successfully
419
536
  - `success_rate`: Ratio of successful trials to total trials
420
537
 
421
538
  ### TrialResult
@@ -431,6 +548,7 @@ class TrialResult:
431
548
  timestamp: datetime
432
549
  error_message: str | None = None
433
550
  metadata: dict[str, Any] = field(default_factory=dict)
551
+ error: TrialError | None = None
434
552
  ```
435
553
 
436
554
  **Properties:**
@@ -443,10 +561,12 @@ class TrialResult:
443
561
 
444
562
  ```python
445
563
  class TrialStatus(Enum):
564
+ NOT_STARTED = "not_started"
446
565
  PENDING = "pending"
447
566
  RUNNING = "running"
448
567
  COMPLETED = "completed"
449
568
  FAILED = "failed"
569
+ CANCELLED = "cancelled"
450
570
  PRUNED = "pruned"
451
571
  ```
452
572
 
@@ -454,6 +574,7 @@ class TrialStatus(Enum):
454
574
 
455
575
  ```python
456
576
  class OptimizationStatus(Enum):
577
+ NOT_STARTED = "not_started"
457
578
  PENDING = "pending"
458
579
  RUNNING = "running"
459
580
  COMPLETED = "completed"
@@ -592,4 +713,4 @@ def my_function(input_text: str) -> str:
592
713
 
593
714
  ---
594
715
 
595
- This documentation reflects Traigent SDK v0.10.0.
716
+ This documentation reflects Traigent SDK 0.12.0.
@@ -36,6 +36,7 @@ def optimize(
36
36
  configuration_space: dict[str, Any] | ConfigSpace | None = None,
37
37
  default_config: dict[str, Any] | None = None,
38
38
  constraints: list[Constraint | BoolExpr | Callable[..., Any]] | None = None,
39
+ safety_constraints: list[SafetyConstraint | CompoundSafetyConstraint] | None = None,
39
40
 
40
41
  # TVL integration
41
42
  tvl_spec: str | Path | None = None,
@@ -45,8 +46,32 @@ def optimize(
45
46
  # Grouped option bundles (preferred)
46
47
  evaluation: EvaluationOptions | dict[str, Any] | None = None,
47
48
  injection: InjectionOptions | dict[str, Any] | None = None,
49
+ effectuation: bool = False,
48
50
  execution: ExecutionOptions | dict[str, Any] | None = None,
49
51
  mock: MockModeOptions | dict[str, Any] | None = None,
52
+ strategy: str | None = None,
53
+ strategy_params: Mapping[str, Any] | None = None,
54
+
55
+ # Multi-agent configuration
56
+ agents: dict[str, AgentDefinition] | None = None,
57
+ agent_prefixes: list[str] | None = None,
58
+ agent_measures: dict[str, list[str]] | None = None,
59
+ global_measures: list[str] | None = None,
60
+
61
+ # Config persistence
62
+ auto_load_best: bool = False,
63
+ load_from: str | None = None,
64
+ config_id: str | None = None,
65
+ best_config_source: str = "off",
66
+ best_config_strict: bool = False,
67
+ best_config_cache_dir: str | None = None,
68
+ best_config_cache_ttl_seconds: int = 24 * 60 * 60,
69
+ best_config_stale_ok_ttl_seconds: int | None = None,
70
+ enable_auto_load_dev_logs: bool | None = None,
71
+
72
+ # Guided generation
73
+ prompt_rewrite: dict[str, Any] | None = None,
74
+ grow_dataset: dict[str, Any] | None = None,
50
75
 
51
76
  # Legacy compatibility
52
77
  legacy: LegacyOptimizeArgs | dict[str, Any] | None = None,
@@ -424,7 +449,8 @@ def my_function(prompt: str) -> str:
424
449
  ...
425
450
  ```
426
451
 
427
- Complete Example: See [06_custom_evaluator.py](../../walkthrough/real/06_custom_evaluator.py) for a full LLM-as-Judge implementation.
452
+ Complete example: see the repository's custom evaluator walkthrough for a full
453
+ LLM-as-Judge implementation.
428
454
 
429
455
  #### `injection`
430
456
 
@@ -436,7 +462,7 @@ from traigent.api.decorators import InjectionOptions
436
462
 
437
463
  @traigent.optimize(
438
464
  injection=InjectionOptions(
439
- injection_mode="context", # or "parameter", "attribute", "seamless"
465
+ injection_mode="context", # or "parameter", "seamless"
440
466
  config_param="config", # required when injection_mode="parameter"
441
467
  auto_override_frameworks=True,
442
468
  framework_targets=["OpenAI", "Anthropic"],
@@ -447,7 +473,7 @@ from traigent.api.decorators import InjectionOptions
447
473
 
448
474
  **InjectionOptions Fields**:
449
475
 
450
- - `injection_mode`: How to inject config ("context", "parameter", "attribute", "seamless")
476
+ - `injection_mode`: How to inject config ("context", "parameter", "seamless")
451
477
  - `config_param`: Parameter name when using "parameter" mode
452
478
  - `auto_override_frameworks`: Auto-detect framework classes
453
479
  - `framework_targets`: Explicit list of framework classes
@@ -470,6 +496,8 @@ from traigent.config.parallel import ParallelConfig
470
496
  privacy_enabled=False,
471
497
  max_total_examples=1000,
472
498
  samples_include_pruned=True,
499
+ reps_per_trial=1,
500
+ reps_aggregation="mean",
473
501
  ),
474
502
  ...
475
503
  )
@@ -477,13 +505,17 @@ from traigent.config.parallel import ParallelConfig
477
505
 
478
506
  **ExecutionOptions Fields**:
479
507
 
480
- - `execution_mode`: "edge_analytics" for local-only runs; "hybrid" for local execution with backend/portal tracking; "cloud" is reserved for future remote execution.
508
+ - `execution_mode`: "edge_analytics" for local-only runs; "hybrid" for local execution with backend/portal tracking; "hybrid_api" for external API-backed trial execution; "privacy" as a legacy alias for "hybrid" with privacy enabled; "cloud" is reserved for future remote execution and fails closed.
481
509
  - `local_storage_path`: Custom storage directory
482
510
  - `minimal_logging`: Reduce log verbosity
483
511
  - `parallel_config`: Concurrency configuration
484
512
  - `privacy_enabled`: Redact sensitive data
485
513
  - `max_total_examples`: Global sample budget
486
514
  - `samples_include_pruned`: Count pruned trials in budget
515
+ - `reps_per_trial`: Repetitions per configuration. OSS SDK accepts only `1`; non-default values raise `pydantic.ValidationError` and require Traigent Enterprise.
516
+ - `reps_aggregation`: Repetition aggregation method. OSS SDK accepts only `"mean"`; non-default values raise `pydantic.ValidationError` and require Traigent Enterprise.
517
+ - `hybrid_api_endpoint`, `tunable_id`, `hybrid_api_transport`, `hybrid_api_transport_type`, `hybrid_api_batch_size`, `hybrid_api_batch_parallelism`, `hybrid_api_keep_alive`, `hybrid_api_heartbeat_interval`, `hybrid_api_timeout`, `hybrid_api_auth_header`, `hybrid_api_auto_discover_tvars`: Hybrid API execution controls.
518
+ - `cloud_fallback_policy`: Legacy/future cloud fallback behavior. It does not enable `execution_mode="cloud"` in 0.12.0.
487
519
 
488
520
  #### `mock`
489
521
 
@@ -529,22 +561,28 @@ The `**runtime_overrides` parameter accepts additional settings:
529
561
  ```python
530
562
  @traigent.optimize(
531
563
  algorithm="optuna", # "grid", "random", "bayesian", "optuna"
532
- max_trials=50,
533
- timeout=3600, # seconds
534
564
  ...
535
565
  )
536
566
  ```
537
567
 
568
+ Run controls such as `max_trials` and `timeout` are passed to `.optimize()`:
569
+
570
+ ```python
571
+ result = await my_agent.optimize(max_trials=50, timeout=3600)
572
+ ```
573
+
538
574
  **Cost Controls**:
539
575
 
540
576
  ```python
541
- @traigent.optimize(
577
+ result = await my_agent.optimize(
542
578
  cost_limit=5.00, # USD
543
- cost_approved=False, # Prompt for approval
544
- ...
579
+ cost_approved=False, # Real bool only; strings do not approve
545
580
  )
546
581
  ```
547
582
 
583
+ Env approval requires exact `TRAIGENT_COST_APPROVED=true`; `1`/`yes` do not
584
+ approve.
585
+
548
586
  **Metric-Limit Controls**:
549
587
 
550
588
  ```python
@@ -665,4 +703,4 @@ def my_agent(query: str) -> str:
665
703
  - [Execution Modes Guide](../guides/execution-modes.md) - Execution mode details
666
704
  - [Thread Pool Examples](./thread-pool-examples.md) - Context propagation with threads
667
705
  - [Telemetry Documentation](./telemetry.md) - Data collection and privacy
668
- - [Custom Evaluator Example](../../walkthrough/real/06_custom_evaluator.py) - LLM-as-Judge implementation
706
+ - Custom evaluator walkthrough in the repository examples - LLM-as-Judge implementation
@@ -24,7 +24,8 @@ During optimization runs, Traigent collects:
24
24
  - Algorithm used (grid, random, bayesian, optuna)
25
25
  - Number of trials executed
26
26
  - Total optimization duration
27
- - Execution mode (edge_analytics, cloud, etc.)
27
+ - Execution mode (`edge_analytics`, `hybrid`, `hybrid_api`; `privacy` is a
28
+ legacy alias for `hybrid`, and `cloud` is reserved/fails closed)
28
29
  - Stop conditions triggered
29
30
  - Content-free tuned-variable observations can include knob names, enum/scalar values, numeric metrics, and aggregate effectuation events for backend optimization. Set `TRAIGENT_TVAR_OBSERVATION=off` to disable them, or use `TRAIGENT_TVAR_OBSERVATION=hashed` (default) to hash free-form string values. Only `off` and `hashed` are supported; unsupported values fall back to `hashed`.
30
31
 
@@ -80,6 +81,35 @@ The older plural spelling `TRAIGENT_TRACES_ENABLED` remains as a deprecated
80
81
  alias when the canonical flag is unset; if both are set,
81
82
  `TRAIGENT_TRACE_ENABLED` takes precedence.
82
83
 
84
+ ### Agent Workflow Spans
85
+
86
+ 0.12.0 exposes a public helper for adding sanitized agent/node spans to the
87
+ active optimization workflow trace:
88
+
89
+ ```python
90
+ from collections.abc import Mapping
91
+ from typing import Any
92
+
93
+ from traigent.observability import add_agent_span
94
+
95
+ def add_agent_span(
96
+ node_id: str,
97
+ *,
98
+ span_type: str = "agent",
99
+ input_tokens: int | None = None,
100
+ output_tokens: int | None = None,
101
+ cost_usd: float | None = None,
102
+ latency_ms: float | None = None,
103
+ model: str | None = None,
104
+ metadata: Mapping[str, Any] | None = None,
105
+ ) -> None
106
+ ```
107
+
108
+ The helper is safe to call from user code. If no active optimization trial or
109
+ workflow trace manager exists, it logs at debug level and returns. Metadata is
110
+ limited to safe numeric values, sensitive keys such as prompt/response/output
111
+ are dropped, and model identifiers are validated before emission.
112
+
83
113
  ## How Telemetry is Used
84
114
 
85
115
  Telemetry data is used for:
@@ -458,4 +458,4 @@ async def process_items_async(items):
458
458
  - [API Reference](./complete-function-specification.md) - Full API documentation
459
459
  - [Parallel Configuration Guide](../guides/parallel-configuration.md) - Concurrency tuning and precedence
460
460
  - [Evaluation Guide](../guides/evaluation.md) - Parallel evaluation and concurrency tips
461
- - [Context Management Source](../../traigent/config/context.py) - Implementation details
461
+ - Context management implementation: see `traigent/config/context.py` in the repository source.