import { VibeKit, LabelOptions } from 'vibekit';
import { createE2BProvider } from "@vibe-kit/e2b";
const e2bProvider = createE2BProvider({
apiKey: process.env.E2B_API_KEY!,
});
const vibekit = new VibeKit()
.withAgent({
type: "claude",
provider: "anthropic",
apiKey: process.env.ANTHROPIC_API_KEY!,
model: "claude-sonnet-4-20250514",
})
.withSandbox(e2bProvider)
.withSecrets({
GH_TOKEN: process.env.GITHUB_TOKEN!,
});
// Clone repository first
await vibekit.cloneRepository("your-org/your-repo");
// Generate code changes
await vibekit.generateCode({
prompt: "Add authentication middleware",
mode: "code"
});
// Create pull request with custom parameters
const labelOptions: LabelOptions = {
name: "ai-generated",
color: "0e8a16",
description: "Code generated by AI agent"
};
try {
const prResponse = await vibekit.createPullRequest(
"your-org/your-repo", // Repository parameter (required)
labelOptions, // Custom label options
"feature" // Branch prefix (will create feature/xyz branch)
);
console.log(`Pull request created: ${prResponse.html_url}`);
console.log(`PR Number: ${prResponse.number}`);
console.log(`Branch: ${prResponse.branchName}`);
// Access additional GitHub API data
console.log(`PR Title: ${prResponse.title}`);
console.log(`PR Body: ${prResponse.body}`);
console.log(`Author: ${prResponse.user.login}`);
console.log(`Head branch: ${prResponse.head.ref}`);
console.log(`Base branch: ${prResponse.base.ref}`);
} catch (error) {
console.error("Failed to create pull request:", error.message);
}