@djibrilm/lazy-review 0.0.2 → 0.0.4
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/README.md +91 -59
- package/dist/modules/database/database.module.d.ts.map +1 -1
- package/dist/modules/database/database.module.js +2 -1
- package/dist/modules/database/database.module.js.map +1 -1
- package/dist/modules/database/vector-database.service.d.ts.map +1 -1
- package/dist/modules/database/vector-database.service.js +2 -1
- package/dist/modules/database/vector-database.service.js.map +1 -1
- package/dist/modules/server/server.module.d.ts.map +1 -1
- package/dist/modules/server/server.module.js +4 -1
- package/dist/modules/server/server.module.js.map +1 -1
- package/dist/modules/server/services/settings.service.d.ts.map +1 -1
- package/dist/modules/server/services/settings.service.js +2 -1
- package/dist/modules/server/services/settings.service.js.map +1 -1
- package/dist/paths.d.ts +3 -0
- package/dist/paths.d.ts.map +1 -0
- package/dist/paths.js +9 -0
- package/dist/paths.js.map +1 -0
- package/package.json +3 -2
package/README.md
CHANGED
|
@@ -1,43 +1,92 @@
|
|
|
1
1
|
<p align="center">
|
|
2
|
-
<img src="
|
|
2
|
+
<img src="https://github.com/DjibrilM/lazy-review/raw/develop/frontend/public/resources/images/logo.png" width="200" alt="Lazy Review Logo">
|
|
3
3
|
</p>
|
|
4
4
|
|
|
5
|
-
# Lazy Review
|
|
5
|
+
# Lazy Review — PR Review Assistant
|
|
6
6
|
|
|
7
|
-
A
|
|
7
|
+
A CLI tool that reviews GitHub pull requests using local AI models. Point it at a repository, select a PR, and it posts a structured review comment back to GitHub — no cloud inference, no API keys beyond GitHub OAuth.
|
|
8
8
|
|
|
9
|
-
|
|
9
|
+
## Installation
|
|
10
10
|
|
|
11
|
-
|
|
11
|
+
Lazy Review relies on several native C++ modules (like `better-sqlite3` and `tree-sitter`) for fast local vector search and code parsing. Because of this, **we strongly recommend using `npm`** for the global installation.
|
|
12
12
|
|
|
13
|
-
|
|
13
|
+
```bash
|
|
14
|
+
npm install -g @djibrilm/lazy-review
|
|
15
|
+
lrv run
|
|
16
|
+
```
|
|
17
|
+
|
|
18
|
+
This will start the local server on `http://localhost:16500`.
|
|
19
|
+
|
|
20
|
+
### Troubleshooting Installation Errors
|
|
21
|
+
|
|
22
|
+
If you encounter an error like `Error: Could not locate the bindings file`, it means the native dependencies failed to compile or download during installation.
|
|
23
|
+
|
|
24
|
+
**1. Using `pnpm` or `yarn`**
|
|
25
|
+
These block build scripts by default, preventing C++ binaries from downloading.
|
|
26
|
+
|
|
27
|
+
- **For pnpm:** Run `pnpm approve-builds -g`. Use the `Space` bar to select the blocked packages, then press `Enter`.
|
|
28
|
+
- **For yarn:** Add `enableScripts: true` to your `.yarnrc.yml` before installing.
|
|
29
|
+
_(Alternatively, just install via `npm` instead)._
|
|
30
|
+
|
|
31
|
+
**2. Missing Build Tools**
|
|
32
|
+
If you are on a very new or uncommon version of Node.js (e.g. Node 26), prebuilt binaries may not exist yet, forcing the modules to compile from source. If this fails, ensure you have C++ build tools installed:
|
|
33
|
+
|
|
34
|
+
- **macOS:** Run `xcode-select --install`
|
|
35
|
+
- **Linux:** Run `sudo apt-get install build-essential python3`
|
|
36
|
+
- **Windows:** Run `npm install --global windows-build-tools`
|
|
37
|
+
|
|
38
|
+
### From source
|
|
39
|
+
|
|
40
|
+
Requires Node.js 18+ and pnpm.
|
|
41
|
+
|
|
42
|
+
```bash
|
|
43
|
+
git clone https://github.com/djibrilm/lazy-review
|
|
44
|
+
cd lazy-review
|
|
45
|
+
pnpm install
|
|
46
|
+
pnpm run dev
|
|
47
|
+
```
|
|
48
|
+
|
|
49
|
+
This starts both the Express server (port `16500`) and the Vite dev server concurrently.
|
|
50
|
+
|
|
51
|
+
## Overview
|
|
14
52
|
|
|
15
|
-
|
|
53
|
+
Lazy Review fetches PR diffs from GitHub and runs them through a multi-agent pipeline on your machine. The output is a structured GitHub PR review comment with categorized findings (`approve` / `request_changes` / `comment`), severity scores, and file-level annotations.
|
|
16
54
|
|
|
17
|
-
|
|
18
|
-
- **Specialist Reviewer** — investigates the PR through a specific lens, forming hypotheses without reading raw files directly
|
|
19
|
-
- **Repository Explorer** — a sub-agent with deterministic file tools (`read_file`, `search_symbol`, `semantic_search`) that the Reviewer delegates evidence-gathering to
|
|
20
|
-
- **Finding Verifier** — acts as a red team. Before anything is reported, it actively tries to _disprove_ each finding by searching for cleanup handlers, timeouts, or lifecycle methods that would make the issue impossible
|
|
21
|
-
- **Secret Scanner** — scans diff file names for sensitive candidates (`.env`, private keys, credential bundles), then reads the actual diff content to confirm before flagging anything
|
|
55
|
+
It uses two models:
|
|
22
56
|
|
|
23
|
-
|
|
57
|
+
- A coding LLM (~5 GB RAM) for review generation
|
|
58
|
+
- An embedding model (~2 GB RAM) for semantic codebase search
|
|
24
59
|
|
|
25
|
-
|
|
60
|
+
Both are downloaded and managed via the [QVAC SDK](https://www.npmjs.com/package/@qvac/sdk).
|
|
26
61
|
|
|
27
|
-
|
|
62
|
+
## Review pipeline
|
|
28
63
|
|
|
29
|
-
|
|
64
|
+
A review goes through five sequential stages:
|
|
30
65
|
|
|
31
|
-
|
|
66
|
+
1. **Change Analyzer** — classifies the PR diff and selects which specialist reviewers are needed (e.g. `security`, `performance`, `concurrency`, `correctness`, `architecture`, `maintainability`)
|
|
67
|
+
2. **Specialist Reviewers** — each runs a ReAct loop, forming hypotheses and querying the Repository Explorer for evidence rather than reading files directly
|
|
68
|
+
3. **Repository Explorer** — a sub-agent with deterministic tools (`read_file`, `search_symbol`, `semantic_search`) that answers evidence queries from the Specialist Reviewers
|
|
69
|
+
4. **Finding Verifier** — receives each candidate finding and attempts to disprove it by searching for cleanup handlers, timeouts, or lifecycle methods that would make the issue a false positive
|
|
70
|
+
5. **Secret Scanner** — independently scans diff file names for sensitive candidates (`.env`, private keys, credential bundles), reads the actual diff content to confirm before reporting
|
|
32
71
|
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
72
|
+
Confirmed findings are deduplicated by a hash of their text and location, ranked by `Impact × Likelihood`, and included in the final review verdict (`approve` / `request_changes` / `comment`).
|
|
73
|
+
|
|
74
|
+
## Codebase indexing
|
|
75
|
+
|
|
76
|
+
When you add a repository, Lazy Review scans the source tree and builds a local vector index. It:
|
|
77
|
+
|
|
78
|
+
- Parses symbols from TypeScript, JavaScript, Python, Rust, and Go files using Tree-sitter
|
|
79
|
+
- Chunks content at safe token boundaries (the embedding model has a 512-token context window)
|
|
80
|
+
- Stores embeddings in SQLite using the `sqlite-vec` extension
|
|
81
|
+
|
|
82
|
+
The index is used during reviews to provide semantic context to the agents.
|
|
83
|
+
|
|
84
|
+
## Tool-call parsing
|
|
85
|
+
|
|
86
|
+
Local models don't always return well-structured tool calls. The agent loop handles two fallback cases:
|
|
87
|
+
|
|
88
|
+
- A regex parser for non-standard formats (e.g. the `<|tool_call|>` dialect used by some quantized models)
|
|
89
|
+
- Tool results from fallback-parsed calls are injected as `user` messages to avoid strict API validation errors
|
|
41
90
|
|
|
42
91
|
## Tech stack
|
|
43
92
|
|
|
@@ -53,52 +102,35 @@ It connects to GitHub to fetch your PRs, runs a multi-agent review pipeline agai
|
|
|
53
102
|
|
|
54
103
|
## Hardware requirements
|
|
55
104
|
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
| Model | RAM |
|
|
59
|
-
| --------------- | -------------- |
|
|
60
|
-
| Coding LLM | ~5 GB |
|
|
61
|
-
| Embedding Model | ~2 GB |
|
|
62
|
-
| **Total** | **~7 GB free** |
|
|
63
|
-
|
|
64
|
-
GPU inference is available and can be toggled in Settings. If you hit crashes during model initialization on an older GPU, switch to CPU inference — it's slower but stable.
|
|
105
|
+
Tested on a Mac Mini (Apple Silicon). You need ~7 GB of free RAM to hold both models simultaneously:
|
|
65
106
|
|
|
66
|
-
|
|
107
|
+
| Model | RAM |
|
|
108
|
+
| --------------- | ----- |
|
|
109
|
+
| Coding LLM | ~5 GB |
|
|
110
|
+
| Embedding Model | ~2 GB |
|
|
67
111
|
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
```bash
|
|
71
|
-
npm install -g @djibrilm/lazy-review
|
|
72
|
-
lrv run
|
|
73
|
-
```
|
|
112
|
+
Since the models alone take up around 7 GB and other computer operations also need space, a good environment should have around 12 GB to 16 GB of total RAM.
|
|
74
113
|
|
|
75
|
-
|
|
114
|
+
GPU inference can be toggled in Settings. If the app crashes during model initialization (common on older GPUs), switch to CPU inference.
|
|
76
115
|
|
|
77
|
-
|
|
116
|
+
## CLI Commands
|
|
78
117
|
|
|
79
|
-
|
|
80
|
-
lazy-review run --port 8080
|
|
81
|
-
```
|
|
118
|
+
The CLI is available as either `lazy-review` or the `lrv` shorthand.
|
|
82
119
|
|
|
83
|
-
###
|
|
120
|
+
### `run`
|
|
84
121
|
|
|
85
|
-
|
|
122
|
+
Starts the Lazy Review server.
|
|
86
123
|
|
|
87
124
|
```bash
|
|
88
|
-
|
|
89
|
-
cd lazy-review
|
|
90
|
-
pnpm install
|
|
91
|
-
pnpm run dev
|
|
125
|
+
lrv run
|
|
92
126
|
```
|
|
93
127
|
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
## First-time setup
|
|
128
|
+
## Setup
|
|
97
129
|
|
|
98
|
-
1.
|
|
99
|
-
2.
|
|
100
|
-
3. Add a repository from the dashboard. Lazy Review will clone it and index the codebase
|
|
101
|
-
4.
|
|
130
|
+
1. Open Settings → Local AI Models and download both models.
|
|
131
|
+
2. Open Settings → GitHub Authentication and connect your GitHub account.
|
|
132
|
+
3. Add a repository from the dashboard. Lazy Review will clone it and index the codebase.
|
|
133
|
+
4. Select a PR from the repository view and run a review.
|
|
102
134
|
|
|
103
135
|
## License
|
|
104
136
|
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"database.module.d.ts","sourceRoot":"","sources":["../../../src/modules/database/database.module.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AAGrC,OAAO,EAAE,qBAAqB,EAAE,MAAM,8BAA8B,CAAC;
|
|
1
|
+
{"version":3,"file":"database.module.d.ts","sourceRoot":"","sources":["../../../src/modules/database/database.module.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AAGrC,OAAO,EAAE,qBAAqB,EAAE,MAAM,8BAA8B,CAAC;AAGrE,cAAM,cAAc;IAClB,aAAa,EAAE,UAAU,CAAC;IAC1B,cAAc,EAAE,qBAAqB,CAAC;;IAehC,OAAO;CAed;AAED,eAAe,cAAc,CAAC"}
|
|
@@ -4,6 +4,7 @@ import { DataSource } from 'typeorm';
|
|
|
4
4
|
import ProjectEntity from '../server/entities/project.entity.js';
|
|
5
5
|
import SettingsEntity from '../server/entities/settings.entity.js';
|
|
6
6
|
import { VectorDatabaseService } from './vector-database.service.js';
|
|
7
|
+
import { DATABASE_PATH } from '../../paths.js';
|
|
7
8
|
class DatabaseModule {
|
|
8
9
|
appDataSource;
|
|
9
10
|
vectorDatabase;
|
|
@@ -11,7 +12,7 @@ class DatabaseModule {
|
|
|
11
12
|
this.vectorDatabase = new VectorDatabaseService();
|
|
12
13
|
this.appDataSource = new DataSource({
|
|
13
14
|
type: 'better-sqlite3',
|
|
14
|
-
database:
|
|
15
|
+
database: DATABASE_PATH,
|
|
15
16
|
synchronize: true,
|
|
16
17
|
logging: false,
|
|
17
18
|
entities: [ProjectEntity, SettingsEntity],
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"database.module.js","sourceRoot":"","sources":["../../../src/modules/database/database.module.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,GAAG,MAAM,KAAK,CAAC;AAEtB,OAAO,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AACrC,OAAO,aAAa,MAAM,sCAAsC,CAAC;AACjE,OAAO,cAAc,MAAM,uCAAuC,CAAC;AACnE,OAAO,EAAE,qBAAqB,EAAE,MAAM,8BAA8B,CAAC;
|
|
1
|
+
{"version":3,"file":"database.module.js","sourceRoot":"","sources":["../../../src/modules/database/database.module.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,GAAG,MAAM,KAAK,CAAC;AAEtB,OAAO,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AACrC,OAAO,aAAa,MAAM,sCAAsC,CAAC;AACjE,OAAO,cAAc,MAAM,uCAAuC,CAAC;AACnE,OAAO,EAAE,qBAAqB,EAAE,MAAM,8BAA8B,CAAC;AACrE,OAAO,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;AAE/C,MAAM,cAAc;IAClB,aAAa,CAAa;IAC1B,cAAc,CAAwB;IAEtC;QACE,IAAI,CAAC,cAAc,GAAG,IAAI,qBAAqB,EAAE,CAAC;QAClD,IAAI,CAAC,aAAa,GAAG,IAAI,UAAU,CAAC;YAClC,IAAI,EAAE,gBAAgB;YACtB,QAAQ,EAAE,aAAa;YACvB,WAAW,EAAE,IAAI;YACjB,OAAO,EAAE,KAAK;YACd,QAAQ,EAAE,CAAC,aAAa,EAAE,cAAc,CAAC;YACzC,UAAU,EAAE,EAAE;YACd,WAAW,EAAE,EAAE;SAChB,CAAC,CAAC;IACL,CAAC;IAED,KAAK,CAAC,OAAO;QACX,MAAM,OAAO,GAAG,GAAG,CAAC;YAClB,IAAI,EAAE,6BAA6B;YACnC,KAAK,EAAE,MAAM;YACb,QAAQ,EAAE,GAAG;SACd,CAAC,CAAC,KAAK,EAAE,CAAC;QAEX,MAAM,IAAI,CAAC,aAAa,CAAC,UAAU,EAAE,CAAC,KAAK,CAAC,CAAC,GAAG,EAAE,EAAE;YAClD,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,8BAA8B,CAAC,GAAG,GAAG,CAAC,CAAC;YAE9D,MAAM,IAAI,KAAK,CAAC,4BAA4B,CAAC,CAAC;QAChD,CAAC,CAAC,CAAC;QAEH,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,iCAAiC,CAAC,CAAC,CAAC;IAClE,CAAC;CACF;AAED,eAAe,cAAc,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"vector-database.service.d.ts","sourceRoot":"","sources":["../../../src/modules/database/vector-database.service.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"vector-database.service.d.ts","sourceRoot":"","sources":["../../../src/modules/database/vector-database.service.ts"],"names":[],"mappings":"AAIA,qBAAa,qBAAqB;IAChC,OAAO,CAAC,EAAE,CAAoB;gBAElB,YAAY,GAAE,MAAsB;IAMhD,OAAO,CAAC,UAAU;IAqBL,eAAe,CAC1B,SAAS,EAAE,MAAM,EACjB,OAAO,EAAE,MAAM,EACf,cAAc,EAAE,MAAM,EAAE,EACxB,QAAQ,CAAC,EAAE,MAAM,EACjB,QAAQ,CAAC,EAAE,GAAG;IAiCH,WAAW,CAAC,SAAS,EAAE,MAAM,EAAE,cAAc,EAAE,MAAM,EAAE,EAAE,KAAK,GAAE,MAAU;IA4BhF,kBAAkB,CAAC,SAAS,EAAE,MAAM;IAmBpC,kBAAkB,CAAC,SAAS,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM;IAmBhD,mBAAmB,CAC9B,SAAS,EAAE,MAAM,EACjB,QAAQ,EAAE,MAAM,EAChB,KAAK,EAAE;QAAE,OAAO,EAAE,MAAM,CAAC;QAAC,SAAS,EAAE,MAAM,EAAE,CAAC;QAAC,QAAQ,CAAC,EAAE,GAAG,CAAA;KAAE,EAAE;IAwCnE;;;OAGG;IACU,iBAAiB,CAC5B,SAAS,EAAE,MAAM,EACjB,SAAS,EAAE;QACT,QAAQ,EAAE,MAAM,CAAC;QACjB,KAAK,EAAE;YAAE,OAAO,EAAE,MAAM,CAAC;YAAC,SAAS,EAAE,MAAM,EAAE,CAAC;YAAC,QAAQ,CAAC,EAAE,GAAG,CAAA;SAAE,EAAE,CAAC;KACnE,EAAE;CAiDN"}
|
|
@@ -1,8 +1,9 @@
|
|
|
1
1
|
import Database from 'better-sqlite3';
|
|
2
2
|
import * as sqliteVec from 'sqlite-vec';
|
|
3
|
+
import { DATABASE_PATH } from '../../paths.js';
|
|
3
4
|
export class VectorDatabaseService {
|
|
4
5
|
db;
|
|
5
|
-
constructor(databasePath =
|
|
6
|
+
constructor(databasePath = DATABASE_PATH) {
|
|
6
7
|
this.db = new Database(databasePath);
|
|
7
8
|
sqliteVec.load(this.db);
|
|
8
9
|
this.initTables();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"vector-database.service.js","sourceRoot":"","sources":["../../../src/modules/database/vector-database.service.ts"],"names":[],"mappings":"AAAA,OAAO,QAAQ,MAAM,gBAAgB,CAAC;AACtC,OAAO,KAAK,SAAS,MAAM,YAAY,CAAC;AACxC,MAAM,OAAO,qBAAqB;IACxB,EAAE,CAAoB;IAE9B,YAAY,eAAuB,
|
|
1
|
+
{"version":3,"file":"vector-database.service.js","sourceRoot":"","sources":["../../../src/modules/database/vector-database.service.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"server.module.d.ts","sourceRoot":"","sources":["../../../src/modules/server/server.module.ts"],"names":[],"mappings":"AAAA,OAAgB,EAAE,KAAK,OAAO,EAAE,MAAM,SAAS,CAAC;AAGhD,OAAO,EAAE,MAAM,IAAI,UAAU,EAAE,MAAM,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"server.module.d.ts","sourceRoot":"","sources":["../../../src/modules/server/server.module.ts"],"names":[],"mappings":"AAAA,OAAgB,EAAE,KAAK,OAAO,EAAE,MAAM,SAAS,CAAC;AAGhD,OAAO,EAAE,MAAM,IAAI,UAAU,EAAE,MAAM,MAAM,CAAC;AAM5C,OAAO,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAG/C,MAAM,WAAW,kBAAkB;IACjC,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAED,qBAAa,MAAM;IACjB,QAAQ,CAAC,UAAU,EAAE,UAAU,CAAC;IAChC,GAAG,CAAC,EAAE,OAAO,CAAC;IACd,UAAU,CAAC,EAAE,UAAU,CAAC;IACxB,OAAO,CAAC,MAAM,CAAS;IACvB,IAAI,EAAE,MAAM,CAAC;gBAED,EAAE,IAAY,EAAE,UAAU,EAAE,EAAE,kBAAkB,GAAG;QAAE,UAAU,EAAE,UAAU,CAAA;KAAE;IAKnF,KAAK;CAoDZ;AAED,eAAe,MAAM,CAAC"}
|
|
@@ -4,6 +4,7 @@ import { Server as HttpServer } from 'http';
|
|
|
4
4
|
import open from 'open';
|
|
5
5
|
import chalk from 'chalk';
|
|
6
6
|
import path from 'path';
|
|
7
|
+
import { fileURLToPath } from 'url';
|
|
7
8
|
import ora from 'ora';
|
|
8
9
|
import { MainModule } from '../main.module.js';
|
|
9
10
|
import Routes from './routes/routes.js';
|
|
@@ -24,7 +25,9 @@ export class Server {
|
|
|
24
25
|
color: 'gray',
|
|
25
26
|
interval: 200,
|
|
26
27
|
});
|
|
27
|
-
const
|
|
28
|
+
const __filename = fileURLToPath(import.meta.url);
|
|
29
|
+
const __dirname = path.dirname(__filename);
|
|
30
|
+
const clientPath = path.join(__dirname, '..', '..', 'client');
|
|
28
31
|
this.app = express();
|
|
29
32
|
this.app.use(express.json({ limit: '50mb' }));
|
|
30
33
|
this.app.use(express.urlencoded({ extended: true }));
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"server.module.js","sourceRoot":"","sources":["../../../src/modules/server/server.module.ts"],"names":[],"mappings":"AAAA,OAAO,OAAO,EAAE,EAAgB,MAAM,SAAS,CAAC;AAChD,OAAO,IAAI,MAAM,MAAM,CAAC;AAExB,OAAO,EAAE,MAAM,IAAI,UAAU,EAAE,MAAM,MAAM,CAAC;AAC5C,OAAO,IAAI,MAAM,MAAM,CAAC;AACxB,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,IAAI,MAAM,MAAM,CAAC;AACxB,OAAO,GAAG,MAAM,KAAK,CAAC;AACtB,OAAO,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAC/C,OAAO,MAAM,MAAM,oBAAoB,CAAC;AAMxC,MAAM,OAAO,MAAM;IACR,UAAU,CAAa;IAChC,GAAG,CAAW;IACd,UAAU,CAAc;IAChB,MAAM,CAAS;IACvB,IAAI,CAAS;IAEb,YAAY,EAAE,IAAI,GAAG,KAAK,EAAE,UAAU,EAAmD;QACvF,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;QACjB,IAAI,CAAC,UAAU,GAAG,UAAU,CAAC;IAC/B,CAAC;IAED,KAAK,CAAC,KAAK;QACT,IAAI,CAAC;YACH,MAAM,OAAO,GAAG,GAAG,CAAC;gBAClB,IAAI,EAAE,yBAAyB;gBAC/B,KAAK,EAAE,MAAM;gBACb,QAAQ,EAAE,GAAG;aACd,CAAC,CAAC;YAEH,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,
|
|
1
|
+
{"version":3,"file":"server.module.js","sourceRoot":"","sources":["../../../src/modules/server/server.module.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +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;
|
|
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;AAIvD,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"}
|
|
@@ -5,6 +5,7 @@ import fs from 'fs';
|
|
|
5
5
|
import path from 'path';
|
|
6
6
|
import SettingsEntity from '../entities/settings.entity.js';
|
|
7
7
|
import { LLM_MODEL_ID, EMBEDDING_MODEL_ID } from '../../../constants.js';
|
|
8
|
+
import { DATABASE_PATH } from '../../../paths.js';
|
|
8
9
|
export class SettingsService {
|
|
9
10
|
dataSource;
|
|
10
11
|
mainModule;
|
|
@@ -94,7 +95,7 @@ export class SettingsService {
|
|
|
94
95
|
// Calculate SQLite database size
|
|
95
96
|
let sqliteDbSize = 0;
|
|
96
97
|
try {
|
|
97
|
-
const dbPath =
|
|
98
|
+
const dbPath = DATABASE_PATH;
|
|
98
99
|
if (fs.existsSync(dbPath)) {
|
|
99
100
|
const stats = fs.statSync(dbPath);
|
|
100
101
|
sqliteDbSize = stats.size;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"settings.service.js","sourceRoot":"","sources":["../../../../src/modules/server/services/settings.service.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AACjD,OAAO,EAAE,MAAM,mBAAmB,CAAC;AACnC,OAAO,EAAE,MAAM,IAAI,CAAC;AACpB,OAAO,EAAE,MAAM,IAAI,CAAC;AACpB,OAAO,IAAI,MAAM,MAAM,CAAC;AACxB,OAAO,cAAc,MAAM,gCAAgC,CAAC;AAE5D,OAAO,EAAE,YAAY,EAAE,kBAAkB,EAAE,MAAM,uBAAuB,CAAC;
|
|
1
|
+
{"version":3,"file":"settings.service.js","sourceRoot":"","sources":["../../../../src/modules/server/services/settings.service.ts"],"names":[],"mappings":"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"}
|
package/dist/paths.d.ts
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"paths.d.ts","sourceRoot":"","sources":["../src/paths.ts"],"names":[],"mappings":"AAIA,eAAO,MAAM,OAAO,QAA0C,CAAC;AAK/D,eAAO,MAAM,aAAa,QAAwC,CAAC"}
|
package/dist/paths.js
ADDED
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import os from 'os';
|
|
2
|
+
import path from 'path';
|
|
3
|
+
import fs from 'fs';
|
|
4
|
+
export const APP_DIR = path.join(os.homedir(), '.lazy-review');
|
|
5
|
+
if (!fs.existsSync(APP_DIR)) {
|
|
6
|
+
fs.mkdirSync(APP_DIR, { recursive: true });
|
|
7
|
+
}
|
|
8
|
+
export const DATABASE_PATH = path.join(APP_DIR, 'database.sqlite');
|
|
9
|
+
//# sourceMappingURL=paths.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"paths.js","sourceRoot":"","sources":["../src/paths.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,IAAI,CAAC;AACpB,OAAO,IAAI,MAAM,MAAM,CAAC;AACxB,OAAO,EAAE,MAAM,IAAI,CAAC;AAEpB,MAAM,CAAC,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,OAAO,EAAE,EAAE,cAAc,CAAC,CAAC;AAC/D,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,OAAO,CAAC,EAAE,CAAC;IAC5B,EAAE,CAAC,SAAS,CAAC,OAAO,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;AAC7C,CAAC;AAED,MAAM,CAAC,MAAM,aAAa,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,iBAAiB,CAAC,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"type": "module",
|
|
3
3
|
"name": "@djibrilm/lazy-review",
|
|
4
|
-
"version": "0.0.
|
|
4
|
+
"version": "0.0.4",
|
|
5
5
|
"description": "",
|
|
6
6
|
"bin": {
|
|
7
7
|
"lazy-review": "./dist/bin.js",
|
|
@@ -91,6 +91,7 @@
|
|
|
91
91
|
"link": "pnpm run postbuild && pnpm run prod:build && pnpm link --global",
|
|
92
92
|
"link-watch": "nodemon --watch dist --ext js --exec \"pnpm link --global\"",
|
|
93
93
|
"lint": "eslint \"src/**/*.ts\"",
|
|
94
|
-
"format": "prettier --write \"**/*.{ts,js,json,md}\""
|
|
94
|
+
"format": "prettier --write \"**/*.{ts,js,json,md}\"",
|
|
95
|
+
"release": "pnpm run prod:build && pnpm publish --access public"
|
|
95
96
|
}
|
|
96
97
|
}
|