Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 2 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -622,6 +622,8 @@ For `get_file_contents`, directory results (including field projections) are str

Structured repository results use compact DTOs rather than raw REST objects. Release lookups share the compact release shape with release listings; Git references retain the ref, object type, and SHA; annotated tags retain tag/message/tagger/target information; deletion commits retain SHA, message, authors, tree SHA, parent SHAs, and a human-facing `html_url` when available. Directory entries retain file metadata and useful HTML/download links, but omit API and hypermedia routing URLs even when those fields were requested in a projection. Legacy and unknown protocol versions retain the original text byte-for-byte; modern text-only JSON responses serialize the same compact DTO as `structuredContent`. Non-text resource blocks and tool errors retain their existing content behavior. Structured projections use the same sanitized and filtered source as the legacy formatter.

For `get_repository_tree`, `list_gists`, `get_gist`, `create_gist`, and `update_gist`, gist results retain file names, contents, sizes, language/type information, timestamps, visibility, and compact owner profiles, while omitting API/node and Git transport URLs. Tree entries omit their derivable API URLs. Create/update gist results contain the gist ID and HTML URL. Modern JSON text and structured content serialize the same compact result. Older or unknown protocol versions retain byte-for-byte legacy text without an output schema or structured content.

The issue metadata (`list_issue_types`, `list_issue_fields`), comment (`add_issue_comment`, `update_issue_comment`), dependency (`issue_dependency_read`, `issue_dependency_write`), and duplicate-detection (`find_duplicate`) tools provide typed `outputSchema` and `structuredContent` for negotiated supported protocol versions `2026-07-28` or newer. Older or unknown protocol versions retain the same text responses without these fields. Tool errors do not return structured content. Dependency and duplicate-detection tools retain their existing feature gates.

For negotiated supported protocol versions `2026-07-28` or newer, the consolidated Actions tools (`actions_list`, `actions_get`, `actions_run_trigger`) return structured objects with a `method` discriminant and a method-specific typed field; JSON text contains the same compact projection. Workflow, job, and artifact projections omit API/hypermedia URLs while retaining browser links and useful identifiers, states, timestamps, and usage durations. Run usage lists billable runner environments in deterministic name order. Older and unknown-protocol text responses remain unchanged; `get_job_logs` retains its typed content, URL, or failed-job collection variants.
Expand Down
18 changes: 17 additions & 1 deletion pkg/github/__toolsnaps__/create_gist.snap
Original file line number Diff line number Diff line change
Expand Up @@ -31,5 +31,21 @@
],
"type": "object"
},
"name": "create_gist"
"name": "create_gist",
"outputSchema": {
"additionalProperties": false,
"properties": {
"id": {
"type": "string"
},
"url": {
"type": "string"
}
},
"required": [
"id",
"url"
],
"type": "object"
}
}
88 changes: 87 additions & 1 deletion pkg/github/__toolsnaps__/get_gist.snap
Original file line number Diff line number Diff line change
Expand Up @@ -17,5 +17,91 @@
],
"type": "object"
},
"name": "get_gist"
"name": "get_gist",
"outputSchema": {
"oneOf": [
{
"type": "null"
},
{
"additionalProperties": false,
"properties": {
"comments": {
"type": "integer"
},
"created_at": {
"description": "Creation time in RFC3339 format.",
"format": "date-time",
"type": "string"
},
"description": {
"type": "string"
},
"files": {
"additionalProperties": {
"additionalProperties": false,
"properties": {
"content": {
"type": "string"
},
"filename": {
"type": "string"
},
"language": {
"type": "string"
},
"size": {
"description": "File size in bytes.",
"type": "integer"
},
"type": {
"description": "File MIME type, when available.",
"type": "string"
}
},
"type": "object"
},
"type": "object"
},
"html_url": {
"type": "string"
},
"id": {
"type": "string"
},
"owner": {
"additionalProperties": false,
"properties": {
"avatar_url": {
"type": "string"
},
"id": {
"type": "integer"
},
"login": {
"type": "string"
},
"profile_url": {
"type": "string"
}
},
"required": [
"login"
],
"type": "object"
},
"public": {
"description": "True for a public gist; false for a secret, URL-accessible gist.",
"type": "boolean"
},
"updated_at": {
"description": "Last update time in RFC3339 format.",
"format": "date-time",
"type": "string"
}
},
"type": "object"
}
]
}
}
89 changes: 88 additions & 1 deletion pkg/github/__toolsnaps__/get_repository_tree.snap
Original file line number Diff line number Diff line change
Expand Up @@ -35,5 +35,92 @@
],
"type": "object"
},
"name": "get_repository_tree"
"name": "get_repository_tree",
"outputSchema": {
"additionalProperties": false,
"properties": {
"count": {
"type": "integer"
},
"owner": {
"type": "string"
},
"recursive": {
"type": "boolean"
},
"repo": {
"type": "string"
},
"sha": {
"type": "string"
},
"tree": {
"items": {
"additionalProperties": false,
"properties": {
"mode": {
"description": "Git file mode in octal; empty if absent in the API response.",
"enum": [
"100644",
"100755",
"040000",
"160000",
"120000",
""
],
"type": "string"
},
"path": {
"type": "string"
},
"sha": {
"type": "string"
},
"size": {
"description": "Blob size in bytes, when available.",
"type": "integer"
},
"type": {
"description": "Git object type; empty if absent in the API response.",
"enum": [
"blob",
"tree",
"commit",
""
],
"type": "string"
}
},
"required": [
"path",
"type",
"mode",
"sha"
],
"type": "object"
},
"type": [
"null",
"array"
]
},
"tree_sha": {
"type": "string"
},
"truncated": {
"type": "boolean"
}
},
"required": [
"sha",
"truncated",
"tree",
"tree_sha",
"owner",
"repo",
"recursive",
"count"
],
"type": "object"
}
}
94 changes: 93 additions & 1 deletion pkg/github/__toolsnaps__/list_gists.snap
Original file line number Diff line number Diff line change
Expand Up @@ -29,5 +29,97 @@
},
"type": "object"
},
"name": "list_gists"
"name": "list_gists",
"outputSchema": {
"items": {
"oneOf": [
{
"type": "null"
},
{
"additionalProperties": false,
"properties": {
"comments": {
"type": "integer"
},
"created_at": {
"description": "Creation time in RFC3339 format.",
"format": "date-time",
"type": "string"
},
"description": {
"type": "string"
},
"files": {
"additionalProperties": {
"additionalProperties": false,
"properties": {
"content": {
"type": "string"
},
"filename": {
"type": "string"
},
"language": {
"type": "string"
},
"size": {
"description": "File size in bytes.",
"type": "integer"
},
"type": {
"description": "File MIME type, when available.",
"type": "string"
}
},
"type": "object"
},
"type": "object"
},
"html_url": {
"type": "string"
},
"id": {
"type": "string"
},
"owner": {
"additionalProperties": false,
"properties": {
"avatar_url": {
"type": "string"
},
"id": {
"type": "integer"
},
"login": {
"type": "string"
},
"profile_url": {
"type": "string"
}
},
"required": [
"login"
],
"type": "object"
},
"public": {
"description": "True for a public gist; false for a secret, URL-accessible gist.",
"type": "boolean"
},
"updated_at": {
"description": "Last update time in RFC3339 format.",
"format": "date-time",
"type": "string"
}
},
"type": "object"
}
]
},
"type": [
"array",
"null"
]
}
}
18 changes: 17 additions & 1 deletion pkg/github/__toolsnaps__/update_gist.snap
Original file line number Diff line number Diff line change
Expand Up @@ -31,5 +31,21 @@
],
"type": "object"
},
"name": "update_gist"
"name": "update_gist",
"outputSchema": {
"additionalProperties": false,
"properties": {
"id": {
"type": "string"
},
"url": {
"type": "string"
}
},
"required": [
"id",
"url"
],
"type": "object"
}
}
Loading
Loading