gatewaysdk 0.3.2__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- gatewaysdk-0.3.2/.gitignore +95 -0
- gatewaysdk-0.3.2/LICENSE +19 -0
- gatewaysdk-0.3.2/PKG-INFO +236 -0
- gatewaysdk-0.3.2/PUBLISHING.md +95 -0
- gatewaysdk-0.3.2/README.md +156 -0
- gatewaysdk-0.3.2/pyproject.toml +413 -0
- gatewaysdk-0.3.2/src/gatewaysdk/__init__.py +540 -0
- gatewaysdk-0.3.2/src/gatewaysdk/adapter/__init__.py +15 -0
- gatewaysdk-0.3.2/src/gatewaysdk/adapter/base.py +94 -0
- gatewaysdk-0.3.2/src/gatewaysdk/adapter/messages.py +270 -0
- gatewaysdk-0.3.2/src/gatewaysdk/adapter/triplet.py +1026 -0
- gatewaysdk-0.3.2/src/gatewaysdk/algorithm/__init__.py +39 -0
- gatewaysdk-0.3.2/src/gatewaysdk/algorithm/apo/__init__.py +5 -0
- gatewaysdk-0.3.2/src/gatewaysdk/algorithm/apo/apo.py +898 -0
- gatewaysdk-0.3.2/src/gatewaysdk/algorithm/apo/prompts/apply_edit_variant01.poml +22 -0
- gatewaysdk-0.3.2/src/gatewaysdk/algorithm/apo/prompts/apply_edit_variant02.poml +18 -0
- gatewaysdk-0.3.2/src/gatewaysdk/algorithm/apo/prompts/text_gradient_variant01.poml +18 -0
- gatewaysdk-0.3.2/src/gatewaysdk/algorithm/apo/prompts/text_gradient_variant02.poml +16 -0
- gatewaysdk-0.3.2/src/gatewaysdk/algorithm/apo/prompts/text_gradient_variant03.poml +107 -0
- gatewaysdk-0.3.2/src/gatewaysdk/algorithm/base.py +262 -0
- gatewaysdk-0.3.2/src/gatewaysdk/algorithm/decorator.py +264 -0
- gatewaysdk-0.3.2/src/gatewaysdk/algorithm/evals/__init__.py +7 -0
- gatewaysdk-0.3.2/src/gatewaysdk/algorithm/evals/evals.py +217 -0
- gatewaysdk-0.3.2/src/gatewaysdk/algorithm/fast.py +250 -0
- gatewaysdk-0.3.2/src/gatewaysdk/algorithm/gepa/__init__.py +61 -0
- gatewaysdk-0.3.2/src/gatewaysdk/algorithm/gepa/adapter.py +495 -0
- gatewaysdk-0.3.2/src/gatewaysdk/algorithm/gepa/gepa.py +570 -0
- gatewaysdk-0.3.2/src/gatewaysdk/algorithm/gepa/lib/__init__.py +18 -0
- gatewaysdk-0.3.2/src/gatewaysdk/algorithm/gepa/lib/adapters/README.md +12 -0
- gatewaysdk-0.3.2/src/gatewaysdk/algorithm/gepa/lib/adapters/__init__.py +0 -0
- gatewaysdk-0.3.2/src/gatewaysdk/algorithm/gepa/lib/adapters/anymaths_adapter/README.md +341 -0
- gatewaysdk-0.3.2/src/gatewaysdk/algorithm/gepa/lib/adapters/anymaths_adapter/__init__.py +1 -0
- gatewaysdk-0.3.2/src/gatewaysdk/algorithm/gepa/lib/adapters/anymaths_adapter/anymaths_adapter.py +174 -0
- gatewaysdk-0.3.2/src/gatewaysdk/algorithm/gepa/lib/adapters/anymaths_adapter/requirements.txt +1 -0
- gatewaysdk-0.3.2/src/gatewaysdk/algorithm/gepa/lib/adapters/default_adapter/README.md +0 -0
- gatewaysdk-0.3.2/src/gatewaysdk/algorithm/gepa/lib/adapters/default_adapter/__init__.py +0 -0
- gatewaysdk-0.3.2/src/gatewaysdk/algorithm/gepa/lib/adapters/default_adapter/default_adapter.py +209 -0
- gatewaysdk-0.3.2/src/gatewaysdk/algorithm/gepa/lib/adapters/dspy_adapter/README.md +7 -0
- gatewaysdk-0.3.2/src/gatewaysdk/algorithm/gepa/lib/adapters/dspy_adapter/__init__.py +0 -0
- gatewaysdk-0.3.2/src/gatewaysdk/algorithm/gepa/lib/adapters/dspy_adapter/dspy_adapter.py +307 -0
- gatewaysdk-0.3.2/src/gatewaysdk/algorithm/gepa/lib/adapters/dspy_full_program_adapter/README.md +99 -0
- gatewaysdk-0.3.2/src/gatewaysdk/algorithm/gepa/lib/adapters/dspy_full_program_adapter/dspy_program_proposal_signature.py +137 -0
- gatewaysdk-0.3.2/src/gatewaysdk/algorithm/gepa/lib/adapters/dspy_full_program_adapter/full_program_adapter.py +268 -0
- gatewaysdk-0.3.2/src/gatewaysdk/algorithm/gepa/lib/adapters/generic_rag_adapter/GEPA_RAG.md +621 -0
- gatewaysdk-0.3.2/src/gatewaysdk/algorithm/gepa/lib/adapters/generic_rag_adapter/__init__.py +56 -0
- gatewaysdk-0.3.2/src/gatewaysdk/algorithm/gepa/lib/adapters/generic_rag_adapter/evaluation_metrics.py +226 -0
- gatewaysdk-0.3.2/src/gatewaysdk/algorithm/gepa/lib/adapters/generic_rag_adapter/generic_rag_adapter.py +496 -0
- gatewaysdk-0.3.2/src/gatewaysdk/algorithm/gepa/lib/adapters/generic_rag_adapter/rag_pipeline.py +238 -0
- gatewaysdk-0.3.2/src/gatewaysdk/algorithm/gepa/lib/adapters/generic_rag_adapter/vector_store_interface.py +212 -0
- gatewaysdk-0.3.2/src/gatewaysdk/algorithm/gepa/lib/adapters/generic_rag_adapter/vector_stores/__init__.py +2 -0
- gatewaysdk-0.3.2/src/gatewaysdk/algorithm/gepa/lib/adapters/generic_rag_adapter/vector_stores/chroma_store.py +196 -0
- gatewaysdk-0.3.2/src/gatewaysdk/algorithm/gepa/lib/adapters/generic_rag_adapter/vector_stores/lancedb_store.py +422 -0
- gatewaysdk-0.3.2/src/gatewaysdk/algorithm/gepa/lib/adapters/generic_rag_adapter/vector_stores/milvus_store.py +409 -0
- gatewaysdk-0.3.2/src/gatewaysdk/algorithm/gepa/lib/adapters/generic_rag_adapter/vector_stores/qdrant_store.py +368 -0
- gatewaysdk-0.3.2/src/gatewaysdk/algorithm/gepa/lib/adapters/generic_rag_adapter/vector_stores/weaviate_store.py +418 -0
- gatewaysdk-0.3.2/src/gatewaysdk/algorithm/gepa/lib/adapters/mcp_adapter/README.md +552 -0
- gatewaysdk-0.3.2/src/gatewaysdk/algorithm/gepa/lib/adapters/mcp_adapter/__init__.py +37 -0
- gatewaysdk-0.3.2/src/gatewaysdk/algorithm/gepa/lib/adapters/mcp_adapter/mcp_adapter.py +699 -0
- gatewaysdk-0.3.2/src/gatewaysdk/algorithm/gepa/lib/adapters/mcp_adapter/mcp_client.py +364 -0
- gatewaysdk-0.3.2/src/gatewaysdk/algorithm/gepa/lib/adapters/terminal_bench_adapter/README.md +9 -0
- gatewaysdk-0.3.2/src/gatewaysdk/algorithm/gepa/lib/adapters/terminal_bench_adapter/__init__.py +0 -0
- gatewaysdk-0.3.2/src/gatewaysdk/algorithm/gepa/lib/adapters/terminal_bench_adapter/terminal_bench_adapter.py +217 -0
- gatewaysdk-0.3.2/src/gatewaysdk/algorithm/gepa/lib/api.py +382 -0
- gatewaysdk-0.3.2/src/gatewaysdk/algorithm/gepa/lib/core/__init__.py +0 -0
- gatewaysdk-0.3.2/src/gatewaysdk/algorithm/gepa/lib/core/adapter.py +180 -0
- gatewaysdk-0.3.2/src/gatewaysdk/algorithm/gepa/lib/core/data_loader.py +74 -0
- gatewaysdk-0.3.2/src/gatewaysdk/algorithm/gepa/lib/core/engine.py +379 -0
- gatewaysdk-0.3.2/src/gatewaysdk/algorithm/gepa/lib/core/result.py +233 -0
- gatewaysdk-0.3.2/src/gatewaysdk/algorithm/gepa/lib/core/state.py +636 -0
- gatewaysdk-0.3.2/src/gatewaysdk/algorithm/gepa/lib/examples/__init__.py +0 -0
- gatewaysdk-0.3.2/src/gatewaysdk/algorithm/gepa/lib/examples/aime.py +24 -0
- gatewaysdk-0.3.2/src/gatewaysdk/algorithm/gepa/lib/examples/anymaths-bench/eval_default.py +111 -0
- gatewaysdk-0.3.2/src/gatewaysdk/algorithm/gepa/lib/examples/anymaths-bench/prompt-templates/instruction_prompt.txt +9 -0
- gatewaysdk-0.3.2/src/gatewaysdk/algorithm/gepa/lib/examples/anymaths-bench/prompt-templates/optimal_prompt.txt +24 -0
- gatewaysdk-0.3.2/src/gatewaysdk/algorithm/gepa/lib/examples/anymaths-bench/train_anymaths.py +177 -0
- gatewaysdk-0.3.2/src/gatewaysdk/algorithm/gepa/lib/examples/dspy_full_program_evolution/arc_agi.ipynb +25705 -0
- gatewaysdk-0.3.2/src/gatewaysdk/algorithm/gepa/lib/examples/dspy_full_program_evolution/example.ipynb +348 -0
- gatewaysdk-0.3.2/src/gatewaysdk/algorithm/gepa/lib/examples/mcp_adapter/__init__.py +4 -0
- gatewaysdk-0.3.2/src/gatewaysdk/algorithm/gepa/lib/examples/mcp_adapter/mcp_optimization_example.py +456 -0
- gatewaysdk-0.3.2/src/gatewaysdk/algorithm/gepa/lib/examples/rag_adapter/RAG_GUIDE.md +613 -0
- gatewaysdk-0.3.2/src/gatewaysdk/algorithm/gepa/lib/examples/rag_adapter/__init__.py +9 -0
- gatewaysdk-0.3.2/src/gatewaysdk/algorithm/gepa/lib/examples/rag_adapter/rag_optimization.py +820 -0
- gatewaysdk-0.3.2/src/gatewaysdk/algorithm/gepa/lib/examples/rag_adapter/requirements-rag.txt +29 -0
- gatewaysdk-0.3.2/src/gatewaysdk/algorithm/gepa/lib/examples/terminal-bench/prompt-templates/instruction_prompt.txt +16 -0
- gatewaysdk-0.3.2/src/gatewaysdk/algorithm/gepa/lib/examples/terminal-bench/prompt-templates/terminus.txt +9 -0
- gatewaysdk-0.3.2/src/gatewaysdk/algorithm/gepa/lib/examples/terminal-bench/train_terminus.py +161 -0
- gatewaysdk-0.3.2/src/gatewaysdk/algorithm/gepa/lib/gepa_utils.py +117 -0
- gatewaysdk-0.3.2/src/gatewaysdk/algorithm/gepa/lib/logging/__init__.py +0 -0
- gatewaysdk-0.3.2/src/gatewaysdk/algorithm/gepa/lib/logging/experiment_tracker.py +187 -0
- gatewaysdk-0.3.2/src/gatewaysdk/algorithm/gepa/lib/logging/logger.py +75 -0
- gatewaysdk-0.3.2/src/gatewaysdk/algorithm/gepa/lib/logging/utils.py +103 -0
- gatewaysdk-0.3.2/src/gatewaysdk/algorithm/gepa/lib/proposer/__init__.py +0 -0
- gatewaysdk-0.3.2/src/gatewaysdk/algorithm/gepa/lib/proposer/base.py +31 -0
- gatewaysdk-0.3.2/src/gatewaysdk/algorithm/gepa/lib/proposer/merge.py +357 -0
- gatewaysdk-0.3.2/src/gatewaysdk/algorithm/gepa/lib/proposer/reflective_mutation/__init__.py +0 -0
- gatewaysdk-0.3.2/src/gatewaysdk/algorithm/gepa/lib/proposer/reflective_mutation/base.py +49 -0
- gatewaysdk-0.3.2/src/gatewaysdk/algorithm/gepa/lib/proposer/reflective_mutation/reflective_mutation.py +176 -0
- gatewaysdk-0.3.2/src/gatewaysdk/algorithm/gepa/lib/py.typed +0 -0
- gatewaysdk-0.3.2/src/gatewaysdk/algorithm/gepa/lib/strategies/__init__.py +0 -0
- gatewaysdk-0.3.2/src/gatewaysdk/algorithm/gepa/lib/strategies/batch_sampler.py +77 -0
- gatewaysdk-0.3.2/src/gatewaysdk/algorithm/gepa/lib/strategies/candidate_selector.py +50 -0
- gatewaysdk-0.3.2/src/gatewaysdk/algorithm/gepa/lib/strategies/component_selector.py +36 -0
- gatewaysdk-0.3.2/src/gatewaysdk/algorithm/gepa/lib/strategies/eval_policy.py +64 -0
- gatewaysdk-0.3.2/src/gatewaysdk/algorithm/gepa/lib/strategies/instruction_proposal.py +126 -0
- gatewaysdk-0.3.2/src/gatewaysdk/algorithm/gepa/lib/utils/__init__.py +10 -0
- gatewaysdk-0.3.2/src/gatewaysdk/algorithm/gepa/lib/utils/stop_condition.py +196 -0
- gatewaysdk-0.3.2/src/gatewaysdk/algorithm/gepa/tracing.py +105 -0
- gatewaysdk-0.3.2/src/gatewaysdk/algorithm/utils.py +177 -0
- gatewaysdk-0.3.2/src/gatewaysdk/algorithm/verl/__init__.py +5 -0
- gatewaysdk-0.3.2/src/gatewaysdk/algorithm/verl/interface.py +202 -0
- gatewaysdk-0.3.2/src/gatewaysdk/automations.py +111 -0
- gatewaysdk-0.3.2/src/gatewaysdk/benchmark_hub/README.md +88 -0
- gatewaysdk-0.3.2/src/gatewaysdk/benchmark_hub/__init__.py +119 -0
- gatewaysdk-0.3.2/src/gatewaysdk/benchmark_hub/_archive.py +189 -0
- gatewaysdk-0.3.2/src/gatewaysdk/benchmark_hub/_tar.py +6 -0
- gatewaysdk-0.3.2/src/gatewaysdk/benchmark_hub/client.py +992 -0
- gatewaysdk-0.3.2/src/gatewaysdk/benchmark_hub/dispatch_shard.py +34 -0
- gatewaysdk-0.3.2/src/gatewaysdk/benchmark_hub/eval_config.py +20 -0
- gatewaysdk-0.3.2/src/gatewaysdk/benchmark_hub/evals.py +351 -0
- gatewaysdk-0.3.2/src/gatewaysdk/benchmark_hub/harbor_adapter.py +673 -0
- gatewaysdk-0.3.2/src/gatewaysdk/benchmark_hub/path_utils.py +81 -0
- gatewaysdk-0.3.2/src/gatewaysdk/benchmark_hub/save_utils.py +101 -0
- gatewaysdk-0.3.2/src/gatewaysdk/benchmark_hub/verifiers_adapter.py +327 -0
- gatewaysdk-0.3.2/src/gatewaysdk/benchmark_hub/versioning.py +72 -0
- gatewaysdk-0.3.2/src/gatewaysdk/build.py +515 -0
- gatewaysdk-0.3.2/src/gatewaysdk/cli/__init__.py +58 -0
- gatewaysdk-0.3.2/src/gatewaysdk/cli/agent_runner.py +132 -0
- gatewaysdk-0.3.2/src/gatewaysdk/cli/http_client.py +115 -0
- gatewaysdk-0.3.2/src/gatewaysdk/cli/platform.py +4086 -0
- gatewaysdk-0.3.2/src/gatewaysdk/cli/prometheus.py +115 -0
- gatewaysdk-0.3.2/src/gatewaysdk/cli/release_gate.py +215 -0
- gatewaysdk-0.3.2/src/gatewaysdk/cli/store.py +131 -0
- gatewaysdk-0.3.2/src/gatewaysdk/cli/vllm.py +29 -0
- gatewaysdk-0.3.2/src/gatewaysdk/client.py +406 -0
- gatewaysdk-0.3.2/src/gatewaysdk/config.py +348 -0
- gatewaysdk-0.3.2/src/gatewaysdk/connectors/__init__.py +25 -0
- gatewaysdk-0.3.2/src/gatewaysdk/connectors/client.py +203 -0
- gatewaysdk-0.3.2/src/gatewaysdk/connectors/skill.py +25 -0
- gatewaysdk-0.3.2/src/gatewaysdk/connectors/template.py +106 -0
- gatewaysdk-0.3.2/src/gatewaysdk/context.py +606 -0
- gatewaysdk-0.3.2/src/gatewaysdk/emitter/__init__.py +43 -0
- gatewaysdk-0.3.2/src/gatewaysdk/emitter/annotation.py +370 -0
- gatewaysdk-0.3.2/src/gatewaysdk/emitter/exception.py +54 -0
- gatewaysdk-0.3.2/src/gatewaysdk/emitter/message.py +61 -0
- gatewaysdk-0.3.2/src/gatewaysdk/emitter/object.py +117 -0
- gatewaysdk-0.3.2/src/gatewaysdk/emitter/reward.py +320 -0
- gatewaysdk-0.3.2/src/gatewaysdk/env_var.py +156 -0
- gatewaysdk-0.3.2/src/gatewaysdk/environment/__init__.py +108 -0
- gatewaysdk-0.3.2/src/gatewaysdk/environment/_bundle.py +281 -0
- gatewaysdk-0.3.2/src/gatewaysdk/environment/_harbor.py +276 -0
- gatewaysdk-0.3.2/src/gatewaysdk/environment/_materialize.py +97 -0
- gatewaysdk-0.3.2/src/gatewaysdk/environment/_tar.py +33 -0
- gatewaysdk-0.3.2/src/gatewaysdk/environment/_world.py +346 -0
- gatewaysdk-0.3.2/src/gatewaysdk/environment/core.py +527 -0
- gatewaysdk-0.3.2/src/gatewaysdk/environment/errors.py +58 -0
- gatewaysdk-0.3.2/src/gatewaysdk/environment/runtime.py +150 -0
- gatewaysdk-0.3.2/src/gatewaysdk/environment/schema/__init__.py +35 -0
- gatewaysdk-0.3.2/src/gatewaysdk/environment/schema/__main__.py +225 -0
- gatewaysdk-0.3.2/src/gatewaysdk/environment/schema/_slack_fidelity.py +116 -0
- gatewaysdk-0.3.2/src/gatewaysdk/environment/schema/_slack_scenario.py +183 -0
- gatewaysdk-0.3.2/src/gatewaysdk/environment/schema/api.py +1628 -0
- gatewaysdk-0.3.2/src/gatewaysdk/environment/schema/batch.py +755 -0
- gatewaysdk-0.3.2/src/gatewaysdk/environment/schema/compiler.py +615 -0
- gatewaysdk-0.3.2/src/gatewaysdk/environment/schema/conform.py +428 -0
- gatewaysdk-0.3.2/src/gatewaysdk/environment/schema/connector.py +777 -0
- gatewaysdk-0.3.2/src/gatewaysdk/environment/schema/connectors/apple-business-manager/handlers.py +17 -0
- gatewaysdk-0.3.2/src/gatewaysdk/environment/schema/connectors/apple-business-manager/parity.json +28 -0
- gatewaysdk-0.3.2/src/gatewaysdk/environment/schema/connectors/apple-business-manager/provenance.json +233 -0
- gatewaysdk-0.3.2/src/gatewaysdk/environment/schema/connectors/apple-business-manager/scope.toml +112 -0
- gatewaysdk-0.3.2/src/gatewaysdk/environment/schema/connectors/apple-business-manager/world.json +1380 -0
- gatewaysdk-0.3.2/src/gatewaysdk/environment/schema/connectors/base.json +28 -0
- gatewaysdk-0.3.2/src/gatewaysdk/environment/schema/connectors/custom/handlers.py +18 -0
- gatewaysdk-0.3.2/src/gatewaysdk/environment/schema/connectors/custom/world.json +123 -0
- gatewaysdk-0.3.2/src/gatewaysdk/environment/schema/connectors/github/handlers.py +81 -0
- gatewaysdk-0.3.2/src/gatewaysdk/environment/schema/connectors/github/parity.json +37 -0
- gatewaysdk-0.3.2/src/gatewaysdk/environment/schema/connectors/github/provenance.json +134 -0
- gatewaysdk-0.3.2/src/gatewaysdk/environment/schema/connectors/github/scope.toml +158 -0
- gatewaysdk-0.3.2/src/gatewaysdk/environment/schema/connectors/github/world.json +5869 -0
- gatewaysdk-0.3.2/src/gatewaysdk/environment/schema/connectors/google-calendar/handlers.py +23 -0
- gatewaysdk-0.3.2/src/gatewaysdk/environment/schema/connectors/google-calendar/world.json +209 -0
- gatewaysdk-0.3.2/src/gatewaysdk/environment/schema/connectors/google-drive/handlers.py +18 -0
- gatewaysdk-0.3.2/src/gatewaysdk/environment/schema/connectors/google-drive/world.json +286 -0
- gatewaysdk-0.3.2/src/gatewaysdk/environment/schema/connectors/jamf/handlers.py +34 -0
- gatewaysdk-0.3.2/src/gatewaysdk/environment/schema/connectors/jamf/parity.json +49 -0
- gatewaysdk-0.3.2/src/gatewaysdk/environment/schema/connectors/jamf/provenance.json +181 -0
- gatewaysdk-0.3.2/src/gatewaysdk/environment/schema/connectors/jamf/scope.toml +128 -0
- gatewaysdk-0.3.2/src/gatewaysdk/environment/schema/connectors/jamf/world.json +2218 -0
- gatewaysdk-0.3.2/src/gatewaysdk/environment/schema/connectors/jira/handlers.py +28 -0
- gatewaysdk-0.3.2/src/gatewaysdk/environment/schema/connectors/jira/world.json +389 -0
- gatewaysdk-0.3.2/src/gatewaysdk/environment/schema/connectors/kandji/handlers.py +38 -0
- gatewaysdk-0.3.2/src/gatewaysdk/environment/schema/connectors/kandji/parity.json +29 -0
- gatewaysdk-0.3.2/src/gatewaysdk/environment/schema/connectors/kandji/provenance.json +152 -0
- gatewaysdk-0.3.2/src/gatewaysdk/environment/schema/connectors/kandji/scope.toml +120 -0
- gatewaysdk-0.3.2/src/gatewaysdk/environment/schema/connectors/kandji/world.json +765 -0
- gatewaysdk-0.3.2/src/gatewaysdk/environment/schema/connectors/linear/handlers.py +20 -0
- gatewaysdk-0.3.2/src/gatewaysdk/environment/schema/connectors/linear/world.json +363 -0
- gatewaysdk-0.3.2/src/gatewaysdk/environment/schema/connectors/microsoft-teams/fidelity.json +45 -0
- gatewaysdk-0.3.2/src/gatewaysdk/environment/schema/connectors/microsoft-teams/handlers.py +1 -0
- gatewaysdk-0.3.2/src/gatewaysdk/environment/schema/connectors/microsoft-teams/provenance.json +851 -0
- gatewaysdk-0.3.2/src/gatewaysdk/environment/schema/connectors/microsoft-teams/scope.md +231 -0
- gatewaysdk-0.3.2/src/gatewaysdk/environment/schema/connectors/microsoft-teams/teams-types.json +1710 -0
- gatewaysdk-0.3.2/src/gatewaysdk/environment/schema/connectors/microsoft-teams/world.json +858 -0
- gatewaysdk-0.3.2/src/gatewaysdk/environment/schema/connectors/netsuite/handlers.py +32 -0
- gatewaysdk-0.3.2/src/gatewaysdk/environment/schema/connectors/netsuite/parity.json +50 -0
- gatewaysdk-0.3.2/src/gatewaysdk/environment/schema/connectors/netsuite/provenance.json +137 -0
- gatewaysdk-0.3.2/src/gatewaysdk/environment/schema/connectors/netsuite/scope.toml +78 -0
- gatewaysdk-0.3.2/src/gatewaysdk/environment/schema/connectors/netsuite/world.json +16243 -0
- gatewaysdk-0.3.2/src/gatewaysdk/environment/schema/connectors/salesforce/handlers.py +806 -0
- gatewaysdk-0.3.2/src/gatewaysdk/environment/schema/connectors/salesforce/parity.json +46 -0
- gatewaysdk-0.3.2/src/gatewaysdk/environment/schema/connectors/salesforce/provenance.json +143 -0
- gatewaysdk-0.3.2/src/gatewaysdk/environment/schema/connectors/salesforce/scope.toml +174 -0
- gatewaysdk-0.3.2/src/gatewaysdk/environment/schema/connectors/salesforce/world.json +4695 -0
- gatewaysdk-0.3.2/src/gatewaysdk/environment/schema/connectors/slack/MODEL.md +236 -0
- gatewaysdk-0.3.2/src/gatewaysdk/environment/schema/connectors/slack/capabilities.json +1039 -0
- gatewaysdk-0.3.2/src/gatewaysdk/environment/schema/connectors/slack/handlers.py +762 -0
- gatewaysdk-0.3.2/src/gatewaysdk/environment/schema/connectors/slack/parity.json +65 -0
- gatewaysdk-0.3.2/src/gatewaysdk/environment/schema/connectors/slack/provenance.json +294 -0
- gatewaysdk-0.3.2/src/gatewaysdk/environment/schema/connectors/slack/scope.toml +44 -0
- gatewaysdk-0.3.2/src/gatewaysdk/environment/schema/connectors/slack/world.json +4993 -0
- gatewaysdk-0.3.2/src/gatewaysdk/environment/schema/connectors/workday/handlers.py +75 -0
- gatewaysdk-0.3.2/src/gatewaysdk/environment/schema/connectors/workday/parity.json +36 -0
- gatewaysdk-0.3.2/src/gatewaysdk/environment/schema/connectors/workday/provenance.json +179 -0
- gatewaysdk-0.3.2/src/gatewaysdk/environment/schema/connectors/workday/scope.toml +180 -0
- gatewaysdk-0.3.2/src/gatewaysdk/environment/schema/connectors/workday/world.json +806 -0
- gatewaysdk-0.3.2/src/gatewaysdk/environment/schema/data.py +593 -0
- gatewaysdk-0.3.2/src/gatewaysdk/environment/schema/extract.py +263 -0
- gatewaysdk-0.3.2/src/gatewaysdk/environment/schema/host.py +2437 -0
- gatewaysdk-0.3.2/src/gatewaysdk/environment/schema/host_surfaces.py +275 -0
- gatewaysdk-0.3.2/src/gatewaysdk/environment/schema/platform.py +1272 -0
- gatewaysdk-0.3.2/src/gatewaysdk/environment/schema/scaffold.py +250 -0
- gatewaysdk-0.3.2/src/gatewaysdk/environment/schema/skill.py +118 -0
- gatewaysdk-0.3.2/src/gatewaysdk/environment/schema/skills/agents/connector-template-author.md +202 -0
- gatewaysdk-0.3.2/src/gatewaysdk/environment/schema/skills/connector-schema-authoring/CONNECTORS.md +331 -0
- gatewaysdk-0.3.2/src/gatewaysdk/environment/schema/skills/connector-schema-authoring/CONVENTIONS.md +100 -0
- gatewaysdk-0.3.2/src/gatewaysdk/environment/schema/skills/connector-schema-authoring/SKILL.md +313 -0
- gatewaysdk-0.3.2/src/gatewaysdk/environment/schema/skills/world-data-ingestion/ROWS.md +223 -0
- gatewaysdk-0.3.2/src/gatewaysdk/environment/schema/skills/world-data-ingestion/SKILL.md +293 -0
- gatewaysdk-0.3.2/src/gatewaysdk/environment/schema/skills/worlds-getting-started/SKILL.md +390 -0
- gatewaysdk-0.3.2/src/gatewaysdk/environment/schema/slack.py +757 -0
- gatewaysdk-0.3.2/src/gatewaysdk/environment/schema/snapshot.py +479 -0
- gatewaysdk-0.3.2/src/gatewaysdk/environment/schema/store.py +904 -0
- gatewaysdk-0.3.2/src/gatewaysdk/environment/schema/tasks.py +525 -0
- gatewaysdk-0.3.2/src/gatewaysdk/environment/schema/tools_world.py +322 -0
- gatewaysdk-0.3.2/src/gatewaysdk/environment/schema/validation.py +577 -0
- gatewaysdk-0.3.2/src/gatewaysdk/environment/schema/worker.py +78 -0
- gatewaysdk-0.3.2/src/gatewaysdk/environment/schema/workers.py +500 -0
- gatewaysdk-0.3.2/src/gatewaysdk/environment/schema/world_tests.py +336 -0
- gatewaysdk-0.3.2/src/gatewaysdk/environments/__init__.py +24 -0
- gatewaysdk-0.3.2/src/gatewaysdk/environments/client.py +486 -0
- gatewaysdk-0.3.2/src/gatewaysdk/environments/types.py +318 -0
- gatewaysdk-0.3.2/src/gatewaysdk/execution/__init__.py +15 -0
- gatewaysdk-0.3.2/src/gatewaysdk/execution/base.py +64 -0
- gatewaysdk-0.3.2/src/gatewaysdk/execution/client_server.py +443 -0
- gatewaysdk-0.3.2/src/gatewaysdk/execution/events.py +69 -0
- gatewaysdk-0.3.2/src/gatewaysdk/execution/inter_process.py +16 -0
- gatewaysdk-0.3.2/src/gatewaysdk/execution/shared_memory.py +282 -0
- gatewaysdk-0.3.2/src/gatewaysdk/experiments/__init__.py +90 -0
- gatewaysdk-0.3.2/src/gatewaysdk/experiments/assignment.py +177 -0
- gatewaysdk-0.3.2/src/gatewaysdk/experiments/client.py +877 -0
- gatewaysdk-0.3.2/src/gatewaysdk/experiments/exposure.py +222 -0
- gatewaysdk-0.3.2/src/gatewaysdk/experiments/types.py +81 -0
- gatewaysdk-0.3.2/src/gatewaysdk/importers/__init__.py +49 -0
- gatewaysdk-0.3.2/src/gatewaysdk/importers/_normalize.py +91 -0
- gatewaysdk-0.3.2/src/gatewaysdk/importers/builder.py +173 -0
- gatewaysdk-0.3.2/src/gatewaysdk/importers/client.py +95 -0
- gatewaysdk-0.3.2/src/gatewaysdk/importers/langsmith.py +196 -0
- gatewaysdk-0.3.2/src/gatewaysdk/importers/recipes.py +249 -0
- gatewaysdk-0.3.2/src/gatewaysdk/instrumentation/__init__.py +300 -0
- gatewaysdk-0.3.2/src/gatewaysdk/instrumentation/agentops.py +314 -0
- gatewaysdk-0.3.2/src/gatewaysdk/instrumentation/agentops_langchain.py +45 -0
- gatewaysdk-0.3.2/src/gatewaysdk/instrumentation/base.py +119 -0
- gatewaysdk-0.3.2/src/gatewaysdk/instrumentation/litellm.py +83 -0
- gatewaysdk-0.3.2/src/gatewaysdk/instrumentation/registry.py +273 -0
- gatewaysdk-0.3.2/src/gatewaysdk/instrumentation/vllm.py +81 -0
- gatewaysdk-0.3.2/src/gatewaysdk/instrumentation/weave.py +500 -0
- gatewaysdk-0.3.2/src/gatewaysdk/integrations/__init__.py +15 -0
- gatewaysdk-0.3.2/src/gatewaysdk/integrations/gateway/__init__.py +11 -0
- gatewaysdk-0.3.2/src/gatewaysdk/integrations/gateway/client.py +171 -0
- gatewaysdk-0.3.2/src/gatewaysdk/integrations/tool_access.py +549 -0
- gatewaysdk-0.3.2/src/gatewaysdk/litagent/__init__.py +11 -0
- gatewaysdk-0.3.2/src/gatewaysdk/litagent/decorator.py +536 -0
- gatewaysdk-0.3.2/src/gatewaysdk/litagent/litagent.py +252 -0
- gatewaysdk-0.3.2/src/gatewaysdk/llm_proxy.py +1742 -0
- gatewaysdk-0.3.2/src/gatewaysdk/logging.py +370 -0
- gatewaysdk-0.3.2/src/gatewaysdk/memory.py +278 -0
- gatewaysdk-0.3.2/src/gatewaysdk/personas.py +186 -0
- gatewaysdk-0.3.2/src/gatewaysdk/platform/__init__.py +17 -0
- gatewaysdk-0.3.2/src/gatewaysdk/platform/builder.py +221 -0
- gatewaysdk-0.3.2/src/gatewaysdk/platform/compatibility.py +67 -0
- gatewaysdk-0.3.2/src/gatewaysdk/platform/manifest.py +185 -0
- gatewaysdk-0.3.2/src/gatewaysdk/platform/orchestrator.py +901 -0
- gatewaysdk-0.3.2/src/gatewaysdk/platform/registry.py +122 -0
- gatewaysdk-0.3.2/src/gatewaysdk/platform/worker.py +864 -0
- gatewaysdk-0.3.2/src/gatewaysdk/replay/__init__.py +1032 -0
- gatewaysdk-0.3.2/src/gatewaysdk/replay/pytest.py +56 -0
- gatewaysdk-0.3.2/src/gatewaysdk/reward.py +7 -0
- gatewaysdk-0.3.2/src/gatewaysdk/run.py +1781 -0
- gatewaysdk-0.3.2/src/gatewaysdk/runner/__init__.py +11 -0
- gatewaysdk-0.3.2/src/gatewaysdk/runner/agent.py +878 -0
- gatewaysdk-0.3.2/src/gatewaysdk/runner/base.py +182 -0
- gatewaysdk-0.3.2/src/gatewaysdk/runner/legacy.py +309 -0
- gatewaysdk-0.3.2/src/gatewaysdk/security.py +700 -0
- gatewaysdk-0.3.2/src/gatewaysdk/semconv.py +170 -0
- gatewaysdk-0.3.2/src/gatewaysdk/server.py +399 -0
- gatewaysdk-0.3.2/src/gatewaysdk/sessions.py +282 -0
- gatewaysdk-0.3.2/src/gatewaysdk/store/__init__.py +45 -0
- gatewaysdk-0.3.2/src/gatewaysdk/store/base.py +908 -0
- gatewaysdk-0.3.2/src/gatewaysdk/store/client_server.py +2093 -0
- gatewaysdk-0.3.2/src/gatewaysdk/store/collection/__init__.py +30 -0
- gatewaysdk-0.3.2/src/gatewaysdk/store/collection/base.py +587 -0
- gatewaysdk-0.3.2/src/gatewaysdk/store/collection/memory.py +970 -0
- gatewaysdk-0.3.2/src/gatewaysdk/store/collection/mongo.py +1412 -0
- gatewaysdk-0.3.2/src/gatewaysdk/store/collection_based.py +1823 -0
- gatewaysdk-0.3.2/src/gatewaysdk/store/gateway.py +983 -0
- gatewaysdk-0.3.2/src/gatewaysdk/store/gateway_listener.py +465 -0
- gatewaysdk-0.3.2/src/gatewaysdk/store/listener.py +58 -0
- gatewaysdk-0.3.2/src/gatewaysdk/store/memory.py +396 -0
- gatewaysdk-0.3.2/src/gatewaysdk/store/mongo.py +165 -0
- gatewaysdk-0.3.2/src/gatewaysdk/store/redis_stream.py +517 -0
- gatewaysdk-0.3.2/src/gatewaysdk/store/sqlite.py +3 -0
- gatewaysdk-0.3.2/src/gatewaysdk/store/threading.py +370 -0
- gatewaysdk-0.3.2/src/gatewaysdk/store/utils.py +142 -0
- gatewaysdk-0.3.2/src/gatewaysdk/tracer/__init__.py +14 -0
- gatewaysdk-0.3.2/src/gatewaysdk/tracer/base.py +286 -0
- gatewaysdk-0.3.2/src/gatewaysdk/tracer/dummy.py +106 -0
- gatewaysdk-0.3.2/src/gatewaysdk/tracer/otel.py +559 -0
- gatewaysdk-0.3.2/src/gatewaysdk/tracing/__init__.py +110 -0
- gatewaysdk-0.3.2/src/gatewaysdk/tracing/api.py +808 -0
- gatewaysdk-0.3.2/src/gatewaysdk/tracing/attributes.py +9 -0
- gatewaysdk-0.3.2/src/gatewaysdk/tracing/context.py +272 -0
- gatewaysdk-0.3.2/src/gatewaysdk/tracing/exporters/__init__.py +10 -0
- gatewaysdk-0.3.2/src/gatewaysdk/tracing/exporters/gateway.py +228 -0
- gatewaysdk-0.3.2/src/gatewaysdk/tracing/identity.py +288 -0
- gatewaysdk-0.3.2/src/gatewaysdk/tracing/init.py +620 -0
- gatewaysdk-0.3.2/src/gatewaysdk/tracing/instrumentors/__init__.py +15 -0
- gatewaysdk-0.3.2/src/gatewaysdk/tracing/instrumentors/claude_agent_sdk.py +766 -0
- gatewaysdk-0.3.2/src/gatewaysdk/tracing/instrumentors/instrumentation_principles.md +294 -0
- gatewaysdk-0.3.2/src/gatewaysdk/tracing/instrumentors/registry.py +352 -0
- gatewaysdk-0.3.2/src/gatewaysdk/tracing/mapping.py +729 -0
- gatewaysdk-0.3.2/src/gatewaysdk/tracing/processors.py +393 -0
- gatewaysdk-0.3.2/src/gatewaysdk/tracing/push.py +617 -0
- gatewaysdk-0.3.2/src/gatewaysdk/tracing/push_models.py +247 -0
- gatewaysdk-0.3.2/src/gatewaysdk/tracing/semconv.py +294 -0
- gatewaysdk-0.3.2/src/gatewaysdk/tracing/span_builder.py +356 -0
- gatewaysdk-0.3.2/src/gatewaysdk/trainer/__init__.py +6 -0
- gatewaysdk-0.3.2/src/gatewaysdk/trainer/init_utils.py +263 -0
- gatewaysdk-0.3.2/src/gatewaysdk/trainer/legacy.py +359 -0
- gatewaysdk-0.3.2/src/gatewaysdk/trainer/registry.py +12 -0
- gatewaysdk-0.3.2/src/gatewaysdk/trainer/trainer.py +638 -0
- gatewaysdk-0.3.2/src/gatewaysdk/types/__init__.py +63 -0
- gatewaysdk-0.3.2/src/gatewaysdk/types/core.py +556 -0
- gatewaysdk-0.3.2/src/gatewaysdk/types/resources.py +204 -0
- gatewaysdk-0.3.2/src/gatewaysdk/types/tracer.py +515 -0
- gatewaysdk-0.3.2/src/gatewaysdk/types/tracing.py +162 -0
- gatewaysdk-0.3.2/src/gatewaysdk/users.py +251 -0
- gatewaysdk-0.3.2/src/gatewaysdk/utils/__init__.py +1 -0
- gatewaysdk-0.3.2/src/gatewaysdk/utils/id.py +18 -0
- gatewaysdk-0.3.2/src/gatewaysdk/utils/metrics.py +1025 -0
- gatewaysdk-0.3.2/src/gatewaysdk/utils/otel.py +550 -0
- gatewaysdk-0.3.2/src/gatewaysdk/utils/otlp.py +556 -0
- gatewaysdk-0.3.2/src/gatewaysdk/utils/redact.py +22 -0
- gatewaysdk-0.3.2/src/gatewaysdk/utils/server_launcher.py +1045 -0
- gatewaysdk-0.3.2/src/gatewaysdk/utils/system_snapshot.py +90 -0
- gatewaysdk-0.3.2/src/gatewaysdk/verl/__init__.py +8 -0
- gatewaysdk-0.3.2/src/gatewaysdk/verl/__main__.py +6 -0
- gatewaysdk-0.3.2/src/gatewaysdk/verl/async_server.py +46 -0
- gatewaysdk-0.3.2/src/gatewaysdk/verl/config.yaml +27 -0
- gatewaysdk-0.3.2/src/gatewaysdk/verl/daemon.py +1154 -0
- gatewaysdk-0.3.2/src/gatewaysdk/verl/dataset.py +44 -0
- gatewaysdk-0.3.2/src/gatewaysdk/verl/entrypoint.py +248 -0
- gatewaysdk-0.3.2/src/gatewaysdk/verl/trainer.py +549 -0
- gatewaysdk-0.3.2/src/gatewaysdk/world_browser.py +748 -0
- gatewaysdk-0.3.2/src/gatewaysdk/world_data.py +453 -0
- gatewaysdk-0.3.2/src/gatewaysdk/world_sessions.py +978 -0
- gatewaysdk-0.3.2/src/gatewaysdk/world_tasks.py +285 -0
- gatewaysdk-0.3.2/src/gatewaysdk/world_tools.py +115 -0
- gatewaysdk-0.3.2/src/gatewaysdk/worlds.py +639 -0
- gatewaysdk-0.3.2/uv.lock +17024 -0
|
@@ -0,0 +1,95 @@
|
|
|
1
|
+
# Byte-compiled / optimized / DLL files
|
|
2
|
+
__pycache__/
|
|
3
|
+
*.py[cod]
|
|
4
|
+
*$py.class
|
|
5
|
+
|
|
6
|
+
# C extensions
|
|
7
|
+
*.so
|
|
8
|
+
|
|
9
|
+
# Distribution / packaging
|
|
10
|
+
.Python
|
|
11
|
+
build/
|
|
12
|
+
develop-eggs/
|
|
13
|
+
dist/
|
|
14
|
+
downloads/
|
|
15
|
+
eggs/
|
|
16
|
+
.eggs/
|
|
17
|
+
lib/
|
|
18
|
+
lib64/
|
|
19
|
+
parts/
|
|
20
|
+
sdist/
|
|
21
|
+
var/
|
|
22
|
+
wheels/
|
|
23
|
+
*.egg-info/
|
|
24
|
+
.installed.cfg
|
|
25
|
+
*.egg
|
|
26
|
+
|
|
27
|
+
# Allow vendored GEPA library (hard fork)
|
|
28
|
+
!src/gatewaysdk/algorithm/gepa/lib/
|
|
29
|
+
!src/gatewaysdk/algorithm/gepa/lib/**
|
|
30
|
+
src/gatewaysdk/algorithm/gepa/lib/**/__pycache__/
|
|
31
|
+
|
|
32
|
+
# PyInstaller
|
|
33
|
+
*.manifest
|
|
34
|
+
*.spec
|
|
35
|
+
|
|
36
|
+
# Installer logs
|
|
37
|
+
pip-log.txt
|
|
38
|
+
pip-delete-this-directory.txt
|
|
39
|
+
|
|
40
|
+
# Unit test / coverage reports
|
|
41
|
+
htmlcov/
|
|
42
|
+
.tox/
|
|
43
|
+
.nox/
|
|
44
|
+
.coverage
|
|
45
|
+
.coverage.*
|
|
46
|
+
.cache
|
|
47
|
+
nosetests.xml
|
|
48
|
+
coverage.xml
|
|
49
|
+
*.cover
|
|
50
|
+
*.py,cover
|
|
51
|
+
.hypothesis/
|
|
52
|
+
.pytest_cache/
|
|
53
|
+
|
|
54
|
+
# Translations
|
|
55
|
+
*.mo
|
|
56
|
+
*.pot
|
|
57
|
+
|
|
58
|
+
# Environments
|
|
59
|
+
.env
|
|
60
|
+
.venv
|
|
61
|
+
env/
|
|
62
|
+
venv/
|
|
63
|
+
ENV/
|
|
64
|
+
env.bak/
|
|
65
|
+
venv.bak/
|
|
66
|
+
|
|
67
|
+
# IDE
|
|
68
|
+
.idea/
|
|
69
|
+
.vscode/
|
|
70
|
+
*.swp
|
|
71
|
+
*.swo
|
|
72
|
+
*~
|
|
73
|
+
|
|
74
|
+
# Jupyter Notebook
|
|
75
|
+
.ipynb_checkpoints
|
|
76
|
+
|
|
77
|
+
# pyenv
|
|
78
|
+
.python-version
|
|
79
|
+
|
|
80
|
+
# mypy
|
|
81
|
+
.mypy_cache/
|
|
82
|
+
.dmypy.json
|
|
83
|
+
dmypy.json
|
|
84
|
+
|
|
85
|
+
# Pyright
|
|
86
|
+
.pyright/
|
|
87
|
+
|
|
88
|
+
# OS
|
|
89
|
+
.DS_Store
|
|
90
|
+
Thumbs.db
|
|
91
|
+
|
|
92
|
+
# Project specific
|
|
93
|
+
data/
|
|
94
|
+
logs/
|
|
95
|
+
*.log
|
gatewaysdk-0.3.2/LICENSE
ADDED
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
The MIT License (MIT)
|
|
2
|
+
|
|
3
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
4
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
5
|
+
in the Software without restriction, including without limitation the rights
|
|
6
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
7
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
8
|
+
furnished to do so, subject to the following conditions:
|
|
9
|
+
|
|
10
|
+
The above copyright notice and this permission notice shall be included in
|
|
11
|
+
all copies or substantial portions of the Software.
|
|
12
|
+
|
|
13
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
14
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
15
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
16
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
17
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
18
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
|
19
|
+
THE SOFTWARE.
|
|
@@ -0,0 +1,236 @@
|
|
|
1
|
+
Metadata-Version: 2.5
|
|
2
|
+
Name: gatewaysdk
|
|
3
|
+
Version: 0.3.2
|
|
4
|
+
Summary: Gateway SDK for Python - tracing, worlds, evaluation and the gateway CLI runtime
|
|
5
|
+
Project-URL: Homepage, https://withgateway.ai
|
|
6
|
+
Project-URL: Documentation, https://withgateway.ai/docs
|
|
7
|
+
Project-URL: Repository, https://github.com/Gateway-Innovations/Gateway
|
|
8
|
+
Project-URL: Issues, https://github.com/Gateway-Innovations/Gateway/issues
|
|
9
|
+
Author-email: Gateway Team <team@withgateway.ai>
|
|
10
|
+
License: MIT
|
|
11
|
+
License-File: LICENSE
|
|
12
|
+
Keywords: agents,ai,evaluation,gateway,llm,observability,reinforcement-learning,training
|
|
13
|
+
Classifier: Development Status :: 4 - Beta
|
|
14
|
+
Classifier: Intended Audience :: Developers
|
|
15
|
+
Classifier: License :: OSI Approved :: MIT License
|
|
16
|
+
Classifier: Programming Language :: Python :: 3
|
|
17
|
+
Classifier: Programming Language :: Python :: 3.10
|
|
18
|
+
Classifier: Programming Language :: Python :: 3.11
|
|
19
|
+
Classifier: Programming Language :: Python :: 3.12
|
|
20
|
+
Classifier: Topic :: Scientific/Engineering :: Artificial Intelligence
|
|
21
|
+
Requires-Python: >=3.10
|
|
22
|
+
Requires-Dist: aiohttp
|
|
23
|
+
Requires-Dist: aiologic
|
|
24
|
+
Requires-Dist: fastapi
|
|
25
|
+
Requires-Dist: flask
|
|
26
|
+
Requires-Dist: gepa>=0.0.24
|
|
27
|
+
Requires-Dist: gitignore-parser>=0.1.11
|
|
28
|
+
Requires-Dist: graphviz
|
|
29
|
+
Requires-Dist: gunicorn
|
|
30
|
+
Requires-Dist: litellm>=1.74
|
|
31
|
+
Requires-Dist: openai
|
|
32
|
+
Requires-Dist: opentelemetry-api>=1.35
|
|
33
|
+
Requires-Dist: opentelemetry-exporter-otlp>=1.35
|
|
34
|
+
Requires-Dist: opentelemetry-sdk>=1.35
|
|
35
|
+
Requires-Dist: portpicker
|
|
36
|
+
Requires-Dist: psutil
|
|
37
|
+
Requires-Dist: pydantic>=2.11
|
|
38
|
+
Requires-Dist: requests>=2.31.0
|
|
39
|
+
Requires-Dist: rich
|
|
40
|
+
Requires-Dist: setproctitle
|
|
41
|
+
Requires-Dist: tomli<3,>=2.2.1; python_version < '3.11'
|
|
42
|
+
Requires-Dist: uvicorn
|
|
43
|
+
Requires-Dist: uvicorn-worker
|
|
44
|
+
Provides-Extra: agent
|
|
45
|
+
Requires-Dist: agentops>=0.4.13; extra == 'agent'
|
|
46
|
+
Requires-Dist: aiohttp>=3.8.0; extra == 'agent'
|
|
47
|
+
Requires-Dist: typer>=0.9.0; extra == 'agent'
|
|
48
|
+
Provides-Extra: apo
|
|
49
|
+
Requires-Dist: poml; extra == 'apo'
|
|
50
|
+
Provides-Extra: gpu-monitoring
|
|
51
|
+
Requires-Dist: gpustat; extra == 'gpu-monitoring'
|
|
52
|
+
Provides-Extra: mongo
|
|
53
|
+
Requires-Dist: pymongo; extra == 'mongo'
|
|
54
|
+
Provides-Extra: platform
|
|
55
|
+
Requires-Dist: httpx>=0.24.0; extra == 'platform'
|
|
56
|
+
Requires-Dist: jsonschema>=4.0.0; extra == 'platform'
|
|
57
|
+
Requires-Dist: pyyaml>=6.0; extra == 'platform'
|
|
58
|
+
Requires-Dist: typer>=0.9.0; extra == 'platform'
|
|
59
|
+
Provides-Extra: proxy
|
|
60
|
+
Requires-Dist: litellm[proxy]>=1.74; extra == 'proxy'
|
|
61
|
+
Provides-Extra: tracing
|
|
62
|
+
Requires-Dist: openinference-instrumentation-anthropic; extra == 'tracing'
|
|
63
|
+
Requires-Dist: openinference-instrumentation-litellm; extra == 'tracing'
|
|
64
|
+
Requires-Dist: openinference-instrumentation-openai; extra == 'tracing'
|
|
65
|
+
Requires-Dist: openinference-instrumentation-openai-agents; extra == 'tracing'
|
|
66
|
+
Provides-Extra: trainer
|
|
67
|
+
Requires-Dist: litellm[proxy]>=1.74; extra == 'trainer'
|
|
68
|
+
Provides-Extra: verl
|
|
69
|
+
Requires-Dist: verl>=0.5.0; extra == 'verl'
|
|
70
|
+
Requires-Dist: vllm>=0.8.4; extra == 'verl'
|
|
71
|
+
Provides-Extra: weave
|
|
72
|
+
Requires-Dist: weave>=0.52.22; extra == 'weave'
|
|
73
|
+
Provides-Extra: worker
|
|
74
|
+
Requires-Dist: bullmq>=2.19.4; extra == 'worker'
|
|
75
|
+
Requires-Dist: docker>=7.0.0; extra == 'worker'
|
|
76
|
+
Requires-Dist: httpx>=0.24.0; extra == 'worker'
|
|
77
|
+
Requires-Dist: redis>=5.0.0; extra == 'worker'
|
|
78
|
+
Requires-Dist: typer>=0.9.0; extra == 'worker'
|
|
79
|
+
Description-Content-Type: text/markdown
|
|
80
|
+
|
|
81
|
+
# GatewaySDK
|
|
82
|
+
|
|
83
|
+
[](https://badge.fury.io/py/gatewaysdk)
|
|
84
|
+
[](LICENSE)
|
|
85
|
+
|
|
86
|
+
**AI Agent Training and Evaluation Platform**
|
|
87
|
+
|
|
88
|
+
GatewaySDK is a comprehensive toolkit for training and evaluating AI agents using reinforcement learning, automatic prompt optimization, and supervised fine-tuning.
|
|
89
|
+
|
|
90
|
+
## Core Features
|
|
91
|
+
|
|
92
|
+
- Turn your agent into an optimizable beast with **minimal code changes**
|
|
93
|
+
- Build with **any** agent framework (LangChain, OpenAI Agent SDK, AutoGen, CrewAI, and more)
|
|
94
|
+
- **Selectively** optimize one or more agents in a multi-agent system
|
|
95
|
+
- Embraces **algorithms** like Reinforcement Learning, Automatic Prompt Optimization, Supervised Fine-tuning and more
|
|
96
|
+
|
|
97
|
+
## Installation
|
|
98
|
+
|
|
99
|
+
```bash
|
|
100
|
+
pip install gatewaysdk
|
|
101
|
+
```
|
|
102
|
+
|
|
103
|
+
For optional dependencies:
|
|
104
|
+
|
|
105
|
+
```bash
|
|
106
|
+
# For LLMProxy feature (note: has strict dependency pins for boto3, grpcio, uvicorn)
|
|
107
|
+
pip install 'gatewaysdk[proxy]'
|
|
108
|
+
|
|
109
|
+
# For Trainer (includes the proxy runtime it composes)
|
|
110
|
+
pip install 'gatewaysdk[trainer]'
|
|
111
|
+
|
|
112
|
+
# For GPU statistics in runner heartbeat snapshots
|
|
113
|
+
pip install 'gatewaysdk[gpu-monitoring]'
|
|
114
|
+
|
|
115
|
+
# For APO (Automatic Prompt Optimization)
|
|
116
|
+
pip install 'gatewaysdk[apo]'
|
|
117
|
+
|
|
118
|
+
# For VERL integration
|
|
119
|
+
pip install 'gatewaysdk[verl]'
|
|
120
|
+
|
|
121
|
+
# For Weave integration
|
|
122
|
+
pip install 'gatewaysdk[weave]'
|
|
123
|
+
|
|
124
|
+
# For MongoDB store
|
|
125
|
+
pip install 'gatewaysdk[mongo]'
|
|
126
|
+
```
|
|
127
|
+
|
|
128
|
+
## Quick Start
|
|
129
|
+
|
|
130
|
+
```python
|
|
131
|
+
from gatewaysdk import GatewayIngestionClient
|
|
132
|
+
|
|
133
|
+
# Reads GATEWAY_HOST, GATEWAY_PUBLIC_KEY, and GATEWAY_SECRET_KEY.
|
|
134
|
+
client = GatewayIngestionClient.from_env()
|
|
135
|
+
|
|
136
|
+
# Your agent code here...
|
|
137
|
+
```
|
|
138
|
+
|
|
139
|
+
## Gateway Ingestion Helpers
|
|
140
|
+
|
|
141
|
+
Use these helpers when you want to send external agent traces/scores directly to
|
|
142
|
+
a Gateway instance.
|
|
143
|
+
|
|
144
|
+
### 1) Gateway ingestion client
|
|
145
|
+
|
|
146
|
+
```python
|
|
147
|
+
from gatewaysdk import GatewayIngestionClient, GatewayIngestionConfig
|
|
148
|
+
|
|
149
|
+
client = GatewayIngestionClient(
|
|
150
|
+
GatewayIngestionConfig(
|
|
151
|
+
host="http://localhost:3000",
|
|
152
|
+
public_key="pk-lf-...",
|
|
153
|
+
secret_key="sk-lf-...",
|
|
154
|
+
)
|
|
155
|
+
)
|
|
156
|
+
|
|
157
|
+
# Send trace event
|
|
158
|
+
client.ingest_trace_event(
|
|
159
|
+
trace_id="trace-001",
|
|
160
|
+
name="Agent Trace",
|
|
161
|
+
input_data={"prompt": "hello"},
|
|
162
|
+
output_data={"answer": "world"},
|
|
163
|
+
session_id="session-001",
|
|
164
|
+
environment="default",
|
|
165
|
+
)
|
|
166
|
+
|
|
167
|
+
# Send scores efficiently in batches
|
|
168
|
+
client.send_scores(
|
|
169
|
+
[
|
|
170
|
+
{"name": "task_success", "value": 0.95, "dataType": "NUMERIC", "traceId": "trace-001"},
|
|
171
|
+
{"name": "safety", "value": 1, "dataType": "BOOLEAN", "traceId": "trace-001"},
|
|
172
|
+
],
|
|
173
|
+
mode="ingestion-batch",
|
|
174
|
+
)
|
|
175
|
+
```
|
|
176
|
+
|
|
177
|
+
### 2) Simple API wrapper sample (dependency-free)
|
|
178
|
+
|
|
179
|
+
For a minimal stdlib-only helper and examples, see:
|
|
180
|
+
`samples/gateway-agent-trace-wrapper/`.
|
|
181
|
+
|
|
182
|
+
## Security Wrapper
|
|
183
|
+
|
|
184
|
+
Use the security wrapper when Gateway should decide which native tools an
|
|
185
|
+
agent can see and execute. Your framework keeps owning the tools; Gateway
|
|
186
|
+
resolves policy, hides denied tools in filter/enforce modes, authorizes before
|
|
187
|
+
execution, and stamps OpenTelemetry security attributes when tracing is active.
|
|
188
|
+
|
|
189
|
+
```python
|
|
190
|
+
from gatewaysdk import GatewaySecurity
|
|
191
|
+
|
|
192
|
+
gw = GatewaySecurity.from_env(
|
|
193
|
+
agent={
|
|
194
|
+
"id": "support-triage",
|
|
195
|
+
"name": "Support Triage",
|
|
196
|
+
"version": "1.4.2",
|
|
197
|
+
}
|
|
198
|
+
)
|
|
199
|
+
|
|
200
|
+
def search_tickets(query: str) -> list[dict]:
|
|
201
|
+
return zendesk.search(query)
|
|
202
|
+
|
|
203
|
+
def delete_ticket(ticket_id: str) -> dict:
|
|
204
|
+
return zendesk.delete(ticket_id)
|
|
205
|
+
|
|
206
|
+
tools = gw.secure_tools(
|
|
207
|
+
toolset_id="zendesk",
|
|
208
|
+
provider="zendesk",
|
|
209
|
+
tools=[search_tickets, delete_ticket],
|
|
210
|
+
context={
|
|
211
|
+
"user_id": current_user.id,
|
|
212
|
+
"team_id": "support",
|
|
213
|
+
"environment": "production",
|
|
214
|
+
"trace_id": trace_id,
|
|
215
|
+
"session_id": session_id,
|
|
216
|
+
},
|
|
217
|
+
)
|
|
218
|
+
```
|
|
219
|
+
|
|
220
|
+
## CLI Usage
|
|
221
|
+
|
|
222
|
+
```bash
|
|
223
|
+
# Start the GatewaySDK server
|
|
224
|
+
msk store serve
|
|
225
|
+
|
|
226
|
+
# Run with vLLM
|
|
227
|
+
msk vllm start
|
|
228
|
+
```
|
|
229
|
+
|
|
230
|
+
## Documentation
|
|
231
|
+
|
|
232
|
+
For full documentation, visit [https://docs.gateway.dev/gatewaysdk/](https://docs.gateway.dev/gatewaysdk/)
|
|
233
|
+
|
|
234
|
+
## License
|
|
235
|
+
|
|
236
|
+
MIT License - see [LICENSE](LICENSE) for details.
|
|
@@ -0,0 +1,95 @@
|
|
|
1
|
+
# Publishing GatewaySDK to PyPI
|
|
2
|
+
|
|
3
|
+
This document describes how to set up and publish the GatewaySDK package to PyPI.
|
|
4
|
+
|
|
5
|
+
GatewaySDK is part of the Gateway monorepo and is published from `gatewaysdk/sdk/`.
|
|
6
|
+
|
|
7
|
+
## Prerequisites
|
|
8
|
+
|
|
9
|
+
1. A PyPI account (https://pypi.org/account/register/)
|
|
10
|
+
2. A TestPyPI account (https://test.pypi.org/account/register/)
|
|
11
|
+
3. The package built and ready to publish
|
|
12
|
+
|
|
13
|
+
## Setting Up Trusted Publishing (Recommended)
|
|
14
|
+
|
|
15
|
+
Trusted publishing uses OpenID Connect (OIDC) to authenticate with PyPI without needing API tokens.
|
|
16
|
+
|
|
17
|
+
### Step 1: Reserve the Package Name on PyPI
|
|
18
|
+
|
|
19
|
+
1. Go to https://pypi.org/manage/account/publishing/
|
|
20
|
+
2. Click "Add a new pending publisher"
|
|
21
|
+
3. Fill in the details:
|
|
22
|
+
- **PyPI Project Name**: `gatewaysdk`
|
|
23
|
+
- **Owner**: Your GitHub organization or username (e.g., `gateway`)
|
|
24
|
+
- **Repository name**: `gateway`
|
|
25
|
+
- **Workflow name**: `gatewaysdk-pypi-release.yml`
|
|
26
|
+
- **Environment name**: (leave blank or use `release`)
|
|
27
|
+
4. Click "Add"
|
|
28
|
+
|
|
29
|
+
### Step 2: Set Up TestPyPI (Optional but Recommended)
|
|
30
|
+
|
|
31
|
+
1. Go to https://test.pypi.org/manage/account/publishing/
|
|
32
|
+
2. Follow the same steps as above for TestPyPI (use `gatewaysdk-pypi-nightly.yml`)
|
|
33
|
+
|
|
34
|
+
### Step 3: Verify GitHub Actions
|
|
35
|
+
|
|
36
|
+
The workflows are configured in the gateway repo root `.github/workflows/`:
|
|
37
|
+
|
|
38
|
+
- `gatewaysdk-pypi-release.yml` - Publishes to PyPI when you push a tag like `gatewaysdk-v0.1.0`
|
|
39
|
+
- `gatewaysdk-pypi-nightly.yml` - Publishes nightly builds to TestPyPI
|
|
40
|
+
- `gatewaysdk-test.yml` - Runs tests on changes to `gatewaysdk/sdk/`
|
|
41
|
+
|
|
42
|
+
## Manual Publishing (Alternative)
|
|
43
|
+
|
|
44
|
+
If you need to publish manually:
|
|
45
|
+
|
|
46
|
+
```bash
|
|
47
|
+
# Install build tools
|
|
48
|
+
pip install build twine
|
|
49
|
+
|
|
50
|
+
# Build the package
|
|
51
|
+
python -m build
|
|
52
|
+
|
|
53
|
+
# Upload to TestPyPI first
|
|
54
|
+
python -m twine upload --repository testpypi dist/*
|
|
55
|
+
|
|
56
|
+
# Test installation from TestPyPI
|
|
57
|
+
pip install --index-url https://test.pypi.org/simple/ \
|
|
58
|
+
--extra-index-url https://pypi.org/simple/ gatewaysdk
|
|
59
|
+
|
|
60
|
+
# Upload to PyPI
|
|
61
|
+
python -m twine upload dist/*
|
|
62
|
+
```
|
|
63
|
+
|
|
64
|
+
## Releasing a New Version
|
|
65
|
+
|
|
66
|
+
1. Update the version in `gatewaysdk/sdk/pyproject.toml` and `gatewaysdk/sdk/src/gatewaysdk/__init__.py`
|
|
67
|
+
2. Commit the changes
|
|
68
|
+
3. Create and push a version tag (note the `gatewaysdk-` prefix):
|
|
69
|
+
```bash
|
|
70
|
+
git tag gatewaysdk-v0.1.0
|
|
71
|
+
git push origin gatewaysdk-v0.1.0
|
|
72
|
+
```
|
|
73
|
+
4. GitHub Actions will automatically build and publish to PyPI
|
|
74
|
+
|
|
75
|
+
## Version Numbering
|
|
76
|
+
|
|
77
|
+
We follow semantic versioning (SemVer):
|
|
78
|
+
|
|
79
|
+
- **MAJOR.MINOR.PATCH** (e.g., `0.1.0`)
|
|
80
|
+
- Increment MAJOR for breaking changes
|
|
81
|
+
- Increment MINOR for new features
|
|
82
|
+
- Increment PATCH for bug fixes
|
|
83
|
+
|
|
84
|
+
## Troubleshooting
|
|
85
|
+
|
|
86
|
+
### "Project not found" error
|
|
87
|
+
|
|
88
|
+
Make sure you've set up the pending publisher on PyPI before pushing the first release tag.
|
|
89
|
+
|
|
90
|
+
### "Authentication failed" error
|
|
91
|
+
|
|
92
|
+
Verify that:
|
|
93
|
+
1. The workflow file name matches what you configured on PyPI
|
|
94
|
+
2. The repository owner/name matches
|
|
95
|
+
3. The `id-token: write` permission is set in the workflow
|
|
@@ -0,0 +1,156 @@
|
|
|
1
|
+
# GatewaySDK
|
|
2
|
+
|
|
3
|
+
[](https://badge.fury.io/py/gatewaysdk)
|
|
4
|
+
[](LICENSE)
|
|
5
|
+
|
|
6
|
+
**AI Agent Training and Evaluation Platform**
|
|
7
|
+
|
|
8
|
+
GatewaySDK is a comprehensive toolkit for training and evaluating AI agents using reinforcement learning, automatic prompt optimization, and supervised fine-tuning.
|
|
9
|
+
|
|
10
|
+
## Core Features
|
|
11
|
+
|
|
12
|
+
- Turn your agent into an optimizable beast with **minimal code changes**
|
|
13
|
+
- Build with **any** agent framework (LangChain, OpenAI Agent SDK, AutoGen, CrewAI, and more)
|
|
14
|
+
- **Selectively** optimize one or more agents in a multi-agent system
|
|
15
|
+
- Embraces **algorithms** like Reinforcement Learning, Automatic Prompt Optimization, Supervised Fine-tuning and more
|
|
16
|
+
|
|
17
|
+
## Installation
|
|
18
|
+
|
|
19
|
+
```bash
|
|
20
|
+
pip install gatewaysdk
|
|
21
|
+
```
|
|
22
|
+
|
|
23
|
+
For optional dependencies:
|
|
24
|
+
|
|
25
|
+
```bash
|
|
26
|
+
# For LLMProxy feature (note: has strict dependency pins for boto3, grpcio, uvicorn)
|
|
27
|
+
pip install 'gatewaysdk[proxy]'
|
|
28
|
+
|
|
29
|
+
# For Trainer (includes the proxy runtime it composes)
|
|
30
|
+
pip install 'gatewaysdk[trainer]'
|
|
31
|
+
|
|
32
|
+
# For GPU statistics in runner heartbeat snapshots
|
|
33
|
+
pip install 'gatewaysdk[gpu-monitoring]'
|
|
34
|
+
|
|
35
|
+
# For APO (Automatic Prompt Optimization)
|
|
36
|
+
pip install 'gatewaysdk[apo]'
|
|
37
|
+
|
|
38
|
+
# For VERL integration
|
|
39
|
+
pip install 'gatewaysdk[verl]'
|
|
40
|
+
|
|
41
|
+
# For Weave integration
|
|
42
|
+
pip install 'gatewaysdk[weave]'
|
|
43
|
+
|
|
44
|
+
# For MongoDB store
|
|
45
|
+
pip install 'gatewaysdk[mongo]'
|
|
46
|
+
```
|
|
47
|
+
|
|
48
|
+
## Quick Start
|
|
49
|
+
|
|
50
|
+
```python
|
|
51
|
+
from gatewaysdk import GatewayIngestionClient
|
|
52
|
+
|
|
53
|
+
# Reads GATEWAY_HOST, GATEWAY_PUBLIC_KEY, and GATEWAY_SECRET_KEY.
|
|
54
|
+
client = GatewayIngestionClient.from_env()
|
|
55
|
+
|
|
56
|
+
# Your agent code here...
|
|
57
|
+
```
|
|
58
|
+
|
|
59
|
+
## Gateway Ingestion Helpers
|
|
60
|
+
|
|
61
|
+
Use these helpers when you want to send external agent traces/scores directly to
|
|
62
|
+
a Gateway instance.
|
|
63
|
+
|
|
64
|
+
### 1) Gateway ingestion client
|
|
65
|
+
|
|
66
|
+
```python
|
|
67
|
+
from gatewaysdk import GatewayIngestionClient, GatewayIngestionConfig
|
|
68
|
+
|
|
69
|
+
client = GatewayIngestionClient(
|
|
70
|
+
GatewayIngestionConfig(
|
|
71
|
+
host="http://localhost:3000",
|
|
72
|
+
public_key="pk-lf-...",
|
|
73
|
+
secret_key="sk-lf-...",
|
|
74
|
+
)
|
|
75
|
+
)
|
|
76
|
+
|
|
77
|
+
# Send trace event
|
|
78
|
+
client.ingest_trace_event(
|
|
79
|
+
trace_id="trace-001",
|
|
80
|
+
name="Agent Trace",
|
|
81
|
+
input_data={"prompt": "hello"},
|
|
82
|
+
output_data={"answer": "world"},
|
|
83
|
+
session_id="session-001",
|
|
84
|
+
environment="default",
|
|
85
|
+
)
|
|
86
|
+
|
|
87
|
+
# Send scores efficiently in batches
|
|
88
|
+
client.send_scores(
|
|
89
|
+
[
|
|
90
|
+
{"name": "task_success", "value": 0.95, "dataType": "NUMERIC", "traceId": "trace-001"},
|
|
91
|
+
{"name": "safety", "value": 1, "dataType": "BOOLEAN", "traceId": "trace-001"},
|
|
92
|
+
],
|
|
93
|
+
mode="ingestion-batch",
|
|
94
|
+
)
|
|
95
|
+
```
|
|
96
|
+
|
|
97
|
+
### 2) Simple API wrapper sample (dependency-free)
|
|
98
|
+
|
|
99
|
+
For a minimal stdlib-only helper and examples, see:
|
|
100
|
+
`samples/gateway-agent-trace-wrapper/`.
|
|
101
|
+
|
|
102
|
+
## Security Wrapper
|
|
103
|
+
|
|
104
|
+
Use the security wrapper when Gateway should decide which native tools an
|
|
105
|
+
agent can see and execute. Your framework keeps owning the tools; Gateway
|
|
106
|
+
resolves policy, hides denied tools in filter/enforce modes, authorizes before
|
|
107
|
+
execution, and stamps OpenTelemetry security attributes when tracing is active.
|
|
108
|
+
|
|
109
|
+
```python
|
|
110
|
+
from gatewaysdk import GatewaySecurity
|
|
111
|
+
|
|
112
|
+
gw = GatewaySecurity.from_env(
|
|
113
|
+
agent={
|
|
114
|
+
"id": "support-triage",
|
|
115
|
+
"name": "Support Triage",
|
|
116
|
+
"version": "1.4.2",
|
|
117
|
+
}
|
|
118
|
+
)
|
|
119
|
+
|
|
120
|
+
def search_tickets(query: str) -> list[dict]:
|
|
121
|
+
return zendesk.search(query)
|
|
122
|
+
|
|
123
|
+
def delete_ticket(ticket_id: str) -> dict:
|
|
124
|
+
return zendesk.delete(ticket_id)
|
|
125
|
+
|
|
126
|
+
tools = gw.secure_tools(
|
|
127
|
+
toolset_id="zendesk",
|
|
128
|
+
provider="zendesk",
|
|
129
|
+
tools=[search_tickets, delete_ticket],
|
|
130
|
+
context={
|
|
131
|
+
"user_id": current_user.id,
|
|
132
|
+
"team_id": "support",
|
|
133
|
+
"environment": "production",
|
|
134
|
+
"trace_id": trace_id,
|
|
135
|
+
"session_id": session_id,
|
|
136
|
+
},
|
|
137
|
+
)
|
|
138
|
+
```
|
|
139
|
+
|
|
140
|
+
## CLI Usage
|
|
141
|
+
|
|
142
|
+
```bash
|
|
143
|
+
# Start the GatewaySDK server
|
|
144
|
+
msk store serve
|
|
145
|
+
|
|
146
|
+
# Run with vLLM
|
|
147
|
+
msk vllm start
|
|
148
|
+
```
|
|
149
|
+
|
|
150
|
+
## Documentation
|
|
151
|
+
|
|
152
|
+
For full documentation, visit [https://docs.gateway.dev/gatewaysdk/](https://docs.gateway.dev/gatewaysdk/)
|
|
153
|
+
|
|
154
|
+
## License
|
|
155
|
+
|
|
156
|
+
MIT License - see [LICENSE](LICENSE) for details.
|