Add Go and .NET client libraries for GitCaddy AI Service with usage examples. Include Business Source License 1.1, Makefile for build automation, and comprehensive README. Update service configuration and all service classes to support new client integration.
6.2 KiB
6.2 KiB
GitCaddy AI Service
AI-powered code intelligence service for GitCaddy. Provides code review, documentation generation, issue triage, and agentic workflows.
Features
- Code Review: AI-powered pull request and commit reviews with security analysis
- Code Intelligence: Explain code, suggest fixes, summarize changes
- Issue Management: Auto-triage issues, suggest labels, generate responses
- Documentation: Generate docs for code, commit messages
- Agentic Workflows: Multi-step AI workflows for complex tasks
- Chat Interface: Interactive AI assistant for developers
Architecture
┌─────────────────────────────────────────────────────────────────┐
│ GitCaddy Server (Go) │
│ └── AI Client (gRPC) │
│ │ │
│ ▼ │
│ ┌─────────────────────────────────────────────────────────┐ │
│ │ GitCaddy AI Service (.NET 9) │ │
│ │ ├── gRPC API │ │
│ │ ├── MarketAlly.AIPlugin (Multi-provider AI) │ │
│ │ └── License Validation │ │
│ └─────────────────────────────────────────────────────────┘ │
└─────────────────────────────────────────────────────────────────┘
Quick Start
Prerequisites
- .NET 9.0 SDK
- Docker (optional)
- API key for Claude, OpenAI, or Gemini
Development
# Clone the repository
git clone https://git.marketally.com/gitcaddy/gitcaddy-ai.git
cd gitcaddy-ai
# Set environment variables
export Providers__Claude__ApiKey="your-api-key"
# Run the service
cd src/GitCaddy.AI.Service
dotnet run
Docker
# Set environment variables
export CLAUDE_API_KEY="your-api-key"
export GITCADDY_AI_LICENSE="your-license-key"
# Run with Docker Compose
docker-compose up -d
Configuration
Configuration is done via appsettings.json or environment variables:
{
"AIService": {
"DefaultProvider": "Claude",
"DefaultModel": "claude-sonnet-4-20250514",
"MaxTokens": 4096,
"Temperature": 0.7
},
"Providers": {
"Claude": {
"ApiKey": "sk-ant-...",
"Enabled": true
},
"OpenAI": {
"ApiKey": "sk-...",
"Enabled": true
}
},
"License": {
"LicenseKey": "your-license-key"
}
}
Environment variable format: AIService__DefaultProvider=Claude
API Reference
The service exposes a gRPC API defined in protos/gitcaddy_ai.proto.
Code Review
rpc ReviewPullRequest(ReviewPullRequestRequest) returns (ReviewPullRequestResponse);
rpc ReviewCommit(ReviewCommitRequest) returns (ReviewCommitResponse);
Code Intelligence
rpc SummarizeChanges(SummarizeChangesRequest) returns (SummarizeChangesResponse);
rpc ExplainCode(ExplainCodeRequest) returns (ExplainCodeResponse);
rpc SuggestFix(SuggestFixRequest) returns (SuggestFixResponse);
Issue Management
rpc TriageIssue(TriageIssueRequest) returns (TriageIssueResponse);
rpc SuggestLabels(SuggestLabelsRequest) returns (SuggestLabelsResponse);
rpc GenerateIssueResponse(GenerateIssueResponseRequest) returns (GenerateIssueResponseResponse);
Documentation
rpc GenerateDocumentation(GenerateDocumentationRequest) returns (GenerateDocumentationResponse);
rpc GenerateCommitMessage(GenerateCommitMessageRequest) returns (GenerateCommitMessageResponse);
Workflows & Chat
rpc StartWorkflow(StartWorkflowRequest) returns (stream WorkflowEvent);
rpc ExecuteTask(ExecuteTaskRequest) returns (ExecuteTaskResponse);
rpc Chat(stream ChatRequest) returns (stream ChatResponse);
Client Libraries
.NET Client
using GitCaddy.AI.Client;
var client = new GitCaddyAIClient("http://localhost:5051");
var response = await client.ReviewPullRequestAsync(new ReviewPullRequestRequest
{
RepoId = 1,
PullRequestId = 42,
PrTitle = "Add feature X",
Files = { new FileDiff { Path = "src/foo.cs", Patch = "..." } }
});
Console.WriteLine(response.Summary);
Go Client
import ai "git.marketally.com/gitcaddy/gitcaddy-ai/go/gitcaddy-ai-client"
client, err := ai.NewClient("localhost:5051")
if err != nil {
log.Fatal(err)
}
defer client.Close()
resp, err := client.ReviewPullRequest(ctx, &pb.ReviewPullRequestRequest{
RepoId: 1,
PullRequestId: 42,
PrTitle: "Add feature X",
Files: []*pb.FileDiff{{Path: "src/foo.go", Patch: "..."}},
})
Licensing
GitCaddy AI is licensed under the Business Source License 1.1 (BSL-1.1).
License Tiers
| Tier | Features |
|---|---|
| Standard | Code review, code intelligence, documentation, chat |
| Professional | + Issue management, agentic workflows |
| Enterprise | + Custom models, audit logging, SSO integration |
Trial Mode
Without a license key, the service runs in trial mode with Standard tier features for 30 days.
Development
Building
dotnet build
Testing
dotnet test
Generating Proto Files
For Go client:
cd go/gitcaddy-ai-client
go generate
Integration with GitCaddy Server
Add the AI client to your GitCaddy server configuration:
[ai]
ENABLED = true
SERVICE_URL = http://localhost:5051
Support
- Documentation: https://docs.gitcaddy.com/ai
- Issues: https://git.marketally.com/gitcaddy/gitcaddy-ai/issues
- Email: support@marketally.com
License
Copyright 2026 MarketAlly. All rights reserved.
Licensed under the Business Source License 1.1 (BSL-1.1).