@cynicalsally/cli 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.
Files changed (75) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +332 -0
  3. package/dist/commands/login.d.ts +3 -0
  4. package/dist/commands/login.d.ts.map +1 -0
  5. package/dist/commands/login.js +54 -0
  6. package/dist/commands/login.js.map +1 -0
  7. package/dist/commands/logout.d.ts +3 -0
  8. package/dist/commands/logout.d.ts.map +1 -0
  9. package/dist/commands/logout.js +15 -0
  10. package/dist/commands/logout.js.map +1 -0
  11. package/dist/commands/mcp.d.ts +3 -0
  12. package/dist/commands/mcp.d.ts.map +1 -0
  13. package/dist/commands/mcp.js +47 -0
  14. package/dist/commands/mcp.js.map +1 -0
  15. package/dist/commands/results.d.ts +3 -0
  16. package/dist/commands/results.d.ts.map +1 -0
  17. package/dist/commands/results.js +60 -0
  18. package/dist/commands/results.js.map +1 -0
  19. package/dist/commands/roast.d.ts +3 -0
  20. package/dist/commands/roast.d.ts.map +1 -0
  21. package/dist/commands/roast.js +233 -0
  22. package/dist/commands/roast.js.map +1 -0
  23. package/dist/commands/tools.d.ts +8 -0
  24. package/dist/commands/tools.d.ts.map +1 -0
  25. package/dist/commands/tools.js +460 -0
  26. package/dist/commands/tools.js.map +1 -0
  27. package/dist/commands/upgrade.d.ts +3 -0
  28. package/dist/commands/upgrade.d.ts.map +1 -0
  29. package/dist/commands/upgrade.js +82 -0
  30. package/dist/commands/upgrade.js.map +1 -0
  31. package/dist/commands/usage.d.ts +3 -0
  32. package/dist/commands/usage.d.ts.map +1 -0
  33. package/dist/commands/usage.js +87 -0
  34. package/dist/commands/usage.js.map +1 -0
  35. package/dist/index.d.ts +3 -0
  36. package/dist/index.d.ts.map +1 -0
  37. package/dist/index.js +60 -0
  38. package/dist/index.js.map +1 -0
  39. package/dist/mcp-server.d.ts +12 -0
  40. package/dist/mcp-server.d.ts.map +1 -0
  41. package/dist/mcp-server.js +266 -0
  42. package/dist/mcp-server.js.map +1 -0
  43. package/dist/utils/api.d.ts +108 -0
  44. package/dist/utils/api.d.ts.map +1 -0
  45. package/dist/utils/api.js +79 -0
  46. package/dist/utils/api.js.map +1 -0
  47. package/dist/utils/background.d.ts +9 -0
  48. package/dist/utils/background.d.ts.map +1 -0
  49. package/dist/utils/background.js +91 -0
  50. package/dist/utils/background.js.map +1 -0
  51. package/dist/utils/config.d.ts +13 -0
  52. package/dist/utils/config.d.ts.map +1 -0
  53. package/dist/utils/config.js +65 -0
  54. package/dist/utils/config.js.map +1 -0
  55. package/dist/utils/files.d.ts +14 -0
  56. package/dist/utils/files.d.ts.map +1 -0
  57. package/dist/utils/files.js +141 -0
  58. package/dist/utils/files.js.map +1 -0
  59. package/dist/utils/flavor.d.ts +48 -0
  60. package/dist/utils/flavor.d.ts.map +1 -0
  61. package/dist/utils/flavor.js +79 -0
  62. package/dist/utils/flavor.js.map +1 -0
  63. package/dist/utils/git.d.ts +29 -0
  64. package/dist/utils/git.d.ts.map +1 -0
  65. package/dist/utils/git.js +90 -0
  66. package/dist/utils/git.js.map +1 -0
  67. package/dist/utils/output.d.ts +5 -0
  68. package/dist/utils/output.d.ts.map +1 -0
  69. package/dist/utils/output.js +206 -0
  70. package/dist/utils/output.js.map +1 -0
  71. package/dist/utils/report.d.ts +12 -0
  72. package/dist/utils/report.d.ts.map +1 -0
  73. package/dist/utils/report.js +190 -0
  74. package/dist/utils/report.js.map +1 -0
  75. package/package.json +54 -0
@@ -0,0 +1,233 @@
1
+ import { Command } from "commander";
2
+ import chalk from "chalk";
3
+ import ora from "ora";
4
+ import { resolve } from "node:path";
5
+ import { statSync } from "node:fs";
6
+ import { readFileForReview, collectFiles } from "../utils/files.js";
7
+ import { submitRoast } from "../utils/api.js";
8
+ import { displayRoast, printSally, handleApiError } from "../utils/output.js";
9
+ import { saveReport } from "../utils/report.js";
10
+ import { askBackground, spawnBackgroundWorker, saveResult, sendNotification } from "../utils/background.js";
11
+ import { getFlavor } from "../utils/flavor.js";
12
+ import { showToolsHint, getEmail } from "../utils/config.js";
13
+ import { isGitRepo, getStagedChanges, getUnstagedChanges, getLastCommitDiff, getBranchDiff, parseDiffToFiles } from "../utils/git.js";
14
+ export const roastCommand = new Command("roast")
15
+ .description("Roast your code. Files, directories, staged changes, or branch diffs.")
16
+ .argument("[paths...]", "Files or directories to roast")
17
+ .option("--staged", "Roast staged git changes")
18
+ .option("--diff <branch>", "Roast diff against a branch (e.g. main)")
19
+ .option("-m, --mode <mode>", "Review mode: quick (default) or full_truth", "quick")
20
+ .option("--tone <tone>", "Tone: cynical, neutral, or professional", "cynical")
21
+ .option("--lang <lang>", "Language for the roast", "en")
22
+ .option("--json", "Output raw JSON (for piping/CI)")
23
+ .option("--fail-under <score>", "Exit with code 1 if score is below threshold", parseFloat)
24
+ .option("--ci", "CI mode: compact output + exit codes")
25
+ .option("--bg", "Run Full Truth in the background — get notified when done")
26
+ .option("--bg-worker")
27
+ .action(async (paths, options) => {
28
+ // ── Collect files ──────────────────────────────────────────────────
29
+ let files = [];
30
+ let source = "";
31
+ try {
32
+ if (options.staged) {
33
+ if (!isGitRepo()) {
34
+ console.log(chalk.red("\nThis isn't a git repo.") + chalk.gray(" I need git for --staged. I'm demanding like that.\n"));
35
+ process.exit(1);
36
+ }
37
+ const diff = getStagedChanges();
38
+ if (!diff.trim()) {
39
+ console.log(chalk.yellow("\nNothing staged.") + " I can't roast air. " + chalk.cyan("git add <files>") + " first.\n");
40
+ process.exit(1);
41
+ }
42
+ files = parseDiffToFiles(diff);
43
+ source = "staged changes";
44
+ }
45
+ else if (options.diff) {
46
+ if (!isGitRepo()) {
47
+ console.log(chalk.red("\nThis isn't a git repo.") + chalk.gray(" --diff needs git. Obviously.\n"));
48
+ process.exit(1);
49
+ }
50
+ const diff = getBranchDiff(options.diff);
51
+ if (!diff.trim()) {
52
+ console.log(chalk.yellow("\nNo diff against ") + chalk.cyan(options.diff) + chalk.yellow(". Either you haven't changed anything, or you're diffing against yourself. Both are concerning.\n"));
53
+ process.exit(1);
54
+ }
55
+ files = parseDiffToFiles(diff);
56
+ source = `diff vs ${options.diff}`;
57
+ }
58
+ else if (paths.length > 0) {
59
+ for (const p of paths) {
60
+ const resolved = resolve(p);
61
+ let stat;
62
+ try {
63
+ stat = statSync(resolved);
64
+ }
65
+ catch {
66
+ console.log(chalk.red(`\nCan't find ${p}.`) + chalk.gray(" Did you typo your own file path? Classic.\n"));
67
+ process.exit(1);
68
+ }
69
+ if (stat.isDirectory()) {
70
+ const collected = collectFiles(resolved);
71
+ files.push(...collected);
72
+ }
73
+ else if (stat.isFile()) {
74
+ const file = readFileForReview(resolved);
75
+ if (file) {
76
+ files.push(file);
77
+ }
78
+ else {
79
+ console.log(chalk.yellow(`Skipped: ${p}`) + chalk.gray(" — binary, too large, or something I refuse to read."));
80
+ }
81
+ }
82
+ }
83
+ source = paths.join(", ");
84
+ }
85
+ else {
86
+ // ── Smart auto-detect: no args = roast current directory ───────
87
+ if (isGitRepo()) {
88
+ // Try git-aware detection first
89
+ const staged = getStagedChanges();
90
+ if (staged.trim()) {
91
+ files = parseDiffToFiles(staged);
92
+ source = "staged changes";
93
+ console.log(chalk.gray("\n Found your staged changes. Let's see what you think is ready.\n"));
94
+ }
95
+ if (files.length === 0) {
96
+ const unstaged = getUnstagedChanges();
97
+ if (unstaged.trim()) {
98
+ files = parseDiffToFiles(unstaged);
99
+ source = "unstaged changes";
100
+ console.log(chalk.gray("\n Found uncommitted changes. Too scared to commit? Let me see why.\n"));
101
+ }
102
+ }
103
+ if (files.length === 0) {
104
+ try {
105
+ const lastCommit = getLastCommitDiff();
106
+ if (lastCommit.trim()) {
107
+ files = parseDiffToFiles(lastCommit);
108
+ source = "last commit";
109
+ console.log(chalk.gray("\n Nothing new? Fine, I'll roast your last commit.\n"));
110
+ }
111
+ }
112
+ catch {
113
+ // No commits yet — fall through to directory scan
114
+ }
115
+ }
116
+ }
117
+ // Fallback: just scan the current directory
118
+ if (files.length === 0) {
119
+ const cwd = resolve(".");
120
+ const collected = collectFiles(cwd);
121
+ if (collected.length > 0) {
122
+ files = collected;
123
+ source = ".";
124
+ console.log(chalk.gray(`\n Scanning this directory. Let's see what we're working with.\n`));
125
+ }
126
+ }
127
+ if (files.length === 0) {
128
+ console.log(chalk.yellow("\nThere's literally nothing here to roast.") +
129
+ chalk.gray(" No code files found. Is this even a project?\n"));
130
+ process.exit(1);
131
+ }
132
+ }
133
+ }
134
+ catch (err) {
135
+ const msg = err instanceof Error ? err.message : String(err);
136
+ console.log(chalk.red(`\nSomething broke: ${msg}`) + chalk.gray("\nNot my fault. Probably.\n"));
137
+ process.exit(1);
138
+ }
139
+ if (files.length === 0) {
140
+ console.log(chalk.yellow("\nNo reviewable files found.") + chalk.gray(" Everything was binary, too large, or otherwise beneath me.\n"));
141
+ process.exit(1);
142
+ }
143
+ // ── Call API ───────────────────────────────────────────────────────
144
+ const mode = options.mode === "quick" ? "quick" : "full_truth";
145
+ const fileCount = `${files.length} file${files.length !== 1 ? "s" : ""}`;
146
+ const f = getFlavor();
147
+ // Sally appears first — always
148
+ if (!options.bgWorker) {
149
+ printSally();
150
+ console.log();
151
+ }
152
+ // Background mode for Full Truth
153
+ if (mode === "full_truth" && !options.bgWorker) {
154
+ const wantBg = options.bg || (!options.json && !options.ci && await askBackground(chalk.magenta(` ${f.bg_prompt}`) + "\n"));
155
+ if (wantBg) {
156
+ const bgArgs = [];
157
+ for (const p of paths)
158
+ bgArgs.push(p);
159
+ if (options.staged)
160
+ bgArgs.push("--staged");
161
+ if (options.diff)
162
+ bgArgs.push("--diff", options.diff);
163
+ bgArgs.push("-m", "full_truth");
164
+ if (options.tone !== "cynical")
165
+ bgArgs.push("--tone", options.tone);
166
+ if (options.lang !== "en")
167
+ bgArgs.push("--lang", options.lang);
168
+ console.log(chalk.magenta(` ${f.bg_confirmed}`));
169
+ console.log(chalk.gray(`\n ${f.bg_results_hint}\n`));
170
+ spawnBackgroundWorker(bgArgs, process.cwd());
171
+ return;
172
+ }
173
+ }
174
+ const spinnerText = mode === "full_truth"
175
+ ? `${f.spinner_ft} (${source})`
176
+ : `${f.spinner_quick} (${source})`;
177
+ const spinner = ora({ text: options.bgWorker ? "Background review running..." : spinnerText, color: "magenta" }).start();
178
+ try {
179
+ const response = await submitRoast({
180
+ type: "code",
181
+ files,
182
+ mode,
183
+ tone: options.tone || "cynical",
184
+ lang: options.lang || "en",
185
+ });
186
+ spinner.stop();
187
+ if (options.bgWorker) {
188
+ // Background worker: save result + send notification, no display
189
+ const savedPath = saveReport(response, source);
190
+ saveResult(response, source);
191
+ sendNotification("Sally's done.", `Score: ${response.data.score.toFixed(1)}/10 — run 'sally results' to see the verdict.`);
192
+ if (savedPath) {
193
+ sendNotification("Report saved", savedPath);
194
+ }
195
+ process.exit(0);
196
+ }
197
+ else if (options.json) {
198
+ console.log(JSON.stringify(response, null, 2));
199
+ }
200
+ else {
201
+ displayRoast(response);
202
+ // Show premium tools hint (once per install, not for Full Suite users)
203
+ if (mode === "quick" && !getEmail() && showToolsHint()) {
204
+ console.log(chalk.gray(" " + "\u2500".repeat(56)));
205
+ console.log();
206
+ console.log(chalk.gray(" You also get ") + chalk.white("1 free trial") + chalk.gray(" of each premium tool:"));
207
+ console.log(chalk.cyan(" sally explain") + chalk.gray(" sally refactor") + chalk.gray(" sally brainstorm"));
208
+ console.log(chalk.cyan(" sally frontend") + chalk.gray(" sally marketing") + chalk.gray(" sally review-pr"));
209
+ console.log();
210
+ }
211
+ // Auto-save Full Truth reviews as markdown report
212
+ if (mode === "full_truth") {
213
+ const savedPath = saveReport(response, source);
214
+ if (savedPath) {
215
+ console.log(chalk.gray(" 💾 ") + chalk.gray("Saved this verdict to ") + chalk.cyan(savedPath));
216
+ console.log();
217
+ }
218
+ }
219
+ }
220
+ if (options.failUnder !== undefined && response.data.score < options.failUnder) {
221
+ if (!options.json) {
222
+ console.log(chalk.red(`\n ${response.data.score.toFixed(1)}/10 — below your threshold of ${options.failUnder.toFixed(1)}. Told you.\n`));
223
+ }
224
+ process.exit(1);
225
+ }
226
+ }
227
+ catch (err) {
228
+ spinner.stop();
229
+ handleApiError(err);
230
+ process.exit(1);
231
+ }
232
+ });
233
+ //# sourceMappingURL=roast.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"roast.js","sourceRoot":"","sources":["../../src/commands/roast.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,8 @@
1
+ import { Command } from "commander";
2
+ export declare const explainCommand: Command;
3
+ export declare const reviewPrCommand: Command;
4
+ export declare const refactorCommand: Command;
5
+ export declare const brainstormCommand: Command;
6
+ export declare const frontendCommand: Command;
7
+ export declare const marketingCommand: Command;
8
+ //# sourceMappingURL=tools.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tools.d.ts","sourceRoot":"","sources":["../../src/commands/tools.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAoUpC,eAAO,MAAM,cAAc,SAQvB,CAAC;AAEL,eAAO,MAAM,eAAe,SA0DxB,CAAC;AAEL,eAAO,MAAM,eAAe,SAQxB,CAAC;AAEL,eAAO,MAAM,iBAAiB,SA+B1B,CAAC;AAEL,eAAO,MAAM,eAAe,SAQxB,CAAC;AAEL,eAAO,MAAM,gBAAgB,SAmDzB,CAAC"}