@commandable/integration-data 0.0.5 → 0.0.6
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.
- package/dist/credentials-index.d.ts.map +1 -1
- package/dist/credentials-index.js +64 -0
- package/dist/credentials-index.js.map +1 -1
- package/integrations/github/__tests__/get_handlers.test.ts +202 -7
- package/integrations/github/__tests__/write_handlers.test.ts +171 -21
- package/integrations/github/handlers/create_commit.js +10 -2
- package/integrations/github/handlers/create_pull_request_review.js +10 -0
- package/integrations/github/handlers/create_release.js +14 -0
- package/integrations/github/handlers/delete_branch.js +8 -0
- package/integrations/github/handlers/delete_file.js +9 -0
- package/integrations/github/handlers/fork_repo.js +10 -0
- package/integrations/github/handlers/get_commit.js +8 -0
- package/integrations/github/handlers/get_file_contents.js +21 -0
- package/integrations/github/handlers/get_job_logs.js +6 -0
- package/integrations/github/handlers/get_latest_release.js +4 -0
- package/integrations/github/handlers/get_me.js +4 -0
- package/integrations/github/handlers/get_pull_request.js +4 -0
- package/integrations/github/handlers/get_pull_request_diff.js +8 -0
- package/integrations/github/handlers/get_repo_tree.js +12 -0
- package/integrations/github/handlers/get_workflow_run.js +4 -0
- package/integrations/github/handlers/list_branches.js +6 -1
- package/integrations/github/handlers/list_commits.js +5 -6
- package/integrations/github/handlers/list_issue_comments.js +8 -0
- package/integrations/github/handlers/list_issues.js +5 -6
- package/integrations/github/handlers/list_labels.js +8 -0
- package/integrations/github/handlers/list_pull_request_comments.js +8 -0
- package/integrations/github/handlers/list_pull_request_files.js +8 -0
- package/integrations/github/handlers/list_pull_requests.js +7 -2
- package/integrations/github/handlers/list_releases.js +8 -0
- package/integrations/github/handlers/list_tags.js +8 -0
- package/integrations/github/handlers/list_workflow_runs.js +11 -0
- package/integrations/github/handlers/request_pull_request_reviewers.js +10 -0
- package/integrations/github/handlers/search_code.js +8 -0
- package/integrations/github/handlers/search_issues.js +8 -0
- package/integrations/github/handlers/search_pull_requests.js +8 -0
- package/integrations/github/handlers/search_repos.js +10 -0
- package/integrations/github/handlers/update_pull_request.js +13 -0
- package/integrations/github/manifest.json +58 -20
- package/integrations/github/schemas/create_pull_request_review.json +17 -0
- package/integrations/github/schemas/create_release.json +16 -0
- package/integrations/github/schemas/delete_branch.json +10 -0
- package/integrations/github/schemas/delete_file.json +13 -0
- package/integrations/github/schemas/fork_repo.json +11 -0
- package/integrations/github/schemas/get_commit.json +12 -0
- package/integrations/github/schemas/get_file_contents.json +11 -0
- package/integrations/github/schemas/get_job_logs.json +10 -0
- package/integrations/github/schemas/get_pull_request.json +10 -0
- package/integrations/github/schemas/get_pull_request_diff.json +10 -0
- package/integrations/github/schemas/get_repo_tree.json +12 -0
- package/integrations/github/schemas/get_workflow_run.json +10 -0
- package/integrations/github/schemas/list_branches.json +12 -0
- package/integrations/github/schemas/list_commits.json +5 -3
- package/integrations/github/schemas/list_issue_comments.json +12 -0
- package/integrations/github/schemas/list_issues.json +4 -2
- package/integrations/github/schemas/list_labels.json +11 -0
- package/integrations/github/schemas/list_pull_request_comments.json +12 -0
- package/integrations/github/schemas/list_pull_request_files.json +12 -0
- package/integrations/github/schemas/list_pull_requests.json +7 -1
- package/integrations/github/schemas/list_releases.json +11 -0
- package/integrations/github/schemas/list_tags.json +11 -0
- package/integrations/github/schemas/list_workflow_runs.json +18 -0
- package/integrations/github/schemas/request_pull_request_reviewers.json +20 -0
- package/integrations/github/schemas/search_code.json +10 -0
- package/integrations/github/schemas/search_issues.json +10 -0
- package/integrations/github/schemas/search_pull_requests.json +10 -0
- package/integrations/github/schemas/search_repos.json +12 -0
- package/integrations/github/schemas/update_pull_request.json +15 -0
- package/integrations/google-calendar/__tests__/write_and_admin_handlers.test.ts +0 -13
- package/integrations/google-calendar/handlers/get_event.js +5 -1
- package/integrations/google-calendar/handlers/list_events.js +2 -0
- package/integrations/google-calendar/manifest.json +17 -18
- package/integrations/google-calendar/prompt.md +68 -0
- package/integrations/google-calendar/schemas/id_calendar_event.json +4 -2
- package/integrations/google-calendar/schemas/list_events.json +10 -8
- package/integrations/google-docs/__tests__/get_handlers.test.ts +4 -19
- package/integrations/google-docs/__tests__/write_handlers.test.ts +31 -48
- package/integrations/google-docs/handlers/read_document.js +189 -0
- package/integrations/google-docs/manifest.json +16 -31
- package/integrations/google-docs/prompt.md +49 -0
- package/integrations/google-docs/schemas/{get_document_text.json → read_document.json} +5 -2
- package/integrations/google-docs/todo.md +18 -0
- package/integrations/google-drive/__tests__/handlers.test.ts +43 -0
- package/integrations/google-drive/__tests__/usage_parity.test.ts +9 -0
- package/integrations/google-drive/handlers/get_file.js +2 -4
- package/integrations/google-drive/handlers/get_file_content.js +41 -0
- package/integrations/google-drive/handlers/list_files.js +15 -0
- package/integrations/google-drive/handlers/search_files.js +20 -0
- package/integrations/google-drive/handlers/share_file.js +20 -0
- package/integrations/google-drive/manifest.json +37 -10
- package/integrations/google-drive/prompt.md +59 -0
- package/integrations/google-drive/schemas/get_file.json +2 -2
- package/integrations/google-drive/schemas/get_file_content.json +11 -0
- package/integrations/google-drive/schemas/list_files.json +12 -0
- package/integrations/google-drive/schemas/search_files.json +14 -0
- package/integrations/google-drive/schemas/share_file.json +23 -0
- package/integrations/google-gmail/__tests__/get_handlers.test.ts +134 -0
- package/integrations/google-gmail/__tests__/usage_parity.test.ts +9 -0
- package/integrations/google-gmail/__tests__/write_and_admin_handlers.test.ts +211 -0
- package/integrations/google-gmail/credentials.json +57 -0
- package/integrations/google-gmail/credentials_hint_oauth_token.md +8 -0
- package/integrations/google-gmail/credentials_hint_service_account.md +10 -0
- package/integrations/google-gmail/handlers/create_draft_email.js +27 -0
- package/integrations/google-gmail/handlers/create_label.js +12 -0
- package/integrations/google-gmail/handlers/delete_draft.js +13 -0
- package/integrations/google-gmail/handlers/delete_label.js +13 -0
- package/integrations/google-gmail/handlers/delete_message.js +13 -0
- package/integrations/google-gmail/handlers/delete_thread.js +13 -0
- package/integrations/google-gmail/handlers/get_draft.js +6 -0
- package/integrations/google-gmail/handlers/get_label.js +6 -0
- package/integrations/google-gmail/handlers/get_message.js +14 -0
- package/integrations/google-gmail/handlers/get_profile.js +5 -0
- package/integrations/google-gmail/handlers/get_thread.js +14 -0
- package/integrations/google-gmail/handlers/list_drafts.js +15 -0
- package/integrations/google-gmail/handlers/list_labels.js +5 -0
- package/integrations/google-gmail/handlers/list_messages.js +19 -0
- package/integrations/google-gmail/handlers/list_threads.js +19 -0
- package/integrations/google-gmail/handlers/modify_message.js +11 -0
- package/integrations/google-gmail/handlers/modify_thread.js +11 -0
- package/integrations/google-gmail/handlers/read_email.js +56 -0
- package/integrations/google-gmail/handlers/send_draft.js +15 -0
- package/integrations/google-gmail/handlers/send_email.js +22 -0
- package/integrations/google-gmail/handlers/trash_message.js +6 -0
- package/integrations/google-gmail/handlers/trash_thread.js +6 -0
- package/integrations/google-gmail/handlers/untrash_message.js +6 -0
- package/integrations/google-gmail/handlers/untrash_thread.js +6 -0
- package/integrations/google-gmail/handlers/update_label.js +15 -0
- package/integrations/google-gmail/manifest.json +33 -0
- package/integrations/google-gmail/prompt.md +52 -0
- package/integrations/google-gmail/schemas/create_draft_email.json +16 -0
- package/integrations/google-gmail/schemas/create_label.json +26 -0
- package/integrations/google-gmail/schemas/get_message.json +20 -0
- package/integrations/{google-docs/schemas/get_document_structured.json → google-gmail/schemas/get_profile.json} +4 -2
- package/integrations/google-gmail/schemas/get_thread.json +20 -0
- package/integrations/google-gmail/schemas/id_draft.json +16 -0
- package/integrations/google-gmail/schemas/id_label.json +16 -0
- package/integrations/google-gmail/schemas/id_message.json +16 -0
- package/integrations/google-gmail/schemas/id_thread.json +16 -0
- package/integrations/google-gmail/schemas/list_drafts.json +30 -0
- package/integrations/{google-sheet/schemas/get_developer_metadata.json → google-gmail/schemas/list_labels.json} +4 -3
- package/integrations/google-gmail/schemas/list_messages.json +35 -0
- package/integrations/google-gmail/schemas/list_threads.json +35 -0
- package/integrations/google-gmail/schemas/modify_message.json +24 -0
- package/integrations/google-gmail/schemas/modify_thread.json +24 -0
- package/integrations/google-gmail/schemas/read_email.json +10 -0
- package/integrations/google-gmail/schemas/send_draft.json +29 -0
- package/integrations/google-gmail/schemas/send_email.json +17 -0
- package/integrations/google-gmail/schemas/update_label.json +33 -0
- package/integrations/google-sheet/__tests__/get_handlers.test.ts +6 -52
- package/integrations/google-sheet/__tests__/write_handlers.test.ts +0 -20
- package/integrations/google-sheet/handlers/get_spreadsheet.js +2 -0
- package/integrations/google-sheet/handlers/read_sheet.js +75 -0
- package/integrations/google-sheet/manifest.json +13 -62
- package/integrations/google-sheet/prompt.md +49 -0
- package/integrations/google-sheet/schemas/get_spreadsheet.json +5 -4
- package/integrations/google-sheet/schemas/read_sheet.json +21 -0
- package/integrations/google-slides/__tests__/get_handlers.test.ts +12 -9
- package/integrations/google-slides/handlers/read_presentation.js +51 -0
- package/integrations/google-slides/manifest.json +13 -13
- package/integrations/google-slides/prompt.md +56 -0
- package/integrations/new_integration_prompt.md +5 -1
- package/package.json +1 -1
- package/integrations/google-calendar/handlers/update_event.js +0 -5
- package/integrations/google-calendar/schemas/update_event.json +0 -10
- package/integrations/google-docs/handlers/get_document.js +0 -12
- package/integrations/google-docs/handlers/get_document_structured.js +0 -6
- package/integrations/google-docs/handlers/get_document_text.js +0 -17
- package/integrations/google-docs/schemas/get_document.json +0 -11
- package/integrations/google-sheet/handlers/batch_clear_values_by_data_filter.js +0 -6
- package/integrations/google-sheet/handlers/batch_get_values.js +0 -16
- package/integrations/google-sheet/handlers/batch_update_values_by_data_filter.js +0 -16
- package/integrations/google-sheet/handlers/get_developer_metadata.js +0 -6
- package/integrations/google-sheet/handlers/get_spreadsheet_by_data_filter.js +0 -10
- package/integrations/google-sheet/handlers/get_values.js +0 -14
- package/integrations/google-sheet/handlers/get_values_by_data_filter.js +0 -14
- package/integrations/google-sheet/handlers/search_developer_metadata.js +0 -7
- package/integrations/google-sheet/schemas/batch_clear_values_by_data_filter.json +0 -10
- package/integrations/google-sheet/schemas/batch_get_values.json +0 -13
- package/integrations/google-sheet/schemas/batch_update_values_by_data_filter.json +0 -25
- package/integrations/google-sheet/schemas/get_spreadsheet_by_data_filter.json +0 -11
- package/integrations/google-sheet/schemas/get_values.json +0 -13
- package/integrations/google-sheet/schemas/get_values_by_data_filter.json +0 -17
- package/integrations/google-sheet/schemas/search_developer_metadata.json +0 -14
- package/integrations/google-slides/handlers/get_presentation.js +0 -6
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
async (input) => {
|
|
2
|
+
const body = { event: input.event }
|
|
3
|
+
if (input.body !== undefined) body.body = input.body
|
|
4
|
+
if (input.commit_id !== undefined) body.commit_id = input.commit_id
|
|
5
|
+
const res = await integration.fetch(
|
|
6
|
+
`/repos/${input.owner}/${input.repo}/pulls/${input.pull_number}/reviews`,
|
|
7
|
+
{ method: 'POST', body }
|
|
8
|
+
)
|
|
9
|
+
return await res.json()
|
|
10
|
+
}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
async (input) => {
|
|
2
|
+
const body = { tag_name: input.tag_name }
|
|
3
|
+
if (input.name !== undefined) body.name = input.name
|
|
4
|
+
if (input.body !== undefined) body.body = input.body
|
|
5
|
+
if (input.draft !== undefined) body.draft = input.draft
|
|
6
|
+
if (input.prerelease !== undefined) body.prerelease = input.prerelease
|
|
7
|
+
if (input.target_commitish !== undefined) body.target_commitish = input.target_commitish
|
|
8
|
+
if (input.generate_release_notes !== undefined) body.generate_release_notes = input.generate_release_notes
|
|
9
|
+
const res = await integration.fetch(
|
|
10
|
+
`/repos/${input.owner}/${input.repo}/releases`,
|
|
11
|
+
{ method: 'POST', body }
|
|
12
|
+
)
|
|
13
|
+
return await res.json()
|
|
14
|
+
}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
async (input) => {
|
|
2
|
+
const body = { message: input.message, sha: input.sha }
|
|
3
|
+
if (input.branch) body.branch = input.branch
|
|
4
|
+
const res = await integration.fetch(
|
|
5
|
+
`/repos/${input.owner}/${input.repo}/contents/${input.path}`,
|
|
6
|
+
{ method: 'DELETE', body }
|
|
7
|
+
)
|
|
8
|
+
return await res.json()
|
|
9
|
+
}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
async (input) => {
|
|
2
|
+
const body = {}
|
|
3
|
+
if (input.organization) body.organization = input.organization
|
|
4
|
+
if (input.name) body.name = input.name
|
|
5
|
+
const res = await integration.fetch(
|
|
6
|
+
`/repos/${input.owner}/${input.repo}/forks`,
|
|
7
|
+
{ method: 'POST', body }
|
|
8
|
+
)
|
|
9
|
+
return await res.json()
|
|
10
|
+
}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
async (input) => {
|
|
2
|
+
const params = new URLSearchParams()
|
|
3
|
+
if (input.page) params.set('page', String(input.page))
|
|
4
|
+
if (input.per_page) params.set('per_page', String(input.per_page))
|
|
5
|
+
const query = params.toString() ? `?${params.toString()}` : ''
|
|
6
|
+
const res = await integration.fetch(`/repos/${input.owner}/${input.repo}/commits/${input.sha}${query}`)
|
|
7
|
+
return await res.json()
|
|
8
|
+
}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
async (input) => {
|
|
2
|
+
const params = new URLSearchParams()
|
|
3
|
+
if (input.ref) params.set('ref', input.ref)
|
|
4
|
+
const query = params.toString() ? `?${params.toString()}` : ''
|
|
5
|
+
const res = await integration.fetch(`/repos/${input.owner}/${input.repo}/contents/${input.path}${query}`)
|
|
6
|
+
const data = await res.json()
|
|
7
|
+
if (data && data.content && data.encoding === 'base64') {
|
|
8
|
+
try {
|
|
9
|
+
const b64 = data.content.replace(/\n/g, '')
|
|
10
|
+
// Decode base64 → binary string → percent-encode each byte → UTF-8 decode
|
|
11
|
+
data.content = decodeURIComponent(
|
|
12
|
+
atob(b64).split('').map(c => '%' + ('00' + c.charCodeAt(0).toString(16)).slice(-2)).join('')
|
|
13
|
+
)
|
|
14
|
+
data.encoding = 'utf-8'
|
|
15
|
+
}
|
|
16
|
+
catch (e) {
|
|
17
|
+
// Binary file — leave content as base64
|
|
18
|
+
}
|
|
19
|
+
}
|
|
20
|
+
return data
|
|
21
|
+
}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
async (input) => {
|
|
2
|
+
// GitHub returns a redirect to the actual log blob URL; fetch follows it automatically
|
|
3
|
+
const res = await integration.fetch(`/repos/${input.owner}/${input.repo}/actions/jobs/${input.job_id}/logs`)
|
|
4
|
+
const logs = await res.text()
|
|
5
|
+
return { logs }
|
|
6
|
+
}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
async (input) => {
|
|
2
|
+
const ref = input.ref || 'HEAD'
|
|
3
|
+
const params = new URLSearchParams()
|
|
4
|
+
if (input.recursive !== false) params.set('recursive', '1')
|
|
5
|
+
const query = params.toString() ? `?${params.toString()}` : ''
|
|
6
|
+
const res = await integration.fetch(`/repos/${input.owner}/${input.repo}/git/trees/${ref}${query}`)
|
|
7
|
+
const data = await res.json()
|
|
8
|
+
if (input.path_filter && Array.isArray(data.tree)) {
|
|
9
|
+
data.tree = data.tree.filter((item) => item.path && item.path.startsWith(input.path_filter))
|
|
10
|
+
}
|
|
11
|
+
return data
|
|
12
|
+
}
|
|
@@ -1,4 +1,9 @@
|
|
|
1
1
|
async (input) => {
|
|
2
|
-
const
|
|
2
|
+
const params = new URLSearchParams()
|
|
3
|
+
if (input.protected !== undefined) params.set('protected', String(input.protected))
|
|
4
|
+
if (input.page) params.set('page', String(input.page))
|
|
5
|
+
if (input.per_page) params.set('per_page', String(input.per_page))
|
|
6
|
+
const query = params.toString() ? `?${params.toString()}` : ''
|
|
7
|
+
const res = await integration.fetch(`/repos/${input.owner}/${input.repo}/branches${query}`)
|
|
3
8
|
return await res.json()
|
|
4
9
|
}
|
|
@@ -1,11 +1,10 @@
|
|
|
1
1
|
async (input) => {
|
|
2
2
|
const params = new URLSearchParams()
|
|
3
|
-
if (input.sha)
|
|
4
|
-
|
|
5
|
-
if (
|
|
6
|
-
|
|
7
|
-
if (input.
|
|
8
|
-
params.set('author', input.author)
|
|
3
|
+
if (input.sha) params.set('sha', input.sha)
|
|
4
|
+
if (typeof input.path === 'string' && input.path.length > 0) params.set('path', input.path)
|
|
5
|
+
if (input.author) params.set('author', input.author)
|
|
6
|
+
if (input.page) params.set('page', String(input.page))
|
|
7
|
+
if (input.per_page) params.set('per_page', String(input.per_page))
|
|
9
8
|
const query = params.toString() ? `?${params.toString()}` : ''
|
|
10
9
|
const res = await integration.fetch(`/repos/${input.owner}/${input.repo}/commits${query}`)
|
|
11
10
|
return await res.json()
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
async (input) => {
|
|
2
|
+
const params = new URLSearchParams()
|
|
3
|
+
if (input.page) params.set('page', String(input.page))
|
|
4
|
+
if (input.per_page) params.set('per_page', String(input.per_page))
|
|
5
|
+
const query = params.toString() ? `?${params.toString()}` : ''
|
|
6
|
+
const res = await integration.fetch(`/repos/${input.owner}/${input.repo}/issues/${input.issue_number}/comments${query}`)
|
|
7
|
+
return await res.json()
|
|
8
|
+
}
|
|
@@ -1,11 +1,10 @@
|
|
|
1
1
|
async (input) => {
|
|
2
2
|
const params = new URLSearchParams()
|
|
3
|
-
if (input.state)
|
|
4
|
-
|
|
5
|
-
if (input.
|
|
6
|
-
|
|
7
|
-
if (input.
|
|
8
|
-
params.set('assignee', input.assignee)
|
|
3
|
+
if (input.state) params.set('state', input.state)
|
|
4
|
+
if (input.labels) params.set('labels', input.labels)
|
|
5
|
+
if (input.assignee) params.set('assignee', input.assignee)
|
|
6
|
+
if (input.page) params.set('page', String(input.page))
|
|
7
|
+
if (input.per_page) params.set('per_page', String(input.per_page))
|
|
9
8
|
const query = params.toString() ? `?${params.toString()}` : ''
|
|
10
9
|
const res = await integration.fetch(`/repos/${input.owner}/${input.repo}/issues${query}`)
|
|
11
10
|
return await res.json()
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
async (input) => {
|
|
2
|
+
const params = new URLSearchParams()
|
|
3
|
+
if (input.page) params.set('page', String(input.page))
|
|
4
|
+
if (input.per_page) params.set('per_page', String(input.per_page))
|
|
5
|
+
const query = params.toString() ? `?${params.toString()}` : ''
|
|
6
|
+
const res = await integration.fetch(`/repos/${input.owner}/${input.repo}/labels${query}`)
|
|
7
|
+
return await res.json()
|
|
8
|
+
}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
async (input) => {
|
|
2
|
+
const params = new URLSearchParams()
|
|
3
|
+
if (input.page) params.set('page', String(input.page))
|
|
4
|
+
if (input.per_page) params.set('per_page', String(input.per_page))
|
|
5
|
+
const query = params.toString() ? `?${params.toString()}` : ''
|
|
6
|
+
const res = await integration.fetch(`/repos/${input.owner}/${input.repo}/pulls/${input.pull_number}/comments${query}`)
|
|
7
|
+
return await res.json()
|
|
8
|
+
}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
async (input) => {
|
|
2
|
+
const params = new URLSearchParams()
|
|
3
|
+
if (input.page) params.set('page', String(input.page))
|
|
4
|
+
if (input.per_page) params.set('per_page', String(input.per_page))
|
|
5
|
+
const query = params.toString() ? `?${params.toString()}` : ''
|
|
6
|
+
const res = await integration.fetch(`/repos/${input.owner}/${input.repo}/pulls/${input.pull_number}/files${query}`)
|
|
7
|
+
return await res.json()
|
|
8
|
+
}
|
|
@@ -1,7 +1,12 @@
|
|
|
1
1
|
async (input) => {
|
|
2
2
|
const params = new URLSearchParams()
|
|
3
|
-
if (input.state)
|
|
4
|
-
|
|
3
|
+
if (input.state) params.set('state', input.state)
|
|
4
|
+
if (input.head) params.set('head', input.head)
|
|
5
|
+
if (input.base) params.set('base', input.base)
|
|
6
|
+
if (input.sort) params.set('sort', input.sort)
|
|
7
|
+
if (input.direction) params.set('direction', input.direction)
|
|
8
|
+
if (input.page) params.set('page', String(input.page))
|
|
9
|
+
if (input.per_page) params.set('per_page', String(input.per_page))
|
|
5
10
|
const query = params.toString() ? `?${params.toString()}` : ''
|
|
6
11
|
const res = await integration.fetch(`/repos/${input.owner}/${input.repo}/pulls${query}`)
|
|
7
12
|
return await res.json()
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
async (input) => {
|
|
2
|
+
const params = new URLSearchParams()
|
|
3
|
+
if (input.page) params.set('page', String(input.page))
|
|
4
|
+
if (input.per_page) params.set('per_page', String(input.per_page))
|
|
5
|
+
const query = params.toString() ? `?${params.toString()}` : ''
|
|
6
|
+
const res = await integration.fetch(`/repos/${input.owner}/${input.repo}/releases${query}`)
|
|
7
|
+
return await res.json()
|
|
8
|
+
}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
async (input) => {
|
|
2
|
+
const params = new URLSearchParams()
|
|
3
|
+
if (input.page) params.set('page', String(input.page))
|
|
4
|
+
if (input.per_page) params.set('per_page', String(input.per_page))
|
|
5
|
+
const query = params.toString() ? `?${params.toString()}` : ''
|
|
6
|
+
const res = await integration.fetch(`/repos/${input.owner}/${input.repo}/tags${query}`)
|
|
7
|
+
return await res.json()
|
|
8
|
+
}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
async (input) => {
|
|
2
|
+
const params = new URLSearchParams()
|
|
3
|
+
if (input.branch) params.set('branch', input.branch)
|
|
4
|
+
if (input.status) params.set('status', input.status)
|
|
5
|
+
if (input.event) params.set('event', input.event)
|
|
6
|
+
if (input.page) params.set('page', String(input.page))
|
|
7
|
+
if (input.per_page) params.set('per_page', String(input.per_page))
|
|
8
|
+
const query = params.toString() ? `?${params.toString()}` : ''
|
|
9
|
+
const res = await integration.fetch(`/repos/${input.owner}/${input.repo}/actions/runs${query}`)
|
|
10
|
+
return await res.json()
|
|
11
|
+
}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
async (input) => {
|
|
2
|
+
const body = {}
|
|
3
|
+
if (input.reviewers) body.reviewers = input.reviewers
|
|
4
|
+
if (input.team_reviewers) body.team_reviewers = input.team_reviewers
|
|
5
|
+
const res = await integration.fetch(
|
|
6
|
+
`/repos/${input.owner}/${input.repo}/pulls/${input.pull_number}/requested_reviewers`,
|
|
7
|
+
{ method: 'POST', body }
|
|
8
|
+
)
|
|
9
|
+
return await res.json()
|
|
10
|
+
}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
async (input) => {
|
|
2
|
+
const params = new URLSearchParams()
|
|
3
|
+
params.set('q', input.query)
|
|
4
|
+
if (input.page) params.set('page', String(input.page))
|
|
5
|
+
if (input.per_page) params.set('per_page', String(input.per_page))
|
|
6
|
+
const res = await integration.fetch(`/search/code?${params.toString()}`)
|
|
7
|
+
return await res.json()
|
|
8
|
+
}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
async (input) => {
|
|
2
|
+
const params = new URLSearchParams()
|
|
3
|
+
params.set('q', input.query)
|
|
4
|
+
if (input.page) params.set('page', String(input.page))
|
|
5
|
+
if (input.per_page) params.set('per_page', String(input.per_page))
|
|
6
|
+
const res = await integration.fetch(`/search/issues?${params.toString()}`)
|
|
7
|
+
return await res.json()
|
|
8
|
+
}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
async (input) => {
|
|
2
|
+
const params = new URLSearchParams()
|
|
3
|
+
params.set('q', input.query)
|
|
4
|
+
if (input.page) params.set('page', String(input.page))
|
|
5
|
+
if (input.per_page) params.set('per_page', String(input.per_page))
|
|
6
|
+
const res = await integration.fetch(`/search/issues?${params.toString()}`)
|
|
7
|
+
return await res.json()
|
|
8
|
+
}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
async (input) => {
|
|
2
|
+
const params = new URLSearchParams()
|
|
3
|
+
params.set('q', input.query)
|
|
4
|
+
if (input.sort) params.set('sort', input.sort)
|
|
5
|
+
if (input.order) params.set('order', input.order)
|
|
6
|
+
if (input.page) params.set('page', String(input.page))
|
|
7
|
+
if (input.per_page) params.set('per_page', String(input.per_page))
|
|
8
|
+
const res = await integration.fetch(`/search/repositories?${params.toString()}`)
|
|
9
|
+
return await res.json()
|
|
10
|
+
}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
async (input) => {
|
|
2
|
+
const body = {}
|
|
3
|
+
if (input.title !== undefined) body.title = input.title
|
|
4
|
+
if (input.body !== undefined) body.body = input.body
|
|
5
|
+
if (input.state !== undefined) body.state = input.state
|
|
6
|
+
if (input.base !== undefined) body.base = input.base
|
|
7
|
+
if (input.draft !== undefined) body.draft = input.draft
|
|
8
|
+
const res = await integration.fetch(
|
|
9
|
+
`/repos/${input.owner}/${input.repo}/pulls/${input.pull_number}`,
|
|
10
|
+
{ method: 'PATCH', body }
|
|
11
|
+
)
|
|
12
|
+
return await res.json()
|
|
13
|
+
}
|
|
@@ -1,26 +1,64 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "github",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.2.0",
|
|
4
4
|
"tools": [
|
|
5
|
+
{ "name": "get_me", "description": "Get the authenticated user's profile. Use this to find out who you are authenticated as before performing operations.", "inputSchema": "schemas/empty.json", "handler": "handlers/get_me.js", "scope": "read" },
|
|
5
6
|
{ "name": "list_repos", "description": "List repositories for the authenticated user.", "inputSchema": "schemas/empty.json", "handler": "handlers/list_repos_user.js", "scope": "read" },
|
|
6
|
-
{ "name": "get_repo", "description": "Get a repository
|
|
7
|
-
{ "name": "
|
|
8
|
-
|
|
9
|
-
{ "name": "
|
|
10
|
-
{ "name": "
|
|
11
|
-
{ "name": "
|
|
12
|
-
|
|
13
|
-
{ "name": "
|
|
14
|
-
{ "name": "
|
|
15
|
-
{ "name": "
|
|
16
|
-
{ "name": "
|
|
17
|
-
|
|
18
|
-
{ "name": "
|
|
19
|
-
{ "name": "
|
|
20
|
-
{ "name": "
|
|
21
|
-
{ "name": "
|
|
22
|
-
{ "name": "
|
|
23
|
-
|
|
24
|
-
{ "name": "
|
|
7
|
+
{ "name": "get_repo", "description": "Get details for a repository (description, default branch, visibility, topics, stats).", "inputSchema": "schemas/get_repo.json", "handler": "handlers/get_repo.js", "scope": "read" },
|
|
8
|
+
{ "name": "search_repos", "description": "Search GitHub repositories. Supports stars, forks, language, topic, and user filters (e.g. 'topic:react stars:>1000 language:javascript'). Use this to discover repos.", "inputSchema": "schemas/search_repos.json", "handler": "handlers/search_repos.js", "scope": "read" },
|
|
9
|
+
|
|
10
|
+
{ "name": "get_file_contents", "description": "Get the content of a file from a repository. Returns decoded UTF-8 text. Use ref to read from a specific branch, tag, or commit. Call get_repo_tree first to discover file paths.", "inputSchema": "schemas/get_file_contents.json", "handler": "handlers/get_file_contents.js", "scope": "read" },
|
|
11
|
+
{ "name": "get_repo_tree", "description": "Get the full file/directory tree of a repository. Returns all paths and types. Use path_filter to scope to a subdirectory (e.g. 'src/'). Use this before get_file_contents to discover what files exist.", "inputSchema": "schemas/get_repo_tree.json", "handler": "handlers/get_repo_tree.js", "scope": "read" },
|
|
12
|
+
{ "name": "search_code", "description": "Search for code across GitHub repositories using GitHub's code search syntax. Examples: 'useState language:typescript repo:facebook/react', 'console.error path:src/'. Returns file paths and matched fragments.", "inputSchema": "schemas/search_code.json", "handler": "handlers/search_code.js", "scope": "read" },
|
|
13
|
+
|
|
14
|
+
{ "name": "list_branches", "description": "List branches in a repository. Supports pagination and filtering by protection status.", "inputSchema": "schemas/list_branches.json", "handler": "handlers/list_branches.js", "scope": "read" },
|
|
15
|
+
{ "name": "list_commits", "description": "List commits for a repository. Filter by branch/tag (sha), file path, or author. Paginate with page/per_page.", "inputSchema": "schemas/list_commits.json", "handler": "handlers/list_commits.js", "scope": "read" },
|
|
16
|
+
{ "name": "get_commit", "description": "Get the full details of a specific commit including its message, author, file changes, and diff stats.", "inputSchema": "schemas/get_commit.json", "handler": "handlers/get_commit.js", "scope": "read" },
|
|
17
|
+
{ "name": "list_tags", "description": "List tags for a repository. Use this to see available versions before creating a release.", "inputSchema": "schemas/list_tags.json", "handler": "handlers/list_tags.js", "scope": "read" },
|
|
18
|
+
|
|
19
|
+
{ "name": "list_issues", "description": "List issues for a repository. Filter by state (open/closed/all), labels (comma-separated), and assignee. Paginate with page/per_page. Note: this also returns pull requests; use search_issues to exclude them.", "inputSchema": "schemas/list_issues.json", "handler": "handlers/list_issues.js", "scope": "read" },
|
|
20
|
+
{ "name": "get_issue", "description": "Get full details of a specific issue including its body, labels, assignees, and milestone.", "inputSchema": "schemas/get_issue.json", "handler": "handlers/get_issue.js", "scope": "read" },
|
|
21
|
+
{ "name": "list_issue_comments", "description": "List all comments on an issue. Use this to read the full discussion thread before replying.", "inputSchema": "schemas/list_issue_comments.json", "handler": "handlers/list_issue_comments.js", "scope": "read" },
|
|
22
|
+
{ "name": "search_issues", "description": "Search issues using GitHub search syntax (e.g. 'is:open is:issue label:bug repo:owner/repo', 'is:issue no:assignee milestone:v2.0'). More powerful than list_issues for finding specific issues.", "inputSchema": "schemas/search_issues.json", "handler": "handlers/search_issues.js", "scope": "read" },
|
|
23
|
+
{ "name": "list_labels", "description": "List all labels available in a repository. Call this before add_labels_to_issue to see which labels exist.", "inputSchema": "schemas/list_labels.json", "handler": "handlers/list_labels.js", "scope": "read" },
|
|
24
|
+
|
|
25
|
+
{ "name": "list_pull_requests", "description": "List pull requests for a repository. Filter by state, head branch, base branch. Sort and paginate results.", "inputSchema": "schemas/list_pull_requests.json", "handler": "handlers/list_pull_requests.js", "scope": "read" },
|
|
26
|
+
{ "name": "get_pull_request", "description": "Get full details of a specific pull request including title, body, state, merge status, head/base refs, reviewers, and labels.", "inputSchema": "schemas/get_pull_request.json", "handler": "handlers/get_pull_request.js", "scope": "read" },
|
|
27
|
+
{ "name": "get_pull_request_diff", "description": "Get the raw unified diff for a pull request. Returns the complete diff of all changes. For per-file details, use list_pull_request_files instead.", "inputSchema": "schemas/get_pull_request_diff.json", "handler": "handlers/get_pull_request_diff.js", "scope": "read" },
|
|
28
|
+
{ "name": "list_pull_request_files", "description": "List the files changed in a pull request with their status (added/modified/deleted) and patch diff per file. Essential for code review.", "inputSchema": "schemas/list_pull_request_files.json", "handler": "handlers/list_pull_request_files.js", "scope": "read" },
|
|
29
|
+
{ "name": "list_pull_request_comments", "description": "List inline review comments on a pull request (comments attached to specific lines of code).", "inputSchema": "schemas/list_pull_request_comments.json", "handler": "handlers/list_pull_request_comments.js", "scope": "read" },
|
|
30
|
+
{ "name": "search_pull_requests", "description": "Search pull requests using GitHub search syntax. Use 'is:pr' to scope to PRs (e.g. 'is:pr is:open author:octocat', 'is:pr review:required label:bug'). Returns matching PRs across repos.", "inputSchema": "schemas/search_pull_requests.json", "handler": "handlers/search_pull_requests.js", "scope": "read" },
|
|
31
|
+
|
|
32
|
+
{ "name": "list_releases", "description": "List all releases for a repository, newest first.", "inputSchema": "schemas/list_releases.json", "handler": "handlers/list_releases.js", "scope": "read" },
|
|
33
|
+
{ "name": "get_latest_release", "description": "Get the latest published release for a repository. Use this to quickly check the current version.", "inputSchema": "schemas/owner_repo.json", "handler": "handlers/get_latest_release.js", "scope": "read" },
|
|
34
|
+
|
|
35
|
+
{ "name": "list_workflow_runs", "description": "List GitHub Actions workflow runs for a repository. Filter by branch, status (e.g. 'failure', 'success'), or triggering event. Use this to check CI status.", "inputSchema": "schemas/list_workflow_runs.json", "handler": "handlers/list_workflow_runs.js", "scope": "read" },
|
|
36
|
+
{ "name": "get_workflow_run", "description": "Get details of a specific GitHub Actions workflow run including its status, conclusion, timing, and associated commit.", "inputSchema": "schemas/get_workflow_run.json", "handler": "handlers/get_workflow_run.js", "scope": "read" },
|
|
37
|
+
{ "name": "get_job_logs", "description": "Get the log output for a specific GitHub Actions workflow job. Use this to diagnose CI failures. Get job_id from the GitHub Actions UI or the jobs list of a workflow run.", "inputSchema": "schemas/get_job_logs.json", "handler": "handlers/get_job_logs.js", "scope": "read" },
|
|
38
|
+
|
|
39
|
+
{ "name": "create_repo", "description": "Create a new GitHub repository under the authenticated user's account.", "inputSchema": "schemas/create_repo.json", "handler": "handlers/create_repo.js", "scope": "write", "credentialVariants": ["classic_pat"] },
|
|
40
|
+
{ "name": "delete_repo", "description": "Permanently delete a repository. This is irreversible. Requires the delete_repo scope on classic PATs.", "inputSchema": "schemas/delete_repo.json", "handler": "handlers/delete_repo.js", "scope": "write", "credentialVariants": ["classic_pat"] },
|
|
41
|
+
{ "name": "fork_repo", "description": "Fork a repository into your account or an organization. The fork is created asynchronously; the response returns immediately with the new repo details.", "inputSchema": "schemas/fork_repo.json", "handler": "handlers/fork_repo.js", "scope": "write" },
|
|
42
|
+
|
|
43
|
+
{ "name": "create_branch", "description": "Create a new branch in a repository, branching from the repo's default branch by default.", "inputSchema": "schemas/create_branch.json", "handler": "handlers/create_branch.js", "scope": "write" },
|
|
44
|
+
{ "name": "delete_branch", "description": "Delete a branch. Typically used after a pull request is merged. Use list_branches to find the branch name first.", "inputSchema": "schemas/delete_branch.json", "handler": "handlers/delete_branch.js", "scope": "write" },
|
|
45
|
+
|
|
46
|
+
{ "name": "create_or_update_file", "description": "Create or update a single file in a repository. Content must be plain text (base64 encoding is handled internally). Provide sha when updating an existing file (get it from get_file_contents).", "inputSchema": "schemas/create_or_update_file.json", "handler": "handlers/create_or_update_file.js", "scope": "write" },
|
|
47
|
+
{ "name": "delete_file", "description": "Delete a file from a repository. Requires the file's blob SHA (get it from get_file_contents). Creates a commit with the deletion.", "inputSchema": "schemas/delete_file.json", "handler": "handlers/delete_file.js", "scope": "write" },
|
|
48
|
+
{ "name": "create_commit", "description": "Create a commit with multiple file changes in a single operation. Supports adding, modifying, and deleting files atomically. Content must be plain text (base64 handled internally). Omit content to delete a file.", "inputSchema": "schemas/create_commit.json", "handler": "handlers/create_commit.js", "scope": "write" },
|
|
49
|
+
|
|
50
|
+
{ "name": "create_pull_request", "description": "Open a new pull request from a head branch into a base branch.", "inputSchema": "schemas/create_pull_request.json", "handler": "handlers/create_pull_request.js", "scope": "write" },
|
|
51
|
+
{ "name": "update_pull_request", "description": "Edit a pull request's title, body, state (open/closed), base branch, or draft status.", "inputSchema": "schemas/update_pull_request.json", "handler": "handlers/update_pull_request.js", "scope": "write" },
|
|
52
|
+
{ "name": "merge_pull_request", "description": "Merge a pull request. Supports merge, squash, and rebase merge methods.", "inputSchema": "schemas/merge_pull_request.json", "handler": "handlers/merge_pull_request.js", "scope": "write" },
|
|
53
|
+
{ "name": "request_pull_request_reviewers", "description": "Request specific users or teams to review a pull request.", "inputSchema": "schemas/request_pull_request_reviewers.json", "handler": "handlers/request_pull_request_reviewers.js", "scope": "write" },
|
|
54
|
+
{ "name": "create_pull_request_review", "description": "Submit a pull request review. Use event=APPROVE to approve, REQUEST_CHANGES to request changes, or COMMENT to leave a comment-only review.", "inputSchema": "schemas/create_pull_request_review.json", "handler": "handlers/create_pull_request_review.js", "scope": "write" },
|
|
55
|
+
|
|
56
|
+
{ "name": "create_issue", "description": "Create a new issue in a repository. Optionally assign users and add labels.", "inputSchema": "schemas/create_issue.json", "handler": "handlers/create_issue.js", "scope": "write" },
|
|
57
|
+
{ "name": "update_issue", "description": "Update fields on an existing issue (title, body, state, assignees, labels, milestone).", "inputSchema": "schemas/update_issue.json", "handler": "handlers/update_issue.js", "scope": "write" },
|
|
58
|
+
{ "name": "close_issue", "description": "Close an issue.", "inputSchema": "schemas/close_issue.json", "handler": "handlers/close_issue.js", "scope": "write" },
|
|
59
|
+
{ "name": "comment_on_issue", "description": "Add a comment to an issue or pull request (GitHub PRs share the issue comment thread). Use list_issue_comments to read existing comments first.", "inputSchema": "schemas/comment_on_issue.json", "handler": "handlers/comment_on_issue.js", "scope": "write" },
|
|
60
|
+
{ "name": "add_labels_to_issue", "description": "Add labels to an issue or pull request. Use list_labels to discover available labels before calling this.", "inputSchema": "schemas/add_labels_to_issue.json", "handler": "handlers/add_labels_to_issue.js", "scope": "write" },
|
|
61
|
+
|
|
62
|
+
{ "name": "create_release", "description": "Create a new release from a tag. Can auto-generate release notes from commits. Set draft=true to save without publishing, prerelease=true for alpha/beta/rc versions.", "inputSchema": "schemas/create_release.json", "handler": "handlers/create_release.js", "scope": "write" }
|
|
25
63
|
]
|
|
26
64
|
}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
{
|
|
2
|
+
"type": "object",
|
|
3
|
+
"properties": {
|
|
4
|
+
"owner": { "type": "string", "description": "Repository owner" },
|
|
5
|
+
"repo": { "type": "string", "description": "Repository name" },
|
|
6
|
+
"pull_number": { "type": "integer", "description": "Pull request number" },
|
|
7
|
+
"event": {
|
|
8
|
+
"type": "string",
|
|
9
|
+
"enum": ["APPROVE", "REQUEST_CHANGES", "COMMENT"],
|
|
10
|
+
"description": "Review action: APPROVE to approve, REQUEST_CHANGES to request changes, COMMENT to leave a comment only"
|
|
11
|
+
},
|
|
12
|
+
"body": { "type": "string", "description": "Review summary comment (required when event is REQUEST_CHANGES or COMMENT)" },
|
|
13
|
+
"commit_id": { "type": "string", "description": "SHA of the commit to review. Defaults to the latest commit on the PR." }
|
|
14
|
+
},
|
|
15
|
+
"required": ["owner", "repo", "pull_number", "event"],
|
|
16
|
+
"additionalProperties": false
|
|
17
|
+
}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
{
|
|
2
|
+
"type": "object",
|
|
3
|
+
"properties": {
|
|
4
|
+
"owner": { "type": "string", "description": "Repository owner" },
|
|
5
|
+
"repo": { "type": "string", "description": "Repository name" },
|
|
6
|
+
"tag_name": { "type": "string", "description": "Tag to create the release from (e.g. 'v1.2.0'). The tag must already exist or target_commitish must be provided." },
|
|
7
|
+
"name": { "type": "string", "description": "Release title (defaults to tag_name)" },
|
|
8
|
+
"body": { "type": "string", "description": "Release notes in markdown" },
|
|
9
|
+
"draft": { "type": "boolean", "description": "Create as an unpublished draft release", "default": false },
|
|
10
|
+
"prerelease": { "type": "boolean", "description": "Mark as a pre-release (alpha, beta, rc, etc.)", "default": false },
|
|
11
|
+
"target_commitish": { "type": "string", "description": "Branch name or commit SHA to tag from (defaults to the repo's default branch). Required if the tag does not yet exist." },
|
|
12
|
+
"generate_release_notes": { "type": "boolean", "description": "Auto-generate release notes from commits merged since the previous release", "default": false }
|
|
13
|
+
},
|
|
14
|
+
"required": ["owner", "repo", "tag_name"],
|
|
15
|
+
"additionalProperties": false
|
|
16
|
+
}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
{
|
|
2
|
+
"type": "object",
|
|
3
|
+
"properties": {
|
|
4
|
+
"owner": { "type": "string", "description": "Repository owner" },
|
|
5
|
+
"repo": { "type": "string", "description": "Repository name" },
|
|
6
|
+
"branch": { "type": "string", "description": "Branch name to delete (e.g. 'feature/my-feature')" }
|
|
7
|
+
},
|
|
8
|
+
"required": ["owner", "repo", "branch"],
|
|
9
|
+
"additionalProperties": false
|
|
10
|
+
}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
{
|
|
2
|
+
"type": "object",
|
|
3
|
+
"properties": {
|
|
4
|
+
"owner": { "type": "string", "description": "Repository owner" },
|
|
5
|
+
"repo": { "type": "string", "description": "Repository name" },
|
|
6
|
+
"path": { "type": "string", "description": "Path of the file to delete (e.g. 'src/old-file.js')" },
|
|
7
|
+
"message": { "type": "string", "description": "Commit message" },
|
|
8
|
+
"sha": { "type": "string", "description": "The blob SHA of the file to delete. Obtain this from get_file_contents (the 'sha' field on the response)." },
|
|
9
|
+
"branch": { "type": "string", "description": "Branch to delete the file from (defaults to the repo's default branch)" }
|
|
10
|
+
},
|
|
11
|
+
"required": ["owner", "repo", "path", "message", "sha"],
|
|
12
|
+
"additionalProperties": false
|
|
13
|
+
}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
{
|
|
2
|
+
"type": "object",
|
|
3
|
+
"properties": {
|
|
4
|
+
"owner": { "type": "string", "description": "Repository owner to fork from" },
|
|
5
|
+
"repo": { "type": "string", "description": "Repository name to fork" },
|
|
6
|
+
"organization": { "type": "string", "description": "Organization to fork into (defaults to the authenticated user's account)" },
|
|
7
|
+
"name": { "type": "string", "description": "New name for the forked repository (defaults to the original name)" }
|
|
8
|
+
},
|
|
9
|
+
"required": ["owner", "repo"],
|
|
10
|
+
"additionalProperties": false
|
|
11
|
+
}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
{
|
|
2
|
+
"type": "object",
|
|
3
|
+
"properties": {
|
|
4
|
+
"owner": { "type": "string", "description": "Repository owner" },
|
|
5
|
+
"repo": { "type": "string", "description": "Repository name" },
|
|
6
|
+
"sha": { "type": "string", "description": "Commit SHA, branch name, or tag name" },
|
|
7
|
+
"page": { "type": "integer", "default": 1, "description": "Page for paginating large diffs (when a commit touches many files)" },
|
|
8
|
+
"per_page": { "type": "integer", "default": 30, "maximum": 100 }
|
|
9
|
+
},
|
|
10
|
+
"required": ["owner", "repo", "sha"],
|
|
11
|
+
"additionalProperties": false
|
|
12
|
+
}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
{
|
|
2
|
+
"type": "object",
|
|
3
|
+
"properties": {
|
|
4
|
+
"owner": { "type": "string", "description": "Repository owner (user or org)" },
|
|
5
|
+
"repo": { "type": "string", "description": "Repository name" },
|
|
6
|
+
"path": { "type": "string", "description": "File path within the repository (e.g. 'src/index.js')" },
|
|
7
|
+
"ref": { "type": "string", "description": "Branch name, tag, or commit SHA (defaults to the repo's default branch)" }
|
|
8
|
+
},
|
|
9
|
+
"required": ["owner", "repo", "path"],
|
|
10
|
+
"additionalProperties": false
|
|
11
|
+
}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
{
|
|
2
|
+
"type": "object",
|
|
3
|
+
"properties": {
|
|
4
|
+
"owner": { "type": "string", "description": "Repository owner" },
|
|
5
|
+
"repo": { "type": "string", "description": "Repository name" },
|
|
6
|
+
"job_id": { "type": "integer", "description": "Workflow job ID. Get this from the 'jobs' field of get_workflow_run, or from the GitHub Actions UI URL." }
|
|
7
|
+
},
|
|
8
|
+
"required": ["owner", "repo", "job_id"],
|
|
9
|
+
"additionalProperties": false
|
|
10
|
+
}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
{
|
|
2
|
+
"type": "object",
|
|
3
|
+
"properties": {
|
|
4
|
+
"owner": { "type": "string", "description": "Repository owner" },
|
|
5
|
+
"repo": { "type": "string", "description": "Repository name" },
|
|
6
|
+
"pull_number": { "type": "integer", "description": "Pull request number" }
|
|
7
|
+
},
|
|
8
|
+
"required": ["owner", "repo", "pull_number"],
|
|
9
|
+
"additionalProperties": false
|
|
10
|
+
}
|