truecourse 0.1.18 → 0.2.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/README.md +7 -2
- package/assets/demo.mp4 +0 -0
- package/cli.mjs +8 -6
- package/db/migrations/0011_noisy_colleen_wing.sql +2 -0
- package/db/migrations/meta/0011_snapshot.json +2075 -0
- package/db/migrations/meta/_journal.json +7 -0
- package/package.json +1 -1
- package/public/assets/index-B9lyLwLS.css +1 -0
- package/public/assets/{index-BM6GwBRV.js → index-DmLWAe9c.js} +127 -127
- package/public/index.html +2 -2
- package/server.mjs +3124 -614
- package/public/assets/index-n9Z6c8B0.css +0 -1
package/README.md
CHANGED
|
@@ -66,7 +66,7 @@ TrueCourse automatically detects request flows across service boundaries — HTT
|
|
|
66
66
|
|
|
67
67
|
### Database Analysis
|
|
68
68
|
|
|
69
|
-
Databases are detected automatically from ORM usage (Prisma,
|
|
69
|
+
Databases are detected automatically from ORM usage (Prisma, Drizzle, SQLAlchemy, TypeORM, Knex, etc.) and displayed as nodes in the dependency graph. Click a database node to see a full ER diagram with tables, columns, types, and relationships. LLM rules check for missing foreign keys, missing indexes, naming inconsistencies, and schema issues.
|
|
70
70
|
|
|
71
71
|
### Analytics Dashboard
|
|
72
72
|
|
|
@@ -113,6 +113,7 @@ Once the server is running, `cd` into any repo and:
|
|
|
113
113
|
npx truecourse add # Register repo without analyzing
|
|
114
114
|
npx truecourse analyze # Analyze current repo, show violations
|
|
115
115
|
npx truecourse analyze --code-review # Analyze with LLM code review (off by default)
|
|
116
|
+
npx truecourse analyze --no-llm # Deterministic checks only, skip all LLM calls
|
|
116
117
|
npx truecourse analyze --diff # Show new/resolved violations from uncommitted changes
|
|
117
118
|
npx truecourse list # Show violations from latest analysis
|
|
118
119
|
npx truecourse list --diff # Show saved diff check results
|
|
@@ -171,7 +172,11 @@ All rules are visible in the **Rules** tab in the web UI. Custom rule generation
|
|
|
171
172
|
| Language | Status |
|
|
172
173
|
|---|---|
|
|
173
174
|
| JavaScript / TypeScript | Supported |
|
|
174
|
-
| Python |
|
|
175
|
+
| Python | Supported |
|
|
176
|
+
| C# | Planned |
|
|
177
|
+
| Go | Planned |
|
|
178
|
+
| Rust | Planned |
|
|
179
|
+
| PHP | Planned |
|
|
175
180
|
|
|
176
181
|
## License
|
|
177
182
|
|
package/assets/demo.mp4
ADDED
|
Binary file
|
package/cli.mjs
CHANGED
|
@@ -13416,7 +13416,7 @@ async function runAdd() {
|
|
|
13416
13416
|
init_dist2();
|
|
13417
13417
|
init_helpers();
|
|
13418
13418
|
var TIMEOUT_MS = 15 * 60 * 1e3;
|
|
13419
|
-
async function runAnalyze({ noAutostart = false, codeReview = false } = {}) {
|
|
13419
|
+
async function runAnalyze({ noAutostart = false, codeReview = false, deterministicOnly = false } = {}) {
|
|
13420
13420
|
we("Analyzing repository");
|
|
13421
13421
|
if (noAutostart) {
|
|
13422
13422
|
const url2 = getServerUrl();
|
|
@@ -13480,7 +13480,7 @@ async function runAnalyze({ noAutostart = false, codeReview = false } = {}) {
|
|
|
13480
13480
|
fetch(`${serverUrl}/api/repos/${repo.id}/analyze`, {
|
|
13481
13481
|
method: "POST",
|
|
13482
13482
|
headers: { "Content-Type": "application/json" },
|
|
13483
|
-
body: JSON.stringify({ codeReview })
|
|
13483
|
+
body: JSON.stringify({ codeReview, deterministicOnly })
|
|
13484
13484
|
}).then((res2) => {
|
|
13485
13485
|
if (!res2.ok) {
|
|
13486
13486
|
clearTimeout(timeout);
|
|
@@ -13508,7 +13508,9 @@ async function runAnalyze({ noAutostart = false, codeReview = false } = {}) {
|
|
|
13508
13508
|
}
|
|
13509
13509
|
const violations = await res.json();
|
|
13510
13510
|
renderViolationsSummary(violations);
|
|
13511
|
-
|
|
13511
|
+
if (!deterministicOnly) {
|
|
13512
|
+
v2.info("Code review running in background \u2014 results will appear in the dashboard");
|
|
13513
|
+
}
|
|
13512
13514
|
const repoUrl = `${serverUrl}/repos/${repo.id}`;
|
|
13513
13515
|
if (firstRun) {
|
|
13514
13516
|
openInBrowser(repoUrl);
|
|
@@ -13786,7 +13788,7 @@ function registerServiceCommand(program3) {
|
|
|
13786
13788
|
init_helpers();
|
|
13787
13789
|
init_platform();
|
|
13788
13790
|
var program2 = new Command();
|
|
13789
|
-
program2.name("truecourse").version("0.1
|
|
13791
|
+
program2.name("truecourse").version("0.2.1").description("TrueCourse CLI - Setup and manage your TrueCourse instance");
|
|
13790
13792
|
program2.command("setup").description("Run the setup wizard to configure TrueCourse").action(async () => {
|
|
13791
13793
|
await runSetup();
|
|
13792
13794
|
});
|
|
@@ -13796,11 +13798,11 @@ program2.command("start").description("Start TrueCourse services").action(async
|
|
|
13796
13798
|
program2.command("add").description("Add the current directory as a repository").action(async () => {
|
|
13797
13799
|
await runAdd();
|
|
13798
13800
|
});
|
|
13799
|
-
program2.command("analyze").description("Analyze the current repository").option("--diff", "Run diff check against latest analysis").option("--code-review", "Include LLM code review (off by default)").option("--no-autostart", "Don't auto-start the server (for use from Claude Code skills)").action(async (options) => {
|
|
13801
|
+
program2.command("analyze").description("Analyze the current repository").option("--diff", "Run diff check against latest analysis").option("--code-review", "Include LLM code review (off by default)").option("--no-llm", "Skip all LLM calls, run only deterministic checks").option("--no-autostart", "Don't auto-start the server (for use from Claude Code skills)").action(async (options) => {
|
|
13800
13802
|
if (options.diff) {
|
|
13801
13803
|
await runAnalyzeDiff({ noAutostart: !options.autostart });
|
|
13802
13804
|
} else {
|
|
13803
|
-
await runAnalyze({ noAutostart: !options.autostart, codeReview: options.codeReview ?? false });
|
|
13805
|
+
await runAnalyze({ noAutostart: !options.autostart, codeReview: options.codeReview ?? false, deterministicOnly: !options.llm });
|
|
13804
13806
|
}
|
|
13805
13807
|
});
|
|
13806
13808
|
program2.command("code-review").description("Run LLM code review on the latest analysis").option("--diff", "Run on the latest diff analysis instead").option("--no-autostart", "Don't auto-start the server").action(async (options) => {
|