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.
- gatewaysdk/__init__.py +540 -0
- gatewaysdk/adapter/__init__.py +15 -0
- gatewaysdk/adapter/base.py +94 -0
- gatewaysdk/adapter/messages.py +270 -0
- gatewaysdk/adapter/triplet.py +1026 -0
- gatewaysdk/algorithm/__init__.py +39 -0
- gatewaysdk/algorithm/apo/__init__.py +5 -0
- gatewaysdk/algorithm/apo/apo.py +898 -0
- gatewaysdk/algorithm/apo/prompts/apply_edit_variant01.poml +22 -0
- gatewaysdk/algorithm/apo/prompts/apply_edit_variant02.poml +18 -0
- gatewaysdk/algorithm/apo/prompts/text_gradient_variant01.poml +18 -0
- gatewaysdk/algorithm/apo/prompts/text_gradient_variant02.poml +16 -0
- gatewaysdk/algorithm/apo/prompts/text_gradient_variant03.poml +107 -0
- gatewaysdk/algorithm/base.py +262 -0
- gatewaysdk/algorithm/decorator.py +264 -0
- gatewaysdk/algorithm/evals/__init__.py +7 -0
- gatewaysdk/algorithm/evals/evals.py +217 -0
- gatewaysdk/algorithm/fast.py +250 -0
- gatewaysdk/algorithm/gepa/__init__.py +61 -0
- gatewaysdk/algorithm/gepa/adapter.py +495 -0
- gatewaysdk/algorithm/gepa/gepa.py +570 -0
- gatewaysdk/algorithm/gepa/lib/__init__.py +18 -0
- gatewaysdk/algorithm/gepa/lib/adapters/README.md +12 -0
- gatewaysdk/algorithm/gepa/lib/adapters/__init__.py +0 -0
- gatewaysdk/algorithm/gepa/lib/adapters/anymaths_adapter/README.md +341 -0
- gatewaysdk/algorithm/gepa/lib/adapters/anymaths_adapter/__init__.py +1 -0
- gatewaysdk/algorithm/gepa/lib/adapters/anymaths_adapter/anymaths_adapter.py +174 -0
- gatewaysdk/algorithm/gepa/lib/adapters/anymaths_adapter/requirements.txt +1 -0
- gatewaysdk/algorithm/gepa/lib/adapters/default_adapter/README.md +0 -0
- gatewaysdk/algorithm/gepa/lib/adapters/default_adapter/__init__.py +0 -0
- gatewaysdk/algorithm/gepa/lib/adapters/default_adapter/default_adapter.py +209 -0
- gatewaysdk/algorithm/gepa/lib/adapters/dspy_adapter/README.md +7 -0
- gatewaysdk/algorithm/gepa/lib/adapters/dspy_adapter/__init__.py +0 -0
- gatewaysdk/algorithm/gepa/lib/adapters/dspy_adapter/dspy_adapter.py +307 -0
- gatewaysdk/algorithm/gepa/lib/adapters/dspy_full_program_adapter/README.md +99 -0
- gatewaysdk/algorithm/gepa/lib/adapters/dspy_full_program_adapter/dspy_program_proposal_signature.py +137 -0
- gatewaysdk/algorithm/gepa/lib/adapters/dspy_full_program_adapter/full_program_adapter.py +268 -0
- gatewaysdk/algorithm/gepa/lib/adapters/generic_rag_adapter/GEPA_RAG.md +621 -0
- gatewaysdk/algorithm/gepa/lib/adapters/generic_rag_adapter/__init__.py +56 -0
- gatewaysdk/algorithm/gepa/lib/adapters/generic_rag_adapter/evaluation_metrics.py +226 -0
- gatewaysdk/algorithm/gepa/lib/adapters/generic_rag_adapter/generic_rag_adapter.py +496 -0
- gatewaysdk/algorithm/gepa/lib/adapters/generic_rag_adapter/rag_pipeline.py +238 -0
- gatewaysdk/algorithm/gepa/lib/adapters/generic_rag_adapter/vector_store_interface.py +212 -0
- gatewaysdk/algorithm/gepa/lib/adapters/generic_rag_adapter/vector_stores/__init__.py +2 -0
- gatewaysdk/algorithm/gepa/lib/adapters/generic_rag_adapter/vector_stores/chroma_store.py +196 -0
- gatewaysdk/algorithm/gepa/lib/adapters/generic_rag_adapter/vector_stores/lancedb_store.py +422 -0
- gatewaysdk/algorithm/gepa/lib/adapters/generic_rag_adapter/vector_stores/milvus_store.py +409 -0
- gatewaysdk/algorithm/gepa/lib/adapters/generic_rag_adapter/vector_stores/qdrant_store.py +368 -0
- gatewaysdk/algorithm/gepa/lib/adapters/generic_rag_adapter/vector_stores/weaviate_store.py +418 -0
- gatewaysdk/algorithm/gepa/lib/adapters/mcp_adapter/README.md +552 -0
- gatewaysdk/algorithm/gepa/lib/adapters/mcp_adapter/__init__.py +37 -0
- gatewaysdk/algorithm/gepa/lib/adapters/mcp_adapter/mcp_adapter.py +699 -0
- gatewaysdk/algorithm/gepa/lib/adapters/mcp_adapter/mcp_client.py +364 -0
- gatewaysdk/algorithm/gepa/lib/adapters/terminal_bench_adapter/README.md +9 -0
- gatewaysdk/algorithm/gepa/lib/adapters/terminal_bench_adapter/__init__.py +0 -0
- gatewaysdk/algorithm/gepa/lib/adapters/terminal_bench_adapter/terminal_bench_adapter.py +217 -0
- gatewaysdk/algorithm/gepa/lib/api.py +382 -0
- gatewaysdk/algorithm/gepa/lib/core/__init__.py +0 -0
- gatewaysdk/algorithm/gepa/lib/core/adapter.py +180 -0
- gatewaysdk/algorithm/gepa/lib/core/data_loader.py +74 -0
- gatewaysdk/algorithm/gepa/lib/core/engine.py +379 -0
- gatewaysdk/algorithm/gepa/lib/core/result.py +233 -0
- gatewaysdk/algorithm/gepa/lib/core/state.py +636 -0
- gatewaysdk/algorithm/gepa/lib/examples/__init__.py +0 -0
- gatewaysdk/algorithm/gepa/lib/examples/aime.py +24 -0
- gatewaysdk/algorithm/gepa/lib/examples/anymaths-bench/eval_default.py +111 -0
- gatewaysdk/algorithm/gepa/lib/examples/anymaths-bench/prompt-templates/instruction_prompt.txt +9 -0
- gatewaysdk/algorithm/gepa/lib/examples/anymaths-bench/prompt-templates/optimal_prompt.txt +24 -0
- gatewaysdk/algorithm/gepa/lib/examples/anymaths-bench/train_anymaths.py +177 -0
- gatewaysdk/algorithm/gepa/lib/examples/dspy_full_program_evolution/arc_agi.ipynb +25705 -0
- gatewaysdk/algorithm/gepa/lib/examples/dspy_full_program_evolution/example.ipynb +348 -0
- gatewaysdk/algorithm/gepa/lib/examples/mcp_adapter/__init__.py +4 -0
- gatewaysdk/algorithm/gepa/lib/examples/mcp_adapter/mcp_optimization_example.py +456 -0
- gatewaysdk/algorithm/gepa/lib/examples/rag_adapter/RAG_GUIDE.md +613 -0
- gatewaysdk/algorithm/gepa/lib/examples/rag_adapter/__init__.py +9 -0
- gatewaysdk/algorithm/gepa/lib/examples/rag_adapter/rag_optimization.py +820 -0
- gatewaysdk/algorithm/gepa/lib/examples/rag_adapter/requirements-rag.txt +29 -0
- gatewaysdk/algorithm/gepa/lib/examples/terminal-bench/prompt-templates/instruction_prompt.txt +16 -0
- gatewaysdk/algorithm/gepa/lib/examples/terminal-bench/prompt-templates/terminus.txt +9 -0
- gatewaysdk/algorithm/gepa/lib/examples/terminal-bench/train_terminus.py +161 -0
- gatewaysdk/algorithm/gepa/lib/gepa_utils.py +117 -0
- gatewaysdk/algorithm/gepa/lib/logging/__init__.py +0 -0
- gatewaysdk/algorithm/gepa/lib/logging/experiment_tracker.py +187 -0
- gatewaysdk/algorithm/gepa/lib/logging/logger.py +75 -0
- gatewaysdk/algorithm/gepa/lib/logging/utils.py +103 -0
- gatewaysdk/algorithm/gepa/lib/proposer/__init__.py +0 -0
- gatewaysdk/algorithm/gepa/lib/proposer/base.py +31 -0
- gatewaysdk/algorithm/gepa/lib/proposer/merge.py +357 -0
- gatewaysdk/algorithm/gepa/lib/proposer/reflective_mutation/__init__.py +0 -0
- gatewaysdk/algorithm/gepa/lib/proposer/reflective_mutation/base.py +49 -0
- gatewaysdk/algorithm/gepa/lib/proposer/reflective_mutation/reflective_mutation.py +176 -0
- gatewaysdk/algorithm/gepa/lib/py.typed +0 -0
- gatewaysdk/algorithm/gepa/lib/strategies/__init__.py +0 -0
- gatewaysdk/algorithm/gepa/lib/strategies/batch_sampler.py +77 -0
- gatewaysdk/algorithm/gepa/lib/strategies/candidate_selector.py +50 -0
- gatewaysdk/algorithm/gepa/lib/strategies/component_selector.py +36 -0
- gatewaysdk/algorithm/gepa/lib/strategies/eval_policy.py +64 -0
- gatewaysdk/algorithm/gepa/lib/strategies/instruction_proposal.py +126 -0
- gatewaysdk/algorithm/gepa/lib/utils/__init__.py +10 -0
- gatewaysdk/algorithm/gepa/lib/utils/stop_condition.py +196 -0
- gatewaysdk/algorithm/gepa/tracing.py +105 -0
- gatewaysdk/algorithm/utils.py +177 -0
- gatewaysdk/algorithm/verl/__init__.py +5 -0
- gatewaysdk/algorithm/verl/interface.py +202 -0
- gatewaysdk/automations.py +111 -0
- gatewaysdk/benchmark_hub/README.md +88 -0
- gatewaysdk/benchmark_hub/__init__.py +119 -0
- gatewaysdk/benchmark_hub/_archive.py +189 -0
- gatewaysdk/benchmark_hub/_tar.py +6 -0
- gatewaysdk/benchmark_hub/client.py +992 -0
- gatewaysdk/benchmark_hub/dispatch_shard.py +34 -0
- gatewaysdk/benchmark_hub/eval_config.py +20 -0
- gatewaysdk/benchmark_hub/evals.py +351 -0
- gatewaysdk/benchmark_hub/harbor_adapter.py +673 -0
- gatewaysdk/benchmark_hub/path_utils.py +81 -0
- gatewaysdk/benchmark_hub/save_utils.py +101 -0
- gatewaysdk/benchmark_hub/verifiers_adapter.py +327 -0
- gatewaysdk/benchmark_hub/versioning.py +72 -0
- gatewaysdk/build.py +515 -0
- gatewaysdk/cli/__init__.py +58 -0
- gatewaysdk/cli/agent_runner.py +132 -0
- gatewaysdk/cli/http_client.py +115 -0
- gatewaysdk/cli/platform.py +4086 -0
- gatewaysdk/cli/prometheus.py +115 -0
- gatewaysdk/cli/release_gate.py +215 -0
- gatewaysdk/cli/store.py +131 -0
- gatewaysdk/cli/vllm.py +29 -0
- gatewaysdk/client.py +406 -0
- gatewaysdk/config.py +348 -0
- gatewaysdk/connectors/__init__.py +25 -0
- gatewaysdk/connectors/client.py +203 -0
- gatewaysdk/connectors/skill.py +25 -0
- gatewaysdk/connectors/template.py +106 -0
- gatewaysdk/context.py +606 -0
- gatewaysdk/emitter/__init__.py +43 -0
- gatewaysdk/emitter/annotation.py +370 -0
- gatewaysdk/emitter/exception.py +54 -0
- gatewaysdk/emitter/message.py +61 -0
- gatewaysdk/emitter/object.py +117 -0
- gatewaysdk/emitter/reward.py +320 -0
- gatewaysdk/env_var.py +156 -0
- gatewaysdk/environment/__init__.py +108 -0
- gatewaysdk/environment/_bundle.py +281 -0
- gatewaysdk/environment/_harbor.py +276 -0
- gatewaysdk/environment/_materialize.py +97 -0
- gatewaysdk/environment/_tar.py +33 -0
- gatewaysdk/environment/_world.py +346 -0
- gatewaysdk/environment/core.py +527 -0
- gatewaysdk/environment/errors.py +58 -0
- gatewaysdk/environment/runtime.py +150 -0
- gatewaysdk/environment/schema/__init__.py +35 -0
- gatewaysdk/environment/schema/__main__.py +225 -0
- gatewaysdk/environment/schema/_slack_fidelity.py +116 -0
- gatewaysdk/environment/schema/_slack_scenario.py +183 -0
- gatewaysdk/environment/schema/api.py +1628 -0
- gatewaysdk/environment/schema/batch.py +755 -0
- gatewaysdk/environment/schema/compiler.py +615 -0
- gatewaysdk/environment/schema/conform.py +428 -0
- gatewaysdk/environment/schema/connector.py +777 -0
- gatewaysdk/environment/schema/connectors/apple-business-manager/handlers.py +17 -0
- gatewaysdk/environment/schema/connectors/apple-business-manager/parity.json +28 -0
- gatewaysdk/environment/schema/connectors/apple-business-manager/provenance.json +233 -0
- gatewaysdk/environment/schema/connectors/apple-business-manager/scope.toml +112 -0
- gatewaysdk/environment/schema/connectors/apple-business-manager/world.json +1380 -0
- gatewaysdk/environment/schema/connectors/base.json +28 -0
- gatewaysdk/environment/schema/connectors/custom/handlers.py +18 -0
- gatewaysdk/environment/schema/connectors/custom/world.json +123 -0
- gatewaysdk/environment/schema/connectors/github/handlers.py +81 -0
- gatewaysdk/environment/schema/connectors/github/parity.json +37 -0
- gatewaysdk/environment/schema/connectors/github/provenance.json +134 -0
- gatewaysdk/environment/schema/connectors/github/scope.toml +158 -0
- gatewaysdk/environment/schema/connectors/github/world.json +5869 -0
- gatewaysdk/environment/schema/connectors/google-calendar/handlers.py +23 -0
- gatewaysdk/environment/schema/connectors/google-calendar/world.json +209 -0
- gatewaysdk/environment/schema/connectors/google-drive/handlers.py +18 -0
- gatewaysdk/environment/schema/connectors/google-drive/world.json +286 -0
- gatewaysdk/environment/schema/connectors/jamf/handlers.py +34 -0
- gatewaysdk/environment/schema/connectors/jamf/parity.json +49 -0
- gatewaysdk/environment/schema/connectors/jamf/provenance.json +181 -0
- gatewaysdk/environment/schema/connectors/jamf/scope.toml +128 -0
- gatewaysdk/environment/schema/connectors/jamf/world.json +2218 -0
- gatewaysdk/environment/schema/connectors/jira/handlers.py +28 -0
- gatewaysdk/environment/schema/connectors/jira/world.json +389 -0
- gatewaysdk/environment/schema/connectors/kandji/handlers.py +38 -0
- gatewaysdk/environment/schema/connectors/kandji/parity.json +29 -0
- gatewaysdk/environment/schema/connectors/kandji/provenance.json +152 -0
- gatewaysdk/environment/schema/connectors/kandji/scope.toml +120 -0
- gatewaysdk/environment/schema/connectors/kandji/world.json +765 -0
- gatewaysdk/environment/schema/connectors/linear/handlers.py +20 -0
- gatewaysdk/environment/schema/connectors/linear/world.json +363 -0
- gatewaysdk/environment/schema/connectors/microsoft-teams/fidelity.json +45 -0
- gatewaysdk/environment/schema/connectors/microsoft-teams/handlers.py +1 -0
- gatewaysdk/environment/schema/connectors/microsoft-teams/provenance.json +851 -0
- gatewaysdk/environment/schema/connectors/microsoft-teams/scope.md +231 -0
- gatewaysdk/environment/schema/connectors/microsoft-teams/teams-types.json +1710 -0
- gatewaysdk/environment/schema/connectors/microsoft-teams/world.json +858 -0
- gatewaysdk/environment/schema/connectors/netsuite/handlers.py +32 -0
- gatewaysdk/environment/schema/connectors/netsuite/parity.json +50 -0
- gatewaysdk/environment/schema/connectors/netsuite/provenance.json +137 -0
- gatewaysdk/environment/schema/connectors/netsuite/scope.toml +78 -0
- gatewaysdk/environment/schema/connectors/netsuite/world.json +16243 -0
- gatewaysdk/environment/schema/connectors/salesforce/handlers.py +806 -0
- gatewaysdk/environment/schema/connectors/salesforce/parity.json +46 -0
- gatewaysdk/environment/schema/connectors/salesforce/provenance.json +143 -0
- gatewaysdk/environment/schema/connectors/salesforce/scope.toml +174 -0
- gatewaysdk/environment/schema/connectors/salesforce/world.json +4695 -0
- gatewaysdk/environment/schema/connectors/slack/MODEL.md +236 -0
- gatewaysdk/environment/schema/connectors/slack/capabilities.json +1039 -0
- gatewaysdk/environment/schema/connectors/slack/handlers.py +762 -0
- gatewaysdk/environment/schema/connectors/slack/parity.json +65 -0
- gatewaysdk/environment/schema/connectors/slack/provenance.json +294 -0
- gatewaysdk/environment/schema/connectors/slack/scope.toml +44 -0
- gatewaysdk/environment/schema/connectors/slack/world.json +4993 -0
- gatewaysdk/environment/schema/connectors/workday/handlers.py +75 -0
- gatewaysdk/environment/schema/connectors/workday/parity.json +36 -0
- gatewaysdk/environment/schema/connectors/workday/provenance.json +179 -0
- gatewaysdk/environment/schema/connectors/workday/scope.toml +180 -0
- gatewaysdk/environment/schema/connectors/workday/world.json +806 -0
- gatewaysdk/environment/schema/data.py +593 -0
- gatewaysdk/environment/schema/extract.py +263 -0
- gatewaysdk/environment/schema/host.py +2437 -0
- gatewaysdk/environment/schema/host_surfaces.py +275 -0
- gatewaysdk/environment/schema/platform.py +1272 -0
- gatewaysdk/environment/schema/scaffold.py +250 -0
- gatewaysdk/environment/schema/skill.py +118 -0
- gatewaysdk/environment/schema/skills/agents/connector-template-author.md +202 -0
- gatewaysdk/environment/schema/skills/connector-schema-authoring/CONNECTORS.md +331 -0
- gatewaysdk/environment/schema/skills/connector-schema-authoring/CONVENTIONS.md +100 -0
- gatewaysdk/environment/schema/skills/connector-schema-authoring/SKILL.md +313 -0
- gatewaysdk/environment/schema/skills/world-data-ingestion/ROWS.md +223 -0
- gatewaysdk/environment/schema/skills/world-data-ingestion/SKILL.md +293 -0
- gatewaysdk/environment/schema/skills/worlds-getting-started/SKILL.md +390 -0
- gatewaysdk/environment/schema/slack.py +757 -0
- gatewaysdk/environment/schema/snapshot.py +479 -0
- gatewaysdk/environment/schema/store.py +904 -0
- gatewaysdk/environment/schema/tasks.py +525 -0
- gatewaysdk/environment/schema/tools_world.py +322 -0
- gatewaysdk/environment/schema/validation.py +577 -0
- gatewaysdk/environment/schema/worker.py +78 -0
- gatewaysdk/environment/schema/workers.py +500 -0
- gatewaysdk/environment/schema/world_tests.py +336 -0
- gatewaysdk/environments/__init__.py +24 -0
- gatewaysdk/environments/client.py +486 -0
- gatewaysdk/environments/types.py +318 -0
- gatewaysdk/execution/__init__.py +15 -0
- gatewaysdk/execution/base.py +64 -0
- gatewaysdk/execution/client_server.py +443 -0
- gatewaysdk/execution/events.py +69 -0
- gatewaysdk/execution/inter_process.py +16 -0
- gatewaysdk/execution/shared_memory.py +282 -0
- gatewaysdk/experiments/__init__.py +90 -0
- gatewaysdk/experiments/assignment.py +177 -0
- gatewaysdk/experiments/client.py +877 -0
- gatewaysdk/experiments/exposure.py +222 -0
- gatewaysdk/experiments/types.py +81 -0
- gatewaysdk/importers/__init__.py +49 -0
- gatewaysdk/importers/_normalize.py +91 -0
- gatewaysdk/importers/builder.py +173 -0
- gatewaysdk/importers/client.py +95 -0
- gatewaysdk/importers/langsmith.py +196 -0
- gatewaysdk/importers/recipes.py +249 -0
- gatewaysdk/instrumentation/__init__.py +300 -0
- gatewaysdk/instrumentation/agentops.py +314 -0
- gatewaysdk/instrumentation/agentops_langchain.py +45 -0
- gatewaysdk/instrumentation/base.py +119 -0
- gatewaysdk/instrumentation/litellm.py +83 -0
- gatewaysdk/instrumentation/registry.py +273 -0
- gatewaysdk/instrumentation/vllm.py +81 -0
- gatewaysdk/instrumentation/weave.py +500 -0
- gatewaysdk/integrations/__init__.py +15 -0
- gatewaysdk/integrations/gateway/__init__.py +11 -0
- gatewaysdk/integrations/gateway/client.py +171 -0
- gatewaysdk/integrations/tool_access.py +549 -0
- gatewaysdk/litagent/__init__.py +11 -0
- gatewaysdk/litagent/decorator.py +536 -0
- gatewaysdk/litagent/litagent.py +252 -0
- gatewaysdk/llm_proxy.py +1742 -0
- gatewaysdk/logging.py +370 -0
- gatewaysdk/memory.py +278 -0
- gatewaysdk/personas.py +186 -0
- gatewaysdk/platform/__init__.py +17 -0
- gatewaysdk/platform/builder.py +221 -0
- gatewaysdk/platform/compatibility.py +67 -0
- gatewaysdk/platform/manifest.py +185 -0
- gatewaysdk/platform/orchestrator.py +901 -0
- gatewaysdk/platform/registry.py +122 -0
- gatewaysdk/platform/worker.py +864 -0
- gatewaysdk/replay/__init__.py +1032 -0
- gatewaysdk/replay/pytest.py +56 -0
- gatewaysdk/reward.py +7 -0
- gatewaysdk/run.py +1781 -0
- gatewaysdk/runner/__init__.py +11 -0
- gatewaysdk/runner/agent.py +878 -0
- gatewaysdk/runner/base.py +182 -0
- gatewaysdk/runner/legacy.py +309 -0
- gatewaysdk/security.py +700 -0
- gatewaysdk/semconv.py +170 -0
- gatewaysdk/server.py +399 -0
- gatewaysdk/sessions.py +282 -0
- gatewaysdk/store/__init__.py +45 -0
- gatewaysdk/store/base.py +908 -0
- gatewaysdk/store/client_server.py +2093 -0
- gatewaysdk/store/collection/__init__.py +30 -0
- gatewaysdk/store/collection/base.py +587 -0
- gatewaysdk/store/collection/memory.py +970 -0
- gatewaysdk/store/collection/mongo.py +1412 -0
- gatewaysdk/store/collection_based.py +1823 -0
- gatewaysdk/store/gateway.py +983 -0
- gatewaysdk/store/gateway_listener.py +465 -0
- gatewaysdk/store/listener.py +58 -0
- gatewaysdk/store/memory.py +396 -0
- gatewaysdk/store/mongo.py +165 -0
- gatewaysdk/store/redis_stream.py +517 -0
- gatewaysdk/store/sqlite.py +3 -0
- gatewaysdk/store/threading.py +370 -0
- gatewaysdk/store/utils.py +142 -0
- gatewaysdk/tracer/__init__.py +14 -0
- gatewaysdk/tracer/base.py +286 -0
- gatewaysdk/tracer/dummy.py +106 -0
- gatewaysdk/tracer/otel.py +559 -0
- gatewaysdk/tracing/__init__.py +110 -0
- gatewaysdk/tracing/api.py +808 -0
- gatewaysdk/tracing/attributes.py +9 -0
- gatewaysdk/tracing/context.py +272 -0
- gatewaysdk/tracing/exporters/__init__.py +10 -0
- gatewaysdk/tracing/exporters/gateway.py +228 -0
- gatewaysdk/tracing/identity.py +288 -0
- gatewaysdk/tracing/init.py +620 -0
- gatewaysdk/tracing/instrumentors/__init__.py +15 -0
- gatewaysdk/tracing/instrumentors/claude_agent_sdk.py +766 -0
- gatewaysdk/tracing/instrumentors/instrumentation_principles.md +294 -0
- gatewaysdk/tracing/instrumentors/registry.py +352 -0
- gatewaysdk/tracing/mapping.py +729 -0
- gatewaysdk/tracing/processors.py +393 -0
- gatewaysdk/tracing/push.py +617 -0
- gatewaysdk/tracing/push_models.py +247 -0
- gatewaysdk/tracing/semconv.py +294 -0
- gatewaysdk/tracing/span_builder.py +356 -0
- gatewaysdk/trainer/__init__.py +6 -0
- gatewaysdk/trainer/init_utils.py +263 -0
- gatewaysdk/trainer/legacy.py +359 -0
- gatewaysdk/trainer/registry.py +12 -0
- gatewaysdk/trainer/trainer.py +638 -0
- gatewaysdk/types/__init__.py +63 -0
- gatewaysdk/types/core.py +556 -0
- gatewaysdk/types/resources.py +204 -0
- gatewaysdk/types/tracer.py +515 -0
- gatewaysdk/types/tracing.py +162 -0
- gatewaysdk/users.py +251 -0
- gatewaysdk/utils/__init__.py +1 -0
- gatewaysdk/utils/id.py +18 -0
- gatewaysdk/utils/metrics.py +1025 -0
- gatewaysdk/utils/otel.py +550 -0
- gatewaysdk/utils/otlp.py +556 -0
- gatewaysdk/utils/redact.py +22 -0
- gatewaysdk/utils/server_launcher.py +1045 -0
- gatewaysdk/utils/system_snapshot.py +90 -0
- gatewaysdk/verl/__init__.py +8 -0
- gatewaysdk/verl/__main__.py +6 -0
- gatewaysdk/verl/async_server.py +46 -0
- gatewaysdk/verl/config.yaml +27 -0
- gatewaysdk/verl/daemon.py +1154 -0
- gatewaysdk/verl/dataset.py +44 -0
- gatewaysdk/verl/entrypoint.py +248 -0
- gatewaysdk/verl/trainer.py +549 -0
- gatewaysdk/world_browser.py +748 -0
- gatewaysdk/world_data.py +453 -0
- gatewaysdk/world_sessions.py +978 -0
- gatewaysdk/world_tasks.py +285 -0
- gatewaysdk/world_tools.py +115 -0
- gatewaysdk/worlds.py +639 -0
- gatewaysdk-0.3.2.dist-info/METADATA +236 -0
- gatewaysdk-0.3.2.dist-info/RECORD +376 -0
- gatewaysdk-0.3.2.dist-info/WHEEL +4 -0
- gatewaysdk-0.3.2.dist-info/entry_points.txt +5 -0
- gatewaysdk-0.3.2.dist-info/licenses/LICENSE +19 -0
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
"""NetSuite world tools; every mutation goes through the schema store.
|
|
2
|
+
|
|
3
|
+
Failures carry the REST web services error codes NetSuite documents for the
|
|
4
|
+
same conditions (section_156570709583: "Error Handling in REST Web Services").
|
|
5
|
+
"""
|
|
6
|
+
|
|
7
|
+
from gateway_env import store, tool
|
|
8
|
+
|
|
9
|
+
|
|
10
|
+
@tool(name="get_customer")
|
|
11
|
+
def get_customer(id):
|
|
12
|
+
customer = store.get("netsuite_customers", {"id": id})
|
|
13
|
+
if customer is None:
|
|
14
|
+
raise ValueError("NONEXISTENT_ID: Record does not exist.")
|
|
15
|
+
return customer
|
|
16
|
+
|
|
17
|
+
|
|
18
|
+
@tool(name="list_sales_orders")
|
|
19
|
+
def list_sales_orders(entity=None):
|
|
20
|
+
orders = store.list("netsuite_sales_orders")
|
|
21
|
+
return [order for order in orders if entity is None or order.get("entity", {}).get("id") == entity]
|
|
22
|
+
|
|
23
|
+
|
|
24
|
+
@tool(name="create_sales_order")
|
|
25
|
+
def create_sales_order(order):
|
|
26
|
+
entity_id = order.get("entity", {}).get("id")
|
|
27
|
+
if entity_id is None or store.get("netsuite_customers", {"id": entity_id}) is None:
|
|
28
|
+
raise ValueError(
|
|
29
|
+
"INVALID_CONTENT: Error while accessing resource: You have entered an "
|
|
30
|
+
f"Invalid Field Value {entity_id} for the following field: entity"
|
|
31
|
+
)
|
|
32
|
+
return store.insert("netsuite_sales_orders", order, source={"record": "tool.create_sales_order"})
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 1,
|
|
3
|
+
"connector": "netsuite",
|
|
4
|
+
"status": "subset",
|
|
5
|
+
"world_tools": ["create_sales_order", "get_customer", "list_sales_orders"],
|
|
6
|
+
"registration": {
|
|
7
|
+
"mode": "managed",
|
|
8
|
+
"provider": "merge",
|
|
9
|
+
"managed_tool_allowlist": [
|
|
10
|
+
"create_sales_order",
|
|
11
|
+
"get_customer",
|
|
12
|
+
"list_sales_orders"
|
|
13
|
+
]
|
|
14
|
+
},
|
|
15
|
+
"surfaces": [
|
|
16
|
+
{
|
|
17
|
+
"name": "NetSuite AI Connector Service",
|
|
18
|
+
"kind": "official_tenant_mcp",
|
|
19
|
+
"auth": "NetSuite account and role authentication",
|
|
20
|
+
"manifest_validation": "credential_required",
|
|
21
|
+
"supported_world_tools": [
|
|
22
|
+
"create_sales_order",
|
|
23
|
+
"get_customer",
|
|
24
|
+
"list_sales_orders"
|
|
25
|
+
],
|
|
26
|
+
"limitations": [
|
|
27
|
+
"The endpoint and tool manifest are account- and role-specific.",
|
|
28
|
+
"Oracle standard tool names are not exact matches for every world tool."
|
|
29
|
+
],
|
|
30
|
+
"evidence": [
|
|
31
|
+
"https://docs.oracle.com/en/cloud/saas/netsuite/ns-online-help/article_143403258.html"
|
|
32
|
+
]
|
|
33
|
+
},
|
|
34
|
+
{
|
|
35
|
+
"name": "Merge Agent Handler",
|
|
36
|
+
"kind": "managed_provider",
|
|
37
|
+
"auth": "Merge managed connection",
|
|
38
|
+
"manifest_validation": "public_catalog",
|
|
39
|
+
"supported_world_tools": [
|
|
40
|
+
"create_sales_order",
|
|
41
|
+
"get_customer",
|
|
42
|
+
"list_sales_orders"
|
|
43
|
+
],
|
|
44
|
+
"limitations": [
|
|
45
|
+
"Gateway exposes only the three exact schema-world tool matches."
|
|
46
|
+
],
|
|
47
|
+
"evidence": ["https://docs.merge.dev/agent-handler/overview/"]
|
|
48
|
+
}
|
|
49
|
+
]
|
|
50
|
+
}
|
|
@@ -0,0 +1,137 @@
|
|
|
1
|
+
{
|
|
2
|
+
"slug": "netsuite",
|
|
3
|
+
"shape": "tenant-shaped",
|
|
4
|
+
"label": "subset",
|
|
5
|
+
"label_reasons": [
|
|
6
|
+
"This is an unbound standard-record skeleton. NetSuite metadata is role- and account-personalized; describe-on-bind is required for an actual tenant.",
|
|
7
|
+
"No SuiteCloud Developer Network account or consenting sandbox was available, so no per-account metadata catalog, vendor round trip, or golden replay ran.",
|
|
8
|
+
"The model covers nine brief-scoped records, not the hundreds of record/v1 resources exposed by NetSuite.",
|
|
9
|
+
"The retired public 2023.2 API Browser is pinned through an exact Internet Archive raw snapshot; it is vendor-generated evidence but is not a tenant overlay."
|
|
10
|
+
],
|
|
11
|
+
"source": [
|
|
12
|
+
{
|
|
13
|
+
"kind": "vendor-schema-browser",
|
|
14
|
+
"role": "primary",
|
|
15
|
+
"name": "NetSuite REST API Browser: Record API v1",
|
|
16
|
+
"origin_url": "https://system.netsuite.com/help/helpcenter/en_US/APIs/REST_API_Browser/record/v1/2023.2/index.html",
|
|
17
|
+
"archive_url": "https://web.archive.org/web/20240714132010id_/https://system.netsuite.com/help/helpcenter/en_US/APIs/REST_API_Browser/record/v1/2023.2/index.html",
|
|
18
|
+
"version": "2023.2",
|
|
19
|
+
"bytes": 20904488,
|
|
20
|
+
"sha256": "2b7c89cd3c9576acd9a963ab10fbcc397cc37f48e8650866ea9f12e09654e550",
|
|
21
|
+
"used_for": "All nine record definitions, nested local sublists/subrecords, property names and types, reference alternatives, and declared itemType/salesOrder.status/invoice.status value blocks. Enum order is retained verbatim."
|
|
22
|
+
},
|
|
23
|
+
{
|
|
24
|
+
"kind": "vendor-schema-browser",
|
|
25
|
+
"role": "enum-cross-check",
|
|
26
|
+
"name": "NetSuite REST API Browser 2024.2 salesOrder chunk 13",
|
|
27
|
+
"url": "https://web.archive.org/web/20260317224254id_/https://system.netsuite.com/help/helpcenter/en_US/APIs/REST_API_Browser/record/v1/2024.2/chunks/data13.part",
|
|
28
|
+
"version": "2024.2",
|
|
29
|
+
"bytes": 1048576,
|
|
30
|
+
"sha256": "21c855eef7f4d01b4bf438cff76b4a0acf2883b7d030b308ea24a63ec0426a19",
|
|
31
|
+
"used_for": "Re-verifying the declared salesOrder.status id values A through H."
|
|
32
|
+
},
|
|
33
|
+
{
|
|
34
|
+
"kind": "vendor-docs",
|
|
35
|
+
"role": "supporting",
|
|
36
|
+
"name": "Working with Resource Metadata",
|
|
37
|
+
"url": "https://docs.oracle.com/en/cloud/saas/netsuite/ns-online-help/chapter_1540810168.html",
|
|
38
|
+
"version": "NetSuite Applications Suite help retrieved 2026-09-06",
|
|
39
|
+
"bytes": 11103,
|
|
40
|
+
"sha256": "c613eafc5cbea76486db4266f427c2e416a054082dcae4f80dbb965026c9cc80",
|
|
41
|
+
"used_for": "Personalized dynamic-schema and describe-on-bind requirements."
|
|
42
|
+
},
|
|
43
|
+
{
|
|
44
|
+
"kind": "vendor-docs",
|
|
45
|
+
"role": "supporting",
|
|
46
|
+
"name": "Working with JSON Schema Metadata",
|
|
47
|
+
"url": "https://docs.oracle.com/en/cloud/saas/netsuite/ns-online-help/section_1545129726.html",
|
|
48
|
+
"version": "NetSuite Applications Suite help retrieved 2026-09-06",
|
|
49
|
+
"bytes": 9331,
|
|
50
|
+
"sha256": "79ba870861a741fb637a74ab4e8a1557f839b774714793941ef12453595c03bf",
|
|
51
|
+
"used_for": "JSON Schema media type, nested record structure, and tenant custom-field behavior."
|
|
52
|
+
},
|
|
53
|
+
{
|
|
54
|
+
"kind": "vendor-docs",
|
|
55
|
+
"role": "supporting",
|
|
56
|
+
"name": "Error Handling in REST Web Services",
|
|
57
|
+
"url": "https://docs.oracle.com/en/cloud/saas/netsuite/ns-online-help/section_156570709583.html",
|
|
58
|
+
"version": "NetSuite Applications Suite help retrieved 2026-09-06",
|
|
59
|
+
"bytes": 15074,
|
|
60
|
+
"sha256": "e9b09f930fac15efacfb8b3093458e90f35f9d18088b8172906a16ebe27f26d3",
|
|
61
|
+
"used_for": "Error envelope and handler error-code examples."
|
|
62
|
+
}
|
|
63
|
+
],
|
|
64
|
+
"authored_by": "connector-template-author; deterministic transcription of pinned API Browser declarations",
|
|
65
|
+
"importer": null,
|
|
66
|
+
"scope_hash": "sha256:508371c71eb2b3c76e00cdd1160a7aabaf96e572ae4cf659c900d662b05dcc81",
|
|
67
|
+
"world_sha256": "sha256:3aad6b303e21660425e8c8d889ce9c6c166fc23fe617cca9bb4c5cb7ffc74118",
|
|
68
|
+
"generated_at": "2026-09-06T22:27:40Z",
|
|
69
|
+
"coverage": {
|
|
70
|
+
"entities": 9,
|
|
71
|
+
"recursive_fields": 5259,
|
|
72
|
+
"counting_method": "For each x-gateway entity schema, count every object property and recursively resolve local $ref; descend properties, array items, allOf, anyOf, and oneOf. References are counted at every occurrence; base.json primitives contribute zero properties.",
|
|
73
|
+
"reconstruction_target": 1958,
|
|
74
|
+
"target_note": "The prior measurement is not reproduced because correcting the prior flattened-reference and bare-sublist shapes increases the evidence-backed recursive count to 5259. No fields were added merely to meet a number.",
|
|
75
|
+
"record_property_policy": "All properties in the nine pinned browser record definitions are retained. Local record-prefixed definitions are recursively retained; out-of-scope record references use the finite vendor nsResource shape."
|
|
76
|
+
},
|
|
77
|
+
"tenant_channel": {
|
|
78
|
+
"required": true,
|
|
79
|
+
"method": "describe-on-bind",
|
|
80
|
+
"call": "GET /services/rest/record/v1/metadata-catalog/{record} with Accept: application/schema+json against the bound account and role",
|
|
81
|
+
"status": "not run; no tenant credentials or sandbox were available",
|
|
82
|
+
"supplies": [
|
|
83
|
+
"enabled standard records and role-visible fields",
|
|
84
|
+
"customrecord* resources",
|
|
85
|
+
"custentity*, custbody*, custcol*, and custitem* fields",
|
|
86
|
+
"custom lists and custom segments",
|
|
87
|
+
"account-specific enum additions and nullable/required declarations"
|
|
88
|
+
]
|
|
89
|
+
},
|
|
90
|
+
"fidelity_corrections": [
|
|
91
|
+
"Record and enum references remain nested link objects; they are no longer flattened to scalar ids.",
|
|
92
|
+
"salesOrder.item and every other in-scope local sublist retain the vendor collection wrapper (count, hasMore, items, links, offset, totalResults).",
|
|
93
|
+
"salesOrder.item remains nested even though salesOrder-itemElement is also projected as netsuite_sales_order_lines for keyable line-level tasks.",
|
|
94
|
+
"Only entity key fields are required. The browser declares no record-schema required list, so the brief-derived required lists were removed.",
|
|
95
|
+
"Undeclared business uniqueness constraints were removed. Sparse optional uniqueness is supported, but constraints are not invented when the vendor schema does not declare them.",
|
|
96
|
+
"Polymorphic entity, item, and createdFrom references are no longer narrowed to one local entity type.",
|
|
97
|
+
"acctType is not emitted as a closed enum: the reverified 2023.2 primary declaration has no value block for it. A bound account catalog must supply its values.",
|
|
98
|
+
"itemType and transaction status are object-valued enums whose id property carries the vendor-declared values; refName remains available."
|
|
99
|
+
],
|
|
100
|
+
"requiredness": {
|
|
101
|
+
"vendor_declaration": "No required property markers occur after the API Browser Schema Definitions heading; required markers in the artifact belong to operation path parameters.",
|
|
102
|
+
"compiler_forced": [
|
|
103
|
+
"Each entity id is required and non-null because gateway-world/1 requires primary keys to be required direct scalar properties.",
|
|
104
|
+
"netsuite_sales_order_lines.order_id and line are required because they form its projected composite key."
|
|
105
|
+
],
|
|
106
|
+
"endpoint_sections": "Not applicable: this template models record resources, not endpoint response envelopes. Nested collection section properties remain optional as declared."
|
|
107
|
+
},
|
|
108
|
+
"nullability": {
|
|
109
|
+
"status": "not asserted where the browser omits nullable metadata",
|
|
110
|
+
"gap": "Oracle documents that account metadata may include nullable, but the pinned API Browser renderer does not expose nullable markers. A tenant JSON Schema response is required to distinguish null from omission without guessing."
|
|
111
|
+
},
|
|
112
|
+
"compiler_limitations": [
|
|
113
|
+
"Nested scalar subsidiary references are enforced for customers, vendors, and journal entries. Polymorphic references and collection-item paths remain unenforced.",
|
|
114
|
+
"Recursive expansion of every external record reference is forbidden, so out-of-scope references terminate at nsResource.",
|
|
115
|
+
"Optional business identifiers carry no unique constraints because the pinned schema does not declare them.",
|
|
116
|
+
"NetSuite date and date-time fields retain their respective gateway-world/1 formats."
|
|
117
|
+
],
|
|
118
|
+
"error_format": {
|
|
119
|
+
"envelope": "{\"type\", \"title\", \"status\", \"o:errorDetails\": [{\"detail\", \"o:errorCode\"}]}",
|
|
120
|
+
"codes_modelled": [
|
|
121
|
+
"NONEXISTENT_ID",
|
|
122
|
+
"INVALID_CONTENT"
|
|
123
|
+
],
|
|
124
|
+
"limitation": "Handlers raise code-bearing ValueError strings; the mock-tools handler API does not return HTTP problem-detail envelopes."
|
|
125
|
+
},
|
|
126
|
+
"verification": {
|
|
127
|
+
"schema_compile": "python -m gatewaysdk.environment.schema compile /home/ubuntu/netsuite-connector-verify: pass; status ok; domain hash e0b463952ab43c3d8dca4ca0c45e92b95b451571ba2f5dda67c18d27e8c8b36b",
|
|
128
|
+
"schema_check": "python -m gatewaysdk.environment.schema check /home/ubuntu/netsuite-connector-verify: pass; status ok; domain hash e0b463952ab43c3d8dca4ca0c45e92b95b451571ba2f5dda67c18d27e8c8b36b",
|
|
129
|
+
"sandbox": "skipped: SuiteCloud Developer Network partner account not provisioned",
|
|
130
|
+
"tenant_overlay": "skipped: no bound account metadata catalog",
|
|
131
|
+
"goldens": "skipped: no sandbox capture; no customer data included",
|
|
132
|
+
"schema_init": "python -m gatewaysdk.environment.schema init /home/ubuntu/netsuite-connector-verify --connector netsuite: pass; status ok; domain hash e0b463952ab43c3d8dca4ca0c45e92b95b451571ba2f5dda67c18d27e8c8b36b"
|
|
133
|
+
},
|
|
134
|
+
"not_shipped": [
|
|
135
|
+
"suiteql: gateway_env.store does not expose query to handlers, raw SQL in handlers is forbidden, and SuiteQL identifiers are not this world store schema."
|
|
136
|
+
]
|
|
137
|
+
}
|
|
@@ -0,0 +1,78 @@
|
|
|
1
|
+
# NetSuite is tenant-shaped. This file scopes the shared, unbound skeleton only.
|
|
2
|
+
# A bound account's metadata catalog remains authoritative for enabled standard
|
|
3
|
+
# records, custom records, custom fields, custom lists, and custom segments.
|
|
4
|
+
|
|
5
|
+
[source]
|
|
6
|
+
kind = "vendor-schema-browser"
|
|
7
|
+
record_api = "record/v1"
|
|
8
|
+
version = "2023.2"
|
|
9
|
+
origin = "https://system.netsuite.com/help/helpcenter/en_US/APIs/REST_API_Browser/record/v1/2023.2/index.html"
|
|
10
|
+
archived_snapshot = "https://web.archive.org/web/20240714132010id_/https://system.netsuite.com/help/helpcenter/en_US/APIs/REST_API_Browser/record/v1/2023.2/index.html"
|
|
11
|
+
importer = "none; API Browser schema definitions transcribed deterministically"
|
|
12
|
+
|
|
13
|
+
[coverage]
|
|
14
|
+
shape = "tenant-shaped"
|
|
15
|
+
label = "subset"
|
|
16
|
+
entity_count = 9
|
|
17
|
+
recursive_field_count = 5259
|
|
18
|
+
record_schema_requiredness = "The API Browser declares no required properties in record schema definitions. Only primary-key fields are required here because gateway-world/1 requires entity keys to be required and non-null."
|
|
19
|
+
reference_policy = "Record references retain their nested link-object form. Local sublists and subrecords are recursively modelled; references to records outside this nine-entity scope use the declared nsResource shape."
|
|
20
|
+
|
|
21
|
+
[entities]
|
|
22
|
+
netsuite_subsidiaries = "subsidiary"
|
|
23
|
+
netsuite_accounts = "account"
|
|
24
|
+
netsuite_customers = "customer"
|
|
25
|
+
netsuite_vendors = "vendor"
|
|
26
|
+
netsuite_items = "inventoryItem"
|
|
27
|
+
netsuite_sales_orders = "salesOrder, including the nested item collection"
|
|
28
|
+
netsuite_sales_order_lines = "salesOrder-itemElement projected as a separately keyable entity"
|
|
29
|
+
netsuite_invoices = "invoice, including nested sublists and subrecords"
|
|
30
|
+
netsuite_journal_entries = "journalEntry, including the nested line collection"
|
|
31
|
+
|
|
32
|
+
[keys]
|
|
33
|
+
netsuite_sales_order_lines = { primary_key = ["order_id", "line"], reason = "The vendor line has `line` but no parent field because REST nests it under salesOrder.item.items. `order_id` is the sole synthetic containment field. The salesOrder entity still retains the vendor's nested item collection." }
|
|
34
|
+
|
|
35
|
+
[unique]
|
|
36
|
+
# None. The vendor schema does not declare these optional record properties as
|
|
37
|
+
# JSON Schema uniqueness constraints. Sparse optional uniqueness is supported,
|
|
38
|
+
# but business-number uniqueness must not be inferred.
|
|
39
|
+
|
|
40
|
+
[relationships]
|
|
41
|
+
"netsuite_sales_order_lines.order_id" = "netsuite_sales_orders"
|
|
42
|
+
"netsuite_customers./subsidiary/id" = "netsuite_subsidiaries"
|
|
43
|
+
"netsuite_vendors./subsidiary/id" = "netsuite_subsidiaries"
|
|
44
|
+
"netsuite_journal_entries./subsidiary/id" = "netsuite_subsidiaries"
|
|
45
|
+
|
|
46
|
+
[relationships.not_declared]
|
|
47
|
+
"netsuite_sales_orders.entity.id" = "Polymorphic nested reference; the catalog permits customer, partner, vendor, nsResource, employee, or contact."
|
|
48
|
+
"netsuite_sales_order_lines.item.id" = "Polymorphic nested item reference; the catalog declares multiple item record alternatives."
|
|
49
|
+
"netsuite_invoices.entity.id" = "Polymorphic nested reference; not narrowed to customer."
|
|
50
|
+
"netsuite_invoices.createdFrom.id" = "Generic nsResource transaction reference; not narrowed to salesOrder."
|
|
51
|
+
"netsuite_journal_entries.line.items[].account.id" = "The path traverses a collection and cannot be reduced to one scalar foreign key."
|
|
52
|
+
|
|
53
|
+
[polymorphic]
|
|
54
|
+
"netsuite_sales_orders.entity" = ["customer", "partner", "vendor", "nsResource", "employee", "contact"]
|
|
55
|
+
"netsuite_invoices.entity" = ["customer", "partner", "vendor", "nsResource", "employee", "contact"]
|
|
56
|
+
"netsuite_invoices.createdFrom" = ["nsResource"]
|
|
57
|
+
"netsuite_sales_order_lines.item" = ["inventoryItem", "assemblyItem", "kitItem", "nsResource", "discountItem", "markupItem", "subtotalItem", "descriptionItem", "paymentItem", "salesTaxItem", "shipItem", "downloadItem", "giftCertificateItem", "subscriptionPlan", "nonInventorySaleItem", "nonInventoryResaleItem", "nonInventoryPurchaseItem", "serviceSaleItem", "serviceResaleItem", "servicePurchaseItem", "otherChargeSaleItem", "otherChargeResaleItem", "otherChargePurchaseItem"]
|
|
58
|
+
|
|
59
|
+
[compiler_limitations]
|
|
60
|
+
nested_relationships = "Nested scalar reference ids can be key-enforced; polymorphic references and paths through collection items remain unenforced."
|
|
61
|
+
nullable_unique = "Sparse optional uniqueness is supported, but no optional NetSuite business number is constrained because the pinned schema does not declare its uniqueness."
|
|
62
|
+
date_format = "Vendor `date` fields use format date; vendor date-time fields retain format date-time."
|
|
63
|
+
external_reference_cycles = "Expanding every referenced record would create recursive schemas, which gateway-world/1 rejects. Out-of-scope record references therefore use the finite nsResource link shape."
|
|
64
|
+
|
|
65
|
+
[exclusions]
|
|
66
|
+
other_records = "The browser exposes hundreds of record resources. This skeleton is limited to the nine entities named in the connector brief; purchase orders, bills, fulfillments, payments, employees, currencies, locations, and other masters remain external references."
|
|
67
|
+
tenant_overlay = "No account metadata catalog was available. customrecord*, custentity*, custbody*, custcol*, custitem*, custom lists, custom segments, enabled-feature changes, and account-specific enum additions require describe-on-bind."
|
|
68
|
+
operation_contracts = "The entity model transcribes record schema definitions, not HTTP headers, query parameters, pagination endpoints, async task endpoints, or governance behavior."
|
|
69
|
+
|
|
70
|
+
[sandbox]
|
|
71
|
+
required = true
|
|
72
|
+
available = false
|
|
73
|
+
requirement = "SuiteCloud Developer Network partner account or a consenting NetSuite sandbox with a role-scoped REST Web Services connection."
|
|
74
|
+
blocked_verification = ["per-account metadata overlay", "vendor round trip", "captured synthetic goldens", "tenant enum drift check"]
|
|
75
|
+
|
|
76
|
+
[fixture]
|
|
77
|
+
shipped = false
|
|
78
|
+
reason = "The connector template layout does not support data files; scaffold initialization writes empty data. No customer or vendor response data is included."
|