@kiwidata/grimoire 0.2.0 → 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.
Files changed (36) hide show
  1. package/AGENTS.md +2 -2
  2. package/dist/core/check-complexity.d.ts +4 -0
  3. package/dist/core/check-complexity.d.ts.map +1 -0
  4. package/dist/core/check-complexity.js +79 -0
  5. package/dist/core/check-complexity.js.map +1 -0
  6. package/dist/core/check-llm.d.ts +5 -0
  7. package/dist/core/check-llm.d.ts.map +1 -0
  8. package/dist/core/check-llm.js +108 -0
  9. package/dist/core/check-llm.js.map +1 -0
  10. package/dist/core/check.d.ts +1 -2
  11. package/dist/core/check.d.ts.map +1 -1
  12. package/dist/core/check.js +2 -179
  13. package/dist/core/check.js.map +1 -1
  14. package/dist/core/init-config.d.ts +22 -0
  15. package/dist/core/init-config.d.ts.map +1 -0
  16. package/dist/core/init-config.js +118 -0
  17. package/dist/core/init-config.js.map +1 -0
  18. package/dist/core/init-prompts.d.ts +8 -0
  19. package/dist/core/init-prompts.d.ts.map +1 -0
  20. package/dist/core/init-prompts.js +166 -0
  21. package/dist/core/init-prompts.js.map +1 -0
  22. package/dist/core/init.d.ts +0 -1
  23. package/dist/core/init.d.ts.map +1 -1
  24. package/dist/core/init.js +3 -279
  25. package/dist/core/init.js.map +1 -1
  26. package/package.json +1 -1
  27. package/skills/grimoire-apply/SKILL.md +3 -2
  28. package/skills/grimoire-draft/SKILL.md +5 -3
  29. package/skills/grimoire-plan/SKILL.md +4 -1
  30. package/skills/grimoire-pr/SKILL.md +14 -15
  31. package/skills/grimoire-refactor/SKILL.md +3 -1
  32. package/skills/references/code-quality.md +1 -1
  33. package/skills/references/principles.md +4 -3
  34. package/skills/references/refactor-scan-categories.md +15 -0
  35. package/skills/references/review-personas.md +30 -13
  36. package/skills/references/testing-contracts.md +19 -0
package/AGENTS.md CHANGED
@@ -12,9 +12,9 @@ These principles govern all grimoire work — drafting, planning, reviewing, and
12
12
 
13
13
  **Don't abstract early.** Three copies of similar code is fine. An abstraction should be extracted when a clear, stable pattern has emerged — not when you see the first hint of repetition. Wrong abstractions are harder to fix than duplicated code.
14
14
 
15
- **Solve the problem in front of you.** Do not add configurability, feature flags, extension points, plugin systems, or generic interfaces unless the task specifically calls for them. Build for the current requirement, not imagined future ones.
15
+ **YAGNI — solve the problem in front of you.** You aren't gonna need it. Do not add configurability, feature flags, extension points, plugin systems, or generic interfaces unless the task specifically calls for them. Build for the current requirement, not imagined future ones — a speculative need is the signal to *skip it* and say so in one line, not to build it.
16
16
 
17
- **Use what exists.** Before writing anything, check what's already in the codebase. Use existing utilities, patterns, conventions, and libraries. Read `.grimoire/docs/` if area docs exist. A new dependency or utility needs a reason.
17
+ **Use what exists — the laziness ladder.** Climb down to the least code that works, stopping at the first rung that holds: skip it (YAGNI) → standard library → native platform feature (`<input type="date">` over a picker lib, CSS over JS, a DB constraint over app code) → an already-installed dependency → one line → only then the minimum new code. Check what's already in the codebase first; use existing utilities, patterns, conventions, and libraries; read `.grimoire/docs/` if area docs exist. A new dependency or utility needs a reason — never add one for what the stdlib or platform already does.
18
18
 
19
19
  **Small surface area.** Fewer public functions, fewer parameters, fewer options. A function that does one thing with two parameters beats one that does three things with six parameters and a config object.
20
20
 
@@ -0,0 +1,4 @@
1
+ import type { GrimoireConfig } from "../utils/config.js";
2
+ import type { StepResult } from "./check.js";
3
+ export declare function runComplexityStep(root: string, config: GrimoireConfig): Promise<StepResult>;
4
+ //# sourceMappingURL=check-complexity.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"check-complexity.d.ts","sourceRoot":"","sources":["../../src/core/check-complexity.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AACzD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AA0D7C,wBAAsB,iBAAiB,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,cAAc,GAAG,OAAO,CAAC,UAAU,CAAC,CAqBjG"}
@@ -0,0 +1,79 @@
1
+ import { execFile } from "node:child_process";
2
+ import { promisify } from "node:util";
3
+ const execFileAsync = promisify(execFile);
4
+ async function tryRadon(root) {
5
+ try {
6
+ await execFileAsync("which", ["radon"]);
7
+ const { stdout, stderr } = await execFileAsync("sh", [
8
+ "-c",
9
+ "radon cc . -a -nc --exclude 'node_modules,.venv,dist,migrations' 2>&1 || true",
10
+ ], { cwd: root, timeout: 60_000 });
11
+ const output = (stdout + stderr).trim();
12
+ const hasHighComplexity = /\b[C-F]\s+\(\d+\)/.test(output) || /\b[C-F]\b/.test(output);
13
+ return { output, hasHighComplexity };
14
+ }
15
+ catch {
16
+ return null;
17
+ }
18
+ }
19
+ async function tryEslintComplexity(root) {
20
+ try {
21
+ await execFileAsync("which", ["npx"]);
22
+ const { stdout, stderr } = await execFileAsync("sh", [
23
+ "-c",
24
+ "npx eslint --rule 'complexity: [warn, 10]' --ext .ts,.tsx,.js,.jsx src/ 2>&1 || true",
25
+ ], { cwd: root, timeout: 60_000 });
26
+ const output = (stdout + stderr).trim();
27
+ // Match ESLint complexity rule output (" complexity" at end of warning line).
28
+ // Avoids false positives from parsing errors or unrelated warnings.
29
+ const hasWarnings = / complexity$/m.test(output);
30
+ return { output, hasWarnings };
31
+ }
32
+ catch {
33
+ return null;
34
+ }
35
+ }
36
+ async function checkPythonComplexity(root, start) {
37
+ const radon = await tryRadon(root);
38
+ if (!radon)
39
+ return null;
40
+ return {
41
+ step: "complexity",
42
+ status: radon.hasHighComplexity ? "fail" : "pass",
43
+ duration: Date.now() - start,
44
+ output: radon.output || "No high-complexity functions found.",
45
+ };
46
+ }
47
+ async function checkJsComplexity(root, start) {
48
+ const eslint = await tryEslintComplexity(root);
49
+ if (!eslint)
50
+ return null;
51
+ return {
52
+ step: "complexity",
53
+ status: eslint.hasWarnings ? "fail" : "pass",
54
+ duration: Date.now() - start,
55
+ output: eslint.output || "No high-complexity functions found.",
56
+ };
57
+ }
58
+ export async function runComplexityStep(root, config) {
59
+ const start = Date.now();
60
+ const lang = config.project.language;
61
+ if (!lang || lang === "python") {
62
+ const result = await checkPythonComplexity(root, start);
63
+ if (result)
64
+ return result;
65
+ }
66
+ if (!lang || ["typescript", "javascript"].includes(lang ?? "")) {
67
+ const result = await checkJsComplexity(root, start);
68
+ if (result)
69
+ return result;
70
+ }
71
+ return {
72
+ step: "complexity",
73
+ status: "skip",
74
+ duration: Date.now() - start,
75
+ output: "",
76
+ reason: "no complexity tool found (install radon for Python or eslint for JS/TS)",
77
+ };
78
+ }
79
+ //# sourceMappingURL=check-complexity.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"check-complexity.js","sourceRoot":"","sources":["../../src/core/check-complexity.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,5 @@
1
+ import type { ToolConfig } from "../utils/config.js";
2
+ import type { StepResult } from "./check.js";
3
+ export declare function runLlmStep(step: string, prompt: string, llmCommand: string, root: string, changedOnly: boolean): Promise<StepResult>;
4
+ export declare function getBuiltinLlmFallback(step: string): ToolConfig | undefined;
5
+ //# sourceMappingURL=check-llm.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"check-llm.d.ts","sourceRoot":"","sources":["../../src/core/check-llm.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AACrD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAuC7C,wBAAsB,UAAU,CAC9B,IAAI,EAAE,MAAM,EACZ,MAAM,EAAE,MAAM,EACd,UAAU,EAAE,MAAM,EAClB,IAAI,EAAE,MAAM,EACZ,WAAW,EAAE,OAAO,GACnB,OAAO,CAAC,UAAU,CAAC,CA2BrB;AA2CD,wBAAgB,qBAAqB,CAAC,IAAI,EAAE,MAAM,GAAG,UAAU,GAAG,SAAS,CAE1E"}
@@ -0,0 +1,108 @@
1
+ import { execFile } from "node:child_process";
2
+ import { promisify } from "node:util";
3
+ import { simpleGit } from "simple-git";
4
+ import { spawnWithStdin } from "../utils/spawn.js";
5
+ const execFileAsync = promisify(execFile);
6
+ const MAX_DIFF_CHARS = 40_000;
7
+ async function resolveChangedFiles(root) {
8
+ try {
9
+ const git = simpleGit(root);
10
+ const nameOnly = await git.diff(["--name-only", "HEAD"]);
11
+ const files = nameOnly.trim().split("\n").filter(Boolean);
12
+ if (files.length > 0) {
13
+ const diff = await git.diff(["HEAD", "--", ...files]);
14
+ return { files, diff };
15
+ }
16
+ const stagedNames = await git.diff(["--name-only", "--cached"]);
17
+ const stagedFiles = stagedNames.trim().split("\n").filter(Boolean);
18
+ const diff = await git.diff(["--cached", "--", ...stagedFiles]);
19
+ return { files: stagedFiles, diff };
20
+ }
21
+ catch {
22
+ return { files: [], diff: "" };
23
+ }
24
+ }
25
+ function buildLlmPrompt(prompt, files, diff) {
26
+ // Strip newlines and backticks from each filename to prevent prompt injection.
27
+ const safeFiles = files.map((f) => `\`${f.replace(/[\n\r`]/g, "")}\``).filter((f) => f.length > 2);
28
+ const fileList = safeFiles.length > 0 ? `\n\nFiles changed:\n${safeFiles.join("\n")}` : "";
29
+ const safeDiff = diff.replace(/`{3,}/g, "```");
30
+ const diffSection = safeDiff
31
+ ? `\n\nDiff:\n\`\`\`diff\n${safeDiff.slice(0, MAX_DIFF_CHARS)}\n\`\`\``
32
+ : "";
33
+ return `${prompt}${fileList}${diffSection}\n\nOnly flag issues directly observable in the diff above. Do not infer issues from filenames or speculate about code not shown.\n\nRespond with PASS or FAIL as the very first word on the very first line (no markdown, no asterisks, no extra words on that line). Then explain any issues on subsequent lines.`;
34
+ }
35
+ function parseLlmVerdict(output) {
36
+ const firstLine = output.trim().split("\n").map((l) => l.trim()).find(Boolean)?.toUpperCase() ?? "";
37
+ return /\bPASS\b/.test(firstLine) && !/\bFAIL\b/.test(firstLine);
38
+ }
39
+ export async function runLlmStep(step, prompt, llmCommand, root, changedOnly) {
40
+ const start = Date.now();
41
+ try {
42
+ await execFileAsync("which", [llmCommand]);
43
+ }
44
+ catch {
45
+ return { step, status: "skip", duration: Date.now() - start, output: "", reason: `${llmCommand} not found` };
46
+ }
47
+ const { files, diff } = changedOnly ? await resolveChangedFiles(root) : { files: [], diff: "" };
48
+ if (changedOnly && files.length === 0) {
49
+ return { step, status: "pass", duration: Date.now() - start, output: "No changed files to review." };
50
+ }
51
+ try {
52
+ const output = await spawnWithStdin(llmCommand, ["--print"], buildLlmPrompt(prompt, files, diff), root);
53
+ return { step, status: parseLlmVerdict(output) ? "pass" : "fail", duration: Date.now() - start, output };
54
+ }
55
+ catch (err) {
56
+ return {
57
+ step,
58
+ status: "error",
59
+ duration: Date.now() - start,
60
+ output: err instanceof Error ? err.message : String(err),
61
+ reason: "LLM command failed",
62
+ };
63
+ }
64
+ }
65
+ const BUILTIN_LLM_FALLBACKS = {
66
+ security: {
67
+ name: "llm",
68
+ prompt: `Review these changed files for security vulnerabilities. For each finding:
69
+ 1. Describe the vulnerability
70
+ 2. Tag it with the relevant OWASP Top 10 category (e.g., A01:2021-Broken Access Control) and CWE ID (e.g., CWE-89)
71
+ 3. Rate severity: critical / high / medium / low
72
+
73
+ Check specifically for:
74
+ - SQL injection (CWE-89) — string concatenation in queries instead of parameterized queries
75
+ - XSS (CWE-79) — unescaped user input in HTML/template output
76
+ - Broken authentication (CWE-287) — custom token generation, weak session management, missing auth checks
77
+ - Insecure cryptography (CWE-327) — MD5/SHA1 for passwords, custom crypto, weak random
78
+ - SSRF (CWE-918) — user-controlled URLs in server-side requests
79
+ - Path traversal (CWE-22) — user input in file paths without sanitization
80
+ - Insecure deserialization (CWE-502) — pickle.loads, yaml.load without SafeLoader, eval()
81
+ - Missing access control (CWE-862) — endpoints without authorization checks
82
+ - CSRF (CWE-352) — state-changing endpoints without CSRF tokens
83
+ - Hardcoded secrets (CWE-798) — API keys, passwords, tokens in source code`,
84
+ },
85
+ dep_audit: {
86
+ name: "llm",
87
+ prompt: `Review these changed files for newly added dependencies or imports. For each finding:
88
+ 1. Verify the package name is real and correctly spelled — flag potential typosquatting (e.g., 'reqeusts' instead of 'requests', 'lodash-utils' instead of 'lodash')
89
+ 2. Flag packages you cannot verify as real published packages
90
+ 3. Flag packages with known security advisories if you are aware of them
91
+ 4. Tag supply chain risks with CWE-1357 (Reliance on Insufficiently Trustworthy Component)`,
92
+ },
93
+ secrets: {
94
+ name: "llm",
95
+ prompt: `Review these changed files for hardcoded secrets, API keys, passwords, tokens, private keys, or credentials.
96
+ Tag findings with CWE-798 (Use of Hard-coded Credentials) or CWE-312 (Cleartext Storage of Sensitive Information).
97
+ Flag any string that looks like a secret value rather than a placeholder or environment variable reference.
98
+ Check for: API keys, database connection strings, JWT secrets, private keys, OAuth client secrets, webhook URLs with tokens.`,
99
+ },
100
+ best_practices: {
101
+ name: "llm",
102
+ prompt: "Review these changed files for best practices violations",
103
+ },
104
+ };
105
+ export function getBuiltinLlmFallback(step) {
106
+ return BUILTIN_LLM_FALLBACKS[step];
107
+ }
108
+ //# sourceMappingURL=check-llm.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"check-llm.js","sourceRoot":"","sources":["../../src/core/check-llm.ts"],"names":[],"mappings":"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"}
@@ -5,7 +5,7 @@ export interface CheckOptions {
5
5
  skip?: string[];
6
6
  json: boolean;
7
7
  }
8
- interface StepResult {
8
+ export interface StepResult {
9
9
  step: string;
10
10
  status: "pass" | "fail" | "skip" | "error";
11
11
  duration: number;
@@ -20,5 +20,4 @@ export interface CheckResult {
20
20
  errored: number;
21
21
  }
22
22
  export declare function runCheck(options: CheckOptions): Promise<CheckResult>;
23
- export {};
24
23
  //# sourceMappingURL=check.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"check.d.ts","sourceRoot":"","sources":["../../src/core/check.ts"],"names":[],"mappings":"AAkBA,MAAM,WAAW,YAAY;IAC3B,KAAK,CAAC,EAAE,MAAM,EAAE,CAAC;IACjB,cAAc,EAAE,OAAO,CAAC;IACxB,OAAO,EAAE,OAAO,CAAC;IACjB,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;IAChB,IAAI,EAAE,OAAO,CAAC;CACf;AAED,UAAU,UAAU;IAClB,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,GAAG,MAAM,GAAG,MAAM,GAAG,OAAO,CAAC;IAC3C,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,WAAW;IAC1B,OAAO,EAAE,UAAU,EAAE,CAAC;IACtB,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;CACjB;AAqCD,wBAAsB,QAAQ,CAAC,OAAO,EAAE,YAAY,GAAG,OAAO,CAAC,WAAW,CAAC,CAsB1E"}
1
+ {"version":3,"file":"check.d.ts","sourceRoot":"","sources":["../../src/core/check.ts"],"names":[],"mappings":"AAkBA,MAAM,WAAW,YAAY;IAC3B,KAAK,CAAC,EAAE,MAAM,EAAE,CAAC;IACjB,cAAc,EAAE,OAAO,CAAC;IACxB,OAAO,EAAE,OAAO,CAAC;IACjB,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;IAChB,IAAI,EAAE,OAAO,CAAC;CACf;AAED,MAAM,WAAW,UAAU;IACzB,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,GAAG,MAAM,GAAG,MAAM,GAAG,OAAO,CAAC;IAC3C,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,WAAW;IAC1B,OAAO,EAAE,UAAU,EAAE,CAAC;IACtB,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;CACjB;AAqCD,wBAAsB,QAAQ,CAAC,OAAO,EAAE,YAAY,GAAG,OAAO,CAAC,WAAW,CAAC,CAsB1E"}
@@ -1,14 +1,14 @@
1
1
  import { execFile } from "node:child_process";
2
2
  import { promisify } from "node:util";
3
3
  import chalk from "chalk";
4
- import { simpleGit } from "simple-git";
5
4
  import fg from "fast-glob";
6
5
  import { loadConfig } from "../utils/config.js";
7
6
  import { findProjectRoot } from "../utils/paths.js";
8
- import { spawnWithStdin } from "../utils/spawn.js";
9
7
  import { analyzeTestQuality, TEST_FILE_GLOBS, TEST_FILE_IGNORE } from "./test-quality.js";
10
8
  import { checkDocStyle } from "./doc-style.js";
11
9
  import { loadAcceptedRiskIds, partitionAdvisories } from "./risk-register.js";
10
+ import { runComplexityStep } from "./check-complexity.js";
11
+ import { runLlmStep, getBuiltinLlmFallback } from "./check-llm.js";
12
12
  // Steps whose scanner prints CVE/GHSA ids, so the risk-acceptance register can
13
13
  // suppress them. No-op for tools that don't key failures by advisory id.
14
14
  const REGISTER_AWARE_STEPS = new Set(["dep_audit", "security"]);
@@ -141,108 +141,6 @@ async function runShellStep(step, command, root) {
141
141
  };
142
142
  }
143
143
  }
144
- async function resolveChangedFiles(root) {
145
- try {
146
- const git = simpleGit(root);
147
- const nameOnly = await git.diff(["--name-only", "HEAD"]);
148
- const files = nameOnly.trim().split("\n").filter(Boolean);
149
- if (files.length > 0) {
150
- const diff = await git.diff(["HEAD", "--", ...files]);
151
- return { files, diff };
152
- }
153
- const stagedNames = await git.diff(["--name-only", "--cached"]);
154
- const stagedFiles = stagedNames.trim().split("\n").filter(Boolean);
155
- const diff = await git.diff(["--cached", "--", ...stagedFiles]);
156
- return { files: stagedFiles, diff };
157
- }
158
- catch {
159
- return { files: [], diff: "" };
160
- }
161
- }
162
- const MAX_DIFF_CHARS = 40_000;
163
- function buildLlmPrompt(prompt, files, diff) {
164
- // Strip newlines and backticks from each filename to prevent prompt injection.
165
- const safeFiles = files.map((f) => `\`${f.replace(/[\n\r`]/g, "")}\``).filter((f) => f.length > 2);
166
- const fileList = safeFiles.length > 0 ? `\n\nFiles changed:\n${safeFiles.join("\n")}` : "";
167
- const safeDiff = diff.replace(/`{3,}/g, "```");
168
- const diffSection = safeDiff
169
- ? `\n\nDiff:\n\`\`\`diff\n${safeDiff.slice(0, MAX_DIFF_CHARS)}\n\`\`\``
170
- : "";
171
- return `${prompt}${fileList}${diffSection}\n\nOnly flag issues directly observable in the diff above. Do not infer issues from filenames or speculate about code not shown.\n\nRespond with PASS or FAIL as the very first word on the very first line (no markdown, no asterisks, no extra words on that line). Then explain any issues on subsequent lines.`;
172
- }
173
- function parseLlmVerdict(output) {
174
- const firstLine = output.trim().split("\n").map((l) => l.trim()).find(Boolean)?.toUpperCase() ?? "";
175
- return /\bPASS\b/.test(firstLine) && !/\bFAIL\b/.test(firstLine);
176
- }
177
- async function runLlmStep(step, prompt, llmCommand, root, changedOnly) {
178
- const start = Date.now();
179
- try {
180
- await execFileAsync("which", [llmCommand]);
181
- }
182
- catch {
183
- return { step, status: "skip", duration: Date.now() - start, output: "", reason: `${llmCommand} not found` };
184
- }
185
- const { files, diff } = changedOnly ? await resolveChangedFiles(root) : { files: [], diff: "" };
186
- if (changedOnly && files.length === 0) {
187
- return { step, status: "pass", duration: Date.now() - start, output: "No changed files to review." };
188
- }
189
- try {
190
- const output = await spawnWithStdin(llmCommand, ["--print"], buildLlmPrompt(prompt, files, diff), root);
191
- return { step, status: parseLlmVerdict(output) ? "pass" : "fail", duration: Date.now() - start, output };
192
- }
193
- catch (err) {
194
- return {
195
- step,
196
- status: "error",
197
- duration: Date.now() - start,
198
- output: err instanceof Error ? err.message : String(err),
199
- reason: "LLM command failed",
200
- };
201
- }
202
- }
203
- const BUILTIN_LLM_FALLBACKS = {
204
- security: {
205
- name: "llm",
206
- prompt: `Review these changed files for security vulnerabilities. For each finding:
207
- 1. Describe the vulnerability
208
- 2. Tag it with the relevant OWASP Top 10 category (e.g., A01:2021-Broken Access Control) and CWE ID (e.g., CWE-89)
209
- 3. Rate severity: critical / high / medium / low
210
-
211
- Check specifically for:
212
- - SQL injection (CWE-89) — string concatenation in queries instead of parameterized queries
213
- - XSS (CWE-79) — unescaped user input in HTML/template output
214
- - Broken authentication (CWE-287) — custom token generation, weak session management, missing auth checks
215
- - Insecure cryptography (CWE-327) — MD5/SHA1 for passwords, custom crypto, weak random
216
- - SSRF (CWE-918) — user-controlled URLs in server-side requests
217
- - Path traversal (CWE-22) — user input in file paths without sanitization
218
- - Insecure deserialization (CWE-502) — pickle.loads, yaml.load without SafeLoader, eval()
219
- - Missing access control (CWE-862) — endpoints without authorization checks
220
- - CSRF (CWE-352) — state-changing endpoints without CSRF tokens
221
- - Hardcoded secrets (CWE-798) — API keys, passwords, tokens in source code`,
222
- },
223
- dep_audit: {
224
- name: "llm",
225
- prompt: `Review these changed files for newly added dependencies or imports. For each finding:
226
- 1. Verify the package name is real and correctly spelled — flag potential typosquatting (e.g., 'reqeusts' instead of 'requests', 'lodash-utils' instead of 'lodash')
227
- 2. Flag packages you cannot verify as real published packages
228
- 3. Flag packages with known security advisories if you are aware of them
229
- 4. Tag supply chain risks with CWE-1357 (Reliance on Insufficiently Trustworthy Component)`,
230
- },
231
- secrets: {
232
- name: "llm",
233
- prompt: `Review these changed files for hardcoded secrets, API keys, passwords, tokens, private keys, or credentials.
234
- Tag findings with CWE-798 (Use of Hard-coded Credentials) or CWE-312 (Cleartext Storage of Sensitive Information).
235
- Flag any string that looks like a secret value rather than a placeholder or environment variable reference.
236
- Check for: API keys, database connection strings, JWT secrets, private keys, OAuth client secrets, webhook URLs with tokens.`,
237
- },
238
- best_practices: {
239
- name: "llm",
240
- prompt: "Review these changed files for best practices violations",
241
- },
242
- };
243
- function getBuiltinLlmFallback(step) {
244
- return BUILTIN_LLM_FALLBACKS[step];
245
- }
246
144
  const MAX_FAIL_LINES = 30;
247
145
  function printFailOutput(output) {
248
146
  if (!output)
@@ -341,79 +239,4 @@ async function runDocStyleStep(root, config) {
341
239
  };
342
240
  }
343
241
  }
344
- async function tryRadon(root) {
345
- try {
346
- await execFileAsync("which", ["radon"]);
347
- const { stdout, stderr } = await execFileAsync("sh", [
348
- "-c",
349
- "radon cc . -a -nc --exclude 'node_modules,.venv,dist,migrations' 2>&1 || true",
350
- ], { cwd: root, timeout: 60_000 });
351
- const output = (stdout + stderr).trim();
352
- const hasHighComplexity = /\b[C-F]\s+\(\d+\)/.test(output) || /\b[C-F]\b/.test(output);
353
- return { output, hasHighComplexity };
354
- }
355
- catch {
356
- return null;
357
- }
358
- }
359
- async function tryEslintComplexity(root) {
360
- try {
361
- await execFileAsync("which", ["npx"]);
362
- const { stdout, stderr } = await execFileAsync("sh", [
363
- "-c",
364
- "npx eslint --rule 'complexity: [warn, 10]' --ext .ts,.tsx,.js,.jsx src/ 2>&1 || true",
365
- ], { cwd: root, timeout: 60_000 });
366
- const output = (stdout + stderr).trim();
367
- // Match ESLint complexity rule output (" complexity" at end of warning line).
368
- // Avoids false positives from parsing errors or unrelated warnings.
369
- const hasWarnings = / complexity$/m.test(output);
370
- return { output, hasWarnings };
371
- }
372
- catch {
373
- return null;
374
- }
375
- }
376
- async function checkPythonComplexity(root, start) {
377
- const radon = await tryRadon(root);
378
- if (!radon)
379
- return null;
380
- return {
381
- step: "complexity",
382
- status: radon.hasHighComplexity ? "fail" : "pass",
383
- duration: Date.now() - start,
384
- output: radon.output || "No high-complexity functions found.",
385
- };
386
- }
387
- async function checkJsComplexity(root, start) {
388
- const eslint = await tryEslintComplexity(root);
389
- if (!eslint)
390
- return null;
391
- return {
392
- step: "complexity",
393
- status: eslint.hasWarnings ? "fail" : "pass",
394
- duration: Date.now() - start,
395
- output: eslint.output || "No high-complexity functions found.",
396
- };
397
- }
398
- async function runComplexityStep(root, config) {
399
- const start = Date.now();
400
- const lang = config.project.language;
401
- if (!lang || lang === "python") {
402
- const result = await checkPythonComplexity(root, start);
403
- if (result)
404
- return result;
405
- }
406
- if (!lang || ["typescript", "javascript"].includes(lang ?? "")) {
407
- const result = await checkJsComplexity(root, start);
408
- if (result)
409
- return result;
410
- }
411
- return {
412
- step: "complexity",
413
- status: "skip",
414
- duration: Date.now() - start,
415
- output: "",
416
- reason: "no complexity tool found (install radon for Python or eslint for JS/TS)",
417
- };
418
- }
419
242
  //# sourceMappingURL=check.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"check.js","sourceRoot":"","sources":["../../src/core/check.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"check.js","sourceRoot":"","sources":["../../src/core/check.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,22 @@
1
+ import type { GrimoireConfig, ProjectSurface } from "../utils/config.js";
2
+ import type { Detection } from "./detect.js";
3
+ export declare const PROMPT_SURFACES: readonly ProjectSurface[];
4
+ export interface EssentialPrefill {
5
+ codebaseMemoryMcp?: boolean;
6
+ cavemanPlugin?: boolean;
7
+ detectedSurface?: ProjectSurface;
8
+ }
9
+ export declare function buildMinimalConfig(): GrimoireConfig;
10
+ export declare function bestByCategory(detections: Detection[]): Map<string, Detection>;
11
+ export declare function applyProjectDetections(config: GrimoireConfig, byCategory: Map<string, Detection>): void;
12
+ export declare function applyLlmFallbacks(config: GrimoireConfig, byCategory: Map<string, Detection>): void;
13
+ export declare function surfaceFromDetection(d: Detection | undefined): ProjectSurface | undefined;
14
+ export declare function buildIntegrationFlags(initialFlags: {
15
+ codebaseMemoryMcp: boolean | undefined;
16
+ cavemanPlugin: boolean | undefined;
17
+ }, config: GrimoireConfig): {
18
+ codebaseMemoryMcp: boolean | undefined;
19
+ cavemanPlugin: boolean | undefined;
20
+ };
21
+ export declare function scanForSecrets(serialized: string): void;
22
+ //# sourceMappingURL=init-config.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"init-config.d.ts","sourceRoot":"","sources":["../../src/core/init-config.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAc,cAAc,EAAE,MAAM,oBAAoB,CAAC;AACrF,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAE7C,eAAO,MAAM,eAAe,EAAE,SAAS,cAAc,EAMpD,CAAC;AAEF,MAAM,WAAW,gBAAgB;IAC/B,iBAAiB,CAAC,EAAE,OAAO,CAAC;IAC5B,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,eAAe,CAAC,EAAE,cAAc,CAAC;CAClC;AAED,wBAAgB,kBAAkB,IAAI,cAAc,CA4BnD;AAMD,wBAAgB,cAAc,CAAC,UAAU,EAAE,SAAS,EAAE,GAAG,GAAG,CAAC,MAAM,EAAE,SAAS,CAAC,CAS9E;AAED,wBAAgB,sBAAsB,CAAC,MAAM,EAAE,cAAc,EAAE,UAAU,EAAE,GAAG,CAAC,MAAM,EAAE,SAAS,CAAC,GAAG,IAAI,CAmBvG;AAED,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,cAAc,EAAE,UAAU,EAAE,GAAG,CAAC,MAAM,EAAE,SAAS,CAAC,GAAG,IAAI,CAiBlG;AAED,wBAAgB,oBAAoB,CAClC,CAAC,EAAE,SAAS,GAAG,SAAS,GACvB,cAAc,GAAG,SAAS,CAK5B;AAED,wBAAgB,qBAAqB,CACnC,YAAY,EAAE;IAAE,iBAAiB,EAAE,OAAO,GAAG,SAAS,CAAC;IAAC,aAAa,EAAE,OAAO,GAAG,SAAS,CAAA;CAAE,EAC5F,MAAM,EAAE,cAAc,GACrB;IAAE,iBAAiB,EAAE,OAAO,GAAG,SAAS,CAAC;IAAC,aAAa,EAAE,OAAO,GAAG,SAAS,CAAA;CAAE,CAKhF;AAKD,wBAAgB,cAAc,CAAC,UAAU,EAAE,MAAM,GAAG,IAAI,CAWvD"}