Skip to content

Commit 477f0e6

Browse files
authored
Merge pull request #29 from rostilos/1.0.0-rc
1.0.0 rc
2 parents fd61190 + bf76464 commit 477f0e6

332 files changed

Lines changed: 14015 additions & 2659 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

deployment/config/java-shared/application.properties.sample

Lines changed: 39 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -42,6 +42,9 @@ codecrow.frontend-url=http://localhost:8080
4242
# Enable/disable email sending (set to false for development without SMTP)
4343
codecrow.email.enabled=true
4444

45+
# Email templates frontend base url
46+
codecrow.frontend.url=http://localhost:8080
47+
4548
# Sender email address and display name
4649
codecrow.email.from=noreply@codecrow.io
4750
codecrow.email.from-name=CodeCrow
@@ -158,6 +161,42 @@ codecrow.github.app.slug= - The URL-friendly app name (e.g., "codecrow")
158161
codecrow.github.app.private-key-path= - Path to the private key .pem file
159162
codecrow.github.app.webhook-secret= - Webhook secret for verification
160163

164+
# ============================================================================
165+
# GitLab OAuth Application Configuration (for 1-click integration)
166+
# ============================================================================
167+
# Create a GitLab OAuth Application:
168+
#
169+
# For GitLab.com:
170+
# 1. Go to https://gitlab.com/-/user_settings/applications
171+
# 2. Click "Add new application"
172+
#
173+
# For Self-Hosted GitLab:
174+
# 1. Go to https://your-gitlab-instance.com/-/user_settings/applications
175+
# 2. Click "Add new application"
176+
#
177+
# Application settings:
178+
# - Name: CodeCrow (or your preferred name)
179+
# - Redirect URI: ${codecrow.web.base.url}/api/integrations/gitlab/app/callback
180+
# Example: https://server.example.com/api/integrations/gitlab/app/callback
181+
# - Confidential: Yes (checked)
182+
# - Scopes (check all):
183+
# * api - Full API access
184+
# * read_user - Read authenticated user's profile
185+
# * read_repository - Read repositories
186+
# * write_repository - Write to repositories (for comments)
187+
#
188+
# After creation:
189+
# - Copy "Application ID" to codecrow.gitlab.oauth.client-id
190+
# - Copy "Secret" to codecrow.gitlab.oauth.client-secret
191+
#
192+
# Note: The redirect URI must match EXACTLY (including trailing slashes)
193+
# ============================================================================
194+
codecrow.gitlab.oauth.client-id=
195+
codecrow.gitlab.oauth.client-secret=
196+
# For self-hosted GitLab instances, set the base URL (leave empty for gitlab.com)
197+
# Example: https://gitlab.mycompany.com
198+
codecrow.gitlab.oauth.base-url=
199+
161200
# Google OAuth Configuration (for social login)
162201
# Create OAuth 2.0 Client ID in Google Cloud Console:
163202
# 1. Go to https://console.cloud.google.com/apis/credentials

deployment/config/rag-pipeline/.env.sample

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,8 @@ LLAMA_INDEX_CACHE_DIR=/tmp/.llama_index
1818
RAG_MAX_CHUNKS_PER_INDEX=70000
1919
RAG_MAX_FILES_PER_INDEX=40000
2020

21+
RAG_USE_AST_SPLITTER=true
22+
2123
# Alternative OpenRouter models (use full format with provider prefix):
2224
# OPENROUTER_MODEL=openai/text-embedding-3-large # Higher quality, more expensive
2325
# OPENROUTER_MODEL=openai/text-embedding-ada-002 # Legacy model

docs/architecture/mcp-scaling-strategy.md

Whitespace-only changes.

frontend

Submodule frontend updated 50 files

java-ecosystem/libs/analysis-engine/src/main/java/module-info.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@
1717
requires jakarta.persistence;
1818
requires kotlin.stdlib;
1919

20-
exports org.rostilos.codecrow.analysisengine.client;
20+
exports org.rostilos.codecrow.analysisengine.aiclient;
2121
exports org.rostilos.codecrow.analysisengine.config;
2222
exports org.rostilos.codecrow.analysisengine.dto.request.ai;
2323
exports org.rostilos.codecrow.analysisengine.dto.request.processor;
@@ -30,7 +30,7 @@
3030
exports org.rostilos.codecrow.analysisengine.service.vcs;
3131
exports org.rostilos.codecrow.analysisengine.util;
3232

33-
opens org.rostilos.codecrow.analysisengine.client to spring.core, spring.beans, spring.context;
33+
opens org.rostilos.codecrow.analysisengine.aiclient to spring.core, spring.beans, spring.context;
3434
opens org.rostilos.codecrow.analysisengine.config to spring.core, spring.beans, spring.context;
3535
opens org.rostilos.codecrow.analysisengine.processor to spring.core, spring.beans, spring.context;
3636
opens org.rostilos.codecrow.analysisengine.processor.analysis to spring.core, spring.beans, spring.context;

java-ecosystem/libs/analysis-engine/src/main/java/org/rostilos/codecrow/analysisengine/client/AiAnalysisClient.java renamed to java-ecosystem/libs/analysis-engine/src/main/java/org/rostilos/codecrow/analysisengine/aiclient/AiAnalysisClient.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
package org.rostilos.codecrow.analysisengine.client;
1+
package org.rostilos.codecrow.analysisengine.aiclient;
22

33
import org.rostilos.codecrow.analysisengine.dto.request.ai.AiAnalysisRequest;
44
import org.slf4j.Logger;

java-ecosystem/libs/analysis-engine/src/main/java/org/rostilos/codecrow/analysisengine/client/AiCommandClient.java renamed to java-ecosystem/libs/analysis-engine/src/main/java/org/rostilos/codecrow/analysisengine/aiclient/AiCommandClient.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
package org.rostilos.codecrow.analysisengine.client;
1+
package org.rostilos.codecrow.analysisengine.aiclient;
22

33
import com.fasterxml.jackson.databind.ObjectMapper;
44
import org.slf4j.Logger;

java-ecosystem/libs/analysis-engine/src/main/java/org/rostilos/codecrow/analysisengine/dto/request/ai/AiAnalysisRequest.java

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
package org.rostilos.codecrow.analysisengine.dto.request.ai;
22

33
import org.rostilos.codecrow.core.model.ai.AIProviderKey;
4+
import org.rostilos.codecrow.core.model.codeanalysis.AnalysisMode;
45
import org.rostilos.codecrow.core.model.codeanalysis.AnalysisType;
56
import java.util.List;
67

@@ -24,4 +25,9 @@ public interface AiAnalysisRequest {
2425
List<String> getChangedFiles();
2526
List<String> getDiffSnippets();
2627
String getRawDiff();
28+
29+
AnalysisMode getAnalysisMode();
30+
String getDeltaDiff();
31+
String getPreviousCommitHash();
32+
String getCurrentCommitHash();
2733
}

java-ecosystem/libs/analysis-engine/src/main/java/org/rostilos/codecrow/analysisengine/dto/request/ai/AiAnalysisRequestImpl.java

Lines changed: 53 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
import com.fasterxml.jackson.annotation.JsonProperty;
44
import org.rostilos.codecrow.core.model.ai.AIConnection;
55
import org.rostilos.codecrow.core.model.ai.AIProviderKey;
6+
import org.rostilos.codecrow.core.model.codeanalysis.AnalysisMode;
67
import org.rostilos.codecrow.core.model.codeanalysis.AnalysisType;
78
import org.rostilos.codecrow.core.model.codeanalysis.CodeAnalysis;
89
import org.rostilos.codecrow.core.model.project.ProjectVcsConnectionBinding;
@@ -37,6 +38,12 @@ public class AiAnalysisRequestImpl implements AiAnalysisRequest{
3738
protected final String targetBranchName;
3839
protected final String vcsProvider;
3940
protected final String rawDiff;
41+
42+
// Incremental analysis fields
43+
protected final AnalysisMode analysisMode;
44+
protected final String deltaDiff;
45+
protected final String previousCommitHash;
46+
protected final String currentCommitHash;
4047

4148
protected AiAnalysisRequestImpl(Builder<?> builder) {
4249
this.projectId = builder.projectId;
@@ -62,6 +69,11 @@ protected AiAnalysisRequestImpl(Builder<?> builder) {
6269
this.targetBranchName = builder.targetBranchName;
6370
this.vcsProvider = builder.vcsProvider;
6471
this.rawDiff = builder.rawDiff;
72+
// Incremental analysis fields
73+
this.analysisMode = builder.analysisMode != null ? builder.analysisMode : AnalysisMode.FULL;
74+
this.deltaDiff = builder.deltaDiff;
75+
this.previousCommitHash = builder.previousCommitHash;
76+
this.currentCommitHash = builder.currentCommitHash;
6577
}
6678

6779
public Long getProjectId() {
@@ -153,6 +165,22 @@ public String getRawDiff() {
153165
return rawDiff;
154166
}
155167

168+
public AnalysisMode getAnalysisMode() {
169+
return analysisMode;
170+
}
171+
172+
public String getDeltaDiff() {
173+
return deltaDiff;
174+
}
175+
176+
public String getPreviousCommitHash() {
177+
return previousCommitHash;
178+
}
179+
180+
public String getCurrentCommitHash() {
181+
return currentCommitHash;
182+
}
183+
156184

157185
public static Builder<?> builder() {
158186
return new Builder<>();
@@ -183,6 +211,11 @@ public static class Builder<T extends Builder<T>> {
183211
private String targetBranchName;
184212
private String vcsProvider;
185213
private String rawDiff;
214+
// Incremental analysis fields
215+
private AnalysisMode analysisMode;
216+
private String deltaDiff;
217+
private String previousCommitHash;
218+
private String currentCommitHash;
186219

187220
protected Builder() {
188221
}
@@ -301,6 +334,26 @@ public T withRawDiff(String rawDiff) {
301334
return self();
302335
}
303336

337+
public T withAnalysisMode(AnalysisMode analysisMode) {
338+
this.analysisMode = analysisMode;
339+
return self();
340+
}
341+
342+
public T withDeltaDiff(String deltaDiff) {
343+
this.deltaDiff = deltaDiff;
344+
return self();
345+
}
346+
347+
public T withPreviousCommitHash(String previousCommitHash) {
348+
this.previousCommitHash = previousCommitHash;
349+
return self();
350+
}
351+
352+
public T withCurrentCommitHash(String currentCommitHash) {
353+
this.currentCommitHash = currentCommitHash;
354+
return self();
355+
}
356+
304357
public AiAnalysisRequestImpl build() {
305358
return new AiAnalysisRequestImpl(this);
306359
}

java-ecosystem/libs/analysis-engine/src/main/java/org/rostilos/codecrow/analysisengine/dto/request/processor/BranchProcessRequest.java

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,13 @@ public class BranchProcessRequest implements AnalysisProcessRequest {
1717
@NotBlank(message = "Specify analysis type")
1818
public AnalysisType analysisType;
1919

20+
/**
21+
* Optional: The PR number that triggered this branch analysis (for pullrequest:fulfilled events).
22+
* When provided, the PR diff will be used instead of commit diff to get ALL changed files.
23+
* This ensures all files from the original PR are analyzed, not just merge commit changes.
24+
*/
25+
public Long sourcePrNumber;
26+
2027
/**
2128
* Optional: ZIP archive of the repository for first-time full indexing in RAG pipeline.
2229
* If provided, the entire repository will be indexed.
@@ -38,6 +45,8 @@ public String getCommitHash() {
3845

3946
public AnalysisType getAnalysisType() { return analysisType; }
4047

48+
public Long getSourcePrNumber() { return sourcePrNumber; }
49+
4150
public byte[] getArchive() {
4251
return archive;
4352
}

0 commit comments

Comments
 (0)