ghagga-core 2.0.1 → 2.2.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 +3 -1
- package/dist/agents/consensus.d.ts +2 -1
- package/dist/agents/consensus.d.ts.map +1 -1
- package/dist/agents/consensus.js +4 -2
- package/dist/agents/consensus.js.map +1 -1
- package/dist/agents/prompts.d.ts +10 -1
- package/dist/agents/prompts.d.ts.map +1 -1
- package/dist/agents/prompts.js +24 -2
- package/dist/agents/prompts.js.map +1 -1
- package/dist/agents/simple.d.ts +2 -1
- package/dist/agents/simple.d.ts.map +1 -1
- package/dist/agents/simple.js +4 -2
- package/dist/agents/simple.js.map +1 -1
- package/dist/agents/workflow.d.ts +2 -1
- package/dist/agents/workflow.d.ts.map +1 -1
- package/dist/agents/workflow.js +12 -3
- package/dist/agents/workflow.js.map +1 -1
- package/dist/format.d.ts +11 -0
- package/dist/format.d.ts.map +1 -0
- package/dist/format.js +84 -0
- package/dist/format.js.map +1 -0
- package/dist/index.d.ts +5 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +4 -0
- package/dist/index.js.map +1 -1
- package/dist/memory/engram-client.d.ts +38 -0
- package/dist/memory/engram-client.d.ts.map +1 -0
- package/dist/memory/engram-client.js +153 -0
- package/dist/memory/engram-client.js.map +1 -0
- package/dist/memory/engram-mapping.d.ts +83 -0
- package/dist/memory/engram-mapping.d.ts.map +1 -0
- package/dist/memory/engram-mapping.js +159 -0
- package/dist/memory/engram-mapping.js.map +1 -0
- package/dist/memory/engram-types.d.ts +51 -0
- package/dist/memory/engram-types.d.ts.map +1 -0
- package/dist/memory/engram-types.js +12 -0
- package/dist/memory/engram-types.js.map +1 -0
- package/dist/memory/engram.d.ts +76 -0
- package/dist/memory/engram.d.ts.map +1 -0
- package/dist/memory/engram.js +194 -0
- package/dist/memory/engram.js.map +1 -0
- package/dist/memory/persist.d.ts +5 -5
- package/dist/memory/persist.d.ts.map +1 -1
- package/dist/memory/persist.js +23 -24
- package/dist/memory/persist.js.map +1 -1
- package/dist/memory/search.d.ts +6 -5
- package/dist/memory/search.d.ts.map +1 -1
- package/dist/memory/search.js +7 -8
- package/dist/memory/search.js.map +1 -1
- package/dist/memory/sqlite.d.ts +49 -0
- package/dist/memory/sqlite.d.ts.map +1 -0
- package/dist/memory/sqlite.js +349 -0
- package/dist/memory/sqlite.js.map +1 -0
- package/dist/pipeline.d.ts.map +1 -1
- package/dist/pipeline.js +167 -58
- package/dist/pipeline.js.map +1 -1
- package/dist/providers/index.d.ts +4 -0
- package/dist/providers/index.d.ts.map +1 -1
- package/dist/providers/index.js +12 -0
- package/dist/providers/index.js.map +1 -1
- package/dist/tools/cpd.d.ts.map +1 -1
- package/dist/tools/cpd.js +20 -9
- package/dist/tools/cpd.js.map +1 -1
- package/dist/tools/runner.d.ts +5 -2
- package/dist/tools/runner.d.ts.map +1 -1
- package/dist/tools/runner.js +37 -18
- package/dist/tools/runner.js.map +1 -1
- package/dist/tools/semgrep.d.ts.map +1 -1
- package/dist/tools/semgrep.js +21 -4
- package/dist/tools/semgrep.js.map +1 -1
- package/dist/tools/trivy.d.ts.map +1 -1
- package/dist/tools/trivy.js +6 -2
- package/dist/tools/trivy.js.map +1 -1
- package/dist/types.d.ts +133 -11
- package/dist/types.d.ts.map +1 -1
- package/dist/types.js +2 -1
- package/dist/types.js.map +1 -1
- package/dist/utils/token-budget.d.ts.map +1 -1
- package/dist/utils/token-budget.js +5 -0
- package/dist/utils/token-budget.js.map +1 -1
- package/package.json +4 -3
package/README.md
CHANGED
|
@@ -18,7 +18,7 @@ import { reviewPipeline, DEFAULT_SETTINGS } from '@ghagga/core';
|
|
|
18
18
|
const result = await reviewPipeline({
|
|
19
19
|
diff: '...unified diff string...',
|
|
20
20
|
mode: 'simple', // 'simple' | 'workflow' | 'consensus'
|
|
21
|
-
provider: 'github', // 'github' | 'openai' | 'anthropic' | 'google'
|
|
21
|
+
provider: 'github', // 'github' | 'openai' | 'anthropic' | 'google' | 'ollama' | 'qwen'
|
|
22
22
|
model: 'gpt-4o-mini',
|
|
23
23
|
apiKey: process.env.GITHUB_TOKEN!,
|
|
24
24
|
settings: DEFAULT_SETTINGS,
|
|
@@ -43,6 +43,8 @@ console.log(result.findings);
|
|
|
43
43
|
- **openai** — OpenAI API (GPT-4o, GPT-4o-mini, etc.)
|
|
44
44
|
- **anthropic** — Anthropic API (Claude Sonnet, Haiku, etc.)
|
|
45
45
|
- **google** — Google AI (Gemini Pro, Flash, etc.)
|
|
46
|
+
- **ollama** — Local models via [Ollama](https://ollama.ai/) (Qwen2.5-Coder, CodeLlama, etc.)
|
|
47
|
+
- **qwen** — Alibaba Cloud DashScope API (Qwen-Coder-Plus, etc.)
|
|
46
48
|
|
|
47
49
|
> **Tip:** For the CLI experience, use [`@ghagga/cli`](https://www.npmjs.com/package/@ghagga/cli) instead.
|
|
48
50
|
|
|
@@ -11,7 +11,7 @@
|
|
|
11
11
|
* - 30% minimum confidence gap between approve and reject
|
|
12
12
|
* - If thresholds not met → NEEDS_HUMAN_REVIEW
|
|
13
13
|
*/
|
|
14
|
-
import type { LLMProvider, ProgressCallback, ReviewResult, ReviewStatus, ConsensusStance, ConsensusVote } from '../types.js';
|
|
14
|
+
import type { LLMProvider, ProgressCallback, ReviewResult, ReviewStatus, ReviewLevel, ConsensusStance, ConsensusVote } from '../types.js';
|
|
15
15
|
export interface ConsensusModelConfig {
|
|
16
16
|
provider: LLMProvider;
|
|
17
17
|
model: string;
|
|
@@ -24,6 +24,7 @@ export interface ConsensusReviewInput {
|
|
|
24
24
|
staticContext: string;
|
|
25
25
|
memoryContext: string | null;
|
|
26
26
|
stackHints: string;
|
|
27
|
+
reviewLevel: ReviewLevel;
|
|
27
28
|
onProgress?: ProgressCallback;
|
|
28
29
|
}
|
|
29
30
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"consensus.d.ts","sourceRoot":"","sources":["../../src/agents/consensus.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;
|
|
1
|
+
{"version":3,"file":"consensus.d.ts","sourceRoot":"","sources":["../../src/agents/consensus.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAYH,OAAO,KAAK,EACV,WAAW,EACX,gBAAgB,EAChB,YAAY,EACZ,YAAY,EACZ,WAAW,EACX,eAAe,EACf,aAAa,EACd,MAAM,aAAa,CAAC;AAIrB,MAAM,WAAW,oBAAoB;IACnC,QAAQ,EAAE,WAAW,CAAC;IACtB,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,eAAe,CAAC;CACzB;AAED,MAAM,WAAW,oBAAoB;IACnC,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,oBAAoB,EAAE,CAAC;IAC/B,aAAa,EAAE,MAAM,CAAC;IACtB,aAAa,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7B,UAAU,EAAE,MAAM,CAAC;IACnB,WAAW,EAAE,WAAW,CAAC;IACzB,UAAU,CAAC,EAAE,gBAAgB,CAAC;CAC/B;AAmBD;;;;;;;GAOG;AACH,wBAAgB,SAAS,CACvB,IAAI,EAAE,MAAM,EACZ,QAAQ,EAAE,WAAW,EACrB,KAAK,EAAE,MAAM,EACb,MAAM,EAAE,eAAe,GACtB,aAAa,CAef;AAID;;;;;;;;;;;;;GAaG;AACH,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,aAAa,EAAE,GAAG;IAC1D,MAAM,EAAE,YAAY,CAAC;IACrB,OAAO,EAAE,MAAM,CAAC;CACjB,CAuDA;AAID;;;;;;;;;;GAUG;AACH,wBAAsB,kBAAkB,CACtC,KAAK,EAAE,oBAAoB,GAC1B,OAAO,CAAC,YAAY,CAAC,CA8GvB"}
|
package/dist/agents/consensus.js
CHANGED
|
@@ -13,7 +13,7 @@
|
|
|
13
13
|
*/
|
|
14
14
|
import { generateText } from 'ai';
|
|
15
15
|
import { createModel } from '../providers/index.js';
|
|
16
|
-
import { CONSENSUS_FOR_SYSTEM, CONSENSUS_AGAINST_SYSTEM, CONSENSUS_NEUTRAL_SYSTEM, buildMemoryContext, } from './prompts.js';
|
|
16
|
+
import { CONSENSUS_FOR_SYSTEM, CONSENSUS_AGAINST_SYSTEM, CONSENSUS_NEUTRAL_SYSTEM, REVIEW_CALIBRATION, buildMemoryContext, buildReviewLevelInstruction, } from './prompts.js';
|
|
17
17
|
// ─── Constants ──────────────────────────────────────────────────
|
|
18
18
|
/** Minimum percentage of weighted votes to decide approve/reject */
|
|
19
19
|
const DECISION_THRESHOLD = 0.6;
|
|
@@ -125,7 +125,7 @@ export function calculateConsensus(votes) {
|
|
|
125
125
|
* @returns ReviewResult with consensus-derived status and all vote reasoning
|
|
126
126
|
*/
|
|
127
127
|
export async function runConsensusReview(input) {
|
|
128
|
-
const { diff, models, staticContext, memoryContext, stackHints } = input;
|
|
128
|
+
const { diff, models, staticContext, memoryContext, stackHints, reviewLevel } = input;
|
|
129
129
|
const emit = input.onProgress ?? (() => { });
|
|
130
130
|
const startTime = Date.now();
|
|
131
131
|
// Build the user prompt (same for all models)
|
|
@@ -142,6 +142,8 @@ export async function runConsensusReview(input) {
|
|
|
142
142
|
staticContext,
|
|
143
143
|
buildMemoryContext(memoryContext),
|
|
144
144
|
stackHints,
|
|
145
|
+
buildReviewLevelInstruction(reviewLevel),
|
|
146
|
+
REVIEW_CALIBRATION,
|
|
145
147
|
]
|
|
146
148
|
.filter(Boolean)
|
|
147
149
|
.join('\n');
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"consensus.js","sourceRoot":"","sources":["../../src/agents/consensus.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAEH,OAAO,EAAE,YAAY,EAAE,MAAM,IAAI,CAAC;AAClC,OAAO,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AACpD,OAAO,EACL,oBAAoB,EACpB,wBAAwB,EACxB,wBAAwB,EACxB,kBAAkB,
|
|
1
|
+
{"version":3,"file":"consensus.js","sourceRoot":"","sources":["../../src/agents/consensus.ts"],"names":[],"mappings":"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"}
|
package/dist/agents/prompts.d.ts
CHANGED
|
@@ -2,7 +2,8 @@
|
|
|
2
2
|
* Agent prompts for all review modes.
|
|
3
3
|
* Rescued and refined from GHAGGA v1.
|
|
4
4
|
*/
|
|
5
|
-
|
|
5
|
+
import type { ReviewLevel } from '../types.js';
|
|
6
|
+
export declare const SIMPLE_REVIEW_SYSTEM = "You are an expert code reviewer. Analyze the provided code changes and provide a thorough review.\n\n1. Check for bugs, logic errors, and potential runtime issues\n2. Verify proper error handling and edge cases\n3. Assess code quality, readability, and maintainability\n4. Identify security vulnerabilities (SQL injection, XSS, auth issues, etc.)\n5. Evaluate performance implications\n\nFormat your response EXACTLY as:\n\nSTATUS: [PASSED or FAILED]\nSUMMARY: [2-3 sentence summary of the review]\nFINDINGS:\n- SEVERITY: [critical|high|medium|low|info]\n CATEGORY: [security|performance|bug|style|error-handling|maintainability]\n FILE: [file path]\n LINE: [line number or \"N/A\"]\n MESSAGE: [clear description of the issue]\n SUGGESTION: [specific fix or improvement]\n\nIf there are no issues, return STATUS: PASSED with an empty FINDINGS section.\nFAILED if: Any critical issues, or 3+ high issues. PASSED otherwise.";
|
|
6
7
|
export declare const WORKFLOW_SCOPE_SYSTEM = "You analyze code scope. Identify what files are changed, affected modules, and dependencies.\n\nYour task:\n1. List all modified files and their purposes\n2. Identify which modules/components are affected\n3. Map out dependencies that might be impacted\n4. Assess the overall scope (small, medium, large)\n\nOutput format:\n- Changed Files: [list files with brief descriptions]\n- Affected Modules: [list modules]\n- Dependencies: [list impacted dependencies]\n- Scope Assessment: [small/medium/large with reasoning]";
|
|
7
8
|
export declare const WORKFLOW_STANDARDS_SYSTEM = "You enforce coding standards. Check naming conventions, formatting, and DRY violations.\n\nYour task:\n1. Check naming conventions (variables, functions, classes)\n2. Verify code formatting and consistency\n3. Identify DRY (Don't Repeat Yourself) violations\n4. Check for proper documentation/comments\n5. Verify import organization\n\nOutput format:\n- Naming Issues: [list any naming convention violations]\n- Formatting Issues: [list formatting problems]\n- DRY Violations: [list duplicated code/logic]\n- Documentation: [note missing or poor documentation]\n- Recommendations: [specific suggestions for improvement]";
|
|
8
9
|
export declare const WORKFLOW_ERRORS_SYSTEM = "You are a defensive programming expert. Check null handling, edge cases, and error messages.\n\nYour task:\n1. Check for proper null/undefined handling\n2. Identify missing edge case handling\n3. Review error messages for clarity and usefulness\n4. Check try/catch usage and error propagation\n5. Verify input validation\n\nOutput format:\n- Null Safety Issues: [list potential null/undefined problems]\n- Edge Cases: [list unhandled edge cases]\n- Error Messages: [review of error message quality]\n- Exception Handling: [issues with try/catch or error propagation]\n- Input Validation: [missing or weak validation]";
|
|
@@ -12,6 +13,14 @@ export declare const WORKFLOW_SYNTHESIS_SYSTEM = "Synthesize all findings into a
|
|
|
12
13
|
export declare const CONSENSUS_FOR_SYSTEM = "You are reviewing code changes. Argue strongly IN FAVOR of approving this code.\n\nFocus on:\n- Benefits and improvements the code brings\n- Problems it solves correctly\n- Sound architectural decisions\n- Good practices followed\n\nProvide your assessment as:\nDECISION: [approve|reject|abstain]\nCONFIDENCE: [0.0 to 1.0]\nREASONING: [detailed reasoning for your stance]";
|
|
13
14
|
export declare const CONSENSUS_AGAINST_SYSTEM = "You are reviewing code changes. Argue AGAINST approving this code.\n\nFocus on:\n- Potential bugs and logic errors\n- Security vulnerabilities\n- Performance concerns\n- Maintainability issues\n- Missing tests or edge cases\n\nProvide your assessment as:\nDECISION: [approve|reject|abstain]\nCONFIDENCE: [0.0 to 1.0]\nREASONING: [detailed reasoning for your stance]";
|
|
14
15
|
export declare const CONSENSUS_NEUTRAL_SYSTEM = "You are reviewing code changes. Provide a BALANCED, neutral analysis.\n\nConsider both:\n- Benefits and improvements the code brings\n- Potential issues and risks\n\nProvide your assessment as:\nDECISION: [approve|reject|abstain]\nCONFIDENCE: [0.0 to 1.0]\nREASONING: [balanced analysis of pros and cons]";
|
|
16
|
+
export declare const REVIEW_CALIBRATION = "## Review Calibration\n- Only report findings you are 80%+ confident about based on the actual code shown.\n- Do NOT flag stylistic preferences unless they violate an explicitly provided rule.\n- Do NOT invent or assume coding standards that are not provided.\n- Do NOT flag hypothetical edge cases that are unlikely in practice.\n- If the diff is small and clean, it is OK to return STATUS: PASSED with zero findings.";
|
|
17
|
+
/**
|
|
18
|
+
* Build a review-level-specific calibration instruction.
|
|
19
|
+
*
|
|
20
|
+
* Returns text that tells the LLM how aggressively to review
|
|
21
|
+
* based on the configured review level.
|
|
22
|
+
*/
|
|
23
|
+
export declare function buildReviewLevelInstruction(level: ReviewLevel): string;
|
|
15
24
|
export declare function buildStaticAnalysisContext(staticFindings: string): string;
|
|
16
25
|
export declare function buildMemoryContext(memoryContext: string | null): string;
|
|
17
26
|
export declare function buildStackHints(stacks: string[]): string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"prompts.d.ts","sourceRoot":"","sources":["../../src/agents/prompts.ts"],"names":[],"mappings":"AAAA;;;GAGG;
|
|
1
|
+
{"version":3,"file":"prompts.d.ts","sourceRoot":"","sources":["../../src/agents/prompts.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAI/C,eAAO,MAAM,oBAAoB,m6BAqBoC,CAAC;AAItE,eAAO,MAAM,qBAAqB,ygBAYsB,CAAC;AAEzD,eAAO,MAAM,yBAAyB,gnBAcoB,CAAC;AAE3D,eAAO,MAAM,sBAAsB,6mBAcc,CAAC;AAElD,eAAO,MAAM,wBAAwB,yoBAgBQ,CAAC;AAE9C,eAAO,MAAM,2BAA2B,6jBAcgB,CAAC;AAEzD,eAAO,MAAM,yBAAyB,62BAqBoB,CAAC;AAI3D,eAAO,MAAM,oBAAoB,wXAWe,CAAC;AAEjD,eAAO,MAAM,wBAAwB,kXAYW,CAAC;AAEjD,eAAO,MAAM,wBAAwB,qTASW,CAAC;AAIjD,eAAO,MAAM,kBAAkB,uaAKyD,CAAC;AAEzF;;;;;GAKG;AACH,wBAAgB,2BAA2B,CAAC,KAAK,EAAE,WAAW,GAAG,MAAM,CAStE;AAID,wBAAgB,0BAA0B,CAAC,cAAc,EAAE,MAAM,GAAG,MAAM,CAGzE;AAED,wBAAgB,kBAAkB,CAAC,aAAa,EAAE,MAAM,GAAG,IAAI,GAAG,MAAM,CAGvE;AAED,wBAAgB,eAAe,CAAC,MAAM,EAAE,MAAM,EAAE,GAAG,MAAM,CAoBxD"}
|
package/dist/agents/prompts.js
CHANGED
|
@@ -10,7 +10,6 @@ export const SIMPLE_REVIEW_SYSTEM = `You are an expert code reviewer. Analyze th
|
|
|
10
10
|
3. Assess code quality, readability, and maintainability
|
|
11
11
|
4. Identify security vulnerabilities (SQL injection, XSS, auth issues, etc.)
|
|
12
12
|
5. Evaluate performance implications
|
|
13
|
-
6. Check adherence to the repository's coding standards and rules
|
|
14
13
|
|
|
15
14
|
Format your response EXACTLY as:
|
|
16
15
|
|
|
@@ -160,6 +159,29 @@ Provide your assessment as:
|
|
|
160
159
|
DECISION: [approve|reject|abstain]
|
|
161
160
|
CONFIDENCE: [0.0 to 1.0]
|
|
162
161
|
REASONING: [balanced analysis of pros and cons]`;
|
|
162
|
+
// ─── Review Calibration ─────────────────────────────────────────
|
|
163
|
+
export const REVIEW_CALIBRATION = `## Review Calibration
|
|
164
|
+
- Only report findings you are 80%+ confident about based on the actual code shown.
|
|
165
|
+
- Do NOT flag stylistic preferences unless they violate an explicitly provided rule.
|
|
166
|
+
- Do NOT invent or assume coding standards that are not provided.
|
|
167
|
+
- Do NOT flag hypothetical edge cases that are unlikely in practice.
|
|
168
|
+
- If the diff is small and clean, it is OK to return STATUS: PASSED with zero findings.`;
|
|
169
|
+
/**
|
|
170
|
+
* Build a review-level-specific calibration instruction.
|
|
171
|
+
*
|
|
172
|
+
* Returns text that tells the LLM how aggressively to review
|
|
173
|
+
* based on the configured review level.
|
|
174
|
+
*/
|
|
175
|
+
export function buildReviewLevelInstruction(level) {
|
|
176
|
+
switch (level) {
|
|
177
|
+
case 'soft':
|
|
178
|
+
return 'Only flag issues you are very confident about (90%+). Focus exclusively on bugs, security vulnerabilities, and logic errors. Ignore style, naming, and maintainability concerns.';
|
|
179
|
+
case 'normal':
|
|
180
|
+
return 'Flag issues you are confident about (80%+). Cover bugs, security, performance, and error handling. Be cautious with style-only findings.';
|
|
181
|
+
case 'strict':
|
|
182
|
+
return 'Perform a thorough review covering all categories including style, naming, and documentation. Flag anything that could be improved.';
|
|
183
|
+
}
|
|
184
|
+
}
|
|
163
185
|
// ─── Context Injection Templates ────────────────────────────────
|
|
164
186
|
export function buildStaticAnalysisContext(staticFindings) {
|
|
165
187
|
if (!staticFindings)
|
|
@@ -169,7 +191,7 @@ export function buildStaticAnalysisContext(staticFindings) {
|
|
|
169
191
|
export function buildMemoryContext(memoryContext) {
|
|
170
192
|
if (!memoryContext)
|
|
171
193
|
return '';
|
|
172
|
-
return `\n\n##
|
|
194
|
+
return `\n\n## Background Context from Past Reviews\n\nThe following observations are background context from past reviews of this project. They are provided for situational awareness only. Do NOT use them as reasons to flag issues. Only flag issues you can justify from the code diff itself.\n\n${memoryContext}\n`;
|
|
173
195
|
}
|
|
174
196
|
export function buildStackHints(stacks) {
|
|
175
197
|
if (stacks.length === 0)
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"prompts.js","sourceRoot":"","sources":["../../src/agents/prompts.ts"],"names":[],"mappings":"AAAA;;;GAGG;
|
|
1
|
+
{"version":3,"file":"prompts.js","sourceRoot":"","sources":["../../src/agents/prompts.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAIH,mEAAmE;AAEnE,MAAM,CAAC,MAAM,oBAAoB,GAAG;;;;;;;;;;;;;;;;;;;;;qEAqBiC,CAAC;AAEtE,mEAAmE;AAEnE,MAAM,CAAC,MAAM,qBAAqB,GAAG;;;;;;;;;;;;wDAYmB,CAAC;AAEzD,MAAM,CAAC,MAAM,yBAAyB,GAAG;;;;;;;;;;;;;;0DAciB,CAAC;AAE3D,MAAM,CAAC,MAAM,sBAAsB,GAAG;;;;;;;;;;;;;;iDAcW,CAAC;AAElD,MAAM,CAAC,MAAM,wBAAwB,GAAG;;;;;;;;;;;;;;;;6CAgBK,CAAC;AAE9C,MAAM,CAAC,MAAM,2BAA2B,GAAG;;;;;;;;;;;;;;wDAca,CAAC;AAEzD,MAAM,CAAC,MAAM,yBAAyB,GAAG;;;;;;;;;;;;;;;;;;;;;0DAqBiB,CAAC;AAE3D,mEAAmE;AAEnE,MAAM,CAAC,MAAM,oBAAoB,GAAG;;;;;;;;;;;gDAWY,CAAC;AAEjD,MAAM,CAAC,MAAM,wBAAwB,GAAG;;;;;;;;;;;;gDAYQ,CAAC;AAEjD,MAAM,CAAC,MAAM,wBAAwB,GAAG;;;;;;;;;gDASQ,CAAC;AAEjD,mEAAmE;AAEnE,MAAM,CAAC,MAAM,kBAAkB,GAAG;;;;;wFAKsD,CAAC;AAEzF;;;;;GAKG;AACH,MAAM,UAAU,2BAA2B,CAAC,KAAkB;IAC5D,QAAQ,KAAK,EAAE,CAAC;QACd,KAAK,MAAM;YACT,OAAO,kLAAkL,CAAC;QAC5L,KAAK,QAAQ;YACX,OAAO,0IAA0I,CAAC;QACpJ,KAAK,QAAQ;YACX,OAAO,qIAAqI,CAAC;IACjJ,CAAC;AACH,CAAC;AAED,mEAAmE;AAEnE,MAAM,UAAU,0BAA0B,CAAC,cAAsB;IAC/D,IAAI,CAAC,cAAc;QAAE,OAAO,EAAE,CAAC;IAC/B,OAAO,OAAO,cAAc,IAAI,CAAC;AACnC,CAAC;AAED,MAAM,UAAU,kBAAkB,CAAC,aAA4B;IAC7D,IAAI,CAAC,aAAa;QAAE,OAAO,EAAE,CAAC;IAC9B,OAAO,mSAAmS,aAAa,IAAI,CAAC;AAC9T,CAAC;AAED,MAAM,UAAU,eAAe,CAAC,MAAgB;IAC9C,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,EAAE,CAAC;IAEnC,MAAM,KAAK,GAA2B;QACpC,UAAU,EAAE,6EAA6E;QACzF,UAAU,EAAE,kFAAkF;QAC9F,KAAK,EAAE,0EAA0E;QACjF,MAAM,EAAE,oEAAoE;QAC5E,IAAI,EAAE,kFAAkF;QACxF,EAAE,EAAE,kEAAkE;QACtE,IAAI,EAAE,kFAAkF;QACxF,GAAG,EAAE,qEAAqE;KAC3E,CAAC;IAEF,MAAM,QAAQ,GAAG,MAAM;SACpB,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC;SAClC,MAAM,CAAC,OAAO,CAAC,CAAC;IAEnB,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,EAAE,CAAC;IACrC,OAAO,yCAAyC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC;AAC/F,CAAC"}
|
package/dist/agents/simple.d.ts
CHANGED
|
@@ -5,7 +5,7 @@
|
|
|
5
5
|
* Best for small-to-medium PRs where parallel specialists
|
|
6
6
|
* would be overkill.
|
|
7
7
|
*/
|
|
8
|
-
import type { LLMProvider, ProgressCallback, ReviewResult, ReviewFinding } from '../types.js';
|
|
8
|
+
import type { LLMProvider, ProgressCallback, ReviewResult, ReviewFinding, ReviewLevel } from '../types.js';
|
|
9
9
|
export interface SimpleReviewInput {
|
|
10
10
|
diff: string;
|
|
11
11
|
provider: LLMProvider;
|
|
@@ -14,6 +14,7 @@ export interface SimpleReviewInput {
|
|
|
14
14
|
staticContext: string;
|
|
15
15
|
memoryContext: string | null;
|
|
16
16
|
stackHints: string;
|
|
17
|
+
reviewLevel: ReviewLevel;
|
|
17
18
|
onProgress?: ProgressCallback;
|
|
18
19
|
}
|
|
19
20
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"simple.d.ts","sourceRoot":"","sources":["../../src/agents/simple.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;
|
|
1
|
+
{"version":3,"file":"simple.d.ts","sourceRoot":"","sources":["../../src/agents/simple.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAYH,OAAO,KAAK,EACV,WAAW,EACX,gBAAgB,EAChB,YAAY,EACZ,aAAa,EAIb,WAAW,EACZ,MAAM,aAAa,CAAC;AAIrB,MAAM,WAAW,iBAAiB;IAChC,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,WAAW,CAAC;IACtB,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,aAAa,EAAE,MAAM,CAAC;IACtB,aAAa,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7B,UAAU,EAAE,MAAM,CAAC;IACnB,WAAW,EAAE,WAAW,CAAC;IACzB,UAAU,CAAC,EAAE,gBAAgB,CAAC;CAC/B;AAaD;;;;;GAKG;AACH,iBAAS,mBAAmB,CAC1B,IAAI,EAAE,MAAM,EACZ,QAAQ,EAAE,WAAW,EACrB,KAAK,EAAE,MAAM,EACb,UAAU,EAAE,MAAM,EAClB,eAAe,EAAE,MAAM,EACvB,aAAa,EAAE,MAAM,GAAG,IAAI,GAC3B,YAAY,CAgCd;AAED;;;;;;;;;;GAUG;AACH,iBAAS,kBAAkB,CAAC,IAAI,EAAE,MAAM,GAAG,aAAa,EAAE,CA2BzD;AAID;;;;;;;;GAQG;AACH,wBAAsB,eAAe,CAAC,KAAK,EAAE,iBAAiB,GAAG,OAAO,CAAC,YAAY,CAAC,CAoDrF;AAGD,OAAO,EAAE,mBAAmB,EAAE,kBAAkB,EAAE,CAAC"}
|
package/dist/agents/simple.js
CHANGED
|
@@ -7,7 +7,7 @@
|
|
|
7
7
|
*/
|
|
8
8
|
import { generateText } from 'ai';
|
|
9
9
|
import { createModel } from '../providers/index.js';
|
|
10
|
-
import { SIMPLE_REVIEW_SYSTEM, buildMemoryContext, } from './prompts.js';
|
|
10
|
+
import { SIMPLE_REVIEW_SYSTEM, REVIEW_CALIBRATION, buildMemoryContext, buildReviewLevelInstruction, } from './prompts.js';
|
|
11
11
|
// ─── Response Parsing ───────────────────────────────────────────
|
|
12
12
|
/** Valid severity values for type-safe parsing */
|
|
13
13
|
const VALID_SEVERITIES = new Set([
|
|
@@ -97,7 +97,7 @@ function parseFindingsBlock(text) {
|
|
|
97
97
|
* @returns Parsed ReviewResult
|
|
98
98
|
*/
|
|
99
99
|
export async function runSimpleReview(input) {
|
|
100
|
-
const { diff, provider, model, apiKey, staticContext, memoryContext, stackHints } = input;
|
|
100
|
+
const { diff, provider, model, apiKey, staticContext, memoryContext, stackHints, reviewLevel } = input;
|
|
101
101
|
const emit = input.onProgress ?? (() => { });
|
|
102
102
|
const startTime = Date.now();
|
|
103
103
|
// Build the full system prompt with all context layers
|
|
@@ -106,6 +106,8 @@ export async function runSimpleReview(input) {
|
|
|
106
106
|
staticContext,
|
|
107
107
|
buildMemoryContext(memoryContext),
|
|
108
108
|
stackHints,
|
|
109
|
+
buildReviewLevelInstruction(reviewLevel),
|
|
110
|
+
REVIEW_CALIBRATION,
|
|
109
111
|
]
|
|
110
112
|
.filter(Boolean)
|
|
111
113
|
.join('\n');
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"simple.js","sourceRoot":"","sources":["../../src/agents/simple.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EAAE,YAAY,EAAE,MAAM,IAAI,CAAC;AAClC,OAAO,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AACpD,OAAO,EACL,oBAAoB,
|
|
1
|
+
{"version":3,"file":"simple.js","sourceRoot":"","sources":["../../src/agents/simple.ts"],"names":[],"mappings":"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"}
|
|
@@ -15,7 +15,7 @@
|
|
|
15
15
|
* After all specialists complete, a synthesis step merges and
|
|
16
16
|
* deduplicates findings into the final STATUS/SUMMARY/FINDINGS.
|
|
17
17
|
*/
|
|
18
|
-
import type { LLMProvider, ProgressCallback, ReviewResult } from '../types.js';
|
|
18
|
+
import type { LLMProvider, ProgressCallback, ReviewResult, ReviewLevel } from '../types.js';
|
|
19
19
|
export interface WorkflowReviewInput {
|
|
20
20
|
diff: string;
|
|
21
21
|
provider: LLMProvider;
|
|
@@ -24,6 +24,7 @@ export interface WorkflowReviewInput {
|
|
|
24
24
|
staticContext: string;
|
|
25
25
|
memoryContext: string | null;
|
|
26
26
|
stackHints: string;
|
|
27
|
+
reviewLevel: ReviewLevel;
|
|
27
28
|
onProgress?: ProgressCallback;
|
|
28
29
|
}
|
|
29
30
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"workflow.d.ts","sourceRoot":"","sources":["../../src/agents/workflow.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;
|
|
1
|
+
{"version":3,"file":"workflow.d.ts","sourceRoot":"","sources":["../../src/agents/workflow.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAgBH,OAAO,KAAK,EACV,WAAW,EACX,gBAAgB,EAChB,YAAY,EACZ,WAAW,EAEZ,MAAM,aAAa,CAAC;AAIrB,MAAM,WAAW,mBAAmB;IAClC,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,WAAW,CAAC;IACtB,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,aAAa,EAAE,MAAM,CAAC;IACtB,aAAa,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7B,UAAU,EAAE,MAAM,CAAC;IACnB,WAAW,EAAE,WAAW,CAAC;IACzB,UAAU,CAAC,EAAE,gBAAgB,CAAC;CAC/B;AAoBD;;;;;;;;;GASG;AACH,wBAAsB,iBAAiB,CAAC,KAAK,EAAE,mBAAmB,GAAG,OAAO,CAAC,YAAY,CAAC,CA4HzF"}
|
package/dist/agents/workflow.js
CHANGED
|
@@ -17,7 +17,7 @@
|
|
|
17
17
|
*/
|
|
18
18
|
import { generateText } from 'ai';
|
|
19
19
|
import { createModel } from '../providers/index.js';
|
|
20
|
-
import { WORKFLOW_SCOPE_SYSTEM, WORKFLOW_STANDARDS_SYSTEM, WORKFLOW_ERRORS_SYSTEM, WORKFLOW_SECURITY_SYSTEM, WORKFLOW_PERFORMANCE_SYSTEM, WORKFLOW_SYNTHESIS_SYSTEM, buildMemoryContext, } from './prompts.js';
|
|
20
|
+
import { WORKFLOW_SCOPE_SYSTEM, WORKFLOW_STANDARDS_SYSTEM, WORKFLOW_ERRORS_SYSTEM, WORKFLOW_SECURITY_SYSTEM, WORKFLOW_PERFORMANCE_SYSTEM, WORKFLOW_SYNTHESIS_SYSTEM, REVIEW_CALIBRATION, buildMemoryContext, buildReviewLevelInstruction, } from './prompts.js';
|
|
21
21
|
import { parseReviewResponse } from './simple.js';
|
|
22
22
|
// ─── Specialist Configuration ───────────────────────────────────
|
|
23
23
|
const SPECIALISTS = [
|
|
@@ -39,7 +39,7 @@ const SPECIALISTS = [
|
|
|
39
39
|
* @returns Parsed ReviewResult from the synthesis step
|
|
40
40
|
*/
|
|
41
41
|
export async function runWorkflowReview(input) {
|
|
42
|
-
const { diff, provider, model, apiKey, staticContext, memoryContext, stackHints } = input;
|
|
42
|
+
const { diff, provider, model, apiKey, staticContext, memoryContext, stackHints, reviewLevel } = input;
|
|
43
43
|
const emit = input.onProgress ?? (() => { });
|
|
44
44
|
const startTime = Date.now();
|
|
45
45
|
const languageModel = createModel(provider, model, apiKey);
|
|
@@ -57,6 +57,8 @@ export async function runWorkflowReview(input) {
|
|
|
57
57
|
staticContext,
|
|
58
58
|
buildMemoryContext(memoryContext),
|
|
59
59
|
stackHints,
|
|
60
|
+
buildReviewLevelInstruction(reviewLevel),
|
|
61
|
+
REVIEW_CALIBRATION,
|
|
60
62
|
]
|
|
61
63
|
.filter(Boolean)
|
|
62
64
|
.join('\n');
|
|
@@ -108,9 +110,16 @@ export async function runWorkflowReview(input) {
|
|
|
108
110
|
...specialistOutputs,
|
|
109
111
|
'\n\n---\n\nNow provide the unified review in the required format.',
|
|
110
112
|
].join('\n\n');
|
|
113
|
+
const synthesisSystem = [
|
|
114
|
+
WORKFLOW_SYNTHESIS_SYSTEM,
|
|
115
|
+
buildReviewLevelInstruction(reviewLevel),
|
|
116
|
+
REVIEW_CALIBRATION,
|
|
117
|
+
]
|
|
118
|
+
.filter(Boolean)
|
|
119
|
+
.join('\n');
|
|
111
120
|
const synthesisResult = await generateText({
|
|
112
121
|
model: languageModel,
|
|
113
|
-
system:
|
|
122
|
+
system: synthesisSystem,
|
|
114
123
|
prompt: synthesisPrompt,
|
|
115
124
|
temperature: 0.3,
|
|
116
125
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"workflow.js","sourceRoot":"","sources":["../../src/agents/workflow.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAEH,OAAO,EAAE,YAAY,EAAE,MAAM,IAAI,CAAC;AAClC,OAAO,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AACpD,OAAO,EACL,qBAAqB,EACrB,yBAAyB,EACzB,sBAAsB,EACtB,wBAAwB,EACxB,2BAA2B,EAC3B,yBAAyB,EACzB,kBAAkB,
|
|
1
|
+
{"version":3,"file":"workflow.js","sourceRoot":"","sources":["../../src/agents/workflow.ts"],"names":[],"mappings":"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"}
|
package/dist/format.d.ts
ADDED
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* PR comment formatting for GHAGGA code reviews.
|
|
3
|
+
*
|
|
4
|
+
* Renders a ReviewResult as a GitHub-flavored Markdown comment
|
|
5
|
+
* suitable for posting to a PR via the GitHub API.
|
|
6
|
+
*/
|
|
7
|
+
import type { ReviewResult, ReviewStatus } from './types.js';
|
|
8
|
+
export declare const STATUS_EMOJI: Record<ReviewStatus, string>;
|
|
9
|
+
export declare const SEVERITY_EMOJI: Record<string, string>;
|
|
10
|
+
export declare function formatReviewComment(result: ReviewResult): string;
|
|
11
|
+
//# sourceMappingURL=format.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"format.d.ts","sourceRoot":"","sources":["../src/format.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAI7D,eAAO,MAAM,YAAY,EAAE,MAAM,CAAC,YAAY,EAAE,MAAM,CAKrD,CAAC;AAEF,eAAO,MAAM,cAAc,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAMjD,CAAC;AAIF,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,YAAY,GAAG,MAAM,CAsEhE"}
|
package/dist/format.js
ADDED
|
@@ -0,0 +1,84 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* PR comment formatting for GHAGGA code reviews.
|
|
3
|
+
*
|
|
4
|
+
* Renders a ReviewResult as a GitHub-flavored Markdown comment
|
|
5
|
+
* suitable for posting to a PR via the GitHub API.
|
|
6
|
+
*/
|
|
7
|
+
// ─── Constants ──────────────────────────────────────────────────
|
|
8
|
+
export const STATUS_EMOJI = {
|
|
9
|
+
PASSED: '\u2705 PASSED',
|
|
10
|
+
FAILED: '\u274c FAILED',
|
|
11
|
+
NEEDS_HUMAN_REVIEW: '\u26a0\ufe0f NEEDS_HUMAN_REVIEW',
|
|
12
|
+
SKIPPED: '\u23ed\ufe0f SKIPPED',
|
|
13
|
+
};
|
|
14
|
+
export const SEVERITY_EMOJI = {
|
|
15
|
+
critical: '\ud83d\udd34',
|
|
16
|
+
high: '\ud83d\udfe0',
|
|
17
|
+
medium: '\ud83d\udfe1',
|
|
18
|
+
low: '\ud83d\udfe2',
|
|
19
|
+
info: '\ud83d\udfe3',
|
|
20
|
+
};
|
|
21
|
+
// ─── Formatting ─────────────────────────────────────────────────
|
|
22
|
+
export function formatReviewComment(result) {
|
|
23
|
+
const status = STATUS_EMOJI[result.status] ?? result.status;
|
|
24
|
+
const timeSeconds = (result.metadata.executionTimeMs / 1000).toFixed(1);
|
|
25
|
+
let comment = `## \ud83e\udd16 GHAGGA Code Review\n\n`;
|
|
26
|
+
comment += `**Status:** ${status}\n`;
|
|
27
|
+
comment += `**Mode:** ${result.metadata.mode} | **Model:** ${result.metadata.model} | **Time:** ${timeSeconds}s\n\n`;
|
|
28
|
+
// Summary
|
|
29
|
+
comment += `### Summary\n${result.summary}\n\n`;
|
|
30
|
+
// Findings grouped by source
|
|
31
|
+
if (result.findings.length > 0) {
|
|
32
|
+
comment += `### Findings (${result.findings.length})\n\n`;
|
|
33
|
+
// Group findings by source
|
|
34
|
+
const grouped = new Map();
|
|
35
|
+
for (const finding of result.findings) {
|
|
36
|
+
const src = finding.source ?? 'ai';
|
|
37
|
+
if (!grouped.has(src))
|
|
38
|
+
grouped.set(src, []);
|
|
39
|
+
grouped.get(src).push(finding);
|
|
40
|
+
}
|
|
41
|
+
// Render order: static tools first, then AI
|
|
42
|
+
const SOURCE_LABELS = {
|
|
43
|
+
semgrep: '\ud83d\udd0d Semgrep',
|
|
44
|
+
trivy: '\ud83d\udee1\ufe0f Trivy',
|
|
45
|
+
cpd: '\ud83d\udccb CPD',
|
|
46
|
+
ai: '\ud83e\udd16 AI Review',
|
|
47
|
+
};
|
|
48
|
+
const renderOrder = ['semgrep', 'trivy', 'cpd', 'ai'];
|
|
49
|
+
for (const src of renderOrder) {
|
|
50
|
+
const findings = grouped.get(src);
|
|
51
|
+
if (!findings || findings.length === 0)
|
|
52
|
+
continue;
|
|
53
|
+
const label = SOURCE_LABELS[src] ?? src;
|
|
54
|
+
comment += `**${label} (${findings.length})**\n`;
|
|
55
|
+
comment += `| Severity | Category | File | Message |\n`;
|
|
56
|
+
comment += `|----------|----------|------|----------|\n`;
|
|
57
|
+
for (const finding of findings) {
|
|
58
|
+
const emoji = SEVERITY_EMOJI[finding.severity] ?? '';
|
|
59
|
+
const location = finding.line
|
|
60
|
+
? `${finding.file}:${finding.line}`
|
|
61
|
+
: finding.file;
|
|
62
|
+
const message = finding.message.replace(/\|/g, '\\|').replace(/\n/g, ' ');
|
|
63
|
+
comment += `| ${emoji} ${finding.severity} | ${finding.category} | ${location} | ${message} |\n`;
|
|
64
|
+
}
|
|
65
|
+
comment += '\n';
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
// Static analysis summary
|
|
69
|
+
const staticTools = result.metadata.toolsRun;
|
|
70
|
+
const skippedTools = result.metadata.toolsSkipped;
|
|
71
|
+
if (staticTools.length > 0 || skippedTools.length > 0) {
|
|
72
|
+
comment += `### Static Analysis\n`;
|
|
73
|
+
if (staticTools.length > 0) {
|
|
74
|
+
comment += `\u2705 Tools run: ${staticTools.join(', ')}\n`;
|
|
75
|
+
}
|
|
76
|
+
if (skippedTools.length > 0) {
|
|
77
|
+
comment += `\u23ed\ufe0f Tools skipped: ${skippedTools.join(', ')}\n`;
|
|
78
|
+
}
|
|
79
|
+
comment += '\n';
|
|
80
|
+
}
|
|
81
|
+
comment += `---\n*Powered by [GHAGGA](https://github.com/JNZader/ghagga) \u2014 AI Code Review*`;
|
|
82
|
+
return comment;
|
|
83
|
+
}
|
|
84
|
+
//# sourceMappingURL=format.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"format.js","sourceRoot":"","sources":["../src/format.ts"],"names":[],"mappings":"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"}
|
package/dist/index.d.ts
CHANGED
|
@@ -5,7 +5,7 @@
|
|
|
5
5
|
* This module re-exports the pipeline entry point and all public types.
|
|
6
6
|
*/
|
|
7
7
|
export { reviewPipeline } from './pipeline.js';
|
|
8
|
-
export type { ReviewInput, ReviewSettings, ReviewContext, ReviewMode, LLMProvider, ReviewLevel, ReviewResult, ReviewFinding, ReviewMetadata, ReviewStatus, FindingSeverity, FindingSource, StaticAnalysisResult, ToolResult, ToolStatus, WorkflowSpecialist, ConsensusStance, ConsensusVote, ObservationType, MemoryObservation, ProgressCallback, ProgressEvent, } from './types.js';
|
|
8
|
+
export type { ReviewInput, ReviewSettings, ReviewContext, ReviewMode, LLMProvider, SaaSProvider, ProviderChainEntry, ReviewLevel, ReviewResult, ReviewFinding, ReviewMetadata, ReviewStatus, FindingSeverity, FindingSource, StaticAnalysisResult, ToolResult, ToolStatus, WorkflowSpecialist, ConsensusStance, ConsensusVote, ObservationType, MemoryObservation, MemoryStorage, MemoryObservationRow, MemoryObservationDetail, MemoryStats, ListObservationsOptions, ProgressCallback, ProgressEvent, } from './types.js';
|
|
9
9
|
export { DEFAULT_SETTINGS, DEFAULT_MODELS } from './types.js';
|
|
10
10
|
export { detectStacks } from './utils/stack-detect.js';
|
|
11
11
|
export { parseDiffFiles, filterIgnoredFiles, truncateDiff } from './utils/diff.js';
|
|
@@ -13,7 +13,10 @@ export type { DiffFile } from './utils/diff.js';
|
|
|
13
13
|
export { getContextWindow, calculateTokenBudget } from './utils/token-budget.js';
|
|
14
14
|
export { createProvider, createModel } from './providers/index.js';
|
|
15
15
|
export { generateWithFallback } from './providers/fallback.js';
|
|
16
|
-
export type { FallbackOptions, FallbackResult } from './providers/fallback.js';
|
|
16
|
+
export type { FallbackProvider, FallbackOptions, FallbackResult } from './providers/fallback.js';
|
|
17
17
|
export { formatMemoryContext } from './memory/context.js';
|
|
18
18
|
export { stripPrivateData } from './memory/privacy.js';
|
|
19
|
+
export { SqliteMemoryStorage } from './memory/sqlite.js';
|
|
20
|
+
export { EngramMemoryStorage } from './memory/engram.js';
|
|
21
|
+
export { formatReviewComment, STATUS_EMOJI, SEVERITY_EMOJI } from './format.js';
|
|
19
22
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAIH,OAAO,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAI/C,YAAY,EAEV,WAAW,EACX,cAAc,EACd,aAAa,EACb,UAAU,EACV,WAAW,EACX,WAAW,EAGX,YAAY,EACZ,aAAa,EACb,cAAc,EACd,YAAY,EACZ,eAAe,EACf,aAAa,EAGb,oBAAoB,EACpB,UAAU,EACV,UAAU,EAGV,kBAAkB,EAClB,eAAe,EACf,aAAa,EAGb,eAAe,EACf,iBAAiB,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAIH,OAAO,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAI/C,YAAY,EAEV,WAAW,EACX,cAAc,EACd,aAAa,EACb,UAAU,EACV,WAAW,EACX,YAAY,EACZ,kBAAkB,EAClB,WAAW,EAGX,YAAY,EACZ,aAAa,EACb,cAAc,EACd,YAAY,EACZ,eAAe,EACf,aAAa,EAGb,oBAAoB,EACpB,UAAU,EACV,UAAU,EAGV,kBAAkB,EAClB,eAAe,EACf,aAAa,EAGb,eAAe,EACf,iBAAiB,EACjB,aAAa,EACb,oBAAoB,EACpB,uBAAuB,EACvB,WAAW,EACX,uBAAuB,EAGvB,gBAAgB,EAChB,aAAa,GACd,MAAM,YAAY,CAAC;AAIpB,OAAO,EAAE,gBAAgB,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAI9D,OAAO,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAC;AACvD,OAAO,EAAE,cAAc,EAAE,kBAAkB,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AACnF,YAAY,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAC;AAChD,OAAO,EAAE,gBAAgB,EAAE,oBAAoB,EAAE,MAAM,yBAAyB,CAAC;AAIjF,OAAO,EAAE,cAAc,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AACnE,OAAO,EAAE,oBAAoB,EAAE,MAAM,yBAAyB,CAAC;AAC/D,YAAY,EAAE,gBAAgB,EAAE,eAAe,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAC;AAIjG,OAAO,EAAE,mBAAmB,EAAE,MAAM,qBAAqB,CAAC;AAC1D,OAAO,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AACvD,OAAO,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;AACzD,OAAO,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;AAIzD,OAAO,EAAE,mBAAmB,EAAE,YAAY,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC"}
|
package/dist/index.js
CHANGED
|
@@ -18,4 +18,8 @@ export { generateWithFallback } from './providers/fallback.js';
|
|
|
18
18
|
// ─── Memory (for custom memory integrations) ────────────────────
|
|
19
19
|
export { formatMemoryContext } from './memory/context.js';
|
|
20
20
|
export { stripPrivateData } from './memory/privacy.js';
|
|
21
|
+
export { SqliteMemoryStorage } from './memory/sqlite.js';
|
|
22
|
+
export { EngramMemoryStorage } from './memory/engram.js';
|
|
23
|
+
// ─── Formatting ─────────────────────────────────────────────────
|
|
24
|
+
export { formatReviewComment, STATUS_EMOJI, SEVERITY_EMOJI } from './format.js';
|
|
21
25
|
//# sourceMappingURL=index.js.map
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,mEAAmE;AAEnE,OAAO,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,mEAAmE;AAEnE,OAAO,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AA+C/C,mEAAmE;AAEnE,OAAO,EAAE,gBAAgB,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAE9D,mEAAmE;AAEnE,OAAO,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAC;AACvD,OAAO,EAAE,cAAc,EAAE,kBAAkB,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAEnF,OAAO,EAAE,gBAAgB,EAAE,oBAAoB,EAAE,MAAM,yBAAyB,CAAC;AAEjF,mEAAmE;AAEnE,OAAO,EAAE,cAAc,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AACnE,OAAO,EAAE,oBAAoB,EAAE,MAAM,yBAAyB,CAAC;AAG/D,mEAAmE;AAEnE,OAAO,EAAE,mBAAmB,EAAE,MAAM,qBAAqB,CAAC;AAC1D,OAAO,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AACvD,OAAO,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;AACzD,OAAO,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;AAEzD,mEAAmE;AAEnE,OAAO,EAAE,mBAAmB,EAAE,YAAY,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC"}
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Thin HTTP client wrapping native fetch() for the Engram REST API.
|
|
3
|
+
*
|
|
4
|
+
* Uses Node 18+ built-in fetch — no external dependencies.
|
|
5
|
+
* All methods are wrapped in try/catch and return safe fallback values
|
|
6
|
+
* (null, false, []) on failure. Errors are logged via console.warn
|
|
7
|
+
* for graceful degradation — the review never fails because of Engram.
|
|
8
|
+
*/
|
|
9
|
+
import type { EngramConfig, EngramObservation, EngramStats } from './engram-types.js';
|
|
10
|
+
export declare class EngramClient {
|
|
11
|
+
private baseUrl;
|
|
12
|
+
private timeout;
|
|
13
|
+
constructor(config: EngramConfig);
|
|
14
|
+
/** Health check: GET /api/stats. Returns true if Engram is reachable. */
|
|
15
|
+
healthCheck(): Promise<boolean>;
|
|
16
|
+
/** Search observations. GET /api/search?q=...&project=...&limit=... */
|
|
17
|
+
search(query: string, project?: string, limit?: number): Promise<EngramObservation[]>;
|
|
18
|
+
/** Save an observation. POST /api/save */
|
|
19
|
+
save(data: {
|
|
20
|
+
type: string;
|
|
21
|
+
title: string;
|
|
22
|
+
content: string;
|
|
23
|
+
project?: string;
|
|
24
|
+
topic_key?: string;
|
|
25
|
+
scope?: string;
|
|
26
|
+
}): Promise<EngramObservation | null>;
|
|
27
|
+
/** Get a single observation by ID. GET /api/observations/:id */
|
|
28
|
+
getObservation(id: string | number): Promise<EngramObservation | null>;
|
|
29
|
+
/** Delete an observation by ID. DELETE /api/observations/:id */
|
|
30
|
+
deleteObservation(id: string | number): Promise<boolean>;
|
|
31
|
+
/** Get aggregate stats. GET /api/stats */
|
|
32
|
+
getStats(): Promise<EngramStats | null>;
|
|
33
|
+
/** Create a new session. POST /api/sessions */
|
|
34
|
+
createSession(project: string): Promise<number | null>;
|
|
35
|
+
/** End a session with a summary. POST /api/sessions/:id/summary */
|
|
36
|
+
endSession(id: number, summary: string): Promise<void>;
|
|
37
|
+
}
|
|
38
|
+
//# sourceMappingURL=engram-client.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"engram-client.d.ts","sourceRoot":"","sources":["../../src/memory/engram-client.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,KAAK,EAAE,YAAY,EAAE,iBAAiB,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAEtF,qBAAa,YAAY;IACvB,OAAO,CAAC,OAAO,CAAS;IACxB,OAAO,CAAC,OAAO,CAAS;gBAEZ,MAAM,EAAE,YAAY;IAQhC,yEAAyE;IACnE,WAAW,IAAI,OAAO,CAAC,OAAO,CAAC;IAWrC,uEAAuE;IACjE,MAAM,CACV,KAAK,EAAE,MAAM,EACb,OAAO,CAAC,EAAE,MAAM,EAChB,KAAK,CAAC,EAAE,MAAM,GACb,OAAO,CAAC,iBAAiB,EAAE,CAAC;IA2B/B,0CAA0C;IACpC,IAAI,CAAC,IAAI,EAAE;QACf,IAAI,EAAE,MAAM,CAAC;QACb,KAAK,EAAE,MAAM,CAAC;QACd,OAAO,EAAE,MAAM,CAAC;QAChB,OAAO,CAAC,EAAE,MAAM,CAAC;QACjB,SAAS,CAAC,EAAE,MAAM,CAAC;QACnB,KAAK,CAAC,EAAE,MAAM,CAAC;KAChB,GAAG,OAAO,CAAC,iBAAiB,GAAG,IAAI,CAAC;IAkBrC,gEAAgE;IAC1D,cAAc,CAAC,EAAE,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO,CAAC,iBAAiB,GAAG,IAAI,CAAC;IAe5E,gEAAgE;IAC1D,iBAAiB,CAAC,EAAE,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAc9D,0CAA0C;IACpC,QAAQ,IAAI,OAAO,CAAC,WAAW,GAAG,IAAI,CAAC;IAe7C,+CAA+C;IACzC,aAAa,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC;IAmB5D,mEAAmE;IAC7D,UAAU,CAAC,EAAE,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;CAY7D"}
|