Skip to content

Feature generic-http provider#1

Merged
danilin-em merged 3 commits intomasterfrom
feature-openai-provider
Mar 15, 2026
Merged

Feature generic-http provider#1
danilin-em merged 3 commits intomasterfrom
feature-openai-provider

Conversation

@danilin-em
Copy link
Copy Markdown
Owner

No description provided.

Copilot AI review requested due to automatic review settings March 15, 2026 14:30
@danilin-em danilin-em merged commit 63cf178 into master Mar 15, 2026
2 of 3 checks passed
Copy link
Copy Markdown

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Adds an OpenAI-compatible “generic-http” provider alongside Gemini, plus automatic embedding vector-size detection to configure Qdrant collections correctly. It also refactors retry logic into a shared helper and updates logging to support both human-friendly console output and JSON trace logs.

Changes:

  • Introduces GenericHTTPProvider (chat completions + embeddings) and shared retryOnRateLimit logic.
  • Adds embedding vector_size config with auto-detection via EmbeddingProvider.DetectVectorSize() and wires it into Qdrant collection creation.
  • Updates CLI/indexer logging and trace logger to better separate console output from trace output.

Reviewed changes

Copilot reviewed 16 out of 16 changed files in this pull request and generated 3 comments.

Show a summary per file
File Description
internal/trace/trace.go Adds console + multi handler support and updates NewLogger signature/behavior.
cmd/vedcode/main.go Wires new trace logger options and removes log.Fatalf usage.
internal/providers/retry.go New shared retry/backoff helper for provider calls.
internal/providers/provider.go Adds DetectVectorSize() to EmbeddingProvider and supports generic-http factories.
internal/providers/generic_http.go New OpenAI-compatible HTTP provider implementation.
internal/providers/generic_http_test.go Tests for generic-http generation/embedding + retry behavior.
internal/providers/providers_test.go Centralizes noopLogger for providers tests.
internal/providers/gemini.go Switches Gemini to shared retry helper and implements DetectVectorSize().
internal/providers/gemini_test.go Adjusts tests for retry refactor and shared noop logger.
internal/config/config.go Adds vector_size, provider URL/api-key validation rules, and merge behavior.
internal/config/config_test.go Updates config fixtures/validation tests for generic-http + vector size.
internal/store/qdrant.go Makes Qdrant collection vector size configurable.
internal/store/qdrant_test.go Updates constructor calls to include vector size.
internal/indexer/indexer.go Switches operational output from log to slog and adds vector-size auto-detect.
internal/mcp/server.go Adds vector-size auto-detect before initializing Qdrant store.
internal/mcp/server_test.go Updates embedding provider mock to implement DetectVectorSize().

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

Comment on lines +23 to 29
func NewQdrantStore(url, collectionPrefix, projectName string, vectorSize int, logger *slog.Logger) *QdrantStore {
return &QdrantStore{
baseURL: url,
collection: collectionPrefix + projectName,
vectorSize: vectorSize,
client: &http.Client{Timeout: 30 * time.Second},
logger: logger,
Comment on lines +170 to +172
if project.Embedding.VectorSize != 0 {
cfg.Embedding.VectorSize = project.Embedding.VectorSize
}
Comment on lines +71 to +76
func NewGenericHTTPProvider(baseURL, apiKey, model, embeddingModel string, logger *slog.Logger) *GenericHTTPProvider {
return &GenericHTTPProvider{
client: &http.Client{Timeout: defaultTimeout},
baseURL: baseURL,
apiKey: apiKey,
model: model,
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants