mirror of
https://github.com/pchuan98/codex.git
synced 2026-07-01 00:31:56 +08:00
10ac2781eb
## Why Before changing the Codex Bridge JSON schema policy, add integration coverage around real connector-like MCP tool schemas. The existing unit tests cover individual sanitizer behaviors, but they do not make it easy to see whether full fixture schemas keep model-visible guidance, prune only unreachable definitions, drop unsupported JSON Schema fields, and stay within the Responses API schema budget. ## What Changed - Added `tools/tests/json_schema_policy_fixtures.rs`, which converts MCP tool fixtures through `mcp_tool_to_responses_api_tool` and validates the resulting Responses tool parameters. - Added connector-style fixtures for Slack, Google Calendar, Google Drive, Notion, and Microsoft Outlook Email under `tools/tests/fixtures/json_schema_policy/`. - Added fixture assertions for preserved guidance, pruned definitions, expected field drops after `JsonSchema` conversion, marker count baselines, and dangling local `$ref` prevention. - Added a real oversized golden Notion `create_page` input schema fixture to exercise the compaction path that strips descriptions, drops root `$defs`, rewrites local refs, and fits the compacted schema under the budget.
76 lines
1.8 KiB
JSON
76 lines
1.8 KiB
JSON
{
|
|
"source": "standard/slack/tools",
|
|
"tools": [
|
|
{
|
|
"name": "slack_schedule_message",
|
|
"description": "Schedule a Slack message.",
|
|
"input_schema": {
|
|
"type": "object",
|
|
"properties": {
|
|
"channel_id": {
|
|
"type": "string",
|
|
"description": "Slack channel ID."
|
|
},
|
|
"message": {
|
|
"type": "string",
|
|
"description": "Message text."
|
|
},
|
|
"post_at": {
|
|
"type": "integer",
|
|
"description": "Unix timestamp for delivery."
|
|
},
|
|
"thread_ts": {
|
|
"description": "Optional parent thread timestamp.",
|
|
"anyOf": [
|
|
{
|
|
"$ref": "#/$defs/SlackTs"
|
|
},
|
|
{
|
|
"type": "null"
|
|
}
|
|
]
|
|
}
|
|
},
|
|
"required": [
|
|
"channel_id",
|
|
"message",
|
|
"post_at"
|
|
],
|
|
"additionalProperties": false,
|
|
"$defs": {
|
|
"SlackTs": {
|
|
"type": "string",
|
|
"description": "Slack timestamp string.",
|
|
"pattern": "^[0-9]+[.][0-9]+$"
|
|
},
|
|
"UnusedPayload": {
|
|
"type": "object",
|
|
"description": "Large unreachable Slack payload.",
|
|
"properties": {
|
|
"debug": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"expected_preserved": [
|
|
{
|
|
"pointer": "/properties/thread_ts/anyOf/0/$ref",
|
|
"value": "#/$defs/SlackTs"
|
|
},
|
|
{
|
|
"pointer": "/$defs/SlackTs/description",
|
|
"value": "Slack timestamp string."
|
|
}
|
|
],
|
|
"expected_pruned": [
|
|
"/$defs/UnusedPayload"
|
|
],
|
|
"expected_dropped_fields": [
|
|
"/$defs/SlackTs/pattern"
|
|
]
|
|
}
|
|
]
|
|
}
|