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,75 @@
1
+ """Workday world tools; every mutation goes through the schema store.
2
+
3
+ Errors are raised as ``<Fault>: <Workday validation message>``, mirroring the SOAP
4
+ faults the Workday Web Services declare (``Validation_Fault``, ``Processing_Fault``,
5
+ ``Authentication_Fault``). The message text is quoted from the pinned Staffing XSD.
6
+ """
7
+
8
+ from gateway_env import store, tool
9
+
10
+
11
+ @tool(name="get_worker")
12
+ def get_worker(Worker_ID):
13
+ return store.get("workday_workers", {"Worker_ID": Worker_ID})
14
+
15
+
16
+ def _reference_values(reference):
17
+ if not isinstance(reference, dict):
18
+ return set()
19
+ return {
20
+ item["value"]
21
+ for item in reference.get("ID", [])
22
+ if isinstance(item, dict) and isinstance(item.get("value"), str)
23
+ }
24
+
25
+
26
+ def _worker_position_id(worker):
27
+ employment = worker.get("Employment_Data") or {}
28
+ jobs = employment.get("Worker_Job_Data") or []
29
+ primary = next((job for job in jobs if job.get("Primary_Job") is True), None)
30
+ job = primary or (jobs[0] if jobs else None)
31
+ if not isinstance(job, dict):
32
+ return None
33
+ position = job.get("Position_Data") or {}
34
+ return position.get("Position_ID")
35
+
36
+
37
+ def _worker_organization_ids(worker):
38
+ organizations = worker.get("Organization_Data") or {}
39
+ memberships = organizations.get("Worker_Organization_Data") or []
40
+ result = set()
41
+ for membership in memberships:
42
+ result.update(_reference_values(membership.get("Organization_Reference")))
43
+ summary = membership.get("Organization_Data") or {}
44
+ reference_id = summary.get("Organization_Reference_ID")
45
+ if isinstance(reference_id, str):
46
+ result.add(reference_id)
47
+ return result
48
+
49
+
50
+ @tool(name="list_workers")
51
+ def list_workers(Organization_ID=None):
52
+ workers = store.list("workday_workers")
53
+ if Organization_ID is None:
54
+ return workers
55
+
56
+ positions = {
57
+ position["Position_ID"]: _reference_values(position.get("Supervisory_Organization_Reference"))
58
+ for position in store.list("workday_positions")
59
+ }
60
+ return [
61
+ worker
62
+ for worker in workers
63
+ if Organization_ID in _worker_organization_ids(worker)
64
+ or Organization_ID in positions.get(_worker_position_id(worker), set())
65
+ ]
66
+
67
+
68
+ @tool(name="hire_employee")
69
+ def hire_employee(worker):
70
+ if store.get("workday_workers", {"Worker_ID": worker["Worker_ID"]}) is not None:
71
+ raise ValueError("Validation_Fault: Applicant has already been hired.")
72
+ position_id = _worker_position_id(worker)
73
+ if position_id is None or store.get("workday_positions", {"Position_ID": position_id}) is None:
74
+ raise ValueError("Validation_Fault: Position information for a worker is required.")
75
+ return store.insert("workday_workers", worker, source={"record": "tool.hire_employee"})
@@ -0,0 +1,36 @@
1
+ {
2
+ "version": 1,
3
+ "connector": "workday",
4
+ "status": "subset",
5
+ "world_tools": ["get_worker", "hire_employee", "list_workers"],
6
+ "registration": {
7
+ "mode": "managed",
8
+ "provider": "merge",
9
+ "managed_tool_allowlist": ["get_worker", "list_workers"]
10
+ },
11
+ "surfaces": [
12
+ {
13
+ "name": "Workday agent-ready tools",
14
+ "kind": "official_tenant_mcp",
15
+ "auth": "Workday tenant OAuth and security policy",
16
+ "manifest_validation": "credential_required",
17
+ "supported_world_tools": ["get_worker", "hire_employee", "list_workers"],
18
+ "limitations": [
19
+ "No account-independent tools/list manifest was available.",
20
+ "WSDL, RaaS, custom metadata, business processes, and tenant security require describe-on-bind."
21
+ ],
22
+ "evidence": ["https://developer.workday.com/"]
23
+ },
24
+ {
25
+ "name": "Merge Agent Handler",
26
+ "kind": "managed_provider",
27
+ "auth": "Merge managed connection",
28
+ "manifest_validation": "public_catalog",
29
+ "supported_world_tools": ["get_worker", "list_workers"],
30
+ "limitations": [
31
+ "hire_employee is modeled locally but is not an exact managed-provider tool-name match."
32
+ ],
33
+ "evidence": ["https://docs.merge.dev/agent-handler/overview/"]
34
+ }
35
+ ]
36
+ }
@@ -0,0 +1,179 @@
1
+ {
2
+ "slug": "workday",
3
+ "shape": "tenant-shaped",
4
+ "label": "subset",
5
+ "prefix": "workday_",
6
+ "domain_version": "2.0.0",
7
+ "package_version": "2.0.1",
8
+ "generated_at": "2026-09-06T22:27:40Z",
9
+ "authored_by": "connector-template-author; deterministic transcription of pinned Workday Web Services WSDL/XSD declarations",
10
+ "importer": null,
11
+ "scope": "scope.toml",
12
+ "scope_hash": "sha256:f7310288b55c34b3e08eb07d67870a431074a5ae9d2c4e60ef63bbc13eda5e5e",
13
+ "world_hash_before_compile": "sha256:be58f9fd3c12ff5c2440ec031f14552e8517ca5d09b9737000f1564ca1053c44",
14
+ "coverage": {
15
+ "entities": 7,
16
+ "recursive_fields": 289,
17
+ "recursive_counting": "For each entity schema, count every object property, resolve local and base $ref, and descend object properties, array items, allOf, anyOf and oneOf. External base primitives contribute no nested properties.",
18
+ "by_entity": {
19
+ "workday_workers": 93,
20
+ "workday_positions": 36,
21
+ "workday_job_profiles": 40,
22
+ "workday_organizations": 27,
23
+ "workday_locations": 37,
24
+ "workday_compensations": 25,
25
+ "workday_time_off_requests": 31
26
+ },
27
+ "reconstruction_target_reconciliation": "The seven entities total exactly the supplied prior measurement of 289 recursive properties after replacing the shallow 34-property model with nested WWS structures. Matching the target was checked after transcription; unsupported fields were not retained merely to preserve the count."
28
+ },
29
+ "describe_on_bind": {
30
+ "required": true,
31
+ "endpoint": "GET https://<host>.workday.com/ccx/service/<tenant>/Human_Resources/<version>?wsdl",
32
+ "additional_inputs": [
33
+ "Tenant WSDL/XSD for every enabled WWS service",
34
+ "Tenant custom objects and custom fields",
35
+ "Tenant RaaS report definitions and column metadata",
36
+ "Tenant integration-system security and field visibility"
37
+ ],
38
+ "statement": "The unbound shared world is a standard WWS skeleton, never a claim about one customer's effective tenant schema. Bind-time description must reconcile service versions, tenant extensions, business-value IDs, optional response groups, RaaS columns, permissions, and endpoint availability.",
39
+ "overlay_is_additive_only": false,
40
+ "sandbox": "A consenting customer or Workday partner tenant is required. No tenant was available during this authoring run."
41
+ },
42
+ "primary_vendor_evidence": {
43
+ "preference": "An authenticated tenant WSDL is preferred because Workday is tenant-shaped. In its absence, the public versioned WWS WSDL/XSD files are the highest-fidelity machine-readable evidence and are used here instead of prose.",
44
+ "public_release": "Workday Web Services v46.2 / 2026R1",
45
+ "machine_readable_tenant_evidence_not_captured": "https://<host>.workday.com/ccx/service/<tenant>/Human_Resources/<version>?wsdl",
46
+ "byte_verification": {
47
+ "performed_at": "2026-09-06",
48
+ "result": "All six pinned public URLs were fetched and their SHA-256 digests matched the values below.",
49
+ "command_summary": "Downloaded bytes were verified with sha256sum. XML was parsed with Python xml.etree.ElementTree to count Workday-namespaced wd:enumeration declarations. Evidence bytes were kept outside the repository and were not committed."
50
+ }
51
+ },
52
+ "source": [
53
+ {
54
+ "kind": "vendor_directory",
55
+ "role": "Version and service discovery",
56
+ "title": "Workday Web Services production API file index",
57
+ "url": "https://community.workday.com/sites/default/files/file-hosting/productionapi/",
58
+ "version": "v46.2 / 2026R1",
59
+ "sha256": "798fefe55ab658f6c14f416a55594babde35f87bddb90c7bf40de7a5fcd970d8",
60
+ "bytes": 50016
61
+ },
62
+ {
63
+ "kind": "xsd",
64
+ "role": "Primary declaration source for HR response sections, nested data/reference types, occurrence constraints, XML attributes, and machine-declared reference-ID vocabularies",
65
+ "title": "Human Resources v46.2 XSD",
66
+ "url": "https://community.workday.com/sites/default/files/file-hosting/productionapi/Human_Resources/v46.2/Human_Resources.xsd",
67
+ "version": "v46.2",
68
+ "sha256": "b2d2ae89787af8d65390cab3e0ebf5cf5bd400aab8f43d330b426410d9bcc9b2",
69
+ "bytes": 3473901,
70
+ "workday_enumeration_declarations": 2251
71
+ },
72
+ {
73
+ "kind": "wsdl",
74
+ "role": "Human Resources service operations, messages, bindings, and imported schema contract",
75
+ "title": "Human Resources v46.2 WSDL",
76
+ "url": "https://community.workday.com/sites/default/files/file-hosting/productionapi/Human_Resources/v46.2/Human_Resources.wsdl",
77
+ "version": "v46.2",
78
+ "sha256": "d1966fb0eb20695ebe1774ac907b9ea3608757d78a696c8b68280677ff0853d3",
79
+ "bytes": 4013011
80
+ },
81
+ {
82
+ "kind": "xsd",
83
+ "role": "Position, job-profile, organization, and staffing reference cross-checks",
84
+ "title": "Staffing v46.2 XSD",
85
+ "url": "https://community.workday.com/sites/default/files/file-hosting/productionapi/Staffing/v46.2/Staffing.xsd",
86
+ "version": "v46.2",
87
+ "sha256": "67ab94917af909b8af6d1d5b47bf056d3924201d1acbc8e7736f52ba8a6359a5",
88
+ "bytes": 2902863,
89
+ "workday_enumeration_declarations": 2356
90
+ },
91
+ {
92
+ "kind": "xsd",
93
+ "role": "Time-off entry/request structures and typed reference-ID vocabularies",
94
+ "title": "Absence Management v46.2 XSD",
95
+ "url": "https://community.workday.com/sites/default/files/file-hosting/productionapi/Absence_Management/v46.2/Absence_Management.xsd",
96
+ "version": "v46.2",
97
+ "sha256": "ed1508dd5bb0d997df4495bef56f2139ce3a17e5aafb4fbc26d52c960acdcacb",
98
+ "bytes": 480817,
99
+ "workday_enumeration_declarations": 410
100
+ },
101
+ {
102
+ "kind": "xsd",
103
+ "role": "Effective-dated compensation structures, currency/frequency references, and occurrence constraints",
104
+ "title": "Compensation v46.2 XSD",
105
+ "url": "https://community.workday.com/sites/default/files/file-hosting/productionapi/Compensation/v46.2/Compensation.xsd",
106
+ "version": "v46.2",
107
+ "sha256": "0807139b43ef5e5d4970befab201e6c12b8867402bfa0ce6cac5851e03d9868d",
108
+ "bytes": 1080354,
109
+ "workday_enumeration_declarations": 516
110
+ }
111
+ ],
112
+ "transcription_rules": {
113
+ "field_names": "Selected WWS XML element/attribute casing and nesting are retained. Entity and normalized containment keys are the only top-level scalar projections required by gateway-world/1.",
114
+ "references": "WWS Descriptor and ID children stay nested. XML simple-content reference IDs with a required type attribute are represented as {type, value}; the type enum comes from the source type's wd:enumeration declarations.",
115
+ "types": {
116
+ "xsd:string": "JSON string, using base Id/Label/Text only where their constraints are compatible",
117
+ "xsd:boolean": "JSON boolean",
118
+ "xsd:decimal": "JSON number",
119
+ "xsd:integer": "JSON integer",
120
+ "xsd:date": "format date with exact length 10",
121
+ "xsd:dateTime": "base Timestamp",
122
+ "xsd:time": "unformatted JSON string because the source permits omission of a timezone while the dialect time profile requires one",
123
+ "unbounded element": "JSON array whose items preserve the declared item type"
124
+ },
125
+ "requiredness": "WWS minOccurs controls selected nested fields. Entire response-group sections remain optional. When read forms are merged, properties are unioned and requiredness is intersected; compiler-required root keys are the documented normalization exception.",
126
+ "nullability": "Optional WWS elements are omitted rather than made JSON-nullable; null is introduced only if an evidenced read form emits it (none in this selection).",
127
+ "enums": "Only wd:enumeration value attributes attached to selected reference ID types are closed enums. Prose examples, tenant-configured business values, and structural type names are not treated as value sets.",
128
+ "relationships": "Vendor references stay nested. The eight documented references terminate in typed ID arrays or traverse repeated sections, so they are not falsely narrowed to one scalar foreign key; the top-level normalized compensation Worker_ID relationship is enforced."
129
+ },
130
+ "declared_value_blocks_used": [
131
+ "Worker_ReferenceType ID type",
132
+ "Position_ReferenceType ID type",
133
+ "Job_Profile_ReferenceType ID type",
134
+ "Organization_ReferenceType ID type",
135
+ "Supervisory_Organization_ReferenceType ID type",
136
+ "Position_Set_ReferenceType ID type",
137
+ "Location_ReferenceType ID type",
138
+ "Country_ReferenceType ID type",
139
+ "Worker_Type_ReferenceType ID type",
140
+ "Position_Time_Type_ReferenceType ID type",
141
+ "Management_Level_ReferenceType ID type",
142
+ "Job_Category_ReferenceType ID type",
143
+ "Difficulty_to_Fill_ReferenceType ID type",
144
+ "Job_Family_ReferenceType ID type",
145
+ "Currency_ReferenceType ID type",
146
+ "Frequency_ReferenceType ID type",
147
+ "Time_Off_Entry_ReferenceType ID type",
148
+ "Time_Off_Type_ReferenceType ID type",
149
+ "Time_Off_Code_ReferenceType ID type",
150
+ "Time_Off_Reason_ReferenceType ID type"
151
+ ],
152
+ "fidelity_corrections": [
153
+ "Expanded the seven-entity 34-property skeleton to 289 recursively counted properties while retaining WWS nesting.",
154
+ "Replaced stale evidence hashes with freshly verified v46.2 bytes.",
155
+ "Corrected the claim that public Workday XSD has no declared values: v46.2 uses Workday-namespaced wd:enumeration appinfo blocks rather than xsd:enumeration restriction facets.",
156
+ "Used those machine-declared values only for selected reference-ID type attributes.",
157
+ "Removed the unsupported closed Worker_Type business enum; employee/contingent identifiers remain values of typed Worker/Worker_Type reference IDs where declared.",
158
+ "Removed invented time-off Start_Date, End_Date, and Status properties and used the declared entry Date, time, Requested, comment, and reference fields.",
159
+ "Removed flattened Country_ISO from locations rather than pretending a nested Address_Data.Country_Reference is a direct Location_Data field.",
160
+ "Replaced flattened worker organization/position fields with response-group, membership, job, position-data, and typed-reference nesting.",
161
+ "Restricted compiler-enforced relationships to the top-level normalized key and documented why typed-ID arrays and repeated-section references cannot be reduced to scalar foreign keys.",
162
+ "Updated the local tool handlers so organization filtering and hire checks traverse the nested worker shape."
163
+ ],
164
+ "unverified": [
165
+ "No authenticated tenant WSDL, custom-object metadata, RaaS definition, or effective tenant business-value set was available; all tenant-dependent claims await describe-on-bind.",
166
+ "No Workday sandbox round trip, relationship insertion matrix, golden replay, CDC/event fixture, or write-operation validation ran. These checks are skipped, not passed.",
167
+ "No customer records were accessed and no synthetic records were added; the connector layout has no supported local data-fixture surface.",
168
+ "The shared compiler supports nested scalar paths and xsd:date. These selected references still end in typed ID arrays or repeated sections; xsd:time without a timezone, decimal precision facets, XML choice/ordering, conditional response-group availability, and tenant security visibility remain unenforced.",
169
+ "Root Position_ID, Job_Profile_ID, Organization_ID, Location_ID, compensation Worker_ID/Effective_Date, and Time_Off_Entry_ID are normalized key projections required by gateway-world/1 rather than a claim that each selected WWS data section directly emits that scalar at its root.",
170
+ "The connector's three deterministic handlers are a local simulation surface, not complete WWS SOAP operation semantics."
171
+ ],
172
+ "subset_reasons": [
173
+ "Workday is tenant-shaped and no authenticated tenant describe was available.",
174
+ "Only seven standard HR entities and selected nested sections are transcribed from four very large services.",
175
+ "High-risk PII and broad adjacent HR, payroll, benefits, recruiting, talent, absence, and compensation models are excluded.",
176
+ "Tenant-defined custom fields, custom objects, organization/business-value IDs, security visibility, and RaaS columns are excluded.",
177
+ "No tenant round trip or replay goldens exist, and compiler limitations prevent full XML Schema fidelity."
178
+ ]
179
+ }
@@ -0,0 +1,180 @@
1
+ # Scope of the Workday v46.2 tenant-shaped skeleton.
2
+ #
3
+ # The public WWS schemas are the structural baseline. A bound tenant WSDL and
4
+ # custom-report (RaaS) definitions remain mandatory before this can represent a
5
+ # tenant. XML element and attribute names retain Workday casing; object
6
+ # references retain Descriptor and ID[] nesting, with simple-content IDs encoded
7
+ # as { type, value } in JSON.
8
+
9
+ slug = "workday"
10
+ shape = "tenant-shaped"
11
+ prefix = "workday_"
12
+ label = "subset"
13
+ source_kind = "wsdl-xsd"
14
+ version = "v46.2"
15
+ services = ["Human_Resources", "Staffing", "Absence_Management", "Compensation"]
16
+ importer = "none (wsdl-xsd importer is not implemented; authored from pinned declarations)"
17
+
18
+ [coverage]
19
+ entity_count = 7
20
+ recursive_field_count = 289
21
+ counting_rule = "For each entity schema, resolve local/base $ref and descend object properties, array items, and every allOf/anyOf/oneOf branch; count each encountered property."
22
+ entity_scope = "Seven standard HR entities needed by the connector brief; not percentage coverage of the four WWS services."
23
+
24
+ [entities.Worker]
25
+ entity = "workday_workers"
26
+ key = ["Worker_ID"]
27
+ source_types = ["Worker_DataType", "Personal_Information_DataType", "Worker_Employment_Information_DataType", "Worker_Organization_DataType"]
28
+ sections = ["Personal_Data", "Employment_Data", "Organization_Data"]
29
+ notes = "Get_Workers response-group sections are optional as wholes. Legal name, worker jobs/status, organization memberships, typed references, and primary business-site summaries preserve their WWS nesting."
30
+
31
+ [entities.Position]
32
+ entity = "workday_positions"
33
+ key = ["Position_ID"]
34
+ source_types = ["Position_DataType", "Position_Details_DataType", "Position_Details_Sub_DataType"]
35
+ notes = "Multiple position read/detail forms are represented as a union of properties. Requiredness is their intersection plus the scalar entity key."
36
+
37
+ [entities.Job_Profile]
38
+ entity = "workday_job_profiles"
39
+ key = ["Job_Profile_ID"]
40
+ source_types = ["Manage_Job_Profile_Event_Request_DataType", "Manage_Job_Profile_Event_Basic_DataType", "Manage_Job_Profile_Job_Family_DataType"]
41
+ notes = "Job family, management level, category, country, and organization references remain nested typed references."
42
+
43
+ [entities.Organization]
44
+ entity = "workday_organizations"
45
+ key = ["Organization_ID"]
46
+ source_types = ["Organization_DataType"]
47
+ notes = "Organization type/subtype/visibility data and superior, business-site, and container references retain vendor nesting. Tenant-configured organization-type values are not fabricated as an enum."
48
+
49
+ [entities.Location]
50
+ entity = "workday_locations"
51
+ key = ["Location_ID"]
52
+ source_types = ["Location_DataType", "External_Integration_ID_DataType", "Contact_DataType", "Internet_Email_Address_DataType", "Communication_Method_Usage_DataType"]
53
+ notes = "Integration IDs, type/time-profile data, default currency, email usage, and container organizations remain nested. Address data, including country, is excluded rather than flattened to Country_ISO."
54
+
55
+ [entities.Compensation]
56
+ entity = "workday_compensations"
57
+ key = ["Worker_ID", "Effective_Date"]
58
+ source_types = ["Employee_Base_Pay_Plan_Assignment_DataType", "Previous_System_Compensation_History_Detail_DataType"]
59
+ notes = "The brief's effective-dated row combines the union of base-pay assignment and previous-system history properties. Only the normalized containment key is required across forms."
60
+
61
+ [entities.Time_Off_Request]
62
+ entity = "workday_time_off_requests"
63
+ key = ["Time_Off_Entry_ID"]
64
+ source_types = ["Enter_Time_Off_DataType", "Enter_Time_Off_Entry_DataType", "Adjust_Time_Off_Entry_DataType"]
65
+ notes = "Enter and adjust forms use a union of properties and intersection-required semantics. The public declarations expose Date and Requested, not invented Start_Date/End_Date/Status fields."
66
+
67
+ [keys]
68
+ workday_workers = ["Worker_ID"]
69
+ workday_positions = ["Position_ID"]
70
+ workday_job_profiles = ["Job_Profile_ID"]
71
+ workday_organizations = ["Organization_ID"]
72
+ workday_locations = ["Location_ID"]
73
+ workday_compensations = ["Worker_ID", "Effective_Date"]
74
+ workday_time_off_requests = ["Time_Off_Entry_ID"]
75
+
76
+ [[relationships]]
77
+ entity = "workday_compensations"
78
+ fields = ["Worker_ID"]
79
+ target = "workday_workers"
80
+ on_delete = "restrict"
81
+ source = "Compensation rows are contained by Worker_Reference; Worker_ID is the normalized containment key."
82
+
83
+ [[nested_relationships]]
84
+ entity = "workday_workers"
85
+ path = "Employment_Data.Worker_Job_Data[].Position_Data.Position_Reference"
86
+ target = "workday_positions"
87
+ compiler_enforced = false
88
+
89
+ [[nested_relationships]]
90
+ entity = "workday_workers"
91
+ path = "Organization_Data.Worker_Organization_Data[].Organization_Reference"
92
+ target = "workday_organizations"
93
+ compiler_enforced = false
94
+
95
+ [[nested_relationships]]
96
+ entity = "workday_positions"
97
+ path = "Job_Profile_Reference"
98
+ target = "workday_job_profiles"
99
+ compiler_enforced = false
100
+
101
+ [[nested_relationships]]
102
+ entity = "workday_positions"
103
+ path = "Supervisory_Organization_Reference"
104
+ target = "workday_organizations"
105
+ compiler_enforced = false
106
+
107
+ [[nested_relationships]]
108
+ entity = "workday_positions"
109
+ path = "Location_Reference"
110
+ target = "workday_locations"
111
+ compiler_enforced = false
112
+
113
+ [[nested_relationships]]
114
+ entity = "workday_organizations"
115
+ path = "Superior_Organization_Reference"
116
+ target = "workday_organizations"
117
+ compiler_enforced = false
118
+
119
+ [[nested_relationships]]
120
+ entity = "workday_organizations"
121
+ path = "Primary_Business_Site_Reference"
122
+ target = "workday_locations"
123
+ compiler_enforced = false
124
+
125
+ [[nested_relationships]]
126
+ entity = "workday_time_off_requests"
127
+ path = "Worker_Reference"
128
+ target = "workday_workers"
129
+ compiler_enforced = false
130
+
131
+ [requiredness]
132
+ rule = "WWS minOccurs controls optional sections and fields. A nested section's own required elements apply only when that whole section is present. Entity primary-key properties are additionally required by gateway-world/1. For merged read/write forms, properties are unioned and required fields are intersected."
133
+ not_null_rule = "The pinned XSD uses omission (minOccurs=0), not JSON null, for the selected optional elements; null was not added."
134
+
135
+ [compiler_limitations]
136
+ dates = "xsd:date is represented as format date with exact length 10."
137
+ times = "xsd:time remains an unformatted string because the dialect time profile requires an explicit timezone while the source type permits omission."
138
+ decimal_precision = "xsd:decimal totalDigits/fractionDigits facets cannot be represented exactly by gateway-world/1 binary64 numbers."
139
+ xml_simple_content = "Reference ID simple content plus its required type attribute is represented as {type, value}; other selected XML attributes are represented as same-cased JSON properties."
140
+ nested_keys = "Nested scalar paths are supported, but these Workday references terminate in typed ID arrays or traverse repeated sections, so the eight relationships above remain documented rather than falsely narrowed to one scalar target ID. Required entity/containment keys remain normalized at roots."
141
+ patterns = "Any XSD pattern facets are omitted because gateway-world/1 rejects pattern."
142
+
143
+ [sandbox]
144
+ kind = "customer or Workday partner tenant only"
145
+ available_during_authoring = false
146
+ round_trip = "skipped"
147
+ golden_replay = "skipped"
148
+ reason = "No public Workday sandbox and no consenting customer/partner tenant was available on 2026-09-06. No customer data or synthetic golden was added."
149
+
150
+ [[exclusions]]
151
+ name = "Every WWS field and type not named in the entity source_types/sections above"
152
+ reason = "The four pinned services contain thousands of types. This is a broad seven-entity skeleton, not full-service coverage; tenant describe supplies the actual model."
153
+
154
+ [[exclusions]]
155
+ name = "Preferred/local/additional names and person data beyond legal-name components"
156
+ reason = "Country-configured variants and high-risk PII are outside the shared skeleton; they can be selected by a tenant overlay."
157
+
158
+ [[exclusions]]
159
+ name = "Location address, phone, web, and instant-messenger data"
160
+ reason = "Contact_Data is broad and PII-bearing. Email plus its usage section is retained; country is not flattened from Address_Data into a synthetic root field."
161
+
162
+ [[exclusions]]
163
+ name = "Benefits, payroll, recruiting, talent, qualifications, documents, photos, and transaction logs"
164
+ reason = "Separate response-group sections or WWS services outside the seven-entity HR floor."
165
+
166
+ [[exclusions]]
167
+ name = "Compensation plans other than the effective base-pay/history fields represented by workday_compensations"
168
+ reason = "Allowance, bonus, merit, commission, stock, and plan setup are separate models."
169
+
170
+ [[exclusions]]
171
+ name = "Time-off worktags, allocation dimensions, accruals, balances, and leave-of-absence models"
172
+ reason = "The entity models one time-off entry/request; accounting worktags and absence-plan state are tenant-heavy adjacent models."
173
+
174
+ [[exclusions]]
175
+ name = "Worker_Type business-value enum, Organization_Type business-value enum, and time-off Status"
176
+ reason = "The pinned schemas declare reference-ID type vocabularies in wd:enumeration blocks, but do not declare closed tenant business-value sets for these brief-requested fields. Worker type is structural/reference data; the selected time-off entry types contain no Status element."
177
+
178
+ [[exclusions]]
179
+ name = "Custom objects, custom fields, and RaaS report columns"
180
+ reason = "Tenant-defined by construction; required describe-on-bind inputs."