@github-tools/sdk 1.0.0 → 1.1.0
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/index.d.mts +11 -3
- package/dist/index.d.mts.map +1 -1
- package/dist/index.mjs +4 -2
- package/dist/index.mjs.map +1 -1
- package/package.json +1 -1
package/dist/index.d.mts
CHANGED
|
@@ -334,7 +334,11 @@ declare const getCommit: (octokit: Octokit) => ai.Tool<{
|
|
|
334
334
|
type AgentOptions = Omit<ToolLoopAgentSettings, 'model' | 'tools' | 'instructions'>;
|
|
335
335
|
type CreateGithubAgentOptions = AgentOptions & {
|
|
336
336
|
model: ToolLoopAgentSettings['model'];
|
|
337
|
-
|
|
337
|
+
/**
|
|
338
|
+
* GitHub personal access token.
|
|
339
|
+
* Falls back to `process.env.GITHUB_TOKEN` when omitted.
|
|
340
|
+
*/
|
|
341
|
+
token?: string;
|
|
338
342
|
preset?: GithubToolPreset | GithubToolPreset[];
|
|
339
343
|
requireApproval?: ApprovalConfig;
|
|
340
344
|
instructions?: string;
|
|
@@ -396,7 +400,11 @@ type ApprovalConfig = boolean | Partial<Record<GithubWriteToolName, boolean>>;
|
|
|
396
400
|
*/
|
|
397
401
|
type GithubToolPreset = 'code-review' | 'issue-triage' | 'repo-explorer' | 'maintainer';
|
|
398
402
|
type GithubToolsOptions = {
|
|
399
|
-
|
|
403
|
+
/**
|
|
404
|
+
* GitHub personal access token.
|
|
405
|
+
* Falls back to `process.env.GITHUB_TOKEN` when omitted.
|
|
406
|
+
*/
|
|
407
|
+
token?: string;
|
|
400
408
|
requireApproval?: ApprovalConfig;
|
|
401
409
|
/**
|
|
402
410
|
* Restrict the returned tools to a predefined preset.
|
|
@@ -447,7 +455,7 @@ declare function createGithubTools({
|
|
|
447
455
|
token,
|
|
448
456
|
requireApproval,
|
|
449
457
|
preset
|
|
450
|
-
}
|
|
458
|
+
}?: GithubToolsOptions): Partial<{
|
|
451
459
|
getRepository: ai.Tool<{
|
|
452
460
|
owner: string;
|
|
453
461
|
repo: string;
|
package/dist/index.d.mts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.mts","names":[],"sources":["../src/client.ts","../src/types.ts","../src/tools/repository.ts","../src/tools/pull-requests.ts","../src/tools/issues.ts","../src/tools/search.ts","../src/tools/commits.ts","../src/agents.ts","../src/index.ts"],"mappings":";;;;;iBAEgB,aAAA,CAAc,KAAA,WAAgB,SAAA;;;KCAlC,WAAA;EAAgB,aAAA;AAAA;;;cCEf,aAAA,GAAiB,OAAA,EAAS,OAAA,KAAO,EAAA,CAAA,IAAA;;;;;;;;;;;;;;;;;cA0BjC,YAAA,GAAgB,OAAA,EAAS,OAAA,KAAO,EAAA,CAAA,IAAA;;;;;;;;;cAkBhC,cAAA,GAAkB,OAAA,EAAS,OAAA,KAAO,EAAA,CAAA,IAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;cA4BlC,kBAAA,GAAsB,OAAA,EAAS,OAAA;EAAS;AAAA,IAA0B,WAAA,KAAgB,EAAA,CAAA,IAAA;;;;;;;;;;;;;;;;cCxElF,gBAAA,GAAoB,OAAA,EAAS,OAAA,KAAO,EAAA,CAAA,IAAA;;;;;;;;;;;;;;;;;cA0BpC,cAAA,GAAkB,OAAA,EAAS,OAAA,KAAO,EAAA,CAAA,IAAA;;;;;;;;;;;;;;;;;;;;;;;cAgClC,iBAAA,GAAqB,OAAA,EAAS,OAAA;EAAS;AAAA,IAA0B,WAAA,KAAgB,EAAA,CAAA,IAAA;;;;;;;;;;;;;;;;;cA2BjF,gBAAA,GAAoB,OAAA,EAAS,OAAA;EAAS;AAAA,IAA0B,WAAA,KAAgB,EAAA,CAAA,IAAA;;;;;;;;;;;;cA6BhF,qBAAA,GAAyB,OAAA,EAAS,OAAA;EAAS;AAAA,IAA0B,WAAA,KAAgB,EAAA,CAAA,IAAA;;;;;;;;;;;;;;cClHrF,UAAA,GAAc,OAAA,EAAS,OAAA,KAAO,EAAA,CAAA,IAAA;;;;;;;;;;;;;;;;cAiC9B,QAAA,GAAY,OAAA,EAAS,OAAA,KAAO,EAAA,CAAA,IAAA;;;;;;;;;;;;;;;;;;cA2B5B,WAAA,GAAe,OAAA,EAAS,OAAA;EAAS;AAAA,IAA0B,WAAA,KAAgB,EAAA,CAAA,IAAA;;;;;;;;;;;;;;cAwB3E,eAAA,GAAmB,OAAA,EAAS,OAAA;EAAS;AAAA,IAA0B,WAAA,KAAgB,EAAA,CAAA,IAAA;;;;;;;;;;;;cAsB/E,UAAA,GAAc,OAAA,EAAS,OAAA;EAAS;AAAA,IAA0B,WAAA,KAAgB,EAAA,CAAA,IAAA;;;;;;;;;;;;;;cC1G1E,UAAA,GAAc,OAAA,EAAS,OAAA,KAAO,EAAA,CAAA,IAAA;;;;;;;;;;;;;cAsB9B,kBAAA,GAAsB,OAAA,EAAS,OAAA,KAAO,EAAA,CAAA,IAAA;;;;;;;;;;;;;;;;;;;;cCtBtC,WAAA,GAAe,OAAA,EAAS,OAAA,KAAO,EAAA,CAAA,IAAA;;;;;;;;;;;;;;;;;cAmC/B,SAAA,GAAa,OAAA,EAAS,OAAA,KAAO,EAAA,CAAA,IAAA;;;;;;;;;;;;;;;;;;;;;;;;;;KCkBrC,YAAA,GAAe,IAAA,CAAK,qBAAA;AAAA,KAEb,wBAAA,GAA2B,YAAA;EACrC,KAAA,EAAO,qBAAA;
|
|
1
|
+
{"version":3,"file":"index.d.mts","names":[],"sources":["../src/client.ts","../src/types.ts","../src/tools/repository.ts","../src/tools/pull-requests.ts","../src/tools/issues.ts","../src/tools/search.ts","../src/tools/commits.ts","../src/agents.ts","../src/index.ts"],"mappings":"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"}
|
package/dist/index.mjs
CHANGED
|
@@ -744,8 +744,10 @@ function resolvePresetTools(preset) {
|
|
|
744
744
|
* })
|
|
745
745
|
* ```
|
|
746
746
|
*/
|
|
747
|
-
function createGithubTools({ token, requireApproval = true, preset }) {
|
|
748
|
-
const
|
|
747
|
+
function createGithubTools({ token, requireApproval = true, preset } = {}) {
|
|
748
|
+
const resolvedToken = token || process.env.GITHUB_TOKEN;
|
|
749
|
+
if (!resolvedToken) throw new Error("GitHub token is required. Pass it as `token` or set the GITHUB_TOKEN environment variable.");
|
|
750
|
+
const octokit = createOctokit(resolvedToken);
|
|
749
751
|
const approval = (name) => ({ needsApproval: resolveApproval(name, requireApproval) });
|
|
750
752
|
const allowed = preset ? resolvePresetTools(preset) : null;
|
|
751
753
|
const allTools = {
|
package/dist/index.mjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.mjs","names":[],"sources":["../src/client.ts","../src/tools/repository.ts","../src/tools/pull-requests.ts","../src/tools/issues.ts","../src/tools/search.ts","../src/tools/commits.ts","../src/agents.ts","../src/index.ts"],"sourcesContent":["import { Octokit } from '@octokit/rest'\n\nexport function createOctokit(token: string): Octokit {\n return new Octokit({ auth: token })\n}\n","import { tool } from 'ai'\nimport { z } from 'zod'\nimport type { Octokit, ToolOptions } from '../types'\n\nexport const getRepository = (octokit: Octokit) =>\n tool({\n description: 'Get information about a GitHub repository including description, stars, forks, language, and default branch',\n inputSchema: z.object({\n owner: z.string().describe('Repository owner (user or organization)'),\n repo: z.string().describe('Repository name'),\n }),\n execute: async ({ owner, repo }) => {\n const { data } = await octokit.repos.get({ owner, repo })\n return {\n name: data.name,\n fullName: data.full_name,\n description: data.description,\n url: data.html_url,\n defaultBranch: data.default_branch,\n stars: data.stargazers_count,\n forks: data.forks_count,\n openIssues: data.open_issues_count,\n language: data.language,\n private: data.private,\n createdAt: data.created_at,\n updatedAt: data.updated_at,\n }\n },\n })\n\nexport const listBranches = (octokit: Octokit) =>\n tool({\n description: 'List branches in a GitHub repository',\n inputSchema: z.object({\n owner: z.string().describe('Repository owner'),\n repo: z.string().describe('Repository name'),\n perPage: z.number().optional().default(30).describe('Number of branches to return (max 100)'),\n }),\n execute: async ({ owner, repo, perPage }) => {\n const { data } = await octokit.repos.listBranches({ owner, repo, per_page: perPage })\n return data.map(branch => ({\n name: branch.name,\n sha: branch.commit.sha,\n protected: branch.protected,\n }))\n },\n })\n\nexport const getFileContent = (octokit: Octokit) =>\n tool({\n description: 'Get the content of a file from a GitHub repository',\n inputSchema: z.object({\n owner: z.string().describe('Repository owner'),\n repo: z.string().describe('Repository name'),\n path: z.string().describe('Path to the file in the repository'),\n ref: z.string().optional().describe('Branch, tag, or commit SHA (defaults to the default branch)'),\n }),\n execute: async ({ owner, repo, path, ref }) => {\n const { data } = await octokit.repos.getContent({ owner, repo, path, ref })\n if (Array.isArray(data)) {\n return { type: 'directory', entries: data.map(e => ({ name: e.name, type: e.type, path: e.path })) }\n }\n if (data.type !== 'file') {\n return { type: data.type, path: data.path }\n }\n const content = Buffer.from(data.content, 'base64').toString('utf-8')\n return {\n type: 'file',\n path: data.path,\n sha: data.sha,\n size: data.size,\n content,\n }\n },\n })\n\nexport const createOrUpdateFile = (octokit: Octokit, { needsApproval = true }: ToolOptions = {}) =>\n tool({\n description: 'Create or update a file in a GitHub repository. Provide the SHA when updating an existing file.',\n needsApproval,\n inputSchema: z.object({\n owner: z.string().describe('Repository owner'),\n repo: z.string().describe('Repository name'),\n path: z.string().describe('Path to the file in the repository'),\n message: z.string().describe('Commit message'),\n content: z.string().describe('File content (plain text, will be base64-encoded automatically)'),\n branch: z.string().optional().describe('Branch to commit to (defaults to the default branch)'),\n sha: z.string().optional().describe('SHA of the file being replaced (required when updating an existing file)'),\n }),\n execute: async ({ owner, repo, path, message, content, branch, sha }) => {\n const encoded = Buffer.from(content).toString('base64')\n const { data } = await octokit.repos.createOrUpdateFileContents({\n owner,\n repo,\n path,\n message,\n content: encoded,\n branch,\n sha,\n })\n return {\n path: data.content?.path,\n sha: data.content?.sha,\n commitSha: data.commit.sha,\n commitUrl: data.commit.html_url,\n }\n },\n })\n","import { tool } from 'ai'\nimport { z } from 'zod'\nimport type { Octokit, ToolOptions } from '../types'\n\nexport const listPullRequests = (octokit: Octokit) =>\n tool({\n description: 'List pull requests for a GitHub repository',\n inputSchema: z.object({\n owner: z.string().describe('Repository owner'),\n repo: z.string().describe('Repository name'),\n state: z.enum(['open', 'closed', 'all']).optional().default('open').describe('Filter by state'),\n perPage: z.number().optional().default(30).describe('Number of results to return (max 100)'),\n }),\n execute: async ({ owner, repo, state, perPage }) => {\n const { data } = await octokit.pulls.list({ owner, repo, state, per_page: perPage })\n return data.map(pr => ({\n number: pr.number,\n title: pr.title,\n state: pr.state,\n url: pr.html_url,\n author: pr.user?.login,\n branch: pr.head.ref,\n base: pr.base.ref,\n draft: pr.draft,\n createdAt: pr.created_at,\n updatedAt: pr.updated_at,\n }))\n },\n })\n\nexport const getPullRequest = (octokit: Octokit) =>\n tool({\n description: 'Get detailed information about a specific pull request',\n inputSchema: z.object({\n owner: z.string().describe('Repository owner'),\n repo: z.string().describe('Repository name'),\n pullNumber: z.number().describe('Pull request number'),\n }),\n execute: async ({ owner, repo, pullNumber }) => {\n const { data } = await octokit.pulls.get({ owner, repo, pull_number: pullNumber })\n return {\n number: data.number,\n title: data.title,\n body: data.body,\n state: data.state,\n url: data.html_url,\n author: data.user?.login,\n branch: data.head.ref,\n base: data.base.ref,\n draft: data.draft,\n merged: data.merged,\n mergeable: data.mergeable,\n additions: data.additions,\n deletions: data.deletions,\n changedFiles: data.changed_files,\n createdAt: data.created_at,\n updatedAt: data.updated_at,\n mergedAt: data.merged_at,\n }\n },\n })\n\nexport const createPullRequest = (octokit: Octokit, { needsApproval = true }: ToolOptions = {}) =>\n tool({\n description: 'Create a new pull request in a GitHub repository',\n needsApproval,\n inputSchema: z.object({\n owner: z.string().describe('Repository owner'),\n repo: z.string().describe('Repository name'),\n title: z.string().describe('Pull request title'),\n body: z.string().optional().describe('Pull request description (supports Markdown)'),\n head: z.string().describe('Branch containing the changes (format: branch or username:branch)'),\n base: z.string().describe('Branch to merge into'),\n draft: z.boolean().optional().default(false).describe('Create as draft pull request'),\n }),\n execute: async ({ owner, repo, title, body, head, base, draft }) => {\n const { data } = await octokit.pulls.create({ owner, repo, title, body, head, base, draft })\n return {\n number: data.number,\n title: data.title,\n url: data.html_url,\n state: data.state,\n draft: data.draft,\n branch: data.head.ref,\n base: data.base.ref,\n }\n },\n })\n\nexport const mergePullRequest = (octokit: Octokit, { needsApproval = true }: ToolOptions = {}) =>\n tool({\n description: 'Merge a pull request',\n needsApproval,\n inputSchema: z.object({\n owner: z.string().describe('Repository owner'),\n repo: z.string().describe('Repository name'),\n pullNumber: z.number().describe('Pull request number'),\n commitTitle: z.string().optional().describe('Title for the automatic merge commit'),\n commitMessage: z.string().optional().describe('Extra detail to append to automatic commit message'),\n mergeMethod: z.enum(['merge', 'squash', 'rebase']).optional().default('merge').describe('Merge strategy'),\n }),\n execute: async ({ owner, repo, pullNumber, commitTitle, commitMessage, mergeMethod }) => {\n const { data } = await octokit.pulls.merge({\n owner,\n repo,\n pull_number: pullNumber,\n commit_title: commitTitle,\n commit_message: commitMessage,\n merge_method: mergeMethod,\n })\n return {\n merged: data.merged,\n message: data.message,\n sha: data.sha,\n }\n },\n })\n\nexport const addPullRequestComment = (octokit: Octokit, { needsApproval = true }: ToolOptions = {}) =>\n tool({\n description: 'Add a comment to a pull request',\n needsApproval,\n inputSchema: z.object({\n owner: z.string().describe('Repository owner'),\n repo: z.string().describe('Repository name'),\n pullNumber: z.number().describe('Pull request number'),\n body: z.string().describe('Comment text (supports Markdown)'),\n }),\n execute: async ({ owner, repo, pullNumber, body }) => {\n const { data } = await octokit.issues.createComment({ owner, repo, issue_number: pullNumber, body })\n return {\n id: data.id,\n url: data.html_url,\n body: data.body,\n author: data.user?.login,\n createdAt: data.created_at,\n }\n },\n })\n","import { tool } from 'ai'\nimport { z } from 'zod'\nimport type { Octokit, ToolOptions } from '../types'\n\nexport const listIssues = (octokit: Octokit) =>\n tool({\n description: 'List issues for a GitHub repository (excludes pull requests)',\n inputSchema: z.object({\n owner: z.string().describe('Repository owner'),\n repo: z.string().describe('Repository name'),\n state: z.enum(['open', 'closed', 'all']).optional().default('open').describe('Filter by state'),\n labels: z.string().optional().describe('Comma-separated list of label names to filter by'),\n perPage: z.number().optional().default(30).describe('Number of results to return (max 100)'),\n }),\n execute: async ({ owner, repo, state, labels, perPage }) => {\n const { data } = await octokit.issues.listForRepo({\n owner,\n repo,\n state,\n labels,\n per_page: perPage,\n })\n return data\n .filter(issue => !issue.pull_request)\n .map(issue => ({\n number: issue.number,\n title: issue.title,\n state: issue.state,\n url: issue.html_url,\n author: issue.user?.login,\n labels: issue.labels.map(l => (typeof l === 'string' ? l : l.name)),\n createdAt: issue.created_at,\n updatedAt: issue.updated_at,\n }))\n },\n })\n\nexport const getIssue = (octokit: Octokit) =>\n tool({\n description: 'Get detailed information about a specific issue',\n inputSchema: z.object({\n owner: z.string().describe('Repository owner'),\n repo: z.string().describe('Repository name'),\n issueNumber: z.number().describe('Issue number'),\n }),\n execute: async ({ owner, repo, issueNumber }) => {\n const { data } = await octokit.issues.get({ owner, repo, issue_number: issueNumber })\n return {\n number: data.number,\n title: data.title,\n body: data.body,\n state: data.state,\n url: data.html_url,\n author: data.user?.login,\n assignees: data.assignees?.map(a => a.login),\n labels: data.labels.map(l => (typeof l === 'string' ? l : l.name)),\n comments: data.comments,\n createdAt: data.created_at,\n updatedAt: data.updated_at,\n closedAt: data.closed_at,\n }\n },\n })\n\nexport const createIssue = (octokit: Octokit, { needsApproval = true }: ToolOptions = {}) =>\n tool({\n description: 'Create a new issue in a GitHub repository',\n needsApproval,\n inputSchema: z.object({\n owner: z.string().describe('Repository owner'),\n repo: z.string().describe('Repository name'),\n title: z.string().describe('Issue title'),\n body: z.string().optional().describe('Issue description (supports Markdown)'),\n labels: z.array(z.string()).optional().describe('Labels to apply to the issue'),\n assignees: z.array(z.string()).optional().describe('GitHub usernames to assign to the issue'),\n }),\n execute: async ({ owner, repo, title, body, labels, assignees }) => {\n const { data } = await octokit.issues.create({ owner, repo, title, body, labels, assignees })\n return {\n number: data.number,\n title: data.title,\n url: data.html_url,\n state: data.state,\n labels: data.labels.map(l => (typeof l === 'string' ? l : l.name)),\n }\n },\n })\n\nexport const addIssueComment = (octokit: Octokit, { needsApproval = true }: ToolOptions = {}) =>\n tool({\n description: 'Add a comment to a GitHub issue',\n needsApproval,\n inputSchema: z.object({\n owner: z.string().describe('Repository owner'),\n repo: z.string().describe('Repository name'),\n issueNumber: z.number().describe('Issue number'),\n body: z.string().describe('Comment text (supports Markdown)'),\n }),\n execute: async ({ owner, repo, issueNumber, body }) => {\n const { data } = await octokit.issues.createComment({ owner, repo, issue_number: issueNumber, body })\n return {\n id: data.id,\n url: data.html_url,\n body: data.body,\n author: data.user?.login,\n createdAt: data.created_at,\n }\n },\n })\n\nexport const closeIssue = (octokit: Octokit, { needsApproval = true }: ToolOptions = {}) =>\n tool({\n description: 'Close an open GitHub issue',\n needsApproval,\n inputSchema: z.object({\n owner: z.string().describe('Repository owner'),\n repo: z.string().describe('Repository name'),\n issueNumber: z.number().describe('Issue number to close'),\n stateReason: z.enum(['completed', 'not_planned']).optional().default('completed').describe('Reason for closing'),\n }),\n execute: async ({ owner, repo, issueNumber, stateReason }) => {\n const { data } = await octokit.issues.update({\n owner,\n repo,\n issue_number: issueNumber,\n state: 'closed',\n state_reason: stateReason,\n })\n return {\n number: data.number,\n title: data.title,\n state: data.state,\n url: data.html_url,\n closedAt: data.closed_at,\n }\n },\n })\n","import { tool } from 'ai'\nimport { z } from 'zod'\nimport type { Octokit } from '../types'\n\nexport const searchCode = (octokit: Octokit) =>\n tool({\n description: 'Search for code in GitHub repositories. Use qualifiers like \"repo:owner/name\" to scope the search.',\n inputSchema: z.object({\n query: z.string().describe('Search query. Supports GitHub search qualifiers, e.g. \"useState repo:facebook/react\"'),\n perPage: z.number().optional().default(10).describe('Number of results to return (max 30)'),\n }),\n execute: async ({ query, perPage }) => {\n const { data } = await octokit.search.code({ q: query, per_page: perPage })\n return {\n totalCount: data.total_count,\n items: data.items.map(item => ({\n name: item.name,\n path: item.path,\n url: item.html_url,\n repository: item.repository.full_name,\n sha: item.sha,\n })),\n }\n },\n })\n\nexport const searchRepositories = (octokit: Octokit) =>\n tool({\n description: 'Search for GitHub repositories by keyword, topic, language, or other qualifiers',\n inputSchema: z.object({\n query: z.string().describe('Search query. Supports GitHub search qualifiers, e.g. \"nuxt language:typescript stars:>1000\"'),\n perPage: z.number().optional().default(10).describe('Number of results to return (max 30)'),\n sort: z.enum(['stars', 'forks', 'help-wanted-issues', 'updated']).optional().describe('Sort field'),\n order: z.enum(['asc', 'desc']).optional().default('desc').describe('Sort order'),\n }),\n execute: async ({ query, perPage, sort, order }) => {\n const { data } = await octokit.search.repos({ q: query, per_page: perPage, sort, order })\n return {\n totalCount: data.total_count,\n items: data.items.map(repo => ({\n name: repo.name,\n fullName: repo.full_name,\n description: repo.description,\n url: repo.html_url,\n stars: repo.stargazers_count,\n forks: repo.forks_count,\n language: repo.language,\n topics: repo.topics,\n })),\n }\n },\n })\n","import { tool } from 'ai'\nimport { z } from 'zod'\nimport type { Octokit } from '../types'\n\nexport const listCommits = (octokit: Octokit) =>\n tool({\n description: 'List commits for a GitHub repository. Filter by file path to see who changed a specific file and when (git blame alternative). Filter by author, branch, or date range.',\n inputSchema: z.object({\n owner: z.string().describe('Repository owner'),\n repo: z.string().describe('Repository name'),\n path: z.string().optional().describe('Only commits containing this file path'),\n sha: z.string().optional().describe('Branch name or commit SHA to start listing from'),\n author: z.string().optional().describe('GitHub username or email to filter commits by'),\n since: z.string().optional().describe('Only commits after this date (ISO 8601 format)'),\n until: z.string().optional().describe('Only commits before this date (ISO 8601 format)'),\n perPage: z.number().optional().default(30).describe('Number of results to return (max 100)'),\n }),\n execute: async ({ owner, repo, path, sha, author, since, until, perPage }) => {\n const { data } = await octokit.repos.listCommits({\n owner,\n repo,\n path,\n sha,\n author,\n since,\n until,\n per_page: perPage,\n })\n return data.map(commit => ({\n sha: commit.sha,\n message: commit.commit.message,\n author: commit.commit.author?.name,\n authorLogin: commit.author?.login,\n date: commit.commit.author?.date,\n url: commit.html_url,\n }))\n },\n })\n\nexport const getCommit = (octokit: Octokit) =>\n tool({\n description: 'Get detailed information about a specific commit, including the list of files changed with additions and deletions',\n inputSchema: z.object({\n owner: z.string().describe('Repository owner'),\n repo: z.string().describe('Repository name'),\n ref: z.string().describe('Commit SHA, branch name, or tag'),\n }),\n execute: async ({ owner, repo, ref }) => {\n const { data } = await octokit.repos.getCommit({ owner, repo, ref })\n return {\n sha: data.sha,\n message: data.commit.message,\n author: data.commit.author?.name,\n authorLogin: data.author?.login,\n date: data.commit.author?.date,\n url: data.html_url,\n stats: data.stats ? {\n additions: data.stats.additions,\n deletions: data.stats.deletions,\n total: data.stats.total,\n } : null,\n files: data.files?.map(file => ({\n filename: file.filename,\n status: file.status,\n additions: file.additions,\n deletions: file.deletions,\n patch: file.patch,\n })),\n }\n },\n })\n","import { ToolLoopAgent } from 'ai'\nimport type { ToolLoopAgentSettings } from 'ai'\nimport { createGithubTools } from './index'\nimport type { GithubToolPreset, ApprovalConfig } from './index'\n\nconst SHARED_RULES = `When a tool execution is denied by the user, do not retry it. Briefly acknowledge the decision and move on.`\n\nconst DEFAULT_INSTRUCTIONS = `You are a helpful GitHub assistant. You can read and explore repositories, issues, pull requests, commits, and code. You can also create issues, pull requests, comments, and update files when asked.\n\n${SHARED_RULES}`\n\nconst PRESET_INSTRUCTIONS: Record<GithubToolPreset, string> = {\n 'code-review': `You are a code review assistant. Your job is to review pull requests thoroughly and provide constructive feedback.\n\nWhen reviewing a PR:\n- Read the PR description and changed files carefully\n- Check for bugs, logic errors, and edge cases\n- Suggest improvements when you spot issues\n- Be constructive — explain why something is a problem and how to fix it\n- Post your review as PR comments when asked\n\n${SHARED_RULES}`,\n\n 'issue-triage': `You are an issue triage assistant. Your job is to help manage and organize GitHub issues.\n\nWhen triaging issues:\n- Read issue descriptions carefully to understand the problem\n- Identify duplicates when possible\n- Help categorize and prioritize issues\n- Respond to users with clear, helpful information\n- Create new issues when asked, with clear titles and descriptions\n\n${SHARED_RULES}`,\n\n 'repo-explorer': `You are a repository explorer. Your job is to help users understand codebases and find information across GitHub repositories.\n\nWhen exploring repos:\n- Answer questions about code structure and organization\n- Summarize recent activity (commits, PRs, issues)\n- Find specific files, functions, or patterns in code\n- Explain how different parts of the codebase work together\n- You have read-only access — you cannot make changes\n\n${SHARED_RULES}`,\n\n 'maintainer': `You are a repository maintainer assistant. You have full access to manage repositories, issues, and pull requests.\n\nWhen maintaining repos:\n- Be careful with write operations — review before acting\n- Create well-structured issues and PRs with clear descriptions\n- Use merge strategies appropriate for the repository\n- Keep commit messages clean and descriptive\n- When closing issues, provide a clear reason\n\n${SHARED_RULES}`\n}\n\ntype AgentOptions = Omit<ToolLoopAgentSettings, 'model' | 'tools' | 'instructions'>\n\nexport type CreateGithubAgentOptions = AgentOptions & {\n model: ToolLoopAgentSettings['model']\n token: string\n preset?: GithubToolPreset | GithubToolPreset[]\n requireApproval?: ApprovalConfig\n instructions?: string\n additionalInstructions?: string\n}\n\n/**\n * Create a pre-configured GitHub agent powered by the AI SDK's `ToolLoopAgent`.\n *\n * Returns a `ToolLoopAgent` instance with `.generate()` and `.stream()` methods.\n *\n * @example\n * ```ts\n * import { createGithubAgent } from '@github-tools/sdk'\n *\n * const agent = createGithubAgent({\n * model: 'anthropic/claude-sonnet-4-6',\n * token: process.env.GITHUB_TOKEN!,\n * preset: 'code-review',\n * })\n *\n * const result = await agent.generate({ prompt: 'Review PR #42 on vercel/ai' })\n * ```\n */\nexport function createGithubAgent({\n token,\n preset,\n requireApproval,\n instructions,\n additionalInstructions,\n ...agentOptions\n}: CreateGithubAgentOptions) {\n const tools = createGithubTools({ token, requireApproval, preset })\n\n const defaultPrompt = preset && !Array.isArray(preset)\n ? PRESET_INSTRUCTIONS[preset]\n : DEFAULT_INSTRUCTIONS\n\n let resolvedInstructions: string\n if (instructions) {\n resolvedInstructions = instructions\n } else if (additionalInstructions) {\n resolvedInstructions = `${defaultPrompt}\\n\\n${additionalInstructions}`\n } else {\n resolvedInstructions = defaultPrompt\n }\n\n return new ToolLoopAgent({\n ...agentOptions,\n tools,\n instructions: resolvedInstructions\n })\n}\n","import { createOctokit } from './client'\nimport { getRepository, listBranches, getFileContent, createOrUpdateFile } from './tools/repository'\nimport { listPullRequests, getPullRequest, createPullRequest, mergePullRequest, addPullRequestComment } from './tools/pull-requests'\nimport { listIssues, getIssue, createIssue, addIssueComment, closeIssue } from './tools/issues'\nimport { searchCode, searchRepositories } from './tools/search'\nimport { listCommits, getCommit } from './tools/commits'\n\nexport type GithubWriteToolName =\n | 'createOrUpdateFile'\n | 'createPullRequest'\n | 'mergePullRequest'\n | 'addPullRequestComment'\n | 'createIssue'\n | 'addIssueComment'\n | 'closeIssue'\n\n/**\n * Whether write operations require user approval.\n * - `true` — all write tools need approval (default)\n * - `false` — no approval needed for any write tool\n * - object — per-tool override; unspecified write tools default to `true`\n *\n * @example\n * ```ts\n * requireApproval: {\n * mergePullRequest: true,\n * createOrUpdateFile: true,\n * addPullRequestComment: false,\n * addIssueComment: false,\n * }\n * ```\n */\nexport type ApprovalConfig = boolean | Partial<Record<GithubWriteToolName, boolean>>\n\n/**\n * Predefined tool presets for common use cases.\n *\n * - `'code-review'` — Review PRs: read PRs, file content, commits, and post comments\n * - `'issue-triage'` — Triage issues: read/create/close issues, search, and comment\n * - `'repo-explorer'` — Explore repos: read-only access to repos, branches, code, and search\n * - `'maintainer'` — Full maintenance: all read + create PRs, merge, manage issues\n */\nexport type GithubToolPreset = 'code-review' | 'issue-triage' | 'repo-explorer' | 'maintainer'\n\nconst PRESET_TOOLS: Record<GithubToolPreset, string[]> = {\n 'code-review': [\n 'getPullRequest', 'listPullRequests', 'getFileContent', 'listCommits', 'getCommit',\n 'getRepository', 'listBranches', 'searchCode',\n 'addPullRequestComment'\n ],\n 'issue-triage': [\n 'listIssues', 'getIssue', 'createIssue', 'addIssueComment', 'closeIssue',\n 'getRepository', 'searchRepositories', 'searchCode'\n ],\n 'repo-explorer': [\n 'getRepository', 'listBranches', 'getFileContent',\n 'listPullRequests', 'getPullRequest',\n 'listIssues', 'getIssue',\n 'listCommits', 'getCommit',\n 'searchCode', 'searchRepositories'\n ],\n 'maintainer': [\n 'getRepository', 'listBranches', 'getFileContent', 'createOrUpdateFile',\n 'listPullRequests', 'getPullRequest', 'createPullRequest', 'mergePullRequest', 'addPullRequestComment',\n 'listIssues', 'getIssue', 'createIssue', 'addIssueComment', 'closeIssue',\n 'listCommits', 'getCommit',\n 'searchCode', 'searchRepositories'\n ]\n}\n\nexport type GithubToolsOptions = {\n token: string\n requireApproval?: ApprovalConfig\n /**\n * Restrict the returned tools to a predefined preset.\n * Omit to get all tools.\n *\n * @example\n * ```ts\n * // Only code-review tools\n * createGithubTools({ token, preset: 'code-review' })\n *\n * // Combine presets\n * createGithubTools({ token, preset: ['code-review', 'issue-triage'] })\n * ```\n */\n preset?: GithubToolPreset | GithubToolPreset[]\n}\n\nfunction resolveApproval(toolName: GithubWriteToolName, config: ApprovalConfig): boolean {\n if (typeof config === 'boolean') return config\n return config[toolName] ?? true\n}\n\nfunction resolvePresetTools(preset: GithubToolPreset | GithubToolPreset[]): Set<string> | null {\n if (!preset) return null\n const presets = Array.isArray(preset) ? preset : [preset]\n const tools = new Set<string>()\n for (const p of presets) {\n for (const t of PRESET_TOOLS[p]) tools.add(t)\n }\n return tools\n}\n\n/**\n * Create a set of GitHub tools for the Vercel AI SDK.\n *\n * Write operations require user approval by default.\n * Control this globally or per-tool via `requireApproval`.\n * Use `preset` to get only the tools you need.\n *\n * @example\n * ```ts\n * // All tools (default)\n * createGithubTools({ token })\n *\n * // Code-review agent — only PR & commit tools\n * createGithubTools({ token, preset: 'code-review' })\n *\n * // Combine presets\n * createGithubTools({ token, preset: ['code-review', 'issue-triage'] })\n *\n * // Granular approval\n * createGithubTools({\n * token,\n * preset: 'maintainer',\n * requireApproval: {\n * mergePullRequest: true,\n * createOrUpdateFile: true,\n * addPullRequestComment: false,\n * }\n * })\n * ```\n */\nexport function createGithubTools({ token, requireApproval = true, preset }: GithubToolsOptions) {\n const octokit = createOctokit(token)\n const approval = (name: GithubWriteToolName) => ({ needsApproval: resolveApproval(name, requireApproval) })\n const allowed = preset ? resolvePresetTools(preset) : null\n\n const allTools = {\n getRepository: getRepository(octokit),\n listBranches: listBranches(octokit),\n getFileContent: getFileContent(octokit),\n listPullRequests: listPullRequests(octokit),\n getPullRequest: getPullRequest(octokit),\n listIssues: listIssues(octokit),\n getIssue: getIssue(octokit),\n searchCode: searchCode(octokit),\n searchRepositories: searchRepositories(octokit),\n listCommits: listCommits(octokit),\n getCommit: getCommit(octokit),\n createOrUpdateFile: createOrUpdateFile(octokit, approval('createOrUpdateFile')),\n createPullRequest: createPullRequest(octokit, approval('createPullRequest')),\n mergePullRequest: mergePullRequest(octokit, approval('mergePullRequest')),\n addPullRequestComment: addPullRequestComment(octokit, approval('addPullRequestComment')),\n createIssue: createIssue(octokit, approval('createIssue')),\n addIssueComment: addIssueComment(octokit, approval('addIssueComment')),\n closeIssue: closeIssue(octokit, approval('closeIssue')),\n }\n\n if (!allowed) return allTools\n\n return Object.fromEntries(\n Object.entries(allTools).filter(([name]) => allowed.has(name))\n ) as Partial<typeof allTools>\n}\n\nexport type GithubTools = ReturnType<typeof createGithubTools>\n\n// Re-export individual tool factories for cherry-picking\nexport { createOctokit } from './client'\nexport { getRepository, listBranches, getFileContent, createOrUpdateFile } from './tools/repository'\nexport { listPullRequests, getPullRequest, createPullRequest, mergePullRequest, addPullRequestComment } from './tools/pull-requests'\nexport { listIssues, getIssue, createIssue, addIssueComment, closeIssue } from './tools/issues'\nexport { searchCode, searchRepositories } from './tools/search'\nexport { listCommits, getCommit } from './tools/commits'\nexport type { Octokit, ToolOptions } from './types'\nexport { createGithubAgent } from './agents'\nexport type { CreateGithubAgentOptions } from './agents'\n"],"mappings":";;;;;AAEA,SAAgB,cAAc,OAAwB;AACpD,QAAO,IAAI,QAAQ,EAAE,MAAM,OAAO,CAAC;;;;;ACCrC,MAAa,iBAAiB,YAC5B,KAAK;CACH,aAAa;CACb,aAAa,EAAE,OAAO;EACpB,OAAO,EAAE,QAAQ,CAAC,SAAS,0CAA0C;EACrE,MAAM,EAAE,QAAQ,CAAC,SAAS,kBAAkB;EAC7C,CAAC;CACF,SAAS,OAAO,EAAE,OAAO,WAAW;EAClC,MAAM,EAAE,SAAS,MAAM,QAAQ,MAAM,IAAI;GAAE;GAAO;GAAM,CAAC;AACzD,SAAO;GACL,MAAM,KAAK;GACX,UAAU,KAAK;GACf,aAAa,KAAK;GAClB,KAAK,KAAK;GACV,eAAe,KAAK;GACpB,OAAO,KAAK;GACZ,OAAO,KAAK;GACZ,YAAY,KAAK;GACjB,UAAU,KAAK;GACf,SAAS,KAAK;GACd,WAAW,KAAK;GAChB,WAAW,KAAK;GACjB;;CAEJ,CAAC;AAEJ,MAAa,gBAAgB,YAC3B,KAAK;CACH,aAAa;CACb,aAAa,EAAE,OAAO;EACpB,OAAO,EAAE,QAAQ,CAAC,SAAS,mBAAmB;EAC9C,MAAM,EAAE,QAAQ,CAAC,SAAS,kBAAkB;EAC5C,SAAS,EAAE,QAAQ,CAAC,UAAU,CAAC,QAAQ,GAAG,CAAC,SAAS,yCAAyC;EAC9F,CAAC;CACF,SAAS,OAAO,EAAE,OAAO,MAAM,cAAc;EAC3C,MAAM,EAAE,SAAS,MAAM,QAAQ,MAAM,aAAa;GAAE;GAAO;GAAM,UAAU;GAAS,CAAC;AACrF,SAAO,KAAK,KAAI,YAAW;GACzB,MAAM,OAAO;GACb,KAAK,OAAO,OAAO;GACnB,WAAW,OAAO;GACnB,EAAE;;CAEN,CAAC;AAEJ,MAAa,kBAAkB,YAC7B,KAAK;CACH,aAAa;CACb,aAAa,EAAE,OAAO;EACpB,OAAO,EAAE,QAAQ,CAAC,SAAS,mBAAmB;EAC9C,MAAM,EAAE,QAAQ,CAAC,SAAS,kBAAkB;EAC5C,MAAM,EAAE,QAAQ,CAAC,SAAS,qCAAqC;EAC/D,KAAK,EAAE,QAAQ,CAAC,UAAU,CAAC,SAAS,8DAA8D;EACnG,CAAC;CACF,SAAS,OAAO,EAAE,OAAO,MAAM,MAAM,UAAU;EAC7C,MAAM,EAAE,SAAS,MAAM,QAAQ,MAAM,WAAW;GAAE;GAAO;GAAM;GAAM;GAAK,CAAC;AAC3E,MAAI,MAAM,QAAQ,KAAK,CACrB,QAAO;GAAE,MAAM;GAAa,SAAS,KAAK,KAAI,OAAM;IAAE,MAAM,EAAE;IAAM,MAAM,EAAE;IAAM,MAAM,EAAE;IAAM,EAAE;GAAE;AAEtG,MAAI,KAAK,SAAS,OAChB,QAAO;GAAE,MAAM,KAAK;GAAM,MAAM,KAAK;GAAM;EAE7C,MAAM,UAAU,OAAO,KAAK,KAAK,SAAS,SAAS,CAAC,SAAS,QAAQ;AACrE,SAAO;GACL,MAAM;GACN,MAAM,KAAK;GACX,KAAK,KAAK;GACV,MAAM,KAAK;GACX;GACD;;CAEJ,CAAC;AAEJ,MAAa,sBAAsB,SAAkB,EAAE,gBAAgB,SAAsB,EAAE,KAC7F,KAAK;CACH,aAAa;CACb;CACA,aAAa,EAAE,OAAO;EACpB,OAAO,EAAE,QAAQ,CAAC,SAAS,mBAAmB;EAC9C,MAAM,EAAE,QAAQ,CAAC,SAAS,kBAAkB;EAC5C,MAAM,EAAE,QAAQ,CAAC,SAAS,qCAAqC;EAC/D,SAAS,EAAE,QAAQ,CAAC,SAAS,iBAAiB;EAC9C,SAAS,EAAE,QAAQ,CAAC,SAAS,kEAAkE;EAC/F,QAAQ,EAAE,QAAQ,CAAC,UAAU,CAAC,SAAS,uDAAuD;EAC9F,KAAK,EAAE,QAAQ,CAAC,UAAU,CAAC,SAAS,2EAA2E;EAChH,CAAC;CACF,SAAS,OAAO,EAAE,OAAO,MAAM,MAAM,SAAS,SAAS,QAAQ,UAAU;EACvE,MAAM,UAAU,OAAO,KAAK,QAAQ,CAAC,SAAS,SAAS;EACvD,MAAM,EAAE,SAAS,MAAM,QAAQ,MAAM,2BAA2B;GAC9D;GACA;GACA;GACA;GACA,SAAS;GACT;GACA;GACD,CAAC;AACF,SAAO;GACL,MAAM,KAAK,SAAS;GACpB,KAAK,KAAK,SAAS;GACnB,WAAW,KAAK,OAAO;GACvB,WAAW,KAAK,OAAO;GACxB;;CAEJ,CAAC;;;;ACvGJ,MAAa,oBAAoB,YAC/B,KAAK;CACH,aAAa;CACb,aAAa,EAAE,OAAO;EACpB,OAAO,EAAE,QAAQ,CAAC,SAAS,mBAAmB;EAC9C,MAAM,EAAE,QAAQ,CAAC,SAAS,kBAAkB;EAC5C,OAAO,EAAE,KAAK;GAAC;GAAQ;GAAU;GAAM,CAAC,CAAC,UAAU,CAAC,QAAQ,OAAO,CAAC,SAAS,kBAAkB;EAC/F,SAAS,EAAE,QAAQ,CAAC,UAAU,CAAC,QAAQ,GAAG,CAAC,SAAS,wCAAwC;EAC7F,CAAC;CACF,SAAS,OAAO,EAAE,OAAO,MAAM,OAAO,cAAc;EAClD,MAAM,EAAE,SAAS,MAAM,QAAQ,MAAM,KAAK;GAAE;GAAO;GAAM;GAAO,UAAU;GAAS,CAAC;AACpF,SAAO,KAAK,KAAI,QAAO;GACrB,QAAQ,GAAG;GACX,OAAO,GAAG;GACV,OAAO,GAAG;GACV,KAAK,GAAG;GACR,QAAQ,GAAG,MAAM;GACjB,QAAQ,GAAG,KAAK;GAChB,MAAM,GAAG,KAAK;GACd,OAAO,GAAG;GACV,WAAW,GAAG;GACd,WAAW,GAAG;GACf,EAAE;;CAEN,CAAC;AAEJ,MAAa,kBAAkB,YAC7B,KAAK;CACH,aAAa;CACb,aAAa,EAAE,OAAO;EACpB,OAAO,EAAE,QAAQ,CAAC,SAAS,mBAAmB;EAC9C,MAAM,EAAE,QAAQ,CAAC,SAAS,kBAAkB;EAC5C,YAAY,EAAE,QAAQ,CAAC,SAAS,sBAAsB;EACvD,CAAC;CACF,SAAS,OAAO,EAAE,OAAO,MAAM,iBAAiB;EAC9C,MAAM,EAAE,SAAS,MAAM,QAAQ,MAAM,IAAI;GAAE;GAAO;GAAM,aAAa;GAAY,CAAC;AAClF,SAAO;GACL,QAAQ,KAAK;GACb,OAAO,KAAK;GACZ,MAAM,KAAK;GACX,OAAO,KAAK;GACZ,KAAK,KAAK;GACV,QAAQ,KAAK,MAAM;GACnB,QAAQ,KAAK,KAAK;GAClB,MAAM,KAAK,KAAK;GAChB,OAAO,KAAK;GACZ,QAAQ,KAAK;GACb,WAAW,KAAK;GAChB,WAAW,KAAK;GAChB,WAAW,KAAK;GAChB,cAAc,KAAK;GACnB,WAAW,KAAK;GAChB,WAAW,KAAK;GAChB,UAAU,KAAK;GAChB;;CAEJ,CAAC;AAEJ,MAAa,qBAAqB,SAAkB,EAAE,gBAAgB,SAAsB,EAAE,KAC5F,KAAK;CACH,aAAa;CACb;CACA,aAAa,EAAE,OAAO;EACpB,OAAO,EAAE,QAAQ,CAAC,SAAS,mBAAmB;EAC9C,MAAM,EAAE,QAAQ,CAAC,SAAS,kBAAkB;EAC5C,OAAO,EAAE,QAAQ,CAAC,SAAS,qBAAqB;EAChD,MAAM,EAAE,QAAQ,CAAC,UAAU,CAAC,SAAS,+CAA+C;EACpF,MAAM,EAAE,QAAQ,CAAC,SAAS,oEAAoE;EAC9F,MAAM,EAAE,QAAQ,CAAC,SAAS,uBAAuB;EACjD,OAAO,EAAE,SAAS,CAAC,UAAU,CAAC,QAAQ,MAAM,CAAC,SAAS,+BAA+B;EACtF,CAAC;CACF,SAAS,OAAO,EAAE,OAAO,MAAM,OAAO,MAAM,MAAM,MAAM,YAAY;EAClE,MAAM,EAAE,SAAS,MAAM,QAAQ,MAAM,OAAO;GAAE;GAAO;GAAM;GAAO;GAAM;GAAM;GAAM;GAAO,CAAC;AAC5F,SAAO;GACL,QAAQ,KAAK;GACb,OAAO,KAAK;GACZ,KAAK,KAAK;GACV,OAAO,KAAK;GACZ,OAAO,KAAK;GACZ,QAAQ,KAAK,KAAK;GAClB,MAAM,KAAK,KAAK;GACjB;;CAEJ,CAAC;AAEJ,MAAa,oBAAoB,SAAkB,EAAE,gBAAgB,SAAsB,EAAE,KAC3F,KAAK;CACH,aAAa;CACb;CACA,aAAa,EAAE,OAAO;EACpB,OAAO,EAAE,QAAQ,CAAC,SAAS,mBAAmB;EAC9C,MAAM,EAAE,QAAQ,CAAC,SAAS,kBAAkB;EAC5C,YAAY,EAAE,QAAQ,CAAC,SAAS,sBAAsB;EACtD,aAAa,EAAE,QAAQ,CAAC,UAAU,CAAC,SAAS,uCAAuC;EACnF,eAAe,EAAE,QAAQ,CAAC,UAAU,CAAC,SAAS,qDAAqD;EACnG,aAAa,EAAE,KAAK;GAAC;GAAS;GAAU;GAAS,CAAC,CAAC,UAAU,CAAC,QAAQ,QAAQ,CAAC,SAAS,iBAAiB;EAC1G,CAAC;CACF,SAAS,OAAO,EAAE,OAAO,MAAM,YAAY,aAAa,eAAe,kBAAkB;EACvF,MAAM,EAAE,SAAS,MAAM,QAAQ,MAAM,MAAM;GACzC;GACA;GACA,aAAa;GACb,cAAc;GACd,gBAAgB;GAChB,cAAc;GACf,CAAC;AACF,SAAO;GACL,QAAQ,KAAK;GACb,SAAS,KAAK;GACd,KAAK,KAAK;GACX;;CAEJ,CAAC;AAEJ,MAAa,yBAAyB,SAAkB,EAAE,gBAAgB,SAAsB,EAAE,KAChG,KAAK;CACH,aAAa;CACb;CACA,aAAa,EAAE,OAAO;EACpB,OAAO,EAAE,QAAQ,CAAC,SAAS,mBAAmB;EAC9C,MAAM,EAAE,QAAQ,CAAC,SAAS,kBAAkB;EAC5C,YAAY,EAAE,QAAQ,CAAC,SAAS,sBAAsB;EACtD,MAAM,EAAE,QAAQ,CAAC,SAAS,mCAAmC;EAC9D,CAAC;CACF,SAAS,OAAO,EAAE,OAAO,MAAM,YAAY,WAAW;EACpD,MAAM,EAAE,SAAS,MAAM,QAAQ,OAAO,cAAc;GAAE;GAAO;GAAM,cAAc;GAAY;GAAM,CAAC;AACpG,SAAO;GACL,IAAI,KAAK;GACT,KAAK,KAAK;GACV,MAAM,KAAK;GACX,QAAQ,KAAK,MAAM;GACnB,WAAW,KAAK;GACjB;;CAEJ,CAAC;;;;ACtIJ,MAAa,cAAc,YACzB,KAAK;CACH,aAAa;CACb,aAAa,EAAE,OAAO;EACpB,OAAO,EAAE,QAAQ,CAAC,SAAS,mBAAmB;EAC9C,MAAM,EAAE,QAAQ,CAAC,SAAS,kBAAkB;EAC5C,OAAO,EAAE,KAAK;GAAC;GAAQ;GAAU;GAAM,CAAC,CAAC,UAAU,CAAC,QAAQ,OAAO,CAAC,SAAS,kBAAkB;EAC/F,QAAQ,EAAE,QAAQ,CAAC,UAAU,CAAC,SAAS,mDAAmD;EAC1F,SAAS,EAAE,QAAQ,CAAC,UAAU,CAAC,QAAQ,GAAG,CAAC,SAAS,wCAAwC;EAC7F,CAAC;CACF,SAAS,OAAO,EAAE,OAAO,MAAM,OAAO,QAAQ,cAAc;EAC1D,MAAM,EAAE,SAAS,MAAM,QAAQ,OAAO,YAAY;GAChD;GACA;GACA;GACA;GACA,UAAU;GACX,CAAC;AACF,SAAO,KACJ,QAAO,UAAS,CAAC,MAAM,aAAa,CACpC,KAAI,WAAU;GACb,QAAQ,MAAM;GACd,OAAO,MAAM;GACb,OAAO,MAAM;GACb,KAAK,MAAM;GACX,QAAQ,MAAM,MAAM;GACpB,QAAQ,MAAM,OAAO,KAAI,MAAM,OAAO,MAAM,WAAW,IAAI,EAAE,KAAM;GACnE,WAAW,MAAM;GACjB,WAAW,MAAM;GAClB,EAAE;;CAER,CAAC;AAEJ,MAAa,YAAY,YACvB,KAAK;CACH,aAAa;CACb,aAAa,EAAE,OAAO;EACpB,OAAO,EAAE,QAAQ,CAAC,SAAS,mBAAmB;EAC9C,MAAM,EAAE,QAAQ,CAAC,SAAS,kBAAkB;EAC5C,aAAa,EAAE,QAAQ,CAAC,SAAS,eAAe;EACjD,CAAC;CACF,SAAS,OAAO,EAAE,OAAO,MAAM,kBAAkB;EAC/C,MAAM,EAAE,SAAS,MAAM,QAAQ,OAAO,IAAI;GAAE;GAAO;GAAM,cAAc;GAAa,CAAC;AACrF,SAAO;GACL,QAAQ,KAAK;GACb,OAAO,KAAK;GACZ,MAAM,KAAK;GACX,OAAO,KAAK;GACZ,KAAK,KAAK;GACV,QAAQ,KAAK,MAAM;GACnB,WAAW,KAAK,WAAW,KAAI,MAAK,EAAE,MAAM;GAC5C,QAAQ,KAAK,OAAO,KAAI,MAAM,OAAO,MAAM,WAAW,IAAI,EAAE,KAAM;GAClE,UAAU,KAAK;GACf,WAAW,KAAK;GAChB,WAAW,KAAK;GAChB,UAAU,KAAK;GAChB;;CAEJ,CAAC;AAEJ,MAAa,eAAe,SAAkB,EAAE,gBAAgB,SAAsB,EAAE,KACtF,KAAK;CACH,aAAa;CACb;CACA,aAAa,EAAE,OAAO;EACpB,OAAO,EAAE,QAAQ,CAAC,SAAS,mBAAmB;EAC9C,MAAM,EAAE,QAAQ,CAAC,SAAS,kBAAkB;EAC5C,OAAO,EAAE,QAAQ,CAAC,SAAS,cAAc;EACzC,MAAM,EAAE,QAAQ,CAAC,UAAU,CAAC,SAAS,wCAAwC;EAC7E,QAAQ,EAAE,MAAM,EAAE,QAAQ,CAAC,CAAC,UAAU,CAAC,SAAS,+BAA+B;EAC/E,WAAW,EAAE,MAAM,EAAE,QAAQ,CAAC,CAAC,UAAU,CAAC,SAAS,0CAA0C;EAC9F,CAAC;CACF,SAAS,OAAO,EAAE,OAAO,MAAM,OAAO,MAAM,QAAQ,gBAAgB;EAClE,MAAM,EAAE,SAAS,MAAM,QAAQ,OAAO,OAAO;GAAE;GAAO;GAAM;GAAO;GAAM;GAAQ;GAAW,CAAC;AAC7F,SAAO;GACL,QAAQ,KAAK;GACb,OAAO,KAAK;GACZ,KAAK,KAAK;GACV,OAAO,KAAK;GACZ,QAAQ,KAAK,OAAO,KAAI,MAAM,OAAO,MAAM,WAAW,IAAI,EAAE,KAAM;GACnE;;CAEJ,CAAC;AAEJ,MAAa,mBAAmB,SAAkB,EAAE,gBAAgB,SAAsB,EAAE,KAC1F,KAAK;CACH,aAAa;CACb;CACA,aAAa,EAAE,OAAO;EACpB,OAAO,EAAE,QAAQ,CAAC,SAAS,mBAAmB;EAC9C,MAAM,EAAE,QAAQ,CAAC,SAAS,kBAAkB;EAC5C,aAAa,EAAE,QAAQ,CAAC,SAAS,eAAe;EAChD,MAAM,EAAE,QAAQ,CAAC,SAAS,mCAAmC;EAC9D,CAAC;CACF,SAAS,OAAO,EAAE,OAAO,MAAM,aAAa,WAAW;EACrD,MAAM,EAAE,SAAS,MAAM,QAAQ,OAAO,cAAc;GAAE;GAAO;GAAM,cAAc;GAAa;GAAM,CAAC;AACrG,SAAO;GACL,IAAI,KAAK;GACT,KAAK,KAAK;GACV,MAAM,KAAK;GACX,QAAQ,KAAK,MAAM;GACnB,WAAW,KAAK;GACjB;;CAEJ,CAAC;AAEJ,MAAa,cAAc,SAAkB,EAAE,gBAAgB,SAAsB,EAAE,KACrF,KAAK;CACH,aAAa;CACb;CACA,aAAa,EAAE,OAAO;EACpB,OAAO,EAAE,QAAQ,CAAC,SAAS,mBAAmB;EAC9C,MAAM,EAAE,QAAQ,CAAC,SAAS,kBAAkB;EAC5C,aAAa,EAAE,QAAQ,CAAC,SAAS,wBAAwB;EACzD,aAAa,EAAE,KAAK,CAAC,aAAa,cAAc,CAAC,CAAC,UAAU,CAAC,QAAQ,YAAY,CAAC,SAAS,qBAAqB;EACjH,CAAC;CACF,SAAS,OAAO,EAAE,OAAO,MAAM,aAAa,kBAAkB;EAC5D,MAAM,EAAE,SAAS,MAAM,QAAQ,OAAO,OAAO;GAC3C;GACA;GACA,cAAc;GACd,OAAO;GACP,cAAc;GACf,CAAC;AACF,SAAO;GACL,QAAQ,KAAK;GACb,OAAO,KAAK;GACZ,OAAO,KAAK;GACZ,KAAK,KAAK;GACV,UAAU,KAAK;GAChB;;CAEJ,CAAC;;;;ACpIJ,MAAa,cAAc,YACzB,KAAK;CACH,aAAa;CACb,aAAa,EAAE,OAAO;EACpB,OAAO,EAAE,QAAQ,CAAC,SAAS,yFAAuF;EAClH,SAAS,EAAE,QAAQ,CAAC,UAAU,CAAC,QAAQ,GAAG,CAAC,SAAS,uCAAuC;EAC5F,CAAC;CACF,SAAS,OAAO,EAAE,OAAO,cAAc;EACrC,MAAM,EAAE,SAAS,MAAM,QAAQ,OAAO,KAAK;GAAE,GAAG;GAAO,UAAU;GAAS,CAAC;AAC3E,SAAO;GACL,YAAY,KAAK;GACjB,OAAO,KAAK,MAAM,KAAI,UAAS;IAC7B,MAAM,KAAK;IACX,MAAM,KAAK;IACX,KAAK,KAAK;IACV,YAAY,KAAK,WAAW;IAC5B,KAAK,KAAK;IACX,EAAE;GACJ;;CAEJ,CAAC;AAEJ,MAAa,sBAAsB,YACjC,KAAK;CACH,aAAa;CACb,aAAa,EAAE,OAAO;EACpB,OAAO,EAAE,QAAQ,CAAC,SAAS,iGAA+F;EAC1H,SAAS,EAAE,QAAQ,CAAC,UAAU,CAAC,QAAQ,GAAG,CAAC,SAAS,uCAAuC;EAC3F,MAAM,EAAE,KAAK;GAAC;GAAS;GAAS;GAAsB;GAAU,CAAC,CAAC,UAAU,CAAC,SAAS,aAAa;EACnG,OAAO,EAAE,KAAK,CAAC,OAAO,OAAO,CAAC,CAAC,UAAU,CAAC,QAAQ,OAAO,CAAC,SAAS,aAAa;EACjF,CAAC;CACF,SAAS,OAAO,EAAE,OAAO,SAAS,MAAM,YAAY;EAClD,MAAM,EAAE,SAAS,MAAM,QAAQ,OAAO,MAAM;GAAE,GAAG;GAAO,UAAU;GAAS;GAAM;GAAO,CAAC;AACzF,SAAO;GACL,YAAY,KAAK;GACjB,OAAO,KAAK,MAAM,KAAI,UAAS;IAC7B,MAAM,KAAK;IACX,UAAU,KAAK;IACf,aAAa,KAAK;IAClB,KAAK,KAAK;IACV,OAAO,KAAK;IACZ,OAAO,KAAK;IACZ,UAAU,KAAK;IACf,QAAQ,KAAK;IACd,EAAE;GACJ;;CAEJ,CAAC;;;;AC/CJ,MAAa,eAAe,YAC1B,KAAK;CACH,aAAa;CACb,aAAa,EAAE,OAAO;EACpB,OAAO,EAAE,QAAQ,CAAC,SAAS,mBAAmB;EAC9C,MAAM,EAAE,QAAQ,CAAC,SAAS,kBAAkB;EAC5C,MAAM,EAAE,QAAQ,CAAC,UAAU,CAAC,SAAS,yCAAyC;EAC9E,KAAK,EAAE,QAAQ,CAAC,UAAU,CAAC,SAAS,kDAAkD;EACtF,QAAQ,EAAE,QAAQ,CAAC,UAAU,CAAC,SAAS,gDAAgD;EACvF,OAAO,EAAE,QAAQ,CAAC,UAAU,CAAC,SAAS,iDAAiD;EACvF,OAAO,EAAE,QAAQ,CAAC,UAAU,CAAC,SAAS,kDAAkD;EACxF,SAAS,EAAE,QAAQ,CAAC,UAAU,CAAC,QAAQ,GAAG,CAAC,SAAS,wCAAwC;EAC7F,CAAC;CACF,SAAS,OAAO,EAAE,OAAO,MAAM,MAAM,KAAK,QAAQ,OAAO,OAAO,cAAc;EAC5E,MAAM,EAAE,SAAS,MAAM,QAAQ,MAAM,YAAY;GAC/C;GACA;GACA;GACA;GACA;GACA;GACA;GACA,UAAU;GACX,CAAC;AACF,SAAO,KAAK,KAAI,YAAW;GACzB,KAAK,OAAO;GACZ,SAAS,OAAO,OAAO;GACvB,QAAQ,OAAO,OAAO,QAAQ;GAC9B,aAAa,OAAO,QAAQ;GAC5B,MAAM,OAAO,OAAO,QAAQ;GAC5B,KAAK,OAAO;GACb,EAAE;;CAEN,CAAC;AAEJ,MAAa,aAAa,YACxB,KAAK;CACH,aAAa;CACb,aAAa,EAAE,OAAO;EACpB,OAAO,EAAE,QAAQ,CAAC,SAAS,mBAAmB;EAC9C,MAAM,EAAE,QAAQ,CAAC,SAAS,kBAAkB;EAC5C,KAAK,EAAE,QAAQ,CAAC,SAAS,kCAAkC;EAC5D,CAAC;CACF,SAAS,OAAO,EAAE,OAAO,MAAM,UAAU;EACvC,MAAM,EAAE,SAAS,MAAM,QAAQ,MAAM,UAAU;GAAE;GAAO;GAAM;GAAK,CAAC;AACpE,SAAO;GACL,KAAK,KAAK;GACV,SAAS,KAAK,OAAO;GACrB,QAAQ,KAAK,OAAO,QAAQ;GAC5B,aAAa,KAAK,QAAQ;GAC1B,MAAM,KAAK,OAAO,QAAQ;GAC1B,KAAK,KAAK;GACV,OAAO,KAAK,QAAQ;IAClB,WAAW,KAAK,MAAM;IACtB,WAAW,KAAK,MAAM;IACtB,OAAO,KAAK,MAAM;IACnB,GAAG;GACJ,OAAO,KAAK,OAAO,KAAI,UAAS;IAC9B,UAAU,KAAK;IACf,QAAQ,KAAK;IACb,WAAW,KAAK;IAChB,WAAW,KAAK;IAChB,OAAO,KAAK;IACb,EAAE;GACJ;;CAEJ,CAAC;;;;ACjEJ,MAAM,eAAe;AAErB,MAAM,uBAAuB;;EAE3B;AAEF,MAAM,sBAAwD;CAC5D,eAAe;;;;;;;;;EASf;CAEA,gBAAgB;;;;;;;;;EAShB;CAEA,iBAAiB;;;;;;;;;EASjB;CAEA,cAAc;;;;;;;;;EASd;CACD;;;;;;;;;;;;;;;;;;;AA+BD,SAAgB,kBAAkB,EAChC,OACA,QACA,iBACA,cACA,wBACA,GAAG,gBACwB;CAC3B,MAAM,QAAQ,kBAAkB;EAAE;EAAO;EAAiB;EAAQ,CAAC;CAEnE,MAAM,gBAAgB,UAAU,CAAC,MAAM,QAAQ,OAAO,GAClD,oBAAoB,UACpB;CAEJ,IAAI;AACJ,KAAI,aACF,wBAAuB;UACd,uBACT,wBAAuB,GAAG,cAAc,MAAM;KAE9C,wBAAuB;AAGzB,QAAO,IAAI,cAAc;EACvB,GAAG;EACH;EACA,cAAc;EACf,CAAC;;;;;ACrEJ,MAAM,eAAmD;CACvD,eAAe;EACb;EAAkB;EAAoB;EAAkB;EAAe;EACvE;EAAiB;EAAgB;EACjC;EACD;CACD,gBAAgB;EACd;EAAc;EAAY;EAAe;EAAmB;EAC5D;EAAiB;EAAsB;EACxC;CACD,iBAAiB;EACf;EAAiB;EAAgB;EACjC;EAAoB;EACpB;EAAc;EACd;EAAe;EACf;EAAc;EACf;CACD,cAAc;EACZ;EAAiB;EAAgB;EAAkB;EACnD;EAAoB;EAAkB;EAAqB;EAAoB;EAC/E;EAAc;EAAY;EAAe;EAAmB;EAC5D;EAAe;EACf;EAAc;EACf;CACF;AAqBD,SAAS,gBAAgB,UAA+B,QAAiC;AACvF,KAAI,OAAO,WAAW,UAAW,QAAO;AACxC,QAAO,OAAO,aAAa;;AAG7B,SAAS,mBAAmB,QAAmE;AAC7F,KAAI,CAAC,OAAQ,QAAO;CACpB,MAAM,UAAU,MAAM,QAAQ,OAAO,GAAG,SAAS,CAAC,OAAO;CACzD,MAAM,wBAAQ,IAAI,KAAa;AAC/B,MAAK,MAAM,KAAK,QACd,MAAK,MAAM,KAAK,aAAa,GAAI,OAAM,IAAI,EAAE;AAE/C,QAAO;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAiCT,SAAgB,kBAAkB,EAAE,OAAO,kBAAkB,MAAM,UAA8B;CAC/F,MAAM,UAAU,cAAc,MAAM;CACpC,MAAM,YAAY,UAA+B,EAAE,eAAe,gBAAgB,MAAM,gBAAgB,EAAE;CAC1G,MAAM,UAAU,SAAS,mBAAmB,OAAO,GAAG;CAEtD,MAAM,WAAW;EACf,eAAe,cAAc,QAAQ;EACrC,cAAc,aAAa,QAAQ;EACnC,gBAAgB,eAAe,QAAQ;EACvC,kBAAkB,iBAAiB,QAAQ;EAC3C,gBAAgB,eAAe,QAAQ;EACvC,YAAY,WAAW,QAAQ;EAC/B,UAAU,SAAS,QAAQ;EAC3B,YAAY,WAAW,QAAQ;EAC/B,oBAAoB,mBAAmB,QAAQ;EAC/C,aAAa,YAAY,QAAQ;EACjC,WAAW,UAAU,QAAQ;EAC7B,oBAAoB,mBAAmB,SAAS,SAAS,qBAAqB,CAAC;EAC/E,mBAAmB,kBAAkB,SAAS,SAAS,oBAAoB,CAAC;EAC5E,kBAAkB,iBAAiB,SAAS,SAAS,mBAAmB,CAAC;EACzE,uBAAuB,sBAAsB,SAAS,SAAS,wBAAwB,CAAC;EACxF,aAAa,YAAY,SAAS,SAAS,cAAc,CAAC;EAC1D,iBAAiB,gBAAgB,SAAS,SAAS,kBAAkB,CAAC;EACtE,YAAY,WAAW,SAAS,SAAS,aAAa,CAAC;EACxD;AAED,KAAI,CAAC,QAAS,QAAO;AAErB,QAAO,OAAO,YACZ,OAAO,QAAQ,SAAS,CAAC,QAAQ,CAAC,UAAU,QAAQ,IAAI,KAAK,CAAC,CAC/D"}
|
|
1
|
+
{"version":3,"file":"index.mjs","names":[],"sources":["../src/client.ts","../src/tools/repository.ts","../src/tools/pull-requests.ts","../src/tools/issues.ts","../src/tools/search.ts","../src/tools/commits.ts","../src/agents.ts","../src/index.ts"],"sourcesContent":["import { Octokit } from '@octokit/rest'\n\nexport function createOctokit(token: string): Octokit {\n return new Octokit({ auth: token })\n}\n","import { tool } from 'ai'\nimport { z } from 'zod'\nimport type { Octokit, ToolOptions } from '../types'\n\nexport const getRepository = (octokit: Octokit) =>\n tool({\n description: 'Get information about a GitHub repository including description, stars, forks, language, and default branch',\n inputSchema: z.object({\n owner: z.string().describe('Repository owner (user or organization)'),\n repo: z.string().describe('Repository name'),\n }),\n execute: async ({ owner, repo }) => {\n const { data } = await octokit.repos.get({ owner, repo })\n return {\n name: data.name,\n fullName: data.full_name,\n description: data.description,\n url: data.html_url,\n defaultBranch: data.default_branch,\n stars: data.stargazers_count,\n forks: data.forks_count,\n openIssues: data.open_issues_count,\n language: data.language,\n private: data.private,\n createdAt: data.created_at,\n updatedAt: data.updated_at,\n }\n },\n })\n\nexport const listBranches = (octokit: Octokit) =>\n tool({\n description: 'List branches in a GitHub repository',\n inputSchema: z.object({\n owner: z.string().describe('Repository owner'),\n repo: z.string().describe('Repository name'),\n perPage: z.number().optional().default(30).describe('Number of branches to return (max 100)'),\n }),\n execute: async ({ owner, repo, perPage }) => {\n const { data } = await octokit.repos.listBranches({ owner, repo, per_page: perPage })\n return data.map(branch => ({\n name: branch.name,\n sha: branch.commit.sha,\n protected: branch.protected,\n }))\n },\n })\n\nexport const getFileContent = (octokit: Octokit) =>\n tool({\n description: 'Get the content of a file from a GitHub repository',\n inputSchema: z.object({\n owner: z.string().describe('Repository owner'),\n repo: z.string().describe('Repository name'),\n path: z.string().describe('Path to the file in the repository'),\n ref: z.string().optional().describe('Branch, tag, or commit SHA (defaults to the default branch)'),\n }),\n execute: async ({ owner, repo, path, ref }) => {\n const { data } = await octokit.repos.getContent({ owner, repo, path, ref })\n if (Array.isArray(data)) {\n return { type: 'directory', entries: data.map(e => ({ name: e.name, type: e.type, path: e.path })) }\n }\n if (data.type !== 'file') {\n return { type: data.type, path: data.path }\n }\n const content = Buffer.from(data.content, 'base64').toString('utf-8')\n return {\n type: 'file',\n path: data.path,\n sha: data.sha,\n size: data.size,\n content,\n }\n },\n })\n\nexport const createOrUpdateFile = (octokit: Octokit, { needsApproval = true }: ToolOptions = {}) =>\n tool({\n description: 'Create or update a file in a GitHub repository. Provide the SHA when updating an existing file.',\n needsApproval,\n inputSchema: z.object({\n owner: z.string().describe('Repository owner'),\n repo: z.string().describe('Repository name'),\n path: z.string().describe('Path to the file in the repository'),\n message: z.string().describe('Commit message'),\n content: z.string().describe('File content (plain text, will be base64-encoded automatically)'),\n branch: z.string().optional().describe('Branch to commit to (defaults to the default branch)'),\n sha: z.string().optional().describe('SHA of the file being replaced (required when updating an existing file)'),\n }),\n execute: async ({ owner, repo, path, message, content, branch, sha }) => {\n const encoded = Buffer.from(content).toString('base64')\n const { data } = await octokit.repos.createOrUpdateFileContents({\n owner,\n repo,\n path,\n message,\n content: encoded,\n branch,\n sha,\n })\n return {\n path: data.content?.path,\n sha: data.content?.sha,\n commitSha: data.commit.sha,\n commitUrl: data.commit.html_url,\n }\n },\n })\n","import { tool } from 'ai'\nimport { z } from 'zod'\nimport type { Octokit, ToolOptions } from '../types'\n\nexport const listPullRequests = (octokit: Octokit) =>\n tool({\n description: 'List pull requests for a GitHub repository',\n inputSchema: z.object({\n owner: z.string().describe('Repository owner'),\n repo: z.string().describe('Repository name'),\n state: z.enum(['open', 'closed', 'all']).optional().default('open').describe('Filter by state'),\n perPage: z.number().optional().default(30).describe('Number of results to return (max 100)'),\n }),\n execute: async ({ owner, repo, state, perPage }) => {\n const { data } = await octokit.pulls.list({ owner, repo, state, per_page: perPage })\n return data.map(pr => ({\n number: pr.number,\n title: pr.title,\n state: pr.state,\n url: pr.html_url,\n author: pr.user?.login,\n branch: pr.head.ref,\n base: pr.base.ref,\n draft: pr.draft,\n createdAt: pr.created_at,\n updatedAt: pr.updated_at,\n }))\n },\n })\n\nexport const getPullRequest = (octokit: Octokit) =>\n tool({\n description: 'Get detailed information about a specific pull request',\n inputSchema: z.object({\n owner: z.string().describe('Repository owner'),\n repo: z.string().describe('Repository name'),\n pullNumber: z.number().describe('Pull request number'),\n }),\n execute: async ({ owner, repo, pullNumber }) => {\n const { data } = await octokit.pulls.get({ owner, repo, pull_number: pullNumber })\n return {\n number: data.number,\n title: data.title,\n body: data.body,\n state: data.state,\n url: data.html_url,\n author: data.user?.login,\n branch: data.head.ref,\n base: data.base.ref,\n draft: data.draft,\n merged: data.merged,\n mergeable: data.mergeable,\n additions: data.additions,\n deletions: data.deletions,\n changedFiles: data.changed_files,\n createdAt: data.created_at,\n updatedAt: data.updated_at,\n mergedAt: data.merged_at,\n }\n },\n })\n\nexport const createPullRequest = (octokit: Octokit, { needsApproval = true }: ToolOptions = {}) =>\n tool({\n description: 'Create a new pull request in a GitHub repository',\n needsApproval,\n inputSchema: z.object({\n owner: z.string().describe('Repository owner'),\n repo: z.string().describe('Repository name'),\n title: z.string().describe('Pull request title'),\n body: z.string().optional().describe('Pull request description (supports Markdown)'),\n head: z.string().describe('Branch containing the changes (format: branch or username:branch)'),\n base: z.string().describe('Branch to merge into'),\n draft: z.boolean().optional().default(false).describe('Create as draft pull request'),\n }),\n execute: async ({ owner, repo, title, body, head, base, draft }) => {\n const { data } = await octokit.pulls.create({ owner, repo, title, body, head, base, draft })\n return {\n number: data.number,\n title: data.title,\n url: data.html_url,\n state: data.state,\n draft: data.draft,\n branch: data.head.ref,\n base: data.base.ref,\n }\n },\n })\n\nexport const mergePullRequest = (octokit: Octokit, { needsApproval = true }: ToolOptions = {}) =>\n tool({\n description: 'Merge a pull request',\n needsApproval,\n inputSchema: z.object({\n owner: z.string().describe('Repository owner'),\n repo: z.string().describe('Repository name'),\n pullNumber: z.number().describe('Pull request number'),\n commitTitle: z.string().optional().describe('Title for the automatic merge commit'),\n commitMessage: z.string().optional().describe('Extra detail to append to automatic commit message'),\n mergeMethod: z.enum(['merge', 'squash', 'rebase']).optional().default('merge').describe('Merge strategy'),\n }),\n execute: async ({ owner, repo, pullNumber, commitTitle, commitMessage, mergeMethod }) => {\n const { data } = await octokit.pulls.merge({\n owner,\n repo,\n pull_number: pullNumber,\n commit_title: commitTitle,\n commit_message: commitMessage,\n merge_method: mergeMethod,\n })\n return {\n merged: data.merged,\n message: data.message,\n sha: data.sha,\n }\n },\n })\n\nexport const addPullRequestComment = (octokit: Octokit, { needsApproval = true }: ToolOptions = {}) =>\n tool({\n description: 'Add a comment to a pull request',\n needsApproval,\n inputSchema: z.object({\n owner: z.string().describe('Repository owner'),\n repo: z.string().describe('Repository name'),\n pullNumber: z.number().describe('Pull request number'),\n body: z.string().describe('Comment text (supports Markdown)'),\n }),\n execute: async ({ owner, repo, pullNumber, body }) => {\n const { data } = await octokit.issues.createComment({ owner, repo, issue_number: pullNumber, body })\n return {\n id: data.id,\n url: data.html_url,\n body: data.body,\n author: data.user?.login,\n createdAt: data.created_at,\n }\n },\n })\n","import { tool } from 'ai'\nimport { z } from 'zod'\nimport type { Octokit, ToolOptions } from '../types'\n\nexport const listIssues = (octokit: Octokit) =>\n tool({\n description: 'List issues for a GitHub repository (excludes pull requests)',\n inputSchema: z.object({\n owner: z.string().describe('Repository owner'),\n repo: z.string().describe('Repository name'),\n state: z.enum(['open', 'closed', 'all']).optional().default('open').describe('Filter by state'),\n labels: z.string().optional().describe('Comma-separated list of label names to filter by'),\n perPage: z.number().optional().default(30).describe('Number of results to return (max 100)'),\n }),\n execute: async ({ owner, repo, state, labels, perPage }) => {\n const { data } = await octokit.issues.listForRepo({\n owner,\n repo,\n state,\n labels,\n per_page: perPage,\n })\n return data\n .filter(issue => !issue.pull_request)\n .map(issue => ({\n number: issue.number,\n title: issue.title,\n state: issue.state,\n url: issue.html_url,\n author: issue.user?.login,\n labels: issue.labels.map(l => (typeof l === 'string' ? l : l.name)),\n createdAt: issue.created_at,\n updatedAt: issue.updated_at,\n }))\n },\n })\n\nexport const getIssue = (octokit: Octokit) =>\n tool({\n description: 'Get detailed information about a specific issue',\n inputSchema: z.object({\n owner: z.string().describe('Repository owner'),\n repo: z.string().describe('Repository name'),\n issueNumber: z.number().describe('Issue number'),\n }),\n execute: async ({ owner, repo, issueNumber }) => {\n const { data } = await octokit.issues.get({ owner, repo, issue_number: issueNumber })\n return {\n number: data.number,\n title: data.title,\n body: data.body,\n state: data.state,\n url: data.html_url,\n author: data.user?.login,\n assignees: data.assignees?.map(a => a.login),\n labels: data.labels.map(l => (typeof l === 'string' ? l : l.name)),\n comments: data.comments,\n createdAt: data.created_at,\n updatedAt: data.updated_at,\n closedAt: data.closed_at,\n }\n },\n })\n\nexport const createIssue = (octokit: Octokit, { needsApproval = true }: ToolOptions = {}) =>\n tool({\n description: 'Create a new issue in a GitHub repository',\n needsApproval,\n inputSchema: z.object({\n owner: z.string().describe('Repository owner'),\n repo: z.string().describe('Repository name'),\n title: z.string().describe('Issue title'),\n body: z.string().optional().describe('Issue description (supports Markdown)'),\n labels: z.array(z.string()).optional().describe('Labels to apply to the issue'),\n assignees: z.array(z.string()).optional().describe('GitHub usernames to assign to the issue'),\n }),\n execute: async ({ owner, repo, title, body, labels, assignees }) => {\n const { data } = await octokit.issues.create({ owner, repo, title, body, labels, assignees })\n return {\n number: data.number,\n title: data.title,\n url: data.html_url,\n state: data.state,\n labels: data.labels.map(l => (typeof l === 'string' ? l : l.name)),\n }\n },\n })\n\nexport const addIssueComment = (octokit: Octokit, { needsApproval = true }: ToolOptions = {}) =>\n tool({\n description: 'Add a comment to a GitHub issue',\n needsApproval,\n inputSchema: z.object({\n owner: z.string().describe('Repository owner'),\n repo: z.string().describe('Repository name'),\n issueNumber: z.number().describe('Issue number'),\n body: z.string().describe('Comment text (supports Markdown)'),\n }),\n execute: async ({ owner, repo, issueNumber, body }) => {\n const { data } = await octokit.issues.createComment({ owner, repo, issue_number: issueNumber, body })\n return {\n id: data.id,\n url: data.html_url,\n body: data.body,\n author: data.user?.login,\n createdAt: data.created_at,\n }\n },\n })\n\nexport const closeIssue = (octokit: Octokit, { needsApproval = true }: ToolOptions = {}) =>\n tool({\n description: 'Close an open GitHub issue',\n needsApproval,\n inputSchema: z.object({\n owner: z.string().describe('Repository owner'),\n repo: z.string().describe('Repository name'),\n issueNumber: z.number().describe('Issue number to close'),\n stateReason: z.enum(['completed', 'not_planned']).optional().default('completed').describe('Reason for closing'),\n }),\n execute: async ({ owner, repo, issueNumber, stateReason }) => {\n const { data } = await octokit.issues.update({\n owner,\n repo,\n issue_number: issueNumber,\n state: 'closed',\n state_reason: stateReason,\n })\n return {\n number: data.number,\n title: data.title,\n state: data.state,\n url: data.html_url,\n closedAt: data.closed_at,\n }\n },\n })\n","import { tool } from 'ai'\nimport { z } from 'zod'\nimport type { Octokit } from '../types'\n\nexport const searchCode = (octokit: Octokit) =>\n tool({\n description: 'Search for code in GitHub repositories. Use qualifiers like \"repo:owner/name\" to scope the search.',\n inputSchema: z.object({\n query: z.string().describe('Search query. Supports GitHub search qualifiers, e.g. \"useState repo:facebook/react\"'),\n perPage: z.number().optional().default(10).describe('Number of results to return (max 30)'),\n }),\n execute: async ({ query, perPage }) => {\n const { data } = await octokit.search.code({ q: query, per_page: perPage })\n return {\n totalCount: data.total_count,\n items: data.items.map(item => ({\n name: item.name,\n path: item.path,\n url: item.html_url,\n repository: item.repository.full_name,\n sha: item.sha,\n })),\n }\n },\n })\n\nexport const searchRepositories = (octokit: Octokit) =>\n tool({\n description: 'Search for GitHub repositories by keyword, topic, language, or other qualifiers',\n inputSchema: z.object({\n query: z.string().describe('Search query. Supports GitHub search qualifiers, e.g. \"nuxt language:typescript stars:>1000\"'),\n perPage: z.number().optional().default(10).describe('Number of results to return (max 30)'),\n sort: z.enum(['stars', 'forks', 'help-wanted-issues', 'updated']).optional().describe('Sort field'),\n order: z.enum(['asc', 'desc']).optional().default('desc').describe('Sort order'),\n }),\n execute: async ({ query, perPage, sort, order }) => {\n const { data } = await octokit.search.repos({ q: query, per_page: perPage, sort, order })\n return {\n totalCount: data.total_count,\n items: data.items.map(repo => ({\n name: repo.name,\n fullName: repo.full_name,\n description: repo.description,\n url: repo.html_url,\n stars: repo.stargazers_count,\n forks: repo.forks_count,\n language: repo.language,\n topics: repo.topics,\n })),\n }\n },\n })\n","import { tool } from 'ai'\nimport { z } from 'zod'\nimport type { Octokit } from '../types'\n\nexport const listCommits = (octokit: Octokit) =>\n tool({\n description: 'List commits for a GitHub repository. Filter by file path to see who changed a specific file and when (git blame alternative). Filter by author, branch, or date range.',\n inputSchema: z.object({\n owner: z.string().describe('Repository owner'),\n repo: z.string().describe('Repository name'),\n path: z.string().optional().describe('Only commits containing this file path'),\n sha: z.string().optional().describe('Branch name or commit SHA to start listing from'),\n author: z.string().optional().describe('GitHub username or email to filter commits by'),\n since: z.string().optional().describe('Only commits after this date (ISO 8601 format)'),\n until: z.string().optional().describe('Only commits before this date (ISO 8601 format)'),\n perPage: z.number().optional().default(30).describe('Number of results to return (max 100)'),\n }),\n execute: async ({ owner, repo, path, sha, author, since, until, perPage }) => {\n const { data } = await octokit.repos.listCommits({\n owner,\n repo,\n path,\n sha,\n author,\n since,\n until,\n per_page: perPage,\n })\n return data.map(commit => ({\n sha: commit.sha,\n message: commit.commit.message,\n author: commit.commit.author?.name,\n authorLogin: commit.author?.login,\n date: commit.commit.author?.date,\n url: commit.html_url,\n }))\n },\n })\n\nexport const getCommit = (octokit: Octokit) =>\n tool({\n description: 'Get detailed information about a specific commit, including the list of files changed with additions and deletions',\n inputSchema: z.object({\n owner: z.string().describe('Repository owner'),\n repo: z.string().describe('Repository name'),\n ref: z.string().describe('Commit SHA, branch name, or tag'),\n }),\n execute: async ({ owner, repo, ref }) => {\n const { data } = await octokit.repos.getCommit({ owner, repo, ref })\n return {\n sha: data.sha,\n message: data.commit.message,\n author: data.commit.author?.name,\n authorLogin: data.author?.login,\n date: data.commit.author?.date,\n url: data.html_url,\n stats: data.stats ? {\n additions: data.stats.additions,\n deletions: data.stats.deletions,\n total: data.stats.total,\n } : null,\n files: data.files?.map(file => ({\n filename: file.filename,\n status: file.status,\n additions: file.additions,\n deletions: file.deletions,\n patch: file.patch,\n })),\n }\n },\n })\n","import { ToolLoopAgent } from 'ai'\nimport type { ToolLoopAgentSettings } from 'ai'\nimport { createGithubTools } from './index'\nimport type { GithubToolPreset, ApprovalConfig } from './index'\n\nconst SHARED_RULES = `When a tool execution is denied by the user, do not retry it. Briefly acknowledge the decision and move on.`\n\nconst DEFAULT_INSTRUCTIONS = `You are a helpful GitHub assistant. You can read and explore repositories, issues, pull requests, commits, and code. You can also create issues, pull requests, comments, and update files when asked.\n\n${SHARED_RULES}`\n\nconst PRESET_INSTRUCTIONS: Record<GithubToolPreset, string> = {\n 'code-review': `You are a code review assistant. Your job is to review pull requests thoroughly and provide constructive feedback.\n\nWhen reviewing a PR:\n- Read the PR description and changed files carefully\n- Check for bugs, logic errors, and edge cases\n- Suggest improvements when you spot issues\n- Be constructive — explain why something is a problem and how to fix it\n- Post your review as PR comments when asked\n\n${SHARED_RULES}`,\n\n 'issue-triage': `You are an issue triage assistant. Your job is to help manage and organize GitHub issues.\n\nWhen triaging issues:\n- Read issue descriptions carefully to understand the problem\n- Identify duplicates when possible\n- Help categorize and prioritize issues\n- Respond to users with clear, helpful information\n- Create new issues when asked, with clear titles and descriptions\n\n${SHARED_RULES}`,\n\n 'repo-explorer': `You are a repository explorer. Your job is to help users understand codebases and find information across GitHub repositories.\n\nWhen exploring repos:\n- Answer questions about code structure and organization\n- Summarize recent activity (commits, PRs, issues)\n- Find specific files, functions, or patterns in code\n- Explain how different parts of the codebase work together\n- You have read-only access — you cannot make changes\n\n${SHARED_RULES}`,\n\n 'maintainer': `You are a repository maintainer assistant. You have full access to manage repositories, issues, and pull requests.\n\nWhen maintaining repos:\n- Be careful with write operations — review before acting\n- Create well-structured issues and PRs with clear descriptions\n- Use merge strategies appropriate for the repository\n- Keep commit messages clean and descriptive\n- When closing issues, provide a clear reason\n\n${SHARED_RULES}`\n}\n\ntype AgentOptions = Omit<ToolLoopAgentSettings, 'model' | 'tools' | 'instructions'>\n\nexport type CreateGithubAgentOptions = AgentOptions & {\n model: ToolLoopAgentSettings['model']\n /**\n * GitHub personal access token.\n * Falls back to `process.env.GITHUB_TOKEN` when omitted.\n */\n token?: string\n preset?: GithubToolPreset | GithubToolPreset[]\n requireApproval?: ApprovalConfig\n instructions?: string\n additionalInstructions?: string\n}\n\n/**\n * Create a pre-configured GitHub agent powered by the AI SDK's `ToolLoopAgent`.\n *\n * Returns a `ToolLoopAgent` instance with `.generate()` and `.stream()` methods.\n *\n * @example\n * ```ts\n * import { createGithubAgent } from '@github-tools/sdk'\n *\n * const agent = createGithubAgent({\n * model: 'anthropic/claude-sonnet-4-6',\n * token: process.env.GITHUB_TOKEN!,\n * preset: 'code-review',\n * })\n *\n * const result = await agent.generate({ prompt: 'Review PR #42 on vercel/ai' })\n * ```\n */\nexport function createGithubAgent({\n token,\n preset,\n requireApproval,\n instructions,\n additionalInstructions,\n ...agentOptions\n}: CreateGithubAgentOptions) {\n const tools = createGithubTools({ token, requireApproval, preset })\n\n const defaultPrompt = preset && !Array.isArray(preset)\n ? PRESET_INSTRUCTIONS[preset]\n : DEFAULT_INSTRUCTIONS\n\n let resolvedInstructions: string\n if (instructions) {\n resolvedInstructions = instructions\n } else if (additionalInstructions) {\n resolvedInstructions = `${defaultPrompt}\\n\\n${additionalInstructions}`\n } else {\n resolvedInstructions = defaultPrompt\n }\n\n return new ToolLoopAgent({\n ...agentOptions,\n tools,\n instructions: resolvedInstructions\n })\n}\n","import { createOctokit } from './client'\nimport { getRepository, listBranches, getFileContent, createOrUpdateFile } from './tools/repository'\nimport { listPullRequests, getPullRequest, createPullRequest, mergePullRequest, addPullRequestComment } from './tools/pull-requests'\nimport { listIssues, getIssue, createIssue, addIssueComment, closeIssue } from './tools/issues'\nimport { searchCode, searchRepositories } from './tools/search'\nimport { listCommits, getCommit } from './tools/commits'\n\nexport type GithubWriteToolName =\n | 'createOrUpdateFile'\n | 'createPullRequest'\n | 'mergePullRequest'\n | 'addPullRequestComment'\n | 'createIssue'\n | 'addIssueComment'\n | 'closeIssue'\n\n/**\n * Whether write operations require user approval.\n * - `true` — all write tools need approval (default)\n * - `false` — no approval needed for any write tool\n * - object — per-tool override; unspecified write tools default to `true`\n *\n * @example\n * ```ts\n * requireApproval: {\n * mergePullRequest: true,\n * createOrUpdateFile: true,\n * addPullRequestComment: false,\n * addIssueComment: false,\n * }\n * ```\n */\nexport type ApprovalConfig = boolean | Partial<Record<GithubWriteToolName, boolean>>\n\n/**\n * Predefined tool presets for common use cases.\n *\n * - `'code-review'` — Review PRs: read PRs, file content, commits, and post comments\n * - `'issue-triage'` — Triage issues: read/create/close issues, search, and comment\n * - `'repo-explorer'` — Explore repos: read-only access to repos, branches, code, and search\n * - `'maintainer'` — Full maintenance: all read + create PRs, merge, manage issues\n */\nexport type GithubToolPreset = 'code-review' | 'issue-triage' | 'repo-explorer' | 'maintainer'\n\nconst PRESET_TOOLS: Record<GithubToolPreset, string[]> = {\n 'code-review': [\n 'getPullRequest', 'listPullRequests', 'getFileContent', 'listCommits', 'getCommit',\n 'getRepository', 'listBranches', 'searchCode',\n 'addPullRequestComment'\n ],\n 'issue-triage': [\n 'listIssues', 'getIssue', 'createIssue', 'addIssueComment', 'closeIssue',\n 'getRepository', 'searchRepositories', 'searchCode'\n ],\n 'repo-explorer': [\n 'getRepository', 'listBranches', 'getFileContent',\n 'listPullRequests', 'getPullRequest',\n 'listIssues', 'getIssue',\n 'listCommits', 'getCommit',\n 'searchCode', 'searchRepositories'\n ],\n 'maintainer': [\n 'getRepository', 'listBranches', 'getFileContent', 'createOrUpdateFile',\n 'listPullRequests', 'getPullRequest', 'createPullRequest', 'mergePullRequest', 'addPullRequestComment',\n 'listIssues', 'getIssue', 'createIssue', 'addIssueComment', 'closeIssue',\n 'listCommits', 'getCommit',\n 'searchCode', 'searchRepositories'\n ]\n}\n\nexport type GithubToolsOptions = {\n /**\n * GitHub personal access token.\n * Falls back to `process.env.GITHUB_TOKEN` when omitted.\n */\n token?: string\n requireApproval?: ApprovalConfig\n /**\n * Restrict the returned tools to a predefined preset.\n * Omit to get all tools.\n *\n * @example\n * ```ts\n * // Only code-review tools\n * createGithubTools({ token, preset: 'code-review' })\n *\n * // Combine presets\n * createGithubTools({ token, preset: ['code-review', 'issue-triage'] })\n * ```\n */\n preset?: GithubToolPreset | GithubToolPreset[]\n}\n\nfunction resolveApproval(toolName: GithubWriteToolName, config: ApprovalConfig): boolean {\n if (typeof config === 'boolean') return config\n return config[toolName] ?? true\n}\n\nfunction resolvePresetTools(preset: GithubToolPreset | GithubToolPreset[]): Set<string> | null {\n if (!preset) return null\n const presets = Array.isArray(preset) ? preset : [preset]\n const tools = new Set<string>()\n for (const p of presets) {\n for (const t of PRESET_TOOLS[p]) tools.add(t)\n }\n return tools\n}\n\n/**\n * Create a set of GitHub tools for the Vercel AI SDK.\n *\n * Write operations require user approval by default.\n * Control this globally or per-tool via `requireApproval`.\n * Use `preset` to get only the tools you need.\n *\n * @example\n * ```ts\n * // All tools (default)\n * createGithubTools({ token })\n *\n * // Code-review agent — only PR & commit tools\n * createGithubTools({ token, preset: 'code-review' })\n *\n * // Combine presets\n * createGithubTools({ token, preset: ['code-review', 'issue-triage'] })\n *\n * // Granular approval\n * createGithubTools({\n * token,\n * preset: 'maintainer',\n * requireApproval: {\n * mergePullRequest: true,\n * createOrUpdateFile: true,\n * addPullRequestComment: false,\n * }\n * })\n * ```\n */\nexport function createGithubTools({ token, requireApproval = true, preset }: GithubToolsOptions = {}) {\n const resolvedToken = token || process.env.GITHUB_TOKEN\n if (!resolvedToken) {\n throw new Error('GitHub token is required. Pass it as `token` or set the GITHUB_TOKEN environment variable.')\n }\n const octokit = createOctokit(resolvedToken)\n const approval = (name: GithubWriteToolName) => ({ needsApproval: resolveApproval(name, requireApproval) })\n const allowed = preset ? resolvePresetTools(preset) : null\n\n const allTools = {\n getRepository: getRepository(octokit),\n listBranches: listBranches(octokit),\n getFileContent: getFileContent(octokit),\n listPullRequests: listPullRequests(octokit),\n getPullRequest: getPullRequest(octokit),\n listIssues: listIssues(octokit),\n getIssue: getIssue(octokit),\n searchCode: searchCode(octokit),\n searchRepositories: searchRepositories(octokit),\n listCommits: listCommits(octokit),\n getCommit: getCommit(octokit),\n createOrUpdateFile: createOrUpdateFile(octokit, approval('createOrUpdateFile')),\n createPullRequest: createPullRequest(octokit, approval('createPullRequest')),\n mergePullRequest: mergePullRequest(octokit, approval('mergePullRequest')),\n addPullRequestComment: addPullRequestComment(octokit, approval('addPullRequestComment')),\n createIssue: createIssue(octokit, approval('createIssue')),\n addIssueComment: addIssueComment(octokit, approval('addIssueComment')),\n closeIssue: closeIssue(octokit, approval('closeIssue')),\n }\n\n if (!allowed) return allTools\n\n return Object.fromEntries(\n Object.entries(allTools).filter(([name]) => allowed.has(name))\n ) as Partial<typeof allTools>\n}\n\nexport type GithubTools = ReturnType<typeof createGithubTools>\n\n// Re-export individual tool factories for cherry-picking\nexport { createOctokit } from './client'\nexport { getRepository, listBranches, getFileContent, createOrUpdateFile } from './tools/repository'\nexport { listPullRequests, getPullRequest, createPullRequest, mergePullRequest, addPullRequestComment } from './tools/pull-requests'\nexport { listIssues, getIssue, createIssue, addIssueComment, closeIssue } from './tools/issues'\nexport { searchCode, searchRepositories } from './tools/search'\nexport { listCommits, getCommit } from './tools/commits'\nexport type { Octokit, ToolOptions } from './types'\nexport { createGithubAgent } from './agents'\nexport type { CreateGithubAgentOptions } from './agents'\n"],"mappings":"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"}
|
package/package.json
CHANGED