synth-agent-sdk 2.0.0__tar.gz → 2.2.0__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 (458) hide show
  1. synth_agent_sdk-2.2.0/.dockerignore +27 -0
  2. synth_agent_sdk-2.2.0/.github/CODEOWNERS +34 -0
  3. synth_agent_sdk-2.2.0/.github/workflows/observability-doc-idempotence.yml +52 -0
  4. synth_agent_sdk-2.2.0/.github/workflows/pricing-feed-validation.yml +102 -0
  5. synth_agent_sdk-2.2.0/.github/workflows/pricing-freshness.yml +129 -0
  6. synth_agent_sdk-2.2.0/.github/workflows/spec-metadata-lint.yml +137 -0
  7. synth_agent_sdk-2.2.0/.gitignore +68 -0
  8. synth_agent_sdk-2.0.0/README.md → synth_agent_sdk-2.2.0/PKG-INFO +229 -2
  9. synth_agent_sdk-2.0.0/PKG-INFO → synth_agent_sdk-2.2.0/README.md +121 -84
  10. synth_agent_sdk-2.2.0/install.ps1 +307 -0
  11. synth_agent_sdk-2.2.0/install.sh +468 -0
  12. synth_agent_sdk-2.2.0/pyproject.toml +170 -0
  13. {synth_agent_sdk-2.0.0 → synth_agent_sdk-2.2.0}/synth/CHANGELOG.md +173 -0
  14. {synth_agent_sdk-2.0.0 → synth_agent_sdk-2.2.0}/synth/__init__.py +41 -1
  15. synth_agent_sdk-2.2.0/synth/agent.py +3161 -0
  16. {synth_agent_sdk-2.0.0 → synth_agent_sdk-2.2.0}/synth/audit/log.py +163 -17
  17. synth_agent_sdk-2.2.0/synth/cache/middleware.py +305 -0
  18. synth_agent_sdk-2.2.0/synth/checkpointing/__init__.py +7 -0
  19. synth_agent_sdk-2.2.0/synth/checkpointing/base.py +120 -0
  20. synth_agent_sdk-2.2.0/synth/checkpointing/dynamo.py +223 -0
  21. synth_agent_sdk-2.2.0/synth/checkpointing/encryption.py +139 -0
  22. {synth_agent_sdk-2.0.0 → synth_agent_sdk-2.2.0}/synth/checkpointing/local.py +22 -5
  23. {synth_agent_sdk-2.0.0 → synth_agent_sdk-2.2.0}/synth/checkpointing/redis.py +28 -8
  24. synth_agent_sdk-2.2.0/synth/cli/_doc_gen/__init__.py +8 -0
  25. synth_agent_sdk-2.2.0/synth/cli/_doc_gen/observability_html.py +727 -0
  26. synth_agent_sdk-2.2.0/synth/cli/_error_formatter.py +265 -0
  27. synth_agent_sdk-2.2.0/synth/cli/_init_back_nav.py +292 -0
  28. synth_agent_sdk-2.2.0/synth/cli/_init_catalog.py +1372 -0
  29. synth_agent_sdk-2.2.0/synth/cli/_init_enterprise.py +2336 -0
  30. synth_agent_sdk-2.2.0/synth/cli/_init_generators.py +3840 -0
  31. synth_agent_sdk-2.2.0/synth/cli/_init_helpers.py +5389 -0
  32. synth_agent_sdk-2.2.0/synth/cli/_ui_assets/__init__.py +6 -0
  33. synth_agent_sdk-2.2.0/synth/cli/_ui_assets/agentcore_history.py +515 -0
  34. {synth_agent_sdk-2.0.0 → synth_agent_sdk-2.2.0}/synth/cli/_ui_assets/app.js +1108 -26
  35. synth_agent_sdk-2.2.0/synth/cli/_ui_assets/conversation_agents.json +324 -0
  36. synth_agent_sdk-2.2.0/synth/cli/_ui_assets/conversations.json +62 -0
  37. {synth_agent_sdk-2.0.0 → synth_agent_sdk-2.2.0}/synth/cli/_ui_assets/index.html +105 -44
  38. synth_agent_sdk-2.2.0/synth/cli/_ui_assets/provenance.py +166 -0
  39. synth_agent_sdk-2.2.0/synth/cli/_ui_assets/registry_ui.py +646 -0
  40. synth_agent_sdk-2.2.0/synth/cli/_ui_assets/server.py +9221 -0
  41. {synth_agent_sdk-2.0.0 → synth_agent_sdk-2.2.0}/synth/cli/_ui_assets/static/app.js +2213 -52
  42. {synth_agent_sdk-2.0.0 → synth_agent_sdk-2.2.0}/synth/cli/_ui_assets/static/index.html +197 -51
  43. synth_agent_sdk-2.2.0/synth/cli/_ui_assets/static/login.html +316 -0
  44. {synth_agent_sdk-2.0.0 → synth_agent_sdk-2.2.0}/synth/cli/_ui_assets/static/style.css +1001 -1
  45. {synth_agent_sdk-2.0.0 → synth_agent_sdk-2.2.0}/synth/cli/_ui_assets/style.css +521 -1
  46. {synth_agent_sdk-2.0.0 → synth_agent_sdk-2.2.0}/synth/cli/agents_cmd.py +470 -3
  47. synth_agent_sdk-2.2.0/synth/cli/cloud_cmd.py +2475 -0
  48. {synth_agent_sdk-2.0.0 → synth_agent_sdk-2.2.0}/synth/cli/create_cmd.py +892 -4
  49. synth_agent_sdk-2.2.0/synth/cli/deploy_cmd.py +5668 -0
  50. synth_agent_sdk-2.2.0/synth/cli/destroy_cmd.py +1005 -0
  51. synth_agent_sdk-2.2.0/synth/cli/dev.py +401 -0
  52. synth_agent_sdk-2.2.0/synth/cli/dev_ui_contract.py +195 -0
  53. {synth_agent_sdk-2.0.0 → synth_agent_sdk-2.2.0}/synth/cli/doctor.py +271 -0
  54. {synth_agent_sdk-2.0.0 → synth_agent_sdk-2.2.0}/synth/cli/edit_cmd.py +3 -3
  55. synth_agent_sdk-2.2.0/synth/cli/init_cmd.py +3416 -0
  56. synth_agent_sdk-2.2.0/synth/cli/inspect_cmd.py +374 -0
  57. {synth_agent_sdk-2.0.0 → synth_agent_sdk-2.2.0}/synth/cli/main.py +303 -10
  58. synth_agent_sdk-2.2.0/synth/cli/mcp_cmd.py +961 -0
  59. synth_agent_sdk-2.2.0/synth/cli/migrate_cmd.py +1090 -0
  60. {synth_agent_sdk-2.0.0 → synth_agent_sdk-2.2.0}/synth/cli/package_info.py +4 -4
  61. synth_agent_sdk-2.2.0/synth/cli/pricing.py +471 -0
  62. synth_agent_sdk-2.2.0/synth/cli/registry_prompt.py +831 -0
  63. synth_agent_sdk-2.2.0/synth/cli/route_cmd.py +403 -0
  64. {synth_agent_sdk-2.0.0 → synth_agent_sdk-2.2.0}/synth/cli/shell.py +17 -0
  65. synth_agent_sdk-2.2.0/synth/cli/tools_cmd.py +464 -0
  66. synth_agent_sdk-2.2.0/synth/cloud/__init__.py +73 -0
  67. synth_agent_sdk-2.2.0/synth/cloud/auth.py +599 -0
  68. synth_agent_sdk-2.2.0/synth/cloud/cache.py +300 -0
  69. synth_agent_sdk-2.2.0/synth/cloud/client.py +1592 -0
  70. synth_agent_sdk-2.2.0/synth/cloud/config.py +146 -0
  71. synth_agent_sdk-2.2.0/synth/cloud/errors.py +120 -0
  72. synth_agent_sdk-2.2.0/synth/cloud/manifest.py +197 -0
  73. synth_agent_sdk-2.2.0/synth/cloud/packaging.py +569 -0
  74. synth_agent_sdk-2.2.0/synth/cloud/types.py +327 -0
  75. synth_agent_sdk-2.2.0/synth/config.py +376 -0
  76. {synth_agent_sdk-2.0.0 → synth_agent_sdk-2.2.0}/synth/deploy/agentcore/__init__.py +37 -1
  77. synth_agent_sdk-2.2.0/synth/deploy/agentcore/adapter.py +719 -0
  78. synth_agent_sdk-2.2.0/synth/deploy/agentcore/evaluations.py +663 -0
  79. synth_agent_sdk-2.2.0/synth/deploy/agentcore/gateway.py +756 -0
  80. synth_agent_sdk-2.2.0/synth/deploy/agentcore/handler.py +151 -0
  81. synth_agent_sdk-2.2.0/synth/deploy/agentcore/memory.py +1186 -0
  82. synth_agent_sdk-2.2.0/synth/deploy/agentcore/observability.py +527 -0
  83. synth_agent_sdk-2.2.0/synth/deploy/agentcore/schema_translator.py +200 -0
  84. synth_agent_sdk-2.2.0/synth/deploy/agentcore/team_handler.py +507 -0
  85. synth_agent_sdk-2.2.0/synth/deploy/agentcore/types.py +163 -0
  86. {synth_agent_sdk-2.0.0 → synth_agent_sdk-2.2.0}/synth/deploy/packager.py +40 -3
  87. synth_agent_sdk-2.2.0/synth/deploy/pipeline/__init__.py +86 -0
  88. synth_agent_sdk-2.2.0/synth/deploy/pipeline/base.py +406 -0
  89. synth_agent_sdk-2.2.0/synth/deploy/pipeline/cost_estimator.py +335 -0
  90. synth_agent_sdk-2.2.0/synth/deploy/pipeline/dry_run.py +218 -0
  91. synth_agent_sdk-2.2.0/synth/deploy/pipeline/phase_container_build.py +214 -0
  92. synth_agent_sdk-2.2.0/synth/deploy/pipeline/phase_endpoint_wiring.py +177 -0
  93. synth_agent_sdk-2.2.0/synth/deploy/pipeline/phase_post_deploy.py +178 -0
  94. synth_agent_sdk-2.2.0/synth/deploy/pipeline/phase_preflight.py +240 -0
  95. synth_agent_sdk-2.2.0/synth/deploy/pipeline/phase_registry_publish.py +966 -0
  96. synth_agent_sdk-2.2.0/synth/deploy/pipeline/phase_runtime_provisioning.py +309 -0
  97. synth_agent_sdk-2.2.0/synth/deploy/pipeline/phase_state_infra.py +683 -0
  98. synth_agent_sdk-2.2.0/synth/deploy/pipeline/progress.py +366 -0
  99. synth_agent_sdk-2.2.0/synth/deploy/pipeline/runner.py +493 -0
  100. {synth_agent_sdk-2.0.0 → synth_agent_sdk-2.2.0}/synth/durable/__init__.py +3 -0
  101. synth_agent_sdk-2.2.0/synth/durable/runner.py +397 -0
  102. synth_agent_sdk-2.2.0/synth/durable/wrappers.py +440 -0
  103. {synth_agent_sdk-2.0.0 → synth_agent_sdk-2.2.0}/synth/errors.py +144 -0
  104. {synth_agent_sdk-2.0.0 → synth_agent_sdk-2.2.0}/synth/eval/__init__.py +7 -1
  105. synth_agent_sdk-2.2.0/synth/eval/scorers.py +261 -0
  106. synth_agent_sdk-2.2.0/synth/events/__init__.py +62 -0
  107. synth_agent_sdk-2.2.0/synth/events/base.py +174 -0
  108. synth_agent_sdk-2.2.0/synth/events/budget.py +58 -0
  109. synth_agent_sdk-2.2.0/synth/events/deploy.py +58 -0
  110. synth_agent_sdk-2.2.0/synth/events/executor.py +132 -0
  111. synth_agent_sdk-2.2.0/synth/events/routing.py +68 -0
  112. synth_agent_sdk-2.2.0/synth/events/runtime.py +41 -0
  113. synth_agent_sdk-2.2.0/synth/events/scrub.py +165 -0
  114. synth_agent_sdk-2.2.0/synth/events/state.py +98 -0
  115. synth_agent_sdk-2.2.0/synth/guards/__init__.py +7 -0
  116. {synth_agent_sdk-2.0.0 → synth_agent_sdk-2.2.0}/synth/guards/base.py +75 -7
  117. synth_agent_sdk-2.2.0/synth/guards/composed.py +195 -0
  118. synth_agent_sdk-2.2.0/synth/guards/cost.py +103 -0
  119. synth_agent_sdk-2.2.0/synth/guards/pii.py +127 -0
  120. {synth_agent_sdk-2.0.0 → synth_agent_sdk-2.2.0}/synth/guards/rate_limit.py +34 -7
  121. synth_agent_sdk-2.2.0/synth/hooks/__init__.py +12 -0
  122. synth_agent_sdk-2.2.0/synth/hooks/base.py +240 -0
  123. synth_agent_sdk-2.2.0/synth/hooks/types.py +90 -0
  124. {synth_agent_sdk-2.0.0 → synth_agent_sdk-2.2.0}/synth/infra/constructs.py +292 -24
  125. synth_agent_sdk-2.2.0/synth/knowledge/__init__.py +33 -0
  126. synth_agent_sdk-2.2.0/synth/knowledge/base.py +73 -0
  127. {synth_agent_sdk-2.0.0 → synth_agent_sdk-2.2.0}/synth/knowledge/bedrock_kb.py +60 -6
  128. synth_agent_sdk-2.2.0/synth/knowledge/expanders.py +123 -0
  129. synth_agent_sdk-2.2.0/synth/knowledge/ingestion.py +305 -0
  130. synth_agent_sdk-2.2.0/synth/knowledge/knowledge.py +360 -0
  131. synth_agent_sdk-2.2.0/synth/knowledge/pipeline.py +303 -0
  132. synth_agent_sdk-2.2.0/synth/knowledge/query_expander.py +35 -0
  133. synth_agent_sdk-2.2.0/synth/knowledge/reranker.py +41 -0
  134. synth_agent_sdk-2.2.0/synth/knowledge/rerankers.py +184 -0
  135. synth_agent_sdk-2.2.0/synth/knowledge/s3.py +174 -0
  136. {synth_agent_sdk-2.0.0 → synth_agent_sdk-2.2.0}/synth/knowledge/types.py +13 -0
  137. synth_agent_sdk-2.2.0/synth/knowledge/vector.py +111 -0
  138. synth_agent_sdk-2.2.0/synth/loops/__init__.py +16 -0
  139. synth_agent_sdk-2.2.0/synth/loops/ralph.py +529 -0
  140. {synth_agent_sdk-2.0.0 → synth_agent_sdk-2.2.0}/synth/memory/__init__.py +4 -0
  141. {synth_agent_sdk-2.0.0 → synth_agent_sdk-2.2.0}/synth/memory/base.py +67 -2
  142. synth_agent_sdk-2.2.0/synth/memory/bedrock_vector_store.py +147 -0
  143. {synth_agent_sdk-2.0.0 → synth_agent_sdk-2.2.0}/synth/memory/conversation.py +82 -8
  144. synth_agent_sdk-2.2.0/synth/memory/dynamo.py +201 -0
  145. synth_agent_sdk-2.2.0/synth/memory/local_vector_store.py +128 -0
  146. {synth_agent_sdk-2.0.0 → synth_agent_sdk-2.2.0}/synth/memory/persistent.py +29 -2
  147. {synth_agent_sdk-2.0.0 → synth_agent_sdk-2.2.0}/synth/memory/semantic.py +70 -1
  148. {synth_agent_sdk-2.0.0 → synth_agent_sdk-2.2.0}/synth/memory/thread.py +31 -5
  149. synth_agent_sdk-2.2.0/synth/memory/vector_store.py +84 -0
  150. synth_agent_sdk-2.2.0/synth/observability/cloudwatch_sink.py +734 -0
  151. synth_agent_sdk-2.2.0/synth/observability/trace_endpoint_sink.py +778 -0
  152. synth_agent_sdk-2.2.0/synth/observability/xray_sink.py +1004 -0
  153. synth_agent_sdk-2.2.0/synth/orchestration/_session_ids.py +81 -0
  154. synth_agent_sdk-2.2.0/synth/orchestration/dispatcher.py +1224 -0
  155. synth_agent_sdk-2.2.0/synth/orchestration/event_bus.py +366 -0
  156. synth_agent_sdk-2.2.0/synth/orchestration/executors/__init__.py +69 -0
  157. synth_agent_sdk-2.2.0/synth/orchestration/executors/a2a_bus.py +993 -0
  158. synth_agent_sdk-2.2.0/synth/orchestration/executors/base.py +454 -0
  159. synth_agent_sdk-2.2.0/synth/orchestration/executors/blackboard.py +899 -0
  160. synth_agent_sdk-2.2.0/synth/orchestration/executors/consensus.py +1086 -0
  161. synth_agent_sdk-2.2.0/synth/orchestration/executors/critic_review.py +834 -0
  162. synth_agent_sdk-2.2.0/synth/orchestration/executors/debate.py +1006 -0
  163. synth_agent_sdk-2.2.0/synth/orchestration/executors/direct.py +299 -0
  164. synth_agent_sdk-2.2.0/synth/orchestration/executors/graph_exec.py +630 -0
  165. synth_agent_sdk-2.2.0/synth/orchestration/executors/parallel.py +718 -0
  166. synth_agent_sdk-2.2.0/synth/orchestration/executors/peer_questions.py +539 -0
  167. synth_agent_sdk-2.2.0/synth/orchestration/executors/pipeline_exec.py +964 -0
  168. synth_agent_sdk-2.2.0/synth/orchestration/executors/registry.py +347 -0
  169. synth_agent_sdk-2.2.0/synth/orchestration/executors/single_delegate.py +447 -0
  170. synth_agent_sdk-2.2.0/synth/orchestration/executors/termination.py +457 -0
  171. synth_agent_sdk-2.2.0/synth/orchestration/feature_flags.py +81 -0
  172. synth_agent_sdk-2.2.0/synth/orchestration/governance/__init__.py +30 -0
  173. synth_agent_sdk-2.2.0/synth/orchestration/governance/budget.py +231 -0
  174. synth_agent_sdk-2.2.0/synth/orchestration/governance/downgrade.py +134 -0
  175. synth_agent_sdk-2.2.0/synth/orchestration/governance/policy.py +217 -0
  176. synth_agent_sdk-2.2.0/synth/orchestration/governance/predicate.py +501 -0
  177. synth_agent_sdk-2.2.0/synth/orchestration/governance/toml_loader.py +405 -0
  178. {synth_agent_sdk-2.0.0 → synth_agent_sdk-2.2.0}/synth/orchestration/graph.py +346 -37
  179. synth_agent_sdk-2.2.0/synth/orchestration/interrupt.py +298 -0
  180. synth_agent_sdk-2.2.0/synth/orchestration/ledgers.py +245 -0
  181. synth_agent_sdk-2.2.0/synth/orchestration/memory.py +285 -0
  182. {synth_agent_sdk-2.0.0 → synth_agent_sdk-2.2.0}/synth/orchestration/message_bus.py +261 -46
  183. {synth_agent_sdk-2.0.0 → synth_agent_sdk-2.2.0}/synth/orchestration/pipeline.py +204 -11
  184. synth_agent_sdk-2.2.0/synth/orchestration/plan.py +300 -0
  185. synth_agent_sdk-2.2.0/synth/orchestration/record_payload.py +210 -0
  186. synth_agent_sdk-2.2.0/synth/orchestration/record_publisher.py +2209 -0
  187. synth_agent_sdk-2.2.0/synth/orchestration/registry_audit.py +705 -0
  188. synth_agent_sdk-2.2.0/synth/orchestration/registry_resolver.py +375 -0
  189. synth_agent_sdk-2.2.0/synth/orchestration/routing/__init__.py +34 -0
  190. synth_agent_sdk-2.2.0/synth/orchestration/routing/base.py +252 -0
  191. synth_agent_sdk-2.2.0/synth/orchestration/routing/decision.py +346 -0
  192. synth_agent_sdk-2.2.0/synth/orchestration/routing/heuristic_router.py +637 -0
  193. synth_agent_sdk-2.2.0/synth/orchestration/routing/hybrid_router.py +554 -0
  194. synth_agent_sdk-2.2.0/synth/orchestration/routing/llm_router.py +597 -0
  195. synth_agent_sdk-2.2.0/synth/orchestration/routing/prompts.py +275 -0
  196. synth_agent_sdk-2.2.0/synth/orchestration/routing/replay.py +326 -0
  197. synth_agent_sdk-2.2.0/synth/orchestration/routing/request.py +180 -0
  198. synth_agent_sdk-2.2.0/synth/orchestration/routing/rule_router.py +477 -0
  199. synth_agent_sdk-2.2.0/synth/orchestration/routing/team_descriptor.py +266 -0
  200. synth_agent_sdk-2.2.0/synth/orchestration/routing/transparency.py +73 -0
  201. synth_agent_sdk-2.2.0/synth/orchestration/state/__init__.py +38 -0
  202. synth_agent_sdk-2.2.0/synth/orchestration/state/adapters/__init__.py +14 -0
  203. synth_agent_sdk-2.2.0/synth/orchestration/state/adapters/dynamodb.py +933 -0
  204. synth_agent_sdk-2.2.0/synth/orchestration/state/adapters/inmem.py +146 -0
  205. synth_agent_sdk-2.2.0/synth/orchestration/state/adapters/memory.py +1228 -0
  206. synth_agent_sdk-2.2.0/synth/orchestration/state/adapters/s3.py +781 -0
  207. synth_agent_sdk-2.2.0/synth/orchestration/state/agentcore.py +637 -0
  208. synth_agent_sdk-2.2.0/synth/orchestration/state/base.py +370 -0
  209. synth_agent_sdk-2.2.0/synth/orchestration/state/local.py +338 -0
  210. synth_agent_sdk-2.2.0/synth/orchestration/state/schemas.py +362 -0
  211. synth_agent_sdk-2.2.0/synth/orchestration/state/termination_adapter.py +213 -0
  212. synth_agent_sdk-2.2.0/synth/orchestration/team.py +6008 -0
  213. synth_agent_sdk-2.2.0/synth/orchestration/team_registry.py +2383 -0
  214. synth_agent_sdk-2.2.0/synth/orchestration/topology.py +93 -0
  215. synth_agent_sdk-2.2.0/synth/plugins.py +246 -0
  216. synth_agent_sdk-2.2.0/synth/presets/__init__.py +175 -0
  217. synth_agent_sdk-2.2.0/synth/presets/_loader.py +127 -0
  218. synth_agent_sdk-2.2.0/synth/presets/back_compat.py +166 -0
  219. synth_agent_sdk-2.2.0/synth/presets/budgets/enterprise.toml +14 -0
  220. synth_agent_sdk-2.2.0/synth/presets/budgets/free_tier.toml +13 -0
  221. synth_agent_sdk-2.2.0/synth/presets/budgets/production.toml +13 -0
  222. synth_agent_sdk-2.2.0/synth/presets/budgets/safety_rails.toml +14 -0
  223. synth_agent_sdk-2.2.0/synth/presets/checkpoints/durable.toml +21 -0
  224. synth_agent_sdk-2.2.0/synth/presets/checkpoints/hitl.toml +18 -0
  225. synth_agent_sdk-2.2.0/synth/presets/checkpoints/off.toml +9 -0
  226. synth_agent_sdk-2.2.0/synth/presets/memory/analysis.toml +18 -0
  227. synth_agent_sdk-2.2.0/synth/presets/memory/assistant.toml +23 -0
  228. synth_agent_sdk-2.2.0/synth/presets/memory/balanced.toml +23 -0
  229. synth_agent_sdk-2.2.0/synth/presets/memory/research.toml +21 -0
  230. synth_agent_sdk-2.2.0/synth/presets/memory/workflow.toml +18 -0
  231. synth_agent_sdk-2.2.0/synth/presets/resolve.py +247 -0
  232. synth_agent_sdk-2.2.0/synth/presets/run_history/compliance.toml +21 -0
  233. synth_agent_sdk-2.2.0/synth/presets/run_history/debug.toml +14 -0
  234. synth_agent_sdk-2.2.0/synth/presets/run_history/off.toml +9 -0
  235. synth_agent_sdk-2.2.0/synth/presets/run_history/standard.toml +23 -0
  236. synth_agent_sdk-2.2.0/synth/pricing/__init__.py +182 -0
  237. synth_agent_sdk-2.2.0/synth/pricing/data/.gitkeep +3 -0
  238. synth_agent_sdk-2.2.0/synth/pricing/data/pricing_feed_2026-05-13.json +345 -0
  239. synth_agent_sdk-2.2.0/synth/pricing/data/signing_public_key.pem +1 -0
  240. synth_agent_sdk-2.2.0/synth/pricing/data/sources/.gitkeep +5 -0
  241. synth_agent_sdk-2.2.0/synth/pricing/data/sources/litellm_id_map.json +56 -0
  242. synth_agent_sdk-2.2.0/synth/pricing/data/sources/litellm_sha.txt +2 -0
  243. synth_agent_sdk-2.2.0/synth/pricing/data/sources/overrides.json +154 -0
  244. synth_agent_sdk-2.2.0/synth/pricing/data/sources/required_models.txt +38 -0
  245. synth_agent_sdk-2.2.0/synth/pricing/loader.py +1329 -0
  246. synth_agent_sdk-2.2.0/synth/pricing/schema.py +582 -0
  247. synth_agent_sdk-2.2.0/synth/pricing/signing.py +276 -0
  248. synth_agent_sdk-2.2.0/synth/pricing/warnings.py +116 -0
  249. {synth_agent_sdk-2.0.0 → synth_agent_sdk-2.2.0}/synth/providers/__init__.py +3 -0
  250. synth_agent_sdk-2.2.0/synth/providers/_timeout.py +85 -0
  251. {synth_agent_sdk-2.0.0 → synth_agent_sdk-2.2.0}/synth/providers/anthropic.py +124 -16
  252. {synth_agent_sdk-2.0.0 → synth_agent_sdk-2.2.0}/synth/providers/base.py +21 -1
  253. {synth_agent_sdk-2.0.0 → synth_agent_sdk-2.2.0}/synth/providers/bedrock.py +365 -18
  254. {synth_agent_sdk-2.0.0 → synth_agent_sdk-2.2.0}/synth/providers/google.py +61 -6
  255. {synth_agent_sdk-2.0.0 → synth_agent_sdk-2.2.0}/synth/providers/ollama.py +111 -4
  256. {synth_agent_sdk-2.0.0 → synth_agent_sdk-2.2.0}/synth/providers/openai.py +122 -4
  257. synth_agent_sdk-2.2.0/synth/providers/pricing.py +108 -0
  258. synth_agent_sdk-2.2.0/synth/providers/retry.py +214 -0
  259. {synth_agent_sdk-2.0.0 → synth_agent_sdk-2.2.0}/synth/providers/router.py +71 -6
  260. {synth_agent_sdk-2.0.0 → synth_agent_sdk-2.2.0}/synth/providers/smart_router.py +182 -5
  261. {synth_agent_sdk-2.0.0 → synth_agent_sdk-2.2.0}/synth/structured/output.py +7 -4
  262. synth_agent_sdk-2.2.0/synth/tasks/__init__.py +9 -0
  263. synth_agent_sdk-2.2.0/synth/tasks/runner.py +238 -0
  264. synth_agent_sdk-2.2.0/synth/tenancy/__init__.py +25 -0
  265. synth_agent_sdk-2.2.0/synth/tenancy/context.py +76 -0
  266. synth_agent_sdk-2.2.0/synth/tenancy/cost_attribution.py +394 -0
  267. synth_agent_sdk-2.2.0/synth/tenancy/credentials.py +251 -0
  268. synth_agent_sdk-2.2.0/synth/tenancy/middleware.py +287 -0
  269. synth_agent_sdk-2.2.0/synth/tenancy/quota.py +160 -0
  270. synth_agent_sdk-2.2.0/synth/testing/__init__.py +27 -0
  271. synth_agent_sdk-2.2.0/synth/testing/harness.py +375 -0
  272. synth_agent_sdk-2.2.0/synth/testing/mocks.py +127 -0
  273. {synth_agent_sdk-2.0.0 → synth_agent_sdk-2.2.0}/synth/testing/vcr.py +90 -3
  274. {synth_agent_sdk-2.0.0 → synth_agent_sdk-2.2.0}/synth/tools/__init__.py +4 -0
  275. {synth_agent_sdk-2.0.0 → synth_agent_sdk-2.2.0}/synth/tools/a2a.py +327 -10
  276. synth_agent_sdk-2.2.0/synth/tools/agent_registry.py +373 -0
  277. synth_agent_sdk-2.2.0/synth/tools/agent_tool.py +187 -0
  278. {synth_agent_sdk-2.0.0 → synth_agent_sdk-2.2.0}/synth/tools/context.py +13 -0
  279. {synth_agent_sdk-2.0.0 → synth_agent_sdk-2.2.0}/synth/tools/decorator.py +86 -10
  280. {synth_agent_sdk-2.0.0 → synth_agent_sdk-2.2.0}/synth/tools/executor.py +212 -1
  281. {synth_agent_sdk-2.0.0 → synth_agent_sdk-2.2.0}/synth/tools/mcp.py +195 -4
  282. synth_agent_sdk-2.2.0/synth/tools/mcp_auth.py +1073 -0
  283. synth_agent_sdk-2.2.0/synth/tools/mcp_callback_server.py +243 -0
  284. synth_agent_sdk-2.2.0/synth/tools/mcp_config.py +561 -0
  285. synth_agent_sdk-2.2.0/synth/tools/mcp_registry.py +415 -0
  286. synth_agent_sdk-2.2.0/synth/tools/mcp_token_cache.py +183 -0
  287. synth_agent_sdk-2.2.0/synth/tools/tool_registry.py +373 -0
  288. synth_agent_sdk-2.2.0/synth/tracing/attributes.py +377 -0
  289. synth_agent_sdk-2.2.0/synth/tracing/exporter.py +496 -0
  290. synth_agent_sdk-2.2.0/synth/tracing/exporters/otel.py +385 -0
  291. synth_agent_sdk-2.2.0/synth/tracing/trace.py +545 -0
  292. {synth_agent_sdk-2.0.0 → synth_agent_sdk-2.2.0}/synth/triggers/__init__.py +2 -0
  293. synth_agent_sdk-2.2.0/synth/triggers/runtime.py +563 -0
  294. {synth_agent_sdk-2.0.0 → synth_agent_sdk-2.2.0}/synth/types.py +107 -1
  295. {synth_agent_sdk-2.0.0 → synth_agent_sdk-2.2.0}/synth/versioning/canary.py +138 -0
  296. synth_agent_sdk-2.0.0/.gitignore +0 -12
  297. synth_agent_sdk-2.0.0/dummy.json +0 -1
  298. synth_agent_sdk-2.0.0/pyproject.toml +0 -119
  299. synth_agent_sdk-2.0.0/synth/agent.py +0 -1435
  300. synth_agent_sdk-2.0.0/synth/cache/middleware.py +0 -160
  301. synth_agent_sdk-2.0.0/synth/checkpointing/__init__.py +0 -6
  302. synth_agent_sdk-2.0.0/synth/checkpointing/base.py +0 -58
  303. synth_agent_sdk-2.0.0/synth/cli/_ui_assets/conversations.json +0 -20
  304. synth_agent_sdk-2.0.0/synth/cli/_ui_assets/server.py +0 -4724
  305. synth_agent_sdk-2.0.0/synth/cli/deploy_cmd.py +0 -3274
  306. synth_agent_sdk-2.0.0/synth/cli/dev.py +0 -153
  307. synth_agent_sdk-2.0.0/synth/cli/init_cmd.py +0 -9053
  308. synth_agent_sdk-2.0.0/synth/deploy/agentcore/adapter.py +0 -211
  309. synth_agent_sdk-2.0.0/synth/deploy/agentcore/gateway.py +0 -201
  310. synth_agent_sdk-2.0.0/synth/deploy/agentcore/handler.py +0 -97
  311. synth_agent_sdk-2.0.0/synth/deploy/agentcore/memory.py +0 -302
  312. synth_agent_sdk-2.0.0/synth/deploy/agentcore/team_handler.py +0 -218
  313. synth_agent_sdk-2.0.0/synth/durable/runner.py +0 -283
  314. synth_agent_sdk-2.0.0/synth/eval/scorers.py +0 -103
  315. synth_agent_sdk-2.0.0/synth/guards/__init__.py +0 -7
  316. synth_agent_sdk-2.0.0/synth/guards/composed.py +0 -112
  317. synth_agent_sdk-2.0.0/synth/guards/cost.py +0 -52
  318. synth_agent_sdk-2.0.0/synth/guards/pii.py +0 -61
  319. synth_agent_sdk-2.0.0/synth/knowledge/__init__.py +0 -18
  320. synth_agent_sdk-2.0.0/synth/knowledge/base.py +0 -37
  321. synth_agent_sdk-2.0.0/synth/knowledge/knowledge.py +0 -116
  322. synth_agent_sdk-2.0.0/synth/knowledge/s3.py +0 -80
  323. synth_agent_sdk-2.0.0/synth/knowledge/vector.py +0 -53
  324. synth_agent_sdk-2.0.0/synth/orchestration/memory.py +0 -126
  325. synth_agent_sdk-2.0.0/synth/orchestration/team.py +0 -3200
  326. synth_agent_sdk-2.0.0/synth/providers/pricing.py +0 -97
  327. synth_agent_sdk-2.0.0/synth/providers/retry.py +0 -99
  328. synth_agent_sdk-2.0.0/synth/tenancy/__init__.py +0 -7
  329. synth_agent_sdk-2.0.0/synth/tenancy/context.py +0 -33
  330. synth_agent_sdk-2.0.0/synth/testing/__init__.py +0 -18
  331. synth_agent_sdk-2.0.0/synth/tools/agent_tool.py +0 -82
  332. synth_agent_sdk-2.0.0/synth/tracing/exporter.py +0 -224
  333. synth_agent_sdk-2.0.0/synth/tracing/exporters/otel.py +0 -216
  334. synth_agent_sdk-2.0.0/synth/tracing/trace.py +0 -196
  335. synth_agent_sdk-2.0.0/tool.yaml +0 -17
  336. synth_agent_sdk-2.0.0/tools.py +0 -1
  337. {synth_agent_sdk-2.0.0 → synth_agent_sdk-2.2.0}/requirements.txt +0 -0
  338. {synth_agent_sdk-2.0.0 → synth_agent_sdk-2.2.0}/synth/README.md +0 -0
  339. {synth_agent_sdk-2.0.0 → synth_agent_sdk-2.2.0}/synth/__main__.py +0 -0
  340. {synth_agent_sdk-2.0.0 → synth_agent_sdk-2.2.0}/synth/_compat.py +0 -0
  341. {synth_agent_sdk-2.0.0 → synth_agent_sdk-2.2.0}/synth/audit/__init__.py +0 -0
  342. {synth_agent_sdk-2.0.0 → synth_agent_sdk-2.2.0}/synth/audit/backends/__init__.py +0 -0
  343. {synth_agent_sdk-2.0.0 → synth_agent_sdk-2.2.0}/synth/audit/backends/cloudwatch.py +0 -0
  344. {synth_agent_sdk-2.0.0 → synth_agent_sdk-2.2.0}/synth/audit/backends/dynamo.py +0 -0
  345. {synth_agent_sdk-2.0.0 → synth_agent_sdk-2.2.0}/synth/audit/backends/local.py +0 -0
  346. {synth_agent_sdk-2.0.0 → synth_agent_sdk-2.2.0}/synth/audit/backends/s3.py +0 -0
  347. {synth_agent_sdk-2.0.0 → synth_agent_sdk-2.2.0}/synth/audit/chain.py +0 -0
  348. {synth_agent_sdk-2.0.0 → synth_agent_sdk-2.2.0}/synth/audit/types.py +0 -0
  349. {synth_agent_sdk-2.0.0 → synth_agent_sdk-2.2.0}/synth/cache/__init__.py +0 -0
  350. {synth_agent_sdk-2.0.0 → synth_agent_sdk-2.2.0}/synth/cache/base.py +0 -0
  351. {synth_agent_sdk-2.0.0 → synth_agent_sdk-2.2.0}/synth/cache/dynamo.py +0 -0
  352. {synth_agent_sdk-2.0.0 → synth_agent_sdk-2.2.0}/synth/cache/local.py +0 -0
  353. {synth_agent_sdk-2.0.0 → synth_agent_sdk-2.2.0}/synth/cache/redis.py +0 -0
  354. {synth_agent_sdk-2.0.0 → synth_agent_sdk-2.2.0}/synth/cache/types.py +0 -0
  355. {synth_agent_sdk-2.0.0 → synth_agent_sdk-2.2.0}/synth/cli/__init__.py +0 -0
  356. {synth_agent_sdk-2.0.0 → synth_agent_sdk-2.2.0}/synth/cli/_agent_ops.py +0 -0
  357. {synth_agent_sdk-2.0.0 → synth_agent_sdk-2.2.0}/synth/cli/_colors.py +0 -0
  358. {synth_agent_sdk-2.0.0 → synth_agent_sdk-2.2.0}/synth/cli/_platform_assets/app.js +0 -0
  359. {synth_agent_sdk-2.0.0 → synth_agent_sdk-2.2.0}/synth/cli/_platform_assets/easter_eggs.js +0 -0
  360. {synth_agent_sdk-2.0.0 → synth_agent_sdk-2.2.0}/synth/cli/_platform_assets/index.html +0 -0
  361. {synth_agent_sdk-2.0.0 → synth_agent_sdk-2.2.0}/synth/cli/_platform_assets/style.css +0 -0
  362. {synth_agent_sdk-2.0.0 → synth_agent_sdk-2.2.0}/synth/cli/_render.py +0 -0
  363. {synth_agent_sdk-2.0.0 → synth_agent_sdk-2.2.0}/synth/cli/_tui.py +0 -0
  364. {synth_agent_sdk-2.0.0 → synth_agent_sdk-2.2.0}/synth/cli/_ui_assets/README.md +0 -0
  365. {synth_agent_sdk-2.0.0 → synth_agent_sdk-2.2.0}/synth/cli/_ui_assets/easter_eggs.js +0 -0
  366. {synth_agent_sdk-2.0.0 → synth_agent_sdk-2.2.0}/synth/cli/_ui_assets/static/easter_eggs.js +0 -0
  367. {synth_agent_sdk-2.0.0 → synth_agent_sdk-2.2.0}/synth/cli/_ui_templates.py +0 -0
  368. {synth_agent_sdk-2.0.0 → synth_agent_sdk-2.2.0}/synth/cli/aws_auth.py +0 -0
  369. {synth_agent_sdk-2.0.0 → synth_agent_sdk-2.2.0}/synth/cli/banner.py +0 -0
  370. {synth_agent_sdk-2.0.0 → synth_agent_sdk-2.2.0}/synth/cli/bench_cmd.py +0 -0
  371. {synth_agent_sdk-2.0.0 → synth_agent_sdk-2.2.0}/synth/cli/discover.py +0 -0
  372. {synth_agent_sdk-2.0.0 → synth_agent_sdk-2.2.0}/synth/cli/eval_cmd.py +0 -0
  373. {synth_agent_sdk-2.0.0 → synth_agent_sdk-2.2.0}/synth/cli/help_cmd.py +0 -0
  374. {synth_agent_sdk-2.0.0 → synth_agent_sdk-2.2.0}/synth/cli/platform_cmd.py +0 -0
  375. {synth_agent_sdk-2.0.0 → synth_agent_sdk-2.2.0}/synth/cli/registry.py +0 -0
  376. {synth_agent_sdk-2.0.0 → synth_agent_sdk-2.2.0}/synth/cli/run_cmd.py +0 -0
  377. {synth_agent_sdk-2.0.0 → synth_agent_sdk-2.2.0}/synth/cli/trace_cmd.py +0 -0
  378. {synth_agent_sdk-2.0.0 → synth_agent_sdk-2.2.0}/synth/cli/welcome.py +0 -0
  379. {synth_agent_sdk-2.0.0 → synth_agent_sdk-2.2.0}/synth/deploy/__init__.py +0 -0
  380. {synth_agent_sdk-2.0.0 → synth_agent_sdk-2.2.0}/synth/deploy/agentcore/auth.py +0 -0
  381. {synth_agent_sdk-2.0.0 → synth_agent_sdk-2.2.0}/synth/deploy/agentcore/browser.py +0 -0
  382. {synth_agent_sdk-2.0.0 → synth_agent_sdk-2.2.0}/synth/deploy/agentcore/code_interpreter.py +0 -0
  383. {synth_agent_sdk-2.0.0 → synth_agent_sdk-2.2.0}/synth/deploy/agentcore/credentials.py +0 -0
  384. {synth_agent_sdk-2.0.0 → synth_agent_sdk-2.2.0}/synth/deploy/agentcore/manifest.py +0 -0
  385. {synth_agent_sdk-2.0.0 → synth_agent_sdk-2.2.0}/synth/deploy/agentcore/model_catalog.py +0 -0
  386. {synth_agent_sdk-2.0.0 → synth_agent_sdk-2.2.0}/synth/deploy/agentcore/ssm.py +0 -0
  387. {synth_agent_sdk-2.0.0 → synth_agent_sdk-2.2.0}/synth/deploy/agentcore/tool_registry.py +0 -0
  388. {synth_agent_sdk-2.0.0 → synth_agent_sdk-2.2.0}/synth/durable/base.py +0 -0
  389. {synth_agent_sdk-2.0.0 → synth_agent_sdk-2.2.0}/synth/durable/dynamo.py +0 -0
  390. {synth_agent_sdk-2.0.0 → synth_agent_sdk-2.2.0}/synth/durable/local.py +0 -0
  391. {synth_agent_sdk-2.0.0 → synth_agent_sdk-2.2.0}/synth/durable/redis.py +0 -0
  392. {synth_agent_sdk-2.0.0 → synth_agent_sdk-2.2.0}/synth/durable/types.py +0 -0
  393. {synth_agent_sdk-2.0.0 → synth_agent_sdk-2.2.0}/synth/eval/eval.py +0 -0
  394. {synth_agent_sdk-2.0.0 → synth_agent_sdk-2.2.0}/synth/eval/report.py +0 -0
  395. {synth_agent_sdk-2.0.0 → synth_agent_sdk-2.2.0}/synth/eval/suites/__init__.py +0 -0
  396. {synth_agent_sdk-2.0.0 → synth_agent_sdk-2.2.0}/synth/eval/suites/base.py +0 -0
  397. {synth_agent_sdk-2.0.0 → synth_agent_sdk-2.2.0}/synth/eval/suites/grounding.py +0 -0
  398. {synth_agent_sdk-2.0.0 → synth_agent_sdk-2.2.0}/synth/eval/suites/guard_compliance.py +0 -0
  399. {synth_agent_sdk-2.0.0 → synth_agent_sdk-2.2.0}/synth/eval/suites/hallucination.py +0 -0
  400. {synth_agent_sdk-2.0.0 → synth_agent_sdk-2.2.0}/synth/eval/suites/multi_step.py +0 -0
  401. {synth_agent_sdk-2.0.0 → synth_agent_sdk-2.2.0}/synth/eval/suites/tool_selection.py +0 -0
  402. {synth_agent_sdk-2.0.0 → synth_agent_sdk-2.2.0}/synth/eval/trace_to_eval.py +0 -0
  403. {synth_agent_sdk-2.0.0 → synth_agent_sdk-2.2.0}/synth/guards/custom.py +0 -0
  404. {synth_agent_sdk-2.0.0 → synth_agent_sdk-2.2.0}/synth/guards/tool_filter.py +0 -0
  405. {synth_agent_sdk-2.0.0 → synth_agent_sdk-2.2.0}/synth/infra/__init__.py +0 -0
  406. {synth_agent_sdk-2.0.0 → synth_agent_sdk-2.2.0}/synth/infra/app_template.py +0 -0
  407. {synth_agent_sdk-2.0.0 → synth_agent_sdk-2.2.0}/synth/infra/enterprise_constructs.py +0 -0
  408. {synth_agent_sdk-2.0.0 → synth_agent_sdk-2.2.0}/synth/infra/enterprise_stack.py +0 -0
  409. {synth_agent_sdk-2.0.0 → synth_agent_sdk-2.2.0}/synth/infra/stack.py +0 -0
  410. {synth_agent_sdk-2.0.0 → synth_agent_sdk-2.2.0}/synth/observability/__init__.py +0 -0
  411. {synth_agent_sdk-2.0.0 → synth_agent_sdk-2.2.0}/synth/observability/cloudwatch.py +0 -0
  412. {synth_agent_sdk-2.0.0 → synth_agent_sdk-2.2.0}/synth/observability/metrics.py +0 -0
  413. {synth_agent_sdk-2.0.0 → synth_agent_sdk-2.2.0}/synth/orchestration/__init__.py +0 -0
  414. {synth_agent_sdk-2.0.0 → synth_agent_sdk-2.2.0}/synth/orchestration/export.py +0 -0
  415. {synth_agent_sdk-2.0.0 → synth_agent_sdk-2.2.0}/synth/orchestration/human_in_loop.py +0 -0
  416. {synth_agent_sdk-2.0.0 → synth_agent_sdk-2.2.0}/synth/orchestration/time_travel.py +0 -0
  417. {synth_agent_sdk-2.0.0 → synth_agent_sdk-2.2.0}/synth/platform/__init__.py +0 -0
  418. {synth_agent_sdk-2.0.0 → synth_agent_sdk-2.2.0}/synth/platform/bootstrap.py +0 -0
  419. {synth_agent_sdk-2.0.0 → synth_agent_sdk-2.2.0}/synth/platform/catalog.py +0 -0
  420. {synth_agent_sdk-2.0.0 → synth_agent_sdk-2.2.0}/synth/platform/cedar.py +0 -0
  421. {synth_agent_sdk-2.0.0 → synth_agent_sdk-2.2.0}/synth/platform/deploy_profile.py +0 -0
  422. {synth_agent_sdk-2.0.0 → synth_agent_sdk-2.2.0}/synth/platform/drift.py +0 -0
  423. {synth_agent_sdk-2.0.0 → synth_agent_sdk-2.2.0}/synth/platform/infra.py +0 -0
  424. {synth_agent_sdk-2.0.0 → synth_agent_sdk-2.2.0}/synth/platform/manifest.py +0 -0
  425. {synth_agent_sdk-2.0.0 → synth_agent_sdk-2.2.0}/synth/platform/planner.py +0 -0
  426. {synth_agent_sdk-2.0.0 → synth_agent_sdk-2.2.0}/synth/platform/preflight.py +0 -0
  427. {synth_agent_sdk-2.0.0 → synth_agent_sdk-2.2.0}/synth/platform/publisher.py +0 -0
  428. {synth_agent_sdk-2.0.0 → synth_agent_sdk-2.2.0}/synth/platform/rbac.py +0 -0
  429. {synth_agent_sdk-2.0.0 → synth_agent_sdk-2.2.0}/synth/platform/registry_provisioner.py +0 -0
  430. {synth_agent_sdk-2.0.0 → synth_agent_sdk-2.2.0}/synth/platform/resource_publisher.py +0 -0
  431. {synth_agent_sdk-2.0.0 → synth_agent_sdk-2.2.0}/synth/platform/secret_resolver.py +0 -0
  432. {synth_agent_sdk-2.0.0 → synth_agent_sdk-2.2.0}/synth/platform/state.py +0 -0
  433. {synth_agent_sdk-2.0.0 → synth_agent_sdk-2.2.0}/synth/platform/template_generator.py +0 -0
  434. {synth_agent_sdk-2.0.0 → synth_agent_sdk-2.2.0}/synth/platform/validator.py +0 -0
  435. {synth_agent_sdk-2.0.0 → synth_agent_sdk-2.2.0}/synth/platform/versioning.py +0 -0
  436. {synth_agent_sdk-2.0.0 → synth_agent_sdk-2.2.0}/synth/providers/test.py +0 -0
  437. {synth_agent_sdk-2.0.0 → synth_agent_sdk-2.2.0}/synth/secrets/__init__.py +0 -0
  438. {synth_agent_sdk-2.0.0 → synth_agent_sdk-2.2.0}/synth/secrets/resolver.py +0 -0
  439. {synth_agent_sdk-2.0.0 → synth_agent_sdk-2.2.0}/synth/structured/__init__.py +0 -0
  440. {synth_agent_sdk-2.0.0 → synth_agent_sdk-2.2.0}/synth/tenancy/isolation.py +0 -0
  441. {synth_agent_sdk-2.0.0 → synth_agent_sdk-2.2.0}/synth/tools/builtins.py +0 -0
  442. {synth_agent_sdk-2.0.0 → synth_agent_sdk-2.2.0}/synth/tools/media.py +0 -0
  443. {synth_agent_sdk-2.0.0 → synth_agent_sdk-2.2.0}/synth/tools/middleware.py +0 -0
  444. {synth_agent_sdk-2.0.0 → synth_agent_sdk-2.2.0}/synth/tools/toolkit.py +0 -0
  445. {synth_agent_sdk-2.0.0 → synth_agent_sdk-2.2.0}/synth/tools/web_search.py +0 -0
  446. {synth_agent_sdk-2.0.0 → synth_agent_sdk-2.2.0}/synth/tracing/__init__.py +0 -0
  447. {synth_agent_sdk-2.0.0 → synth_agent_sdk-2.2.0}/synth/tracing/exporters/__init__.py +0 -0
  448. {synth_agent_sdk-2.0.0 → synth_agent_sdk-2.2.0}/synth/tracing/exporters/base.py +0 -0
  449. {synth_agent_sdk-2.0.0 → synth_agent_sdk-2.2.0}/synth/tracing/exporters/datadog.py +0 -0
  450. {synth_agent_sdk-2.0.0 → synth_agent_sdk-2.2.0}/synth/tracing/exporters/honeycomb.py +0 -0
  451. {synth_agent_sdk-2.0.0 → synth_agent_sdk-2.2.0}/synth/tracing/exporters/langfuse.py +0 -0
  452. {synth_agent_sdk-2.0.0 → synth_agent_sdk-2.2.0}/synth/tracing/integrations.py +0 -0
  453. {synth_agent_sdk-2.0.0 → synth_agent_sdk-2.2.0}/synth/triggers/handler.py +0 -0
  454. {synth_agent_sdk-2.0.0 → synth_agent_sdk-2.2.0}/synth/triggers/trigger.py +0 -0
  455. {synth_agent_sdk-2.0.0 → synth_agent_sdk-2.2.0}/synth/triggers/types.py +0 -0
  456. {synth_agent_sdk-2.0.0 → synth_agent_sdk-2.2.0}/synth/versioning/__init__.py +0 -0
  457. {synth_agent_sdk-2.0.0 → synth_agent_sdk-2.2.0}/synth/versioning/manifest.py +0 -0
  458. {synth_agent_sdk-2.0.0 → synth_agent_sdk-2.2.0}/synth/versioning/store.py +0 -0
@@ -0,0 +1,27 @@
1
+ .git/
2
+ .github/
3
+ .hypothesis/
4
+ .bedrock_agentcore/
5
+ *.env
6
+ .env*
7
+ **/.aws/
8
+ **/__pycache__/
9
+ **/*.pyc
10
+ **/*.pyo
11
+ *.egg-info/
12
+ dist/
13
+ build/
14
+ .coverage
15
+ htmlcov/
16
+ .pytest_cache/
17
+ node_modules/
18
+ Legal Team/
19
+ agent/
20
+ tests/
21
+ docs/
22
+ *.log
23
+ agentcore.yaml
24
+ .bedrock_agentcore.yaml
25
+ **/.synth/
26
+ .kiro/
27
+ Synth Website/
@@ -0,0 +1,34 @@
1
+ # Synth SDK CODEOWNERS
2
+ #
3
+ # This file assigns mandatory reviewers to PRs touching the given
4
+ # paths. See https://docs.github.com/en/repositories/managing-your-
5
+ # repositories-settings-and-features/customizing-your-repository/
6
+ # about-code-owners for syntax.
7
+
8
+ # ---------------------------------------------------------------------------
9
+ # UI surfaces — Task 8.2 of telemetry-and-ui-architecture spec (R6.4).
10
+ #
11
+ # The Dev Space UI server and its assets are thin-presenter surfaces
12
+ # per design §2.2 and the AgentCore Native Execution Principle
13
+ # (rule 9). Every change to these paths must be reviewed by the
14
+ # observability team so UI changes that would re-introduce
15
+ # authoritative state caching or bypass the `_sse_emit` provenance
16
+ # funnel are caught at review time.
17
+ # ---------------------------------------------------------------------------
18
+
19
+ synth/cli/_ui_assets/ @observability-team
20
+ synth/cli/_ui_assets/provenance.py @observability-team
21
+ synth/cli/_ui_assets/agentcore_history.py @observability-team
22
+ synth/cli/_ui_assets/server.py @observability-team
23
+ synth/cli/_ui_assets/static/ @observability-team
24
+
25
+ # ---------------------------------------------------------------------------
26
+ # Observability sinks — Tasks 2.x, 3.x, 4.x (R2, R3, R4).
27
+ #
28
+ # First-party sinks share a stats() contract (NFR.4) and a set of
29
+ # wire-format invariants that the observability team owns.
30
+ # ---------------------------------------------------------------------------
31
+
32
+ synth/observability/ @observability-team
33
+ synth/tracing/attributes.py @observability-team
34
+ synth/cli/_doc_gen/ @observability-team
@@ -0,0 +1,52 @@
1
+ name: Observability Doc Idempotence
2
+
3
+ # Task 7.4 of the telemetry-and-ui-architecture spec.
4
+ #
5
+ # Re-runs the deterministic observability HTML generator and asserts
6
+ # the committed `Synth Website/docs/observability.html` is identical
7
+ # to what the generator produces now. If anyone edits the span
8
+ # dataclasses in `synth/tracing/attributes.py` or the generator
9
+ # itself without regenerating the page, this job fails the PR with
10
+ # a clear "run the generator" message.
11
+
12
+ on:
13
+ pull_request:
14
+ paths:
15
+ - 'synth/cli/_doc_gen/**'
16
+ - 'synth/tracing/attributes.py'
17
+ - 'Synth Website/docs/observability.html'
18
+
19
+ jobs:
20
+ check:
21
+ name: Verify observability.html is up to date
22
+ runs-on: ubuntu-latest
23
+ timeout-minutes: 5
24
+
25
+ steps:
26
+ - name: Checkout PR
27
+ uses: actions/checkout@v4
28
+
29
+ - name: Setup Python
30
+ uses: actions/setup-python@v5
31
+ with:
32
+ python-version: '3.12'
33
+
34
+ - name: Install SDK (editable)
35
+ # The generator imports from ``synth.tracing.attributes``; an
36
+ # editable install is the fastest way to make that import
37
+ # resolve without shipping a wheel.
38
+ run: pip install --quiet -e .
39
+
40
+ - name: Regenerate observability.html
41
+ run: python -m synth.cli._doc_gen.observability_html
42
+
43
+ - name: Assert no diff
44
+ run: |
45
+ if ! git diff --exit-code -- 'Synth Website/docs/observability.html'; then
46
+ echo "::error::Synth Website/docs/observability.html is out of"
47
+ echo "::error::date relative to the generator. Run"
48
+ echo "::error::'python -m synth.cli._doc_gen.observability_html'"
49
+ echo "::error::locally, commit the regenerated HTML, and"
50
+ echo "::error::push again."
51
+ exit 1
52
+ fi
@@ -0,0 +1,102 @@
1
+ name: ci-pricing-feed-validation
2
+
3
+ # Anchored by Task 17.2 of
4
+ # .kiro/specs/active/foundational/cost-and-pricing-accuracy/tasks.md.
5
+ #
6
+ # Runs on every PR that touches the pricing pipeline: schema-validates
7
+ # the bundled feed (Req 1.3) and runs the refresh script in dry-run
8
+ # mode to produce a delta summary for PR reviewers (Req 10.7).
9
+
10
+ on:
11
+ pull_request:
12
+ paths:
13
+ - "synth/pricing/**"
14
+ - "scripts/refresh_pricing_feed.py"
15
+ - "scripts/aws_bulk_parser.py"
16
+ - "scripts/litellm_parser.py"
17
+ - "synth/pricing/data/sources/**"
18
+ workflow_dispatch: {}
19
+
20
+ permissions:
21
+ contents: read
22
+ pull-requests: write
23
+
24
+ jobs:
25
+ validate-feed:
26
+ name: Validate bundled pricing feed + dry-run delta
27
+ runs-on: ubuntu-latest
28
+ steps:
29
+ - name: Checkout repository
30
+ uses: actions/checkout@v4
31
+
32
+ - name: Set up Python
33
+ uses: actions/setup-python@v5
34
+ with:
35
+ python-version: "3.12"
36
+
37
+ - name: Install SDK with pricing-refresh extra
38
+ run: |
39
+ python -m pip install --upgrade pip
40
+ python -m pip install -e '.[pricing-refresh]'
41
+
42
+ - name: Run bundled-feed schema validation
43
+ run: |
44
+ python -m pytest tests/unit/test_pricing_feed_bundled.py -v --tb=short
45
+
46
+ - name: Run refresh script in dry-run mode
47
+ id: dry_run
48
+ continue-on-error: true
49
+ run: |
50
+ set +e
51
+ OUTPUT_FILE="/tmp/refresh_dry_run_output.txt"
52
+ python -m scripts.refresh_pricing_feed --dry-run 2>&1 | tee "$OUTPUT_FILE"
53
+ RC=${PIPESTATUS[0]}
54
+ echo "exit_code=$RC" >> "$GITHUB_OUTPUT"
55
+ # Extract the "Pricing feed refresh — delta summary" block
56
+ # by anchoring on the header and the trailing blank line.
57
+ awk '/Pricing feed refresh/,/^$/' "$OUTPUT_FILE" > /tmp/delta_summary.txt || true
58
+ {
59
+ echo "delta_summary<<DELTA_EOF"
60
+ cat /tmp/delta_summary.txt
61
+ echo "DELTA_EOF"
62
+ } >> "$GITHUB_OUTPUT"
63
+ exit $RC
64
+
65
+ - name: Post delta summary as PR comment
66
+ if: ${{ github.event_name == 'pull_request' }}
67
+ uses: actions/github-script@v7
68
+ env:
69
+ DELTA_SUMMARY: ${{ steps.dry_run.outputs.delta_summary }}
70
+ DRY_RUN_EXIT: ${{ steps.dry_run.outputs.exit_code }}
71
+ with:
72
+ script: |
73
+ const summary = process.env.DELTA_SUMMARY || "(no delta summary captured)";
74
+ const exitCode = process.env.DRY_RUN_EXIT || "unknown";
75
+ const status = exitCode === "0"
76
+ ? "✅ Dry-run passed"
77
+ : `❌ Dry-run failed (exit ${exitCode})`;
78
+ const body = [
79
+ "## Pricing feed refresh — dry-run delta",
80
+ "",
81
+ status,
82
+ "",
83
+ "```",
84
+ summary,
85
+ "```",
86
+ "",
87
+ "_Posted by ci-pricing-feed-validation (Task 17.2). "
88
+ + "Reviewers: confirm the model/resource deltas against "
89
+ + "the PR's intended scope before merge._",
90
+ ].join("\n");
91
+ await github.rest.issues.createComment({
92
+ owner: context.repo.owner,
93
+ repo: context.repo.repo,
94
+ issue_number: context.issue.number,
95
+ body,
96
+ });
97
+
98
+ - name: Fail job if dry-run failed
99
+ if: ${{ steps.dry_run.outputs.exit_code != '0' }}
100
+ run: |
101
+ echo "::error::Refresh script dry-run failed with exit code ${{ steps.dry_run.outputs.exit_code }}. See the job log or PR comment for the delta summary."
102
+ exit 1
@@ -0,0 +1,129 @@
1
+ name: ci-pricing-freshness
2
+
3
+ # Anchored by Task 17.1 of
4
+ # .kiro/specs/active/foundational/cost-and-pricing-accuracy/tasks.md.
5
+ #
6
+ # Fails the build when the bundled pricing feed is older than
7
+ # 120 days (Req 2.3 — buffer over the 90-day release target) or
8
+ # when an entry in synth/pricing/data/sources/overrides.json has a
9
+ # sunset_date in the past (Req 10.4).
10
+
11
+ on:
12
+ push:
13
+ branches: [main]
14
+ schedule:
15
+ # Nightly at 02:30 UTC so a newly-stale feed is caught before
16
+ # the next release cut.
17
+ - cron: "30 2 * * *"
18
+ workflow_dispatch: {}
19
+
20
+ permissions:
21
+ contents: read
22
+
23
+ jobs:
24
+ check-freshness:
25
+ name: Check bundled pricing feed freshness
26
+ runs-on: ubuntu-latest
27
+ steps:
28
+ - name: Checkout repository
29
+ uses: actions/checkout@v4
30
+
31
+ - name: Set up Python
32
+ uses: actions/setup-python@v5
33
+ with:
34
+ python-version: "3.12"
35
+
36
+ - name: Check bundled-feed age
37
+ shell: python {0}
38
+ run: |
39
+ import datetime as _dt
40
+ import glob
41
+ import json
42
+ import os
43
+ import re
44
+ import sys
45
+
46
+ FEED_GLOB = "synth/pricing/data/pricing_feed_*.json"
47
+ MAX_AGE_DAYS = 120
48
+
49
+ matches = sorted(glob.glob(FEED_GLOB))
50
+ if not matches:
51
+ print(f"::error::No bundled pricing feed found under {FEED_GLOB}. "
52
+ f"Run 'scripts/refresh_pricing_feed.py' to generate one.")
53
+ sys.exit(1)
54
+ if len(matches) > 1:
55
+ print(f"::error::Multiple bundled pricing feeds found: {matches}. "
56
+ f"A release should contain exactly one; delete stale feeds.")
57
+ sys.exit(1)
58
+
59
+ feed_path = matches[0]
60
+ with open(feed_path, "r", encoding="utf-8") as f:
61
+ feed = json.load(f)
62
+
63
+ pricing_date_str = feed["pricing_data_date"]
64
+ pricing_date = _dt.date.fromisoformat(pricing_date_str)
65
+ today = _dt.datetime.now(_dt.UTC).date()
66
+ age_days = (today - pricing_date).days
67
+
68
+ print(f"Bundled pricing feed: {feed_path}")
69
+ print(f" pricing_data_date: {pricing_date_str}")
70
+ print(f" age (days): {age_days}")
71
+ print(f" max allowed: {MAX_AGE_DAYS}")
72
+
73
+ if age_days > MAX_AGE_DAYS:
74
+ print(f"::error file={feed_path}::"
75
+ f"Bundled pricing feed is {age_days} days old; "
76
+ f"exceeds the {MAX_AGE_DAYS}-day cap (Req 2.3). "
77
+ f"Run 'python -m scripts.refresh_pricing_feed' to regenerate, "
78
+ f"then commit the new feed file.")
79
+ sys.exit(1)
80
+
81
+ print(f"::notice file={feed_path}::"
82
+ f"Bundled pricing feed is {age_days} days old (under "
83
+ f"{MAX_AGE_DAYS}-day cap).")
84
+
85
+ - name: Check overrides sunset dates
86
+ shell: python {0}
87
+ run: |
88
+ import datetime as _dt
89
+ import json
90
+ import sys
91
+
92
+ OVERRIDES_PATH = "synth/pricing/data/sources/overrides.json"
93
+
94
+ with open(OVERRIDES_PATH, "r", encoding="utf-8") as f:
95
+ overrides = json.load(f)
96
+
97
+ overrides.pop("_schema_comment", None)
98
+ today = _dt.datetime.now(_dt.UTC).date()
99
+
100
+ expired: list[tuple[str, str, str]] = []
101
+ for section in ("models", "resources"):
102
+ entries = overrides.get(section, {}) or {}
103
+ for key, entry in entries.items():
104
+ if not isinstance(entry, dict):
105
+ continue
106
+ sunset_raw = entry.get("sunset_date")
107
+ if not isinstance(sunset_raw, str):
108
+ continue
109
+ try:
110
+ sunset = _dt.date.fromisoformat(sunset_raw)
111
+ except ValueError:
112
+ print(f"::error file={OVERRIDES_PATH}::"
113
+ f"Override {section}['{key}'] has invalid "
114
+ f"sunset_date {sunset_raw!r}.")
115
+ sys.exit(1)
116
+ if sunset < today:
117
+ expired.append((section, key, sunset_raw))
118
+
119
+ if expired:
120
+ for section, key, sunset_raw in expired:
121
+ days_expired = (today - _dt.date.fromisoformat(sunset_raw)).days
122
+ print(f"::error file={OVERRIDES_PATH}::"
123
+ f"Override {section}['{key}'] expired "
124
+ f"{days_expired} days ago (sunset_date={sunset_raw}). "
125
+ f"Either extend the sunset_date or remove the override.")
126
+ sys.exit(1)
127
+
128
+ print(f"::notice file={OVERRIDES_PATH}::"
129
+ f"All overrides are within their sunset_date windows.")
@@ -0,0 +1,137 @@
1
+ name: Spec Metadata Lint
2
+
3
+ # Task 6.2 — Telemetry and UI Architecture spec R7.1 / R7.3 / R7.4.
4
+ # Validates that every `.kiro/specs/**/requirements.md` modified in a PR
5
+ # carries the metadata header required by
6
+ # `.kiro/steering/Spec Metadata Convention.md`. Uses the
7
+ # `--check --file …` mode added to `regenerate_spec_index.py` in Task 6.1
8
+ # so the validator only inspects the PR's changed files.
9
+
10
+ on:
11
+ pull_request:
12
+ paths:
13
+ - '.kiro/specs/**/requirements.md'
14
+
15
+ jobs:
16
+ lint:
17
+ name: Validate spec metadata headers
18
+ runs-on: ubuntu-latest
19
+ timeout-minutes: 5
20
+
21
+ steps:
22
+ - name: Checkout PR
23
+ uses: actions/checkout@v4
24
+ with:
25
+ # Fetch two commits so `git diff HEAD^ HEAD` resolves the
26
+ # changed-file list below.
27
+ fetch-depth: 2
28
+
29
+ - name: Setup Python
30
+ uses: actions/setup-python@v5
31
+ with:
32
+ python-version: '3.12'
33
+
34
+ - name: Install PyYAML
35
+ # The validator is self-contained apart from PyYAML (used by
36
+ # the companion `update_cross_references.py` script imported
37
+ # indirectly). No SDK install needed — R7.4 calls for
38
+ # completion inside 30 seconds on a 5-file diff.
39
+ run: pip install --quiet pyyaml
40
+
41
+ - name: Collect changed requirements.md files
42
+ id: changed
43
+ run: |
44
+ # Prefer GitHub's PR base-ref resolution; fall back to
45
+ # `HEAD^` when the action is re-run outside the PR context.
46
+ if [ -n "$GITHUB_BASE_REF" ]; then
47
+ git fetch --depth=1 origin "$GITHUB_BASE_REF"
48
+ base="origin/$GITHUB_BASE_REF"
49
+ else
50
+ base="HEAD^"
51
+ fi
52
+ files=$(git diff --name-only --diff-filter=AMR "$base" HEAD \
53
+ -- '.kiro/specs/**/requirements.md' || true)
54
+ if [ -z "$files" ]; then
55
+ echo "no changed requirements.md files — skipping."
56
+ echo "files=" >> "$GITHUB_OUTPUT"
57
+ else
58
+ echo "$files"
59
+ # Emit a multi-line output for the next step.
60
+ {
61
+ echo "files<<EOF"
62
+ echo "$files"
63
+ echo "EOF"
64
+ } >> "$GITHUB_OUTPUT"
65
+ fi
66
+
67
+ - name: Validate metadata (timed)
68
+ id: validate
69
+ if: steps.changed.outputs.files != ''
70
+ run: |
71
+ # Task 6.4 — workflow completion time check. The validator
72
+ # itself runs inside `time`; we fail the step if it ever
73
+ # takes longer than 30s on a 5-file diff (R7.4 / NFR.3).
74
+ args=()
75
+ while IFS= read -r file; do
76
+ [ -z "$file" ] && continue
77
+ args+=("--file" "$file")
78
+ done <<< "${{ steps.changed.outputs.files }}"
79
+
80
+ start=$(date +%s)
81
+ set +e
82
+ # Capture stderr so we can post it verbatim to the PR comment
83
+ # (R7.3 / Task 6.5 — "actionable field list").
84
+ python .kiro/scripts/regenerate_spec_index.py \
85
+ --check "${args[@]}" 2> /tmp/lint-stderr.log
86
+ status=$?
87
+ set -e
88
+ end=$(date +%s)
89
+ elapsed=$((end - start))
90
+
91
+ echo "elapsed=$elapsed" >> "$GITHUB_OUTPUT"
92
+ echo "status=$status" >> "$GITHUB_OUTPUT"
93
+
94
+ if [ "$elapsed" -gt 30 ]; then
95
+ echo "::error::Spec metadata lint exceeded 30s cap (actual: ${elapsed}s)."
96
+ exit 1
97
+ fi
98
+
99
+ if [ "$status" -ne 0 ]; then
100
+ cat /tmp/lint-stderr.log
101
+ exit "$status"
102
+ fi
103
+
104
+ - name: Post actionable failure comment
105
+ if: failure() && steps.validate.outputs.status != '0'
106
+ uses: actions/github-script@v7
107
+ with:
108
+ script: |
109
+ const fs = require('fs');
110
+ let body;
111
+ try {
112
+ body = fs.readFileSync('/tmp/lint-stderr.log', 'utf8');
113
+ } catch (e) {
114
+ body = '(validator produced no stderr output)';
115
+ }
116
+ const link = (
117
+ '.kiro/steering/Spec Metadata Convention.md'
118
+ );
119
+ const msg = [
120
+ '### Spec metadata validation failed',
121
+ '',
122
+ 'The `regenerate_spec_index.py --check` validator reported:',
123
+ '',
124
+ '```',
125
+ body.trim(),
126
+ '```',
127
+ '',
128
+ `See [${link}](${link}) for the required metadata header format.`,
129
+ '',
130
+ 'Run `python .kiro/scripts/regenerate_spec_index.py --check` locally to reproduce.',
131
+ ].join('\n');
132
+ await github.rest.issues.createComment({
133
+ owner: context.repo.owner,
134
+ repo: context.repo.repo,
135
+ issue_number: context.issue.number,
136
+ body: msg,
137
+ });
@@ -0,0 +1,68 @@
1
+ # Python build artifacts
2
+ __pycache__/
3
+ *.pyc
4
+ *.pyo
5
+ *.pyd
6
+ *.egg-info/
7
+ *.egg
8
+ dist/
9
+ build/
10
+ *.whl
11
+ *.tar.gz
12
+ MANIFEST
13
+
14
+ # Virtual environments
15
+ .venv/
16
+ venv/
17
+ env/
18
+ .env
19
+
20
+ # Test & coverage
21
+ .hypothesis/
22
+ .pytest_cache/
23
+ .coverage
24
+ .coverage.*
25
+ htmlcov/
26
+ coverage.xml
27
+ *.cover
28
+
29
+ # IDE & editor
30
+ .vscode/
31
+ .idea/
32
+ *.swp
33
+ *.swo
34
+ *~
35
+
36
+ # Local dev state
37
+ .synth/
38
+ .bedrock_agentcore/
39
+ *.log
40
+
41
+ # CDK build artifacts
42
+ synth-ui-deploy/cdk.out/
43
+ synth-ui-deploy/cdk.out.*/
44
+ synth-ui-deploy/.venv/
45
+ synth-ui-deploy/team-configs/
46
+
47
+ # Secrets & credentials
48
+ .env
49
+ *.env
50
+ .aws/
51
+
52
+ # macOS
53
+ .DS_Store
54
+ .AppleDouble
55
+ .LSOverride
56
+
57
+ # Jupyter
58
+ .ipynb_checkpoints/
59
+ *.ipynb
60
+
61
+ # Type checking
62
+ .mypy_cache/
63
+ .dmypy.json
64
+ .pytype/
65
+
66
+ # Docs build
67
+ docs/_build/
68
+ site/