@djibrilm/lazy-review 0.0.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +21 -0
- package/README.md +95 -0
- package/dist/bin.d.ts +3 -0
- package/dist/bin.d.ts.map +1 -0
- package/dist/bin.js +17 -0
- package/dist/bin.js.map +1 -0
- package/dist/client/assets/geist-cyrillic-ext-wght-normal-DjL33-gN.woff2 +0 -0
- package/dist/client/assets/geist-cyrillic-wght-normal-BEAKL7Jp.woff2 +0 -0
- package/dist/client/assets/geist-latin-ext-wght-normal-DC-KSUi6.woff2 +0 -0
- package/dist/client/assets/geist-latin-wght-normal-BgDaEnEv.woff2 +0 -0
- package/dist/client/assets/geist-vietnamese-wght-normal-6IgcOCM7.woff2 +0 -0
- package/dist/client/assets/index-4oL_AGyI.css +1 -0
- package/dist/client/assets/index-CJtKCyBg.js +848 -0
- package/dist/client/favicon.png +0 -0
- package/dist/client/favicon.svg +1 -0
- package/dist/client/icons.svg +24 -0
- package/dist/client/index.html +17 -0
- package/dist/client/resources/images/logo.png +0 -0
- package/dist/client/resources/images/openai.png +0 -0
- package/dist/constants.d.ts +3 -0
- package/dist/constants.d.ts.map +1 -0
- package/dist/constants.js +3 -0
- package/dist/constants.js.map +1 -0
- package/dist/dev.d.ts +2 -0
- package/dist/dev.d.ts.map +1 -0
- package/dist/dev.js +10 -0
- package/dist/dev.js.map +1 -0
- package/dist/modules/ai-agent/agent-context-manager.d.ts +57 -0
- package/dist/modules/ai-agent/agent-context-manager.d.ts.map +1 -0
- package/dist/modules/ai-agent/agent-context-manager.js +159 -0
- package/dist/modules/ai-agent/agent-context-manager.js.map +1 -0
- package/dist/modules/ai-agent/ai-agent.module.d.ts +17 -0
- package/dist/modules/ai-agent/ai-agent.module.d.ts.map +1 -0
- package/dist/modules/ai-agent/ai-agent.module.js +24 -0
- package/dist/modules/ai-agent/ai-agent.module.js.map +1 -0
- package/dist/modules/ai-agent/ai-agent.utils.d.ts +10 -0
- package/dist/modules/ai-agent/ai-agent.utils.d.ts.map +1 -0
- package/dist/modules/ai-agent/ai-agent.utils.js +389 -0
- package/dist/modules/ai-agent/ai-agent.utils.js.map +1 -0
- package/dist/modules/ai-agent/base.agent.d.ts +26 -0
- package/dist/modules/ai-agent/base.agent.d.ts.map +1 -0
- package/dist/modules/ai-agent/base.agent.js +101 -0
- package/dist/modules/ai-agent/base.agent.js.map +1 -0
- package/dist/modules/ai-agent/chat.agent.d.ts +35 -0
- package/dist/modules/ai-agent/chat.agent.d.ts.map +1 -0
- package/dist/modules/ai-agent/chat.agent.js +590 -0
- package/dist/modules/ai-agent/chat.agent.js.map +1 -0
- package/dist/modules/ai-agent/code-base-indexer.agent.d.ts +13 -0
- package/dist/modules/ai-agent/code-base-indexer.agent.d.ts.map +1 -0
- package/dist/modules/ai-agent/code-base-indexer.agent.js +506 -0
- package/dist/modules/ai-agent/code-base-indexer.agent.js.map +1 -0
- package/dist/modules/ai-agent/codebase-scanner.d.ts +37 -0
- package/dist/modules/ai-agent/codebase-scanner.d.ts.map +1 -0
- package/dist/modules/ai-agent/codebase-scanner.js +260 -0
- package/dist/modules/ai-agent/codebase-scanner.js.map +1 -0
- package/dist/modules/ai-agent/model-loader.d.ts +7 -0
- package/dist/modules/ai-agent/model-loader.d.ts.map +1 -0
- package/dist/modules/ai-agent/model-loader.js +129 -0
- package/dist/modules/ai-agent/model-loader.js.map +1 -0
- package/dist/modules/ai-agent/orientation-loader.d.ts +2 -0
- package/dist/modules/ai-agent/orientation-loader.d.ts.map +1 -0
- package/dist/modules/ai-agent/orientation-loader.js +70 -0
- package/dist/modules/ai-agent/orientation-loader.js.map +1 -0
- package/dist/modules/ai-agent/pr-review-session.manager.d.ts +36 -0
- package/dist/modules/ai-agent/pr-review-session.manager.d.ts.map +1 -0
- package/dist/modules/ai-agent/pr-review-session.manager.js +106 -0
- package/dist/modules/ai-agent/pr-review-session.manager.js.map +1 -0
- package/dist/modules/ai-agent/pr-review.agent.d.ts +22 -0
- package/dist/modules/ai-agent/pr-review.agent.d.ts.map +1 -0
- package/dist/modules/ai-agent/pr-review.agent.js +269 -0
- package/dist/modules/ai-agent/pr-review.agent.js.map +1 -0
- package/dist/modules/ai-agent/research-loop.d.ts +3 -0
- package/dist/modules/ai-agent/research-loop.d.ts.map +1 -0
- package/dist/modules/ai-agent/research-loop.js +691 -0
- package/dist/modules/ai-agent/research-loop.js.map +1 -0
- package/dist/modules/ai-agent/review-pipeline/agent-loop.d.ts +36 -0
- package/dist/modules/ai-agent/review-pipeline/agent-loop.d.ts.map +1 -0
- package/dist/modules/ai-agent/review-pipeline/agent-loop.js +178 -0
- package/dist/modules/ai-agent/review-pipeline/agent-loop.js.map +1 -0
- package/dist/modules/ai-agent/review-pipeline/change-analyzer.d.ts +8 -0
- package/dist/modules/ai-agent/review-pipeline/change-analyzer.d.ts.map +1 -0
- package/dist/modules/ai-agent/review-pipeline/change-analyzer.js +93 -0
- package/dist/modules/ai-agent/review-pipeline/change-analyzer.js.map +1 -0
- package/dist/modules/ai-agent/review-pipeline/finding-ranker.d.ts +47 -0
- package/dist/modules/ai-agent/review-pipeline/finding-ranker.d.ts.map +1 -0
- package/dist/modules/ai-agent/review-pipeline/finding-ranker.js +91 -0
- package/dist/modules/ai-agent/review-pipeline/finding-ranker.js.map +1 -0
- package/dist/modules/ai-agent/review-pipeline/finding-verifier.d.ts +29 -0
- package/dist/modules/ai-agent/review-pipeline/finding-verifier.d.ts.map +1 -0
- package/dist/modules/ai-agent/review-pipeline/finding-verifier.js +130 -0
- package/dist/modules/ai-agent/review-pipeline/finding-verifier.js.map +1 -0
- package/dist/modules/ai-agent/review-pipeline/repository-explorer.d.ts +21 -0
- package/dist/modules/ai-agent/review-pipeline/repository-explorer.d.ts.map +1 -0
- package/dist/modules/ai-agent/review-pipeline/repository-explorer.js +247 -0
- package/dist/modules/ai-agent/review-pipeline/repository-explorer.js.map +1 -0
- package/dist/modules/ai-agent/review-pipeline/review-controller.d.ts +22 -0
- package/dist/modules/ai-agent/review-pipeline/review-controller.d.ts.map +1 -0
- package/dist/modules/ai-agent/review-pipeline/review-controller.js +102 -0
- package/dist/modules/ai-agent/review-pipeline/review-controller.js.map +1 -0
- package/dist/modules/ai-agent/review-pipeline/review-writer.d.ts +4 -0
- package/dist/modules/ai-agent/review-pipeline/review-writer.d.ts.map +1 -0
- package/dist/modules/ai-agent/review-pipeline/review-writer.js +52 -0
- package/dist/modules/ai-agent/review-pipeline/review-writer.js.map +1 -0
- package/dist/modules/ai-agent/review-pipeline/secret-scanner.d.ts +25 -0
- package/dist/modules/ai-agent/review-pipeline/secret-scanner.d.ts.map +1 -0
- package/dist/modules/ai-agent/review-pipeline/secret-scanner.js +159 -0
- package/dist/modules/ai-agent/review-pipeline/secret-scanner.js.map +1 -0
- package/dist/modules/ai-agent/review-pipeline/specialist-reviewer.d.ts +9 -0
- package/dist/modules/ai-agent/review-pipeline/specialist-reviewer.d.ts.map +1 -0
- package/dist/modules/ai-agent/review-pipeline/specialist-reviewer.js +114 -0
- package/dist/modules/ai-agent/review-pipeline/specialist-reviewer.js.map +1 -0
- package/dist/modules/ai-agent/review-pipeline/types.d.ts +53 -0
- package/dist/modules/ai-agent/review-pipeline/types.d.ts.map +1 -0
- package/dist/modules/ai-agent/review-pipeline/types.js +45 -0
- package/dist/modules/ai-agent/review-pipeline/types.js.map +1 -0
- package/dist/modules/ai-agent/tool-executor.d.ts +37 -0
- package/dist/modules/ai-agent/tool-executor.d.ts.map +1 -0
- package/dist/modules/ai-agent/tool-executor.js +199 -0
- package/dist/modules/ai-agent/tool-executor.js.map +1 -0
- package/dist/modules/ai-agent/tool-types.d.ts +72 -0
- package/dist/modules/ai-agent/tool-types.d.ts.map +1 -0
- package/dist/modules/ai-agent/tool-types.js +2 -0
- package/dist/modules/ai-agent/tool-types.js.map +1 -0
- package/dist/modules/ai-agent/tools/fs-tools.d.ts +54 -0
- package/dist/modules/ai-agent/tools/fs-tools.d.ts.map +1 -0
- package/dist/modules/ai-agent/tools/fs-tools.js +237 -0
- package/dist/modules/ai-agent/tools/fs-tools.js.map +1 -0
- package/dist/modules/ai-agent/tools/git-tools.d.ts +322 -0
- package/dist/modules/ai-agent/tools/git-tools.d.ts.map +1 -0
- package/dist/modules/ai-agent/tools/git-tools.js +557 -0
- package/dist/modules/ai-agent/tools/git-tools.js.map +1 -0
- package/dist/modules/ai-agent/tools/pr-chat-tools.d.ts +15 -0
- package/dist/modules/ai-agent/tools/pr-chat-tools.d.ts.map +1 -0
- package/dist/modules/ai-agent/tools/pr-chat-tools.js +232 -0
- package/dist/modules/ai-agent/tools/pr-chat-tools.js.map +1 -0
- package/dist/modules/database/database.module.d.ts +10 -0
- package/dist/modules/database/database.module.d.ts.map +1 -0
- package/dist/modules/database/database.module.js +36 -0
- package/dist/modules/database/database.module.js.map +1 -0
- package/dist/modules/database/vector-database.service.d.ts +27 -0
- package/dist/modules/database/vector-database.service.d.ts.map +1 -0
- package/dist/modules/database/vector-database.service.js +170 -0
- package/dist/modules/database/vector-database.service.js.map +1 -0
- package/dist/modules/github/github.module.d.ts +964 -0
- package/dist/modules/github/github.module.d.ts.map +1 -0
- package/dist/modules/github/github.module.js +316 -0
- package/dist/modules/github/github.module.js.map +1 -0
- package/dist/modules/main.module.d.ts +20 -0
- package/dist/modules/main.module.d.ts.map +1 -0
- package/dist/modules/main.module.js +59 -0
- package/dist/modules/main.module.js.map +1 -0
- package/dist/modules/qvac/qvac.module.d.ts +28 -0
- package/dist/modules/qvac/qvac.module.d.ts.map +1 -0
- package/dist/modules/qvac/qvac.module.js +146 -0
- package/dist/modules/qvac/qvac.module.js.map +1 -0
- package/dist/modules/server/dtos/create-project.dto.d.ts +9 -0
- package/dist/modules/server/dtos/create-project.dto.d.ts.map +1 -0
- package/dist/modules/server/dtos/create-project.dto.js +2 -0
- package/dist/modules/server/dtos/create-project.dto.js.map +1 -0
- package/dist/modules/server/entities/agent-task.entity.d.ts +16 -0
- package/dist/modules/server/entities/agent-task.entity.d.ts.map +1 -0
- package/dist/modules/server/entities/agent-task.entity.js +72 -0
- package/dist/modules/server/entities/agent-task.entity.js.map +1 -0
- package/dist/modules/server/entities/ai-provider.entity.d.ts +11 -0
- package/dist/modules/server/entities/ai-provider.entity.d.ts.map +1 -0
- package/dist/modules/server/entities/ai-provider.entity.js +47 -0
- package/dist/modules/server/entities/ai-provider.entity.js.map +1 -0
- package/dist/modules/server/entities/deployment-plan-approval.entity.d.ts +10 -0
- package/dist/modules/server/entities/deployment-plan-approval.entity.d.ts.map +1 -0
- package/dist/modules/server/entities/deployment-plan-approval.entity.js +42 -0
- package/dist/modules/server/entities/deployment-plan-approval.entity.js.map +1 -0
- package/dist/modules/server/entities/deployment-plan-artifact.entity.d.ts +10 -0
- package/dist/modules/server/entities/deployment-plan-artifact.entity.d.ts.map +1 -0
- package/dist/modules/server/entities/deployment-plan-artifact.entity.js +42 -0
- package/dist/modules/server/entities/deployment-plan-artifact.entity.js.map +1 -0
- package/dist/modules/server/entities/deployment-plan-feedback.entity.d.ts +9 -0
- package/dist/modules/server/entities/deployment-plan-feedback.entity.d.ts.map +1 -0
- package/dist/modules/server/entities/deployment-plan-feedback.entity.js +37 -0
- package/dist/modules/server/entities/deployment-plan-feedback.entity.js.map +1 -0
- package/dist/modules/server/entities/deployment-plan-revision.entity.d.ts +11 -0
- package/dist/modules/server/entities/deployment-plan-revision.entity.d.ts.map +1 -0
- package/dist/modules/server/entities/deployment-plan-revision.entity.js +47 -0
- package/dist/modules/server/entities/deployment-plan-revision.entity.js.map +1 -0
- package/dist/modules/server/entities/deployment-plan.entity.d.ts +13 -0
- package/dist/modules/server/entities/deployment-plan.entity.d.ts.map +1 -0
- package/dist/modules/server/entities/deployment-plan.entity.js +58 -0
- package/dist/modules/server/entities/deployment-plan.entity.js.map +1 -0
- package/dist/modules/server/entities/project.entity.d.ts +26 -0
- package/dist/modules/server/entities/project.entity.d.ts.map +1 -0
- package/dist/modules/server/entities/project.entity.js +122 -0
- package/dist/modules/server/entities/project.entity.js.map +1 -0
- package/dist/modules/server/entities/settings.entity.d.ts +12 -0
- package/dist/modules/server/entities/settings.entity.d.ts.map +1 -0
- package/dist/modules/server/entities/settings.entity.js +62 -0
- package/dist/modules/server/entities/settings.entity.js.map +1 -0
- package/dist/modules/server/entities/terminal-log.entity.d.ts +10 -0
- package/dist/modules/server/entities/terminal-log.entity.d.ts.map +1 -0
- package/dist/modules/server/entities/terminal-log.entity.js +42 -0
- package/dist/modules/server/entities/terminal-log.entity.js.map +1 -0
- package/dist/modules/server/middleware/auth.middleware.d.ts +8 -0
- package/dist/modules/server/middleware/auth.middleware.d.ts.map +1 -0
- package/dist/modules/server/middleware/auth.middleware.js +26 -0
- package/dist/modules/server/middleware/auth.middleware.js.map +1 -0
- package/dist/modules/server/routes/auth.routes.d.ts +13 -0
- package/dist/modules/server/routes/auth.routes.d.ts.map +1 -0
- package/dist/modules/server/routes/auth.routes.js +59 -0
- package/dist/modules/server/routes/auth.routes.js.map +1 -0
- package/dist/modules/server/routes/github.routes.d.ts +14 -0
- package/dist/modules/server/routes/github.routes.d.ts.map +1 -0
- package/dist/modules/server/routes/github.routes.js +124 -0
- package/dist/modules/server/routes/github.routes.js.map +1 -0
- package/dist/modules/server/routes/project.routes.d.ts +11 -0
- package/dist/modules/server/routes/project.routes.d.ts.map +1 -0
- package/dist/modules/server/routes/project.routes.js +78 -0
- package/dist/modules/server/routes/project.routes.js.map +1 -0
- package/dist/modules/server/routes/qvac.routes.d.ts +11 -0
- package/dist/modules/server/routes/qvac.routes.d.ts.map +1 -0
- package/dist/modules/server/routes/qvac.routes.js +24 -0
- package/dist/modules/server/routes/qvac.routes.js.map +1 -0
- package/dist/modules/server/routes/routes.d.ts +20 -0
- package/dist/modules/server/routes/routes.d.ts.map +1 -0
- package/dist/modules/server/routes/routes.js +35 -0
- package/dist/modules/server/routes/routes.js.map +1 -0
- package/dist/modules/server/routes/settings.controller.d.ts +14 -0
- package/dist/modules/server/routes/settings.controller.d.ts.map +1 -0
- package/dist/modules/server/routes/settings.controller.js +65 -0
- package/dist/modules/server/routes/settings.controller.js.map +1 -0
- package/dist/modules/server/server.module.d.ts +19 -0
- package/dist/modules/server/server.module.d.ts.map +1 -0
- package/dist/modules/server/server.module.js +63 -0
- package/dist/modules/server/server.module.js.map +1 -0
- package/dist/modules/server/services/auth.services.d.ts +19 -0
- package/dist/modules/server/services/auth.services.d.ts.map +1 -0
- package/dist/modules/server/services/auth.services.js +87 -0
- package/dist/modules/server/services/auth.services.js.map +1 -0
- package/dist/modules/server/services/deployment-plan.services.d.ts +6 -0
- package/dist/modules/server/services/deployment-plan.services.d.ts.map +1 -0
- package/dist/modules/server/services/deployment-plan.services.js +8 -0
- package/dist/modules/server/services/deployment-plan.services.js.map +1 -0
- package/dist/modules/server/services/github.services.d.ts +939 -0
- package/dist/modules/server/services/github.services.d.ts.map +1 -0
- package/dist/modules/server/services/github.services.js +46 -0
- package/dist/modules/server/services/github.services.js.map +1 -0
- package/dist/modules/server/services/project.services.d.ts +41 -0
- package/dist/modules/server/services/project.services.d.ts.map +1 -0
- package/dist/modules/server/services/project.services.js +360 -0
- package/dist/modules/server/services/project.services.js.map +1 -0
- package/dist/modules/server/services/qvac.services.d.ts +10 -0
- package/dist/modules/server/services/qvac.services.d.ts.map +1 -0
- package/dist/modules/server/services/qvac.services.js +58 -0
- package/dist/modules/server/services/qvac.services.js.map +1 -0
- package/dist/modules/server/services/settings.service.d.ts +60 -0
- package/dist/modules/server/services/settings.service.d.ts.map +1 -0
- package/dist/modules/server/services/settings.service.js +125 -0
- package/dist/modules/server/services/settings.service.js.map +1 -0
- package/dist/modules/socket-gateway/interfaces/project-creation-log.interface.d.ts +14 -0
- package/dist/modules/socket-gateway/interfaces/project-creation-log.interface.d.ts.map +1 -0
- package/dist/modules/socket-gateway/interfaces/project-creation-log.interface.js +2 -0
- package/dist/modules/socket-gateway/interfaces/project-creation-log.interface.js.map +1 -0
- package/dist/modules/socket-gateway/socket-gateway.module.d.ts +28 -0
- package/dist/modules/socket-gateway/socket-gateway.module.d.ts.map +1 -0
- package/dist/modules/socket-gateway/socket-gateway.module.js +92 -0
- package/dist/modules/socket-gateway/socket-gateway.module.js.map +1 -0
- package/package.json +95 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"github.services.d.ts","sourceRoot":"","sources":["../../../../src/modules/server/services/github.services.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
import {} from 'express';
|
|
2
|
+
import GithubModule from '../../github/github.module.js';
|
|
3
|
+
class GithubServices {
|
|
4
|
+
githubModule;
|
|
5
|
+
constructor(githubModule) {
|
|
6
|
+
this.githubModule = githubModule;
|
|
7
|
+
}
|
|
8
|
+
async getUserRepositories({ page = 1 }) {
|
|
9
|
+
return this.githubModule.listRepositories({ page });
|
|
10
|
+
}
|
|
11
|
+
async cloneRepository(req, res) {
|
|
12
|
+
try {
|
|
13
|
+
const { repository_name, repository_url } = req.body;
|
|
14
|
+
if (!repository_name || !repository_url) {
|
|
15
|
+
return res.status(400).json({ error: 'repository_name and repository_url are required' });
|
|
16
|
+
}
|
|
17
|
+
const data = await this.githubModule.cloneRepository({ repository_name, repository_url });
|
|
18
|
+
return res.json(data);
|
|
19
|
+
}
|
|
20
|
+
catch (error) {
|
|
21
|
+
console.error('Error cloning repository:', error);
|
|
22
|
+
return res.status(500).json({ error: error.message || 'Failed to clone repository' });
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
async searchRepository({ query, page = 1 }) {
|
|
26
|
+
return this.githubModule.searchRepository({ query, page });
|
|
27
|
+
}
|
|
28
|
+
async getUserByUser() {
|
|
29
|
+
return this.githubModule.getUserByUser();
|
|
30
|
+
}
|
|
31
|
+
async getPullRequests({ owner, repo }) {
|
|
32
|
+
return this.githubModule.getPullRequests({ owner, repo });
|
|
33
|
+
}
|
|
34
|
+
async getPRDiff({ owner, repo, pull_number, }) {
|
|
35
|
+
return this.githubModule.getPRDiff({ owner, repo, pull_number });
|
|
36
|
+
}
|
|
37
|
+
async getPRCommits({ owner, repo, pull_number, }) {
|
|
38
|
+
return this.githubModule.getPRCommits({ owner, repo, pull_number });
|
|
39
|
+
}
|
|
40
|
+
async submitPRReview(args) {
|
|
41
|
+
return this.githubModule.submitPRReview(args);
|
|
42
|
+
}
|
|
43
|
+
async handleOperation(_req, _res) { }
|
|
44
|
+
}
|
|
45
|
+
export default GithubServices;
|
|
46
|
+
//# sourceMappingURL=github.services.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"github.services.js","sourceRoot":"","sources":["../../../../src/modules/server/services/github.services.ts"],"names":[],"mappings":"AAAA,OAAO,EAA+B,MAAM,SAAS,CAAC;AACtD,OAAO,YAAY,MAAM,+BAA+B,CAAC;AAEzD,MAAM,cAAc;IAClB,YAAY,CAAe;IAE3B,YAAY,YAA0B;QACpC,IAAI,CAAC,YAAY,GAAG,YAAY,CAAC;IACnC,CAAC;IAED,KAAK,CAAC,mBAAmB,CAAC,EAAE,IAAI,GAAG,CAAC,EAAqB;QACvD,OAAO,IAAI,CAAC,YAAY,CAAC,gBAAgB,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC;IACtD,CAAC;IAED,KAAK,CAAC,eAAe,CAAC,GAAY,EAAE,GAAa;QAC/C,IAAI,CAAC;YACH,MAAM,EAAE,eAAe,EAAE,cAAc,EAAE,GAAG,GAAG,CAAC,IAAI,CAAC;YACrD,IAAI,CAAC,eAAe,IAAI,CAAC,cAAc,EAAE,CAAC;gBACxC,OAAO,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,iDAAiD,EAAE,CAAC,CAAC;YAC5F,CAAC;YACD,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,YAAY,CAAC,eAAe,CAAC,EAAE,eAAe,EAAE,cAAc,EAAE,CAAC,CAAC;YAC1F,OAAO,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACxB,CAAC;QAAC,OAAO,KAAU,EAAE,CAAC;YACpB,OAAO,CAAC,KAAK,CAAC,2BAA2B,EAAE,KAAK,CAAC,CAAC;YAClD,OAAO,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,KAAK,CAAC,OAAO,IAAI,4BAA4B,EAAE,CAAC,CAAC;QACxF,CAAC;IACH,CAAC;IAED,KAAK,CAAC,gBAAgB,CAAC,EAAE,KAAK,EAAE,IAAI,GAAG,CAAC,EAAoC;QAC1E,OAAO,IAAI,CAAC,YAAY,CAAC,gBAAgB,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;IAC7D,CAAC;IAED,KAAK,CAAC,aAAa;QACjB,OAAO,IAAI,CAAC,YAAY,CAAC,aAAa,EAAE,CAAC;IAC3C,CAAC;IAED,KAAK,CAAC,eAAe,CAAC,EAAE,KAAK,EAAE,IAAI,EAAmC;QACpE,OAAO,IAAI,CAAC,YAAY,CAAC,eAAe,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;IAC5D,CAAC;IAED,KAAK,CAAC,SAAS,CAAC,EACd,KAAK,EACL,IAAI,EACJ,WAAW,GAKZ;QACC,OAAO,IAAI,CAAC,YAAY,CAAC,SAAS,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,WAAW,EAAE,CAAC,CAAC;IACnE,CAAC;IAED,KAAK,CAAC,YAAY,CAAC,EACjB,KAAK,EACL,IAAI,EACJ,WAAW,GAKZ;QACC,OAAO,IAAI,CAAC,YAAY,CAAC,YAAY,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,WAAW,EAAE,CAAC,CAAC;IACtE,CAAC;IAED,KAAK,CAAC,cAAc,CAAC,IAOpB;QACC,OAAO,IAAI,CAAC,YAAY,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC;IAChD,CAAC;IAED,KAAK,CAAC,eAAe,CAAC,IAAS,EAAE,IAAS,IAAG,CAAC;CAC/C;AAED,eAAe,cAAc,CAAC"}
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
import { MainModule } from '../../main.module.js';
|
|
2
|
+
import { type Request, type Response } from 'express';
|
|
3
|
+
import ProjectEntity from '../entities/project.entity.js';
|
|
4
|
+
/**
|
|
5
|
+
* A project is review-ready once it has completed at least one indexing pass.
|
|
6
|
+
*
|
|
7
|
+
* `indexing_version` is only incremented by the indexer AFTER a full index has
|
|
8
|
+
* been built, so a value > 0 combined with a non-empty `analysis` manifest is
|
|
9
|
+
* the source of truth (a freshly-created project starts at 0).
|
|
10
|
+
*/
|
|
11
|
+
export declare function hasCompletedIndex(project: Pick<ProjectEntity, 'analysis' | 'indexing_version'>): boolean;
|
|
12
|
+
export declare class ProjectServices {
|
|
13
|
+
mainModule: MainModule;
|
|
14
|
+
readonly projectEntity: typeof ProjectEntity;
|
|
15
|
+
constructor(mainModule: MainModule);
|
|
16
|
+
/**
|
|
17
|
+
* Guards the review endpoints. Returns `null` when the project can be
|
|
18
|
+
* reviewed, or a structured 409 response explaining why it cannot:
|
|
19
|
+
*
|
|
20
|
+
* - code INDEX_REQUIRED + isIndexing=true → wait for the running index
|
|
21
|
+
* - code INDEX_REQUIRED + isIndexing=false → no index exists yet; create one
|
|
22
|
+
*
|
|
23
|
+
* The structured body lets the frontend react dynamically (unlock the review
|
|
24
|
+
* buttons as soon as the index completes) instead of just surfacing a string.
|
|
25
|
+
*/
|
|
26
|
+
private resolveReviewAccess;
|
|
27
|
+
createProject(req: Request, res: Response): Promise<Response<any, Record<string, any>>>;
|
|
28
|
+
getProjects(req: Request, res: Response): Promise<Response<any, Record<string, any>>>;
|
|
29
|
+
getProjectById(req: Request, res: Response): Promise<Response<any, Record<string, any>>>;
|
|
30
|
+
reindexProject(req: Request, res: Response): Promise<Response<any, Record<string, any>>>;
|
|
31
|
+
cancelIndexing(req: Request, res: Response): Promise<Response<any, Record<string, any>>>;
|
|
32
|
+
loadModels(req: Request, res: Response): Promise<Response<any, Record<string, any>>>;
|
|
33
|
+
unloadModels(req: Request, res: Response): Promise<Response<any, Record<string, any>>>;
|
|
34
|
+
startPRSession(req: Request, res: Response): Promise<Response<any, Record<string, any>>>;
|
|
35
|
+
stopPRSession(req: Request, res: Response): Promise<Response<any, Record<string, any>>>;
|
|
36
|
+
getReview(req: Request, res: Response): Promise<Response<any, Record<string, any>>>;
|
|
37
|
+
deleteReview(req: Request, res: Response): Promise<Response<any, Record<string, any>>>;
|
|
38
|
+
generateReview(req: Request, res: Response): Promise<Response<any, Record<string, any>>>;
|
|
39
|
+
deleteProject(req: Request, res: Response): Promise<Response<any, Record<string, any>>>;
|
|
40
|
+
}
|
|
41
|
+
//# sourceMappingURL=project.services.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"project.services.d.ts","sourceRoot":"","sources":["../../../../src/modules/server/services/project.services.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAClD,OAAO,EAAE,KAAK,OAAO,EAAE,KAAK,QAAQ,EAAE,MAAM,SAAS,CAAC;AACtD,OAAO,aAAa,MAAM,+BAA+B,CAAC;AAE1D;;;;;;GAMG;AACH,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,IAAI,CAAC,aAAa,EAAE,UAAU,GAAG,kBAAkB,CAAC,GAAG,OAAO,CAExG;AAED,qBAAa,eAAe;IAC1B,UAAU,EAAE,UAAU,CAAC;IACvB,QAAQ,CAAC,aAAa,uBAAiB;gBAE3B,UAAU,EAAE,UAAU;IAIlC;;;;;;;;;OASG;IACH,OAAO,CAAC,mBAAmB;IAuBrB,aAAa,CAAC,GAAG,EAAE,OAAO,EAAE,GAAG,EAAE,QAAQ;IA4CzC,WAAW,CAAC,GAAG,EAAE,OAAO,EAAE,GAAG,EAAE,QAAQ;IAYvC,cAAc,CAAC,GAAG,EAAE,OAAO,EAAE,GAAG,EAAE,QAAQ;IAgB1C,cAAc,CAAC,GAAG,EAAE,OAAO,EAAE,GAAG,EAAE,QAAQ;IAuB1C,cAAc,CAAC,GAAG,EAAE,OAAO,EAAE,GAAG,EAAE,QAAQ;IA6B1C,UAAU,CAAC,GAAG,EAAE,OAAO,EAAE,GAAG,EAAE,QAAQ;IAUtC,YAAY,CAAC,GAAG,EAAE,OAAO,EAAE,GAAG,EAAE,QAAQ;IAUxC,cAAc,CAAC,GAAG,EAAE,OAAO,EAAE,GAAG,EAAE,QAAQ;IA6C1C,aAAa,CAAC,GAAG,EAAE,OAAO,EAAE,GAAG,EAAE,QAAQ;IAyBzC,SAAS,CAAC,GAAG,EAAE,OAAO,EAAE,GAAG,EAAE,QAAQ;IAiBrC,YAAY,CAAC,GAAG,EAAE,OAAO,EAAE,GAAG,EAAE,QAAQ;IAqBxC,cAAc,CAAC,GAAG,EAAE,OAAO,EAAE,GAAG,EAAE,QAAQ;IA4E1C,aAAa,CAAC,GAAG,EAAE,OAAO,EAAE,GAAG,EAAE,QAAQ;CAoBhD"}
|
|
@@ -0,0 +1,360 @@
|
|
|
1
|
+
import { MainModule } from '../../main.module.js';
|
|
2
|
+
import {} from 'express';
|
|
3
|
+
import ProjectEntity from '../entities/project.entity.js';
|
|
4
|
+
/**
|
|
5
|
+
* A project is review-ready once it has completed at least one indexing pass.
|
|
6
|
+
*
|
|
7
|
+
* `indexing_version` is only incremented by the indexer AFTER a full index has
|
|
8
|
+
* been built, so a value > 0 combined with a non-empty `analysis` manifest is
|
|
9
|
+
* the source of truth (a freshly-created project starts at 0).
|
|
10
|
+
*/
|
|
11
|
+
export function hasCompletedIndex(project) {
|
|
12
|
+
return Boolean(project?.analysis) && (project.indexing_version || 0) > 0;
|
|
13
|
+
}
|
|
14
|
+
export class ProjectServices {
|
|
15
|
+
mainModule;
|
|
16
|
+
projectEntity = ProjectEntity;
|
|
17
|
+
constructor(mainModule) {
|
|
18
|
+
this.mainModule = mainModule;
|
|
19
|
+
}
|
|
20
|
+
/**
|
|
21
|
+
* Guards the review endpoints. Returns `null` when the project can be
|
|
22
|
+
* reviewed, or a structured 409 response explaining why it cannot:
|
|
23
|
+
*
|
|
24
|
+
* - code INDEX_REQUIRED + isIndexing=true → wait for the running index
|
|
25
|
+
* - code INDEX_REQUIRED + isIndexing=false → no index exists yet; create one
|
|
26
|
+
*
|
|
27
|
+
* The structured body lets the frontend react dynamically (unlock the review
|
|
28
|
+
* buttons as soon as the index completes) instead of just surfacing a string.
|
|
29
|
+
*/
|
|
30
|
+
resolveReviewAccess(project) {
|
|
31
|
+
if (hasCompletedIndex(project)) {
|
|
32
|
+
return null;
|
|
33
|
+
}
|
|
34
|
+
const isIndexing = project.current_task === 'indexing';
|
|
35
|
+
return {
|
|
36
|
+
status: 409,
|
|
37
|
+
body: {
|
|
38
|
+
error: isIndexing
|
|
39
|
+
? 'This repository is still being indexed. Please wait for indexing to finish before accessing the review.'
|
|
40
|
+
: 'This repository has not been indexed yet. Please run an initial index before accessing the review.',
|
|
41
|
+
code: 'INDEX_REQUIRED',
|
|
42
|
+
isIndexing,
|
|
43
|
+
isIndexed: false,
|
|
44
|
+
indexingVersion: project.indexing_version || 0,
|
|
45
|
+
},
|
|
46
|
+
};
|
|
47
|
+
}
|
|
48
|
+
async createProject(req, res) {
|
|
49
|
+
try {
|
|
50
|
+
const { repository_name, repository_url } = req.body;
|
|
51
|
+
if (!repository_name || !repository_url) {
|
|
52
|
+
return res.status(400).json({ error: 'repository_name and repository_url are required' });
|
|
53
|
+
}
|
|
54
|
+
// Clone the repository
|
|
55
|
+
const repositoryPath = await this.mainModule.github.cloneRepository({
|
|
56
|
+
repository_name,
|
|
57
|
+
repository_url,
|
|
58
|
+
});
|
|
59
|
+
// Save project to SQLite DB
|
|
60
|
+
const project = new this.projectEntity();
|
|
61
|
+
project.name = repository_name;
|
|
62
|
+
project.repository_url = repository_url;
|
|
63
|
+
project.repository_path = repositoryPath.repository_path;
|
|
64
|
+
project.repositorySecrets = {};
|
|
65
|
+
project.created_at = new Date();
|
|
66
|
+
project.updated_at = new Date();
|
|
67
|
+
await project.save();
|
|
68
|
+
// Trigger background indexing
|
|
69
|
+
this.mainModule.aiAgent.service.analyzeAndIndexProject(project.id).catch((error) => {
|
|
70
|
+
console.error('Background indexing failed:', error);
|
|
71
|
+
});
|
|
72
|
+
return res.json({
|
|
73
|
+
message: 'Project created successfully',
|
|
74
|
+
data: {
|
|
75
|
+
project_id: project.id,
|
|
76
|
+
...repositoryPath,
|
|
77
|
+
},
|
|
78
|
+
});
|
|
79
|
+
}
|
|
80
|
+
catch (error) {
|
|
81
|
+
console.error('Failed to create project:', error);
|
|
82
|
+
return res
|
|
83
|
+
.status(500)
|
|
84
|
+
.json({ message: 'Failed to create project', error: error.message || error });
|
|
85
|
+
}
|
|
86
|
+
}
|
|
87
|
+
async getProjects(req, res) {
|
|
88
|
+
try {
|
|
89
|
+
const projects = await this.projectEntity.find({ order: { updated_at: 'DESC' } });
|
|
90
|
+
return res.json({ data: projects });
|
|
91
|
+
}
|
|
92
|
+
catch (error) {
|
|
93
|
+
console.error('Failed to fetch projects:', error);
|
|
94
|
+
return res
|
|
95
|
+
.status(500)
|
|
96
|
+
.json({ message: 'Failed to fetch projects', error: error.message || error });
|
|
97
|
+
}
|
|
98
|
+
}
|
|
99
|
+
async getProjectById(req, res) {
|
|
100
|
+
try {
|
|
101
|
+
const id = req.params.id;
|
|
102
|
+
const project = await this.projectEntity.findOne({ where: { id } });
|
|
103
|
+
if (!project) {
|
|
104
|
+
return res.status(404).json({ message: 'Project not found' });
|
|
105
|
+
}
|
|
106
|
+
return res.json({ data: project });
|
|
107
|
+
}
|
|
108
|
+
catch (error) {
|
|
109
|
+
console.error('Failed to fetch project:', error);
|
|
110
|
+
return res
|
|
111
|
+
.status(500)
|
|
112
|
+
.json({ message: 'Failed to fetch project', error: error.message || error });
|
|
113
|
+
}
|
|
114
|
+
}
|
|
115
|
+
async reindexProject(req, res) {
|
|
116
|
+
try {
|
|
117
|
+
const id = req.params.id;
|
|
118
|
+
const project = await this.projectEntity.findOne({ where: { id } });
|
|
119
|
+
if (!project) {
|
|
120
|
+
return res.status(404).json({ message: 'Project not found' });
|
|
121
|
+
}
|
|
122
|
+
// Trigger background indexing
|
|
123
|
+
this.mainModule.aiAgent.service.analyzeAndIndexProject(project.id).catch((error) => {
|
|
124
|
+
console.error('Background re-indexing failed:', error);
|
|
125
|
+
});
|
|
126
|
+
return res.json({ message: 'Re-indexing started successfully' });
|
|
127
|
+
}
|
|
128
|
+
catch (error) {
|
|
129
|
+
console.error('Failed to start re-indexing:', error);
|
|
130
|
+
return res
|
|
131
|
+
.status(500)
|
|
132
|
+
.json({ message: 'Failed to start re-indexing', error: error.message || error });
|
|
133
|
+
}
|
|
134
|
+
}
|
|
135
|
+
async cancelIndexing(req, res) {
|
|
136
|
+
try {
|
|
137
|
+
const id = req.params.id;
|
|
138
|
+
const wasCancelled = this.mainModule.aiAgent.cancelIndexing(id);
|
|
139
|
+
// Resilient fallback: Force reset database state just in case it is stuck in sqlite
|
|
140
|
+
const project = await ProjectEntity.findOne({ where: { id } });
|
|
141
|
+
let dbUnlocked = false;
|
|
142
|
+
if (project && project.current_task === 'indexing') {
|
|
143
|
+
project.current_task = null;
|
|
144
|
+
await project.save();
|
|
145
|
+
dbUnlocked = true;
|
|
146
|
+
}
|
|
147
|
+
if (!wasCancelled) {
|
|
148
|
+
if (dbUnlocked) {
|
|
149
|
+
return res.json({ message: 'Indexing state force-reset and unlocked successfully' });
|
|
150
|
+
}
|
|
151
|
+
return res.status(404).json({ message: 'No active indexing found for this project' });
|
|
152
|
+
}
|
|
153
|
+
return res.json({ message: 'Indexing cancelled successfully' });
|
|
154
|
+
}
|
|
155
|
+
catch (error) {
|
|
156
|
+
console.error('Failed to cancel indexing:', error);
|
|
157
|
+
return res
|
|
158
|
+
.status(500)
|
|
159
|
+
.json({ message: 'Failed to cancel indexing', error: error.message || error });
|
|
160
|
+
}
|
|
161
|
+
}
|
|
162
|
+
async loadModels(req, res) {
|
|
163
|
+
try {
|
|
164
|
+
await this.mainModule.aiAgent.prReviewAgent.loadModels();
|
|
165
|
+
return res.status(200).json({ message: 'Model loaded successfully' });
|
|
166
|
+
}
|
|
167
|
+
catch (err) {
|
|
168
|
+
console.error('Failed to load models:', err);
|
|
169
|
+
return res.status(500).json({ error: 'Failed to load models' });
|
|
170
|
+
}
|
|
171
|
+
}
|
|
172
|
+
async unloadModels(req, res) {
|
|
173
|
+
try {
|
|
174
|
+
await this.mainModule.aiAgent.prReviewAgent.unloadModels();
|
|
175
|
+
return res.json({ message: 'Models unloaded successfully' });
|
|
176
|
+
}
|
|
177
|
+
catch (error) {
|
|
178
|
+
console.error('Failed to unload models:', error);
|
|
179
|
+
return res.status(500).json({ error: error.message || 'Failed to unload models' });
|
|
180
|
+
}
|
|
181
|
+
}
|
|
182
|
+
async startPRSession(req, res) {
|
|
183
|
+
try {
|
|
184
|
+
const projectId = req.params.id;
|
|
185
|
+
const pullNumber = Number(req.params.pull_number);
|
|
186
|
+
const { prDiff } = req.body;
|
|
187
|
+
if (!prDiff) {
|
|
188
|
+
return res.status(400).json({ error: 'prDiff is required' });
|
|
189
|
+
}
|
|
190
|
+
if (!Number.isFinite(pullNumber)) {
|
|
191
|
+
return res.status(400).json({ error: 'pull_number must be a valid number' });
|
|
192
|
+
}
|
|
193
|
+
const project = await ProjectEntity.findOne({ where: { id: projectId } });
|
|
194
|
+
if (!project) {
|
|
195
|
+
return res.status(404).json({ message: 'Project not found' });
|
|
196
|
+
}
|
|
197
|
+
// Require the project to have been indexed at least once before starting
|
|
198
|
+
// a review session. Fails with a structured 409 when the index is missing
|
|
199
|
+
// or still building so the UI can react dynamically.
|
|
200
|
+
const access = this.resolveReviewAccess(project);
|
|
201
|
+
if (access) {
|
|
202
|
+
return res.status(access.status).json(access.body);
|
|
203
|
+
}
|
|
204
|
+
await this.mainModule.aiAgent.sessionManager.startSession(projectId, pullNumber, prDiff, (message) => {
|
|
205
|
+
if (this.mainModule.socket) {
|
|
206
|
+
this.mainModule.socket.emitModelProgress({ projectId, pullNumber, message });
|
|
207
|
+
}
|
|
208
|
+
});
|
|
209
|
+
return res.status(200).json({ message: 'PR review session started successfully' });
|
|
210
|
+
}
|
|
211
|
+
catch (error) {
|
|
212
|
+
console.error('Failed to start PR session:', error);
|
|
213
|
+
return res.status(500).json({ error: error.message || 'Failed to start PR session' });
|
|
214
|
+
}
|
|
215
|
+
}
|
|
216
|
+
async stopPRSession(req, res) {
|
|
217
|
+
try {
|
|
218
|
+
const projectId = req.params.id;
|
|
219
|
+
const pullNumber = Number(req.params.pull_number);
|
|
220
|
+
if (!Number.isFinite(pullNumber)) {
|
|
221
|
+
return res.status(400).json({ error: 'pull_number must be a valid number' });
|
|
222
|
+
}
|
|
223
|
+
const stopped = this.mainModule.aiAgent.sessionManager.stopSession(projectId, pullNumber);
|
|
224
|
+
if (stopped) {
|
|
225
|
+
// Models are intentionally kept loaded in memory after a session ends to
|
|
226
|
+
// avoid a massive delay when opening the next PR review screen.
|
|
227
|
+
}
|
|
228
|
+
return res.json({
|
|
229
|
+
message: stopped ? 'PR review session stopped successfully' : 'No active session found',
|
|
230
|
+
});
|
|
231
|
+
}
|
|
232
|
+
catch (error) {
|
|
233
|
+
console.error('Failed to stop PR session:', error);
|
|
234
|
+
return res.status(500).json({ error: error.message || 'Failed to stop PR session' });
|
|
235
|
+
}
|
|
236
|
+
}
|
|
237
|
+
async getReview(req, res) {
|
|
238
|
+
try {
|
|
239
|
+
const id = req.params.id;
|
|
240
|
+
const pull_number = req.params.pull_number;
|
|
241
|
+
const project = await ProjectEntity.findOne({ where: { id } });
|
|
242
|
+
if (!project)
|
|
243
|
+
return res.status(404).json({ message: 'Project not found' });
|
|
244
|
+
const prReviews = project.pr_reviews || {};
|
|
245
|
+
const reviewState = prReviews[pull_number] || { status: 'idle' };
|
|
246
|
+
return res.json({ data: reviewState });
|
|
247
|
+
}
|
|
248
|
+
catch (error) {
|
|
249
|
+
console.error('Failed to fetch review:', error);
|
|
250
|
+
return res.status(500).json({ error: error.message || 'Failed to fetch review' });
|
|
251
|
+
}
|
|
252
|
+
}
|
|
253
|
+
async deleteReview(req, res) {
|
|
254
|
+
try {
|
|
255
|
+
const id = req.params.id;
|
|
256
|
+
const pull_number = req.params.pull_number;
|
|
257
|
+
const project = await ProjectEntity.findOne({ where: { id } });
|
|
258
|
+
if (!project)
|
|
259
|
+
return res.status(404).json({ message: 'Project not found' });
|
|
260
|
+
const prReviews = { ...(project.pr_reviews || {}) };
|
|
261
|
+
if (prReviews[pull_number]) {
|
|
262
|
+
delete prReviews[pull_number];
|
|
263
|
+
project.pr_reviews = prReviews;
|
|
264
|
+
await project.save();
|
|
265
|
+
}
|
|
266
|
+
return res.json({ message: 'Review session deleted successfully' });
|
|
267
|
+
}
|
|
268
|
+
catch (error) {
|
|
269
|
+
console.error('Failed to delete review session:', error);
|
|
270
|
+
return res.status(500).json({ error: error.message || 'Failed to delete review session' });
|
|
271
|
+
}
|
|
272
|
+
}
|
|
273
|
+
async generateReview(req, res) {
|
|
274
|
+
try {
|
|
275
|
+
const projectId = req.params.id;
|
|
276
|
+
const { prDiff, prTitle, prBody, prNumber } = req.body;
|
|
277
|
+
if (!prDiff)
|
|
278
|
+
return res.status(400).json({ error: 'prDiff is required' });
|
|
279
|
+
if (!prNumber)
|
|
280
|
+
return res.status(400).json({ error: 'prNumber is required' });
|
|
281
|
+
const project = await ProjectEntity.findOne({ where: { id: projectId } });
|
|
282
|
+
if (!project)
|
|
283
|
+
return res.status(404).json({ message: 'Project not found' });
|
|
284
|
+
// Same dynamic index gate as startPRSession: no completed index → 409
|
|
285
|
+
// with a structured body telling the UI whether to wait or to index first.
|
|
286
|
+
const access = this.resolveReviewAccess(project);
|
|
287
|
+
if (access) {
|
|
288
|
+
return res.status(access.status).json(access.body);
|
|
289
|
+
}
|
|
290
|
+
// Initialize state to running
|
|
291
|
+
const prReviews = { ...(project.pr_reviews || {}) };
|
|
292
|
+
prReviews[prNumber] = { status: 'running' };
|
|
293
|
+
project.pr_reviews = prReviews;
|
|
294
|
+
await project.save();
|
|
295
|
+
console.log('PR Review Details : ', { projectId, prTitle, prBody, prNumber });
|
|
296
|
+
// Fire off in background
|
|
297
|
+
this.mainModule.aiAgent.prReviewAgent
|
|
298
|
+
.generatePRReview(projectId, prDiff, prTitle || 'Untitled PR', prBody || '', Number(prNumber))
|
|
299
|
+
.then(async (review) => {
|
|
300
|
+
// Re-fetch project to avoid race conditions with other updates
|
|
301
|
+
const p = await ProjectEntity.findOne({ where: { id: projectId } });
|
|
302
|
+
if (p) {
|
|
303
|
+
const currentReviews = { ...(p.pr_reviews || {}) };
|
|
304
|
+
currentReviews[prNumber] = { status: 'success', review };
|
|
305
|
+
p.pr_reviews = currentReviews;
|
|
306
|
+
await p.save();
|
|
307
|
+
}
|
|
308
|
+
if (this.mainModule.socket) {
|
|
309
|
+
this.mainModule.socket.emitReviewProgress({
|
|
310
|
+
projectId,
|
|
311
|
+
status: 'success',
|
|
312
|
+
review,
|
|
313
|
+
});
|
|
314
|
+
}
|
|
315
|
+
})
|
|
316
|
+
.catch(async (err) => {
|
|
317
|
+
console.error('Review generation failed:', err);
|
|
318
|
+
const p = await ProjectEntity.findOne({ where: { id: projectId } });
|
|
319
|
+
if (p) {
|
|
320
|
+
const currentReviews = { ...(p.pr_reviews || {}) };
|
|
321
|
+
currentReviews[prNumber] = { status: 'error', message: err.message };
|
|
322
|
+
p.pr_reviews = currentReviews;
|
|
323
|
+
await p.save();
|
|
324
|
+
}
|
|
325
|
+
if (this.mainModule.socket) {
|
|
326
|
+
this.mainModule.socket.emitReviewProgress({
|
|
327
|
+
projectId,
|
|
328
|
+
status: 'error',
|
|
329
|
+
message: err.message,
|
|
330
|
+
});
|
|
331
|
+
}
|
|
332
|
+
});
|
|
333
|
+
return res.status(202).json({ message: 'Review generation started' });
|
|
334
|
+
}
|
|
335
|
+
catch (error) {
|
|
336
|
+
console.error('Failed to start review:', error);
|
|
337
|
+
return res.status(500).json({ error: error.message || 'Failed to start review' });
|
|
338
|
+
}
|
|
339
|
+
}
|
|
340
|
+
async deleteProject(req, res) {
|
|
341
|
+
try {
|
|
342
|
+
const id = req.params.id;
|
|
343
|
+
if (!id)
|
|
344
|
+
return res.status(400).json({ error: 'Project ID is required' });
|
|
345
|
+
const project = await ProjectEntity.findOne({ where: { id } });
|
|
346
|
+
if (!project)
|
|
347
|
+
return res.status(404).json({ message: 'Project not found' });
|
|
348
|
+
// Delete vector facts
|
|
349
|
+
this.mainModule.database.vectorDatabase.deleteProjectFacts(id);
|
|
350
|
+
// Finally delete the project itself
|
|
351
|
+
await ProjectEntity.delete({ id });
|
|
352
|
+
return res.status(200).json({ message: 'Project successfully deleted' });
|
|
353
|
+
}
|
|
354
|
+
catch (error) {
|
|
355
|
+
console.error('Failed to delete project:', error);
|
|
356
|
+
return res.status(500).json({ error: error.message || 'Failed to delete project' });
|
|
357
|
+
}
|
|
358
|
+
}
|
|
359
|
+
}
|
|
360
|
+
//# sourceMappingURL=project.services.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"project.services.js","sourceRoot":"","sources":["../../../../src/modules/server/services/project.services.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import type { Request, Response } from 'express';
|
|
2
|
+
import { MainModule } from '../../main.module.js';
|
|
3
|
+
export declare class QvacServices {
|
|
4
|
+
mainModule: MainModule;
|
|
5
|
+
constructor(mainModule: MainModule);
|
|
6
|
+
getAvailableModels(req: Request, res: Response): Promise<Response<any, Record<string, any>>>;
|
|
7
|
+
downloadModel(req: Request, res: Response): Promise<Response<any, Record<string, any>>>;
|
|
8
|
+
deleteModel(req: Request, res: Response): Promise<Response<any, Record<string, any>>>;
|
|
9
|
+
}
|
|
10
|
+
//# sourceMappingURL=qvac.services.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"qvac.services.d.ts","sourceRoot":"","sources":["../../../../src/modules/server/services/qvac.services.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AACjD,OAAO,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAElD,qBAAa,YAAY;IACvB,UAAU,EAAE,UAAU,CAAC;gBAEX,UAAU,EAAE,UAAU;IAI5B,kBAAkB,CAAC,GAAG,EAAE,OAAO,EAAE,GAAG,EAAE,QAAQ;IAa9C,aAAa,CAAC,GAAG,EAAE,OAAO,EAAE,GAAG,EAAE,QAAQ;IAsBzC,WAAW,CAAC,GAAG,EAAE,OAAO,EAAE,GAAG,EAAE,QAAQ;CAiB9C"}
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
import { MainModule } from '../../main.module.js';
|
|
2
|
+
export class QvacServices {
|
|
3
|
+
mainModule;
|
|
4
|
+
constructor(mainModule) {
|
|
5
|
+
this.mainModule = mainModule;
|
|
6
|
+
}
|
|
7
|
+
async getAvailableModels(req, res) {
|
|
8
|
+
try {
|
|
9
|
+
if (!this.mainModule.qvac) {
|
|
10
|
+
return res.status(500).json({ error: 'Qvac module not initialized' });
|
|
11
|
+
}
|
|
12
|
+
const models = await this.mainModule.qvac.getAvailableModels();
|
|
13
|
+
return res.status(200).json({ data: models });
|
|
14
|
+
}
|
|
15
|
+
catch (error) {
|
|
16
|
+
console.error('Error fetching QVAC models:', error);
|
|
17
|
+
return res.status(500).json({ error: error.message });
|
|
18
|
+
}
|
|
19
|
+
}
|
|
20
|
+
async downloadModel(req, res) {
|
|
21
|
+
try {
|
|
22
|
+
const { modelId, socketId } = req.body;
|
|
23
|
+
if (!modelId) {
|
|
24
|
+
return res.status(400).json({ error: 'modelId is required' });
|
|
25
|
+
}
|
|
26
|
+
if (!this.mainModule.qvac) {
|
|
27
|
+
return res.status(500).json({ error: 'Qvac module not initialized' });
|
|
28
|
+
}
|
|
29
|
+
// We do not await this so it runs in background and streams via socket
|
|
30
|
+
this.mainModule.qvac.downloadModel(modelId, socketId).catch((error) => {
|
|
31
|
+
console.error(`Error downloading model ${modelId}:`, error);
|
|
32
|
+
});
|
|
33
|
+
return res.status(202).json({ message: 'Download started' });
|
|
34
|
+
}
|
|
35
|
+
catch (error) {
|
|
36
|
+
console.error('Error starting model download:', error);
|
|
37
|
+
return res.status(500).json({ error: error.message });
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
async deleteModel(req, res) {
|
|
41
|
+
try {
|
|
42
|
+
const { id: modelId } = req.params;
|
|
43
|
+
if (!modelId) {
|
|
44
|
+
return res.status(400).json({ error: 'modelId is required' });
|
|
45
|
+
}
|
|
46
|
+
if (!this.mainModule.qvac) {
|
|
47
|
+
return res.status(500).json({ error: 'Qvac module not initialized' });
|
|
48
|
+
}
|
|
49
|
+
await this.mainModule.qvac.deleteModel(modelId);
|
|
50
|
+
return res.status(200).json({ message: 'Model deleted successfully' });
|
|
51
|
+
}
|
|
52
|
+
catch (error) {
|
|
53
|
+
console.error('Error deleting model:', error);
|
|
54
|
+
return res.status(500).json({ error: error.message });
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
//# sourceMappingURL=qvac.services.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"qvac.services.js","sourceRoot":"","sources":["../../../../src/modules/server/services/qvac.services.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
import { DataSource } from 'typeorm';
|
|
2
|
+
import SettingsEntity from '../entities/settings.entity.js';
|
|
3
|
+
import type { MainModule } from '../../main.module.js';
|
|
4
|
+
export declare class SettingsService {
|
|
5
|
+
private dataSource;
|
|
6
|
+
private mainModule?;
|
|
7
|
+
private repository;
|
|
8
|
+
constructor(dataSource: DataSource, mainModule?: MainModule | undefined);
|
|
9
|
+
getSettings(): Promise<SettingsEntity>;
|
|
10
|
+
getHardwareInfo(): Promise<{
|
|
11
|
+
cpuCores: number;
|
|
12
|
+
totalRamGb: number;
|
|
13
|
+
availableRamGb: number;
|
|
14
|
+
gpuRamGb: number;
|
|
15
|
+
}>;
|
|
16
|
+
getModelInfo(): Promise<{
|
|
17
|
+
llmModel: {
|
|
18
|
+
id: string;
|
|
19
|
+
name: string;
|
|
20
|
+
requiredRamGb: number;
|
|
21
|
+
expectedSize: number;
|
|
22
|
+
actualSize: number;
|
|
23
|
+
isLoaded: boolean;
|
|
24
|
+
isCompatible: boolean;
|
|
25
|
+
} | null;
|
|
26
|
+
embeddingModel: {
|
|
27
|
+
id: string;
|
|
28
|
+
name: string;
|
|
29
|
+
requiredRamGb: number;
|
|
30
|
+
expectedSize: number;
|
|
31
|
+
actualSize: number;
|
|
32
|
+
isLoaded: boolean;
|
|
33
|
+
isCompatible: boolean;
|
|
34
|
+
} | null;
|
|
35
|
+
totalModelSize: number;
|
|
36
|
+
models: {
|
|
37
|
+
isCompatible: boolean;
|
|
38
|
+
totalMemGb: number;
|
|
39
|
+
isCached: boolean;
|
|
40
|
+
expectedSize: number;
|
|
41
|
+
actualSize: number;
|
|
42
|
+
isLoaded: boolean;
|
|
43
|
+
id: string;
|
|
44
|
+
name: string;
|
|
45
|
+
requiredRamGb: number;
|
|
46
|
+
}[];
|
|
47
|
+
}>;
|
|
48
|
+
getStorageInfo(): Promise<{
|
|
49
|
+
storageUsedGb: number;
|
|
50
|
+
storageTotalGb: number;
|
|
51
|
+
contextSizeLimit: number;
|
|
52
|
+
totalModelSize: number;
|
|
53
|
+
sqliteDbSize: number;
|
|
54
|
+
applicationStorageBytes: number;
|
|
55
|
+
}>;
|
|
56
|
+
updateSettings(data: {
|
|
57
|
+
useExperimentalGpu?: boolean;
|
|
58
|
+
}): Promise<SettingsEntity>;
|
|
59
|
+
}
|
|
60
|
+
//# sourceMappingURL=settings.service.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"settings.service.d.ts","sourceRoot":"","sources":["../../../../src/modules/server/services/settings.service.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAc,MAAM,SAAS,CAAC;AAKjD,OAAO,cAAc,MAAM,gCAAgC,CAAC;AAC5D,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAGvD,qBAAa,eAAe;IAIxB,OAAO,CAAC,UAAU;IAClB,OAAO,CAAC,UAAU,CAAC;IAJrB,OAAO,CAAC,UAAU,CAA6B;gBAGrC,UAAU,EAAE,UAAU,EACtB,UAAU,CAAC,EAAE,UAAU,YAAA;IAK3B,WAAW,IAAI,OAAO,CAAC,cAAc,CAAC;IAStC,eAAe;;;;;;IA4Bf,YAAY;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;IA8CZ,cAAc;;;;;;;;IA+Bd,cAAc,CAAC,IAAI,EAAE;QAAE,kBAAkB,CAAC,EAAE,OAAO,CAAA;KAAE,GAAG,OAAO,CAAC,cAAc,CAAC;CAOtF"}
|