@kodus/cli 0.0.12 → 0.1.0
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 +387 -0
- package/dist/cli.d.ts +4 -0
- package/dist/cli.d.ts.map +1 -0
- package/dist/cli.js +26 -0
- package/dist/cli.js.map +1 -0
- package/dist/commands/auth/index.d.ts +3 -0
- package/dist/commands/auth/index.d.ts.map +1 -0
- package/dist/commands/auth/index.js +36 -0
- package/dist/commands/auth/index.js.map +1 -0
- package/dist/commands/auth/login.d.ts +7 -0
- package/dist/commands/auth/login.d.ts.map +1 -0
- package/dist/commands/auth/login.js +97 -0
- package/dist/commands/auth/login.js.map +1 -0
- package/dist/commands/auth/logout.d.ts +2 -0
- package/dist/commands/auth/logout.d.ts.map +1 -0
- package/dist/commands/auth/logout.js +24 -0
- package/dist/commands/auth/logout.js.map +1 -0
- package/dist/commands/auth/signup.d.ts +2 -0
- package/dist/commands/auth/signup.d.ts.map +1 -0
- package/dist/commands/auth/signup.js +74 -0
- package/dist/commands/auth/signup.js.map +1 -0
- package/dist/commands/auth/status.d.ts +2 -0
- package/dist/commands/auth/status.d.ts.map +1 -0
- package/dist/commands/auth/status.js +91 -0
- package/dist/commands/auth/status.js.map +1 -0
- package/dist/commands/auth/team-key.d.ts +5 -0
- package/dist/commands/auth/team-key.d.ts.map +1 -0
- package/dist/commands/auth/team-key.js +59 -0
- package/dist/commands/auth/team-key.js.map +1 -0
- package/dist/commands/auth/token.d.ts +2 -0
- package/dist/commands/auth/token.d.ts.map +1 -0
- package/dist/commands/auth/token.js +31 -0
- package/dist/commands/auth/token.js.map +1 -0
- package/dist/commands/config.d.ts +3 -0
- package/dist/commands/config.d.ts.map +1 -0
- package/dist/commands/config.js +47 -0
- package/dist/commands/config.js.map +1 -0
- package/dist/commands/pr.d.ts +3 -0
- package/dist/commands/pr.d.ts.map +1 -0
- package/dist/commands/pr.js +75 -0
- package/dist/commands/pr.js.map +1 -0
- package/dist/commands/review.d.ts +3 -0
- package/dist/commands/review.d.ts.map +1 -0
- package/dist/commands/review.js +245 -0
- package/dist/commands/review.js.map +1 -0
- package/dist/commands/telemetry.d.ts +3 -0
- package/dist/commands/telemetry.d.ts.map +1 -0
- package/dist/commands/telemetry.js +76 -0
- package/dist/commands/telemetry.js.map +1 -0
- package/dist/commands/upgrade.d.ts +3 -0
- package/dist/commands/upgrade.d.ts.map +1 -0
- package/dist/commands/upgrade.js +35 -0
- package/dist/commands/upgrade.js.map +1 -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/formatters/json.d.ts +7 -0
- package/dist/formatters/json.d.ts.map +1 -0
- package/dist/formatters/json.js +7 -0
- package/dist/formatters/json.js.map +1 -0
- package/dist/formatters/markdown.d.ts +7 -0
- package/dist/formatters/markdown.d.ts.map +1 -0
- package/dist/formatters/markdown.js +93 -0
- package/dist/formatters/markdown.js.map +1 -0
- package/dist/formatters/prompt.d.ts +12 -0
- package/dist/formatters/prompt.d.ts.map +1 -0
- package/dist/formatters/prompt.js +90 -0
- package/dist/formatters/prompt.js.map +1 -0
- package/dist/formatters/terminal.d.ts +7 -0
- package/dist/formatters/terminal.d.ts.map +1 -0
- package/dist/formatters/terminal.js +127 -0
- package/dist/formatters/terminal.js.map +1 -0
- package/dist/index.d.ts +3 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +4 -0
- package/dist/index.js.map +1 -0
- package/dist/services/api/api.interface.d.ts +46 -0
- package/dist/services/api/api.interface.d.ts.map +1 -0
- package/dist/services/api/api.interface.js +2 -0
- package/dist/services/api/api.interface.js.map +1 -0
- package/dist/services/api/api.mock.d.ts +8 -0
- package/dist/services/api/api.mock.d.ts.map +1 -0
- package/dist/services/api/api.mock.js +249 -0
- package/dist/services/api/api.mock.js.map +1 -0
- package/dist/services/api/api.real.d.ts +8 -0
- package/dist/services/api/api.real.d.ts.map +1 -0
- package/dist/services/api/api.real.js +253 -0
- package/dist/services/api/api.real.js.map +1 -0
- package/dist/services/api/index.d.ts +4 -0
- package/dist/services/api/index.d.ts.map +1 -0
- package/dist/services/api/index.js +9 -0
- package/dist/services/api/index.js.map +1 -0
- package/dist/services/auth.service.d.ts +19 -0
- package/dist/services/auth.service.d.ts.map +1 -0
- package/dist/services/auth.service.js +90 -0
- package/dist/services/auth.service.js.map +1 -0
- package/dist/services/context.service.d.ts +22 -0
- package/dist/services/context.service.d.ts.map +1 -0
- package/dist/services/context.service.js +104 -0
- package/dist/services/context.service.js.map +1 -0
- package/dist/services/fix.service.d.ts +31 -0
- package/dist/services/fix.service.d.ts.map +1 -0
- package/dist/services/fix.service.js +120 -0
- package/dist/services/fix.service.js.map +1 -0
- package/dist/services/git.service.d.ts +32 -0
- package/dist/services/git.service.d.ts.map +1 -0
- package/dist/services/git.service.js +261 -0
- package/dist/services/git.service.js.map +1 -0
- package/dist/services/review.service.d.ts +26 -0
- package/dist/services/review.service.d.ts.map +1 -0
- package/dist/services/review.service.js +82 -0
- package/dist/services/review.service.js.map +1 -0
- package/dist/services/telemetry.service.d.ts +73 -0
- package/dist/services/telemetry.service.d.ts.map +1 -0
- package/dist/services/telemetry.service.js +229 -0
- package/dist/services/telemetry.service.js.map +1 -0
- package/dist/types/index.d.ts +143 -0
- package/dist/types/index.d.ts.map +1 -0
- package/dist/types/index.js +15 -0
- package/dist/types/index.js.map +1 -0
- package/dist/ui/interactive.d.ts +26 -0
- package/dist/ui/interactive.d.ts.map +1 -0
- package/dist/ui/interactive.js +365 -0
- package/dist/ui/interactive.js.map +1 -0
- package/dist/utils/config.d.ts +10 -0
- package/dist/utils/config.d.ts.map +1 -0
- package/dist/utils/config.js +54 -0
- package/dist/utils/config.js.map +1 -0
- package/dist/utils/credentials.d.ts +6 -0
- package/dist/utils/credentials.d.ts.map +1 -0
- package/dist/utils/credentials.js +54 -0
- package/dist/utils/credentials.js.map +1 -0
- package/dist/utils/rate-limit.d.ts +5 -0
- package/dist/utils/rate-limit.d.ts.map +1 -0
- package/dist/utils/rate-limit.js +47 -0
- package/dist/utils/rate-limit.js.map +1 -0
- package/dist/utils/review-loading.d.ts +19 -0
- package/dist/utils/review-loading.d.ts.map +1 -0
- package/dist/utils/review-loading.js +140 -0
- package/dist/utils/review-loading.js.map +1 -0
- package/package.json +39 -33
- package/index.js +0 -15
- package/license.md +0 -21
- package/readme.md +0 -128
- package/scripts/setup-db.sh +0 -77
- package/src/commands/install.js +0 -357
- package/src/config/default.js +0 -66
- package/src/utils/helpers.js +0 -128
- package/templates/.env.example +0 -142
- package/templates/docker-compose.yml +0 -139
|
@@ -0,0 +1,140 @@
|
|
|
1
|
+
import chalk from 'chalk';
|
|
2
|
+
const BASE_MESSAGES = [
|
|
3
|
+
'Warming up the review engine...',
|
|
4
|
+
'Counting bugs before they hatch...',
|
|
5
|
+
'Keeping your streak alive...',
|
|
6
|
+
];
|
|
7
|
+
const SIZE_MESSAGES = {
|
|
8
|
+
tiny: [
|
|
9
|
+
'Tiny diff. Speedrun mode on.',
|
|
10
|
+
'Snack-sized review. No crumbs left.',
|
|
11
|
+
'Mini-quest detected. Quick clear.',
|
|
12
|
+
'XP farm: just a few lines.',
|
|
13
|
+
],
|
|
14
|
+
small: [
|
|
15
|
+
'Small diff. Coffee still warm.',
|
|
16
|
+
'Short quest. Combo meter starting.',
|
|
17
|
+
'Level 1 boss. Easy loot.',
|
|
18
|
+
'Sprint review. Keep it clean.',
|
|
19
|
+
],
|
|
20
|
+
medium: [
|
|
21
|
+
'Mid-size quest. Focus buff active.',
|
|
22
|
+
'Reviewing the middle of the maze...',
|
|
23
|
+
'Steady pace. XP trickling in.',
|
|
24
|
+
'Side quest: trace every line.',
|
|
25
|
+
],
|
|
26
|
+
large: [
|
|
27
|
+
'Big diff. Stretching fingers.',
|
|
28
|
+
'Review marathon. Hydration check.',
|
|
29
|
+
'Boss fight incoming. Shields up.',
|
|
30
|
+
'Chunky changes. Deep scan time.',
|
|
31
|
+
],
|
|
32
|
+
huge: [
|
|
33
|
+
'Mega diff. Legendary quest.',
|
|
34
|
+
'This is a saga. Hold my coffee.',
|
|
35
|
+
'Epic boss. Full scan engaged.',
|
|
36
|
+
'Streak protected. Long haul.',
|
|
37
|
+
],
|
|
38
|
+
};
|
|
39
|
+
export function getDiffMetrics(diff) {
|
|
40
|
+
if (!diff) {
|
|
41
|
+
return { files: 0, lines: 0, additions: 0, deletions: 0, chars: 0 };
|
|
42
|
+
}
|
|
43
|
+
const lines = diff.split('\n');
|
|
44
|
+
let files = 0;
|
|
45
|
+
let additions = 0;
|
|
46
|
+
let deletions = 0;
|
|
47
|
+
for (const line of lines) {
|
|
48
|
+
if (line.startsWith('diff --git ')) {
|
|
49
|
+
files += 1;
|
|
50
|
+
}
|
|
51
|
+
if (line.startsWith('+') && !line.startsWith('+++')) {
|
|
52
|
+
additions += 1;
|
|
53
|
+
}
|
|
54
|
+
if (line.startsWith('-') && !line.startsWith('---')) {
|
|
55
|
+
deletions += 1;
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
return {
|
|
59
|
+
files,
|
|
60
|
+
lines: lines.length,
|
|
61
|
+
additions,
|
|
62
|
+
deletions,
|
|
63
|
+
chars: diff.length,
|
|
64
|
+
};
|
|
65
|
+
}
|
|
66
|
+
export function startReviewLoadingMessages(spinner, metrics, flags, options) {
|
|
67
|
+
const intervalMs = options?.intervalMs ?? 1400;
|
|
68
|
+
const initialMessage = options?.initialMessage ?? 'Analyzing code...';
|
|
69
|
+
const messages = buildReviewLoadingMessages(metrics, flags);
|
|
70
|
+
spinner.text = chalk.cyan(initialMessage);
|
|
71
|
+
if (messages.length === 0) {
|
|
72
|
+
return () => undefined;
|
|
73
|
+
}
|
|
74
|
+
let index = Math.floor(Math.random() * messages.length);
|
|
75
|
+
const timer = setInterval(() => {
|
|
76
|
+
spinner.text = chalk.cyan(messages[index]);
|
|
77
|
+
index = (index + 1) % messages.length;
|
|
78
|
+
}, intervalMs);
|
|
79
|
+
return () => clearInterval(timer);
|
|
80
|
+
}
|
|
81
|
+
function buildReviewLoadingMessages(metrics, flags) {
|
|
82
|
+
const sizeLabel = getSizeLabel(metrics);
|
|
83
|
+
const messages = [
|
|
84
|
+
...SIZE_MESSAGES[sizeLabel],
|
|
85
|
+
...BASE_MESSAGES,
|
|
86
|
+
];
|
|
87
|
+
const sizeMessage = formatSizeMessage(metrics);
|
|
88
|
+
if (sizeMessage) {
|
|
89
|
+
messages.push(sizeMessage);
|
|
90
|
+
}
|
|
91
|
+
const deltaMessage = formatDeltaMessage(metrics);
|
|
92
|
+
if (deltaMessage) {
|
|
93
|
+
messages.push(deltaMessage);
|
|
94
|
+
}
|
|
95
|
+
if (flags.fast) {
|
|
96
|
+
messages.push('Fast mode: speed boost active.');
|
|
97
|
+
}
|
|
98
|
+
if (flags.rulesOnly) {
|
|
99
|
+
messages.push('Rules-only run: strict mode on.');
|
|
100
|
+
}
|
|
101
|
+
if (flags.isTrial) {
|
|
102
|
+
messages.push('Trial run: making this one count.');
|
|
103
|
+
}
|
|
104
|
+
return dedupe(messages);
|
|
105
|
+
}
|
|
106
|
+
function getSizeLabel(metrics) {
|
|
107
|
+
const score = metrics.lines + metrics.files * 30;
|
|
108
|
+
if (score <= 120)
|
|
109
|
+
return 'tiny';
|
|
110
|
+
if (score <= 320)
|
|
111
|
+
return 'small';
|
|
112
|
+
if (score <= 900)
|
|
113
|
+
return 'medium';
|
|
114
|
+
if (score <= 2000)
|
|
115
|
+
return 'large';
|
|
116
|
+
return 'huge';
|
|
117
|
+
}
|
|
118
|
+
function formatSizeMessage(metrics) {
|
|
119
|
+
if (metrics.lines === 0 && metrics.files === 0) {
|
|
120
|
+
return undefined;
|
|
121
|
+
}
|
|
122
|
+
if (metrics.files > 0) {
|
|
123
|
+
return `Size check: ${formatCount(metrics.files, 'file')}, ${formatCount(metrics.lines, 'line')}.`;
|
|
124
|
+
}
|
|
125
|
+
return `Size check: ${formatCount(metrics.lines, 'line')}.`;
|
|
126
|
+
}
|
|
127
|
+
function formatDeltaMessage(metrics) {
|
|
128
|
+
if (metrics.additions + metrics.deletions === 0) {
|
|
129
|
+
return undefined;
|
|
130
|
+
}
|
|
131
|
+
return `Delta check: +${metrics.additions} / -${metrics.deletions} lines.`;
|
|
132
|
+
}
|
|
133
|
+
function formatCount(value, singular, plural) {
|
|
134
|
+
const word = value === 1 ? singular : (plural ?? `${singular}s`);
|
|
135
|
+
return `${value} ${word}`;
|
|
136
|
+
}
|
|
137
|
+
function dedupe(messages) {
|
|
138
|
+
return Array.from(new Set(messages));
|
|
139
|
+
}
|
|
140
|
+
//# sourceMappingURL=review-loading.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"review-loading.js","sourceRoot":"","sources":["../../src/utils/review-loading.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAmB1B,MAAM,aAAa,GAAG;IACpB,iCAAiC;IACjC,oCAAoC;IACpC,8BAA8B;CAC/B,CAAC;AAEF,MAAM,aAAa,GAAgC;IACjD,IAAI,EAAE;QACJ,8BAA8B;QAC9B,qCAAqC;QACrC,mCAAmC;QACnC,4BAA4B;KAC7B;IACD,KAAK,EAAE;QACL,gCAAgC;QAChC,oCAAoC;QACpC,0BAA0B;QAC1B,+BAA+B;KAChC;IACD,MAAM,EAAE;QACN,oCAAoC;QACpC,qCAAqC;QACrC,+BAA+B;QAC/B,+BAA+B;KAChC;IACD,KAAK,EAAE;QACL,+BAA+B;QAC/B,mCAAmC;QACnC,kCAAkC;QAClC,iCAAiC;KAClC;IACD,IAAI,EAAE;QACJ,6BAA6B;QAC7B,iCAAiC;QACjC,+BAA+B;QAC/B,8BAA8B;KAC/B;CACF,CAAC;AAEF,MAAM,UAAU,cAAc,CAAC,IAAY;IACzC,IAAI,CAAC,IAAI,EAAE,CAAC;QACV,OAAO,EAAE,KAAK,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,SAAS,EAAE,CAAC,EAAE,SAAS,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC;IACtE,CAAC;IAED,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IAC/B,IAAI,KAAK,GAAG,CAAC,CAAC;IACd,IAAI,SAAS,GAAG,CAAC,CAAC;IAClB,IAAI,SAAS,GAAG,CAAC,CAAC;IAElB,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACzB,IAAI,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,EAAE,CAAC;YACnC,KAAK,IAAI,CAAC,CAAC;QACb,CAAC;QACD,IAAI,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,EAAE,CAAC;YACpD,SAAS,IAAI,CAAC,CAAC;QACjB,CAAC;QACD,IAAI,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,EAAE,CAAC;YACpD,SAAS,IAAI,CAAC,CAAC;QACjB,CAAC;IACH,CAAC;IAED,OAAO;QACL,KAAK;QACL,KAAK,EAAE,KAAK,CAAC,MAAM;QACnB,SAAS;QACT,SAAS;QACT,KAAK,EAAE,IAAI,CAAC,MAAM;KACnB,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,0BAA0B,CACxC,OAAY,EACZ,OAAoB,EACpB,KAAyB,EACzB,OAA0D;IAE1D,MAAM,UAAU,GAAG,OAAO,EAAE,UAAU,IAAI,IAAI,CAAC;IAC/C,MAAM,cAAc,GAAG,OAAO,EAAE,cAAc,IAAI,mBAAmB,CAAC;IACtE,MAAM,QAAQ,GAAG,0BAA0B,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;IAE5D,OAAO,CAAC,IAAI,GAAG,KAAK,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;IAE1C,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC1B,OAAO,GAAG,EAAE,CAAC,SAAS,CAAC;IACzB,CAAC;IAED,IAAI,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC;IACxD,MAAM,KAAK,GAAG,WAAW,CAAC,GAAG,EAAE;QAC7B,OAAO,CAAC,IAAI,GAAG,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC;QAC3C,KAAK,GAAG,CAAC,KAAK,GAAG,CAAC,CAAC,GAAG,QAAQ,CAAC,MAAM,CAAC;IACxC,CAAC,EAAE,UAAU,CAAC,CAAC;IAEf,OAAO,GAAG,EAAE,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;AACpC,CAAC;AAED,SAAS,0BAA0B,CAAC,OAAoB,EAAE,KAAyB;IACjF,MAAM,SAAS,GAAG,YAAY,CAAC,OAAO,CAAC,CAAC;IACxC,MAAM,QAAQ,GAAG;QACf,GAAG,aAAa,CAAC,SAAS,CAAC;QAC3B,GAAG,aAAa;KACjB,CAAC;IAEF,MAAM,WAAW,GAAG,iBAAiB,CAAC,OAAO,CAAC,CAAC;IAC/C,IAAI,WAAW,EAAE,CAAC;QAChB,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;IAC7B,CAAC;IAED,MAAM,YAAY,GAAG,kBAAkB,CAAC,OAAO,CAAC,CAAC;IACjD,IAAI,YAAY,EAAE,CAAC;QACjB,QAAQ,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;IAC9B,CAAC;IAED,IAAI,KAAK,CAAC,IAAI,EAAE,CAAC;QACf,QAAQ,CAAC,IAAI,CAAC,gCAAgC,CAAC,CAAC;IAClD,CAAC;IAED,IAAI,KAAK,CAAC,SAAS,EAAE,CAAC;QACpB,QAAQ,CAAC,IAAI,CAAC,iCAAiC,CAAC,CAAC;IACnD,CAAC;IAED,IAAI,KAAK,CAAC,OAAO,EAAE,CAAC;QAClB,QAAQ,CAAC,IAAI,CAAC,mCAAmC,CAAC,CAAC;IACrD,CAAC;IAED,OAAO,MAAM,CAAC,QAAQ,CAAC,CAAC;AAC1B,CAAC;AAED,SAAS,YAAY,CAAC,OAAoB;IACxC,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,GAAG,OAAO,CAAC,KAAK,GAAG,EAAE,CAAC;IAEjD,IAAI,KAAK,IAAI,GAAG;QAAE,OAAO,MAAM,CAAC;IAChC,IAAI,KAAK,IAAI,GAAG;QAAE,OAAO,OAAO,CAAC;IACjC,IAAI,KAAK,IAAI,GAAG;QAAE,OAAO,QAAQ,CAAC;IAClC,IAAI,KAAK,IAAI,IAAI;QAAE,OAAO,OAAO,CAAC;IAClC,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,SAAS,iBAAiB,CAAC,OAAoB;IAC7C,IAAI,OAAO,CAAC,KAAK,KAAK,CAAC,IAAI,OAAO,CAAC,KAAK,KAAK,CAAC,EAAE,CAAC;QAC/C,OAAO,SAAS,CAAC;IACnB,CAAC;IAED,IAAI,OAAO,CAAC,KAAK,GAAG,CAAC,EAAE,CAAC;QACtB,OAAO,eAAe,WAAW,CAAC,OAAO,CAAC,KAAK,EAAE,MAAM,CAAC,KAAK,WAAW,CAAC,OAAO,CAAC,KAAK,EAAE,MAAM,CAAC,GAAG,CAAC;IACrG,CAAC;IAED,OAAO,eAAe,WAAW,CAAC,OAAO,CAAC,KAAK,EAAE,MAAM,CAAC,GAAG,CAAC;AAC9D,CAAC;AAED,SAAS,kBAAkB,CAAC,OAAoB;IAC9C,IAAI,OAAO,CAAC,SAAS,GAAG,OAAO,CAAC,SAAS,KAAK,CAAC,EAAE,CAAC;QAChD,OAAO,SAAS,CAAC;IACnB,CAAC;IAED,OAAO,iBAAiB,OAAO,CAAC,SAAS,OAAO,OAAO,CAAC,SAAS,SAAS,CAAC;AAC7E,CAAC;AAED,SAAS,WAAW,CAAC,KAAa,EAAE,QAAgB,EAAE,MAAe;IACnE,MAAM,IAAI,GAAG,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,MAAM,IAAI,GAAG,QAAQ,GAAG,CAAC,CAAC;IACjE,OAAO,GAAG,KAAK,IAAI,IAAI,EAAE,CAAC;AAC5B,CAAC;AAED,SAAS,MAAM,CAAC,QAAkB;IAChC,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC;AACvC,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,48 +1,54 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@kodus/cli",
|
|
3
|
-
"version": "0.0
|
|
4
|
-
"description": "CLI
|
|
5
|
-
"main": "index.js",
|
|
3
|
+
"version": "0.1.0",
|
|
4
|
+
"description": "Kodus CLI - AI-powered code review from your terminal",
|
|
6
5
|
"type": "module",
|
|
7
|
-
"exports": {
|
|
8
|
-
".": "./index.js",
|
|
9
|
-
"./src/*": "./src/*.js"
|
|
10
|
-
},
|
|
11
|
-
"preferGlobal": true,
|
|
12
6
|
"bin": {
|
|
13
|
-
"kodus": "./index.js"
|
|
7
|
+
"kodus": "./dist/index.js"
|
|
8
|
+
},
|
|
9
|
+
"main": "./dist/index.js",
|
|
10
|
+
"repository": {
|
|
11
|
+
"type": "git",
|
|
12
|
+
"url": "https://github.com/kodustech/cli.git"
|
|
13
|
+
},
|
|
14
|
+
"homepage": "https://kodus.io",
|
|
15
|
+
"bugs": {
|
|
16
|
+
"url": "https://github.com/kodustech/cli/issues"
|
|
14
17
|
},
|
|
15
|
-
"files": [
|
|
16
|
-
"index.js",
|
|
17
|
-
"src/**/*.js",
|
|
18
|
-
"templates/**/*",
|
|
19
|
-
"scripts/**/*.sh"
|
|
20
|
-
],
|
|
21
18
|
"scripts": {
|
|
22
|
-
"
|
|
19
|
+
"build": "tsc",
|
|
20
|
+
"dev": "tsc --watch",
|
|
21
|
+
"start": "node dist/index.js",
|
|
22
|
+
"lint": "eslint src --ext .ts",
|
|
23
|
+
"clean": "rm -rf dist",
|
|
24
|
+
"prepublishOnly": "npm run build"
|
|
23
25
|
},
|
|
24
26
|
"keywords": [
|
|
25
27
|
"kodus",
|
|
28
|
+
"code-review",
|
|
29
|
+
"ai",
|
|
26
30
|
"cli",
|
|
27
|
-
"
|
|
28
|
-
"deployment"
|
|
31
|
+
"git"
|
|
29
32
|
],
|
|
30
33
|
"author": "Kodus",
|
|
31
|
-
"license": "
|
|
32
|
-
"
|
|
33
|
-
"
|
|
34
|
-
"
|
|
34
|
+
"license": "MIT",
|
|
35
|
+
"dependencies": {
|
|
36
|
+
"chalk": "^5.3.0",
|
|
37
|
+
"commander": "^12.1.0",
|
|
38
|
+
"inquirer": "^9.2.23",
|
|
39
|
+
"node-machine-id": "^1.1.12",
|
|
40
|
+
"ora": "^8.0.1",
|
|
41
|
+
"simple-git": "^3.25.0"
|
|
35
42
|
},
|
|
36
|
-
"
|
|
37
|
-
"
|
|
43
|
+
"devDependencies": {
|
|
44
|
+
"@types/inquirer": "^9.0.7",
|
|
45
|
+
"@types/node": "^20.14.9",
|
|
46
|
+
"typescript": "^5.5.3"
|
|
38
47
|
},
|
|
39
|
-
"
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
"
|
|
44
|
-
|
|
45
|
-
"inquirer": "^8.2.6",
|
|
46
|
-
"ora": "^5.4.1"
|
|
47
|
-
}
|
|
48
|
+
"engines": {
|
|
49
|
+
"node": ">=18.0.0"
|
|
50
|
+
},
|
|
51
|
+
"files": [
|
|
52
|
+
"dist"
|
|
53
|
+
]
|
|
48
54
|
}
|
package/index.js
DELETED
|
@@ -1,15 +0,0 @@
|
|
|
1
|
-
#!/usr/bin/env node
|
|
2
|
-
|
|
3
|
-
import { program } from "commander";
|
|
4
|
-
import { setupEnvironment } from "./src/commands/install.js";
|
|
5
|
-
|
|
6
|
-
// CLI version
|
|
7
|
-
program.version("0.0.12");
|
|
8
|
-
|
|
9
|
-
// Install command
|
|
10
|
-
program
|
|
11
|
-
.command("install")
|
|
12
|
-
.description("Install and configure Kodus")
|
|
13
|
-
.action(setupEnvironment);
|
|
14
|
-
|
|
15
|
-
program.parse(process.argv);
|
package/license.md
DELETED
|
@@ -1,21 +0,0 @@
|
|
|
1
|
-
MIT License
|
|
2
|
-
|
|
3
|
-
Copyright (c) 2025 Kodus CLI
|
|
4
|
-
|
|
5
|
-
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
-
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
-
in the Software without restriction, including without limitation the rights
|
|
8
|
-
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
-
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
-
furnished to do so, subject to the following conditions:
|
|
11
|
-
|
|
12
|
-
The above copyright notice and this permission notice shall be included in all
|
|
13
|
-
copies or substantial portions of the Software.
|
|
14
|
-
|
|
15
|
-
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
-
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
-
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
-
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
-
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
-
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
-
SOFTWARE.
|
package/readme.md
DELETED
|
@@ -1,128 +0,0 @@
|
|
|
1
|
-
<div align="center">
|
|
2
|
-
|
|
3
|
-
<p align="center">
|
|
4
|
-
<img src="https://kodus.io/wp-content/uploads/2025/04/koduscli.png" alt="Kodus CLI Banner" />
|
|
5
|
-
</p>
|
|
6
|
-
|
|
7
|
-
**Deploy and manage Kodus AI Code Review Agents in your infrastructure**
|
|
8
|
-
|
|
9
|
-
[](https://github.com/yourusername/kodus-cli/blob/main/LICENSE)
|
|
10
|
-
[](https://www.npmjs.com/package/@kodus/cli)
|
|
11
|
-
[](https://www.npmjs.com/package/@kodus/cli)
|
|
12
|
-
|
|
13
|
-
</div>
|
|
14
|
-
|
|
15
|
-
## 🌟 Overview
|
|
16
|
-
|
|
17
|
-
Kodus CLI is your gateway to running Kodus AI Code Review Agents in your own infrastructure. With a single command, deploy and manage your code review automation system, keeping your code quality high while maintaining full control over your data and infrastructure.
|
|
18
|
-
|
|
19
|
-
## ✨ Features
|
|
20
|
-
|
|
21
|
-
- 🔥 **One-Command Deployment**: Deploy your entire Kodus infrastructure in minutes
|
|
22
|
-
- 🔒 **Self-Hosted**: Keep your code and data within your infrastructure
|
|
23
|
-
- 🤖 **AI-Powered Reviews**: Leverage advanced AI models for code review automation
|
|
24
|
-
- 🔄 **Git Integration**: Seamless integration with GitHub, GitLab, and Bitbucket
|
|
25
|
-
- 📊 **Monitoring & Analytics**: Built-in Grafana dashboards for insights
|
|
26
|
-
- 🐳 **Docker-Powered**: Containerized for consistency and easy management
|
|
27
|
-
- 🔐 **Secure by Default**: Enterprise-grade security with auto-generated credentials
|
|
28
|
-
|
|
29
|
-
## 🚀 Quick Start
|
|
30
|
-
|
|
31
|
-
```bash
|
|
32
|
-
# Install globally
|
|
33
|
-
npm install -g @kodus/cli
|
|
34
|
-
|
|
35
|
-
# Deploy Kodus in your infrastructure
|
|
36
|
-
kodus install
|
|
37
|
-
```
|
|
38
|
-
|
|
39
|
-
## 📖 Documentation
|
|
40
|
-
|
|
41
|
-
### Basic Usage
|
|
42
|
-
|
|
43
|
-
```bash
|
|
44
|
-
# Deploy Kodus
|
|
45
|
-
kodus install
|
|
46
|
-
|
|
47
|
-
# Follow the interactive prompts to configure:
|
|
48
|
-
# - Environment type (local/external)
|
|
49
|
-
# - Git service integration
|
|
50
|
-
# - AI provider settings
|
|
51
|
-
# - Infrastructure preferences
|
|
52
|
-
```
|
|
53
|
-
|
|
54
|
-
### Environment Types
|
|
55
|
-
|
|
56
|
-
- **Local Development**
|
|
57
|
-
|
|
58
|
-
- Perfect for testing and development
|
|
59
|
-
- Runs everything on localhost
|
|
60
|
-
- Ideal for small teams and individual developers
|
|
61
|
-
|
|
62
|
-
- **External Deployment**
|
|
63
|
-
- Production-ready setup
|
|
64
|
-
- Configurable for any domain
|
|
65
|
-
- Suitable for enterprise environments
|
|
66
|
-
|
|
67
|
-
### Supported Git Services
|
|
68
|
-
|
|
69
|
-
| Service | Features |
|
|
70
|
-
| --------- | ------------------------------------------- |
|
|
71
|
-
| GitHub | Pull Request Reviews, Issue Analysis |
|
|
72
|
-
| GitLab | Merge Request Reviews, Pipeline Integration |
|
|
73
|
-
| Bitbucket | Pull Request Reviews, Repository Analysis |
|
|
74
|
-
|
|
75
|
-
### AI Integration
|
|
76
|
-
|
|
77
|
-
Kodus supports multiple AI providers for code review:
|
|
78
|
-
|
|
79
|
-
- OpenAI (GPT-4)
|
|
80
|
-
- Google AI
|
|
81
|
-
- Anthropic (Claude)
|
|
82
|
-
- Novita AI
|
|
83
|
-
- Vertex AI
|
|
84
|
-
|
|
85
|
-
## 🔒 Security
|
|
86
|
-
|
|
87
|
-
- All data stays within your infrastructure
|
|
88
|
-
- No code or sensitive information is sent to external servers
|
|
89
|
-
- Enterprise-grade encryption for all communications
|
|
90
|
-
- Role-based access control
|
|
91
|
-
- Audit logging for all operations
|
|
92
|
-
|
|
93
|
-
## 🤝 Contributing
|
|
94
|
-
|
|
95
|
-
We welcome contributions!
|
|
96
|
-
|
|
97
|
-
```bash
|
|
98
|
-
# Clone the repository
|
|
99
|
-
git clone https://github.com/yourusername/kodus-cli.git
|
|
100
|
-
|
|
101
|
-
# Install dependencies
|
|
102
|
-
npm install
|
|
103
|
-
|
|
104
|
-
# Run tests
|
|
105
|
-
npm test
|
|
106
|
-
```
|
|
107
|
-
|
|
108
|
-
## 📜 License
|
|
109
|
-
|
|
110
|
-
MIT © Kodus
|
|
111
|
-
|
|
112
|
-
## 🌟 Star History
|
|
113
|
-
|
|
114
|
-
[](https://star-history.com/#yourusername/kodus-cli&Date)
|
|
115
|
-
|
|
116
|
-
## 🙏 Acknowledgments
|
|
117
|
-
|
|
118
|
-
Special thanks to all our contributors and the amazing open-source community.
|
|
119
|
-
|
|
120
|
-
---
|
|
121
|
-
|
|
122
|
-
<div align="center">
|
|
123
|
-
|
|
124
|
-
**[Website](https://kodus.ios)** • **[Documentation](https://docs.kodus.io)** • **[Twitter](https://twitter.com/kodustech)** • **[Discord](https://discord.gg/VkbfjbZr)**
|
|
125
|
-
|
|
126
|
-
Made with ❤️ by the Kodus Team
|
|
127
|
-
|
|
128
|
-
</div>
|
package/scripts/setup-db.sh
DELETED
|
@@ -1,77 +0,0 @@
|
|
|
1
|
-
#!/bin/bash
|
|
2
|
-
# scripts/setup-db.sh
|
|
3
|
-
|
|
4
|
-
echo "Setting up database..."
|
|
5
|
-
|
|
6
|
-
# Criar arquivo de configuração dentro do container
|
|
7
|
-
docker-compose exec -T kodus-orchestrator bash -c 'cat > /usr/src/app/datasource.js << EOL
|
|
8
|
-
const MainSeeder = require("./dist/config/database/typeorm/seed/main.seeder").default;
|
|
9
|
-
const { DataSource } = require("typeorm");
|
|
10
|
-
module.exports = new DataSource({
|
|
11
|
-
type: "postgres",
|
|
12
|
-
host: process.env.API_PG_DB_HOST,
|
|
13
|
-
port: 5432,
|
|
14
|
-
username: process.env.API_PG_DB_USERNAME,
|
|
15
|
-
password: process.env.API_PG_DB_PASSWORD,
|
|
16
|
-
database: process.env.API_PG_DB_DATABASE,
|
|
17
|
-
ssl: false,
|
|
18
|
-
entities: ["./dist/core/infrastructure/adapters/repositories/typeorm/schema/*.model.js",],
|
|
19
|
-
migrations: ["./dist/config/database/typeorm/migrations/*.js"],
|
|
20
|
-
seeds: [MainSeeder]
|
|
21
|
-
});
|
|
22
|
-
EOL'
|
|
23
|
-
|
|
24
|
-
# Criar arquivo de configuração temporário para o seed
|
|
25
|
-
docker-compose exec -T kodus-orchestrator bash -c 'cat > /usr/src/app/seed-datasource.js << EOL
|
|
26
|
-
const MainSeeder = require("./dist/config/database/typeorm/seed/main.seeder").default;
|
|
27
|
-
const { DataSource } = require("typeorm");
|
|
28
|
-
const dataSourceInstance = new DataSource({
|
|
29
|
-
type: "postgres",
|
|
30
|
-
host: process.env.API_PG_DB_HOST,
|
|
31
|
-
port: 5432,
|
|
32
|
-
username: process.env.API_PG_DB_USERNAME,
|
|
33
|
-
password: process.env.API_PG_DB_PASSWORD,
|
|
34
|
-
database: process.env.API_PG_DB_DATABASE,
|
|
35
|
-
ssl: false,
|
|
36
|
-
entities: ["./dist/core/infrastructure/adapters/repositories/typeorm/schema/*.model.js",],
|
|
37
|
-
seeds: [MainSeeder]
|
|
38
|
-
});
|
|
39
|
-
module.exports = { dataSourceInstance };
|
|
40
|
-
EOL'
|
|
41
|
-
|
|
42
|
-
# Criar extensão vector no banco de dados
|
|
43
|
-
echo "Creating vector extension..."
|
|
44
|
-
docker-compose exec -T kodus-orchestrator bash -c 'cd /usr/src/app && yarn typeorm query "CREATE EXTENSION IF NOT EXISTS vector;" -d datasource.js'
|
|
45
|
-
|
|
46
|
-
# Verificar se a extensão foi criada com sucesso
|
|
47
|
-
echo "Verifying vector extension..."
|
|
48
|
-
docker-compose exec -T kodus-orchestrator bash -c 'cd /usr/src/app && yarn typeorm query "SELECT extname, extversion FROM pg_extension WHERE extname = '\''vector'\'';" -d datasource.js'
|
|
49
|
-
|
|
50
|
-
# Rodar migrations dentro do container
|
|
51
|
-
echo "Running migrations..."
|
|
52
|
-
docker-compose exec -T kodus-orchestrator bash -c 'cd /usr/src/app && yarn typeorm migration:run -d datasource.js'
|
|
53
|
-
|
|
54
|
-
# Rodar seeds dentro do container com o novo arquivo de configuração
|
|
55
|
-
echo "Running seeds..."
|
|
56
|
-
docker-compose exec -T kodus-orchestrator bash -c '
|
|
57
|
-
cd /usr/src/app &&
|
|
58
|
-
export NODE_PATH=/usr/src/app/dist &&
|
|
59
|
-
node -e "
|
|
60
|
-
const { runSeeders } = require('\''typeorm-extension'\'');
|
|
61
|
-
const { dataSourceInstance } = require('\''./seed-datasource.js'\'');
|
|
62
|
-
|
|
63
|
-
async function runSeeds() {
|
|
64
|
-
try {
|
|
65
|
-
await dataSourceInstance.initialize();
|
|
66
|
-
await runSeeders(dataSourceInstance);
|
|
67
|
-
process.exit(0);
|
|
68
|
-
} catch (error) {
|
|
69
|
-
console.error('\''Error running seeds:'\'', error);
|
|
70
|
-
process.exit(1);
|
|
71
|
-
}
|
|
72
|
-
}
|
|
73
|
-
|
|
74
|
-
runSeeds();
|
|
75
|
-
"'
|
|
76
|
-
|
|
77
|
-
echo "Database setup completed!"
|