René's URL Explorer Experiment


Title: Implements comprehensive BYOK (Bring Your Own Key) functionality, all… by walkerRnD · Pull Request #329 · CodebuffAI/codebuff · GitHub

Open Graph Title: Implements comprehensive BYOK (Bring Your Own Key) functionality, all… by walkerRnD · Pull Request #329 · CodebuffAI/codebuff

X Title: Implements comprehensive BYOK (Bring Your Own Key) functionality, all… by walkerRnD · Pull Request #329 · CodebuffAI/codebuff

Description: 🔑 Add BYOK (Bring Your Own Key) Support for AI Provider APIs Summary Implements comprehensive BYOK (Bring Your Own Key) functionality, allowing SDK users to provide their own API keys for Anthropic, Gemini, and OpenAI models. Users can now use Codebuff's agent infrastructure while paying directly for LLM API costs through their own provider accounts, with reduced or zero Codebuff markup. Motivation Cost Savings: Users pay only for actual API usage with reduced markup Flexibility: Users can leverage their existing provider accounts and rate limits No Codebuff API Key Required: In require mode, users can authenticate solely with provider keys Direct Billing: Charges appear directly on provider accounts for better cost tracking Changes 🎨 Frontend (Web UI) New Files: web/src/app/api/user-api-keys/route.ts - REST API for managing user keys (GET, POST) web/src/app/api/user-api-keys/[keyType]/route.ts - REST API for deleting keys (DELETE) web/src/app/profile/components/user-api-keys-section.tsx - Card-based UI for key management Modified Files: web/src/app/profile/page.tsx - Added "Provider API Keys" section to profile 📦 SDK Layer Modified Files: sdk/src/client.ts - Added userApiKeys and byokMode options with authentication logic sdk/src/run.ts - Extended CodebuffClientOptions to accept BYOK parameters sdk/README.md - Added comprehensive BYOK documentation and examples New Files: sdk/knowledge.md - Detailed architecture documentation for BYOK 🔧 Backend Modified Files: backend/package.json - Added @ai-sdk/anthropic@1.0.8 dependency backend/src/llm-apis/vercel-ai-sdk/ai-sdk.ts - Implemented direct-to-provider routing with BYOK support backend/src/llm-apis/message-cost-tracker.ts - Added per-provider cost tracking with reduced markup backend/src/main-prompt.ts - Added getUserApiKeys() for DB key retrieval and merging backend/src/run-agent-step.ts - Pass BYOK parameters through agent execution backend/src/prompt-agent-stream.ts - Pass BYOK parameters to AI SDK functions 🔐 Common Layer Modified Files: common/src/actions.ts - Added userApiKeys and byokMode to CLIENT_ACTION_SCHEMA common/src/api-keys/crypto.ts - Added validateApiKey() function for format validation 📝 Documentation New Files: .plan/byok-implementation-summary.md - Complete implementation summary Key Features 1. Three BYOK Modes // 'disabled' - Always use system keys (requires Codebuff API key) const client = new CodebuffClient({ apiKey: process.env.CODEBUFF_API_KEY, byokMode: 'disabled', }) // 'prefer' - Use user keys when available, fallback to system (default) const client = new CodebuffClient({ apiKey: process.env.CODEBUFF_API_KEY, userApiKeys: { anthropic: process.env.ANTHROPIC_API_KEY }, byokMode: 'prefer', }) // 'require' - Only use user keys, no Codebuff API key needed const client = new CodebuffClient({ userApiKeys: { anthropic: process.env.ANTHROPIC_API_KEY }, byokMode: 'require', }) 2. Direct-to-Provider Routing Anthropic models with user key → @ai-sdk/anthropic (direct) Gemini models with user key → @ai-sdk/google (direct) OpenAI models with user key → @ai-sdk/openai (direct) All models without user key → System keys or OpenRouter 3. Key Precedence SDK-provided keys (highest priority) Database-stored keys (medium priority) System keys (fallback) 4. Security ✅ AES-256-GCM encryption for keys at rest ✅ Format validation (prefix and length) per provider ✅ Keys never logged or exposed in error messages ✅ Secure WebSocket transmission 5. Cost Tracking // Without BYOK (system keys) costInCents = cost * 100 * (1 + PROFIT_MARGIN) // With BYOK (user keys) costInCents = cost * 100 * PROFIT_MARGIN // Reduced markup API Changes SDK Constructor new CodebuffClient({ apiKey?: string, // Now optional if userApiKeys provided userApiKeys?: { anthropic?: string, // sk-ant-api03-... gemini?: string, // AIzaSy... openai?: string, // sk-proj-... }, byokMode?: 'disabled' | 'prefer' | 'require', // Default: 'prefer' cwd?: string, }) Web API Endpoints GET /api/user-api-keys - List configured key types POST /api/user-api-keys - Add/update API key DELETE /api/user-api-keys/[keyType] - Remove API key Database Schema Uses existing encrypted_api_keys table: CREATE TABLE encrypted_api_keys ( user_id TEXT NOT NULL, type TEXT NOT NULL, -- 'anthropic' | 'gemini' | 'openai' encrypted_key TEXT NOT NULL, iv TEXT NOT NULL, created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP, updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP, PRIMARY KEY (user_id, type) ); Testing Manual Testing Steps Navigate to /profile?tab=user-api-keys Add provider API keys via web UI Run SDK with different byokMode settings Verify correct provider routing in logs Check cost calculations show reduced markup Test key removal and updates Recommended Unit Tests Test validateApiKey() with valid/invalid keys Test encryption/decryption functions Test key precedence in getUserApiKeys() Test determineByokProvider() logic Test cost calculation with/without BYOK Recommended Integration Tests End-to-end flow with real provider keys All three byokMode settings Fallback behavior when keys missing Error handling for invalid keys Key storage/retrieval via web API Breaking Changes None. This is a fully backward-compatible addition. Existing code continues to work without any changes. Migration Guide No migration needed. To adopt BYOK: Via Web UI: Add keys at /profile?tab=user-api-keys Via SDK: Pass userApiKeys in constructor or run() options Documentation ✅ Updated sdk/README.md with usage examples ✅ Created sdk/knowledge.md with architecture details ✅ Created .plan/byok-implementation-summary.md with implementation summary Future Enhancements Support for additional providers (Azure OpenAI, AWS Bedrock) Per-model key configuration Key rotation and expiration Usage analytics per provider Cost alerts and budgets Organization-level key sharing Checklist Phase 1: Backend API Endpoints Phase 2: Web UI Components Phase 3: SDK Configuration Phase 4: Backend Integration Phase 5: Documentation Unit tests Integration tests Manual testing Staging deployment

Open Graph Description: 🔑 Add BYOK (Bring Your Own Key) Support for AI Provider APIs Summary Implements comprehensive BYOK (Bring Your Own Key) functionality, allowing SDK users to provide their own API keys for Anthropic...

X Description: 🔑 Add BYOK (Bring Your Own Key) Support for AI Provider APIs Summary Implements comprehensive BYOK (Bring Your Own Key) functionality, allowing SDK users to provide their own API keys for Anthropic...

Opengraph URL: https://github.com/CodebuffAI/codebuff/pull/329

X: @github

direct link

Domain: patch-diff.githubusercontent.com

route-pattern/:user_id/:repository/pull/:id/files(.:format)
route-controllerpull_requests
route-actionfiles
fetch-noncev2:11f685d5-9c82-68eb-529c-8040f2ad524a
current-catalog-service-hashae870bc5e265a340912cde392f23dad3671a0a881730ffdadd82f2f57d81641b
request-idA93A:96DF2:AFEE87:E48C63:697F6D8E
html-safe-nonce3b75729754037877aa6e3ea5a35363e6ed3cd121eab8a43e3f524cf934497d3e
visitor-payloadeyJyZWZlcnJlciI6IiIsInJlcXVlc3RfaWQiOiJBOTNBOjk2REYyOkFGRUU4NzpFNDhDNjM6Njk3RjZEOEUiLCJ2aXNpdG9yX2lkIjoiOTI5NzMzMDI0MDM0MDI0ODQ2IiwicmVnaW9uX2VkZ2UiOiJpYWQiLCJyZWdpb25fcmVuZGVyIjoiaWFkIn0=
visitor-hmac1f50aaf82380bb8a01def3183f6bd55d1283b5b016d383bb9cbeb1ac5687a071
hovercard-subject-tagpull_request:2880149919
github-keyboard-shortcutsrepository,pull-request-list,pull-request-conversation,pull-request-files-changed,copilot
google-site-verificationApib7-x98H0j5cPqHWwSMm6dNU4GmODRoqxLiDzdx9I
octolytics-urlhttps://collector.github.com/github/collect
analytics-location///pull_requests/show/files
fb:app_id1401488693436528
apple-itunes-appapp-id=1477376905, app-argument=https://github.com/CodebuffAI/codebuff/pull/329/files
twitter:imagehttps://avatars.githubusercontent.com/u/6481240?s=400&v=4
twitter:cardsummary_large_image
og:imagehttps://avatars.githubusercontent.com/u/6481240?s=400&v=4
og:image:alt🔑 Add BYOK (Bring Your Own Key) Support for AI Provider APIs Summary Implements comprehensive BYOK (Bring Your Own Key) functionality, allowing SDK users to provide their own API keys for Anthropic...
og:site_nameGitHub
og:typeobject
hostnamegithub.com
expected-hostnamegithub.com
None60279d4097367e16897439d16d6bbe4180663db828c666eeed2656988ffe59f6
turbo-cache-controlno-preview
diff-viewunified
go-importgithub.com/CodebuffAI/codebuff git https://github.com/CodebuffAI/codebuff.git
octolytics-dimension-user_id189203002
octolytics-dimension-user_loginCodebuffAI
octolytics-dimension-repository_id826515105
octolytics-dimension-repository_nwoCodebuffAI/codebuff
octolytics-dimension-repository_publictrue
octolytics-dimension-repository_is_forkfalse
octolytics-dimension-repository_network_root_id826515105
octolytics-dimension-repository_network_root_nwoCodebuffAI/codebuff
turbo-body-classeslogged-out env-production page-responsive full-width
disable-turbotrue
browser-stats-urlhttps://api.github.com/_private/browser/stats
browser-errors-urlhttps://api.github.com/_private/browser/errors
release7c85641c598ad130c74f7bcc27f58575cac69551
ui-targetfull
theme-color#1e2327
color-schemelight dark

Links:

Skip to contenthttps://patch-diff.githubusercontent.com/CodebuffAI/codebuff/pull/329/changes#start-of-content
https://patch-diff.githubusercontent.com/
Sign in https://patch-diff.githubusercontent.com/login?return_to=https%3A%2F%2Fgithub.com%2FCodebuffAI%2Fcodebuff%2Fpull%2F329%2Ffiles
GitHub CopilotWrite better code with AIhttps://github.com/features/copilot
GitHub SparkBuild and deploy intelligent appshttps://github.com/features/spark
GitHub ModelsManage and compare promptshttps://github.com/features/models
MCP RegistryNewIntegrate external toolshttps://github.com/mcp
ActionsAutomate any workflowhttps://github.com/features/actions
CodespacesInstant dev environmentshttps://github.com/features/codespaces
IssuesPlan and track workhttps://github.com/features/issues
Code ReviewManage code changeshttps://github.com/features/code-review
GitHub Advanced SecurityFind and fix vulnerabilitieshttps://github.com/security/advanced-security
Code securitySecure your code as you buildhttps://github.com/security/advanced-security/code-security
Secret protectionStop leaks before they starthttps://github.com/security/advanced-security/secret-protection
Why GitHubhttps://github.com/why-github
Documentationhttps://docs.github.com
Bloghttps://github.blog
Changeloghttps://github.blog/changelog
Marketplacehttps://github.com/marketplace
View all featureshttps://github.com/features
Enterpriseshttps://github.com/enterprise
Small and medium teamshttps://github.com/team
Startupshttps://github.com/enterprise/startups
Nonprofitshttps://github.com/solutions/industry/nonprofits
App Modernizationhttps://github.com/solutions/use-case/app-modernization
DevSecOpshttps://github.com/solutions/use-case/devsecops
DevOpshttps://github.com/solutions/use-case/devops
CI/CDhttps://github.com/solutions/use-case/ci-cd
View all use caseshttps://github.com/solutions/use-case
Healthcarehttps://github.com/solutions/industry/healthcare
Financial serviceshttps://github.com/solutions/industry/financial-services
Manufacturinghttps://github.com/solutions/industry/manufacturing
Governmenthttps://github.com/solutions/industry/government
View all industrieshttps://github.com/solutions/industry
View all solutionshttps://github.com/solutions
AIhttps://github.com/resources/articles?topic=ai
Software Developmenthttps://github.com/resources/articles?topic=software-development
DevOpshttps://github.com/resources/articles?topic=devops
Securityhttps://github.com/resources/articles?topic=security
View all topicshttps://github.com/resources/articles
Customer storieshttps://github.com/customer-stories
Events & webinarshttps://github.com/resources/events
Ebooks & reportshttps://github.com/resources/whitepapers
Business insightshttps://github.com/solutions/executive-insights
GitHub Skillshttps://skills.github.com
Documentationhttps://docs.github.com
Customer supporthttps://support.github.com
Community forumhttps://github.com/orgs/community/discussions
Trust centerhttps://github.com/trust-center
Partnershttps://github.com/partners
GitHub SponsorsFund open source developershttps://github.com/sponsors
Security Labhttps://securitylab.github.com
Maintainer Communityhttps://maintainers.github.com
Acceleratorhttps://github.com/accelerator
Archive Programhttps://archiveprogram.github.com
Topicshttps://github.com/topics
Trendinghttps://github.com/trending
Collectionshttps://github.com/collections
Enterprise platformAI-powered developer platformhttps://github.com/enterprise
GitHub Advanced SecurityEnterprise-grade security featureshttps://github.com/security/advanced-security
Copilot for BusinessEnterprise-grade AI featureshttps://github.com/features/copilot/copilot-business
Premium SupportEnterprise-grade 24/7 supporthttps://github.com/premium-support
Pricinghttps://github.com/pricing
Search syntax tipshttps://docs.github.com/search-github/github-code-search/understanding-github-code-search-syntax
documentationhttps://docs.github.com/search-github/github-code-search/understanding-github-code-search-syntax
Sign in https://patch-diff.githubusercontent.com/login?return_to=https%3A%2F%2Fgithub.com%2FCodebuffAI%2Fcodebuff%2Fpull%2F329%2Ffiles
Sign up https://patch-diff.githubusercontent.com/signup?ref_cta=Sign+up&ref_loc=header+logged+out&ref_page=%2F%3Cuser-name%3E%2F%3Crepo-name%3E%2Fpull_requests%2Fshow%2Ffiles&source=header-repo&source_repo=CodebuffAI%2Fcodebuff
Reloadhttps://patch-diff.githubusercontent.com/CodebuffAI/codebuff/pull/329/changes
Reloadhttps://patch-diff.githubusercontent.com/CodebuffAI/codebuff/pull/329/changes
Reloadhttps://patch-diff.githubusercontent.com/CodebuffAI/codebuff/pull/329/changes
CodebuffAI https://patch-diff.githubusercontent.com/CodebuffAI
codebuffhttps://patch-diff.githubusercontent.com/CodebuffAI/codebuff
Notifications https://patch-diff.githubusercontent.com/login?return_to=%2FCodebuffAI%2Fcodebuff
Fork 351 https://patch-diff.githubusercontent.com/login?return_to=%2FCodebuffAI%2Fcodebuff
Star 2.7k https://patch-diff.githubusercontent.com/login?return_to=%2FCodebuffAI%2Fcodebuff
Code https://patch-diff.githubusercontent.com/CodebuffAI/codebuff
Issues 27 https://patch-diff.githubusercontent.com/CodebuffAI/codebuff/issues
Pull requests 7 https://patch-diff.githubusercontent.com/CodebuffAI/codebuff/pulls
Discussions https://patch-diff.githubusercontent.com/CodebuffAI/codebuff/discussions
Actions https://patch-diff.githubusercontent.com/CodebuffAI/codebuff/actions
Projects 0 https://patch-diff.githubusercontent.com/CodebuffAI/codebuff/projects
Security 0 https://patch-diff.githubusercontent.com/CodebuffAI/codebuff/security
Insights https://patch-diff.githubusercontent.com/CodebuffAI/codebuff/pulse
Code https://patch-diff.githubusercontent.com/CodebuffAI/codebuff
Issues https://patch-diff.githubusercontent.com/CodebuffAI/codebuff/issues
Pull requests https://patch-diff.githubusercontent.com/CodebuffAI/codebuff/pulls
Discussions https://patch-diff.githubusercontent.com/CodebuffAI/codebuff/discussions
Actions https://patch-diff.githubusercontent.com/CodebuffAI/codebuff/actions
Projects https://patch-diff.githubusercontent.com/CodebuffAI/codebuff/projects
Security https://patch-diff.githubusercontent.com/CodebuffAI/codebuff/security
Insights https://patch-diff.githubusercontent.com/CodebuffAI/codebuff/pulse
Sign up for GitHub https://patch-diff.githubusercontent.com/signup?return_to=%2FCodebuffAI%2Fcodebuff%2Fissues%2Fnew%2Fchoose
terms of servicehttps://docs.github.com/terms
privacy statementhttps://docs.github.com/privacy
Sign inhttps://patch-diff.githubusercontent.com/login?return_to=%2FCodebuffAI%2Fcodebuff%2Fissues%2Fnew%2Fchoose
walkerRnDhttps://patch-diff.githubusercontent.com/walkerRnD
CodebuffAI:mainhttps://patch-diff.githubusercontent.com/CodebuffAI/codebuff/tree/main
walkerRnD:mainhttps://patch-diff.githubusercontent.com/walkerRnD/codebuff/tree/main
Conversation 3 https://patch-diff.githubusercontent.com/CodebuffAI/codebuff/pull/329
Commits 2 https://patch-diff.githubusercontent.com/CodebuffAI/codebuff/pull/329/commits
Checks 0 https://patch-diff.githubusercontent.com/CodebuffAI/codebuff/pull/329/checks
Files changed https://patch-diff.githubusercontent.com/CodebuffAI/codebuff/pull/329/files
Please reload this pagehttps://patch-diff.githubusercontent.com/CodebuffAI/codebuff/pull/329/changes
Implements comprehensive BYOK (Bring Your Own Key) functionality, all… https://patch-diff.githubusercontent.com/CodebuffAI/codebuff/pull/329/changes#top
Show all changes 2 commits https://patch-diff.githubusercontent.com/CodebuffAI/codebuff/pull/329/files
e7b565d Implements comprehensive BYOK (Bring Your Own Key) functionality, all… walkerRnD Oct 2, 2025 https://patch-diff.githubusercontent.com/CodebuffAI/codebuff/pull/329/commits/e7b565db98aa51f2599e110f86d40e8185590c39
fdf7a2e Merge branch 'CodebuffAI:main' into main walkerRnD Oct 2, 2025 https://patch-diff.githubusercontent.com/CodebuffAI/codebuff/pull/329/commits/fdf7a2e0ff387f85bbe450d079512cdd1657f93f
Clear filters https://patch-diff.githubusercontent.com/CodebuffAI/codebuff/pull/329/files
Please reload this pagehttps://patch-diff.githubusercontent.com/CodebuffAI/codebuff/pull/329/changes
Please reload this pagehttps://patch-diff.githubusercontent.com/CodebuffAI/codebuff/pull/329/changes
package.json https://patch-diff.githubusercontent.com/CodebuffAI/codebuff/pull/329/changes#diff-495707834ca4b862f9acdfbac70d279023d2c059da13db59594e61ed3354fed5
message-cost-tracker.ts https://patch-diff.githubusercontent.com/CodebuffAI/codebuff/pull/329/changes#diff-715205a9cd7567a8c8e09dc2108f1de000fd96a5d7b8fac1862396f014a1c01b
ai-sdk.ts https://patch-diff.githubusercontent.com/CodebuffAI/codebuff/pull/329/changes#diff-e5202500cc29421017357bf05db6ea98cb90f1defcd23d65bbf4fdf19b53239f
main-prompt.ts https://patch-diff.githubusercontent.com/CodebuffAI/codebuff/pull/329/changes#diff-e12c0bc34d504fb32d79a2c723eca29292f7b7157a3881bbbc233dae6046ac62
prompt-agent-stream.ts https://patch-diff.githubusercontent.com/CodebuffAI/codebuff/pull/329/changes#diff-926a2d50c4109e008e588c034f364fdad4da04b20d9d666ae4856c7623287e58
run-agent-step.ts https://patch-diff.githubusercontent.com/CodebuffAI/codebuff/pull/329/changes#diff-5f826ab633a700cceda805cbbbab6f07735088f5873a455d82e6b422022bc3de
bun.lock https://patch-diff.githubusercontent.com/CodebuffAI/codebuff/pull/329/changes#diff-bfd0ef82a01108fa1e836c2500b98b7de8a92bb1ae352a8efcbd9d6ffcaabd60
actions.ts https://patch-diff.githubusercontent.com/CodebuffAI/codebuff/pull/329/changes#diff-21359011611cff2f44d4a8f89dd29b468148344fae13db88d10672f2c28824be
crypto.ts https://patch-diff.githubusercontent.com/CodebuffAI/codebuff/pull/329/changes#diff-3e90f26a777b48275eaf555758876e89dbf5e87de86398cdf920df185b2dc6fb
README.md https://patch-diff.githubusercontent.com/CodebuffAI/codebuff/pull/329/changes#diff-00ba42324c784ebcf27766700a3924a25e593009a52d5431331d42bef9edd2e9
knowledge.md https://patch-diff.githubusercontent.com/CodebuffAI/codebuff/pull/329/changes#diff-7dddda585bd15d0ad34e084ad4765c20d5dc88fa039179766d684c9704656b53
client.ts https://patch-diff.githubusercontent.com/CodebuffAI/codebuff/pull/329/changes#diff-df4111681839a8ad5c7eedb36c9ef1f152f3d3eed01a065026ac6b850094d8fd
run.ts https://patch-diff.githubusercontent.com/CodebuffAI/codebuff/pull/329/changes#diff-ee59857e0160d44baf20685937217fe91acf23afe4f3a3d8f6e41bb2fbbea23a
route.ts https://patch-diff.githubusercontent.com/CodebuffAI/codebuff/pull/329/changes#diff-be6475e741e10b62fdeb374450c5c2f5773524b6560da4a5b6a8e7f2fabd2ac3
route.ts https://patch-diff.githubusercontent.com/CodebuffAI/codebuff/pull/329/changes#diff-26367b0b3cfec2901983625022b6904fcace5229428d27a9296d1582e3cf19b9
user-api-keys-section.tsx https://patch-diff.githubusercontent.com/CodebuffAI/codebuff/pull/329/changes#diff-10d1cd97240a14ba18e85dd555f63f38b22b5b0a07394a7c9e702b2c32eb5145
page.tsx https://patch-diff.githubusercontent.com/CodebuffAI/codebuff/pull/329/changes#diff-686b5b8734af6c66a654801a395dd0266e5e3f6068dfb1400f1dc13a7a0ed34d
https://patch-diff.githubusercontent.com/CodebuffAI/codebuff/blob/main/.github/CODEOWNERS#L1
backend/package.jsonhttps://patch-diff.githubusercontent.com/CodebuffAI/codebuff/pull/329/changes#diff-495707834ca4b862f9acdfbac70d279023d2c059da13db59594e61ed3354fed5
View file https://patch-diff.githubusercontent.com/walkerRnD/codebuff/blob/fdf7a2e0ff387f85bbe450d079512cdd1657f93f/backend/package.json
Open in desktop https://desktop.github.com
https://github.co/hiddenchars
https://patch-diff.githubusercontent.com/CodebuffAI/codebuff/pull/329/{{ revealButtonHref }}
https://patch-diff.githubusercontent.com/CodebuffAI/codebuff/pull/329/changes#diff-495707834ca4b862f9acdfbac70d279023d2c059da13db59594e61ed3354fed5
https://patch-diff.githubusercontent.com/CodebuffAI/codebuff/pull/329/changes#diff-495707834ca4b862f9acdfbac70d279023d2c059da13db59594e61ed3354fed5
https://patch-diff.githubusercontent.com/CodebuffAI/codebuff/pull/329/changes#diff-495707834ca4b862f9acdfbac70d279023d2c059da13db59594e61ed3354fed5
https://patch-diff.githubusercontent.com/CodebuffAI/codebuff/blob/main/.github/CODEOWNERS#L1
backend/src/llm-apis/message-cost-tracker.tshttps://patch-diff.githubusercontent.com/CodebuffAI/codebuff/pull/329/changes#diff-715205a9cd7567a8c8e09dc2108f1de000fd96a5d7b8fac1862396f014a1c01b
View file https://patch-diff.githubusercontent.com/walkerRnD/codebuff/blob/fdf7a2e0ff387f85bbe450d079512cdd1657f93f/backend/src/llm-apis/message-cost-tracker.ts
Open in desktop https://desktop.github.com
https://github.co/hiddenchars
https://patch-diff.githubusercontent.com/CodebuffAI/codebuff/pull/329/{{ revealButtonHref }}
https://patch-diff.githubusercontent.com/CodebuffAI/codebuff/pull/329/changes#diff-715205a9cd7567a8c8e09dc2108f1de000fd96a5d7b8fac1862396f014a1c01b
https://patch-diff.githubusercontent.com/CodebuffAI/codebuff/pull/329/changes#diff-715205a9cd7567a8c8e09dc2108f1de000fd96a5d7b8fac1862396f014a1c01b
https://patch-diff.githubusercontent.com/CodebuffAI/codebuff/pull/329/changes#diff-715205a9cd7567a8c8e09dc2108f1de000fd96a5d7b8fac1862396f014a1c01b
https://patch-diff.githubusercontent.com/CodebuffAI/codebuff/blob/main/.github/CODEOWNERS#L1
backend/src/llm-apis/vercel-ai-sdk/ai-sdk.tshttps://patch-diff.githubusercontent.com/CodebuffAI/codebuff/pull/329/changes#diff-e5202500cc29421017357bf05db6ea98cb90f1defcd23d65bbf4fdf19b53239f
View file https://patch-diff.githubusercontent.com/walkerRnD/codebuff/blob/fdf7a2e0ff387f85bbe450d079512cdd1657f93f/backend/src/llm-apis/vercel-ai-sdk/ai-sdk.ts
Open in desktop https://desktop.github.com
https://github.co/hiddenchars
https://patch-diff.githubusercontent.com/CodebuffAI/codebuff/pull/329/{{ revealButtonHref }}
https://patch-diff.githubusercontent.com/CodebuffAI/codebuff/pull/329/changes#diff-e5202500cc29421017357bf05db6ea98cb90f1defcd23d65bbf4fdf19b53239f
https://patch-diff.githubusercontent.com/CodebuffAI/codebuff/pull/329/changes#diff-e5202500cc29421017357bf05db6ea98cb90f1defcd23d65bbf4fdf19b53239f
https://patch-diff.githubusercontent.com/CodebuffAI/codebuff/pull/329/changes#diff-e5202500cc29421017357bf05db6ea98cb90f1defcd23d65bbf4fdf19b53239f
https://patch-diff.githubusercontent.com/CodebuffAI/codebuff/pull/329/changes#diff-e5202500cc29421017357bf05db6ea98cb90f1defcd23d65bbf4fdf19b53239f
https://patch-diff.githubusercontent.com/CodebuffAI/codebuff/pull/329/changes#diff-e5202500cc29421017357bf05db6ea98cb90f1defcd23d65bbf4fdf19b53239f
https://patch-diff.githubusercontent.com/CodebuffAI/codebuff/pull/329/changes#diff-e5202500cc29421017357bf05db6ea98cb90f1defcd23d65bbf4fdf19b53239f
https://patch-diff.githubusercontent.com/CodebuffAI/codebuff/pull/329/changes#diff-e5202500cc29421017357bf05db6ea98cb90f1defcd23d65bbf4fdf19b53239f
https://patch-diff.githubusercontent.com/CodebuffAI/codebuff/pull/329/changes#diff-e5202500cc29421017357bf05db6ea98cb90f1defcd23d65bbf4fdf19b53239f
https://patch-diff.githubusercontent.com/CodebuffAI/codebuff/pull/329/changes#diff-e5202500cc29421017357bf05db6ea98cb90f1defcd23d65bbf4fdf19b53239f
https://patch-diff.githubusercontent.com/CodebuffAI/codebuff/pull/329/changes#diff-e5202500cc29421017357bf05db6ea98cb90f1defcd23d65bbf4fdf19b53239f
https://patch-diff.githubusercontent.com/CodebuffAI/codebuff/pull/329/changes#diff-e5202500cc29421017357bf05db6ea98cb90f1defcd23d65bbf4fdf19b53239f
https://patch-diff.githubusercontent.com/CodebuffAI/codebuff/pull/329/changes#diff-e5202500cc29421017357bf05db6ea98cb90f1defcd23d65bbf4fdf19b53239f
https://patch-diff.githubusercontent.com/CodebuffAI/codebuff/pull/329/changes#diff-e5202500cc29421017357bf05db6ea98cb90f1defcd23d65bbf4fdf19b53239f
https://patch-diff.githubusercontent.com/CodebuffAI/codebuff/pull/329/changes#diff-e5202500cc29421017357bf05db6ea98cb90f1defcd23d65bbf4fdf19b53239f
https://patch-diff.githubusercontent.com/CodebuffAI/codebuff/pull/329/changes#diff-e5202500cc29421017357bf05db6ea98cb90f1defcd23d65bbf4fdf19b53239f
https://patch-diff.githubusercontent.com/CodebuffAI/codebuff/pull/329/changes#diff-e5202500cc29421017357bf05db6ea98cb90f1defcd23d65bbf4fdf19b53239f
https://patch-diff.githubusercontent.com/CodebuffAI/codebuff/pull/329/changes#diff-e5202500cc29421017357bf05db6ea98cb90f1defcd23d65bbf4fdf19b53239f
https://patch-diff.githubusercontent.com/CodebuffAI/codebuff/pull/329/changes#diff-e5202500cc29421017357bf05db6ea98cb90f1defcd23d65bbf4fdf19b53239f
https://patch-diff.githubusercontent.com/CodebuffAI/codebuff/pull/329/changes#diff-e5202500cc29421017357bf05db6ea98cb90f1defcd23d65bbf4fdf19b53239f
https://patch-diff.githubusercontent.com/CodebuffAI/codebuff/pull/329/changes#diff-e5202500cc29421017357bf05db6ea98cb90f1defcd23d65bbf4fdf19b53239f
https://patch-diff.githubusercontent.com/CodebuffAI/codebuff/blob/main/.github/CODEOWNERS#L1
backend/src/main-prompt.tshttps://patch-diff.githubusercontent.com/CodebuffAI/codebuff/pull/329/changes#diff-e12c0bc34d504fb32d79a2c723eca29292f7b7157a3881bbbc233dae6046ac62
View file https://patch-diff.githubusercontent.com/walkerRnD/codebuff/blob/fdf7a2e0ff387f85bbe450d079512cdd1657f93f/backend/src/main-prompt.ts
Open in desktop https://desktop.github.com
https://github.co/hiddenchars
https://patch-diff.githubusercontent.com/CodebuffAI/codebuff/pull/329/{{ revealButtonHref }}
https://patch-diff.githubusercontent.com/CodebuffAI/codebuff/pull/329/changes#diff-e12c0bc34d504fb32d79a2c723eca29292f7b7157a3881bbbc233dae6046ac62
https://patch-diff.githubusercontent.com/CodebuffAI/codebuff/pull/329/changes#diff-e12c0bc34d504fb32d79a2c723eca29292f7b7157a3881bbbc233dae6046ac62
https://patch-diff.githubusercontent.com/CodebuffAI/codebuff/pull/329/changes#diff-e12c0bc34d504fb32d79a2c723eca29292f7b7157a3881bbbc233dae6046ac62
https://patch-diff.githubusercontent.com/CodebuffAI/codebuff/pull/329/changes#diff-e12c0bc34d504fb32d79a2c723eca29292f7b7157a3881bbbc233dae6046ac62
https://patch-diff.githubusercontent.com/CodebuffAI/codebuff/pull/329/changes#diff-e12c0bc34d504fb32d79a2c723eca29292f7b7157a3881bbbc233dae6046ac62
https://patch-diff.githubusercontent.com/CodebuffAI/codebuff/pull/329/changes#diff-e12c0bc34d504fb32d79a2c723eca29292f7b7157a3881bbbc233dae6046ac62
https://patch-diff.githubusercontent.com/CodebuffAI/codebuff/pull/329/changes#diff-e12c0bc34d504fb32d79a2c723eca29292f7b7157a3881bbbc233dae6046ac62
Please reload this pagehttps://patch-diff.githubusercontent.com/CodebuffAI/codebuff/pull/329/changes
https://github.com
Termshttps://docs.github.com/site-policy/github-terms/github-terms-of-service
Privacyhttps://docs.github.com/site-policy/privacy-policies/github-privacy-statement
Securityhttps://github.com/security
Statushttps://www.githubstatus.com/
Communityhttps://github.community/
Docshttps://docs.github.com/
Contacthttps://support.github.com?tags=dotcom-footer

Viewport: width=device-width


URLs of crawlers that visited me.