gatewaysdk 0.3.2__py3-none-any.whl

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 (376) hide show
  1. gatewaysdk/__init__.py +540 -0
  2. gatewaysdk/adapter/__init__.py +15 -0
  3. gatewaysdk/adapter/base.py +94 -0
  4. gatewaysdk/adapter/messages.py +270 -0
  5. gatewaysdk/adapter/triplet.py +1026 -0
  6. gatewaysdk/algorithm/__init__.py +39 -0
  7. gatewaysdk/algorithm/apo/__init__.py +5 -0
  8. gatewaysdk/algorithm/apo/apo.py +898 -0
  9. gatewaysdk/algorithm/apo/prompts/apply_edit_variant01.poml +22 -0
  10. gatewaysdk/algorithm/apo/prompts/apply_edit_variant02.poml +18 -0
  11. gatewaysdk/algorithm/apo/prompts/text_gradient_variant01.poml +18 -0
  12. gatewaysdk/algorithm/apo/prompts/text_gradient_variant02.poml +16 -0
  13. gatewaysdk/algorithm/apo/prompts/text_gradient_variant03.poml +107 -0
  14. gatewaysdk/algorithm/base.py +262 -0
  15. gatewaysdk/algorithm/decorator.py +264 -0
  16. gatewaysdk/algorithm/evals/__init__.py +7 -0
  17. gatewaysdk/algorithm/evals/evals.py +217 -0
  18. gatewaysdk/algorithm/fast.py +250 -0
  19. gatewaysdk/algorithm/gepa/__init__.py +61 -0
  20. gatewaysdk/algorithm/gepa/adapter.py +495 -0
  21. gatewaysdk/algorithm/gepa/gepa.py +570 -0
  22. gatewaysdk/algorithm/gepa/lib/__init__.py +18 -0
  23. gatewaysdk/algorithm/gepa/lib/adapters/README.md +12 -0
  24. gatewaysdk/algorithm/gepa/lib/adapters/__init__.py +0 -0
  25. gatewaysdk/algorithm/gepa/lib/adapters/anymaths_adapter/README.md +341 -0
  26. gatewaysdk/algorithm/gepa/lib/adapters/anymaths_adapter/__init__.py +1 -0
  27. gatewaysdk/algorithm/gepa/lib/adapters/anymaths_adapter/anymaths_adapter.py +174 -0
  28. gatewaysdk/algorithm/gepa/lib/adapters/anymaths_adapter/requirements.txt +1 -0
  29. gatewaysdk/algorithm/gepa/lib/adapters/default_adapter/README.md +0 -0
  30. gatewaysdk/algorithm/gepa/lib/adapters/default_adapter/__init__.py +0 -0
  31. gatewaysdk/algorithm/gepa/lib/adapters/default_adapter/default_adapter.py +209 -0
  32. gatewaysdk/algorithm/gepa/lib/adapters/dspy_adapter/README.md +7 -0
  33. gatewaysdk/algorithm/gepa/lib/adapters/dspy_adapter/__init__.py +0 -0
  34. gatewaysdk/algorithm/gepa/lib/adapters/dspy_adapter/dspy_adapter.py +307 -0
  35. gatewaysdk/algorithm/gepa/lib/adapters/dspy_full_program_adapter/README.md +99 -0
  36. gatewaysdk/algorithm/gepa/lib/adapters/dspy_full_program_adapter/dspy_program_proposal_signature.py +137 -0
  37. gatewaysdk/algorithm/gepa/lib/adapters/dspy_full_program_adapter/full_program_adapter.py +268 -0
  38. gatewaysdk/algorithm/gepa/lib/adapters/generic_rag_adapter/GEPA_RAG.md +621 -0
  39. gatewaysdk/algorithm/gepa/lib/adapters/generic_rag_adapter/__init__.py +56 -0
  40. gatewaysdk/algorithm/gepa/lib/adapters/generic_rag_adapter/evaluation_metrics.py +226 -0
  41. gatewaysdk/algorithm/gepa/lib/adapters/generic_rag_adapter/generic_rag_adapter.py +496 -0
  42. gatewaysdk/algorithm/gepa/lib/adapters/generic_rag_adapter/rag_pipeline.py +238 -0
  43. gatewaysdk/algorithm/gepa/lib/adapters/generic_rag_adapter/vector_store_interface.py +212 -0
  44. gatewaysdk/algorithm/gepa/lib/adapters/generic_rag_adapter/vector_stores/__init__.py +2 -0
  45. gatewaysdk/algorithm/gepa/lib/adapters/generic_rag_adapter/vector_stores/chroma_store.py +196 -0
  46. gatewaysdk/algorithm/gepa/lib/adapters/generic_rag_adapter/vector_stores/lancedb_store.py +422 -0
  47. gatewaysdk/algorithm/gepa/lib/adapters/generic_rag_adapter/vector_stores/milvus_store.py +409 -0
  48. gatewaysdk/algorithm/gepa/lib/adapters/generic_rag_adapter/vector_stores/qdrant_store.py +368 -0
  49. gatewaysdk/algorithm/gepa/lib/adapters/generic_rag_adapter/vector_stores/weaviate_store.py +418 -0
  50. gatewaysdk/algorithm/gepa/lib/adapters/mcp_adapter/README.md +552 -0
  51. gatewaysdk/algorithm/gepa/lib/adapters/mcp_adapter/__init__.py +37 -0
  52. gatewaysdk/algorithm/gepa/lib/adapters/mcp_adapter/mcp_adapter.py +699 -0
  53. gatewaysdk/algorithm/gepa/lib/adapters/mcp_adapter/mcp_client.py +364 -0
  54. gatewaysdk/algorithm/gepa/lib/adapters/terminal_bench_adapter/README.md +9 -0
  55. gatewaysdk/algorithm/gepa/lib/adapters/terminal_bench_adapter/__init__.py +0 -0
  56. gatewaysdk/algorithm/gepa/lib/adapters/terminal_bench_adapter/terminal_bench_adapter.py +217 -0
  57. gatewaysdk/algorithm/gepa/lib/api.py +382 -0
  58. gatewaysdk/algorithm/gepa/lib/core/__init__.py +0 -0
  59. gatewaysdk/algorithm/gepa/lib/core/adapter.py +180 -0
  60. gatewaysdk/algorithm/gepa/lib/core/data_loader.py +74 -0
  61. gatewaysdk/algorithm/gepa/lib/core/engine.py +379 -0
  62. gatewaysdk/algorithm/gepa/lib/core/result.py +233 -0
  63. gatewaysdk/algorithm/gepa/lib/core/state.py +636 -0
  64. gatewaysdk/algorithm/gepa/lib/examples/__init__.py +0 -0
  65. gatewaysdk/algorithm/gepa/lib/examples/aime.py +24 -0
  66. gatewaysdk/algorithm/gepa/lib/examples/anymaths-bench/eval_default.py +111 -0
  67. gatewaysdk/algorithm/gepa/lib/examples/anymaths-bench/prompt-templates/instruction_prompt.txt +9 -0
  68. gatewaysdk/algorithm/gepa/lib/examples/anymaths-bench/prompt-templates/optimal_prompt.txt +24 -0
  69. gatewaysdk/algorithm/gepa/lib/examples/anymaths-bench/train_anymaths.py +177 -0
  70. gatewaysdk/algorithm/gepa/lib/examples/dspy_full_program_evolution/arc_agi.ipynb +25705 -0
  71. gatewaysdk/algorithm/gepa/lib/examples/dspy_full_program_evolution/example.ipynb +348 -0
  72. gatewaysdk/algorithm/gepa/lib/examples/mcp_adapter/__init__.py +4 -0
  73. gatewaysdk/algorithm/gepa/lib/examples/mcp_adapter/mcp_optimization_example.py +456 -0
  74. gatewaysdk/algorithm/gepa/lib/examples/rag_adapter/RAG_GUIDE.md +613 -0
  75. gatewaysdk/algorithm/gepa/lib/examples/rag_adapter/__init__.py +9 -0
  76. gatewaysdk/algorithm/gepa/lib/examples/rag_adapter/rag_optimization.py +820 -0
  77. gatewaysdk/algorithm/gepa/lib/examples/rag_adapter/requirements-rag.txt +29 -0
  78. gatewaysdk/algorithm/gepa/lib/examples/terminal-bench/prompt-templates/instruction_prompt.txt +16 -0
  79. gatewaysdk/algorithm/gepa/lib/examples/terminal-bench/prompt-templates/terminus.txt +9 -0
  80. gatewaysdk/algorithm/gepa/lib/examples/terminal-bench/train_terminus.py +161 -0
  81. gatewaysdk/algorithm/gepa/lib/gepa_utils.py +117 -0
  82. gatewaysdk/algorithm/gepa/lib/logging/__init__.py +0 -0
  83. gatewaysdk/algorithm/gepa/lib/logging/experiment_tracker.py +187 -0
  84. gatewaysdk/algorithm/gepa/lib/logging/logger.py +75 -0
  85. gatewaysdk/algorithm/gepa/lib/logging/utils.py +103 -0
  86. gatewaysdk/algorithm/gepa/lib/proposer/__init__.py +0 -0
  87. gatewaysdk/algorithm/gepa/lib/proposer/base.py +31 -0
  88. gatewaysdk/algorithm/gepa/lib/proposer/merge.py +357 -0
  89. gatewaysdk/algorithm/gepa/lib/proposer/reflective_mutation/__init__.py +0 -0
  90. gatewaysdk/algorithm/gepa/lib/proposer/reflective_mutation/base.py +49 -0
  91. gatewaysdk/algorithm/gepa/lib/proposer/reflective_mutation/reflective_mutation.py +176 -0
  92. gatewaysdk/algorithm/gepa/lib/py.typed +0 -0
  93. gatewaysdk/algorithm/gepa/lib/strategies/__init__.py +0 -0
  94. gatewaysdk/algorithm/gepa/lib/strategies/batch_sampler.py +77 -0
  95. gatewaysdk/algorithm/gepa/lib/strategies/candidate_selector.py +50 -0
  96. gatewaysdk/algorithm/gepa/lib/strategies/component_selector.py +36 -0
  97. gatewaysdk/algorithm/gepa/lib/strategies/eval_policy.py +64 -0
  98. gatewaysdk/algorithm/gepa/lib/strategies/instruction_proposal.py +126 -0
  99. gatewaysdk/algorithm/gepa/lib/utils/__init__.py +10 -0
  100. gatewaysdk/algorithm/gepa/lib/utils/stop_condition.py +196 -0
  101. gatewaysdk/algorithm/gepa/tracing.py +105 -0
  102. gatewaysdk/algorithm/utils.py +177 -0
  103. gatewaysdk/algorithm/verl/__init__.py +5 -0
  104. gatewaysdk/algorithm/verl/interface.py +202 -0
  105. gatewaysdk/automations.py +111 -0
  106. gatewaysdk/benchmark_hub/README.md +88 -0
  107. gatewaysdk/benchmark_hub/__init__.py +119 -0
  108. gatewaysdk/benchmark_hub/_archive.py +189 -0
  109. gatewaysdk/benchmark_hub/_tar.py +6 -0
  110. gatewaysdk/benchmark_hub/client.py +992 -0
  111. gatewaysdk/benchmark_hub/dispatch_shard.py +34 -0
  112. gatewaysdk/benchmark_hub/eval_config.py +20 -0
  113. gatewaysdk/benchmark_hub/evals.py +351 -0
  114. gatewaysdk/benchmark_hub/harbor_adapter.py +673 -0
  115. gatewaysdk/benchmark_hub/path_utils.py +81 -0
  116. gatewaysdk/benchmark_hub/save_utils.py +101 -0
  117. gatewaysdk/benchmark_hub/verifiers_adapter.py +327 -0
  118. gatewaysdk/benchmark_hub/versioning.py +72 -0
  119. gatewaysdk/build.py +515 -0
  120. gatewaysdk/cli/__init__.py +58 -0
  121. gatewaysdk/cli/agent_runner.py +132 -0
  122. gatewaysdk/cli/http_client.py +115 -0
  123. gatewaysdk/cli/platform.py +4086 -0
  124. gatewaysdk/cli/prometheus.py +115 -0
  125. gatewaysdk/cli/release_gate.py +215 -0
  126. gatewaysdk/cli/store.py +131 -0
  127. gatewaysdk/cli/vllm.py +29 -0
  128. gatewaysdk/client.py +406 -0
  129. gatewaysdk/config.py +348 -0
  130. gatewaysdk/connectors/__init__.py +25 -0
  131. gatewaysdk/connectors/client.py +203 -0
  132. gatewaysdk/connectors/skill.py +25 -0
  133. gatewaysdk/connectors/template.py +106 -0
  134. gatewaysdk/context.py +606 -0
  135. gatewaysdk/emitter/__init__.py +43 -0
  136. gatewaysdk/emitter/annotation.py +370 -0
  137. gatewaysdk/emitter/exception.py +54 -0
  138. gatewaysdk/emitter/message.py +61 -0
  139. gatewaysdk/emitter/object.py +117 -0
  140. gatewaysdk/emitter/reward.py +320 -0
  141. gatewaysdk/env_var.py +156 -0
  142. gatewaysdk/environment/__init__.py +108 -0
  143. gatewaysdk/environment/_bundle.py +281 -0
  144. gatewaysdk/environment/_harbor.py +276 -0
  145. gatewaysdk/environment/_materialize.py +97 -0
  146. gatewaysdk/environment/_tar.py +33 -0
  147. gatewaysdk/environment/_world.py +346 -0
  148. gatewaysdk/environment/core.py +527 -0
  149. gatewaysdk/environment/errors.py +58 -0
  150. gatewaysdk/environment/runtime.py +150 -0
  151. gatewaysdk/environment/schema/__init__.py +35 -0
  152. gatewaysdk/environment/schema/__main__.py +225 -0
  153. gatewaysdk/environment/schema/_slack_fidelity.py +116 -0
  154. gatewaysdk/environment/schema/_slack_scenario.py +183 -0
  155. gatewaysdk/environment/schema/api.py +1628 -0
  156. gatewaysdk/environment/schema/batch.py +755 -0
  157. gatewaysdk/environment/schema/compiler.py +615 -0
  158. gatewaysdk/environment/schema/conform.py +428 -0
  159. gatewaysdk/environment/schema/connector.py +777 -0
  160. gatewaysdk/environment/schema/connectors/apple-business-manager/handlers.py +17 -0
  161. gatewaysdk/environment/schema/connectors/apple-business-manager/parity.json +28 -0
  162. gatewaysdk/environment/schema/connectors/apple-business-manager/provenance.json +233 -0
  163. gatewaysdk/environment/schema/connectors/apple-business-manager/scope.toml +112 -0
  164. gatewaysdk/environment/schema/connectors/apple-business-manager/world.json +1380 -0
  165. gatewaysdk/environment/schema/connectors/base.json +28 -0
  166. gatewaysdk/environment/schema/connectors/custom/handlers.py +18 -0
  167. gatewaysdk/environment/schema/connectors/custom/world.json +123 -0
  168. gatewaysdk/environment/schema/connectors/github/handlers.py +81 -0
  169. gatewaysdk/environment/schema/connectors/github/parity.json +37 -0
  170. gatewaysdk/environment/schema/connectors/github/provenance.json +134 -0
  171. gatewaysdk/environment/schema/connectors/github/scope.toml +158 -0
  172. gatewaysdk/environment/schema/connectors/github/world.json +5869 -0
  173. gatewaysdk/environment/schema/connectors/google-calendar/handlers.py +23 -0
  174. gatewaysdk/environment/schema/connectors/google-calendar/world.json +209 -0
  175. gatewaysdk/environment/schema/connectors/google-drive/handlers.py +18 -0
  176. gatewaysdk/environment/schema/connectors/google-drive/world.json +286 -0
  177. gatewaysdk/environment/schema/connectors/jamf/handlers.py +34 -0
  178. gatewaysdk/environment/schema/connectors/jamf/parity.json +49 -0
  179. gatewaysdk/environment/schema/connectors/jamf/provenance.json +181 -0
  180. gatewaysdk/environment/schema/connectors/jamf/scope.toml +128 -0
  181. gatewaysdk/environment/schema/connectors/jamf/world.json +2218 -0
  182. gatewaysdk/environment/schema/connectors/jira/handlers.py +28 -0
  183. gatewaysdk/environment/schema/connectors/jira/world.json +389 -0
  184. gatewaysdk/environment/schema/connectors/kandji/handlers.py +38 -0
  185. gatewaysdk/environment/schema/connectors/kandji/parity.json +29 -0
  186. gatewaysdk/environment/schema/connectors/kandji/provenance.json +152 -0
  187. gatewaysdk/environment/schema/connectors/kandji/scope.toml +120 -0
  188. gatewaysdk/environment/schema/connectors/kandji/world.json +765 -0
  189. gatewaysdk/environment/schema/connectors/linear/handlers.py +20 -0
  190. gatewaysdk/environment/schema/connectors/linear/world.json +363 -0
  191. gatewaysdk/environment/schema/connectors/microsoft-teams/fidelity.json +45 -0
  192. gatewaysdk/environment/schema/connectors/microsoft-teams/handlers.py +1 -0
  193. gatewaysdk/environment/schema/connectors/microsoft-teams/provenance.json +851 -0
  194. gatewaysdk/environment/schema/connectors/microsoft-teams/scope.md +231 -0
  195. gatewaysdk/environment/schema/connectors/microsoft-teams/teams-types.json +1710 -0
  196. gatewaysdk/environment/schema/connectors/microsoft-teams/world.json +858 -0
  197. gatewaysdk/environment/schema/connectors/netsuite/handlers.py +32 -0
  198. gatewaysdk/environment/schema/connectors/netsuite/parity.json +50 -0
  199. gatewaysdk/environment/schema/connectors/netsuite/provenance.json +137 -0
  200. gatewaysdk/environment/schema/connectors/netsuite/scope.toml +78 -0
  201. gatewaysdk/environment/schema/connectors/netsuite/world.json +16243 -0
  202. gatewaysdk/environment/schema/connectors/salesforce/handlers.py +806 -0
  203. gatewaysdk/environment/schema/connectors/salesforce/parity.json +46 -0
  204. gatewaysdk/environment/schema/connectors/salesforce/provenance.json +143 -0
  205. gatewaysdk/environment/schema/connectors/salesforce/scope.toml +174 -0
  206. gatewaysdk/environment/schema/connectors/salesforce/world.json +4695 -0
  207. gatewaysdk/environment/schema/connectors/slack/MODEL.md +236 -0
  208. gatewaysdk/environment/schema/connectors/slack/capabilities.json +1039 -0
  209. gatewaysdk/environment/schema/connectors/slack/handlers.py +762 -0
  210. gatewaysdk/environment/schema/connectors/slack/parity.json +65 -0
  211. gatewaysdk/environment/schema/connectors/slack/provenance.json +294 -0
  212. gatewaysdk/environment/schema/connectors/slack/scope.toml +44 -0
  213. gatewaysdk/environment/schema/connectors/slack/world.json +4993 -0
  214. gatewaysdk/environment/schema/connectors/workday/handlers.py +75 -0
  215. gatewaysdk/environment/schema/connectors/workday/parity.json +36 -0
  216. gatewaysdk/environment/schema/connectors/workday/provenance.json +179 -0
  217. gatewaysdk/environment/schema/connectors/workday/scope.toml +180 -0
  218. gatewaysdk/environment/schema/connectors/workday/world.json +806 -0
  219. gatewaysdk/environment/schema/data.py +593 -0
  220. gatewaysdk/environment/schema/extract.py +263 -0
  221. gatewaysdk/environment/schema/host.py +2437 -0
  222. gatewaysdk/environment/schema/host_surfaces.py +275 -0
  223. gatewaysdk/environment/schema/platform.py +1272 -0
  224. gatewaysdk/environment/schema/scaffold.py +250 -0
  225. gatewaysdk/environment/schema/skill.py +118 -0
  226. gatewaysdk/environment/schema/skills/agents/connector-template-author.md +202 -0
  227. gatewaysdk/environment/schema/skills/connector-schema-authoring/CONNECTORS.md +331 -0
  228. gatewaysdk/environment/schema/skills/connector-schema-authoring/CONVENTIONS.md +100 -0
  229. gatewaysdk/environment/schema/skills/connector-schema-authoring/SKILL.md +313 -0
  230. gatewaysdk/environment/schema/skills/world-data-ingestion/ROWS.md +223 -0
  231. gatewaysdk/environment/schema/skills/world-data-ingestion/SKILL.md +293 -0
  232. gatewaysdk/environment/schema/skills/worlds-getting-started/SKILL.md +390 -0
  233. gatewaysdk/environment/schema/slack.py +757 -0
  234. gatewaysdk/environment/schema/snapshot.py +479 -0
  235. gatewaysdk/environment/schema/store.py +904 -0
  236. gatewaysdk/environment/schema/tasks.py +525 -0
  237. gatewaysdk/environment/schema/tools_world.py +322 -0
  238. gatewaysdk/environment/schema/validation.py +577 -0
  239. gatewaysdk/environment/schema/worker.py +78 -0
  240. gatewaysdk/environment/schema/workers.py +500 -0
  241. gatewaysdk/environment/schema/world_tests.py +336 -0
  242. gatewaysdk/environments/__init__.py +24 -0
  243. gatewaysdk/environments/client.py +486 -0
  244. gatewaysdk/environments/types.py +318 -0
  245. gatewaysdk/execution/__init__.py +15 -0
  246. gatewaysdk/execution/base.py +64 -0
  247. gatewaysdk/execution/client_server.py +443 -0
  248. gatewaysdk/execution/events.py +69 -0
  249. gatewaysdk/execution/inter_process.py +16 -0
  250. gatewaysdk/execution/shared_memory.py +282 -0
  251. gatewaysdk/experiments/__init__.py +90 -0
  252. gatewaysdk/experiments/assignment.py +177 -0
  253. gatewaysdk/experiments/client.py +877 -0
  254. gatewaysdk/experiments/exposure.py +222 -0
  255. gatewaysdk/experiments/types.py +81 -0
  256. gatewaysdk/importers/__init__.py +49 -0
  257. gatewaysdk/importers/_normalize.py +91 -0
  258. gatewaysdk/importers/builder.py +173 -0
  259. gatewaysdk/importers/client.py +95 -0
  260. gatewaysdk/importers/langsmith.py +196 -0
  261. gatewaysdk/importers/recipes.py +249 -0
  262. gatewaysdk/instrumentation/__init__.py +300 -0
  263. gatewaysdk/instrumentation/agentops.py +314 -0
  264. gatewaysdk/instrumentation/agentops_langchain.py +45 -0
  265. gatewaysdk/instrumentation/base.py +119 -0
  266. gatewaysdk/instrumentation/litellm.py +83 -0
  267. gatewaysdk/instrumentation/registry.py +273 -0
  268. gatewaysdk/instrumentation/vllm.py +81 -0
  269. gatewaysdk/instrumentation/weave.py +500 -0
  270. gatewaysdk/integrations/__init__.py +15 -0
  271. gatewaysdk/integrations/gateway/__init__.py +11 -0
  272. gatewaysdk/integrations/gateway/client.py +171 -0
  273. gatewaysdk/integrations/tool_access.py +549 -0
  274. gatewaysdk/litagent/__init__.py +11 -0
  275. gatewaysdk/litagent/decorator.py +536 -0
  276. gatewaysdk/litagent/litagent.py +252 -0
  277. gatewaysdk/llm_proxy.py +1742 -0
  278. gatewaysdk/logging.py +370 -0
  279. gatewaysdk/memory.py +278 -0
  280. gatewaysdk/personas.py +186 -0
  281. gatewaysdk/platform/__init__.py +17 -0
  282. gatewaysdk/platform/builder.py +221 -0
  283. gatewaysdk/platform/compatibility.py +67 -0
  284. gatewaysdk/platform/manifest.py +185 -0
  285. gatewaysdk/platform/orchestrator.py +901 -0
  286. gatewaysdk/platform/registry.py +122 -0
  287. gatewaysdk/platform/worker.py +864 -0
  288. gatewaysdk/replay/__init__.py +1032 -0
  289. gatewaysdk/replay/pytest.py +56 -0
  290. gatewaysdk/reward.py +7 -0
  291. gatewaysdk/run.py +1781 -0
  292. gatewaysdk/runner/__init__.py +11 -0
  293. gatewaysdk/runner/agent.py +878 -0
  294. gatewaysdk/runner/base.py +182 -0
  295. gatewaysdk/runner/legacy.py +309 -0
  296. gatewaysdk/security.py +700 -0
  297. gatewaysdk/semconv.py +170 -0
  298. gatewaysdk/server.py +399 -0
  299. gatewaysdk/sessions.py +282 -0
  300. gatewaysdk/store/__init__.py +45 -0
  301. gatewaysdk/store/base.py +908 -0
  302. gatewaysdk/store/client_server.py +2093 -0
  303. gatewaysdk/store/collection/__init__.py +30 -0
  304. gatewaysdk/store/collection/base.py +587 -0
  305. gatewaysdk/store/collection/memory.py +970 -0
  306. gatewaysdk/store/collection/mongo.py +1412 -0
  307. gatewaysdk/store/collection_based.py +1823 -0
  308. gatewaysdk/store/gateway.py +983 -0
  309. gatewaysdk/store/gateway_listener.py +465 -0
  310. gatewaysdk/store/listener.py +58 -0
  311. gatewaysdk/store/memory.py +396 -0
  312. gatewaysdk/store/mongo.py +165 -0
  313. gatewaysdk/store/redis_stream.py +517 -0
  314. gatewaysdk/store/sqlite.py +3 -0
  315. gatewaysdk/store/threading.py +370 -0
  316. gatewaysdk/store/utils.py +142 -0
  317. gatewaysdk/tracer/__init__.py +14 -0
  318. gatewaysdk/tracer/base.py +286 -0
  319. gatewaysdk/tracer/dummy.py +106 -0
  320. gatewaysdk/tracer/otel.py +559 -0
  321. gatewaysdk/tracing/__init__.py +110 -0
  322. gatewaysdk/tracing/api.py +808 -0
  323. gatewaysdk/tracing/attributes.py +9 -0
  324. gatewaysdk/tracing/context.py +272 -0
  325. gatewaysdk/tracing/exporters/__init__.py +10 -0
  326. gatewaysdk/tracing/exporters/gateway.py +228 -0
  327. gatewaysdk/tracing/identity.py +288 -0
  328. gatewaysdk/tracing/init.py +620 -0
  329. gatewaysdk/tracing/instrumentors/__init__.py +15 -0
  330. gatewaysdk/tracing/instrumentors/claude_agent_sdk.py +766 -0
  331. gatewaysdk/tracing/instrumentors/instrumentation_principles.md +294 -0
  332. gatewaysdk/tracing/instrumentors/registry.py +352 -0
  333. gatewaysdk/tracing/mapping.py +729 -0
  334. gatewaysdk/tracing/processors.py +393 -0
  335. gatewaysdk/tracing/push.py +617 -0
  336. gatewaysdk/tracing/push_models.py +247 -0
  337. gatewaysdk/tracing/semconv.py +294 -0
  338. gatewaysdk/tracing/span_builder.py +356 -0
  339. gatewaysdk/trainer/__init__.py +6 -0
  340. gatewaysdk/trainer/init_utils.py +263 -0
  341. gatewaysdk/trainer/legacy.py +359 -0
  342. gatewaysdk/trainer/registry.py +12 -0
  343. gatewaysdk/trainer/trainer.py +638 -0
  344. gatewaysdk/types/__init__.py +63 -0
  345. gatewaysdk/types/core.py +556 -0
  346. gatewaysdk/types/resources.py +204 -0
  347. gatewaysdk/types/tracer.py +515 -0
  348. gatewaysdk/types/tracing.py +162 -0
  349. gatewaysdk/users.py +251 -0
  350. gatewaysdk/utils/__init__.py +1 -0
  351. gatewaysdk/utils/id.py +18 -0
  352. gatewaysdk/utils/metrics.py +1025 -0
  353. gatewaysdk/utils/otel.py +550 -0
  354. gatewaysdk/utils/otlp.py +556 -0
  355. gatewaysdk/utils/redact.py +22 -0
  356. gatewaysdk/utils/server_launcher.py +1045 -0
  357. gatewaysdk/utils/system_snapshot.py +90 -0
  358. gatewaysdk/verl/__init__.py +8 -0
  359. gatewaysdk/verl/__main__.py +6 -0
  360. gatewaysdk/verl/async_server.py +46 -0
  361. gatewaysdk/verl/config.yaml +27 -0
  362. gatewaysdk/verl/daemon.py +1154 -0
  363. gatewaysdk/verl/dataset.py +44 -0
  364. gatewaysdk/verl/entrypoint.py +248 -0
  365. gatewaysdk/verl/trainer.py +549 -0
  366. gatewaysdk/world_browser.py +748 -0
  367. gatewaysdk/world_data.py +453 -0
  368. gatewaysdk/world_sessions.py +978 -0
  369. gatewaysdk/world_tasks.py +285 -0
  370. gatewaysdk/world_tools.py +115 -0
  371. gatewaysdk/worlds.py +639 -0
  372. gatewaysdk-0.3.2.dist-info/METADATA +236 -0
  373. gatewaysdk-0.3.2.dist-info/RECORD +376 -0
  374. gatewaysdk-0.3.2.dist-info/WHEEL +4 -0
  375. gatewaysdk-0.3.2.dist-info/entry_points.txt +5 -0
  376. gatewaysdk-0.3.2.dist-info/licenses/LICENSE +19 -0
@@ -0,0 +1,231 @@
1
+ # Microsoft Teams collaboration contract — scope and mapping
2
+
3
+ Decision recorded **2026-09-07, before authoring the final model**. Domain
4
+ `urn:gateway:connector:microsoft-teams`, version `1.0.0`; `gateway-world/1`.
5
+ Shape: **base**. Assessment: **provisional subset**, researched against Microsoft
6
+ Graph v1.0, tested with synthetic data. No tenant overlay is necessary for this
7
+ bounded collaboration model. No live-response validation or tool behavior is claimed.
8
+
9
+ This file owns the coverage and mapper policies. Source identities and hashes
10
+ live in `provenance.json`; actual structural/synthetic checks and skipped live
11
+ validation live in `fidelity.json`. No captured vendor goldens, replay score, or
12
+ `mimic` claim is supplied. `world.json` and `teams-types.json` enforce the model;
13
+ the scope, provenance, and fidelity files add no executable assertions.
14
+
15
+ ## Identity and scope matrix
16
+
17
+ `C` below is `contextTenantId`, a required ingestion partition from the authorized
18
+ capture tenant. It is **not resource ownership**. Vendor `tenantId` remains separate
19
+ and can identify a host/creator/user/remote tenant. Every key component is a
20
+ nonempty opaque string. No names, emails, labels, user IDs, or resource IDs have
21
+ additional global uniqueness constraints.
22
+
23
+ | Entity (`teams_` prefix) | Primary key after C | Graph v1.0 authority | Included state and nested types | Relationships / cardinality |
24
+ | --- | --- | --- | --- | --- |
25
+ | teams | id | team | id, classification, classSettings, createdDateTime, description, displayName, funSettings, guestSettings, internalId, isArchived, memberSettings, messagingSettings, specialization, summary, tenantId, visibility, webUrl | 1:N channels, team members, tags; primaryChannel retained as external contextual reference |
26
+ | channels | teamId, id | channel | All documented stored structural fields: createdDateTime, description, displayName, email, isArchived, isFavoriteByDefault, layoutType, membershipType, migrationMode, originalCreatedDateTime, summary, tenantId, webUrl | Exactly one captured **host** team; 1:N members, root messages, sharing records |
27
+ | incoming_channels | teamId, channelUrl | team-list-incomingchannels | Exact returned @odata.id as channelUrl; structured channel projection | Exactly one captured **receiving** team. Referenced host/channel can be outside capture; no fabricated host team |
28
+ | shared_channel_teams | teamId, channelId, tenantId, id | sharedWithChannelTeamInfo | Remote team id, tenantId, displayName, isHostTeam; allowedMembers visibility | Exactly one captured channel; referenced remote team external. Remote tenantId required here to scope overlapping team IDs |
29
+ | chats | id | chat | chatType, createdDateTime, isHiddenForAllMembers, lastUpdatedDateTime, migrationMode, onlineMeetingInfo, originalCreatedDateTime, tenantId, topic, webUrl; structured lastMessagePreview | 1:N members/messages/views. Meeting/calendar links external |
30
+ | chat_views | chatId, viewerTenantId, viewerId | chat.viewpoint, chatViewpoint | viewpoint (isHidden, lastMessageReadDateTime), including explicit null | Exactly one captured chat; viewer is an external identity supplied by delegated request context |
31
+ | team_members | teamId, id | conversationMember + concrete subtypes | displayName, roles, visibleHistoryStartDateTime; typed memberIdentity; originalSourceMembershipUrl annotation | Exactly one team; membership id is **not userId**; external user identity |
32
+ | channel_members | teamId, channelId, id | channel members/allMembers | Same membership representation; originalSourceMembershipUrl preserves indirect-source attribution | Exactly one channel; never infer membership in host team, especially for shared channels |
33
+ | chat_members | chatId, id | chat members | Same membership representation, including history visibility | Exactly one chat; roster-size and access rules deferred |
34
+ | channel_messages | teamId, channelId, id | chatMessage, channel-list-messages | body, sender, mentions, reactions, attachments, eventDetail, history, policyViolation, timestamps, etag, importance, locale, messageType, subject, summary, webUrl, channelIdentity; replyToId/chatId absent or null | Exactly one channel; 1:N replies and hosted references |
35
+ | channel_replies | teamId, channelId, replyToId, id | chatMessage-list-replies | Same message payload; required replyToId from enclosing root context | Exactly one root message in the **same** channel/team/C; no reply-to-reply chain |
36
+ | chat_messages | chatId, id | chatMessage, chat-list-messages | Same message payload; replyToId/channelIdentity absent or null; summary absent or null | Exactly one chat. No invented chat threading semantics |
37
+ | channel_hosted_contents | teamId, channelId, messageId, id | chatMessageHostedContent | Persisted hosted-content id; contentType when known | Exactly one root message; no file object or binary payload |
38
+ | reply_hosted_contents | teamId, channelId, replyToId, messageId, id | chatMessageHostedContent | Same | Exactly one scoped reply |
39
+ | chat_hosted_contents | chatId, messageId, id | chatMessageHostedContent | Same | Exactly one chat message |
40
+ | tags | teamId, id | teamworkTag | description, displayName, memberCount, tagType | Exactly one team; 1:N tag members |
41
+ | tag_members | teamId, tagId, id | teamworkTagMember | displayName, tenantId, userId | Exactly one tag; user is external, no local directory prerequisite |
42
+
43
+ All actual foreign keys target the complete parent primary key with restrictive
44
+ deletion. A coherent batch may insert children before parents. Deleting a parent
45
+ requires explicit deletion of every dependent in the same transaction. The model
46
+ has no cascading deletes, upserts, placeholder parents, or placeholder users.
47
+
48
+ Separate message tables avoid nullable/discriminator key components and retain
49
+ Graph's documented chat/channel/**reply-to-message** identity scopes. Even a root
50
+ and its reply may share a vendor id. A shared table with a bare id or nullable
51
+ parent would erase those distinctions. Hosted-content IDs inherit every parent
52
+ component; evidence identity never replaces these keys.
53
+
54
+ Incoming channels are observations of an external reference, keyed by the exact
55
+ Graph @odata.id URL within the receiving team, not a second authoritative hosted
56
+ channel. Do not parse opaque Teams webUrl values or make their display URLs into
57
+ keys. Resolving an incoming reference into captured hosted channel state requires
58
+ verified host context and its real parent record. Cross-tenant @odata.id transport
59
+ quirks described by Microsoft remain future connector work.
60
+
61
+ ## Projection, requiredness, nullability, and visibility
62
+
63
+ This is a **keyed projection contract**, not a Graph create-request contract.
64
+ Only primary/foreign-key context and nested variant discriminators are required.
65
+ All other supported properties may be absent (`$select`, permission differences,
66
+ resource shape, or missing expansion). A Graph non-nullable property rejects null
67
+ **when present**; nullable fields retain null. This allows id-only projections,
68
+ not id-less records, and never invents values from Graph create defaults.
69
+
70
+ Scalar nullability follows pinned production CSDL unless a documented discrepancy
71
+ is recorded below. Collection properties are arrays, with item nullability from
72
+ CSDL; they are not nullable collections. Missing, [], null items, empty strings,
73
+ false, zero and explicit scalar null survive without coercion. Navigation
74
+ collections are separated into entities and observation metadata; a Graph null
75
+ navigation representation is recorded as such, never converted to [].
76
+
77
+ Optional `relationshipCoverage` is a closed map of declared navigation names to
78
+ `{status, nextLink?, count?}`. Status is `notRequested`, `partial`, `complete`, or
79
+ `null`. Missing metadata means unknown. `complete` describes the requested view
80
+ under its filter and authorization, never omniscient state. Retain next links;
81
+ expanded replies can be independently paged. A complete *batch* does not prune.
82
+ The contract checks metadata shape, **not its truth or agreement with row counts**.
83
+ Absent collections must never become an implicit complete/empty assertion.
84
+
85
+ `apply_batch.update` shallow-merges fields; nested properties replace whole nested
86
+ values. A partial later capture must not erase uncaptured state. A future mapper
87
+ must explicitly merge nested projections or supply a verified replacement, retain
88
+ field/evidence lineage, and refrain from interpreting missing fields as deletion.
89
+
90
+ ## Nested payloads and normalization
91
+
92
+ - Graph camelCase names and string IDs are retained. Entity-root `@odata.type`,
93
+ `@odata.id`, and `@odata.etag` become `odataType`, `odataId`, and `odataEtag`.
94
+ Nested payloads keep literal annotations where declared. Collection envelope
95
+ @odata.context and continuations remain capture evidence/coverage metadata.
96
+ - Graph inheritance is flattened into direct closed entity objects. Membership
97
+ subtype-specific fields move into `memberIdentity`, a closed discriminated union
98
+ with `type` equal to the Graph short type name. Strip only the optional leading
99
+ `#microsoft.graph.` / `microsoft.graph.` from an observed membership @odata.type.
100
+ Do not infer subtype from email, userId, or displayName. If not observed, retain
101
+ the keyed common projection and defer subtype fields until verified.
102
+ - Supported member variants: aadUserConversationMember (email, tenantId, userId),
103
+ anonymousGuestConversationMember (anonymousGuestId),
104
+ azureCommunicationServicesUserConversationMember (azureCommunicationServicesId),
105
+ microsoftAccountUserConversationMember (userId), phoneUserConversationMember
106
+ (phoneNumber), skypeForBusinessUserConversationMember (tenantId, userId), and
107
+ skypeUserConversationMember (skypeId). No identities are fabricated for guests,
108
+ external users, anonymous users, applications, or departed members.
109
+ - `roles` is a string collection, not a closed enum. [] is an ordinary member;
110
+ owner/guest are qualifiers. Preserve combinations and future qualifiers.
111
+ Do not derive authorization or infer that every external owner administers the
112
+ resource. The common resource page's misleading id description does not justify
113
+ replacing the opaque membership id with userId.
114
+ - Identity sets preserve user, application, device, and documented supporting
115
+ identity variants. Identity details, tenantId, userIdentityType,
116
+ applicationIdentityType, conversationIdentityType, and tag targets are structured.
117
+ External identity IDs are not foreign keys to an invented Entra directory.
118
+ - Bodies retain `{contentType, content}` (HTML/text), not Slack-like text.
119
+ Mentions retain numeric id, mentionText and structured target. Reactions retain
120
+ user, timestamp, type, displayName and custom-content URL. Reaction type is an
121
+ open string (including emoji and custom), **not** a six-value closed enum.
122
+ - Attachments retain all seven documented properties. `content` remains the
123
+ Graph **string**, including serialized card/forwarded-message JSON, rather than
124
+ reparsing it into an arbitrary object. contentType remains open to Bot Framework
125
+ media types. Attachments are not driveItem/file records. content/contentUrl
126
+ exclusivity is enforced by a nested union allowing either or neither non-null.
127
+ - Known eventMessageDetail subtypes retain structured event payloads and identity
128
+ sets. Call/recording/transcript fields are references/metadata only, not meeting
129
+ infrastructure. Edm.Duration stays a string; Gateway cannot validate duration
130
+ syntax. Unknown concrete event or identity types/fields reject for review;
131
+ raw evidence must be retained for a future explicit contract revision.
132
+ - Timestamps use Gateway's RFC3339 date-time profile, including fractions and
133
+ offsets; URLs/GUIDs/durations remain strings, with no invented format checker.
134
+ IDs have no inherited Slack length cap. Counts and mention indices are nonnegative. Integer fields use Int32 bounds where
135
+ Microsoft says Int32; no decimal/64-bit numeric values outside Gateway's safe
136
+ integer range are introduced.
137
+ - Flags enums (message actions and DLP flags) become arrays of distinct known
138
+ strings, split from Graph comma-separated flags. A scalar null remains null;
139
+ `none`/`actionUndefined` remains its named value, not an invented empty array.
140
+ Member spelling follows CSDL wire values. No unknown string is silently changed
141
+ to unknownFutureValue. Evolvable enum sentinels are preserved when returned;
142
+ new named values require a researched version update. This does not authorize
143
+ sending sentinel values in Graph create/update operations.
144
+
145
+ ## Exclusions and adjacent-resource decisions
146
+
147
+ | Family / field | Decision and implication |
148
+ | --- | --- |
149
+ | Team firstChannelName and team/channel creation-mode annotations | Create/migration operation inputs, not durable GET/list state; excluded. Read-only fields above remain ingestible. |
150
+ | Identity thumbnails; identitySet.conversationIdentityType | Thumbnails belong to Drive imagery and are excluded. The generic identitySet page describes the sibling conversationIdentityType as an identity object while CSDL omits it; this ambiguous dynamic field is excluded. The documented Teams conversation.conversationIdentityType enum is included. |
151
+ | FilesFolderReference extra driveItem properties; parentReference.sharepointIds; folder.view | File/reference projection only: opaque driveId/siteId/item ids, names, URLs, paths and childCount. SharePoint REST compatibility identifiers, folder presentation and workload facets are excluded. |
152
+ | Team group, photo, schedule, template, operations, permissionGrants | Full group/Entra, images, Shifts, template lifecycle, async workflows and permission enforcement excluded. Team id is the associated group id; no group row required. |
153
+ | Channel filesFolder | External SharePoint/Drive reference only (id, name, webUrl, parentReference, folder shape subset), no file content/library implementation. |
154
+ | Team primaryChannel | Structured external channel reference; projection may be available without a fully captured channel row. |
155
+ | Channel allMembers / sharedWithTeams.allowedMembers | Direct and indirect membership records preserved; allowedMembers list represented by visibility only in this milestone. No derived/expanded effective ACL calculation. |
156
+ | Chat viewpoint | Split into viewer-scoped chat_views; never overwrite a shared chat with whichever caller was last captured. |
157
+ | Chat pinnedMessages / targetedMessages | Excluded; pin/unpin events may be retained without claiming a complete pin inventory or targeted-message delivery. |
158
+ | Tabs and installed/enabled apps | Inventories/configuration/consents excluded. Message attachment teamsAppId and tab/app event references preserved. Chat/team collaboration does not require fake app or tab rows. |
159
+ | Tags/tag memberships | Included for collaboration mentions. Scheduled tag type retained as documented reference state; Shifts creation/behavior excluded. |
160
+ | Hosted content contentBytes / temporaryId | Binary request payload and transient upload identifier excluded. Stable IDs and contentType when independently known are retained; retrieval bytes belong in evidence/storage, not a file workload. |
161
+ | Open extensions, arbitrary dynamic properties, beta-only fields | Excluded from closed model; reject and retain evidence for review. Team classification remains an open string; no required Entra overlay. |
162
+ | Outlook, Planner, OneDrive/SharePoint, telephony, recordings, meetings | No workload entities/operations. Necessary URLs, IDs, event metadata and organizer identities remain external references. |
163
+
164
+ ## Evidence discrepancies and chosen interpretation
165
+
166
+ 1. **Membership id**: common resource tables call it a user ID; endpoint guidance
167
+ says membership IDs are opaque, and concrete-member docs distinguish id from
168
+ userId. Keep the membership record id scoped by its parent.
169
+ 2. **Open identity types**: production CSDL lists only inherited id/displayName
170
+ (and minimal identitySet slots), while Microsoft documents tenantId and richer
171
+ Teams variants as dynamic/open properties. Explicitly author those documented
172
+ fields; do not permit arbitrary JSON everywhere.
173
+ 3. **Team classSettings** is in the v1.0 resource docs but absent from production
174
+ team CSDL; include the documented v1.0 type/setting. **scheduled** teamworkTagType
175
+ is documented in v1.0 but absent from pinned metadata; include it, without
176
+ implementing Shifts. **unknownFutureValue** message importance is in production
177
+ CSDL but omitted from its property table; accept the CSDL sentinel.
178
+ 4. **phoneUserConversationMember** is in production v1.0 CSDL but has no resource
179
+ page at the pinned docs revision (404). Include the metadata-backed phoneNumber
180
+ variant, recording this evidence limit; do not label it beta or live-validated.
181
+ 5. **DLP enum spelling/flags**: prose capitalizes names and describes flag behavior;
182
+ CSDL defines lowercase wire names and IsFlags. Normalize to arrays of those
183
+ exact members; contradictory permission flags remain mapper validation work.
184
+ 6. **Expanded reply page size**: channel-list-messages describes both 200 and 1,000
185
+ replies in different sections. Do not enforce either size; follow returned
186
+ replies@odata.nextLink and record partial visibility until pagination ends.
187
+ 7. Nullable=false means value nullability, not unconditional field presence under
188
+ partial projection. Keys are deliberately stricter ingestion prerequisites.
189
+ Collection Nullable applies to items, not whether a collection itself is null
190
+ (OASIS CSDL XML 4.01 §7.2.1); navigation nulls are retained in observation metadata.
191
+
192
+ ## Enforcement boundary and future mapper obligations
193
+
194
+ Before persisting, a mapper must establish authorized C, actual vendor id, and
195
+ all parent context from the request path/verified expansion. Channel teamId is the
196
+ **host**, never an incoming-channel receiving team. Reply replyToId comes from the
197
+ root route and must agree with a provided body value. Chat chatId and tag teamId
198
+ are similarly supplied when omitted. Verify redundant channelIdentity/tenant/id
199
+ claims against route context; the dialect cannot compare arbitrary nested fields.
200
+ Shared-team edges without a known tenantId and all other keyless projections stay
201
+ in evidence until identity is resolved. Never invent a concatenated vendor ID.
202
+
203
+ Map only supported properties and record exclusions in the capture/mapping report;
204
+ unknown or malformed payloads must not be silently accepted or discarded. Separate
205
+ navigation entities from their parent's structural properties, with explicit
206
+ visibility. Do not infer current roster from sender identity, historical role
207
+ events, tag counts, or partial captures. Standard/private/shared and group/1:1/
208
+ meeting cardinality/access rules, mentions matching HTML, event/type consistency,
209
+ chronological timestamps, tenant consistency, URL/duration/base64 syntax, summary
210
+ counts, and vendor permission/operation rules are **not enforced** by this contract.
211
+
212
+ DeletedDateTime preserves message deletion state and body redaction/projections;
213
+ it does not delete local rows. Explicit provider deletions require explicit
214
+ mutations and dependent deletes. Role changes and edits are authored updates,
215
+ not simulated vendor operations; `readOnly`, `writeOnly`, and defaults have no
216
+ mutation authorization or automatic-value behavior.
217
+
218
+ Persist only through `apply_batch` or schema-gated `ingest`. Batches require the
219
+ exact compiled `target = {id, version, hash}`, stable mapping id/version, ordered
220
+ explicit insert/update/delete mutations, and stable per-record `source.record`.
221
+ `source.evidence` uses `{reference, digest}` with SHA-256 **lowercase hex**
222
+ of the verified source bytes. Capture ArtifactReference digests use **base64** of
223
+ the same 32 bytes: decode/verify then encode hex, never hash the base64 text.
224
+ Evidence references identify observations, not entity primary keys. An exact
225
+ canonical batch retry returns `already_applied` with zero mutations; altered
226
+ content or mutation order under that ID rejects with `idempotency_conflict`.
227
+ `ingest` provides an atomic audit with per-key rather than per-mutation provenance;
228
+ reusing a committed session ID rejects, and raw sessions are not replayable.
229
+ Complete coverage never implies deletion. Invalid batches or SQL sessions roll
230
+ back state, lineage and retry identity. Expiring evidence may be unavailable even
231
+ though durable lineage survives; recapture is future work.